{ "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中的另一个构建系统访问构建系统所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)