我使用该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
\DeclareGraphicsExtensions
grfext
\documentclass{article}
\usepackage{graphicx}
\usepackage{epstopdf}
\epstopdfsetup{suffix=}
\begin{document}
\includegraphics{test}
\end{document}