列表中的花括号移至单词开头

列表中的花括号移至单词开头

我有一个代码片段,它使用了 unicode 字符( u2019),也称为单词中间的右单引号。不幸的是,lstlistings 环境似乎导致此字符以及其他引号 ( u2018, u201c, u201d) 的行为异常。它导致它们被移动到它们所在的任何单词的开头。下图的源代码是
在此处输入图片描述

\documentclass[
]{article}
\usepackage{listings}

\begin{document}

\begin{lstlisting}[language=Python]
"It’s a be”auti“ful day in the nei‘borhood"
\end{lstlisting}

It’s a be”auti“ful day in the nei‘borhood

\end{document}

我原本期望它在代码片段内外生成大致相似的东西,但不知何故 lstlisting 使引号移动到它们中断的单词的开头。我正在使用 xelatex。

答案1

正如@user202729 指出的那样,这是一个重复的问题。不过,我想我也会发布对我有用的解决方案,以防将来有人尝试这样做。添加

\makeatletter
\lst@InputCatcodes
\def\lst@DefEC{%
 \lst@CCECUse \lst@ProcessLetter
  ^^^^2018^^^^2019^^^^201c^^^^201d% punctuation
  ^^00}
\lst@RestoreCatcodes
\makeatother

添加到文件开头(在文档开始之前)将告诉 lstlistings 应将这些 UTF 字符添加到处理列表中。此外,请确保您没有设置extendedchars=false,因为它似乎默认处于开启状态,并且需要处于开启状态才能正常工作。 在此处输入图片描述

正如@user202729 在评论中提到的,也可以只使用字符而不是完整的字符代码;即替换^^^^2018^^^^2019^^^^201c^^^^201d‘’“”

相关内容