lstlisting `moredelim` 不适用于评论

lstlisting `moredelim` 不适用于评论

我正在尝试向一段代码添加一些覆盖,并使用 来定义它moredelim。但是,当我在代码中的注释上使用它时,moredelim停止工作。

我错过了什么?

\documentclass{beamer}

\usepackage{listings}
\lstdefinestyle{cexample}{%
language=C++,
moredelim=**[is][\onslide<+->]{|}{|},
}

\begin{document}
\begin{frame}[fragile]{Work without comment}
\begin{lstlisting}[style=cexample]
char * const buffer[]; |comment 1|
char * const * buffer; |comment 2|
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]{Doesn't work with comments '//'}
\begin{lstlisting}[style=cexample]
char * const buffer[]; |//comment 1|
char * const * buffer; |//comment 2|
\end{lstlisting}
\end{frame}

\end{document}

在此处输入图片描述

答案1

结束符|被解释为注释的一部分。不幸的是,listings一旦单行注释模式启动,我不知道如何退出。

一种解决方法是使用moredelim只需要打开分隔符并在当前行末尾结束的。

在此处输入图片描述

\documentclass{beamer}

\usepackage{listings}
\lstdefinestyle{cexample}{%
language=C++,
moredelim=**[il][\onslide<+->]{|},
}

\begin{document}
\begin{frame}[fragile]{Work without comment}
\begin{lstlisting}[style=cexample]
char * const buffer[]; |comment 1
char * const * buffer; |comment 2
\end{lstlisting}
\end{frame}

\begin{frame}[fragile]{Doesn't work with comments '//'}
\begin{lstlisting}[style=cexample]
char * const buffer[]; |//comment 1
char * const * buffer; |//comment 2
\end{lstlisting}
\end{frame}

\end{document}

相关内容