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].功能性宏包推荐