编辑Windows环境变量

尼尔森·冈

我已阅读以下几个问题:

在R中为pdflatex设置miktex的路径

如何在R中设置用于编织的乳胶路径?

https://tex.stackexchange.com/questions/267299/how-to-fix-the-sorry-but-c-miktex-pdftex-exe-did-not-succeed-error https://tex.stackexchange.com / questions / 429706 / rstudio-not-detecting-miktex https://tex.stackexchange.com/questions/231595/rstudio-cant-find-pdflatex-on-windows-7

上面的列表并没有穷尽我尝试过的所有内容,还包括重新安装RStudio,R和MikTex。

然后我以为我可以编辑路径以删除R不断调用的MikTeX 1.9,但不知道该怎么做。

我发现此函数表明我已经为MikTex设置了正确的路径,但是R继续调用MikTeX 1.9:

Sys.which2 <- function(cmd) {
  stopifnot(length(cmd) == 1)
  if (.Platform$OS.type == "windows") {
    suppressWarnings({
      pathname <- shell(sprintf("where %s 2> NUL", cmd), intern=TRUE)[1]
    })
    if (!is.na(pathname)) return(setNames(pathname, cmd))
  }
  Sys.which(cmd)
}

Sys.which之间的输出不同Sys.which2


Sys.which2("pdflatex")
                                                       pdflatex 
"C:\\Program Files\\MiKTeX 2.9\\miktex\\bin\\x64\\pdflatex.exe" 

 Sys.which("pdflatex")
                                                  pdflatex 
"C:\\PROGRA~1\\MIKTEX~1.9\\miktex\\bin\\x64\\pdflatex.exe" 


我怎样才能最好地解决这个问题?

我的想法是以某种方式找到R在哪里找到此MikTeX 1.9并替换它,但我无法在系统上找到它,也不十分了解Sys.which幕后行为。

编辑

尝试确定1.9的位置是:

stringr::str_detect(unlist(strsplit(Sys.getenv("PATH"),";")),"latex")
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

输出sys.getenv("PATH"

“ C:/ Program Files / MiKTeX 2.9 / miktex / bin / x64:C:\ Program Files \ R \ R-3.6.2 \ bin \ x64; C:\ Program Files(x86)\ Common Files \ Oracle \ Java \ javapath; C:\ ProgramData \ Oracle \ Java \ javapath; C:\ Program Files \ copasi.org \ COPASI 4.22.170 \ bin; C:\ Program Files(x86)\ Intel \ TXE Components \ iCLS \; C:\程序文件\英特尔\ TXE组件\ iCLS \; C:\ WINDOWS \ system32; C:\ WINDOWS; C:\ WINDOWS \ System32 \ Wbem; C:\ WINDOWS \ System32 \ WindowsPowerShell \ v1.0 \; C:\ Users \ Administrator \ AppData \ Local \ Microsoft \ WindowsApps; C:\ Recovery \ OEM \ Backup \; C:\ Program Files \ Intel \ TXE Components \ DAL \; C:\ Program Files(x86)\ Intel \ TXE Components \ DAL \; C:\ Program Files \ Intel \ TXE Components \ IPT \; C:\ Program Files(x86)\ Intel \ TXE Components \ IPT \; C:\ Program Files \ Intel \ WiFi \ bin \; C:\ Program Files \ Common Files \ Intel \ WirelessCommon \; C:\ WINDOWS \ system32; C:\ WINDOWS; C:\ WINDOWS \ System32 \ Wbem; C:\ WINDOWS \ System32 \ WindowsPowerShell \ v1.0 \; C:\ WINDOWS \ System32 \ OpenSSH \; E:\ MATLAB \ runtime \ win64; E:\ MATLAB \ bin; C:\ Program Files \ Git \ cmd; C: \ Program Files \ Microsoft SQL Server \ Client SDK \ ODBC \ 130 \ Tools \ Binn \; C:\ Program Files(x86)\ Microsoft SQL Server \ 140 \ Tools \ Binn \; C:\ Program Files \ Microsoft SQL Server \ 140 \ Tools \ Binn \; C:\ Program Files \ Microsoft SQL Server \ 140 \ DTS \ Binn \; C:\ ProgramData \ chocolatey \ bin; C:\ Program Files \ MiKTeX 2.9 \ miktex \ bin \ x64 \; C :\ Users \我的名字\ AppData \ Local \ Programs \ Python \ Python38 \ Scripts \; C:\ Users \我的名字\ AppData \ Local \ Programs \ Python \ Python38 \; C:\ Users \我的名字\ AppData \ Local \ Programs \ Python \ Python36 \ Scripts \; C:\ Users \ my name \ AppData \ Local \ Programs \ Python \ Python36 \; C:\ Users \ my name \ Desktop \ wget-1.20.3-win64; C:\用户\我的名字\ AppData \ Local \ Programs \ Python \ Python37 \ Scripts \; C:\用户\我的名字\ AppData \ Local \ Programs \ Python \ Python37 \; C:\ Users \我的名字\ AppData \ Local \ Microsoft \ WindowsApps; C:\ Users \我的名字\ AppData \ Local \ Programs \ Python \ Python37-32; E:\ jdk-12_windows-x64_bin; C:\ Users \我的名字\ AppData \ Local \ Microsoft \ WindowsApps; C:\ Users \ my name \ Desktop \ adb +-+ platform + tools + v28.0.1“

Yihui Xie

C:\\PROGRA~1\\MIKTEX~1.9并不意味着MiKTeX v1.9。这是一个8.3文件名由于字符串MiKTeX 2包含“特殊字符”(即空格),因此将其转换为MIKTEX~1(该.9部分仍保留为“扩展名”,因此MiKTeX 2.9成为MIKTEX~1.9,在这种情况下确实令人困惑)。

我觉得您实际上要解决的问题可能是另外一个问题。如果是这样,您可以提出实际问题。据我所知,您的环境变量没有任何问题。

如果您确实需要长名称,则可以调用normalizePath()将8.3短名称转换为长名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章