根据资源文件分离参考书目项目

根据资源文件分离参考书目项目

我有几个bib文件,我想以略有不同的方式处理它们。我认为最明显的方法是将它们放在不同的类别中(\DeclareBibliographyCategory),然后在中处理该问题\printbibliography

我的问题如下:

  • 给定1.bib2.bib我如何自动将一个文件中的所有条目分配给特定类别?根据文档\addtocategory仅采用键,因此我必须手动列出所有键。
  • 给定第三个文件,3.bib在手动将几个条目分配3.bib到一个类别后,我怎样才能将所有其他条目分配3.bib到另一个类别中?

基本上,我试图自动将这三个文件分成 4 个类别。

答案1

99% 的你想做的事情都可以在这个问题。使用该答案末尾的源映射技术将合适的关键字添加到您的文件中。假设您有一个关键字“cata”(映射到您的文件1.bib和)2.bib,另一个关键字“catb”(自动映射到您的文件3.bib

那么,您唯一剩下的问题就是您想要将一些文件分配给一个类别,将一些文件分配给另一个类别。使用该文件,手动将字段分配keyword给“cata”,并允许biber添加自己的额外关键字catb

现在您有三个类别:

  • 两个文件中的条目的关键字仅设置为“cata”。

  • 两个文件中的条目关键字设置为“catb”。

  • 其中一个文件中的某些条目的关键字同时设置为“cata”(手动)和“catb”(自动)。

现在,您要做的就是keyword=cata在第一个参考书目中筛选,keyword=catb, notkeyword=cata在第二个参考书目中筛选。第一个会挑选自动编码的文件和手动添加的文件,第二个会挑选所有自动编码的文件,但会排除您手动分配给第一个类别的文件。

唯一的技巧是您需要在手动分配的关键字后面加上逗号。

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{test1.bib}
  @book{book1,
    author = "Anonymous, Author",
    title  = "First Bibliography: Category 1",
    date   = {2000},
  }
\end{filecontents}
\begin{filecontents}{test2.bib}
  @book{book2,
    author = "Writer, William",
    title = "Second Bibliography: Category 2",
    date = {2010},
  }
\end{filecontents}
\begin{filecontents}{test3.bib}
  @book{book3,
    author = "Scribbler, Steven",
    title  = "First Bibliography Again: Category A and B",
    date = {1899},
    keywords = {cata,},
  }
  @book{book4,
    author = "Poetaster, Peter",
    title = "Second Bibliography Again: Category B",
    date = {1767},
  }
\end{filecontents}
\usepackage{biblatex}

\DeclareSourcemap{
  \maps[datatype=bibtex,overwrite] {
    \map{
      \perdatasource{test1.bib}
      \step[fieldset=KEYWORDS, fieldvalue=cata, append]
    }
    \map{
      \perdatasource{test2.bib}
      \step[fieldset=KEYWORDS, fieldvalue=catb, append]
    }
    \map{
      \perdatasource{test3.bib}
      \step[fieldset=KEYWORDS, fieldvalue=catb, append]
    }
  }
}

\addbibresource{test1.bib}
\addbibresource{test2.bib}
\addbibresource{test3.bib}

\begin{document}

\nocite{*}

\printbibliography[keyword=cata]

\printbibliography[keyword=catb, notkeyword=cata]

\end{document}

输出的屏幕截图

相关内容