
Добавление
\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}