解决行颜色和列分隔符冲突?

解决行颜色和列分隔符冲突?

我想创建一个表格,其中文本围绕分隔符“V-”对齐,并使用 \rowcolor 为其着色。普通列分隔符 @{V-} 不适用于 \rowcolors,因此我正在寻找另一种方法。是否可以使用 siunitx 包的整洁 S 列?我尝试了

\usepackage[input-decimal-markers={V-}]{siunitx}

\usepackage[input-signs={V-}]{siunitx}

但它会引发错误。

梅威瑟:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\usepackage{siunitx}
\begin{document}
with @{V-}:\\
\rowcolors{1}{black!10}{}
\begin{tabular}{|r@{V-}l|}
\hline
C & CV-\\\hline
CC & CV-\\\hline
h1C & V-\\\hline
\end{tabular}

with c and tabcolsep=0pt:\\
\setlength{\tabcolsep}{0pt}
\rowcolors{1}{black!10}{}
\begin{tabular}{|rcl|}
\hline
C & V- & CV-\\\hline
CC & V- & CV-\\\hline
h1C & V- & V-\\\hline
\end{tabular}
\end{document}

到目前为止,tabcolsep=0pt 的版本效果最好,但是表格没有任何分隔符,非常难看。如果我只使用 S,siunitx 当然会说“无效的数字输入‘-’”。有什么想法吗?

附言:我读过205041289298,但他们没有回答我的问题。

编辑:我不需要使用 siunitx,如果有人知道其他解决方案……

答案1

@{V-}您可以在中{NiceTabular}使用标准分隔符nicematrix,并且如果您使用工具来nicematrix获取行的颜色(\rowcolors{black!10}{}数组开头的命令),您将获得预期的输出。

\documentclass{scrartcl}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}
\begin{NiceTabular}{|r@{V-}l|}[color-inside]
\hline
\rowcolors{black!10}{}
C & CV-\\\hline
CC & CV-\\\hline
h1C & V-\\\hline
\end{NiceTabular}

\end{document}

Output of the above code

答案2

即使尝试了几次,我还是无法使用该问题siunitx,但我找到了一种方法dcolumn,并想分享我的解决方案(虽然更像是一种解决方法):

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\usepackage{booktabs}
\usepackage{dcolumn}
\begin{document}
\rowcolors{2}{black!10}{}
\begin{tabular}{lD{-}{\mbox{-}}{-1}}
\toprule
some things & \multicolumn{1}{c}{random root shapes} \\
\midrule
something & \mbox{CV}-\mbox{CV-} \\
something & \mbox{CCV}-\mbox{CV-} \\
something & \mbox{h1CV}-\mbox{V-} \\
\bottomrule
\end{tabular}
\end{document}

output

所有 mboxing 的原因是将dcolumn单元格设置为数学模式。这些框可防止这种情况发生,并允许在单元格内输入其他对齐符号。

相关内容