highr
packagehighr
packageIf you are not satisfied with the default syntax highlighting commands in the highr package, you can just use your own tags/commands. In this vignette, we show a brief example.
The default highlighting commands are stored in two internal data frames
cmd_latex
and cmd_html
:
library(highr)
highr:::cmd_latex
## cmd1 cmd2
## COMMENT \\hlcom{ }
## DEFAULT \\hldef{ }
## FUNCTION \\hlkwa{ }
## IF \\hlkwa{ }
## ELSE \\hlkwa{ }
## WHILE \\hlkwa{ }
## FOR \\hlkwa{ }
## IN \\hlkwa{ }
## BREAK \\hlkwa{ }
## REPEAT \\hlkwa{ }
## NEXT \\hlkwa{ }
## NULL_CONST \\hlkwa{ }
## LEFT_ASSIGN \\hlkwb{ }
## EQ_ASSIGN \\hlkwb{ }
## RIGHT_ASSIGN \\hlkwb{ }
## SYMBOL_FORMALS \\hlkwc{ }
## SYMBOL_SUB \\hlkwc{ }
## SLOT \\hlkwc{ }
## SYMBOL_FUNCTION_CALL \\hlkwd{ }
## NUM_CONST \\hlnum{ }
## '+' \\hlopt{ }
## '-' \\hlopt{ }
## '*' \\hlopt{ }
## '/' \\hlopt{ }
## '^' \\hlopt{ }
## '$' \\hlopt{ }
## '@' \\hlopt{ }
## ':' \\hlopt{ }
## '?' \\hlopt{ }
## '~' \\hlopt{ }
## '!' \\hlopt{ }
## SPECIAL \\hlopt{ }
## GT \\hlopt{ }
## GE \\hlopt{ }
## LT \\hlopt{ }
## LE \\hlopt{ }
## EQ \\hlopt{ }
## NE \\hlopt{ }
## AND \\hlopt{ }
## AND2 \\hlopt{ }
## OR \\hlopt{ }
## OR2 \\hlopt{ }
## NS_GET \\hlopt{ }
## NS_GET_INT \\hlopt{ }
## STR_CONST \\hlsng{ }
This data frame is passed to the markup
argument in hilight()
, so we are
free to pass a modified version there. Suppose I want to use the command
\my<*>
instead of \hl<*>
:
m = highr:::cmd_latex
m[, 1] = sub('\\hl', '\\my', m[, 1], fixed = TRUE)
head(m)
## cmd1 cmd2
## COMMENT \\mycom{ }
## DEFAULT \\mydef{ }
## FUNCTION \\mykwa{ }
## IF \\mykwa{ }
## ELSE \\mykwa{ }
## WHILE \\mykwa{ }
Then
hilight("x = 1+1 # a comment") # default markup
## [1] "\\hldef{x} \\hlkwb{=} \\hlnum{1}\\hlopt{+}\\hlnum{1} \\hlcom{# a comment}"
hilight("x = 1+1 # a comment", markup = m) # custom markup
## [1] "\\mydef{x} \\mykwb{=} \\mynum{1}\\myopt{+}\\mynum{1} \\mycom{# a comment}"
This allows one to use arbitrary commands around the text symbols in the R
code. See https://github.com/yihui/highr/blob/master/R/highlight.R for how
cmd_latex
and cmd_html
were generated in highr.