Split r chunk header across lines in knitr

2019-07-19 14:59发布

When I'm inserting long captions and the like in my R chunk header, it'd be nice to be able to split the header across multiple lines.

Is there any easy way to do this?

E.g.:

```{r, echo=FALSE, warning=FALSE, 
    fig.cap="Here is my really long caption.  It'd be nice to split this and other portions across lines"}
    print(plot(x=runif(100),y=runif(100)))
```

1条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-07-19 15:34

No, you cannot insert line breaks in chunk options. From the manual:

Chunk options must be written in one line; no line breaks are allowed inside chunk options

However, if you desperately want neat formatting in the editor you could take a detour via an additional variable, but this inflates the code quite a lot:

---
output: 
  pdf_document:
    fig_caption: yes
---
```{r}
mycaption <- "This is my 
very long caption
that spans over
several lines.
(in the editor)"
```

```{r, fig.cap = mycaption}
plot(1)
```

With the option eval.after it is even possible to define mycaption within the chunk that uses it as option value:

---
output: 
  pdf_document:
    fig_caption: yes
---
```{r}
library(knitr)
opts_knit$set(eval.after = "fig.cap")
```

```{r, fig.cap = mycaption}
mycaption <- "This is my 
very long caption
that spans over
several lines.
(in the editor)"

plot(1)
```

(I assume that the question is about how the code looks (in the editor) not about a line break in the output.)

查看更多
登录 后发表回答