news 2026/9/16 7:24:38

macOS LaTeX环境搭建:MacTeX+Sublime Text+Skim配置完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 + Skim

1.1 这套组合的定位与使用场景

先说结论:LaTeX 本质上是“用纯文本写文档,再用编译器生成 PDF”的工作流。你需要的不是一个大而全的软件,而是三个各司其职的程序。Windows 上很多人用 TeXLive + VSCode,macOS 上最顺手的组合就是这套: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 Silicon(M1/M2/M3),MacTeX 会自动安装原生 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 安装完成之后,命令行的latexxelatextlmgr等工具会被放在/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,按Ctrl+Shift+P(注意 macOS 上是Command+Shift+P)调出命令面板,输入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 安装 Skim:PDF 预览的关键角色

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 双向定位。安装方式很简单:按Command+Shift+P打开命令面板,输入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 指向 MacTeX

LaTeXTools 安装完成后,默认情况下它会自动找到 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

这样按Command+B编译时,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是最省心的方案,它自带中文排版支持。

保存文件后,按Command+B触发编译。LaTeXTools 会弹出构建面板展示编译日志。如果一切顺利,几秒钟后 Skim 会自动打开并显示“你好,LaTeX!”。这个时刻就是整套环境成功的标志。

编译过程中如果报错,先不要慌。LaTeXTools 会把错误信息用ErrorWarning的形式列在面板里,按F4可以跳到源码中对应的出错行。这是排查问题最核心的操作,记住它。一个经验是:LaTeX 的报错经常“报告位置”和“实际错误位置”不一致,所以跳转之后多看几行上下文,别只盯着爆红的行。

3.5 自定义编译快捷键与构建组合

Sublime Text 默认的编译快捷键是Command+B,这个在 LaTeXTools 里已经绑定好了。但还有几个高频操作的快捷键值得记住:Command+LG可以执行goto,跳到 PDF 中的对应页面;Command+LP可以打开 PDF 预览;Command+LQ可以查看日志。这些快捷键在 LaTeXTools 的默认配置里都有,用熟了能显著提升书写节奏。

更进阶一点,如果你经常需要配合biber处理参考文献,LaTeXTools 默认也是支持的。用biblatex宏包时,只需要在文件开头写%!TEX program = xelatex%!TEX bib = biber,编译时 LaTeXTools 会先跑 xelatex,再跑 biber,最后再跑两遍 xelatex。我写硕士论文时,这套多轮编译机制帮我省了非常多的手工操作。

4. 常见问题与排查技巧实录

4.1 “latex: command not found” 环境变量问题

这是新手遇到最多的问题之一。明明 MacTeX 装好了,但在 Sublime Text 里编译时报错说找不到xelatexlatex。核心原因是 Sublime Text 的 GUI 应用启动时不会加载你 shell 配置文件里的环境变量,所以即使终端能用xelatex,Sublime Text 也可能找不到。

解决方法有两种。第一种是在Settings - User里显式指定texpath,就像前面3.2节描述的那样。第二种是使用launchctl setenv PATH把路径注入到 GUI 应用环境中,但这种方法在 macOS 更新后可能失效,不推荐。最稳妥的还是第一种:直接在 LaTeXTools 配置里写清楚路径。

另一个隐蔽点:如果你同时装了多个 TeX 发行版(比如 Anaconda 自带了一些 TeX 工具),系统 PATH 里的latex可能指向了错误版本。我建议在终端执行which latexwhich xelatex,确认它们的路径,再反查它们是否来自/Library/TeX/texbin。如果你的机器上出现了~/anaconda3/bin/latex之类的路径,大概率是环境冲突,最好移除或重装,否则编译行为非常诡异。

4.2 中文乱码与字体问题

中文文档编译出乱码,几乎都是引擎和编码问题。LaTeX 默认的pdflatex只支持 ASCII 编码,中文必须用xelatexlualatex,配合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 里查看日志的方法是按Command+L再按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 其实有很多重复的模板代码,比如figuretableequation环境,每次都是手敲一遍。Sublime Text 的 snippet(代码片段)功能就是解决这个问题的。LaTeXTools 自带了部分补全,比如输入\be会提示\begin{}...\end{},但不够定制化。

我们可以创建自己的 snippet。创建方法:Tools > Developer > New Snippet,然后粘贴如下代码来创建一个插入 figure 环境的 snippet:

<snippet> <content><![CDATA[ \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{$1} \caption{$2} \label{fig:$3} \end{figure} ]]></content> <tabTrigger>fig</tabTrigger> <scope>text.tex.latex</scope> </snippet>

保存为figure.sublime-snippet后,在.tex文件中输入fig再按Tab,就会自动展开整个figure环境。用同样的方法,可以给tableequationitemize等环境创建 snippet。这能极大提升写作效率,尤其是写论文时表格和图特别多的情况。我自己的 snippet 库里已经积累了二十多个常用片段,写论文时基本不需要手动敲完整环境。

5.2 自定义构建系统与多轮编译

LaTeXTools 自带的构建系统已经支持xelatexpdflatexbiber等多轮自动编译,但对于一些特殊模板(比如某些期刊提供的latexmk配置),可能不够灵活。你可以自定义一个构建系统:Tools > Build System > New Build System,写入:

{ "shell_cmd": "latexmk -xelatex -synctex=1 -interaction=nonstopmode -file-line-error \"$file\"", "file_regex": "^(.*?):([0-9]+):([0-9]+): (.*)$", "working_dir": "${file_path}", "selector": "text.tex.latex" }

保存后,在Tools > Build System中选择这个新系统,按Command+B时就会走latexmk自动构建流程。latexmk会根据文档依赖自动决定执行编译的次数和顺序,处理参考文献、目录、超链接这些需要多次编译的场景特别有效。

这里有个小建议:-synctex=1必须保留,它负责生成 SyncTeX 数据,Skim 的源码跳转依赖它。如果发现 PDF 里点击无法跳回源码,很可能就是这个参数缺失,安装配置时一定要留意。

5.3 源码与 PDF 的双向精确定位

前面多次提到 SyncTeX 双向定位,这里详细说说设置。编译完成后(记得加-synctex=1),在 Skim 中按住Command+Shift并点击 PDF 的某处,Sublime Text 会自动跳到对应源码位置。反向操作是:在 Sublime Text 中把鼠标光标定位到某行,按Command+LG,Skim 会跳到该行生成的 PDF 位置。

这个功能在修改长文档时特别有用。比如你收到了导师的修改意见,说“第 15 页的公式推导有问题”,你只需要在 Skim 里按住Command+Shift点一下那个公式,Sublime Text 就精准跳到了对应的align环境,省去了手动搜索的麻烦。我写博士论文那会儿,全文 120 多页,没有这个功能根本无法想象怎么维护。

如果点击定位无效,常见原因是二进制编译时没带 SyncTeX 数据。建议检查编译命令是否包含-synctex=1,以及Settings - User"sync"配置是否为true。LaTeXTools 默认开启,改乱过配置的朋友可以重点排查这两个地方。

5.4 多文件项目管理技巧

写大文档时,没人会把整本论文写在一个 3000 行的.tex文件里,通常需要拆分成多个文件。LaTeX 提供了\input{chapter1}之类的命令来引入子文件,LaTeXTools 也支持这种结构。把主文件和子文件放在同一个项目文件夹里,用 Sublime Text 打开文件夹,编译主文件时,LaTeXTools 会自动解析\input\include的依赖关系。

这时候有个小细节:在主文件里按下Command+B开始编译,通配符$file会指向主文件,所以即使你正在编辑chapter2.tex,编译也会整体编译整个项目,这是正确行为。如果只想快速编译单个文件做语法检查,可以右键文件选择LaTeXTools: Build with里的其他选项,或者在文件开头加%!TEX root = ../main.tex来指定根文件。

这个根文件声明特别重要,很多新手在子文件里编译,结果报各种缺失引用的错误,其实是根文件没设置对。路径写相对路径就行,比如%!TEX root = main.tex

5.5 字库、字号与模板定制心得

LaTeX 的中文排版默认效果通常已经很好,但不同学校和期刊的模板要求不同,需要调整字体和字号。使用ctex宏包时,可以这样设置:

\documentclass[UTF8, fontset=macnew]{ctexart} \zihao{-4}

其中zihao命令用来设置字号,-4表示小四号(12pt),这是很多中文文档的默认要求。如果你要设置行距,可以\usepackage{setspace}\setstretch{1.5}。这些细节在排版时经常用到,组合起来能让文档看起来很专业。

另外,ctex宏包提供了fontset选项,fontset=macnew会优先使用 macOS 的新版中文字体,效果比默认更统一。我也试过fontset=mac,但新版 macOS 上个别字体名称有变化,推荐直接用macnew。如果发现某个字体名称报错,可以在导言区手动定义中文字体,就像 4.2 节那样。

我个人在实际操作中的一个体会是:环境搭建本身花的时间并不长,真正决定后续使用体验的是你是否愿意花一点时间去理解“编译链”和同步机制。很多人栽在环境上,不是设备问题,只是不了解背后的原理。这篇文章写到的每个配置项,都是我反复折腾过之后提炼出来的,照着抄基本能一路绿灯。最后再留一个扩展方向:等这套环境稳定之后,你可以把.tex项目接到 Git 里做版本管理,配合 GitHub 的 LaTeX 自动编译,说实话,论文改 20 版都不带怕的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 7:24:30

异步分布式PPO:采样吞吐、策略滞后与学习效率的权衡调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 7:24:29

JavaScript内存模型:原始类型与引用类型的本质区别

1. 这不是语法手册&#xff0c;是帮你绕开JavaScript第一道墙的实战指南你打开一个HTML文件&#xff0c;写上<script>alert(1)</script>&#xff0c;页面弹出数字1——恭喜&#xff0c;你已经“运行”过JavaScript了。但真正卡住绝大多数零基础学习者的&#xff0c…

作者头像 李华
网站建设 2026/9/16 7:24:29

手把手实现AXI4-Lite从零到可调试外设

1. 这不是“又一篇AXI协议教程”&#xff0c;而是你真正能跑通的第一个AXI工程如果你刚在Vivado里点开一个带AXI接口的IP核&#xff0c;看到那十几根信号线——AWVALID、AWREADY、WVALID、WREADY、BVALID、BREADY、ARVALID、ARREADY、RVALID、RREADY……然后盯着AXI4-Lite地址映…

作者头像 李华
网站建设 2026/9/16 7:23:40

C语言实现YUV转JPEG:libjpeg-turbo编码实践与参数详解

简介&#xff1a;针对C语言图像处理学习者&#xff0c;这份工具源码演示了YUV裸图到JPEG的完整转换流程&#xff0c;覆盖YUV4:2:0与YUV4:2:2格式解析、YUV转RGB色彩空间矩阵运算、基于libjpeg的DCT离散余弦变换与霍夫曼熵编码&#xff0c;并支持通过质量因子平衡图像大小与清晰…

作者头像 李华