Siunitx 表,带括号中的数字(单行)

Siunitx 表,带括号中的数字(单行)

我想要使​​用千位逗号对齐表格列。但是当我尝试将数字放在括号中时,出现了错误。

我读过以前的答案,它们不适合我的情况,要么是因为他们回答了整列都需要括号的情况,要么是因为他们写道input-symbols = {()},将括号算作数字。

梅威瑟:

\documentclass{beamer}
\usepackage[group-separator={,}]{siunitx}

\begin{document}
\begin{frame}
    \begin{table}
        \begin{tabular}{S[table-format=5.0]S[table-format = 1.1]}
            12000             & 1.4 \\
            (14000) & 1.2 
        \end{tabular}
    \end{table}
\end{frame}
\end{document}

在此处输入图片描述

答案1

编辑:经过进一步审查,有一个更好的选择。siunitx提供了用于此用途的table-space-text-pre和选项:table-space-text-post

\documentclass{article}

\usepackage[
        group-separator={,},
    ]{siunitx}

\begin{document}

\begin{tabular}{S[table-format=5.0, table-space-text-pre={(}, table-space-text-post={)}] S[table-format=1.1]}
        12000   &   1.4 \\
        {(} 14000 {)}   &   1.2 
\end{tabular}

\end{document}

MWE 输出


[原始答案]

\llap最简单的方法可能是使用和将括号放在表格边距中\rlap。我们可以将siunitx它们放在组中,以隐藏解析器。

我还提出了一种可能性,即实际上将括号放在列边距中,而不会忽略括号的宽度。

不过我更喜欢第一种方法,主要是因为它更清晰。如果您需要括号的宽度,您可以手动将其添加到边距中。

\documentclass{article}

\usepackage[
        group-separator={,},
    ]{siunitx}

% only needed for second version:
\let\beforecell\relax
\let\aftercell\relax
\def\beforeparencell{%
    (%
    \gdef\aftercell{%
        )%
        \global\let\beforecell\relax
        \global\let\aftercell\relax
    }%
}

\begin{document}

\begin{tabular}{S[table-format=5.0] S[table-format=1.1]}
        12000   &   1.4 \\
        {\llap{(}}14000{\rlap{)}}   &   1.2 
\end{tabular}

\begin{tabular}{@{\hspace{\tabcolsep}\beforecell} S[table-format=5.0] @{\aftercell\hspace{2\tabcolsep}} S[table-format = 1.1]}
    12000   &   1.4 {\global\let\beforecell\beforeparencell}\\
    14000   &   1.2 
\end{tabular}

\begin{tabular}{@{\hspace{\tabcolsep}\hphantom{(}} S[table-format=5.0] @{\hphantom{)}\hspace{2\tabcolsep}} S[table-format=1.1]}
        12000   &   1.4 \\
        {\llap{(}}14000{\rlap{)}}   &   1.2 
\end{tabular}

\end{document}

MWE 输出

相关内容