[Tex/LaTex] Even columns in document with long bibliography

bibliographiestwo-columnvertical alignment

I am writing a document in two column format and the last two pages are devoted to the bibliography, which I generate with BibTeX. I need to finish the last page with the two columns having the same size. I am lost at that point.

I have tried to use \enlargethispage{-X cm} finding X by trial and error. The problem is that when using that command after the call to \bibliography{MyBib}, the outcome is not the expected one: bibliography items span along all the first column and there is no column adjustment. I found out that if I write the command before \bibliography{MyBib} everything works as expected, but the problem is that the bibliography takes two pages so I can't do that, the only possibility is writing \enlargethispage afterwards. Could you please help me on that?


I self-answer 🙂 I suceeded by manually editing the .bbl file. If you have a smarter solution please let me know. Thanks.

Best Answer

The IEEEtran class has a trick for doing what you want in a simple fashion; here's an example, where I used a large bib database available in TeX Live.

\documentclass[conference]{IEEEtran}
\usepackage[T1]{fontenc}

\usepackage{lipsum} % some mock text

% the following commands are just to avoid errors
\newcommand{\mkbibquote}[1]{``#1''}   
\newcommand{\hyphen}{\-}
%%%

\begin{document}
\title{Title}
\author{A. U. Thor}
\maketitle

\section{Section}
\lipsum[1-3]

\nocite{*}

\bibliographystyle{plain}

% this will issue a column break just before reference 68
\IEEEtriggeratref{68}
\bibliography{biblatex-examples}


\end{document}

A couple of attempts gave a quite good result. The columns are not perfectly balanced, but doing it would split a reference.

enter image description here

Alternatively you could try

\bibliographystyle{plain}

\IEEEtriggercmd{\enlargethispage{-3in}}
\IEEEtriggeratref{60}
\bibliography{biblatex-examples}

which gives the following "balancing"

enter image description here

The \IEEEtriggeratref command places, by default, a column break before the specified bib entry; with \IEEEtriggercmd you can change the default command.