slidify lectureSite:工作流程和自定义

时间:2015-01-07 23:40:02

标签: r r-markdown slidify

我开始使用http://slidify.github.io/lectureSite/。我非常喜欢这个想法和模板。然而,对于这个新手,我正在努力进行定制。

首先让我解释一下这个讲座和#39;建筑提供。主要代码基于rmarkdownslidify,布局的自定义主要由css个文件控制。 “讲座”#39;由html网页组成,该网页作为内容页面和访问不同幻灯片的起点('讲座'),其中大部分都是自动创建的。它听起来很棒!

每个讲座都存储在一个单独的目录中,该目录中有自己的资产'目录。因此,在由10个讲座组成的课程中,一个目录有10个目录,每个目录都有自己的cssjs。但是,为了实现整个课程的共同风格,人们希望在所有讲座中共享大多数自定义。我的主要问题是如何处理这个问题。

问题:我应该如何处理我想在所有讲座中分享的css自定义内容?

通过在rmarkdown<style>标记之间的每个</style>文件中插入css代码,我成功地自定义了每个讲座,但现在我想将自定义设置放到某个位置他们可以分享的地方。我希望通过在slidify.css中加入一个assets/css文件来获取样式,但它们不是:我可能做错了什么或者我的期望是不正确的?此外,有许多assets/css个目录,每次修改css都需要将css复制到每个目录中是很繁琐的。有没有一种机制可以设置一个覆盖assets/css内的css的单个css文件?

我还试图做出声明&#39;在rmarkdown文件的顶部(我在那里看到的内容:http://rmarkdown.rstudio.com/html_document_format.html)with:

css         : slidify.css

但是出现了以下错误消息:

pandoc: Could not fetch slidify.css
slidify.css: openBinaryFile: does not exist (No such file or directory)
Error: pandoc document conversion failed with error 67
Execution halted

另一种方法是source()一个文本文件,其中包含<style></style>标记之间的自定义。这种方法有什么缺点吗? btw从rmarkdown获取外部文件的代码是什么?

1 个答案:

答案 0 :(得分:4)

考虑以下结构:

assets      -> put custom img/js/css/layout assets
lectures    -> folder containing lectures
  Lecture 01
  Lecture 02
  Lecture 03
libraries   -> frameworks, highlighters and widgets
index.Rmd   -> Rmd source for home page
site.yml    -> Site related configuration

并假设您在其中一个讲座index.Rmd文件中。我发现以下似乎是旁路&#39;本地资产目录来源&#39; root&#39;目录而不是:

url         : {lib: "../../libraries", assets: "../../assets"}

如果您将css文件放入&#34; ../../ assets / css / custom.css&#34;,那就是&#39; master&#39;资产目录位于结构的顶部(在根目录,以不同的方式说),然后它将由slidify提供。我删除了所有其他资产目录并且没有发现它有任何损害(它们包含的所有内容都是单个文件ribbons.css)。没有经过广泛测试,但它适用于Firefox和Chrome。

通过这种方式,我可以为所有章节进行一次自定义css

但是,此结构似乎仅适用于html5slides框架,而不适用于io2012。对于io2012,我在这里解释一下我做了什么(它对我有用,但我不知道它是否正确):

https://github.com/ramnathv/slidify/issues/409

更多涉及。希望未来版本的slidify将使它更容易。将样式文件转储到根资产目录中的一个问题是,使用html5slides框架,所有文件都是来源的。所以我在资源目录中使用特定于框架的css文件的想法并不起作用,因为样式都是源代码而有些是相互覆盖的。因此,无论如何,将自定义css文件保存在特定于框架的目录中可能是更好的方法。

我还找到了以下方式来共享R个自定义项和knit opts(或者他们所称的任何内容)

```{r 'preamble', message = FALSE, warning = FALSE, error = FALSE, echo = FALSE, tidy = FALSE, comment = NA, cache = FALSE}  # probably several redundant ones in there
require(knitr) 
opts_chunk$set(echo = FALSE, cache = FALSE)  # example of knit options
source('../../shared/shared.R')  # here I share common R code 
```