File: FAQ-labundef.html

package info (click to toggle)
tetex-base 3.0.dfsg.3-5
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 239,540 kB
  • ctags: 10,610
  • sloc: xml: 103,461; perl: 9,398; ruby: 2,850; python: 1,551; php: 1,067; sh: 981; lisp: 494; makefile: 371; awk: 88
file content (29 lines) | stat: -rw-r--r-- 1,733 bytes parent folder | download | duplicates (3)
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>