如何在 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)
```

详情见TeX stackexchange

您可以考虑使用子数字代替换行符,例如

---
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)
```