我需要将markdown文档转换为Word文档。我需要它,以便在每个页眉之前有一个分页符。
例如,在这里,将在# Heading 1
之前和# Heading 2
之前插入分页符。如果文档中没有之前的内容,我不介意它跳过第一个。
# Heading 1
Hello
# Heading 2
World
我已经找到了this Lua filter,但据我所知,它只适用于Latex,并不是自动的。
我试着自己写一个Lua脚本,但失败了,因为我不太了解pandoc是如何工作的。
例如,我尝试从Header
函数返回一个包含前一个内容的Para
+一个分页符,如下所示:
function Header(el)
if el.level == 1 then
local t = { pandoc.RawBlock('openxml', '<w:p><w:r><w:br w:type="page"/></w:r></w:p>'), el }
return pandoc.Para(t)
end
return el
end
然而,它只是擦除了所有的头文件。我已经尝试了同样的想法的其他几种修改,但都不起作用。
Lua的问题主要是没有静态分析,也没有智能感知。我可能在这段代码中做了一些完全不合适的事情,没有任何编译器错误,甚至没有意识到这一点。
发布于 2021-06-28 06:15:22
我相信以下几点应该可以解决这个问题:
local pagebreak = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>'
function Header(el)
if el.level == 1 then
-- return both the page break and the header as a list
return { pandoc.RawBlock('openxml', pagebreak), el }
end
-- No `return el` needed, as not returning any value is the same as
-- returning the original value.
end
pandoc在解组期间的错误报告,也就是从Lua检索对象时,至少可以说不是很好。理想情况下,pandoc应该报告由于在Para
中包装“块”列表而产生的类型错误,因为该构造函数应该只接受“inline”。
如果您感兴趣:我正在通过切换到不同的编组策略来修复此问题,请参阅this PR。这需要一段时间,但我们会到的。
https://stackoverflow.com/questions/68144509
复制相似问题