考虑如下表格:
| text1 | text2 |
|------------|--------------|
| a b c | AAA BBB CCC |
|------------|--------------|
| | aa bb cc |
|------------|--------------|
| AA BB CC | |
现在我希望 a 与 AA 对齐,b 与 BB 对齐,c 与 CC 对齐,AAA 与 aa 对齐,等等。
是否可以在 LaTeX 中做到这一点(如果可能的话,使用简单而优雅的语法)?
我应该补充一点,就我的目的而言,这三个标记是由命令生成的,\foo
例如,不是将 abc 直接写入表中,而是类似这样的操作\foo{a'}{b'}{c'}
。
答案1
您可以将tabular
环境与multcol
包一起使用。我\foo
按照要求定义了带有三个参数的宏。
\documentclass{article}
\usepackage{multicol}
\usepackage{array}
\newcolumntype{L}{l@{\hspace{1mm}}}% Adjust horizontal spacing between columns here
\newcolumntype{C}[1]{m{#1}}% Centered columns of fixed width
\newcommand{\foo}[3]{#1}
\begin{document}
\begin{tabular}{|LLL|LLL|}
\multicolumn{3}{c}{text1} &\multicolumn{3}{c}{text2} \\ \hline
a &b&c & AAA & BBB & CCC \\
\hline
& & & aa & bb & cc \\
\hline
AA &BB &CC & & & \\
\hline
\end{tabular}
Using the foo macro:
\begin{tabular}{|LLL|LLL|}
\multicolumn{3}{c}{text1} &\multicolumn{3}{c}{text2} \\ \hline
\foo{a}{b}{c} & \foo{AAA}{BBB}{CCC} \\
\hline
\foo{}{}{}& \foo{aa}{bb}{cc}\\
\hline
\foo{AA}{BB}{CC}& \foo{}{}{} \\
\hline
\end{tabular}
With fixed width columns:
\newcommand{\Size}{1.0cm}%
\begin{tabular}{|C{\Size}C{\Size}C{\Size}|C{\Size}C{\Size}C{\Size}|}
\multicolumn{3}{c}{text1} &\multicolumn{3}{c}{text2} \\ \hline
\foo{a}{b}{c} & \foo{AAA}{BBB}{CCC} \\
\hline
\foo{}{}{}& \foo{aa}{bb}{cc}\\
\hline
\foo{AA}{BB}{CC}& \foo{}{}{} \\
\hline
\end{tabular}
\end{document}
如果您希望列之间有更多间距,您可以调整newcolumntype
,或者直接使用l
而不是L
列的规格。
您可以通过改变传递给列类型的参数来调整列的宽度C
。
答案2
您可以使用\rlap
(和\llap
和\clap
) 覆盖文本中的某些组件。此外,\phantom
可用于排版某些内容而无需实际执行。可以修改下面的示例以修改重叠。无论如何,这不需要包含任何额外的包。
\documentclass{article}
\begin{document}
\begin{tabular}{l|l}\hline
text1 & text2 \\ \hline
\rlap{a}\phantom{AA}\ \rlap{b}\phantom{BB}\ \rlap{c}\phantom{CC} & AAA\ BBB\ CCC \\ \hline
& \rlap{aa}\phantom{AAA}\ \rlap{bb}\phantom{BBB}\ \rlap{cc}\phantom{CCC} \\ \hline
AA\ BB\ CC \\ \hline
\end{tabular}
\end{document}