我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
)来修补当前条目的驱动程序。