我正在使用 Sweave(在 Emacs 中)生成报告。我可以.tex
很好地编译文件。我的代码中有一些我生成的图像(PDF)(我已将graphicx
其包含在我的 中\usepackage{}
;我没有处理来自 LaTeX 查找 EPS 文件的问题)。当我运行pdflatex
生成的*.tex
文件时,出现以下错误。有问题的图片(normalization_analysis-002)与我的文件位于同一文件夹中*.tex
。此外,无论我尝试通过 Emacs 还是通过命令行进行编译,我都会出现此错误;在 Emacs 和命令行中,我的工作目录与文件所在的目录相同*.tex
。最后,这是第一次出现此问题,尽管我已经在同一台计算机系统上为各种项目使用 Emacs + Sweave 几个月了。发生了什么?
我应该指出,在同一系统上重新编译其他文件是可行的。我无法生成可重现的错误,因为我使用的数据尚未公开,所以我想寻求有关如何解决此问题的建议。
日志可用这里
! LaTeX Error: File `normalization_analysis-002' not found.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.30 \includegraphics{normalization_analysis-002}
?
! Emergency stop.
...
l.30 \includegraphics{normalization_analysis-002}
! ==> Fatal error occurred, no output PDF file produced!
Transcript written on normalization_analysis.log.
根据 @David Carlisle 的评论,添加.pdf
到参数会\includegraphic{}
产生以下错误:
LaTeX Warning: File `normalization_analysis-002.pdf' not found on input line 86
.
! Package pdftex.def Error: File `normalization\unhbox \voidb@x \penalty \@M \h
skip \z@skip \T1\textunderscore \discretionary {-}{}{}\penalty \@M \hskip \z@sk
ip analysis-002.pdf' not found.
See the pdftex.def package documentation for explanation.
Type H <return> for immediate help.
...
l.86 ...degraphics{normalization_analysis-002.pdf}
答案1
更新后的问题摘录.log
显示,下划线是一个活动字符,当graphics
带有驱动程序的包pdftex.def
查找文件时,它会被展开。在这里,您可以使用以下命令停用下划线标记\string
:
\includegraphics{normalization\string_analysis-002}
该.log
文件显示下划线已由包激活underscore
。
活动字符的作用类似于命令或宏。当graphics
包查找图像文件名时,它还会扩展宏(允许通过宏指定文件名的各部分)。包underscore
定义_
为活动字符。因此,可以直接使用下划线来获取下划线,而无需使用反斜杠。活动的扩展结果_
给出了以下内容,您可以在.log
文件中看到:
"\unhbox \voidb@x \penalty \@M \hskip \z@skip \T1\textunderscore \discretionary {-}{}{}\penalty \@M \hskip \z@skip "
您的系统中肯定不包含具有如此有趣名称的文件名。
该软件包通过支持其简写字符的机制对underscore
活动下划线采取了一些预防措施,但是该软件包不支持 babel 简写。babel
graphics
该命令\string
将下一个标记转换为具有非活动字符的字符表示(类别代码 12,空格具有类别代码 10)。因此,活动标记_
变为非活动下划线字符标记。
答案2
在 Windows 操作系统中:转到开始 --> Miktex --> MikteX 控制台,然后更改为管理员模式,只需选择更新中心,然后更新您的程序包