2列的LaTeX环境表格*在kable、kableExtra中

4

我想在两栏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来修改输出,但想知道是否有更干净的方法。

本文档创建于2018年5月5日,使用reprex包 (v0.2.0)。

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*}

2

kable_styling 中有一个 latex_table_env

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

这将tabular切换为table*,我失去了浮动环境。 - chris
1
@chris 噢,我明白了。不幸的是,目前在kableExtra中没有改变它的方法。你需要通过gsub来实现。 - Hao

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*}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接