切换 \includegraphics 的颜色和灰度模式

切换 \includegraphics 的颜色和灰度模式

假设我有一个包含大量彩色 PDF 的文档。现在我想轻松地在“彩色”版本和“灰度”版本之间切换。我知道\DeclareGraphicsRule,但我认为这需要更多调整。请参阅下面的 MWE。

% engine: pdflatex
\documentclass{article}

\usepackage{xcolor,graphicx}

\iftrue
% code for "color" version
\else
% code for "grayscale" version
\fi

\begin{document}

\includegraphics{z4z.pdf}

\end{document}

你可以使用任何你想要的图像,但我使用的图像是这样的:http://kmlinux.fjfi.cvut.cz/~hejdato1/z4z.pdf

可用于将图像转换为灰度的命令例如

convert -density 600 #1.pdf -colorspace Gray #2.pdf

.pdf最后但同样重要的一点是,如果它可以在有或没有扩展的情况下工作,那就太好了\includegraphics

答案1

您有一个经典的矢量图 ( z4z.pdf)。使用命令行convert( ImageMagick),图像将转换为位图。PDF 也可以包含位图。更好的方法是使用Inkscape。它有一个选项可以将颜色转换为灰色颜色模型。再次保存为 PDF,见下文。

我会使用两个不同的目录,第一个目录包含彩色图像,第二个目录包含灰度图像。然后使用 即可轻松在它们之间切换\graphicspath。当前目录应该没有这些图像,否则会首先找到它们。

\documentclass{article}
\usepackage{xcolor,graphicx}

\iftrue % color
  \graphicspath{{img-color/}}
\else % grayscale
  \selectcolormodel{gray}
  \graphicspath{{img-gray/}}
\fi

\begin{document}
  \includegraphics[scale=.5]{z4z}
\end{document}

如果是灰度,示例还会将包控制的颜色切换为灰色模型xcolor。也可以使用选项来实现黑/白monochrome,但在加载颜色包时需要使用该选项:

\documentclass{article}

\usepackage{graphicx}

%\iftrue % color
\iffalse
  \graphicspath{{img-color/}}
\else % grayscale
  \PassOptionsToPackage{monochrome}{xcolor}
  \graphicspath{{img-gray/}}
\fi

\usepackage{xcolor}

\begin{document}
  \includegraphics[scale=.5]{z4z}
\textcolor{yellow}{yellow}
\textcolor{red}{red}
\textcolor{blue}{blue}
\end{document}

相关内容