如果未找到图像,则将删除空白页

如果未找到图像,则将删除空白页

我尝试执行以下代码...我想要的是,如果我使用的目录中没有“image2”,Latex 将删除第二页(我希望它是一个“动态”文档),可以吗?

\documentclass[10pt,a4paper]{article}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{float}
\usepackage{textpos}
\usepackage[margin=0.5in,includefoot]{geometry}


\begin{document}

\begin{textblock}{2.5}(0,0)
\raggedright
    \begin{figure}[H]
    \includegraphics[height=3.2in]{image1}
    \centering
    \end{figure}
\end{textblock}

\newpage
\begin{textblock}{2.5}(0,0)
\raggedleft
    \begin{figure}
    \includegraphics[height=3.2in]{image2}
    \centering
    \end{figure}    
\end{textblock}

\end{figure}
\end{document}

答案1

如果您不想明确给出扩展,则必须测试所有可能的扩展。

\documentclass[10pt,a4paper]{article}
\usepackage{graphicx}
\usepackage{textpos}
\usepackage[margin=0.5in,includefoot]{geometry}

\makeatletter
\newcommand{\IfImageExists}[1]{%
  \@tempswafalse
  \@for\IIE@temp:=\Gin@extensions\do{% a similar test is in graphics.sty
    \IfFileExists{#1\IIE@temp}{\@tempswatrue}{}%
  }%
  \if@tempswa
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\makeatother

\begin{document}

\IfImageExists{example-image}{%
  \begin{textblock}{2.5}(0,0)
  \raggedright
  \includegraphics[height=3.2in]{example-image}
  \end{textblock}}
  {}

\newpage

\IfImageExists{./example-image}{%
  \begin{textblock}{2.5}(0,0)
  \raggedright
  \includegraphics[height=3.2in]{./example-image}
  \end{textblock}}
  {}

\end{document}

这只会打印一张图片,因为我没有example-image.???适合包含图形的扩展名的文件,但是在全局搜索目录(第一次调用)中有(mwe包的​​一部分)。

第三个参数可以\IfImageExists包含在未找到图像文件时要执行的代码。

如果你有一个固定的扩展名,那么.png你可以使用

\IfFileExists{./image1.png}{<true>}{<false>}

而不是\IfImageExists

答案2

使用\IfFileExists命令。生成第二个图形的代码块变为

\IfFileExists{image2}{%
  \newpage
  \begin{textblock}{2.5}(0,0)
    \raggedleft
    \begin{figure}
      \includegraphics[height=3.2in]{image2}
      \centering
    \end{figure}    
  \end{textblock}%
}{}

相关内容