从列表框中的宏中获取不正确的下划线

从列表框中的宏中获取不正确的下划线

我有一个定义为的宏

\newcommand{\versionPath}{5\textunderscore0\textunderscore7} 

表示单词 *5_0_7*,我在 lstlisting 中使用它如下:

\begin{lstlisting}
(*\versionPath*)
\end{lstlisting}

我的 lstset 的配置是:

% Configuration for the listing package.
\lstset{%
language=,
escapeinside={(*}{*)},%
frame=single,
breaklines=true,
basicstyle=\color{blue}\ttfamily\scriptsize,
rulecolor=\color{light-gray},
keywordstyle=\ttfamily\color{red},
upquote=true,
columns=fullflexible,
literate={*}{{\char42}}1
         {-}{{\char45}}1
}

问题是,一旦编译,宏中的下划线看起来与列表中生成的下划线略有不同,并且从 PDF 复制时它们显示为空格。如何让宏中的下划线格式正确?

答案1

当字体编码为 OT1(默认)时,该命令\_使用无法从 PDF 复制的规则来实现。相比之下,环境_中的文字lstlisting使用打字机字体中存在的真实字形。

如果您需要能够复制下划线,那么唯一的解决方案是确保它始终使用真正的字形:

\usepackage[T1]{fontenc}

在序言中确保了这一点。

相关内容