多行高度不正确

多行高度不正确

我需要创建一个代表分层决策的表,如下所示:

+---+---+---+---+
|   |   | C | x |
|   | B +---+---+
|   |   | D | x |
| A +---+---+---+
|   |   | F | x |
|   | E +---+---+
|   |   | G | x |
+---+---+---+---+
|   | I | J | x |
|   +---+---+---+
| H |   | L | x |
|   | K +---+---+
|   |   | M | x |
+---+---+---+---+

以下是我的编码方式:

\documentclass[12pt,a4paper]{report}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|l|l|l|l|}
\hline
\multirow{4}{*}{A} & \multirow{2}{*}{B} & C & x \\
\cline{3-4}
& & D & x \\
\cline{2-4}
& \multirow{2}{*}{E} & F & x \\
\cline{3-4}
& & G & x \\
\hline \\
\multirow{3}{*}{H} & I & J & x \\
\cline{2-4}
& \multirow{2}{*}{K} & L & x \\
\cline{3-4}
& & M & x \\
\hline
\end{tabular}
\end{document}

然而,LaTeX 一直给我这样的信息:

表格中有些垂直线不完整

水平线和 I、J 行之间似乎有一个奇怪的部分“额外行”,但没有完整的垂直线。有什么想法可以让它正确呈现吗?

我在 Windows 7 上,LaTeX 版本:

MiKTeX-pdfTeX 2.9.4487 (1.40.12)(MiKTeX 2.9 64 位)

运行pdflatex和会产生相同的错误输出latex

答案1

\\后面不需要。\hline因此,如果您删除替换此内容,神秘的额外行将会消失

\hline \\
\multirow{3}{*}{H} & I & J & x \\

\hline
\multirow{3}{*}{H} & I & J & x \\

您看到“奇怪的部分额外行”的原因(有点)有趣:在环境中tabular,您只需放置\\并开始下一行即可提前完成任何行。LaTeX 将完成当前单元格,然后从下一行的第一列重新开始。任何“装饰”,如垂直规则,只会在当前单元格完成后添加到当前单元格。在您的情况下,这\\足以在必须立即完成的新行中开始一个新单元格。

答案2

您可以使用 轻松地制作该{NiceTabular}nicematrix

\documentclass{report}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{llll}[hvlines]
\Block{4-1}{A} & \Block{2-1}{B} & C & x \\
               &                & D & x \\
               & \Block{2-1}{E} & F & x \\
               &                & G & x \\
\Block{3-1}{H} & I              & J & x \\
               & \Block{2-1}{K} & L & x \\
               &                & M & x \\
\end{NiceTabular}
\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容