使用 siunitx 格式化表格:特殊格式的问题

使用 siunitx 格式化表格:特殊格式的问题

我需要创建一个表格,以特定格式对齐数字,如果 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,则只需添加缺少的包并更改tablesidewaystable

\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}

相关内容