biblatex: 言語に応じて著者名を変更しますか?

biblatex: 言語に応じて著者名を変更しますか?

通常、名前はどの言語でも同じです。したがって、私が Knuth の著作を引用するときは、それが英語の記事であれドイツ語の記事であれ、 と引用しますDonald E. Knuth

古代や中世の名前では、必ずしもそうとは限りません。言語によって綴りが異なります。英語、ドイツ語、フランス語の例を 2 つ示します。

  • アリストテレス | アリストテレス | アリストテ
  • トマス・アクィナス | トーマス・フォン・アクィン | トーマス・ダキン

つまり、英語の記事を書くときはbib英語の名前を含む -file が必要ですが、ドイツ語の記事を書くときは bib ファイルを調べてそれに応じて名前を変更する必要があります。実際に英語またはドイツ語で出版する頻度によっては、この作業に忙しくなり、エラーが発生しやすくなります。

bibそこで、さまざまな名前を 1 つのファイルにあらかじめ含めておき、ドキュメントで使用されている主な言語に応じて正しい名前を選択できるようにすればよいのではないかとbiblatex思いました。何かアイデアはありますか?

注意: 1 つの文書で Aristotle と Aristoteles の両方の綴りを使いたくはありません (次の MWE を見るとそう思うかもしれません)。もちろん、記事の主な言語が英語であれば、Aristotle へのすべての参照では、彼の名前の英語の綴りが使われます。しかし、(a)bib毎回 -file を編集したり、(b) 一般的に 1 つの-file ではなく、各言語ごとに 1 つずつ 2 つの -file を維持したり、(c) 1 つの-filebibに 2 つの異なるエントリを入れたりすることなく、異なる言語で記事を書けるようにしたいと考えています。bib

ムウェ

% !TEX TS-program = lualatexmk
\documentclass{scrartcl}

\usepackage{fontspec}    
    \setmainfont[Ligatures=TeX]{Times New Roman}

\usepackage[ngerman, british]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=verbose,abbreviate=false,backend=biber]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{aristotle:ross:1924,
    Author = {Aristotle},    % It is here, I think, that something could be done, e.g., ...
    Title = {Metaphysics},     % ... british=Aristotle,ngerman=Aristoteles,french=Aristote
    Editor = {William David Ross},
    Commentator = {William David Ross},
    Introduction = {William David Ross},
    Hyphenation = {british},
    Location = {Oxford},
    Publisher = {Clarendon Press},
    Volumes = {2},
    Year = {1924}}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\selectlanguage{british}
Some English text.\footcite{aristotle:ross:1924}

\selectlanguage{ngerman}
Etwas Text auf Deutsch.\footcite{aristotle:ross:1924}

\end{document}

答え1

方法は次のとおりです:

\begin{filecontents}{\jobname.bib}
@book{aristotle:ross:1924,
    Author = {\Aristotle},    % It is here, I think, that something could be done, e.g., ...
    Title = {Metaphysics},     % ... british=Aristotle,ngerman=Aristoteles,french=Aristote
    Editor = {William David Ross},
    Commentator = {William David Ross},
    Introduction = {William David Ross},
    Hyphenation = {british},
    Location = {Oxford},
    Publisher = {Clarendon Press},
    Volumes = {2},
    Year = {1924}}
\end{filecontents}

\documentclass{scrartcl}

\usepackage{fontspec}    
\setmainfont[Ligatures=TeX]{Times New Roman}

\usepackage[ngerman,french,british]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=verbose,abbreviate=false,backend=biber]{biblatex}
\addbibresource{\jobname.bib}


\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\newauthor}{mm}
 {
  \clint_newauthor:nn {#1} {#2}
 }
\tl_new:N \l__clint_author_tl
\cs_new_protected:Npn \clint_newauthor:nn #1 #2
 {
  \prop_new:c { g_clint_author_#1_prop }
  \tl_set:Nn \l__clint_author_tl { #1 }
  \keys_set:nn { clint-author } { #2 }
  \cs_new:cpn { #1 } { \prop_get:cV { g_clint_author_#1_prop } \languagename }
 }
\cs_generate_variant:Nn \prop_get:Nn { cV }
\keys_define:nn { clint-author }
 {
  unknown .code:n = 
   \prop_gput:cVn { g_clint_author_ \l__clint_author_tl _prop }
                  \l_keys_key_tl
                  { #1 }
 }
\ExplSyntaxOff

\newauthor{Aristotle}{
 british=Aristotle,
 ngerman=Aristoteles,
 french=Aristote
}

\begin{document}

\selectlanguage{british}
Some English text.\footcite{aristotle:ross:1924}

\selectlanguage{ngerman}
Etwas Text auf Deutsch.\footcite{aristotle:ross:1924}

\selectlanguage{french}
Du texte en Français.\footcite{aristotle:ross:1924}

\end{document}

制御シーケンスを定義するには

\newauthor{Aristotle}{
 british=Aristotle,
 ngerman=Aristoteles,
 french=Aristote
}

コマンドが呼び出されます\Aristotle(ただし、文字列は任意です)。コマンドはファイル内で使用する必要があります。著者名を変更せずに処理するメソッドを.bib使用できる可能性があります。biblatex

ここに画像の説明を入力してください

答え2

これは、厳密に言えば「答え」ではありません。ただし、これは biblatex 4.0/biber 4.0 で計画されています。次のような代替案を定義できるようになります (うまくいけば)。

AUTHOR = {Aristotle},
AUTHOR_translated_ngerman = {Aristoteles},
AUTHOR_translated_french = {Aristote}

次に、スタイル内でこれらを選択します。

\printname{author}
\printname[form=translated,lang=ngerman]{author}
\printname[form=translated,lang=french]{author}

おそらく\selectlanguage@egreg が示すように切り替えて使用しています。

この種の (オプション、下位互換性のため) フォーム/言語インターフェースは、フィールド、リスト、または名前を扱うマクロ用に計画されています。作業は進行中で、biber 部分は既に完了しており、biblatex 部分は進行中ですが、かなりの作業が必要です。

関連情報