我这两周前后帮三个师弟师妹把 TeX Live 重新装了一遍,分别在 Windows 11、Ubuntu 22.04 和 macOS 上各跑了一次完整流程。本来以为这活儿闭着眼都能干,结果每台机器都给我整出了新花样:有下载到一半断掉的,有装完之后xelatex找不到的,还有中文编译出来一排方框的。所以干脆把 texlive2023 的安装从头到尾捋一遍,把图形安装器里每个选项、命令行里每个参数、以及那些官方文档里不爱提的坑,都摊开写清楚。
TeX Live 2023 是 2023 年 3 月发布的完整 LaTeX 发行版,它把编译器、宏包、字体、文档和一堆辅助工具打包成一个整体,装一次基本能覆盖日常写论文、排版书籍、做幻灯片的全部需求。这篇文章是给那些准备在本地搭一套稳定排版环境的人看的,不管你是刚接触 LaTeX 的新手,还是想从旧版本迁移过来的老用户,流程和参数都能直接照抄。下面按平台分步展开,顺带把我踩过的坑一并交代。
1. 先想清楚为什么装本地发行版,而不是用在线工具
1.1 TeX Live 解决的到底是什么问题
很多人一开始会问:现在网页上就能写 LaTeX,为什么还要在本地装好几个 G 的东西。这个问题的答案取决于你的使用场景。在线编辑器方便是方便,但它依赖网络、依赖别人的服务器,编译时长、可用宏包、字体库都受限制,遇到需要自定义字体、需要跑上百页的大型文档、或者要批量编译几十个文件的时候,体验就会明显下滑。TeX Live 的核心价值就在于它是一个自包含、可离线、宏包齐全的发行版,安装完之后你拥有一套完全处于本机掌控之中的编译链路。
从结构上看,TeX Live 2023 主要由几个部分组成:底层引擎(pdftex、xetex、luatex等)、格式文件、宏包树texmf-dist、平台相关的二进制程序,以及管理工具tlmgr。理解这个分层很重要,因为后面排查问题时,你至少要能判断到底是二进制没进 PATH,还是宏包缺失,还是字体路径没配。我见过不少人一报错就重装,其实大部分问题在几分钟内就能定位。
另一个常被忽略的点是版本锁定带来的稳定性。在线工具的底层环境随时可能升级,某天早上你发现昨天还能编译的文档今天报错了,这种事很让人抓狂。本地装好 TeX Live 2023 之后,只要你不主动执行tlmgr update,环境就是冻结的,什么时候编译结果都一致。对于要投论文、要交给出版社的文档,这种可复现性比什么都重要。
1.2 2023 版相比旧版,我实际感受到的变化
TeX Live 每年发布一个大版本,2023 这一版最直观的变化是宏包仓库的整体更新,很多数学、化学、绘制类宏包都同步到了当年的稳定状态。对普通用户来说,日常能感知到的差异其实不大,但如果你的文档里用到了较新的宏包语法,旧版本就可能出现"命令未定义"的报错。我这次帮人迁移时,就遇到一篇论文里用了某个较新的表格宏包特性,2021 版编不过,换成 2023 才正常。
版本号本身也关系到后续维护。TeX Live 的跨版本升级是一件比较折腾的事——官方并不推荐在原目录上直接升年份,通常的做法是装新版本、重新配 PATH、再删旧版本。所以如果现在才准备入坑,直接上 2023 是省事的选择。至于已经是 2023 想升 2024 的人,年内也可以先用 2023 顶一阵,真正需要新特性时再动手。
还有一点是关于磁盘占用的。完整方案(scheme-full)安装后大约占 7 GB 到 8 GB,下载的 ISO 镜像本身约 4 GB 出头。这个体量放在今天不算夸张,但对固态盘紧张的老笔记本来说还是得掂量一下。我一般建议至少预留 12 GB 的可用空间,把安装过程中的临时文件也算进去。
1.3 完整版和精简版,到底该选哪个
安装器里会给出几种方案,最容易让人纠结的是 scheme-full 和 scheme-basic 之间的取舍。scheme-full把几乎所有宏包、所有语言支持、全部文档都装上,装完就再也不用为"缺个包"发愁;scheme-basic只装最核心的一批,体积能压到几百兆到 1 GB 左右,但后续遇到缺包得自己用tlmgr install补。
我的建议很直接:只要磁盘不是特别紧张,就选完整版。理由有三点。第一,补包虽然是tlmgr install xxx一行命令的事,但很多人卡在不知道缺的是哪个包,报错信息里给的文件名和包名往往对不上,查起来费时间。第二,很多宏包之间存在隐式依赖,手动补容易漏。第三,完整版装完之后离线也能用,出差、断网都不影响写作,这个体验很实在。
当然,如果你只是偶尔编个小文档、机器配置又偏低,用scheme-basic也完全够用,后面真缺了什么再补就行。选择本身没有对错,关键是提前想清楚自己的用途,别装到一半才后悔。
2. 动手之前,先把这几件事办了
2.1 系统和空间的门槛要心里有数
TeX Live 2023 对系统的要求其实不高,主流的 Windows 10/11、近年版本的 Ubuntu 及其他 Linux 发行版、macOS 10.14 以上都能顺利安装。真正会卡人的是磁盘和内存。安装过程本身要同时读写大量小文件,机械硬盘上耗时会明显拉长,我的实测是机械盘上完整安装接近一个小时,固态盘大概二十分钟出头。内存方面 4 GB 是底线,8 GB 以上会更从容。
除了空间和内存,还要留意磁盘文件系统。Windows 上装在 NTFS 分区没问题,但尽量不要装在带有特殊字符或中文名的路径里,也不要装在 OneDrive 这类会自动同步的目录下。我就见过有人装在 OneDrive 文件夹里,同步进程一边上传一边被安装器写,结果装到一半报文件被占用。Linux 和 macOS 上主要是权限问题,装到/usr/local/texlive需要管理员权限,这个后面会详细说。
提示:安装前先把杀毒软件的实时扫描临时关掉,或者把安装目录加入白名单。TeX Live 安装时会创建上万个文件,实时扫描会显著拖慢速度,个别杀软还会误拦二进制程序。
2.2 镜像源怎么挑,安装包从哪下
官方主站不在国内,直接从那里拉数据,速度会让人怀疑人生。所以第一步不是下载,而是换一个就近的镜像站。国内比较好用的有清华 TUNA、中科大 USTC、上海交大等镜像,覆盖了 CTAN 的完整内容,速度稳定。镜像站上通常有两个东西可以下:一个是 ISO 镜像文件,一个是网络安装器install-tl-windows.exe或者install-tl-unx.tar.gz。
这两者差别不小。网络安装器体积小,但安装时要联网逐个下载,对网络稳定性要求高;ISO 是一个近乎完整的离线包,下完之后断网也能装,这也是我目前最推荐的方式。以清华镜像为例,ISO 的路径在CTAN/systems/texlive/Images/下面,文件名类似texlive2023.iso,体积约 4 GB 出头。下载工具建议用支持断点续传的,浏览器直接下大文件一旦中断就得重来。
# Linux 或 macOS 下用 wget 下载 ISO,支持断点续传 wget -c https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/texlive2023.iso # 也可以用 curl curl -C - -O https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/texlive2023.isoWindows 上如果不想下 ISO,也可以直接下网络安装器install-tl-windows.exe,启动后在安装界面里把 repository 改成清华镜像的地址,这样下载速度也不会太难看。两种方式我都用过,结论是网络稳定就选网络安装器,网络一般就老老实实下 ISO。
2.3 安装路径和权限的规划
路径规划看着事小,出问题的时候却很折磨人。Windows 上默认装到C:\texlive\2023,我个人建议就用这个默认值,不要改成带空格或者中文的路径,因为某些宏包在处理路径时对空格支持不完善,事后排查非常费劲。Linux 和 macOS 上默认是/usr/local/texlive/2023,这需要写权限,所以安装命令前面要加sudo。
如果你没有管理员权限,也可以在用户目录下安装,比如~/texlive/2023,安装时不需要 sudo,缺点是 PATH 要自己配。多用户环境里,管理员装一份全局的、每个人改一下 PATH 就能用,比每人装一份更省空间。我这次帮实验室机器处理时就是全局装一次,然后把路径写进统一的登录脚本。
权限这块还有个细节:Linux 下全局安装后,tlmgr更新宏包需要 sudo;如果不想每次都提权,可以在装完之后把texlive目录的所有者改成当前用户,或者给特定子目录放权。这一条我放在后面的 tlmgr 章节展开,因为改权限要小心,改错了会导致编译器读不到文件。
3. Windows 平台安装全流程
3.1 图形安装器里每个选项都掰开说
双击install-tl-windows.exe之后,会先看到一个欢迎页,然后是解压和初始化的进度条,等它跳到正式的安装界面,才到了真正需要做选择的地方。第一块是 "Basic scheme",也就是前面说的方案选项,为了省事可以直接选 "Full installation"。下面一行是 "Portable setup" 的勾选框,这个是便携模式,勾上之后会把相对路径写进配置,装上来的整个目录可以拷到 U 盘里到处跑,但如果你只是给本机装,别勾。
再往下是 "Installation root",也就是安装根目录,默认C:\texlive\2023。这里要留意的就是前面强调的路径规范问题。紧接着是 "Options" 区域,里面有几项值得说明。"Use letter size" 会把默认纸张设成 Letter,国内用户应该把它改成 A4,否则新文档的页面尺寸和排版基线会按美式标准来,虽然能后期改,但提前设好更省事。"Adjust search path" 一定要勾上,它负责把 TeX Live 的 bin 目录写进系统 PATH,不勾的话装完命令行找不到编译器,得手动配。
"Create symlinks in standard directories" 这一项在 Windows 上一般不勾,它是给 Unix 系统用的。还有 "Installation for all users" 与 "Installation for current user" 的区别,前者要求管理员权限,装上之后本机所有账户都能用,后者只对当前账户生效。实验室共享机器选前者,个人笔记本两者都行。
3.2 安装耗时、中断风险和离线方案
点下 "Install" 之后,剩下就是等待。用 ISO 离线安装时,它会先把镜像里的文件解包再落盘,整个过程中磁盘读写非常密集,风扇转起来是正常的。我在固态盘上完整装一次大约 22 分钟,机械盘接近 55 分钟。这个阶段最忌讳的就是中途手贱去点窗口或者强制关闭,那样很可能留下半截安装,后面启动tlmgr会报数据库不一致。
如果用的是网络安装器,进度条里会出现大量下载记录,这时候网络一抖就可能卡住。遇到卡住别急着结束进程,先看它是真的断了还是在缓慢重试,安装器带断点重试逻辑,稍微等一下往往会自己恢复。要是确实卡死了,结束进程重新运行安装器,它一般能接着上次的位置继续,不用担心从头再来——这也是为什么我更推荐先用 ISO,网络变量的干扰能少一大截。
装完后,安装器会给出一个 "Close" 按钮,但不要以为点完就万事大吉。它可能提示你需要重启终端,好让新的 PATH 生效。Windows 的 PATH 变更对已经打开的旧终端不生效,所以验证之前,先把之前开的 cmd 或 PowerShell 全关掉,重新开一个。
3.3 装完立刻验证的三个命令
安装是否成功,用三条命令就能确认,不需要打开任何编辑器。第一条tex --version,看是否输出版本号,正常会显示TeX 3.141592653之类;第二条xelatex --version,这个是你后面编中文的关键引擎;第三条tlmgr --version,用来确认宏包管理器可用。三条都通,说明 PATH 配对了,环境是活的。
tex --version xelatex --version tlmgr --version如果前两条报 "不是内部或外部命令",八成是 PATH 没写进去,或者被别的 TeX 发行版抢了优先级。这时候打开系统环境变量,检查 Path 里有没有C:\texlive\2023\bin\windows这一条,没有就手动加上,注意要放在旧版本条目的前面。如果tlmgr报数据库锁或者版本不符,多半是安装没跑完,重新运行安装器修复即可。
4. Linux 和 macOS 上的安装
4.1 用 install-tl 脚本走命令行安装
Linux 和 macOS 上没有 Windows 那种图形安装器,走的是脚本路线。从镜像站下载install-tl-unx.tar.gz之后,解压、进入目录、运行脚本即可。如果已经下了 ISO,也可以挂载 ISO 后从里面的目录运行同样的脚本,这样就是离线安装。挂载 ISO 在 Linux 上用mount -o loop,macOS 上直接双击即可挂载。
# 下载并解压网络安装器 wget https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz tar -xzf install-tl-unx.tar.gz cd install-tl-*/ # 指定镜像源并启动安装,全程交互式 sudo ./install-tl -repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/启动后会出现一个文本菜单,操作方式和图形界面类似,用字母键切换选项。S是选择方案,输入scheme-full回车即可;D是改路径;O是调整选项,其中 letter/A4 的设置在这里对应纸张选项。确认无误后输入I开始安装。整个过程不需要图形环境,远程服务器上也能装,这点比 Windows 方便。
macOS 用户还有一个选择是下载官方的 MacTeX.pkg,它相当于把 TeX Live 完整版和一套图形工具打包在一起,双击安装就行,省去命令行步骤。缺点是体积更大、安装时间更长,而且它会自动在/Library/TeX/texbin建符号链接。如果你更喜欢自己掌控路径,就还是用install-tl脚本。
4.2 PATH、MANPATH、INFOPATH 一次配明白
命令行装完最大的问题就是 PATH。脚本不会自动帮你写进 shell 配置,需要手动加。以 Ubuntu 为例,编译好的二进制在/usr/local/texlive/2023/bin/x86_64-linux,这个平台后缀不同机器可能不一样(ARM 机器上是aarch64-linux),所以配之前先用ls看一眼实际目录名,别照抄路径。
# 追加到 ~/.bashrc 或 ~/.zshrc export PATH=/usr/local/texlive/2023/bin/x86_64-linux:$PATH export MANPATH=/usr/local/texlive/2023/texmf-dist/doc/man:$MANPATH export INFOPATH=/usr/local/texlive/2023/texmf-dist/doc/info:$INFOPATH改完之后执行source ~/.bashrc让配置生效,然后同样用tex --version验证。注意 PATH 的顺序,TeX Live 的路径要放在系统包管理器路径的前面,否则你敲latex时可能用到系统里那个残缺的老版本,编译行为会和预期不一致。MANPATH 和 INFOPATH 不是必须的,但不配的话man latex查不到手册,查文档时会有点不方便。
注意:如果你用的是 fish 或 zsh,配置文件的写法和位置不一样。zsh 改
~/.zshrc,fish 要用set -Ux语法,不要直接把 bash 的 export 语句粘过去。
4.3 tlmgr 换源与日常维护
tlmgr是 TeX Live 的宏包管理器,日常补包、更新、卸载都靠它。刚装完默认的仓库地址可能指向海外源,更新时会很慢,所以第一件事是换源。换源命令是tlmgr option repository,后面跟镜像地址。改完之后用tlmgr update --list看一眼可更新的列表,确认能正常连上。
# 切换到清华镜像源(需要 sudo) sudo tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet # 查看可更新项,不实际执行 sudo tlmgr update --list # 更新自身 sudo tlmgr update --self这里有个很多人会踩的坑:当新的 TeX Live 大版本(比如 2024)发布之后,tlnet这个源会切换到新版本,此时 2023 版的tlmgr再去连它,就会报 "Local TeX Live (2023) is older than remote repository",更新直接失败。解决办法是改连归档源,地址结尾从tlnet换成tlnet/archive。归档源里保留的是 2023 那一代的宏包,能正常更新,只是不会再有新内容。这个细节官方文档提得不多,但迟早会遇到。
5. 中文排版打通:引擎、字体和编辑器
5.1 ctex 与 xeCJK,中文编译链路怎么选
TeX Live 装好只代表引擎就绪,中文能不能正常排出来是另一回事。核心原则是中文文档优先用 XeLaTeX 编译。老的pdflatex处理中文字体非常麻烦,要生成字体描述文件、要配置映射,新手几乎不可能一次搞定。xelatex直接调用系统字体,配合ctex宏包,开箱就能用,这是目前最省心的路线。
ctex宏包会自动处理中文的断行、标点挤压、字体切换等细节,你不用自己去调。文档类可以直接用ctexart、ctexrep、ctexbook,也可以在自己熟悉的文档类里加载ctex宏包。后者的好处是既能保留原有模板的排版风格,又能拿到中文支持。我给别人改论文模板时,基本都用后者,改动量最小。
xeCJK是更底层的方案,ctex其实是在它之上做的封装。只有在需要精细控制中西文间距、自定义标点规则的时候,才需要直接碰xeCJK。日常写作不用管这么深,知道有这么一层就行。
5.2 字体配置在 Windows 和 Linux 上的差异
字体是中文排版最容易翻车的地方。ctex会根据操作系统自动挑选默认中文字体:在 Windows 上它用宋体、黑体、仿宋、楷体这四套系统字体,这些字体基本都预装了,所以很少出问题;在 Linux 上它会退回到自带的 Fandol 字体集,Fandol 是随 TeX Live 一起安装的,覆盖常用汉字,但如果你的文档里出现了生僻字,就可能显示成空白。
如果你希望 Linux 和 Windows 上编译出来的效果一致,最稳妥的办法是显式指定同一套字体。比较通用的做法是装一套思源宋体/思源黑体,然后在导言区用\setCJKmainfont指定。这样跨平台时不会因为默认字体不一样导致行距和换行位置变化,对于要交稿的文档来说这点很重要。
\documentclass[UTF8]{ctexart} % 显式指定中文字体,跨平台更稳定 \setCJKmainfont{Source Han Serif SC} \setCJKsansfont{Source Han Sans SC} \begin{document} 你好,这是一段中文测试文字,用来验证字体是否正常加载。 \end{document}字体找不到时会报 "font not found" 之类的错误,这时候先用fc-list | grep 字体名(Linux)或者到系统字体目录里确认名字,注意字体名要用字体内部名称而不是文件名,两者经常对不上,这是新手最常犯的错。
5.3 编辑器配置要点和一个最小样例
引擎和字体都通了,接下来就是找个顺手的编辑器。VS Code 配 LaTeX Workshop 插件是目前比较流行的组合,装完插件后在设置里把默认编译工具设成xelatex,保存时自动编译、PDF 反向定位这些功能都能开起来。TeXStudio 是另一套成熟选择,图形界面更完整,适合完全不想碰配置文件的人。两者都能用,看你习惯哪种交互。
不管用哪个编辑器,验证环境的最小样例都是同一个:一段带中文的短文档,用xelatex编译,看能否生成 PDF 且中文正常显示。这个测试能一次性验证引擎、宏包、字体三条链路。我习惯在装完之后立刻跑一遍,把结果记下来,以后换机器时作为基准。
编译命令很简单,注意要跑两次以正确生成目录和交叉引用,第一次编译生成的.aux文件第二次才会被读进去。如果文档里有参考文献,还要加跑 BibTeX 或 Biber 的步骤,再用 xelatex 收尾。
xelatex test.tex xelatex test.tex6. 踩过的坑与排查速查表
6.1 安装阶段最常遇到的几个问题
安装阶段的问题基本集中在下载和权限两块。下载慢、下载中断,根源都是源不对或者网络波动,最直接的解法是换成本地镜像,或者干脆下 ISO 离线装。我这次帮人装的时候就遇到网络安装器下到 60% 卡住不动的情况,换成 ISO 之后一次成功。安装器卡住时不要强杀进程,可以先等两分钟,它内部有重试逻辑。
权限问题在 Linux 上比较突出。全局安装必须加sudo,但sudo会带来一个副作用:装出来的文件所有者是 root,后续用普通用户执行tlmgr更新时就会报权限不足。解决办法有两个,一是每次更新都加sudo,二是把安装目录的所有者改成自己。改所有者之前要确认目录里没有需要 root 才能写的特殊文件,改完之后用kpsewhich测试一下读取是否正常。
还有一种情况是机器上已经装过旧版 TeX,新装完之后命令行调用的还是旧版。这类问题的特征很明显:tex --version显示的年份不对。检查 PATH 里新旧两个目录的顺序,把新版放到前面,或者把旧版目录整体移除。多个发行版共存容易引发各种诡异问题,能清理就清理,别留着。
6.2 编译期的典型报错与处理思路
编译期报错五花八门,但有几类出现频率特别高。第一类是 "Filexxx.sty' not found",意思是缺宏包。这时候用tlmgr search --global --file xxx.sty找到对应的包名,再用tlmgr install 包名` 装上即可。别看到报错就猜包名,用搜索命令查是最快的路径。第二类是字体相关报错,前面讲过,多半是字体名写错或者字体没装,用系统字体查询命令核对一下就行。
第三类是 "TeX capacity exceeded",通常出现在超大表格或超长公式里,说明某个内部容量被撑爆了。TeX Live 2023 的默认容量已经比早年宽松很多,真遇到的话可以通过调整texmf.cnf里的参数解决,但在动手改之前,先看看是不是文档本身写得有问题,比如嵌套过深、单行内容过长。很多时候优化一下源码比改配置更有效。
表格是环境问题速查最直观的方式,下面这张表把常见症状和对应处置放在一起,遇到问题时可以快速对号入座。
| 症状 | 可能原因 | 处置方式 |
|---|---|---|
| 命令找不到 | PATH 未配置或顺序错误 | 检查并调整 PATH,重启终端 |
| 缺 sty 文件 | 宏包未安装 | tlmgr search查包名后 install |
| 中文显示方框 | 字体缺失或名称错误 | 核对系统字体内部名称并指定 |
| tlmgr 报版本过旧 | 源已切到新版本 | 改用tlnet/archive归档源 |
| 安装卡住 | 网络波动或杀软拦截 | 换镜像或离线安装,关实时扫描 |
| PDF 目录为空 | 编译次数不足 | 连续执行两次 xelatex |
6.3 几条没写进文档的经验
最后分享几条我实际折腾下来觉得最有用的经验。第一条是装完先备份配置。把 PATH 相关的设置、编辑器配置、常用的宏包列表记到一个文本文件里,下次换机器或者重装时直接照抄,能省下大把时间。环境类的东西最容易忘,而恰恰是最耗时的那部分。
第二条是不要频繁更新。tlmgr提供全量更新很方便,但更新是双刃剑,新版本宏包偶尔会引入不兼容变动,把本来能编的文档搞挂。我的做法是文档定稿期间完全不更新,等周期结束、手头没有紧急任务时再统一升一次。这个习惯帮我避免了好几次临交稿前环境崩掉的窘境。
第三条是保留一份 ISO。网络说变就变,镜像站偶尔也会维护,手头留一个 ISO 镜像文件,任何时候都能重装出一个干净环境。我习惯把它和安装笔记放在同一个目录里,几年下来已经成了固定的"环境急救包"。TeX Live 2023 现在还很稳,短期内没有非升不可的理由,把它当成长线环境用下去完全没问题。