2014-10-21 1 views
4

Я хотел бы включить в конце документа R markdown справочную страницу о наборе данных mtcars.R markdown файл: включить справочную информацию

В моем файле я включил следующие:

```{r} 
?mtcars 
``` 

Когда я скомпилировать уценки (выход в PDF - knitr), при обработке этой инструкции страница справки приходит в моем браузере, но в результате PDF отсутствуют эта секция.

Есть ли способ, которым я мог бы добиться этого, а затем копировать из одного места в другое?

спасибо.

ответ

3

Мы можем адаптировать Yihui С 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") 
``` 

EDIT

Вышеописанное решение создало выход 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) командой

Наконец изменить метаданные вашего .Rmd файла использовать новый шаблон

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