Добавить текст после записи на основе нового поля для аннотированной библиографии

Добавить текст после записи на основе нового поля для аннотированной библиографии

Добавление

\DeclareDatamodelFields[type=field,datatype=literal]{cstatement}
\AtEveryBibitem{[\printfield{cstatement}]}

к biblatex.cfgестьпочтичто я хочу. Для каждой записи bibtex с ключевым словом cstatement="This is a foo"этот код заставляет biblatex печатать в библиографии entrpy с "This is a foo" непосредственно перед этим.

Но что яна самом делеНеобходимо, чтобы эта новая запись появилась сразу после записи, как в аннотированной библиографии. Запись ``дополнение'' такжепочтичто я хочу, но не совсем, потому что 1) я хочу использовать это пользовательское ключевое слово и 2) я хотел бы больше контроля над форматированием. А именно, я хотел бы, чтобы буквальный текст в cstatement выглядел как

\item [bibentry here]\\\ \\[cstatement literal text here]

где \\\ \\приводит к тому, что между текстом cstatement и bibentry появляется пустая строка. (Новая строка не должна быть там, если cstatement не существует.) Это должно работать для любого типа записи bibtex (статья, inproceedings и т. д.)

Любой совет будет принят во внимание.

решение1

Я бы выдал \parперед полем. Затем вы можете контролировать расстояние между фактической записью и аннотацией с помощью \bibparsep. Очень простой способ добавить что-то в конец библиографической записи — переопределить bibmacro, finentryкоторый должны использовать все хорошие стили библиографии.

В приведенном здесь примере я использовал поле annotationвместо cstatement, но если вы объявите поле в файле модели данных, вы можете просто заменить все упоминания annotationна cstatement.

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}

\setlength{\bibparsep}{.5\baselineskip}

\renewbibmacro*{finentry}{%
  \setunit{\finentrypunct\par}%
  \printfield{annotation}%
  \finentry}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{appleby,
  author     = {Humphrey Appleby},
  title      = {On the Importance of the Civil Service},
  date       = {1980},
  annotation = {This is a foo},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\cite{appleby}
\printbibliography
\end{document}

Аннотированная библиографическая запись.

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