texlive[70031] branches/branch2023.final/Master/texmf-dist:

commits+karl at tug.org commits+karl at tug.org
Tue Feb 20 22:09:23 CET 2024


Revision: 70031
          https://tug.org/svn/texlive?view=revision&revision=70031
Author:   karl
Date:     2024-02-20 22:09:23 +0100 (Tue, 20 Feb 2024)
Log Message:
-----------
frenchmath (branch) (20feb24)

Modified Paths:
--------------
    branches/branch2023.final/Master/texmf-dist/doc/latex/frenchmath/frenchmath.pdf
    branches/branch2023.final/Master/texmf-dist/source/latex/frenchmath/frenchmath.dtx
    branches/branch2023.final/Master/texmf-dist/tex/latex/frenchmath/frenchmath.sty

Modified: branches/branch2023.final/Master/texmf-dist/doc/latex/frenchmath/frenchmath.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2023.final/Master/texmf-dist/source/latex/frenchmath/frenchmath.dtx
===================================================================
--- branches/branch2023.final/Master/texmf-dist/source/latex/frenchmath/frenchmath.dtx	2024-02-20 21:09:14 UTC (rev 70030)
+++ branches/branch2023.final/Master/texmf-dist/source/latex/frenchmath/frenchmath.dtx	2024-02-20 21:09:23 UTC (rev 70031)
@@ -20,7 +20,7 @@
 %<*package> 
 \NeedsTeXFormat{LaTeX2e}[2005/12/01]
 \ProvidesPackage{frenchmath}
-    [2024/01/22 v2.8 .dtx frenchmath file]
+    [2024/02/20 v2.9 .dtx Typesetting mathematics according to French rules]
 %</package>
 %<*driver>
 \documentclass{ltxdoc}
@@ -37,14 +37,18 @@
 
 \definecolor{darkbrown}{rgb}{0.5,0.1,0.1}
 \allsectionsfont{\color{darkbrown}}
-\DeclareSymbolFont{ugrfm}{U}{psy}{m}{n} % pour les lettres de upgreek avec l'option Symbol
+% pour les lettres de upgreek avec l'option Symbol :
+\DeclareSymbolFont{ugrfm}{U}{psy}{m}{n}
 \DeclareMathSymbol{\upalphasym}{\mathord}{ugrfm}{`a}
 \DeclareMathSymbol{\upbetasym}{\mathord}{ugrfm}{`b}
 \DeclareMathSymbol{\uppisym}{\mathord}{ugrfm}{`p}
-\DeclareSymbolFont{cmsymbols}{OMS}{cmsy}{m}{n} % symbole \emptyset de computer modern
+% symbole \emptyset de computer modern au cas où veut changer la police de ce doc :
+\DeclareSymbolFont{cmsymbols}{OMS}{cmsy}{m}{n} 
 \DeclareMathSymbol{\cmemptyset}{\mathord}{cmsymbols}{'73} % code octal dans cmsy
-\DeclareTextSymbol{\textmicro}{TS1}{181} % mu de micro
+% pour avoir le mu de micro :
+\DeclareTextSymbol{\textmicro}{TS1}{181}
 \DeclareTextSymbolDefault{\textmicro}{TS1}
+
 \DisableCrossrefs
 %\CodelineIndex
 %\RecordChanges
@@ -65,7 +69,7 @@
 %</driver>
 % \fi
 %
-% \CheckSum{519}
+% \CheckSum{594}
 %
 % \CharacterTable
 %  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -172,12 +176,19 @@
 % \changes{v2.8}{22/01/2024}{
 %    - Prise en compte de l'extension mathalpha qui fournit d'autres lettres cursives.}
 %
+% \changes{v2.9}{17/02/2024}{
+%    - Compatibilité entre amssymb et unicode-math réglée (par des relax)
+%        -> permet à la macro varnothing de garder l'aspect de amssymb,
+%    - compatibilité des options de lettres grecques avec unicode-math (XeLaTeX uniquement)
+%        -> nouvelles macros SaveGreekItalics et upgreekUndefined,
+%    - commentaires dans la doc pour la compatibilité avec unicode-math.}
+%
 % \GetFileInfo{frenchmath.sty}
 %
 % \title{L'extension \textsf{frenchmath}\thanks{Ce document
-%     correspond à \textsf{frenchmath}~\fileversion, dernière modification le 22/01/2024.}}
+%     correspond à \textsf{frenchmath}~\fileversion, dernière modification le 20/02/2024.}}
 % \author{Antoine Missier \\ \texttt{antoine.missier at ac-toulouse.fr}}
-% \date{22 janvier 2024}
+% \date{20 février 2024}
 % \maketitle
 %
 % \section{Introduction}
@@ -195,9 +206,9 @@
 % des symboles français aux symboles anglais.
 %
 % D'autres solutions existent pour composer les majuscules mathématiques en romain,
-% par exemple l'extension \textsf{unicode-math} mais qui doit être compilée
-% avec \XeLaTeX\ ou \LuaLaTeX  ;
-% avec pdf\LaTeX\, nous avons les extensions \textsf{fourier} de Michel Bovani~\cite{FOUR} 
+% par exemple l'extension \textsf{unicode-math}~\cite{UNIC} mais qui doit être compilée
+% avec \XeLaTeX\ ou \LuaLaTeX\ (et doit être chargée \emph{avant} \textsf{frenchmath}) ;
+% pour pdf\LaTeX\, nous avons les extensions \textsf{fourier} de Michel Bovani~\cite{FOUR} 
 % (avec la famille des fontes Adobe Utopia)
 % ou encore \textsf{mathdesign} de Paul Pichaureau~\cite{DESIGN} 
 % (avec les polices Adobe Utopia, URW Garamond ou Bitstream Charter). 
@@ -219,10 +230,10 @@
 % des ensembles de nombres |\R|, |\N|\ldots (pour $\mathbf{R}, \mathbf{N}\ldots$)
 % ainsi que celles relatives à la réalisation de feuilles d'exercices.
 %
-% Mentionnons par ailleurs l'extension \textsf{tablvar}~\cite{TABL} qui permet de réaliser 
-% de jolis tableaux de variations, spécificité des mathématiques françaises,
-% ou encore \textsf{tdsfrmath} de Yvon Henel~\cite{FRM}
-% qui fournit également beaucoup de commandes francisées.
+% Mentionnons par ailleurs l'extension \textsf{tdsfrmath} de Yvon Henel~\cite{FRM}
+% qui fournit également beaucoup de commandes francisées ou encore
+% \textsf{tablvar}~\cite{TABL} qui permet de réaliser 
+% de jolis tableaux de variations, spécificité des mathématiques françaises.
 %
 % Depuis la version 2.0, \textsf{frenchmath} propose deux options permettant
 % de composer les minuscules grecques du mode mathématique en forme droite.
@@ -307,9 +318,9 @@
 % séparateur décimal, il fait l'objet d'une extension séparée,
 % \textsf{decimalcomma}~\cite{DECC}, qui est chargée par \textsf{frenchmath}
 % (depuis la version 2.7).
-% Mais il est alors impératif de charger \textsf{unicode-math} \emph{avant} 
-% \textsf{frenchmath} 
-% \footnote{L'extension \textsf{icomma} présente la même limitation et doit être chargé
+% Mais si on utilise \textsf{unicode-math}, il est alors impératif de le charger 
+% \emph{avant} \textsf{frenchmath} 
+% \footnote{L'extension \textsf{icomma} présente la même limitation et doit être chargée
 % après \textsf{unicode-math}.}.
 %
 % \medskip
@@ -340,7 +351,7 @@
 % \footnote{D'autres solutions existent,
 % par exemple avec l'extension \textsf{interval}
 % ou encore avec la macro \texttt{\string\DeclarePairedDelimiter}
-% de \textsf{mathtools}, mais utilisée avec des crochets,
+% de \textsf{mathtools}~\cite{TOOLS}, mais utilisée avec des crochets,
 % cette dernière est incompatible avec \textsf{ibrackets}, 
 % d'où la possibilité de désactiver \textsf{ibrackets}.}.
 % Le code 
@@ -381,7 +392,7 @@
 % ($\mathcal{A}, \mathcal{B}, \mathcal{C}, \mathcal{D}\ldots$).
 % En principe \textsf{frenchmath} charge l'extension \textsf{mathrsfs}
 % qui fournit ces lettres cursives, 
-% sauf si la commande |\mathscr| est déjà définie par ailleurs,
+% sauf si la commande |\mathscr| est définie par ailleurs,
 % en particulier si on utilise l'extension \textsf{mathdesign}~\cite{DESIGN}
 % ou l'option \texttt{scr} de \textsf{mathalpha}~\cite{MATAL}
 % \footnote{L'extension \textsf{mathalpha} de Michael Sharpe
@@ -503,15 +514,15 @@
 % \subsection{Lettres grecques}
 % La norme concernant l'usage des lettres grecques en italique ou en forme droite
 % pour les mathématiques françaises ne semble pas aussi claire que pour les lettres romaines
-% et les auteurs 
-% divergent sur ce point. Plusieurs recommandent l'usage des lettres grecques
-% minuscules en forme droite~\cite{FOUR}~\cite{DESIGN}~\cite{PMISO}, mais d'autres
-% préconisent l'italique,
+% et il y a parfois divergence sur ce point. 
+% Beaucoup recommandent l'usage des lettres grecques
+% minuscules en forme droite~\cite{FOUR}~\cite{DESIGN}~\cite{PMISO}, mais certains
+% auteurs préconisent l'italique,
 % comme pour toutes les variables mathématiques~\cite{AA}.
 % Le lexique des règles typographiques en usage à l’Imprimerie Nationale~\cite{RTIN}
 % les compose en forme droite et relativement grasses (p.108) 
 % sans préciser s'il s'agit vraiment d'une règle
-% s'appliquant aux variables, au même titre que celles énoncées pour l'alphabet latin.
+% s'appliquant aux variables, au même titre que celle énoncée pour l'alphabet latin.
 %
 % \medskip
 % Pour les physiciens (et chimistes) l'affaire est plus claire puisque 
@@ -519,6 +530,8 @@
 % romain (forme droite), conformément à la norme ISO~\cite{TYPMA}~\cite{NIST}~\cite{ICTNS}. 
 % Ainsi la constante $\pi \approx 3,14$ ne s'écrit pas de la même manière
 % qu'une variable $\itpi$.
+% 
+% \medskip
 % Dans la section \og How to get upright small Greek letters \fg,
 % la documentation de \textsf{isomath} de Günter Milde~\cite{ISOM} 
 % expose différentes méthodes pour obtenir les lettres grecques
@@ -531,8 +544,9 @@
 % Citons également \textsf{newpxmath}, \textsf{newtxmath} 
 % \footnote{L'extension \textsf{newtxmath} doit être chargée
 % après \textsf{frenchmath} qui utilise \textsf{amssymb} car la compilation
-% produit sinon un message d'erreur pour la commande
-% \texttt{\string\Bbbk}.}
+% produit sinon un message d'erreur ;
+% ou sinon on peut ajouter \texttt{\string\let\string\Bbbk\string\relax}
+% avant de charger \textsf{frenchmath}.}
 % et \textsf{libertinust1math} 
 % de Michael Sharpe,
 % \textsf{pxgreeks}, \textsf{txgreeks} 
@@ -546,20 +560,30 @@
 % qui donnent de beaux résultats pour une utilisation avec 
 % respectivement les polices Palatino, Times et Libertinus.
 %
-% Enfin, comme pour les majuscules, \XeLaTeX\ ou \LuaLaTeX\ réalisent cette tâche
-% automatiquement avec l'option \texttt{math-style=french} de l'extension \textsf{unicode-math}. 
-%
-% \medskip
 % Jean-François Burnol a également développé l'extension \textsf{lgrmath}~\cite{LGR}
 % qui permet d'utiliser, en mode mathématique, les différentes fontes de lettres
 % grecques accessibles par \LaTeX\ avec l'encodage LGR. La documentation
 % de l'extension indique comment consulter et utiliser les fontes accessibles 
-% sur votre distribution. 
+% sur votre distribution.
 %
 % \medskip
+% Enfin, comme pour les majuscules, l'extension \textsf{unicode-math}
+% réalise cette tâche automatiquement avec l'option \texttt{math-style=french},
+% mais nécessite une compilation avec \XeLaTeX\ ou \LuaLaTeX. 
+%
+% \medskip
+% L'extension \textsf{frenchmath} fournit les options décrites ci-dessous
+% afin d'obtenir les lettres grecques en forme droite.
+% Ces options peuvent être utilisées y compris avec \textsf{unicode-math},
+% mais seulement en compilant avec \XeLaTeX\ et non pas \LuaLaTeX\
+% (et \textsf{unicode-math} doit être chargé 
+% \emph{avant} \textsf{frenchmath}).
+%
+%
+% \medskip
 % \DescribeEnv{[lgrmath]}
 % En activant l'option \texttt{lgrmath}, \textsf{frenchmath}  
-% charge cette extension avec son option \texttt{style=french} 
+% charge l'extension du même nom avec son option \texttt{style=french} 
 % et la fonte fcm (de l'extension \textsf{cm-lgc})
 % \footnote{Évidemment il faut que \textsf{cm-lgc} soit installée
 % sur votre distribution sans quoi la fonte de substitution LGR/cmr/m/n sera utilisée.}.
@@ -571,9 +595,18 @@
 % $\alphait$, $\betait$, \ldots, $\piit$, etc.
 % Ces dernières sont peu à notre goût, mais on conserve les lettres
 % d'origine avec |\italpha|, |\itbeta| : $\italpha$, $\itbeta$, \ldots, $\itpi$, etc.
+%
+% \DescribeMacro{\SaveGreekItalics}
 % On peut aussi choisir d'autres fontes en chargeant l'extension
-% \textsf{lgrmath} indépendamment de \textsf{frenchmath}
-% (voir par exemple avec l'option \texttt{font=Alegreya-LF} ou \texttt{font=Cochineal-LF}).
+% \textsf{lgrmath} indépendamment de \textsf{frenchmath} et sans son option \texttt{lgrmath}
+% (voir par exemple les options \texttt{font=Alegreya-LF} ou \texttt{font=Cochineal-LF}
+% de \textsf{lgrmath}).
+% Dans ce cas, si on veut conserver les lettres italiques d'origine,
+% il faut précéder le chargement
+% de \textsf{lgrmath} de la commande |\SaveGreekItalics| ;
+% et si on utilise \textsf{unicode-math}, il faut en outre placer cette commande
+% et le |\usepackage[...]{lgrmath}| dans un |\AtBeginDocument|.
+
 %
 % \medskip
 % \DescribeEnv{[upgreek]}
@@ -586,6 +619,7 @@
 % avec une police comme Times par exemple.}
 % utilisant la police Adobe Symbol et qui produit des lettres grecques assez grasses : 
 % $\upalphasym$, $\upbetasym$, \ldots, $\uppisym$, etc.
+%
 % Si l'on veut, par contre, utiliser l'extension \textsf{upgreek}
 % avec l'une des deux autres options disponibles, \texttt{Euler}
 % (qui produit $\upalpha, \upbeta, \ldots, \uppi$, etc.)
@@ -594,11 +628,24 @@
 % indépendamment de \textsf{frenchmath}.
 % Mais en conservant toutefois l'option \texttt{upgreek}, \textsf{frenchmath} 
 % redéfinira les commandes |\alpha|, |\beta|, etc. 
-% pour composer automatiquement les lettres en forme droite ; 
-% les formes italiques d'origine, 
-% restant toujours disponibles avec les commandes 
-% |\italpha|, |\itbeta|, \ldots, |\itpi|, etc.
+% pour composer automatiquement les lettres en forme droite
+% (comme alias de |\upalpha|, |\upbeta|\ldots).
 %
+% \DescribeMacro{\upgreekUndefined}
+% Comme pour \textsf{lgrmath}, si on veut que les formes italiques d'origine
+% restent toujours disponibles avec les commandes 
+% |\italpha|, |\itbeta|, \ldots, |\itpi|, etc.,
+% il faut précéder le chargement de l'extension \textsf{upgreek} de la commande 
+% |\SaveGreekItalics| ;
+% et si l'on utilise \textsf{unicode-math}, il faut en outre ajouter la commande
+% |\upgreekUndefined| avant le |\usepackage[...]{upgreek}| et les trois
+% dans un |\AtBeginDocument| placé entre le chargement de \textsf{unicode-math}
+% et celui de \textsf{frenchmath}
+% \footnote{Tout cela est bien contraignant mais c'est lié au fonctionnement capricieux
+% de \textsf{unicode-math} qui génère de nombreuses incompatibilités. Ceci dit,
+% on n'a en principe besoin de nos options de lettres grecques droites que si l'on n'est
+% pas satisfait de celles fournies par \textsf{unicode-math}.}.
+%
 % \medskip
 % \DescribeEnv{[Upgreek]}
 % Avec \LaTeX, les lettres grecques majuscules sont automatiquement composées
@@ -630,6 +677,7 @@
 % (depuis 2020) car elle redéfinit \texttt{\string\textmu}.},
 % disponible en mode texte dans beaucoup de fontes (ou avec \textsf{textcomp}) ;
 % il diffère du $\mu$ droit mathématique.
+%
 % \StopEventually{}
 %
 % \section{Le code}
@@ -637,49 +685,52 @@
 %    \begin{macrocode}
 \newif\ifcapsit
 \DeclareOption{capsit}{\capsittrue}
-\newif\iffrenchmathgreek % pour sauvegarder les lettres d'origine
 \newif\iflgrmath
-\DeclareOption{lgrmath}{\lgrmathtrue\frenchmathgreektrue}
+\DeclareOption{lgrmath}{\lgrmathtrue}
 \newif\ifupgreek
-\DeclareOption{upgreek}{\upgreektrue\frenchmathgreektrue}
+\DeclareOption{upgreek}{\upgreektrue}
 \newif\ifUpgreek
-\DeclareOption{Upgreek}{\Upgreektrue\upgreektrue\frenchmathgreektrue}
+\DeclareOption{Upgreek}{\Upgreektrue\upgreektrue}
 \newif\ifnoibrackets
 \DeclareOption{noibrackets}{\noibracketstrue}
 \ProcessOptions \relax
 
-\AtBeginDocument{
+\@ifpackageloaded{unicode-math}{
     \@ifpackageloaded{mathdesign}{
-        \PackageInfo{frenchmath}{Package mathdesign 
+        \PackageInfo{frenchmath}{Package mathdesign
             is loaded, \MessageBreak
-            I don't load mathrsfs and amssymb packages}
+            I don't load mathrsfs and amssymb}
     }{
+        %\let\circledS\relax % utilisé uniquement par mathdesign
+        \let\eth\relax   % 3 incompatibilités unicode-math / amssymb
+        \let\digamma\relax
+        \let\backepsilon\relax
+        \RequirePackage{amssymb}
+        \PackageInfo{frenchmath}{Package unicode-math
+            is loaded, \MessageBreak
+            I don't load mathrsfs}
+    }
+    \let\vide\varnothing % \varnothing sera écrasé par unicode-math
+}{
+  \AtBeginDocument{
+    \@ifpackageloaded{mathdesign}{
+        \PackageInfo{frenchmath}{Package mathdesign
+            is loaded, \MessageBreak
+            I don't load mathrsfs and amssymb}
+    }{
         \RequirePackage{amssymb} % \leqslant, \geqslant, \varnothing
-        \@ifundefined{mathscr}{\RequirePackage{mathrsfs}}{}
+        \@ifundefined{mathscr}{\RequirePackage{mathrsfs}}{
+            \PackageInfo{frenchmath}{Command \string\mathscr\space
+                already defined, \MessageBreak
+                I don't load mathrsfs}        
+        }
     }
+  }
 }
 \RequirePackage{amsopn} % fournit \DeclareMathOperator
 \@ifpackageloaded{mathptmx}{\RequirePackage{dotlessj}}{}
-
-%    \end{macrocode}
-% Ce n'est qu'à la fin du préambule, donc avec |\AtBeginDocument|, que l'on examine
-% si les extensions \textsf{lgrmath} ou \textsf{upgreek} sont déjà chargées,
-% pour laisser à l'utilisateur la possibilité de les charger après \textsf{frenchmath}
-% et éviter un conflit d'option.
-%    \begin{macrocode}
-\AtBeginDocument{
-  \iflgrmath
-    \@ifpackageloaded{lgrmath}{}{
-        \RequirePackage[font=fcm,style=french]{lgrmath}}
-  \fi
-  \ifupgreek
-    \@ifpackageloaded{upgreek}{}{
-        \RequirePackage[Symbol]{upgreek}}
-  \fi
-}
 \RequirePackage{xspace} % utile pour les commandes \ssi, \Oij
 \ifnoibrackets\else\RequirePackage{ibrackets}\fi % intelligent brackets
-
 \RequirePackage{decimalcomma} %  depuis frenchmath 2.7
 
 %    \end{macrocode}
@@ -706,7 +757,8 @@
 % Cette macro a été définie de manière identique dans \textsf{mismath}, 
 % mais cela ne génère pas d'incompatibilité.}.
 % |\AtBeginDocument| est nécessaire pour que ces définitions 
-% soient prises en compte avec la classe \textsf{beamer} par exemple.
+% soient prises en compte avec la classe \textsf{beamer} par exemple,
+% ou avec \textsf{unicode-math}.
 % \smallskip
 %    \begin{macrocode}
 \newcommand*\DeclareMathUp[1]{
@@ -717,9 +769,8 @@
     \else #1{#2}\afterfi@{\apply@#1}\fi}
 \def\afterfi@#1#2\fi{\fi#1}
 
-\ifcapsit\else
-  \AtBeginDocument{
-    \apply\DeclareMathUp{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
+\ifcapsit\else\AtBeginDocument{
+  \apply\DeclareMathUp{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
   }
 \fi    
 
@@ -732,7 +783,7 @@
 \newcommand\curs{\mathscr}
 \newcommand\infeg{\leqslant}
 \newcommand\supeg{\geqslant}
-\newcommand\vide{\varnothing}
+\@ifundefined{vide}{\newcommand\vide{\varnothing}}{}
 %    \end{macrocode}
 % La définition de |\paral| remplace, depuis la version 2.2,
 % l'ancienne définition plus simple |\mathrel{/\!\!/}|, mais qui donnait des barres 
@@ -798,53 +849,92 @@
     \xspace}
 
 %    \end{macrocode}
-% On sauvegarde les lettres grecques d'origine dans les macros |\italpha|, \ldots, |\itomega|.
-% Le booléen |frenchmathgreek| a été activé par les options de lettres grecques
-% \texttt{lgrmath}, \texttt{upgreek} ou \texttt{Upgreek}.
+% Ce n'est qu'à la fin du préambule, donc avec |\AtBeginDocument|, que l'on examine
+% les options \texttt{lgrmath} ou \texttt{upgreek},
+% pour que cela fonctionne avec \textsf{unicode-math} et
+% pour laisser à l'utilisateur la possibilité de charger \textsf{upgreek} 
+% après \textsf{frenchmath} et éviter un conflit d'option.
+% On sauvegarde les lettres grecques d'origine dans les macros |\italpha|, \ldots, |\itomega|,
+% grâce à la commande |\SavedGreekItalics|.
+% La macro |\upgreekUndefined| ne sert que si l'on veut utiliser \textsf{upgreek}
+% avec \textsf{unicode-math} : elle permet de \og vider \fg la définition
+% de |\upalpha|, |\upbeta|\ldots, car sinon leur redéfinition par \textsf{upgreek}
+% est impossible.
 %    \begin{macrocode}
-\iffrenchmathgreek
-    \@ifundefined{italpha}{\let\italpha\alpha}{
-        \PackageWarningNoLine{frenchmath}{Command
-            \string\italpha\space already exist \MessageBreak
-            and will not be redefined, \MessageBreak
-            no more warning for the other Greek letters, \MessageBreak
-            except pi}
-    }
-    \@ifundefined{itbeta}{\let\itbeta\beta}{}
-    \@ifundefined{itgamma}{\let\itgamma\gamma}{}
-    \@ifundefined{itdelta}{\let\itdelta\delta}{}
-    \@ifundefined{itepsilon}{\let\itepsilon\epsilon}{}
-    \@ifundefined{itzeta}{\let\itzeta\zeta}{}
-    \@ifundefined{iteta}{\let\iteta\eta}{}
-    \@ifundefined{ittheta}{\let\ittheta\theta}{}
-    \@ifundefined{itiota}{\let\itiota\iota}{}
-    \@ifundefined{itkappa}{\let\itkappa\kappa}{}
-    \@ifundefined{itlambda}{\let\itlambda\lambda}{}
-    \@ifundefined{itmu}{\let\itmu\mu}{}
-    \@ifundefined{itnu}{\let\itnu\nu}{}
-    \@ifundefined{itxi}{\let\itxi\xi}{}
-    \@ifundefined{itpi}{\let\itpi\pi}{
-       \PackageWarningNoLine{frenchmath}{Command
-            \string\itpi\space already exist \MessageBreak
-            and will not be redefined}
-    }
-    \@ifundefined{itrho}{\let\itrho\rho}{}
-    \@ifundefined{itsigma}{\let\itsigma\sigma}{}
-    \@ifundefined{ittau}{\let\ittau\tau}{}
-    \@ifundefined{itupsilon}{\let\itupsilon\upsilon}{}
-    \@ifundefined{itphi}{\let\itphi\phi}{}
-    \@ifundefined{itchi}{\let\itchi\chi}{}
-    \@ifundefined{itpsi}{\let\itpsi\psi}{}
-    \@ifundefined{itomega}{\let\itomega\omega}{}
-    \@ifundefined{itvarepsilon}{\let\itvarepsilon\varepsilon}{}
-    \@ifundefined{itvartheta}{\let\itvartheta\vartheta}{}
-    \@ifundefined{itvarpi}{\let\itvarpi\varpi}{}
-    \@ifundefined{itvarsigma}{\let\itvarsigma\varsigma}{}
-    \@ifundefined{itvarphi}{\let\itvarphi\varphi}{}
-\fi
+\newcommand\SaveGreekItalics{
+    \let\italpha\alpha
+    \let\itbeta\beta
+    \let\itgamma\gamma
+    \let\itdelta\delta
+    \let\itepsilon\epsilon
+    \let\itzeta\zeta
+    \let\iteta\eta
+    \let\ittheta\theta
+    \let\itiota\iota
+    \let\itkappa\kappa
+    \let\itlambda\lambda
+    \let\itmu\mu
+    \let\itnu\nu
+    \let\itxi\xi
+    \let\itpi\pi
+    \let\itrho\rho
+    \let\itsigma\sigma
+    \let\ittau\tau
+    \let\itupsilon\upsilon
+    \let\itphi\phi
+    \let\itchi\chi
+    \let\itpsi\psi
+    \let\itomega\omega
+    \let\itvarepsilon\varepsilon
+    \let\itvartheta\vartheta
+    \let\itvarpi\varpi
+    \let\itvarsigma\varsigma
+    \let\itvarphi\varphi
+}
 
+\newcommand\upgreekUndefined{
+    \let\upalpha\@undefined
+    \let\upbeta\@undefined
+    \let\upgamma\@undefined
+    \let\updelta\@undefined
+    \let\upepsilon\@undefined
+    \let\upzeta\@undefined
+    \let\upeta\@undefined
+    \let\uptheta\@undefined
+    \let\upiota\@undefined
+    \let\upkappa\@undefined
+    \let\uplambda\@undefined
+    \let\upmu\@undefined
+    \let\upnu\@undefined
+    \let\upxi\@undefined
+    \let\uppi\@undefined
+    \let\uprho\@undefined
+    \let\upsigma\@undefined
+    \let\uptau\@undefined
+    \let\upupsilon\@undefined
+    \let\upphi\@undefined
+    \let\upchi\@undefined
+    \let\uppsi\@undefined
+    \let\upomega\@undefined
+    \let\upvarepsilon\@undefined
+    \let\upvartheta\@undefined
+    \let\upvarpi\@undefined
+    \let\upvarrho\@undefined
+    \let\upvarsigma\@undefined
+    \let\upvarphi\@undefined    
+}
+
 \AtBeginDocument{
+  \iflgrmath
+    \SaveGreekItalics
+    \RequirePackage[font=fcm,style=french]{lgrmath}
+  \fi
   \ifupgreek
+    \@ifpackageloaded{upgreek}{}{
+      \@ifpackageloaded{unicode-math}{\upgreekUndefined}{}
+      \SaveGreekItalics
+      \RequirePackage[Symbol]{upgreek}
+    }
     \renewcommand\alpha{\upalpha}
     \renewcommand\beta{\upbeta}
     \renewcommand\gamma{\upgamma}
@@ -875,8 +965,8 @@
     \renewcommand\varsigma{\upvarsigma}
     \renewcommand\varphi{\upvarphi}
   \fi
-
   \ifUpgreek
+    % unicode-math utilise \upGamma, \upDelta...
     \renewcommand\Gamma{\Upgamma}
     \renewcommand\Delta{\Updelta}
     \renewcommand\Theta{\Uptheta}
@@ -893,7 +983,7 @@
 %    \end{macrocode}
 %
 % \medskip
-% \begin{thebibliography}{29}
+% \begin{thebibliography}{31}
 % \begin{raggedright}
 % \bibitem{RTIN} \emph{Lexique des règles typographiques en usage à l’Imprimerie Nationale},
 % édition du 26/08/2002.
@@ -921,18 +1011,21 @@
 % Claudio Beccari, CTAN, v1.2.00 2021/08/04.
 % \bibitem{MAFR} \emph{La distribution \textsf{mafr}}, Christian Obrecht, 
 % CTAN, v1.0 17/09/2006.
+% \bibitem{UNIC} \emph{Experimental Unicode mathematical typesetting: 
+% The \textsf{unicode-math} package}, Will Robertson, Philipp Stephani, Joseph Wright, 
+% Khaled Hosny, and others, CTAN, v0.8r 13/08/2023.
 % \bibitem{FOUR} \textsf{Fourier-GUT\hspace{-0.1em}\emph{enberg}},
 % Michel Bovani, CTAN, v1.3 30/01/2005.
 % \bibitem{DESIGN} \emph{The \textsf{mathdesign} package},
 % Paul Pichaureau, CTAN, v2.31 29/08/2013.
 % \bibitem{MIS} \emph{\textsf{mismath} -- Miscellaneous mathematical macros},
-% Antoine Missier, CTAN, v2.8 27/07/2023.
+% Antoine Missier, CTAN, v2.10 20/02/2024.
 % \bibitem{VECT} \emph{\textsf{esvect}  -- Typesetting vectors with beautiful 
 % arrow with \LaTeXe}, Eddie Saudrais, CTAN, v1.3 11/07/2013.
+% \bibitem{FRM} \emph{L'extension \textsf{tdsfrmath}}, Yvon Henel, 
+% CTAN, v1.3 22/06/2009.
 % \bibitem{TABL} \emph{L'extension \textsf{tablvar}}, Antoine Missier,
 % CTAN, v2.0 23/12/2023.
-% \bibitem{FRM} \emph{L'extension \textsf{tdsfrmath}}, Yvon Henel, 
-% CTAN, v1.3 22/06/2009.
 % \bibitem{BABEL} \emph{A Babel language definition file for French}, extension \LaTeX\ 
 % \textsf{babel-french} de Daniel Flipo, CTAN, v3.5c 14/09/2018.
 % \bibitem{ICOMMA} \emph{The \textsf{icomma} package for \LaTeXe}. 
@@ -943,9 +1036,11 @@
 % 2011, No.\@1.
 % \url{https://tug.org/pracjourn/2011-1/beccari/Intcomma.pdf}
 % \bibitem{DECC} \emph{The \textsf{decimalcomma} package}. Antoine Missier,
-% CTAN, v1.1 19/12/2023.
+% CTAN, v1.4 30/12/2023.
 % \bibitem{BRACKETS} \emph{Intelligent brackets -- The \textsf{ibrackets} package},
-% Antoine Missier, v1.1 26/12/2022.
+% Antoine Missier, v1.2 26/07/2023.
+% \bibitem{TOOLS} \emph{The \textsf{mathtools} package}, 
+% Morten Høgholm, Lars Madsen and the \LaTeX3 project, CTAN v1.29 29/06/2022.
 % \bibitem{MATAL} \emph{The \textsf{mathalpha}, \textsc{aka} \textsf{mathalfa} package}, 
 % Michael Sharpe, CTAN, v1.143 18/11/2021.
 % \bibitem{DLJ} \emph{\textsf{dotlessj}}, David Carlisle, CTAN, v0.03 09/12/1998.

Modified: branches/branch2023.final/Master/texmf-dist/tex/latex/frenchmath/frenchmath.sty
===================================================================
--- branches/branch2023.final/Master/texmf-dist/tex/latex/frenchmath/frenchmath.sty	2024-02-20 21:09:14 UTC (rev 70030)
+++ branches/branch2023.final/Master/texmf-dist/tex/latex/frenchmath/frenchmath.sty	2024-02-20 21:09:23 UTC (rev 70031)
@@ -22,46 +22,56 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2005/12/01]
 \ProvidesPackage{frenchmath}
-    [2024/01/22 v2.8 .dtx frenchmath file]
+    [2024/02/20 v2.9 .dtx Typesetting mathematics according to French rules]
+
 \newif\ifcapsit
 \DeclareOption{capsit}{\capsittrue}
-\newif\iffrenchmathgreek % pour sauvegarder les lettres d'origine
 \newif\iflgrmath
-\DeclareOption{lgrmath}{\lgrmathtrue\frenchmathgreektrue}
+\DeclareOption{lgrmath}{\lgrmathtrue}
 \newif\ifupgreek
-\DeclareOption{upgreek}{\upgreektrue\frenchmathgreektrue}
+\DeclareOption{upgreek}{\upgreektrue}
 \newif\ifUpgreek
-\DeclareOption{Upgreek}{\Upgreektrue\upgreektrue\frenchmathgreektrue}
+\DeclareOption{Upgreek}{\Upgreektrue\upgreektrue}
 \newif\ifnoibrackets
 \DeclareOption{noibrackets}{\noibracketstrue}
 \ProcessOptions \relax
 
-\AtBeginDocument{
+\@ifpackageloaded{unicode-math}{
     \@ifpackageloaded{mathdesign}{
         \PackageInfo{frenchmath}{Package mathdesign
             is loaded, \MessageBreak
-            I don't load mathrsfs and amssymb packages}
+            I don't load mathrsfs and amssymb}
     }{
+        %\let\circledS\relax % utilisé uniquement par mathdesign
+        \let\eth\relax   % 3 incompatibilités unicode-math / amssymb
+        \let\digamma\relax
+        \let\backepsilon\relax
+        \RequirePackage{amssymb}
+        \PackageInfo{frenchmath}{Package unicode-math
+            is loaded, \MessageBreak
+            I don't load mathrsfs}
+    }
+    \let\vide\varnothing % \varnothing sera écrasé par unicode-math
+}{
+  \AtBeginDocument{
+    \@ifpackageloaded{mathdesign}{
+        \PackageInfo{frenchmath}{Package mathdesign
+            is loaded, \MessageBreak
+            I don't load mathrsfs and amssymb}
+    }{
         \RequirePackage{amssymb} % \leqslant, \geqslant, \varnothing
-        \@ifundefined{mathscr}{\RequirePackage{mathrsfs}}{}
+        \@ifundefined{mathscr}{\RequirePackage{mathrsfs}}{
+            \PackageInfo{frenchmath}{Command \string\mathscr\space
+                already defined, \MessageBreak
+                I don't load mathrsfs}
+        }
     }
+  }
 }
 \RequirePackage{amsopn} % fournit \DeclareMathOperator
 \@ifpackageloaded{mathptmx}{\RequirePackage{dotlessj}}{}
-
-\AtBeginDocument{
-  \iflgrmath
-    \@ifpackageloaded{lgrmath}{}{
-        \RequirePackage[font=fcm,style=french]{lgrmath}}
-  \fi
-  \ifupgreek
-    \@ifpackageloaded{upgreek}{}{
-        \RequirePackage[Symbol]{upgreek}}
-  \fi
-}
 \RequirePackage{xspace} % utile pour les commandes \ssi, \Oij
 \ifnoibrackets\else\RequirePackage{ibrackets}\fi % intelligent brackets
-
 \RequirePackage{decimalcomma} %  depuis frenchmath 2.7
 
 \newcommand*\DeclareMathUp[1]{
@@ -72,9 +82,8 @@
     \else #1{#2}\afterfi@{\apply@#1}\fi}
 \def\afterfi@#1#2\fi{\fi#1}
 
-\ifcapsit\else
-  \AtBeginDocument{
-    \apply\DeclareMathUp{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
+\ifcapsit\else\AtBeginDocument{
+  \apply\DeclareMathUp{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
   }
 \fi
 
@@ -84,7 +93,7 @@
 \newcommand\curs{\mathscr}
 \newcommand\infeg{\leqslant}
 \newcommand\supeg{\geqslant}
-\newcommand\vide{\varnothing}
+\@ifundefined{vide}{\newcommand\vide{\varnothing}}{}
 \newcommand\paral{\mathrel{\ooalign{$\mkern-1.75mu/\mkern1.75mu$\cr%
     $\mkern1.75mu/\mkern-1.75mu$}}}
 \newcommand\ssi{si, et seulement si,\xspace}
@@ -138,49 +147,80 @@
         \vec{\vphantom{t}\smash{k}}\,\right)}%
     \xspace}
 
-\iffrenchmathgreek
-    \@ifundefined{italpha}{\let\italpha\alpha}{
-        \PackageWarningNoLine{frenchmath}{Command
-            \string\italpha\space already exist \MessageBreak
-            and will not be redefined, \MessageBreak
-            no more warning for the other Greek letters, \MessageBreak
-            except pi}
-    }
-    \@ifundefined{itbeta}{\let\itbeta\beta}{}
-    \@ifundefined{itgamma}{\let\itgamma\gamma}{}
-    \@ifundefined{itdelta}{\let\itdelta\delta}{}
-    \@ifundefined{itepsilon}{\let\itepsilon\epsilon}{}
-    \@ifundefined{itzeta}{\let\itzeta\zeta}{}
-    \@ifundefined{iteta}{\let\iteta\eta}{}
-    \@ifundefined{ittheta}{\let\ittheta\theta}{}
-    \@ifundefined{itiota}{\let\itiota\iota}{}
-    \@ifundefined{itkappa}{\let\itkappa\kappa}{}
-    \@ifundefined{itlambda}{\let\itlambda\lambda}{}
-    \@ifundefined{itmu}{\let\itmu\mu}{}
-    \@ifundefined{itnu}{\let\itnu\nu}{}
-    \@ifundefined{itxi}{\let\itxi\xi}{}
-    \@ifundefined{itpi}{\let\itpi\pi}{
-       \PackageWarningNoLine{frenchmath}{Command
-            \string\itpi\space already exist \MessageBreak
-            and will not be redefined}
-    }
-    \@ifundefined{itrho}{\let\itrho\rho}{}
-    \@ifundefined{itsigma}{\let\itsigma\sigma}{}
-    \@ifundefined{ittau}{\let\ittau\tau}{}
-    \@ifundefined{itupsilon}{\let\itupsilon\upsilon}{}
-    \@ifundefined{itphi}{\let\itphi\phi}{}
-    \@ifundefined{itchi}{\let\itchi\chi}{}
-    \@ifundefined{itpsi}{\let\itpsi\psi}{}
-    \@ifundefined{itomega}{\let\itomega\omega}{}
-    \@ifundefined{itvarepsilon}{\let\itvarepsilon\varepsilon}{}
-    \@ifundefined{itvartheta}{\let\itvartheta\vartheta}{}
-    \@ifundefined{itvarpi}{\let\itvarpi\varpi}{}
-    \@ifundefined{itvarsigma}{\let\itvarsigma\varsigma}{}
-    \@ifundefined{itvarphi}{\let\itvarphi\varphi}{}
-\fi
+\newcommand\SaveGreekItalics{
+    \let\italpha\alpha
+    \let\itbeta\beta
+    \let\itgamma\gamma
+    \let\itdelta\delta
+    \let\itepsilon\epsilon
+    \let\itzeta\zeta
+    \let\iteta\eta
+    \let\ittheta\theta
+    \let\itiota\iota
+    \let\itkappa\kappa
+    \let\itlambda\lambda
+    \let\itmu\mu
+    \let\itnu\nu
+    \let\itxi\xi
+    \let\itpi\pi
+    \let\itrho\rho
+    \let\itsigma\sigma
+    \let\ittau\tau
+    \let\itupsilon\upsilon
+    \let\itphi\phi
+    \let\itchi\chi
+    \let\itpsi\psi
+    \let\itomega\omega
+    \let\itvarepsilon\varepsilon
+    \let\itvartheta\vartheta
+    \let\itvarpi\varpi
+    \let\itvarsigma\varsigma
+    \let\itvarphi\varphi
+}
 
+\newcommand\upgreekUndefined{
+    \let\upalpha\@undefined
+    \let\upbeta\@undefined
+    \let\upgamma\@undefined
+    \let\updelta\@undefined
+    \let\upepsilon\@undefined
+    \let\upzeta\@undefined
+    \let\upeta\@undefined
+    \let\uptheta\@undefined
+    \let\upiota\@undefined
+    \let\upkappa\@undefined
+    \let\uplambda\@undefined
+    \let\upmu\@undefined
+    \let\upnu\@undefined
+    \let\upxi\@undefined
+    \let\uppi\@undefined
+    \let\uprho\@undefined
+    \let\upsigma\@undefined
+    \let\uptau\@undefined
+    \let\upupsilon\@undefined
+    \let\upphi\@undefined
+    \let\upchi\@undefined
+    \let\uppsi\@undefined
+    \let\upomega\@undefined
+    \let\upvarepsilon\@undefined
+    \let\upvartheta\@undefined
+    \let\upvarpi\@undefined
+    \let\upvarrho\@undefined
+    \let\upvarsigma\@undefined
+    \let\upvarphi\@undefined
+}
+
 \AtBeginDocument{
+  \iflgrmath
+    \SaveGreekItalics
+    \RequirePackage[font=fcm,style=french]{lgrmath}
+  \fi
   \ifupgreek
+    \@ifpackageloaded{upgreek}{}{
+      \@ifpackageloaded{unicode-math}{\upgreekUndefined}{}
+      \SaveGreekItalics
+      \RequirePackage[Symbol]{upgreek}
+    }
     \renewcommand\alpha{\upalpha}
     \renewcommand\beta{\upbeta}
     \renewcommand\gamma{\upgamma}
@@ -211,8 +251,8 @@
     \renewcommand\varsigma{\upvarsigma}
     \renewcommand\varphi{\upvarphi}
   \fi
-
   \ifUpgreek
+    % unicode-math utilise \upGamma, \upDelta...
     \renewcommand\Gamma{\Upgamma}
     \renewcommand\Delta{\Updelta}
     \renewcommand\Theta{\Uptheta}



More information about the tex-live-commits mailing list.