我有如下代码:
\documentclass[10pt]{article}
\usepackage{ltablex}
\begin{document}
\begin{tabularx}{\textwidth}{@{}rr@{}}
A & $0.11^{***}$\\ & (-12.112) \\ B & $0.15^{*}$\\ & (-8.452)\\
C & $0.76^{}$\\ & (12.452)\\
\end{tabularx}
\end{document}
产生如下结果:
但是,我希望“星号(***/*)等的格式有所不同,如下图所示:
请告诉我如何格式化表格。谢谢。
答案1
您可能想要使用列包用于此目的:它提供了一种称为的列类型D
,用于将列中的数字与小数点标记对齐,而无需进一步干预来处理诸如(
、)
和之类的符号*
。
由于列的内容D
在数学模式下会自动排版,因此也无需指定开始和结束$
标记。但是,如果您在 类型 列中有一个单元格(例如,在标题行中),D
其中包含一些文本或其他非数字材料,请务必将其包含在\mulicolumn{1}{c}{<some text>}
宏中。
在下面的 MWE 中,我修改了与您的代码相关的数字,以使它们符合您发布的屏幕截图中的数字结构。
\documentclass{article}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D..{#1}} % for alignment of numbers on decimal marker
\begin{document}
\begin{tabular}{@{} r d{4.6} @{}}
\hline % just to mark width of tabular env.
A & 0.123^{***}\\ & (-12.11)\\
B & 0.456^{*} \\ & (-8.45)\\
C & 0.789^{**} \\ & (12.34)\\
\end{tabular}
\end{document}
答案2
虽然这有点“牵强”(因为它不是原始设计的一部分),但表格代码siunitx
应该能够解决这个问题。例如
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\protected\def\stars#1{$^{#1}$}
\begin{tabular}{@{}r
S[
table-format = -2.3,
input-close-uncertainty = ,
input-open-uncertainty = ,
table-space-text-pre = ( , % )
table-space-text-post = \stars{***},
table-align-text-post = false
]{}}
A & 0.11\stars{***}\\
& (-12.112) \\
B & 0.15\stars{*} \\
& (-8.452) \\
C & 0.76 \\
& (12.452) \\
\end{tabular}
\end{document}
我把添加星星作为一个单独的概念。
如果您希望所有星星都在一列中,请删除table-align-text-post = false
(这会将它们对齐到数字空间后面):
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\protected\def\stars#1{$^{#1}$}
\begin{tabular}{@{}r
S[
table-format = -2.3,
input-close-uncertainty = ,
input-open-uncertainty = ,
table-space-text-pre = ( , % )
table-space-text-post = \stars{***},
]{}}
A & 0.11\stars{***}\\
& (-12.112) \\
B & 0.15\stars{*} \\
& (-8.452) \\
C & 0.76 \\
& (12.452) \\
\end{tabular}
\end{document}