biblatex:在参考书目部分自定义单个标签

biblatex:在参考书目部分自定义单个标签

使用 biblatex,我想手动调整参考书目部分和文档正文中的一些标签(我的意思是:[1],[2])。

针对 bibtex 也提出了同样的问题,请参阅定制个别书目标签?我对 bib 的解决方案很感兴趣特克斯。

这个想法是,所有自己的出版物都标记为 [P1],[P2] 等。

[P1] Gladstone Gander. How to be lucky. Nature, 42:1-33, 2001.

其余出版物均以 [3], [4] 等形式标出。

[2] Donald Duck and Fethry Duck. How to be unlucky. Nature, 43:34-44, 2002.

然后,可以\nocite{}在主要内容的开头使用,以确保所有自己的出版物都出现在参考书目部分的顶部,并且所有其他参考文献的编号都继续使用下一个整数。

万一有帮助,我将 biblatex 加载为:

\usepackage[style=numeric-verb,backend=bibtex,sorting=none,sortcites=true,firstinits=true,isbn=false,maxcitenames=99,bibencoding=latin1]{biblatex}

提前感谢您的一些提示!

答案1

这其实非常简单。你只需要找到一种方法来区分那些带有修改标签的条目。至少有两种方法可以做到这一点,但这两种方法本质上是不同的。

使用keywords,您可以直接添加keywords = {modlabel}到条目中,然后使用和.bib过滤参考书目。在这种情况下,您将在文件中决定条目是否要修改编号。keyword=modlabelnotkeyword=modlabel.bib

当你使用书目分类方法,这个决定被延迟,只在实际.tex文档中做出。我们定义一个书目类别

\DeclareBibliographyCategory{modlabel}

通过 将相应的条目添加到此类别,并使用和\addtocategory{modlabel}{<key>}过滤参考书目。category=modlabelnotcategory=modlabel

您必须加载biblatexdefernumbers=true选项才能使两种方法正常工作。

refcontext然后,以新的选项形式打印前缀条目的参考书目labelprefix=P

MWE(使用书目类别)

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=numeric-verb, backend=bibtex, sorting=none, defernumbers=true]{biblatex}
\addbibresource{biblatex-examples.bib}

\DeclareBibliographyCategory{modlabel}
\addtocategory{modlabel}{cicero,geer}

\begin{document}
\nocite{geer,wilde,cicero,markey,aristotle:physics,aristotle:rhetoric}
\begin{refcontext}[labelprefix=P]
\printbibliography[category=modlabel]
\end{refcontext}
\printbibliography[notcategory=modlabel,heading=none]
\end{document}

输出截图:带有标签 P1、P2、3、4、5、6 的参考书目


为了避免两个\printbibliographys 之间的间距略有增加,请在序言中添加以下内容

\defbibenvironment{bibliography}
  {}
  {}
  {\item}

\newenvironment{spacedbib}
  {\list
     {\printtext[labelnumberwidth]{%
        \printfield{labelprefix}%
        \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}

并将\pritntbibliograpy命令放在这个新spacedbib环境中,如下所示

\begin{spacedbib}
\begin{refcontext}[labelprefix=P]
\printbibliography[category=modlabel]
\end{refcontext}
\printbibliography[notcategory=modlabel,heading=none]
\end{spacedbib}

相关内容