在 booktabs 表中设置垂直线的问题

在 booktabs 表中设置垂直线的问题

正如指出的那样这里使用很重要

\多列{3}{|l|}{}

在下面的一行中multicolumn

尽管如此,我仍然在努力解决同样的问题(不连接的垂直线),并且找不到解决方案:

在此处输入图片描述

这是我目前取得的进展。任何想法都很好。

\usepackage{booktabs}
\usepackage{multirow}
\usepackage{makecell}

{\renewcommand{\arraystretch}{2}%
\begin{table}
\centering
\begin{tabular}{@{}ll|cc@{}} \toprule
\multicolumn{2}{c|}{\multirow{2}{*}{}} & \multicolumn{2}{c}{Text} \\
\cmidrule(r){3-4}
\multicolumn{2}{c|}{} & A & B\\ \midrule
\multicolumn{1}{c|}{\multirow{2}{*}{\thead{Text1 and \\ Text2}}} & C & \thead{1\\and 1}& 2 \\
\multicolumn{1}{c|}{} & D & 3 & \thead{4\\ and 4} \\
\bottomrule
\end{tabular}
\end{table}} \quad

答案1

Booktabs在其规则上方和下方设置垂直填充。您可以将此填充设置为 0,并享受其他功能。无论如何,设置\arraystretch2,您真的需要它吗?如有必要,您可以用\setcellgapes中的命令替换它makecell。我借此机会使用以下命令稍微简化了表格的代码\multirowthead

\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{makecell}

\begin{document}

\begin{table}
\renewcommand{\arraystretch}{2}%
\centering
\aboverulesep = 0pt
\belowrulesep = 0pt
\begin{tabular}{@{}ll|cc@{}} \toprule
\multicolumn{2}{c|}{\multirow{2}{*}{}} & \multicolumn{2}{c}{Text} \\
\cmidrule(r){3-4}
\multicolumn{2}{c|}{} & A & B\\ \midrule
\multicolumn{1}{c|}{\multirowthead{2}[-1ex]{Text1 and \\ Text2}} & C & \thead{1\\and 1}& 2 \\
\multicolumn{1}{c|}{} & D & 3 & \thead{4\\ and 4} \\
\bottomrule
\end{tabular}
\end{table} \quad

\end{document} 

在此处输入图片描述

答案2

正如文档中提到的那样booktabs(以及上面的评论中提到的),我尝试不使用垂直线,并且不得不承认它现在看起来更好:

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{makecell}

\begin{document}    

{\renewcommand{\arraystretch}{2}%
\begin{table}
\centering
\begin{tabular}{@{}ccc@{}}
\toprule
& \multicolumn{2}{c}{Text} \\
\cmidrule(r){2-3}
\thead{Text1 and \\ Text2} & A & B\\
\midrule
C & \thead{1\\and 1}& 2 \\
D & 3 & \thead{4\\ and 4} \\
\bottomrule
\end{tabular}
\end{table}} \quad

\end{document} 

相关内容