这个问题其实不只对 TeX 存在,计算机领域很多地方都能遇到。如何选择一个合适的 Python 3 的图像处理库?如何选择一个合适的 JSON C++ 解析库?如何选择一个合适的浏览器标签页管理插件?如何选择合适的文件名批量命名的软件?如何挑选合适的支持 x、y、z 语言的代码编辑器?
有关 TeX 的问题在这类问题中,并不是最好回答的,因为 TeX 是小众工具,也不是主要的生产工具,线上线下的资源和受到的关注都少。当然 TeX 的问题也不是最难回答的,因为 TeX 包组织清晰,来源单一,在 CTAN 上在线能找到的包、在 TeX Live 上预装的包、在 MiKTeX 上预装的包,都差不多是相同的,范围明确。
回到问题来,选择宏包,这个问题一体两面:一是「找」,找出可能解决问题的一些宏包;二是「挑」,从几个备选方案中选取最合适的。
先说找的问题。写论文找工具,大概首先是求快。所以建议按下面这个顺序来找:
一、翻查。如果头脑里有个印象,某某书曾经写过这个问题,过去的某代码处理过这个问题,那就找出来翻查一下。
二、搜索。搜索关键字的选择很大程度上能决定搜索的质量,这个需要点经验。我的建议是:优先使用 TeX.sx 等站的站内搜索以及全网 Google;除了用中文,也用英语词搜索;多换几个搜索词。
三、索引。网上有一些 TeX 的带分类的索引,指这类东西:
- CTAN 的主题索引:CTAN: Topics
- The TeX Catalogue OnLine, Topic Index
- TeXdoc Online • TeX and LaTeX Documentation
- TeX Frequently Asked Questions
- CTEX – 在线文档(这个比较老了)
有一些特定专题内的文档或网页,指这类东西:
- CTAN: Package The Comprehensive LaTeX Symbol List.
- CTAN: Package voss-mathmode
- CTAN: Package epslatex
- CTAN: Package free-math-font-survey
- The LaTeX Font Catalogue
- The PracTeX Journal — Tables in LaTeX2e: Packages and Methods
还有一些对宏包做综述或选择的书籍,如:
- The LaTeX Companion, 2nd Edition
- The LaTeX Graphics Companion, 2nd Edition
- LaTeX and Friends
- 中文:我的书,胡伟的书
四、提问。
五、目录。这里指的是不做分类,只有名称和简单说明的宏包目录(注意有一些宏包是没有做好分类的)。
再说挑的问题。当然,要有的挑,先得按上面方法找到一些包。
挑的方法,无外乎看别人的总结(如果备选包是从专题索引中找到的),看手册做比较,写测试文档做实验之类的办法。这些大家都能想到,找手册的方式李阿玲已经举得很清楚,不必多说。
挑的原则,则需要说两句。
一、完成功能。这是最基本的。有时备选的宏包初看起来似乎能完成一项工作,试了试后来发现有问题解决不了,那就得换。比如说 tocloft 能改各种目录格式,但却不能把几个目录项合并写在同一行,如果要这种效果,就得换 titletoc 或其他工具。
二、代码易懂,使用方便。例如不使用任何宏包也能调节页面大小、版心位置之类的参数,但如果使用 geometry 宏包,生活将变得轻松许多。
三、宏包兼容性。较长的文档可能用到许多宏包,要尽量避免选用的宏包与其他包的功能冲突。如果确实有冲突,则保留更重要、更常用的包。例如,nath 包提供了数学公式输入的一些有趣的语法糖,但它与整个 amsmath 冲突,那么更大的可能是选择更重要的 amsmath 而舍弃 nath。
四、文档维护性。因为陈旧、发布方式局限、使用非自由的发布协议等问题,导致部分常见发行版并不包含这些包,那最好避免使用。例如 picins 包因为协议问题,不在 TeX Live 中收录,就不如换成 picinpar、floatflt 等功能类似的包;又如随 CCT 提供的 everb 包,目前仅在 CTeX 套装中才有,就不如换成功能相似的 fancyvrb、mdframed 等包。
五、投稿系统。投稿的论文如果是以源代码形式提交,就要考虑对方的系统。投稿系统的 TeX 发行版可能非常保守而不更新新版本,你使用的宏包及版本就要考虑接收方的系统。
作者:刘海洋
链接:https://www.zhihu.com/question/26421957/answer/32807064