最近,我在设计具有所需属性的 LaTeX 表格时遇到了麻烦。我几乎总能实现我想要的格式,但很大一部分原因是每次格式更改都是临时性的,或者看起来像是黑客行为。我不喜欢这种风格的 LaTeX 设计。
我想知道是否有单身的该包允许我创建具有以下属性的表环境:
- 我可以分别指定每一行和每一列的水平和垂直对齐。
- 我可以单独指定每一行和每一列的高度和宽度,可以是固定长度,也可以是拉伸。
- 如果未能指定上述内容之一,则会产生类似于默认表格设置的令人满意的默认行为。
- 该表可以跨越多页而不会中断。
对我来说,理想的格式是,在环境的开头,可以声明行和列的所有相关间距和对齐参数,然后是表格主体。请注意,在默认的表格环境中,这是正确的仅有的列的格式;每行的格式都显示在正文中。
答案1
独一无二的表格布局包
您正在请求一个软件包来改进表格布局方式。在德国列表 TEX-DL 上,最近有人请求帮助以特殊方式显示数据,具体取决于单元格内的整数是否与标准值不同,以及赫伯特·沃斯想出了一个非常好且简短的解决方案:
\documentclass[12pt]{article}
\usepackage{array,xcolor}
\def\stripCmd\ignorespaces#1\unskip{#1}
\def\checkVal#1!!{\def\temp{\stripCmd#1}%
\ifnum\temp>3\textcolor{red}{#1}\else%
\ifnum\temp<3\textcolor{blue}{#1}\else#1\fi\fi}
\begin{document}
\begin{tabular}{@{} *5{>{\checkVal}c<{!!}} c @{}}
1 & 2 & 3 & 4 & 5 &\\
7 & 5 & 3 & 2 & 3 & \\
\end{tabular}
\end{document}
很棒,不是吗?
人们需要表格内部有非常不同的布局。它们比普通文本的布局变化多得多。
因此,满足您需求的软件包对其他人没有多大帮助。所以请给我们一些您想要创建的表格示例。也许这里有人可以提供某种捷径。
答案2
正如 David Carlisle 在评论中指出的那样,此的“正常”底层 TeX 基元是\halign
和\valign
,分别表示水平对齐和垂直对齐。
它们的使用方式如下:
\[h|v]align{<preamble template(s)>\cr
<content>\cr}
其中#
(或,带有 6 的字符)标记该列/行 的\catcode
位置,而(或,带有4 的字符)在 和中划分列/行。<content>
&
\catcode
<preamble>
<content>
\halign
将<content>
s 放入\hbox
es,而\valign
将它们放入\vbox
es。
不幸的是它们不能结合起来(至少据我所知);所以虽然\halign
您可以定义单独的列模板,也可以定义\valign
单独的行模板,但您不能同时使用它们。
因此“正常”的底层原语在点 1) 和 2) 上失败,而 3) 取决于给定的<preamble template>
。但是,4) 应该被覆盖。
答案3
答案4
所有这四个属性tblr
在 LaTeX3 包环境中都很容易实现。tabularray
。
- 我可以分别指定每一行和每一列的水平和垂直对齐。
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\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}
\end{document}
- 我可以单独指定每一行和每一列的高度和宽度,可以是固定长度,也可以是拉伸。
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{hlines,vlines,row{1-3}={7mm},column{1-4}={15mm,c}}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
\end{tblr}
\end{document}
- 如果未能指定上述内容之一,则会产生类似于默认表格设置的令人满意的默认行为。
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{}
Alpha & Beta & Gamma & Delta \\
Epsilon & Zeta & Eta & Theta \\
Iota & Kappa & Lambda & Mu \\
\end{tblr}
\end{document}
- 该表可以跨越多页而不会中断。
此属性已添加到tabularray
2021L 版本的包中。