如何在 Rmarkdown bookdown pdf:document2 中的图形标题中获取换行符
How to get a newline in a figure caption in Rmarkdown bookdown pdf:document2
我在 RStudio 中使用 knitr 编写 rmarkdown bookdown:pdf:document2 文档。
我有两个图,用 gridExtra 绘制 side-by-side,并标记为 A 和 B。我想在图标题的输出中添加一个换行符,如 fig.cap 所定义,在 A 的标题和那个之间对于 B,但我很难过。我试过:
\n - 被忽略,就好像它不存在一样
\\n - 未定义的控制序列
\\\n - @tempf 的参数有一个额外的 }。
\\\\n - 打印“\n”(这里有点傻)
double space - 什么都不做
出于绝望,我什至尝试了 HTML 风格的换行符,我不知道如何在这里显示,但我没想到它们会起作用,但它们没有。
在 LaTeX 中是可能的,所以肯定有办法...
注意:这不是 Split r chunk header across lines in knitr 的副本,因为它询问如何在 code[=35= 中跨行拆分 header 块中的长标题],我在 output.
中询问如何做到这一点
苏珊娜
---
title: "MRR captions"
author: "Susannah Cowtan"
date: "14 December 2018"
output:
bookdown::pdf_document2:
citation_package: natbib
number_sections: no
toc: no
keep_tex: true
bookdown::html_document2: null
header-includes:
- \usepackage{float}
- \usepackage{booktabs}
fontsize: 11pt
papersize: A4
---
```{r knitr_setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r plot-mtcars, fig.height = 3, fig.width = 4, fig.cap = "A: foo bar baz \nB: foobar"}
plot(mpg ~ wt, data = mtcars)
```
您可以通过插入适当的 LaTeX 命令来做到这一点,但以我的拙见,输出看起来不太令人愉快。
方案一:字幕包
通过将 - \usepackage{caption}
添加到 header-includes 来包含字幕包,然后在字幕中使用 \newline
命令。
```{r plot-mtcars, fig.height = 3, fig.width = 4, fig.cap = "A: foo bar baz \newline{}B: foobar"}
plot(mpg ~ wt, data = mtcars)
```
选项 2:通过长行强制换行
添加足够的水平 white-space 也会导致换行。但是,标题将不再居中显示。
```{r plot-mtcars, fig.height = 3, fig.width = 4, fig.cap = "A: foo bar baz \hspace{\textwidth}B: foobar"}
plot(mpg ~ wt, data = mtcars)
```
您可以考虑使用子数字代替换行符,例如
---
title: "MRR captions"
author: "Susannah Cowtan"
date: "14 December 2018"
output:
bookdown::pdf_document2:
keep_tex: true
header-includes:
- \usepackage{subfig}
---
See Figure \@ref(fig:plot-cars), which contains Figure \@ref(fig:plot-cars1) and Figure \@ref(fig:plot-cars2).
```{r plot-cars, fig.height = 3, fig.width = 4,, out.width='49%', fig.cap='Two plots', fig.subcap = c('foo bar baz', 'foobar')}
plot(mpg ~ wt, data = mtcars)
plot(cars)
```
我在 RStudio 中使用 knitr 编写 rmarkdown bookdown:pdf:document2 文档。 我有两个图,用 gridExtra 绘制 side-by-side,并标记为 A 和 B。我想在图标题的输出中添加一个换行符,如 fig.cap 所定义,在 A 的标题和那个之间对于 B,但我很难过。我试过:
\n - 被忽略,就好像它不存在一样
\\n - 未定义的控制序列
\\\n - @tempf 的参数有一个额外的 }。
\\\\n - 打印“\n”(这里有点傻)
double space - 什么都不做
出于绝望,我什至尝试了 HTML 风格的换行符,我不知道如何在这里显示,但我没想到它们会起作用,但它们没有。
在 LaTeX 中是可能的,所以肯定有办法...
注意:这不是 Split r chunk header across lines in knitr 的副本,因为它询问如何在 code[=35= 中跨行拆分 header 块中的长标题],我在 output.
中询问如何做到这一点苏珊娜
---
title: "MRR captions"
author: "Susannah Cowtan"
date: "14 December 2018"
output:
bookdown::pdf_document2:
citation_package: natbib
number_sections: no
toc: no
keep_tex: true
bookdown::html_document2: null
header-includes:
- \usepackage{float}
- \usepackage{booktabs}
fontsize: 11pt
papersize: A4
---
```{r knitr_setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
```{r plot-mtcars, fig.height = 3, fig.width = 4, fig.cap = "A: foo bar baz \nB: foobar"}
plot(mpg ~ wt, data = mtcars)
```
您可以通过插入适当的 LaTeX 命令来做到这一点,但以我的拙见,输出看起来不太令人愉快。
方案一:字幕包
通过将 - \usepackage{caption}
添加到 header-includes 来包含字幕包,然后在字幕中使用 \newline
命令。
```{r plot-mtcars, fig.height = 3, fig.width = 4, fig.cap = "A: foo bar baz \newline{}B: foobar"}
plot(mpg ~ wt, data = mtcars)
```
选项 2:通过长行强制换行
添加足够的水平 white-space 也会导致换行。但是,标题将不再居中显示。
```{r plot-mtcars, fig.height = 3, fig.width = 4, fig.cap = "A: foo bar baz \hspace{\textwidth}B: foobar"}
plot(mpg ~ wt, data = mtcars)
```
您可以考虑使用子数字代替换行符,例如
---
title: "MRR captions"
author: "Susannah Cowtan"
date: "14 December 2018"
output:
bookdown::pdf_document2:
keep_tex: true
header-includes:
- \usepackage{subfig}
---
See Figure \@ref(fig:plot-cars), which contains Figure \@ref(fig:plot-cars1) and Figure \@ref(fig:plot-cars2).
```{r plot-cars, fig.height = 3, fig.width = 4,, out.width='49%', fig.cap='Two plots', fig.subcap = c('foo bar baz', 'foobar')}
plot(mpg ~ wt, data = mtcars)
plot(cars)
```