【问题标题】:Add a CSS class to single code chunks in RMarkdown将 CSS 类添加到 RMarkdown 中的单个代码块
【发布时间】:2016-10-22 23:43:33
【问题描述】:

是否可以将 CSS 类添加到某个代码块?

假设以下文件:

---
title: "Untitled"
output: html_document
---


```{r cars}
summary(cars)
```

我想为标记为“汽车”的块赋予特定的 CSS 类,例如.myClass。 有没有这样的可能性

```{r cars} {.myClass}
summary(cars)
```

还是这样?我知道诸如将整个块包装在另一个 <div> 中的黑客行为。我对直接的解决方案感兴趣。

【问题讨论】:

    标签: css r knitr r-markdown


    【解决方案1】:

    编辑:此功能是在 knitr v.1.16 (05/18/17) 中引入的
    class.source 和 class.output 选项将额外的 HTML 类应用于源和输出块(请参阅knitr documentation)。
    将myClass 添加到源块:

    ```{r cars, class.source='myClass'}
    summary(cars)
    ```  
    

    激发class.source 选项的先前答案(请参阅here)
    您可以使用fenced_code_attributes pandoc 的扩展(旨在将属性添加到<pre> 标记,请参阅here)和knitr output hook 添加一个类。

    以下示例运行良好:

    ---
    title: "Untitled"
      output: 
        html_document:
          md_extensions: +fenced_code_attributes
    ---
    
    ```{r, include=FALSE}
    knitr::knit_hooks$set(source = function(x, options) {
      return(paste0(
        "```{.r",
        ifelse(is.null(options$class),
          "", 
          paste0(" .", gsub(" ", " .", options$class))
        ),
        "}\n",
        x,
        "\n```"
      ))
    })
    ```
    
    ```{r cars, class="myClass1 myClass2"}
    summary(cars)
    ```
    

    编织此.Rmd 文件后,HTML 文件如下所示:

    <pre class="r myClass1 myClass2">
        <code>
            summary(cars)
        </code>
    </pre>
    

    fenced_code_attributes 扩展默认启用:在标准情况下,您不需要在 YAML 标头中包含行 md_extensions: +fenced_code_attributes。

    我不知道是否有更直接的解决方案使用knitr。

    【讨论】:

    • 有没有办法确保将类添加到代码块的img输出中?或者我可以用另一种方式添加到 吗?
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    相关资源
    最近更新 更多