-
Notifications
You must be signed in to change notification settings - Fork 400
LaTeX 模板开发最佳实践
模板的主要目的,是为常见文档组件提供一套定制的样式。不要期待模板面面俱到,不常见的文档组件(例如伪代码排版)应由用户通过调用宏包自行实现。可参考 IEEEtran
的做法。
-
尽量使用 latex2e 风格的命令,如 counter 相关的、length 相关的,h/vspace 相关的。若非必要,不使用 tex 风格的命令和赋值方式。若非必要,不混用两种风格的命令,如一会儿
\hspace
一会儿\hskip
-
了解空格的各种产生方式,注释源码中的多余空格
-
在零参数命令后面,无需使用(额外的)大括号,例如
\songti{}
-
不要在模板内重复加载同一个宏包。不要在模板和示例文档中分别加载同一个宏包。
-
调整样式尽量通过宏包功能来实现。
- 尽可能避免手动重定义基础命令,例如
\chapter
、\section
。 - 如果觉得需要定义新命令来「抽象」基础命令,例如
\newcommand\myChapter[1]{\chapter{附录:#1}}
,保持谨慎,寻求帮助。通常都有更好的实现方式。
- 尽可能避免手动重定义基础命令,例如
-
如果有大段复制粘贴的代码,建议在这段代码附近附上来源,方便后续维护。
-
在切换字体之前,推荐使用
\normalfont
把字体恢复到\rmfamily
。类似的命令还有\normalsize
-
不要用
\songti
、\heiti
等只作用于 CJK 文字的命令,应该使用\rmfamily
,\bfseries
等命令,使西文与中文字体保持风格一致。 -
在了解它们的初始定义之前,不要直接修改
\large
,\small
等命令的定义 -
修改行距:推荐使用
setspace/zhlineskip
宏包和\linespread
,可以接受修改\baselinestretch
,一定不要直接修改\baselineskip
-
\linespread{...}
和\fontsize{...}{...}
后面一定要跟\selectfont
-
控制示例文档中字体和字号切换命令的使用频次。它们应该隐藏在模板内部,不应该被模板用户(频繁)直接使用。
模板应提供用户文档。用户文档至少应说明
-
模板相关问题的反馈方式,包括但不限于维护者的联系方式、模板的在线托管地址等
-
模板提供的新命令的用法,或对既有命令提供的新用法
-
使用模板应遵循的文件结构,通常包括子文件的默认路径、图片和其他文件的默认路径等
-
模板默认适用的操作系统
-
模板使用的字体配置,尤其是用到的单一操作系统自带的字体、操作系统不自带的字体
-
模板的编译方式。如果使用了操作系统相关的辅助工具,如
Makefile
,应特别说明