带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

浙公网安备 33010602011771号