当前位置:  开发笔记 > 编程语言 > 正文

在Windows上的rStudio上编织标记为pdf时出错43

如何解决《在Windows上的rStudio上编织标记为pdf时出错43》经验,为你挑选了1个好方法。

我在同事的Windows上运行rStudio项目(我在Mac上工作,所以我不在我的水域).

当我尝试编译为pdf .rmd文件时,我收到此错误:

"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS Plot_per_DPUO.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output "Grafici Professioni/Periodo apr-14 ott-15 test/DH ALLERGOLOGIA - SAN PAOLO.pdf" --template "C:\Users\lucilla.rava\Documents\R\win-library\3.1\rmarkdown\rmd\latex\default.tex" --highlight-style tango --latex-engine pdflatex --variable "geometry:margin=1in" 
pandoc.exe: Could not find image `Grafici%20Professioni\Periodo%20apr-14%20ott-15%20test\DH%20ALLERGOLOGIA%20-%20SAN%20PAOLO_files/figure-latex/set-options-1.pdf', skipping...
pandoc.exe: Error producing PDF from TeX source.
! I can't find file `C:/Users/LUCILL'.
 
                   \protect 
<*> C:/Users/LUCILL~
                    1.RAV/AppData/Local/Temp/tex2pdf.3172/input.tex
Please type another input file name
! Emergency stop.
 
                   \protect 
<*> C:/Users/LUCILL~
                    1.RAV/AppData/Local/Temp/tex2pdf.3172/input.tex
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on C:/Users/LUCILL~1.RAV/AppData/Local/Temp/tex2pdf.3172/tex
put.log.

 Show Traceback

 Rerun with Debug
 Error: pandoc document conversion failed with error 43 

我离开了完整的路径,因为我发现用户路径中有一些奇怪的东西.日志打印此代码段:

`C:/Users/LUCILL'.
     
                       \protect 
    <*> C:/Users/LUCILL~
                        1.RAV

用户名与应该如何不同的地方(lucilla.rava).

在mac上,编译不会产生错误,因此问题不应该出现在代码中.

注意:我在我的Mac上通过谷歌驱动器共享的文件夹中创建了项目.

更新1:感谢@Gnusper,我们注意到路径分隔符错误.Unix和Windows路径是混合的.我需要一种方法来消除混合.

在我的代码中,我使用以下代码定义了路径:

    months.vec <- get.months(unique(Data$Periodo))
    months.vec <- format(months.vec, '%b-%y')

    if (type == 1) folder.name <- 'Grafici Generali'
    else if (type == 2) folder.name <- 'Grafici Professioni'
    else if (type == 3) folder.name <- 'Grafici Indicazioni'

    folder.path <- file.path(folder.name, sprintf('Periodo %s %s%s', months.vec[1], tail(months.vec, 1), test))

    dir.create(folder.path, recursive = T, showWarnings = F)

    for (UO in unique(Data$UO)[1:5]) {
        print(file.path(folder.path, sprintf('%s.pdf', sub(pattern = "/", replacement = ' ', UO, fixed = T))))
        render('Plot per DPUO.Rmd', clean = T, output_file = file.path(folder.path, sprintf('%s.pdf', sub(pattern = "/", replacement = ' ', UO, fixed = T))))
    }

我在Windows机器上用一个全新的R项目做了一些测试,结果如下:

> file.path('affs', '0sdfsdf')
[1] "affs/0sdfsdf"
> .Platform$file.sep
[1] "/"
> 

路径分隔符仍然像Unix一样.阅读file.path的帮助我发现了这个:

file.path(...,fsep = .Platform $ file.sep)

[...]

注意

默认情况下,组件在Windows上由/(不)分隔.

由于某种原因,该函数也在Windows上实现了Unix分隔符...我尝试运行.Platform $ file.sep < - '\\'.但是当我使用file.path()时,我仍然得到'/'分隔符.所以fsep = .Platform $ file.sep在每次运行函数时都不会计算的参数中.

在新项目中,我做了更多测试:

dir.create(file.path('ssdg','fgsfdg'), recursive = T, showWarnings = F)
write(c(1,2,3,4,5), file = 'ssdg/fgsfdg/test.txt')
write(c(1,2,3,4,5), file = 'ssdg\\fgsfdg\\test2.txt')
write(c(1,2,3,4,5), file = 'ssdg/fgsfdg\\test3.txt')

所有这些都可以工作并创建文件.我也尝试了dir.create()与各种分隔符组合,所有这些都有效.看起来像R了解在管理文件和更正分隔符时要做什么.

但由于.rmd文件的编译是由pandoc通过shell命令执行的,因此不会修复分隔符的混合并发生错误.

我发现奇怪的是,在错误日志中,使用Unix路径调用pandoc

C:/ Program Files/RStudio/bin/pandoc/pandoc

pandoc如何运行并引发错误?

总结我需要我的代码在两个平台上运行.

更新2:我尝试从代码中的每个路径中删除空格.此外,我尝试将脚本和rmd文件移动到本地文件夹中的新项目,以检查在GoogleDrive上创建共享项目所引入的问题.没有任何改进.

更新3:我在https://github.com/rstudio/rmarkdown上将问题发布为问题.我实现了我在那里给出的建议(首先在与项目相同的文件夹中创建输出,然后将其移动到实际的目标文件夹)但没有运气.但我现在很确定问题在于创建和检索临时文件.

如果我在Windows上运行tempdir()它返回:

tempdir()
[1] "C:\\Users\\LUCILL~1.RAV\\AppData\\Local\\Temp\\RtmpUrsOgH"

奇怪的缩短用户名,也会在错误日志中报告.

如果我跑:

normalizePath(tempdir())
[1] "C:\\Users\\lucilla.rava\\AppData\\Loc

我得到了正确的道路.

更新4:如果它有用:我每次打开R项目时都需要设置pdftext的路径.

在.Rprofile文件中,我声明:

Sys.setenv(PATH = paste(Sys.getenv("PATH"), "C:\\Program Files\\MiKTeX 2.9\\miktex\\bin\\x64", sep = .Platform$path.sep))

更新5:看起来很奇怪,我们搬到了新的Windows电脑,这次编织工作了.不知道为什么......不过如果有人仍然知道为什么会受到赞赏,因为另一台计算机是我同事的主要工作站.



1> 小智..:

典型的Windows问题.您的路径中有"\",需要将其替换为"/"

"Grafici Professioni/Periodo apr-14 ott-15 test/DH ALLERGOLOGIA - SAN PAOLO.pdf" --template "C:\Users\lucilla.rava\Documents\R\win-library\3.1\rmarkdown\rmd\latex\default.tex

"Grafici Professioni/Periodo apr-14 ott-15 test/DH ALLERGOLOGIA - SAN PAOLO.pdf" --template "C:/Users/lucilla.rava/Documents/R/win-library/3.1/rmarkdown/rmd/latex/default.tex

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有