【问题标题】:slidify lectureSite: workflow and customizationsslidify LectureSite:工作流程和自定义
【发布时间】:2015-03-06 00:12:59
【问题描述】:

我开始使用http://slidify.github.io/lectureSite/。我非常喜欢这个想法和模板。然而,作为新手,我正在为定制而苦苦挣扎。

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

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

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

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

我还尝试在 rmarkdown 文件(我在那里看到的东西: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 获取外部文件的代码是什么?

【问题讨论】:

  • 据我所知,“lectureSite”模板提供了几个独立的模板,每个模板都必须独立编译(与我的印象相反,单个编译会重新创建整个结构),每个'lecture' 有自己的css 目录,并且根目录下没有样式centralization(据我从有限的测试中可以看出)。

标签: r r-markdown slidify


【解决方案1】:

考虑以下结构:

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 文件之一中。我发现以下似乎“绕过”本地资产目录以获取“根”目录:

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

如果您将 css 文件放入“../../assets/css/custom.css”,即结构顶部的“主”资产目录(在根目录,换一种说法) ,那么它将来自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 
```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多