web-dev-qa-db-fra.com

Espace après toutes les cinq lignes dans la sortie kable (avec l'option booktabs) dans le document R Markdown

J'utilise knitr::kable() pour rendre les tableaux dans le cadre d'un document R Markdown (qui fait lui-même partie d'un bookdown project). En particulier, l'option booktabs (en définissant l'argument booktabs sur TRUE) rend le tableau d'une manière agréable. Cependant, j'aimerais qu'il n'y ait pas d'espace après cinq rangées.

Voici, par exemple, le code et la façon dont le tableau dans la démo de bookdown apparaît lorsqu'il est rendu au format PDF:

knitr::kable(
  head(iris, 20), caption = 'Here is a Nice table!',
  booktabs = TRUE
)

iris table with booktabs

Je voudrais que l'espace qui apparaît après toutes les cinq lignes ne soit pas inclus, mais je n'arrive pas à trouver un paramètre dans knitr::kable() qui fasse cela.

27
Joshua Rosenberg

La raison pour laquelle la hauteur de ligne n'est pas toujours égale est que par défaut, kable insère un \addlinespace Toutes les 5 lignes lorsque booktabs est spécifié comme VRAI, comme indiqué ici :

linesep = if (booktabs) c('', '', '', '', '\\addlinespace') else '\\hline'

Pour modifier cela, ajoutez linesep = "" Comme argument à kable().

knitr::kable(
  head(iris, 20), caption = 'Here is a Nice table!',
  booktabs = TRUE,
  linesep = ""
)

enter image description here

Voir Débarrassez-vous de\addlinespace dans kable pour plus de détails.

Il convient également de dire que vous pouvez jouer avec cette option si vous souhaitez modifier le style. Par exemple, linesep = c("", "", "", "\\hline") ajouterait une ligne horizontale tous les quatre espaces.

44
Michael Harper