在表格中添加脚注会导致错误:!额外},或忘记\endgroup

在表格中添加脚注会导致错误:!额外},或忘记\endgroup

siunitx通过制作表格,我使用了包nicematrixmakecell。这三个包同时应用似乎足以解决我的表格问题 - 例如这个。我使用的是siunitxpackage,而不是dcolumnpackage,因为后者给出的数字位置不令人满意。我在放置表格注释时遇到了问题。注释标记必须放在中间列的单元格中。当我在环境S中使用 -type 列时NiceTabular,我收到错误:

! Extra }, or forgotten \endgroup.
<template> ...z@ plus.5fill\relax \egroup \egroup 
                                                  \begingroup \CT@setup \CT@...
l.23 ...tal & 160\tabularnote{My footnote text.} &
                                                   100,0\\

如何解决这个问题?它类似于这个(在这个主题中,@moewe 的评论之一可能可以找到解决方案,但我无法应对。)代码:

\documentclass[table]{standalone}
\usepackage{siunitx}
\usepackage{makecell}
\usepackage{nicematrix}
\usepackage{enumitem}

\renewcommand{\theadfont}{\footnotesize\bfseries}
\sisetup{output-decimal-marker={,}}

\begin{document}
{\footnotesize
    \begin{NiceTabular}[hvlines,code-before=\rowcolor{gray!50}{1-1}]{
        l
        S[table-format=3,zero-decimal-to-integer,table-space-text-post=\textsuperscript{a}]
        S[table-format=3.1]
    }
        {\thead{Side-heading\\description}} &
        {\thead{First column\\with data\\description}} &
        {\thead{Second column\\with data\\description}}\\
        Good & 120, & 41,5\\
        Bad & 140, & 58,5\\
        Total & 260,\tabularnote{My footnote text.} & 100,0\\
    \end{NiceTabular}
}
\end{document}

答案1

(我是的作者nicematrix

在第一次回答这个问题时,我说过 OP 的问题是和的nicematrix列之间(部分)不兼容。我给出了一个解决方法。Ssiunitx\tablenumsiunitx

这是另一种解决方法:siunitx根本不使用(在第一列)。这确实是一种繁重的解决方法,因为您必须手动完成居中工作。\hphantom但是\rlap,通过这种方式,内容会严格居中(包括表格注释的标签)。

\documentclass{article}
\usepackage{siunitx}
\usepackage{makecell}
\usepackage{nicematrix}
\usepackage{enumitem}

\renewcommand{\theadfont}{\footnotesize\bfseries}
\sisetup{output-decimal-marker={,}}


\protected\def\myfootnote{My table note.}

\begin{document}
{\footnotesize
    \begin{NiceTabular}[hvlines,code-before=\rowcolor{gray!50}{1-1}]{
        l
        c
        S[table-format=3.1,zero-decimal-to-integer]
    }
        {\thead{Side-heading\\description}} &
        {\thead{First column\\with data\\description}} &
        {\thead{Second column\\with data\\description}}\\
        Good  & 120,5\hphantom{\textsuperscript{a}} & 41,5\\
        Bad   & 140\rlap{\tabularnote{My first note}}\hphantom{,5\textsuperscript{a}}  & 58,5\\
        Bad   & 140,5\tabularnote{My second note}  & 58,5\\
        Total & \hphantom{0}60\hphantom{,5\textsuperscript{a}} & 100,0\\
    \end{NiceTabular}
}

\end{document}

上述代码的输出

答案2

(我是的作者nicematrix)。

这是和的nicematrix列之间的部分不兼容性。Ssiunitx

我会尝试找到一个解决方案,但这里有一个解决方法,即使用命令\tablenumsiunitxS列类型的“命令版本”)。

但是,该命令tablenum似乎删除了其参数中的所有空格(并且它将删除表格注释文本中的空格)。这就是为什么我将表格注释文本放在 TeX 宏中的原因\myfootnote(可以使用\NewDocumentCommand,但我想强调必须保护它)。

此外,整数的情况需要特殊处理......

\documentclass{article}
\usepackage{siunitx}
\usepackage{makecell}
\usepackage{nicematrix}
\usepackage{enumitem}

\renewcommand{\theadfont}{\footnotesize\bfseries}
\sisetup{output-decimal-marker={,}}

\NewDocumentCommand { \mytablenum } { } { \tablenum[table-format=3,zero-decimal-to-integer]}

\protected\def\myfootnote{My table note.}

\begin{document}
{\footnotesize
    \begin{NiceTabular}[hvlines,code-before=\rowcolor{gray!50}{1-1}]{
        l
        c
        S[table-format=3.1]
    }
        {\thead{Side-heading\\description}} &
        {\thead{First column\\with data\\description}} &
        {\thead{Second column\\with data\\description}}\\
        Good  & \mytablenum{120,5{\tabularnote{\myfootnote}}} & 41.5\\
        Bad   & \mytablenum{140,}  & 58.5\\
        Total & \mytablenum{60}\rlap{\tabularnote{Another table note.}} & 100.0\\
    \end{NiceTabular}
}

\end{document}

上述代码的输出

相关内容