如何使表格线匹配

如何使表格线匹配

我的表格出了问题,不知道该怎么解决。我只是不知道为什么线条不相交……它看起来像这样:

在此处输入图片描述

我使用了以下代码:

\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}

上述代码的输出

相关内容