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)
}
diff --git a/R/footnote_marker.R b/R/footnote_marker.R
index b0d1988..45ffafb 100644
--- a/R/footnote_marker.R
+++ b/R/footnote_marker.R
@@ -11,7 +11,7 @@
if (format == "html") {
return(paste0("<sup>", x, "</sup>"))
} else {
- return(paste0("\\\\textsuperscript{", x, "}"))
+ return(paste0("\\textsuperscript{", x, "}"))
}
}
@@ -28,7 +28,7 @@
if (format == "html") {
return(paste0("<sup>", x, "</sup>"))
} else {
- return(paste0("\\\\textsuperscript{", x, "}"))
+ return(paste0("\\textsuperscript{", x, "}"))
}
}
@@ -48,6 +48,6 @@
return(paste0("<sup>", x, "</sup>"))
} else {
x <- number_index$symbol.latex[x]
- return(paste0("\\\\textsuperscript{", x, "}"))
+ return(paste0("\\textsuperscript{", x, "}"))
}
}
diff --git a/inst/NEWS.md b/inst/NEWS.md
index 48bb7b9..8ed69b4 100644
--- a/inst/NEWS.md
+++ b/inst/NEWS.md
@@ -2,6 +2,8 @@
* Added HTML color code support to kableExtra
* Fixed bug #105: bold/italic/monospace cannot accept T/F as vector
* Added extra_css to cell_spec, row_spec & column_spec
+* Fixed bug #88: add_footnote doesn't support full width
+
kableExtra 0.6.1
diff --git a/tests/visual_tests/add_footnote_pdf.Rmd b/tests/visual_tests/add_footnote_pdf.Rmd
index 86bb0af..54aa844 100644
--- a/tests/visual_tests/add_footnote_pdf.Rmd
+++ b/tests/visual_tests/add_footnote_pdf.Rmd
@@ -44,6 +44,7 @@
```
```{r}
-kable(dt, format = "latex", booktabs = T, longtable = T) %>%
-add_footnote(c("Footnote 1", "Have a good day."), notation = "alphabet")
+kable(dt, format = "latex", booktabs = T) %>%
+ kable_styling(full_width = T) %>%
+ add_footnote(c("Footnote 1", "Have a good day.", "sss"), notation = "alphabet")
```
diff --git a/tests/visual_tests/footnote_latex.Rmd b/tests/visual_tests/footnote_latex.Rmd
index 2f6e558..718d057 100644
--- a/tests/visual_tests/footnote_latex.Rmd
+++ b/tests/visual_tests/footnote_latex.Rmd
@@ -2,17 +2,20 @@
title: "add_footnote_adv"
author: "Hao"
date: "1/5/2018"
-output: html_document
+output: pdf_document
---
```{r}
library(knitr)
library(kableExtra)
-mtcars[1:5, 1:5] %>%
- kable("html", caption = paste0("test", footnote_marker_symbol(1))) %>%
- kable_styling() %>%
- footnote("ccc", c("number 1; ", "number 2. "), c("a 1; ", "a 2."), c("s 1; ", "s 2."),
- number_title = "special: ", alphabet_title = "abc: ",
- footnote_as_chunk = T)
+dt <- mtcars[1:5, 1:2]
+colnames(dt)[1] <- paste0("mpg", footnote_marker_alphabet(2, "latex"))
+
+dt %>%
+ kable("latex", caption = paste0("test", footnote_marker_symbol(1, "latex")),
+ booktabs = T, escape = F) %>%
+ footnote(NULL, c("number 1; ", "number 2. "), c("a 1; ", "a 2."), c("s 1; ", "s 2."),
+ number_title = "special: ", alphabet_title = "abc: ",
+ footnote_as_chunk = T)
```