\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}

效果是这样的:

选自:http://liam0205.me/LaTeX-Emphasize-color-contents-between-two-delimiters-in-listings-but-not-the-delimiters-themselves/

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部