我正在尝试使用knitr
“编译 pdf”功能在 Rstudio 中编译一个简单的 Rnw 文件。但它给出了一个错误。
这是我所拥有的hello.Rnw
:
\documentclass{article}
\begin{document}
Hello World
\end{document}
错误:
Running pdflatex.exe on hello.tex...failed
Error running C:/PROGRA~1/MIKTEX~1.9/miktex/bin/x64/pdflatex.exe (exit code 1)
但是,如果我hello.tex
使用 TeXworks 排版,它会生成一个 pdf 文件,没有任何错误。我检查了我的Sys.getenv("PATH")
变量,它显示了正确的 MiKTeX 位置。所以我不确定为什么 RStudio pdflatex 不起作用。
"C:\\Users\\zk0q8r5\\Documents\\R\\R-3.5.0\\bin\\x64;
C:\\ProgramData\\Oracle\\Java\\javapath;
C:\\WINDOWS\\system32;
C:\\WINDOWS;
C:\\WINDOWS\\System32\\Wbem;
C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;
C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;
C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;
C:\\Program Files\\1E\\NomadBranch\\;
C:\\Program Files (x86)\\Microsoft Application Virtualization Client;
C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;
C:\\Program Files (x86)\\WebEx\\Productivity Tools;
C:\\Program Files\\TortoiseSVN\\bin;
C:\\Program Files\\MiKTeX 2.9\\miktex\\bin\\x64;
C:\\MiKTeX\\miktex\\bin\\x64\\"
答案1
所以我找到了问题所在。我的机器上安装了两个 MikTeX。而 R PATH 变量指向了错误的那个。我只需按照以下链接中的说明操作,问题就解决了。谢谢! https://stackoverflow.com/questions/33650869/how-can-i-set-the-latex-path-for-sweave-in-r
答案2
我遇到了完全相同的问题。我的解决方案是在这个帖子中:
为了找到解决方案,我首先必须得到一个比
Running pdflatex.exe on hello.tex...failed
Error running C:/PROGRA~1/MIKTEX~1.9/miktex/bin/x64/pdflatex.exe (exit code 1)
我注意到,当我尝试编译 .Rnw 文件时,它会创建一个 .tex 文件。因此,我打开了该 .tex 文件并尝试在我的常规 LaTeX 工作环境(对我来说是 VSCode)中对其进行编译,结果收到了以下错误消息:
LaTeX Error: File `Sweave.sty' not found.
所以真正的问题是 LaTeX 找不到这个文件,而解决方案(对我来说)在上面的链接中。我不得不把这一切都写出来,因为解决这个问题花费了我太多时间,所以我不想让它白费。
答案3
我收到了同样的错误信息,即:
运行 C:/PROGRA~1/MIKTEX~1.9/miktex/bin/x64/pdflatex.exe 时出错(退出代码 1)
我检查了 PATH,没有问题——而且我只安装了一个 tex,所以 Sunny Kanugo 的答案不起作用。
为了尝试一下,我找到了一个之前*.tex
在 RStudio 中用 创建的文件knitr
,并用 PdfLaTeX 对其进行了编译。在此期间,MikTeX 安装了许多sty
文件,最后成功创建了一个 PDF。错误消失了:也就是说,我可以从 RStudio 内部编译 PDF 文件。
因此,当您从 RStudio 内部运行 PdfLaTeX 时,某些软件包似乎无法安装,而是会出现错误。下面是tex
我下次遇到此问题时将使用的“Hello world”文件(如果我出于某种原因必须重新安装 MiKTeX,则很容易发生这种情况);从文本框复制所有内容并将其保存为带*.tex
扩展名的纯文本文件;然后在正确的位置打开命令提示符(即您保存该tex
文件的文件夹),键入pdflatex
,然后键入文件的名称,看看是否出现 PDF。
\documentclass{article}\usepackage[]{graphicx}\usepackage[]{color}
% maxwidth is the original width if it is less than linewidth
% otherwise use linewidth (to make sure the graphics do not exceed the margin)
\makeatletter
\def\maxwidth{ %
\ifdim\Gin@nat@width>\linewidth
\linewidth
\else
\Gin@nat@width
\fi
}
\makeatother
\definecolor{fgcolor}{rgb}{0.345, 0.345, 0.345}
\newcommand{\hlnum}[1]{\textcolor[rgb]{0.686,0.059,0.569}{#1}}%
\newcommand{\hlstr}[1]{\textcolor[rgb]{0.192,0.494,0.8}{#1}}%
\newcommand{\hlcom}[1]{\textcolor[rgb]{0.678,0.584,0.686}{\textit{#1}}}%
\newcommand{\hlopt}[1]{\textcolor[rgb]{0,0,0}{#1}}%
\newcommand{\hlstd}[1]{\textcolor[rgb]{0.345,0.345,0.345}{#1}}%
\newcommand{\hlkwa}[1]{\textcolor[rgb]{0.161,0.373,0.58}{\textbf{#1}}}%
\newcommand{\hlkwb}[1]{\textcolor[rgb]{0.69,0.353,0.396}{#1}}%
\newcommand{\hlkwc}[1]{\textcolor[rgb]{0.333,0.667,0.333}{#1}}%
\newcommand{\hlkwd}[1]{\textcolor[rgb]{0.737,0.353,0.396}{\textbf{#1}}}%
\let\hlipl\hlkwb
\usepackage{framed}
\makeatletter
\newenvironment{kframe}{%
\def\at@end@of@kframe{}%
\ifinner\ifhmode%
\def\at@end@of@kframe{\end{minipage}}%
\begin{minipage}{\columnwidth}%
\fi\fi%
\def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
\colorbox{shadecolor}{##1}\hskip-\fboxsep
% There is no \\@totalrightmargin, so:
\hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
\MakeFramed {\advance\hsize-\width
\@totalleftmargin\z@ \linewidth\hsize
\@setminipage}}%
{\par\unskip\endMakeFramed%
\at@end@of@kframe}
\makeatother
\definecolor{shadecolor}{rgb}{.97, .97, .97}
\definecolor{messagecolor}{rgb}{0, 0, 0}
\definecolor{warningcolor}{rgb}{1, 0, 1}
\definecolor{errorcolor}{rgb}{1, 0, 0}
\newenvironment{knitrout}{}{} % an empty environment to be redefined in TeX
\usepackage{alltt}
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\begin{document}
Hello World
\end{document}