在RStudio中的R Markdown中,我如何防止源代码超出PDF页面?

46

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

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

我理解设置tidyTRUE会使得当我将代码编织在一起时,代码不会跑到页面外面,而会自动换行。然而,有时候我执行像上面这个命令时,源代码显示还是会跑出去。是否还有其他的函数可以保证代码自动换行?谢谢!


不是一个很好的解决方案,但可以尝试这个 - jlhoward
可能是重复的问题,参考 knitr:如何防止输出中的文本换行? - Jim G.
2个回答

45

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

```{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")
```
您可以使用以下代码在整个文件中全局定义此选项:

```{python} knitr::opts_chunk$set(option = value) ```

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

tidy.opts 选项被传递给执行整理操作的 formatR 包(如果我理解正确)。有关 formatR 的详细信息可以在此处找到:

http://yihui.name/formatR/


19
将长网址(比如没有空格的字符串)导出为PDF时,会超出边距,无法正常显示。 - Pablo Casas
10
这对我也不起作用。可能是因为我的代码块中的代码是bash而不是R?即它看起来像{bash,eval = F},命令在PDF页面上运行。 - rrr
3
在R中,这对我不起作用,每行都无法单独运行,全局选项也不行。我现在正在尝试这个,但它不起作用:{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, tidy.opts=list(width.cutoff=60), tidy=TRUE) 我有一行非常长的代码定义矩阵,即使内部有足够多的空格,它也没有换行。 - Fran Marzoa

9
< p >我尝试使用formatR< /code>解决方案,但没有成功。对我有效的方法是将以下代码添加到YAML元数据< /p>
---
title: ...
author: ...
header-includes:
  \usepackage{fvextra}
  \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
---

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

我只想为将来阅读此内容的任何人补充一点,这个建议对我有效,而链接https://intro2r.com/tips-tricks.html上的建议对我无效。现在我的R代码可以正确换行,不会超出页面。谢谢。 - Novice
还要注意,在.Rmd文件中使其工作,每行前面实际上需要加上“- \usepackage{fvextra}”和“- \Defineblahblah”。 - Isaac Zhao
这个成功地工作了,非常有帮助。 - EngineerDanny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接