在上一个问题中(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}
。