Pandoc的lua filter使得在迭代文档并在进行时修改文档变得非常容易。我的问题是我无法弄清楚如何隔离列表项元素。我可以找到列表以及每个列表项内部的块级元素,但我无法想出一种迭代列表项的方法。
例如,假设我有以下Markdown文档:
假设我想要将每个列表项的第一行加粗。我可以很容易地改变有序列表中段落的处理方式,例如使用这个过滤器和
这确实会将第一个段落元素改为粗体,但它只会更改第一个列表项的第一个段落,因为它遍历了列表中所有列表项中的所有段落,而不是在每个列表项上,然后遍历每个段落。
如果我将这两个列表项分成两个单独的列表,那么第一个项目的第一段就被捕获了,但是我想要捕获每个列表项的第一段!文档中没有关于迭代列表项的内容。应该如何做?
例如,假设我有以下Markdown文档:
1. One string
Two string
2. Three string
Four string
假设我想要将每个列表项的第一行加粗。我可以很容易地改变有序列表中段落的处理方式,例如使用这个过滤器和
pandoc --lua-filter=myfilter.lua --to=markdown input.md
命令。local i
OrderedList = function (element)
i = 0
return pandoc.walk_block(element, {
Para = function (element)
i = i + 1
if i == 1 then return pandoc.Para { pandoc.Strong(element.c) }
else return element end
end
})
end
这确实会将第一个段落元素改为粗体,但它只会更改第一个列表项的第一个段落,因为它遍历了列表中所有列表项中的所有段落,而不是在每个列表项上,然后遍历每个段落。
1. **One string**
Two string
2. Three string
Four string
如果我将这两个列表项分成两个单独的列表,那么第一个项目的第一段就被捕获了,但是我想要捕获每个列表项的第一段!文档中没有关于迭代列表项的内容。应该如何做?
List
辅助类型和不属于那些列表的列表。 - CalebList
类型。 - tarleb