2 列 LaTeX 环境 table* in kable, kableExtra

2-column LaTeX environment table* in kable, kableExtra

我想在两栏 LaTeX 文章中包含更宽的 table。这可能是 在 LaTeX 中使用 \begin{table*} ... \end{table*} 而不是 \begin{table} ... \end{table}。我怎样才能告诉 R 包 kablekableExtra 到 实现这个?

以下生成了通常的 \begin{table}

library(kableExtra)
kable(head(cars, 1), format = "latex") %>% 
  kable_styling()

产生:

#> \begin{table}[H]
#> \centering
#> \begin{tabular}{r|r}
#> \hline
#> speed & dist\
#> \hline
#> 4 & 2\
#> \hline
#> \end{tabular}
#> \end{table}

但我想要的是:

#> \begin{table*}[H]
#> \centering
#> \begin{tabular}{r|r}
#> \hline
#> speed & dist\
#> \hline
#> 4 & 2\
#> \hline
#> \end{tabular}
#> \end{table*}

我知道我可以使用 gsub 破解输出,但想知道是否有 干净利落的方法。

reprex package (v0.2.0) 创建于 2018-05-05。

我不知道 knitr 是否可行,但使用 xtable 很容易实现:

data(cars)
library(xtable)
library(magrittr)

xtable(head(cars, 1), align="rr|r") %>%
  print.xtable(
    floating.environment="table*", # use table* environment
    include.rownames=FALSE,
    table.placement="H"
  )

# % latex table generated in R 3.4.4 by xtable 1.8-2 package
# % Sat May  5 16:47:49 2018
# \begin{table*}[H]
# \centering
# \begin{tabular}{r|r}
#   \hline
# speed & dist \ 
#   \hline
# 4.00 & 2.00 \ 
#   \hline
# \end{tabular}
# \end{table*}

kable_styling中有一个latex_table_env

library(kableExtra)
kable(head(cars, 1), format = "latex") %>% 
  kable_styling(latex_table_env = "table*")

我一直在努力解决同样的问题,甚至为此向 knitr 添加了一个功能请求,在 Yihui Xie told me 之前,它已经可以做到:

只需添加 table.env='table*' 作为 kable 的参数:

knitr::kable(head(cars,1), format = "latex", table.env='table*')

会产生

\begin{table*}

  \begin{tabular}{r|r}
    \hline
    speed & dist\
    \hline
    4 & 2\
    \hline
  \end{tabular}

\end{table*}