### `\``edef` does not work with `\``protect`

Robust LaTeX commands are either "naturally robust" - meaning that they never need `\``protect`, or "self-protected" - meaning that they have `\``protect` built in to their definition in some way. Self-protected commands are robust only in a context where the `\``protect` mechanism is properly handled. The body of an `\``edef` definition doesn't handle `\``protect` properly, since `\``edef` is a TeX primitive rather than a LaTeX command.

This problem is resolved by a LaTeX internal command `\``protected@edef`, which does the job of `\``edef` while keeping the `\``protect` mechanism working. There's a corresponding `\``protected@xdef` which does the job of `\``xdef`.

Of course, these commands need to be tended carefully, since they're internal: see '@' in control sequence names.

This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=edef