Au moment de l'exécution de votre code
, vous pourriez souhaiter savoir si une étiquette n'est pas définie (même si c'est un état transitoire et que
gère assez bien cette situation).
Une étiquette définie est simplement une commande : \r@nom-étiquette. Notre question initiale revient donc à vérifier si la commande existe. Avec
, cela se fait généralement avec la commande de test \@ifundefined{r@nom-étiquette}{cas-non-déf}{cas-déf} pour laquelle :
nom-étiquette est le nom d'étiquette que vous avez utilisé dans la commande \label ;cas-non-déf) ou si elle est définie (cas-déf).
Notez que toute commande qui intègre \@ifundefined est naturellement fragile. Pour la protéger, consultez la question « À quoi sert la « protection » ? ».
Si vous suivez cette piste, vous ne soucierez peut-être pas de l'avertissement de
concernant les étiquettes non définies à la fin du document. Cependant, si vous y trouvez un intérêt, ajoutez la commande \G@refundefinedtrue dans l'argument cas-non-déf.
Enfin, bien sûr, rappelez-vous que vous avez affaire à des commandes internes. En cas de doute, consultez la question : « À quoi servent \makeatletter et \makeatother ? ».
Tout ce qui précède peut être évité en utilisant l'extension labelcas : elle fournit des commandes permettant de d'agir différemment selon l'état d'une étiquette, ou des états d'une liste d'étiquettes. Cette extension, un peu compliquée, s'avère assez puissante.
Source: Finding if a label is undefined