装完 LaTeX 之后,多数人敲下的第一条确认命令是 pdflatex --version。而返回的并不是「pdfLaTeX」,而是 pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024)。版本号写成圆周率不是玩笑——高德纳定下 TeX 的版本号向 π 收敛——而 pdflatex 自称 pdfTeX,是因为 pdflatex 本身就是指向 pdftex 的符号链接。本页依次走过 Windows、macOS、Linux 的安装步骤,确认装进来的到底是什么,然后认真处理人人都会撞上的那道坎:命令不在 PATH 上。当前版本是 TeX Live 2026(2026 年 3 月 1 日发布)与 MacTeX-2026。
启动安装程序之前要定下的两件事
要定的只有两件:装多少(scheme) 和 装到哪里,其余安装程序会问你。默认的 scheme-full 约 8 GB,居中的 scheme-medium 不到 2 GB,最小档的 scheme-basic 略多于 200 MB。线路细的时候,完整安装的下载与解包花上一个多小时并不稀奇。各 scheme 各含哪些内容、以及到底该装 TeX Live 还是 MiKTeX,都在「发行版」那一页比较过了;这里专注于 定下之后要做的事。
在 Windows 上安装 LaTeX
Windows 是三个平台里 最省事的 一个。要装 TeX Live,从 tug.org 下载 install-tl-windows.exe(约 20 MB,内容相同的 install-tl.zip 也行)并运行即可。它是网络安装器:启动后一边从 CTAN 镜像取内容一边装。默认装到 C:\texlive\2026,scheme 在图形界面里选。关键的一点是:在 Windows 上,安装程序会替你设好 PATH(若 PATH 里已有别的 TeX,新的会插在前面;否则追加在末尾)。装完请 重新开一个命令提示符,早就开着的那个窗口仍握着旧的 PATH。
REM Verify in a NEW Command Prompt after the installer finishes
where pdflatex
pdflatex --version
tlmgr --version若选 MiKTeX,就从 miktex.org 的下载页取 Basic MiKTeX Installer(.exe)并运行。向导主要问三件事:仅当前用户(推荐)还是所有用户共享、纸张尺寸,以及 是否自动安装缺失宏包(Always / Ask me first / Never)。共享安装需要管理员权限,而且自动取来的宏包本来就会落到各用户自己的目录,所以个人电脑上选「仅当前用户」最实在。装完先启动 MiKTeX Console 检查 Updates,是惯常做法。要给实验室几十台机器无人值守地铺开,可以用 miktexsetup 做静默安装。
在 macOS 上安装 LaTeX(MacTeX)
macOS 上的标准是 MacTeX。从 tug.org 下载 MacTeX.pkg(约 6.4 GB),双击并按提示走即可——它经过 Apple 签名与公证,Gatekeeper 不会拦。TeX 本体装进 /usr/local/texlive/2026,图形程序(TeXShop、BibDesk、LaTeXiT、TeX Live Utility)落在 /Applications/TeX/。MacTeX-2026 要求 macOS 11(Big Sur)及以上,在 Intel 与 Apple 芯片上都原生运行;Catalina 及更早版本不再支持。
在 PATH 这件事上,macOS 是三者里最贴心的。MacTeX 不把二进制目录(/usr/local/texlive/2026/bin/universal-darwin)直接塞进 PATH,而是让一个固定的符号链接 /Library/TeX/texbin 指向当前启用版本的二进制。在这台 Mac 上顺着看,链条是 /Library/TeX/texbin → Distributions/Programs/texbin → 当前年份的 bin;再由放在 /etc/paths.d 的一个文件把 /Library/TeX/texbin 加进默认 PATH。于是 新开一个终端就能直接用,明年换版本也不必改任何配置文件。想在已经开着的 shell 里立刻用上,就调 path_helper 重建 PATH。
# Refresh PATH in the current shell, then verify
eval "$(/usr/libexec/path_helper)"
which pdflatex # -> /Library/TeX/texbin/pdflatex
pdflatex --version若不需要图形程序、命令行足够,Homebrew 是快路子。mactex 含图形程序;mactex-no-gui 是同一套完整 TeX Live 去掉它们;basictex 则是更小的最小构建(不含图形程序,也不含 Ghostscript),装进 /usr/local/texlive/2026basic。反正多数人本来就用 VS Code 之类编辑,实务中被选中的往往是 mactex-no-gui。
# Full TeX Live without the GUI apps (the usual Homebrew choice)
brew install --cask mactex-no-gui
# Or the full bundle with GUI apps
# brew install --cask mactex
# Or a small starter install
# brew install --cask basictex在 Linux / Unix 上安装
在 Linux/Unix 上,最省事的是用 官方安装器 install-tl。取来 install-tl-unx.tar.gz,解开,运行随附的 Perl 脚本。默认装到 /usr/local/texlive/2026,往那里写需要 sudo——或者,如果压根不想用 sudo,在交互菜单里按 D(directories)把目标改到家目录下,比如 ~/texlive/2026,权限问题就没了。想用 图形界面 而非文本界面?perl ./install-tl -gui 会拉起 Tcl/Tk 版;若一切照默认来,--no-interaction 可以不问一句就装完。
# Download, unpack and run the official net installer
cd /tmp
curl -LO https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
zcat < install-tl-unx.tar.gz | tar xf -
cd install-tl-*
sudo perl ./install-tl # interactive text installer
# sudo perl ./install-tl -gui # Tcl/Tk installer instead
# sudo perl ./install-tl --scheme scheme-medium --no-interaction在 Unix 上 PATH 要自己配,不像 Windows 有自动一步。二进制目录以 CPU 命名:64 位 Intel/AMD 是 /usr/local/texlive/2026/bin/x86_64-linux,macOS 上(比如这台机器)则是 universal-darwin。不必记这个名字——安装器在退出前会原样打印出该追加的几行。它连 man 和 info 的路径一起给出,三行一并抄进 shell 启动文件(zsh 用 ~/.zshrc,bash 系用 ~/.profile 或 ~/.bashrc)。
# Add to ~/.profile or ~/.bashrc; the folder name follows your CPU
export PATH="/usr/local/texlive/2026/bin/x86_64-linux:$PATH"
export MANPATH="/usr/local/texlive/2026/texmf-dist/doc/man:$MANPATH"
export INFOPATH="/usr/local/texlive/2026/texmf-dist/doc/info:$INFOPATH"
# Then reload and check
. ~/.profile
which pdflatex当联网安装不现实时——线路细、要给实验室几十台机器铺、或者干脆上不了网——可以用 年度 ISO 镜像 安装。从 CTAN 镜像取来约 6 GB 的 ISO,挂载后运行里面的 install-tl(Windows 上是 install-tl-windows.bat),整套发行版无需联网即可装上。有一点要注意:ISO 内容在发布之后不再更新,所以装完记得把更新源改回在线的 tlnet 仓库。
# Offline install from the yearly ISO image (Linux/Unix)
sudo mount -t iso9660 -o ro,loop,noauto texlive.iso /mnt
cd /mnt && sudo perl install-tl
# Afterwards, send updates back to the online repository
tlmgr option repository https://mirror.ctan.org/systems/texlive/tlnet确认装好了:which pdflatex 与 pdflatex --version
确认分三步走,依次回答 跑的是哪个、它是哪一年的、它属于哪棵树。which pdflatex(Windows 上是 where pdflatex)报出真正会执行的那个文件;pdflatex --version 会连 年份一起 报出来,形如 pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024)。但只知道可执行文件在哪还不够。真正的杀手锏是 kpsewhich -var-value=SELFAUTOPARENT,它返回 那个可执行文件实际使用的 TeX 目录树的根;在这台 Mac 上返回的是 /usr/local/texlive/2024。当二进制与它所引用的树对不上时,这一行最先把谎话戳穿。
# 1. which binary runs, 2. which release it is, 3. which tree it uses
which pdflatex
pdflatex --version
kpsewhich -var-value=SELFAUTOPARENT
# On Windows, replace the first line with:
# where pdflatex最后再证明一次它确实能排版:写一个极小的 .tex,编译,出来 PDF 就算装好了。若这一步报错,原因几乎不会是 PATH——该看的是当前目录能不能写,或者文件名里混进了非 ASCII 字符。
printf '\\documentclass{article}\\begin{document}Hello, \\LaTeX!\\end{document}' > hello.tex
pdflatex hello.tex
# -> produces hello.pdf找不到 latex 命令,或者跑起来的是旧年份
如果 which 或 where 什么都不返回,说明 PATH 没配好。如果返回了东西但行为不对,就仔细看它打出来的那条路径。人们口中的「LaTeX 路径不生效」,实际上无非三种情况。其一,终端没有重开——设置改了,但那个 shell 还握着旧的 PATH。其二,PATH 仍指向旧年份的树:去年在 ~/.zshrc 里写了 /usr/local/texlive/2025/bin/...,今年装了新版,那行却还在。若 /usr/local/texlive/2025 已被删掉,就是 command not found;若没删,去年的版本会一声不吭地继续跑。其三,两套 TeX 同居,争谁排在前面。
第三种最难缠:pdflatex 来自 TeX Live,bibtex 来自 OS 包,tlmgr 来自旧的 MacTeX。你以为在处理同一份稿子,工具各自却在看不同的树。与其反复敲 which,不如 敲一次 tlmgr conf。它会搜索 PATH,列出 pdftex、xetex、luatex、dvips、dvipdfmx、kpsewhich、fmtutil、updmap、tlmgr 各自解析到的位置,接着还会打印当前生效的配置文件与字体映射文件的位置。只要有一行指向和其他行不同的树,问题就在那儿。
# One command that resolves every core tool at once
tlmgr conf
# Look for a line whose path differs from the others, e.g.
# pdftex: /usr/local/texlive/2026/bin/universal-darwin/pdftex
# bibtex: /usr/bin/bibtex <- a different install!
# The manual equivalent, if tlmgr itself is the thing you distrust
which pdflatex
which lualatex
which tlmgr- 改完启动文件,一定要 重开一个终端 或重新 source 一遍。一直开着的终端仍是旧 PATH。
- 在已有 TeX 的机器上安装前,先记下
which pdflatex的输出,日后才知道改动了什么。 - 同一个目录在 PATH 里出现两次是无害的,有害的是某一行指向另一棵树还排在前面。
- 用官方 TeX Live 就别再叠加
apt的texlive-*,那会造出两棵树来抢 PATH 的头把交椅。 - 用 MiKTeX 就把更新与装包都收进 MiKTeX Console。
tlmgr不管 MiKTeX。