Перенос строки в цитировании biblatex

Перенос строки в цитировании biblatex

Я использую biblatex и мне очень нравится его гибкость, хотя должен сказать, что там слишком много опций, чтобы один человек мог разобраться во всем за всю жизнь :-/ Пока что я делаю две вещи с цитируемыми ссылками. Во-первых, печатаю «сноску» с сокращенной информацией на той же странице, что и цитата (сноска на самом деле выносится на поля, потому что я использую tufte). Во-вторых, в конце печатаю полную библиографию, как обычно.

Я делаю это, используя, среди прочего, следующие команды: Чтобы сократить цитаты, но не библиографию, я использую

\usepackage[..., maxcitenames=1, maxbibnames=99]{biblatex}
\AtEveryCitekey{...\clearfield{title}}

Что работает довольно хорошо. Я бы хотел изменить одну вещь жестко. Поскольку мои «сноски» идут на поля, я бы хотел добавить новую строку после имени автора, для каждой цитаты, но не для библиографии. Поскольку все они в любом случае займут две строки, я бы предпочел разбить их красиво,

Some Author et al.
Journal X (2000), yy-zz

Вместо какой-то случайной мешанины

Some Author et al. Journal
X (2000), yy-zz

Итак, по сути: как изменить разделитель после слова «Автор» на новую строку только для полной цитаты?

MWE будет выглядеть следующим образом:

\documentclass{article}
\usepackage{hyphenat}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[maxcitenames=1, maxbibnames=99,  isbn=false, doi=false, url=false, eprint=false, bibstyle=numeric, citestyle=numeric-comp, backend=biber]{biblatex}
\addbibresource{~/library.bib}
\AtEveryCitekey{\clearfield{title}\clearfield{number}\clearfield{month}}% Removes things for footnotes 
\AtEveryBibitem{\clearfield{number}\clearfield{month}}%Remove things for Bibliography only

\renewcommand{\labelnamepunct}{\newline}
\begin{document}
This is of interest.\footfullcite{FamousPerson2000}
\printbibliography
\end{document}

Хотя он \labelnamepunct{}что-то делает для библиографии, я не могу заставить его работать для сноски (внутри \AtEveryCiteKey{}также не работает)

решение1

Итак, ваш последний комментарий дал мне идею обходного пути в вашей ситуации (где стандартный подход — см. ниже — не может быть использован).

Мы переопределяем формат title/ citetitleтак, чтобы \newlineон сохранялся в буфере пунктуации.

\AtEveryCitekey{%
  \DeclareFieldFormat*{title}{\printunit{\newline}}%
  \DeclareFieldFormat*{citetitle}{\printunit{\newline}}}

Чтобы это сработало у васне долженпроблема \clearfield{title}, поскольку biblatexнеобходимо думать, что есть заголовок для печати (и на самом деле необходимо думать, что он его печатает) — мы просто гарантируем с помощью этого форматирования, что заголовок заменен на перенос строки.

МВЭ

\documentclass{scrartcl}
\usepackage[style=authortitle,backend=bibtex]{biblatex}

\addbibresource{biblatex-examples.bib}

\AtEveryCitekey{%
  \DeclareFieldFormat*{title}{\printunit{\newline}}%
  \DeclareFieldFormat*{citetitle}{\printunit{\newline}}}

\begin{document}
Lorem\footfullcite{baez/article} ipsum\footfullcite{kastenholz}.
\end{document}

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


Стандартный подход, который работает, если titleполе присутствует, будет просто

\AtEveryCitekey{\renewcommand{\labelnamepunct}{\newline}\clearfield{title}}

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