5

I actually have the exact opposite of this problem here.

When one entry (@inproceedings) crossref-erences a proceeding, all is fine. Only the @inproceedings entry is in the list of references, and it inherits all the details of the proceedings.

However, when more than one entry (@inproceedings) crossref-erence the same proceeding, then both entries PLUS the proceedings are in the list of references, the two @inproceedings contain a reference to the proceedings, which is not what I want. I would like each @inproceedings to print the details of the proceedings (editor, year, etc.).

Here is the bib file my.bib:

@inproceedings{inproc1,
title = {Paper 1},
author = {Authors of Paper 1},
pages = {40--46},
crossref = {Proc},
}
@inproceedings{inproc2,
author = {Paper 2},
title = {Authors of Paper 2},
pages = {47--52},
crossref = {Proc},
}
@proceedings{Proc,
editor = {Editor Name},
title = {Proceedings title},
booktitle = {Proceedings title},
year = {2015},
}

And here is the basic latex file loading this bibliography:

\documentclass{article}

\begin{document}

\cite{inproc1,inproc2}

\bibliographystyle{plain}
\bibliography{my.bib}

\end{document}

And here is the output I get.

enter image description here

What I would like, however, is to delete the second reference (the proceedings), which I never reference, and print its details (the editors, year, etc.) within the first and third entries.

Is there anything that can be done from within the bib file to fix this?!

5

Basically, the behavior you have observed is by design and the actual purpose of splitting @inproceedings and @proceedings entries: If you cite a paper (@inproceedings entry), BibTeX will either import the missing information from the crossref'ed @proceedings entry into the paper's entry inside the bibliography or, if more than two papers from the same proceedings are cited, save some space by putting the @proceedings entry itself into the bibliography and refer from the paper's entries to them.

Recommended solution

The threshold of two is just the default: It is configurable on the bibtex command line with the -min-crossrefs=NUMBER option. So if you change your bibtex command line to

bibtex -min-crossrefs=99 mytex.aux

all @inproceedings entries will be expanded inside the bibliography.

Solution within the bib file

However, as you have asked for an option to change this within the bib file itself: This is possible by not using @crossref, but writing the relevant information from the @proceedings entry directly into each @inproceedings entry:

@inproceedings{inproc1,
title = {Paper 1},
author = {Authors of Paper 1},
pages = {40--46},
editor = {Editor Name},
booktitle = {Proceedings title},
year = {2015},
}
@inproceedings{inproc2,
author = {Paper 2},
title = {Authors of Paper 2},
pages = {47--52},
editor = {Editor Name},
booktitle = {Proceedings title},
year = {2015},
}
@proceedings{Proc,
editor = {Editor Name},
title = {Proceedings title},
booktitle = {Proceedings title},
year = {2015},
}

However, I recommend to not change your master bib file in this way – the way back is much more work! Instead, use some tool like bib2bib to create a flattened variant of your bib file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.