I’m working on a custom biblatex style as I have to meet very special requirements. The citation part (cbx) works really well, but I have a problem with the bibliography definition. I need a tabular bibliography (for an example see this template produced with BibTeX).

I cannot use a tabular environment as the & within a bibliograpghy line produces an error. Other approaches using e. g. list failed, too.

Do you have an idea how to produce a tabular bibliography with biblatex?


1 Answer 1


Typically you define a new bibliography format with \defbibenvironment:

\defbibenvironment{bibliography}{<begin code>}{<end code>}{<item code>}

Internally biblatex groups these code segments and uses & as an end-of-list marker in handling items. So the existing setup isn't suited for tabular.

One workaround is to use a list environment borrowing enumitem's multiline label format, but this doesn't cope with long labels and short items.

  {\list{<label code>}{<list format code>}

A solution that allows use of tabular requires delving into biblatex internals. Here we define tabular variants of \defbibenvironment and \printbibliography: \defbibtabular and \printbibtabular. The former takes five arguments:

\defbibtabular{<name>}{<begin code>}{<end code>}{<label code>}{<item code>}

The latter permits the same list of options as \printbibliography, but with the default setting env=bibtabular.



% user-level command for printing tabular bibliography

% underlying macros
  % copy filtered list of entries to internal list macro
  % tabular output for each item in list macro
  \def\do##1{\bbx@tab@label{##1} & \bbx@tab@item{##1} \\}



% user-level command for defining tabular bibliography format

% user-level access to some entry options


% sortname labels (a robust style should add provision for missing labelnames)

% bibitem hook to suppress redundant sortname list

% demo new tabular bibliography format

% add multiline labels in default bibliography format

\newcommand{\cmd}[1]{\texttt{\textbackslash #1}}
\printbibliography[title={\cmd{printbibliography} with multiline labels}]
\printbibtabular[title={New \cmd{printbibtabular} command}]

enter image description here

  • Thank you for that great answer! It works exactly as I need it. But it will take some time for me to understand that code. ;) Sep 14, 2012 at 19:54
  • 1
    @RobinKrahl You're welcome. I prefer to avoid messing around with internals, but for your question and a few other recent ones there was no way around it. You can hide the mess between \makeatletter and \makeatother in your bbx file.
    – Audrey
    Sep 14, 2012 at 20:03
  • I already moved it there. For my citation customization I already had to deal with the biblatex internals. But I sometimes find it hard to understand code written by others as I am not too familar with LaTeX programming/coding patterns. Sep 14, 2012 at 20:26
  • @RobinKrahl By "internals" I meant the (largely undocumented) code in the biblatex sty files. The code here is closely based on definitions for \defbibenvironment and \printbibliography, but it uses an additional list handler for printing data. This ensures that groups (\begingroup, \endgroup pairs) don't break across rows or columns.
    – Audrey
    Sep 14, 2012 at 21:44
  • Thanks, this helped me as well. Is there a way to add text between the heading (Bibliography) and the table? I would like to use it to describe the citation methodology.
    – Jonas
    Jan 20, 2014 at 2:59

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.