[texhax] \protect in LaTeX2e

Morten Høgholm moho01ab at student.cbs.dk
Sat Oct 2 15:47:36 CEST 2004


On Fri, 01 Oct 2004 17:51:03 +0100 (BST), Robert Hunt  
<R.E.Hunt at damtp.cam.ac.uk> wrote:

> In section 2.6 of Kopka & Daly's book, they state that "The issue of
> fragile commands ... with LaTeX2e has become of academic interest: all
> commands that are likely to be used in moving arguments are now robust."  
> I
> recently discovered that this isn't true: \nolinebreak is not robust and
>
> \caption{Blah blah ... blah\nolinebreak\ blah blah blah}
>
> fails rather dismally. This can of course be avoided with \protect, but
> should \nolinebreak be instead made robust?

I'd say it is not worth the trouble because the effect is easier to get  
with \nobreakspace or its shorthand ~ because \nobreakspace happens to be  
robust. Unless you want to use the optionl argument of \nolinebreak of  
course.

If you still want to make it robust, simply(?) add

\makeatletter
\DeclareRobustCommand*\nolinebreak{\@testopt\@no at lnbk4}
\makeatother

to your preamble. It takes up an extra command name (robust commands make  
a secret command that does the real typesetting) but that doesn't matter  
much nowadays.

Cheers,
-- 
Morten Høgholm



More information about the texhax mailing list