我最近读了几个关于tabular
环境的问题,似乎有很多包可以做这个领域的工作。我真的很想了解一下每个包的作用以及哪些包有冲突。
例如,快速谷歌搜索(加上我的记忆)让我得到了tabularx
,,,,,,,...booktabs
multirow
collcell
array
mdwtab
longtable
supertabular
我应该使用哪一个来达到什么目的?更重要的是,哪些冲突?
[这应该是 CW 吗?每个答案一个包之类的?]
答案1
我想先从一个小清单开始,这些清单曾经是表wiki 上,现在在这里维护。软件包概述
基本套餐
array
提供更灵活的列格式;修复了一些间距问题。几乎是“必用”的软件包。booktabs
支持专业外观的表格;更好的垂直间距;更好的规则;专为没有垂直线的表格而设计(出版质量表格的标准)。tabularx
提供一种可扩展以填充表格指定宽度的列类型。tabulary
提供与其内容的自然宽度成比例的列类型。multirow
让表格材料跨越多行。dcolumn
创建按小数点对齐的列。类似的软件包:numprint
,rccol
,warpcol
. 另请参阅siunitx
下文。tabularht
设置具有指定高度的表格。ragged2e
提供\Centering
、\RaggedLeft
和\RaggedRight
,其功能类似于\centering
、\raggedleft
和\raggedright
,但不禁用连字符,因此可产生更平滑的边距,尤其是对于窄列。此包以前称为raggedright
。
多页表
longtable
提供可跨页拆分的表格。supertabular
提供可拆分到多页的表格。xtab
延伸supertabular
一些功能并改进了分页功能。xltabular
改善了的行为ltablex
并将tabularx
便利性与结合起来longtable
。该
tabularray
包(见下文)提供了一个longtblr
环境。(未维护的)
tabu
包(见下文)提供了一个longtabu
环境。
字幕和注释
threeparttable
排版表格时标题和注释的宽度要匹配。threeparttablex
提供以下功能threeparttable
使用创建的表longtable
。floatrow
(虽然主要涉及自定义浮动环境的布局)允许在表格中添加脚注和附加说明。ctable
允许使用命令而不是环境在表格和图形下方添加注释/脚注。ltcaption
允许修复左对齐或右对齐的标题问题longtable
。fr-longtable
(外部子包floatrow
) 提供了longtable
附加命令\endlasthead
(longtable 的最后一个头) 和\endprelastfoot
(倒数第二页的页脚)。
科学
siunitx
(尽管主要涉及带单位的排版值)提供S
按小数点对齐的列类型。
颜色和花式特征
colortab
是上述内容的前身colortbl
,它或多或少被它取代,但仍然可以找到一些用途(例如在使用纯 TeX 时)。arydshln
可以打印水平、垂直虚线。delarray
向数组添加分隔符(括号、圆括号、方括号)。bigdelim
在表中插入可变大小的多行分隔符。blkarray
将数组分成块并为每个块添加分隔符。makecell
多行单元格、更好的标题、单元格间隙、编号行、粗线、对角线划分的单元格等。diagbox
对角线分割的表状单元格。slashbox
是此软件包的前身,已被其取代。请注意nicematrix
(见下文)\diagbox
还规定做得很好。hhline
允许正确渲染垂直线和水平线之间的交点(阿拉Norton Commander 和类似的 DOS 伪图形)。tabularkv
允许在和之间进行选择tabular*
,tabularx
并tabularht
使用更有机的“key=value”语法设置它们的属性。
全能选手
tabu
是一个单独的软件包,提供上述许多软件包的大部分功能。它是未维护且目前不推荐使用。tabularray
是一个新的LaTeX3
软件包,提供软件包的大部分功能tabu
。它是过时软件包的替代品tabu
。nicematrix
是一个LaTeX3
基于 LaTeX 标准环境构建矩阵和表格的包,array
但amsmath
也在单元格、行和列下构建 PGF/TikZ 节点。最终用户可以直接在 TikZ 中使用这些节点,但该包还提供彩色矩形、规则、外部行和列、矩阵中的连续虚线等功能(在后台使用这些节点)。它与 兼容但booktabs
不与 兼容longtable
。
哪些套餐特别值得推荐?快速指南:
array
是一种通过命令调整整个列的通用技能tabularx
非常适合自动调整列大小booktabs
是专业布局的必备元素longtable
对于多页表来说非常流行。
根据所需功能选择更多包。
软件包冲突
xtab
和supertabular
不能一起工作。同时加载两者将导致冲突。xtab
应该是首选,因为它是作为 的扩展编写的supertabular
。根据手册,
arydshln
必须分别在 、 、 和 之后加载array
。longtable
在colortab
这个colortbl
问题中出现了这样的问题:无法在多列中插入多行此外,
arydshln
与 冲突supertabular
。ltablex
可能会干扰tabularx
双列文档中的使用(因为它使用的longtable
不能简单地放在浮动中),请参阅那里。
答案2
cellspace
是一个非常有用的包,例如,可以添加到booktabs
。使用这两个包,您将获得非常好的结果:
包单元格空间:确保表格单元格的最小间距。
[...]
此包旨在允许自动分隔数组的行。人们经常抱怨
\hline
当表格太高或太深时文本会接触表格。
答案3
这是一项很好的调查,标题为LaTeX2ε 中的表格:包和方法我觉得它非常有用。