newcolumntype、siunitx、tabu 和非法前缀标记

newcolumntype、siunitx、tabu 和非法前缀标记

我使用tabuMikTeX 2.9、2.8和现在的v2.5gsiunitx制作图表。自从上次使用更新程序命令以来,tabusiunitx\newcolumn

\newcolumntype D{X[1,c]{%
  S[group-four-digits=true,
  table-format=2.0e1,
  per-mode=symbol]}}
\tabucolumn D

不再工作,但会引发类似以下错误消息

Package array Error: Illegal pream-token.

我不知道如何解决这个问题。有人能帮助我吗?

这是不再起作用的最小示例:

\documentclass[a4paper,DIV=12]{scrreprt}
\usepackage[utf8]{inputenc}                 
\usepackage[T1]{fontenc}            
\usepackage[ngerman]{babel}     
\usepackage{siunitx,booktabs}

\usepackage{tabu}
\newcolumntype D{X[1,c]{S[group-four-digits=true,table-format = 2.0e1,per-mode=symbol]}}
\tabucolumn D

\begin{document}
  \begin{tabu} to \linewidth {XDDX}
    \toprule
    one & {two two two two two} & {three three} & four\\
    1.23456 & 1.23456 & 1.23456 & 1.23456 \\
    1.2 & 1.2 & 1.2 & 1.2 \\
    999.9 &999.9 &999.9 &999.9\\
    \bottomrule
  \end{tabu}
\end{document}

提示:使用

\newcolumnD{X[1.c]S[...

(没有花括号)如其他线程所述不起作用,因为它被解释为 X 和 S 列作为 D 的替代。

答案1

发生这种情况是因为tabu它做了一些 LaTeX3 方法明确禁止的事情:它使用了来自 的内部宏siunitx

在从 v2.5e 到 v2.5f 的修订中,的内部siunitx被标记为“私有”,遵循 LaTeX3 命名方案。这不会像tabu基于 csname 的分配那样显示出来,并且\relaxTeX 会将其默默转换为。可以通过执行以下操作来“修复”

\ExplSyntaxOn
\cs_new_eq:NN \siunitx_table_collect_begin:Nn \__siunitx_table_collect_begin:Nn
\ExplSyntaxOff

加载后siunitx

相关内容