\addto\captions 之间的区别和 \addto\extras在巴别塔

\addto\captions 之间的区别和 \addto\extras在巴别塔

我(希望)理解的是:


我正在为我的 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

基本上有五种方法可以改变当前语言:

  1. \selectlanguage{<language>}

  2. \begin{otherlanguage}{<language>}...\end{otherlanguage}

  3. \begin{otherlanguage*}{<language>}...\end{otherlanguage*}

  4. \foreignlanguage{<language>}{...}

  5. \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)。

相关内容