ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

knitr

andrewheiss 全部

插件,为Sublime Text 2和3提供knitr Markdown和LaTeX支持

标签 knitr, latex, r, markdown

详细信息

  • 1.2.4
  • github. com
  • github. com
  • 8年前
  • 26分钟前
  • 11年前

安装次数

  • 总数 5K
  • Win 1K
  • Mac 2K
  • Linux 909
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 1 0 0

README

源代码
raw. githubusercontent. com

Sublime knitr

  • 版本:1.2.2
  • 日期:2015年1月30日

本包在Sublime Text 2和3提供了knitr Markdown和LaTeX支持。它包括以下内容:

  • knitr LaTeX和Markdown文件定义语言
  • 为R Markdown文件提供的构建系统。
  • 以下命令(通过命令面板和键盘快捷键可用)
    • 插入:knitr 片段:super+alt+c
    • 在片段之间移动:super+alt+,super+alt.+
    • 将片段发送到R GUI:super+b (需要R-Box

默认情况下,在Windows和Linux上使用ctrl替代super

依赖关系

为了使用本包的所有功能,您需要安装另外两个包。这两个包都可通过包控制轻松安装

使用此插件最简单的方法是使用LaTeXing,特别是由于LaTeXTools的开发速度显著减慢。只需启用knitr设置,并在需要时调整knitr_command命令。

或者,您可以与LaTeXTools一起使用此插件,需要以下三个手动patch:

构建R Markdown文件

构建.Rmd文件将在同一目录创建一个.md文件。这取决于您是否在其他地方使用该文件(即使用Pandoc将其转换为.html.docx.rtf,或者如果您觉得路径更长,甚至可以将它转换为.tex)。

还有一个构建变体,可以将编译后的Markdown文件创建为HTML文件。使用super + shift + b

我通常一次创建.Rmd文件,然后在Marked中打开生成的.md文件,并在进行进一步更改和新构建时保持其打开状态。

或者,您可以强制构建系统使用Markdown文件默认程序打开生成的.md文件,通过将.knitr-Markdown.sublime-build中的"cmd"行更改如下

"cmd": [ "Rscript -e \"library(knitr); knit('$file_name')\"; open $file_base_name.md" ],

Unicode和其他编码问题

由于LaTeX和R对Unicode的支持不同,处理图表中的非ASCII字符有点棘手。以下是一些解决字符编码问题的通用准则

  1. LANG=en_US.UTF-8添加到~/.Renviron(如有需要,则创建此文件)。这将确保R在打开时始终具有Unicode支持。
  2. 在文档开头附近添加一个单独的块,如下所示:pdf.options(encoding = '<encoding>'),其中encoding是此命令输出的列表之一:list.files(system.file('enc', package = 'grDevices'))。选择一个包含您在图表中使用所有字符的编码。
  3. 如果使用.Rnw和LaTeX,请确保在序言中有\usepackage[utf8]{inputenc}

路线图和愿望清单

  • 更好的Markdown语法高亮,包括Multimarkdown和Pandoc扩展,如脚注、表格和引文。
  • 创建从R Markdown转换为其他格式的命令?(或者可能只需为该用途使用实际的Pandoc包)。

LaTeXTools的手动修补

如果您想使用LaTeXTools插件,需要进行对三个文件的修补,以使标准的LaTeXTools构建系统能够缩放和类型设置.Rnw文件。这些三个更改(衷心感谢Heberto del Rio!)

重要: 从GitHub复制粘贴代码可能会对缩进(将制表符替换为空格)造成意外操作,并且可能会暂时破坏LaTeXTools。粘贴后请确保缩进正确。

文件1: Packages/LaTeX/LaTeX.tmLanguage

添加到接受的LaTeX文件类型列表中,如下所示

<?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>

Sublime Text 3说明:在ST3中,默认包隐藏在ST本身的深处,难以访问,更不用说编辑了。然而,如果您安装了PackageResourceViewer插件,则可以相对轻松地访问LaTeX.tmLanguage。安装后,通过命令面板(command/ctrl + shift + p)运行“PackageResourceViewer: Open Resource:”命令,导航到LaTeX.tmLanguage。修改后,ST将在更易于访问的位置保存文件的副本(Packages/LaTeX/LaTeX.tmLanguage),并覆盖默认内置文件。

文件2: Packages/LaTeXTools/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

然后找到这个

# We should now be able to construct the builder object
self.builder = builder_class(self.file_name, self.output, builder_settings, platform_settings)

然后用这个替换

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"

# We should now be able to construct the builder object
self.builder = builder_class(self.file_name, self.output, builder_settings, platform_settings)

(如果您想使用Sweave而不是knitr,相应地更改Rscript命令。)

文件3: Packages/LaTeXTools/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

文件4: Packages/LaTeXTools/viewPDF.py

找到这个

if texExt.upper() != ".TEX":
    sublime.error_message("%s is not a TeX source file: cannot view." % (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 view." % (os.path.basename(view.fileName()),))
    return

如果您想能够使用多个文件并找到您的bib文件,您还需要更改以下文件

文件5: Packages/LaTeXTools/getTeXRoot.py

找到这个

mroot = re.match(r"%\s*!TEX\s+root *= *(.*(tex|TEX))\s*$",line)

然后用这个替换

mroot = re.match(r"%\s*!TEX\s+root *= *(.*(tex|rnw))\s*$",line, flags=re.IGNORECASE)

文件6: Packages/LaTeXTools/latex_cite_completions.py

找到这个

if src[-4:].lower() != ".tex":

然后用这个替换

if src[-4:].lower() not in [".tex",".rnw"]: