You need to enable JavaScript to run this app. 更新R、RStudio与MiKTeX后RStudio调用pdflatex编译PDF失败求助
优惠活动
大模型
产品
解决方案
定价
更多

更新R、RStudio与MiKTeX后RStudio调用pdflatex编译PDF失败求助

问题描述

Windows 10 环境下,使用RStudio中的knitr工具调用MiKTeX的pdflatex生成PDF,在2021年2月更新R、RStudio、MiKTeX到当时的最新版本后,出现编译失败的问题。

报错信息为:

"Running pdflatex.exe on testdoc.tex...failed
Error running C:/Users/myusername/AppData/Local/Programs/MiKTeX/miktex/bin/x64/pdflatex.exe (exit code -1073740791)"
或
C:/PROGRA~1/MiKTeX/miktex/bin/x64/pdflatex.exe

测试用的testdoc.Rnw内容为:

\documentclass{article}

\begin{document}
some text
\end{document}

已经完成的排查操作:

  • 先后卸载重装MiKTeX、R、RStudio,分别尝试用户级、管理员级安装(均为2021年2月19日发布的最新版本)
  • 分别以用户模式、管理员模式运行软件,问题复现
  • 确认报错提示中的pdflatex路径正确
  • 执行Sys.which("pdflatex")返回的路径与实际安装路径一致
  • 编译过程无任何日志生成,流程在调用pdflatex的环节直接终止报错
  • 可通过TeX Studio正常编译同路径下的tex文件生成PDF
  • MiKTeX控制台已更新至最新版本
  • RStudio设置中已选择knitr为编译引擎,反复调整相关选项并重启软件无效

其他观察:

  • 修改系统PATH环境变量,分别填入C:\PROGRA~1\MiKTeX\miktex\bin\x64\和C:\Users\myusername\AppData\Local\Programs\MiKTeX\miktex\bin\x64\,无改善
  • 执行Sys.which("pdftex")和Sys.which("pdflatex")返回完全相同的结果,不确定是否与问题相关
  • 命令行直接调用pdflatex可正常编译tex文件,输出如下:
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (MiKTeX 21.2)
entering extended mode
(testdoc.tex
LaTeX2e <2020-10-01> patch level 4
L3 programming layer <2021-02-18> xparse <2020-03-03>
(C:\Program Files\MiKTeX\tex/latex/base/article.cls
Document Class: article 2020/04/10 v1.4m Standard LaTeX document class
(C:\Program Files\MiKTeX\tex/latex/base/size10.clo))
(C:\Program Files\MiKTeX\tex/latex/graphics/graphicx.sty
(C:\Program Files\MiKTeX\tex/latex/graphics/keyval.sty)
(C:\Program Files\MiKTeX\tex/latex/graphics/graphics.sty
(C:\Program Files\MiKTeX\tex/latex/graphics/trig.sty)
(C:\Program Files\MiKTeX\tex/latex/graphics-cfg/graphics.cfg)
(C:\Program Files\MiKTeX\tex/latex/graphics-def/pdftex.def)))
(C:\Program Files\MiKTeX\tex/latex/graphics/color.sty
(C:\Program Files\MiKTeX\tex/latex/graphics-cfg/color.cfg))
(C:\Users\myusername\AppData\Roaming\MiKTeX\tex/latex/framed/framed.sty)
(C:\Program Files\MiKTeX\tex/latex/base/alltt.sty)
(C:\Users\myusername\AppData\Roaming\MiKTeX\tex/latex/upquote/upquote.sty)
(C:\Program Files\MiKTeX\tex/latex/l3backend/l3backend-pdftex.def)
No file testdoc.aux.
(C:\Program Files\MiKTeX\tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) (C:\Program Files\MiKTeX\tex/latex/epstopdf-pkg/epstopdf-base.sty) [1{C:/Users/myusername/AppData/Local/MiKTeX/pdftex/config/pdftex.map}] (testdoc.aux) )<C:/Program Files/MiKTeX/fonts/type1/public/amsfonts/cm/cmr10.pfb>
Output written on testdoc.pdf (1 page, 12954 bytes).
Transcript written on testdoc.log.

R环境信息(执行sessionInfo()输出):

R version 4.0.4 (2021-02-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_4.0.4 tools_4.0.4  

解决方案

报错返回的退出码-1073740791对应Windows系统错误码0xC0000409,即栈缓冲区溢出崩溃,这是MiKTeX 21.2(2021年2月发布版本)的已知缺陷:当pdflatex被非交互式父进程(如RStudio内置的R会话)调用时,自动包安装的初始化流程会触发内存冲突直接崩溃;而TeX Studio、系统命令行属于交互式启动,不会触发该冲突,与观察到的现象完全匹配。可按以下步骤操作解决:

  • 关闭所有正在运行的R、RStudio进程
  • 以管理员身份打开MiKTeX控制台,进入「设置」→「常规」标签页,将缺失包自动安装选项设置为「从不」,保存配置。额外打开C:\Users\你的用户名\AppData\Roaming\MiKTeX\miktex.ini文件,找到AutoInstall字段,确认值为No,如为Yes则手动修改后保存
  • 检查系统环境变量的PATH列表:
    • 删除所有重复的MiKTeX bin路径,仅保留你实际安装的、与Sys.which("pdflatex")返回值一致的单一路径
    • 将该MiKTeX bin路径移动到PATH列表的最顶端,避免加载其他残留TeX发行版的冲突DLL
  • 打开RStudio,进入「全局选项」→「Sweave」设置页:
    • 确认「Rnw文档编译引擎」已选择knitr
    • *取消勾选「使用tinytex编译LaTeX文档」*选项,避免RStudio错误传递调用参数
    • 保存设置后重启RStudio
  • 回到工作目录,在R控制台手动执行以下命令验证调用是否正常:
    knitr::knit("testdoc.Rnw")
    system2("pdflatex", args = "testdoc.tex")
    
    若命令执行成功生成PDF,即可正常使用RStudio的编译按钮生成文档
  • 若上述步骤无效,说明当前安装的MiKTeX版本未修复该缺陷,可彻底卸载MiKTeX,删除残留配置目录C:\Users\你的用户名\AppData\Roaming\MiKTeX和C:\Users\你的用户名\AppData\Local\MiKTeX,安装MiKTeX 21.1(2021年1月发布的稳定版)即可,该版本不存在此调用崩溃问题。

注:观察到的Sys.which("pdftex")和Sys.which("pdflatex")返回结果一致属于正常现象,MiKTeX中这两个命令是同一个可执行文件的不同调用别名,与本次问题无关。


内容的提问来源于stack exchange,提问作者Ben Elizabeth Ward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.02 23:54:02