10

In a beamer presentation I want to use the \nocite{*} macro, so all entries in the bib file will be included, regardless whether I actually cited an entry or not. However, this yields a rather long list of references, since each entry yields many details.

What is the easiest way to generate a compact list of references. In particular, each entry should contain: Title, author(s) (probably at most 2), year.

It sounds like an easy task, but I couldn't find the right solution.

Edit:

  1. There is no particular reason for me not to use biblatex. It is an option.
  2. Mostly, in the presentation's body there will be no citations. In case few would appear I'd like them to be formated with a number. Like: On Foo Bar, see [1]. Nevertheless, the list of reference will be long as I will use the \notice{*} macro.
  3. In the list itself, I'd like to have: Title, authors (at most 2, otherwise with "et al"), year.
  • 2
    Imho a list of reference in a presentation is quite senseless. Also whatever you do it will waste a lot of space. Do you really want to do it? Why don't you create separate bibliography in a normal size that people can print out in a sensible way? – Ulrike Fischer Apr 3 '14 at 9:32
  • There is not one option that means "make it compact", but you have to use several options for omitting various kinds of info or extra names. Please tell us what options (in section 3.1) you already use! – pst Apr 3 '14 at 9:34
  • 1
    @UlrikeFischer: I think of bibliography list in the case of presentations as an appendix. It is there as a supplementary material that is mostly important when it is put online. – Dror Apr 3 '14 at 9:43
  • @pst: With biblatex I tried the following package options: style=numeric,isbn=false,url=false,doi=false,eprint=false – Dror Apr 3 '14 at 9:43
  • I think you will have to provide more information on what you would like to see in the bibliography. Add a detailed description of what you would like to achieve and maybe an example. – moewe Apr 8 '14 at 7:35
10
+100

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.

MWE

\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}

enter image description here

  • Of course you could also use firstinits=true to make the names even shorter. – moewe Apr 8 '14 at 11:26
  • We could further shorten the entries in some cases by using \printtext[title]{\printfield[titlecase]{title}} instead of \usebibmacro{title} that will also print the subtitle and titleaddon fields (of course, we could also use an \AtEverybibitem{\clearfield{subtitle}\clearfield{titleaddon}} approach). Also replacing \usebibmacro{date} with \printfield{year} suppresses day and month if available (again a \AtEverybibitem{\clearfield{day}\clearfield{month}} does not seem unreasonable here). – moewe Apr 8 '14 at 14:21
  • Is there a way to replace the (useless) symbol with the key generated by biblatex (that is the one that is typesetted as the output of cite{F00} in the body)? – Dror Apr 9 '14 at 17:03
  • @Dror Certainly, \setbeamertemplate{bibliography item}[text] should do that. See Beamer-Template/-Color/-Font bibliography item, p. 102 of the beamer user guide. The usual caveats with presentations and bibliographies are mentioned there as well: The audience will probably not be able to remember the labels. – moewe Apr 10 '14 at 7:26
  • 1
    @Dror You have to keep in mind that authoryear labels might get quite long (even in our case at hand a label might easily take up 1/4 of the slide width [take "Baez and Lauda 2004", I dread to think what "Westfahl and Westfahl 2012" would look like]), it seems unreasonable to expect an output similar to numeric or alphabetic where the labels are much shorter: there would be not enough space for the rest of the entry (that would contain redundant information now) and the whole thing will end up looking ridiculous. – moewe Apr 10 '14 at 16:27
7

In the following, I use biblatex to:

  • Restrict the number of author names to two by passing the maxnames=2, minnames=2 options to the biblatex 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:

enter image description here

If you want to get rid of even more data, just uncomment the additional lines in the \AtEveryBibitem handler:

enter image description here

  • Further space reduction is possible by changing the font, the layout of the bibliography (for instance the indentation of the entries) and so on. However, I don't know if that is an option for you. – Daniel Apr 8 '14 at 10:25
  • Is there a specific reason for using bibtex as the backend? – Dror Apr 8 '14 at 13:15
  • Do you know why sometimes it is In: 2011 and sometimes In: (1969)? – Dror Apr 8 '14 at 13:41
  • @Dror This is due to the fact that @articles have the date wrapped in parentheses, while @inbooks/@incollection and the like get the date printed without parentheses. (Have a look at the normal output of style=numeric without the modifications) The "In:" stems from using the standard drivers that will print \usebibmacro{in:}. You could suppress it via \renewbibmacro{in:}{}. – moewe Apr 8 '14 at 13:52
  • 1
    @ChrisH: This is a question of the chosen bibliography style, but sure: Just add \renewbibmacro{in:}{} to your preamble and it will disappear. – Daniel Apr 14 '14 at 20:56
4

For shortening bibliographies I recommend to generate a new bib file, where you specify only the fields you really need. (Leaving out middle names, employ common conference and journal abbreviations, etc.) As you see in the answer from Daniel, it is not easy to filter them out afterwards, and you will probably miss one or two. Keep in mind, that some bibitems e.g. @article need some journal title and will print extra symbols like: In:. For that, Moewe greatly smashes all bibitems to some std type, very elegantly!

So now to my contribution: Ahh there is none, just searched this site for some time.

  • Basically, there is much space wasted from item symbols to item text (horizontally). You may reduce this with: \setlength{\biblabelsep}{-0.5cm}.
  • Additionally, biblatex offers you the possibility to use for the firstnames initials as well: firstinits=true.
  • the original symbol here, consumes a lot of space as well, change it to some smaller: \setbeamertemplate{bibliography item}[triangle]
  • The rest comes from another great answer Reduce spacing in bibliography using biblatex, which I would consider a bit of a possible duplicate, however, your question is beamer related, so, the begingroup and endgroup stuff reduces vertical space once more:
  • last but not least sometimes the microtype package might safe some space as well (this is one of the package I regular include)
\documentclass[compress]{beamer}
\usepackage{setspace}
\usepackage{microtype}
\usepackage{lmodern}
\usepackage[style=numeric-comp,firstinits=true,maxcitenames=2,maxbibnames=2]{biblatex}
% % Do this to reduce size
% \renewcommand*{\bibfont}{\footnotesize}
\addbibresource{biblatex-examples.bib}

\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}[t,allowframebreaks]{Bibliography}
  \nocite{*}
  \begingroup
  \setstretch{0.8}
  \linespread{0.9}
  \setbeamertemplate{bibliography item}[triangle]
  \setlength\bibitemsep{-0pt}
  \setlength{\biblabelsep}{-0.5cm}
  \printbibliography
  \endgroup
\end{frame}

\end{document}

enter image description here

in comparison to moewes answer: enter image description here

  • 1
    There is really no point in \clearing all those fields if one then uses the std driver as above, they will not be printed anyway. Note that \clearname{editor} can actually have an adverse effect as can be seen with the "Alternative Modernities" entry (bibkey: gaonkar in biblatex-examples.bib). Also note that the option to use first name initials is called firstinits=true and not firstinitials=true (your MWE uses the right code, your explanation doesn't though). – moewe Apr 8 '14 at 13:16
  • Thanks, I removed the \clear-stuff – math Apr 8 '14 at 13:59
  • What's the difference between your answer and @moewe's? – Dror Apr 14 '14 at 12:01
  • Its about spacing, hence mine is more compact. Look in the list I gave in my answer. As before you use spacing, unneccessary content should be removed, hence I used moewes approach for that. – math Apr 14 '14 at 12:16
  • I provided a direct visual comparison to moewes answer. – math Apr 14 '14 at 12:23
4

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:

enter image description here

  • This yields just as long output as plain... Actually, a bit longer as it includes the ISBN :( – Dror Apr 3 '14 at 9:56
  • What fields do you want to see? – user2478 Apr 8 '14 at 7:28
  • See my edit above – Dror Apr 8 '14 at 7:53
  • I edited my answer and updated the bst file – user2478 Apr 8 '14 at 9:51
  • Indeed better. One of the problems I had was that apparently the order of the keys in the entry matters! I did not know it. – Dror Apr 8 '14 at 10:06

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.