使用方法\includegraphics[width=1.7cm]{MyImage}
非常简单直接。如果文件MyImage
不存在,则整个过程将被取消。因此,我想提前检查文件是否存在 - 否则会打印一些通用警告 - 最好在自己的命令中使用它,例如
\newcommand{\useGraphic}[2]{
\IfFileExists{#1}{
\includegraphics[#2]{#1}
}{
\input{#1} % The warnings will be in the tex file (e.g. MyImage.tex)
}
}
我对这种方法的主要问题是文件可以是或MyImage.png
或MyImage.jpeg
...因为我不想单独指定它们,有没有更简单的方法来处理它?使用 LaTeX 代码还是通过 LuaTeX 处理它更好?
答案1
您可以使用gincltex
:
\documentclass{article}
\usepackage{graphicx}
\usepackage{gincltex}
\makeatletter
\newcommand{\usegraphics}[2][]{%
\begingroup
\edef\Gin@extensions{\Gin@extensions,.tex}
\includegraphics[#1]{#2}%
\endgroup
}
\makeatother
\begin{document}
\usegraphics[width=3cm]{example-image}
\usegraphics[width=3cm]{example-image-a.png}
\usegraphics[width=3cm]{qwertyuiop}
\end{document}
默认情况下,.tex
不会添加到扩展列表中,因此我在本地执行此操作。
该文件qwertyuiop.tex
包含\fbox{WARNING}
。
答案2
软件包已在测试文件并出现错误,因此您可以将其降级为警告。您可以根据要执行的操作添加更多代码,而不是显示文件,但是……
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newcommand\zzz[2][]{{%
\def\@latex@error##1##2{\@warning{##1}}%
\def\PackageError##1##2##3{\PackageWarning{##1}{##2}}%
\includegraphics[#1]{#2}}}
\makeatother
\begin{document}
\zzz{missingfile}
\zzz[width=.5\textwidth]{missingfile}
\zzz{missingfile.png}
\end{document}