我正在寻找一种轻量级的替代内联代码列表的方法,能够使关键字加粗。我设想了类似以下内容的方法:
\declarekeywords{if,then,else}
\declarestylecommand\textbf
The expression \texttt{\stylekeywords{if a then b else c}} evaluates to ...
应扩展为:
The expression \texttt{\textbf{if} a \textbf{then} b \textbf{else} c} evaluates to ...
这个想法是,这个命令可以适应在许多不同的环境中工作,例如数学模式:
\stylekeywords{let $x = a + b$ in $f(x)$}
答案1
expl3 中的正则表达式可以添加格式:
平均能量损失
\documentclass{article}
\usepackage{xcolor}
\usepackage{xparse}
\ExplSyntaxOn
\tl_new:N \l_mykeywords_tl
\NewDocumentCommand { \stylekeywords } { m } {%
\tl_set:Nn
\l_mykeywords_tl
{ #1 }
\dostylekeywords
}
\newcommand{\simplehl}[1]{
\regex_replace_all:nnN
{ (#1) }
{
\c{textcolor} \cB\{ blue \cE\} \cB\}
\c{textbf} \cB\{ \0 \cE\}
\cE\}
}
\l_mykeywords_tl
}
\newcommand{\dostylekeywords}{
\simplehl{[tT]hen}
\simplehl{[eE]lse}
\simplehl{let}
\simplehl{[iI]f}
\simplehl{in}
\tl_use:N
\l_mykeywords_tl
}
\ExplSyntaxOff
\begin{document}
The expression \texttt{\stylekeywords{if a then b else c}} evaluates to ...
\stylekeywords{let $x = a + b$ in $f(x)$}
\end{document}