我使用biblatex
package 来列出论文中的参考书目,其中有多个作者的条目仅提供第一作者的名字。参考文献的引用使用数字,参考文献列表按照参考文献在论文中第一次引用的位置排序。
现在,我需要制作一个具有不同且唯一编号的不同出版物列表,以便当我在论文中引用某些内容时,从引用指示符本身就可以明显看出该引用是属于参考文献列表还是出版物列表。还有一件事:在出版物列表中,所有作者都应出现,无论文章作者的数量如何。
我不是专业的 Latex 用户,不知道该怎么做,也无法从有关多个参考书目列表的问题中找到我的问题的答案。
有人能帮助我吗?
答案1
我们假设以下设置。您有两个单独的.bib
文件。
biblatex-examples.bib
包含您想要在正常参考书目中引用的正常条目。\jobname.bib
包含应该出现在出版物列表中的条目。
我们进一步假设中没有条目\jobname.bib
已经具有keywords
字段。
第一步,我们使用 Biber 源映射将 添加keyword
lop
到 中的所有条目\jobname.bib
。此关键字稍后用于过滤不同的参考书目。您不必使用不同的.bib
文件,也可以手动将关键字直接添加到单个.bib
文件中,用于所有条目。也可以想象其他(更自动化)的方法来分离条目。
keyword
然后可以使用和过滤书目notkeyword
。为了实现出版物列表的不同排序和标签前缀“P”,我们使用所谓的 refcontexts。
可以通过设置两个计数器来控制最大名称数量。我们将其打包成一个方便的宏。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=numeric, sorting=none, defernumbers=true, locallabelwidth, backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\DeclareSourcemap{
\maps[datatype=bibtex, overwrite]{
\map{
\perdatasource{\jobname.bib}
\step[fieldset=keywords, fieldvalue=lop]
}
}
}
\makeatletter
\newcommand*{\setmaxbibnames}[1]{%
\c@maxnames#1\relax
\numdef\blx@maxbibnames{#1}%
}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{appleby,
author = {Humphrey Appleby},
title = {On the Importance of the Civil Service},
date = {1980},
}
@book{elk,
author = {Anne Elk and Annie Hacker and James Hacker and Humphrey Appleby and Bernard Woolley},
title = {A Theory on Brontosauruses},
date = {1972},
}
\end{filecontents}
\begin{document}
Lorem \autocite{appleby}
ipsum \autocite{sigfridsson}
dolor \autocite{elk}
ipsum \autocite{nussbaum}
ipsum \autocite{aksin}
\printbibliography[notkeyword=lop]
\newrefcontext[labelprefix=P, sorting=ynt]
\AtNextBibliography{\setmaxbibnames{999}}
\printbibliography[title=List of Publications, keyword=lop]
\end{document}