簡體   English   中英

如何使用pandoc將目錄中的所有.md文件編譯為單個.pdf,同時保留YAML標頭數據?

[英]How to compile all .md files in a directory into a single .pdf with pandoc, while preserving YAML header data?

我有一個.md文檔目錄,每個目錄都包含一個YAML標頭,用於指定文檔titleauthordatecategoriestags等。該目錄包含日記條目,而文件名只是條目的日期。

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM