如果多行单元格内容高于跨行的总高度,则会溢出表格高度。这是正常现象吗?
\documentclass{article}
\usepackage{multirow,longtable}
\begin{document}
\begin{longtable}{|p{20mm}|p{20mm}|}
\hline
A & B
\\\hline
\multirow{2}{20mm}{\parbox{18mm}{AB\linebreak BC \linebreak CD \linebreak EF}}
& X, then Y
\\\cline{2-2}
& Y, then Z
\\\hline
\end{longtable}
\end{document}
如果是,我该如何获得类似 HTML 表格的行为以适应其中的内容?实际上,除标题外,所有单元格中都有很多段落文本。
答案1
这里还有几种其他可能性,您无需测量。由于左侧条目实际上有 4 个“物理”行高,尽管从逻辑上讲它是 2 行,所以我\multirow{4}
为它指定了高度。Multirow 不知道行的实际高度(TeX 未提供该信息),因此它按默认行高计算。
该软件包的新文档中multirow
有一节关于此问题的内容,并提供了几种解决方案。
\documentclass{article}
\usepackage{multirow,longtable}
\begin{document}
\begin{longtable}{|p{20mm}|p{20mm}|}
\hline
A & B
\\\hline
\multirow{4}{=}{AB\newline BC \newline CD \newline EF}
& X, then Y \\
& \\ \cline{2-2}
& Y, then Z \\
& \\
\hline
\end{longtable}
\begin{longtable}{|p{20mm}|p{20mm}|}
\hline
A & B
\\\hline
\multirow{4}{=}{AB\newline BC \newline CD \newline EF}
& X, then Y \\ \cline{2-2}
& Y, then Z \\
& \\
& \\
\hline
\end{longtable}
\begin{longtable}{|p{20mm}|p{20mm}|}
\hline
A & B
\\\hline
\multirow{4}{=}{AB\newline BC \newline CD \newline EF}
& \multirow{2}{=}{X, then Y} \\
& \\ \cline{2-2}
& \multirow{2}{=}{Y, then Z} \\
& \\
\hline
\end{longtable}
\end{document}
答案2
假设您拥有最新版本的软件包multirow
,并考虑到我上面的评论:
\documentclass{article}
\usepackage{multirow,longtable}
\begin{document}
\begin{longtable}{|p{20mm}|p{20mm}|}
\hline
A & B
\\\hline
\multirow{2}{=}{AB\newline BC \newline CD \newline EF}
& \rule[-1.25em]{0em}{3em} X, then Y \\\cline{2-2}
& \rule[-1.25em]{0em}{3em} Y, then Z
\\\hline
\end{longtable}
\end{document}
给出:
答案3
一个简单的解决方案makecell
:它允许在单元格中换行,并定义一个\Gape
命令来改变单元格的高度和深度:
\documentclass{article}
\usepackage{multirow,longtable, makecell}
\begin{document}
\renewcommand\cellalign{lc}
\begin{longtable}{|p{20mm}|m{20mm}|}
\hline
A & B \\
\hline
\multirowcell{2}[0.9ex]{AB\\ BC \\ CD \\ EF}
& \Gape[2ex]{X, then Y} \\
\cline{2-2}
& \Gape[2ex]{Y, then Z} \\
\hline
\end{longtable}
\end{document}