从Sublime Text 2中的另一个构建系统访问构建系统

从Sublime Text 2中的另一个构建系统访问构建系统,第1张

概述我正在尝试在Sublime Text 2中为knitr / Sweave创建一个构建系统.我目前的简单(和工作)构建系统如下: { "cmd": ["bash", "-c", "/usr/bin/R64 CMD Sweave '${file_name}' && pdflatex '${file_base_name}.tex' -interaction=nonstopmode -syncte 我正在尝试在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访问构建系统)?

解决方法 这是LatexTools插件中的两个文件的补丁,用于处理Rnw文件,以及Latex插件的一个补丁,以使Rnw文件的行为类似于LaTeX文件.

首先是Latex插件的补丁,具体到文件LaTeX.tmLanguage:

<?xml version="1.0" enCoding="UTF-8"?><!DOCTYPE pList PUBliC "-//Apple Computer//DTD PList 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><pList version="1.0"><dict>    <key>fileTypes</key>    <array>        <string>tex</string>        <string>Rnw</string>    </array>

观察我如何向数组添加元素以处理Rnw扩展.

现在补丁makepdf.py

寻找像这样的一条线

if self.tex_ext.upper() != ".TEX":    sublime.error_message("%s is not a TeX source file: cannot compile." % (os.path.basename(vIEw.file_name()),))    return

并替换它

if (self.tex_ext.upper() != ".TEX") and (self.tex_ext.upper() != ".RNW"):    sublime.error_message("%s is not a TeX or Rnw source file: cannot compile." % (os.path.basename(vIEw.file_name()),))    return

然后找一条像

os.chdir(tex_dir)CmdThread(self).start()print threading.active_count()

并替换它

os.chdir(tex_dir)if self.tex_ext.upper() == ".RNW":    # Run Rscript -e "library(knitr); knit('" + self.file_name + "')"    os.system("Rscript -e \"library(knitr); knit('"+ self.file_name +"')\"")    self.file_name = self.tex_base + ".tex"    self.tex_ext = ".tex"CmdThread(self).start()print threading.active_count()

最后一个补丁是文件jumpTopdf.py

寻找一条线

if texExt.upper() != ".TEX":    sublime.error_message("%s is not a TeX source file: cannot jump." % (os.path.basename(vIEw.filename()),))    return

并替换它

if (texExt.upper() != ".TEX") and (texExt.upper() != ".RNW"):    sublime.error_message("%s is not a TeX or Rnw source file: cannot jump." % (os.path.basename(vIEw.filename()),))    return

祝好运!

总结

以上是内存溢出为你收集整理的从Sublime Text 2中的另一个构建系统访问构建系统全部内容,希望文章能够帮你解决从Sublime Text 2中的另一个构建系统访问构建系统所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存