Reputation: 363
I'm writing a pdf report in RMarkdown and want to float_left
a kable with a caption. This works without a caption:
---
title: "test2"
output: pdf_document
header-includes:
- \usepackage{wrapfig}
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
options(knitr.table.format="latex")
```{r, echo=FALSE}
library(knitr)
library(kableExtra)
kbl(head(cars), booktabs=T) %>%
kable_styling(latex_options = "striped", position = "float_left")
But adding caption="A Caption"
to the kbl
line, as in
kbl(head(cars), caption="A Caption", booktabs=T) %>%
throws this error:
! Extra }, or forgotten \endgroup.
\endwraptable ...kip \egroup \box \z@ \fi \egroup
\WF@floatstyhook \def \wid...
l.164 \end{wraptable}
Error: LaTeX failed to compile test2.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See test2.log for more info.
Execution halted
I've searched SO for what I'd think would be a frequent situation, but have found nothing. It must be something simple I'm missing. Help please.
Upvotes: 3
Views: 479
Reputation: 2306
There is a solution here (although the caption moves to the bottom): https://github.com/haozhu233/kableExtra/issues/221#issuecomment-400473530
Following this solution, you could try this .Rmd
file:
---
title: "test2"
output: pdf_document
header-includes:
- \usepackage{wrapfig}
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
options(knitr.table.format="latex")
```
Lorem ipsum dolor sit amet, consecteturadipiscing elit. Cras sit amet mauris inex ultricies elementum vel rutrum dolor.Phasellus tempor convallis dui, in hendreritmauris placerat scelerisque. Maecenas a ac-cumsan enim, a maximus velit. Pellentesquein risus eget est faucibus convallis nec atnulla. Phasellus nec lacinia justo. Morbifermentum, orci id varius accumsan, nibhneque porttitor ipsum, consectetur luctusrisus arcu ac ex. Aenean a luctus augue. Suspendisse et auctor nisl. Suspendisse cursus ultrices quam nonvulputate. Phasellus et pharetra neque, vel feugiat erat. Sed feugiat elit at mauris commodo consequat. Sedcongue lectus id mattis hendrerit. Mauris turpis nisl, congue eget velit sed, imperdiet convallis magna. Namaccumsan urna risus, non feugiat odio vehicula eget.
```{r, echo=FALSE}
library(knitr)
library(kableExtra)
library(xtable)
xtable2kable <- function(x) {
out <- capture.output(print(x, table.placement = NULL))[-(1:2)]
out <- paste(out, collapse = "\n")
structure(out, format = "latex", class = "knitr_kable")
}
xtable(head(cars), booktabs=T, caption="A Caption") %>%
xtable2kable() %>%
kable_styling(latex_options = "striped", position = "float_left")
```
Lorem ipsum dolor sit amet, consecteturadipiscing elit. Cras sit amet mauris inex ultricies elementum vel rutrum dolor.Phasellus tempor convallis dui, in hendreritmauris placerat scelerisque. Maecenas a ac-cumsan enim, a maximus velit. Pellentesquein risus eget est faucibus convallis nec atnulla. Phasellus nec lacinia justo. Morbifermentum, orci id varius accumsan, nibhneque porttitor ipsum, consectetur luctusrisus arcu ac ex. Aenean a luctus augue. Suspendisse et auctor nisl. Suspendisse cursus ultrices quam nonvulputate. Phasellus et pharetra neque, vel feugiat erat. Sed feugiat elit at mauris commodo consequat. Sedcongue lectus id mattis hendrerit. Mauris turpis nisl, congue eget velit sed, imperdiet convallis magna. Namaccumsan urna risus, non feugiat odio vehicula eget.
Lorem ipsum dolor sit amet, consecteturadipiscing elit. Cras sit amet mauris inex ultricies elementum vel rutrum dolor.Phasellus tempor convallis dui, in hendreritmauris placerat scelerisque. Maecenas a ac-cumsan enim, a maximus velit. Pellentesquein risus eget est faucibus convallis nec atnulla. Phasellus nec lacinia justo. Morbifermentum, orci id varius accumsan, nibhneque porttitor ipsum, consectetur luctusrisus arcu ac ex. Aenean a luctus augue. Suspendisse et auctor nisl. Suspendisse cursus ultrices quam nonvulputate. Phasellus et pharetra neque, vel feugiat erat. Sed feugiat elit at mauris commodo consequat. Sedcongue lectus id mattis hendrerit. Mauris turpis nisl, congue eget velit sed, imperdiet convallis magna. Namaccumsan urna risus, non feugiat odio vehicula eget.
Output:
Upvotes: 2