【发布时间】:2013-01-04 06:10:21
【问题描述】:
我正在尝试在 Sublime Text 2 中为 knitr/Sweave 创建一个构建系统。我当前的简单(且有效)构建系统如下:
{
"cmd": ["bash", "-c", "/usr/bin/R64 CMD Sweave '${file_name}' && pdflatex '${file_base_name}.tex' -interaction=nonstopmode -synctex=1 %S -f -pdf && /Applications/Skim.app/Contents/MacOS/Skim '${file_base_name}.pdf'"],
"path": "$PATH:/usr/texbin:/usr/local/bin",
"selector": "text.tex.latex.sweave","shell":false,
"file_regex": "^(...*?):([0-9]+): ([0-9]*)([^\\.]+)"
}
(text.text.latex.sweave 上下文在 Sweave Textmate 捆绑包中定义,在 Sublime Text 中有效)
构建系统获取.Rnw 文件,将其转换为TeX,然后在其上运行pdflatex。这个构建系统可以工作,但它在如何打开 Skim 方面相当有限(它只是打开 PDF——仅此而已)。 LaTeXTools Sublime Text 包更加健壮,可以打开/刷新 Skim,同时突出显示修改的行并提供 Skim 的神奇反向搜索。
我不想重写 LaTeXTools 构建系统,尤其是因为它使用单独的 Python 脚本完成了大部分繁重的工作(和 Skim 魔术)。但是,我真的很希望能够使用它来构建从 Sweave 生成的 TeX 文件。
理想情况下,我想以某种方式嵌套一个构建系统——将.Rnw 文件转换为 TeX,然后立即运行已经存在的 LaTeXTools 构建系统。在伪代码中:
{
[CONVERT RNW TO ${file_name}.tex && RUN THE LATEXTOOLS BUILD SYSTEM ON ${file_name}.tex]
}
是否可以从另一个构建系统内部访问一个构建系统(或者,从 bash 访问一个构建系统)?
【问题讨论】:
-
至少反向搜索部分可能很困难,而这正是 RStudio 付出了相当大的努力使其工作的地方;对于
knitr部分,也许这可行:"cmd": ["Rscript", "-e", "knitr::knit('${file_name}')"]其余的工作是您的问题:如何调用 LaTeXTools?我不使用 Sublime Text,所以我不知道... -
是的,我正试图摆脱 RStudio(尽管我很喜欢它),因为 Sublime Text 是一个出色的编辑器。我也有 knitr 的语言定义和构建系统,但它也有同样的问题——如何使用 LaTeXTools 更强大的构建系统构建已编译的 TeX 文件(由 Sweave 或 knitr 制作)?
-
我也想love 知道解决方案:)
-
这是我所有的 ST 文件:github.com/andrewheiss/KnitrSublime
标签: r sublimetext2 knitr