数年前、質問書誌エントリのフィールドに敬称「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では問題なく機能します。また、biblatex
BibTeXがバックエンドとして使用されている場合、または名前が切り捨てられている場合(などのオプションを介して)でも機能します。ただし、最近コメントで指摘されたように、(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
およびbiber
2.7 でコンパイルされました。参考までに、以下はgiven
によって作成された 2 つのフィールドですbiber
( からコピーして貼り付け\jobname.bbl
)。
given={{\relax\bibnamedelimb Sir\bibnamedelimb I}saac},
given={Zoe\bibnamedelima Zerlina},
との間にbiber
が挿入されていることに注意してください。このマクロの存在により、不要な空白が挿入されます。\bibnamedelimb
\relax
Sir
質問: フィールドから文字列の最初のインスタンス\bibnamedelimb
または文字列全体を削除するために設定できる/設定する必要があるオプションはありますか? あるいは、これはバグですか(最終的には修正される予定です)?\relax\bibnamedelimb
given
biber
\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
\relax
Sir
\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}