我想通过列表排版一些 LaTeX 源代码。我试过这个:
\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}
公式变成橙色。但是,两个美元符号也以橙色突出显示。如果我只希望两个美元符号中的内容变成橙色,我该怎么办?
答案1
以下方法直接改编自 David Carlisle 对代码片段中占位符的可维护排版:
\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}