幾年前,一個問題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.7biblatex
和biber
2.7編譯的。 FWIW,這是given
由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}},
並且會得到
艾薩克·牛頓爵士
完整的,或
牛頓爵士
以縮寫形式。
\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
指令。結果,插入了普通的詞間空格。我想,如果由於某種原因,這可能會導致一個新問題,被設定為與;本質上不同的東西。幸運的是,這裡的情況似乎並非如此。\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}