pdflatex 找不到 PDF

pdflatex 找不到 PDF

我正在使用 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 简写。babelgraphics

该命令\string将下一个标记转换为具有非活动字符的字符表示(类别代码 12,空格具有类别代码 10)。因此,活动标记_变为非活动下划线字符标记。

答案2

在 Windows 操作系统中:转到开始 --> Miktex --> MikteX 控制台,然后更改为管理员模式,只需选择更新中心,然后更新您的程序包

相关内容