很抱歉,如果我忽略了一些显而易见的事情,但是我已经搜索了所有我能想到的东西,却没有找到适合我的答案。
我的问题是我正在用ggplot2程序包(用“ fig.cap = xy”在块选项中创建的标题)和带有kable程序包的表创建图形。现在的问题是,当编织成PDF时,表格标题自动在表格顶部创建,图形标题自动在底部创建。我希望我的PDF外观统一,所以我希望表格和图形的标题都放在顶部。
建议在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"
日志结尾处有以下内容:
“!==>发生致命错误,没有输出PDF文件!”
这些是我在Yaml中的“标头包含”:
- \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:即使“ float”包未显示为在sessionInfo()中加载,我也将其范围缩小到导致此问题的“ kableExtra”包。删除它及其所有代码后,我遇到了另一个错误:
! Undefined control sequence.
<recently read> \floatplacement
删除后
- \floatplacement{figure}{H}
- \floatplacement{table}{H}
成功编织了Yaml。标题现在位于最上方,但其他所有内容现在都一团糟。如果没有“ kableExtra”软件包,我可以进行管理,但是如果没有Yaml中的“ floatplacement”,我就可以进行管理。
每个建议都将不胜感激!
答案 0 :(得分:1)
我也有这个错误。花了一段时间才能弄清楚,但是如果您阻止kableExtra
加载任何LaTeX
软件包,那么float
和floatrow
之间就不会发生冲突。
因此,请正常指定YAML标头:
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标头中指定其他包(例如,如果您突出显示行颜色)。通过所使用的软件包的完整列表kableExtra
可以在3页上找到here