占位符中的自定义文本没有文件路径

占位符中的自定义文本没有文件路径

如何用占位符替换图像,而不显示文件路径,但带有自定义文本(例如“由于版权原因删除图像”)?我看过这个答案(无路径的占位符)但我想将它应用于整个文档,而无需密钥,并且一直在努力根据自己的需要进行修改。我想在应用这些更改的非常大的文档中保持分页不变。同样,此文档被分解为许多不同的子文件,因此理想情况下,解决方案不会涉及更改正在使用的图像的每个实例。

\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}

(警告:我尚未能够在我所在的地方测试这一点。)

相关内容