**Pour les blancs**, Pour les "blancs" (les espaces), l'extension `xspace` gère l'espace horizontal qui suit la commande dans le cas ou l'on utilise la commande sans les accolades `{}`. Quand une commande a un (ou plusieurs) argument(s), elle finit nécessairement par une accolade et donc xspace sert plus à rien. Et c'est le cas ici.
Par contre si je fais une compilation avec `\ABfalse` au lieu de `\ABtrue`, la commande `\bareme` ne génère "rien" (`{}`). Mais apparemment "rien" n'est pas tout à fait "rien" pour LaTex. Il n'y aura pas d'espace mis par la commande, mais s'il y a un espace avant la commande et un autre après la commande, la commande entre les deux empêche le compilateur de voir les deux blancs comme consécutifs et par conséquent il ne les fusionne pas et on se retrouve avec deux blancs au lieu d'un seul entre le mot d'avant la commande et le mot d'après la commande (dans ce cas de compilation).
Pour éviter que cela arrive, je mets un `\ignorespaces` dans la commande, et du coup même si on met des blancs entre la commande et le mot suivant on aura au final un seul blanc.
On pourrait penser qu'après tout il suffit de ne pas mettre de blanc après la commande, et que ça irait aussi bien comme ça. Mais alors dans le cas de la compilation `\ABtrue`, le mot suivant la commande serait systématiquement collé à la fin du mot de la commande, sans espace entre les deux.
.. bref pour avoir toujours un seul blanc entre la commande et les mots d'avant et d'après, quel que soit le cas de compilation, il suffit de penser à mettre un blanc la fin de l'argument de la commande `\protect\bareme{tata ESPACE_ICI}`
... il y a surement d'autres façons de faire, mais celle-là semble fonctionner.