fru*_*tum 4 css r r-markdown ioslides
有没有一种方法可以在以ioslides_presentation呈现的R markdown文档的代码块中启用语法突出显示?在降价参考速查表中写到,YAML参数highlight不适用于滑坡。因此,我一直在寻找一种通过自定义的CSS文件启用语法突出显示的方法,但是由于我不熟悉CSS,因此我没有找到任何解决方案。
任何帮助,将不胜感激。这是一个简短的可复制示例:
---
title: "example"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## Slide with R Output
```{r cars, echo = TRUE, eval = FALSE}
# cars' summary as an example for a comment
summary(cars)
# example for integers
cars[,1]
```
Run Code Online (Sandbox Code Playgroud)
如果导航到R安装库文件夹,则应该可以转到(请注意,版本号可能会有所不同):
rmarkdown > rmd > ioslides > ioslides-13.5.1 > theme > css
Run Code Online (Sandbox Code Playgroud)
查找“ default.css”文件。在其中,您可以向下滚动到/*Pretty print */注释。在下面,您应该看到一堆以开头的参数.prettyprint。最好的选择是将它们复制到新的自定义.css文件中,以便您可以稍作调整,直到获得突出显示的内容。例如,我制作了一个名为的文件slides.css,并将其放置在与Markdown文档相同的文件夹中。然后,我复制了这些css参数并修改了颜色:
/* Pretty print */
/* line 600, ../scss/default.scss */
.prettyprint .com {
/* a comment */
color: green;
font-style: italic;
}
/* line 604, ../scss/default.scss */
.prettyprint .lit {
/* a literal value */
color: black;
}
/* line 609, ../scss/default.scss */
.prettyprint .pun,
.prettyprint .opn,
.prettyprint .clo {
color: red;
}
/* line 618, ../scss/default.scss */
.prettyprint .pln {
color: blue;
}
Run Code Online (Sandbox Code Playgroud)
然后,使用我的ioslides文件:
---
title: "Ioslides check"
output:
ioslides_presentation:
css: slides.css
---
##
```{r}
# cars[,1] as an example for a comment
head(cars)
cars[1:5, 1]
```
Run Code Online (Sandbox Code Playgroud)
我的输出看起来像
如果要弄清楚实际上要修改的元素(例如,如果您想更改代码的外观),则可以使用浏览器的检查功能(Chrome中的CTRL + SHIFT + I)来突出显示您的ioslides输出的元素,以查看它们属于哪个类。例如,当我突出显示结果输出时,它表明可以通过使用pre(预格式化的文本)标签进行修改。因此,如果我将颜色参数添加到pre:
pre {
font-family: 'Source Code Pro', 'Courier New', monospace;
font-size: 20px;
color: pink;
line-height: 28px;
padding: 10px 0 10px 60px;
letter-spacing: -1px;
margin-bottom: 20px;
width: 106%;
left: -60px;
position: relative;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
/*overflow: hidden;*/
}
Run Code Online (Sandbox Code Playgroud)
我也可以更改结果输出:
但请记住,pre标记中还包含上述许多类,因此,如果您对这些类进行的修改pre并未被子类覆盖,则可能会得到一些意外的结果。例如,如果我改变font-size了的pre元素:
/* line 337, ../scss/default.scss */
pre {
font-family: 'Source Code Pro', 'Courier New', monospace;
font-size: 50px;
line-height: 28px;
padding: 10px 0 10px 60px;
letter-spacing: -1px;
margin-bottom: 20px;
width: 106%;
left: -60px;
position: relative;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
/*overflow: hidden;*/
}
Run Code Online (Sandbox Code Playgroud)
但仅更改某些子元素的字体大小
/* line 604, ../scss/default.scss */
.prettyprint .lit {
/* a literal value */
color: black;
font-size: 20px;
}
Run Code Online (Sandbox Code Playgroud)
我的输出会很奇怪: