表格条目的对齐:负数的情况

表格条目的对齐:负数的情况

假设我们有一张包含正数和负数条目的表。

我的问题很简单:我们如何才能使数字对齐从实际数字开始而不是负数(-)符号?

我先介绍一个简单的例子:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage{ucs}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{threeparttablex, booktabs}
\usepackage{longtable}

\begin{document}

\begin{center}
\begin{table}[htbp!]
{\footnotesize
\begin{tabular}{@{} llll @{} } \toprule
& a & b & c \\ \midrule
\textit{something} &&& \\ \midrule
something & -0.888 & 0.888 & 0.888 \\
something & 0.888** & 0.888* & 0.888*** \\
something & -0.888*** & -0.888*** & -0.888*** \\
something & 0.888* & 0.037 & 0.888 \\ \midrule
\bottomrule 
\end{tabular}
} 
\end{table}
\end{center}

\end{document}

答案1

这是一个使用该dcolumn包实现小数点对齐的解决方案。要确定小数点前后显示的“位数”,请包含减号和星号等对象。对于当前示例,列规范效果d{2.6}很好。

我进一步修改了你的代码,以(a)省略加载所有不需要的包,(b)使用\centering指令里面环境table,以及 (c) 跳过将\footnotesize指令括在一对花括号中,因为指令的范围以环境结束table

在此处输入图片描述

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}  % define "d" column type
\newcommand\mc[1]{\multicolumn{1}{c}{#1}} % handy shortcut macro
\begin{document}
\begin{table}[htbp!]
\centering
\footnotesize
\begin{tabular}{@{} l *3{d{2.6}} @{} } \toprule
& \mc{a} & \mc{b} & \mc{c} \\ \midrule
\textit{something}  \\ \midrule
something & -0.888    &  0.888    &  0.888    \\
something &  0.888*** &  0.888*   &  0.888*** \\
something & -0.888*** & -0.888*** & -0.888*** \\
something & 0.888* & 0.037 & 0.888 \\
\bottomrule 
\end{tabular}
\end{table}
\end{document}


附录beamer:当使用而不是文档类时,同一张表如下所示article

在此处输入图片描述

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}  % define "d" column type
\newcommand\mc[1]{\multicolumn{1}{c}{#1}} % handy shortcut macro
\begin{document}
\begin{frame}
\begin{table}
\centering
\footnotesize
\begin{tabular}{@{} l *3{d{2.6}} @{} } \toprule
& \mc{a} & \mc{b} & \mc{c} \\ \midrule
\textit{something}  \\ \midrule
something & -0.888    &  0.888    &  0.888    \\
something &  0.888*** &  0.888*   &  0.888*** \\
something & -0.888*** & -0.888*** & -0.888*** \\
something &  0.888*   & 0.037     &  0.888 \\
\bottomrule 
\end{tabular}
\end{table}
\end{frame}
\end{document}

答案2

我建议使用siunitx包来排版列。选项用于\sisetup适当设置列的宽度(小数点左边一位,小数点右边三位,加上符号空间)。请注意,我从这个 MWE 中删除了几个不必要的包,并删除了不必要的环境center,将其更改为命令。还请注意、和列标题周围的\centering花括号,以确保它们设置为文本,而不是由 解析。{}abcsiunitx

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{table-format=-1.3, table-space-text-post={***}}

\begin{document}

{\footnotesize
\begin{table}[htbp!]
\centering
\begin{tabular}{@{} lSSS @{} } \toprule
& {a} & {b} & {c} \\ \midrule
\textit{something} &&& \\ \midrule
something & -0.888 & 0.888 & 0.888 \\
something & 0.888** & 0.888* & 0.888*** \\
something & -0.888*** & -0.888*** & -0.888*** \\
something & 0.888* & 0.037 & 0.888 \\ \midrule
\bottomrule
\end{tabular}
\end{table}
}

\end{document}

答案3

您至少有三个选择:

  1. 使用l左对齐列并引入\phantom{-}正数:

    在此处输入图片描述

    \documentclass{article}
    \usepackage{booktabs,amsmath}
    \begin{document}
    
    \begin{tabular}{@{} llll @{}}
      \toprule
      & a & b & c \\
      \midrule
      \textit{something} &&& \\
      \midrule
      something & $-0.888$ & $\phantom{-}0.888$ & $\phantom{-}0.888$ \\
      something & $\phantom{-}0.888^{\text{**}}$ & $\phantom{-}0.888^{\text{*}}$ & $\phantom{-}0.888^{\text{***}}$ \\
      something & $-0.888^{\text{***}}$ & $-0.888^{\text{***}}$ & $-0.888^{\text{***}}$ \\
      something & $\phantom{-}0.888^{\text{*}}$ & $\phantom{-}0.037$ & $\phantom{-}0.888$ \\
      \bottomrule 
    \end{tabular}
    
    \end{document}
    
  2. 使用r右对齐的列并引入\phantom没有任何“调整”的数字:

    在此处输入图片描述

    \documentclass{article}
    \usepackage{booktabs,amsmath}
    \begin{document}
    
    \begin{tabular}{@{} rrrr @{}}
      \toprule
      & a & b & c \\
      \midrule
      \textit{something} &&& \\
      \midrule
      something & $-0.888\phantom{{}^{\text{***}}}$ & $0.888\phantom{{}^{\text{***}}}$ & $0.888\phantom{{}^{\text{***}}}$ \\
      something & $0.888^{\text{**\phantom{*}}}$ & $0.888^{\text{*\phantom{**}}}$ & $0.888^{\text{***}}$ \\
      something & $-0.888^{\text{***}}$ & $-0.888^{\text{***}}$ & $-0.888^{\text{***}}$ \\
      something & $0.888^{\text{*\phantom{**}}}$ & $0.037\phantom{{}^{\text{***}}}$ & $0.888\phantom{{}^{\text{***}}}$ \\
      \bottomrule 
    \end{tabular}
    
    \end{document}
    
  3. 使用siunitx,正如建议的那样这个答案

答案4

我做了两件事:我替换了我定义的“-”符号\phanm;并且我增加了\tabcolsep一点来为幻影留出一些空间。

通过将减号变成\llaped 字符,可以避免“a”、“b”和“c”与减号对齐而产生的(我认为的)丑陋外观。

注意:您的原始解决方案在数学模式中没有减号。

已编辑,以采纳 Mico 的好建议,我在 OP 的 MWE 中对此进行了掩盖。

\documentclass[12pt,a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage{ucs}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{threeparttablex, booktabs}
\usepackage{longtable}
\begin{document}

\def\phanm{\llap{$-$}}
\tabcolsep=\dimexpr\tabcolsep+1ex\relax
\begin{table}[htbp!]
\centering{\footnotesize
\begin{tabular}{@{} llll @{} } \toprule
& a & b & c \\ \midrule
\textit{something} &&& \\ \midrule
something & \phanm0.888 & 0.888 & 0.888 \\
something & 0.888** & 0.888* & 0.888*** \\
something & \phanm0.888*** & \phanm0.888*** & \phanm0.888*** \\
something & 0.888* & 0.037 & 0.888 \\ \midrule
\bottomrule 
\end{tabular}
} 
\end{table}

\end{document}

在此处输入图片描述

相关内容