[Tex/LaTex] How to print a bibliography for a particular author only

biblatexsubdividing

Background: I have all bibliographic entries in one giant .bib file. In my CV, I'd like to have a section that lists all my articles and another section that lists all my conference presentations. My current approach is this: I tag my own entries with the keyword "own" and then use biblatex:

\printbibliography[type=article,keyword=own,heading="Articles"]
\printbibliography[type=inproceedings,keyword=own,heading="Conference Presentations"]

This approach has two drawbacks. First, I have to tag all my entries and it happened that I missed some. Second, I have to nocite all my entries, which is another great opportunity to make mistakes.

The first problem can be addressed using bib2bib, which allows me to extract my own articles from the big .bib file by specifying a filter for the author field. However, I was wondering if there is a simpler solution using only tools within LaTeX. \printbibliography already seems to have some filtering facility but from reading the manual I couldn't figure out how to filter entries based on the values of their fields.

Best Answer

You could use regexp to map a keyword = {own}, field to all entries with a given pattern in author field via \DelclareSourcemap, as shown in PLK's answer to biblatex: separating publications of a specific author in the bibliography (there's also an example in the documentation that adds a keyword to every entry with a given title, check §4.5.2.). Something like:

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

After this, you could use \printbibliography[keyword={own}] within a refsection environment in order to have all entries marked with your keyword (called via \nocite{*}) printed, like shown in Marco Daniel's answer to the same question:

\begin{refsection}
\nocite{*}
\printbibliography[keyword=own,title={These are my Works}]
\end{refsection}

Here's a MWE

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=author,
            match=Kant,
            final]
      \step[fieldset=keywords, fieldvalue=own]
    }
  }
}
\begin{document}
\null\vfill
\thispagestyle{empty}
Hi, I'm Kant.
\autocites{knuth:ct,knuth:ct:a,companion}
\begin{refsection}
\nocite{*}
\printbibliography[keyword=own,title={These are my Works}]
\end{refsection}
\printbibliography[notkeyword=own,title={These are awesome works by other people I like}]
\end{document}

mwe

* Edit: I have removed the \regexp from match=Kant inside the \DeclareSourceMap since it's not needed.

Related Question