使用tabularray宏包排版表格-内容与样式分离

发布于 2023-04-24 14:47:15

tabularray宏包被称为是LaTeX排版中的新一代表格排版宏包,它采用“内容与样式分离”的思想进行设计,将表格的样式通过环境的内参(必选参数)与外参(可选参数)进行控制,将表格内容与样式实现了完全分离。

基础语法


基于tabularray宏包实现表格排版的基础语法是:

\begin{tblr}[<外参>]{<内参>}
  <表格内容>
\end{tblr}

其中:

  1. tblr是基本的排版环境,也可以是longtblrtalltblr或自定义的表格排版环境。
  2. [<外参>]用于控制表格内容(单元格)之外的样式,如与其它文本的对齐方式、标题、标签、注解、注释等。
  3. {<内参>}用于控制表格内容(单元格)的样式,如表格线、字体、字号、背景色、前景色、间距等。
  4. <表格内容>为用&分隔的单元格及\\分行的表格内容。

建议:对需要排版的表格进行必要抽象,避免在表格内容中使用样式命令和环境。

一个用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}

其排版结果为:
image.png

当然,也可以按类似传统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}

其排版结果为:
image.png

此时,表格的内容与表格样式是混在一起的,代码的设计和维护都比较困难,因此,非常不建议采用这种内容与样式混用的方式进行表格排版。

内外参数默认值


在排版中,可以在导言区(推荐)或表格排版之前使用\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}

其排版结果为:
image.png

使用模板实现表格样式灵活控制


tabularray表格宏包中使用模板实现了longtblr和talltblr环境的题注的尾注内容及样式控制,可以通过设计不同的模板以实现更为复杂样式。关于tabularray的模板可以参考LaTeX工作室中的tabularray表格宏包中longtblr模板的使用,在此不再冗述。

用tabularray排版其它内容

除了可以用tabularray宏包排版表格外,巧妙利用表格的样式控制还可以实现绘图、Beamer动画、基于csv文件表格等各类排版,在LaTeX工作室中有不少类似的实例:

  1. 用tabularray宏包的talltblr环境排版带题注与尾注表格
  2. 使用 tabularray 宏包制作一个颜色单元格和虚线表格
  3. 基于Tablularray宏包用LaTeX3实现的短除式排版shortdiv宏包
  4. 用Tabularray宏包实现Beamer中表格逐行逐列动画
  5. 用tabularray宏包排版异形布局插图
  6. 用circledtext宏包结合tabularray宏包排版象棋
  7. 基于tabularray宏包用LaTeX3读取csv数据排版表格
  8. 一种调整表格“行间距”的方法---使用 tabularray 宏包
  9. 一个复杂表格的 tabularray 代码实现

关于tabularray宏包的使用细节,可以在命令行使用texdoc tabularray命令打开其使用说明书进行查阅。

笔者翻译了该宏包的使用手册,其源代码托管于Gitee平台tabularray-doc-zh-cn,并在LaTeX工作室发布有新一代表格tabularray宏包手册中译

同时, 针对tabularray内容与样式分离的新接口,笔者制作了其使用思绪导图,欢迎大家批评指正:Tabularray-2023A-mindmap.zip
image.png

0 条评论

发布
问题