我需要创建一个表格,以特定格式对齐数字,如果 x 为无或数字,则它看起来像这样:(xxx, xxx)(第一个 xxx 也可以是负数)。我想要做的是按逗号对齐列中的条目,并保留逗号后的空格,但我不知道该怎么做。
我也看了siunitx 手册但我不知道该怎么做。
如果有人能帮助我,我会非常幸运。
这是一个最小的例子:
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{siunitx, booktabs}
\usepackage{rotating}
\begin{document}
\begin{sidewaystable}
\sisetup{
input-symbols = {()},
table-number-alignment = center,
table-figures-integer = 2,
parse-numbers=false,
locale = DE
}
\begin{tabular}{@{}cS[separate-uncertainty, table-figures-uncertainty = 1]ll@{}}
\multicolumn{1}{l}{} & Mean & & \\
\multicolumn{1}{l}{Lead Time} & \multicolumn{1}{c}{1} & \multicolumn{1}{c}{2} & \multicolumn{1}{c}{3} \\ \midrule
0 & (-10, 11) & (-25, 116) & (21, 240) \\
1 & (11, 252) & (22, 139) & (24, 244) \\
2 & (63, 390) & (48, 21) & (47, 27) \\
3 & (66, 790) & (68, 24) & (150, 31) \\ \bottomrule
\end{tabular}
\end{sidewaystable}
\end{document}
答案1
这里有一个解决方案,(a)使用array
环境而不是tabular
环境 - 这将生成印刷正确的-
减号 - 并且(b)使您免于键入所有那些开始和结束括号的繁琐工作。
\documentclass[12pt,a4paper]{article}
\usepackage{booktabs, array, amsmath, rotating}
\begin{document}
\begin{sidewaystable}
\centering
$\begin{array}{@{} c *{3}{>{(}r @{,\,} r<{)}} @{}}
\toprule
\text{Lead Time} & \multicolumn{6}{c}{\text{Mean}} \\
\cmidrule(l){2-7}
& \multicolumn{2}{c}{1} & \multicolumn{2}{c}{2} & \multicolumn{2}{c@{}}{3} \\
\midrule
0 & -10 & 11 & -25 & 116 & 21 & 240 \\
1 & 11 & 252 & 22 & 139 & 24 & 244 \\
2 & 63 & 390 & 48 & 21 & 47 & 27 \\
3 & 66 & 790 & 68 & 24 & 150 & 31 \\
\bottomrule
\end{array}$
\end{sidewaystable}
\end{document}
答案2
你是指这样的吗?
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{siunitx, booktabs}
\newcommand{\lparen}{(}
\newcommand{\rparen}{)}
\begin{document}
\sisetup{
table-align-text-pre=false,
table-align-text-post=false,
}
\begin{tabular}{
@{}
S[table-format=1.0]
>{\lparen}S[table-format=-2.0,table-space-text-pre=(]
@{,\,}
S[table-format=3.0,table-space-text-post=)]<{\rparen}
>{\lparen}S[table-format=-2.0,table-space-text-pre=(]
@{,\,}
S[table-format=3.0,table-space-text-post=)]<{\rparen}
>{\lparen}S[table-format=3.0,table-space-text-pre=(]
@{,\,}
S[table-format=3.0,table-space-text-post=\rparen]<{\rparen}
@{}l@{}
}
\toprule
&\multicolumn{6}{c}{Mean} \\
{Lead Time} & \multicolumn{2}{c}{1} & \multicolumn{2}{c}{2} & \multicolumn{2}{c}{3} \\
\midrule
0 & -10 & 11 & -25 & 116 & 21 & 240 &\\
1 & 11 & 252 & 22 & 139 & 24 & 244 &\\
2 & 63 & 390 & 48 & 21 & 47 & 27 &\\
3 & 66 & 790 & 68 & 24 & 150 & 31 &\\
\bottomrule
\end{tabular}
\end{document}
答案3
如果我理解正确的话,你会喜欢得到这样的东西:
获取上述表格的最简单方法是不使用siunitx
。我将表格放在标准table
环境中。如果您喜欢使用sidewaystable
,则只需添加缺少的包并更改table
为sidewaystable
。
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{mathtools}
\usepackage{booktabs}
\newcommand\ml[1]{\multicolumn{1}{c}{\text{#1}}}
\newcommand\mc[1]{\multicolumn{2}{c}{\text{#1}}}
\begin{document}
\begin{table}
\[
\begin{array}{@{}c *{3}{r@{\ } l}}
\ml{} & \mc{Mean} & & & & \\
\ml{Lead Time} & \mc{1} & \mc{2} & \mc{3} \\
\midrule
0 & (-10, & 11) & (-25, & 116) & (21, & 240) \\
1 & (11, & 252) & (22, & 139) & (24, & 244) \\
2 & (63, & 390) & (48, & 21) & (47, & 27) \\
3 & (66, & 790) & (68, & 24) & (150, & 31) \\
\bottomrule
\end{array}
\]
\end{table}
\end{document}