表格线(垂直/水平)不一致

表格线(垂直/水平)不一致

首先,我尝试在 Tex.SX 中搜索这个问题,但没找到答案,但确实发现很多人说不要使用垂直线。对我来说,这部分没有讨论的余地,因为我必须放入很多列。我唯一担心的是,我最上面的水平线与左侧的垂直线不太吻合。有一点点间隙让我很烦。

有任何想法吗?

这是我的代码:

\documentclass{article}
\usepackage{multirow}

\begin{document}
\begin{table}[htbp]
\begin{center}
\begin{tabular}{ll|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|@{\hspace{1mm}}l@{\hspace{1mm}}|}
\cline{3-20}
&&\multicolumn{18}{c|}{Heading}\\
&&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18\\
\hline
\hline
\multicolumn{1}{|l|}{\multirow{8}{*}{\begin{tabular}{@{}l@{}}stuff-\\stuff\end{tabular}}}&stuff1&&&&&&&&&&&&&&&&&&\\
\multicolumn{1}{|l|}{}&&&&&&&&&&&&&&&&&&&\\
\cline{2-20}
\multicolumn{1}{|l|}{}&stuff2&&&&&&&&&&A&&&&&B&&&\\
\multicolumn{1}{|l|}{}&&&&&C&&&&&&&&&&&&&&\\
\cline{2-20}
\multicolumn{1}{|l|}{}&stuff3&&&&&&&&&&&&&&&&&&\\
\multicolumn{1}{|l|}{}&&&&&&&&&&&&&&&&&&&\\
\cline{2-20}
\multicolumn{1}{|l|}{}&stuff4&D&&&&&E&&&&&&&F&&G&&&\\
\multicolumn{1}{|l|}{}&&H&&&&&&&&I&&&&&&&&&\\
\hline
\hline
\end{tabular}
\end{center}
\caption{Table for stuff}
\label{table6}
\end{table}
\end{document}

输出内容如下: enter image description here

答案1

罪魁祸首是@{\hspace{1mm}}。不过,我不确定为什么cline会移到一边而不是另一边。无论哪种情况,您都可以\setlength{\tabcolsep}{1mm}在表格内部(表格环境之外)使用 来设置列分隔符两侧的最小水平空间,而不必单独定义它们:

\documentclass{article}
\usepackage{multirow}

\begin{document}
\begin{table}[htbp]
\setlength{\tabcolsep}{1mm}
\begin{center}
\begin{tabular}{ll|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|}
\cline{3-20}
&&\multicolumn{18}{c|}{Heading}\\
&&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18\\
\hline
\hline
\multicolumn{1}{|l|}{\multirow{8}{*}{\begin{tabular}{@{}l@{}}stuff-\\stuff\end{tabular}}}&stuff1&&&&&&&&&&&&&&&&&&\\
\multicolumn{1}{|l|}{}&&&&&&&&&&&&&&&&&&&\\
\cline{2-20}
\multicolumn{1}{|l|}{}&stuff2&&&&&&&&&&A&&&&&B&&&\\
\multicolumn{1}{|l|}{}&&&&&C&&&&&&&&&&&&&&\\
\cline{2-20}
\multicolumn{1}{|l|}{}&stuff3&&&&&&&&&&&&&&&&&&\\
\multicolumn{1}{|l|}{}&&&&&&&&&&&&&&&&&&&\\
\cline{2-20}
\multicolumn{1}{|l|}{}&stuff4&D&&&&&E&&&&&&&F&&G&&&\\
\multicolumn{1}{|l|}{}&&H&&&&&&&&I&&&&&&&&&\\
\hline
\hline
\end{tabular}
\end{center}
\caption{Table for stuff}
\label{table6}
\end{table}
\end{document}

Using 1mm space on both sides of the vertical lines

答案2

{NiceTabular}这里是一种使用构建表格的方法nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\begin{table}[htbp]
\setlength{\tabcolsep}{1mm}
\begin{center}
\begin{NiceTabular}{*{20}{l}}[corners=NW,vlines]
\Hline
&&\Block{1-18}{Heading}\\
&&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18\\
\Hline
\Hline
\Block{8-1}{stuff-\\stuff}%
&stuff1\\
\\
\Hline
&stuff2&&&&&&&&&&A&&&&&B\\
&&&&&C\\
\Hline
&stuff3\\
\\
\Hline
&stuff4&D&&&&&E&&&&&&&F&&G\\
&&H&&&&&&&&I\\
\Hline
\Hline
\end{NiceTabular}
\end{center}
\caption{Table for stuff}
\label{table6}
\end{table}
\end{document}

Output of the above code

相关内容