\cline 的奇怪角落

\cline 的奇怪角落

表格中水平线和垂直线的交叉看起来很奇怪。以下是 MWE:

\documentclass[11pt,oneside]{article}
%\usepackage{array}

\begin{document}

\begin{table}
\centering
\begin{tabular}{c|c|c|c}
\cline{2-3}
a&b&c&d\\
\cline{2-3}
\end{tabular}  
\end{table}

\end{document}

输出如下:

在此处输入图片描述

可以看到,底部两个角的横线和竖线交汇处有小缝隙。有趣的是,顶部的两个角完好无损。

现在,如果array包被加载(只需取消上面代码的注释),那么我得到:

在此处输入图片描述

右下角的奇怪缝隙消失了,但是仍然持续位于左下角。

我对此做了大量研究(例如,这个帖子),但未找到任何明确的解决方案。如有任何建议,我们将不胜感激。

(我知道它的存在,hhline但我在另一篇文章中看到它可能容易出现类似的交叉问题,所以我更喜欢没有它的解决方案。)

答案1

不知道为什么会发生这种情况,但这里有一个解决办法...减少(编辑以反映\\而不是,帽子提示:大卫卡莱尔)。\arrayrulewidth\arrayrulewidth\fboxrule

\documentclass[11pt,oneside]{article}
%\usepackage{array}

\begin{document}

\begin{table}
\centering
\begin{tabular}{c|c|c|c}
\cline{2-3}
a&b&c&d\\[-\arrayrulewidth]
\cline{2-3}
\end{tabular}  
\end{table}

\end{document}

在此处输入图片描述

如果有人担心这种方法会使单元格的高度缩小,那么只需在缩小的之前在线条的深度上-\arrayrulewidth增加一个额外的深度即可。将左侧的原始框与右侧的修改后框进行比较。\arrayrulewidth\\

\documentclass[11pt,oneside]{article}
%\usepackage{array}
\newcommand\mystrut{\rule[\dimexpr-\dp\strutbox-\arrayrulewidth]{0pt}{%
  \dimexpr\baselineskip+\arrayrulewidth}}
\begin{document}

\begin{table}
\centering
\begin{tabular}{c|c|c|c}
\cline{2-3}
a&b&c&d\\
\cline{2-3}
\end{tabular}%
%
\begin{tabular}{c|c|c|c}
\cline{2-3}
a&b&c&d\mystrut\\[-\arrayrulewidth]
\cline{2-3}
\end{tabular}  
\end{table}

\end{document}

在此处输入图片描述

答案2

您可以通过以下方式进行精确控制\hhline

\documentclass{article}
\usepackage{hhline}

\begin{document}

\begin{tabular}{c|c|c|c}
\hhline{~|-|-|~}
a&b&c&d\\
\hhline{~|-|-|~}
\end{tabular}

\end{document}

在此处输入图片描述

  • ~意味着细胞没有规则,
  • |表示与垂直线的交叉点,
  • -表示针对单元格的规则。

答案3

供参考,{NiceTabular}提供nicematrix了在表格中绘制规则的工具,并获得了完美的结果(规则是在构建数组后使用 PGF/Tikz 绘制的)。

\documentclass[11pt,oneside]{article}
\usepackage{nicematrix}

\begin{document}

\begin{table}
\centering
\begin{NiceTabular}{cccc}
a&\Block[hvlines]{1-2}{}b&c&d\\
\end{NiceTabular}  
\end{table}

\end{document}

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

上述代码的输出

相关内容