带 dcolumn 的彩色文本

带 dcolumn 的彩色文本

我想排版一个表格,其中某些数字将显示为红色。为了实现正确的对齐,我使用了 dcolumn 包。问题是 dcolumn 所做的解析会阻止正确应用颜色。

在以下示例中,在第三行中,只有“1”显示为红色。点和“32”显示为黑色。使用\textcolor会导致语法错误。

我尝试使用 siunitx,但不幸的是,由于我以编程方式生成数百个表,编译时间增加太多(超过一分钟)

所以问题是,你如何为属于 dcolumn 的数字着色?

\documentclass[]{article}

\usepackage{xcolor}
\usepackage{tabu}
\usepackage{dcolumn}

\newcolumntype{d}[1]{D{.}{.}{#1}}

\begin{document}

\begin{tabu}{cd{2}}
note & 1.32\\
\color{red}note & 1.32 \\
\color{red}note & \color{red}1.32 \\
% note & 1.32\\
% \textcolor{red}{note} & 1.32 \\
% \textcolor{red}{note} & \textcolor{red}{1.32} \\  % results in a compilation error.
\end{tabu}

\end{document}

答案1

我可以通过重新定义输出的内部定义来提供一种方法。

内容dcolumn保存在两个框中,因此您必须在输出之前设置颜色。此外,您必须重置颜色。

下面的示例提供了一个新命令\dcolcolor来设置由 定义的单元格的颜色dcolumn。用法很简单(\dcolcolor有一个强制参数):

\dcolcolor{<color>}

这里是例子:

\documentclass[]{article}

\usepackage{xcolor}
\usepackage{tabu}
\usepackage{dcolumn}

\newcolumntype{d}[1]{D{.}{.}{#1}}
\makeatletter
\def\DC@endright{$\hfil\egroup\@dcolcolor\box\z@\box\tw@\dcolreset}
\def\dcolcolor#1{\gdef\@dcolcolor{\color{#1}}}
\def\dcolreset{\dcolcolor{black}}
\dcolcolor{black}
\makeatother
\begin{document}

\begin{tabu}{cd{2}}
note & 1.32\\
\color{red}note & 1.32 \\
note &\dcolcolor{red} 1.32 \\
 note & 1.32\\
 note & \dcolcolor{red}1.32\\
 \textcolor{red}{note} & 1.32 \\
\end{tabu}
\end{document}

答案2

您可能还想查看希尼奇包。该包提供了许多其他功能,其中包括标记为的列类型S。加载此包而不是后dcolumn,您的 MWE 将如下所示:

\documentclass[]{article}
\usepackage{xcolor}
\usepackage{tabu}
\usepackage{siunitx}

\begin{document}
\begin{tabu}{cS[table-format=1.2]}
note & 1.32\\
\color{red}note & 1.32 \\
\color{red}note & \color{red}1.32 \\
\textcolor{red}{note} & 1.32 \\
\textcolor{red}{note} & \textcolor{red}{1.32} \\
\end{tabu}
\end{document}

在此处输入图片描述

观察发现包及其列类型对于或S都没有问题。\color\textcolor

相关内容