\
r@
<label-name>
; determining if the label is set is
then simply a matter of detecting if the command exists. The usual
LaTeX internal way of doing this is to use the command
\
@ifundefined
:
\
@ifundefined{
r@label-name}{
undef-cmds}{
def-cmds}
In which, <label-name> is exactly what you would use in
a \
label
command, and the remaining two arguments are command
sequences to be used if the label is undefined
(<undef-cmds>) or if it is defined
(<def-cmds>).
\
@ifundefined
is naturally
fragile, so remember to create it with \
DeclareRobustCommand
or to
use it with \
protect
in a moving argument.
If you’re into this game, you may well not care about LaTeX’s
warning about undefined labels at the end of the document; however,
if you are, include the command \
G@refundefinedtrue
in
<undef-cmds
>.
And of course, remember you’re dealing in internal commands, and pay
attention to the at-signs.
All the above can be avoided by using the labelcas package:
it provides commands that enable you to switch according to the state
of a single label, or the states of a list of labels. The package’s
definition is a bit complicated, but the package itself is pretty
powerful.
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=labundef