如何使用 biblatex 将注释字段移出主参考文献?

如何使用 biblatex 将注释字段移出主参考文献?

biblatex正在创建学术简历中的出版物列表。我想列出我的出版物,并在列出的每篇出版物后概述我对每篇出版物的贡献。

我目前的想法是修改文章和书籍的注释字段,使其移出主要参考文献并出现在参考文献下方的一行,如下所示。

 (1) Smith, J. Journal of Silly Stuff, 20XX, XX, XXXX-XXXX

      My contribution to this paper was ...

 (2) Jones, W. Journal of .......

      My contribution to this paper was ...

我的问题是,您认为如何最好地生成这样的列表,是否可以使用修改后的字段使用 biblatex 来完成?

答案1

由于您最终想要的是带注释的参考书目,因此我会使用字段annotation(或其别名annote)。除非参考书目样式已经带注释,否则通常不会打印它。因此您只需修改finentry参考书目宏即可。

\documentclass{article}
\usepackage[style=chem-rsc]{biblatex}

\renewbibmacro*{finentry}{%
  \iffieldundef{annotation}
    {\finentry}
    {\setunit{\finentrypunct\par\vspace{\bibitemsep}\nobreak}
     \printfield{annotation}%
     \finentry}}

\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{knuth:ct,markey,glashow}
\printbibliography
\end{document}

在此处输入图片描述

note字段通常以书目样式打印。因此,如果您坚持使用此字段,则需要避免打印两次。这可以通过note在书目宏中清除begentry然后在中恢复它来实现finentry

\renewbibmacro*{begentry}{%
  \iffieldundef{note}
    {\undef\bbxnote}
    {\savefield{note}{\bbxnote}%
     \clearfield{note}}}

\renewbibmacro*{finentry}{%
  \restorefield{note}{\bbxnote}%
  \iffieldundef{note}
    {\finentry}
    {\setunit{\finentrypunct\par\vspace{\bibitemsep}\nobreak}
     \printfield{note}%
     \finentry}}

答案2

注释的使用和位置部分取决于biblatex样式。这里有一个独立于每种样式的解决方案,但它需要biber作为后端。该解决方案涉及使用标准字段note(或风俗字段mynote)来存储用于每个条目注释的文本。

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{test.bib} 
@article{article01,
Author = {John Doe},
Journal = {Journal name},
Pages = {280--291},
Title = {Title},
Volume = {21},
Number = {1},
Year = {2013},
note = {My contribution to this paper was \dots}}
@article{article02,
Author = {John Doe},
Journal = {Journal name},
Pages = {280--291},
Title = {Title},
Volume = {21},
Number = {1},
Year = {2014},
note = {My contribution to this paper was \dots\dots}}
\end{filecontents}


\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{mynote}
\end{filecontents}  


\usepackage[style=chem-rsc]{biblatex}

\addbibresource{test.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=note]
      \step[fieldset=mynote, origfieldval]
      \step[fieldset=note, null]
    }
  }
}


\AtEveryBibitem{
\clearfield{note}
\csappto{blx@bbx@\thefield{entrytype}}{\iffieldundef{mynote}{}{\par\printfield{mynote}}}
}
\begin{document}

\nocite{*}

\printbibliography
\end{document}

区块

\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{mynote}
\end{filecontents} 

生成biblatex配置文件bib latex-dm.cfg,我们在其中指定创建一个新的自定义字段mynote

biber然后我们使用操作文件的能力bib将字段的值复制note到条目中mynote。这是通过块实现的

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=note]
      \step[fieldset=mynote, origfieldval]
      \step[fieldset=note, null]
    }
  }
}

它也清空了note

然后我们必须给出如何以及在何处打印注释的说明。

\AtEveryBibitem{
\clearfield{note}
\csappto{blx@bbx@\thefield{entrytype}}{\iffieldundef{mynote}{}{\par\printfield{mynote}}}
}

对于每个 bibitem,我们清除 的值note;因此,可以选择biber直接在 中使用 或进行操作biblatex。然后我们通过向其附加注释文本(mynote)来修补当前条目的驱动程序。

在此处输入图片描述

相关内容