BibLaTeX:生成 .bib 文件中的参考类型,以自动生成参考书目标题

BibLaTeX:生成 .bib 文件中的参考类型,以自动生成参考书目标题

我可以用我了解的编程语言(或者只是终端,我想)为此编写一个简单的程序,但是在 LaTeX 中有没有一种简单的方法可以做到这一点?

也许这可以在 LuaLaTeX 中完成?获取引用类型的正则表达式只是@.*\{(至少在 Sublime Text 中)。

我有和这样的条目@online@article但我不知道哪些有,哪些没有,而且我的参考书目文件非常大。我想制作一个按类型排序的参考列表,但为了做到这一点,我需要先知道我有哪些文章类型!

我找到了一种在 Sublime 中执行此操作的方法(在 Sublime 中复制/粘贴 bib 文件 --> 使用正则表达式全选@.*\{--> alt + enter --> 转到编辑 --> 排列行 --> 唯一),但我仍然保留这个问题以获得 (Lua)LaTeX 风格的答案。

现在我可以按照说明进行操作按参考文献类型划分参考书目

我现在必须输入:

\printbibliography[type=article,title={Articles}]
\printbibliography[type=inproceedings,title={Conference papers}]
\printbibliography[type=book,title={Books}]
\printbibliography[type=inbook,title={Book Chapters}]
\printbibliography[type=incollection,title={Chapters in a Collection}]
\printbibliography[type=MastersThesis,title={Master Theses}]
\printbibliography[type=techreport,title={Tech Reports}]
\printbibliography[type=misc,title={Misc}]

这很好,但我仍然想知道如何才能更自动化地做到这一点。

答案1

这实现了你最初要求的功能。它生成一个条目类型列表,用于

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

\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\newcommand*{\usedbiblatextypes}{}
\AtDataInput{%
  \xifinlist{\thefield{entrytype}}{\usedbiblatextypes}
    {}
    {\listxadd{\usedbiblatextypes}{\thefield{entrytype}}}}

\newcommand*{\printallentrytypes}{%
  \ifdefvoid{\usedbiblatextypes}
    {}
    {You used the following entry types:
     \begin{itemize}
     \forlistloop{\item}{\usedbiblatextypes}%
     \end{itemize}}}

\begin{document}
\cite{sigfridsson,worman,geer}
\printbibliography

\printallentrytypes
\end{document}

在此处输入图片描述

答案2

我建议你采用比最初想象的更简单的方法。我知道你想把你的参考书目分成不同的条目类型,但正在寻找一种安全的方法来“不遗漏任何东西”。

下面提供了一种简单的方法来检查您是否遗漏了某些内容。本质上,您可以创建一个类别alreadyinbib并添加一个AtEverybibitem钩子以将任何引用的条目添加到该类别。这样,您就可以使用 捕获任何剩余的条目\printbibliography[notcategory=alreadyinbib]。如果其中有任何条目,请找到它们的条目类型,将它们添加到您的列表中,直到alreadyinbib参考书目结果为空。

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[style=authoryear]{biblatex}

\addbibresource{biblatex-examples.bib}

\DeclareBibliographyCategory{alreadyinbib}

\AtEveryBibitem{%
  \addtocategory{alreadyinbib}{\thefield{entrykey}}%
}

\begin{document}

\nocite{*}

\printbibliography[type=article,title={Articles}]
\printbibliography[type=inproceedings,title={Conference papers}]
\printbibliography[type=book,title={Books}]
\printbibliography[type=inbook,title={Book Chapters}]
\printbibliography[type=incollection,title={Chapters in a Collection}]
\printbibliography[type=MastersThesis,title={Master Theses}]
\printbibliography[type=techreport,title={Tech Reports}]
\printbibliography[type=misc,title={Misc}]
\printbibliography[notcategory=alreadyinbib,title={Missing Entrytypes}]

\end{document}

相关内容