如何使长度可变的表格单元格顶部对齐?

如何使长度可变的表格单元格顶部对齐?

我想让 lorem ipsum 文本从下表中与“A”相同的行开始。我该怎么做?

在此处输入图片描述

这是我的代码:

\documentclass{article}
\usepackage[hmargin=3cm,vmargin=8cm]{geometry}
\usepackage{array}
\newcolumntype{B}[1]{>{\arraybackslash\hspace{0pt}}p{#1}}
\begin{document}
\begin{tabular}[t]{l@{\hspace{0.7cm}}!{\vrule width 2pt}@{\hspace{0.7cm}}B{10cm}}
X & Y \\
& \\
A \\ B & 
lorem ipsum dolor sit amet, consectetuer adipiscing elit. nam cursus. morbi ut mi. nullam enim leo, egestas id, condimentum at, laoreet mattis, massa. sed eleifend nonummy diam. praesent mauris ante, elementum et, bibendum at, posuere sit amet, nibh. duis tincidunt lectus quis dui viverra vestibulum. suspendisse vulputate aliquam dui. nulla elementum dui ut augue. aliquam vehicula mi at mauris. maecenas placerat, nisl at consequat rhoncus, sem nunc gravida justo, quis eleifend arcu velit quis lacus. morbi magna magna, tincidunt a, mattis non, imperdiet vitae, tellus. sed odio est, auctor ac, sollicitudin in, consequat vitae, orci. fusce id felis. vivamus sollicitudin metus eget eros. \\
& \\
\end{tabular}
\end{document}

答案1

您可以做的最简单的事情是使用嵌套表格环境模拟换行符:

X & Y \\
\begin{tabular}[t]{@{}l@{}}A \\ B \end{tabular} & \lipsum[1] \

当然,最好为此定义一个个人命令:

\newcommand{\breakcell}[2][l]{\begin{tabular}[t]{@{}#1@{}}#2\end{tabular}}

这样输入就可以变成

X & Y \\
\breakcell{A \\ B} & \lipsum[1] \

有了这个定义,\breakcell也可以调用\breakcell[c]{...}\breakcell[r]{...}改变内部水平对齐。

答案2

以下是基于该multirow包的解决方案:

\documentclass{article}
\usepackage[hmargin=3cm,vmargin=8cm]{geometry}
\usepackage{array,lipsum,multirow}
\newcolumntype{B}[1]{>{\arraybackslash\hspace{0pt}}p{#1}}
\begin{document}
\begin{tabular}[t]{l@{\hspace{0.7cm}}!{\vrule width 2pt}@{\hspace{0.7cm}}B{10cm}}
X & Y \\[20pt]  % use this to insert extra space between table rows
A & \multirow{2}{10cm}{\lipsum[1]} \\
B & \\[5.2cm]  % see note below
Joe & Blow
\end{tabular}
\end{document}

有一个不令人满意的方面 - 我必须在该 lorem ipsum 后插入一些垂直空间才能获得正确的表格行高。我找不到自动解决方案。

相关内容