我的 LaTeX 方案实现
LaTeX ,是一种基于 TeX 的排版系统,由美国计算机科学家莱斯利·兰伯特在20世纪80年代初期开发,利用这种格式系统的处理,即使用户没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,不必一一亲自去设计或校对,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。
————维基百科
1. 前言
简单点说:LaTeX 基于 TeX,主要目的是为了方便排版。在学术界的论文,尤其是数学、计算机等学科论文都是由 LaTeX 编写, 因为用它写数学公式非常漂亮。
在稍微了解一点 LaTeX 后,你会发现 LaTeX 的工作方式类似 web page,都是由源文件(.tex or .html)经由引擎(TeX or browser)渲染产生最终效果(得到 PDF 文件 或者 生成页面)。两者极其神似,包括语法规则与工作方式。所以呢,与 HTML 一样,入门其实很简单。
一般的规范写法中都是在 HTML 文件中写入 web page 的结构与内容,再由 css 控制页面生成的样式。当然你也可以选择在 HTML 中直接写入样式内容,不过这并不提倡。同样,在 LaTeX 有着同样的情况,你可以在 tex 源文件中同时写入内容和样式,也可以内容与样式分离,以网络上流传广泛的 清华大学 LaTeX 模板 为例,以.cls(class)结尾的 thuthesis.cls 便可看作是与 css 起到同样作用的样式文件。
LaTeX 有所谓宏包的概念,\usepackage{foo}
即可使用宏包 foo 中定义的内容。所谓宏包就是一些写好的内容打包出来以便大家使用而已。这跟 C 语言的 include
是一致的,将文件加载进来进行使用。利用宏包,我们可以使用很多现成的好用的样式。当然了,如果要编写一个自己的个性化的宏包也是可以的,不过需要学习成本。
初期的话,我们可以选择一个 LaTeX 模板进行改造。不过第一次见到一些模板,可能会对其中很多文件的作用一头雾水。下面是简单的介绍,详细内容可见在 LaTeX 中进行文学编程,当然更多介绍的话可以自行搜索。
LaTeX模板常见文件类型 | 功能简要介绍 |
---|---|
.dtx | Documented LaTeX sources,宏包重要部分 |
.ins | installation,控制 TeX 从 .dtx 文件里释放宏包文件 |
.cfg | config, 配置文件,可由上面两个文件生成 |
.sty | style files,使用\usepackage{...} 命令进行加载 |
.cls | classes files,类文件,使用\documentclass{...} 命令进行加载 |
.aux | auxiliary, 辅助文件,不影响正常使用 |
.bst | BibTeX style file,用来控制参考文献样式 |
class 与 style 似乎十分相像,它们在功能上的确很相似,但是也有区别。这里 是关于 .cls 与 .sty 文件的区别。
我配置 LaTeX 方案的故事比较曲折。一开始想着,眼下还没到要写排版严谨的论文的时候,所以当下也就用不着,着急着手于学习 LaTeX 。现阶段先使用 Markdown 已足以满足我的需求,但是当我学习 Pandoc 转换 Markdown 格式为 Pdf 格式时,系统提示我需要安装 pdfLaTeX ,于是我打算将 LaTeX 的学习计划提前。还有一部分原因是 Markdown 编写数学公式时需要用到 LaTeX 语法。
我在查阅了一定的资料后,决定采用 TeX Live + VS Code + LaTeX Workshop 的方案。一方面,我的主力编辑器是VSCode;另一方面,刘海洋老师写的 《 LaTeX 入门》 中推荐的 CTeX 套装,网评“老旧、易出错、盗版、过度封装和不支持跨平台”,并不推荐像我这样的小白使用。具体来说:
- CTeX 封装的 MikTeX 在实现 XeTeX 以及字体库的时候有一些问题,前者导致运行 XeLaTeX 异常缓慢,后者导致使用一些数学字体的时候会报错。
- CTeX 封装的默认编辑器 WinEdt 是闭源软件,实际上是在使用盗版软件。
- CTeX 封装的默认编辑器 WinEdt 修改了默认编码为 GBK, 这将在后续使用过程中产生很多问题,对初学者来说是不良的。
- CTeX 封装的默认编辑器 WinEdt 集成了太多的功能,并且修改了很多 LaTeX 的默认行为,对于初学者来说,这些未经通告的默认行为修改对于其对 LaTeX 的理解是不良的。
- CTEX论坛因故自2018年11月21日起无限期关闭。CTeX 套装最终版本定格为 2.9.2.164 版本,已经无法再更新了,事实上也没有必要再更新了。
- CTeX 由于封装 MikTeX 而只能运行于 Windows 平台。
- CTeX 是因为 CJK 包的字体配置复杂,为了免去入门用户的配置成本而推出的。而现在因为 XeTeX 引擎以及 xeCJK 宏包的出现,CJK 包已经成为过去。并且使用 zhm 可以与 CJK 结合方便地动态配置字体。因此 CTeX 曾经的优势实际上已经不成为优势,并且因其引起的各种国内期刊模板的老旧问题正不断成为阻碍中国 TeX 社区进步的恼人因素。
2. 软件的安装和配置
2.1. TeX Live
TeX Live 简称 TL ,是国际 TeX 用户组( TUG )维护的一个 TeX 系统。一般来说,是最「正宗」的 TeX 系统,支持不同的操作系统平台,配置所有的编译环境和各种宏包。对于任何阶段的 TeX 用户,都可以使用 TeX Live , 以保持在跨操作系统、跨用户的 TeX 文件一致性。