slidify lectureSite:工作流程和定制

slidify lectureSite: workflow and customizations

我开始使用 http://slidify.github.io/lectureSite/。我非常喜欢这个想法和模板。然而,作为新手,我在定制方面遇到了困难。

首先让我解释一下这个 'lectureSite' 架构提供了什么。主要代码基于 rmarkdownslidify,布局的自定义主要在 css 文件中控制。 'lectureSite' 包含一个 html 网页,用作内容页面和访问不同幻灯片 ('lectures') 的起点,其中大部分是自动创建的。它看起来和听起来一样棒!

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

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

我通过在 <style></style> 标签之间的每个 rmarkdown 文件中插入 css 代码成功定制了每个讲座,但现在我想将自定义项带到可以共享的地方。我希望通过在 assets/css 中包含一个 slidify.css 文件来获取样式,但它们并没有:我可能做错了什么或者我的期望一开始就不正确吗?此外,这些 assets/css 目录太多了,每次修改时都必须将 css 复制到每个目录中,这会很乏味。是否有一种机制可以设置单个 css 文件来覆盖 assets/css 中的 css?

我还尝试在 rmarkdown 文件的顶部制作一个 'declaration'(我在那里看到的东西:http://rmarkdown.rstudio.com/html_document_format.html),其中:

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> 标签之间自定义的文本文件。这种方法有什么缺点吗?顺便说一句,从 rmarkdown 获取外部文件的代码是什么?

考虑以下结构:

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

并假设您位于 Lectures index.Rmd 文件之一中。我发现以下似乎 'by-pass' 本地资产目录改为来源 'root' 目录:

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

如果您将 css 文件放入“../../assets/css/custom.css”,即 'master' 资产目录结构(在根部,换句话说),那么它将由 slidify 提供。我删除了所有其他资产目录,但没有发现它有任何危害(它们一开始只包含一个文件 ribbons.css)。没有经过广泛测试,但它适用于 Firefox 和 Chrome.

这样,我就可以对所有章节进行一次自定义css

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

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

有点复杂。希望 slidify 的未来版本会让它变得更容易。将样式文件转储到根资产目录的一个问题是,使用 html5slides 框架,所有文件都是来源的。因此,我在 assets 目录中包含特定于框架的 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 
```