当使用西班牙语加载 Babel 时,虚假的文档命令解析器

当使用西班牙语加载 Babel 时,虚假的文档命令解析器

下面的代码使用涉及西班牙语或英语的不同组合运行,并且生成的命令\Foo在加载西班牙语时以一种看似虚假的方式解释输入。我遗漏了什么?

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

\documentclass{article}
\usepackage{xparse}
\usepackage[
english,
spanish,
%english
]{babel}

\ExplSyntaxOn
  \DeclareDocumentCommand \Foo
  {
    D<>{Hello}                  % #1
    m                           % #2
  }
  {
    #1, #2!
  }

\tl_new:N \LoadedLanguages
\makeatletter
\@ifpackagewith{babel}{english}
{
  \@ifpackagewith{babel}{spanish}
  {\tl_set:Nn\LoadedLanguages{english~\&~spanish}}
  {\tl_set:Nn\LoadedLanguages{english}}
}
{
  \@ifpackagewith{babel}{spanish}
  {\tl_set:Nn\LoadedLanguages{spanish}}
  {}
}

\makeatother

\ExplSyntaxOff
\begin{document}

Loaded: \LoadedLanguages;~selected:~\languagename.

\Foo<Jello>{ world } (Expected: Jello, World!)

\end{document}

答案1

spanish激活<>输入 guillemets,或者更确切地说,作为quoting环境的简写。大约 25 年前,这种“缺陷”是有道理的。您可以使用以下方法停用它:

\usepackage[
english,
spanish.noquoting
]{babel}

相关内容