高效使用 LaTeX 习惯略见

本文所述部分学习自他人.

首先的首先是先学习了解一下, 而不是一开始就拿着该进历史坟墓的所谓模板浪费别人时间.

首先选择发行版, 但凡有一丝可能, 最好选择最新版. 尤其是国内有些人为了某些期刊而不得不用 CTeX 套装, 尽管这是一个无奈的选择, 但实际上只要不自定义一些乱七八糟, 就可以使用新版本编译好, 把 document 复制过去就可以. 在金城时就这么干过, 也帮同学同样处理过稿件. 目前发行版主要是 TeXlive 和 MikTeX, MikTeX 刚开始只安装基本宏包, 此外的使用时再安装. 但对于国内用户, 到时不一定有顺畅的网络支持, 因此推荐的是 TeXlive. 那为何推荐不用 CTeX 呢, 看看”最新版” 2.9.2.164 的发布时间估计也就猜个八九不离十了. 另外中文处理方案 cct 和 CJK 在早期的确是很不错的工具, 但历史在进步, 现在 ctex 宏包集成的 xeCJK 方案能更方便地处理中日朝文字, 同时只要字体支持, 处理其他非拉丁字母文字和编译英语一样. 有兴趣可以参考小站中之前的两篇关于字体的拙作. 另外最近一个切身例子是关于 tasks 宏包提供的 tasks 环境, 去年优化题库代码是想用它, 但是出现了一个小 bug, 今年安装了新版 texlive 之后, 编译报错, 原来是更改了设置规则, 但同时也修复了这个 bug, 后来就抽时间把选择题的选项用 tasks 修改了.

其次是选择编辑器, 虽然从本质上说只要一个文本编辑器足矣, 但是不同的编辑器集成的小工具未必一致, 且有倾向性. 如果自身已经有习惯的编辑器, 完全可以直接使用, 顶多就是对于某些编辑器再稍微设置一下. 尤其对初学者而言, 想要推荐的就是 TeXstudio, 而且 TeXstudio 从 3.0.5 开始就已经支持 ctex 宏集的命令补全了, 敲命令也更省事了. 当然还有一串: sublime text, vscode (vscodium), winedt, kate, gedit, geany, vim, emacs 等可供选择. 选定一个编辑器, 学习一下常用的快捷键, 要比鼠标点的速度要快.

再者就是代码, 不管怎样, 至少正确不过时的代码才有合格的可能性吧. 比如现在不少地方使用方框表示卡氏积 (笛卡尔积, Cartesian product), 但注意到这实际上是一个二元运算符, 因此 $A$ 和 $B$ 的卡氏积 $A \mathbin{\square} B$ 应该写成 A \mathbin{\square} B, 而不是 A \square B, 可以编译之后看看区别 (\usepackage{amssymb}). 使用 \bfseries 而不是过时的 \bf, 是 \rmfamily 而不是过时的 \rm 等等.

注意编写代码的习惯, 尽管 LaTeX 没有太多对代码格式的要求, 但是良好的代码习惯对于自己再次修改或者给别人看都是不错的. 典型的反例就是某些人拿着机器转换的代码让别人修改, 一眼看上去就是一堆字符而已, 相信没几个人愿意看那样的”代码”. 以下是一些个人认为比较好的习惯.

代码块区分清楚. 比如插图代码, 全部连着写也不会影响输出结果, 但是代码阅读就尴尬了. 所以我一般使用的是

\begin{figure}[!ht]
\centering
\includegraphics{foo.jpg}
\caption{Title}\label{fig:foo}
\end{figure}

这样看起来就很清晰, 每行什么意思也容易理解. 接下来就说说计数器, 标签和引用.

计数器至少选择对应的, 典型就是见过不少的所谓某某毕业论文模板, 出现
\section*{第一章 绪论}
之类, 真不知道是为了显示自己定制水平呢还是显示自己定制水平呢?! 貌似使用 bookctexbook 等相对应文类, 可以使用 \chapter 吧. 比如列表基础的就有 itemizeenumerate, 想要计数列表直接用 enumerate 更麻烦吗, 非得用 itemize 然后 \item[(1)] 之类?

对于标签和引用, 首先要分清楚不用的命令. 个人建议在一篇稍微长点的文章中, label 也可以区分着写, 方便后面引用, 关键词要与图表之类有关联, 见的不少都是什么 fig1 之类, 若修改顺序后, 可还知道那是哪个吗? 实际中参考文献也经常见到 \bibitem{1} 之类! 用 equation* 然后 tag{1-1} 之类. 其实稍微学习一下就能发现还有个 ref, eqref, cite 之类, 另外 cleveref 宏包提供的 Cref 命令更智能.

对于参考文献, 建议从第一天准备写论文开始, 就使用一个参考文献数据库管理软件, 本人现在使用是 JabRef, 当然类似的也不少, 都大同小异. 这个还是姚老师教的, 还有不少的 LaTeX 知识. 似乎唯一的缺点就是刚开始整理有点麻烦, 但如果使用搜索引擎的导出功能, 那也就不算个事.

数学公式区别对待. 行内使用 $a^2+b^2=c^2$, 行间使用

\[
a^2+b^2=c^2.
\]

而不是 $$ abc $$, 清晰明了. 实际上 \[\]$$ 更优还有深层次的原因, 有兴趣的请自行了解.

方程组, 较长的演绎公式等都有可选的对应环境, 使用起来简捷方便, 虽然不时还会见到不嫌表格之麻烦借其排列的方程组之类, 牛!!!

同样也见到过用表格和一堆 ~~~ 排列出来的算法, 第一反应还是很佩服不嫌麻烦的, 但马上想到用算法宏包多省事啊! (感慨一句, 有时候当一当懒人还是不错的!)

很多时候需要掂量一下, 是否自己排版设计水平高于 Knuth 或 Lamport, 排版中文时是否有 ctex-kit 项目组 了解自体和中文排版规则, 没有十足把握或特殊需求, 先使用默认格式即可.

等自己实力到了相应的水平, 就可以根据自己需求更改格式, 当然到时候至少应该知道格式和内容相分离, 有问题搜到对应宏包, texdoc package-name 看文档才是正途. 基础文档肯定首推 texdoc lshort-zh, 中文的书籍有 刘海洋之 LaTeX 入门 和 胡伟之 LaTeX 完全学习手册, 缺点就是有点年纪了, 看时需要取舍.

借用引用表致谢

感谢西北农林耿教授, cvgmt, 无锡韩杰, 石首万老师及其他网友的指导!