运行 带有 LaunchControl 的 .Rnw 脚本时出现 texi2dvi() 错误
texi2dvi() error when running a .Rnw script with LaunchControl
我正在尝试使用 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 输出。但是,当启动 运行s dispatcher.R 脚本时,我收到此错误:
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet, :
Running 'texi2dvi' on 'my_script.tex' failed.
Execution halted
生成了 .tex 文件,但没有编译。我会说这是我的 LaTeX 安装路径的问题,但由于它使用 knit2pdf()
我不确定。可能是什么问题?
仍在努力。更新:
knit2pdf()
通过 LaunchControl 没有生成 .log 文件,但我得到了一个 .tex 文件和 /figure 文件夹。
我更新了 MacTex 并尝试了一个空文档的最小示例,但我得到了关于 texi2dvi 的相同错误。
- 当我 运行
knit2pdf("my_script.Rnw", output = "my_script.tex")
使用 LaunchControl 并 然后 返回 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 编译。
- 运行 bash 在 LaunchControl 中带有
Rscript dispatcher.R
的脚本 不 工作;关于 texi2dvi 的相同错误。
要运行一个使用LaunchControl进行任务调度的.Rnw文件,在同一目录下创建以下文件。然后,运行 调度程序中的 *.sh 脚本。瞧!我在原来的 post 中遇到的问题是 LaunchControl 不(至少默认情况下)读取 ~/.bash_profile,因此将 PATH 变量添加到 .sh 脚本中可以解决这个问题。
1) 你的 *.Rnw 脚本
这是您可以从 RStudio 毫无问题地编译的任何 knitr
脚本。
2) *.R 脚本
#!/Library/Frameworks/R.framework/Resources/Rscript
library("knitr")
setwd("~/some_directory")
knit2pdf("yourscript.Rnw", output = "yourscript.tex")
3) *.sh 脚本
确保您的 LaTeX 安装有 PATH 变量。
#! /bin/bash
PATH="/usr/texbin:${PATH}"
export PATH
Rscript yourscript_dispatcher.R
此解决方案适用于 OSX Yosemite 10.10.5 on R version 3.3.2 (2016-10-31)。
我正在尝试使用 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 输出。但是,当启动 运行s dispatcher.R 脚本时,我收到此错误:
Error in texi2dvi(file = file, pdf = TRUE, clean = clean, quiet = quiet, : Running 'texi2dvi' on 'my_script.tex' failed. Execution halted
生成了 .tex 文件,但没有编译。我会说这是我的 LaTeX 安装路径的问题,但由于它使用 knit2pdf()
我不确定。可能是什么问题?
仍在努力。更新:
knit2pdf()
通过 LaunchControl 没有生成 .log 文件,但我得到了一个 .tex 文件和 /figure 文件夹。我更新了 MacTex 并尝试了一个空文档的最小示例,但我得到了关于 texi2dvi 的相同错误。
- 当我 运行
knit2pdf("my_script.Rnw", output = "my_script.tex")
使用 LaunchControl 并 然后 返回 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 编译。 - 运行 bash 在 LaunchControl 中带有
Rscript dispatcher.R
的脚本 不 工作;关于 texi2dvi 的相同错误。
要运行一个使用LaunchControl进行任务调度的.Rnw文件,在同一目录下创建以下文件。然后,运行 调度程序中的 *.sh 脚本。瞧!我在原来的 post 中遇到的问题是 LaunchControl 不(至少默认情况下)读取 ~/.bash_profile,因此将 PATH 变量添加到 .sh 脚本中可以解决这个问题。
1) 你的 *.Rnw 脚本
这是您可以从 RStudio 毫无问题地编译的任何 knitr
脚本。
2) *.R 脚本
#!/Library/Frameworks/R.framework/Resources/Rscript
library("knitr")
setwd("~/some_directory")
knit2pdf("yourscript.Rnw", output = "yourscript.tex")
3) *.sh 脚本
确保您的 LaTeX 安装有 PATH 变量。
#! /bin/bash
PATH="/usr/texbin:${PATH}"
export PATH
Rscript yourscript_dispatcher.R
此解决方案适用于 OSX Yosemite 10.10.5 on R version 3.3.2 (2016-10-31)。