Latex_package_recommendation
Latex宏包推荐
宏包的概念
本文所指宏包(package),特指安装后提供 .sty 文件的、能以 \usepackage{...} 方式调用的宏包。这类宏包,旨在扩展或提供 LaTeX 的某一特定功能,以便利用户使用。
宏包的名字
- 调用时,
\usepackage{amsmath} 相当于插入了文件 amsmath.sty,此时,宏包名就是文件名。
- 被 CTAN 收录时,一个 CTAN 上的宏包,可以包含一个或多个「广义」的宏包。通常,一个功能性宏包,被 CTAN 收录时的名字和被调用时的名字是一致的。
宏包的文档
假设在安装宏包时,同时安装了对应的文档,那么
- 对于大部分宏包,在终端使用
texdoc <name-of-package> 即可打开其(主)文档。
- 对于提供多个文档文件的宏包,可以使用
texdoc -l <name-of-package> 列出所有文档,再根据终端的提示,选择打开其中的某一个。
- 有些宏包的(主)文档不是英语的,其对应的英译文档,可能在同一宏包中提供,可能在单独的宏包中提供,也可能没有提供。
宏包的分类
文章必备
| 功能 |
宏包 |
| 数学公式 |
amsmath |
| 插图 |
graphicx |
| 颜色 |
xcolor |
| 表格 |
array |
| 中文 |
ctex, xecjk |
| 西文 |
otf |
| 字体 |
fontspec |
样式定制
| 功能 |
宏包 |
| 页面布局 |
geometry, typearea(额外支持在文档中途改变纸型) |
| 页眉页脚 |
fancyhdr(fancyhdr 不会自动更新版心宽度,与 geometry 配合使用时可能出现问题。宏包 autofancyhdr 修复了这个问题) |
| 章节标题 |
ctexheading(ctex 宏集的子包),titlesec |
| 目录 |
tocloft, titletoc |
| 列表 |
enumitem |
| 脚注 |
footmisc |
| 抄录环境 |
listings, fancyvrb(及扩展 fvextra), minted(不分先后) |
| 定理环境 |
amsthm, thmtools, 不推荐 ntheorem |
| 文本强调(下划线、文字底纹等) |
ulem, soul(均不支持中文), xeCJKfntef(仅 xetex),lua-ul(仅 luatex), tikzmark |
特定领域
| 功能 |
宏包 |
| 更多公式符号 |
amssymb |
| 交换图 |
amsmath(amscd 环境),tikzcd(有在线编辑器 ) |
| 公式标注 |
tikzmark, annotate-equations |
| 段落对齐方式 |
ragged2e |
| 幻灯片,学术报告向 |
beamer |
| 多栏模式 |
multicol |
| 允许栏宽不等的多栏模式(不可跨页) |
vwcol |
| 数字、单位与量 |
siunitx |
| 参考文献引用格式 |
cite, natbib(提供了「人名年份」引用格式) |
| 索引 |
makeindex(定制索引样式见 texdoc ind) |
| 绘制分子和反应流程,偏有机化学 |
chemfig |
| 排版分子和反应式,偏无机化学 |
chemformula, mhchem |
| 排版算法和伪代码 |
algorithm2e,另见知乎回答 |
| 排版代码,带语法高亮 |
minted(需安装 Python 库 Pygments) |
| 排版示例,「一边是源码,一边是结果」 |
showexpl, tcolorbox 的 listings 等模块 |
| 插入多页 PDF |
pdfpages |
| 自动切边 |
standalone |
特定需求
| 功能 |
宏包 |
| 四则运算 |
calc |
| 术语表 |
nomencl |
| 自动调整宽度的子段盒子 |
varwidth |
| 让长章节拥有自己的子目录 |
minitoc |
| 为目录、参考文献和索引添加目录项 |
tocbibind |
| 多栏目录 |
multitoc |
| 首字下沉 |
lettrine |
| 章首名人名言 |
epigraph |
| 尾注 |
endnotes |
| 多个参考文献列表 |
chapterbib |
| 获知文档总页数 |
lastpage |
| 获知文档各部分的总页数 |
pageslts |
| 插入终端执行命令后返回的结果 |
bashful |
| 使用相对于子文件的路径 |
import |
| 页面水印 |
watermark, atbegshi |
浮动体专题
| 功能 |
宏包 |
| 浮动体标题的格式 |
caption |
| 双语标题 |
bicaption |
| 定义新浮动体系列,让浮动体「不浮动」 |
float |
| 定义新浮动体系列,允许一个浮动体环境包含多个标题 |
newfloat |
| 提供「算法」浮动体系列,基于 float 宏包 |
algorithm |
| 子图的标题 |
subcatpion, subfig |
| 在侧边排版标题,及其他 |
floatrow |
| 避免浮动体跨章节出现 |
placeins |
表格专题
| 功能 |
宏包 |
| 在单元格中自由换行 |
makecell |
| 纵向合并单元格 |
multirow |
| 均分列宽 |
tabularx |
| 在小数点处对齐的列 |
dcolumn, siunitx |
| 三线表 |
booktabs |
| 表头斜线 |
diagbox |
| 使横表线避开纵表线 |
hhline |
| 彩色的单元格和表线 |
colortbl(常通过\usepackage[table]{xcolor} 间接调用) |
| 可跨页表格 |
longtable, supertabular |
| 使列按比例分配宽度 |
tabu(缺乏维护,色彩支持部分有兼容性 bug) |
| 内容和样式的分离,高质量的着色 |
tabularray(较新的大一统表格包,长表格会慢) |
PDF 专题
| 功能 |
宏包 |
| 超链接 |
hyperref |
| 书签 |
bookmark |
| 注释 |
pdfcomment |
| 附件 |
embedall, embedfile |
辅助工具专题
| 功能 |
宏包 |
| 以表格形式输出指定字体前256个符号 |
fonttable |
| 输出页面布局示意图,列出页面参数的值 |
layout |
| 可视化各文档部件的布局参数,提供调整接口 |
layouts |
| 英文测试文本,可用于测试排版效果 |
lipsum |
| 中文测试文本 |
zhlipsum |
| 输出测试文档,可包含目录、各级标题、列表、公式、文本等 |
blindtext |
| 提供示例图片 |
mwe |
| 长度的单位转换 |
printlen |
| 输出文件加载依赖关系 |
inputtrc |
命令定义、宏包编写专题
| 功能 |
宏包 |
| 综合工具 |
etoolbox |
| 指定命令参数「类型」 |
xparse(已经打包进 latex2e 格式,无需加载) |
| 修改已定义命令 |
xpatch, regexpatch |
| 操作「字符串」 |
xstring |
个人推荐
功能类
| 功能 |
宏包 |
| 数学公式辅助 |
mathtools |
| 公式输入便捷命令 |
physics 可以试试 physics2 |
| 使用 opentype 数学字体 |
unicode-math |
| 自动调整引号方向 |
csquote |
兴趣类
| 功能 |
宏包 |
| 排版微调 |
microtype |
| 为一系列宏包统一配置接口 |
interfaces(久不维护,有兼容性问题) |
| 高度可配置的彩色盒子 |
tcolorbox |
| 选项形式提供对「盒子」的操作,避免命令嵌套 |
adjustbox |
其他
| 功能 |
宏包 |
| 数学公式样式配置和小宏包功能汇总 |
voss-mathmode(TeX Live 未收录,CTAN 标记为「已废弃」) |
| 高度可定制的专业文档类 |
koma-script, memoir |
参考文献
[1].功能性宏包推荐