set_knit_hooks {fansi} | R Documentation |
This is a convenience function designed for use within an rmarkdown
document. It overrides the knitr
output hooks by using
knitr::knit_hooks$set
. It replaces the hooks with ones that convert ANSI
CSI SGR sequences into HTML. In addition to replacing the hook functions,
this will output a <STYLE> HTML block to stdout. These two actions are side
effects as a result of which R chunks in the rmarkdown
document that
contain ANSI CSI SGR are shown in their HTML equivalent form.
set_knit_hooks(hooks, which = "output", proc.fun = function(x, class) html_code_block(sgr_to_html(html_esc(x)), class = class), class = sprintf("fansi fansi-%s", which), style = getOption("fansi.css"), .test = FALSE)
hooks |
list, this should the be |
which |
character vector with the names of the hooks that should be replaced, defaults to 'output', but can also contain values 'message', 'warning', and 'error'. |
proc.fun |
function that will be applied to output that contains ANSI
CSI SGR sequences. Should accept parameters |
class |
character the CSS class to give the output chunks. Each type of
output chunk specified in |
style |
character a vector of CSS styles; these will be output inside
HTML <STYLE> tags as a side effect. The default value is designed to
ensure that there is no visible gap in background color with lines with
height 1.5 (as is the default setting in |
.test |
TRUE or FALSE, for internal testing use only. |
The replacement hook function tests for the presence of ANSI CSI SGR
sequences in chunk output with has_sgr
, and if it is detected then
processes it with the user provided proc.fun
. Chunks that do not contain
ANSI CSI SGR are passed off to the previously set hook function. The default
proc.fun
will run the output through html_esc
, sgr_to_html
, and
finally html_code_block
.
If you require more control than this function provides you can set the
knitr
hooks manually with knitr::knit_hooks$set
.
named list with the prior output hooks for each of which
.
Since we do not formally import the knitr
functions we do not
guarantee that this function will always work properly with knitr
/
rmarkdown
.
has_sgr
, sgr_to_html
, html_esc
, html_code_block
,
knitr output hooks,
embedding CSS inRmd.
## Not run: ## The following should be done within an `rmarkdown` document chunk with ## chunk option `results` set to 'asis' and the chunk option `comment` set ## to ''. ```{r comment="", results='asis', echo=FALSE} ## Change the "output" hook to handle ANSI CSI SGR old.hooks <- set_knit_hooks(knitr::knit_hooks) ## Do the same with the warning, error, and message, and add styles for ## them (alternatively we could have done output as part of this call too) styles <- c( getOption('fansi.style'), # default style "PRE.fansi CODE {background-color: transparent;}", "PRE.fansi-error {background-color: #DD5555;}", "PRE.fansi-warning {background-color: #DDDD55;}", "PRE.fansi-message {background-color: #EEEEEE;}" ) old.hooks <- c( old.hooks, fansi::set_knit_hooks( knitr::knit_hooks, which=c('warning', 'error', 'message'), style=styles ) ) ``` ## You may restore old hooks with the following chunk ## Restore Hooks ```{r} do.call(knitr::knit_hooks$set, old.hooks) ``` ## End(Not run)