blob: cb01d34aeec10130473e21d4955b25f7156eb13f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<head>
<title>UK TeX FAQ -- question label edef</title>
</head><body>
<h3><code>\</code><code>edef</code> does not work with <code>\</code><code>protect</code></h3>
<p/>Robust LaTeX commands are either “naturally robust” — meaning that
they never need <code>\</code><code>protect</code>, or “self-protected” — meaning that
they have <code>\</code><code>protect</code> built in to their definition in some
way. Self-protected commands, and fragile commands with
<code>\</code><code>protect</code>ion are only robust in a context where the <code>\</code><code>protect</code>
mechanism is properly handled. The body of an <code>\</code><code>edef</code> definition
doesn’t handle <code>\</code><code>protect</code> properly, since <code>\</code><code>edef</code> is a TeX
primitive rather than a LaTeX command.
<p/>This problem is resolved by a LaTeX internal command
<code>\</code><code>protected@edef</code>, which does the job of <code>\</code><code>edef</code> while keeping the
<code>\</code><code>protect</code> mechanism working. There’s a corresponding
<code>\</code><code>protected@xdef</code> which does the job of <code>\</code><code>xdef</code>.
<p/>Of course, these commands need to be tended carefully, since they’re
internal: see <a href="FAQ-atsigns.html">’@’ in control sequence names</a>.
<p/><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=edef">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=edef</a>
</body>
|