[Tex/LaTex] How to omit one specific citation in \printbibliography, with BibLaTeX

biberbiblatexbibliographies

In my PhD thesis, if the chapter is already published I need to state that "This chapter has been published as:……".

It's quite convenient to do it with \fullcite{} command. But then the problem is this \fullcite{} also end up in the per-chapter bibliography, which doesn't make sense for the reader.

Is there a way to specify that one citation should not be in the bibliography? (Like the opposite of \nocite)

MWE (my real .bib file is my whole library):

    \documentclass{book}
    \usepackage[style=authoryear-comp]{biblatex}
    \addbibresource{\jobname.bib}
    \usepackage{filecontents}

    \begin{filecontents}{\jobname.bib}
    @book{key1,
      author = {Myself, Me.},
      year = {2001},
      title = {Title1},
      publisher = {Publisher1},
    }
    @book{key2,
        author = {Author, B.},
        year = {2002},
        title = {Title2},
        publisher = {Publisher2},
    }
    \end{filecontents}

    \begin{document}
    \chapter{A}
    This chapter has been published as :\\ 
    %(This \fullcite should not be in the reference list)
    \fullcite{key1}

    \section{section1}
    In text cite: \cite{key2}
    \printbibliography[segment=\therefsegment,heading=subbibliography]

    \end{document}

Best Answer

This is another approach, which creates a command \DontIncludeNextCite with a self explanatory name and which will not affect other potential citations of the same bibentry. That is, this excludes the particular citation from the bibliography, but not the bibentry if it is cited elsewhere. It also allows you to work with refsegments (or refsections if adapted). Furthermore, it can be used with any cite command, not just \fullcite.

\documentclass{book}

\usepackage{filecontents}
\usepackage[style=authoryear-comp,refsegment=chapter]{biblatex}
\usepackage{etoolbox}

\newtoggle{includeentry}
\toggletrue{includeentry}

\DeclareBibliographyCategory{entriesinbib1,entriesinbib2,entriesinbib3} % you need as many as the number of refsegments in your document

\AtEveryCitekey{%
    \iftoggle{includeentry}{%
        \addtocategory{entriesinbib\therefsegment}{\thefield{entrykey}}}%
        {}%
    }

\newcommand{\DontIncludeNextCite}{\AtNextCite{\togglefalse{includeentry}}}

\begin{filecontents}{\jobname.bib}
@book{key1,
  author = {Myself, Me.},
  year = {2001},
  title = {Title1},
  publisher = {Publisher1},
}
@book{key2,
    author = {Author, B.},
    year = {2002},
    title = {Title2},
    publisher = {Publisher2},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\chapter{A}

This chapter has been published as: \DontIncludeNextCite\fullcite{key1}. % This cite will not include key1 in the bibliography 

In text cite \parencite{key2}.

Another cite \parencite{key1}. % But this one will

\printbibliography[category=entriesinbib1,heading=subbibliography]

\chapter{B}

Now, in a second refsegment.

This chapter has been published as :\\ 
\DontIncludeNextCite\fullcite{key1}. % This cite will not include key1 in the bibliography 

In text cite \parencite{key2}.

\printbibliography[category=entriesinbib2,heading=subbibliography]

\chapter{C}

Now, in a third refsegment.

This chapter has been published as :\\ 
\DontIncludeNextCite\fullcite{key1}. % This cite will not include key1 in the bibliography 

In text cite \parencite{key2}.

Another cite \parencite{key1}. % But this one will

\printbibliography[category=entriesinbib3,heading=subbibliography]

\end{document}