【问题标题】:Using Vim + latex-suite + knitr使用 Vim + latex-suite + knitr
【发布时间】:2015-02-23 08:57:37
【问题描述】:

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

Associate .Rnw with vim latex suite 之后,我在我的 vimrc 中包含了 .Rnw 文件应该被读取为 .tex 文件(尽管有人在那篇文章的评论中说它应该在 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) 时,它会返回一个错误提示

你不能在垂直模式下使用'宏参数字符#'

但它确实编译并打印为

评论

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

#评论

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

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

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

【问题讨论】:

    标签: r vim latex knitr


    【解决方案1】:

    自从发布此问题以来,我进行了一些研究并找到了解决方案。我必须对Josh Davis 给予很多(也许是全部?)功劳,我大部分的设置都是从​​他那里得到的。他指给我看我的 .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
    

    我为 kicker 制作了一个“食谱”来观看 .Rnw 文件,当它发生变化时,它会执行一个终端命令。我称它为 knitr.kick 并将其放在我的主目录中:

        #!/bin/bash
    
        FILE="${1}"
    
        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 的第一个回答,如果缺少某些信息,请告诉我。

    附言可以在 VIM 中找到 Sweave 和 Latex 语法高亮的绝佳混合here

    【讨论】:

    • 嗨 freek,很高兴我的博文对您有所帮助。如果您想出任何其他可以改进我的设置的方法,请告诉我!
    【解决方案2】:

    对于 Rnoweb 文件,当您将文件格式设置为 rnoweb 时,可以使用键绑定 &lt;LocalLeader&gt;kn&lt;LocalLeader&gt;kp 在 Vim 中分别构建 .tex 和 .pdf 文件。有关详细信息,请参阅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>
    

    使用&lt;LocalLeader&gt;k 键绑定将.Rnw 转换为PDF。这适用于 Mac。我相信它可以很容易地针对 Linux 进行调整。

    【讨论】:

      猜你喜欢
      • 2015-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多