biblatex: sem quebras de linha nas listas de nomes ao digitar irregularmente à direita

biblatex: sem quebras de linha nas listas de nomes ao digitar irregularmente à direita

When typesetting a bibliography \raggedright, biblatex seems to have trouble breaking a line between an author's first/last/middle names (and, if multiple authors are present, between two authors). It's as if the entire name list had been put into an \mbox. Consider this example.

insira a descrição da imagem aqui

\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« would easily fit into the fourth line, but instead her entire name is moved to the next one. It would seem odd to me that this should be biblatex's intended behavior, as it can have even worse results under certain circumstances. Can you reproduce this? What would be a way to change it? Should I contact the biblatex team?

insira a descrição da imagem aqui

Responder1

Line breaks in names are controlled by the lownamepenalty and highnamepenalty counters. From biblatex.def the default values are:

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

where \hyphenpenalty defaults to 50. To allow breaks between the first and last name parts (e.g. "Susan Leigh" and "Star"), you can set lownamepenalty to a small value in your preamble. For example:

\defcounter{lownamepenalty}{0}

Observe que, \bibsetuppor padrão, executa uma variedade de comandos. Então, em vez de

\renewcommand*{\bibsetup}{\raggedright}

você está melhor com:

\appto{\bibsetup}{\raggedright}

informação relacionada