sublime text 本身不提供 markdown 导出 pdf 功能,所有导出均依赖外部工具链;export to pdf 菜单项灰色主因是未安装启用 markdownpreview 插件、文件语法未设为 github flavored markdown、pandoc/wkhtmltopdf 未安装或路径配置错误。

Sublime Text 本身不提供 Markdown 导出 PDF 功能,所有“导出”都是调用外部工具链完成的;菜单里 Export to PDF 灰掉、点击无反应、生成乱码 PDF,90% 是因为 pandoc / wkhtmltopdf / Chrome 没装好,或路径没对上。
Export to PDF 菜单项为什么是灰色的?
这不是插件没启用,而是触发条件缺失:
- 当前文件语法未设为
GitHub Flavored Markdown(右键 → Set Syntax → Markdown (GFM)) -
MarkdownPreview插件未安装,或装的是已废弃的MarkdownPDF(它硬编码调用 phantomjs,2026 年完全失效) - 系统没装
pandoc或wkhtmltopdf,终端运行pandoc --version无输出 - 即使装了,Sublime 的环境变量也找不到它——Mac 上
brew install pandoc后实际路径常是/opt/homebrew/bin/pandoc,但 Sublime 默认只查/usr/bin
用自定义 Build System 实现稳定导出
比改插件设置更透明、更可控。推荐用 pandoc + lualatex 引擎,适合带目录、页眉页脚的正式文档:
- 菜单 → Tools → Build System → New Build System…,粘贴以下内容并保存为
Markdown2PDF.sublime-build -
"cmd"必须写pandoc全路径,不能只写"pandoc"(否则找不到命令) -
"selector"必须是"source.gfm",否则.md文件里按Ctrl+B不触发 -
"path"填你本地pandoc所在目录(多个路径用英文冒号分隔),例如:"/opt/homebrew/bin:/usr/local/bin"
{
"cmd": ["/opt/homebrew/bin/pandoc", "-s", "--pdf-engine=lualatex", "-V", "mainfont=Noto Sans CJK SC", "-o", "$file_base_name.pdf", "$file"],
"selector": "source.gfm",
"path": "/opt/homebrew/bin:/usr/local/bin",
"working_dir": "$file_path"
}
中文 PDF 乱码、字体丑、段落挤在一起怎么办?
这不是 Sublime 的问题,是渲染链路缺字体声明:
-
pandoc默认用lualatex或xelatex,但不指定中文字体就 fallback 到拉丁字体,中文变方块 -
-V mainfont=Noto Sans CJK SC这个参数不能省;macOS/Linux 常用该字体,Windows 可换为SimSun或Microsoft YaHei - 如果系统没装对应字体,
pandoc编译会报错或静默失败;可先运行fc-list | grep "Noto"(Linux/macOS)或检查字体册(macOS)确认存在 - 若仍模糊,Chrome 打印 PDF 时关掉「Background graphics」反而能提升中文字体抗锯齿效果
代码类文档更推荐 ExportHtml + Chrome 打印
如果你导出的是含语法高亮的代码笔记,而不是学术论文,这条路最稳、颜色保留最全、不用装 LaTeX:
- 用 Package Control 安装
ExportHtml(别装ExportHtml2或旧版) - 打开代码文件 →
Ctrl+Shift+P→ 输入ExportHtml: Export→ 勾选Use current color scheme和full_page,关掉wrap_lines - 生成的
.html用 Chrome 打开 →Ctrl+P→ 选择「另存为 PDF」→ 关闭页眉页脚、勾选「背景图形」、缩放设为100% - 如果 PDF 中文是方块,用文本编辑器打开该
.html,搜索font-family:,替换为:font-family: 'Fira Code', 'Consolas', 'Microsoft YaHei', 'STHeiti', sans-serif;
真正卡住人的从来不是“怎么点菜单”,而是 pandoc 路径写错、中文字体没装、selector 配成 text.html.markdown(老模板常见错误)——这些细节一错,整个流程就断在无声处。











