【问题标题】:R markdown file: include help informationR markdown 文件:包含帮助信息
【发布时间】:2014-10-21 06:50:19
【问题描述】:

我想在 R markdown 文档的末尾包含有关 mtcars 数据集的帮助页面。

在我的文件中,我包含以下内容:

```{r}
?mtcars
```

当我编译 markdown(输出为 PDF - knitr)时,在处理此指令时,帮助页面出现在我的浏览器中,但生成的 pdf 缺少此部分。

有没有其他方法可以实现这一点,然后从一个地方复制到另一个地方?

谢谢。

【问题讨论】:

    标签: r r-markdown


    【解决方案1】:

    我们可以改编谢一辉的static_help function来获取给定帮助文件的html源代码

    static_help <- function(pkg, topic, out, links = tools::findHTMLlinks()) {
      pkgRdDB = tools:::fetchRdDB(file.path(find.package(pkg), 'help', pkg))
      force(links)
      tools::Rd2HTML(pkgRdDB[[topic]], out, package = pkg,
                     Links = links, no_links = is.null(links))
    }
    

    如果我们将源代码写入一个临时文件,我们可以将其读回并去掉页眉和页脚,为您提供帮助文件的正文以包含在您的降价文档中

    ```{r, echo = FALSE, results = "asis"}
    static_help <- function(pkg, topic, out, links = tools::findHTMLlinks()) {
      pkgRdDB = tools:::fetchRdDB(file.path(find.package(pkg), 'help', pkg))
      force(links)
      tools::Rd2HTML(pkgRdDB[[topic]], out, package = pkg,
                     Links = links, no_links = is.null(links))
    }
    tmp <- tempfile()
    static_help("datasets", "mtcars", tmp)
    out <- readLines(tmp)
    headfoot <- grep("body", out)
    cat(out[(headfoot[1] + 1):(headfoot[2] - 1)], sep = "\n")
    ```
    

    编辑

    上述解决方案产生了 HTML 输出,而问题实际上要求输出 PDF。我们可以改用上面的方法来返回乳胶输出;这次唯一需要的后期编辑是将%切换为\n

    ```{r, echo = FALSE, results = "asis"}
    static_help <- function(pkg, topic, out, links = tools::findHTMLlinks()) {
      pkgRdDB = tools:::fetchRdDB(file.path(find.package(pkg), 'help', pkg))
      force(links)
      tools::Rd2latex(pkgRdDB[[topic]], out, package = pkg,
                      Links = links, no_links = is.null(links))
    }
    tmp <- tempfile()
    static_help("datasets", "mtcars", tmp)
    out <- readLines(tmp)
    out <- gsub("%", "\n", out, fixed = TRUE)
    cat(out, sep = "\n")
    ```
    

    但是.Rd 文件依赖于Rd.sty。让 LaTeX 找到 Rd.sty 的最简单方法是将副本放在与 .Rmd 文件相同的目录中。然后你需要定义一个自定义模板来替换default pandoc LaTeX template。同样,最简单的解决方案是将默认模板的副本放在与 .Rmd 文件相同的目录中,然后通过将 \documentclass 命令和 \begin{document} 命令(第 2 - 145 行)之间的所有内容替换为命令

    \usepackage{Rd}
    

    最后修改 .Rmd 文件的元数据以使用新模板

    ---
    output:
        pdf_document:
            template: template.tex
    ---
    

    【讨论】:

      猜你喜欢
      • 2016-07-31
      • 1970-01-01
      • 2011-07-12
      • 2010-12-20
      • 2011-09-07
      • 2021-09-16
      • 2018-04-30
      • 2011-04-26
      • 1970-01-01
      相关资源
      最近更新 更多