siunitx
通过制作表格,我使用了包nicematrix
和makecell
。这三个包同时应用似乎足以解决我的表格问题 - 例如这个。我使用的是siunitx
package,而不是dcolumn
package,因为后者给出的数字位置不令人满意。我在放置表格注释时遇到了问题。注释标记必须放在中间列的单元格中。当我在环境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
列之间(部分)不兼容。我给出了一个解决方法。S
siunitx
\tablenum
siunitx
这是另一种解决方法: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
列之间的部分不兼容性。S
siunitx
我会尝试找到一个解决方案,但这里有一个解决方法,即使用命令\tablenum
(siunitx
即S
列类型的“命令版本”)。
但是,该命令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}