sublime text 无法在 .tex 文件中实时渲染 latex 公式,因 latextools 仅调用编译器生成 pdf,不涉及 html/js 渲染;唯一稳定方案是在 .md 文件中用 markdownpreview + mathjax(v2 cdn),并严格遵循语法规范。

Sublime Text 本身不渲染 LaTeX 公式,Ctrl+B 编译生成的是 PDF,不是实时公式预览;想在编辑器里“看公式效果”,必须走 Markdown + MathJax 路线,且仅限 .md 文件,不是 .tex 文件。
为什么 LaTeXTools 编译不出公式预览?
LaTeXTools 是编译器调度插件,它调用 latexmk 或 xelatex 输出 PDF,整个流程不涉及 HTML 渲染、不加载 JavaScript、也不解析 $...$ 这类行内标记——那些是 MathJax 的职责,和 TeX 引擎无关。你在 main.tex 里写 $\alpha + \beta = \gamma$,编译后 PDF 里当然显示正常,但 Sublime 编辑窗口里永远只是纯文本。
常见误解是:“装了 LaTeXTools 就该能高亮/渲染公式”。错。它连语法高亮都靠单独的 LaTeX 语法包(自带),更别说数学渲染。
在 .md 文件里用 MarkdownPreview 显示公式
这是唯一稳定、轻量、无需额外服务的方案,适用于论文草稿、笔记、方法说明等穿插公式的场景。
-
MarkdownPreview插件必须启用enable_mathjax,且 CDN 地址要锁定 v2:"mathjax CDN": "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js?config=TeX-AMS_HTML" - 公式前后不能有空格:
$E=mc^2$✅,$ E=mc^2 $❌ - 独立公式块用
$$...$$,前后不能紧贴其他字符(如.$$或$$.会中断解析) - 下划线必须转义:
a\_b,否则被 Markdown 当作斜体处理 - 预览必须走浏览器:
Ctrl+Shift+P→Markdown Preview: Preview in Browser;侧边栏预览不加载 JS,公式只显示源码
别试图让 .tex 文件实现“所见即所得”公式预览
有人试过用 sublime-markdown-popups 或自定义 build system 拦截 .tex 内容做 MathJax 渲染,结果全是坑:
- 正则匹配
$...$会被注释、字符串、verbatim 环境干扰,极易误判 - 无法处理
\begin{equation}...\end{equation}这类环境,MathJax v2 不原生支持 LaTeX 环境嵌套 - 同步滚动、焦点切换、UTF-8 编码边界问题频发,调试成本远超收益
- 一旦项目含中文路径或非 ASCII 文件名,本地服务器模式(如
python -m http.server)直接挂掉
真要公式即时反馈,就老实用 Overleaf;本地写作请接受“编译→看 PDF”这个闭环——Skim / SumatraPDF 的 SyncTeX 反向搜索(点击 PDF 公式跳回源码行)比任何编辑器内伪预览都准、都快。
PDF 预览里公式显示异常?先查编译链和字体
如果 main.pdf 打开后公式缺符号、乱码、或整段空白,问题不在预览器,而在编译环节:
- 确认你没用
pdflatex硬跑含中文或 Unicode 的文档——改用xelatex或lualatex,并在导言区加\usepackage{fontspec} -
ctex宏包报No available font found,不是缺宏包,是系统字体路径未被xelatex环境识别;建议显式指定:\setmainfont{Noto Serif CJK SC}(需提前安装该字体) - Mac 用户若用
Preview.app打开 PDF,公式可能渲染不全——它不完全兼容某些 OpenType 数学字体,换Skim即可 - Linux 用户注意:
fc-list :lang=zh查到的字体,Sublime 启动时未必能继承;把字体文件放进项目目录,用相对路径引用最稳
公式预览这件事,本质是两个世界:编辑器负责写,PDF 查看器负责呈现。强行把它们缝在一起,缝线最先崩开。











