\documentclass{article} \usepackage{listings} \usepackage{xcolor} \lstset{ delim = [s][\ttfamily\color{orange}]{$}{$} } \begin{document} \begin{lstlisting} \documentclass{article} \usepackage{amsmath} \begin{document} $E = mc^2$ \end{document} \end{lstlisting} \end{document}
效果:$
之间的公式随着 $
本身都变成了橘色。
解决问题的方法,可以参照 David Carlisle 在 TeX.SX 上对这个问题的回答。
我们可以定义这样一个 listings 样式:
\def\beginlstdelim#1#2#3{ \def\endlstdelim{#2\egroup}% \ttfamily#1\bgroup\color{#3}\aftergroup\endlstdelim% }
它有三个参数,第一个参数是定界符的左边,第二个是定界符的右边,第三个是高亮的颜色。我们可以这样使用:
\documentclass{article} \usepackage[usenames,dvipsnames]{xcolor} \usepackage{listings} \def\beginlstdelim#1#2#3{ \def\endlstdelim{#2\egroup}% \ttfamily#1\bgroup\color{#3}\aftergroup\endlstdelim% } \lstset { moredelim = **[is][\beginlstdelim{\$}{\$}{orange}]{\$}{\$}, moredelim = **[is][\beginlstdelim{\{}{\}}{ForestGreen}]{\{}{\}}, moredelim = **[is][\beginlstdelim{[}{]}{red}]{[}{]}, } \begin{document} \begin{lstlisting} \documentclass{article} \usepackage{amsmath} \begin{document} $E = mc^2$ {E = mc^2} [E = mc^2] \end{document} \end{lstlisting} \end{document}
效果是这样的:
发表评论 取消回复