我正在尝试使用以下代码创建一个具有不确定性的表:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{table}[!ht]
\begin{center}
\label{tab:table1}
\begin{tabular}{l|r|r}
\textbf{First Column Name} & \textbf{Second Column Name} & \textbf{Third Column Name} \\
& Sub Name 2 & Sub Name 3 \\
%
\hline
Row 1 & 1.00\, $\pm$\, 0.02 & - \\
Row 2 & 1.55\, $\pm$\, 0.05 & 50\% \,$\pm$\, 5\% \\
\hspace{2mm}Sub Row 3 & 1.20\, $\pm$\, 0.15 & -12.2\% \,$\pm$\; 1.2\% \\
Row 4 & 10.0\, $\pm$\, 1.1 & - \\
Row 5 & - & -85\% \,$\pm$\, 2\% \\
\hspace{2mm}Sub Row 6 & 2.6 \, $\pm$\, 0.9 & -20.0\% \,$\pm$\, 0.1\% \\
\end{tabular}
\end{center}
\caption{My caption text.}
\end{table}
\end{document}
生成以下表格:
我在格式方面遇到了几个问题:
- 如何控制列内数字的对齐?我希望 ± 符号在列内全部对齐。
- 有没有办法使列标题(“第二列名称”和“子名称 2”)居中,同时使该列中的数字保持右对齐?
- 我应该使用什么代码让“第二列名称”换行(但“子名称 2”仍保留在单独的行中)。目前,该列比需要的要宽得多。
我曾尝试过以下几个答案(例如这里) 推荐了这个siunitx
包,但在每一列中,我并不总是在每一行中都有相同的小数位数,并且很难让它工作。这个包真的是最好的方法吗,或者可以对这个例子进行一些简单的调整以使其工作?谢谢。
答案1
借助该siunitx
包,您可以根据小数点分隔符以及 对齐数字\pm
。只要用一对 包围它们,列标题和其他文本就会自动相对于数字居中。{}
对于列标题,我使用了包\thead
中的命令makecell
。\thead
您可以在其中手动添加换行符。
为了避免重复%
,我将其放在相应的列标题内。
此外,我删除了该9pt
选项,因为这不是该类的有效选项article
。(可用选项为:10pt、11pt、12pt)。我还用命令替换了center
环境\centering
,因为前者添加了可能不需要的空白。最后,我更正了命令的位置\label
。
\documentclass{article} % 9pt is not a valid class option of the article class
\usepackage{amsmath}
\usepackage{siunitx}
\sisetup{input-uncertainty-signs=\pm,
separate-uncertainty=true}
\usepackage{makecell}
\renewcommand{\theadfont}{\normalsize\bfseries}
\begin{document}
\begin{table}[!ht]
\centering % replaced the center environment with centering to avoid additional vertical white space
\begin{tabular}{l|S[table-format=2.2(3)]|S[table-format=-2.2(4)]}
\thead{First Column Name} & {\thead{Second Column\\ Name}} & {\thead{Third Column Name}} \\
& {Sub Name 2} & {Sub Name 3 in \%} \\
%
\hline
Row 1 & 1.00 \pm 0.02 & {-} \\
Row 2 & 1.55 \pm 0.05 & 50 \pm 5 \\
\hspace{2mm}Sub Row 3 & 1.20 \pm 0.15 & -12.2 \pm 1.2 \\
Row 4 & 10.0 \pm 1.1 & {-} \\
Row 5 & {-} & -85 \pm 2 \\
\hspace{2mm}Sub Row 6 & 2.6 \pm 0.9 & -20.0 \pm 0.1 \\
\end{tabular}
\caption{My caption text.}
\label{tab:table1} % label must be placed after caption!
\end{table}
\end{document}