Passage de paramêtres

Bonjour liste,

J’ai un soucis avec le programme joint où je veux passer un paramètre dans une option de fontspec via une macro, qui elle même appelle d’autres commandes Luatex (mais pas sûr que ce soit lié).

Bref, l’exemple minimum joint m’envoie une erreur

Use of ??? doesn’t match its definition.
???
! LaTeX Error: Misplaced ‘=’ in key-value input on line 17
l.17 …F-Roman.ttf}[Weight=\Max{“cmr12”}{“wxyz”}]
lll

Si je supprime la dernière ligne, ça compile.

Je pense que c’est le passage des paramètres (bien qu’inutilisés) à \Max qui ne va pas, qu’il faut sans doute ajouter des \expand-qqchose, mais je nage…

Merci à qui pourra m’aider…

Jacques André

Compilé avec: This is LuaHBTeX, Version 1.21.0 (TeX Live 2025)

\documentclass{article}
\usepackage{fontspec}
\begin{document}
\font\MaFonte=cmr12\relax
\edef\Muc{300.0}
\edef\Min#1#2{400.0}
\edef\Max#1#2{\font\MaFonte=cmr12\relax500.0}

Muc=\Muc
Min(“a”,“b”)=\Min{“a”}{“b”}
Max(“a”,“b”)=\Max{“a”}{“b”}

\fontspec{JunicodeVF-Roman.ttf}[Weight={450}]kkk

\fontspec{JunicodeVF-Roman.ttf}[Weight=\Min{“cmr12”}{“wxyz”}]lll

\fontspec{JunicodeVF-Roman.ttf}[Weight=\Max{“cmr12”}{“wxyz”}]lll

\end{document}

Bonjour

Le message dit qu’il y a un signe = mal placé.

En effet, la ligne

\fontspec{JunicodeVF-Roman.ttf}[Weight=\Max{“cmr12”}{“wxyz”}]lll

devient, d’après la définition de \Max :

\fontspec{JunicodeVF-Roman.ttf}[Weight=\font\MaFonte=cmr12\relax500.0]lll

et il y a deux signes = qui se télescopent

François

Le 14/06/2025 à 15:19, Jacques André a écrit :

Bonjour liste,

J’ai un soucis avec le programme joint où je veux passer un paramètre dans une option de fontspec via une macro, qui elle même appelle d’autres commandes Luatex (mais pas sûr que ce soit lié).

Bref, l’exemple minimum joint m’envoie une erreur

Use of ??? doesn’t match its definition.
???
! LaTeX Error: Misplaced ‘=’ in key-value input on line 17
l.17 …F-Roman.ttf}[Weight=\Max{“cmr12”}{“wxyz”}]
lll

Si je supprime la dernière ligne, ça compile.

Je pense que c’est le passage des paramètres (bien qu’inutilisés) à \Max qui ne va pas, qu’il faut sans doute ajouter des \expand-qqchose, mais je nage…

Merci à qui pourra m’aider…

Jacques André

Compilé avec: This is LuaHBTeX, Version 1.21.0 (TeX Live 2025)

\documentclass{article}
\usepackage{fontspec}
\begin{document}
\font\MaFonte=cmr12\relax
\edef\Muc{300.0}
\edef\Min#1#2{400.0}
\edef\Max#1#2{\font\MaFonte=cmr12\relax500.0}

Muc=\Muc
Min(“a”,“b”)=\Min{“a”}{“b”}
Max(“a”,“b”)=\Max{“a”}{“b”}

\fontspec{JunicodeVF-Roman.ttf}[Weight={450}]kkk

\fontspec{JunicodeVF-Roman.ttf}[Weight=\Min{“cmr12”}{“wxyz”}]lll

\fontspec{JunicodeVF-Roman.ttf}[Weight=\Max{“cmr12”}{“wxyz”}]lll

\end{document}

Le 14 juin 2025 à 16:01, Pétiard François xyz@xyz.tld a écrit :

Bonjour

Le message dit qu’il y a un signe = mal placé.

En effet, la ligne

\fontspec{JunicodeVF-Roman.ttf}[Weight=\Max{“cmr12”}{“wxyz”}]lll

devient, d’après la définition de \Max :

\fontspec{JunicodeVF-Roman.ttf}[Weight=\font\MaFonte=cmr12\relax500.0]lll

et il y a deux signes = qui se télescopent

Merci pour l’explication.
Mais… comment faire pour « calculer » ma macro pour que TeX voit Weight=500 ???
Merci…

J.A.

Re-bonjour,

Je me répond à moi-même, au cas où ça intéresse quelqu’un, et surtout au cas où un autre confirme (ou infirme) ma solution…

Le 14 juin 2025 à 16:27, Jacques André xyz@xyz.tld a écrit :

Le 14 juin 2025 à 16:01, Pétiard François xyz@xyz.tld a écrit :

Bonjour

Le message dit qu’il y a un signe = mal placé.

En effet, la ligne

\fontspec{JunicodeVF-Roman.ttf}[Weight=\Max{“cmr12”}{“wxyz”}]lll

devient, d’après la définition de \Max :

\fontspec{JunicodeVF-Roman.ttf}[Weight=\font\MaFonte=cmr12\relax500.0]lll

et il y a deux signes = qui se télescopent

Merci pour l’explication.
Mais… comment faire pour « calculer » ma macro pour que TeX voit Weight=500 ???
Merci…

J.A.

À force de tâtonner, il me semble que les deux expressions

\font\MaFonte=cmr12\relax

et

\font\MaFonte{cmr12}

sont identiques.

En tout cas ça résout mon problème, du moins localement.

J.A.

Bonsoir,

À force de tâtonner, il me semble que les deux expressions

\font\MaFonte=cmr12\relax

et

\font\MaFonte{cmr12}

sont identiques.

En tout cas ça résout mon problème, du moins localement.

C’est exact, et c’est une règle plus générale de TeX, comme on peut le lire par exemple dans TeX in a nutshell, p. 9 (probablement accessible sur votre machine avec “texdoc tex-nutshell”).

Bien à vous,

Bastien Dumont