如果条目是数字,则将表格条目对齐到点,否则居中

如果条目是数字,则将表格条目对齐到点,否则居中

我有下表,其中的条目是数字或者一个破折号,后面可能跟着一个或多个星号:

\documentclass[notitlepage]{article}

\usepackage{tabularx}
\usepackage{booktabs}

\begin{document}

\begin{table}
\centering

\begin{tabular}{lrrrrrr}
\toprule
& \multicolumn{2}{c}{(1)} & \multicolumn{2}{c}{(2)} & \multicolumn{1}{c}{(3)} & \multicolumn{1}{c}{(4)}\\
& Description &  & Description &  & Description & Description \\
\midrule
VarA &    1.123$^{**}$  & (1.123)  & 9.765$^{***}$ & (-22.123) & -3.321 & -4.123 \\
VarB &  -32.123$^{*}$   & (12.321) & 4.654         & (3.321)   &  6.321 &  4.123 \\
VarC &   &  & --$^{**}$ & (12.898) & -- & -- \\
\end{tabular}
\end{table}

\end{document}

在此处输入图片描述

我想对齐条目,使所有数字都与点对齐。由于虚线后面没有任何点可以对齐,因此它们应该与列居中对齐。可以这样做吗?

答案1

使用改编版本这个答案您可以借助该siunitx包实现以下对齐:

在此处输入图片描述

\documentclass[notitlepage]{article}

\usepackage{tabularx}
\usepackage{booktabs}

\usepackage{siunitx}
\sisetup{
    detect-all,
    table-align-text-pre     = false,
    table-align-text-post    = false,
    input-signs              = + -,
    input-symbols            = {*} {**} {***},
    input-open-uncertainty   = ,
    input-close-uncertainty  = ,
}
\begin{document}

\begin{table}
\centering
\begin{tabular}{l
                S[table-format=-2.3,table-space-text-post = {$^{**}$}]
                S[table-format=2.3,table-space-text-pre={*}, table-space-text-post={-*}]
                S[table-format=-1.3,table-space-text-post = {$^{***}$}]
                S[table-format=-2.3,,table-space-text-pre={*}, table-space-text-post={-*}]
                S[table-format=-1.3]
                S[table-format=-1.3]
                }
\toprule
& \multicolumn{2}{c}{(1)} & \multicolumn{2}{c}{(2)} & \multicolumn{1}{c}{(3)} & \multicolumn{1}{c}{(4)}\\
& {Description} &  & {Description} &  & {Description} & {Description} \\
\midrule
VarA &    1.123$^{**}$  & (1.123)  & 9.765$^{***}$ & (-22.123) & -3.321 & -4.123 \\
VarB &  -32.123$^{*}$   & (12.321) & 4.654         & (3.321)   &  6.321 &  4.123 \\
VarC &   &  & {--$^{**}$} & (12.898) & {--} & {--} \\
\end{tabular}
\end{table}

\end{document}

请注意,上面显示的表格比的文本宽度更宽article


关于要求的星号对齐方式:这里建议使用两列(一列用于数字右对齐,一列用于星号左对齐)和makecell包(将--与数字中心对齐)。

在此处输入图片描述

\documentclass[notitlepage]{article}

\usepackage{tabularx}
\usepackage{booktabs}

\usepackage{makecell}
\usepackage{siunitx}
\sisetup{
    detect-all,
    table-align-text-pre     = false,
    table-align-text-post    = false,
    input-signs              = + -,
    input-symbols            = {*} {**} {***},
    input-open-uncertainty   = ,
    input-close-uncertainty  = ,
}
\begin{document}

\begin{table}
\centering
\begin{tabular}{l
                S[table-format=-2.3,table-space-text-post = {$^{**}$}]
                S[table-format=2.3,table-space-text-pre={*}, table-space-text-post={-*}]
                S[table-format=-1.3,table-alignment=right]@{}
                @{}l
                S[table-format=-2.3,,table-space-text-pre={*}, table-space-text-post={-*}]
                S[table-format=-1.3]
                S[table-format=-1.3]
                }
\toprule
& \multicolumn{2}{c}{(1)} & \multicolumn{3}{c}{(2)} & \multicolumn{1}{c}{(3)} & \multicolumn{1}{c}{(4)}\\
& {Description} & &  \multicolumn{2}{c}{Description}  & & {Description}  & {Description} \\
\midrule
VarA &    1.123$^{**}$  & (1.123)  & 9.765 & $^{***}$ & (-22.123) & -3.321 & -4.123 \\
VarB &  -32.123$^{*}$   & (12.321) & 4.654 &          & (3.321)   &  6.321 &  4.123 \\
VarC &                  &          & {\makecell[cc]{--}}  & $^{**}$  & (12.898)  & {--}   & {--} \\
\end{tabular}
\end{table}

\end{document}

相关内容