你们中的许多人可能和我一样,觉得有必要让表格看起来更美观。但是,我在格式化方面遇到了麻烦。有没有一种好的方法可以格式化多列的列标题?
首先,如您所见,我有不同精度的数字,我希望它们沿着符号排列$\pm$
。因此,我将其用作列边界,并将两个数字包裹起来:r@{$\pm$}l
。这让表格标题变成了一场噩梦。如您在所附代码中看到的,我使用了多行和多列的各种迭代,但并没有取得很大的成功。
有没有更好的方法来格式化跨两列的表格标题?或者,也许有更好的方法将两个数字与符号连接起来,$\pm$
这样我就可以避免使用两列?
此外,$\pm$
在中央列标题下方还有一个额外的符号。我不明白为什么这个符号出现在这一列,而其他列却没有出现——我该如何去掉它?
我已附上我的尝试,正如你所看到的,结果很糟糕。
结果
执行
\documentclass[a4paper,12pt]{article}
\usepackage{multirow}
\begin{document}
\begin{table}
\centering\renewcommand\arraystretch{1.1}
%\begin{tabular}{l|cr@{ $\pm$ }lc}
\begin{tabular}{l|cr@{ $\pm$ }lr@{ $\pm$ }lr@{ $\pm$ }lc}
\hline
\multirow{2}{*}{\begin{minipage}[t]{0.08\textwidth}{ \bf Region \\type} \end{minipage}}
& \multirow{2}{*}{\begin{minipage}[t]{0.12\textwidth}\begin{center}\textbf{ Observed events}\end{center}\end{minipage}}
& \multicolumn{2}{c}{ \multirow{2}{*}{\begin{minipage}[t]{0.12\textwidth}\begin{center}{ \bf Fitted BG \\Slime} \end{center}\end{minipage}}}
& \multicolumn{2}{c}{ \multirow{2}{*}{\begin{minipage}[t]{0.12\textwidth}\begin{center}{ \bf Fitted BG \\Integral} \end{center}\end{minipage}}}
& \multicolumn{2}{c}{ \multirow{2}{*}{\begin{minipage}[t]{0.12\textwidth}\begin{center}{ \bf Fitted BG \\Angle} \end{center}\end{minipage}}}
& \multirow{2}{*}{\begin{minipage}[t]{0.10\textwidth}\begin{center}{ \bf Pre-fit \\prediction}\end{center}\end{minipage}}\\
&& \multicolumn{2}{c}{}&\\
\hline
{alpha-1} & 453 & $196.4$&$7.3$ & $84$&$33$ & $183$&$27$ & $378$ \\
{alpha-2} & 34 & $16.7$&$2.6$ & $98$&$84$ & $159$& $23$ & $447$ \\
{alpha-3} & 43 & $33.8$&$4.3$ & $67$&$43$ & $67$& $13$ & $10$ \\
\hline
{beta-1} & 19 & $7.4$&$1.6$ & $7.8$&$1.3$ & $22.1$& $3.6$ & $22$ \\
{beta-2} & 2 & $5.61$&$0.60$ & $2.99$&$0.62$ & $7.60$& $0.86$ & $33$ \\
{bets-3} & 3 & $5.42$&$0.62$ & $4.44$&$0.49$ & $8.86$& $0.79$ & $422$ \\
\hline
\end{tabular}
\caption{a caption}
\end{table}
\end{document}
答案1
我建议您使用 (a)S
列类型(由包提供siunitx
)来格式化数字列,以及 (b)tabularx
包来设置表格材料的整体结构,并启用某些标题单元格中长材料的换行。如果标题组织得更彻底一些,它也可能变得更容易解析;下面的代码提供了一个具体的建议。
\documentclass[a4paper,12pt]{article}
\usepackage{tabularx,booktabs,ragged2e,siunitx}
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{C}{>{\Centering\arraybackslash}X}
\newcommand{\mC}[1]{\multicolumn{1}{@{}C@{}}{#1}}
\begin{document}
\begin{table}
\sisetup{separate-uncertainty}
\renewcommand\arraystretch{1.1}
\setlength\tabcolsep{4pt} % default value: 6pt
\begin{tabularx}{\textwidth}{@{}
L
S[table-format=3.0]
S[table-format=3.2(4)]
S[table-format=2.2(3)]
S[table-format=3.2(3)]
S[table-format=3.0]
@{}}
\toprule
Region type
& \mC{Observed events}
& \multicolumn{3}{c}{Fitted BG}
& \mC{Pre-fit prediction} \\
\cmidrule(lr){3-5}
& & {Slime} & {Integral} & {Angle} \\
\midrule
alpha-1 & 453 & 196.4\pm7.3 & 84\pm33 & 183\pm27 & 378 \\
alpha-2 & 34 & 16.7\pm2.6 & 98\pm84 & 159\pm23 & 447 \\
alpha-3 & 43 & 33.8\pm4.3 & 67\pm43 & 67\pm13 & 10 \\
\addlinespace
beta-1 & 19 & 7.4 \pm1.6 & 7.8\pm1.3 & 22.1\pm 3.6 & 22 \\
beta-2 & 2 & 5.61\pm0.60 & 2.99\pm0.62 & 7.60\pm0.86 & 33 \\
beta-3 & 3 & 5.42\pm0.62 & 4.44\pm0.49 & 8.86\pm0.79 & 422 \\
\bottomrule
\end{tabularx}
\caption{A caption}
\end{table}
\end{document}
答案2
似乎没有任何跨行条目,所以我删除了所有\multirow
/minipage
标记。表格基本上可以正常工作,但对于页面来说太宽了,我在这里将标题缩小了,但您可能希望缩短它们或将其分成三行。
\documentclass[a4paper,12pt]{article}
\usepackage{array}
\begin{document}
\begin{table}
\centering
X\dotfill X
\bigskip
\renewcommand\arraystretch{1.1}
\setlength\tabcolsep{5pt}
\newcommand\hd[2]{\multicolumn{#1}{c}{%
\small\bfseries\begin{tabular}{@{}c@{}}#2\end{tabular}}}
\begin{tabular}{@{}>{\small\bfseries}lcr@{${}\pm{}$}lr@{${}\pm{}$}lr@{${}\pm{}$}lc@{}}
\hline
\hd{1}{Region \\type}&
\hd{1}{Observed\\events}&
\hd{2}{Fitted BG \\Slime}&
\hd{2}{Fitted BG \\Integral}&
\hd{2}{Fitted BG \\Angle}&
\hd{1}{Pre-fit \\prediction}\\
\hline
alpha-1 & 453 & $196.4$&$7.3$ & $84$&$33$ & $183$&$27$ & $378$ \\
alpha-2 & 34 & $16.7$&$2.6$ & $98$&$84$ & $159$& $23$ & $447$ \\
alpha-3 & 43 & $33.8$&$4.3$ & $67$&$43$ & $67$& $13$ & $10$ \\
\hline
beta-1 & 19 & $7.4$&$1.6$ & $7.8$&$1.3$ & $22.1$& $3.6$ & $22$ \\
beta-2 & 2 & $5.61$&$0.60$ & $2.99$&$0.62$ & $7.60$& $0.86$ & $33$ \\
bets-3 & 3 & $5.42$&$0.62$ & $4.44$&$0.49$ & $8.86$& $0.79$ & $422$ \\
\hline
\end{tabular}
\caption{a caption}
\end{table}
\end{document}