带有转义代码的列表的间距问题

带有转义代码的列表的间距问题

考虑以下代码:

\documentclass{beamer}
\usepackage{listings}

\begin{document}

\begin{frame}[fragile]{title}
\begin{lstlisting}[escapeinside={!*}{*!},]
int add
int !*\color{red}add*!
\end{lstlisting}
\end{frame}

\end{document}

在此处输入图片描述

如您所见,转义代码中的单词间距(或字体)发生了变化。我怎样才能使它看起来一样?

我需要更改列表内的特定部分,但间距不一致是一个问题。

答案1

如果您想要突出显示的是代码的一部分,我的建议是,不要将!*和定义*!为转义到 LaTeX 的分隔符,而是简单地将它们定义为“不可见”分隔符,并用红色突出显示其内容。这样,您就不会在正常代码和突出显示的代码之间看到任何列对齐差异。请参阅下面的 MWE。

如果突出显示的部分不是代码,那么我认为您不必担心这种列对齐差异。例如,查看下面的屏幕截图这个答案;你发现什么令人震惊的事情了吗?

在此处输入图片描述

\documentclass{beamer}

\usepackage{listings}

% Definition of custom delimiters
% (the `i' means the delimiters themselves don't get printed)
\lstset{moredelim=[is][\color{red}]{!*}{*!}} 

\begin{document}

\begin{frame}[fragile]{title}
\begin{lstlisting}
int add
int !*add*!
\end{lstlisting}
\end{frame}

\end{document}

相关内容