R markdown文件:包含帮助信息

时间:2014-10-21 06:50:20

标签: r r-markdown

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

在我的档案中,我提供了以下内容:

```{r}
?mtcars
```

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

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

谢谢。

1 个答案:

答案 0 :(得分:4)

我们可以调整Yihui Xie的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
---