我正在使用 biblatex 维护人员数据库。使用 biblatex 的\printbibliography
命令,我可以打印这些人员的列表并利用 biblatex 的排序机制。下面的示例按出生日期对人员进行了排序。
这些人也与书目参考文献相关联(他们是作者)。参考文献在书目条目中使用该字段指示usera
。通过\DeclareBibliographyDriver
命令,我能够以列表形式在人员姓名下打印这些参考文献。
我想要实现的是避免被迫手动列出usera
字段中的链接条目并让 biblatex 自动打印它们。
这意味着让 biblatex 在 bib 文件中搜索具有相应作者的条目,并usera
用结果填充字段。理想情况下,我需要能够使用排序机制确定如何打印这些条目(例如:按日期排序打印此作者的所有条目)。
我不知道该怎么做,也不知道是否可行,任何帮助我都会非常感激。在我看来,这种“嵌套书目”将是一种非常强大的工具。
MWE,非自动化
\documentclass{article}
\usepackage{biblatex}
\usepackage{filecontents}
\begin{filecontents}{sources.bib}
@article{testart1,
author = {Author, Albert},
title = {First Article Title},
journaltitle = {Something Times},
date = {1964-02-01},
}
@article{testart2,
author = {Buthor, Billy},
title = {Second Article Title},
journaltitle = {Another Times},
date = {1975-05-10},
}
@article{testart3,
author = {Author, Albert},
title = {Third Article Title},
journaltitle = {Something Else Times},
date = {1970-04-21},
}
@person{author_albert,
namea = {Author, Albert},
date = {1920/1975},
usera = {testart1,testart3},
}
@person{buthor_billy,
namea = {Buthor, Billy},
date = {1930/1990},
usera = {testart2},
}
@person{cuthor_charly,
namea = {Cuthor, Charly},
date = {1900/1950},
}
\end{filecontents}
\addbibresource{sources.bib}
\newcommand*{\itemcite}[1]{\item \fullcite{#1}\finentry}% goes with below
\DeclareBibliographyDriver{person}{% custom person driver
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\mkbibbold{\printnames{namea}%
\addspace%
\mkbibparens{\printdate}%
\addspace%
\iffieldundef{usera}{}% if nothing in usera, print nothing
{\vskip\bibitemsep\scriptsize% otherwise print list of publications
\begin{itemize}%
\forcsvfield{\itemcite}{usera}%
\end{itemize}}}%
%\usebibmacro{finentry}%
}%
\begin{document}
Lorem.
\nocite{*}%
\printbibliography[type=person,title=Persons,sorting=ynt]%
\end{document}