Biblatex 具有多个 .bib 和自定义格式

Biblatex 具有多个 .bib 和自定义格式

我想将参考书目和自己的出版物中的参考文献分开。我使用 biblatex 如下:

\usepackage[%
    backend=biber,      % for sorting the entries and citing information with UTF-8 support
    style=numeric,      % style for citation
    url=false,          % url-field of the bib is not printet in the references
    sorting=none,
    maxalphanames=1,    %
    maxcitenames=1,     %
    isbn=false,
    url=false,
    doi=true,
    abbreviate=false,
    ]%
{biblatex}  %
\addbibresource{bib/references.bib} % Adding the bib-file to reference, if need more copy this command
\addbibresource{bib/publications.bib}

进而:

\printbibliography[title={Bibliography}, heading=bibintoc, keyword={primary}, resetnumbers]%
\printbibliography[title={Publications}, heading=bibintoc, keyword={secondary}, resetnumbers]%

其中 references.bib 如下所示:

@inproceedings{ref1,
  title={{Title 1}},
  author={{Authos list}},
  booktitle={Conf},
  year={2021},
  keywords={primary}
}

@inproceedings{ref2,
  title={{Title 2}},
  author={{Authos list}},
  booktitle={Conf},
  year={2021},
  keywords={primary}
}

publications.bib 如下所示:

@inproceedings{Pub1,
  title={{Title 1}},
  author={{Authos list}},
  booktitle={Conf},
  year={2021},
  keywords={secondary}
}

@inproceedings{Pub2,
  title={{Title 2}},
  author={{Authos list}},
  booktitle={Conf},
  year={2021},
  keywords={secondary}
}

我已经打印了两个不同的部分。但是,我希望它们彼此独立编号。对于参考文献,按出现顺序编号(就像它们一样)。对于出版物,也按出现顺序编号,但重新排列并在其前面加上我的文本

Bibliography:
[1] Authors,...
[2] Authors,...

Publications:
[MyText1] Authors,...
[MyText2] Authors,...

在正文中,条目的引用顺序如下:\cite{Pub1}, \cite{ref1}, \cite{ref2}, \cite{Pub2}。然而,在参考书目列表中,ref1 以 [2] 开头,而 Pub1 以 [1] 开头,即使它们位于不同的 .bib 文件中。因此,

  1. 如何为每个 .bib 文件保留单独的计数器?resetnumbers选项\printbibliography不起作用。
  2. 我如何添加我的文本到出版物部分,以便它们在引用 [MyText1]、[MyText2] 时出现在文中?
  3. 是否可以避免在每个条目中使用关键字 primary 和 secondary,而让每个 .bib 文件都使用“general”?

感谢您的帮助。

答案1

对于通过文件拆分的一般书目设置,请查看我最近的回答使用 biblatex 分离多个 bib 文件引用(基于 PLK 对biblatex:按不同的 .bib 文件分类的多个参考书目,但使用了新功能)。您可以使用 Biber sourcemap 自动分配关键字进行过滤。

采用数字样式时,分割书目几乎总是受益于设置defernumbers=true,,并且这对于resetnumbers工作来说是必需的。

labelprefix您可以通过选项将“MyText”添加到其中一个书目的数字标签中\newrefcontext。(例如参见如何在乳胶中为引用和参考文献编号添加前缀?将 labelprefix 替换为 newrefcontext 中的 prefixnumbers 以打印书目,但不起作用)。

您可能需要使用locallabelwidth选项来避免在没有标签前缀的参考书目中出现较大的标签宽度。

您可以使用类似

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=numeric, sorting=none, defernumbers, locallabelwidth]{biblatex}

\DeclareSourcemap{
  \maps[datatype=bibtex, overwrite]{
    \map{
      \perdatasource{references.bib}
      \step[fieldset=keywords, fieldvalue={, }, appendstrict]
      \step[fieldset=keywords, fieldvalue=references, append]
    }
    \map{
      \perdatasource{publications.bib}
      \step[fieldset=keywords, fieldvalue={, }, appendstrict]
      \step[fieldset=keywords, fieldvalue=publications, append]
    }
  }
}

\begin{filecontents}{references.bib}
@inproceedings{ref1,
  title     = {Title 1},
  author    = {{Author list}},
  booktitle = {Conf},
  year      = {2021},
}
@inproceedings{ref2,
  title     = {Title 2},
  author    = {{Author list}},
  booktitle = {Conf},
  year      = {2021},
}
\end{filecontents}
\addbibresource{references.bib}
\begin{filecontents}{publications.bib}
@inproceedings{Pub1,
  title     = {Title 1},
  author    = {{Author list}},
  booktitle = {Conf},
  year      = {2021},
}
@inproceedings{Pub2,
  title     = {Title 2},
  author    = {{Author list}},
  booktitle = {Conf},
  year      = {2021},
}
\end{filecontents}
\addbibresource{publications.bib}

\begin{document}
Lorem \autocite{Pub1}
ipsum \autocite{ref1}
dolor \autocite{ref2}
sit \autocite{Pub2}

\printbibliography[title={Bibliography}, heading=bibintoc, keyword={references}, resetnumbers]
\newrefcontext[labelprefix=MyText]
\printbibliography[title={Publications}, heading=bibintoc, keyword={publications}, resetnumbers]
\end{document}

Lorem [MyText1] ipsum [1] dolor [2] sit [MyText2]

相关内容