Biblatex-分别计算来自不同书目的引用数

Biblatex-分别计算来自不同书目的引用数

我有三个单独的参考书目文件,如下所示:

\newtotcounter{no_journals}
\newtotcounter{no_conferences}
\newtotcounter{no_thesis}

\AtEveryBibitem{\stepcounter{no_journals}}

\defbibheading{journals}{International Journals}
\defbibheading{conferences}{International Conferences}
\defbibheading{thesis}{Thesis Conducted}

\addbibresource[label=journals]{journals}
\addbibresource[label=conferences]{conferences}
\addbibresource[label=thesis]{pfc}

我想计算每个条目的总引用数。同一个 .bib 文件中的每个条目都有相同的键;也就是说,“journals.bib”文件的每个条目都有:

keywords={journals}

在我的参考书目中,我为每个参考书目都设立了单独的小节:

\subsection*{International Journals}\label{sec:journals}

    \AtNextBibliography

    \begin{refsection}[journals.bib]
    \nocite{*}
    \begin{refcontext}
    \printbibliography
    \end{refcontext}
    \end{refsection}

    \begin{itemize}
        \item Number of International Journals: \total{no_journals}\
    \end{itemize}

如何使用 \ateverybibitem 分别计算期刊、会议和论文的数量?

答案1

keywords由于您在文件中使用它们,.bib因此您可以使用它们来检查要执行哪个计数器

\AtEveryBibitem{%
  \ifkeyword{journals}{\stepcounter{no_journals}}{}%
  \ifkeyword{conferences}{\stepcounter{no_conferences}}{}%
  \ifkeyword{thesis}{\stepcounter{no_thesis}}{}%
}

但您也可以按条目类型进行筛选。如果所有期刊投稿都是@article,所有会议@inproceedings等,您可以选择

\AtEveryBibitem{%
  \ifentrytype{article}{\stepcounter{no_journals}}{}%
  \ifentrytype{inproceedings}{\stepcounter{no_conferences}}{}%
  \ifentrytype{thesis}{\stepcounter{no_thesis}}{}%
}

.bib这两种方法都不需要您在单独的文件中包含不同类型的贡献。就我所知,对于您发布的代码,label=...的参数\addbibresource也未使用。 的参数\begin{refcontext}...\end{refcontext}也未使用(它可用于更改排序,但在您发布的代码片段中不进行任何排序。)通过关键字或类型进行适当的过滤,\printbibliography您甚至不需要\begin{refsection}...\end{refsection}

相关内容