gpt4 book ai didi

pdf - 如何使用 pandoc 将目录中的所有 .md 文件编译成单个 .pdf,同时保留 YAML header 数据?

转载 作者:行者123 更新时间:2023-12-05 05:18:23 24 4
gpt4 key购买 nike

我有一个 .md 文档目录,每个文档都包含一个 YAML header ,指定文档 titleauthordatecategories 标签等。该目录包含日记条目,文件名只是条目的日期。

我使用 pandoc 为每个 .md 文件生成一个 PDF 没有问题,但是我正在寻找一种方法以书籍或记忆录格式生成一个 单个 PDF 与每个 .md 文档的 title 字段作为目录中的章节,按 date 值排列。理想情况下,日期 也将出现在目录中,但如果各个章节也将显示该信息,那么这并不重要。

我一直无法找到一种方法来执行此操作,因为在连接多个文档时,pandoc 似乎忽略了除第一个 YAML header 之外的所有 header 。我能想到的一种可能的解决方案是将所有相关的 YAML header 信息转换为 Markdown 标题,然后将每个 .md 文档中的现有标题降级。但我不确定该怎么做,或者这是否是最好的方法。我也在查看 R bookdown 包,但它也为章节使用 markdown header ,不确定它是否可以适应使用 YAML header 信息。

什么是完成我需要的最简单的方法?谢谢。

最佳答案

您的问题中概述的想法是一个很好的方法:

可以通过 filter 将标题降级为标题。 ,例如一个Lua filter如果您使用的是 pandoc >2.0。以下假设您使用的是当前版本 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

关于pdf - 如何使用 pandoc 将目录中的所有 .md 文件编译成单个 .pdf,同时保留 YAML header 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48028596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com