biber 與作者「全名」的名字部分的特殊形式之間的意外交互

biber 與作者「全名」的名字部分的特殊形式之間的意外交互

幾年前,一個問題author發布了關於如何在書目條目欄位中輸入敬語「先生」的文章。 (旁白:我認為該查詢也與尊稱“Dame”的使用相關。第二個旁白:我認為在該領域提供尊稱“Sir”和“Dame”不是一個好主意author。但是,讓我們繼續吧。)

例如,考慮 的情況Sir Isaac Newton。如果一個人簡單地寫

author = "Sir Isaac Newton",

S. I. Newton一種使用參考書目風格來截斷給定的名稱,最後以或結尾Newton, S. I.。不好!按照慣例,「先生」和「女士」必須絕不被縮寫。當時我提供了一個回答將以下“修復”套用至該author欄位:

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

這個修復與 BibTeX 配合得很好。biblatex如果 BibTeX 用作後端或給定名稱被截斷(透過諸如 之類的選項giveninits=true),它也適用。但是,正如最近在評論中向我指出的那樣,如果將 (a)biber用作後端,則會出現問題(b)giveninits=false設定該選項,即,如果給定的名稱是不是被截斷。考慮一個簡單的兩個條目 MWE 的輸出(下面進一步發布程式碼;作者欄位分別為author = "{\relax Sir I}saac Newton",author = "Zoe Zerlina Zwicky",):

在此輸入影像描述

請注意“Sir”之前的空格。 MWE是用MacTeX2017、3.7biblatexbiber2.7編譯的。 FWIW,這是givenbiber(複製並貼上自)創建的兩個字段\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}},

並且會得到

艾薩克·牛頓爵士

完整的,或

牛頓爵士

以縮寫形式。

\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 給出的那樣徹底,但它非常簡單,因為它只需要使用額外的大括號組來幫助biber找出全名的給定名稱組成部分。具體來說,需要做的就是替換

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

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

有了額外的大括號組,biber就無法在“Sir”和首字母“I”之間插入\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}

相關內容