What is the easiest way to generate a compact bibliography?
Another biblatex
solution.
As basis we take biblatex
's numeric
with maxnames=2
\usepackage[style=numeric,maxnames=2]{biblatex}
We define our short bibliography driver std
that prints only the author/editor, title and date
\DeclareBibliographyDriver{std}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit\newblock
\usebibmacro{date}%
\newunit\newblock
\usebibmacro{finentry}}
We then map all the entries to use this driver (I really hoped, there would be a shorter, more elegant way to do this, but I have yet to find it)
\DeclareBibliographyAlias{article}{std}
\DeclareBibliographyAlias{book}{std}
\DeclareBibliographyAlias{booklet}{std}
\DeclareBibliographyAlias{collection}{std}
\DeclareBibliographyAlias{inbook}{std}
\DeclareBibliographyAlias{incollection}{std}
\DeclareBibliographyAlias{inproceedings}{std}
\DeclareBibliographyAlias{manual}{std}
\DeclareBibliographyAlias{misc}{std}
\DeclareBibliographyAlias{online}{std}
\DeclareBibliographyAlias{patent}{std}
\DeclareBibliographyAlias{periodical}{std}
\DeclareBibliographyAlias{proceedings}{std}
\DeclareBibliographyAlias{report}{std}
\DeclareBibliographyAlias{thesis}{std}
\DeclareBibliographyAlias{unpublished}{std}
\DeclareBibliographyAlias{*}{std}
To get the citation label instead of the "cute little icon", we can use
\setbeamertemplate{bibliography item}[text]
See Beamer-Template/-Color/-Font bibliography item
, p. 102 of the beamer
user guide.
\documentclass{beamer}
\usepackage[style=numeric,maxnames=2]{biblatex}
\addbibresource{biblatex-examples.bib}
\setbeamertemplate{bibliography item}[text]
\DeclareBibliographyAlias{article}{std}
\DeclareBibliographyAlias{book}{std}
\DeclareBibliographyAlias{booklet}{std}
\DeclareBibliographyAlias{collection}{std}
\DeclareBibliographyAlias{inbook}{std}
\DeclareBibliographyAlias{incollection}{std}
\DeclareBibliographyAlias{inproceedings}{std}
\DeclareBibliographyAlias{manual}{std}
\DeclareBibliographyAlias{misc}{std}
\DeclareBibliographyAlias{online}{std}
\DeclareBibliographyAlias{patent}{std}
\DeclareBibliographyAlias{periodical}{std}
\DeclareBibliographyAlias{proceedings}{std}
\DeclareBibliographyAlias{report}{std}
\DeclareBibliographyAlias{thesis}{std}
\DeclareBibliographyAlias{unpublished}{std}
\DeclareBibliographyAlias{*}{std}
\DeclareBibliographyDriver{std}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{title}%
\newunit\newblock
\usebibmacro{date}%
\newunit\newblock
\usebibmacro{finentry}}
\begin{document}
\begin{frame}
\cite{wilde,baez/article,cicero,aksin,westfahl:space,westfahl:frontier,gaonkar,britannica}
\end{frame}
\begin{frame}
\printbibliography
\end{frame}
\end{document}
In the following, I use biblatex
to:
- Restrict the number of author names to two by passing the
maxnames=2, minnames=2
options to thebiblatex
package. - Tailor the content of the bibliography via the
\AtEveryitem
hook. Inside this hook, I use\clearfield/name/list{<element>}
to exclude certain fields from being printed.
For many fields the latter is also possible by global biblatex
options, such as doi=false
. However, this does not work for all fields. For me, the hooks makes it also more easy to "play" with different settings by just commenting in/out the respective \clearfield
lines.
\documentclass{beamer}
\usepackage{filecontents}
\usepackage[backend=bibtex,style=numeric,maxnames=2, minnames=2]{biblatex}
\addbibresource{beamer.bib}
\usepackage[utf8]{inputenc}
\begin{filecontents}{beamer.bib}
@article{hoare:69:cacm,
author = {Hoare, C. A. R.},
title = {An axiomatic basis for computer programming},
journal = {Communications of the ACM},
volume = 12,
number = 10,
month = oct,
year = 1969,
issn = {0001-0782},
pages = {576--580},
doi = {10.1145/363235.363259},
publisher = {ACM Press},
address = {New York, NY, USA},
}
@article{dijkstra:68:cacm,
author = {Edsger Wybe Dijkstra},
title = {The Structure of the {THE}-Multiprogramming System},
journal = {Communications of the ACM},
year = {1968},
month = may,
volume = 11,
number = 5,
pages = {341--346},
}
@article{graham:68:cacm,
author = {Robert M. Graham},
title = {Protection in an Information Processing Utility},
journal = {Communications of the ACM},
volume = {11},
number = {5},
month = may,
year = {1968},
issn = {0001-0782},
pages = {365--369},
doi = {10.1145/363095.363146},
publisher = {ACM Press},
address = {New York, NY, USA},
}
@inproceedings{henkel:11:codesisss,
title = {Design and Architectures for Dependable Embedded Systems},
author = { Henkel,J{\"o}rg and Bauer,Lars and Becker,Joachim and Bringmann,Oliver and Brinkschulte,Uwe and Chakraborty,Samarjit and Engel,Michael and Ernst,Rolf and H{\"a}rtig,Hermann and Hedrich,Lars and Herkersdorf,Andreas and R{\"u}diger Kapitza and Daniel Lohmann and Marwedel,Peter and Platzner,Marco and Rosenstiel,Wolfgang and Schlichtmann,Ulf and Spinczyk,Olaf and Tahoori,Mehdi and J{\"u}rgen Teich and Wehn,Norbert and Wunderlich,Hans-Joachim},
keywords = {embedded systems, dependable systems, danceos},
doi = {10.1145/2039370.2039384},
pages = {69--78},
editor = {Robert P. Dick and Jan Madsen},
isbn = {978-1-4503-0715-4},
venue = {Taipei, Taiwan},
booktitle = {Proceedings of the 9th IEEE/ACM International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS '11)},
year = {2011},
month = oct,
publisher = {ACM Press},
}
\end{filecontents}
% Content Tailoring
%
% tailor content of bibliography
\AtEveryBibitem{
\clearfield{month}
\clearfield{series}
\clearfield{venue}
\clearname{editor}
\clearlist{publisher}
\clearlist{location} % alias to field 'address'
\clearfield{doi}
\clearfield{url}
\clearfield{venue}
\clearfield{issn}
\clearfield{isbn}
\clearfield{urldate}
\clearfield{eventdate}
%\clearfield{pages}
%\clearfield{booktitle}
%\clearfield{journaltitle}
%\clearfield{number}
%\clearfield{volume}
}
\begin{document}
\nocite{*}
\begin{frame}[allowframebreaks]
\printbibliography
\end{frame}
\end{document}
The result looks as follows:
If you want to get rid of even more data, just uncomment the additional lines in the \AtEveryBibitem
handler:
With this style file: http://comedy.dante.de/~herbert/Bibliography/plain-short.bst
and
\documentclass{article}
\begin{document}
\nocite{*}
\bibliographystyle{plain-short}
\bibliography{ref-antibiotics}
\end{document}
you'll get: