假设你有一些如下代码:
\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}