biblatex:在参考书目中分离特定作者的出版物

biblatex:在参考书目中分离特定作者的出版物

我想要问的问题和这个问题的答案相关:biblatex:动态过滤参考文献中特定作者的出版物

我的目的是将我的书目分为两部分:一部分是个人书目,另一部分是常规书目。

为了做到这一点,我使用了我引用的帖子中的技术:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[style=alphabetic,maxnames=6,natbib=true]{biblatex}
\bibliography{biblatex-examples}

% Variants of each could be added
\newcommand{\firstname}{Donald~E.}
\newcommand{\lastname}{Knuth}

\DeclareBibliographyCategory{byname}

\DeclareIndexNameFormat{byname}{% Test could be refined
  \ifboolexpr{ test {\ifdefstring{\lastname}{#1}}
           and test {\ifdefstring{\firstname}{#3}}
              }
{\addtocategory{byname}{\thefield{entrykey}}}
{}}

\AtDataInput{%
  \indexnames[byname]{author}}

\begin{document}
 \section{Knuth's books}
 \begin{refsection}
 \nocite{*}
 \printbibliography[category=byname,heading=none]
 \end{refsection}
 \section{Not Knuth's books}
 \printbibliography[notcategory=byname,heading=none]
\end{document}

问题是只出现了第二个参考书目,当我删除 refsection 时,我的输入文件的所有 bibtex 条目都会被打印出来,并按应有的方式分开。

编辑:目的是将作者 knuth 的所有出版物(甚至未引用的出版物)放在第一部分,将所有其他引用的出版物放在第二部分。

答案1

如果您想使用 biber 执行此操作,我建议使用该sourcemap功能,它比通过索引格式添加类别更简洁。这会改变输入流(而不改变 .bib 文件),以便将关键字“knuth”添加到所有与“Knuth”匹配的作品中作为作者,然后您可以对其进行过滤:

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=author,
            match=Knuth,
            final]
      \step[fieldset=keywords, fieldvalue=knuth]
    }
  }
}

\printbibliography[keyword=knuth]
\printbibliography[notkeyword=knuth]

答案2

这是对您的示例的一个小修改。该示例仅适用于backend=biber

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[style=alphabetic,maxnames=6,natbib=true,backend=biber]{biblatex}
%\bibliography{biblatex-examples}
\addbibresource{biblatex-examples.bib}


\DeclareBibliographyCategory{byname}
\newcommand*{\mknamesignature}[5]{\def#1{#2|||}}
\mknamesignature{\highlightname}{Knuth}{}{}{}

\DeclareIndexNameFormat{byname}%
 {%
  \mknamesignature{\currentsignature}{#1}{#3}{#5}{#7}%
  \ifdefequal{\highlightname}{\currentsignature}%
    {\addtocategory{byname}{\thefield{entrykey}}}%
    {}%
}

\AtDataInput{%
  \indexnames[byname]{author}}

\begin{document}
 \section{Knuth's books}
 \begin{refsection}
 \nocite{*}
 \printbibliography[category=byname,heading=none]
 \end{refsection}

 \section{Not Knuth's books}
 \nocite{*}
 \printbibliography[notcategory=byname,heading=none]
\end{document}

在此处输入图片描述

相关内容