
私はここ数日、biblatex を設定して参考文献エントリ内の単一および複数の共同作業者を処理できるようにしようと頭を悩ませてきました。イライラしたため息。
次の例を見てみましょう。
\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{LadymanRoss07,
author = {Ladyman, James and Ross, Don},
collaborator = {David Spurrett and Collier, John},
title = {Every Thing Must Go: Metaphysics Naturalized},
publisher = {Oxford University Press},
year = {2007}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
どうすればエレガントに実現できるでしょうか:
Ladyman, James and Don Ross (2007). Every Thing Must Go: Metaphysics Naturalized.
With collaborators: David Spurrett and John Collier. Oxford University Press.
出力では、With collaborator:
協力者が 1 人だけだった場合はどうなりますか?
ちなみに、私が現在最も満足できない「修正」は、.bibファイル内のどこにでもcollaborator =
変更し、annotator =
\DefineBibliographyStrings{english}{
withannotator = With collaborators:\addspace ,
}
私の biblatex 構成コードに追加します。(これは明らかに、さまざまな意味でひどい「解決策」です!)
答え1
データベースに「コラボレーター」を追加し、ドライバーをいじることなく標準スタイルを使用できるようにする最も適切な方法は、ソースマップを追加することだと思います (Biber 1.0+ および biblatex 2.0+ が必要です)。
ここでの「魔法」はセクションにあり\DeclareSourcemap
、基本的には次のように機能します。
共同作業者フィールドを持つエントリを識別します。エントリにそのようなフィールドがない場合は、それ以上処理しません。
\step[fieldsource=collaborator, final=true]
共同作業者フィールドをエディター フィールドにコピーします。
\step[fieldtarget=editora, origfieldval]
editoratype フィールドを「collaborator」に設定します。
\step[fieldset=editoratype, fieldvalue=collaborator
「標準」の書式設定 (「共同で」) でよければ、それで十分です。ただし、「共同編集者と」という別の書式が必要なので、少し複雑になります。ここで問題になるのは、「bytype」文字列では、標準の biblatex スタイルが単一の名前と複数の名前を区別しようとしないことです。その場合、次の 3 つのオプションがあります。
物事をシンプルにしたい場合は、状況に応じて、デフォルトなどの 1 人以上の共同作業者に対応できる形式を採用してください。これが最もシンプルで、「共同作業者あり」の形式にこだわらない限り、おそらく最適です。そうであれば、2 番目のマップ手順全体、および文字列
\newbibliographystring
の定義を削除できますbycollaborators
。「正しい」結果を得たいのであれば、内部マクロを書き直して複数の名前を識別し、それぞれ異なる導入文字列を適切に出力します。これはかなりの作業量となり、おそらく正当化できる範囲を超えているでしょう。
ファイル自体で、1 人の共同作業者と複数の共同作業者を区別します
.bib
。1 人の場合は「collaborator」、2 人の場合は「collaborators」を使用します。biblatex に関する限り、まったく異なる「タイプ」を処理することになります (biblatex に関する限り、「collaborators」は「turnipwranglers」と同じようなものです)。ただし、bibstring
複数形を処理するのに適したを定義することで、問題は解決します。これは完璧ではありませんが、許容できると思われるため、ここで実行しました。
入力内容をわずかに変更して「コラボレーター」を「コラボレーター」にした場合 (上記の理由により)、最終結果は次のようになります。
\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear,backend=biber]{biblatex}
\DeclareSourcemap{
\maps[datatype=bibtex,overwrite=false]{
\map{
\step[fieldsource=collaborator, final=true]
\step[fieldset=editora, origfieldval]
\step[fieldset=editoratype, fieldvalue=collaborator]
}
% THIS MAP STEP IS ONLY THERE TO ENABLE US TO USE "COLLABORATORS"
% AS WELL AS "COLLABORATOR", BECAUSE THE QUESTION WANTS TO USE THE
% "WITH COLLABORATORS" INTRODUCTION
\map{
\step[fieldsource=collaborators, final=true]
\step[fieldset=editora, origfieldval]
\step[fieldset=editoratype, fieldvalue=collaborators]
}
}
}
\NewBibliographyString{bycollaborators}% ONLY FOR "WITH COLLABORATORS"
\DefineBibliographyStrings{english}{%
bycollaborator = {with collaborator\addcolon\space},
% AND ONLY FOR "WITH COLLABORATORS"
bycollaborators = {with collaborators\addcolon\space}}
\begin{filecontents}{\jobname.bib}
@book{LadymanRoss07,
author = {Ladyman, James and Ross, Don},
collaborators = {David Spurrett and Collier, John},
title = {Every Thing Must Go: Metaphysics Naturalized},
publisher = {Oxford University Press},
year = {2007}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
答え2
biblatex のマニュアルによると、共同編集者の処理は、エディター フィールドにリストを設定し、 を使用することで実現できますeditortype=collaborator
。
biblatex の場合、これは意味的に、エディター エントリではなく共同編集者エントリを指定していることを考慮するように指示します。これは、標準を維持するために新しいキーをあまり増やしたくないためです。
共同作業者を参照する方法を指定することもできます。
- デフォルトでは、キーワードはまたは短縮バージョンに
collaborator
翻訳されます。collaborator
collab.
- キーワードはまたは
bycollaborator
に変換されます。in collaboration with
in collab with
- または
collaborators
に変換するキーを使用することもできます。collaborators
collab.
ただし、これは私のコンピューターのドキュメントに記載されているとおりには動作しないようで、キーワードの翻訳はすべての言語で利用できるわけではないことに注意してください。
また、これらのキーの後に言語ファイル内の多数のキーが続くため% FIXME: unsure
、まだ適切に動作しない可能性があります。
biblatex に名前のリストを渡す場合、and
コンマは名前と姓の区切りとして認識されるため、各名前をキーワードで区切る必要があります。そのため、biblatex はエントリをDavid Spurett
およびとして解釈しますJohn Collier
。
したがって、次のようになります。
@book{LadymanRoss07,
author = {Ladyman, James and Ross, Don},
editor = {David Spurrett and Collier, John},
editortype = {collaborator},
title = {Every Thing Must Go: Metaphysics Naturalized},
publisher = {Oxford University Press},
year = {2007}
}
これでうまくいくと思います。私のテスト文書では、英語を使用して、次の結果が得られました。
[1] James Ladyman and Don Ross. Every Thing Must Go: Metaphysics Naturalized. In collab.
with David Spurrett, Collier, and John. Oxford University Press, 2007.
これはほぼあなたが期待していた通りのようです。
答え3
同じ問題のある別の本の例を次に示します。この解決策は MathSciNet からのものです。note
このような場合にフィールドが使用されます。
@BOOK{Buergisser1997,
AUTHOR = {B{\"u}rgisser, Peter and Clausen, Michael and Shokrollahi, M. Amin},
TITLE = {{A}lgebraic {C}omplexity {T}heory},
SERIES = {Grundlehren der Mathematischen Wissenschaften [Fundamental Principles of Mathematical Sciences]},
VOLUME = {315},
NOTE = {With the collaboration of Thomas Lickteig},
PUBLISHER = {Springer-Verlag},
ADDRESS = {Berlin},
YEAR = {1997},
PAGES = {xxiv+618},
ISBN = {3-540-60582-7},
MRCLASS = {68-02 (12Y05 65Y20 68Q05 68Q15 68Q25 68Q40)},
MRNUMBER = {1440179 (99c:68002)},
MRREVIEWER = {Alexander I. Barvinok},
}