【问题标题】:In R markdown in RStudio, how can I prevent the source code from running off a pdf page?在 RStudio 的 R markdown 中,如何防止源代码从 pdf 页面运行?
【发布时间】:2014-11-30 09:12:33
【问题描述】:

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

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

现在,我的理解是,将 tidy 设置为 TRUE 可以使当我将代码组合在一起时,代码不会跑出页面并自行包装。但是,当我执行上述命令时,我偶尔仍然会显示源代码显示不可用。是否有另一个函数可以保证代码的包装?谢谢!

【问题讨论】:

标签: r rstudio


【解决方案1】:

tidy.opts knitr 选项中使用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")
```

您可以使用这样的块为整个文件全局定义此选项:

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

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

http://yihui.name/formatR/

【讨论】:

  • 当导出为 PDF 时,这不适用于长 URL(假设是没有空格的字符串),它们只是超出边距。
  • 这对我也不起作用。可能是因为我的代码块中的代码是 bash,而不是 R? IE。它看起来像 {bash, eval=F} 并且命令从 pdf 页面运行
  • 这在 R 中对我不起作用,在每一行中都不是独立的,不适用于全局选项。现在尝试这个,但它不起作用:{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, tidy.opts=list(width.cutoff=60), tidy=TRUE) 我有一条很长的线定义了一个矩阵,它没有被包裹,尽管里面有很多空间。
【解决方案2】:

formatR 解决方案也对我不起作用,对我有用的是将以下代码添加到 YAML metadata

---
title: ...
author: ...
header-includes:
  \usepackage{fvextra}
  \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
---

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 2019-11-24
    • 2020-11-25
    • 1970-01-01
    相关资源
    最近更新 更多