1

在学习者 R 包中,分发的一个建议是将教程捆绑到一个包中。但是,要为教程包含自定义 css,似乎需要将您的 .css 文件放在与每个教程关联的唯一子目录中,如下所示:

+ inst/
|  + tutorials/
|  |  +- tutorial_A/
|  |  |  +- tutorial_A.rmd
|  |  |  +- custom.css
|  |  +- tutorial_B/
|  |  |  +- tutorial_B.
|  |  |  +- custom.css

css 文件可以包含在 yaml 参数css: custom.css中。有没有一种方法可以简单地将单个custom.css文件放在更高级别的目录中(假设inst/tutorials/custom.css它由两个教程共享?我尝试了相对路径和绝对路径,但似乎没有任何工作,包括相当奇特的 yaml css: !expr system.file("tutorials/custom.css", package="my_package")

注意:我指的是已安装的软件包和加载了learnr::run_tutorial('tutorial_A', 'my_package'). 只需运行 Rmarkdown 本身就可以工作。

4

2 回答 2

2

据我所知, css 文件必须位于教程环境中名为 css 的文件夹中。我最近一直在研究一组学习者教程,但还没有找到一种方法可以在多个教程中使用单个样式表。

于 2020-07-08T18:32:56.533 回答
0

经过一番努力,部分解决方案是创建一个包含所需 css 的 html 文件。例如,custom-css.html放置在inst/tutorials/. 在我的情况下,custom-css.html它只是 css 的包装器

<style type="text/css">

... all desired css ...

</style>

然后,可以通过标准 yaml frontmatter 将其包含在针织教程中

output: 
  learnr::tutorial:
    includes:
      in_header: !expr system.file("tutorials/custom-css.html",package="my_package")

此修复只是部分的,因为学习者tutorial-format.htm模板包含的in_header文件早于 css 文件。因此,不能以这种方式修改某些默认 css。

于 2020-08-16T23:14:31.730 回答