使用 numprint 在表格环境中对齐加号(以及小数点)

使用 numprint 在表格环境中对齐加号(以及小数点)

这是 numprint 包中的错误吗?还是缺少某个功能?我无法在表格环境中对齐加号/减号,无法用空格填充数字。

\documentclass{article}
\usepackage{booktabs}
\usepackage{numprint}

\begin{document}
\begin{center}
\nplpadding[\ ]{4}
\begin{tabular}{*{2}{N{4}{2}}}
  \toprule
  -940    & +1000   \\
  +952.38 & -1000 \\ \midrule
  +12.38 &     0 \\
  \bottomrule
\end{tabular}
\end{center}

\end{document}

欢迎任何提示。

答案1

我不知道“纯 TeX” 方式,但您可以使用右对齐的附加列(因为+具有相同的水平宽度,所以对齐并不重要)。

基础

\begin{tabular}{*{2}{r@{}N{4}{2}}}
  \toprule
  $-$ & 940    &  +  & 1000 \\
   +  & 952.38 & $-$ & 1000 \\ \midrule
   +  &  12.38 &     &    0 \\
  \bottomrule
\end{tabular}

填充仍由我们完成,numprint@{}我们强制这样做+,并且在排版时没有任何进一步的空间。

由于可能需要多次执行此操作,因此使用array包中我们定义了另一个列规范:

\newcolumntype{M}[2]{r@{}N{#1}{#2}}

例如,它可以用作M{4}{2}

输入所有这些“与”符号有点繁琐,所以我们使+-处于活动状态,以便它们自行插入“与”符号,但我们不希望这影响整个文档,只有我们的特殊才tabular应该有这种效果,因此我定义了一个新的环境,它基本上只是一个具有活动和的环境ntabular的包装器。tabular+-

(我没有引入另一个“自动”扩展为的字符&,因为......您可以直接使用&,不是吗?不幸的是,如果数字前面没有符号,仍然需要这样做。)

代码

\documentclass{article}
\usepackage{booktabs,numprint,array}
\begingroup
    \catcode`-=\active
    \catcode`+=\active
    \gdef-{$\char`-$&}
    \gdef+{\char`+&}
\endgroup
\newenvironment{ntabular}[1]{%
    \catcode`-=\active
    \catcode`+=\active
    \tabular{#1}
}{%
    \endtabular
}
\newcolumntype{M}[2]{r@{}N{#1}{#2}}
\begin{document}
Is it safe to use + and -?
\begin{table}[h]
\begin{ntabular}{M{3}{2}M{4}{2}}
  \toprule
   - 940    &  + 1000 \\
   + 952.38 &  - 1000 \\ \midrule
   +  12.38 &  &    0 \\
  \bottomrule
\end{ntabular}
\end{table}

Is it safe to use + and -?
\end{document}

输出

在此处输入图片描述

相关内容