Sublime Text 找不到 pandoc 或 lualatex 是因环境变量隔离,需手动配置绝对路径:Mac/Linux 用 which pandoc 和 which lualatex 获取路径,填入 .sublime-build 的 cmd 和 path 字段;Windows 需安装时勾选「Add to PATH」或在 path 中指定完整目录;同时确保 selector 为 "source.gfm",working_dir 为 "$file_path"。

Sublime Text 找不到 pandoc 或 lualatex 怎么办
菜单里 Export to PDF 灰掉,不是插件没装,是 Sublime 根本没加载到这两个命令。终端能跑 pandoc --version 和 lualatex --version,不代表 Sublime 能——它用的是自己独立的环境变量。
Windows 用户最常漏掉安装时勾选「Add to PATH」;macOS 用户用 brew install pandoc 后,真实路径通常是 /opt/homebrew/bin/pandoc(Apple Silicon)或 /usr/local/bin/pandoc(Intel),而 Sublime 默认只查 /usr/bin;Linux 用户则可能因 shell 配置(如 ~/.zshrc 里加了 PATH)导致 GUI 应用看不到。
- 先在终端确认两个命令都可执行,且输出版本号
- Mac/Linux:运行
which pandoc和which lualatex,记下完整路径 - Windows:打开 PowerShell,运行
Get-Command pandoc和Get-Command lualatex - 别依赖
PATH自动继承——Sublime 不读你的 shell 配置文件
Markdown2PDF.sublime-build 必须填对的四个字段
新建构建系统时,cmd、selector、path、working_dir 这四个字段少一个就失败。尤其注意 cmd 里必须写 pandoc 的绝对路径,不能只写 "pandoc"。
-
cmd:数组形式,第一项必须是完整路径,例如"/opt/homebrew/bin/pandoc";--pdf-engine=lualatex必须显式指定,否则默认用 pdfTeX,中文会直接崩 -
selector:只能是"source.gfm"(GitHub Flavored Markdown),设成text.html.markdown或其他语法不会触发构建 -
path:用英文冒号分隔多个 bin 目录,例如"/opt/homebrew/bin:/usr/local/bin:/usr/bin";Windows 用分号,如"C:\Program Files\Pandoc;C:\texlive\2025\bin\win32" -
working_dir:设为"$file_path",否则相对路径引用图片、CSS 会失效
中文 PDF 编译失败:字体和引擎不匹配
Font "Noto Sans CJK SC" not found 这类错误不是 pandoc 问题,是 LuaLaTeX 渲染链路断在字体层。macOS/Linux 推荐用 Noto Sans CJK SC,Windows 推荐 SimSun 或 Microsoft YaHei,但必须系统已安装且被 LuaLaTeX 识别。
- macOS:打开「字体册」确认
Noto Sans CJK SC已启用;或运行fc-list | grep "Noto"查看是否列出 - Linux:确保已安装
fonts-noto-cjk(Debian/Ubuntu)或noto-fonts-cjk(Fedora) - Windows:不要只靠 Control Panel 安装字体,需把字体文件复制到
C:WindowsFonts并重启 Explorer -
-V mainfont=...参数不能省,也不能拼错;-V sansfont=...可选,但正文主字体必须声明
学术格式转换:引用、交叉链接、参考文献怎么稳住
纯 Markdown 转 PDF 很容易丢引用编号和图表标题。pandoc 本身不处理编号逻辑,得靠 --citeproc + CSL 样式 + 正确元数据,再配合 --number-sections 和 --top-level-division=chapter 控制结构。
- 引用必须用
@author2023形式,且文档开头要有 YAML 元数据块,含bibliography: refs.bib - CSL 样式文件(如
apa.csl)要放在当前目录或指定--csl=...路径 - 表格/图表标题要用
{#fig:label}或Table: Caption {#tbl:label},否则--number-sections不生效 - 避免混用 Conda 和 Homebrew 安装的 pandoc,二者依赖的 Haskell 运行时可能冲突,导致
--citeproc静默失败
最容易被忽略的是:Sublime 构建系统不支持交互式输入,所有参数必须一次性写死;--citeproc 失败时不会报错,只会输出未格式化的引用标记。验证方式很简单——生成 PDF 后搜 [@,如果还存在,说明 citeproc 没跑起来。


















