add footnote for latex
diff --git a/R/footnote.R b/R/footnote.R
index 96af153..9999be7 100644
--- a/R/footnote.R
+++ b/R/footnote.R
@@ -47,9 +47,9 @@
if (kable_format == "html") {
return(footnote_html(kable_input, footnote_table, footnote_as_chunk))
}
- # if (kable_format == "latex") {
- # return(footnote_latex(kable_input, footnote_table))
- # }
+ if (kable_format == "latex") {
+ return(footnote_latex(kable_input, footnote_table, footnote_as_chunk))
+ }
}
footnote_table_maker <- function(format, footnote_titles, footnote_contents) {
@@ -147,8 +147,55 @@
# LaTeX
footnote_latex <- function(kable_input, footnote_table, footnote_as_chunk) {
table_info <- magic_mirror(kable_input)
+ out <- enc2utf8(as.character(kable_input))
+ if (table_info$tabular == "longtable") {
+ return()
+ }
+ footnote_text <- latex_tfoot_maker(footnote_table, footnote_as_chunk,
+ table_info$ncol)
+ out <- sub(table_info$end_tabular,
+ paste0(footnote_text, "\n\\\\end{", table_info$tabular, "}"),
+ out)
+ out <- structure(out, format = "latex", class = "knitr_kable")
+ attr(out, "kable_meta") <- table_info
+ return(out)
+}
+latex_tfoot_maker <- function(footnote_table, footnote_as_chunk, ncol) {
+ footnote_types <- names(footnote_table$contents)
+ footnote_text <- c()
+ for (i in footnote_types) {
+ footnote_text <- c(footnote_text, latex_tfoot_maker_(
+ footnote_table$contents[[i]], footnote_table$titles[[i]], i,
+ footnote_as_chunk, ncol))
+ }
+ footnote_text <- paste0(footnote_text, collapse = "\n")
+ return(footnote_text)
+}
-
+latex_tfoot_maker_ <- function(ft_contents, ft_title, ft_type, ft_chunk, ncol) {
+ footnote_text <- apply(ft_contents, 1, function(x) {
+ if (x[1] == "") {
+ x[2]
+ } else {
+ paste0('\\\\textsuperscript{', x[1], '} ', x[2])
+ }
+ })
+ if (ft_title != "") {
+ title_text <- paste0('\\\\textbf{', ft_title, '} ')
+ footnote_text <- c(title_text, footnote_text)
+ }
+ if (!ft_chunk) {
+ footnote_text <- paste0(
+ '\\\\multicolumn{', ncol, '}{l}{', footnote_text, '}\\\\\\\\'
+ )
+ } else {
+ footnote_text <- paste0(
+ '\\\\multicolumn{', ncol, '}{l}{',
+ paste0(footnote_text, collapse = " "),
+ '}\\\\\\\\'
+ )
+ }
+ return(footnote_text)
}