前置条件

Note

PaperBell 的导出工作流使用:

  • 40 - Obsidian/脚本/pandoc/defaults/pdf.yaml 的 pandoc 参数
  • 40 - Obsidian/脚本/pandoc/templates/eisvogel.latex 的 pandoc 模板
  • 40 - Obsidian/脚本/pandoc/filters 路径下的 pandoc 过滤器

因此,订制自己的导出模板可以从以下三个方面入手:修改 Pandoc 参数修改 LaTeX 模板修改过滤器

修改 Pandoc 参数

Pandoc 文档转化的瑞士军刀,可以说是最流行的文档转化方案。不仅可以转化 .pdf,还可以处理很多其它格式,如 .docx。而它在转化为 PDF 的时候核心也是用了 LaTeX 做中转,所以爱折腾的话也能弄出漂亮格式。而且你可以自由选择编译模板、编译方式等等,所以 PaperBell 这里使用 Pandoc 作为输出工具。

这里介绍一下相关参数,以便用户做定制:

  • --defaults 参数:使用什么参数,PaperBell 提供了一个参数文件 40 - Obsidian/脚本/pandoc/defaults/pdf.yaml,你也可以使用你自己的参数文件,存放在 40 - Obsidian/脚本/pandoc/defaults 文件夹中,然后使用 --defaults=<参数文件名> 命令来调用。
  • --data-dir 参数:从哪里读取Pandoc的数据文件(如模板),PaperBell提供了一个文件夹供参考,你也可以使用你自己的文件夹路径,或删掉该参数,以使用默认值。
  • --resource-path 参数:资源路径,可以设置多个。${currentDir} 指的是当前文件夹,PaperBell 默认从以下位置找你的附件:(1) 当前文件夹 (2) Obsidian Vault 的附件文件夹 (3) 当前文件夹下的 “img” 或 “imgs” 文件夹
  • --template 参数:使用什么模板,PaperBell 提供了一个模板 eisvogel,你也可以使用你自己的模板,存放在 40 - Obsidian/脚本/pandoc/templates 文件夹中,然后使用 --template=<模板名> 命令来调用。
  • --reference-section-title 参数:参考文献小节的标题,默认是 References
  • --listings 参数:允许处理代码块格式。
  • --number-sections 参数:小节标题是否带序号。

修改 LaTeX 模板

PaperBell 提供的导出模板是基于流行的 pandoc-to-latex 模板 eisvogel 改编的中文适配版

建议用户在 40 - Obsidian/脚本/pandoc/templates 文件夹中,创建一个 eisvogel.latex 文件,然后复制 eisvogel.latex 文件中的内容到 eisvogel.latex 文件中,然后根据需要修改。

编辑完成后,在 Enhancing Export 插件中,添加新的默认命令,调整命令行参数以使用你自己的模板。

添加新的导出默认命令

参数建议基于 PaperBell 的模板修改。

--defaults="${vaultDir}/40 - Obsidian/脚本/pandoc/defaults/pdf.yaml" --resource-path="${currentDir}" --resource-path="${currentDir}/imgs" --resource-path="${attachmentFolderPath}" -o "${outputPath}"

上述命令中,最重要的参数是 --defaults 它指定了 Pandoc 的参数文件,默认是 40 - Obsidian/脚本/pandoc/defaults/pdf.yaml。你应该复制这个文件,设定为你的参数文件,然后修改其中的参数,其中最重要的参数是 --template,它指定了 Pandoc 的模板文件,默认是 eisvogel,你应该修改它为你的模板文件路径。

其它参数里:

  • ${vaultDir} 指的是 Obsidian Vault 的目录
  • ${currentDir} 指的是当前文件夹
  • ${attachmentFolderPath} 指的是附件文件夹
  • ${outputPath} 指的是输出文件夹

Tip

更多的可用变量可以参考 Enhancing Export 插件的相关文档

修改过滤器

40 - Obsidian/脚本/pandoc/filters 文件夹中,我们提供了一些过滤器,可以用来修改导出文档的格式。你可以根据自己的需要修改这些过滤器。大多数过滤器都是来自 obsidian-pandoc-filters 的,但 linkmute 过滤器是我们修改和新增的实现。

过滤器的应用顺序也很重要,PaperBell 应用过滤器的应用顺序在 pandoc 参数文件中指定:

filters:
  - PATH/mute.lua
  - PATH/image.lua
  ... # 其它过滤器

Tip

通常意味着你要引用参考文献,那么 pandoc-crossrefciteproc 过滤器通常是必须的,它们可能需要额外配置。参考文献的路径也应该在 40 - Obsidian/ 目录下,命名为 mybib.bib

上述命令中,PATH 指的是过滤器文件夹的路径,PaperBell 的过滤器文件夹路径是 40 - Obsidian/脚本/pandoc/filters

Warning

如果要修改 mybib.bib 的路径或者文件名,可以在 pandoc 参数文件中修改,但 PaperBell 的其它功能也可能需要修改。

相关链接