我有一个.md文件目录,每个文件都包含一个YAML标题,指定文件title
,author
,date
,categories
,tags
等。该目录包含日记条目,文件名只是条目的日期。
我可以毫不费力地使用pandoc为每个.md文件生成PDF,但是我正在寻找一种方式生成单个PDF的书籍或回忆录格式,每个.md文档的title
字段作为目录中的一章,已安排通过date
值。理想情况下,date
也会出现在目录中,但如果各个章节也会显示该信息,那么这并不重要。
我无法找到一种方法来执行此操作,因为在连接多个文档时,pandoc似乎忽略了除第一个YAML标头之外的所有标头。我能想到的一个可能的解决方案是将所有相关的YAML标题信息转换为markdown标题,然后降级每个.md文档中的现有标题。但我不确定如何做到这一点,或者这是否是最好的方法。我也在查看R bookdown
包,但它也使用markdown标题用于章节,并且不确定它是否可以适用于使用YAML标题信息。
什么是最简单的方法来完成我需要的东西?谢谢。
您的问题中概述的想法是一个很好的方法:
将标题降级为标题可以通过filter完成,例如如果你使用pandoc> 2.0,那就是Lua filter。以下假定您使用的是当前版本2.0.6:
demote.lua:
-- List is available since pandoc 2.0.4
local List = require 'pandoc.List'
function Header (h)
h.level = h.level + 1
return h
end
function Pandoc (doc)
local title = doc.meta.title
local header = pandoc.Header(1, title)
doc.blocks = {header} .. doc.blocks
return doc
end
现在运行以下命令来创建pdf:
for f in /path/to/docs/*.md; do
pandoc --lua-filter=demote.lua -t markdown
printf "\n" # insert empty line between articles
end | pandoc -o combined.pdf