审查图片和表格

审查图片和表格

我的出版物需要公开版和非公开版。我有几个图表和表格,我想通过在上面放置一个大彩色块来审查它们。有一页建议使用\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

相关内容