如何用占位符替换图像,而不显示文件路径,但带有自定义文本(例如“由于版权原因删除图像”)?我看过这个答案(无路径的占位符)但我想将它应用于整个文档,而无需密钥,并且一直在努力根据自己的需要进行修改。我想在应用这些更改的非常大的文档中保持分页不变。同样,此文档被分解为许多不同的子文件,因此理想情况下,解决方案不会涉及更改正在使用的图像的每个实例。
\documentclass{article}
\usepackage[draft]{graphicx}
\begin{document}
\includegraphics[width=\textwidth]{mypicture}
\end{document}
答案1
您可以修补该命令以用其他文本替换文件名
\documentclass{article}
\usepackage[draft]{graphicx}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\Gin@setfile{\expandafter\strip@prefix\meaning\@tempa}{Image removed}{}{}
\makeatother
\begin{document}
\includegraphics[width=\textwidth]{example-image}
\end{document}
编辑
要使文本居中,您可以使用
\makeatletter
\xpatchcmd\Gin@setfile{\expandafter\strip@prefix\meaning\@tempa}{\makebox[\Gin@req@width]{Image removed}}{}{}
\makeatother
答案2
您可以将包含图形命令包装在您自己的命令中,其中包括一个条件来测试是否显示图形或替代文本。
最好使用 graphicx 在草稿模式下使用的相同条件,但只是为了演示,我使用了一个简单的 \newif 命令。
Xparse 允许您使用 O{} 定义一个带有两个可选参数和默认值的命令。因此在下面的命令中,第一个可选参数指定传递给 \includegraphics 的大小参数,否则将使用默认值。强制参数是文件名。最后一个可选参数是替代文本,如果您未指定任何内容,则再次使用默认值。
\documentclass{article}
\usepackage[draft]{graphicx}
\usepackage{xparse}
\newif\ifimages
\imagesfalse
\NewDocumentCommand{\maybeincludegraphics}
{ O{width=\textwidth} m O{Image removed for copyright reasons} }{%
\ifimages
\includegraphics[#1]{#2}%
\else
\fbox{\emph{#3}}%
\fi
}
\begin{document}
\maybeincludegraphics{image1}
\maybeincludegraphics[width=3in]{image2}
\maybeincludegraphics{image3}[You can't handle this image]
\end{document}
(警告:我尚未能够在我所在的地方测试这一点。)