biber と著者の「フル」ネームの名部分の特殊な形式との間の予期しない相互作用

biber と著者の「フル」ネームの名部分の特殊な形式との間の予期しない相互作用

数年前、質問書誌エントリのフィールドに敬称「Sir」を入力する方法について投稿されましたauthor。(余談: この質問は敬称「Dame」の使用にも関係していると思います。2 つ目の余談: フィールドに敬称「Sir」と「Dame」を入力するのは良い考えではないと思いますauthor。しかし、先に進みましょう。)

例えば、 の場合を考えてみましょうSir Isaac Newton。単純に次のように書くと、

author = "Sir Isaac Newton",

S. I. Newton名を省略する参考文献スタイルを使用すると、またはになりますNewton, S. I.。これは良くありません。慣例により、「Sir」と「Dame」は一度もない省略される。当時、私は答えフィールドに次の「修正」を適用しますauthor

author = "{\relax Sir I}saac Newton",

この修正は、BibTeXでは問題なく機能します。また、biblatexBibTeXがバックエンドとして使用されている場合、または名前が切り捨てられている場合(などのオプションを介して)でも機能します。ただし、最近コメントで指摘されたように、(a)がバックエンドとして使用されているgiveninits=true場合は問題が発生します。biberそして(b)オプションgiveninits=falseが設定されている場合、つまり、名がない切り捨てられます。単純な 2 エントリ MWE の出力を考えてみましょう (コードは下に掲載されています。著者フィールドはそれぞれauthor = "{\relax Sir I}saac Newton",とですauthor = "Zoe Zerlina Zwicky",)。

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

「Sir」の直前の空白に注意してください。MWE は MacTeX2017、3.7、biblatexおよびbiber2.7 でコンパイルされました。参考までに、以下はgivenによって作成された 2 つのフィールドですbiber( からコピーして貼り付け\jobname.bbl)。

given={{\relax\bibnamedelimb Sir\bibnamedelimb I}saac},
given={Zoe\bibnamedelima Zerlina},

との間にbiberが挿入されていることに注意してください。このマクロの存在により、不要な空白が挿入されます。\bibnamedelimb\relaxSir

質問: フィールドから文字列の最初のインスタンス\bibnamedelimbまたは文字列全体を削除するために設定できる/設定する必要があるオプションはありますか? あるいは、これはバグですか(最終的には修正される予定です)?\relax\bibnamedelimbgivenbiber


\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN, author = "{\relax Sir I}saac Newton", title = "Opticks", year = 1730, note = "Fourth edition"}
@misc{ZZZ, author = "Zoe Zerlina Zwicky", title = "Thoughts", year = 3001}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

答え1

Biber では、「拡張名前形式」を使用できます。デフォルトが気に入らない場合は、名前部分の省略形を明示的に指定できます。

使用する場合は

author  = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},

そして

アイザック・ニュートン卿

全額、または

サー・I・ニュートン

省略形で。

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{IsaacNewton,
  author  = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
  title   = {Opticks},
  year    = 1730,
  edition = {4},
}
@misc{xyz,
  author = {Zoe Zwicky},
  title  = {Thoughts},
  year   = 3001,
}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=true,backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

答え2

@moeweのコメントに促されて素晴らしい答え-- 特に、biberいわゆる「中括弧グループ」(追加の中括弧で囲まれたすべての要素)内の要素の扱い方に関する言及から、私は別の実用的な解決策を思いつきました。これは @moewe が提示したものほど徹底的ではありませんが、非常に単純で、フルネームの名の部分を特定するために、1 つの追加の中括弧グループを使用するだけですbiber。具体的には、

author = "{\relax Sir I}saac Newton", 

author = "{{\relax Sir I}saac} Newton", 

追加の中括弧グループが配置されているため、との間、または "Sir" と最初の "I" の間に指示文biberを挿入することができません。その結果、通常の単語間スペースが挿入されます。何らかの理由で が と実質的に異なる値に設定された場合、新しい問題が発生する可能性がありますが、幸いなことに、ここではそうではないようです。\bibnamedelimb\relaxSir\bibnamedelimb\space

完全な MWE:

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

\RequirePackage{filecontents}
\begin{filecontents*}{mybib.bib}
@misc{SIN0, 
  author = "{\relax Sir I}saac Newton", 
  title  = "Opticks", note = "Not correct"
}
@misc{SIN1,
  author = {family={Newton}, given={Sir Isaac}, given-i={Sir I}},
  title  = {Opticks}, note = "Correct"
}
@misc{SIN2, 
  author = "{{\relax Sir I}saac} Newton", 
  title  = "Opticks", note = "Also correct"
}
\end{filecontents*}

\documentclass{article}
\usepackage[giveninits=false,backend=biber]{biblatex}
\addbibresource{mybib.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

関連情報