tabularray宏包被称为是LaTeX排版中的新一代表格排版宏包,它采用“内容与样式分离”的思想进行设计,将表格的样式通过环境的内参(必选参数)与外参(可选参数)进行控制,将表格内容与样式实现了完全分离。
基于tabularray宏包实现表格排版的基础语法是:
\begin{tblr}[<外参>]{<内参>}
<表格内容>
\end{tblr}
其中:
tblr
是基本的排版环境,也可以是longtblr
、talltblr
或自定义的表格排版环境。[<外参>]
用于控制表格内容(单元格)之外的样式,如与其它文本的对齐方式、标题、标签、注解、注释等。{<内参>}
用于控制表格内容(单元格)的样式,如表格线、字体、字号、背景色、前景色、间距等。<表格内容>
为用&
分隔的单元格及\\
分行的表格内容。建议:对需要排版的表格进行必要抽象,避免在表格内容中使用样式命令和环境。
一个用tabularray宏包排版表格的代码如:
\documentclass{standalone}
% 表格宏包
\usepackage{tabularray}
% 9色宏包
\usepackage{ninecolors}
\begin{document}
Baseline
\begin{tblr}[m]% 外参
{% 内参
hlines = {white},
vlines = {white},
cell{1,6}{odd} = {teal7},
cell{1,6}{even} = {green7},
cell{2,4}{1,4} = {red7},
cell{3,5}{1,4} = {purple7},
cell{2}{2} = {r=4,c=2}{c,azure7},
}
% 表格内容
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
Nu & Xi & Omicron & Pi \\
Rho & Sigma & Tau & Upsilon \\
Phi & Chi & Psi & Omega \\
\end{tblr}
Baseline
\end{document}
其排版结果为:
当然,也可以按类似传统tabular环境的方式使用tabularray宏包实现表格排版,如:
\documentclass{standalone}
\usepackage{tabularray}
\usepackage{ninecolors}
\begin{document}
\begin{tblr}{|[white]c|[white]c|[white]c|[white]c|[white]}
\hline[white]
\SetCell{teal7}Alpha & \SetCell{green7}Beta & \SetCell{teal7}Gamma & \SetCell{green7}Delta \\
\hline[white]
\SetCell{red7}Epsilon & \SetCell[r=4,c=2]{c, azure7} Zeta & Eta & \SetCell{red7}Theta \\
\hline[white]
\SetCell{purple7}Iota & Kappa & Lambda & \SetCell{purple7}Mu \\
\hline[white]
\SetCell{red7}Nu & Xi & Omicron & \SetCell{red7}Pi \\
\hline[white]
\SetCell{purple7}Rho & Sigma & Tau & \SetCell{purple7}Upsilon \\
\hline[white]
\SetCell{teal7}Phi & \SetCell{green7}Chi & \SetCell{teal7}Psi & \SetCell{green7}Omega \\
\hline[white]
\end{tblr}
\end{document}
其排版结果为:
此时,表格的内容与表格样式是混在一起的,代码的设计和维护都比较困难,因此,非常不建议采用这种内容与样式混用的方式进行表格排版。
在排版中,可以在导言区(推荐)或表格排版之前使用\SetTblrInner
和\SetTblrOuter
命令为内外参数设置默认值,以简化表格排版代码,并便于代码维护及统一修改表格样式,如:
\documentclass{standalone}
\usepackage{tabularray}
\usepackage{ninecolors}
\SetTblrInner{hlines = {white}, vlines = {white}}
\SetTblrOuter{baseline=B}
\begin{document}
Baseline
\begin{tblr}{%
cell{1,6}{odd} = {teal7},
cell{1,6}{even} = {green7},
cell{2,4}{1,4} = {red7},
cell{3,5}{1,4} = {purple7},
cell{2}{2} = {r=4,c=2}{c,azure7},
}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
Nu & Xi & Omicron & Pi \\
Rho & Sigma & Tau & Upsilon \\
Phi & Chi & Psi & Omega \\
\end{tblr}
Baseline
\end{document}
其排版结果为:
tabularray表格宏包中使用模板实现了longtblr和talltblr环境的题注的尾注内容及样式控制,可以通过设计不同的模板以实现更为复杂样式。关于tabularray的模板可以参考LaTeX工作室中的tabularray表格宏包中longtblr模板的使用,在此不再冗述。
除了可以用tabularray宏包排版表格外,巧妙利用表格的样式控制还可以实现绘图、Beamer动画、基于csv文件表格等各类排版,在LaTeX工作室中有不少类似的实例:
关于tabularray宏包的使用细节,可以在命令行使用texdoc tabularray
命令打开其使用说明书进行查阅。
笔者翻译了该宏包的使用手册,其源代码托管于Gitee平台tabularray-doc-zh-cn,并在LaTeX工作室发布有新一代表格tabularray宏包手册中译。
同时, 针对tabularray内容与样式分离的新接口,笔者制作了其使用思绪导图,欢迎大家批评指正:Tabularray-2023A-mindmap.zip