diff --git a/R/landscape.R b/R/landscape.R
new file mode 100644
index 0000000..6f4049c
--- /dev/null
+++ b/R/landscape.R
@@ -0,0 +1,43 @@
+#' Print the table on an isolated landscape page in PDF
+#'
+#' @description For very wide tables in PDF documents, sometimes it might be a
+#' good idea to have a single landscape page to house it. This function
+#' will rotate the PDF page for the applied table in LaTeX environment. It won't
+#' have any effects on HTML.
+#'
+#' @param kable_input Output of `knitr::kable()` with `format` specified
+#' @param margin Customizable page margin for special needs. Values can be
+#' "1cm", "1in" or similar.
+#'
+#' @export
+landscape <- function(kable_input, margin = NULL) {
+  kable_format <- attr(kable_input, "format")
+  if (!kable_format %in% c("html", "latex")) {
+    message("Currently generic markdown table using pandoc is not supported.")
+    return(kable_input)
+  }
+  if (kable_format == "html") {
+    return(kable_input)
+  }
+  if (kable_format == "latex") {
+    return(landscape_latex(kable_input, margin))
+  }
+}
+
+landscape_latex <- function(kable_input, margin) {
+  kable_attrs <- attributes(kable_input)
+  usepackage_latex("pdflscape")
+  out <- paste0(
+    "\n\\begin{landscape}", kable_input, "\n\\end{landscape}"
+  )
+
+  if (!is.null(margin)) {
+    out <- paste0(
+      "\n\\newgeometry{margin=", margin, "}", out, "\n\\restoregeometry"
+    )
+  }
+  out <- structure(out, format = "latex", class = "knitr_kable")
+  attributes(out) <- kable_attrs
+  attr(out, "landscape") <- TRUE
+  return(out)
+}
