将 R Markdown 转换为 pdf 时的围栏代码块

fenced code blocks when converting R Markdown to pdf

当我将 R Markdown 文档编译为 HTML 文档时,非 R 代码块的格式很好。但是当我将以下 R Markdown 文档编译为 pdf 时,唯一添加的代码格式是在字体中。没有阴影、围栏、高亮等

---
output: pdf_document
---

```
code
```

我不想对输出进行微观管理,我只是想添加一些常识性的格式来清楚地将代码与文章分开。我在 MAc 上使用 TeXShop,引擎如下。

#!/bin/bash
/Library/Frameworks/R.framework/Versions/Current/Resources/bin/Rscript -e "rmarkdown::render(\"\", encoding='UTF-8')"

``` 中,您引入了一个普通的 markdown 代码块,而不是 knitr 代码块。但是您期望的输出(围栏、突出显示、阴影)是 knitr 添加到其代码块的样式。

因此,使用 ```{r} 将代码包装在 knitr 块中(如果您不想对代码求值,请使用 eval = FALSE)。这也可以用于 non-R 代码块:只要不评估代码,语言无关紧要。

但是,对于 non-R 代码,这将导致错误或缺少语法突出显示。要获得正确的语法突出显示,请使用 option engine if the language is among the supported language engines.

下面的示例显示了一个痛苦降价块、一个评估和未评估的 R 代码块、一个(未评估的)Python 块没有突出显示,最后两个(未评估的)Python 块正确突出显示.

---
output:
  pdf_document
---

```
Plain markdown code block.
```


```{r}
print("This is a knitr code chunk.")
```

```{r, eval = FALSE}
print("This is a knitr code chunk that isn't evaluated.")
```


Chunk with Python code (borrowed from  *wrong* (no) highlighting:
```{r, eval = FALSE}
if self._leftchild and distance - max_dist < self._median:
      yield self._leftchild
```

Chunk with Python code, *correct* highlighting:
```{r, eval = FALSE, engine = "python"}
if self._leftchild and distance - max_dist < self._median:
      yield self._leftchild
```

Chunk with Python code, *correct* highlighting (alternative notation):
```{python, eval = FALSE}
if self._leftchild and distance - max_dist < self._median:
      yield self._leftchild
```