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
\else % if not pdftex
$if(mainfont)$
$else$
\usepackage[fallback]{xeCJK}
\setCJKmainfont{SimSun}[BoldFont=SimHei, ItalicFont=KaiTi] %配置中文字体
\setCJKfallbackfamilyfont{rm}{SimSun}
\usepackage[default]{sourcesanspro}
\usepackage{sourcecodepro}
  1. 增加首行缩进,在 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/03/13/2025-03-13-22/

作者

Mixion

发布于

2025-03-13

更新于

2025-03-16

许可协议