sra@ecs.soton.ac.uk (Stephen Adams) (06/11/90)
Here is a puzzle for TeXnicians:
How do you define a macro than can be inserted anywhere in
an error free latex document and guarantee that no errors
will be introduced into the document?
Consider the macro \nothing:
\def\nothing{}
I can put \nothing almost anywhere in a LaTeX document.
Now consider \mark:
\def\mark{...do something...}
Unfortunately, I have to be more careful where I put \mark.
I need to be able to put \mark anywhere that I can put
\nothing, but \mark must do something, for example, set a
counter.
The puzzle can be refined into two sub-puzzles:
a) How do you define a macro as above, but the macro must do
something simple and `invisible' like advance a counter.
b) How do you define a macro as above, but the macro must do
an arbitrary amount of box-bashing (but still producing
no output at this point).
A simple attempt at (a) follows. If \mark is defined as
anything except \nothing then it fails with a `Misplaced
\noalign.'
------------------------------
\documentstyle[]{article}
\begin{document}
\newcount\foo \foo=0
\def\nothing{}
\def\mark{\advance\foo by 1}
\section{Some section}
Duck frog cat tree hill \mark valley fence.
Duck frog cat tree hill valley fence.
\begin{tabular}{|l|l|}
\mark \hline
Frog & amphibian \\
Duck & bird \\
\hline
\end{tabular}
\end{document}