2016-06-21 14 views
9

Belirli bir kod yığınına bir CSS sınıfı eklemek mümkün mü? Ben mesela, 'arabalar' belli CSS sınıf etiketli öbek vermek istiyorumTek kodlu parçalara bir CSS sınıfı ekleyin RMarkdown

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


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

:

aşağıdaki dosyayı varsayalım .myClass.

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

ya şöyle ihtimali var mı? Bütün öbgeyi <div> numaralı telefonun içinde sarma gibi hacklerin farkındayım. Doğru bir çözümle ilgileniyorum.

cevap

9

Düzenleme: Bu özellik knitr v.1.16 (05/18/17)
class.source ve class.output seçenekleri ek HTML sınıfları kaynak ve çıkış parçaları (knitr documentation bakınız) uygulamak tanıtıldı.
kaynak yığın myClass eklemek için:

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

class.source seçenekleri ilham Önceki cevap
ekleyebilir amaçlanmaktadır fenced_code_attributes Pandoc uzantısı (kullanarak bir sınıfı ekleyebilir (here bakınız) <pre> etiketine ilişkin özellikler, bkz. here) ve knitroutput hook.

Aşağıdaki örnek çalışıyor:

--- 
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) 
``` 

bu .Rmd dosyayı örgü sonra HTML belge şuna benzer:

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

fenced_code_attributes uzatma varsayılan olarak etkindir: Standart durumlarda, YAML başlığınıza md_extensions: +fenced_code_attributes hattını eklemeniz gerekmez.

knitr kullanarak daha basit bir çözüm olup olmadığını bilmiyorum.