使用LaunchControl

时间:2017-01-18 23:50:30

标签: r knitr launchd

我尝试使用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的相同错误。

  • 当我使用LaunchControl和运行knit2pdf("my_script.Rnw", output = "my_script.tex")时,返回到RStudio并运行texi2dvi("my_script.tex", pdf = TRUE),然后我得到了预期的结果。
  • 问题在Sierra和Yosemite上重现
  • 在Sierra上,有一个关于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编译。
  • 在LaunchControl中使用Rscript dispatcher.R运行bash脚本工作;关于texi2dvi的相同错误。

1 个答案:

答案 0 :(得分:2)

要使用LaunchControl运行.Rnw文件进行任务调度,请在同一目录中创建以下文件。然后,在调度程序中运行* .sh脚本。瞧!我在原始帖子中遇到的问题是LaunchControl没有(默认情况下,至少)读取〜/ .bash_profile,因此将PATH变量添加到.sh脚本中可解决此问题。

1)您的* .Rnw脚本

这是您可以在没有RStudio问题的情况下编译的任何knitr脚本。

2)A * .R脚本

#!/Library/Frameworks/R.framework/Resources/Rscript
library("knitr")
setwd("~/some_directory")
knit2pdf("yourscript.Rnw", output = "yourscript.tex")

3)A * .sh脚本

确保您的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。