4 Tabelle
4.1 Fare in modo che le tabelle LaTeX si comportino bene
Gestire le tabelle in LaTeX può essere disgustoso. Questa sezione spiega i principali trucchi di cui hai bisogno per evitare di accumulare stress.
(Nota: se stai guardando la versione ebook, non vedrai molte differenze in questa sezione, poiché è rilevante solo per l’output PDF!)
4.1.1 Rendere bella la tua tabella
Quando usi kable
per creare tabelle, quasi sicuramente vorrai impostare l’opzione booktabs = TRUE
.
Questo già e sufficiente a renderla presentabile:
Dai un’occhiata q questa con lo stile predefinito, è orribile:
4.1.2 Se il tuo tavolo è troppo largo
Potresti scoprire che la tua tabella si espande oltre i margini della pagina, come le tabelle sopra.
Risolvi questo problema con la funzione kable_styling
dal pacchetto kableExtra
:
library(kableExtra)
head(mtcars) %>%
kable(booktabs = TRUE) %>%
kable_styling(latex_options = "scale_down")
Questo ridimensiona la tabella per adattarsi alla larghezza della pagina.
4.1.3 Se la tabella è troppo lunga
Se la tua tabella è troppo lunga per stare su una singola pagina, imposta longtable = TRUE
nella funzione kable
per dividere la tabella su più pagine.
a_long_table <- rbind(mtcars, mtcars)
a_long_table %>%
select(1:8) %>%
kable(booktabs = TRUE, longtable = TRUE)
Quando lo fai, probabilmente vorrai fare in modo che l’intestazione si ripeta su nuove pagine.
Fallo con la funzione kable_styling
di kableExtra
:
a_long_table %>%
kable(booktabs = TRUE, longtable = TRUE) %>%
kable_styling(latex_options = "repeat_header")
Sfortunatamente, non possiamo usare l’opzione scale_down
con una longtable
.
Quindi, se una longtable
è troppo larga, puoi regolare manualmente la dimensione del carattere o mostrare la tabella in formato orizzontale.
Per regolare la dimensione del carattere, usa l’opzione font_size
di kableExtra:
a_long_table %>%
kable(booktabs = TRUE, longtable = TRUE) %>%
kable_styling(font_size = 9, latex_options = "repeat_header")
Per mettere la tabella in modalità orizzontale, usa la funzione “landscape” di kableExtra:
4.1.4 Max power: regola manualmente l’output grezzo di LaTeX
Per una flessibilità totale, puoi regolare l’output grezzo di LaTeX da kable
/kableExtra
che genera la tabella.
Consideriamo il caso di regolazione della dimensione del carattere quando la tabella è troppo larga:
Latex ha una serie di comandi standard che impostano una dimensione approssimativa del carattere, come mostrato di seguito nella Figura 4.1.

Figure 4.1: Font sizes in LaTeX
Puoi usarli per regolare manualmente la dimensione del carattere nel tuo longtable in due passaggi:
- Avvolgere l’ambiente longtable, ad esempio, in un ambiente
scriptsize
, sostituendo una stringa nell’output dikable
/kableExtra
- Aggiungi gli attributi che fanno capire a R Markdown che la tabella è una tabella (sembra che R li rilasci quando eseguiamo la sostituzione della stringa)
our_adjusted_table <- a_long_table %>%
kable(booktabs = TRUE, longtable = TRUE) %>%
kable_styling(latex_options = "repeat_header") %>%
# wrap the longtable in a tiny environment
str_replace('\\\\begin\\{longtable\\}',
'\\\\begin\\{scriptsize\\}\n\\\\begin\\{longtable\\}') %>%
str_replace('\\\\end\\{longtable\\}',
'\\\\end\\{longtable\\}\n\\\\end\\{scriptsize\\}')
#add attributes to make R Markdown treat this as a kable LaTeX table again
our_adjusted_table %>%
structure(format = "latex", class = "knitr_kable")