我想要使用千位逗号对齐表格列。但是当我尝试将数字放在括号中时,出现了错误。
我读过以前的答案,它们不适合我的情况,要么是因为他们回答了整列都需要括号的情况,要么是因为他们写道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}
[原始答案]
\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}