sheet - r markdown the definitive guide pdf
Knitr y Rmarkdown docx tablas (4)
Cuando use knitr
y rmarkdown
juntos para crear un documento de Word, puede usar un documento existente para diseñar la salida.
Por ejemplo en mi encabezado yaml:
output:
word_document:
reference_docx: style.docx
fig_caption: TRUE
dentro de este estilo, he creado un estilo de tabla predeterminado; el objetivo aquí es tener la salida de la tabla de kable
en el estilo correcto.
Cuando tejo el documento de Word y uso el estilo.docx, las tablas no están estilizadas de acuerdo con la tabla.
El uso del inspector de estilo no ha sido útil hasta ahora, sin saber si el estilo de tabla predeterminado es el estilo incorrecto para modificar.
Código de ejemplo:
```{r kable}
n <- 100
x <- rnorm(n)
y <- 2*x + rnorm(n)
out <- lm(y ~ x)
library(knitr)
kable(summary(out)$coef, digits=2, caption = "Test Captions")
```
Lamentablemente, no tengo un documento estilizado que pueda cargar para realizar pruebas.
TL; DR: desea estilizar la salida de la tabla de rmarkdown y knitr automáticamente (a través de kable)
Actualización: Hasta ahora he encontrado que cambiar el estilo ''compacto'' en docx alterará automáticamente el contenido del texto de la tabla, pero esto no aborda el estilo general de la tabla, como el color de la celda y la alineación.
Actualización 2: Después de más investigación y creación de estilos, encontré que knitr
parece tener problemas para acceder a los estilos de párrafo. Sin embargo, los estilos de tabla no están en esa categoría de estilo y no parecen aplicarse en mis pruebas personales.
Actualización 3: Empeñado con el paquete ReporteRs
- aunque fue capaz de producir las tablas como se desea, la sintaxis requerida para hacerlo es laboriosa. Mucho más bien el estilo se aplicará automáticamente.
Actualización 4: No puede cambiar el estilo de TableNormal, ni tampoco funciona un estilo de Table Normal. El enfoque de XML no es lo que estamos buscando. Tengo una macro VBA que hará el truco, solo quiero eliminar ese proceso si es posible.
Esta es esencialmente una combinación de la respuesta que recomienda TableNormal
, esta publicación en rmarkdown.rstudio.com y mis propios experimentos para mostrar cómo usar un estilo TableNormal
para personalizar tablas como las generadas por kable
:
RMD :
---
output:
word_document
---
```{r}
knitr::kable(cars)
```
- Haga clic en "Tejer palabra" en RStudio. → El documento se abre en Word, sin ningún estilo personalizado todavía.
- En ese documento ( no en un documento nuevo), agregue los estilos requeridos. Este artículo explica los conceptos básicos. La clave no es aplicar estilos directos, sino modificar los estilos . Vea este artículo en support.office.com sobre los conceptos básicos de estilo en Word .
- Específicamente, para estilizar una tabla necesita agregar un estilo de tabla . Mi versión de Word no es en inglés, pero de acuerdo con el artículo vinculado, los estilos de tabla están disponibles a través de "la pestaña Diseño, en la pestaña contextual de Herramientas de tabla".
- Elija
TableNormal
como nombre de estilo y defina los estilos deseados. En mis experimentos la mayoría de los estilos funcionaron, sin embargo algunos no lo hicieron. (Agregar un color a la primera columna y hacer que la primera fila aparezca en negrita no fue un problema; se ignoró cada segunda fila). La última captura de pantalla en esta respuesta ilustra este paso. - Guarde el documento, por ejemplo, como
styles.docx
. Modifique el encabezado en el archivo RMD para usar la referencia DOCX (vea here ; no arruine la muesca; me tomó 10 minutos encontrar este error):
--- output: word_document: reference_docx: styles.docx ---
Vuelve a tejer a DOCX, el estilo debe aplicarse ahora.
Siguiendo los pasos que describí anteriormente se obtiene este resultado:
Y aquí una captura de pantalla del cuadro de diálogo de estilo de tabla utilizado para definir TableNormal
. Desafortunadamente, está en alemán, pero tal vez alguien pueda proporcionar una versión en inglés:
Como esto no parece funcionar para la mayoría de los usuarios (cualquiera excepto yo ...), sugiero que lo probemos sistemáticamente. Esencialmente, hay 4 pasos que pueden salir mal:
- RMD incorrecta (improbable).
- Diferencias en el DOCX generado inicialmente.
- Diferencias en cómo se guarda el estilo
TableNormal
en el DOCX. - Diferencias en cómo se utiliza la referencia DOCX para formatear la DOCX final.
Por lo tanto, sugiero usar el mismo RMD mínimo publicado anteriormente ( código completo en pastebin ) para averiguar dónde comienzan los resultados si difieren:
- Mi DOCX inicialmente generado .
- El mismo documento con
TableNormal
agregado: reference.docx - El documento final .
Los tres archivos se generan en el siguiente sistema: Windows 7 / R 3.3.0 / RStudio 0.99.896 / pandoc 1.15.2 / Office 2010.
Obtengo los mismos resultados en un sistema con Windows 7 / R 3.2.4 / RStudio 0.99.484 / pandoc 1.13.1 / Office 2010.
Supongo que los culpables más probables son las versiones pandoc y Office. Desafortunadamente, no puedo probar otras configuraciones en este momento. Ahora sería interesante ver lo siguiente: Para los usuarios donde no funciona, qué sucede ...
- ... si empiezas desde mi initial.docx ?
- Si eso no funciona, ¿qué sucede si utiliza mi reference.docx como documento de referencia?
- Si nada funciona, ¿hay diferencias llamativas en los archivos XML generados (dentro del contenedor DOCX)? Por favor, comparta sus archivos y la información exacta de la versión.
Con una cantidad de usuarios que ejecutan estas pruebas, debería ser posible averiguar qué está causando los problemas.
Esto fue en realidad un problema conocido . Afortunadamente, se resolvió en v2.0 o versiones posteriores de pandoc
.
Y he probado la versión más reciente y he encontrado que hay un estilo oculto recién agregado llamado " Tabla ". Seguir las sugerencias de @ CL. Para cambiar el estilo de "Tabla" en reference.docx
estará bien ahora.
Además, vea esta entrada de las notas de la versión v2.0 de pandoc
:
Utilice
Table
lugar deTable Normal
para el estilo de tabla ( # 3275 ).Table Normal
es el estilo de tabla predeterminado y no se puede modificar.
Pude obtener mi salida de palabras para usar un estilo de tabla predeterminado que definí en una referencia .docx.
En lugar de ''TableNormal'', el estilo de la tabla por defecto era ''Table''.
Descubrí esto haciendo punto un rmarkdown con un kable.
---
date: "December 1, 2017"
output:
word_document:
reference_docx: Template.docx
---
`r knitr::kable(source)`
Luego eché un vistazo al XML de ese documento generado para ver qué estilo había predeterminado.
require(XML)
docx.file <- "generated_doc.docx"
## unzip the docx converted by Pandoc
system(paste("unzip", docx.file, "-d temp_dir"))
document.xml <- "temp_dir/word/document.xml"
doc <- xmlParse(document.xml)
tblStyle <- getNodeSet(xmlRoot(doc), "//w:tblStyle")
tblStyle
Definí el estilo ''Tabla'' para poner un poco de color y bordes en la referencia docx. Esto funciona para un estilo de tabla estándar en todo el documento, no he encontrado una forma de usar diferentes estilos en todo el documento.
Esto se mantuvo así incluso después de que abrí el documento de referencia y lo edité.
TableNormal
no funciona para mí también.
En mi versión holandesa de Word 2016 (Office 365), descubrí que podía marcar tablas con el estilo Compact
.
Entrada ( refdoc.docx
contiene el estilo Compact
):
---
title: "Titel"
subtitle: "Ondertitel"
author: "`r Sys.getenv(''USERNAME'')`"
output:
word_document:
toc: true
toc_depth: 2
fig_width: 6.5
fig_height: 3.5
fig_caption: true
reference_docx: "refdoc.docx"
---
Y RMarkdown:
# Methoden {#methoden}
```{r}
kable(cars)
```
Salida: