如何将图形的标题从底部移动到顶部?

How to move the caption of a figure from the bottom to the top?

如果我忽略了一些明显的东西,我很抱歉,但我用谷歌搜索了所有我能想到的东西,但没有找到适合我的答案。

我的问题是我正在使用 ggplot2 包创建图形(使用 "fig.cap = xy" 在块选项中创建标题)和 tables 使用 kable 包。现在的问题是,当编织成 PDF 时,table 的标题会自动创建在 table 的顶部,而数字的标题会在底部创建。我希望我的 PDF 具有统一的外观,因此我希望 table 的标题和数字都在顶部。

建议在 yaml 中使用 - \usepackage{floatrow}- \floatsetup[figure]{capposition=top},但是当我尝试这个时,我在尝试编织成 PDF 时出现了这个错误:

"! Package floatrow Error: Do not use float package with floatrow.
(floatrow)                The latter will be skipped.

Error: Failed to compile test.tex. See test.log for more info.
Execution stopped"

日志末尾有以下内容:

"! ==> Fatal error occurred, no output PDF file produced!"

这些是我在 yaml 中的 "header-includes":

- \usepackage[below]{placeins}
- \usepackage{setspace}
- \usepackage{flafter}
- \usepackage{chngcntr}
- \counterwithout{figure}{section}
- \counterwithout{table}{section}
- \usepackage{microtype}
- \floatplacement{figure}{H}
- \floatplacement{table}{H}
- \usepackage{floatrow}
- \floatsetup[figure]{capposition=top}

以及我使用的那些包:

library(plyr)
library(readxl)
library(xlsx)
library(markdown)
library(rmarkdown)
library(knitr)
library(kableExtra)
library(ggplot2)
library(reshape2)
library(httpuv)
formatlibrary(caTools)

有解决办法吗?或者还有其他方法可以让图的标题位于图的顶部吗?

Edit1:我将其缩小到导致此问题的包 "kableExtra",即使 "float" 包在 sessionInfo() 中未显示为已加载。删除它及其所有代码后,我 运行 进入另一个错误:

! Undefined control sequence.
<recently read> \floatplacement 

删除后

- \floatplacement{figure}{H}
- \floatplacement{table}{H}

从 yaml 中它编织成功。标题现在位于顶部,但现在其他一切都是一团糟。我可能可以在没有 "kableExtra" 包的情况下进行管理,但如果没有 yaml 中的 "floatplacement" 就不行。

我们将不胜感激!

我也有这个错误。花了一段时间才弄清楚,但是如果你阻止 kableExtra 加载任何 LaTeX 包,那么 floatfloatrow 之间不会发生冲突。

所以指定 YAML header 正常:

output:
  bookdown::pdf_document2:
    fig_caption: yes
header-includes: 
  - \usepackage{floatrow}
  - \floatsetup[figure]{capposition=top}
  - \floatsetup[table]{capposition=top}
  - \floatplacement{figure}{H}
  - \floatplacement{table}{H}
---

并确保在加载前设置此选项 kableExtra

options(kableExtra.latex.load_packages = FALSE)
library(kableExtra)

根据您的使用方式 kableExtra,您可能需要在 YAML header 中指定额外的包(例如,如果您突出显示行颜色)。 kableExtra 使用的软件包的完整列表可以在第 3 页 here.

上找到