我尝试使用LaunchControl(用于在OSX上调度类似cron的作业的启动GUI)在计时器上编译knitr脚本。
我有一个执行此操作的dispatcher.R脚本:
#!/Library/Frameworks/R.framework/Resources/Rscript
library("knitr")
setwd("~/somedirectory")
knit2pdf("my_script.Rnw", output= "my_script.tex")
当我在RStudio中以交互方式运行它时,my_script.Rnw效果很好。我得到了所需的PDF输出。但是,当launchd运行dispatcher.R脚本时,我收到此错误:
texi2dvi中的错误(file = file,pdf = TRUE,clean = clean,quiet = quiet,: 正在运行' texi2dvi' on' my_script.tex'失败。 执行暂停
生成.tex文件,但它没有编译。我会说我的LaTeX安装路径有问题,但由于它使用knit2pdf()
工作,我不确定。可能是什么问题?
仍然在努力。更新:
没有.log文件通过LaunchControl使用knit2pdf()
生成,但我得到一个.tex文件和/ figure文件夹。
我更新了MacTex,并尝试了一个空文档的最小示例,我得到了关于texi2dvi的相同错误。
knit2pdf("my_script.Rnw", output = "my_script.tex")
时,返回到RStudio并运行texi2dvi("my_script.tex", pdf = TRUE)
,然后我得到了预期的结果。 In my_script_latex_pkg("framed", system.file("misc", "framed.sty", package = "knitr")) : unable to find LaTeX package 'framed'; will use a copy from knitr
Sys.setenv(PATH = paste(Sys.getenv("PATH"),"/usr/texbin",sep=":"))
并且它没有帮助。$ Rscript dispatcher.R
工作得很好。 PDF编译。 Rscript dispatcher.R
运行bash脚本不工作;关于texi2dvi的相同错误。 答案 0 :(得分:2)
要使用LaunchControl运行.Rnw文件进行任务调度,请在同一目录中创建以下文件。然后,在调度程序中运行* .sh脚本。瞧!我在原始帖子中遇到的问题是LaunchControl没有(默认情况下,至少)读取〜/ .bash_profile,因此将PATH变量添加到.sh脚本中可解决此问题。
这是您可以在没有RStudio问题的情况下编译的任何knitr
脚本。
#!/Library/Frameworks/R.framework/Resources/Rscript
library("knitr")
setwd("~/some_directory")
knit2pdf("yourscript.Rnw", output = "yourscript.tex")
确保您的LaTeX安装有PATH变量。
#! /bin/bash
PATH="/usr/texbin:${PATH}"
export PATH
Rscript yourscript_dispatcher.R
此解决方案适用于R版本3.3.2(2016-10-31)的OSX Yosemite 10.10.5。