--- myst: html_meta: keywords: LaTeX,TeX,latex,commandes,robuste,programmation,\\edef,\\protect,protection --- # Pourquoi `\edef` ne fonctionne pas avec `\protect` ? Les commandes LaTeX [robustes](/2_programmation/syntaxe/c_est_quoi_la_protection) sont : - soit *naturellement robustes*, ce qui signifie qu'elles n'ont jamais besoin de `\protect` ; - soit *auto-protégées*, ce qui signifie que `\protect` est intégrée dans leur définition. Les commandes auto-protégées et les commandes fragiles utilisant `\protect` ne sont robustes que dans un contexte où le mécanisme `\protect` est correctement géré. De fait, le corps d'une définition `\edef` ne gère pas correctement `\protect` car `\edef` est une primitive TeX et non une commande LaTeX. Ce problème est résolu par une commande interne LaTeX `\protected@edef` qui fait le travail de `\edef` tout en respectant le mécanisme de `\protect`. Une commande `\protected@xdef` fait un travail équivalent pour `\xdef`. Bien sûr, ces commandes doivent être utilisées de façon particulière car elles sont internes. Sur ce point, voir « [](/2_programmation/macros/makeatletter_et_makeatother) ». :::{sources} [« `\edef` » does not work with « `\protect` »](faquk:FAQ-edef) :::