多列下的不同列宽会妨碍适当居中

多列下的不同列宽会妨碍适当居中

如何让多列中的两列居中?

在此处输入图片描述

平均能量损失

\documentclass{article}

\usepackage{booktabs}
\usepackage{multirow}
\usepackage{siunitx}
\sisetup{input-ignore={,},
         input-decimal-markers={.},
         group-separator={,},
         group-minimum-digits=4
}

\begin{document}

{\renewcommand{\arraystretch}{1.2}% for the vertical padding
\begin{tabular}{cc
|
S[table-format=1.0]
S[table-format=3.0]
|
S[table-format=4.0]
|
}
\cline{3-5}
& &   \multicolumn{2}{c|}{has breast cancer} & \\
& &    {yes} & {no} & {total} \\
\hline
\multicolumn{1}{|c}{\multirow{2}{*}{screened positive}} &
\multicolumn{1}{c|}{yes} & 7 & 70 & 77     \\
\multicolumn{1}{|c}{}        &                
\multicolumn{1}{c|}{no}& 1 & 922 & 923   \\
\hline
\multicolumn{1}{|c}{}
& total & 8 & 992 & 1,000 \\
\hline
\end{tabular}
}

\end{document}


\documentclass{article}

\usepackage{booktabs}
\usepackage{multirow}
\usepackage{siunitx}
\sisetup{input-ignore={,},
         input-decimal-markers={.},
         group-separator={,},
         group-minimum-digits=4
}

编辑(回应@Bernard 的评论):

我添加了垂直线,并编辑了其中一列的规格和数据,使列的宽度相同。结果改变了我问题的重点,但不是目的。我需要问为什么列的宽度如此不同。缺乏居中似乎是一个副作用。

在此处输入图片描述

修改后的 MWE:

\begin{document}

{\renewcommand{\arraystretch}{1.2}% for the vertical padding
\begin{tabular}{cc
|
%S[table-format=1.0]
S[table-format=3.0]
|
S[table-format=3.0]
| % extra vertical line
S[table-format=4.0]
|
}
\cline{3-5}
& &   \multicolumn{2}{c|}{has breast cancer} & \\
& &    {yes} & {no} & {total} \\
\hline
\multicolumn{1}{|c}{\multirow{2}{*}{screened positive}} &
\multicolumn{1}{c|}{yes} & 7 & 70 & 77     \\
\multicolumn{1}{|c}{}        &                
\multicolumn{1}{c|}{no}& 1 & 922 & 923   \\
\hline
\multicolumn{1}{|c}{}
%& total & 8 & 992 & 1,000 \\
& total & 800 & 992 & 1,000 \\
\hline
\end{tabular}
}

\end{document}

答案1

通过使用\makebox一个可以强制条目{yes}{no}每个条目填充一半的可用空间。请注意,出于某种原因{},需要外部\makebox

\documentclass{standalone}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{siunitx}
\sisetup{input-ignore={,},
         input-decimal-markers={.},
         group-separator={,},
         group-minimum-digits=4
}

\newlength{\tempdima}

\begin{document}

\settowidth{\tempdima}{has breast cancer}% compute width needed
\addtolength{\tempdima}{-2\tabcolsep}% minus default column sep

{\renewcommand{\arraystretch}{1.2}% for the vertical padding
\begin{tabular}{cc
|
S[table-format=1.0]
S[table-format=3.0]
|
S[table-format=4.0]
|
}
\cline{3-5}
& &   \multicolumn{2}{c|}{has breast cancer} & \\
& &   {\makebox[0.5\tempdima]{yes}} & {\makebox[0.5\tempdima]{no}} & {total} \\
\hline
\multicolumn{1}{|c}{\multirow{2}{*}{screened positive}} &
\multicolumn{1}{c|}{yes} & 7 & 70 & 77     \\
\multicolumn{1}{|c}{}        &                
\multicolumn{1}{c|}{no}& 1 & 922 & 923   \\
\hline
\multicolumn{1}{|c}{}
& total & 8 & 992 & 1,000 \\
\hline
\end{tabular}
}

\end{document}

表格中的 makebox

答案2

这个怎么样?

\documentclass{article}

\usepackage{booktabs}
\usepackage{multirow}
\usepackage{siunitx}
\sisetup{input-ignore={,},
         input-decimal-markers={.},
         group-separator={,},
         group-minimum-digits=4
}

\begin{document}

{\renewcommand{\arraystretch}{1.2}% for the vertical padding
\begin{tabular}{cc|c|c|c|}

\cline{3-5}
& &   \multicolumn{2}{c|}{has breast cancer} &  \\
& &  {yes} & {no} & {total} \\
\hline
\multicolumn{1}{|c}{\multirow{2}{*}{screened positive}} &
\multicolumn{1}{c|}{yes} & 7 & 70 & 77     \\
\multicolumn{1}{|c}{}        &                
\multicolumn{1}{c|}{no}& 1 & 922 & 923   \\
\hline
\multicolumn{1}{|c}{}
& total & 8 & 992 & 1,000 \\
\hline
\end{tabular}
}

\end{document}

在此处输入图片描述

相关内容