`knitrSet` sets up knitr to use better default parameters for base graphics, better code formatting, and to allow several arguments to be passed from code chunk headers, such as `bty`, `mfrow`, `ps`, `bot` (extra bottom margin for base graphics), `top` (extra top margin), `left` (extra left margin), `rt` (extra right margin), `lwd`, `mgp`, `las`, `tcl`, `axes`, `xpd`, `h` (usually `fig.height` in knitr), `w` (usually `fig.width` in knitr), `wo` (`out.width` in knitr), `ho` (`out.height` in knitr), `cap` (character string containing figure caption), `scap` (character string containing short figure caption for the table of figures).
knitrSet(
basename = NULL,
w = if (!bd) 4,
h = if (!bd) 3,
wo = NULL,
ho = NULL,
fig.path = if (length(basename)) basename else "",
fig.align = if (!bd) "center",
fig.show = "hold",
fig.pos = if (lang == "latex") "htbp",
fig.lp = if (!bd) paste("fig", basename, sep = ":"),
dev = switch(lang, latex = "pdf", markdown = "png", blogdown = NULL, quarto = NULL,
typst = "pdf"),
tidy = FALSE,
error = FALSE,
messages = c("messages.txt", "console"),
width = 61,
decinline = 5,
size = NULL,
cache = FALSE,
echo = TRUE,
results = "markup",
capfile = NULL,
lang = c("latex", "markdown", "blogdown", "quarto", "typst")
)`knitrSet` is called for its side effect of setting `knitr` options and hooks; it returns `NULL` invisibly.
base name to be added in front of graphics file names. `basename` is followed by a minus sign.
default figure width and height in inches
default figure rendering width and height, in integer pixels or percent as a character string, e.g. `'40%'`
path for figures. To put figures in a subdirectory specify e.g. `fig.path='folder/'`. Ignored for `blogdown` and `quarto`.
see the `knitr` documentation
LaTeX float placement specification such as `'htbp'`. Only meaningful, and only defaulted, when `lang='latex'`; left unset for every other `lang` value including `'typst'`, none of which use LaTeX-style float placement letters. (Previously this also defaulted to `'htbp'` under `lang='markdown'`, where the value was inert; that default has been narrowed to `lang=='latex'` only.)
graphics device, with default figured from `lang`. Defaults to `'pdf'` for both `latex` and the new `typst` value (Typst's `image()` function natively embeds PDF figures as vector graphics, so the same `.pdf` figure files already produced for the LaTeX build can be reused as-is for `typst`), `'png'` for `markdown`, and the `knitr`/rmarkdown default (`NULL`) for `blogdown` and `quarto`. If the final Typst build must conform to an archival PDF standard such as PDF/A, embedded PDF images are not supported by Typst and `dev` should be overridden to `'svg'` (ideally produced via the `svglite` package rather than base R's `svg()` device) instead.
By default warning and other messages such as those from loading packages are sent to file `'messages.txt'` in the current working directory. You can specify `messages='console'` to send them directly to the console.
text output width for R code and output
number of digits to the right of the decimal point to round numeric values appearing inside `Sexpr`/inline R expressions
the name of a file in the current working directory that is used to accumulate chunk labels, figure cross-reference tags, and figure short captions (long captions if no short caption is defined) for the purpose of inserting a table of figures in a report (e.g. via `markupSpecs$markdown$tof()`, or an analogous Typst-side builder for `lang='typst'`). The file is appended to, which is useful if `cache=TRUE` is used since this will keep some chunks from running. If not `cache`ing, the user should initialize the file to empty at the top of the script.
Default is `'latex'` to use LaTeX. Set to `'markdown'` when using R Markdown, `'blogdown'`, `'quarto'`, or the new `'typst'` value to target a direct `knitr` -> Typst -> PDF pipeline (requires a `knitr` build providing `render_typst()`; see Details). For `'blogdown'` and `'quarto'`, `par` and `knitr` graphics-related hooks are not called, as this would prevent writing graphics files to the correct directory for the blog system. `'typst'`, like `'latex'`, is treated as a paginated, print-oriented target, so those hooks *are* called for `'typst'`.
Frank Harrell
As of this version, `knitrSet` also supports `lang='typst'`, targeting a direct `knitr` -> Typst -> PDF pipeline made possible by `knitr`'s preliminary native Typst support (files with extension `.Rtyp`; see `knitr::render_typst()` and `knitr::pat_typst()`). Because that support is still preliminary in `knitr`, `knitrSet` checks for the presence of `knitr::render_typst` before calling it and issues a `warning` (rather than an error) if it is not yet available in the installed version of `knitr`, so that scripts written against a `knitr` development build degrade gracefully rather than failing outright on a release build. `lang='typst'` is treated as a paginated, print-oriented target (like `'latex'`), so, unlike `'blogdown'` and `'quarto'`, the `par` and `knitr` graphics-related hooks documented below **are** run for it.
The `capfile` argument facilitates auto-generating a table of figures for certain non-LaTeX report themes (R Markdown/blogdown/quarto/typst). This is done by the addition of a hook function that appends data to the `capfile` file each time a chunk runs that has a long or short caption in the chunk header. For `lang='quarto'` and `lang='typst'` the recorded cross-reference tag uses native `@label`-style reference syntax understood by those two systems; for `lang='latex'` and `lang='markdown'` (assumed to be processed by `bookdown`) a `\@ref(...)` tag is recorded instead.
[knitr::knit()]
if (FALSE) {
# Typical call, LaTeX target (without # comment symbols):
# <>=
# require(Hmisc)
# knitrSet()
# @
knitrSet() # use all defaults and don't use a graphics file prefix
knitrSet('modeling') # use modeling- prefix for a major section or chapter
knitrSet(cache=TRUE, echo=FALSE) # global default to cache and not print code
knitrSet(w=5, h=3.75) # override default figure width, height
# Typical call, Typst target, in a .Rtyp file:
# ```{r setup, include=FALSE}
# require(Hmisc)
# knitrSet(lang='typst')
# ```
}
Run the code above in your browser using DataLab