Skip to content
Prev 10674 / 15380 Next

[R-es] ¿Cómo generar tabla apaisada salida PDF con RMarkdown?

Muchas gracias, José Antonio y Carlos.

Estaba por escribir sandeces varias. Comento, por si hay algún lector, 
que como yo, se guarda los correos con respuestas a problemas posibles.

No estaba usando|header.tex|, que es necesario para una como para otra 
solución.

El encabezado queda así:
|---||
||title: "Tablas que no entran"||
||author: "Sandia Urlia"||
||date: ""||
||output: ||
||    pdf_document:||
||        includes:||
||            in_header: header.tex ||
||---
|
La solución que comentó Carlos (la de: 
http://stackoverflow.com/questions/25849814/rstudio-rmarkdown-both-portrait-and-landscape-layout-in-a-single-pdf) 
tiene la ventaja de que permite girar tablas generadas con |kable()| sin 
más que poner tres lineas de código tex. Importante dejar un espacio 
después de terminar el chunk y antes de |\elandscape|.

|
||\newpage||
||\blandscape||
||```{r }||
||la.tabla.ancha <- cars[c(1:10),rep(1,14)]||
||knitr::kable(la.tabla.ancha, caption = "La tablaza")||
||```||
||
||\elandscape|

También sirve para girar código o lo que haga falta. En el caso de 
arriba aparecen girados el código y la tabla.
En contra (o a favor) el entorno no es flotante, por lo que en el punto 
en el que se coloque irá la página nueva


La solución que comentó josé Antonio requiere que en el documento 
header.tex se incluya la linea:
|
||\usepackage{rotating}

|
Que, por otro lado, es lo que le faltaba al documento que había 
presentado antes para poder funcionar.
https://cran.r-project.org/web/packages/xtable/vignettes/xtableGallery.pdf 
(pag. 25)

Así quedó el chunk

|```{r results='asis'}||
library(xtable)
||x <- xtable(||
||        la.tabla.ancha, caption = "La tablota (2)"||
||    )||
||options(xtable.comment = FALSE)||
||print(x, floating = TRUE,||
||        floating.environment = "sidewaystable"||
||    )||
||```|

Pero atento! Que esta otra forma no funciona:
|
||```{r results='asis'}||
||options(xtable.comment = FALSE)||
||print(||
||    xtable::xtable(||
||        la.tabla.ancha, caption = "La tablota (1)",||
||        floating = TRUE,||
||        floating.environment = "sidewaystable"||
||    ))||
||```|
Para que funcione, tiene que estar generado el elemento |xtable| antes 
de |print()| y luego asignarlo.

A favor (o en contra): el entorno que genera es flotante, por lo que se 
insertará según las reglas de composición de LaTeX y no ahí mismo donde 
uno está escribiendo.

Un posible header.tex para ver las dos soluciones:

|||%para que rote con xtable
||\usepackage{rotating}||

%para girar a piacere
||\usepackage{lscape}||
||\newcommand{\blandscape}{\begin{landscape}}||
||\newcommand{\elandscape}{\end{landscape}}|



og., 2016.eko iraren 08a 18:36(e)an, Carlos Ortega igorleak idatzi zuen: