如何在 pandoc 中自动在 header 之前添加分页符
How to add a page break before header automatically in pandoc
我需要将 markdown 文档转换成 Word 文档。
我需要它,以便在每个 header 之前都有一个分页符。
例如,这里要在# Heading 1
和# Heading 2
之前插入一个分页符。如果文档中没有内容,我不介意它跳过第一个。
# Heading 1
Hello
# Heading 2
World
我找到了 this Lua filter,但是,据我所知,它只适用于 Latex,不是自动的。
我曾尝试自己写一个Lua脚本,但失败了,因为我不太了解pandoc的工作原理。
例如,我尝试返回一个 Para
,其中包含前一个的内容 + 来自 Header
函数的分页符,如下所示:
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
但是,它最终会擦除所有 header。
我尝试了对同一想法的其他一些更改,但都没有用。
Lua的毛病主要是没有静态分析,没有Intellisense。我可能在这段代码中做了一些完全不合适的事情,没有任何编译器错误,甚至没有意识到。
我相信以下内容应该可以解决这个问题:
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
中包装“块”列表所产生的类型错误,因为该构造函数应该只接受“内联”。
如果您好奇:我正在努力通过切换到不同的编组策略来解决此问题,请参阅 this PR。这需要一段时间,但我们会到达那里。
我需要将 markdown 文档转换成 Word 文档。 我需要它,以便在每个 header 之前都有一个分页符。
例如,这里要在# Heading 1
和# Heading 2
之前插入一个分页符。如果文档中没有内容,我不介意它跳过第一个。
# Heading 1
Hello
# Heading 2
World
我找到了 this Lua filter,但是,据我所知,它只适用于 Latex,不是自动的。
我曾尝试自己写一个Lua脚本,但失败了,因为我不太了解pandoc的工作原理。
例如,我尝试返回一个 Para
,其中包含前一个的内容 + 来自 Header
函数的分页符,如下所示:
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
但是,它最终会擦除所有 header。 我尝试了对同一想法的其他一些更改,但都没有用。
Lua的毛病主要是没有静态分析,没有Intellisense。我可能在这段代码中做了一些完全不合适的事情,没有任何编译器错误,甚至没有意识到。
我相信以下内容应该可以解决这个问题:
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
中包装“块”列表所产生的类型错误,因为该构造函数应该只接受“内联”。
如果您好奇:我正在努力通过切换到不同的编组策略来解决此问题,请参阅 this PR。这需要一段时间,但我们会到达那里。