knit_ex is a utility function for running small
knitr examples, e.g., to illustrate functionalities or
issues.
hook_try simply defines a function try in
envir that prints the error message if any, and is
called instead of base try.
hook_backspace is a chunk hook that enables the
use of backspace characters in the output (e.g., as used
in progress bars), and still obtain a final output as in
the console.
hook_toggle is a chunk hook that adds clickable
elements to toggle indvidual code chunks in HTML
documents generated from .Rmd files.
logical that indicates if knitting should be
quiet (no progress bars etc..).
open
logical, only used when x is in .Rmd
format, that indicates if the generated document result
should be open in a browse, instead of being printed on
screen. Not that a browser will not open in
non-interactive sessions, and the result will be returned
invisibly.
before
logical that indicates when the hook is
being called: before or after the chunk is processed.
options
list of current knitr chunk options
envir
environment where the chunk is evaluated
Value
knit_ex returns the generated code, although
invisibly when open=TRUE.
Examples
#----------
# knit_ex
#----------
library(knitr)
knit_ex("1 + 1")
#----------
# hook_try
#----------
library(knitr)
# standard error message is caught
knit_ex("stop('ah ah')")
# with try the error is output on stderr but not caughted by knitr
knit_ex("try( stop('ah ah') )")
# no message caught
knit_ex("
^^^{r, include = FALSE}
knit_hooks$set(try = pkgmaker::hook_try)
^^^
^^^{r, try=TRUE}
try( stop('ah ah') )
^^^")
#----------
# hook_backspace
#----------
# Correctly formatting backspaces in chunk outputs
tmp <- tempfile(fileext = '.Rmd')
cat(file = tmp, "
^^^{r, include = FALSE}
library(knitr)
knit_hooks$set(backspace = pkgmaker::hook_backspace())
^^^
Default knitr does not handle backspace and adds a special character:
^^^{r}
cat('abcd')
^^^
Using the hook backspace solves the issue:
^^^{r, backspace=TRUE}
cat('abcd')
^^^
")
# knit
out <- knitr::knit2html(tmp, fragment.only = TRUE)
# look at output
## Not run:
browseURL(out)
edit( file = out)
## End(Not run)
# cleanup
unlink(c(tmp, out))
#----------
# hook_toggle
#----------
knit_ex("
Declare chunk hook:
^^^{r, setup}
library(knitr)
knit_hooks$set(toggle = hook_toggle())
^^^
The R code of this chunk can be toggled on/off, and starts visible:
^^^{r, toggle=TRUE}
print(1:10)
^^^
The R code of this chunk can be toggled on/off, and starts hidden:
^^^{r, toggle=FALSE}
print(1:10)
^^^
This is a plain chunk that cannot be toggled on/off:
^^^{r}
print(1:10)
^^^
Now all chunks can be toggled and start visible:
^^^{r, toggle_all}
opts_chunk$set(toggle = TRUE)
^^^
^^^{r}
sample(5)
^^^
To diable the toggle link, one can pass anything except TRUE/FALSE:
^^^{r, toggle = NA}
sample(5)
^^^
", open = TRUE)