3

我想在两列 LaTeX 文章中包含一个更宽的表格。这可以在 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 包(v0.2.0)于 2018 年 5 月 5 日创建。

4

3 回答 3

5

我在同样的问题上苦苦挣扎,甚至为此向 knitr 添加了一个功能请求,在Yihui Xie 告诉我已经可以这样做之前:

只需将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*}
于 2018-08-07T09:58:43.510 回答
2

有一个latex_table_envkable_styling

library(kableExtra)
kable(head(cars, 1), format = "latex") %>% 
  kable_styling(latex_table_env = "table*")
于 2018-05-07T16:34:18.483 回答
1

我不知道 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*}
于 2018-05-05T14:51:04.627 回答