\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}效果是这样的:



发表评论 取消回复