如何在Pandoc';什么是lua过滤函数?
Pandoc's使您可以很容易地在文档上迭代并边走边咀嚼文档。我的问题是我不知道如何隔离列表项元素。我可以在每个列表项中找到列表和块级别的内容,但我找不出一种迭代列表项的方法 例如,假设我有以下降价文档:如何在Pandoc';什么是lua过滤函数?,lua,abstract-syntax-tree,pandoc,Lua,Abstract Syntax Tree,Pandoc,Pandoc's使您可以很容易地在文档上迭代并边走边咀嚼文档。我的问题是我不知道如何隔离列表项元素。我可以在每个列表项中找到列表和块级别的内容,但我找不出一种迭代列表项的方法 例如,假设我有以下降价文档: 1. One string Two string 2. Three string Four string 假设我想将每个列表项的第一行加粗。我可以很容易地改变OrderedList中段落的处理方式,比如使用这个过滤器和pandoc--lua filter=myfil
1. One string
Two string
2. Three string
Four string
假设我想将每个列表项的第一行加粗。我可以很容易地改变OrderedList中段落的处理方式,比如使用这个过滤器和pandoc--lua filter=myfilter.lua--to=markdown input.md
locali
OrderedList=函数(元素)
i=0
返回pandoc.walk_块(元素{
Para=功能(元素)
i=i+1
如果i==1,则返回pandoc.Para{pandoc.Strong(element.c)}
else返回元素结束
终止
})
终止
这确实会将第一个段落元素更改为粗体,但它只会更改第一个列表项的第一个段落,因为它会在列表中所有列表项的所有段落中进行迭代,而不是在每个列表项上,然后在每个段落上进行迭代
1. **One string**
Two string
2. Three string
Four string
如果我再次将两个列表项分为两个单独的列表,则会捕获第一个列表项的第一段,但我希望捕获每个列表项的第一段!我在文档中找不到任何关于迭代列表项的内容。如何做到这一点?pandoc Lua filter文档最近更新了关于每种类型属性的更多信息。例如,对于
OrderedList
元素,应该说(它当前说的是项目
,而不是内容
,这是一个bug):
订单列表
有序的名单
:列出项目(块列表)内容
:列出参数(listAttributes)listAttributes
:listAttributes.start的别名(整数)start
:listAttributes.style的别名(字符串)style
:listAttributes的别名。分隔符(字符串)分隔符
,tag
:文本OrderedList(字符串)t
OrderedList = function (element)
for i, item in ipairs(element.content) do
local first = item[1]
if first and first.t == 'Para' then
element.content[i][1] = pandoc.Para{pandoc.Strong(first.content)}
end
end
return element
end
哇,你可能不想看到我试过的50次代码迭代。谢谢,这是预期的效果,是有意义的。文档(除了bug)与它的
List
helper类型非常混淆,然后列出了不是这些列表的列表。我知道,很抱歉。我们在当前的开发版本中修复了它,所有列表的类型都是List
。