首先,我尝试在 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}
输出内容如下:
答案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}
答案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}