![列表中法语列字符前的额外空格](https://linux22.com/image/438855/%E5%88%97%E8%A1%A8%E4%B8%AD%E6%B3%95%E8%AF%AD%E5%88%97%E5%AD%97%E7%AC%A6%E5%89%8D%E7%9A%84%E9%A2%9D%E5%A4%96%E7%A9%BA%E6%A0%BC.png)
似乎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}}
每次列出时自动切换到英文。