There are several ways to have separate bibliographies by type of items cited.
I'll describe here some of them, namely:
BibTeX
There are several, more or less complicated solutions to separate
bibliographies by type with bibtex
, but that's not "automagicly" at all...
Using splitbib
You can do that with the splitbib
package, you have to define a bibliographic category and manually add the
corresponding itens to it, something like this:
\begin{category}[A]{First category}
\SBentries{entry1,entry4}
\end{category}
Here's a MWE:
\documentclass{article}
\usepackage{splitbib}
\begin{category}[A]{First category}
\SBentries{article-minimal,article-full}
\end{category}
\begin{category}[B]{Second category}
\SBentries{book-minimal,book-full}
\end{category}
\begin{document}
\cite{article-minimal,article-full,book-minimal,book-full}
\bibliography{xampl.bib}
\bibliographystyle{plain}
\end{document}

Check splitbib documentation for more details.
Using bibtopic
As with splitbib
, bibtopic
aims at other
possible usages besides separate bibliographies by type.
Since it requires separate databases for each bibliography section, it is more
indicated when you already them as such (i.e., separate .bib
files for each
kind of item).
The usage is basically, e.g.:
\begin{btSect}{books}
\section{References from books}
\btPrintCited % for cited references
\btPrintNotCited % for references not cited
\end{btSect}
Here's a MWE:
\documentclass{article}
\usepackage{bibtopic}
\begin{filecontents}{books.bib}
@BOOK{book-minimal,
author = {Donald E. Knuth},
title = {Seminumerical Algorithms},
publisher = {Addison-Wesley},
year = {1981},
}
@BOOK{book-full,
author = {Donald E. Knuth},
title = {Seminumerical Algorithms},
volume = 2,
series = {The Art of Computer Programming},
publisher = {Addison-Wesley},
address = {Reading, Massachusetts},
edition = {Second},
month = {10~} # jan,
year = {1981},
}
\end{filecontents}
\begin{filecontents}{articles.bib}
@ARTICLE{article-minimal,
author = {L[eslie] A. Aamport},
title = {The Gnats and Gnus Document Preparation System},
journal = {\mbox{G-Animal's} Journal},
year = 1986,
}
@ARTICLE{article-full,
author = {L[eslie] A. Aamport},
title = {The Gnats and Gnus Document Preparation System},
journal = {\mbox{G-Animal's} Journal},
year = 1986,
volume = 41,
number = 7,
pages = {73+},
month = jul,
note = {This is a full ARTICLE entry},
}
@ARTICLE{article-notcited,
author = {L[eslie] A. Aamport},
title = {The Gnus and Gnats Document Preparation System},
pages = "73+",
journal = {\mbox{G-Animal's} Journal},
year = 1987,
volume = 42,
number = 8,
month = jul,
}
\end{filecontents}
\begin{document}
\bibliographystyle{alpha}
\section{Testing}
Let’s cite all the books: \cite{book-minimal,book-full}; and articles:
\cite{article-minimal,article-full}.
\begin{btSect}{books}
\section{References from books}
\btPrintCited
\end{btSect}
\begin{btSect}[plain]{articles}
\section{References from articles}
\btPrintCited
\section{Articles not cited}
\btPrintNotCited
\end{btSect}
\end{document}

Notice that bibtopic
requires a bibtex
pass for each section, so you should
compile it with
latex <file>
bibtex <file>1
bibtex <file>2
...
bibtex <file>n
latex <file>
latex <file>
Check bibtopic
documentation for more details.
Using multibib
As with splitbib
, and bibtopic
, multibib
aims at other possible usages besides separate bibliographies by type.
It does not require separate databases, but it creates a special citation
command for each type of item you define in the preamble.
The basic usage is to create a new citation type in the preamble with:
\newcites{mytype}{A Header for your special bibliographic type(s)}
And then cite the entries that should be considered in the new type with a
\cite<newcites-arg>
command, e.g. \citemytype
.
Here's a MWE:
\documentclass{article}
\usepackage{multibib}
\newcites{book}{Books}
\begin{document}
\citebook{book-full,book-minimal}
\cite{article-minimal,article-full}
\bibliographystylebook{alpha}
\bibliographybook{xampl}
\renewcommand{\refname}{Other References}
\bibliographystyle{plain}
\bibliography{xampl}
\end{document}

Notice that (as with bibtopic
) it requires special bibtex
passes:
latex <file>
bibtex <file>
bibtex <mytype>
latex <file>
latex <file>
Check multibib
documentation for more details.
Using biblatex
You can do this quite "automagicly" with the biblatex
package! The usage is as simple as:
\printbibliography[type=book]
\printbibliography[type=collection]
\printbibliography[type=thesis]
or by adding a keywords
field to your bib entry, and splitting it the bibliography with
\printbibliography[keyword=keyword1]
\printbibliography[keyword=keyword2]
or by creating categories like with the splitbib
package, with something like
\DeclareBibliographyCategory{<category>}
\addtocategory{<category>}{<key>}
Here's a MWE using the first mentioned option:
\documentclass{article}
\usepackage[style=numeric]{biblatex}
\addbibresource{xampl.bib}
\begin{document}
\cite{article-minimal,article-full,book-minimal,book-full}
\printbibliography[type=article,title={Articles}]
\printbibliography[type=book,title={Books}]
\end{document}

Check biblatex documentation for more information.
To move to biblatex, I suggest you read the following questions: