我需要创建一个代表分层决策的表,如下所示:
+---+---+---+---+
| | | 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 节点)。