Lualatex:检查图形是否存在,否则使用文件

Lualatex:检查图形是否存在,否则使用文件

使用方法\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.pngMyImage.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}

相关内容