图像占位符与 \includegraphics[draft] 相同,但不显示路径

图像占位符与 \includegraphics[draft] 相同,但不显示路径

我想将演讲幻灯片上传到存储库,其中提交的所有材料都应遵循特定许可证。为此,我需要排除实际使用的幻灯片中存在的某些不适用许可证的图像,并使用占位符代替。这 \includegraphics[draft,..几乎可以满足我的要求,只是我的文档中的实际命令类似于

\includegraphics[draft,widht=0.7\textwidth]{../../../talks/1999/acapulco/filename}

这会导致完整路径显示在占位符框中并超出其范围。

我能以某种方式阻止显示路径吗?它既丑陋又包含比我想要传达的更多的信息。仅文件名就可以了,但不是必需的。如果我\includegraphics完全删除,布局会发生变化,并且/或者我必须手动调整大小并放置占位符。

答案1

以下是添加密钥的解决方案noincl

\documentclass{article}

\usepackage{graphicx,etoolbox}

\makeatletter
\define@key{Gin}{noincl}[true]{%
  \lowercase{\Gin@boolkey{#1}}{draft}%
  \lowercase{\Gin@boolkey{#1}}{noincl}%
}
\newif\ifGin@noincl

\patchcmd{\Gin@setfile}{\hb@xt@}{\noinc@box{#3}}{}{}

\def\noinc@box#1#2#3{%
  \ifGin@noincl
    \do@noinc@box{#1}{#2}{#3}%
  \else
    \hb@xt@#2{#3}
  \fi
}

\def\do@noinc@box#1#2#3{%
  \hb@xt@\Gin@req@width{%
    \vrule\hss
    \vbox to \Gin@req@height{%
      \hrule \@width \Gin@req@width
      \vss
      \edef\@tempa{#1}%
      \expandafter\filename@parse\expandafter{\@tempa}%
      \rlap{%
        \kern3\p@
        \parbox{\dimexpr\Gin@req@width-6\p@}{
          \raggedright\footnotesize Not included for copyright reasons
        }%
      }%
      \vss
      \rlap{\kern3\p@ \tiny\ttfamily\filename@base.\filename@ext}%
      \vss
      \hrule}%
    \hss\vrule}%
}
\makeatother

\begin{document}

\includegraphics[noincl,width=4cm]{/usr/local/texlive/2014/texmf-dist/tex/latex/mwe/example-image.pdf}

\end{document}

在此处输入图片描述

答案2

todonotes有显示缺失数字的功能。

\documentclass{article}
\usepackage{todonotes}
\begin{document}
  \begin{figure}[htb]
    \missingfigure[figwidth=0.7\textwidth]{My first figure}
    \missingfigure[figheight=6cm]{}
  \end{figure}
\end{document}

在此处输入图片描述

答案3

就像todonotes这样做一样,您可以只包含一些 TikZ 矩形。我为您制作了一些宏,它获取实际图片的尺寸并将它们设置为虚拟节点:

% arara: pdflatex

\documentclass{article}
\usepackage{graphicx}
\newif\ifdraft
\drafttrue
%\draftfalse
\newsavebox\imagebox
\usepackage{xparse}
\DeclareDocumentCommand \includedraftpic { o m }{%
    \sbox\imagebox{\includegraphics[#1]{#2}}%
    \ifdraft
    \begin{tikzpicture} 
    \node[draw, text width=\the\wd\imagebox,minimum height=\the\ht\imagebox, align=center, inner sep=0]{removed for copy right reasons};
    \end{tikzpicture}
    \else
    \usebox\imagebox
    \fi
}

\begin{document}
    \begin{figure}
        \centering
        \includedraftpic[widht=0.7\textwidth]{../../../talks/1999/acapulco/filename}
    \end{figure}
\end{document}

您现在要做的就是切换条件draftfalsedrafttrue

在此处输入图片描述

答案4

你可以稍微改变这个答案不显示文件名并将其用作命令:

\documentclass{book}
\usepackage{picins}
\usepackage{graphicx}

\makeatletter
\newcommand{\imagedraftmode}{
\def\Ginclude@graphics##1{%
    \parpic(\Gin@@ewidth,\Gin@@eheight)[d]{}\picskip{0}}%
}
\makeatother

\begin{document}
\begin{figure}
\centering
\imagedraftmode
  \includegraphics[width=8cm,height=5cm]{Koala}%
  \caption{My Picture}
\end{figure}
\begin{figure}
\centering
  \includegraphics[width=8cm,height=5cm]{Koala}%
  \caption{My Picture}
\end{figure}
\end{document}

相关内容