在列表中突出显示星号

在列表中突出显示星号

我想强调 中使用的星号\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}

在此处输入图片描述

相关内容