J'ai passé du temps à essayer d'écrire une macro 'helper' pour tester un paramètre pour une nouvelle valeur, sinon utilisez la valeur existante - des valeurs par défaut existent pour toutes les positions de paramètres.TeX edef macro blues
Je voulais pouvoir écrire:
\foo{left}{nil}{}{20pt}
de sorte que le second paramètre serait utilisé sa valeur actuelle, mais la troisième valeur serait la valeur chaîne vide. Je voulais utiliser la notation:
\edef\pA{\isnil{#1}{\pA){#1}} % one for each parameter
Je définis \ isnil comme ceci:
\def\nil{nil}
\def\isnil#1#2#3{%
\edef\nilTest{#1}%
\ifx\nilTest\nil#2\else#3\fi
}
mais quand j'ai essayé de l'exécuter, TeX se plaint que \ nilTest est une séquence de contrôle non définie. C'est vrai bien sûr, mais je veux que \ pA contienne une valeur, pas une recette pour une valeur, donc ça doit être un \ edef ce qui signifie que tout le test de macros sera étendu mais que \ edef ne protégera pas le \ nilTest - est-ce un endroit à utiliser \ noexpand - qui ne semble pas fonctionner pour moi.
EDIT: aucun chiffre dans les noms \ cs (oui, je le savais.)