如何让多列中的两列居中?
平均能量损失
\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}
答案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}