这是一系列长文,面向的读者群是熟练使用了 CTeX 套装的。
本文介绍了如何从 CTeX 套装转而现代的、最新的 Texlive。我拖了两三年,下定决心后,花了两个月才完全迁移成功。
为什么要用最新的 Texlive?
软件升级大家都听说过吧,而 CTeX 套装是 8 年前的东西了,可想而知已经大大落后时代。软件里面有许多错误无法得到更新,网上也没有使用手册了。(只有最新版的使用手册)
一个典型问题是:用 CTeX 套装编译得到的中文 pdf 文件,你如果要从文件里复制文字出来,会出现乱码。所以文件内也就无法用搜索功能。这是历史上“中文处理”的过渡方案,之后已经更新了。而你的 CTeX 套装永远活在了那时候。
中英文的混排中,中英文之间加空格也是一个头疼的事情,XeLaTeX 下已经有宏包可以自动实现了。
TeX/LaTeX/pdfLaTeX/XeLaTeX 等等都是什么?
TeX 是一个语言,LaTeX 是建立在 TeX 上的高级语言。
不严格地说,pdfLaTeX 和 XeLaTeX 是用来把上面的语言变成 pdf 的工具(类似于编译器 compiler)。而 pdfLaTeX 和 XeLaTeX 没有什么关系。
(严格地说,pdfTeX 和 XeTeX 是引擎, pdfLaTeX 和 XeLaTeX 是预先加载了 LaTeX 格式的 pdfTeX 和 XeTeX 引擎。这是因为 LaTeX 太常用了,所以进行了这样的打包)
pdfLaTeX 是古老的 CTeX 套装所用的默认编译器,在 Texlive 下强烈推荐 XeLaTeX 作为编译器。
WinEdt 7 是什么?
WinEdt 7 只是一款编辑器 (editor),我们用编辑器写代码,编辑器会调用编译器进行编译。编辑器里面改来改去,只能改那个 .tex 文件,只有调用了编辑器才能用变成 pdf。
有同学误认为 WinEdt 7 就是 LaTeX,这是完全错误的。
编辑器 (editor)、编译器 (compiler) 是完全不同的两码事情。你完全可以用 notepad 写 .tex 文件,然后命令行环境 (cmd) 中调用编译器完成编译。
Texlive 是什么?
Texlive 可以理解为最新的编译器。所以你完全可以做到用原来的编辑器(如 WinEdt 7),调用新的编译器。但我建议你把编辑器也换新了。
为什么要换新的编辑器?
Texlive 中内置了新的编辑器 TexWorks[1]。强烈建议使用它,而摒弃 CTeX 套装中的 WinEdt 7(配置较麻烦)。另一个推荐的选择是 TeXStudio 和 VSCode(不推荐初学者)。
现代编辑器带来最棒的体验是自动补全和反向查找。
如何安装 Texlive?
见
cying:最新TeXLive 环境的安装与配置zhuanlan.zhihu.com假设你已经按照这个教程安装了 Texlive 2020 和 TeXStudio 了。
如何写新的文件?
强烈建议使用最新的模板,过时的模板可能会出现兼容问题。(因为你一下子更新了做了一个历时 8 年的更新,8 年前的一年级学生现在都快上高中了,代码自然会有些变化)
为什么之前的 .tex 文件,如果里面含中文,打开会是乱码?
这涉及到中文的编码格式的问题,20 年前 CTeX 套装刚设计的时候,编码格式默认是 GBK(GB2312/ASCII),而现代的默认编码格式是 UTF-8(对全世界文字的兼容性更强)。
而正是在 2005 年之后 UTF-8 编码格式才大范围普及(在 2020 年 5 月, 94.9% 的网页都是由 UTF-8 编码编写的[2]),所以当年的 CTeX 套装真的是应该扫进垃圾堆了。
编码就是怎么把字符转化为二进制储存进文件的方法。可以参见如下:
若愚:聊一聊编码与乱码zhuanlan.zhihu.com怎么解决上一个问题?
b z:解决TeXWorks打开WinEdt的latex文档乱码问题zhuanlan.zhihu.com(这一步可以用 Python 脚本批量处理,下一步也是)
旧文件已经保存成 UTF-8 格式了,但是编译编不过
这个需要对你的 tex 文件进行改造。强烈建议直接换个模板!
如果实在不想换模板,而且又有动手精神,可以把
usepackage{CJK}
改为
usepackage{ctex}
然后去掉
begin{CJK*}{song}{GBK}
end{CJK*}
之类的。
还有一个典型的问题是在加载 geometry 等宏包时加载了 pdftex 的选项,改成 xetex 即可。如
usepackage[pdftex]{geometry}
改为
usepackage[xetex]{geometry}
因为在 2020 年用中文,最推荐的编译引擎是 XeLaTeX,所以要把 pdfLaTeX 换成 XeLaTeX。
学习 LaTeX 知识
关注我、我的专栏,还有知乎上许多写 LaTeX 的专栏,勤搜索和学习,你会越用越好的。这有一篇很短的 LaTeX 文档,希望能看看它。
一份其实很短的 LaTeX 入门文档liam.page 一份(不太)简短的 LaTeX 2E 介绍mirror.bjtu.edu.cn 一份简短的关于 LaTeX 安装的介绍github.com查文档
具体到宏包不会用了,可以打开这个地方的文档,里面有每一个宏包的帮助手册。
有什么问题可以评论区留言
为了避免新观念太多带来混淆,我的表述并不严格。本来打算写一个月的,后来转念一想这些问题会不会前人都写过呢?一搜果然都有。
实际上,对 LaTeX 感兴趣,应该读一读刘海洋老师的《LaTeX 入门》。如果对更加底层的 TeX 语言感兴趣,可以读一读最经典的 The TeXbook,是 TeX 语言的创作者写的。
我很感谢第一个带我入坑 CTeX 套装的人,要不是他介绍的这么简单,我也不会这么快就入门。但如果不是他带我入了 CTeX 套装的大坑,我也不需要自学 Python 对上百个 .tex 文件进行处理。当时看不懂的 TeX 代码,如今也终于略知一二。以前不会用的 WinEdt 功能,现在学的也挺好。命运中出现的所有礼物,早已在暗中标出了价格。
如果大家遇到新的问题,我会再写这个系列的第二篇文章。
参考
- ^仅限 Windows 用户
- ^这里 UTF-8 包含了纯 ASCII 码。 https://w3techs.com/technologies/cross/character_encoding/ranking