列表中法语列字符前的额外空格

列表中法语列字符前的额外空格

似乎linstings包在包含代码时保留了 babel 语言属性。我的问题是列前的法语空格保留在我包含的 python 代码中。

例子

\selectlanguage{english}我的问题是:当我想包含代码时,如何不使用它来修复它lstlisting

在这里我提供 MWE

\documentclass{beamer}

\usepackage[T1]{fontenc}
\usepackage[english, french]{babel}
\usepackage{fontspec}
\usepackage{listings}

\begin{document}

\begin{frame}[fragile]
    \selectlanguage{french}
    \begin{lstlisting}[caption= Example with \texttt{\textbackslash selectlanguage\{french\}}, showspaces=true]
x = 42
if x < 0:
    x = 0
    print('Nombre négatif changé en 0')
elif x == 0:
    print('Zéro')
    \end{lstlisting}

    {\selectlanguage{english}
    \begin{lstlisting}[caption= Example with \texttt{\textbackslash selectlanguage\{english\}}, showspaces=true]
x = 42
if x < 0:
    x = 0
    print('Nombre négatif changé en 0')
elif x == 0:
    print('Zéro')
    \end{lstlisting}}
\end{frame}    

\end{document} 

答案1

使用 lualatex 没有问题,使用 xelatex 你可以(在当前的 tex 系统中)使用

 \AddToHook{env/lstlisting/begin}{\selectlanguage{english}} 

每次列出时自动切换到英文。

相关内容