Error extraño con \mathbb en \xdef

Error extraño con \mathbb en \xdef

Al desarrollar un fragmento de código complejo, obtuve el siguiente error críptico:

./[email protected]:5: Undefined control sequence.
\GenericError  ...                                
                                                    #4  \errhelp \@err@     ...
l.5 ...w@thmref@thm:defi:DistRn\endcsname{$\mathbb
                                                  {R}$}

Por "búsqueda binaria", me di cuenta de que se debía a lo siguiente:

\documentclass[a4paper]{report}
\usepackage{amsfonts}

\begin{document}
\expandafter\xdef\csname mw@thmref@thm:defi:DistRn\endcsname{$\mathbb{R}$}
\end{document}

y ese convertirse \xdefen \gdeflo hizo desaparecer. Entonces sentí curiosidad y vine aquí para preguntar: ¿qué está pasando aquí y qué significa ese error?

Respuesta1

Hay una razón por la \xdefque no es un comando compatible con látex: la mayoría de las construcciones tex explotan en un edef. use \protected@edefy luego use \protectpara cualquier comando frágil.

si vas

\edef\foo{\def\zzz{hello}}

luego intenta expandir (solo) los tokens mientras define \foo. \defno es expandible, por lo que simplemente se deja como está, luego intenta expandirse \zzzy generalmente genera un error de comando indefinido (o si \zzzya tiene una definición, obtiene un error arbitrario al expandir esa definición). Esta es la razón del \protectmecanismo de látex, y usarlo \xdefdirectamente simplemente hace un agujero a través de él.

La razón por la que la salida del registro parece un poco extraña es que revela (o intenta revelar) un token interno con un nombre interesante.

 \@err@                                                                 %

es un token con aproximadamente 65 espacios en su nombre,

información relacionada