使用tabularry宏包进行latex表格的设计
tabularray宏包是吕老师基于LaTeX3设计的新一代的表格排版,较好地实现了表格内容与样式的分离,能够在很大程度上简化LaTeX中表格排版的工作量。
在外观上tabularry设计的表格看起来比较贴合office中的表格,同时操作上也比较简便。简化了表格的中\multirow和\multicolumn的操作,相对起来比较容易上手。但是由于该宏包是2021年后才更新,因此在网上的教程较少。
一个简单的表格对比
这个是使用老版宏包tabls制作表格的代码:
\begin{tabular}{lccr}
\hline
Alpha & Beta & Gamma & Delta \\
\hline
Epsilon & Zeta & Eta & Theta \\
\hline
Iota & Kappa & Lambda & Mu \\
\hline
\end{tabular}
这个是使用tabularry制作表格的代码:
\begin{tblr}{lccr}
\hline
Alpha & Beta & Gamma & Delta \\
\hline
Epsilon & Zeta & Eta & Theta \\
\hline
Iota & Kappa & Lambda & Mu \\
\hline
\end{tblr}
两个宏包制作效果如下:
从简单表格编译的效果来看,两者美哟任何的区别,代码的维护与可读性差不多。
复杂表格的对比
在tabls宏包中想实现复杂的表格排列需要使用\multirow和\multicolumn对表格进行合并,但是至于其中单元格内部的换行经常报错,导致无法实现这个功能(至少我用的时候出现这个问题)。而在tabularry宏包中则能固避免这个问题。
比如就上述简单表格内部的换行;
\begin{tblr}{lccr}
\hline
{Alpha \\ a }& Beta & Gamma & Delta \\
\hline
Epsilon & Zeta & Eta & Theta \\
\hline
Iota & Kappa & Lambda & Mu \\
\hline
\end{tblr}
实现效果如下
下面来一个复杂表格的换行功能
\begin{tabular}{|c|c|c|c|c|}
\hline
\multirow{2}{*}{2 Rows}
& \multicolumn{2}{c|}{2 Columns}
& \multicolumn{2}{c|}{\multirow{2}{*}{2 Rows 2 Columns}} \\
\cline{2-3}
& 2-2 & 2-3 & \multicolumn{2}{c|}{} \\
\hline
3-1 & 3-2 & 3-3 & 3-4 & 3-5 \\
\hline
\end{tabular}
这个时tab的效果图
这个是tablr的功能
\begin{tblr}{|c|c|c|c|c|}
\hline
\SetCell[r=2]{c} 2 Rows
& \SetCell[c=2]{c} 2 Columns
& & \SetCell[r=2,c=2]{c} 2 Rows 2 Columns & \\
\hline
& 2-2 & 2-3 & & \\
\hline
3-1 & 3-2 & 3-3 & 3-4 & 3-5 \\
\hline
\end{tblr}
使用表格包,您可以使用 SetCell 命令设置跨区单元格:在 SetCell 命令的可选参数中,选项 r 用于行跨度编号,c 用于列跨度编号;在它的强制参数中,接受水平和垂直对齐选项。因此,排版跨区单元格要简单得多:
效果图如下:
使用 multicolumn 命令,必须删除省略的单元格。相反,使用 multirow 命令,不得删除省略的单元格。在这方面,SetCell 命令的行为与 multirow 命令相同。
在 tblr 环境中,跨区单元内的任何 hline 段都将被忽略,因此我们可以在上面的示例中自由使用 hline。此外,任何省略的单元格在排版时肯定会被忽略,
不管它是空的还是不是。使用此功能,我们可以将行号和列号放入省略的单元格中,这将有助于我们在表格相当复杂时找到单元格。
总结
总的来说,新的宏包tabularry在表格排列上有优越性,同时也是说明了能用新的就用新的。新的宏包在排列效果上会比旧宏包更加方便,代码的可读性也会增加.。
注意:
- 上面的仅代表个人意见,希望能遇到更多的大佬带我学习latex。
- 后期如果有时间还会考虑继续对tabularry进行介绍。
- 这个是第一次对latex的相关知识进行介绍,不喜欢勿喷。