我有一个定义为的宏
\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}
在序言中确保了这一点。