我想使用r chunk
将css文件添加到我的Rmd中。例如
---
title: "Untitled"
output:
html_document:
css: '`r system.file("shinydashboard.css" , package = "shinydashboard")`'
---
但我收到了错误:
pandoc: Could not fetch `r system.file(
`r system.file(: openBinaryFile: does not exist (No such file or directory)
Error: pandoc document conversion failed with error 67
Execution halted
我已阅读了相关的两个问题(this和this),但它们未涵盖r chunk
输出html_document
时出现的情况(Ramnathv提及brew
包,但我没有测试它,除了它发布在'14。)。
如果可以这样做,并且仍在RStudio中使用Knit
按钮,那将会很棒。
谢谢,
更新
另一件事是我希望在r chunk
内使用html_document
从一个目录中包含所有.css文件。在这里,我想要包含www
目录中的所有文件:
---
title: "Untitled"
output:
html_document:
css: "`r x <- list.files(path = 'www', pattern = '*.css', full.names = T); x <- paste(x, collapse = '\', \'');z <- paste0('[ \'', paste0(x, collapse = ', '), '\' ]'); z`"
---
答案 0 :(得分:3)
YAML 标头中的表达式必须使用!expr
格式化(请参阅底部的注释)。
---
title: "Untitled"
output:
html_document:
css: !expr system.file("shinydashboard.css" , package = "shinydashboard")
---
## Header
```{r meta}
rmarkdown::metadata
```
这会产生以下输出,您可以清楚地看到 CSS 正确加载。
要了解渲染过程中发生的情况,查看正在运行的pandoc
命令是很有价值的。对于多文件更新,我们可以运行 static 和 dynamic 进行比较。
---
title: "Untitled"
output:
html_document:
css: [ 'www/file1.css', 'www/file2.css' ]
---
# /usr/lib/rstudio-server/bin/pandoc/pandoc +RTS -K512m -RTS so.utf8.md --to html4 --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output so.html --smart --email-obfuscation none --self-contained --standalone --section-divs --template /usr/share/R/library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --css www/file1.css --css www/file2.css --variable 'theme:bootstrap' --include-in-header /tmp/RtmpRdKgYW/rmarkdown-str3eef4edabf99.html --mathjax --variable 'mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'
重要的是,您会看到--css www/file1.css --css www/file2.css
,并且文件会在包含 CSS 文件的情况下正确呈现。
---
title: "Untitled"
output:
html_document:
css: !expr x <- list.files(path = "www", pattern = "*.css", full.names = T); x <- paste(x, collapse = "\', \'"); z <- paste0("[ \'", paste0(x, collapse = ", "), "\' ]"); z
---
# /usr/lib/rstudio-server/bin/pandoc/pandoc +RTS -K512m -RTS so.utf8.md --to html4 --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output so.html --smart --email-obfuscation none --self-contained --standalone --section-divs --template /usr/share/R/library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --css "[ 'www/file1.css', 'www/file2.css' ]" --variable "theme:bootstrap" --include-in-header /tmp/RtmpMStG00/rmarkdown-str423c7a02dab7.html --mathjax --variable "mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
我们遗憾地找到了--css "[ 'www/file1.css', 'www/file2.css' ]"
。我尝试了一些技巧,包括:cat
,capture.output
,as.name
和noquote
没有运气。 rmarkdown
可能需要进行增强,以便将所需格式提交给pandoc
。
N.B。值得注意的是,这确实是this问题的重复,其中Eli Holmes的答案演示了替代语法。他还注意到开发版本的变化,可能包括
css
字段。