我(希望)理解的是:
我正在为我的 Lieder-Package 使用 Babel。我想支持列出的所有 70 种语言这里。
据我所知我可以做到这一点(来源):
\newcommand*\GFMlistOfSongs{List of Songs}
\@ifpackageloaded{babel}
{
\addto\captionsngerman{\def\GFMlistOfSongs{Liederverzeichnis}}
\addto\captionsgerman{\def\GFMlistOfSongs{Liederr Verrrzaichniss}}
\addto\captionsfoospeak{\def\GFMlistOfSongs{lista di songos}}
}
\def\createLOS{
\GFMlistOfSongs \\ \BoDY % BoDY = somewhere else defined.
}
\begin{document}
\createLOS
\end{document}
这将创建一些具有正确语言列表标题的列表。
我不明白的是:
我看过\addto\extras<lang.>
好几次了。那和 有什么区别\addto\captions<lang.>
?
我查看了 babel 文档,但没有发现任何东西。
答案1
基本上有五种方法可以改变当前语言:
\selectlanguage{<language>}
\begin{otherlanguage}{<language>}...\end{otherlanguage}
\begin{otherlanguage*}{<language>}...\end{otherlanguage*}
\foreignlanguage{<language>}{...}
\begin{hyphenrules}{<language>}...\end{hyphenrules}
1 和 2 的区别在于,在第二种情况下,您不需要改回语言。3 和 4 的区别在于,方法 3 更适合多段文本,而方法 4 更适合段落内的小短语。
对于方法 1 和 2,将同时执行\captions<language>
和;对于方法 3 和 4,仅执行。对于方法 5,仅连字规则会发生变化,并且不会执行或。\extras<language>
\extras<language>
\captions<language>
\extras<language>
确实,诸如的标签\figurename
位于 中\captions<language>
,而语言特定功能位于 中\extras<language>
。
如果在 中添加了某些内容\extras<language>
,则 也应该在 中添加相应的“反向设置” \noextras<language>
,并在下一条命令中执行\selectlanguage
。
例如,在意大利语中,撇号应具有非零值\lccode
,以便连字符正确工作;因此设置\lccode`\'=`\'
是 的一部分\extrasitalian
。同样,语言简写应该在 中\extras<language>
。
用于本地化歌曲列表的代码绝对应该放在\captions<language>
:
\newcommand*\GFMlistOfSongs{List of Songs}
\@ifpackageloaded{babel}
{%
\addto\captionsngerman{\def\GFMlistOfSongs{Liederverzeichnis}}%
\addto\captionsgerman{\def\GFMlistOfSongs{Liederr Verrrzaichniss}}%
\addto\captionsfoospeak{\def\GFMlistOfSongs{lista di songos}}%
}{}
\def\createLOS{%
\GFMlistOfSongs \\ \BoDY % BoDY = somewhere else defined.
}
(不要忘记终止%
和空的第三个参数\@ifpackageloaded
)。