为什么 tabularx 与 siunitx 一起使用会失败?

为什么 tabularx 与 siunitx 一起使用会失败?

前段时间,我使用tabularx和编写了一个文档siunitx。它在 TL2016 中编译正常,但现在在 TL2017(预测试)中,它给出了一个错误

(c:/texlive/2017/texmf-dist/tex/latex/siunitx/siunitx-abbreviations.cfg)
! Missing } inserted.
<inserted text> 
                }
l.14        \end{tabularx}

? 

MWE(注意:您必须取消注释一行才能看到错误):

\documentclass{scrreprt}
\usepackage{array}
\usepackage{tabularx}
\usepackage[locale=DE]{siunitx}

\begin{document}
    \begin{table}[h]
        \caption{Vergleichende Darstellung der Pro-Kopf-Kosten in €}
% uncomment the following line to see the error
%       \renewcommand{\tabularxcolumn}[1]{S[table-column-width=#1,table-figures-decimal=2]}
        \begin{tabularx}{\linewidth}{@{}lXXXX@{}}
            \textbf{Position} & \multicolumn{2}{c}{\textbf{Criterion 1}} & \multicolumn{2}{c}{\textbf{Criterion 2}}\\
            1 & 220,00 & 0,00 & 0,00 & 220,00\\
            2 & 0,00 & 1,80 & 0,00 & 1,80
        \end{tabularx}
        \renewcommand{\tabularxcolumn}[1]{p{#1}}
    \end{table}
\end{document}

我的问题主要是:什么变化导致了这个问题,以及如何针对 TL17 解决它。

顺便说一句:我确实知道如何将 siunitx 和 tabularx 一起使用?并且该解决方案目前确实有效,但我的问题具体是现在是什么导致了这种冲突。

更新:文件列表

 *File List*
scrreprt.cls    2017/04/13 v3.23 KOMA-Script document class (report)
scrkbase.sty    2017/04/13 v3.23 KOMA-Script package (KOMA-Script-dependent basi
cs and keyval usage)
 scrbase.sty    2017/04/13 v3.23 KOMA-Script package (KOMA-Script-independent ba
sics and keyval usage)
  keyval.sty    2014/10/28 v1.15 key=value parser (DPC)
scrlfile.sty    2017/04/13 v3.23 KOMA-Script package (loading files)
tocbasic.sty    2017/04/13 v3.23 KOMA-Script package (handling toc-files)
scrsize11pt.clo    2017/04/13 v3.23 KOMA-Script font size class option (11pt)
typearea.sty    2017/04/13 v3.23 KOMA-Script package (type area)
   array.sty    2016/10/06 v2.4d Tabular extension package (FMi)
tabularx.sty    2016/02/03 v2.11 `tabularx' package (DPC)
 siunitx.sty    2017/03/23 v2.7f A comprehensive (SI) units package
   expl3.sty    2017/05/13 L3 programming layer (loader) 
expl3-code.tex    2017/05/13 L3 programming layer 
l3pdfmode.def    2017/03/18 v L3 Experimental driver: PDF mode
  xparse.sty    2017/05/13 L3 Experimental document command parser
 amstext.sty    2000/06/29 v2.01 AMS text
  amsgen.sty    1999/11/30 v2.0 generic functions
l3keys2e.sty    2017/05/13 LaTeX2e option processing using LaTeX3 keys
translator.sty    2010/06/12 ver 1.10
translator-language-mappings.tex
translator-basic-dictionary-English.dict    
siunitx-abbreviations.cfg    2017/03/23 v2.7f siunitx: Abbreviated units
 ***********

答案1

这是由于expl3与 中的一些低级代码交互发生了变化siunitx:后者是由于 中有用函数的覆盖范围存在轻微的“差距” expl3。目前,添加

\ExplSyntaxOn
\cs_set_protected:Npn \hbox_set:Nw  #1
  { \tex_setbox:D #1 \tex_hbox:D \c_group_begin_token }
\cs_set_eq:NN \hbox_set_end: \c_group_end_token
\ExplSyntaxOff

将修复此问题。我今天将更新其中一个或两个,expl3siunitx长期解决此问题。(以上是针对当前问题的临时解决方案,但从长远来看并非最佳整体解决方案。)

相关内容