不使用_site.yml文件渲染Rmd

时间:2019-05-09 16:44:53

标签: r r-markdown

我的网站设置了三个文件。

_site.yml

name: Website
navbar:
  title: Website
  right:
    - text: Home
    - text: Info
output:
  html_document:
    theme: flatly
    highlight: tango

index.Rmd

---
title: Welcome
output:
  html_document:
    theme: united
    highlight: textmate
---

This is the index.

test.Rmd

---
title: Test
output:
  html_document:
    theme: united
    highlight: textmate
---

This is the test file.

```{r}
2+2
```

如果运行rmarkdown::render("test.Rmd"),则会得到包含网站标题的HTML。这类似于运行rmarkdown::render_site()的输出。

enter image description here

如果我删除_site.yml文件并运行相同的命令,则会得到常规的HTML输出:

enter image description here

因此,render()在使用时必须使用_site.yml。可以禁用吗?即使存在_site.yml文件,我也想创建常规的HTML输出。当我有xaringan演示文稿并且我不希望它们与网站标题一起呈现时,这尤其是个问题。

2 个答案:

答案 0 :(得分:1)

我不认为有一种方法可以在rmarkdown中将其禁用,但是您可以尝试以下变通方法暂时将其重命名,然后再命名:

render_without_site_yml <- function(input, ...) {
  dir <- dirname(input)
  site_yml <- file.path(dir, "_site.yml")
  if (file.exists(site_yml)) {
    newname <- file.path(dir, "_site.yml.save")
    if (file.exists(newname))
      stop("'_site.yml.save' exists!")
    file.rename(site_yml, newname)
    on.exit(file.rename(newname, site_yml))
  }
  rmarkdown::render(input, ...)
}

答案 1 :(得分:0)

似乎在各个.Rmd文件中指定的output:会覆盖_site.yml中的默认值。

所以我的_site.yml包含

output:
  html_document:
    highlight: textmate
    toc: true
    css: "assets/doc.css"
    include:
      after_body: assets/footer-doc.html

我的xaringan演示文稿包含

output:
  xaringan::moon_reader:
    css: 'assets/slide.css'
    lib_dir: libs
    include: NULL

如果我调用render_site(),则未指定任何output:的md和Rmd文件将使用_site.yml的默认值,获取 doc.css 样式并添加自定义页脚页脚文档

我的自定义output:的xaringan演示文稿是通过moon_reader呈现的,并具有 slide.css 样式,并且没有附加页脚。

呈现输出文件并将其移动到目标文件夹。但是我收到关于xaringan幻灯片的警告:

In file.rename(output, output_dest) :
  cannot rename file './source/slide_dge.html' to './dest/slide_dge.html', reason 'No such file or directory'

我还没有解释。