我想强调 中使用的星号\begin{equation*}
。lstlisting
我尝试过使用emph
,也包括alsoletter
宏,但它不起作用。为什么?
\documentclass{article}
\usepackage{listings,xcolor}
\begin{document}
\begin{lstlisting}[alsoletter={*},emph={*},emphstyle={\color{red}}]
% \usepackage{mhchem}
\begin{equation*}
\label{eq:chem}
\ce{CaCO3(s) <=>[H2O]
Ca2+(aq) + CO3^{2-}(aq)}
\end{equation*}
%
Some text
\end{lstlisting}
\end{document}
答案1
在 中没有真正可靠的方法来实现这一点listings
。声明*
为字母会破坏紧接在 之前或之后的关键字的突出显示*
(例如int*
)。在这里,我会滥用该literate
键;见下文。
供参考,我的宏中的测试是一种仅在“正常”模式\processAsterisk
下突出显示星号的黑客方法,而不是在字符串、注释和其他分隔内容中。listings
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\makeatletter
\newcommand\processAsterisk{%
\ifnum\lst@mode=\lst@Pmode\relax%
\textcolor{red}{*}%
\else
*%
\fi
}
\makeatother
\lstset{
basicstyle=\ttfamily,
literate={*}{\processAsterisk}1,
morecomment=[l]\%,
}
\begin{document}
\begin{lstlisting}
% \usepackage{mhchem}
\begin{equation*}
\label{eq:chem}
\ce{CaCO3(s) <=>[H2O]
Ca2+(aq) + CO3^{2-}(aq)} % 2 * 2 == 4
\end{equation*}
%
Some text
\end{lstlisting}
\end{document}
答案2
另一种方法可能是使用moredelim
密钥:
\documentclass{article}
\usepackage{listings,color}
\lstset{basicstyle=\ttfamily}
\lstdefinestyle{star}{%
moredelim=[is][\itshape\color{red}]{|}{|}}
\begin{document}
\begin{lstlisting}[style=star]
% \usepackage{mhchem}
\begin{equation|*|}
\label{eq:chem}
\ce{CaCO3(s) <=>[H2O]
Ca2+(aq) + CO3^{2-}(aq)}
\end{equation|*|}
%
Some text
\end{lstlisting}
\end{document}