我使用tabu
MikTeX 2.9、2.8和现在的v2.5gsiunitx
制作图表。自从上次使用更新程序命令以来,tabu
siunitx
\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 的分配那样显示出来,并且\relax
TeX 会将其默默转换为。可以通过执行以下操作来“修复”
\ExplSyntaxOn
\cs_new_eq:NN \siunitx_table_collect_begin:Nn \__siunitx_table_collect_begin:Nn
\ExplSyntaxOff
加载后siunitx
。