下面的代码使用涉及西班牙语或英语的不同组合运行,并且生成的命令\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}