当内容为文本而不是数字时,表格的最后一个单元格中出现 Siunitx 错误

当内容为文本而不是数字时,表格的最后一个单元格中出现 Siunitx 错误

在上一个问题中(longtblr 中的字幕不符合为格式化字幕提供的选项) 我对表格中最后一个单元格的格式/输出有一个小问题tabularray。该表格中的偶数列定义为siunitx数字列,但也可以包含文本。这似乎不是问题,除了表格最后一行的最后一个单元格。

该表是一道化学考试题的一部分,题目要求根据 Traub 计算合成的 E 因子和原子经济性。因此,学生必须先确定字母 A 到 D 的答案,然后才能计算这些因子。为了强调这些确定性,字母以粗体打印,答案示例在 B 和 C 之间给出。在表格的序言中,粗体打印是使用cell{row}{column}格式选项设置的。

但是:当最后一个单元格中只有字母 D 时,siunitx编译时会出现大量错误,前三个错误如下: Package siunitx Error: Invalid number 'D'. \end

Argument of \__siunitx_table_print_format_auxi:w has an extra }. \end

Paragraph ended before \__siunitx_table_print_format_auxi:w was complete. \end

当条目按\textbf{D}表格形式呈现时,编译正确。插入答案(数字)也能正确编译

所以问题仍然是,为什么最后一行第二个单元格中的字母 B 不会导致语法错误,而最后一个单元格中的字母 D 却会导致语法错误。

这可能与版本 3 中的新收集 / 呈现定义有关,siunitx正如 Ulrike Fischer 在对我之前关于标题的问题的评论中指出的那样:https://github.com/josephwright/siunitx/issues/335

MWE 取自 Zarko 的回答:

\documentclass[a4paper,12pt]{article}
\usepackage[text={17.0cm,26cm},top=2.0cm,left=2.5cm]{geometry}

\usepackage[dutch]{babel}

\usepackage[many]{tcolorbox}    %needs to be loaded prior to gfsartemsia to prevent ams / math font conflicts
\tcbset{colback=gray!2.5,
    width=\linewidth, frame hidden,
    boxrule=0pt, toprule=1pt, bottomrule=1pt,
    sharp corners, boxsep=3pt, bottom=3pt,}

%----- font paketten -----
\usepackage{gfsartemisia}
\usepackage[charter]{mathdesign}
\usepackage[scale=0.95]{tgheros}
\renewcommand*{\familydefault}{\sfdefault}

\usepackage[modules={minimal}]{chemmacros}
\chemsetup{greek=mathdesign,formula=chemformula}
\chemsetup[chemformula]{format=\sffamily}

\usepackage{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx}
\sisetup{
    %    table-alignment-mode=format,
    %    table-number-alignment=center,
    output-decimal-marker={,},
    reset-text-family=false, % doesn't work - math roman font is still selected
    detect-all  % now undocumented, but needed to maintain the tgheros font in siuntitx macros
}

\usepackage[labelfont=bf,labelsep=endash,font=small]{caption}


\begin{document}
    \begin{tcolorbox}
        \NewTblrTheme{captionof}% for use caption set up in talltablr captions
        {
            \DefTblrTemplate{caption}{default}%
            {\addtocounter{table}{-1}%
                \captionof{table}{\InsertTblrText{caption}}}
        }
        \SetTblrStyle{remark}{font=\footnotesize}
        \centering
        \begin{talltblr}[   
            theme = captionof,
            caption = {Analyse van de synthese van \textit{cafeïne} volgens Traube uit 1900.},  % now uses the formatting options given for caption package
            remark{1} = {MW staat voor molecuulmassa in \unit{\g\per\mole}},
            remark{2} = {Afvalstoffen zijn in \textcolor{red}{rood} weergegeven},
            ]{
                stretch=1.2,
                colsep  = 10pt,
                colspec = {*{3}{l Q[c, si={table-format=2.3}]}},
%               row{1-2}= {guard},
                cell{Z}{1,2,5,6}={font=\bfseries,c},
                cell{3-9}{5}={fg=red},
                row{1,Y}= {bg=yellow!30, font=\bfseries},
                row{2}  = {bg=yellow!10, font=\itshape},
                hlines  = {blue, 1pt},
                vline{1,3,5,7}={blue5, solid, 1pt}, 
            }
            \SetCell[c=2]{c} Reagent    
            &           & \SetCell[c=2]{c} Gebruikt in cafeïne    
            &           & \SetCell[c=2]{c} Niet gebruikt 
            & \\
            Formule         &   MW      &       Formule     &   MW      &   Formule     &   MW  \\
            \ch{C3H8N2O}    &   88.114  &   \ch{C3H6N2O}    &   86.098  &               &       \\
            \ch{C3H3NO2}    &   85.064  &   \ch{C3HNO}      &   67.048  &   \ch{H2O}    &   18.016  \\
            \ch{HNO2}       &   47.018  &   \ch{N}          &   14.01   &   \ch{H2O}    &   18.016  \\
            2 \ch{H2}       &   4.032   &                   &           &   \ch{H2O}    &   18.016  \\
            \ch{HCOOH}      &   46.026  &   \ch{C}          &   12.01   &   \ch{H2O}    &   18.016  \\
            \ch{NaOH}       &   39.998  &                   &           &   2 \ch{H2O}  &   36.032  \\
            \ch{CH3Cl}      &   50.484  &   \ch{CH3}        &   15.034  &   \ch{NaCl}   &   58,44   \\
            \SetCell[c=2]{c}{Totaal}    
            &           & \SetCell[c=2]{c}{Cafeïne}   
            &           & \SetCell[c=2]{c}{Restant}   
            &           \\
            A           &   B       & \ch{C8H10N4O2}    &   194.20  &   C           &      D    \\ %<- inserting \textbf{D} compiles correctly
        \end{talltblr}
    \end{tcolorbox}
    
    
\end{document}

输出 PDF 可以在longtblr 中的字幕不符合为格式化字幕提供的选项

答案1

字母D是数字中指数部分的可能标记之一。因此,siunitx找到D并需要具有以下值,但缺少该值。您需要将此条目标记为明确文本:{D}

相关内容