2017-09-06 6 views
0

Utilisation de R Markdown pour sortir un pdf. kable() fonctionne très bien mais quand j'ajoute longtable=T la légende ne s'étend plus sur toute la largeur de la table. Je n'arrive pas à trouver un argument qui contrôlera les détails de la légende ici. Je peux déplacer la légende à sortir pour chaque fragment de code, mais j'utiliserais plutôt la fonctionnalité intégrée dans kable si possible.R Largeur de la légende du tableau de Markdown avec kable et longtable

Merci!

--- 
title: "test" 
author: "" 
date: "September 6, 2017" 
output: 
pdf_document: 
latex_engine: xelatex 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = FALSE) 
library(kableExtra) 
library(knitr) 
library(dplyr) 
``` 

```{r table1} 
test <- data.frame(col1=rep("MyLongWordsareLong",5), 
       col2=rep("MyLongWordsareLong",5), 
       col3=rep("MyLongWordsareLong",5), 
       col4=rep("MyLongWordsareLong",5), 
       col5=rep("MyLongWordsareLong",5), 
       col6=rep("MyLongWordsareLong",5)) 

kable(test,format='latex',booktabs=TRUE, 
caption="This is my example caption. See how, when I don't use 
longtable, it extends the full width of the table, but when I use the 
longtable option, it compresses down to only a portion of the table's wdith. 
Is this weird or is it just me?") %>% 
landscape() 

kable(test,longtable=TRUE,format='latex',booktabs=TRUE,caption="This is my 
example caption. See how, when I don't use longtable, it extends the full 
width of the table, but when I use the longtable option, it compresses down 
to only a portion of the table's wdith. Is this weird or is it just me?") 
%>% 
landscape() 
``` 

Répondre

0

Il s'agit probablement d'un problème LaTeX dans le package longtable. Cette page suggère une solution de contournement: https://tex.stackexchange.com/questions/287283/how-to-define-caption-width-in-longtable. Mettez simplement

header-includes: 
    - \usepackage{caption} 

dans votre en-tête YAML, et tout se passera comme prévu. Vous pouvez également ajouter le code LaTeX

\captionsetup{width=5in} 

(ou utiliser une autre mesure, comme 5cm, \textwidth, \textheight, etc.) pour obtenir des largeurs de légende cohérentes d'autres tailles.

+0

Brillant! J'avais lu le post que vous avez référencé mais je n'avais pas réalisé que 'longtable' dans LaTeX se comportait de manière similaire à l'argument RMarkdown pour longtable dans kable(). J'essaie toujours de comprendre le lien entre ces deux mondes. Je vous remercie! – Jordan