我想在R markdown文档的末尾包含有关mtcars数据集的帮助页面.
在我的文件中,我包括以下内容:
```{r}
?mtcars
```
Run Code Online (Sandbox Code Playgroud)
当我编译markdown(输出是PDF - knitr)时,在处理此指令时,帮助页面会出现在我的浏览器中,但生成的pdf缺少此部分.
有没有办法可以实现这一点,然后从一个地方复制到另一个地方?
谢谢.
我们可以改编 Yihui Xie 的static_help函数来获取给定帮助文件的 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))
}
Run Code Online (Sandbox Code Playgroud)
如果我们将源代码写入临时文件,我们可以将其读回并去掉页眉和页脚,为您提供帮助文件的正文以包含在您的 Markdown 文档中
```{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")
```
Run Code Online (Sandbox Code Playgroud)
编辑
上面的解决方案产生了 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")
```
Run Code Online (Sandbox Code Playgroud)
但是 .Rd 文件依赖于Rd.sty。让 LaTeX 找到 Rd.sty 的最简单方法是将一个副本放在与 .Rmd 文件相同的目录中。然后您需要定义一个自定义模板来替换默认的 pandoc LaTeX 模板。同样,最简单的解决方案是将默认模板的副本放在与 .Rmd 文件相同的目录中,然后通过用命令替换\documentclass命令和命令之间的所有内容(第 2 - 145 行)来修改它\begin{document}
\usepackage{Rd}
Run Code Online (Sandbox Code Playgroud)
最后修改 .Rmd 文件的元数据以使用新模板
---
output:
pdf_document:
template: template.tex
---
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |