[Tex/LaTex] How to prevent line break in citation with an argument


If I cite a bibliography item with an additional argument, for example \cite[p.~6]{bib_item}, it can happen that there is a line break before the automatically inserted argument, such as:

text text text [4,

p. 6]


text text text [5, pp. 11-


Is there a way to prevent this?

Best Answer

Assuming you're not using any packages redefining \cite & friends, here's a solution. (Andrey Vihrov's comments about \mboxes and \sloppy still apply.)


% \def\@cite#1#2{[{#1\if@tempswa , #2\fi}]}% OLD
\def\@cite#1#2{[{#1\if@tempswa ,~#2\fi}]}% NEW


Some text that is just long enough to create an unwanted line break \cite[p.~99]{test}.

\bibitem{test} A bibitem.


EDIT: Replaced \penalty\@m\ with ~ in the definition of \@cite.