这是后续行动最近的一个问题:在我的 TexLive 2012(biblatex 1.7-1)系统中,我试图将特定作者的出版物与所有其他参考文献分开(例如,如果你想将自己的出版物与他人的作品分开)。为此,我使用了此解决方案,这似乎正是我所寻找的:
\DeclareBibliographyCategory{byname}
\DeclareIndexNameFormat{byname}{% Test could be refined
\ifboolexpr{ test {\ifdefstring{\lastname}{#1}}
and ( test {\ifdefstring{\firstname}{#3}}
or test {\ifdefstring{\firstinit}{#4}} ) }
{\addtocategory{byname}{\thefield{entrykey}}}
{}}
\AtDataInput{%
\indexnames[byname]{author}}
...
\printbibliography[category=byname]
然而,我遇到了此解决方案的一个问题,即作者“多”的作品。出于某种原因,如果将上述解决方案应用于作者多于变量的参考文献,则类别过滤器不再起作用最大名称如果名称过滤器不是第一作者,则成立。
以下最小示例说明了这个问题:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=alphabetic,maxbibnames=99]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{aaronson1,
author = {A. Aaronson and B. Beronson},
title = {Random Title},
publisher = {Random Publisher},
year = 2000
}
@book{aaronson2,
author = {A. Aaronson and B. Beronson and C. Cerenson and D. Derenson and E. Erenson and F. Ferenson},
title = {Book with many others},
publisher = {Random Publisher},
year = 2003
}
\end{filecontents}
\bibliography{\jobname.bib}
% Variants of each could be added
\newcommand{\firstinit}{B.}
\newcommand{\firstname}{Berni}
\newcommand{\lastname}{Beronson}
\DeclareBibliographyCategory{byname}
\DeclareIndexNameFormat{byname}{% Test could be refined
\ifboolexpr{ test {\ifdefstring{\lastname}{#1}}
and ( test {\ifdefstring{\firstname}{#3}}
or test {\ifdefstring{\firstinit}{#4}} ) }
{\addtocategory{byname}{\thefield{entrykey}}}
{}}
\AtDataInput{%
\indexnames[byname]{author}}
\begin{document}
\section{Beronson's books}
\nocite{*}
\printbibliography[category=byname,heading=none]
\section{Not Beronson's books}
\nocite{*}
\printbibliography[notcategory=byname,heading=none]
\end{document}
在我看来,好像过滤器的应用时间不对——在作者列表被截断为第一作者之后。
是否需要修改此代码以允许多个作者?或者我必须使用 biber 和源地图功能(如建议的那样这里)如果我不想添加关键字或多个。围兜文件?
答案1
代替
\AtDataInput{\indexnames[byname]{author}}
使用
\AtDataInput{\indexnames[byname][1-99]{author}}
表单的第二个可选参数指定<start>-<stop>
应执行索引指令的名称列表中的项目。默认情况下<start>
为 1。该<stop>
值是列表中的名称总数,除非超过maxnames
。在这种情况下<stop>
默认为minnames
。