Float options are not working for "latex" format pdf renders.
MWE:
---
title: ""
author: "Jono3030"
output:
html_document: default
pdf_document:
keep_tex: no
---
```{r echo=F, message=F, warning=F}
library(dplyr)
library(knitr)
library(kableExtra)
```
```{r, echo=FALSE}
out_type <- knitr::opts_knit$get("rmarkdown.pandoc.to")
```
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate urna in eleifend commodo. Praesent et tristique ligula, eget pretium eros. Ut congue leo nibh, a volutpat erat efficitur sed. Aliquam rhoncus mollis diam nec bibendum. Suspendisse eget massa a dui elementum tempus. Maecenas a lacus a odio bibendum eleifend sed ac mauris. Nunc molestie dui dignissim, egestas elit quis, suscipit erat. Donec id suscipit lectus, nec mollis nisl. Quisque ultrices quis eros in hendrerit. Etiam enim metus, vestibulum nec congue vitae, tempus eu ex. Ut vehicula elementum orci, vitae viverra mi tristique ac.
```{r demotable, results='asis', echo=F, message=F, warning=F}
latex_table <- tibble(col1=c(runif(9, 1, 99)), col2=c(runif(9, 1, 99))) %>%
kable(format="latex",
booktabs = T,
linesep = '',
caption = "MRE") %>%
kable_styling(full_width = F, position = "float_right")
html_table <- tibble(col1=c(runif(9, 1, 99)), col2=c(runif(9, 1, 99))) %>%
kable(format="html",
caption = "MRE") %>%
kable_styling(full_width = F, position = "float_right")
switch(out_type,
html = html_table,
latex = latex_table
)
```
Sed in efficitur mauris. Donec vulputate non leo eget commodo. Vivamus luctus arcu at lorem pulvinar condimentum. Nullam felis risus, mattis vel accumsan vehicula, ullamcorper in risus. Nullam ullamcorper dignissim massa, ac tristique nibh fringilla in. Proin tortor est, ornare sit amet magna non, eleifend feugiat sapien. Fusce quis augue quis lectus dignissim consequat vel et dui. Aliquam dui eros, cursus a mauris id, volutpat blandit tellus. Nunc porta tincidunt rhoncus. Donec fermentum sem et justo ultricies, ut ullamcorper quam vehicula. Aenean commodo velit rhoncus nibh tristique, at sollicitudin nibh ultricies. Curabitur odio enim, fringilla id neque a, pharetra lobortis urna. Curabitur suscipit quam vitae libero vestibulum, vel ornare arcu pharetra. Sed sagittis mauris faucibus arcu tincidunt elementum. In sodales tincidunt iaculis.
Cras a eleifend sapien, a eleifend nulla. Donec ultrices molestie nibh sed facilisis. Aliquam eu hendrerit justo. Nullam ac dictum dui. Nullam ac lectus ut nisl consequat ornare. Sed accumsan rutrum varius. Nam nec felis id elit viverra consequat et non lorem.
Pellentesque eget blandit lorem. Curabitur at ultricies leo, sed porttitor erat. Vivamus fringilla erat a arcu scelerisque vestibulum. Maecenas non mollis lectus. Aenean a ipsum sem. Aenean nec hendrerit lacus, at ornare neque. Phasellus id nisi non risus faucibus condimentum.
Nulla a nulla a nulla dapibus scelerisque. Pellentesque molestie leo id porta tincidunt. Ut venenatis interdum egestas. Ut id maximus libero, ut iaculis lacus. Praesent sit amet bibendum lacus. Donec venenatis at mauris sit amet mollis. Donec eleifend nibh mauris, in euismod nisi hendrerit a. Cras porttitor rhoncus diam eget rutrum. Phasellus condimentum maximus felis sit amet fermentum. Aenean lacinia ornare dolor, sit amet finibus magna tempor sed.
The MWE results in this:
I'm wondering if someone can reproduce this issue since I haven't found anything on it on stackoverflow or anywhere else.
There are no issues when using the "html" format:
Am I missing something here? Is the float option only available for the "html" format?
Edit: sessionInfo() as requested by @J_F
R version 3.6.3 (2020-02-29)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)
Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.7.0
LAPACK: /usr/lib/lapack/liblapack.so.3.7.0
locale:
[1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8
[5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 LC_PAPER=en_CA.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] kableExtra_1.1.0 knitr_1.24 dplyr_0.8.3 nvimcom_0.9-82
loaded via a namespace (and not attached):
[1] Rcpp_1.0.2 rstudioapi_0.10 xml2_1.2.2 magrittr_1.5 hms_0.5.0 munsell_0.5.0
[7] tidyselect_0.2.5 rvest_0.3.4 viridisLite_0.3.0 colorspace_1.4-1 R6_2.4.0 rlang_0.4.0
[13] stringr_1.4.0 httr_1.4.1 tools_3.6.3 webshot_0.5.1 xfun_0.8 htmltools_0.3.6
[19] assertthat_0.2.1 digest_0.6.20 tibble_2.1.3 crayon_1.3.4 purrr_0.3.2 readr_1.3.1
[25] vctrs_0.2.0 zeallot_0.1.0 glue_1.3.1.9000 evaluate_0.14 rmarkdown_1.14 stringi_1.4.3
[31] compiler_3.6.3 pillar_1.4.2 scales_1.0.0 backports_1.1.4 pkgconfig_2.0.2
Right here: How to I keep a kable caption with a floating table? user @bttomio suggests a solution based on this thread: https://github.com/haozhu233/kableExtra/issues/221#issuecomment-400473530
Once added proper libraries (I've also modified first R chunk!), in your case the implementation of this solution could look like that:
---
title: "Test"
author: "gnypit"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
options(tinytex.verbose = TRUE)
library(knitr)
library(kableExtra)
library(tibble)
library(xtable)
```
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate urna in
eleifend commodo. Praesent et tristique ligula, eget pretium eros. Ut congue leo nibh,
a volutpat erat efficitur sed. Aliquam rhoncus mollis diam nec bibendum. Suspendisse
eget massa a dui elementum tempus. Maecenas a lacus a odio bibendum eleifend sed ac
mauris. Nunc molestie dui dignissim, egestas elit quis, suscipit erat. Donec id
suscipit lectus, nec mollis nisl. Quisque ultrices quis eros in hendrerit. Etiam enim
metus, vestibulum nec congue vitae, tempus eu ex. Ut vehicula elementum orci, vitae
viverra mi tristique ac.
```{r, echo=FALSE}
xtable2kable <- function(x)
{
out <- capture.output(print(x, table.placement = NULL))[-(1:2)]
out <- paste(out, collapse = "\n")
structure(out, format = "latex", booktabs = T, linesep = '', class = "knitr_kable")
}
data <- tibble(col1=c(runif(9, 1, 99)), col2=c(runif(9, 1, 99)))
xtable(data, caption = "MRE") %>%
xtable2kable() %>%
kable_styling(position = "float_right")
```
Sed in efficitur mauris. Donec vulputate non leo eget commodo. Vivamus luctus arcu at
lorem pulvinar condimentum. Nullam felis risus, mattis vel accumsan vehicula,
ullamcorper in risus. Nullam ullamcorper dignissim massa, ac tristique nibh fringilla
in. Proin tortor est, ornare sit amet magna non, eleifend feugiat sapien. Fusce quis
augue quis lectus dignissim consequat vel et dui. Aliquam dui eros, cursus a mauris
id, volutpat blandit tellus. Nunc porta tincidunt rhoncus. Donec fermentum sem et
justo ultricies, ut ullamcorper quam vehicula. Aenean commodo velit rhoncus nibh
tristique, at sollicitudin nibh ultricies. Curabitur odio enim, fringilla id neque a,
pharetra lobortis urna. Curabitur suscipit quam vitae libero vestibulum, vel ornare
arcu pharetra. Sed sagittis mauris faucibus arcu tincidunt elementum. In sodales
tincidunt iaculis.
Cras a eleifend sapien, a eleifend nulla. Donec ultrices molestie nibh sed facilisis.
Aliquam eu hendrerit justo. Nullam ac dictum dui. Nullam ac lectus ut nisl consequat
ornare. Sed accumsan rutrum varius. Nam nec felis id elit viverra consequat et non
lorem.
Pellentesque eget blandit lorem. Curabitur at ultricies leo, sed porttitor erat.
Vivamus fringilla erat a arcu scelerisque vestibulum. Maecenas non mollis lectus.
Aenean a ipsum sem. Aenean nec hendrerit lacus, at ornare neque. Phasellus id nisi non
risus faucibus condimentum.
Nulla a nulla a nulla dapibus scelerisque. Pellentesque molestie leo id porta
tincidunt. Ut venenatis interdum egestas. Ut id maximus libero, ut iaculis lacus.
Praesent sit amet bibendum lacus. Donec venenatis at mauris sit amet mollis. Donec
eleifend nibh mauris, in euismod nisi hendrerit a. Cras porttitor rhoncus diam eget
rutrum. Phasellus condimentum maximus felis sit amet fermentum. Aenean lacinia ornare
dolor, sit amet finibus magna tempor sed.