从Rnw到Rmd, 改写vignette

实际上从R3.0开始,R就不准备再支持Sweave了。对于大多数旧的package而言,都需要一个从以前版本的Rnw文件转移至knitr可以转换的Rnw文件上来。以后的流行趋势也会从PDF文档转向HTML文档。所以本文将介绍两个部分,第一,如何从旧版本的Rnw转换至knitr可以编辑的Rnw文件。第二,如何从Rnw文件转变成Rmd文件。

从旧Rnw至knitr可以接受的Rnw

为什么我们还需要保留PDF格式的帮助文件呢?主要是因为当生成图像时,我们可能需要交差引用,如果是HTML文件,那是无法实现自动交差引用的。

转换需要分三步走,

第一步,指定编辑器为knitr

  1. 在Rnw文件中的%VignetteIndexEntry行之前加上 %VignetteEngine{knitr::knitr}

  2. 在DESCRIPTION文件中加上VignetteBuilder: knitr行。

  3. 在DESCRIPTION文件中的Suggests行中加上knitr。

第二步,使用Sweave2knitr()来改变一些旧的标签

进入Rnw文件目录,在R中

library(knitr)
Sweave2knitr("vignette.Rnw") ## vignette.Rnw是你需要改变Rnw文件名

第三步,修复交差引用。

我之前一直使用的是BiocStyle,所以不但要修复交差引用,还需要修复图像插入。因为BiocStyle现在与knitr有一些不太兼容,我还在试怎么才算是最好的方案。

  1. 将之前的
     <<style-Sweave, eval=TRUE, echo=FALSE, results=tex>>=
     BiocStyle::latex()
     @
    

    改成

     <<style-knitr, eval=TRUE, echo=FALSE, results="asis">>=
     BiocStyle::latex()
     @
    
  2. 去除include=FALSE。改为fig.show=“hide”。

  3. 将incfig宏中-filename改成’figure/filename-1’这样的形式。其中,figure是由fig.path选项指定,默认值为figure/. 如果有多个图像同时输出,1可能会变成2, 3, …

  4. 将ref{-filename} 改成ref{figure/filename-1}这样的形式。

  5. 不能使用bibliographystyle宏。

从Rnw至Rmd

至于如何写Rmd,请参考rmarkdown

文件头这样写:

    ---
    title: "title here"
    author: "qiuworld qiubio"
    bibliography: ref.bib
    abstract: >
      abstract here
    vignette: >
      %\VignetteIndexEntry{title Vignette}
      %\VignetteEngine{knitr::rmarkdown}
      %\VignetteEncoding{UTF-8}
    output:
      BiocStyle::html_document
    ---

将incfig中的内容转移到fig.cap当中。去除所有的incfig和ref与图相关的标签。将需要将图输出的代码段include=FALSE去除。

其余:略。

发表评论

电子邮件地址不会被公开。 必填项已用*标注