【发布时间】:2019-08-19 17:40:41
【问题描述】:
当我将多个markdown文件从markdown转换为pdf时,我想使用pandoc lua过滤器。我希望将单个降价文件的标题用作章节(一级标题)。
我学习了现有的例子,我认为这个接近我需要的——基本上我需要将 pandoc.Header(1, doc.meta.title) 添加到我所有的降价文件中,但是我正在努力编写 lua 过滤器并使其工作。
我认为这个问题正在做类似的动作pandoc filter in lua and walk_block
pandoc 命令:
pandoc -N --lua-filter add-title.lua blog/*.md --pdf-engine=xelatex --toc -s -o my_book.pdf
add-title.lua(这是错误的,没有异常但输出没有任何反应):
function add_header (header)
return {
{Header = pandoc.Header(1, meta.title)}}
end
输入文件:
1.md
---
title: Topic1
---
## Sample Header from file 1.md
text text text
2.md
---
title: Topic2
---
## Sample Header from file 2.md
text text text
与此降价等效的预期输出(但我的最终格式是 pdf)
---
title: Title from pandoc latex variable
---
# Topic1
## Sample Header from file 1.md
text text text
# Topic2
## Sample Header from file 2.md
text text text
【问题讨论】:
-
不是您问题的完整解决方案,但这有帮助吗? stackoverflow.com/questions/56004886
-
tarleb 感谢您的及时回复。我看过这个例子,确实听起来很接近。但是我不知道如何从 meta.title 写入标题级别 1。
-
我认为问题源于假设整个文档始终可用于过滤器功能。这通常不是真的。这就是为什么在链接的示例中,首先从元数据中提取标题并将其存储到变量中。只有这样才能修改标题。链接过滤器在您运行时对您有用吗?
-
你是对的,元信息丢失了。我可以解决的最大问题是让标题从标题添加:``` function Pandoc(doc) local hblocks = {} table.insert(hblocks, pandoc.Header(1, title)) for i,el in对(doc.blocks)做table.insert(hblocks,el)结束返回pandoc.Pandoc(hblocks,doc.meta)结束```