summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-labundef.html
blob: 5d5b5be1fe83c2eb7824aa7fba55056ec276dfd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<head>
<title>UK TeX FAQ -- question label labundef</title>
</head><body>
<h3>Finding if a label is undefined</h3>
<p>People seem to want to know (at run time) if a label is undefined (I
don't actually understand <em>why</em>, particularly: it's a transient
state, and LaTeX deals with it quite well).
<p>A resolved label is simply a command:
<code>\</code><code>r@</code><code>&lt;<i>label-name</i>&gt;</code>; 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
<code>\</code><code>@ifundefined</code>:
<blockquote>
  <code>\</code><code>@ifundefined{</code><em><code>r@</code>lab-name</em><code>}{</code><em>undef-cmds</em><code>}</code>{def-cmds}
</blockquote>
In which, &lt;<i>lab-name</i>&gt; is exactly what you would use in
a <code>\</code><code>label</code> command, and the remaining two arguments are command
sequences to be used if the label is undefined
(&lt;<i>undef-cmds</i>&gt;) or if it is defined
(<code><em>def-cmds</em></code>).
<p>Note that any command that incorporates <code>\</code><code>@ifundefined</code> is naturally
fragile, so remember to create it with <code>\</code><code>DeclareRobustCommand</code> or to
use it with <code>\</code><code>protect</code> in a moving argument.
<p>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 <code>\</code><code>G@refundefinedtrue</code> in
&lt;<i><code>undef-cmds</i>&gt;</code>.
<p><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=labundef">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=labundef</a>
</body>