使用 Vim + latex-suite + knitr

Using Vim + latex-suite + knitr

(总结在底部)我已经使用 Vim-R-plugin 设置了 Vim 和 R,它工作得很好。我还在 Vim 中使用 Latex-suite,可以毫无问题地创建、编译和查看 .tex 文件。对于 knitr,我曾经使用 Rstudio,但我真的很想留在 Vim。我刚刚开始使用 vim-latex-suite,所以也许我缺少一些基本的东西,但在我的 Vim + Latex-Suite + knitr 组合中有些东西不起作用。

Associate .Rnw with vim latex suite 之后,我在我的 vimrc 中包含了 .Rnw 文件应该被读取为 .tex 文件(尽管有人在 post 的评论中说它应该早在 2011 年就在 vim-r-plugin 中实现了自动化,但它没有:最初文件类型被检测为 rnoweb,当我尝试编译时,它抛出了一个错误,说我正在尝试编译一个非 . tex 文件)。

现在,如果我将以下代码用作 .Rnw 文件:

\title{Data analysis}
\begin{document}
\maketitle
\Section{Introduction}
Some text as introduction
\end{document}

编译没有问题。当我包括

<<>>=
1 + 1
@

它编译,但是它打印到

!!?? = 1 + 1

@

没有方块颜色和 !和 ?翻过来。 当我包含一条评论 (# comment) 时,它 returns 一个错误说

You can't use 'macro parameter character #' in vertical mode

但它编译并打印为

comment

当我使用 \ 转义它时,没有显示任何错误并打印

# comment

我正在使用 macvim 7.4 并更新了所有插件(installed/updating 使用 Bundle)和 R 3.1.2(最新更新)。

所以,总而言之:vim + r 有效,vim + latex 有效,但 vim + r + latex 无效。 R 代码未执行且注释显示错误。

如果有人能指出正确的方向,我将不胜感激!

自发布此问题以来,我进行了一些研究并找到了解决方案。我必须将很多(也许全部?)归功于 Josh Davis,我的大部分设置都是从​​他们那里获得的。他指给我 kicker 看我的 .Rnw 文件。但是,对于像我这样没有经验的用户,我需要一些时间和额外的信息来源。所以对于其他一些用户来说,这个概述可能会很有趣。

现在,在我的终端中进行一些初始设置后,我可以在 VIM 中编辑 .Rnw 文件,同时观看我的 PDF 格式。

工作流程:

  • 我在 vim 中编辑我的 .Rnw 文件(使用 vim-r-plugin 和 vim-latex-suite)
  • kicker 观看我的 .Rnw 文件
  • $ Rscripts ...(由 kicker 调用)将 .Rnw 编译成 .tex
  • latexmk 监视我的 .tex 文件并将其编译成 PDF

安装组件:

安装 kicker

    gem install kicker -s http://gemcutter.org

我制作了一个 'recipe' 供 kicker 观看 .Rnw 文件,当它发生变化时,它会执行终端命令。我把它命名为 knitr.kick 并把它放在我的主目录中:

    #!/bin/bash

    FILE=""

    KNITR="echo \"Rerunning Knitr..\"; Rscript -e \"library(knitr); knit('./${FILE}')\""

    echo "Watching ${FILE}..."
    kicker -e "${KNITR}" ${FILE}

我通过添加到 .bash_profile:

创建了一个别名来调用这个 kicker
    knitr="~/knitr.kick"

installation of latexmk之后,我可以打电话给

    $ latexmk -pvc -pdf example.tex

现在我可以打电话了:

    $ knitr example.Rnw

在我的终端中,example.Rnw 被监视并且每次更改时,Rscript 都是 运行 并且 .Rnw 文件被编译为 .tex 文件。 .tex 文件被 latexmk 编译成 PDF。

这是我对 SO 的第一个回答,所以如果缺少某些信息,请告诉我。

p.s。可以在 VIM 中找到 Sweave 和 latex 语法突出显示的绝妙组合 here

对于 Rnoweb 文件,当您将文件格式设置为 rnoweb。有关详细信息,请参阅 https://raw.githubusercontent.com/jcfaria/Vim-R-plugin/master/doc/r-plugin.txt。为了便于编辑,您可能更愿意将文件格式设置为 tex。我在 ~/.vim/ftplugin/tex.vim

中添加了以下行
map <LocalLeader>k :w<CR>:cd %:p:h <CR>:!Rscript -e 'library(knitr);knit("%:p")'<CR>:!latexmk -pdf -pdflatex='pdflatex -shell-escape -synctex=1 -file-line-error -interaction=nonstopmode' %:r.tex <CR>:!open -a Skim %:r.pdf <CR><CR>

使用 <LocalLeader>k 键绑定将 .Rnw 转换为 PDF。这适用于 Mac。我相信它可以很容易地调整为 Linux。