Calculs

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.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Calculs

Message par un bon petit »

Une macro est purement développable si
  • on peut la développer au maximum sans erreur, c'est à dire la mettre dans l'argument d'un \edef par exemple sans qu'elle ne produise d'erreur
  • le développement maximal produit les tokens qui sont affichés. On peut donc notamment mettre la macro entre \csname et \endcsname sous réserve que les tokens affichés sont permis entre ces 2 primitives.
Exemple 1
La macro \X définie par

Code : Tout sélectionner

\def\X{Bonjour \Y}
\def\Y{le monde}
est purement développable car si on développe la macro \X, on obtient "Bonjour le monde" :

Code : Tout sélectionner

\def\X{Bonjour \Y}
\def\Y{le monde}
\edef\foo{\X}
\meaning\foo
L'affichage produit bien : macro:->Bonjour le monde

Exemple 2
La macro \X définie par

Code : Tout sélectionner

\def\X{\num{123}}
n'est pas purement développable.
On peut pourtant la mettre dans un \edef : écrire \edef\foo{\X} ne produira aucune erreur.
Mais si on demande le résultat du développement maximal, on n'obtient pas "123" :

Code : Tout sélectionner

\def\X{\num{123}}
\edef\foo{\X}
\meaning\foo
On obtient macro:->\num {123}
Noter l'espace après \num : en réalité, on voit ici la macro \num (dont le nom contient un espace), c'est le mécanisme ultra-classique de création de commande robustes cher à LaTeX.

Pire, si on essaie de mettre \X entre \csname et \endcsname, on se prend une bordée d'injures car justement, la macro \num n'est pas purement développable.

Code : Tout sélectionner

\def\X{\num{123}}
\csname\X\endcsname
Conclusion : la macro \num n'étant pas purement développable, c'est un non sens que de définir \scientificB avec \NewExpandableDocumentCommand, il faut ici utiliser \newcommand ou bien \NewDocumentCommand.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1944
Inscription : samedi 29 décembre 2007, 00:58

Re: Calculs

Message par projetmbc »

Bonsoir zariski63.

La vraie question serait de savoir ce que vous souhaitez faire.

Si c'est pour faire tout avec (La)TeX(3), il y a les réponses de l'expert en TeX.
Maintenant si c'est pour être efficace, il me semble que prendre le ou les bons outils adaptés à un contexte est un bon réflexe en informatique.

Un gars qui est entrain de laisser tomber TeX.
Dernière modification par projetmbc le dimanche 04 avril 2021, 22:05, modifié 1 fois.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 428
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Calculs

Message par zariski63 »

Tout d abord merci pour toutes vos réponses, c'est très instructif. Ensuite, j'adore TeX et tout ce qui tourne autour, les résultats sont tellement beaux que je me lasse jamais. Enfin si parfois car la maîtrise de la bête n'est vraiment pas à la portée de tous...

Aussi la dernière réponse m'interroge... Pourquoi en passe d'abandonner TeX ???
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1944
Inscription : samedi 29 décembre 2007, 00:58

Re: Calculs

Message par projetmbc »

Parce que je n'ai pas le niveau et je préfère faire du vélo... :-)

LaTeX je garde par contre.
Dernière modification par projetmbc le dimanche 04 avril 2021, 22:06, modifié 1 fois.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 428
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Calculs

Message par zariski63 »

Ouf !!! 👍👍