专栏名称: LaTeX工作室
欢迎光临分享与学习LaTeX的王国
目录
相关文章推荐
51好读  ›  专栏  ›  LaTeX工作室

30 个样例带你搞定完美 LaTeX 表格

LaTeX工作室  · 公众号  ·  · 2024-11-29 21:56

正文

请到「今天看啥」查看全文


Tabularray 一个宏包教你搞定所有表格

我们用 LaTeX 制作表格,通常用到的是 tabular, tabularx 和 array 环境,本文将着重分享 tabularray 制作表格的方法,同时与前三者做简单的对比。在使用 tabularray 宏包的时候,应用的环境是 tblr( top-bottom-left-right 的缩写),本文测试文档代码如下:

完整源代码地址:

https://www.latexstudio.net/index/details/index/mid/4338.html

\documentclass[UTF8,no-math,12pt,openany,table,dvipsnames,svgnames]{article}
\usepackage[centering,top=0.5in,bottom=0.5in,right=0.8in,left=0.8in,headsep=25pt,
headheight=20pt]
{geometry}

\usepackage{ctex,multirow,xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tabular}{lccr} %% tabular环境
\hline
Alpha & Beta & Gamma & Delta \\ \hline
Epsilon & Zeta & Eta & Theta \\ \hline
Iota & Kappa & Lambda & Mu \\ \hline
\end{tabular}
\end{document}

一、简单比较

相较于一般常用的 tabular, tabularx 和 array 环境, tblr 在表格间隙等自动调整得更好更美观。

\begin{tabular}{lccr}
\hline
Alpha & Beta & Gamma & Delta \\
\hline
Epsilon & Zeta & Eta & Theta \\
\hline
Iota & Kappa & Lambda & Mu \\
\hline
\end{tabular}
\begin{tblr}{lccr}
\hline
Alpha & Beta & Gamma & Delta \\ \hline
Epsilon & Zeta & Eta & Theta \\ \hline
Iota & Kappa & Lambda & Mu \\ \hline
\end{tblr}
\begin{array}{lccr}
\hline
Alpha & Beta & Gamma & Delta \\ \hline
Epsilon & Zeta & Eta & Theta \\ \hline
Iota & Kappa & Lambda & Mu \\ \hline
\end{array}

二、单元格折行

相较于常用的 tabular, tabularx 和 array 环境, tblr 环境单元格折行更为容易,同一单元格通过{第一行\ 第二行\第三行}就能实现,而以 tabular 为例的则通过控制列宽或者使用 multirow 环境实现折行(当然还有其他方法)。

\begin{tblr}{|l|c|r|}
\hline
Left & {Center\\Cent\\ C} & {Right\\R}\\ \hline
{L \\ Left} & {C\\Cent\\Center}& R\\ \hline
\end{tblr}
\begin{tabular}{|p{20pt}\raggedright}|p{30pt}\centering}|p{25pt}\raggedleft}|}
\hline
Left & Center Cent C   & Right R\\
\hline
L Left & C Cent Center & R \\
\hline
\end{tabular}

三、单元格折行对齐

tblr 环境的单元折行对齐主要考虑左、右、上、下以及居中对齐,同时用 Q 作为一个默认的初始列(对于每一个列的参数设置都基于 Q 列基础上)。

\begin{tblr}{|Q[l,t]|Q[c,m]|Q[r,b]|}
\hline
{Top Baseline \\ Left Left} & Middle Center & {Right Right \\ Bottom Baseline} \\
\hline
\end{tblr}

在 tblr 环境中,可以通过 h、t、m、b 和 f 来设置单列的每个单元格上下对齐,同时可以选择每个列的宽参数。

\begin{tblr}{|Q[h,2.5em]|Q[t,2.5em]|Q[m,2.5em]|Q[b,2.5em]|Q[f,2.5em]|}
\hline
{row\\head} & {top\\line} & {middle} & {line\\bottom} & {row\\foot} \\
\hline
{row\\head} & {top\\line} & {11\\22\\mid\\44\\55} & {line\\bottom} & {row\\foot} \\
\hline
\end{tblr}

四、多行合并

在 tabular 环境中,我们通常是通过命令:\mutilrow[] }{}{合并问题内容} 来进行合并,而 tblr 环境中合并则是通过\SetCell[r=行数]{对齐方式,列宽 命令来实现。两者对比如下:

\begin{tabular}{|l|l|l|l|}
\hline
\multirow[t]{4}{1.5cm}{Multirow Cell One} & Alpha &
\multirow[b]{4}{1.5cm}{Multirow Cell Two} & Alpha \\
& Beta & & Beta \\
& Gamma & & Gamma \\
& Delta & & Delta \\
\hline
\end{tabular}
\begin{tblr}{|l|l|l|l|}
\hline
\SetCell[r=4]{h,1.5cm} Multirow Cell One & Alpha &
\SetCell[r=4]{f,1.5cm} Multirow Cell Two & Alpha \\
& Beta & & Beta \\
& Gamma & & Gamma \\
& Delta & & Delta \\
\hline
\end{tblr}

值得一提的是,我们在使用 tabular 环境时,单元格合并我们需要导入 multirow 宏包,但是 tblr 环境中,tabularray 自带了单元格合并功能,且在上下垂直对齐等更加的美观。

\begin{tabular}{|l|m{4em}|}
\hline
\multirow[c]{4}{1.5cm}{Multirow} & Alpha \\
& Beta \\
& Gamma \\
& Delta Delta Delta \\
\hline
\end{tabular}
\begin{tblr}{|l|m{4em}|}
\hline
\SetCell[r=4]{m,1.5cm} Multirow & Alpha \\
& Beta \\
& Gamma \\
& Delta Delta Delta \\
\hline
\end{tblr}

五、多列合并

\multicolumn{}{}{合并内容} 值得注意的是我们在合并的过程中很可能将合并内容的竖线合并掉,同时在合并过程中,涉及到合并多行多列时,还需要用到多行合并命令:

\multicolumn{}{}{\multirow{行数}{*}{合并内容}}

在 tblr 环境中,只需要\SetCell,不加入复杂的参数选项设置。

\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}
\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}
\begin{tblr}{|ll|c|rr|}
\hline
\SetCell[r=3,c=2]{h} r=3 c=2 & 1-2 & \SetCell[r=2,c=3]{r} r=2 c=3 & 1-4 & 1-5 \\
2-1 & 2-2 & 2-3 & 2-4 & 2-5 \\
\hline
3-1 & 3-2 & MIDDLE & \SetCell[r=3,c=2]{f} r=3 c=2 & 3-5 \\
\hline
\SetCell[r=2,c=3]{l} r=2 c=3 & 4-2 & 4-3 & 4-4 & 4-5 \\
5-1 & 5-2 & 5-3 & 5-4 & 5-5 \\
\hline
\end{tblr}

六、行列类型

Tabularray 宏包支持所有普通行列类型,并有可扩展的 Q(行) 和 X (列)类型,通过在可扩展行列类型赋予参数值对表格进行调整和改进。

\begin{tblr}{|X[2,l]|X[3,l]|X[1,r]|X[r]|}
\hline
Alpha & Beta & Gamma & Delta \\
\hline
\end{tblr}
\begin{tblr}{colspec={Q[l]Q[c]Q[r]},rowspec={|Q[t]|Q[m]|Q[b]|}}
{Alpha \\ Alpha} & Beta & Gamma \\
Delta & Epsilon & {Zeta \\ Zeta} \\
Eta & {Theta \\ Theta} & Iota \\
\end{tblr}

七、表格的横、竖线

tblr 中横、竖线的粗细、颜色参数设置如下:

\begin{tblr}{|l|[dotted]|[2pt]c|r|[solid]|[dashed]|}
\hline
One & Two & Three \\
\hline\hline[dotted]\hline
Four & Five & Six \\
\hline[dashed]\hline[1pt]
Seven & Eight & Nine \\
\hline
\end{tblr}

还可以通过 hlines 和 vlines 去设置,下面给出相关案例。

\begin{tblr}{hlines,vlines}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
\end{tblr}
\begin




    
{tblr}{
hlines = {1pt,solid}
, vlines = {red3,dashed},}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
\end{tblr}
\begin{tblr}{
vlines = {1,3,5}
{dashed}
,
vlines = {2,4}{solid},
}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
Nu & Xi & Omicron & Pi \\
Rho & Sigma & Tau & Upsilon \\
\end{tblr}

八、表格的颜色

我们可以设置表格横、竖线的颜色、粗细。

\begin{tblr}{colspec={lcr},
rowspec={|[2pt,green7]Q|[teal7]Q|[green7]Q|[3pt,teal7]}}
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
\end{tblr}
\begin{tblr}{colspec={|[2pt,violet5]l|[2pt,magenta5]c|[2pt,purple5]r|[2pt,red5]}}
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
\end{tblr}
\begin{tblr}{llll}
\hline
Alpha & Beta & Gamma & Delta \\
\hline[dashed]
Epsilon & Zeta & Eta & Theta \\
\hline[dotted]
Iota & Kappa & Lambda & Mu \\
\hline[2pt,blue5]
\end{tblr}
\begin{tblr}{llll}
\cline{1-4}
Alpha & Beta & Gamma & Delta \\
\cline[dashed]{1,3}
Epsilon & Zeta & Eta & Theta \\
\cline[dashed]{2,4}
Iota & Kappa & Lambda & Mu \\
\cline[2pt,blue5]{-}
\end{tblr}
\begin{tblr}{llll}
\cline{1-4}
Alpha & Beta & Gamma & Delta \\
\cline[dashed]{odd}
Epsilon & Zeta & Eta & Theta \\
\cline[dashed]{even}
Iota & Kappa & Lambda & Mu \\
\cline[2pt,blue5]{-}
\end{tblr}
\begin{tblr}{llll}
\SetHline{1-3}{blue5,1pt}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
\SetHline{2-4}{teal5,1pt}
\end{tblr}
\begin{tblr}{llll}
\SetHline[1]{1-3}{blue5,1pt}
\SetHline[2]{1-3}{azure5,1pt}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
\SetHline[1]{2-4}{teal5,1pt}
\SetHline[2]{2-4}{green5,1pt}
\end{tblr}
\begin{tblr}{
hline{1,7}
 = 
{1pt,solid},
hline{3-5} = {blue3,dashed},
vline{1,5} = {3-4}{dotted},
}
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
Nu & Xi & Omicron & Pi \\
Rho & Sigma & Tau & Upsilon \\
Phi & Chi & Psi & Omega \\
\end{tblr}

tblr 环境中,我们还可以通过 rowspec 和 colspec 两个参数的设置来实现报表各(行/列)的文字对齐、背景色填充等。

\begin{tblr}{colspec={lcr},rowspec={|Q[cyan7]|Q[azure7]|Q[blue7]|}}
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
\end{tblr}
\begin{tblr}{colspec={Q[l,brown7]Q[c,yellow7]Q[r,olive7]},rowspec={|Q|Q|Q|}}
Alpha & Beta & Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
\end{tblr}

除了通过 rowspec 和 colspec 参数设置来实现之外,也可以通过\SetRow 和 \SetColumn 来实现。

\begin{tblr}{colspec={lcr},rowspec={|Q|Q|Q|}}
\SetRow{cyan7} Alpha & Beta & Gamma \\
\SetRow{azure7} Epsilon & Zeta & Eta \\
\SetRow{blue7} Iota & Kappa & Lambda \\
\end{tblr}
\begin{tblr}{colspec={lcr},rowspec={|Q|Q|Q|}}
\SetColumn{brown7}
Alpha & \SetColumn{yellow7}
Beta & \SetColumn{olive7}
Gamma \\
Epsilon & Zeta & Eta \\
Iota & Kappa & Lambda \\
\end{tblr}

另外, 通过 row{i} 和 column{j}可以进行设置全部行列的底色。

\begin{tblr}{
hlines = {1pt,white}
,
row{odd} = {blue7},
row{even} = {azure7},
column{1} = {purple7,c},
}
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}

可以通过 bg, fg 和 font 对底色、文字等设置。同时,可以通过 c 参数选项来设置行的底色。

\begin{tblr}{
row{odd}
 = 
{bg=azure8},
row{1} = {bg=azure3, fg=white, font=\sffamily},
}
Alpha & Beta & Gamma \\
Delta & Epsilon & Zeta \\
Eta & Theta & Iota \\
Kappa & Lambda & Mu \\
Nu Xi Omicron & Pi Rho Sigma & Tau Upsilon Phi \\
\end{tblr}
\begin{tblr}{
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}
\begin{tblr}{llll}
\hline[1pt]
\SetRow{azure8} Alpha & Beta & Gamma & Delta \\
\hline
\SetRow{blue8,c} Epsilon & Zeta & Eta & Theta \\
\hline
\SetRow{violet8} Iota & Kappa & Lambda & Mu \\
\hline[1pt]
\end{tblr}

tblr 环境中,可以通过 odd 和 even 选择性行列设置。

\begin{tblr}{
cell{odd}
{1} = 
{red9},
cell{odd[4]}{2} = {green9},
cell{odd[3-X]}{3} = {blue9},
}
Head & Head & Head \\
Talk A & Place A & Date A \\
Talk B & Place B & Date B \\
Talk C & Place C & Date C \\
Talk D & Place D & Date D \\
Talk E & Place E & Date E \\
Talk F & Place F & Date F \\
Talk G & Place G & Date G \\
Talk H & Place H & Date H \\
\end{tblr}
\begin{tblr}{
cell{even}
{1} = 
{yellow9},
cell{even[4]}{2} = {cyan9},
cell{even[3-X]}{3} = {purple9},
}
Head & Head & Head \\
Talk A & Place A & Date A \\
Talk B & Place B & Date B \\
Talk C & Place C & Date C \\
Talk D & Place D & Date D \\
Talk E & Place E & Date E \\
Talk F & Place F & Date F \\
Talk G & Place G & Date G \\
Talk H & Place H & Date H \\
\end{tblr}

成为 LaTeX 会员,尽享精致科研!

开通地址:

https://www.latexstudio.net/index/recharge/choice.html







请到「今天看啥」查看全文