![\multirow 命令后缺少行(垂直跳过)](https://linux22.com/image/383403/%5Cmultirow%20%E5%91%BD%E4%BB%A4%E5%90%8E%E7%BC%BA%E5%B0%91%E8%A1%8C%EF%BC%88%E5%9E%82%E7%9B%B4%E8%B7%B3%E8%BF%87%EF%BC%89.png)
我正在创建一个将使用\multirow
(和
\multicolumn
) 命令的表。在编译之前,我可以想象我期望的结果,它是这样的:
因此,我的代码如下所示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}
\centering
\caption{My caption here}\label{tab:4}
\begin{tabular}{p{3cm} p{3cm}p{3cm}p{3cm}}\toprule
\multirow{2}{3cm}{\textbf{Something ForSure ThreeLined }}& \multicolumn{3}{c}{\bfseries Just a phrase}\\
& \textbf{Word1} & \textbf{Word2} & \textbf{Word3}\\
Third row & Upper1 & Upper2 & Upper3\\
& & Lower2 (With a text of description) & Lower3 (With a text of description)\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
(最初的p
列是m
和“第三行”)
我感觉还好,直到我给出编译命令。
然后输出是这样的:
在最初的几分钟里,我正在寻找我的错误,在命令中搜索“3”而不是“2” multirow
......但没有运气......然后寻找缺少的“&”或几个可能的拼写错误等等。
然后我决定创建一个 MWE,并将其更改m
为p
列类型...现在我在这里,我的问题是:
应该\multirow
这样做吗?或者这是否可以(并且必须)像错误一样修复?
我知道我可以通过在该命令后添加一个空行来修复代码\miltirow
。但是应该这样编译吗?
PS:有兴趣的人可以在这里找到工作代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}
\centering
\caption{My caption here}\label{tab:4}
\begin{tabular}{p{3cm} p{3cm}p{3cm}p{3cm}}\toprule
\multirow{2}{3cm}{\textbf{Something ForSure ThreeLined }}& \multicolumn{3}{c}{\bfseries Just a phrase}\\
& \textbf{Word1} & \textbf{Word2} & \textbf{Word3}\\&&&\\
Third raw & Upper1 & Upper2 & Upper3\\
& & Lower2 (With some text of description) & Lower3 (With some text of description)\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案1
单元multirow
格并不像许多人期望的那样工作:它的大小,即高度由其内容决定。相反,它是由其他列中跨越行的文本行的高度总和决定的。
例如:在您的情况下,它的高度由表格中其他列的两行高度决定。因此,第三行文本溢出单元格(在您的情况下位于底部)。
能做什么?事先不能做什么。您首先应该知道,跨行文本有多少行,以及multirow
单元格内容将有多少行。然后,您可以进行微调。例如,在 mwe 中,您可以通过以下更改来增加行高arraystretch
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs, makecell}
\usepackage{multirow}
\begin{document}
\begin{table}
\centering
\renewcommand\arraystretch{1.6}
\caption{My caption here}\label{tab:4}
\begin{tabular}{p{3cm} p{3cm} p{3cm} p{3cm}}
\toprule
\multirow[t]{3}{=}{\textbf{Something ForSure ThreeLined }}
& \multicolumn{3}{c}{\bfseries Just a phrase} \\
& \textbf{Word1} & \textbf{Word2} & \textbf{Word3} \\
Third row & Upper1 & Upper2 & Upper3 \\
& & Lower2 (With a text of description)
& Lower3 (With a text of description) \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
这使:
注意:我选择\multirow[t]{3}{=}{...}
跨行是因为其高度为三行常规文本(第三行“属于”设置强制的单元格中的额外垂直空间\renewcommand\arraystretch{1.6}
)。