diff --git a/NAMESPACE b/NAMESPACE
index d32ccda..a21e753 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -8,6 +8,9 @@
 export(collapse_rows)
 export(column_spec)
 export(footnote)
+export(footnote_marker_alphabet)
+export(footnote_marker_number)
+export(footnote_marker_symbol)
 export(group_rows)
 export(kableExtra_latex_packages)
 export(kable_as_image)
diff --git a/R/cell_spec.R b/R/cell_spec.R
index c6ef41d..0774fcb 100644
--- a/R/cell_spec.R
+++ b/R/cell_spec.R
@@ -50,7 +50,9 @@
                       background_as_tile = TRUE,
                       latex_background_in_cell = TRUE) {
 
-  if (missing(format) || is.null(format)) format = getOption('knitr.table.format')
+  if (missing(format) || is.null(format)) {
+    format <- getOption('knitr.table.format')
+  }
   if (is.null(format)) {
     message("Setting cell_spec format as html")
     format <- "html"
@@ -75,9 +77,10 @@
                            escape, background_as_tile) {
   if (escape) x <- escape_html(x)
   cell_style <- NULL
-  if (bold) cell_style <- paste(cell_style,"font-weight: bold;")
-  if (italic) cell_style <- paste(cell_style, "font-style: italic;")
-  if (monospace) cell_style <- paste(cell_style, "font-family: monospace;")
+  cell_style <- paste(cell_style, ifelse(bold, "font-weight: bold;", ""))
+  cell_style <- paste(cell_style, ifelse(italic, "font-style: italic;", ""))
+  cell_style <- paste(cell_style,
+                      ifelse(monospace, "font-family: monospace;", ""))
   if (!is.null(color)) {
     cell_style <- paste0(cell_style, "color: ", html_color(color), ";")
   }
diff --git a/R/footnote.R b/R/footnote.R
index 63caf6d..92ad36a 100644
--- a/R/footnote.R
+++ b/R/footnote.R
@@ -2,17 +2,17 @@
 #'
 #' @export
 footnote <- function(kable_input,
-                             general = NULL,
-                             number = NULL,
-                             alphabet = NULL,
-                             symbol = NULL,
-                             footnote_order = c("general", "number",
-                                                "alphabet", "symbol"),
-                             footnote_as_chunk = FALSE,
-                             general_title = "Note: ",
-                             number_title = "",
-                             alphabet_title = "",
-                             symbol_title = ""
+                     general = NULL,
+                     number = NULL,
+                     alphabet = NULL,
+                     symbol = NULL,
+                     footnote_order = c("general", "number",
+                                        "alphabet", "symbol"),
+                     footnote_as_chunk = FALSE,
+                     general_title = "Note: ",
+                     number_title = "",
+                     alphabet_title = "",
+                     symbol_title = ""
 ) {
   kable_format <- attr(kable_input, "format")
   if (!kable_format %in% c("html", "latex")) {
@@ -94,8 +94,7 @@
 }
 
 # HTML
-footnote_html <- function(kable_input, footnote_table,
-                                  footnote_as_chunk) {
+footnote_html <- function(kable_input, footnote_table, footnote_as_chunk) {
   kable_attrs <- attributes(kable_input)
   kable_xml <- read_kable_as_xml(kable_input)
 
@@ -146,6 +145,8 @@
 }
 
 # LaTeX
-footnote_latex <- function() {
+footnote_latex <- function(kable_input, footnote_table, footnote_as_chunk) {
+  table_info <- magic_mirror(kable_input)
+
 
 }
diff --git a/R/footnote_marker.R b/R/footnote_marker.R
index 0b2dd8d..b0d1988 100644
--- a/R/footnote_marker.R
+++ b/R/footnote_marker.R
@@ -1 +1,53 @@
 #' Footnote marker
+#' @export
+footnote_marker_number <- function(x, format) {
+  if (missing(format) || is.null(format)) {
+    format <- getOption('knitr.table.format')
+  }
+  if (is.null(format)) {
+    message("Setting footnote_marker_number format as html")
+    format <- "html"
+  }
+  if (format == "html") {
+    return(paste0("<sup>", x, "</sup>"))
+  } else {
+    return(paste0("\\\\textsuperscript{", x, "}"))
+  }
+}
+
+#' @export
+footnote_marker_alphabet <- function(x, format) {
+  if (missing(format) || is.null(format)) {
+    format <- getOption('knitr.table.format')
+  }
+  if (is.null(format)) {
+    message("Setting footnote_marker_alphabet format as html")
+    format <- "html"
+  }
+  if (is.numeric(x)) x <- letters[x]
+  if (format == "html") {
+    return(paste0("<sup>", x, "</sup>"))
+  } else {
+    return(paste0("\\\\textsuperscript{", x, "}"))
+  }
+}
+
+#' @export
+footnote_marker_symbol <- function(x, format) {
+  if (missing(format) || is.null(format)) {
+    format <- getOption('knitr.table.format')
+  }
+  if (is.null(format)) {
+    message("Setting footnote_marker_symbol format as html")
+    format <- "html"
+  }
+  number_index <- read.csv(system.file("symbol_index.csv",
+                                       package = "kableExtra"))
+  if (format == "html") {
+    x <- number_index$symbol.html[x]
+    return(paste0("<sup>", x, "</sup>"))
+  } else {
+    x <- number_index$symbol.latex[x]
+    return(paste0("\\\\textsuperscript{", x, "}"))
+  }
+}
diff --git a/man/footnote_marker_number.Rd b/man/footnote_marker_number.Rd
new file mode 100644
index 0000000..cfa0c16
--- /dev/null
+++ b/man/footnote_marker_number.Rd
@@ -0,0 +1,11 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/footnote_marker.R
+\name{footnote_marker_number}
+\alias{footnote_marker_number}
+\title{Footnote marker}
+\usage{
+footnote_marker_number(x, format)
+}
+\description{
+Footnote marker
+}
diff --git a/tests/visual_tests/add_footnote_adv_html.Rmd b/tests/visual_tests/footnote_html.Rmd
similarity index 83%
rename from tests/visual_tests/add_footnote_adv_html.Rmd
rename to tests/visual_tests/footnote_html.Rmd
index bf8fd4e..2f6e558 100644
--- a/tests/visual_tests/add_footnote_adv_html.Rmd
+++ b/tests/visual_tests/footnote_html.Rmd
@@ -10,7 +10,7 @@
 library(kableExtra)
 
 mtcars[1:5, 1:5] %>%
-  kable("html") %>%
+  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: ", 
diff --git a/tests/visual_tests/add_footnote_adv_html.Rmd b/tests/visual_tests/footnote_latex.Rmd
similarity index 83%
copy from tests/visual_tests/add_footnote_adv_html.Rmd
copy to tests/visual_tests/footnote_latex.Rmd
index bf8fd4e..2f6e558 100644
--- a/tests/visual_tests/add_footnote_adv_html.Rmd
+++ b/tests/visual_tests/footnote_latex.Rmd
@@ -10,7 +10,7 @@
 library(kableExtra)
 
 mtcars[1:5, 1:5] %>%
-  kable("html") %>%
+  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: ", 
