似乎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}}
每次列出时自动切换到英文。