前言
两个月前,我把MacTex(TeX Live的mac发行版)从mac中删除,因为mac的磁盘空间不足。然而,MikTex带来的问题超乎我的想象。原本以为MikTex仅仅是精简了包,空间上大大缩减,谁知在编译中文的时候,MikTex频频出问题。Claude多次提醒我可能是MikTex对于中文的支持不够好。事实证明(至少在我的mac上如此)MikTex只能保证在编译诸如test.tex
、test02.tex
和test03.tex
的时候不会出问题(也可能是因为我太菜了没搞明白)。
毕竟第一次使用MacTex是2024.6,赶着要数模,也没什么空来捣鼓,只能匆匆忙忙,大部分时间都在overleaf上了,便也没精力来看这个本地部署的。当时不知何时发现安装了2023和2024两个版本的TeX Live😅,(话说回来,其实在实际中在线的overleaf使用中,2023版本的也曾几次被启用过,来应对2017年的cls模板兼容性问题)自己便索性删掉换成体积更小的MacTex了。
使用 TexLive 代替 MiKTeX,因为 TeX Live 在 macOS 上的中文支持更好。 ——Claude
1 | %test.tex |
1 | %test02.tex |
1 | %test03.tex |
然而,一旦遇到如下文档example.tex
的preamble
的时候,MikTex便会大量报错且重复尝试多次编译且耗时。
1 | % example.tex |
这个example.tex
的preamble
是老师给的国赛数模模板,还有个cumcmthesis.cls
在同级目录下。
1 | %cumcmthesis.cls |
虽然这个cumcmthesis.cls
确实有点屎山吧,但生产力环境用起来的时候(比如三天的数模),可没有时间去修正和推倒从头来格式的编写。
多天尝试无果后,于是只好卸载MikTex,重新装回来了MacTex。与第一次浑浑噩噩得接触大为不同,这次算是终于初探本地配置。也算是折腾出了为什么会有这么多用户不约而同地在配置完成后写配置文档心得的缘由。一方面算是个记录,一方面,算是个reference。
TeX Live+VSCode的本地配置
-
安装MacTex和VSCode。
当然可以选择其他IDE,这都是个性化的。
-
在VSCode的扩展商店中安装LaTeX Workshop插件
的PATH应该是会自动配置的,Win和Mac上都一样,不需要额外的操作。
-
参考了VSCode工作区的设定(当然这也可自定义)来自
-
创建工作区
首先,我们先创建一个空文件夹。名称可以自己命名,要求最好不含中文、空格,分词可以使用下划线_
来分词。(好习惯)在VSCode中打开创建的文件夹,接着选择文件->将工作区另存为。
我们把工作区保存在该文件夹目录下即可。
-
配置工作区
创建完工作区,我们就需要配置工作区,记住既然我们创建了工作区,那么所有的操作都在工作区内进行就可以了,切记不要去别的地方操作,那是没用的。将下述代码直接贴入
.code-workspace
文件中,下面我们再来谈谈这些代码的具体作用。
-
1 | { |
在使用 编译文件时,.synctex.gz
文件是 SyncTeX 同步功能生成的压缩文件。这个文件主要用于文本编辑器和 PDF 阅读器之间的正向和反向同步。上述配置已经确保在编译 时添加 -synctex=1 选项,这样可以实现源代码和 PDF 之间的双向跳转。
在需要双向跳转的情况下,务必保留这个文件。构建LaTeX项目
下的清理辅助文件
会保留该文件。
解释部分没啥重复撰写的必要,就再引用一下:
latex-workshop.latex.tools
这里面主要配置的就是各种编译方式,我们最常用到的就两种xelatex
和bibtex
(注意不是biber),有时候也会用到pdflatex
。一开始,我一直都无法编译.bib的参考文献,原因就出在编译链使用 的是biber,而非bibtex,所以我就改了。
latex-workshop.latex.recipes
这里面就是所谓的编译链了。我们知道LaTeX生成PDF的原理就是使用编译器进行编译。一般的文件我们只需要使用一次或两次xelatex即可编译成功;而当我们有含.bib的参考文献时,一般的编译链就变成,编译一次xelatex,一次bibtex,两次xelatex,也就是上述编译链中的"xe->bib->xe->xe🔃"。
其实还有编译包括目录的文档的时候也需要两次编译,两次编译期间不要清理辅助文件。以及显然,latex-workshop.latex.recipes
的每个recipe
名字可以更改。
-
单击
SyncTeX from cursor
即可正向搜索。 -
反向同步的内部查看器:ctrl/cmd +点击(默认)或双击
总之,一般情况下,纯英文tex使用配方:pdflatex🔃
;中文tex使用配方:xe->bib->xe->xe🔃
。
突然想起来,我看了一下我的用户settings.json
,发现自己vscode下的’/Users/xxx/Library/Application Support/Code/User/settings.json’似乎之前配置过了😅。没事,这个当作全局,上面的当作工作区。要是不想搞全局的用户设置也无妨。(或者说反过来也无妨。看个人软件设置的偏好,喜欢全局还是单个工作区单个设定,自己别搞混就行)
1 | {"latex-workshop.latex.tools": [ |
我又看了看,这个原先的全局配置是有些考虑不周的,比如没有双向同步等。这个全局配置还是别看了,直接用工作区的配置文件把这个全局的覆盖掉吧。直接覆盖记得删去
1 | { |
其他事项
主要配置就完成了,一些注意事项:
-
LaTeX Workshop 默认的编译工具是 latexmk,一般不需要用到。
-
tools
中使用%DOC%
而非%DOCFILE%
是考虑到支持编译中文路径下的文件。 -
第一个
recipe
为默认的编译工具
引文还提到了以下这些,不过我没有应用:
- 快捷键设置
在 VSCode 界面下按下 F1,键入“keyjson”,选择“打开键盘快捷方式(JSON)”,然后把以下代码放入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 {
"key": "alt+s",
"command": "latex-workshop.synctex",
"when": "editorTextFocus && !isMac"
},
{
"key": "alt+b",
"command": "latex-workshop.build",
"when": "editorTextFocus && !isMac"
},
{
"key": "alt+t",
"command": "latex-workshop.kill",
"when": "editorTextFocus && !isMac"
},
{
"key": "alt+e",
"command": "latex-workshop.recipes"
},这段代码的意义是将 Alt+s 绑定到正向搜索,将 Alt+b 绑定到使用默认 recipe 编译,将 Alt+t 绑定到终止编译,将 Alt+e 绑定到选择其他 recipe 编译,可以自行更换为适合自己的快捷键,只需修改“key”那一项即可。
- 其他设置
LaTeX Workshop 默认保存的时候自动编译,如果不喜欢这个设置,可以添加以下代码进入设置区:
1 "latex-workshop.latex.autoBuild.run": "never",如果编译出错,插件会弹出两个很烦人的气泡,不喜欢的话可以在设置中添加以下代码:
1
2 "latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
又及:
part1:ctex & xeCJK
ctex 和 xeCJK 的主要区别如下:
- 功能范围:
- xeCJK 是一个基础的中文支持包,主要处理中文字体和标点符号的显示
- ctex 是一个更全面的中文排版工具集,它在 xeCJK 的基础上提供了更多功能
- 开箱即用程度:
- xeCJK 需要手动配置字体和其他排版参数
- ctex 提供了预设的中文排版格式,包括字体配置、版式设置等
- 具体功能对比:
xeCJK:
1 | \usepackage{xeCJK} |
- 基础的中文支持
- 字体设置
- 标点符号处理
- 中英文间距调整
ctex:
1 | \usepackage[UTF8]{ctex} % 自动配置大部分设置 |
- 包含 xeCJK 的所有功能
- 自动配置中文字体
- 章节标题的中文格式
- 中文版式设置(如标点悬挂)
- 中文数字转换
- 提供文档类(ctexart、ctexbook 等)
- 使用场景:
- 如果只需要在英文文档中插入少量中文:用 xeCJK 够用
- 如果要编写完整的中文文档:建议用 ctex
- 举例说明:
使用 xeCJK:
1 | \documentclass{article} |
使用 ctex:
1 | \documentclass{ctexart} % 或者用 \usepackage{ctex} |
一般建议:
- 对于正式的中文文档,优先使用 ctex,它能处理好大多数中文排版细节
- 如果遇到特殊需求或者想要更精细的控制,可以使用 xeCJK
- 在一些简单的场景下,如果 ctex 配置有问题,也可以退而求其次使用 xeCJK
part2:ctexart & article
\documentclass[UTF8]{ctexart}
和 \documentclass{article}
有以下主要区别:
- 字体和中文支持:
ctexart
:自动配置中文支持,包含中文字体设置和标点符号处理article
:默认只支持英文,需要手动添加中文支持包(如 xeCJK 或 ctex)
- 章节标题格式:
ctexart
:使用中文格式的章节标题(如"第一章")article
:使用英文格式的章节标题(如"Chapter 1")
- 页面布局:
ctexart
:采用适合中文排版的页面设置(如行距、段落间距等)article
:使用西文排版的标准设置
- 文档结构:
ctexart
:比如\maketitle
会生成中文格式的标题页article
:生成英文格式的标题页
例子:
使用 article:
1 | \documentclass{article} |
使用 ctexart:
1 | \documentclass[UTF8]{ctexart} |
所以,对于中文文档:
- 如果是以中文为主的文档,建议使用
ctexart
- 如果是以英文为主、偶尔包含中文的文档,可以使用
article
后续会继续完善自己的知识库。
又及:也是事情多了,记性差了。一翻找文件夹才发现暑假之前6月就整理过好多的配置和要点了,后来只顾着写文本就淡却了,不过一翻,还是记起来了~😌
本文更像是心理历程,初学者直接照此配置可能不太清晰,可以多读读参考链接,就有大概思路了熟悉了。
参考文献:
Levitate_.如何优雅的书写LaTeX论文.https://levitate-qian.github.io/2020/07/21/latex-vscode
Marvey.使用VSCode编写LaTeX[EB/OL].https://zhuanlan.zhihu.com/p/38178015
Liam Huang.TeX Live 下载及安装说明.https://liam.page/texlive/
董晟渤.Visual Studio Code配置LaTeX教程.https://dylandong.top/posts/54e5/
CTEX开发小组.一份(不太)简短的介绍.https://github.com/CTeX-org
韬秧道.MacTeX 配合 Visual Studio Code 进行 LaTeX 写作.https://blog.tauyoung.top/about/