Pandoc在整个文档中连续编号列表具有惊人的扩展名example_lists
。我们尝试使用自定义编写器生成html,但结果html中的编号被打破。请考虑以下md代码:
(@) item 1
(@) item 2
## header ##
(@) item 3
Pandoc默认生成以下html页面:
1. item 1
2. item 2
header
3. item 3
但是使用自定义编写器(我们用pandoc --print-default-data-file sample.lua
作为例子)它产生:
1. item 1
2. item 2
header
1. item 3
示例lua-writer包含以下有序列表处理代码:
function OrderedList(items)
local buffer = {}
for _, item in pairs(items) do
table.insert(buffer, "<li>" .. item .. "</li>")
end
return "<ol>\n" .. table.concat(buffer, "\n") .. "\n</ol>"
end
如果为print
表
items
function OrderedList(items)
local buffer = {}
for elem, item in pairs(items) do
print(elem)
table.insert(buffer, "<li>" .. item .. "</li>")
end
return "<ol>\n" .. table.concat(buffer, "\n") .. "\n</ol>"
end
我们只会查看最终列表项目&#39;数:
1
2
1
所以我不认为这个问题出现在作家本身。您有任何想法如何解决这个问题吗?
答案 0 :(得分:4)
通过pandoc sources查看自定义编写器(src/Text/Pandoc/Writers/Custom.hs),您可能会发现OrderedList
函数实际上有四个参数,其中第三个是列表样式。您应该对Example
列表样式感兴趣。因此,您可以相应地更新OrderedList
实现:引入全局变量来计算Example
中的总项目 - 列表,根据列表样式更改功能代码(在ol
html标记中为{{添加start属性1}} - 列表)
Example
答案 1 :(得分:1)
您实际上不需要像Artem Pelenitsyn的回答那样保留ExampleIdx
全局变量。您所要做的就是让列表项编写器对第二个参数(Pelenitsyn代码中的起始编号:num
)敏感。请注意,您可以使用pandoc -t native
来检查传递给writer的AST;您会看到读者已正确设置起始编号。
function OrderedList(items, num)
local buffer = {}
for _, item in pairs(items) do
table.insert(buffer, "<li>" .. item .. "</li>")
end
local start = ""
if num > 1 then
start = ' start="' .. num .. '" '
end
return '<ol' .. start .. '>\n' .. table.concat(buffer, "\n") .. "\n</ol>"
end