消除颜色编码命令而不删除它们

消除颜色编码命令而不删除它们

如果我想取消文档中的所有脚注命令,但又不真正删除它们,我可以使用命令\renewcommand\footnote[2][]{}。(例如,参见寻找一种方法来废除所有脚注,而无需将其从法典中真正删除

我想知道这是否可能,如果可以,我怎样才能(类似地)中和文档中的所有着色命令 - 而不删除它们 - 以便生成的文档仅包含灰度而不包含其他颜色?

我问这个问题的原因是,例如,当一个人自己出版一本书(比如在亚马逊上),用黑白的出版方式要便宜得多——我不知道彩色的文档是否可以上传并自动转换为灰度——或者是否需要以更高的成本制作彩色的文档。

因此,考虑 MWE:

\documentclass[12pt]{book}
\usepackage{tcolorbox}

\definecolor{darkamber}{RGB}{213,54,0}
\definecolor{forestgreen}{rgb}{.13, .55, .13}
\colorlet{aPurple}{blue!77!red}
\definecolor{RoyalRed}{RGB}{157,16, 45}
\definecolor{scarlet}{RGB}{255, 36, 0}
\definecolor{burntorange}{rgb}{0.8, 0.33, 0.0}
\definecolor{cadmiumgreen}{rgb}{0.0, 0.42, 0.24}

\begin{document}
\thispagestyle{empty}
\Large

\begin{center}
\begin{tcolorbox}[width=.90\textwidth,colback={white},title={\textcolor{white}{\bf \hfill COLOR TO GRAYSCALE \hfill}},colbacktitle=burntorange,coltitle=black] \par \emph{} \\  
\textcolor{scarlet}{\textbf{AAA}} \\
\textcolor{aPurple}{\textbf{BBB}} \\
\textcolor{cadmiumgreen}{\textbf{CCC}} \\
\textcolor{forestgreen!35!black}{\textbf{DDD}} \\
\textcolor{RoyalRed}{\textbf{EEE}} \\
\textcolor{burntorange}{\textbf{FFF}} \\
\textcolor{darkamber}{\textbf{GGG}}
\end{tcolorbox}    
\end{center}
\end{document}

输出结果如下:

在此处输入图片描述

问题:如何才能“一举”将所有文本和 tcolorbox 颜色转换为灰度(如果可能的话),而无需删除任何着色代码?我用编译了代码pdflatex

谢谢。

答案1

既然您要求使用“类似”的方法,那么您可能也想\renewcommand在这里使用。在某些情况下,您可以复制命令,然后覆盖原始命令,例如:

\let\olddefinecolor\definecolor
\renewcommand{\definecolor}[3]{\olddefinecolor{#1}{named}{black}}

这会将所有后续定义的颜色变为黑色(但当然仅限于用 定义的颜色\definecolor,而不是aPurple通过 定义的颜色\colorlet)。

\documentclass[12pt]{book}
\usepackage{tcolorbox}

\let\olddefinecolor\definecolor
\renewcommand{\definecolor}[3]{\olddefinecolor{#1}{named}{black}}

\definecolor{darkamber}{RGB}{213,54,0}
\definecolor{forestgreen}{rgb}{.13, .55, .13}
\colorlet{aPurple}{blue!77!red}
\definecolor{RoyalRed}{RGB}{157,16, 45}
\definecolor{scarlet}{RGB}{255, 36, 0}
\definecolor{burntorange}{rgb}{0.8, 0.33, 0.0}
\definecolor{cadmiumgreen}{rgb}{0.0, 0.42, 0.24}

\begin{document}
\thispagestyle{empty}
\Large

\begin{center}
\begin{tcolorbox}[width=.90\textwidth,colback={white},title={\textcolor{white}{\bf \hfill COLOR TO GRAYSCALE \hfill}},colbacktitle=burntorange,coltitle=black] \par \emph{} \\  
\textcolor{scarlet}{\textbf{AAA}} \\
\textcolor{aPurple}{\textbf{BBB}} \\
\textcolor{cadmiumgreen}{\textbf{CCC}} \\
\textcolor{forestgreen!35!black}{\textbf{DDD}} \\
\textcolor{RoyalRed}{\textbf{EEE}} \\
\textcolor{burntorange}{\textbf{FFF}} \\
\textcolor{darkamber}{\textbf{GGG}}
\end{tcolorbox}    
\end{center}
\end{document}

在此处输入图片描述


但是,如果您想将颜色更改为灰度,更简单的方法是加载xcolor带有选项的包gray。这将选择灰度作为目标颜色模型,因此会将所有定义的颜色转换为灰度。请注意,不同的颜色很难区分。

由于使用了tcolorbox加载包的方式xcolor,因此可以\PassOptionsToPackage{gray}{xcolor}在加载之前添加:

\documentclass[12pt]{book}
\PassOptionsToPackage{gray}{xcolor} % <-
\usepackage{tcolorbox}

\definecolor{darkamber}{RGB}{213,54,0}
\definecolor{forestgreen}{rgb}{.13, .55, .13}
\colorlet{aPurple}{blue!77!red}
\definecolor{RoyalRed}{RGB}{157,16, 45}
\definecolor{scarlet}{RGB}{255, 36, 0}
\definecolor{burntorange}{rgb}{0.8, 0.33, 0.0}
\definecolor{cadmiumgreen}{rgb}{0.0, 0.42, 0.24}

\begin{document}
\thispagestyle{empty}
\Large

\begin{center}
\begin{tcolorbox}[width=.90\textwidth,colback={white},title={\textcolor{white}{\bf \hfill COLOR TO GRAYSCALE \hfill}},colbacktitle=burntorange,coltitle=black] \par \emph{} \\  
\textcolor{scarlet}{\textbf{AAA}} \\
\textcolor{aPurple}{\textbf{BBB}} \\
\textcolor{cadmiumgreen}{\textbf{CCC}} \\
\textcolor{forestgreen!35!black}{\textbf{DDD}} \\
\textcolor{RoyalRed}{\textbf{EEE}} \\
\textcolor{burntorange}{\textbf{FFF}} \\
\textcolor{darkamber}{\textbf{GGG}}
\end{tcolorbox}    
\end{center}
\end{document}

在此处输入图片描述

(还有一个monochrome选项可以禁用彩色输出并将所有颜色呈现为黑色,但这在这里不起作用,因为您还使用背景颜色。)

相关内容