kable_meta detects table_env
diff --git a/R/magic_mirror.R b/R/magic_mirror.R
index dc54067..dafcc23 100644
--- a/R/magic_mirror.R
+++ b/R/magic_mirror.R
@@ -8,9 +8,6 @@
#' @export
magic_mirror <- function(kable_input){
- if ("kable_meta" %in% names(attributes(kable_input))) {
- return(attr(kable_input, "kable_meta"))
- }
kable_format <- attr(kable_input, "format")
if (kable_format == "latex") {
table_info <- magic_mirror_latex(kable_input)
@@ -18,6 +15,20 @@
if (kable_format == "html") {
table_info <- magic_mirror_html(kable_input)
}
+ if ("kable_meta" %in% names(attributes(kable_input))) {
+ out <- attr(kable_input, "kable_meta")
+ # if we return `kable_meta` immediately, `kable_styling` will use the
+ # original `table_env` value. So if we call `kable_styling` twice on the
+ # same object, it will nest a table within a table. Make sure this does not
+ # happen.
+ if (kable_format == "latex") {
+ table_info <- magic_mirror_latex(kable_input)
+ if (table_info$table_env && !out$table_env) {
+ out$table_env <- table_info$table_env
+ }
+ }
+ return(out)
+ }
return(table_info)
}
@@ -98,7 +109,8 @@
table_info$centering <- grepl("\\\\centering", kable_input)
table_info$table_env <- (!is.na(table_info$caption) &
- table_info$tabular != "longtable")
+ table_info$tabular != "longtable") ||
+ grepl("\\\\begin\\{table\\}", kable_input)
return(table_info)
}