[英]How to compile all .md files in a directory into a single .pdf with pandoc, while preserving YAML header data?
我有一個.md文檔目錄,每個目錄都包含一個YAML標頭,用於指定文檔title
, author
, date
, categories
, tags
等。該目錄包含日記條目,而文件名只是條目的日期。
使用pandoc為每個.md文件生成PDF時我沒有問題,但是我正在尋找一種以書本或回憶錄格式生成單個 PDF的方式,其中每個.md文檔的title
字段作為目錄中的章節,按順序排列按date
值。 理想情況下, date
也應出現在目錄中,但是如果各個章節也將顯示該信息,則date
並不重要。
我無法找到一種方法來執行此操作,因為在連接多個文檔時,pandoc似乎會忽略除第一個YAML標頭之外的所有內容。 我可以想到的一種可能的解決方案是將所有相關的YAML標頭信息轉換為降價標題,然后將每個.md文檔中的現有標題降級。 但是我不確定該怎么做,或者這是否是最好的方法。 我也在看R bookdown
包,但是它還在章節中使用markdown標頭,並且不確定是否可以使用YAML標頭信息。
完成我需要的最簡單的方法是什么? 謝謝。
問題中概述的想法是一個不錯的選擇:
可以通過過濾器將標題降級為標題,例如,如果您使用的Pandoc> 2.0,則可以使用Lua過濾器 。 以下假設您使用的是當前版本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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.