修改或检索 kableExtra 的乳胶输出
Modifying or retrieving latex output of kableExtra
有没有办法修改或子集 kableExtra 的乳胶代码输出的一部分?
例如,给定以下代码的输出:
kable(head(mtcars)[1:3], format = "latex", booktabs = TRUE)
是否可以:
a) 直接编辑其中一行(例如将“型号”放在 & mpg & cyl & disp 之前)
b) 或者,只是子集 \midrule 和 \bottomrule 之间的所有内容,但删除其他所有内容
我希望上面的选项 b) 围绕 table 主要内容的预格式化行编写我自己的乳胶代码,例如:
cat(c("\begin{table}[!htb]
\begin{tabular}{lrrr}
\toprule
Model & MPG & CYL & DISP\",
t1, # these are the rows between midrule and bottomrule
"\end{tabular}
\end{table}"), file = "my_own.tex")
也许这就是您要找的。由于 kable
输出是一个字符串,您可以通过字符串工具对其进行操作。使用例如stringr
包你可以编写一个函数来提取 \midrule
和 \bottomrule
之间的部分,如下所示:
library(kableExtra)
library(stringr)
tbl <- kable(head(mtcars)[1:3], format = "latex", booktabs = TRUE)
get_tbl_body <- function(x) {
start <- str_locate(tbl, "\\midrule")[1]
end <- str_locate(tbl, "\\bottomrule")[2]
str_sub(x, start, end)
}
t1 <- get_tbl_body(tbl)
cat(c("\begin{table}[!htb]",
"\begin{tabular}{lrrr}",
"\toprule",
"Model & MPG & CYL & DISP\\",
t1, # these are the rows between midrule and bottomrule
"\end{tabular}",
"\end{table}"), sep = "\n")
#> \begin{table}[!htb]
#> \begin{tabular}{lrrr}
#> \toprule
#> Model & MPG & CYL & DISP\
#> \midrule
#> Mazda RX4 & 21.0 & 6 & 160\
#> Mazda RX4 Wag & 21.0 & 6 & 160\
#> Datsun 710 & 22.8 & 4 & 108\
#> Hornet 4 Drive & 21.4 & 6 & 258\
#> Hornet Sportabout & 18.7 & 8 & 360\
#> \addlinespace
#> Valiant & 18.1 & 6 & 225\
#> \bottomrule
#> \end{tabular}
#> \end{table}
由 reprex package (v0.3.0)
于 2021-01-03 创建
有没有办法修改或子集 kableExtra 的乳胶代码输出的一部分?
例如,给定以下代码的输出:
kable(head(mtcars)[1:3], format = "latex", booktabs = TRUE)
是否可以:
a) 直接编辑其中一行(例如将“型号”放在 & mpg & cyl & disp 之前)
b) 或者,只是子集 \midrule 和 \bottomrule 之间的所有内容,但删除其他所有内容
我希望上面的选项 b) 围绕 table 主要内容的预格式化行编写我自己的乳胶代码,例如:
cat(c("\begin{table}[!htb]
\begin{tabular}{lrrr}
\toprule
Model & MPG & CYL & DISP\",
t1, # these are the rows between midrule and bottomrule
"\end{tabular}
\end{table}"), file = "my_own.tex")
也许这就是您要找的。由于 kable
输出是一个字符串,您可以通过字符串工具对其进行操作。使用例如stringr
包你可以编写一个函数来提取 \midrule
和 \bottomrule
之间的部分,如下所示:
library(kableExtra)
library(stringr)
tbl <- kable(head(mtcars)[1:3], format = "latex", booktabs = TRUE)
get_tbl_body <- function(x) {
start <- str_locate(tbl, "\\midrule")[1]
end <- str_locate(tbl, "\\bottomrule")[2]
str_sub(x, start, end)
}
t1 <- get_tbl_body(tbl)
cat(c("\begin{table}[!htb]",
"\begin{tabular}{lrrr}",
"\toprule",
"Model & MPG & CYL & DISP\\",
t1, # these are the rows between midrule and bottomrule
"\end{tabular}",
"\end{table}"), sep = "\n")
#> \begin{table}[!htb]
#> \begin{tabular}{lrrr}
#> \toprule
#> Model & MPG & CYL & DISP\
#> \midrule
#> Mazda RX4 & 21.0 & 6 & 160\
#> Mazda RX4 Wag & 21.0 & 6 & 160\
#> Datsun 710 & 22.8 & 4 & 108\
#> Hornet 4 Drive & 21.4 & 6 & 258\
#> Hornet Sportabout & 18.7 & 8 & 360\
#> \addlinespace
#> Valiant & 18.1 & 6 & 225\
#> \bottomrule
#> \end{tabular}
#> \end{table}
由 reprex package (v0.3.0)
于 2021-01-03 创建