Skip to content

LaTeX 模板开发最佳实践

muzimuzhi edited this page Apr 15, 2019 · 27 revisions

功能边界

模板的主要目的,是为常见文档组件提供一套定制的样式。不要期待模板面面俱到,不常见的文档组件(例如伪代码排版)应由用户通过调用宏包自行实现。可参考 IEEEtran 的做法。

一般

  1. 尽量使用 latex2e 风格的命令,如 counter 相关的、length 相关的,h/vspace 相关的。若非必要,不使用 tex 风格的命令和赋值方式。若非必要,不混用两种风格的命令,如一会儿 \hspace 一会儿 \hskip

  2. 了解空格的各种产生方式,注释源码中的多余空格

  3. 在零参数命令后面,无需使用(额外的)大括号,例如 \songti{}

  4. 不要在模板内重复加载同一个宏包。不要在模板和示例文档中分别加载同一个宏包。

  5. 调整样式尽量通过宏包功能来实现。

    1. 尽可能避免手动重定义基础命令,例如 \chapter\section
    2. 如果觉得需要定义新命令来「抽象」基础命令,例如 \newcommand\myChapter[1]{\chapter{附录:#1}},保持谨慎,寻求帮助。通常都有更好的实现方式。
  6. 如果有大段复制粘贴的代码,建议在这段代码附近附上来源,方便后续维护。

字体

  1. 在切换字体之前,推荐使用 \normalfont 把字体恢复到 \rmfamily。类似的命令还有 \normalsize

  2. 不要用 \songti\heiti 等只作用于 CJK 文字的命令,应该使用 \rmfamily, \bfseries 等命令,使西文与中文字体保持风格一致。

  3. 在了解它们的初始定义之前,不要直接修改 \large, \small 等命令的定义

  4. 修改行距:推荐使用 setspace/zhlineskip 宏包和 \linespread,可以接受修改 \baselinestretch,一定不要直接修改 \baselineskip

  5. \linespread{...}\fontsize{...}{...} 后面一定要跟 \selectfont

  6. 控制示例文档中字体和字号切换命令的使用频次。它们应该隐藏在模板内部,不应该被模板用户(频繁)直接使用。

用户文档

模板应提供用户文档。用户文档至少应说明

  1. 模板相关问题的反馈方式,包括但不限于维护者的联系方式、模板的在线托管地址等

  2. 模板提供的新命令的用法,或对既有命令提供的新用法

  3. 使用模板应遵循的文件结构,通常包括子文件的默认路径、图片和其他文件的默认路径等

  4. 模板默认适用的操作系统

  5. 模板使用的字体配置,尤其是用到的单一操作系统自带的字体、操作系统不自带的字体

  6. 模板的编译方式。如果使用了操作系统相关的辅助工具,如 Makefile,应特别说明

Clone this wiki locally