LaTeX/Bibliographies with biblatex and biber
Learn how to create a bibliography using modern biblatex and biber - A short tutorial.
This will only be a short overview of the main and most often used features of biblatex and biber to create a bibliography. More detailed information can be found in the package documentation.
The database
[edit | edit source]Creating a bibliography using biblatex and biber means storing
all of your available bibliographic information in a simple
text-based database. The name should be as unique as possible,
for example lauraPhd2016.bib
. This is helpful when
transferring files with your advisor, students or colleagues.
biber is used to deal with the database.
A sample database file could look like this:
@article{wombat2016,
author = {Walther Wombat and Klaus Koala},
title = {The true meaning of 42},
journal = {Journal of modern skepticism},
date = {2016},
keywords = {trusted},
}
@book{lion2010,
author = {Laura Lion and Gabrielle Giraffe and Carl Capybara},
title = {The dangers of asking the wrong question},
publisher = {publishing house},
date = {2010},
keywords = {trusted},
}
@online{wikibook,
title = {Generating Bibliographies with biblatex and biber},
organization = {Wikibooks},
date = {2016},
urldate = {2016-03-07},
url = {https://en.wikibooks.org/wiki/LaTeX/Generating_Bibliographies_with_biblatex_and_biber},
keywords = {untrusted},
}
Every entry in the database starts with an @
-sign
followed by the entry type. More types are available, the package
documentation lists all of them. The bibliographic information
for each entry are stored in a pair of braces, beginning with a
unique keyword for that entry (bibkey). Least complicated way of
presenting the data is every field type in a new line, the
content in curly braces, followed by a comma. The order in which
you give the information is not important.
Please have a close look at the authors, every individual author
is separated by the keyword and
. All dates are
written in YYYY-MM-DD, or just the year if the other information
is not available. The file biblatex-examples.bib
which should have been installed with the package contains some
sample entries.
Setting up biber
[edit | edit source]Biber is the name of the helper program that sorts the entries and provides all the relevant information to package biblatex. If you are not comfortable using the command line (aka the terminal), you should set up your editor to call biber for you. Setting up my editor to use biber shows how to do it for the different editors.
A simple example
[edit | edit source]
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{lauraPhd2016.bib}
\begin{document}
I doubt that there is any useful information here~\cite{wikibook}.
All we know is limited, apart from knowing the answer we all know. Or do we? Wombat and Koala have discovered some interesting things~\cite{wombat2016}.
Some people are too nosy. What can happen to them is described by Laura Lion~\cite[9]{lion2010}.
\printbibliography
\end{document}
|
Now how does it actually work? Package biblatex is loaded with
the option backend=biber
followed by adding your
database file to the list of bibliographic files using
\addbibresource
. Please note that the file extension
is mandatory and that this is happening in the preamble of the
document.
Within the document you can cite one of your database entries
using \cite{bibkey}
. Your database can contain
hundreds of entries, but only cited references will occur in the
final list. You can use \nocite{<bibkey>}
to add
uncited entries to the list. If you want to add all entries
from the database use \nocite{*}
.
Finally, the list of your references is printed with
\printbibliography
.
Running LaTeX (no matter if latex
,
pdflatex
etc.) on the main document will result in the following log
output.
LaTeX Warning: Citation 'wikibook' on page 1 undefined on input line 5. LaTeX Warning: Citation 'wombat2016' on page 1 undefined on input line 7. LaTeX Warning: Citation 'lion2010' on page 1 undefined on input line 9. LaTeX Warning: Empty bibliography on input line 11. [1{/usr/local/texlive/2017/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] (./lauraPhd2016Main.aux) LaTeX Warning: There were undefined references. Package biblatex Warning: Please (re)run Biber on the file: (biblatex) lauraPhd2016Main (biblatex) and rerun LaTeX afterwards.
We get several warnings about undefined references, no bibliography and instead of proper citations, we see just the cite key in bold.
In order to really get a bibliography and the citations, and not
just the infamous There were undefined references
warning, you have to run biber after latex to extract the
relevant data from the database. After setting up biber as
described in Setting up my editor to use biber you should be able to do it by
pressing one button while working on your document. To
incorporate the bibliography information into your document,
LaTeX then has to process the data biber has generated before.
To sum it up, if you have a file
lauraPhd2016Main.tex
you (or your editor) will have to
do:
$ latex lauraPhd2016Main
$ biber lauraPhd2016Main
$ latex lauraPhd2016Main
Everytime your database is updated, remember to process the database by calling biber.
The full result can be seen in the picture below. Please note that package biblatex adds some small little details. Can you see things that are printed but have not been defined?
Reference Styles
[edit | edit source]Different reference styles are in use within the different disciplines of science. Very broadly speaking, you can divide into a numerical referencing system (Vancouver) or an author date referencing system (Harvard).
Package biblatex[1] provides different citation commands that generate different output (in-text citation, footnotes and more). A few examples are given below, the package documentation contains and explains the use of the whole set.
Numerical Referencing
[edit | edit source]Numerical referencing is the default style. Numbers within
brackets are used in text and in the bibliography. Using
\autocite
makes it easy to change the style into
footnotes. sorting=none
gives a bibliography that is
sorted chronologically, i.e. the numbers increase to the end of
the document.
\documentclass{article}
\usepackage[backend=biber,style=numeric,autocite=plain,sorting=none]{biblatex}
\addbibresource{lauraPhd2016.bib}
\begin{document}
I doubt that there is any useful information here.~\cite{wikibook}
All we know is limited, apart from knowing the answer we all
know. Or do we? \citeauthor{wombat2016} have discovered some interesting
things.~\autocite[compare][80]{wombat2016}
What can happen to nosy people is described by \textcite[9]{lion2010}.
\printbibliography
\end{document}
|
Using autocite=footnote
gives a different output.
Can you spot all the differences?
Author Date Referencing
[edit | edit source]If you want an author-date referencing style, you can use
style=authoryear
when loading biblatex. The option
autocite
with the option inline
puts
parenthesis around the cite genererated with
autocite
(which is similar to using
\parencite
). In some cases, \textcite
may come in handy when the citation is the subject and part of
the sentence flow.
\documentclass{article}
\usepackage[backend=biber,style=authoryear,autocite=inline]{biblatex}
\addbibresource{lauraPhd2016.bib}
\begin{document}
I doubt that there is any useful information here~\cite{wikibook}.
All we know is limited, apart from knowing the answer we all know. Or do we?~\cite{wombat2016}
Some people are too nosy. What can happen to them is described by Laura Lion~\autocite[9]{lion2010}.
Some people are too nosy. What can happen to them is described by \textcite[9]{lion2010}.
\printbibliography
\end{document}
|
APA Citing
[edit | edit source]The American Psychological Association (APA) defines a very
strict author year style. You can access it using
style=apa
and additionally defining the language
mapping.
\usepackage[backend=biber,style=apa,autocite=inline]{biblatex}
\DeclareLanguageMapping{english}{english-apa}
\addbibresource{lauraPhd2016.bib}
|
Compare the output with the normal author year style. How many changes can you spot?
Separate Bibliographies by Entry Type
[edit | edit source]Suppose you want to have a separate bibliography for all the
online resources you are citing. No problem using the optional
argument of \printbibliography
. You can also change
the title (and other stuff).
\documentclass{article}
\usepackage[backend=biber,defernumbers=true]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{westfahl:space,aristotle:physics,ctan,baez/online,markey,sigfridsson}
\printbibheading
\printbibliography[heading=subbibliography,type=online,title={All my online references}]
\printbibliography[heading=subbibliography,nottype=online,title={All my non-online references}]
\end{document}
|
Splitting into different topics
[edit | edit source]You can split your bibliography into different topics, in trusted
and untrusted sources, or in primary and secondary sources. The
way to tell biblatex what is what, is by adding a
keywords
tag to the entries of the database.
@book{lion2010,
author = {Laura Lion and Gabrielle Giraffe and Carl Capybara},
title = {The dangers of asking the wrong question},
publisher = {publishing house},
date = {2010},
keywords = {trusted},
}
\documentclass{article}
\usepackage[backend=biber,style=authoryear,refsection=section]{biblatex}
\addbibresource{lauraPhd2016.bib}
\begin{document}
\cites[see also][12]{wombat2016}[and][45]{lion2010}
\nocite{wikibook}
\printbibliography[keyword={trusted},title={All the trusted sources}]
\printbibliography[keyword={untrusted},title={All the untrusted sources}]
\end{document}
|
Note, that the entryfield in the database is called
keywords
(plural) because you can have more than one
keyword (separated by commas). When calling the
\printbibliography
command, you have to use the
singular. biblatex has a powerful system of filtering data, more
can be found in the manual.
Bibliographies per Section or Chapter
[edit | edit source]Some people have the need for a reference list at the end of each
chapter or section. This can be done using
refsection
.
\documentclass{article}
\usepackage[backend=biber,defernumbers=true,refsection=section]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\section{Aster}
\cite{ctan,sigfridsson} and some text
\printbibliography[heading=subbibliography]
\section{Begonia}
\cite{aristotle:physics,markey}
\printbibliography[heading=subbibliography]
\section{Cichorium}
\cite{westfahl:space,baez/online}
\printbibliography[heading=subbibliography]
\end{document}
|
A bibliography in a presentation
[edit | edit source]You can use package biblatex
with beamer
(see the Presentations section) to have citations and a reference list in your presentation. Using full cites right away is recommended, so listeners don't have to wait till the very end to see where information is drawn from.
\documentclass{beamer}
\usecolortheme{crane}
\usepackage{biblatex}
\addbibresource{lauraPhd2016.bib}
\begin{document}
\begin{frame}{42}
Interesting
\footfullcite{wombat2016}
\end{frame}
\nocite{*}
\begin{frame}{References}
\printbibliography
\end{frame}
\end{document}
|