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