在 Rmarkdown 标题上方打印 table

Kable printing table above heading in Rmarkdown

使用我的 Rmarkdown 中的以下摘录

for (swimmer in swimmers) {
  cat('\newpage')
  cat('## ', swimmer, '\n\n')
  
  dtEvents <- dtClub[name == swimmer, ][order(event)]
  
  for (r in 1:nrow(dtEvents)) {
    row <- dtEvents[r,]
    title <- paste0('Event ', row$event, ' ', row$race_gender, ' ', row$age_group, ' ', row$distance, ' ', row$stroke)

    dtRace <- dt[event == row$event & seed %between% c(row$seed-5, row$seed+5)][order(seed)]

    cat(kbl(dtRace[, .(seed, name, age, club, seed_time_str, seed, heat, lane)],
        align = c('r','l','c','l','r','r','r','r'), caption = title, longtable = FALSE) %>%
      kable_styling(latex_options = c('striped','scale_down','repeat_header')))
    cat('\n')
  }
}

我最终将此人姓名的标题打印在第一页的表格下方,而不是表格上方。我得到每个人的分页符和表格中的所有数据,只有带有他们名字的标题在第一页上所有数据表的下方,其余表格在后面的页面上。

编辑:经进一步检查,\newpage 似乎根本不起作用。 \pagebreak 似乎也不起作用。

我发现通过使用 答案中的信息,我能够解决问题。作为 kable/latex 的完全菜鸟,我不知道表格在文档中的位置。

通过将 kable_styling(latex_options = "HOLD_position") 添加到 kable 语句,一切都按要求工作。在 R 代码中输出 latex 语句时,确保在正确的位置使用 '\n' 也很奇怪,否则它会有点不高兴。