禁止 pdflatex 关于缺少 eps 文件的警告

禁止 pdflatex 关于缺少 eps 文件的警告

我使用该epstopdf包在编译时转换的乳胶文档中的 .eps 图形,效果很好。

当我构建文件时,epstopdf创建该<filename>-eps-converted-to.pdf文件并将其包含在生成的.pdf中。

我现在想删除 .eps 文件,只使用转换后的文件<filename>-eps-converted-to.pdf。这实际上有点管用 -epstopdf不会发出任何抱怨(无论对错),它只是返回

Package epstopdf Info: Output file is already uptodate.

并且生成的 .pdf 包含所需的图像。

然而,我收到了一个烦人的 LaTeX 警告

LaTeX Warning: File `test.eps' not found on input line 8.

梅威瑟:

\documentclass{article}

\usepackage{graphicx}
\usepackage{epstopdf} 
\usepackage{epsfig}

\begin{document}
\includegraphics{test.eps}
\end{document}

使用任何 .eps 文件构建此文件,它都可以正常构建。现在删除或重命名 .eps 文件,它仍然可以正常构建,但会给出上述令人讨厌的警告。

我的问题:有没有什么办法可以禁用缺少 .eps 文件的警告?

原因是我经常在 latex 源目录之外自动生成 .eps 文件,并且只想将 latex 源与转换后的 .pdf 文件一起提交给 git(使用[outdir=./]with 选项在本地输出epstopdf),但不包含源 .eps 文件 - 这样我或任何其他人都可以独立构建它。

更新的 MWE源路径之外的 .eps 文件:

\documentclass{article}
\usepackage{graphicx}
\usepackage[outdir=./]{epstopdf}
\epstopdfsetup{suffix=}
\begin{document}
  \includegraphics{../test}   
\end{document}

答案1

似乎没有办法直接阻止警告出现。

一个解决方法是使用silence包来过滤输出中的警告。

但是,silence无法检测到这些警告,因为它们是使用

\@warning{File `#1' not found}%`

( 的第 166 行graphics.sty)并且silence仅拾取使用\PackageWarning\ClassWarning和生成的警告\@latex@warning\@font@warning的 v1.5b 中的 第 381-431 行silence.sty)。

我已经就此事联系了维护者silence,但没有收到回复,因此最简单的解决方案是在序言中放置以下代码:

\usepackage{silence}

\WarningFilter[latex_file_not_found]{latex}{File}

\makeatletter
\let\sl@warning\@warning
\def\@warning#1{%
  \def\sl@PackageName{latex}%
  \ifsl@NoLine
    \sl@NoLinefalse
  \else
    \sl@StoreMessage{#1}%
  \fi
  \sl@warning{#1}}

\def\@warning@no@line#1{%
  \sl@StoreMessage{#1}%
  \sl@NoLinetrue
  \@warning{#1\@gobble}}
\makeatother

\ActivateWarningFilters[latex_file_not_found]

这将忽略所有\@warning以 开头的File

还可以将所有\includegraphics内容包装起来\ActivateWarningFilters[latex_file_not_found]\DeactivateWarningFilters[latex_file_not_found]仅将其应用于图形导入(我不确定File警告会在哪里出现)。

\includegraphics或者,也可以通过以下重新定义自动将其包含在所有调用中(归功于大卫·卡莱尔这个答案):

\makeatletter
  \let\oldGin@ii\Gin@ii
  \def\Gin@ii[#1]#2{%
  \ActivateWarningFilters[latex_file_not_found]%
  \oldGin@ii[{#1}]{#2}%
  \DeactivateWarningFilters[latex_file_not_found]}
\makeatother

答案2

可以重新配置包epstopdf以从生成的文件名中删除附加名称后缀。添加后缀是为了避免意外覆盖.pdf源文件。但如果所有图像都是.eps文件,则这些预防措施是不必要的。然后包含图像文件而不带扩展名,graphicx 包将根据给出的顺序找到.pdf文件或文件(请参阅包以了解如何操作排序顺序)。.eps\DeclareGraphicsExtensionsgrfext

\documentclass{article}
\usepackage{graphicx}
\usepackage{epstopdf}
\epstopdfsetup{suffix=}
\begin{document}
  \includegraphics{test}   
\end{document}

相关内容