Macro \removept

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté par le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 434
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

[Résolu] Macro \removept

Message par zariski63 »

Bonjour !
Voilà je butte sur un truc qui m'échappe bien que cela soit expliqué dans le livre "Apprendre à programmer avec TeX".
On trouve cette macro :

Code : Tout sélectionner

\def\removept#1.#2pt{#1\ifnum#2>0 .#2\fi}
\newdimen\foo
\foo=15.7pt
\expandafter\removept\the\foo
Évidemment ça ne marche pas car il est dit que "pt" sont 2 caractères de catcode 12... (une solution est proposée mais pour l'instant c'est pas cela qui m'intéresse)
Pourtant, selon moi, le \expandafter va 1-développer \the\foo pour rendre 15.7pt et ensuite va agir \removept sur 15.7pt qui devrait donner 15.7.
Visiblement j'ai raté un truc sur les macros ... Mais lequel ?

Merci pour vos réponses.

CE
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 885
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: \removept

Message par un bon petit »

Lorsqu'on écrit \def\removept#1.#2pt{#1\ifnum#2>0 .#2\fi} les tokens «p» et «t» ont un catcode de 11.
Lorsqu'on écrit \expandafter\removept\the\foo on obtient 15.7pt avec les tokens «p» et «t» de catcode 12.

La macro \removept ne peut donc pas capturer l'argument délimité #2 car le délimiteur « pt » de catcodes 11 ne correspond pas avec ce qui est donné où « pt » ont des catcodes de 12.

Voilà pourquoi « ça ne marche pas ». C'est exactement ce qui est expliqué dans le bouquin, ceci dit.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 434
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: \removept

Message par zariski63 »

je vois le problème effectivement mais ce que je n'arrive pas à saisir c'est pourquoi dans 15.7pt après le \expandafter, p et t voit leur catcode passer à 12. J'ai dû manquer une règle ...
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 885
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: \removept

Message par un bon petit »

zariski63 a écrit : samedi 01 mai 2021, 19:43J'ai dû manquer une règle ...
Oui, il y a une règle qui dit que \the<dimension> renvoie une nombre décimal suivi des tokens p et t de catcode 12. C'est comme ça, on ne peut rien y changer, c'est codé en dur dans TeX.

C'est dit dans le bouquin à la page 233 :
Screenshot_20210501_202558.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 434
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: \removept

Message par zariski63 »

Raaaah je me disais aussi. Là tout devient clair !
Pardonnez moi pour ces questions qui, je le sens, vous semblent désolantes mais TeX n’est pas facile à apprivoiser.
Je vous remercie de prendre le temps de me répondre.
Bonne soirée.
CE