Nouvelles commandes issues de latex 3

Pour magouverne personnelle, question aux latexiens épris de modernité… Est-ce que vous allez jusqu’à remplacer systématiquement les choses issues de TeX par de nouvelles commandes

Par exemple

Remplacer
\documentclass[a4paper]{article}
\usepackage{amsmath,amssymb}
\let\setminus\smallsetminus
\let\Re\relax
\DeclareMathOperator{\Re}{Re}
\let\Im\relax
\DeclareMathOperator{\Im}{Im}
\usepackage[french]{babel}

\begin{document}

[E\setminus A]

[\Re(a+ib)=a]

\end{document}

Par
\documentclass[a4paper]{article}
\usepackage{amsmath,amssymb}
\RenewCommandCopy{\setminus}{\smallsetminus}
\RenewCommandCopy{\Re}{\relax}
\DeclareMathOperator{\Re}{Re}
\RenewCommandCopy{\Im}{\relax}
\DeclareMathOperator{\Im}{Im}
\usepackage[french]{babel}

\begin{document}

[E\setminus A]

[\Re(a+ib)=a]

\end{document}


Michel Bovani
xyz@xyz.tld

Bonjour,

Le Latex Companion III part II, p. 635 explique quand le remplacement de
\let par \NewCommandCopy est nécessaire :
\let ne fonctionne pas correctement pour les commandes
– soit avec argument optionnel,
– soit rendue robustes par l’utilisation de \DeclareRobustCommand lors
de leur définition.

Donc dans ton cas, pour \smallsetminus et pour \Re, pas de souci à
laisser faire \let.

Ceci dit, pour les nouveaux documents, remplacer systématiquement \let
par \NewCommandCopy me semble une bonne précaution, ça évite de devoir
se poser des questions sur la commande originale.

Pour les anciens documents on pourrait (devrait ?) faire pareil, je ne
l’ai pas fait pour babel-french, il reste plein de \let mais je me
souviens en avoir remplacé quelques uns (ceux pour lesquels j’avais un
doute).

Bonne journée,

Daniel Flipo

Le 16 mai 2024 à 09:35, Daniel Flipo xyz@xyz.tld a écrit :

Bonjour,

Le Latex Companion III part II, p. 635 explique quand le remplacement de \let par \NewCommandCopy est nécessaire :
\let ne fonctionne pas correctement pour les commandes
– soit avec argument optionnel,
– soit rendue robustes par l’utilisation de \DeclareRobustCommand lors de leur définition.

Oui oui, j’avais vu, je me suis is à la lecture du LCIII juste après notre dernière conversation ! Mais ma question était de nature plus philosophique…

Donc dans ton cas, pour \smallsetminus et pour \Re, pas de souci à laisser faire \let.

Oui, il n’y a de toute façon pas de raison que ce qui marchait avant ne marche plus (sauf que là dans la vrai vie je me suis quand même pris la tête avant de comprendre ou de me souvenir qu’unicode-math exigeait que ce genre de manip soit faite \AtBeginDocumet…).

Ceci dit, pour les nouveaux documents, remplacer systématiquement \let par \NewCommandCopy me semble une bonne précaution, ça évite de devoir se poser des questions sur la commande originale.

Ma question était plutôt là. Avec deux choses en tête :
• Le souvenir du passage de Latex2.09 à Latex2e et de toutes les réticences chez certains utilisateurs à employer \bfseries et \itshape plutôt que \bf et \it. Sans parler de $$…$$ !
• La question de savoir si un LUG Gutenberg devrait ou non prendre parti, par exemple pour une formation qui aurait lieu sous le patronage de l’association.

D’ailleurs, le LCIII présente toujours les anciens \newcommand, \renewcommand and Co sans les taxer d’obsolescence ou en tout cas sans prendre partie quant au fait que l’on pouvait continuer à les utiliser dans les cas simples.

Bonne journée à toi !


Michel Bovani
xyz@xyz.tld
https://anthroposaurus.fr https://anthroposaurus.fr/

Le 16/05/2024 à 10:38, Michel Bovani a écrit :

Ceci dit, pour les nouveaux documents, remplacer systématiquement \let
par \NewCommandCopy me semble une bonne précaution, ça évite de devoir
se poser des questions sur la commande originale.

Ma question était plutôt là. Avec deux choses en tête :
• Le souvenir du passage de Latex2.09 à Latex2e et de toutes les
réticences chez certains utilisateurs à employer \bfseries et \itshape
plutôt que \bf et \it. Sans parler de $$…$$ !

Ah l’inertie quand elle nous tient…

• La question de savoir si un LUG Gutenberg devrait ou non prendre
parti, par exemple pour une formation qui aurait lieu sous le patronage
de l’association.

Mon avis perso est que oui, dans les formations LaTeX données de nos
jours on ne devrait plus mentionner \let mais seulement \NewCommandCopy.
Mais je me souviens de m’être fait traité de « fou furieux » par Denis
quand je lui ai dit, il y a un an ou deux, que si je devais faire une
formation LaTeX je ne parlerais que de LuaLaTeX… (je n’ai pas changé
d’avis depuis) je suis probablement un « extrémiste » de la modernité :slight_smile:

D’ailleurs, le LCIII présente toujours les anciens \newcommand,
\renewcommand and Co sans les taxer d’obsolescence ou en tout cas sans
prendre partie quant au fait que l’on pouvait continuer à les utiliser
dans les cas simples.

\newcommand et consorts ont encore de beaux jours devant eux. Le recours
à \NewDocumentComand (avec sa nouvelle syntaxe pour désigner les
arguments optionnels ou non) ne se justifie amha que si on a besoin de
plus d’un argument optionnel.


Daniel Flipo

Le 16/05/24 à 11h09, Daniel Flipo a écrit :

Mon avis perso est que oui, dans les formations LaTeX données de nos jours on ne devrait plus mentionner \let mais seulement \NewCommandCopy.

Je pense que peu de formations LaTeX causent de \let : il n’est quand même pas si fréquent d’en avoir besoin.

Mais je me souviens de m’être fait traité de « fou furieux » par Denis

Jamais je n’aurais osé ! De fou, oui, de furieux, certainement, mais pas les deux à la fois ! :wink:

quand je lui ai dit, il y a un an ou deux, que si je devais faire une formation LaTeX je ne parlerais que de LuaLaTeX… (je n’ai pas changé d’avis depuis) je suis probablement un « extrémiste » de la modernité :slight_smile:

Je pense que, il y a un an ou deux, je n’aurais pas dit ça car lualatex était déjà à ce moment-là devenu raisonnable en temps de compilation (à condition de s’en tenir à des polices OpenType pas trop gourmandes en temps de chargement), ce qui n’était pas le cas auparavant. Ce qui fait que je n’ai pas encore franchi le pas de ne présenter que lualatex et plus pdflatex est que les éditeurs de texte adoptent encore ce dernier comme moteur par défaut et que, donc, ça nécessiterait une configuration supplémentaire malvenue pour les débutants (qui ont déjà plein de trucs nouveaux à assimiler).

D’ailleurs, le LCIII présente toujours les anciens \newcommand, \renewcommand and Co sans les taxer d’obsolescence ou en tout cas sans prendre partie quant au fait que l’on pouvait continuer à les utiliser dans les cas simples.

\newcommand et consorts ont encore de beaux jours devant eux. Le recours à \NewDocumentComand (avec sa nouvelle syntaxe pour désigner les arguments optionnels ou non) ne se justifie amha que si on a besoin de plus d’un argument optionnel.

Ou si on veut faire une variante étoilée d’une macro personnelle.

Pour répondre à Michel, dans les formations LaTeX que je dispense, je n’enseigne désormais plus que l’usage de \NewDocumentComand car la syntaxe m’en semble infiniment plus simple et digeste ; mais la discussion qui se trouve ici :

┌──── │ https://tex.stackexchange.com/q/685866/18401 └────

montre que cela n’a pas que des avantages.

Denis

Le 16 mai 2024 à 11:09, Daniel Flipo xyz@xyz.tld a écrit :

Le 16/05/2024 à 10:38, Michel Bovani a écrit :

• La question de savoir si un LUG Gutenberg devrait ou non prendre parti, par exemple pour une formation qui aurait lieu sous le patronage de l’association.

Mon avis perso est que oui, dans les formations LaTeX données de nos jours on ne devrait plus mentionner \let mais seulement \NewCommandCopy.
Mais je me souviens de m’être fait traité de « fou furieux » par Denis quand je lui ai dit, il y a un an ou deux, que si je devais faire une formation LaTeX je ne parlerais que de LuaLaTeX… (je n’ai pas changé d’avis depuis) je suis probablement un « extrémiste » de la modernité :slight_smile:

Je t’avoue que ce qui me freine quand même un peu, c’est d’écrire

\DeclareDocumentCommand\fileversion{}{1.5}
Au lieu de
\def\fileversion{1.5}

Ou

\DeclareExpandableDocumentCommand@tempa{}{}
Au lieu de
\edef@tempa{}

Puis de devoir écrire ensuite un truc avec \ifx, voire \expandafter\ifx

Mais on peut peut-être espérer des des instructions de test et de boucles correctes finiront par apparaître dans le noyau !


Michel

Le 16 mai 2024 à 11:44, Denis Bitouzé xyz@xyz.tld a écrit :

Le 16/05/24 à 11h09, Daniel Flipo a écrit :

Mon avis perso est que oui, dans les formations LaTeX données de nos
jours on ne devrait plus mentionner \let mais seulement
\NewCommandCopy.

Je pense que peu de formations LaTeX causent de \let : il n’est quand
même pas si fréquent d’en avoir besoin.

En fait l’exemple de \Re est assez parlant (note que dans le second degré on n’utilise pas le \symfrak{R}, ne serait-ce parce que c’est difficile à faire au tableau). \let peut être utile (enfin pouvait l’être) même à des débutants.
De même toutes les manips du genre \let\biduleORI\bidule \renewcommand\bidule{définition utilisant \biduleORI}.

Mais je me souviens de m’être fait traité de « fou furieux » par Denis

Jamais je n’aurais osé ! De fou, oui, de furieux, certainement, mais pas
les deux à la fois ! :wink:

Ce qui se passe c’est que t’aimes pas les vieux qui sont plus jeunes que toi dans leur tête !

quand je lui ai dit, il y a un an ou deux, que si je devais faire une
formation LaTeX je ne parlerais que de LuaLaTeX… (je n’ai pas changé
d’avis depuis) je suis probablement un « extrémiste » de la
modernité :slight_smile:

Je pense que, il y a un an ou deux, je n’aurais pas dit ça car
lualatex était déjà à ce moment-là devenu raisonnable en temps de
compilation (à condition de s’en tenir à des polices OpenType pas trop
gourmandes en temps de chargement),

Ça a encore beaucoup progressé. J’ai des packages pour adobe Kepler ou adobe Myriad ou encore adobe minion avec maths qui contiennent énormément de fontes (160 pour Kepler). Passée la première utilisation, le temps de chargement n’excède pas 5 secondes. C’est toujours surprenant de voir le bidule s’arrêter 5 secondes, mais en vrai ça ne te laisse même pas le temps de te servir un café.

ce qui n’était pas le cas
auparavant. Ce qui fait que je n’ai pas encore franchi le pas de ne
présenter que lualatex et plus pdflatex est que les éditeurs de texte
adoptent encore ce dernier comme moteur par défaut et que, donc, ça
nécessiterait une configuration supplémentaire malvenue pour les
débutants (qui ont déjà plein de trucs nouveaux à assimiler).

Cela peut s’entendre, mais il y a moyen avec un menu très simple dans mon éditeur que rajouter la ligne salvatrice :
% !TEX TS-program = LuaLaTeX
En tout début de document et c’est de bonne politique de toute façon.

D’ailleurs, le LCIII présente toujours les anciens \newcommand, \renewcommand
and Co sans les taxer d’obsolescence ou en tout cas sans prendre partie quant
au fait que l’on pouvait continuer à les utiliser dans les cas simples.

\newcommand et consorts ont encore de beaux jours devant eux. Le recours
à \NewDocumentComand (avec sa nouvelle syntaxe pour désigner les arguments
optionnels ou non) ne se justifie amha que si on a besoin de plus d’un
argument optionnel.

Ou si on veut faire une variante étoilée d’une macro personnelle.

Pour répondre à Michel, dans les formations LaTeX que je dispense, je
n’enseigne désormais plus que l’usage de \NewDocumentComand car la
syntaxe m’en semble infiniment plus simple et digeste ; mais la discussion
qui se trouve ici :

┌────
https://tex.stackexchange.com/q/685866/18401
└────

montre que cela n’a pas que des avantages.

C’est comme le sketch de Coluche, en fait diront nos détracteurs (maudits soient-ils) : c’est plus long, faut faire le nœud.

Michel

Le 16 mai 2024 à 14:18, Michel Bovani xyz@xyz.tld a écrit :

\DeclareDocumentCommand\fileversion{}{1.5}
\DeclareExpandableDocumentCommand\fileversion{}{1.5}

Enfin voyons ! Je sens que ce petit jeu va être captivant.

J’ai un package inspiré de

Qui permet d’utiliser avec les grosses familles opentype les possibilités évoluées du dernier NFSS (voir ltxnews de février 2020).

J’essaie de passer cette choses aux nouvelles commandes et je dois dire que c’est un peu prise de tête.

Michel

Le 16/05/24 à 14h18, Michel Bovani a écrit :

\def\fileversion{1.5} \edef@tempa{}

Tu as intérêt à être certain que ce que tu redéfinis n’existe pas déjà dans le noyau ou dans l’un des packages que tu charges !

Denis

Bonjour, je rebondis sur un point secondaire du débat, en citant Michel B.

Attention, non pas aux charmes de LuaLaTeX (je suis un converti), mais
aux polices Adobe, me dit un ami éditeur.

Autant on peut incorporer des polices systèmes dans nos documents,
autant ça devient délicat lorsqu’on publie ces documents en ligne.

Le point est de peu d’importance pour les individus. Mais une maison
d’édition doit payer des droits (ex.: à Adobe) lorsqu’elle utilise des
polices système dans ses livres. Et ces droits sont beaucoup plus chers
pour de l’édition en ligne qu’imprimée. Je crains que, même pour des
ouvrages gratuits (et en ligne), il y a des risques de voir arriver des
factures.

Amicalement
Eric

Le 16/05/2024 à 12:35, Michel Bovani a écrit :

Ça a encore beaucoup progressé. J’ai des packages pour adobe Kepler ou
adobe Myriad ou encore adobe minion avec maths qui contiennent
énormément de fontes (160 pour Kepler). Passée la première utilisation,
le temps de chargement n’excède pas 5 secondes. C’est toujours
surprenant de voir le bidule s’arrêter 5 secondes, mais en vrai ça ne te
laisse même pas le temps de te servir un café.

Le 16/05/24 à 12h35, Michel Bovani a écrit :

En fait l’exemple de \Re est assez parlant (note que dans le second degré on n’utilise pas le \symfrak{R}, ne serait-ce parce que c’est difficile à faire au tableau).

Autant créer une nouvelle commande.

\let peut être utile (enfin pouvait l’être) même à des débutants. De même toutes les manips du genre \let\biduleORI\bidule \renewcommand\bidule{définition utilisant \biduleORI}.

Je ne conseillerais pas à des débutants de redéfinir des trucs !

Jamais je n’aurais osé ! De fou, oui, de furieux, certainement, mais pas les deux à la fois ! :wink:

Ce qui se passe c’est que t’aimes pas les vieux qui sont plus jeunes que toi dans leur tête !

Mais toi je t’aime car tu es /vraiment/ vieux !

Je pense que, il y a un an ou deux, je n’aurais pas dit ça car lualatex était déjà à ce moment-là devenu raisonnable en temps de compilation (à condition de s’en tenir à des polices OpenType pas trop gourmandes en temps de chargement),

Ça a encore beaucoup progressé. J’ai des packages pour adobe Kepler ou adobe Myriad ou encore adobe minion avec maths qui contiennent énormément de fontes (160 pour Kepler). Passée la première utilisation, le temps de chargement n’excède pas 5 secondes. C’est toujours surprenant

Ta langue aura fourché : tu auras bien sûr voulu dire « horripilant ».

de voir le bidule s’arrêter 5 secondes, mais en vrai ça ne te laisse même pas le temps de te servir un café.

C’est mauvais, tout ce breuvage qui fait dormir quand on n’en boit pas, à ton âge…

ce qui n’était pas le cas auparavant. Ce qui fait que je n’ai pas encore franchi le pas de ne présenter que lualatex et plus pdflatex est que les éditeurs de texte adoptent encore ce dernier comme moteur par défaut et que, donc, ça nécessiterait une configuration supplémentaire malvenue pour les débutants (qui ont déjà plein de trucs nouveaux à assimiler).

Cela peut s’entendre, mais il y a moyen avec un menu très simple dans mon éditeur que rajouter la ligne salvatrice : % !TEX TS-program = LuaLaTeX En tout début de document et c’est de bonne politique de toute façon.

Non : ça oblige à une manip’ dans chaque document : tu parles d’une entrée en matière pour des débutants ! Sans compter que, avec d’autres éditeurs (notamment le meilleur d’entre eux : Emacs), la syntaxe est différente.

C’est comme le sketch de Coluche, en fait diront nos détracteurs (maudits soient-ils) : c’est plus long, faut faire

« /dé/faire » (relis tes classiques, enfin !)

le nœud.

:slight_smile:

Denis

Le 16 mai 2024 à 17:02, Denis Bitouzé xyz@xyz.tld a écrit :

Le 16/05/24 à 14h18, Michel Bovani a écrit :

\def\fileversion{1.5}
\edef@tempa{}

Tu as intérêt à être certain que ce que tu redéfinis n’existe pas déjà
dans le noyau ou dans l’un des packages que tu charges !

Ces deux commandes sont faites pour être utilisées immédiatement. Pour \fileversion je pense que c’est lié au package doc qui doit être capable de le définir lui même à partir de ce qu’il y a dans le second argument de \ProvidePackage. Mais ça doit être sans inconvénient de faire

\def\fileversion{2.3}%
\def\filedate{2022/02/05}%
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{fourier}%
[\filedate\space\fileversion\space fourier-GUTenberg package]%

En tout cas, j’ai osé !

@tempa est utilisée dans tout latex généralement pour des trucs du genre
\def@tempa{#1}\def@tempb{bidule}\ifx@tempa@tempb…

Il est justement important de pouvoir les redéfinir à la demande.

Et avant l’ère résolument moderne, on avait le choix entre \def@tempa{#1} et
\providecommand*@tempa{}\renewcommand*@tempa{#1} ce qui est comment dire… enfin du vois, faire les nœuds, défaire les nœuds, toussa !

Michel

Le 16 mai 2024 à 12:47, Eric Guichard xyz@xyz.tld a écrit :

Bonjour, je rebondis sur un point secondaire du débat, en citant Michel B.

C’est un autre débat… J’ai juste cherché des exemples de très gros systèmes de fontes. En fouillant un peu j’saurais sans doute pu trouver des fontes publiques, quoiqu’Adobe reste quasiment le seul à proposer assez systématiquement des systèmes à corps optiques (ce qui multiplie le nombre de fontes par 4 ou 5).

Attention, non pas aux charmes de LuaLaTeX (je suis un converti), mais aux polices Adobe, me dit un ami éditeur.

Adobe ne vend plus de fontes, il les loue pour plus ou moins cher mais toujours avec un de ses logiciels. Tu peux alors utiliser les fontes avec ces logiciels ou pour un site web avec très peu de restrictions. Les fontes sont accessibles sur ton ordinateur aux logiciels adobe (donc tu les as pour pas cher avec Lightroom, si tu fais de la photo) et à des choses comme les logiciels microsoft installés sur ta machine, en gros à tout ce qui a accès au système d’exploitation et sait quoi faire d’une otf, mais malheureusement pas à TeX (sauf à ouvrir la fonte dans un éditeur de fontes et à l’éjecter sur ton disque dur, mais ça la licence ne doit pas le permettre). Si tu fabriques un pdf avec inDesign dont tu as payé l’abonnement, tu peux mettre ce pdf en ligne, pourvu qu’il ne soit pas éditable.

Les fontes adobe sont commercialisées par des sociétés comme fontspring, avec une « worry-free » licence (quelques centaines d’euros). Là encore tu peux mettre un pdf en ligne pourvu qu’il ne soit pas éditable. Ce qui est raisonnable.

Autant on peut incorporer des polices systèmes dans nos documents, autant ça devient délicat lorsqu’on publie ces documents en ligne.

Donc cela dépend des licences, il reste évidemment des fondeurs qui ne veulent absolument pas que tu utilises ce qu’ils te vendent, il suffit de les éviter.

Le vrai inconvénient des fontes commerciales n’est pas là: il est que ça ne se prête pas, ça ne se diffuse pas, bref, ça n’est pas du tout adapté au libre. Je mets régulièrement en ligne des pdf fabriqués avec TeX et des fontes commerciales. En toute légalité donc. Mais mettre le source TeX en ligne n’aurait pas d’intérêt, puisque sans les fontes la compilation est impossible.

On peut tout à fait penser (mais ça n’est pas mon cas) que dès lors que ces limitations sont présentes, acheter des fontes commerciales est un truc farfelu.

Le point est de peu d’importance pour les individus.

Mais une maison d’édition doit payer des droits (ex.: à Adobe) lorsqu’elle utilise des polices système dans ses livres. Et ces droits sont beaucoup plus chers pour de l’édition en ligne qu’imprimée.

C’est le cas pour des certaines fontes web (ie lecture en direct sur une page web), mais cela n’est nullement une règle générale pour du pdf non éditable. Ceci dit c’est difficile de gagner de l’argent avec un pdf en ligne !

Amicalement
Eric

Le 16/05/2024 à 12:35, Michel Bovani a écrit :

Ça a encore beaucoup progressé. J’ai des packages pour adobe Kepler ou adobe Myriad ou encore adobe minion avec maths qui contiennent énormément de fontes (160 pour Kepler). Passée la première utilisation, le temps de chargement n’excède pas 5 secondes. C’est toujours surprenant de voir le bidule s’arrêter 5 secondes, mais en vrai ça ne te laisse même pas le temps de te servir un café.


Michel Bovani
xyz@xyz.tld
https://anthroposaurus.fr https://anthroposaurus.fr/

Le 16 mai 2024 à 13:07, Denis Bitouzé xyz@xyz.tld a écrit :

Cela peut s’entendre, mais il y a moyen avec un menu très simple dans mon
éditeur que rajouter la ligne salvatrice :
% !TEX TS-program = LuaLaTeX
En tout début de document et c’est de bonne politique de toute façon.

Non : ça oblige à une manip’ dans chaque document : tu parles d’une
entrée en matière pour des débutants !

Alors franchement, si tu expliques à tes stagiaires que TeX est convivial, c’est bien simple, tu es un escroc.

Sans compter que, avec d’autres
éditeurs (notamment le meilleur d’entre eux : Emacs), la syntaxe est
différente.

Tu aggraves ton cas !

Michel

Le 16/05/24 à 13h37, Michel Bovani a écrit :

Le 16 mai 2024 à 13:07, Denis Bitouzé xyz@xyz.tld a écrit :

Non : ça oblige à une manip’ dans chaque document : tu parles d’une entrée en matière pour des débutants !

Alors franchement, si tu expliques à tes stagiaires que TeX est convivial, c’est bien simple, tu es un escroc.

Je m’en garde bien ! Et, de toute façon, ils constatent par eux-mêmes l’absence de convivialité. Mais, justement, les environnements de développement intégrés type TeXstudio (ou, mieux, Emacs) l’adoucissent considérablement.

Sans compter que, avec d’autres éditeurs (notamment le meilleur d’entre eux : Emacs), la syntaxe est différente.

Tu aggraves ton cas !

Utilisateur de TeXshop (donc démoniaque), tu es démasqué !

Denis