Bonjour, le code suivant ne compile pas \documentclass{article} \usepackage{etoolbox} \usepackage{tikz} \begin{document} \foreach \note in {AA,BB} { %\global% ne change rien %\expandafter% fait compiler, mais le résultat affiche AB, mais ni Oui ni Non \newbool\note } \ifbool{AA}{Oui}{Non} \end{document} Tout se passe comme si newbool ne fonctionnait pas correctement dans un foreach, alors qu'en dehors il fait son taf. Est-ce que quelqu'un a la clef de ce mystère ? |
Voici une réponse de la question pourquoi. La documentation de l'extension etoolbox précise clairement qu'on peut appliquer Plus sérieusement, la commande primitive Normalement, une définition ou assignation effectuée à l'intérieur d'un groupe La commande \documentclass{article} \usepackage{etoolbox} \begin{document} Exemple 1. {\global\ifnum1=1\def\x{TeXnique.fr}\else\def\x{NON}\fi} \x Exemple 2. \makeatletter {\global\newbool{FOO}} \reserved@a \makeatother \end{document} Effectivement si il y a des vérifications avant, ça doit capter le global. Du coup j'ai essayé avec providebool, mais ça ne fonctionne pas non plus. Mais merci pour les explications, je comprends mieux d'ou venait mon problème. |
\foreach \note in {AA,BB} {\newbool\note \global\boolfalse{\note}}
vous convient-il?Oui, cela a bien le comportement escompté. Pourquoi dans un foreach le global ne fonctionne pas avec newbool (qui est censé initialiser le bool à false) alors qu'il semble fonctionner avec boolfalse reste un mystère, mais cette solution me conviendra à défaut. Merci !