如何复用Markdown文档YAML头部的静态配置项?
问题解答
1. 静态配置移至LaTeX包含文件的实现方法
完全可以将静态配置项迁移到已有的LaTeX包含文件中,操作步骤如下:
- 元数据类配置(如author):在
apprentissage-header-include.tex中直接添加LaTeX命令,例如:
移除所有Markdown文件YAML头部中的\author{固定作者名}author字段,后续修改作者名只需编辑这个LaTeX文件即可。 - 格式类配置(如geometry、fontsize):同样在
apprentissage-header-include.tex的导言区添加对应命令:
注意:如果Markdown的YAML头部仍保留这些字段,会覆盖LaTeX中的设置,因此需批量删除所有Markdown文件里的静态配置项。% 设置页面边距 \usepackage[margin=1.5in]{geometry} % 设置字体大小 \fontsize{12pt}{14pt}\selectfont
2. 优化gen.sh脚本实现配置复用
有两种常用方式优化脚本,实现静态配置的集中管理:
方式一:脚本内定义变量传递参数
在gen.sh中定义静态配置变量,调用Pandoc时通过--metadata或--variable参数传递:# 静态配置变量 AUTHOR="固定作者名" GEOMETRY="margin=1.5in" FONTSIZE="12pt" # 遍历Markdown文件生成PDF for md_file in *.md; do pandoc "$md_file" \ --include-in-header=apprentissage-header-include.tex \ --include-before-body=apprentissage-include.tex \ --metadata author="$AUTHOR" \ --variable geometry="$GEOMETRY" \ --variable fontsize="$FONTSIZE" \ -o "${md_file%.md}.pdf" done修改配置时只需调整脚本内的变量值,无需改动任何Markdown文件。
方式二:单独静态配置YAML文件
创建static-config.yaml文件存放所有静态配置:author: 固定作者名 geometry: margin=1.5in fontsize: 12pt然后在
gen.sh中通过--metadata-file参数引入该文件:for md_file in *.md; do pandoc "$md_file" \ --include-in-header=apprentissage-header-include.tex \ --include-before-body=apprentissage-include.tex \ --metadata-file=static-config.yaml \ -o "${md_file%.md}.pdf" done这种方式更直观,配置与脚本分离,维护更方便。
3. 可利用的LaTeX特性
- 自定义文档类(.cls):创建专属的LaTeX文档类文件(如
apprentissage.cls),将所有静态配置(页面布局、字体、元数据默认值等)封装进去:
然后在\NeedsTeXFormat{LaTeX2e} \ProvidesClass{apprentissage}[2024/05/20 Custom class for documents] % 基于article类扩展 \LoadClass{article} % 静态配置 \usepackage[margin=1.5in]{geometry} \fontsize{12pt}{14pt}\selectfont \author{固定作者名}apprentissage-header-include.tex中替换默认文档类:
后续修改静态配置只需编辑\documentclass{apprentissage}.cls文件,所有生成的PDF都会自动应用新配置。 - LaTeX包的全局选项:如果使用特定LaTeX包,可在导言区统一设置包的全局选项,避免在每个文档中重复配置。
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

