考虑以下代码:
\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}