Ceci est une ancienne révision du document !
— title: Finding if a label is undefined category: programming tags:
permalink: /FAQ-labundef —
People seem to want to know (at run time) if a label is undefined (I don't actually understand _why_, particularly: it's a transient state, and LaTeX deals with it quite well).
A resolved label is simply a command: `\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`:
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_›).
Note that any command that incorporates `\@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](FAQ-atsigns).
All the above can be avoided by using the [`labelcas`](https://ctan.org/pkg/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.