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

2024-06-26

我有一个 .md 文档目录,每个文档都包含一个指定文档的 YAML 标头title, author, date, categories,tags等。该目录包含日记条目,文件名只是条目的日期。

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

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

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


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

将标题降级为标题可以通过filter https://pandoc.org/filters.html,例如A卢阿过滤器 https://pandoc.org/lua-filters.html如果您使用 pandoc >2.0。以下假设您使用的是当前版本 2.0.6:

降级.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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 pandoc 将目录中的所有 .md 文件编译为单个 .pdf,同时保留 YAML 标头数据? 的相关文章

  • 保存 WMD 编辑器控件的内容

    我正在尝试实现 StackOverflow 上使用的 WMD 编辑器来创建一些基本的 Wiki 风格的功能 我已经到了保存到数据库的时间了 但我不确定应该保存什么 如果我保存生成的 HTML 那么我可以正确检索并显示它 但在重新编辑时 我面
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 基于 Microsoft Word 模板生成 PDF 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个 Word 文档 它是某种模板 收集用户输入以填充该模板中的特定字段 然后生成一个 PDF
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 最小的有效 PDF 是多少?

    出于简单的好奇心 看到了最小的 GIF http probablyprogramming com 2009 03 15 the tiniest gif ever 最小的有效 PDF 文件是多少 这是一个有趣的问题 按照书本 你可以从以下开始
  • 是否有控制输出页面方向的选项(使用 knit->pander->pandoc->docx)

    我正在玩Tal s http www r statistics com 2013 03 write ms word document using r with as little overhead as possible 介绍如何在现实情况
  • 如何让 CSS 字体与这个 Grails PDF 渲染插件一起使用?

    我正在使用 Grails 渲染插件来生成 PDF 我想在我的 PDF 中包含 CSS 以便更好地呈现它 我在上找到了一个例子渲染插件网站 http gpc github io grails rendering docs manual gui
  • Ghostscript 转换 PDF 并输出为文本文件

    1 我需要将PDF文件转换为txt 文件 我的命令似乎有效 因为我在屏幕上看到了转换后的文本 但不知何故我无法将输出定向到文本文件中 public static string GetArgs string inputPath string
  • 使用 R markdown 为每个页面(包括第一页!)创建页脚

    我想补充一下问题使用 R markdown 为每个页面创建页脚 https stackoverflow com questions 25329375 creating a footer for every page using r mark
  • 使用 xhtmlrenderer (iText) 的书签

    我使用 xhtmlrenderer 也称为 Flying Saucer 和 iText 将 HTML 转换为 PDF 我如何用它创建书签 有人有一个小例子吗 提前致谢 R6中似乎添加了书签 但用户指南仅提供了一个临时参考 向作者提供 TOD
  • iText Pdf 页面字节大小

    我有一个业务需求 要求我将 pdf 拆分为多个文档 假设我有一个 100MB 的 pdf 为了简单起见 我需要将其分成多个不大于 10MB 的 pdf 我正在使用 iText 我要获取原始pdf 并循环浏览页面 但是如何确定每个页面的文件大
  • 合并 PDF iTextSharp

    我在网上查看了一些示例 并提出了使用 iTextSharp 合并 pdf 的代码 但我收到一个错误 该文档没有页面 它失败于页面 writer GetImportedPage reader X 这是堆栈跟踪 at iTextSharp te
  • 使用 knit2wp 更新帖子

    我已经能够使用 knit2wp 成功发布到 WordPress 甚至可以使用图像 即使拥有这样的天赋 我也并非绝对正确 事实上 即使是上面的内容也需要一些工作 我希望稍后能够更新帖子 显然 RWordPress 软件包允许删除帖子 但如果无
  • 无法打开 PDF,该 PDF 是使用 C# 编写的打印到 pdf 代码生成的

    我使用 C 使用 Microsoft Print to PDF 打印机将文件打印为 PDF 文件已成功生成 但我无法打开该文件 因为 Adob e Reader 说该文件已损坏 这是代码 PrintDocument pd new Print
  • 抑制 r markdown 中的控制台输出,但保留绘图

    嗨 我有以下降价块 r echo FALSE warning FALSE message FALSE error FALSE lapply obj function x plot x main some plot box axis 1 at
  • 如何在 Windows 上以编程方式将 SVG 转换为 PDF?

    我希望在服务器上以编程方式将 SVG 转换为 PDF 文档 在 Windows 上执行此操作有哪些选项 我看过链接Inkscape http www inkscape org Batik http xmlgraphics apache or
  • HTML:如何为 Chrome 原生 PDF 阅读器指定 PDF 打开参数?

    我在我的网站上显示一些 PDF 文档 如下所示 p It appears you don t have a PDF plugin for this browser p 由于 Chrome 上有原生 PDF 阅读器 所有开放参数 http w
  • 使用 PyPDF2 去除 PDF 上的水印

    This Section imports the necessary classes from the PyPDF2 library from PyPDF2 import PdfFileReader PdfFileWriter from P
  • 如何检测 itextSharp 中的表开头?

    我正在尝试将 pdf 转换为 csv 文件 pdf 文件具有表格格式的数据 第一行作为标题 我已经达到了可以从单元格中提取文本 比较表格中文本的基线并检测换行符的水平 但我需要比较表格边框来检测表格的开头 我不知道如何检测和比较 PDF 中
  • knitr pandoc:“无法使用 pdf writer 生成 pdf 输出”

    Up front using pandoc 在knitr中 当尝试将 md或 Rmd编译为PDF时 它会抱怨 我正在简化流程可重复的研究 正如许多地方所记录的那样 我在用着pandoc and knitr并制作出色的文档 我还试图为一些不太

随机推荐

  • Swift上传文件到PHP服务器

    因此 我将文件从 swift 上传到 PHP 服务器 POST 请求按预期到达 带有标头和所有内容 但我无法从中获取任何内容 FILES 它只是一个空数组 我显然在 Swift 方面做错了什么 这是我的代码 func testUpload
  • CMake的execute_process和任意shell脚本

    CMake s execute processcommand 似乎只让你执行一个进程 而不是你可以输入命令 shell 的任意行 问题是 我想使用管道 文件描述符重定向等 但这似乎不可能 另一种选择对我来说会非常痛苦 我认为 我应该怎么办
  • 导出的 DLL 函数未按词法排序?

    嗯 今天我遇到了一个奇怪的事情 我不久前编写了自己的 GetProcAddress 版本 用于从远程进程获取函数地址 显然我花了很多时间阅读 PE 架构来找出解决这个问题的最佳方法 根据 PECOFF v8 规范 我认为这是最新的官方规范
  • 无法为非报亭应用程序提交具有自动续订订阅的应用程序[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在提交带有自动更新订阅的非报亭应用程序时从未遇到过问题 但当我尝试提交应用程序进行审核时 我刚刚开始看到此错误 免费和自动续订的应用内购
  • 如何快速将云Firestore中的数据保存到变量中?

    我想将文档中的特定字段保存到变量中 到目前为止我的代码 func getDocument path String field String nil gt some Any var returnVar Any DEFAULT VAL var
  • 以编程方式断开和重新连接显示器

    问题 以编程方式断开和重新连接显示器的最佳方法是什么 目标 关闭显示器上的视频输出 黑屏 无背光 然后重新打开 想象一下从显示器上拔下视频线 然后重新插入 我的尝试 Get the monitor to disable uint iDevN
  • TfidfVectorizer 赋予停用词较高的权重

    给出以下代码 import pandas as pd from sklearn feature extraction text import TfidfVectorizer import urllib request the lib tha
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • Wingdings/Symbol 字符与其 Unicode 等效项之间的映射

    MsWord 使用 Wingdings 和 Symbol 字符作为项目符号 默认情况下它们的十六进制值为 F0A7 和 F0B7 我想将项目符号转换为其 Unicode 等效项 当然 这取决于实际使用的字体 因此 F0A7 Wingding
  • 如何在C中复制结构体数组

    我已经定义了类似的结构 typedef struct char oidkey int showperf char oidrealvalue BUFSIZE char oidlimits struct oidpairs 我有结构数组 stru
  • 如何使用 VBA 在 Excel 2010 工作表中添加选项按钮以进行分组?

    I want to add many option button to an excel worksheet not to a VBA form and want to group them by row The result should
  • 按键时应用程序窗口恢复

    在我的应用程序中 我添加了一项功能 可以在按键时 按 ESC 或暂停 中断按钮时 将应用程序窗口最小化到系统托盘 因此 当按下它们时 窗口会最小化 有没有办法添加功能来在某些按键上恢复应用程序窗口 即使其他应用程序当前处于活动状态 例如我按
  • gRPC 服务器如何注意到客户端已取消服务器端流式调用?

    我想使用 gRPC 让客户端订阅服务器生成的事件 我有一个 RPC 声明如下 rpc Subscribe SubscribeRequest returns stream SubscribeResponse 其中返回的流是无限的 要 取消订阅
  • 背景上可见的片段

    我正在开发一个应用程序 该应用程序具有在 XML 文件中定义的三个片段 HeaderFragment MainFragment FooterFragment 第一个屏幕启动三个片段 Header 和 FooterFragment 是静态的
  • foreach 与 LINQ .ForEach() [重复]

    这个问题在这里已经有答案了 为什么LINQ ForEach需要一个List对象 而foreach声明只需要IEnumerable 我更喜欢使用foreach当有多行和单行语句的 LINQ 时 只是为了可读性 但什么是首选 为什么 为什么会有
  • 使用 Bearer Token 在 C# 中构建 post HttpClient 请求

    我并不是真正的 C 专家 我有一个 C 中的 post httpRequest 需要开发 为此我创建了这个方法 它接受一个 Uri 一个对象和一个不记名令牌 该方法旨在构建调用请求 private HttpClient client new
  • 在 SelectList 集合中设置所选项目

    我有一堂具有以下属性的课程 它构建了一个SelectList现有列表中的对象 然后设置所选项目 public SelectList ProviderTypeList get SelectList list new SelectList my
  • 卡桑德拉吃掉内存

    I have 卡桑德拉2 1并设置以下属性 MAX HEAP SIZE 5G HEAP NEWSIZE 800M memtable allocation type heap buffers top 实用程序显示 cassandra 占用了
  • 如何在 Tomcat7 中部署 Grails 3.0.1 war 文件?

    我怎样才能部署一个Grails 3 0 1Tomcat7 的非嵌入式版本中的 war 文件 我收到的只是一个空白页或 404 错误 我可以成功部署其他 war 文件 所以我知道这不是 Tomcat 的问题 我的版本以及我采取的步骤如下 Se
  • 如何使用 pandoc 将目录中的所有 .md 文件编译为单个 .pdf,同时保留 YAML 标头数据?

    我有一个 md 文档目录 每个文档都包含一个指定文档的 YAML 标头title author date categories tags等 该目录包含日记条目 文件名只是条目的日期 我使用 pandoc 为每个 md 文件生成 PDF 没有