R markdown:如何使用内部css更改样式?

时间:2015-12-01 14:15:10

标签: css r markdown knitr

我知道如何使用自定义css文件更改R markdown样式。但是,当更改很小时,我更喜欢内部或内联css,以节省管理两个文件的麻烦。我用谷歌搜索,并没有找到解决方案。下面是使用外部css文件更改样式的简单示例。有没有办法用内部或内联css来做?

R降价文件:

---
title: "test"
output: 
    html_document:
        css: test.css
---

## Header 1 {#header1}
But how to change style with internal css?

test.css文件:

#header1 {
color: red;
}

3 个答案:

答案 0 :(得分:7)

Markdown接受原始HTML并将其传递给不变,因此将“样式”元素定义为HTML:

<h2 style="color: red;">Header 1</h2>

当然,有些工具实际上并不允许原始HTML传递(出于安全原因或最终输出不是HTML),因此您的里程可能会有所不同。

根据您正在使用的Markdown实现,您可以在属性列表中定义样式(如果它支持任意键):

## Header 1 {style="color: red;"}

但是,这是最不可能工作的。

请记住,HTML <style>标记不需要在文档<head>中工作。如果您可以使用原始HTML,则可以在文档正文中包含<style>元素(如评论中@ user5219763所指出的):

---
title: "test"
output: 
    html_document
---

<style>
    #header1 {
        color: red;
    }
</style>

## Header 1 {#header1}
But how to change style with internal css?

答案 1 :(得分:1)

如果您不想创建一个外部.css文件,但是想定义几种样式并希望使您的代码不那么拥挤,那么另一种可能性是在 css 块中使用R降价的开始:

  ---
  title: "test"
  output: html_document
  ---

  ```{css, echo = FALSE}

  #header1 {
  color: red;
  }

  ```

  ## Header 1 {#header1}

css 块中,您可以控制多种样式,就像在外部.css文件中一样。

答案 2 :(得分:0)

另一种棘手的选择是在脚本中指定一个css文件,然后在第一个块中创建它。

例如.Rmd文件的前18行:

  ---
  title: "Something Important"
  output: 
    html_document:
      css: mystyle.css
  ---


  ```{r b, echo=F}
  writeLines("td, th { padding : 6px } 
             th { background-color : coral ; 
                  color : white; 
                  border : 1px solid white; } 
             td { color : black ; 
                  border : 1px solid skyblue }
             h1, h2, h3, h4, h5, p { font-family: consolas; ",
             con = "mystyle.css")
  ```

在上面,我首先在markdown的标题块中引用文件mystyle.css。然后,我使用writeLines()创建文件,并将其保存到用con = ...指定的文件中。

就个人而言,我认为最好的选择是将代码放在一个<script></script>标签之间,如果它是一次性的R脚本。

但是,如果您想创建一个外部文件,但又不想编辑一个单独的文件,则上述方法提供了一种解决方法。感觉很奇怪。