macOS LaTeX环境搭建:MacTeX+Sublime Text+Skim配置完全指南 MacBook 上写论文、做排版绕不开 LaTeX但很多朋友第一次在 macOS 上搭环境就被 Mactex、Sublime Text、Skim 这几个名字搞懵了到底先装哪个装完怎么让它们互相配合编译按钮按下去报一堆错怎么办这套文章就是来解决这些问题的。我用的组合是 MacTeX Sublime Text Skim这套方案在 macOS 上非常经典MacTeX 负责编译内核Sublime Text 负责写代码Skim 负责预览 PDF三者各司其职、联动顺畅。不管你是刚入门的本科生要写毕业论文还是研究生准备投期刊论文甚至只是想把课堂笔记用 LaTeX 整理得更漂亮这篇文章都能帮你从零跑通整套流程。1. 方案选型为什么是 MacTeX Sublime Text Skim1.1 这套组合的定位与使用场景先说结论LaTeX 本质上是“用纯文本写文档再用编译器生成 PDF”的工作流。你需要的不是一个大而全的软件而是三个各司其职的程序。Windows 上很多人用 TeXLive VSCodemacOS 上最顺手的组合就是这套MacTeX 是 macOS 原生的 TeX 发行版Sublime Text 是一个启动极快、插件生态强大的文本编辑器Skim 是专为 LaTeX 设计的 PDF 阅读器支持自动刷新和源码定位。这套组合最舒服的点在于轻量。Sublime Text 打开项目基本是秒开不像某些大型 IDE 一样要等半天加载而且它的快捷键和命令面板用顺手之后写 LaTeX 的速度非常快。Skim 打开 PDF 也是毫秒级响应配合 SyncTeX 还能实现“从 PDF 点击跳到源码对应行”这对修改长文档特别有用。适合这套方案的读者有三类第一类是完全没接触过 LaTeX 的新手需要一个能一次装好、少折腾的路径第二类是从 Windows 转过来的用户之前用习惯 Texmaker 或 TeXstudio现在需要一套 macOS 上等效甚至更好的方案第三类是重度写作用户比如经常写论文、做技术报告、写简历模板的人需要一个稳定、可定制、不占用太多系统资源的组合。1.2 为什么不用 All-in-One 方案很多新手会问为什么不用 TeXShop 或 TeXstudio这两个确实是 macOS 上开箱即用的 All-in-One 工具装上 MacTeX 之后自带的 TeXShop 就能直接编译预览理论上省去很多配置步骤。但实际用下来这类集成工具的编辑器都比较“重”代码补全、多文件项目管理、正则替换这些功能远不如 Sublime Text 灵活。另外也有朋友推荐 VSCode LaTeX Workshop 插件。这个方案也能用配置起来也不算复杂但 VSCode 本身开销比较大打开大项目时内存占用轻松上 1GB。如果你的 MacBook 是 8GB 内存、甚至更老的 Intel 型号一边开浏览器查文献、一边编译长文档VSCode 很容易让系统变得卡顿。Sublime Text 在同样场景下占用只有几十到一百多 MB快得不是一点半点。当然这不意味着 Sublime Text 是完美的。它的 LaTeX 插件体系不如 VSCode 的 LaTeX Workshop 那么新、那么花哨但核心的编译、预览、错误跳转、补全功能完全够用而且极其稳定。我 2017 年开始用这套组合中途试过各种编辑器最后还是回到 Sublime Text。1.3 装之前先想清楚三件事在动手安装之前先确认三件事能省掉后面不少麻烦。第一明确你的 macOS 芯片类型。如果是 Apple SiliconM1/M2/M3MacTeX 会自动安装原生 ARM 版本编译速度比 Intel 版更快如果是 Intel 老款安装流程一样只是编译速度会慢一些。可以在终端输入uname -m查看显示arm64就是 Apple Silicon显示x86_64就是 Intel。第二确认电脑磁盘空间足够。MacTeX 完整版体积很大安装包直逼 5GB装完占用约 2GB 空间。空间紧张的话可以改用 BasicTeX轻量版但后面要用额外宏包时得手动用tlmgr补齐对新手不友好建议老老实实装 MacTeX 完整版。第三决定要不要用 LaTeX 写中文。如果只是纯英文文档默认引擎 pdflatex 就够了如果要写中文论文必须用 xelatex 引擎配合 ctex 宏包。后面第 3 章的配置流程会专门针对中文场景做调整这一步想清楚能避免“编译通过但 PDF 里全是乱码”的尴尬。2. 环境安装从 MacTeX 到双软件部署2.1 安装 MacTeX体积大但值得MacTeX 是 macOS 上使用最广泛的 TeX 发行版官网在http://www.tug.org/mactex/。打开页面之后点下载按钮会得到一个后缀为.pkg的安装包体积大约 4.5~5GB下载速度取决于你的网络环境我建议用稳定的网络下载中途断了重下很崩溃。下载完成后双击安装包按提示一路继续即可。安装过程会持续 5~10 分钟因为它要把全套 TeX 工具拷入系统目录。装完之后在终端输入latex --version如果显示类似pdfTeX 3.141592653-2.6-1.40.25 (TeX Live 2023)说明 MacTeX 已经安装成功。要注意的是MacTeX 安装完成之后命令行的latex、xelatex、tlmgr等工具会被放在/Library/TeX/texbin/下面正常情况下系统会自动配置 PATH但如果你用的是 zsh 且没有自动生效可以在~/.zshrc里加上export PATH/Library/TeX/texbin:$PATH export MANPATH/Library/TeX/texbin/man:$MANPATH加完之后记得执行source ~/.zshrc。这一步对后面的 LaTeXTools 插件很重要因为编译时 Sublime Text 需要在终端环境中找到xelatex或其他编译命令。2.2 安装 Sublime Text编辑器里的轻骑兵Sublime Text 的下载地址是https://www.sublimetext.com/目前最新版本是 Sublime Text 4。下载.dmg文件后拖入 Applications 文件夹即可完成安装。第一次打开时会弹出是否安装命令行工具的提示建议选择“是”这样可以在终端里直接用subl命令打开文件或文件夹。如果以前用过 Sublime Text 3可能会好奇老版本能不能继续用。我实测下来Sublime Text 4 的启动速度和内存占用控制得比 3 更好对 LaTeXTools 的兼容性也更到位所以直接上新版就好。新版安装完默认没有 Package Control需要手动装一下。装 Package Control 有两种方式。最简单的一种是打开 Sublime Text按CtrlShiftP注意 macOS 上是CommandShiftP调出命令面板输入Install Package Control回车稍等几秒就会出现成功提示。如果这种方式失败比如网络受限可以去 Package Control 官网https://packagecontrol.io/installation复制一段安装脚本粘贴到 Sublime Text 的 console 里执行。console 的打开方式是View Show Console或快捷键Ctrl\Mac 上是Control。Package Control 装好之后后面的 LaTeXTools 插件才能顺利安装所以这是必做步骤。我试过跳过这一步直接往Packages目录里塞插件后面更新和维护都麻烦不推荐。2.3 安装 SkimPDF 预览的关键角色Skim 是 macOS 上一款老牌的 PDF 阅读器专为 LaTeX 用户设计下载地址是https://skim-app.sourceforge.io/。下载打开的.dmg拖入 Applications 文件夹即可。Skim 最核心的能力有两个一是自动检测 PDF 文件变化并刷新预览二是跟 LaTeX 编译器配合实现源码和 PDF 的双向定位。装好 Skim 后需要打开一个设置Skim Preferences General勾选Check for file changes并选择Automatically reload这样每次编译输出新的 PDF 后Skim 会自动刷新页面不用手动去点重新加载这个细节非常影响体验。还有一个小设置在Skim Preferences Sync里确保 PDF-TeX Sync 的支持被启用默认就是开启的不用特意改动。这里顺便说一句为什么不用 macOS 自带的“预览” App 来看 PDF因为预览 App 不会自动检测文件变化每次编译完都要手动切换、手动刷新而且不支持 SyncTeX 源码跳转体验差很多。Skim 的存在就是为了解决这些痛点所以不要省这一步。2.4 安装 Package Control 的坑与注意事项Package Control 安装过程虽然简单但有个常见的坑某些网络环境下Sublime Text 无法访问packagecontrol.io导致安装进度卡住或者报错。我遇到过几次这种情况原因是网络代理或 DNS 问题。解决思路是暂时关闭代理再试或者使用安装脚本方式手动安装。此外安装完 Package Control 后Sublime Text 右下角可能提示“Package Control 正在下载 channels”此时最好不要立刻去安装其他插件等它把 channel list 拉取完成再操作。如果长时间卡住可以按Ctrl\Mac 上是Control打开 console 查看日志里面有详细的网络请求报错信息。根据我的经验90% 的安装失败都是网络问题不是操作问题所以别慌先排查网络。3. 核心配置LaTeXTools 与 Skim 联动3.1 安装 LaTeXTools 插件LaTeXTools 是 Sublime Text 上最成熟、维护最活跃的 LaTeX 辅助插件功能覆盖编译、错误定位、代码补全、参考文献管理、SyncTeX 双向定位。安装方式很简单按CommandShiftP打开命令面板输入Package Control: Install Package回车然后搜索LaTeXTools找到后回车安装。安装完成后Sublime Text 底部会显示 “LaTeXTools installed” 之类的提示。之后随便打开一个.tex文件插件就会自动加载。你可以看菜单栏是否有LaTeXTools菜单项来确认插件是否成功激活。如果安装过程中被依赖问题困住绝大多数情况是因为 Sublime Text 版本太旧或 Python 环境异常。Sublime Text 4 内置了 Python 3.8 运行时LaTeXTools 已适配所以直接用 4 版本基本不会遇到依赖问题。若仍报错可以在命令面板执行Package Control: Satisfy Dependencies让 Package Control 手动补齐依赖。3.2 配置 LaTeXTools 指向 MacTeXLaTeXTools 安装完成后默认情况下它会自动找到 MacTeX 的编译工具因为 MacTeX 安装器已经把可执行文件放进了系统 PATH。但为了保险起见还是建议检查一下配置。方法Sublime Text Preferences Package Settings LaTeXTools Settings - User打开用户配置文件。如果里面是空的就新建一个空对象{}然后逐步添加需要覆盖的配置项。先看 Windows 用户常见的“找不到 latex”的问题在 Mac 上也会出现吗如果不确定可以手动指定texpath。打开 Settings - User添加如下内容{ texpath: /Library/TeX/texbin:$PATH, windows: { texpath: } }我实测过MacTeX 默认路径就是/Library/TeX/texbin只要这个路径存在LaTeXTools 就能顺利调用。万一你用的是自定义安装目录或者 BasicTeX就需要将上面的路径改成实际路径。配置完不需要重启 Sublime Text保存后立刻生效。还有一个值得改的配置项是编译引擎。LaTeXTools 默认使用pdflatex但如果你要写中文文档必须改成xelatex。这个不用在全局配置里写死而是可以在单个.tex文件开头用 magic comment 声明比如%!TEX program xelatex这样按CommandB编译时LaTeXTools 就会自动调用 xelatex。我喜欢这种按文件指定引擎的方式因为不同项目可能有不同的编译需求比如部分模板要求 pdflatex部分要求 xelatex写在文件里比改全局配置更灵活。3.3 Skim 自动预览配置在 LaTeXTools 的默认设定里编译完成后它会自动打开 Skim 显示 PDF。但如果之前没用 Skim 打开过任何 PDF插件可能找不到 Skim 的路径。建议先在 Skim 里手动打开任意一个 PDF 文件退出后即可完成关联。之后编译.tex文件时LaTeXTools 会用 AppleScript 告诉 Skim 打开对应 PDF 并自动跳转。如果你希望编译动作和跳转更精确可以在 Skim 的Preferences Sync中做如下设置PDF-TeX Sync support保持默认的Skim选项即可。LaTeXTools 通过一个名为skim的模块来和 Skim 通信在Settings - User里也能找到skim相关的配置段默认已经指向好了基本不需要改。一个大家容易忘记的操作是第一次用 Skim 打开 PDF 后在File Open Recent里看一下是否有记录如果这里为空说明 Skim 没有正确注册为 LaTeX 预览器。正常情况不用管这里只是排查思路。3.4 首次编译测试与验证配置到这里可以跑第一个测试文档了。新建一个文件命名为hello.tex内容如下\documentclass[UTF8]{ctexart} \begin{document} 你好LaTeX \end{document}注意如果你不写中文documentclass可以直接用article并且删掉UTF8选项。但如果目标是写中文文档用上面的ctexart是最省心的方案它自带中文排版支持。保存文件后按CommandB触发编译。LaTeXTools 会弹出构建面板展示编译日志。如果一切顺利几秒钟后 Skim 会自动打开并显示“你好LaTeX”。这个时刻就是整套环境成功的标志。编译过程中如果报错先不要慌。LaTeXTools 会把错误信息用Error或Warning的形式列在面板里按F4可以跳到源码中对应的出错行。这是排查问题最核心的操作记住它。一个经验是LaTeX 的报错经常“报告位置”和“实际错误位置”不一致所以跳转之后多看几行上下文别只盯着爆红的行。3.5 自定义编译快捷键与构建组合Sublime Text 默认的编译快捷键是CommandB这个在 LaTeXTools 里已经绑定好了。但还有几个高频操作的快捷键值得记住CommandL加G可以执行goto跳到 PDF 中的对应页面CommandL加P可以打开 PDF 预览CommandL加Q可以查看日志。这些快捷键在 LaTeXTools 的默认配置里都有用熟了能显著提升书写节奏。更进阶一点如果你经常需要配合biber处理参考文献LaTeXTools 默认也是支持的。用biblatex宏包时只需要在文件开头写%!TEX program xelatex和%!TEX bib biber编译时 LaTeXTools 会先跑 xelatex再跑 biber最后再跑两遍 xelatex。我写硕士论文时这套多轮编译机制帮我省了非常多的手工操作。4. 常见问题与排查技巧实录4.1 “latex: command not found” 环境变量问题这是新手遇到最多的问题之一。明明 MacTeX 装好了但在 Sublime Text 里编译时报错说找不到xelatex或latex。核心原因是 Sublime Text 的 GUI 应用启动时不会加载你 shell 配置文件里的环境变量所以即使终端能用xelatexSublime Text 也可能找不到。解决方法有两种。第一种是在Settings - User里显式指定texpath就像前面3.2节描述的那样。第二种是使用launchctl setenv PATH把路径注入到 GUI 应用环境中但这种方法在 macOS 更新后可能失效不推荐。最稳妥的还是第一种直接在 LaTeXTools 配置里写清楚路径。另一个隐蔽点如果你同时装了多个 TeX 发行版比如 Anaconda 自带了一些 TeX 工具系统 PATH 里的latex可能指向了错误版本。我建议在终端执行which latex和which xelatex确认它们的路径再反查它们是否来自/Library/TeX/texbin。如果你的机器上出现了~/anaconda3/bin/latex之类的路径大概率是环境冲突最好移除或重装否则编译行为非常诡异。4.2 中文乱码与字体问题中文文档编译出乱码几乎都是引擎和编码问题。LaTeX 默认的pdflatex只支持 ASCII 编码中文必须用xelatex或lualatex配合ctex宏包或xeCJK宏包。如果你的文档已经用了%!TEX program xelatex但还是乱码可能的原因是文件编码不是 UTF-8。Sublime Text 右下角会显示当前编码确保是UTF-8。另一种情况是编译通过但中文空白字形全部消失。这通常是因为系统缺少中文字体或者ctex宏包找不到合适的字体。macOS 自带“宋体-简”“黑体-简”等字体新版ctex宏包可以自动识别但如果你的 macOS 版本较老可能需要手动在导言区指定字体\setCJKmainfont{Songti SC} \setCJKsansfont{Heiti SC}这两个命令前需要加\usepackage{fontspec}和\usepackage{xeCJK}。设置完重新编译中文基本就能正常显示了。4.3 PDF 预览不刷新或打不开编译已经成功但 Skim 里显示的还是上一次的旧 PDF这是很常见的问题。首先要确认编译输出的 PDF 文件名和当前位置。LaTeXTools 默认把输出文件放在.tex同目录下文件名与.tex同名。如果 Skim 打开的是旧路径的文件那它不刷新是正常的。其次检查 Skim 的Check for file changes是否开启前面已经在2.3里提过。如果开了还是不行可以测试一下是否由 Skim 的文件锁定导致手动关闭 Skim 里已打开的 PDF再编译一次看是否能正常打开。如果这样能解决说明旧文件的保持句柄没释放重启 Skim 即可。还有极少数情况是 LaTeXTools 的skim模块没有安装成功。可以在命令面板执行LaTeXTools: Reconfigure LaTeXTools它会重新生成配置并恢复默认设置然后再试试编译。4.4 编译日志与错误定位技巧遇到报错最忌讳的是盲目乱改代码。LaTeX 的报错信息通常比较直接比如! Undefined control sequence.就是打错了命令名! LaTeX Error: File xxx.sty not found.就是缺少某个宏包。在 LaTeXTools 里查看日志的方法是按CommandL再按Q会折叠当前文件的编译日志。如果错误行跳转不准确可以看日志里类似l.23这样的行号提示直接打开对应源码文件第 23 行检查。其实很多 LaTeX 错误都来自括号或环境未闭合比如\begin{document}前面少了一个\end导致后面的内容全部报错。遇到这种情况最有效的方法是把出错的代码块注释掉逐步缩小范围。我通常用二分法先注释一半看是否还报错再二分定位。4.5 常见问题速查表问题现象可能原因解决方法latex: command not foundSublime Text 环境变量缺失在 LaTeXTools 的 Settings-User 中配置texpath中文乱码引擎未切换 / 编码错误使用 xelatex确保文件 UTF-8 编码中文全消失系统字体设置问题用\setCJKmainfont指定系统中文字体PDF 不刷新Skim 未开启自动重载勾选Check for file changes并设为自动重载编译成功但 PDF 打不开Skim 文件锁定关闭已打开的 PDF重新编译一次找不到.sty文件缺宏包在终端执行sudo tlmgr install 包名报错行号与源码不对应环境嵌套未闭合用二分注释法缩小问题范围编译太慢使用 pdflatex 编译中文换成 xelatex并使用ctex宏包4.6 宏包安装与 BasicTeX 用户应急方案如果你是 BasicTeX 用户会遇到很多.sty文件缺失的情况比如报错说ctex.sty not found。解决方法是在终端使用tlmgr安装先运行sudo tlmgr update --self然后sudo tlmgr install ctex。如果安装某个宏包时报“no repository”错误很可能是因为没有配置镜像源可以用sudo tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet切换源。不过说真的如果不是磁盘空间紧张到没法忍受我现在会毫不犹豫建议新手用 MacTeX 完整版。BasicTeX 省下 3GB 空间但要花费大量时间去补装宏包时间成本远远超过那点磁盘占用。如果你已经装了 BasicTeX 并且不想换那一定记好tlmgr这个命令后面每个模板的依赖都会需要它。5. 进阶优化让组合更好用5.1 常用命令片段与自动补全环境跑通之后大家很快会发现写 LaTeX 其实有很多重复的模板代码比如figure、table、equation环境每次都是手敲一遍。Sublime Text 的 snippet代码片段功能就是解决这个问题的。LaTeXTools 自带了部分补全比如输入\be会提示\begin{}...\end{}但不够定制化。我们可以创建自己的 snippet。创建方法Tools Developer New Snippet然后粘贴如下代码来创建一个插入 figure 环境的 snippetsnippet content![CDATA[ \begin{figure}[htbp] \centering \includegraphics[width0.8\textwidth]{$1} \caption{$2} \label{fig:$3} \end{figure} ]]/content tabTriggerfig/tabTrigger scopetext.tex.latex/scope /snippet保存为figure.sublime-snippet后在.tex文件中输入fig再按Tab就会自动展开整个figure环境。用同样的方法可以给table、equation、itemize等环境创建 snippet。这能极大提升写作效率尤其是写论文时表格和图特别多的情况。我自己的 snippet 库里已经积累了二十多个常用片段写论文时基本不需要手动敲完整环境。5.2 自定义构建系统与多轮编译LaTeXTools 自带的构建系统已经支持xelatex、pdflatex、biber等多轮自动编译但对于一些特殊模板比如某些期刊提供的latexmk配置可能不够灵活。你可以自定义一个构建系统Tools Build System New Build System写入{ shell_cmd: latexmk -xelatex -synctex1 -interactionnonstopmode -file-line-error \$file\, file_regex: ^(.*?):([0-9]):([0-9]): (.*)$, working_dir: ${file_path}, selector: text.tex.latex }保存后在Tools Build System中选择这个新系统按CommandB时就会走latexmk自动构建流程。latexmk会根据文档依赖自动决定执行编译的次数和顺序处理参考文献、目录、超链接这些需要多次编译的场景特别有效。这里有个小建议-synctex1必须保留它负责生成 SyncTeX 数据Skim 的源码跳转依赖它。如果发现 PDF 里点击无法跳回源码很可能就是这个参数缺失安装配置时一定要留意。5.3 源码与 PDF 的双向精确定位前面多次提到 SyncTeX 双向定位这里详细说说设置。编译完成后记得加-synctex1在 Skim 中按住CommandShift并点击 PDF 的某处Sublime Text 会自动跳到对应源码位置。反向操作是在 Sublime Text 中把鼠标光标定位到某行按CommandL加GSkim 会跳到该行生成的 PDF 位置。这个功能在修改长文档时特别有用。比如你收到了导师的修改意见说“第 15 页的公式推导有问题”你只需要在 Skim 里按住CommandShift点一下那个公式Sublime Text 就精准跳到了对应的align环境省去了手动搜索的麻烦。我写博士论文那会儿全文 120 多页没有这个功能根本无法想象怎么维护。如果点击定位无效常见原因是二进制编译时没带 SyncTeX 数据。建议检查编译命令是否包含-synctex1以及Settings - User里sync配置是否为true。LaTeXTools 默认开启改乱过配置的朋友可以重点排查这两个地方。5.4 多文件项目管理技巧写大文档时没人会把整本论文写在一个 3000 行的.tex文件里通常需要拆分成多个文件。LaTeX 提供了\input{chapter1}之类的命令来引入子文件LaTeXTools 也支持这种结构。把主文件和子文件放在同一个项目文件夹里用 Sublime Text 打开文件夹编译主文件时LaTeXTools 会自动解析\input和\include的依赖关系。这时候有个小细节在主文件里按下CommandB开始编译通配符$file会指向主文件所以即使你正在编辑chapter2.tex编译也会整体编译整个项目这是正确行为。如果只想快速编译单个文件做语法检查可以右键文件选择LaTeXTools: Build with里的其他选项或者在文件开头加%!TEX root ../main.tex来指定根文件。这个根文件声明特别重要很多新手在子文件里编译结果报各种缺失引用的错误其实是根文件没设置对。路径写相对路径就行比如%!TEX root main.tex。5.5 字库、字号与模板定制心得LaTeX 的中文排版默认效果通常已经很好但不同学校和期刊的模板要求不同需要调整字体和字号。使用ctex宏包时可以这样设置\documentclass[UTF8, fontsetmacnew]{ctexart} \zihao{-4}其中zihao命令用来设置字号-4表示小四号12pt这是很多中文文档的默认要求。如果你要设置行距可以\usepackage{setspace}后\setstretch{1.5}。这些细节在排版时经常用到组合起来能让文档看起来很专业。另外ctex宏包提供了fontset选项fontsetmacnew会优先使用 macOS 的新版中文字体效果比默认更统一。我也试过fontsetmac但新版 macOS 上个别字体名称有变化推荐直接用macnew。如果发现某个字体名称报错可以在导言区手动定义中文字体就像 4.2 节那样。我个人在实际操作中的一个体会是环境搭建本身花的时间并不长真正决定后续使用体验的是你是否愿意花一点时间去理解“编译链”和同步机制。很多人栽在环境上不是设备问题只是不了解背后的原理。这篇文章写到的每个配置项都是我反复折腾过之后提炼出来的照着抄基本能一路绿灯。最后再留一个扩展方向等这套环境稳定之后你可以把.tex项目接到 Git 里做版本管理配合 GitHub 的 LaTeX 自动编译说实话论文改 20 版都不带怕的。