在RStudio的R markdown中,如何防止源代码在pdf页面上运行?

use*_*057 37 r rstudio

我目前有一些看起来像这样的代码:

```{r, tidy=TRUE}
plot(DT$age, DT$height, xlab = "Age of participant in Trials", ylab = "Height of participant in       Trials")
```
Run Code Online (Sandbox Code Playgroud)

现在,我的理解是设置tidyTRUE使得当我将代码编织在一起时,代码不会在页面上运行并且会自行换行.但是,当我执行上面的命令时,我偶尔会在源代码显示中运行.还有另一个函数可以保证代码的包装吗?谢谢!

jub*_*uba 34

使用knitr options中的width.cutoff参数tidy.opts指定输出宽度:

```{r, tidy=TRUE, tidy.opts=list(width.cutoff=60)}
plot(DT$age, DT$height, xlab = "Age of participant in Trials", ylab = "Height of participant in trials")
```
Run Code Online (Sandbox Code Playgroud)

您可以使用如下所示的块为整个文件全局定义此选项:

```{r}
library(knitr)
opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE)
```
Run Code Online (Sandbox Code Playgroud)

tidy.opts选项被传递给formatR其做了整理(如果我理解正确的话)封装.有关的深入信息formatR可以在这里找到:

http://yihui.name/formatR/

  • 在导出为PDF时,这不适用于长网址(假设没有空格的字符串),它们只是在边距之外. (8认同)
  • 这在 R 中对我不起作用,不是在每一行中独立,也不是全局选项。现在尝试这个,它不起作用: ```{r setup, include=FALSE} knit::opts_chunk$set(echo = TRUE, tidy.opts=list(width.cutoff=60), tidy=TRUE) `` ` 我有一条很长的线定义了一个矩阵,尽管里面有足够的空间,但它没有被包裹。 (3认同)
  • 这对我也不起作用。可能是因为我块中的代码是bash而不是R?即。它看起来像{{bash,eval = F}`,命令从pdf页面运行 (2认同)

小智 10

formatR解决方案也不适合我,对我有用的是将以下代码添加到YAML 元数据中

---
title: ...
author: ...
header-includes:
  \usepackage{fvextra}
  \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
---
Run Code Online (Sandbox Code Playgroud)

在.tex文件中,Highlighting环境用于打印代码。上面的代码重新定义了默认Highlighting环境以包含该breaklines选项,该选项需要fvextra包并为我们创建换行。