#' Hierarchical kinetics template #' #' R markdown format for setting up hierarchical kinetics based on a template #' provided with the mkin package. This format is based on [rmarkdown::pdf_document]. #' Chunk options are adapted. Echoing R code from code chunks and caching are #' turned on per default. character for prepending output from code chunks is #' set to the empty string, code tidying is off, figure alignment defaults to #' centering, and positioning of figures is set to "H", which means that #' figures will not move around in the document, but stay where the user #' includes them. #' #' The latter feature (positioning the figures with "H") depends on the LaTeX #' package 'float'. In addition, the LaTeX package 'listing' is used in the #' template for showing model fit summaries in the Appendix. This means that #' the LaTeX packages 'float' and 'listing' need to be installed in the TeX #' distribution used. #' #' On Windows, the easiest way to achieve this (if no TeX distribution #' is present before) is to install the 'tinytex' R package, to run #' 'tinytex::install_tinytex()' to get the basic tiny Tex distribution, #' and then to run 'tinytex::tlmgr_install(c("float", "listing"))'. #' #' @inheritParams rmarkdown::pdf_document #' @param ... Arguments to \code{rmarkdown::pdf_document} #' #' @return R Markdown output format to pass to #' \code{\link[rmarkdown:render]{render}} #' #' @examples #' #' \dontrun{ #' library(rmarkdown) #' # The following is now commented out after the relase of v1.2.3 for the generation #' # of online docs, as the command creates a directory and opens an editor #' #draft("example_analysis.rmd", template = "hierarchical_kinetics", package = "mkin") #' } #' #' @export hierarchical_kinetics <- function(..., keep_tex = FALSE) { if (getRversion() < "4.1.0") stop("You need R with version > 4.1.0 to compile this document") if (!requireNamespace("knitr")) stop("Please install the knitr package to use this template") if (!requireNamespace("rmarkdown")) stop("Please install the rmarkdown package to use this template") knitr::opts_chunk$set(cache = TRUE, comment = "", tidy = FALSE, echo = TRUE) knitr::opts_chunk$set(fig.align = "center", fig.pos = "H") options(knitr.kable.NA = "") fmt <- rmarkdown::pdf_document(..., keep_tex = keep_tex, toc = TRUE, toc_depth = 3, includes = rmarkdown::includes(in_header = "header.tex"), extra_dependencies = c("float", "listing", "framed") ) return(fmt) }