[Tex/LaTex] How to place a full citation in the abstract using BibTeX

bibtexciting

This question is similar to this one but not exactly the same.

I would like to include a reference in the abstract of a paper. This reference should be the full reference, not a key, and it should not interfere with the rest of the citations I make. The journal wants the references to be ordered numerically, and if I use bibentry the citation in the abstract gets [1] and so the first one in the paper is [2]

any ideas how I could accomplish this?

Best Answer

Guess what, it is actually possible to do it!

The key is to define a new command, I called it \nobibentry, which will fetch the bibliography information of, say, important-paper to include in the abstract but will not add that entry to the bibliography so it won't get numbered just yet. In particular this means that entries won't be added until you issue the first \cite (which will appropriately get reference number [1]) and, for the whole thing to work, you should also add a citation to the important-paper somewhere in the body of the document.

An example is probably the best way to explain it:

\documentclass{article}
\usepackage[numbers]{natbib}
\usepackage{bibentry}

\newcommand{\ignore}[1]{}
\newcommand{\nobibentry}[1]{{\let\nocite\ignore\bibentry{#1}}}
% apsrev entries in the text need definitions of these commands
\newcommand{\bibfnamefont}[1]{#1}
\newcommand{\bibnamefont}[1]{#1}

\begin{document}
\nobibliography*

In my abstract I want to talk about \nobibentry{important-paper}.

In the body of the text there is \cite{first-paper}, and also I talk
about \cite{another-paper}, but I should also not forget to cite
somewhere the \cite{important-paper}.

\bibliographystyle{apsrev}
\bibliography{your-bib-file}

\end{document}

And a short explanation. The \bibentry command (looking at the source in bibentry.sty) does essentially two things: (1) calls \nocite to introduce an entry into the list of references and (2) fetches the information from the list of references to typeset that information into the text. The problem is that calling \nocite at this point will also assign a reference number to this entry, and we don't want to do that just yet.

The \nobibentry uses \let to temporarily replace \nocite with a dummy \ignore command that simply discards its argument and does nothing, and then calls \bibentry to do the rest of the work. The extra pair of { .. } in the definition of \nobibentry make sure that the redefinition of \nocite is only local to this small piece of code.

Related Question