pdf - 如何为 pandoc 中的代码块添加边框?
问题描述
我正在编写一个包含代码块的 Markdown 文件,然后使用 pandoc 将其构建为 DOCX 和 PDF,特别是:
pandoc myfile.md --to=docx --defaults=defaults.yml -o myfile.docx
pandoc myfile.md --to=latex --defaults=defaults.yml -o myfile.pdf
该defaults.yml
文件仅指定 LaTeX 边距并包含 ToC。
输出看起来非常好,但我希望代码块周围有边框,以使它们在视觉上与周围的文本分开。
这个 TeX StackExchange 问题建议将突出显示样式更改为深色主题,但我的读者肯定会更喜欢浅色主题。
这个 SO question建议切换到 listings 包,但这会产生比 pandoc 的默认值更丑陋的代码。(那个帖子也有 6 年了,从那时起 pandoc 发生了很大的变化。)
有没有没有这些缺点的方法?
解决方案
对于 LaTeX,您可以使用高度可定制的tcolorbox包来包装代码块,通过Lua 过滤器插入必要的代码:
function raw_tex (t)
return pandoc.RawBlock('tex', t)
end
--- Wrap code blocks in tcolorbox environments
function CodeBlock (cb)
return {raw_tex'\\begin{tcolorbox}', cb, raw_tex '\\end{tcolorbox}'}
end
--- Ensure that the longfbox package is loaded.
function Meta (m)
m['header-includes'] = {raw_tex '\\usepackage{tcolorbox}'}
return m
end
有关更多详细信息,请参阅tcolorbox 文档。
Docx 更简单:修改“源代码”文本样式,然后将修改后的文档用作--reference-doc
.
推荐阅读
- c# - 无法将 System.Threading.Task.Tasks 转换为 System.Func
- salesforce - Salesforce DocuSign API 同步问题
- java - Java 代码 - 在 localhost JVM 中列出 Java 进程的最佳方式(适用于 Linux 和 Windows)
- python-3.x - python 制作一个脚本,为 mac/windows/linux 安装包 OS
- android - Android spinner 后台问题 API 21
- c# - 未使用 WPF DataTemplateSelector
- json - JSONDecodeError:期望值。从 s 解码 JSON 文档(以 JSON 文档开头的 str)
- python - 从 django 查询中获取消息
- javascript - 将组件转换为自定义 Angular 表单控件?
- markdown - 自定义降价增强预览