Pandoc将Markdown文件导出成PDF文件

Pandoc将Markdown文件转换成PDF文件时是先将Markdown文件转换成Latex文件,再将Latex文件专程PDF文件。参考命令:

1
pandoc example.md -o example.pdf --from markdown --pdf-engine=xelatex --template=eisvogel --listings

选择编译引擎

一般默认的编译引擎是pdflatex编译引擎,这个引擎对中文支撑不太友好,可以通过–pdf-engine=xelatex 修改编译引擎。

选择模板

使用pandoc模板 eisvogel ,eisvogel可以导出很漂亮的PDF文件。

  1. 将 eisvogel 模板拷贝到pandoc用户模板目录下,具体配置:

    • 在Linux系统下:/home/USERNAME/.local/share/pandoc/templates/
    • 在Windows系统下:C:\Users\USERNAME\AppData\Roaming\pandoc\templates\
  2. 改善中文支持,需要在eisvogel添加如下参数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    \else % if not pdftex
    $if(mainfont)$
    $else$
    \usepackage[fallback]{xeCJK}
    \setCJKmainfont{SimSun}[BoldFont=SimHei, ItalicFont=KaiTi] %配置中文字体
    \setCJKfallbackfamilyfont{rm}{SimSun}
    \usepackage[default]{sourcesanspro}
    \usepackage{sourcecodepro}

  3. 增加首行缩进,在 eisvogel.tex 文件中查找,在\begin{document}请增加一段代码:

    1
    2
    3
    4
    \usepackage{ctex} %调用中文字体宏包
    \usepackage{indentfirst} %调用首行缩进宏包
    \setlength{\parindent}{2em} %设置首行缩进为2字符
    \begin{document}

其他命令

  1. 查询系统支持的中文字体fc-list :lang=zh,在eisvogel.tex 中使用的字体必须是系统中可以查询到字体;
  2. 在转换命令中增加参数指定字体: - V CJKmainfont=”Noto Sans Mono CJK SC” -V mainfont=”Noto Serif CJK SC”

参考资料

Pandoc将Markdown文件导出成PDF文件

http://mixiang.tech/2025/04/14/2025-04-14-23/

作者

Mixion

发布于

2025-04-14

更新于

2025-04-14

许可协议