如何在 r markdown ioslides 演示文稿中的代码块中启用语法突出显示?
How to enable syntax highlighting in code chunks within r markdown ioslides presentations?
有没有办法在呈现为 ioslides_presentation 的 R markdown 文档的代码块中启用语法高亮显示?
markdown reference cheatsheet 中写道 YAML 参数 highlight
不适用于 ioslides。所以我一直在寻找一种方法来通过 自定义的 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]
```
如果您导航到您的 R 安装库文件夹,您应该能够转到(请注意您的版本号可能会有所不同):
rmarkdown > rmd > ioslides > ioslides-13.5.1 > theme > css
找到 '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;
}
然后,使用我的 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]
```
我的输出看起来像
如果您想弄清楚您实际想要修改哪些元素(例如,如果您想更改代码的外观),您可以使用浏览器的检查功能(CTRL + SHIFT +我在 chrome) 中突出显示 ioslides 输出的元素以查看它们属于哪个 class。例如,当我突出显示结果输出时,它告诉我可以通过使用 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;*/
}
我也可以更改结果输出:
但请记住,上面的许多 classes 也包含在 pre
标记中,因此如果您对 pre
进行的修改未被子项覆盖class,您可能会得到一些意想不到的结果。例如,如果我更改 pre
元素的 font-size
:
/* 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;*/
}
但只改变部分子元素的字体大小
/* line 604, ../scss/default.scss */
.prettyprint .lit {
/* a literal value */
color: black;
font-size: 20px;
}
我的输出会不稳定:
有没有办法在呈现为 ioslides_presentation 的 R markdown 文档的代码块中启用语法高亮显示?
markdown reference cheatsheet 中写道 YAML 参数 highlight
不适用于 ioslides。所以我一直在寻找一种方法来通过 自定义的 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]
```
如果您导航到您的 R 安装库文件夹,您应该能够转到(请注意您的版本号可能会有所不同):
rmarkdown > rmd > ioslides > ioslides-13.5.1 > theme > css
找到 '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;
}
然后,使用我的 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]
```
我的输出看起来像
如果您想弄清楚您实际想要修改哪些元素(例如,如果您想更改代码的外观),您可以使用浏览器的检查功能(CTRL + SHIFT +我在 chrome) 中突出显示 ioslides 输出的元素以查看它们属于哪个 class。例如,当我突出显示结果输出时,它告诉我可以通过使用 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;*/
}
我也可以更改结果输出:
但请记住,上面的许多 classes 也包含在 pre
标记中,因此如果您对 pre
进行的修改未被子项覆盖class,您可能会得到一些意想不到的结果。例如,如果我更改 pre
元素的 font-size
:
/* 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;*/
}
但只改变部分子元素的字体大小
/* line 604, ../scss/default.scss */
.prettyprint .lit {
/* a literal value */
color: black;
font-size: 20px;
}
我的输出会不稳定: