Пробел после каждых пяти строк в выходе kable (с опцией booktabs) в документе R Markdown

Я использую knitr::kable() для рендеринга таблиц как часть документа R Markdown (который сам является частью проекта bookdown). В частности, опция booktabs (путем установки аргумента booktabs равным TRUE) визуализирует таблицу приятным образом. Однако я бы хотел, чтобы после каждых пяти строк не было пробела.

Вот, например, код и способ отображения таблицы в демоверсии bookdown при визуализации в формате PDF:

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

iris table with booktabs

Я хотел бы, чтобы пространство, которое появляется после каждых пяти строк, не было включено, но я не могу найти параметр в knitr::kable() который делает это.

Ответ 1

Причина, по которой высота строки не всегда одинакова, заключается в том, что по умолчанию kable вставляет \addlinespace каждые 5 строк, когда для booktabs указано значение TRUE, как показано здесь:

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

Чтобы изменить это, добавьте linesep = "" в качестве аргумента kable().

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

enter image description here

Смотрите раздел Избавление от \addlinespace в kable для более подробной информации.

Также стоит сказать, что вы можете поиграть с этой опцией, если вы хотите изменить стиль. Например, linesep = c("", "", "", "\\hline") добавит горизонтальную линию через каждые четыре пробела.