使用Rmarkdown和custom.css文件制作蛇形报告



下面是一个使用custom.css.

---
title: "Test Report"
date: "`r format(Sys.time(), '%d %B, %Y')`"
params:
rmd: "report.Rmd"
output:
html_document:
css: "custom.css" 
---
## R Markdown
This is an R Markdown document.
Test include from snakemake `r snakemake@input`.

这个特定的例子不起作用,因为Snakemake将.rmd文件移动到一个临时位置。

文件custom.css在资源路径中找不到
错误:pandoc文档转换失败,错误99

简单的解决方案是将custom.css移动到report.rmd渲染的位置,但是我们没有这个位置。此外,我们不能在标题上使用snakemake指令,因为它只在它之后可用。

有人有解决这个问题的办法吗?我能想到的唯一解决方案是给Snakemake打补丁,让它接受特定的头参数。

脚本文件的源目录报告为"scriptdir"也许你可以用它?

---
title: "Test Report"
date: "`r format(Sys.time(), '%d %B, %Y')`"
params:
rmd: "report.Rmd"
output:
html_document:
css: "`r snakemake@scriptdir`/custom.css" 
---
## R Markdown
This is an R Markdown document.
Test include from snakemake `r snakemake@input`.

我想你的语法可能是错误的。根据Rmarkdown Cookbook

output:
html_document:
css: "style.css"

更新你的yaml头,看看我们是否得到一个不同的错误,除了"文件自定义。css不在资源路径"现在我们修正了YAML格式

我想我找到了一个令人满意的解决这个问题的方法。因为,如前所述,snakemake对象在Rmarkdown文档的YAML头文件中不可用,所以我在后面为文档定义CSS。

在阅读了R Markdown Cookbook中的以下页面后,我找到了我的解决方案:应用自定义CSS,读取外部脚本到块中,以及在块选项中使用变量。

---
title: "Test Report"
date: "`r format(Sys.time(), '%d %B, %Y')`"
params:
rmd: "report.Rmd"
output:
html_document
---
```{r, echo = FALSE}
css_file <- paste0(snakemake@scriptdir, "/style.css")
```
```{css, code=xfun::read_utf8(css_file), echo=FALSE}
``` 
## R Markdown
This is an R Markdown document.
Test include from snakemake `r snakemake@input`.

基本上,在第一个r代码块中,我访问了snakemake对象并获得了CSS文件的路径。在第二个css代码块中,我从这个文件路径读取外部CSS文件。

Snakemake对象是不可用的Rmd序言(见这里)。

我发现的解决方案是使用css块代替CSS参数:

---
title: "Test Report"
date: "`r format(Sys.time(), '%d %B, %Y')`"
params:
rmd: "report.Rmd"
output:
html_document
---
```{css, echo=FALSE}
.Sidebar {
background-image: url('logo.png');
```
## R Markdown
This is an R Markdown document.
Test include from snakemake `r snakemake@input`.

虽然这在我的用例中工作得很好,但我认为在序言中有snakemake对象会很有帮助。

最新更新