答案是需检查并修复系统path:在终端运行xelatex --version验证,若报command not found,则按系统添加tex bin路径至path(macos加~/.zshrc、windows改系统环境变量、linux写~/.bashrc),改后必须重启vscode。

pdflatex 或 xelatex 命令找不到:检查并修复 PATH
VSCode 或 Jupyter Notebook 导出 PDF 失败,报错 pdflatex not found 或 xelatex not found,本质是系统找不到 LaTeX 引擎可执行文件。这不是 notebook 本身的问题,而是 shell 环境里 PATH 没包含 TeX 的 bin 目录。
验证方式很简单:在 VSCode 内置终端(或系统终端)里直接运行:
xelatex --version
如果提示 command not found,说明路径没生效。不同系统典型路径如下:
- macOS(macTeX):
/usr/local/texlive/2026/bin/universal-darwin(年份随安装版本变) - Windows(MiKTeX):
C:\Program Files\MiKTeX\miktex\bin\x64或C:\Users\{user}\AppData\Local\Programs\MiKTeX\miktex\bin\x64 - Linux(TeX Live):
/usr/bin(通常已存在),或手动安装路径如/opt/texlive/2026/bin/x86_64-linux
修复方法不是改 VSCode 设置,而是让终端启动时加载正确 PATH:
- macOS:把 export 行加到
~/.zshrc(或~/.bash_profile)末尾,例如:export PATH="/usr/local/texlive/2026/bin/universal-darwin:$PATH" - Windows:在「系统属性 → 高级 → 环境变量」中,将 MiKTeX 的
bin\x64目录添加到「系统变量」或「用户变量」的PATH中 - Linux:写入
~/.bashrc或~/.profile,然后运行source ~/.bashrc
改完后**必须重启 VSCode**(不只是关终端),否则新 PATH 不会被继承。
nbconvert 找不到 pandoc:确认 pandoc 在 PATH 且版本兼容
报错 nbconvert failed: Pandoc wasn't found 是另一个高频路径问题。pandoc 是 nbconvert 依赖的文档转换器,它不随 Python 包自动安装。
安装 pandoc 后,同样要验证是否进 PATH:
pandoc --version
常见坑点:
- Windows 用户装了 pandoc 但只勾选了「Add to PATH for current user」,而 VSCode 是以管理员身份启动的 → 改为「Add to PATH for all users」或手动加进系统 PATH
- macOS 用 Homebrew 装的 pandoc(
brew install pandoc)一般没问题;但若用 dmg 安装包,可能默认没加 PATH,需手动补 - pandoc 版本太老(如 pandoc --version 确认 ≥ 2.11
notebook 里相对路径失效:cd 到文件所在目录再执行 nbconvert
用命令行导出时(比如 jupyter nbconvert --to pdf --execute my.ipynb),如果 notebook 里用了 pd.read_csv("data.csv") 这类相对路径,但你在别处运行命令,就会报 FileNotFoundError。
根本原因:nbconvert 启动 Python 内核时,工作目录是当前终端所在位置,不是 notebook 文件所在目录。
安全做法只有这一种:
- 先
cd到 notebook 文件所在的文件夹,再运行 nbconvert 命令 - 不要依赖 VSCode 右键菜单里的「Export as PDF」——它不保证 cd 到正确位置
- VSCode 终端里执行前,用
pwd(macOS/Linux)或cd(Windows)确认当前路径是否与 notebook 一致
LaTeX 模板路径混乱:别硬改 site-packages 里的 .tplx 文件
网上很多教程让你去改 nbconvert/templates/latex/article.tplx,把 \documentclass{article} 换成 ctexart 来支持中文。这看似有效,但实际埋了雷:
- 路径因 Python 环境(conda/virtualenv/system)、nbconvert 版本、操作系统而异,容易找错位置
- 升级 nbconvert 会覆盖你改的文件,下次又失效
- 修改全局模板影响所有 notebook,不够灵活
更稳妥的做法是用自定义模板:
- 新建目录
mytemplates/latex/,复制一份article.tplx过来,改其中的 documentclass 行 - 导出时显式指定:
jupyter nbconvert --to pdf --template mytemplates/latex/article.tplx --execute my.ipynb - 或者把模板路径加进配置:
jupyter nbconvert --generate-config,再编辑~/.jupyter/jupyter_nbconvert_config.py,加一行:c.LatexExporter.template_file = 'mytemplates/latex/article.tplx'
真正容易被忽略的是:LaTeX 编译失败时,nbconvert 默认静默丢弃详细错误。加 --log-level=DEBUG 才能看到真正的 .tex 文件在哪、哪一行报的错——这是定位路径和模板问题最直接的线索。











