在表格中,如何绘制一条仅穿过部分单元格的水平线?我的意思是绘制像此表格区域Foo
中的线:Bar
+----+-----+
|Foo |1 |2 |
| |1 |2 |
| +--+--+
| |1 |2 |
| |1 |2 |
+----+-----+
|Bar |1 |2 |
| |1 |2 |
| +--+--+
| |1 |2 |
| |1 |2 |
+----+--+--+
答案1
除了像 xport_is_sleeping 建议的那样使用嵌套表格之外,您还可以使用\cline{2-3}
绘制从第 2 列开始到第 3 列结束的部分线条,并使\multirow
单词Foo
和Bar
线条居中(如果您愿意的话):
\documentclass{article}
\usepackage{array,multirow}
\begin{document}
\begin{tabular}{|c|cc|}\hline
\multirow{4}{*}{Foo} & 1 & 2 \\
& 1 & 2 \\\cline{2-3}
& 1 & 2 \\
& 1 & 2 \\\hline
\multirow{4}{*}{Bar} & 1 & 2 \\
& 1 & 2 \\\cline{2-3}
& 1 & 2 \\
& 1 & 2 \\\hline
\end{tabular}
\end{document}
制作表格时,您还应始终使用大批该包提供了各种附加功能和改进(最显著的是垂直和水平线的连接)。
答案2
这是一个使用的解决方案booktabs
并摆脱垂直规则的解决方案,在我看来,这会带来更漂亮的结果。看看booktabs
文档,它为基本的表格设计提供了一些见解。
的好处booktabs
是:表格间距更好,并且\toprule
,\midrule
和\bottomrule
比\midrule
其他两个更窄,看起来很漂亮。
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}\centering
\begin{tabular}{lll}
\toprule
Foo & 1 & 2 \\
& 1 & 2 \\\cmidrule{2-3}% That's the rule you're looking for.
& 1 & 2 \\
& 1 & 2 \\
\midrule
Bar & 1 & 2 \\
& 1 & 2 \\\cmidrule{2-3}% This too. The numbers designate the columns covered.
& 1 & 2 \\
& 1 & 2 \\
\bottomrule
\end{tabular}
\caption{1 and 2 in relation to Foo and Bar.}
\end{table}
\end{document}
答案3
嵌套表可以完美地解决这个问题。
\documentclass{article}
\begin{document}
\begin{tabular}{|c|@{}c@{}|}\hline
Foo
&
\begin{tabular}{cc}
1 & 2 \\
1 & 2 \\\hline
1 & 2 \\
1 & 2 \\
\end{tabular}
\tabularnewline\hline
Bar
&
\begin{tabular}{cc}
1 & 2 \\
1 & 2 \\\hline
1 & 2 \\
1 & 2 \\
\end{tabular}
\tabularnewline\hline
\end{tabular}
\end{document}
答案4
{NiceTabular}
您可以使用轻松地制作表格nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{|c|cc|}
\Hline
\Block{4-1}{Foo} & 1 & 2 \\
& 1 & 2 \\
\Hline
& 1 & 2 \\
& 1 & 2 \\
\Hline
\Block{4-1}{Bar} & 1 & 2 \\
& 1 & 2 \\
\Hline
& 1 & 2 \\
& 1 & 2 \\
\Hline
\end{NiceTabular}
\end{document}