Re: Mais pourquoi le \fi reste là !

Liste des GroupesRevenir à fct tex 
Sujet : Re: Mais pourquoi le \fi reste là !
De : vincent.belaiche (at) *nospam* gmail.com (Vincent Belaïche)
Groupes : fr.comp.text.tex
Date : 30. Nov 2021, 13:10:25
Autres entêtes
Organisation : Gegeweb News Server
Message-ID : <m2h7btgaqm.fsf@pc40.home>
References : 1
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (darwin)
Vincent Belaïche <vincent.belaiche@gmail.com> writes:

Bonjour,
>
Voici un ECM :
>
```LaTeX
>
\documentclass{minimal}
\newcommand*\Toto[1]{Que le Grand #1 me croque !}
\begin{document}
\tracingmacros=1
\expandafter\Toto\expandafter{\iftrue Cri\fi c}
\tracingmacros=0
\end{document}
>
```
>
Dans le journal de transcription j'ai ceci :
>
```
\Toto #1->Que le Grand #1 me croque !
#1<-Cri\fi c
```
>
L'argument passé à \Toto est « Cri\fi c » et non « Cric », et ceci
est problématique, à moins que le but fût d'insérer un \fi sans avoir à
équilibrer les \ifxxx et les \fi, ce qui n'est pas le cas.
>
Dans cet exemple simplissime cela passerait inaperçu, mais pas avec du
code où \Toto serait plus complexe.
>
Bon, c'est contournable, mais j'aimerais comprendre où j'ai faux, je
pensais que les conditions étaient développables.

Juste pour dire qu'une solution c'est de faire comme ça :

```
\documentclass{minimal}
\newcommand*\Toto[1]{Que le Grand #1 me croque !}
\begin{document}
\makeatletter
\tracingmacros=1
\expandafter\expandafter\expandafter\Toto
\expandafter\expandafter\expandafter
{\iftrue\expandafter\@firstofone\else\expandafter\@gobble\fi{Cri}c}
\tracingmacros=0
\makeatother
\end{document}
```

Dans ce cas l'argument passé à \Toto devient « \@firstofone{Cri}c » et
on n'est plus embêté par le \fi qui reste.
--

Date Sujet#  Auteur
30 Nov 21 * Mais pourquoi le \fi reste là !2Vincent Belaïche
30 Nov 21 `- Re: Mais pourquoi le \fi reste là !1Vincent Belaïche

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal