Adicione texto após a entrada com base em um novo campo para uma bibliografia anotada

Adicione texto após a entrada com base em um novo campo para uma bibliografia anotada

Adicionando

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

para biblatex.cfgéquaseo que eu quero. Para cada entrada do bibtex com uma palavra-chave cstatement="This is a foo", este código faz com que o biblatex seja impresso na entrada da bibliografia com "This is a foo" logo antes.

Mas o que euna verdadea necessidade é que esta nova entrada apareça logo após a entrada, como em uma bibliografia comentada. A entrada ``addendum'' também équaseo que eu quero, mas não exatamente porque 1) quero usar essa palavra-chave personalizada e 2) gostaria de ter mais controle sobre a formatação. Ou seja, gostaria que o texto literal em cstatement aparecesse como

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

onde \\\ \\faz com que haja uma linha em branco entre o texto da declaração e a bibentria. (A nova linha não deve estar lá, a menos que exista cstatement.) Isso deve funcionar em qualquer tipo de entrada do bibtex (artigo, procedimentos internos, etc.)

Qualquer conselho seria apreciado.

Responder1

Eu emitiria um \parantes do campo. Então você pode controlar a distância entre a entrada real e a anotação com \bibparsep. Uma maneira muito simples de adicionar algo ao final da entrada bibliográfica é redefinindo a bibmacro finentryque todos os bons estilos bibliográficos devem usar.

No exemplo aqui usei o campo annotationem vez de cstatement, mas se você declarar o campo em um arquivo de modelo de dados, poderá simplesmente trocar todas as menções de annotationfor 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}

Entrada anotada da bibliografia.

informação relacionada