用語集の頭字語の接尾辞は、最後に読み込まれた言語のものではありません

用語集の頭字語の接尾辞は、最後に読み込まれた言語のものではありません

' glossaries(v4.42) ユーザーマニュアルには次のように記載されています (48 ページ):

注: 複数形が指定されていない場合に複数形を生成するために使用される接尾辞は、\glspluralsuffix(一般的なエントリの場合) [...]によって指定されます。

つまり、有効なサフィックスは、これらのコマンドを再定義した最後にロードされた言語のものになります。

しかし、次の MCE:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[french,ngerman,dutch,english]{babel}
\usepackage{glossaries}

\newacronym{gnu}{GNU}{GNU's Not Unix}

\begin{document}
\gls{gnu}

\glspl{gnu}
\end{document}

since の場合はそうではないと指摘しています。

  1. その.logファイルには、最後に読み込まれたファイルが最初に.ldf読み込まれた言語のファイルであることが示されています。

    (/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-english/glossaries-english.ldf)
    (/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-dutch/glossaries-dutch.ldf)
    (/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-german/glossaries-german.ldf)
    (/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-french/glossaries-french.ldf)
    
  2. 接尾辞は空です。これはフランス語の場合に当てはまりますが、英語、オランダ語、ドイツ語の場合は当てはまりません。

さらに奇妙なのは、言語リストがドキュメント クラス レベルで指定されている場合です。

\documentclass[french,ngerman,dutch,english]{article}
...
\usepackage{babel}
...

ロードされる順序はglossaries-*.ldfランダムであるようです:

(/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-dutch/glossaries-dutch.ldf)
(/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-english/glossaries-english.ldf)
(/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-french/glossaries-french.ldf)
(/usr/local/texlive/2018/texmf-dist/tex/latex/glossaries-german/glossaries-german.ldf)

何が起こっているか分かりますか?

答え1

読み込み順序は、tracklangの追跡された言語/方言のリスト (つまり、識別されたドキュメントの言語/方言のリスト) によって決定されます。

パッケージtracklang( によって使用されるglossaries) は、次のようにドキュメントの言語を決定しようとします。

  1. tracklang次のようなオプションが明示的にロードされる場合:

    \usepackage[french,ngerman,dutch,english]{tracklang}
    

    または、次のようなドキュメント クラス オプションを選択した場合:

    \documentclass[french,ngerman,dutch,english]{article}
    \usepackage{tracklang}
    

    は、tracklang.styで定義された順序に従って言語または方言を追跡しますtracklang.tex(定義済み言語と方言の完全なリストは にあります\@tracklang@declaredoptions)。

  2. tracklang.styがパッケージ オプションを取得しない場合は、既知の言語パッケージがロードされているかどうかを確認します。まず、 \bbl@loaded(によって提供されるbabel) が定義されているかどうかを確認します。定義されている場合は、tracklang.styリストを反復処理して既知の方言ラベルを追跡するか、認識されないラベルが見つかった場合は警告します。これは、次のことを意味します。

    \usepackage[french,ngerman,dutch,english]{babel}
    \usepackage{tracklang}
    

    順序は の順序と一致します\bbl@loaded

たとえば、ドキュメント クラスのオプション:

\documentclass[french,ngerman,dutch,english]{article}
\usepackage{tracklang}

\makeatletter
\show\@tracklang@languages
\show\@tracklang@dialects

\begin{document}
\end{document}

トランスクリプトには次の内容が記載されています:

> \@tracklang@languages=macro:
->dutch,english,french,german.
l.5 \show\@tracklang@languages

? 
> \@tracklang@dialects=macro:
->dutch,english,french,ngerman.
l.6 \show\@tracklang@dialects

babel

\documentclass{article}
\usepackage[french,ngerman,dutch,english]{babel}
\usepackage{tracklang}

\makeatletter
\show\@tracklang@languages
\show\@tracklang@dialects
\show\bbl@loaded

\begin{document}
\end{document}

トランスクリプトには次のように表示されます:

> \@tracklang@languages=macro:
->english,dutch,german,french.
l.6 \show\@tracklang@languages

? 
> \@tracklang@dialects=macro:
->english,dutch,ngerman,french.
l.7 \show\@tracklang@dialects

? 
> \bbl@loaded=macro:
->english,dutch,ngerman,french.
l.8 \show\bbl@loaded

したがって、この順序はで指定されbabelた の順序と一致します\bbl@loaded

各方言を明示的に追跡する:

\documentclass{article}
\usepackage{tracklang}
\TrackPredefinedDialect{french}
\TrackPredefinedDialect{ngerman}
\TrackPredefinedDialect{dutch}
\TrackPredefinedDialect{english}

\makeatletter
\show\@tracklang@languages
\show\@tracklang@dialects

\begin{document}
\end{document}

トランスクリプトには次のように表示されます:

> \@tracklang@languages=macro:
->french,german,dutch,english.
l.9 \show\@tracklang@languages

? 
> \@tracklang@dialects=macro:
->french,ngerman,dutch,english.
l.10 \show\@tracklang@dialects

順序は常に言語/方言が追跡された順序に従いますが、この方法により順序がより明確になります。

パッケージの問題glossariesは、コマンドがいつ展開されるかを保証する方法がないため、サフィックス コマンドを言語フックに追加できず、どのファイルをロードする必要があるかを決定するために言語パッケージによって提供される順序に従うことしかできないことです。サフィックスは確かに最後にロードされた言語に従いますが、順序がオプション リスト.ldfで指定された順序と一致することは保証されません。babel

関連情報