biblatex:排版 ragged-right 時名稱列表中沒有換行符

biblatex:排版 ragged-right 時名稱列表中沒有換行符

當排版參考書目時,\raggedright, biblatex似乎很難打破作者的名字/姓氏/中間名之間的界限(如果存在多個作者,則在兩個作者之間)。就好像整個名單都被放入了一個\mbox.考慮這個例子。

在此輸入影像描述

\documentclass[11pt,DIV=6]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[style=authoryear]{biblatex}
\usepackage{filecontents}
\usepackage{tgschola}

\begin{filecontents}{bibtest.bib}
@COLLECTION{Star95,
  editor = {Star, Susan Leigh},
  year = {1995},
  title = {Ecologies of Knowledge: Work and Politics in Science and Technology},
  address = {Albany},
  publisher = {SUNY}
}
@INCOLLECTION{Star95a,
  author = {Star, Susan Leigh},
  title = {The Politics of Formal Representations: Wizards, Gurus, and Organizational
    Complexity},
  year = {1995},
  pages = {88-118},
  crossref = {Star95}
}
\end{filecontents}

\renewcommand*{\bibsetup}{\raggedright}
\bibliography{bibtest.bib}
\listfiles

\begin{document}
\noindent\hrule
\nocite{Star95a}
\printbibliography
\noindent\hrule
\end{document}

「Susan Leigh」很容易適合第四行,但她的整個名字被移到了下一行。在我看來,這應該是有意的行為,這似乎很奇怪biblatex's,因為在某些情況下它可能會產生更糟糕的結果。你能重現這個嗎?有什麼方法可以改變它?我應該聯絡 biblatex 團隊嗎?

在此輸入影像描述

答案1

名稱中的換行符號由lownamepenaltyhighnamepenalty計數器控制。預設biblatex.def值是:

\defcounter{lownamepenalty}{\hyphenpenalty/2}
\defcounter{highnamepenalty}{\hyphenpenalty}

其中\hyphenpenalty預設為50.若要允許名字部分和姓氏部分之間存在中斷(例如“Susan Leigh”和“Star”),您可以lownamepenalty在序言中設定較小的值。例如:

\defcounter{lownamepenalty}{0}

請注意,\bibsetup預設情況下會執行各種命令。所以而不是

\renewcommand*{\bibsetup}{\raggedright}

你最好這樣做:

\appto{\bibsetup}{\raggedright}

相關內容