垂直对齐

垂直对齐

我有一张单行表格,其中包含多列。此行中的每个单元格都是另一个表格,可以是 2x1 或 3x1。我想确保所有这些子表格都与主行的顶部对齐。例如:

-------------------
|  1  |  2  |  3  |
|  a  |  b  |  c  |
|  A  |     |  C  |
-------------------

一个足够简单的解决方案是向中间单元格添加一条幻影线。但是,如果所有单元格都是 2x1,我不希望有空行:

-------------------
|  1  |  2  |  3  |
|  a  |  b  |  c  |
|     |     |     |
-------------------

以上内容对我来说并不好,应该

-------------------
|  1  |  2  |  3  |
|  a  |  b  |  c  |
-------------------

有什么想法可以实现这一点吗?

答案1

只需使用

\begin{tabular}[t]

对于内部表格,使它们在其顶行排列。

答案2

[t]对嵌套的 -alignment使用tabular,并将其包裹在宏中,以避免插入强制换行符:

在此处输入图片描述

\documentclass{article}
\newcommand{\vtable}[2][c]{% \vtable[<col align>]{<stuff>}
  \begin{tabular}[t]{@{}#1@{}}#2\end{tabular}}
\begin{document}
\begin{tabular}{|c|c|c|}
  \vtable{1 \\ a \\ A} & \vtable{2 \\ b} & \vtable{3 \\ c \\ C}
\end{tabular}

\bigskip

\begin{tabular}{|c|c|c|}
  \vtable{1 \\ a } & \vtable{2 \\ b} & \vtable{3 \\ c}
\end{tabular}
\end{document}

的定义\vtable采用可选参数,指定嵌套的 内的对齐方式tabular。此处的默认值为centred(如[c]中的所示\newcommand{\vtable}[2][c])。因此,\vtable{...}默认值为\vtable[c]{...},即centres 嵌套的tabular。使用将在嵌套的 内\vtable[l]{...}施加左对齐。ltabular

第二个参数采用tabular单元格/行的常规定义,其中可能包括\\。使用嵌套tabular列规范会@{}.@{}删除列周围的默认填充 -\tabcolsep除非另有指定,否则 LaTeX 会在列的两侧插入。使用@{}会删除此内容。作为参考,请参阅表格中的列填充

makecell包裹通过 提供类似的东西\makecell

相关内容