Перемещение короткой строки библиографии на следующую строку сноски

Перемещение короткой строки библиографии на следующую строку сноски

Я использую BibLaTeX с командой \footcite- для помещения библиографических данных в сноски. Я бы хотел избежать размещения короткого ключевого слова "W:" (перевод "In:") в конце строки. Строка \renewcommand{\intitlepunct}{\addcolon\nobreakspace}влияет только на содержание библиографии, размещенной с помощью команды \printbibliography(см.:Предотвращение разрыва строки сразу после bibstring в библографии).

введите описание изображения здесь

Согласно документации пакета BibLaTeX (стр. 106) счетчики highnamepenaltyи lownamepenaltyмогут быть установлены для предотвращения переноса строки между начальной буквой имени и фамилией (?). Есть ли другой способ расположить начальную букву имени (вместе со словом "i" - перевод "and") в той же строке, что и фамилия? Я пробовал устанавливать \setcounter{highnamepenalty}{10000}и \setcounter{lownamepenalty}{0}, но без ожидаемого эффекта. Мой MWE:

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage{polski}
\usepackage[style=verbose]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{mylist.bib}
@inbook{gumplowicz2010,
    author =    {Gumplowicz, L.},
    title =     {O naturalnym prawie kształtowania się państw},
    booktitle = {Dwa życia Ludwika Gumplowicza. Wybór tekstów},
    editor =    {Mozetič, G. and Surman, J.},
    editortype =    {redactor},
    location =  {Warszawa},
    year =      {2010},
}
\end{filecontents}
\addbibresource{mylist.bib}

\setlength{\textwidth}{115mm}

\renewcommand{\intitlepunct}{\addcolon\nobreakspace}    % has no impact on output

\begin{document}
Some text\footcite{gumplowicz2010}.
\end{document}

решение1

Если вы хотите подавить перенос строки между инициалами имени и фамилией, вам нужно установить lownamepenalty. highnamepenaltyдля разных битов одной и той же части имени, чтобы он разделял два имени. Поэтому вам нужно

\defcounter{lownamepenalty}{10000}

для подавления переноса строки в 'J. Surman'. Но вы также хотите связать 'i' с 'J. Surman', поэтому дополнительно вам нужно

\DeclareDelimFormat{finalnamedelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\nobreakspace}

В оригинальном определении \spaceвместо \nobreakspaceздесь.

Для 'W:' история немного интереснее. На самом деле

\renewcommand{\intitlepunct}{\addcolon\nobreakspace}

делает правильно, но поскольку \intitlepunctобрабатывается немного иначе, чем другие знаки препинания, его эффекты сводятся на нет. Вы можете исправить это с помощью

\renewbibmacro*{in:}{%
  \printtext{%
    \bibstring{in}\printunit{\intitlepunct}}}

Кстати, используя @incolletion(что естьвероятноправильный тип записи здесь в любом случае) вместо @inbookне делает различную обработку \intitlepunctочевидной.

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[polish]{babel}
\usepackage{polski}
\usepackage[style=verbose]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inbook{gumplowicz2010,
  author     = {Gumplowicz, L.},
  title      = {O naturalnym prawie kształtowania się państw},
  booktitle  = {Dwa życia Ludwika Gumplowicza. Wybór tekstów},
  editor     = {Mozetič, G. and Surman, J.},
  editortype = {redactor},
  location   = {Warszawa},
  year       = {2010},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\setlength{\textwidth}{115mm}

\defcounter{lownamepenalty}{10000}

\renewcommand{\intitlepunct}{\addcolon\nobreakspace}
\renewbibmacro*{in:}{%
  \printtext{%
    \bibstring{in}\printunit{\intitlepunct}}}

\DeclareDelimFormat{finalnamedelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\nobreakspace}

\begin{document}
Some text\footcite{gumplowicz2010}.
\end{document}

введите описание изображения здесь

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