表格中水平线和垂直线的交叉看起来很奇怪。以下是 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
答案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 节点)。