![如何使表格线匹配](https://linux22.com/image/345141/%E5%A6%82%E4%BD%95%E4%BD%BF%E8%A1%A8%E6%A0%BC%E7%BA%BF%E5%8C%B9%E9%85%8D.png)
我的表格出了问题,不知道该怎么解决。我只是不知道为什么线条不相交……它看起来像这样:
我使用了以下代码:
\documentclass{article}
\usepackage{tabular}
\begin{document}
\begin{table}[H]
\centering
\begin{adjustbox}{width=0.6\textwidth}
\begin{tabular}{|l |l ||c |c|}
\toprule
\multicolumn{2}{|l||}{} & a & b\\
\midrule
\midrule
\multicolumn{2}{|l||}{c} & d & e \\
\hline
\multicolumn{2}{|l||}{f}
& g & \\
\hline
\multicolumn{2}{|l||}{h}
& i & j \\
\hline
& k & l & m \\
\cline{2-4}
n & o & p & q\\
\cline{2-4}
& r & s & t \\
\hline
& u & v & w \\
\cline{2-4}
x & y & z & aa \\
\cline{2-4}
& ab & ac & ad \\
\hline
& ae & af & ag \\
\cline{2-4}
ah & ai & aj & ak \\
\cline{2-4}
& al & am & an \\
\bottomrule
\end{tabular}
\end{adjustbox}
\end{table}
\end{document}
我确信这不会那么难,尽管对我来说确实如此。所以感谢任何有帮助的评论!:)
答案1
如果您想在表格环境中使用垂直规则,请不要使用包的规则绘制宏booktabs
。如果您必须使用垂直规则,因此不能使用\toprule
、\midrule
等,但仍希望获得 booktabs 宏提供的水平规则的良好间距外观,我建议您求助于(印刷)支柱。这样,垂直线仍然是连续的。
下面的例子实现了这个想法,使用了我从 Claudio Beccari 撰写的一篇文章中收集的代码,该文章发表于TeX 和 TUG 新闻1993 年。(是的,我确实使用 TeX 和 LaTeX 这么久了……)使用\Tstrut
为上方的行创建额外空间,\Bstrut
为下方的行创建额外空间,并使用\TBstrut
(“顶部和底部支柱”)为宏插入的上方和下方的行创建更多空间。在代码中,请注意\TBstrut
第一行中的、\Tstrut
第二行中的以及\Bstrut
表格底部行中的。
\documentclass{article}
\usepackage{array}
%% code from article by Claudio Beccari in TeX&TUG News, 1993
\newcommand\Tstrut{\rule{0pt}{2.9ex}} % "top" strut
\newcommand\Bstrut{\rule[-1.2ex]{0pt}{0pt}}% "bottom" strut
\newcommand\TBstrut{\Tstrut\Bstrut} % "top and bottom" strut
\begin{document}
\begin{table}
\centering
\begin{tabular}{|l |l ||c |c|}
\hline
\multicolumn{2}{|l||}{} & a & b\TBstrut\\
\hline
\multicolumn{2}{|l||}{c} & d & e\Tstrut \\
\hline
\multicolumn{2}{|l||}{f}
& g & \\
\hline
\multicolumn{2}{|l||}{h}
& i & j \\
\hline
& k & l & m \\
\cline{2-4}
n & o & p & q\\
\cline{2-4}
& r & s & t \\
\hline
& u & v & w \\
\cline{2-4}
x & y & z & aa \\
\cline{2-4}
& ab & ac & ad \\
\hline
& ae & af & ag \\
\cline{2-4}
ah & ai & aj & ak \\
\cline{2-4}
& al & am & an\Bstrut \\
\hline
\end{tabular}
\end{table}
\end{document}
答案2
我假设您喜欢在单元格内容上方/下方留出更多垂直空间,也喜欢使用垂直规则。Mico 的回答中清楚地解释了这种组合,使用 ˙booktabs` 规则无法实现。除了 Mico 提出的解决方案外,还存在一些包,它们可以在不使用 struts 的情况下添加更多垂直空间:
mdwtab
,一个旧的、未维护的包,与colortbl
包不兼容(行、列、单元格不能着色),它有自己的语法来确定单元格内容上方/下方的额外空间tabu
,不幸的是也没有维护包,它提供\tabulinesep
用于在单元格内容上方和/或下方添加垂直空间的宏(许多人不建议使用它,因为它有很多错误,但我的体验很糟糕)makecell
,提供宏\setcellgapes{<gap size>}
和。较新的宏与包\makegapedcells
不兼容 。colortbl
除了上述提到的,还有其他我不太熟悉的包。它们的使用示例:
\begin{document}
\begin{table}
\centering
\begin{tabular}{|l | l || c | c |}
\hlx{hv}
\mcc{\texttt{mdwtab}}
& a & b \\ \hlx{vhv}
\mcc{c} & d & e \\ \hlx{vhv}
\mcc{f} & g & \\ \hlx{vhv}
\mcc{h} & i & j \\ \hlx{vhv}
& k & l & m \\ \hlx{vc{2-4}v}
n & o & p & q \\ \hlx{vc{2-4}v}
& r & s & t \\ \hlx{vhv}
%
& u & v & w \\ \hlx{vc{2-4}v}
x & y & z & aa \\ \hlx{vc{2-4}v}
& ab & ac & ad \\ \hlx{vhv}
%
& ae & af & ag \\ \hlx{vc{2-4}v}
ah & ai & aj & ak \\ \hlx{vc{2-4}v}
& al & am & an \\ \hlx{vh}
\end{tabular}
\end{table}
\end{document}
\documentclass{article}
\usepackage{tabu}
\newcommand\mcc[1]{\multicolumn{2}{|l||}{#1}}
\begin{document}
\begin{table}
\centering
\tabulinesep =_5pt^5pt
\begin{tabu} {|l | l || c | c |}
\hline
\mcc{}%\texttt{tabu}}
& a & b \\ \hline
\mcc{c} & d & e \\ \hline
\mcc{f} & g & \\ \hline
\mcc{h} & i & j \\ \hline
& k & l & m \\ \cline{2-4}
n & o & p & q \\ \cline{2-4}
& r & s & t \\ \hline
%
& u & v & w \\ \cline{2-4}
x & y & z & aa \\ \cline{2-4}
& ab & ac & ad \\ \hline
%
& ae & af & ag \\ \cline{2-4}
ah & ai & aj & ak \\ \cline{2-4}
& al & am & an \\ \hline
\end{tabu}
\end{table}
\end{document}
\documentclass{article}
\usepackage{makecell}
\newcommand\mcc[1]{\multicolumn{2}{|l||}{#1}}
\begin{document}
\begin{table}
\centering
\setcellgapes{5pt}
\makegapedcells
\begin{tabular}{|l | l || c | c |}
\hline
\mcc{\texttt{makecell}}
& a & b \\ \hline
\mcc{c} & d & e \\ \hline
\mcc{f} & g & \\ \hline
\mcc{h} & i & j \\ \hline
& k & l & m \\ \cline{2-4}
n & o & p & q \\ \cline{2-4}
& r & s & t \\ \hline
%
& u & v & w \\ \cline{2-4}
x & y & z & aa \\ \cline{2-4}
& ab & ac & ad \\ \hline
%
& ae & af & ag \\ \cline{2-4}
ah & ai & aj & ak \\ \cline{2-4}
& al & am & an \\ \hline
\end{tabular}
\end{table}
\end{document}
答案3
如果您确实想要绘制与 规则兼容的垂直规则\booktabs
(尽管这完全不符合 的精神booktabs
),则应该使用nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{booktabs}
\begin{document}
\begin{NiceTabular}{|l|c||c|c|}
\toprule
\Block{1-2}{} & & a & b \\ \Hline\Hline
\Block[l]{1-2}{c} & & d & d \\ \Hline
\Block[l]{1-2}{f} & & g & d \\ \Hline
\Block[l]{1-2}{h} & & i & j \\ \Hline
\Block{3-1}{n} & k & l & m \\ \Hline
& o & p & q \\ \Hline
& r & s & t \\ \Hline
\Block{3-1}{x} & u & v & w \\ \Hline
& y & z & aa \\ \Hline
& ab & ac & ad \\ \Hline
\Block{3-1}{ah} & ae & af & ag \\ \Hline
& ai & aj & ak \\ \Hline
& al & am & an \\
\bottomrule
\end{NiceTabular}
\end{document}