带latex的md转pdf的方法

环境:

  • windows11
  • pandoc 3.2.1
  • TexLive 2024
  • vscode

在我的环境中,以上工具均是直接安装可执行文件,没有通过工具链安装。

基础输出

直接输出pdf的命令:

pandoc note.md -o note.pdf --pdf-engine=xelatex -V mainfont="Microsoft YaHei"

必须指定latex的引擎和字体,否则无法识别latex和中文字符,因为xelatex的自带字体是不支持中文的。

简化命令

可以添加一个配置文件pdf.yaml,不需要每次都写那么长的命令了:

pdf-engine: xelatex
variables:
  mainfont: Microsoft YaHei

输出命令改为:

pandoc note.md -o note.pdf --defaults=pdf.yaml

 一个奇特的bug

在处理某个md文件的过程中,莫名其妙地显示错误和输出乱码,然后生成失败,但我用的命令一直没变:

[WARNING] Missing character: There is no 鈭?pandoc.exe: <stderr>: hPutChar: invalid argument (Invalid argument)

后来经过排查,原因是这个md文件里使用”~“号来表示等价无穷小,微软雅黑字体里没有这个符号,因此会输出警告,但是windows控制台的编码默认是GBK,输出出来的警告会变成乱码,pandoc读取了这个乱码,就直接出错了。修改控制台的编码为UTF8,就正常生成了。

#修改控制台编码为UTF8
chcp 65001

 

posted @ 2026-07-02 12:01  米小白  阅读(21)  评论(0)    收藏  举报