将 TikZ 节点颜色更改为灰度

将 TikZ 节点颜色更改为灰度

假设你有一些如下代码:

\documentclass{standalone}

\usepackage{tikz}
% \PassOptionsToPackage{monochrome}{xcolor}

\begin{document}

\begin{tikzpicture}
% \selectcolormodel{gray}
 \node[fill=red] at (0,1) {text};
 \node[fill=green] at (0,0.5) {text};
 \node[fill=blue] at (0,0){text};
 \node[fill=yellow] at (1,1) {text};
 \node[fill=violet] at (1,0.5) {text};
 \node[fill=orange] at (1,0) {text};
\end{tikzpicture}

\end{document}

在此处输入图片描述
并且您想将生成的图片转换为灰度颜色。有没有办法在 LaTeX 中做到这一点,而无需使用外部工具(转换、imagemagick 等),当然也不必手动更改所有颜色值?

我已经尝试过如何仅以灰度模式或 TikZ 图形创建 PDF?Tikz 中的单色(参见注释代码)但是当颜色被指定为节点选项时,它们似乎都不起作用。

\selectcolormodel{gray}如果知道为什么该方法在这种情况下不起作用就好了。

答案1

我不太明白你的意思而无需手动更改所有颜色值?

如果您只是想避免更改图片,那么以下解决方案可能是一个解决方案:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
\definecolor{red}{gray}{0.9}
\definecolor{green}{gray}{0.8}
\definecolor{blue}{gray}{0.7}
\definecolor{yellow}{gray}{0.6}
\definecolor{violet}{gray}{0.5}
\definecolor{orange}{gray}{0.4}


\begin{tikzpicture}
 \node[fill=red] at (0,1) {text};
 \node[fill=green] at (0,0.5) {text};
 \node[fill=blue] at (0,0){text};
 \node[fill=yellow] at (1,1) {text};
 \node[fill=violet] at (1,0.5) {text};
 \node[fill=orange] at (1,0) {text};
\end{tikzpicture}

\end{document}

您重新定义所有颜色,但每个文档只能重新定义一次。您的 tikzpicture 保持不变。

您还可以将重新定义放入样式“grey_colors.sty”并将其重新用于不同的文档。


Qrrbrbirlbel 在\PassOptionsToPackage{gray}{xcolor}加载 TikZ 之前给出了更好的解决方案。

您可以将这两种解决方案结合起来。颜色的重新定义可以让您更好地控制颜色应采用哪种灰色调。

例子:

\documentclass{standalone}
\PassOptionsToPackage{gray}{xcolor}
\usepackage{tikz}

\begin{document}

gray-option:
\begin{tikzpicture}
 \node[fill=red] at (0,1) {text};
 \node[fill=green] at (0,0.5) {text};
 \node[fill=blue] at (0,0){text};
 \node[fill=yellow] at (1,1) {text};
 \node[fill=violet] at (1,0.5) {text};
 \node[fill=orange] at (1,0) {text};
\end{tikzpicture}

Color redefinition:
\definecolor{red}{gray}{0.9}
\definecolor{green}{gray}{0.8}
\definecolor{blue}{gray}{0.7}
\definecolor{yellow}{gray}{0.6}
\definecolor{violet}{gray}{0.5}
\definecolor{orange}{gray}{0.4}
\begin{tikzpicture}
 \node[fill=red] at (0,1) {text};
 \node[fill=green] at (0,0.5) {text};
 \node[fill=blue] at (0,0){text};
 \node[fill=yellow] at (1,1) {text};
 \node[fill=violet] at (1,0.5) {text};
 \node[fill=orange] at (1,0) {text};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容