我写了一份文档,其主要语言是英语。但我有一些词汇表条目,其名称(又称标签)是德语,但描述等又是英语。我使用包glossaries
和babel
。
因此,我的一些词汇表定义如下:
\newglossaryentry{foo}{%
name={\foreignlanguage{ngerman}{Foo}},%
description={(ger.) German word for Bar.}%
}
此外,我希望词汇表中的每个条目都以大写字母开头。因此,我重新定义了
\renewcommand*{\glsnamefont}[1]{\makefirstuc{#1}}
在序言中。这会导致编译错误。
! Illegal parameter number in definition of \languagename
相反,如果我用附加项来保护该参数{}
,即
\renewcommand*{\glsnamefont}[1]{\makefirstuc{{#1}}}
编译成功,但整个条目都是大写的,而不仅仅是第一个字母。但这不是我想要的。
答案1
简单的解决方案是定义一个新的命令来切换语言
\newcommand*{\ngerman}[1]{\foreignlanguage{ngerman}{#1}}
然后将词汇表条目定义为
\newglossaryentry{foo}{%
name={\ngerman{Foo}},%
description={(ger.) German word for Bar.}%
}
而是。这样,的第一个参数\foreignlanguage
就被隐藏了\makefirstuc
。当然,一个可以处理任意双参数宏的更通用的解决方案会更好,但这没问题,因为德语是我在文档中唯一需要的第二种语言。