biblatex: нет переносов строк в списках имен при наборе рваным шрифтом

biblatex: нет переносов строк в списках имен при наборе рваным шрифтом

При наборе библиографии, \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

Разрывы строк в именах контролируются счетчиками lownamepenaltyи highnamepenalty. Из 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}

Связанный контент