# [OS X TeX] Textures TeXShop paradox

Peter Vamos P.Vamos at exeter.ac.uk
Wed Jun 15 17:20:10 CEST 2005

(See Textures -> TeXShop migration message for background)
A number of my files give me the green light in Textures but produced
the error message: '!missing number treated as zero' in TeXShop (any
typesetting engine). Going to the error line shows perfectly good
code. Nothing fancy in these files except the fancy headers package.
After some investigation,  it turns out that the offending line is

\cfoot{\ifnum1=\pageref{fin}\else\thepage\fi}

I produce handouts, exercise sheets etc and don't like pagenumbers
showing when I have only one page so I wrote the above pagenumber
instruction; it puts the pagenumber in the bottom centre if that
number is >1 and nothing otherwise. The document ends with:
\label{fin}\end{document}

Many of you must have worked out by now what happens (it took me some
time) but if not, here is the solution to this apparent paradox. When
TeX comes to the end of a page it tries to construct the footer but,
on the first run, doesn't know what \pageref{fin} is so cannot
evaluate \ifnum1=\pageref{fin} and produces the error message,
nothing to do with the line in the input file it is on, except that
it is approximately at a page break. But I see none of this in
Textures because I run  in (Flash and) LaTeX mode, the errors on the
first run are ignored and by the second run everything is OK. Hence
the green light.

But in TeXShop I am stopped during the first run every time TeX comes
to a page break. So I must somehow stop TeX complaining. In fact the
solution is an even shorter code, change the above to

\cfoot{\if1\pageref{fin}\else\thepage\fi}

this works, of course you have to typeset twice to get the correct result.

I have been using the first version for ages (well, certainly since
LaTex Mode in Textures) but now that I ran into trouble in TeXShop I
looked around and found, to my surprise, that there is a package on
different, more complicated and longer way.

Now some of you might say, why bother with all this, just do it
manually and put in \pagestyle{empty} at the end if your document
fits on one page. Perfectly good solution of course but, IMHO,
defeats the purpose of programming computers. And not elegant.

We spend minutes on devising code which will only save seconds and
then, as in this case, even more minutes to try to debug (and read
lists like this) if it goes wrong. But hey, isn't this all about the
lure and strange attraction of computing?

Peter Vamos

--------------------- Info ---------------------
Mac-TeX Website: http://www.esm.psu.edu/mac-tex/
& FAQ: http://latex.yauh.de/faq/
TeX FAQ: http://www.tex.ac.uk/faq
List Post: <mailto:MacOSX-TeX at email.esm.psu.edu>