LaTeX 的各种表格环境之间有什么一般区别?我的意思是:它们的基本用途是什么?对于新用户来说,哪些是最重要的?哪些更高级,只应由高级 LaTeX 用户使用?表格的外观有区别吗?软件包booktabs
在这方面如何发挥作用?
简而言之,你会在什么情况下使用它们,它们各自的优缺点是什么。这个问题对于 LaTeX 新手来说尤其有用,因为他们可能会觉得选项太多了。
答案1
array
和之间的区别tabular
在tabular
和之间的区别array
环境,但我也会在这里引用它:
array
可能是 TeX 中允许水平和垂直堆叠东西的基本tabular
结构。你不需要包含array
包裹以便使用array
。该包仅向列规范添加了功能。tabular
是 的文字版本array
。
还有一个带星号的版本tabular*
,它以长度作为附加参数,例如
\begin{tabular*}{<len>}[<vpos>]{<colspec>}
\end{tabular*}
设置tabular*
为<len>
水平放置。它通常与@{\extracolsep{<width>}}
中的结合使用<colspec>
(通常<width>
是\fill
),以展开 中的列 <len>
。
另请参阅tabularx
下文。
table
是一个浮点数,它不知道其中包含什么。虽然大多数人将tabular
类似结构放在浮动的 中table
,但它几乎可以包含任何东西。浮动的放置可能很棘手,但这在如何影响LaTeX 中浮动环境(如figure
和)的位置?table
和将表格/图片放在靠近提及的地方与此相反,array
s 和tabular
s 在文本中按原样放置在它们被编码的位置。tabularx
是一个通过添加 -column 扩展星号版本tabular*
(需要指定长度)的包X
。这种新的列类型会延伸,tabular
使其适合指定的固定宽度边界。它避免了用户试图弄清楚 -columnp
应该有多宽,以便最终的tabular
宽度适合某个固定边界。下面的示例旨在突出上述内容,从而产生两个类似的表格:
\begin{tabular}{| p{\dimexpr0.5\linewidth-1.5\arrayrulewidth-2\tabcolsep} | p{\dimexpr0.5\linewidth-1.5\arrayrulewidth-2\tabcolsep} |} A & B \end{tabular} \medskip \begin{tabularx}{\linewidth}{| X | X |} A & B \end{tabularx}
longtable
为想要跨页面边界拆分的过大表格提供了一个混合用例。有点类似于想要一个非浮动table
环境(换句话说,有一个\caption
),但也允许表格跨越多个页面。这绝对是一个优势,因为分页附带的好处是可以自动重复列标题。它可能需要多次编译才能确定列宽。supertabular
是的前身longtable
并且仍然存在(并未过时),因为它提供了一种替代语法。tabu
尝试通过新的界面/语法为所有上述结构提供支持。longtabu
- 该tabu
包还提供了longtable
版本表tabu
。ltxtable
在环境内部共同提供longtable
和的功能 。tabularx
longtable
booktabs
在放弃使用垂直线的前提下,定义了一组新的水平线供array
和环境使用; /的列结构必然需要在列之间有水平分隔,因此不需要额外的(垂直)线。事实上,tabular
array
tabular
booktabs
文档提及:如果你始终记住两个简单的指导原则,就不会犯大错:
- 永远不要使用垂直规则。
- 切勿使用双重规则。
该软件包旨在提供
book
高品质的tab
文件s
,因此得名booktabs
。tabularray
重新定义表格在代码中的设置方式,使其结构类似于具有前言和内容的常规文档。与常规表格不同,它不会将代码与内容混合在一起,而是通过结构“前言”中的键值设置格式和布局样式/选项,从而将代码与内容分开,使更新/更改元素更加容易。此示例取自
tabularray
文档:\begin{tblr}{ colspec = {rX}, colsep = 8mm, hlines = {2pt, white}, row{odd} = {azure8}, row{even} = {gray8}, row{1} = {6em,azure2,fg=white,font=\LARGE\bfseries\sffamily}, row{2-Z} = {3em,font=\Large}, } Tabularray & Typeset Tabulars and Arrays with \LaTeX3 \\ Author & Jianrui Lyu ([email protected]) \\ Version & \myversion\ (\the\year-\mylpad\month-\mylpad\day) \\ Code & \url{https://github.com/lvjr/tabularray} \\ Code & \url{https://bitbucket.org/lvjr/tabularray} \\ Support & \url{https://github.com/lvjr/tabularray/discussions} \\ Support & \url{https://topanswers.xyz/tex} \\ Issue & \url{https://github.com/lvjr/tabularray/issues} \\ \end{tblr}
并产生