【问题标题】:Wrapping long string in knitr code block在 knitr 代码块中包装长字符串
【发布时间】:2017-01-28 21:30:56
【问题描述】:

我无偿使用knitr 编写正式的PDF 文档。我想使用代码块而不是块引用,因为......这很有趣。但是,我想放在代码块中的段落不会换行。我怎样才能做到这一点?我尝试了以下方法:

\documentclass[a4paper]{article}
\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage{csquotes}
\begin{document}

<<setup, include=FALSE, results='hide', cache=FALSE>>=
opts_chunk$set(echo=FALSE, warning = FALSE, message = FALSE, cache = FALSE, error = FALSE)
@

Some text

<<tidy=TRUE, width=50, comment=NA>>==
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut     
aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit
in voluptate velit esse cillum dolore eu fugiat nulla pariatur.     
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui 
officia deserunt mollit anim id est laborum."
@

\end{document}

...这给出了这个:

我尝试了this 解决方案,但我想避免对每一行进行编号。我也尝试在“\n”中粘贴以进行换行,但无济于事。

【问题讨论】:

  • 在每行末尾添加两个空格是否会在代码块中添加手动换行符?
  • 不,两个空格没有任何作用。手动将文本放在不同的行确实将 \n 添加到字符串中,但字符串仍在文档中的一行。

标签: r knitr


【解决方案1】:

根据您的代码语法,您可能希望直接使用 LaTex 而不是 RStudio (knitr) 来创建输出。在我的 RStudio 中,我收到一条错误消息并且无法编译 PDF,直到删除了特定于 LaTex 的命令,例如 \begin{document}\end{document}。我希望这是您正在寻找的:

---
title: "Untitled"
output: pdf_document
---

```{r setup, include=FALSE}
library(knitr)
opts_chunk$set(echo = TRUE)
options(width=80)
opts_chunk$set(comment = "", warning = FALSE, message = FALSE, echo = TRUE, tidy = TRUE, size="small")
```

Some text

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut     
aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit
in voluptate velit esse cillum dolore eu fugiat nulla pariatur.     
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui 
officia deserunt mollit anim id est laborum."

我注意到您将width=50 指定为仅一个块的块选项。如果您将该选项设置为全局块选项,如this post 中所示,这可能会有所帮助。

【讨论】:

  • 关键是出于新奇而使用 knitr(一个 .Rnw 脚本而不是 .Rmd);我当然可以在 LaTeX 中做到这一点,但以艰难的方式做到这一点更有趣/更有教学意义。
  • 您可能会遇到错误,因为您使用的是带有降价功能的 .Rmd 文件,而不是使用像 \being{document} 这样的乳胶命令的 .Rnw 文件。
猜你喜欢
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 2020-09-02
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多