我的出版物需要公开版和非公开版。我有几个图表和表格,我想通过在上面放置一个大彩色块来审查它们。有一页建议使用\colorbox
。不幸的是,这不适用于 pdf 文件。
所有的图像和表格都很简单\includegraphics
。
有人知道吗?
更新@doncherry,如下:
\begin{figure}[h!]
\centering
\colorbox{black}{\includegraphics[width=1\textwidth]{\string"Image".pdf}}
\caption{Google Adwords - BoI}
\end{figure}
生成:
答案1
您可以使用选项decodearray
并结合合适的开关来生成黑色图像。下图分别显示了未经审查和审查后的图像。
MWE 如下所示。
\documentclass[a4paper]{article}
\usepackage{graphicx,caption}
\newif\ifcensored
\begin{document}
\centering
\ifcensored
\includegraphics[decodearray=
0.0 0.0
0.0 0.0
0.0 0.0, width=5cm]{amato.jpg}%
\captionof{figure}{censored image}
\else
\includegraphics[width=5cm]{amato.jpg}% image with RGB colors
\captionof{figure}{uncensored}
\fi
\includegraphics[decodearray=
0.0 0.0
0.0 0.0
0.0 0.0, width=5cm]{amato.jpg}%
\captionof{figure}{censored image}
\includegraphics[width=5cm]{amato.jpg}% image with RGB colors
\captionof{figure}{uncensored}
\end{document}
.png
该代码与图像配合良好.jpg
。详细信息decodearray
可在PDF 参考手册有趣的是,如果对的值不是零,则可以操纵颜色通道,例如生成红色图像。
当然,你需要加入一个合适的命令来替换\includegraphics
。其中一种方法是定义:
\DeclareRobustCommand{\cimage}[3][]{
\ifcensored
\includegraphics[decodearray=
0.0 0.0
0.0 0.0
0.0 0.0, width=5cm]{#2}%
\captionof{figure}{#3(censored image)}
\else
\includegraphics[width=5cm]{#2}% image with RGB colors
\captionof{figure}{#3}
\fi
}
为了审查你输入的图片,
\censoredtrue
\cimage{amato.jpg}{A caption for your figure}
请注意,图像数据仍然包含在 pdf 中,并且可能会被提取,因此请谨慎使用或在仅分发纸质副本的情况下使用。
答案2
方案一 -\includegraphics
和\DRMincludegraphics
下面的代码以更复杂的方式嵌入了 egreg 的思想。它引入了新命令\DRMincludegraphics
。如果你\iftrue
在开始时设置,它将draft
向隐藏图形的命令添加选项。如果你设置\iffalse
,它的行为与普通的一样。你必须在加载包\includegraphics
后放置代码。graphicx
\iftrue
\makeatletter
\def\@DRMincludegraphics[#1]{\includegraphics[#1,draft]}
\def\DRMincludegraphics{\@ifnextchar[%
\@DRMincludegraphics%
{\includegraphics[draft]}%
}
\makeatother
\else
\let\DRMincludegraphics\includegraphics
\fi
方案二 -\alwaysincludegraphics
和\includegraphics
工作方式与变体一相同,不同之处仅在于默认命令是被隐藏的命令。
\iftrue
\let\alwaysincludegraphics\includegraphics
\makeatletter
\def\bracket@includegraphics[#1]{\alwaysincludegraphics[#1,draft]}
\def\includegraphics{\@ifnextchar[%
\bracket@includegraphics%
{\alwaysincludegraphics[draft]}%
}
\makeatother
\else
\let\alwaysincludegraphics\includegraphics
\fi
答案3
如果你添加的所有图片\includegraphics
都要被审查,那么说
\usepackage[draft]{graphicx}
将使用图像的真实边界框,但会打印带有文件名的框。
如果不需要审查所有图像,我建议使用不同的命令:
\newcommand{\cincludegraphics}[2][]{%
\includegraphics[draft,#1]{#2}}
%\let\cincludegraphics\includegraphics % Uncomment for "private version"
使用\cincludegraphics
方法与 一样\includegraphics
。对于非公开版本,取消注释以下行即可。
这不支持\cincludegraphics*
,但是这相当于指定clip
选项。
如果您还想隐藏文件名,您可以添加(加载后graphicx
)
\usepackage{etoolbox}
\makeatletter
\patchcmd{\Gin@setfile}{\rlap}{\@gobble}{}{}
\makeatother
如果你希望用单词替换文件名,你可以这样说
\usepackage{etoolbox}
\makeatletter
\def\CENSORED@IMAGE#1{{\footnotesize Censored}}
\patchcmd{\Gin@setfile}{\rlap}{\CENSORED@IMAGE}{}{}
\makeatother