选择性警告

选择性警告

我想创建一个参考书目,从一个大型 bib 文件中选择包含特定作者并在特定年份出版的所有项目。

到目前为止,我只看到带有 * 的 nocite 命令,它是所有内容或手动指定单个项目,但没有看到任何具有更通用规则的示例。

printbibliography 似乎遵循了一些规则,但初步测试表明,项目不会按顺序编号,因为它是从完整列表中选择的。

我可以在某些 GUI 工具(例如 Zotero)中导入 bib 文件,在那里选择我想要的项目并将其再次导出为新文件,但我希望有一个保留在 TeX 领域中的解决方案,例如可以扩展为自动选择不同的年份、作者等。

答案1

以下是使用 Biblatex 和“源映射”的解决方案,它忽略了我们不感兴趣的条目:

\begin{filecontents}{\jobname.bib}
@book{one,
  author={Someone Else},
  year={2014},
  title={Uninteresting book},
}
@book{two,
  author={This Author},
  year={1999},
  title={Book that's too early},
}
@book{three,
  author={Author, This},
  year={2014},
  title={An interesting book},
}
@book{four,
  author={This Author},
  year={2014},
  title={Another interesting book},
}
@book{five,
  author={Someone Else and This Author},
  year={2014},
  title={Joint effort},
}
\end{filecontents}
\documentclass{article}

\usepackage{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
  \maps{
    \map{
      % Remove those not by chosen author
      \step[fieldsource=author,
            notmatch=\regexp{Author,\s+This|This\s+Author},
            final]
      \step[entrynull]
    }
    \map{
      % Remove those not from chosen year
      \step[fieldsource=year,
            notmatch={2014},
            final]
      \step[entrynull]
    }
  }
}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

您必须编写一个与作者姓名匹配的正则表达式。这只会查看该author字段。您可能希望对editor字段和其他内容使用额外的规则。

答案2

bib2bib 就是我所寻找的。(相反,bibtex2html 包中直观地包含了它)

相关内容