diff options
Diffstat (limited to 'macros')
23 files changed, 799 insertions, 611 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index fcfd0a1e77..8b013bb90c 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -14,7 +14,7 @@ % This work has the LPPL maintenance status `maintained'. %<*class> \NeedsTeXFormat{LaTeX2e}[2021/11/15] -\ProvidesExplClass{easybook}{2024/05/01}{2024be} +\ProvidesExplClass{easybook}{2024/05/03}{2024bf} {Easily typesetting Chinese theses or books} \bool_new:N \l__eb_compile_draft_bool @@ -301,7 +301,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2021/11/15] \RequirePackage{etoolbox} -\ProvidesExplPackage{easybase}{2024/05/01}{2024be} +\ProvidesExplPackage{easybase}{2024/05/03}{2024bf} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -1154,19 +1154,17 @@ \bool_set_true:N \l__eb_normal_footnote_bool \bool_new:N \l__eb_fnmarktext_format_match_bool \bool_new:N \l__eb_fncustom_format_match_bool +\cs_new:Npn \eb_fnmarktext_format_clear:n #1 + { + \bool_if:cTF { l__eb_fn#1_format_match_bool } + { \tl_clear:N \l__eb_fnmarktext_format_tl } + { \spbset{spcmd = { }} } + } \cs_new_protected:Npn \eb_fnmarktext_format_initial: { \bool_if:NTF \l__eb_normal_footnote_bool - { - \bool_if:NTF \l__eb_fnmarktext_format_match_bool - { \tl_clear:N \l__eb_fnmarktext_format_tl } - { \spbset{spcmd = { }} } - } - { - \bool_if:NTF \l__eb_fncustom_format_match_bool - { \tl_clear:N \l__eb_fnmarktext_format_tl } - { \spbset{spcmd = { }} } - } + { \eb_fnmarktext_format_clear:n { marktext } } + { \eb_fnmarktext_format_clear:n { custom } } \eb@font@footnote } \cs_new_protected:Npn \defupfntmark #1 @@ -1302,7 +1300,6 @@ \use:c {#1}*{\phantomsection ##3} \CTEX@addtocline{#1}{##2} \tl_if_empty:oF {##4} { \CTEX@addbitocline{#1}{##4} } - \tl_set:Nn \l__eb__bitoc_mark_title_level_tl {#1} \use:c { #1mark }{##2} }{ \stepcounter{bi#1} @@ -2243,7 +2240,7 @@ bibstyle .initial:n = numerical, citestyle .tl_set:N = \l__eb_bib_cite_style_tl, datafile .clist_set:N = \l__eb_bib_datafile_clist, - bititle .tl_set:N = \eb@bib@bitoc@title, + bititle .tl_set:N = \bibibname, bititle .initial:n = Bibliography, unknown .code:n = \eb_msg_deprecated_option:n { bib } } @@ -2288,8 +2285,8 @@ \cs_new_protected:Npn \eb_biber_toc_title:n #1 { \bool_if:NTF \l__eb_class_mode_book_bool - { \bichapter*{#1}{\eb@bib@bitoc@title} } - { \bisection*{#1}{\eb@bib@bitoc@title} } + { \bichapter*{#1}{\bibibname} } + { \bisection*{#1}{\bibibname} } } \cs_new_protected:Npn \eb_biber_biblatex_set: { @@ -2537,7 +2534,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2024/05/01}{2024be} +\ProvidesExplFile{eb-tcolorbox.cfg}{2024/05/03}{2024bf} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex 7ba31f65c1..19d165d5aa 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index 7820c2a137..4cbd925e2b 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024be, - date = 2024/05/01, + version = v2024bf, + date = 2024/05/03, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, diff --git a/macros/latex/contrib/mathgreeks/mathgreeks.dtx b/macros/latex/contrib/mathgreeks/mathgreeks.dtx index 5cdb03dda1..e6df4bc3d1 100644 --- a/macros/latex/contrib/mathgreeks/mathgreeks.dtx +++ b/macros/latex/contrib/mathgreeks/mathgreeks.dtx @@ -20,7 +20,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{mathgreeks} - [2024/04/30 v1.0 .dtx Math Greek letters] + [2024/05/04 v1.1 .dtx Math Greek letters] %</package> %<*driver> \documentclass[11pt]{article} @@ -29,12 +29,12 @@ \usepackage[english]{babel} \usepackage{doc} \usepackage{geometry} -\usepackage[savegreeks,otherfonts]{mathgreeks} +\usepackage[mathdesign=Charter,otherfonts]{mathgreeks} \usepackage{sectsty} \usepackage{xcolor} \usepackage{spacingtricks} \usepackage{metalogo} -%\usepackage{supertabular} +%\usepackage{supertabular} % incompatible with tabls \usepackage{tabls} \usepackage{multirow} \usepackage{ifluatex} @@ -74,7 +74,7 @@ %</driver> % \fi % -% \CheckSum{1060} +% \CheckSum{1061} % % \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 @@ -93,6 +93,7 @@ % Right brace \} Tilde \~} % % \changes{v1.0}{2024/04/30}{Initial version} +% \changes{v1.1}{2024/05/04}{Adding the libsans option; a few changes in the doc} % % \GetFileInfo{mathgreeks.sty} % @@ -127,6 +128,7 @@ % with the option \mbox{\texttt{math-style=ISO}} provided % by the \textsf{unicode-math} package~\cite{UNIC}. % +% \pagebreak ^^A To get the same page breaking when compiling with pdfLaTeX % Furthermore there are several packages that provide the uppercase Greek letters % in italic and have also options to typeset the lowercase Greek % letters in upright shape. @@ -197,15 +199,19 @@ % cmbright \\ % \hline % \end{tabular} -% \end{center} % \caption{font options\label{table:font}} +% \end{center} % \end{table} +% +% \vspace{-1\baselineskip} % The \texttt{fontspec} and \texttt{unicode-math} options require loading % the corresponding packages, and these can only work when running through % \LuaLaTeX\ (or \XeLaTeX). -% The fontspec option allows for the use of most TrueType or OpenType -% fonts installed on your computer, -% those that have Greek letters. +% The \texttt{fontspec} option allows for the use of most TrueType or OpenType +% fonts installed on your computer, those that have Greek letters. +% Although the \textsf{unicode-math} package loads the \textsf{fontspec} package, +% the fonts usable with one of these options are not necessarily usable with the other; +% \texttt{fontspec} has a large number of possible values. % % When calling "\boldmath" (outside the math environment), you get the letters in bold face, % but the command "\mathbf" doesn't work here. @@ -213,7 +219,7 @@ % \bigskip % The second table below presents the shape options. If the shape option % is not specified, the italic shape is chosen by default, meaning that the commands -% "\alpha", "\beta", \ldots, "\Delta", "\Gamma"\ldots will produce the same result +% "\alpha", "\beta", \ldots, "\Delta", "\Gamma"\ldots\ will produce the same result % as the corresponding "\it"\meta{letter} commands. % % \begin{table}[h] @@ -230,10 +236,11 @@ % \texttt{style} & possible values: \texttt{TeX}, \texttt{ISO}, \texttt{upright} \\ % \hline % \end{tabular} -% \end{center} % \caption{shape options\label{table:shape}} +% \end{center} % \end{table} % +% \vspace{-1\baselineskip} % \begin{itemize} % \item Except for \texttt{style}, all these options are booleans. % \item The \texttt{Greekup} option est initialized to \texttt{true} (corresponding @@ -245,14 +252,17 @@ % activate \begin{center}\texttt{greekup=true,Greekup=false}.\end{center} % \end{itemize} % -% \smallskip +% \bigskip % The following list presents the additional options, which are also booleans: % \begin{description} % \item[\texttt{savegreeks}] Saves the letters corresponding to the original commands % "\alpha", "\beta"\ldots so that they remain accessible through the commands % "\backalpha", "\backbeta"\ldots % \item[\texttt{otherfonts}] Allows dynamic font switching (see next section) -% for later use of \texttt{lgrmath}, \texttt{fourier}, \texttt{libertinus} or \texttt{upgreek}. +% for later use of \texttt{lgrmath}, \texttt{fourier}, \texttt{libertinus} +% or \texttt{upgreek}. +% \item[\texttt{libsans}] This is a special option that works only with \texttt{libertinus} +% to produce a sanserif font. % \item[\texttt{lowercase}] This option is initialized to \texttt{true}; % \texttt{lowercase=false} allows keeping the original lowercase Greek letters % without redefining the commands "\alpha", "\beta"\ldots @@ -263,7 +273,7 @@ % % \subsection{Dynamic settings commands} % -% There are two command for dynamic settings: +% There are two commands for dynamic settings: % \begin{description} % \item[] "\setmathgreeks" % This command takes a mandatory parameter which is a list of @@ -282,9 +292,10 @@ % \texttt{enc}, \texttt{fam}, \texttt{series}, \texttt{shape}. % \end{center} % The \texttt{fontspec} and \texttt{unicode-math} options are identical -% to those in table~\ref{table:font}. -% The other previous font options (\texttt{lgrmath}, \texttt{mathdesign}, etc.)\@ -% are not usable in "\mathgreeksfont". +% to those in table~\ref{table:font}. In that case, the shape is set by "\setmathgreeks" +% (before or after). +% The other previous font options (\texttt{lgrmath}, \texttt{mathdesign}, +% \texttt{fourier}, etc.)\@ are not usable in "\mathgreeksfont". % However, these fonts can be obtained by specifying the encoding (option \texttt{enc}), % family (option \texttt{fam}), series and shape: the New Font Selection Scheme (NFSS). % The series defines the `boldness' and has a default value: \texttt{series=m} (medium). @@ -303,8 +314,8 @@ % Only the commands "\alpha", "\beta"\ldots will be redefined according to the % selected shape. % -% If you use the \texttt{fontspec} or \texttt{unicode-math} option, -% these second kind of options have no effect. +% When using the \texttt{fontspec} or \texttt{unicode-math} option, +% these NFSS options have no effect. % % Notice that the encoding obtained by the package font options is faster, moreover % the command "\boldmath" doesn't work anymore @@ -317,10 +328,10 @@ % \section{Examples} \label{examples} % \begin{description} % \item[] "\greektable" -% The examples in this section are obtained with the "\greektable" command. +% The following examples are produced with the "\greektable" command. % This command generates a table with two rows: the first contains the lowercase letters % obtained with "\alpha", \ldots, "\omega", and the second contains variants -% "\varepsilon", "\vartheta"\ldots of certain letters as well as the uppercase letters +% "\varepsilon", "\vartheta"\ldots\ of certain letters as well as the uppercase letters % obtained with "\Gamma", "\Delta", \ldots, "\Omega" % (for those who differ from their Latin equivalent). % \end{description} @@ -329,7 +340,8 @@ % % The \texttt{upgreek} option, as its name suggests, produces only upright letters, % and the \texttt{Euler} font does not have the variants "\varrho" and "\varsigma". -% The \texttt{Symbolsmallscale} font is identical to Symbol but reduced in size by 90\,\%. +% The \texttt{Symbolsmallscale} font is identical to Symbol but reduced in size by 90\,\%; +% \texttt{Symbol} and \texttt{Symbolsmallscale} have no bold version. % \texttt{mathdesign=Garamond} yields a virtual font % that may not always work. % @@ -338,7 +350,7 @@ % \newcommand*\doublerows[1]{\multirow{2}{\legendwidth}[-1.5ex]{\bfseries#1}} % \begin{center} -% \begin{tabular}{|l|@{}c@{}|c@{$\;$}c@{}c|} +% \begin{tabular}{|l|@{}c@{}|c@{$\;$}c@{\:}c|} % \hline % \makebox[\legendwidth][l]{\textbf{upgreek=...}} & \makebox[8.4cm]{Résult} % & \makebox[1cm]{enc} & \makebox[1cm]{fam} & shape \\ @@ -428,9 +440,9 @@ % & U & txmia & it \\ % \hline % \doublerows{libertinus} -% & \mathgreeksfont{enc=LS1,fam=libertinust1math} \greektable +% & \mathgreeksfont{enc=LS1,fam=libertinust1math} \greektable % & LS1 & * & it \\ -% & \mathgreeksfont{enc=LS1,fam=libertinust1math,shape=n} \greektable +% & \mathgreeksfont{enc=LS1,fam=libertinust1math,shape=n} \greektable % & LS1 & * & n \\ % \hline % \textbf{concrete} @@ -443,20 +455,23 @@ % \hline % \end{tabular} % \end{center} -% \emph{* The asterisk for the} \texttt{libertinus} \emph{value corresponds to the} -% \texttt{libertinust1math} \emph{family, a name too long to appear in this table.} +% \emph{* The asterisks for the} \textbf{libertinus} \emph{family corresponds to} +% \textnormal{`libertinust1math'} \emph{a name too long to appear in this table. +% Activating the} \texttt{libsans} \emph{package option yields a sanserif font.} % % \subsection{The \texttt{lgrmath} option} % -% The \texttt{lgrmath} option, inspired by the eponymous package developed by J.F. Burnol, +% The \texttt{lgrmath} option, inspired by the eponymous package of J.F. Burnol, % has a large number of possible values. We present here only a few. % The documentation of the \textsf{lgrmath} package~\cite{LGR} explains how -% to list and consult the fonts available on your distribution with the LGR encoding. +% to list the fonts available on your distribution with the LGR encoding. % One can also consult with profit the documentation of \textsf{cb-fonts}\cite{CB}, % the Greek fonts of Claudio Beccari. % % With the \texttt{lgrmath} option, the alternative commands for the variants % produce the same glyphs as those of the normal letters except for "\varsigma". +% However, the "\varsigma" $\varsigma$ often substitutes for the usual "\sigma" $\sigma$ +% when using dynamic font changes through "\mathgreeksfont" with \texttt{enc=LGR}. % % We have not presented here the third column previously indicating the values for % \texttt{enc}, \texttt{fam}, and \texttt{shape} because, for this entire section, @@ -482,13 +497,13 @@ % \hline % \lgrtbl{Alegreya-LF} % \lgrtbl{Cochineal-LF} +% \lgrtbl{LibertinusSerif-LF} % \lgrtbl{LibertinusSans-LF} % \lgrtbl{NotoSerif-LF} -% \lgrtbl{NotoSans-LF} % \lgrtbl{droidserif} % \lgrtbl{fcm} % \lgrtbl{gentium} -% \lgrtbl{llcmss} +% \lgrtbl{lmss} % \end{tabular} % \end{center} % @@ -497,8 +512,8 @@ % % Most TrueType or OpenType fonts can be used here. % ^^A Needs the \textsf{fontspec} package and must be run through \LuaLaTeX\ or \XeLaTeX. -% Some of the fonts below are not free, and some do not have the variants -% "\varepsilon"\ldots for example Arial, Times New Roman. +% Some of the fonts below are non free, and some do not have all the variants, +% for example Arial, Palatino Linotype, Times New Roman. % % \newcommand\fontspectbl[2][fontspec]{% % \doublerows{#2} @@ -596,14 +611,14 @@ % \bibitem{LIBG} \emph{The \textsf{libgreek} package}, Jean-François Burnol, % CTAN v1.1 2022/11/11. % \bibitem{LGR} \emph{The \textsf{lgrmath} package}, Jean-François B., CTAN, v1.0 2022/11/16. -% \bibitem{NTX} \emph{New TX font package}, Micahel Sharpe, CTAN, v1.735 2024/03/01. +% \bibitem{NTX} \emph{New TX font package}, Michael Sharpe, CTAN, v1.735 2024/03/01. % \bibitem{LIB} \emph{The LibertinusT1 Math Package}, Michael Sharpe, CTAN, % v2.0.4 2024/01/14. % \bibitem{CHEM} \emph{\textsf{chemgreek} -- Upright Greek letters in chemistry}, % Clemens Niederberger, CTAN, v1.1a 2020/01/16. % \end{raggedright} % \end{thebibliography} -%} +% } % % \section{Implementation} % @@ -640,6 +655,7 @@ \DeclareBoolOption{savegreeks} \DeclareBoolOption{otherfonts} +\DeclareBoolOption{libsans} \DeclareBoolOption[true]{lowercase} \DeclareBoolOption[true]{uppercase} @@ -678,6 +694,7 @@ \DeclareFontEncoding{LGR}{}{} \DeclareFontEncoding{FML}{}{} \DeclareFontSubstitution{FML}{futm}{m}{it} + \ifmathgreeks@libsans \libus@sansmathtrue\fi % taken up at encoding time \DeclareFontEncoding{LS1}{}{} \DeclareFontSubstitution{LS1}{libertinust1math}{m}{n} @@ -703,6 +720,7 @@ \DisableKeyvalOption[action=warning,package=mathgreeks]{mathgreeks}{txfonts} \DisableKeyvalOption[action=warning,package=mathgreeks]{mathgreeks}{savegreeks} \DisableKeyvalOption[action=warning,package=mathgreeks]{mathgreeks}{otherfonts} +\DisableKeyvalOption[action=warning,package=mathgreeks]{mathgreeks}{libsans} \DisableKeyvalOption[action=warning,package=mathgreeks]{mathgreeks}{lowercase} \DisableKeyvalOption[action=warning,package=mathgreeks]{mathgreeks}{uppercase} @@ -830,6 +848,7 @@ \SetSymbolFont{mgr@up}{bold}{U}{txmia}{bx}{it} \else\ifmathgreeks@libertinus + \ifmathgreeks@libsans \libus@sansmathtrue\fi \DeclareFontEncoding{LS1}{}{} \DeclareFontSubstitution{LS1}{libertinust1math}{m}{n} \DeclareSymbolFont{mgr@it}{LS1}{libertinust1math}{m}{it} @@ -878,16 +897,6 @@ %%%%%%%%%%%%%%%%%%%%%%%%%% MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\setmathgreeks#1{\setkeys{mathgreeks}{#1}\unskip - \ifmathgreeks@upgreek - \mathgreeks@Greekuptrue - \mathgreeks@greekuptrue - \PackageWarning{mathgreeks}{Style is set to `upright' - \MessageBreak with the `upgreek' option} - \fi - \mgr@DefaultGreeks\ignorespaces -} - \def\re@DeclareMathSymbol#1#2#3#4{% from kpfonts, pxfonts, txfonts \let#1=\undefined @@ -899,7 +908,7 @@ \newcommand{\mgr@CodeGreek}[3]{% #1 = it or up \expandafter\re@DeclareMathSymbol\csname#1#2\endcsname% - {\mathalpha}{mgr@#1}{#3} + {\mathalpha}{mgr@#1}{#3} % perhaps \mathord is better } \newcommand{\mgr@UnicodeGreek}[3]{% @@ -1218,6 +1227,16 @@ %%%%%%%%%%%%%% Macros for changing font dynamically %%%%%%%%%%%%% +\def\setmathgreeks#1{\setkeys{mathgreeks}{#1}\unskip + \ifmathgreeks@upgreek + \mathgreeks@Greekuptrue + \mathgreeks@greekuptrue + \PackageWarning{mathgreeks}{Style is set to `upright' + \MessageBreak with the `upgreek' option} + \fi + \mgr@DefaultGreeks\ignorespaces +} + \newif\ifmgrfont@unicodemath \define@key{mgrfont}{unicode-math}[Latin Modern Math]{% \def\mgrfont@unicodemath{#1}\mgrfont@unicodemathtrue} diff --git a/macros/latex/contrib/mathgreeks/mathgreeks.ins b/macros/latex/contrib/mathgreeks/mathgreeks.ins index a1a8f6786b..e7e74d9458 100644 --- a/macros/latex/contrib/mathgreeks/mathgreeks.ins +++ b/macros/latex/contrib/mathgreeks/mathgreeks.ins @@ -47,7 +47,7 @@ and version 1.3 or later is part of all distributions of LaTeX version \Msg{* *} \Msg{* To produce the documentation run the file *} \Msg{* mathgreeks.dtx through LuaLaTeX *} -\Msg{* (or LaTeX for a shorter version). *} +\Msg{* (or LaTeX for a shorter version of the doc). *} \Msg{* *} \Msg{* Happy TeXing! *} \Msg{* *} diff --git a/macros/latex/contrib/mathgreeks/mathgreeks.pdf b/macros/latex/contrib/mathgreeks/mathgreeks.pdf Binary files differindex 03ca96ca9d..284c293b56 100644 --- a/macros/latex/contrib/mathgreeks/mathgreeks.pdf +++ b/macros/latex/contrib/mathgreeks/mathgreeks.pdf diff --git a/macros/latex/contrib/mismath/README.md b/macros/latex/contrib/mismath/README.md index 2ebf631307..9cafc74719 100644 --- a/macros/latex/contrib/mismath/README.md +++ b/macros/latex/contrib/mismath/README.md @@ -5,17 +5,19 @@ The package provides some mathematical macros to typeset: - mathematical constants e, i, pi in upright shape (automatically) as recommended by ISO 80000-2, -- vectors with nice arrows and adjusted norm (and tensors), +- vectors with nice arrows and adjusted norm, +- tensors in sans serif bold italic shape (ISO recommendation), - some standard operator names, +- several commands with useful aliases, - improved spacings in mathematical formulas, - systems of equations and small matrices, -- displaymath in double columns for lengthy calculations. +- displaymath in double columns for lengthy calculations with short expressions. ## Installation - run LaTeX on mismath.ins, you obtain the file mismath.sty, -- if then you run XeLaTeX or LuaLaTeX on mismath.dtx you get the file mismath.pdf which is also in the archive, +- if then you run pdfLaTeX on mismath.dtx you get the file mismath.pdf which is also in the archive, - put the files mismath.sty and mismath.pdf in your TeX Directory Structure. diff --git a/macros/latex/contrib/mismath/mismath.dtx b/macros/latex/contrib/mismath/mismath.dtx index 88793e7e9e..f3fd2168bc 100644 --- a/macros/latex/contrib/mismath/mismath.dtx +++ b/macros/latex/contrib/mismath/mismath.dtx @@ -20,16 +20,16 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{mismath} - [2024/02/29 v2.12 .dtx Miscellaneous mathematical macros] + [2024/05/04 v3.0 .dtx Miscellaneous mathematical macros] %</package> %<*driver> \documentclass{ltxdoc} -%\usepackage[utf8]{inputenc} % running through XeLaTeX +\usepackage[utf8]{inputenc} % run through XeLaTeX \usepackage[T1]{fontenc} \usepackage[english]{babel} -\usepackage{fontspec} +%\usepackage{fontspec} \usepackage{fourier} % in case of font change, modify 2.1 (3rd §) -\usepackage[ibrackets,decimalcomma]{mismath} +\usepackage[ibrackets,decimalcomma,otherReIm]{mismath} %\usepackage{amssymb} % unnecessary with fourier \usepackage{multicol} \usepackage{sectsty} @@ -40,33 +40,37 @@ \definecolor{darkbrown}{rgb}{0.5,0.1,0.1} \allsectionsfont{\color{darkbrown}} -% The following commands provides several shapes of pi -% the maximum number of authorized math fonts is reached + +% The following commands provide several shapes for pi \DeclareFontEncoding{LGR}{}{} -\DeclareSymbolFont{lgrlmr}{LGR}{lmr}{m}{n} -\DeclareMathSymbol{\pilmr}{\mathalpha}{lgrlmr}{112} -\DeclareSymbolFont{lgrAlegreya}{LGR}{Alegreya-LF}{m}{n} -\DeclareMathSymbol{\piAlegreya}{\mathalpha}{lgrAlegreya}{112} -\DeclareSymbolFont{lgrCochineal}{LGR}{Cochineal-LF}{m}{n} -\DeclareMathSymbol{\piCochineal}{\mathalpha}{lgrCochineal}{112} -\pinumber[upgreek=Euler] -\DeclareSymbolFont{upgreekSymbol}{U}{psy}{m}{n} -\DeclareMathSymbol{\piSymbol}{\mathord}{upgreekSymbol}{`p} -\DeclareSymbolFont{mdCharter}{OML}{mdbch}{m}{n} -\DeclareMathSymbol{\piCharter}{\mathord}{mdCharter}{"19} -\DeclareSymbolFont{kp}{U}{jkpmia}{m}{it} -\DeclareMathSymbol{\pikp}{\mathord}{kp}{"19} -\DeclareSymbolFont{px}{U}{pxmia}{m}{it} -\DeclareMathSymbol{\pipx}{\mathord}{px}{"19} -\DeclareSymbolFont{tx}{U}{txmia}{m}{it} -\DeclareMathSymbol{\pitx}{\mathord}{tx}{"19} -% For showing original \i and \j in text mode: -\DeclareTextFontCommand{\extrafont}{\fontfamily{lmr}\selectfont} +\def\pilmr{\text{\usefont{LGR}{lmr}{m}{n}\symbol{112}}} +\def\piAlegreya{\text{\usefont{LGR}{Alegreya-LF}{m}{n}\symbol{112}}} +\def\piCochineal{\text{\usefont{LGR}{Cochineal-LF}{m}{n}\symbol{112}}} +\def\piLibSerif{\text{\usefont{LGR}{LibertinusSerif-LF}{m}{n}\symbol{112}}} +\def\piLibSans{\text{\usefont{LGR}{LibertinusSans-LF}{m}{n}\symbol{112}}} +\def\pilmss{\text{\usefont{LGR}{lmss}{m}{n}\symbol{112}}} +\def\pigentium{\text{\usefont{LGR}{gentium}{m}{n}\symbol{112}}} +\def\pilato{\text{\usefont{LGR}{lato-LF}{m}{n}\symbol{112}}} +\DeclareFontFamily{U}{eur}{\skewchar\font'177} +\DeclareFontShape{U}{eur}{m}{n}{% + <-6> eurm5 <6-8> eurm7 <8-> eurm10}{} +\def\piEuler{\text{\usefont{U}{eur}{m}{n}\symbol{"19}}} +\def\piSymbol{\text{\usefont{U}{psy}{m}{n}\symbol{`p}}} +\def\piCharter{\text{\usefont{OML}{mdbch}{m}{n}\symbol{"19}}} +\def\pikp{\text{\usefont{U}{jkpmia}{m}{it}\symbol{"19}}} +\pinumber[otherpi] % fourier +\def\pipx{\text{\usefont{U}{pxmia}{m}{it}\symbol{"19}}} +\def\pitx{\text{\usefont{U}{txmia}{m}{it}\symbol{"19}}} + +% Next command is used for showing original Latin Modern \i and \j in text mode: +%\DeclareTextFontCommand{\extrafont}{\fontfamily{lmr}\selectfont} % useless with fourier \DisableCrossrefs %\CodelineIndex %\RecordChanges + \usepackage{hyperref} +\let\C\relax % "\C already defined" with hyperref when compiling with xelatex or lualatex \hypersetup{% colorlinks, linkcolor=blue, @@ -83,7 +87,7 @@ %</driver> % \fi % -% \CheckSum{831} +% \CheckSum{845} % % \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 @@ -159,8 +163,8 @@ % (and LGR encoding pi by default), it is no longer compatible with the older, % - paren command has been removed, % - hvect and hlbar have been slightly modified (phantom t instead of phantom h), -% - several changes in documentation, -% - now using the Charter font (with the package mathdesign)} +% - several changes in the documentation, +% - now using the Charter font in the doc (with the package mathdesign)} % % \changes{v2.1}{2022/12/26}{ % - Improved management of square brackets with the ibrackets package, @@ -225,26 +229,41 @@ % % \changes{v2.12}{2024/02/29}{ % - The xparse package has been removed by mistake in v2.11, -% this may cause some compatibility problems with unicode-math; +% this may cause some compatibility problems; % it is loaded again by mismath % - Improvements to make pinumber work perfectly with unicode-math % - Small corrections in the doc} % +% \changes{v3.0}{2024/03/15}{ +% - Rewriting of the pinumber command including the pifonts macro +% - Presenting other lgrmath values for pinumber in the doc +% - The \C macro is now in AtBeginDocument +% - amsmath isn't loaded anymore because mathtools loads it +% - Bug fix with options decimalcomma and ibrackets +% - New option 'nofunction' to lighten the package loading +% - Addition of coker and Res in standard operator names +% - New option 'classicReIm' to deactivate Im and Re redefinition +% - New option 'otherReIm' to provide an alternative writing with cmsy font +% - Removal of the PEupright command +% - Additional space in the lfrac macro increased from \: (5mu) to 7mu +% - New optional parameter for adjusting the space in lfrac +% - Changing the vphantom in hvect, hvec and lbar from `t' to `A', looks better} +% % \GetFileInfo{mismath.sty} % % \title{Miscellaneous mathematical macros \\The \textsf{mismath} package\thanks{This document % corresponds to \textsf{mismath}~\fileversion, dated \filedate. % Thanks to François Bastouil for initial help in English translation.}} % \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}} -% \date{February 29, 2024} +% \date{May 04, 2024} % % \maketitle % \tableofcontents % % \section{Introduction} % -% According to the International Standards ISO~31-0:1992 to ISO~31-13:1992 -% (superseded by ISO~80000-2:2009), mathematical \emph{constants} $\e$, $\i$, $\otherpi$ +% According to the International Standards ISO~31-0:1992 to ISO~31-13:1992 +% (superseded by ISO~80000-2:2009), mathematical \emph{constants} $\e$, $\i$, $\pi$ % should be typeset in roman (upright shape) and not in italic like % variables (see~\cite{TYPMA}~\cite{NIST}~\cite{SI}~\cite{ICTNS}). % This package provides some tools to achieve this automatically. @@ -262,14 +281,15 @@ % or worse $\left\Vert \vect{AB} \right\Vert$ (when using |\left|\ldots |\right|). % % \smallskip -% The package also offers other macros for: +% The package also offers other macros to typeset: % \begin{itemize} -% \item tensors, -% \item some common operator names, -% \item a few useful aliases, -% \item enhancing spacing in mathematical formulas, +% \item tensors in sans serif bold italic shape +% (ISO recommendation~\cite{TYPMA}~\cite{NIST}~\cite{SI}), +% \item some standard operator names, +% \item several commands with useful aliases, +% \item improved spacings in mathematical formulas, % \item systems of equations and small matrices, -% \item displaymath in double columns for lengthy calculations. +% \item displaymath in double columns for lengthy calculations with short expressions. % \end{itemize} % % To avoid compatibility issues, @@ -282,36 +302,38 @@ % % \medskip % \DescribeEnv{\oarg{options}} -% The \textsf{mismath} package loads the \textsf{amsmath} package~\cite{AMS} -% without any options. -% If you want to use \textsf{amsmath} with specific options (refer to its documentation), -% you can include these options when calling \textsf{mismath}, or -% you can load \textsf{amsmath} -% with the desired options before loading \textsf{mismath}. -% \emph{When using the package \textsf{unicode-math}~\cite{UNIC}, \textsf{mismath} -% must be loaded before \textsf{unicode-math}}, just like \textsf{amsmath}. +% The \textsf{mismath} package loads the \textsf{mathtools} +% \footnote{The \textsf{mathtools} package offers numerous helpful macros and improvements +% of the \textsf{amsmath} package.} +% package by Morten Høgholm and Lars Madsen~\cite{TOOL} which in turn loads +% the \textsf{amsmath} package~\cite{AMS}. +% If you want to use \mbox{\textsf{amsmath}} or \textsf{mathtools} with specific options, +% you can include these options as options of \mbox{\textsf{mismath}}, or +% you can load \textsf{amsmath} or \textsf{mathtools} +% with the desired options before loading \mbox{\textsf{mismath}}. +% When using the package \textsf{unicode-math}~\cite{UNIC}, \textsf{mismath} +% should be loaded before \textsf{unicode-math}, just like \textsf{amsmath}. % % \medskip -% In addition \textsf{mismath} loads the \textsf{mathtools} package -% by Morten Høgholm and Lars Madsen~\cite{TOOL}. -% This package offers numerous helpful macros and improvements of the \textsf{amsmath} package. -% -% \medskip -% A recommendation, although rarely followed, is to typeset uppercase +% An ISO recommendation, although rarely followed, is to typeset uppercase % Greek letters in italic shape, -% similar to other variables~\cite{ICTNS}. This can be automatically achieved, +% as for other variables~\cite{ICTNS}. This is automatically achieved, % for some particular fonts, with packages % such as \textsf{fixmath} by Walter Schmidt~\cite{FIXM}, % \mbox{\textsf{isomath}} by Günter Milde~\cite{ISOM} % or \textsf{pm-isomath} by Claudio Beccari~\cite{PMISO} and optionally with many others % (such as \textsf{mathpazo} or \textsf{mathptmx} with the option \texttt{slantedGreek}). +% When running through \LuaLaTeX\ or \XeLaTeX\ you can also get this result +% with the option \mbox{\texttt{math-style=ISO}} provided +% by the \textsf{unicode-math} package. +% We also have the new \mbox{\textsf{mathgreeks}} package~\cite{MGREEK} which offers +% a wide range of fonts and different settings with Greek letters. % However this feature is not implemented here due to a conflicting rule in France, % where all capital letters in mathematics % are required to be typeset in upright shape % \footnote{The \textsf{frenchmath} package~\cite{FR} % ensures to follow the recommended French rules.}. -% When running through \LuaLaTeX\ or \XeLaTeX\ you can also get this result by -% setting the option \mbox{\texttt{math-style=ISO}} in the \textsf{unicode-math} package. +% The user is free to choose loading one of these packages or not. % % % \section{Usage} @@ -338,12 +360,12 @@ % % \medskip % \DescribeMacro{\e} \DescribeMacro{\i} \DescribeMacro{\j} -% To avoid cluttering a document that contains many occurrences of Euler's number (e) -% or imaginary numbers (i) with |\mathup{e}| or |\mathup{i}|, -% the package provides the |\e| command for Euler’s number +% To avoid cluttering a document that contains many occurrences of Euler's number $\e$, +% or imaginary number $\i$, with |\mathup{e}| or |\mathup{i}|, +% the package provides the |\e| command for Euler's number % and |\i| or |\j| for imaginary numbers. % Let us notice that |\i| and |\j| already exist in LaTeX. In LR (left-to-right) mode, -% they produce \mbox{`\extrafont{\i,\ \j}'} without the dot, +% they produce \mbox{`\i,\ \j'} without the dot, % allowing you to place accents on them. % However, in mathematical mode, they produce the warning % ``\texttt{LaTeX Warning: Command \string \i\space invalid in math mode on input line} @@ -355,19 +377,21 @@ % \DescribeMacro{\MathUp} % Indeed, typing a lot of backslashes for constants like $\e$, $\i$, or $\j$ % in a document with numerous formulas can become tiresome. -% To alleviate this, the package proposes a powerful solution +% To alleviate this, the package proposes another solution % with the macro |\MathUp|\marg{char}. % For example, when |\MathUp{e}| is called, any subsequent occurrence of $\e$ % will automatically be set in roman (upright shape), % without the need to type |\e| explicitly. The effect of this macro % can be either global or local, depending on whether it is used outside or inside an % environment or braces. -% Furthermore, you can call this macro in the preamble to apply the change -% from the beginning of the document. This powerful feature allows you -% to bring a document up to the standards effortlessly. +% Furthermore, you can also call this macro in the preamble, then the change will apply +% from the beginning of the document. This powerful command allows you +% to bring a document up to the standards effortlessly and without changing anything +% in your mathematical formulas. % In fact, |\MathUp| can be applied to any valid single character, -% offering flexibility for various use cases (another use of it with probability -% will be presented in section \ref{operators}). +% offering flexibility for various use cases +% \footnote{Another use of it with probability +% will be presented in section \ref{operators}.}. % % \medskip % \DescribeMacro{\MathIt} @@ -387,37 +411,47 @@ % In |\MathNumbers|, the comma separator between letters can be modified % or removed as needed. In fact, this macro only affects the letters e, i, or j; % it has no effect on other characters. -% On the other hand, |\MathNormal| can be utilized for probability as well -% (refer to section \ref{operators}), and it accepts any comma-separated list of arguments. +% On the other hand, |\MathNormal| accepts any comma-separated list of arguments. % This means you can apply the normal italic math mode typesetting to various letters % at once using |\MathNormal|. +% +% \medskip +% \DescribeMacro{\enumber}\DescribeMacro{\inumber}\DescribeMacro{\jnumber} +% These three commands, used until version 2.2 but only functioning within the preamble, +% serve now as aliases for the commands |\MathUp{e}|, |\MathUp{i}| or |\MathUp{j}|, +% so they can be used anywhere +% in the document or preamble and has an inverse switches with |\MathIt|. % % \medskip % \DescribeMacro{\pinumber[\meta{option}]} -% The mathematical constant $\otherpi$ should also be typeset in upright shape +% The constant $\pi$ should also be typeset in upright shape % (see~\cite{TYPMA}, \cite{NIST}, \cite{ICTNS}), which is different from italicized $\itpi$. % However, this recommendation is even less commonly followed compared to the one % concerning $\e$ and $\i$~\cite{TYPMA}. -% The |\pinumber| command replaces the italic $\itpi$ with an upright $\otherpi$ -% each time |\pi| is called. It functions in two different ways. +% Thanks to the |\pinumber| command, the italic $\itpi$ will be replaced +% with an upright $\pi$ +% each time |\pi| is called. Thus |\pinumber| makes your document compliant with standards +% without changing the source code of your mathematical formulas. +% It functions in two different ways. % % \begin{enumerate} -% \item You can install a Greek letters package that provides the glyphs in upright shape. +% \item You can load a Greek letters package that provides the glyphs in upright shape. % There are many available. % Notably, let us mention \textsf{upgreek}~\cite{GREEK}, % \mbox{\textsf{mathdesign}}~\cite{DESIGN}, % \mbox{\textsf{kpfonts}}~\cite{KPF}, -% \mbox{\textsf{fourier}}~\cite{FOUR} (used in the present document), -% \mbox{\textsf{libertinust1math}}, -% \mbox{\textsf{pxgreeks}} (using \textsf{pxfonts}), \mbox{\textsf{txgreeks}} -% (using \textsf{txfonts}) +% \mbox{\textsf{fourier}}~\cite{FOUR} (used in the present document), but also +% \mbox{\textsf{pxgreeks}} (using \textsf{pxfonts}~\cite{PX}), \mbox{\textsf{txgreeks}} +% (using \textsf{txfonts}~\cite{TX}) % \footnote{When using \textsf{pxgreeks} or \textsf{txgreeks}, % they should be loaded \emph{after} \textsf{mismath} to avoid an error % due to conflict with the existing macros \texttt{\string\iint}, \texttt{\string\iiint}, % \texttt{\string\iiiint}, \texttt{\string\idotsint} in \textsf{amsmath}.}, -% \textsf{libgreek}, etc. +% \mbox{\textsf{libertinust1math}}~\cite{LIB}, \textsf{libgreek}, etc. % A special mention goes to \textsf{lgrmath} of Jean-François Burnol~\cite{LGR} -% which allows the use of any Greek LGR-encoded font in math mode. +% which allows the use of any Greek LGR-encoded font in math mode, +% an idea taken up in \textsf{mathgreeks}~\cite{MGREEK}. +% Also note \textsf{newtxmath}~\cite{NTX} which has several font options. % These packages provide commands like |\uppi| (\textsf{upgreek}), % |\piup| (\textsf{mathdesign}, \textsf{kpfonts}, \textsf{lgrmath}), % |\otherpi| (\textsf{fourier}), etc. @@ -425,101 +459,122 @@ % letters in upright shape by default, but this in not our goal here.} % % In this case, |\pinumber| must be called in the preamble -% with the name of the command (without the backslash) giving access to the upright pi -% (piup, uppi, otherpi \ldots) as the argument for the optional parameter. +% with an optional argument being the name of the command, \emph{without the backslash}, +% giving access to the upright pi: +% piup, uppi, otherpi\ldots % However, installing such a Greek letters package will modify % all the other Greek letter glyphs. % ^^A even if, except for pi, they will be in italics. % -% By using the preliminary code |\MathNumbers{ei}\pinumber[otherpi]| -% (assuming the \textsf{fourier} package is loaded) +% By calling in the preamble |\MathNumbers{ei}\pinumber[otherpi]| +% (assuming the \textsf{fourier} package is loaded), % you can achieve the following result: % \begin{center} -% |$e^{i\pi} = -1$| \quad yields \quad $\e^{\i\otherpi}=-1$. +% |$e^{i\pi} = -1$| \quad yields \quad $\e^{\i\pi}=-1$. % \end{center} % % \item Without installing a package, it is possible to change only the glyph of pi -% without altering the original glyphs for the other Greek letters, -% which are typically in italics. -% ^^A The original pi will still be accessible with |\itpi|. +% without altering the other Greek letters, +% which are typically in italics. % % In this case, |\pinumber| must be called in the preamble with an optional argument % of the \texttt{key=value} type. The key name corresponds to a package % providing the same glyph. -% When a key is given without a value, |\pinumber| will choose a default value -% specified below (depending on the key) . % The following table summarizes the available options. +% When a key is given without a value, |\pinumber| will choose a default value +% specified in the following text (depending on the key). % % \begin{center} % \setlength{\extrarowheight}{1pt} % \begin{tabular}{>{\ttfamily}l>{$}c<{$}} % \hline -% \normalfont Option & \mbox{Result} \\ +% {\normalfont Option} lgrmath=... & \mbox{Result} \\ % \hline -% lgrmath=lmr & \pilmr \\ -% lgrmath=Alegreya-LF & \piAlegreya \\ -% lgrmath=Cochineal-LF & \piCochineal \\ -% lgrmath=\ldots & \ldots\\ -% upgreek=Euler & \pi \\ -% upgreek=Symbol & \piSymbol \\ +% Alegreya-LF & \piAlegreya \\ +% Cochineal-LF & \piCochineal \\ +% LibertinusSerif-LF & \piLibSerif \\ +% LibertinusSans-LF & \piLibSans \\ +% lmr & \pilmr \\ +% lmss & \pilmss \\ +% gentium & \pigentium\\ +% lato-LF & \pilato \\ % \hline % \end{tabular} -% \qquad +% \qquad % \begin{tabular}{>{\ttfamily}l>{$}c<{$}} % \hline -% \normalfont Option & \mbox{Result} \\ +% \normalfont Other options & \mbox{Result} \\ % \hline +% fontspec=\ldots & \ldots \\ +% upgreek=Euler & \piEuler \\ +% upgreek=Symbol & \piSymbol \\ % mathdesign & \piCharter \\ % kpfonts & \pikp \\ -% fourier & \otherpi\\ +% fourier & \pi\\ % pxfonts & \pipx \\ % txfonts & \pitx \\ -% & \\ % \hline % \end{tabular} % \end{center} % +% \medskip % \begin{itemize} +% % \item With the \texttt{lgrmath} key, we actually have numerous possibilities -% for values (any Greek letters math fonts in LGR encoding). +% for values (any Greek letters math font in LGR encoding). % The documentation of the \textsf{lgrmath} % package explains how to check an visualize all available fonts on your distribution. -% We have only presented three of them. The default value is \texttt{lmr}. +% We have only presented seven of them. The default value is \texttt{lmr}. +% Other interesting values are \texttt{NotoSerif-LF}, \texttt{Clara-TLF}, +% \texttt{droidserif}, \texttt{fct}, \texttt{llcmss}. % +% \item When |\pinumber| is called without an argument in the preamble, +% it corresponds to the option \texttt{lgrmath=lmr}. +% This $\pilmr$ character is well-suited +% for use with the Latin Modern font family +% \footnote{It will look the same as the one provided by \texttt{lgrmath=cmr} or by +% Günter Milde's \textsf{textalpha} package~\cite{ALPHA}.}. +% +% \item With the \texttt{fontspec} key, there are also many possible values, +% corresponding to the TrueType or OpenType fonts installed on your system +% (works with \LuaLaTeX\ or \XeLaTeX). +% See the \textsf{mathgreeks} documentation for examples. + % \item With the \texttt{upgreek} key, the default value is \texttt{Symbol}. % There is a third possible value, \texttt{Symbolsmallscale}, % which provides the same character as \texttt{Symbol} but reduced in size by 10\,\%. % % \item With the \texttt{mathdesign} key, there are actually 3 possible values: -% \texttt{Utopia}, \texttt{Garamond}, or \texttt{Charter} (default value), -% but the glyphs obtained for pi look very similar. +% \texttt{Utopia}, \texttt{Garamond} or \texttt{Charter} (the default value), +% but the glyphs obtained for pi look quite similar. % % \item With the \texttt{kpfonts} key, we have two possible values: % \texttt{normal} (default) and \texttt{light}. The option \texttt{kpfonts=light} % provides a slightly less bold character. % -% \item The keys \texttt{fourier} (based on Utopia), \texttt{pxfonts} (based on Palatino) -% and \texttt{txfonts} (based on Times) +% \item The last keys, \texttt{fourier} (based on Utopia), \texttt{pxfonts} +% (based on Palatino), +% \texttt{txfonts} (based on Times) % are booleans whose default value is \texttt{true} (when called). +% The \texttt{txfonts} option yields the same glyph than \texttt{lgrmath=txr}. % -% \item When |\pinumber| is called without an argument in the preamble, -% it corresponds to the option \texttt{lgrmath=lmr}. -% This $\pilmr$ character is particularly well-suited -% for use with the default Computer Modern or Latin Modern font family -% \footnote{It will look the same as the one provided by -% Günter Milde's \textsf{textalpha} package~\cite{ALPHA}.}. % \end{itemize} % \end{enumerate} % % The \textsf{unicode-math} package~\cite{UNIC} provides |\uppi|, and you can use -% |\pinumber[uppi]| to produce automatic upright pi, but, with \textsf{unicode-math}, -% it can be quite complicated -% to make some other Greek letters packages work. -% In any case, such a package must be loaded after \textsf{unicode-math} and in -% |\AtBeginDocument|. -% However, \textsf{unicode-math} supports |\pinumber| very well with the -% previous \texttt{key=value} options, by calling |\pinumber[option]| after -% \mbox{\textsf{unicode-math}}. +% |\pinumber[uppi]| to produce automatic upright pi in the selected math font, +% but |\pinumber[uppi]| must be called \emph{after} \mbox{\textsf{unicode-math}}, +% and a math font must have been explicitly chosen with |\setmathfont|. +% You can also use the \texttt{fontspec} key option to obtain pi in any font +% that is supported by \mbox{\textsf{unicode-math}} \eg +% |\pinumber[fontspec=STIX Two Math]|. +% +% For other fonts, it can be quite complicated to make Greek letters packages +% work with \textsf{unicode-math}. In any case, such a package must be loaded +% after \textsf{unicode-math} and in |\AtBeginDocument|. +% However, |\pinumber| supports \textsf{unicode-math} very well with any previous +% \texttt{key=value} option, by calling |\pinumber|\oarg{option} +% after \textsf{unicode-math}. % % \medskip % \DescribeMacro{\itpi} @@ -555,7 +610,7 @@ % If you wish to use a different type of arrow, you must call \textsf{esvect} % with the appropriate option \emph{before} loading \textsf{mismath}. % For example, using |\usepackage[d]{esvect}| -% will provide the arrows produced by default in~\cite{VECT}. +% will provide the same arrows that are used by default in~\cite{VECT}. % % \medskip % \DescribeMacro{\boldvect} @@ -567,11 +622,11 @@ % \begin{minipage}{8cm} % \begin{verbatim} %\[ \boldvect \vect{v} -% =\lambda\vect{e}_x+\mu\vect{e}_y. \] +% =\lambda\vect{e}_x+\mu\vect{e}_y \] % \end{verbatim} % \end{minipage} % \begin{minipage}{4cm}\vspace{-2ex} -% $\boldvect \vect{v}=\lambda\vect{e}_x +\mu\vect{e}_y$. +% $\boldvect \vect{v}=\lambda\vect{e}_x +\mu\vect{e}_y$ % \end{minipage} % % \DescribeMacro{\boldvectcommand} @@ -586,9 +641,12 @@ % \textsf{unicode-math} provides the |\symbfit| command. % To use an alternative command instead of |\boldsymbol| in \textsf{mismath}, % redefine |\boldvectcommand|, -% for instance after loading \textsf{fixmath}: -% \begin{center} |\renewcommand\boldvectcommand{\mathbold}|. \end{center} +% for instance after loading \textsf{fixmath}: +% +% \medskip +% \centeredline{|\renewcommand\boldvectcommand{\mathbold}|} % +% \medskip % According to ISO rules, symbols for matrices are also in bold italic. % Therefore you can use the same |\boldvect| command or create another alias. % @@ -604,28 +662,31 @@ % \DescribeMacro{\hvect} % When vectors with arrows are typeset side by side, % the arrows can be set up slightly higher using |\hvect| -% (which places a vertical phantom box containing ``$t$'') +% (which places a vertical phantom box containing `$A$') % to avoid inelegant effects. For example, writing % \begin{itemize} -% \item $\vect{AB}=\hvect{u}+ \vect{AC}$, obtained with |\hvect{u}|, -% is better than $\vect{AB}=\vect{u}+ \vect{AC}$; +% \item $\vect{AB}=\hvect{u} + \vect{AC}$, obtained with |\hvect{u}|, +% looks better than $\vect{AB}=\vect{u}+ \vect{AC}$; % \item $\hvect{a} \cdot \vect{b}=0$, obtained with |\hvect{a}|, -% is better thant $\vect{a} \cdot \vect{b}=0$. +% looks better than $\vect{a} \cdot \vect{b}=0$. % \end{itemize} -% This adjustment ensures a more visually pleasing appearance when vectors -% with arrows are combined in an equation. +% This adjustment ensures a nicer appearance when vectors +% with arrows are combined in an equation +% \footnote{For a fine tuning you can also use the \texttt{\string\vstrut} or +% \texttt{\string\cstrut} macros from the \textsf{spacingtricks} package~\cite{SPA}.}. % The |\boldvect| and |\arrowvect| switches have the same effect on |\hvect| % as they do on |\vect|. % % \DescribeMacro{\hvec} % In a similar way, |\hvec| raises the little arrow produced by -% the \LaTeX\ command |\vec|, to the height of the letter ``$t$'' -% (but |\boldvect| have no effect here): +% the \LaTeX\ command |\vec|, to the height of the letter `$A$' +% (but |\boldvect| have no effect on |\vec| nor |\hvec|): % \begin{itemize} % \item $\mathcal{P}=\vec{f}\cdot\hvec{v}$, obtained with |\hvec{v}|, -% is better than $\mathcal{P}=\vec{f}\cdot\vec{v}$. +% seems better than $\mathcal{P}=\vec{f}\cdot\vec{v}$; +% ^^A (the result of |\vec| with \textsf{fourier} may be bad with high letters, \eg $\vec{h}$) % \item $\vec{f} =m \hvec{a}$, obtained with |\hvec{a}|, -% is better than $\vec{f} =m \vec{a}$. +% seems better than $\vec{f} =m \vec{a}$. % \end{itemize} % % \DescribeMacro{\norm} @@ -639,11 +700,11 @@ % instead of $\Vert\vec{h}\Vert$ or $\left\Vert \vec{h} \right\Vert$. % Let's notice that the height of the bars don't adjust to content, % but however to context: main text, subscripts or exponents, -% \eg $\e^{\norm{\vec{h}}}$. +% \eg $X^{\norm{\vec{h}}}$. % This macro is useful only for arguments of special height, such as $\vec{h}$ or $\vect{AB}$ % and may give bad results in other situations. % -% \pagebreak +% \medskip % \DescribeMacro{\mathbfsfit}\DescribeMacro{\tensor} % For tensors symbols, ISO rules recommend using % sans serif bold italic, but there @@ -651,7 +712,7 @@ % However, the \mbox{\textsf{mismath}} package defines this alphabet % (assuming the font encoding and package you use permits it) % and provides the macro |\mathbfsfit| or its alias |\tensor|. -% By using |\tensor{T}| you can produce $\tensor{T}$. +% By writing |\tensor{S}\otimes\tensor{T}|, you get $\tensor{S}\otimes\tensor{T}$. % % \subsection{Standard operator names}\label{operators} % @@ -681,12 +742,12 @@ % \[m\frac{\di^2x}{\di t^2}+h\frac{\di x}{\di t}+kx=0\] % \end{minipage} % -% This command can also represent \emph{distance} (hence its name): -% \[\lambda\di(A, \mathcal{F})+\mu\di(B, \mathcal{H}).\] +% The command |\di| can also represent the \emph{distance}, hence its name: +% \[\di(u, \cmmathcal{H}) = \frac{\abs{\langle u,v\rangle}}{\lVert v \rVert}.\] % % \DescribeMacro{\P} \DescribeMacro{\E} % To refer to probability -% \footnote{\LaTeX\ provides also \texttt{\string Pr} which gives $\Pr$.} +% \footnote{\LaTeX\ provides also \texttt{\string \Pr} which gives $\Pr$.} % and expectation the proper use is to typeset the capital letters $\P$, $\E$ % in roman just like any standard function identifier. % This can be achieved with |\P| and |\E| commands. @@ -698,43 +759,45 @@ % % \medskip % \DescribeMacro{\V} -% Variance is generally denoted by $\var$ or $\Var$ (see table below), +% Variance is generally denoted by $\var$ or $\Var$ (see the following table), % but some authors prefer to use $\V$, which can be produced using |\V|. % -% \medskip +% \pagebreak % \DescribeMacro{\MathProba}\DescribeMacro{\MathNormal} % As for $\e$, $\i$ or $\j$, you can use |\MathUp{P}|, |\MathUp{E}| % or |\MathUp{V}| to avoid typing many |\P|, |\E| or |\V|. % However you can also achieve this in a single command with |\MathProba|, -% for example |\MathProba{P,E}|. We get the inverse toggle with +% for example |\MathProba{PE}|. We get the inverse toggle with % |\MathIt| for any individual letter or |\MathNormal| for a list. % % \medskip % \DescribeMacro{\probastyle} -% Some authors use ``blackboard bold'' font to represent probability, expectation +% Some authors use ``outline'' font shape to represent probability, expectation % and variance: $\mathbb{P}, \mathbb{E}, \mathbb{V}$. % The |\probastyle| macro sets the appearance of |\P|, |\E| and |\V|. % For instance |\renewcommand\probastyle{\mathbb}| % \footnote{The effect of this redefinition is global or local to the container environment % in which it is used.} -% brings the previous ``double-struck'' letters. -% The |\mathbb| command comes from \textsf{amsfonts} package -% (loaded by \textsf{amssymb} but also available standalone) -% which needs to be called in the preamble. +% brings the double-struck letters. +% The |\mathbb| command is provided by \textsf{amsfonts} package +% (which needs to be called in the preamble), but also by other complete math font +% packages such as \textsf{mathdesign}, \textsf{kpfonts}, \textsf{fourier}, +% \textsf{unicode-math}\ldots +% \hypertarget{nofunction}{} % % \medskip % The following standard operator names are defined in \textsf{mismath}: % \begin{center} % \begin{tabular}{rlrlrl} -% |\adj| & $\adj$ \qquad\mbox{} & |\erf| & $\erf$ \qquad\mbox{} & |\Re| & $\Re$ \\ -% |\Aut| & $\Aut$ & |\grad| & $\grad$ & |\rot| & $\rot$ \\ -% |\codim| & $\codim$ & |\id| & $\id$ & |\sgn| & $\sgn$ \\ -% |\Conv| & $\Conv$ & |\Id| & $\Id$ & |\sinc| & $\sinc$ \\ -% |\cov| & $\cov$ & |\im| & $\im$ & |\spa| & $\spa$ \\ -% |\Cov| & $\Cov$ & |\Im| & $\Im$ & |\tr| & $\tr$ \\ -% |\curl| & $\curl$ & |\lb| & $\lb$ & |\var| & $\var$ \\ -% |\divg| & $\divg$ & |\lcm| & $ \lcm$ & |\Var| & $\Var$ \\ -% |\End| & $\End$ & |\rank| & $\rank$ & |\Zu| & $\Zu$ +% |\adj| & $\adj$ \qquad\mbox{} & |\End| & $\End$ \qquad\mbox{} & |\Res| & $\Res$ \\ +% |\Aut| & $\Aut$ & |\erf| & $\erf$ & |\rot| & $\rot$ \\ +% |\codim| & $\codim$ & |\grad| & $\grad$ & |\sgn| & $\sgn$ \\ +% |\coker| & $\coker$ & |\id| & $\id$ & |\sinc| & $\sinc$ \\ +% |\Conv| & $\Conv$ & |\Id| & $\Id$ & |\spa| & $\spa$ \\ +% |\Cov| & $\Cov$ & |\im| & $\im$ & |\tr| & $\tr$ \\ +% |\cov| & $\cov$ & |\lb| & $\lb$ & |\var| & $\var$ \\ +% |\curl| & $\curl$ & |\lcm| & $ \lcm$ & |\Var| & $\Var$ \\ +% |\divg| & $\divg$ & |\rank| & $\rank$ & |\Zu| & $\Zu$ % \end{tabular} % \end{center} % @@ -745,26 +808,15 @@ % For the variance, the covariance and the identity function, % two notations are proposed, with or without a first capital letter, % because both are very common. -% On the other hand, `$\im$' stands for the image of a linear transformation -% (like `$\ker$' for the kernel) -% whereas `$\Im$' is the imaginary part of a complex number. % Please note that |\div| already exists ($\div$) and |\span| is a \TeX\ primitive; % they haven't been redefined. Therefore the provided macros are called |\divg| (divergence) % and |\spa| (span of a set of vectors). % Furthermore |\Z| is used to denote the set of integers (see \ref{aliases}), -% which is why we used |\Zu|, +% which is why we propose |\Zu|, % to designate the center of a group: $\Zu(G)$ (from German Zentrum). % -%\medskip -% \DescribeMacro{\oldRe} \DescribeMacro{\oldIm} -% The |\Re| and |\Im| macros already existed to refer to real and imaginary part -% of a complex number, producing outdated symbols $\oldRe$ and $\oldIm$. -% However, they have been redefined according to current usage, -% as mentioned in the above table. Nevertheless, -% it is still possible to obtain the old symbols with |\oldRe| and |\oldIm|. -% % \medskip -% The package \textsf{mismath} also provides some (inverse) circular or hyperbolic functions, +% The \textsf{mismath} package also provides some (inverse) circular or hyperbolic functions, % that are missing in \LaTeX: % \begin{center} % \begin{tabular}{rlrlrl} @@ -773,21 +825,44 @@ % |\sech| & $\sech$ & |\arcosh| & $\arcosh$ & |\arsech| & $\arsech$ \\ % |\csch| & $\csch$ & |\artanh| & $\artanh$ & |\arcsch| & $\arcsch$ % \end{tabular} -% \end{center} +% \end{center} +% +% \DescribeMacro{[nofunction]} +% Some may find that the definition of all these operators and functions is not useful +% for their needs. So, the above definitions (on this page) +% can be disabled with the \texttt{nofunction} option. +% \hypertarget{classicReIm}{} +% +% \medskip +% \DescribeMacro{\Re} \DescribeMacro{\Im} +% The |\Re| and |\Im| macros refer to real and imaginary part +% of a complex number. They have been redefined to produce $\mathup{Re}$ and $\mathup{Im}$, +% in place of outdated symbols $\oldRe$ and $\oldIm$. +% Nevertheless, it is still possible to obtain the old symbols +% with |\oldRe| and |\oldIm|. +% +% \medskip +% \DescribeMacro{[otherReIm]} +% An alternative notation $\Re$, $\Im$ is provided by invoking the \texttt{otherReIm} +% package option, +% \DescribeMacro{[classicReIm]} +% whereas the \texttt{classicReIm} option deactivates these redefinitions. % % \DescribeMacro{\bigO} \DescribeMacro{\bigo} \DescribeMacro{\lito} -% Asymptotic comparison operators (in Landau notation) are obtained with -% |\bigO| or |\bigo| and |\lito| commands: -% \[ n^2+\bigO(n\log n) \txt{or} n^2+\bigo(n\log n)\txt{and} \e^x=1+x+\lito(x^2).\] +% Asymptotic comparison operators (in Bachmann-Landau notation) are obtained with +% |\bigO| or |\bigo| and |\lito| commands. The first one uses +% the |\cmmathcal| alphabet and the last two compose the letters `O' and `o' in +% roman, as for any operator: +% \[ n^2+\bigO(n\log n) \txt{or} n^2+\bigo(n\log n)\txt{and} +% \e^x=1+x+\frac{x^2}{2}+\lito\bigl(x^2\bigr).\] % % \subsection{A few useful aliases} \label{aliases} % -% \onlymathC % In the tradition of Bourbaki and D.~Knuth, proper use requires % that classic sets of numbers are typeset in bold roman: % $\R, \C, \Z, \N, \Q$, -% whereas ``double-barred'' or ``openwork'' letters -% ($\mathbb{R}, \mathbb{C}, \mathbb{Z}, \ldots$) +% whereas double-struck letters +% ($\mathbb{R}, \mathbb{C}, \mathbb{Z}, \mathbb{N}, \mathbb{Q}$) % are reserved for writing at the blackboard~\cite{LSHORT}. % Similarly, to designate a field we use $\F$ or $\K$ (Körper in German). % We obtain these symbols with the following macros: @@ -795,23 +870,22 @@ % |\R|, |\C|, |\Z|, |\N|, |\Q|, |\F|, |\K|. % \end{center} % -% \medskip +% \smallskip % \DescribeMacro{\mathset} % The |\mathset| command enables you to change the behavior % of all these macros in a global way. -% By default, |\mathset| is an alias for |\mathbf|, but if you prefer openwork letters, -% you can simply place |\renewcommand\mathset{\mathbb}| where you want, -% for instance in the preamble after loading the \textsf{amsfonts} package -% (which provides the ``blackboard bold'' typeface, -% also loaded by \textsf{amssymb}). +% By default, |\mathset| is an alias for |\mathbf|, but if you prefer outline letters, +% you can simply use |\renewcommand\mathset{\mathbb}| (with local effect when +% inside an environment or a pair of curly braces). % % \smallskip % \DescribeMacro{\onlymathC} % The macro |\onlymathC| is designed for cases when |\C| is already defined, -% but only in text mode (usually when loading the Russian language with \textsf{babel} -% or \textsf{polyglossia}). The macro preserves the original definition for text mode +% but only in text mode (usually with the Russian language). Then you get the message: +% ``\texttt{Command \string\C\space invalid in math mode}''. +% This macro preserves the original definition for text mode % and allows you to use |\C| for the complex number set in math mode. -% For this purpose, simply call |\onlymathC| once in the preamble or anywhere in the document. +% Simply call |\onlymathC| once in the preamble or anywhere in the document. % % \medskip % \DescribeMacro{\ds} @@ -844,11 +918,11 @@ % \DescribeMacro{\lbar} \DescribeMacro{\hlbar} % Large bars over expressions are obtained with |\overline| % or its alias |\lbar|, to get for instance $\lbar{z_1z_2}$. -% Similar to vectors, you can raise the bar (from the height of ``$h$'') with +% Similar to vectors, you can raise the bar (from the height of `$A$') with % the |\hlbar| command, to correct uneven bars heights. % \begin{center} % $\lbar{z+z'}=\hlbar{z}+\lbar{z'}$, obtained with |\hlbar{z}|, -% is better than $\lbar{z+z'}=\lbar{z}+\lbar{z'}$. +% looks better than $\lbar{z+z'}=\lbar{z}+\lbar{z'}$. % \end{center} % % \DescribeMacro{\eqdef} \DescribeMacro{\eqdef*} @@ -918,36 +992,36 @@ % (ordinary symbol) and leaving less space around than |\times|: % \begin{center} % $\lambda+\alpha \mul b-\beta \mul c$, obtained with |\mul|, -% is better than $\lambda+\alpha \times b-\beta \times c$. +% looks better than $\lambda+\alpha \times b-\beta \times c$. % \end{center} % % When using |\mul| before a function name or around a |\left...\right| structure, % the space may be too large on one side of |\mul|. -% To ensure the same amount of space on both sides of |\mul|, +% To ensure the same amount of space on both sides, % you can use thin negative spaces |\!| % or enclose the function or structure with braces: % \begin{center} -% $x\mul{\sin x}$, obtained with |x\mul{\sin x}|, is slightly better than $x\mul\sin x$.\\[1ex] +% $x\mul{\sin x}$, obtained with |x\mul{\sin x}|, is slightly better than $x\mul\sin x$;\\[1ex] % |$\sin\!{\left( \frac{\pi}{3} \right)} \mul 2$|\\ -% gives $\sin\!{\left(\frac{\pi}{3}\right)}\mul 2$, which is better than +% yields $\sin\!{\left(\frac{\pi}{3}\right)}\mul 2$, which looks better than % $\sin\left(\frac{\pi}{3}\right)\mul 2$. % \end{center} -% The thin negative space after the function name is not relative to |\mul|, -% but is due to the fact that spaces around a |\left...\right| structure -% are bigger than those produced by single parenthesis |(...)|. +% The negative thin space after the function name is not related to |\mul|, +% but to the ``excessive'' spaces around the |\left... \right| structure. % % \medskip % \DescribeMacro{\pow} % In the same way, when typesetting an exponent after a closing \emph{big} % parenthesis produced by |\right)|, % the exponent appears to be a little to far from the parenthesis. -% To address this issue, the |\pow|\marg{expr}\marg{pow} command is provided, which sets -% \meta{expr} between parentheses and adjusts the positioning of the exponent \meta{pow} -% slightly closer to the right parenthesis -% \footnote{This macro gives bad results with normal-sized parenthesis.}. +% To address this issue, the |\pow|\marg{expr}\marg{pow} command is provided +% \footnote{This macro gives bad results with \emph{normal-sized} parenthesis.}, +% which sets the positioning of the exponent \meta{pow} +% slightly closer to the right parenthesis. % Compare: -% \[ \e^a \sim\pow{1+\frac{a}{n}}{n} \txt{which may be better than} -% \e^a \sim\left(1+\frac{a}{n}\right)^{n}.\] +% \[ \e^a =\lim_{n \to +\infty}\pow{1+\frac{a}{n}}{n} +% \txt{obtained with \texttt{\string \pow}, rather than} +% \e^a =\lim_{n \to +\infty}\left(1+\frac{a}{n}\right)^{n}.\] % % \DescribeMacro{\abs} % The correct typesetting of absolute value (or modular for a complex number) is achieved @@ -964,16 +1038,18 @@ % \DescribeMacro{\lfrac} % The |\lfrac| macro behaves like |\frac| % but with thicker spaces around the arguments, -% making the corresponding fraction bar slightly longer:\\[2ex] -% \begin{minipage}{8cm} -% \begin{verbatim} -%\[ \lbar{Z} = -% \lfrac{\lbar{z_1-z_2}}{\lbar{z_1+z_2}} \] -% \end{verbatim} -% \end{minipage} -% \begin{minipage}{4cm}\vspace{-3ex} -% \[ \lbar{Z} = \lfrac{\lbar{z_1-z_2}}{\lbar{z_1+z_2}} \] -% \end{minipage} +% making the corresponding fraction bar slightly longer. See the following examples: +% \[ \lbar{Z} = \lfrac{\lbar{z_1-z_2}}{\lbar{z_1+z_2}} \qquad +% u(x)= \lfrac{\frac{1-2x}{5}}{x^2+1} \qquad +% y'+xy=\lfrac[4mu]{1}{\sqrt{x}} +% \] +% +% This macro has an optional parameter |\lfrac|\oarg{space}\marg{num}\marg{denom} +% to adjust the length of the fraction bar. The optional \meta{space} argument must be given +% in \emph{math units} (\texttt{mu}); +% the default value is \texttt{7mu} (equivalent to |\:\,|), +% \texttt{4mu} in the last example. +% \hypertarget{ibrackets}{} % % \medskip % \DescribeMacro{[ibrackets]} @@ -984,17 +1060,14 @@ % To address this issue, we have redefined the brackets in the \textsf{ibrackets} % package~\cite{BRACKET}. % This one can be optionally -% \footnote{This functionality is optional because there is a conflict -% when using another command for open intervals with square brackets defined by -% \texttt{\string \DeclarePairedDelimiter} from \textsf{mathtools}~\cite{TOOL}.} % loaded by \textsf{mismath} using the \texttt{ibrackets} package option. % Thus |$x\in ]-\pi,0[ \cup ]2\pi,3\pi[$| % \begin{align*} % \mbox{yields \ } -% x\in ]-\otherpi, 0[ \cup ]2\otherpi, 3\otherpi[ & \mbox{\ with \textsf{ibrackets}}, \\ +% x\in ]-\pi, 0[ \cup ]2\pi, 3\pi[ & \mbox{\ with \textsf{ibrackets}}, \\ % \mbox{instead of \ } -% x\in \mathclose{]}-\otherpi, 0 \mathopen{[} \cup -% \mathclose{]} 2\otherpi, 3\otherpi \mathopen{[} +% x\in \mathclose{]}-\pi, 0 \mathopen{[} \cup +% \mathclose{]} 2\pi, 3\pi \mathopen{[} % &\mbox{\ without \textsf{ibrackets}}. % \end{align*} % @@ -1017,10 +1090,15 @@ % For instance |$[a,b] +[c,d]$| yields $[a,b] +[c,d]$ % but |$[a,b]+ [c,d]$| yields $[a, b]+ [c, d]$. % -% Besides, there are other approaches, for example the |\interval| macro +% \medskip +% Note that there are other ways to proceed, +% for example with |\interval|, % from the \textsf{interval} package~\cite{INT}, -% or |\DeclarePairedDelimiters| from the \textsf{mathtools} package~\cite{TOOL} -% (but this command is incompatible with \textsf{ibrackets}). +% or with |\DeclarePairedDelimiter| +% \footnote{You cannot use \texttt{\string\DeclarePairedDelimiter} with square brackets +% when \textsf{ibrackets} is loaded.} +% from \mbox{\textsf{mathtools}}~\cite{TOOL}. +% \hypertarget{decimalcomma}{} % % \medskip %\DescribeMacro{[decimalcomma]} @@ -1040,11 +1118,10 @@ % in particular when running through Lua\LaTeX, using \textsf{unicode-math} % and calling |\setmathfont|. % Therefore we propose the \textsf{decimalcomma} package~\cite{DEC}, -% functionally identical to that of \textsf{ncccomma} but with lighter code -% and without the aforementioned incompatibility. +% functionally identical to that of \textsf{ncccomma} but +% without the aforementioned incompatibility. % It can be loaded by \textsf{mismath} using the \texttt{decimalcomma} -% package option\footnote{\texttt{ibrackets} and \texttt{decimalcomma} are the only -% options specific to the \textsf{mismath} package.}. +% package option. % % \subsection{Environments for systems of equations and small matrices} % @@ -1159,7 +1236,8 @@ % % \DescribeEnv{mathcols} % The \texttt{mathcols} environment allows you to arrange -% ``long'' calculations in double columns, separated with a central rule, +% lengthy calculations with short expressions across two columns +% separated by a vertical line, % as shown in the following example. % However, to use this feature, the \textsf{multicol} package must be loaded in the preamble. % The \texttt{mathcols} environment activates mathematical mode @@ -1194,96 +1272,85 @@ % \end{verbatim} % % \vspace{-4ex} -% \subsection{Old commands} -% -% Here is a summary table of old commands that were used until version 2.2. -% These commands are still functional and will be maintained for the time being, -% but a warning message indicates the new alternative. -% They used to work only in the preamble, affecting the entire document globally, -% and lacked an inverse switch. -% These old commands can now be replaced by the more -% versatile and powerful |\MathUp| macro, which can be used anywhere -% in the document or preamble and has an inverse switch |\MathIt|. -% -% \begin{center} +% \subsection{Summary of the package options} +% +% The following table summarizes the possible package options. +% You can add to them any option you want to pass to \textsf{amsmath} or \textsf{mathtools}. +% The hyperlinks (in blue) redirect to the paragraphs in the documentation +% where these options are described. +% \begin{center} % \setlength{\extrarowheight}{1pt} -% \begin{tabular}{ll} +% \begin{tabular}{>{\ttfamily}ll} % \hline -% Old command & New alternative \\ +% \normalfont Option & \mbox{Effect} \\ % \hline -% |\enumber| & |\MathUp{e}| \\ -% |\inumber| & |\MathUp{i}| \\ -% |\jnumber| & |\MathUp{j}| \\ -% |\PEupright| & |\MathProba{PE}| \\ +% \hyperlink{nofunction}{nofunction} & don't load some additional function definitions \\ +% \hyperlink{classicReIm}{otherReIm} & typesets |\Re| and |\Im| as $\Re$ and $\Im$ \\ +% \hyperlink{classicReIm}{classicReIm} & preserves |\Re| and |\Im| as $\oldRe$ and $\oldIm$ \\ +% \hyperlink{ibrackets}{ibrackets} & loads the \textsf{ibrackets} package\\ +% \hyperlink{decimalcomma}{decimalcomma} & loads the \textsf{decimalcomma} package \\ % \hline % \end{tabular} % \end{center} -% -% \medskip -% You can also utilize |\MathNumbers| instead of |\MathUp| with an argument containing -% all the constants you want to be typeset in roman (among `e, i, j'). -% -% Additionally you can include V in the argument of |\MathProba| to refer to variance, -% (or even use |\MathUp{P}\MathUp{E}|). -% -% \medskip -% In version 2.3 we attempted to replace these old commands -% with package options based on keyval. However, we found that this method was -% less efficient and have decided to abandon it. -% As a result, the command |\mismathset| is now obsolete. -% Additionally, the command, |\paren|, which was used before version 2.0, -% is no longer supported. -% % \StopEventually{} % \section{Implementation} % % We load certain packages conditionally to avoid 'option clash' errors in cases % where these packages have been previously loaded with other options. +% The \textsf{amsmath} package is loaded by \textsf{mathtools}. % \begin{macrocode} \newif\ifmm@ibrackets % initialized to false -\newif\ifmm@decimalcomma \DeclareOption{ibrackets}{\mm@ibracketstrue} +\newif\ifmm@decimalcomma \DeclareOption{decimalcomma}{\mm@decimalcommatrue} -\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{amsmath}} +\newif\ifmm@nofunction +\DeclareOption{nofunction}{\mm@nofunctiontrue} +\newif\ifmm@otherReIm +\DeclareOption{otherReIm}{\mm@otherReImtrue} +\newif\ifmm@classicReIm +\DeclareOption{classicReIm}{\mm@classicReImtrue} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{mathtools}} \ProcessOptions \relax -\@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}} +%\@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}} \@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}} \@ifpackageloaded{esvect}{}{\RequirePackage[b]{esvect}} \RequirePackage{ifthen} \RequirePackage{xparse} % provides \NewDocumentCommand, now in LaTeX3 -\RequirePackage{xspace} +\RequirePackage{xspace} % for \iif command \RequirePackage{iftex} \RequirePackage{etoolbox} % provides \AtEndPreamble -\RequirePackage{xkeyval} +\RequirePackage{xkeyval} % for \pinumber options % \end{macrocode} % % The package \textsf{unicode-math} causes some compatibility issues -% with the options \texttt{ibrackets} or \texttt{decimalcomma}: the respective packages +% with \textsf{ibrackets} and \textsf{decimalcomma}: theses packages % must be loaded \emph{after} \textsf{unicode-math}, -% but \textsf{mismath} (like \textsf{amsmath}) must be loaded \emph{before} +% but \textsf{mismath} (like \textsf{amsmath}) should be loaded \emph{before} % \textsf{unicode-math}. -% And to complicate matters, \textsf{unicode-math} defines all its commands +% And to complicate matters, \mbox{\textsf{unicode-math}} defines all its commands % by |\AtBeginDocument|. -% Therefore we used the command |\AtBeginDocument| within -% |\AtEndPreamble| (from the \textsf{etoolbox} package). +% Therefore we used the command |\AtEndPreamble|, from the \textsf{etoolbox} package, +% which makes the job (because both \textsf{ibrackets} and \textsf{decimalcomma} +% work also in |\AtBeginDocument|). % % Moreover the command |\mathbfsfit| (used for tensors) is already defined % in \textsf{unicode-math} and will not be redefined if \textsf{unicode-math} % is loaded. % \begin{macrocode} +\@ifpackageloaded{unicode-math}{ + \PackageWarningNoLine{mismath}{The package unicode-math\MessageBreak + should be loaded after mismath} +}{} \newif\ifmm@unicodemath \newif\ifmm@multicol \AtEndPreamble{% necessary to work with unicode-math - \@ifpackageloaded{multicol}{\mm@multicoltrue}{\mm@multicolfalse} + \ifmm@decimalcomma\RequirePackage{decimalcomma}\fi + \ifmm@ibrackets\RequirePackage{ibrackets}\fi + \@ifpackageloaded{multicol}{\mm@multicoltrue}{} \@ifpackageloaded{unicode-math}{\mm@unicodemathtrue}{ - \mm@unicodemathfalse \DeclareMathAlphabet{\mathbfsfit}{\encodingdefault}% {\sfdefault}{bx}{it}} - \AtBeginDocument{% necessary to work with unicode-math - \ifmm@ibrackets\RequirePackage{ibrackets}\fi - \ifmm@decimalcomma\RequirePackage{decimalcomma}\fi - } } % \end{macrocode} @@ -1299,7 +1366,6 @@ % \end{macrocode} % -% \medskip % \DescribeMacro{\mm@warning} \DescribeMacro{\mm@macro} \DescribeMacro{\mm@operator} % The next three internal macros serve as meta commands for % conditionally defining macros while providing a warning message if the macro already exists. @@ -1307,8 +1373,8 @@ % \medskip % \begin{macrocode} \newcommand\mm@warning[1]{ - \PackageWarningNoLine{mismath}{ - Command \bslash #1 already exist and will not be redefined} + \PackageWarningNoLine{mismath}{Command \bslash #1 already exist + \MessageBreak and will not be redefined} } \newcommand\mm@macro[2]{ \@ifundefined{#1}{ @@ -1336,7 +1402,7 @@ % \begin{macrocode} \@ifundefined{mathup}{ \providecommand*{\mathup}[1]{{\operatorfont #1}} - }{\mm@warning{mathup} } % also in kpfonts (and unicode-math) + }{\mm@warning{mathup} } % also in kpfonts and unicode-math \mm@macro{e}{\mathup{e}} \AtBeginDocument{\let\oldi\i \let\oldj\j \renewcommand{\i}{\TextOrMath{\oldi}{\mathup{i}}} @@ -1443,11 +1509,8 @@ % and may not have a straightforward solution. % % \medskip -% In addition to |\MathUp| and |\MathIt|, we also offer the following two commands -% to set a group of letters in roman typeface: one for for mathematical constants, -% among `e, i, j', and the other for probability operators, among or `P, E, V'. -% -% \medskip +% In addition to |\MathUp| and |\MathIt|, we also offer the following command +% to set a group of letters, among `e, i, j', in roman typeface. % \begin{macrocode} \newcommand*\MathNumbers[1]{% \in@{e}{#1} \ifin@ \MathUp{e} \fi @@ -1455,12 +1518,6 @@ \in@{j}{#1} \ifin@ \MathUp{j} \fi } -\newcommand*\MathProba[1]{% - \in@{P}{#1} \ifin@ \MathUp{P} \fi - \in@{E}{#1} \ifin@ \MathUp{E} \fi - \in@{V}{#1} \ifin@ \MathUp{V} \fi -} - % \end{macrocode} % \DescribeMacro{\apply} % With the inverse switch |\MathNormal|, you can apply the normal (italic) style @@ -1471,7 +1528,7 @@ % I discovered this powerfull macro on \texttt{iterate190.rssing.com} by searching for % ``TeX How to iterate over a comma separated list''. % The answer was posted under the pseudonym `wipet' on 2021/02/26. -% Let its author, Petr Ol\v sák, be thanked. +% Let its author, Petr Ol\v{s}ák, be thanked. % This macro allows to accomplish tasks that % usual loop instructions like |\@for| or |\foreach| cannot achieve due to % errors like ``!~Improper alphabetic constant''. @@ -1496,44 +1553,24 @@ % They were intended to set some letters in upright shape % in math mode, but only worked in the preamble. % This is now managed by the more powerful |\MathUp| command, and -% the old commands are maintained for compatibility reasons. +% the old commands are maintained but as alias for |\MathUp|. % \medskip % % \begin{macrocode} -\newcommand{\enumber}{% - \PackageWarning{mismath}{Old command \string\enumber\space - is used. \MessageBreak - It can be replaced by \string\MathUp{e}} - \MathUp{e} -} -\newcommand{\inumber}{% - \PackageWarning{mismath}{Old command \string\inumber\space - is used. \MessageBreak - It can be replaced by \string\MathUp{i}} - \MathUp{i} -} -\newcommand{\jnumber}{ - \PackageWarning{mismath}{Old command \string\jnumber\space - is used. \MessageBreak - It can be replaced by \string\MathUp{j}} - \MathUp{j} -} -\newcommand{\PEupright}{ - \PackageWarning{mismath}{Old command \string\PEupright\space - is used. \MessageBreak - It can be replaced by \string\MathProba{PE}} - \MathUp{P}\MathUp{E} -} +\newcommand{\enumber}{\MathUp{e}} +\newcommand{\inumber}{\MathUp{i}} +\newcommand{\jnumber}{\MathUp{j}} % \end{macrocode} % -% Obtaining an upright Greek letter $\otherpi$ must be handled differently. +% Obtaining an upright Greek letter $\pi$ must be handled differently. % The switches are called |\pinumber| and |\pinormal| % and can be used anywhere in the document. % % But |\pinumber| must be called first in the preamble with an optional argument. % This argument can be a valid command name that produces an upright pi letter % (after having loading an appropriate package). +% Compatibility with \textsf{unicode-math} is a bit tricky! % When given without an argument in the preamble, % |\pinumber| uses an LGR font encoding called \texttt{lmr}. % A new feature (v2.11) is to use |\pinumber| with a keyval option to @@ -1541,129 +1578,130 @@ % a whole package, thus without altering the other (italic) Greek letters. % We achieve this with |\DeclareSymbolFont| and |\DeclareMathSymbol|. % We just have to know the ``name'' of the desired symbol font. -% Compatibility with \textsf{unicode-math} is a bit tricky! % % \medskip % \begin{macrocode} \newif\ifmm@lgr -\define@cmdkey{pinumber}[mm@]{lgrmath}[lmr]{\mm@lgrtrue} +\define@cmdkey{pifonts}[mm@]{lgrmath}[lmr]{\mm@lgrtrue} \newif\ifmm@upgreek -\define@choicekey{pinumber}{upgreek}[\mm@upgreek@option]% - {Euler,Symbol,Symbolsmallscale}[Symbol]{\mm@upgreektrue} +\define@choicekey{pifonts}{upgreek}[\mm@upgreek@option]% + {Euler,Symbol,Symbolsmallscale}[Symbol]{\mm@upgreektrue} \newif\ifmm@mathdesign -\define@choicekey{pinumber}{mathdesign}[\mm@mathdesign@option]% - {Utopia,Garamond,Charter}[Charter]{\mm@mathdesigntrue} +\define@choicekey{pifonts}{mathdesign}[\mm@mathdesign@option]% + {Utopia,Garamond,Charter}[Charter]{\mm@mathdesigntrue} \newif\ifmm@kpfonts -\define@choicekey{pinumber}{kpfonts}[\mm@kp@option]% - {normal,light}[normal]{\mm@kpfontstrue} -\define@boolkey{pinumber}[mm@]{fourier}[true]{} -\define@boolkey{pinumber}[mm@]{pxfonts}[true]{} -\define@boolkey{pinumber}[mm@]{txfonts}[true]{} +\define@choicekey{pifonts}{kpfonts}[\mm@kp@option]% + {normal,light}[normal]{\mm@kpfontstrue} +\define@boolkeys{pifonts}[mm@]{fourier,pxfonts,txfonts}[true] +\newif\ifmm@fontspec +\define@cmdkey{pifonts}[mm@]{fontspec}[GFS Didot]{\mm@fontspectrue} -\newcommand*\pinumber[1][]{% - \ifthenelse{\equal{#1}{}}{% no argument given - \ifx\@onlypreamble\@notprerr % not in preamble - \@ifundefined{savedpi}{ - \PackageWarning{mismath}{% - \string\pinumber\space - must be used in the preamble first} - }{\let\pi\savedpi} - \else % in the preamble - \AtBeginDocument{\let\itpi\pi}% must be here with unicode-math - \AtEndPreamble{\AtBeginDocument{ - %\let\itpi\pi - \let\pi\relax - \DeclareFontEncoding{LGR}{}{} - \DeclareSymbolFont{mm@grup}{LGR}{lmr}{m}{n} - \DeclareMathSymbol{\pi}\mathalpha{mm@grup}{"70} - \let\savedpi\pi - }} - \fi - }{% command name or keyval options, necessarily in the preamble - \AtBeginDocument{\let\itpi\pi}% must be here with unicode-math - \AtEndPreamble{\AtBeginDocument{ - \@ifundefined{#1}{% - \setkeys{pinumber}{#1} - \let\pi\relax - \ifmm@lgr - \DeclareFontEncoding{LGR}{}{} - \DeclareSymbolFont{mm@grup}{LGR}{\mm@lgrmath}{m}{n} - % may work with bold (b) instead of m - \DeclareMathSymbol{\pi}{\mathalpha}{mm@grup}{112} - - \else\ifmm@upgreek - \ifdefstring{\mm@upgreek@option}{Euler}{ +\newcommand*\pifonts[1]{% + \setkeys{pifonts}{#1} + \let\pi\relax + + \ifmm@lgr + \DeclareFontEncoding{LGR}{}{} + \DeclareSymbolFont{mmupgr}{LGR}{\mm@lgrmath}{m}{n} + % may work with bold (b) instead of m + \DeclareMathSymbol{\pi}{\mathord}{mmupgr}{112} + + \else\ifmm@fontspec + \@ifpackageloaded{fontspec}{}{ + \PackageError{mismath}{\string\pinumber\space with + the `fontspec' option\MessageBreak + needs the fontspec package,\MessageBreak + which must be run with LuaLaTeX or XeLaTeX}{} + } + \newfontfamily\mismathgreekfont{\mm@fontspec}[NFSSFamily=mgr] + \DeclareSymbolFont{mmupgr}{TU}{mgr}{m}{n} + \Umathchardef\pi="7 \symmmupgr "03C0 + + \else\ifmm@upgreek + \ifdefstring{\mm@upgreek@option}{Euler}{ \DeclareFontFamily{U}{eur}{\skewchar\font'177} \DeclareFontShape{U}{eur}{m}{n}{% <-6> eurm5 <6-8> eurm7 <8-> eurm10}{} - \DeclareFontShape{U}{eur}{b}{n}{% - <-6> eurb5 <6-8> eurb7 <8-> eurb10}{} - \DeclareSymbolFont{mm@grup}{U}{eur}{m}{n} - \DeclareMathSymbol{\pi}{\mathord}{mm@grup}{"19} % 25 - }{ - \ifdefstring{\mm@upgreek@option}{Symbol}{ - \DeclareSymbolFont{mm@grup}{U}{psy}{m}{n} - \DeclareMathSymbol{\pi}{\mathord}{mm@grup}{`p} - }{ - \ifdefstring{\mm@upgreek@option}{Symbolsmallscale}{ + \DeclareSymbolFont{mmupgr}{U}{eur}{m}{n} + \DeclareMathSymbol{\pi}{\mathord}{mmupgr}{"19} + }{ + \ifdefstring{\mm@upgreek@option}{Symbol}{ + \DeclareSymbolFont{mmupgr}{U}{psy}{m}{n} + \DeclareMathSymbol{\pi}{\mathord}{mmupgr}{`p} + }{ + \ifdefstring{\mm@upgreek@option}{Symbolsmallscale}{ \DeclareFontFamily{U}{fsy}{} \DeclareFontShape{U}{fsy}{m}{n}{<->s*[.9]psyr}{} - \DeclareSymbolFont{mm@grup}{U}{fsy}{m}{n} - \DeclareMathSymbol{\pi}{\mathord}{mm@grup}{`p} - }{}}} + \DeclareSymbolFont{mmupgr}{U}{fsy}{m}{n} + \DeclareMathSymbol{\pi}{\mathord}{mmupgr}{`p} + }{}}} - \else\ifmm@mathdesign - \ifdefstring{\mm@mathdesign@option}{Utopia}{ - \DeclareSymbolFont{mm@grup}{OML}{mdput}{m}{n} - }{ - \ifdefstring{\mm@mathdesign@option}{Garamond}{ - \DeclareSymbolFont{mm@grup}{OML}{mdugm}{m}{n} - }{ - \ifdefstring{\mm@mathdesign@option}{Charter}{ - \DeclareSymbolFont{mm@grup}{OML}{mdbch}{m}{n} - }{}}} + \else\ifmm@mathdesign + \ifdefstring{\mm@mathdesign@option}{Utopia}{ + \DeclareSymbolFont{mmupgr}{OML}{mdput}{m}{n} + }{ + \ifdefstring{\mm@mathdesign@option}{Garamond}{ + \DeclareSymbolFont{mmupgr}{OML}{mdugm}{m}{n} + }{ + \ifdefstring{\mm@mathdesign@option}{Charter}{ + \DeclareSymbolFont{mmupgr}{OML}{mdbch}{m}{n} + }{}}} - \else\ifmm@fourier - \DeclareFontEncoding{FML}{}{} - \DeclareSymbolFont{mm@grup}{FML}{futm}{m}{it} - - \else\ifmm@kpfonts - \ifdefstring{\mm@kp@option}{normal}{ - \DeclareSymbolFont{mm@grup}{U}{jkpmia}{m}{it} - }{ - \ifdefstring{\mm@kp@option}{light}{ - \DeclareSymbolFont{mm@grup}{U}{jkplmia}{m}{it} - }} - - \else\ifmm@pxfonts - \DeclareSymbolFont{mm@grup}{U}{pxmia}{m}{it} - - \else\ifmm@txfonts - \DeclareSymbolFont{mm@grup}{U}{txmia}{m}{it} - \fi\fi\fi\fi\fi - - \DeclareMathSymbol{\pi}{\mathord}{mm@grup}{"19} - \fi\fi - - \let\savedpi\pi + \else\ifmm@fourier + \DeclareFontEncoding{FML}{}{} + \DeclareSymbolFont{mmupgr}{FML}{futm}{m}{it} + + \else\ifmm@kpfonts + \ifdefstring{\mm@kp@option}{normal}{ + \DeclareSymbolFont{mmupgr}{U}{jkpmia}{m}{it} }{ - \ifmm@unicodemath - \ifthenelse{\equal{#1}{uppi}}{ - \AtBeginDocument{% - \let\pi\relax - \def\pi{\symup{\symbol{"003C0}}} - \let\itpi\relax - \def\itpi{\symit{\symbol{"003C0}}} % or "1D70B - } - }{\renewcommand{\pi}{\csname #1\endcsname}} - \else - \renewcommand{\pi}{\csname #1\endcsname} - \fi - - \let\savedpi\pi - } - }} - } + \ifdefstring{\mm@kp@option}{light}{ + \DeclareSymbolFont{mmupgr}{U}{jkplmia}{m}{it} + }{}} + + \else\ifmm@pxfonts + \DeclareSymbolFont{mmupgr}{U}{pxmia}{m}{it} + + \else\ifmm@txfonts + \DeclareSymbolFont{mmupgr}{U}{txmia}{m}{it} + + \fi\fi\fi\fi\fi + \DeclareMathSymbol{\pi}{\mathord}{mmupgr}{"19} + \fi\fi\fi +} + +\newcommand*\pinumber[1][]{% + \ifthenelse{\equal{#1}{}}{% no argument given + \ifx\@onlypreamble\@notprerr % not in preamble + \@ifundefined{savedpi}{ + \PackageWarning{mismath}{% + \string\pinumber\space + must be used in the preamble first} + }{\let\pi\savedpi} + \else % in the preamble + \AtBeginDocument{ + \let\itpi\pi + \pifonts{lgrmath} + \let\savedpi\pi + } + \fi + }{% command name or keyval options, necessarily in the preamble + \AtBeginDocument{% must be here with unicode-math + \let\itpi\pi + \@ifundefined{#1}{% + \pifonts{#1} + }{ + \ifmm@unicodemath + \ifthenelse{\equal{#1}{uppi}}{% or "1D70B + \renewcommand\pi{\symup{\symbol{"03C0}}} + \renewcommand\itpi{\symit{\symbol{"03C0}}} + }{\renewcommand{\pi}{\csname #1\endcsname}} + \else + \renewcommand{\pi}{\csname #1\endcsname} + \fi + } + \let\savedpi\pi} + } } \newcommand{\pinormal}{% @@ -1683,8 +1721,29 @@ } % \end{macrocode} +% When |\pinumber|\oarg{keyval} has been called, you can also get +% some other mathematical constants using Greek letters, +% \eg $\othergamma$, the Euler-Mascheroni constant: +% \begin{verbatim} +% \let\gamma\relax +% \DeclareMathSymbol{\gamma}{\mathord}{mmupgr}{"0D} +% \end{verbatim} +% \vspace{-2ex} +% If \textsf{unicode-math} is used, you must put these commands in +% |\AtBeginDocument|. +% The hexadecimal code |"0D| depends on the option passed to |\pinumber| +% in the preamble (see the command |\pifonts| above and search in package docs). \\ +% And to get the golden ratio $\othervarphi$: +% \begin{verbatim} +% \let\phi\relax +% \DeclareMathSymbol{\varphi}{\mathord}{mmupgr}{"27} +% \end{verbatim} +% \vspace{-2ex} +% To preserve the original $\gamma$ or $\varphi$, +% you can define |\upgamma| or |\upvarphi| instead. % -% And now the commands for vectors (and tensors). +% \medskip +% And now the commands for vectors and tensors. % \medskip % \begin{macrocode} \newboolean{arrowvect} @@ -1693,9 +1752,9 @@ \newcommand{\boldvect}{\setboolean{arrowvect}{false}} \newcommand{\boldvectcommand}{\boldsymbol} % from amsbsy package \mm@macro{vect}{\ifthenelse{\boolean{arrowvect}}{ - \vv}{\boldvectcommand}} % doesn't work well with \if... \fi -\newcommand*{\hvect}[1]{\vect{\vphantom{t}#1}} -\newcommand*{\hvec}[1]{\vec{\vphantom{t}#1}} + \vv}{\boldvectcommand}} % doesn't work well with \if... \fi +\newcommand*{\hvect}[1]{\vect{\vphantom{A}#1}} +\newcommand*{\hvec}[1]{\vec{\vphantom{A}#1}} \newcommand*{\@norm}[1]{ \mbox{\raisebox{1.75pt}{\small$\bigl\Vert$}} #1 @@ -1715,9 +1774,7 @@ \newcommand{\tensor}{\mathbfsfit} % isomath uses \mathsfbfit % \end{macrocode} -% -% Classic identifiers are presented below. -% \medskip + % \begin{macrocode} \mm@macro{di}{\mathop{}\!\mathup{d}} \newcommand\probastyle{} @@ -1726,62 +1783,121 @@ \mm@macro{E}{\operatorname{\probastyle{E}}} \mm@macro{V}{\operatorname{\probastyle{V}}} -\mm@operator{\adj}{adj} -\mm@operator{\Aut}{Aut} -\mm@operator{\codim}{codim} -\mm@operator{\Conv}{Conv} -\mm@operator{\cov}{cov} -\mm@operator{\Cov}{Cov} -\mm@macro{curl}{\operatorname{\vect{\mathup{curl}}}} -\mm@operator[divg]{\divg}{div} -\mm@operator{\End}{End} +\newcommand*\MathProba[1]{% + \in@{P}{#1} \ifin@ \MathUp{P} \fi + \in@{E}{#1} \ifin@ \MathUp{E} \fi + \in@{V}{#1} \ifin@ \MathUp{V} \fi +} -\mm@operator{\erf}{erf} -\mm@macro{grad}{\operatorname{\vect{\mathup{grad}}}} -\mm@operator{\id}{id} % mathop or mathord? -\mm@operator{\Id}{Id} -\mm@operator{\im}{im} -\let\oldIm\Im \renewcommand{\Im}{\operatorname{Im}} -\mm@operator{\lb}{lb} -\mm@operator{\lcm}{lcm} +% \end{macrocode} +% Classic identifiers are presented below. They will be defined only +% if the option \texttt{nofunction} has not been activated. +% \medskip +% \begin{macrocode} +\ifmm@nofunction\else + \mm@operator{\adj}{adj} + \mm@operator{\Aut}{Aut} + \mm@operator{\codim}{codim} + \mm@operator{\coker}{coker} + \mm@operator{\Conv}{Conv} + \mm@operator{\cov}{cov} + \mm@operator{\Cov}{Cov} + \mm@macro{curl}{\operatorname{\vect{\mathup{curl}}}} + \mm@operator[divg]{\divg}{div} + + \mm@operator{\End}{End} + \mm@operator{\erf}{erf} + \mm@macro{grad}{\operatorname{\vect{\mathup{grad}}}} + \mm@operator{\id}{id} % mathop or mathord? + \mm@operator{\Id}{Id} + \mm@operator{\im}{im} + \mm@operator{\lb}{lb} + \mm@operator{\lcm}{lcm} + \mm@operator{\rank}{rank} + + \mm@operator{\Res}{Res} + \mm@macro{rot}{\operatorname{\vect{\mathup{rot}}}} + \mm@operator{\sgn}{sgn} + \mm@operator{\sinc}{sinc} + \mm@operator[spa]{\spa}{span} + \mm@operator{\tr}{tr} + \mm@operator{\var}{var} + \mm@operator{\Var}{Var} + \mm@operator[Zu]{\Zu}{Z} + + \mm@operator{\arccot}{arccot} + \mm@operator{\sech}{sech} + \mm@operator{\csch}{csch} + \mm@operator{\arsinh}{arsinh} + \mm@operator{\arcosh}{arcosh} + \mm@operator{\artanh}{artanh} + \mm@operator{\arcoth}{arcoth} + \mm@operator{\arsech}{arsech} + \mm@operator{\arcsch}{arcsch} +\fi -\mm@operator{\rank}{rank} -\let\oldRe\Re \renewcommand{\Re}{\operatorname{Re}} -\mm@macro{rot}{\operatorname{\vect{\mathup{rot}}}} -\mm@operator{\sgn}{sgn} -\mm@operator{\sinc}{sinc} -\mm@operator[spa]{\spa}{span} -\mm@operator{\tr}{tr} -\mm@operator{\var}{var} -\mm@operator{\Var}{Var} -\mm@operator[Zu]{\Zu}{Z} +% \end{macrocode} +% +% The |\mathcal| alphabet, from the original Computer Modern font family, +% is used here to produce $\Re$, $\Im$ and $\bigO$. +% Several font packages redefines this alphabet producing glyphs that may seem less +% suitable for the commands below. +% We have therefore retained the original |\cmmathcal| math alphabet, +% which can be used for other letters. +% If \textsf{unicode-math} is called, it will redefine the commands |\Re| and |\Im| +% in |\AtBeginDocument|, hence the use of `|\AtEndPreamble{\AtBeginDocument{|' +% to ensure that the \textsf{mismath} redefinition occur after the actions +% of \textsf{unicode-math}. +% +% \begin{macrocode} +\DeclareFontFamily{U}{cmsy}{\skewchar\font48 } +\DeclareFontShape{U}{cmsy}{m}{n}{% from mathalpha + <-5.5> cmsy5% + <5.5-6.5> cmsy6% + <6.5-7.5> cmsy7% + <7.5-8.5> cmsy8% + <8.5-9.5> cmsy9% + <9.5-> cmsy10}{} +\DeclareMathAlphabet{\cmmathcal}{U}{cmsy}{m}{n} -\mm@operator{\arccot}{arccot} -\mm@operator{\sech}{sech} -\mm@operator{\csch}{csch} -\mm@operator{\arsinh}{arsinh} -\mm@operator{\arcosh}{arcosh} -\mm@operator{\artanh}{artanh} -\mm@operator{\arcoth}{arcoth} -\mm@operator{\arsech}{arsech} -\mm@operator{\arcsch}{arcsch} +\AtEndPreamble{\AtBeginDocument{ + \ifmm@classicReIm\else + \let\oldRe\Re + \let\oldIm\Im + \ifmm@otherReIm + \renewcommand{\Re}{\cmmathcal{R}\mathit{e}} + \renewcommand{\Im}{\cmmathcal{I}\mathit{m}} + \else + \renewcommand{\Re}{\operatorname{Re}} + \renewcommand{\Im}{\operatorname{Im}} + \fi\fi +}} -\mm@operator[bigO]{\bigO}{\mathcal{O}} +\mm@operator[bigO]{\bigO}{\cmmathcal{O}} \mm@operator[bigo]{\bigo}{O} \mm@operator[lito]{\lito}{o} % \end{macrocode} % And finally we present the remaining macros. % -% With Cyrillic languages, the command |\C| may already be defined (only for text mode). -% Thus, it will not be redefined by \textsf{mismath}. However, one may still want -% to use our |\C| macro only for math mode without interfering the definition of -% the text |\C|, therefore the |\onlymathC| macro. +% With Cyrillic languages, the command |\C| may already be defined but only for text mode. +% Thus, it will not be redefined by \textsf{mismath}. However, when activating +% |\onlymathC|, you can to use our |\C| macro only for math mode, +% without interfering the definition of the text |\C| that is already defined. +% +% When using \XeTeX\ or \LuaTeX\ engines with the \textsf{hyperref} package, +% |\C| will be already defined and +% you get the message "\texttt{Command \string\C\space unavailable in encoding TU}". +% Therefore |\onlymathC| is automatically called in that case. % \medskip % \begin{macrocode} \mm@macro{mathset}{\mathbf} \mm@macro{R}{\mathset{R}} -\mm@macro{C}{\mathset{C}} +\AtBeginDocument{ + \@ifpackageloaded{hyperref}% + {\iftutex\onlymathC\fi}% LuaTex or XeTeX engines + {\mm@macro{C}{\mathset{C}}} +} \providecommand\onlymathC{\let\oldC\C \renewcommand{\C}{\TextOrMath{\oldC}{\mathset{C}}} } \mm@macro{N}{\mathset{N}} @@ -1799,7 +1915,7 @@ \mm@macro{lbar}{\overline} \@ifundefined{hlbar}{ - \providecommand*{\hlbar}[1]{\overline{\vphantom{t}#1}}}{ + \providecommand*{\hlbar}[1]{\overline{\vphantom{A}#1}}}{ \mm@warning{hlbar} } \newcommand\@eqdef{\stackrel{\mathup{def}}{=}} \newcommand\@@eqdef{\stackrel{\mathrm{\Delta}}{=}} @@ -1827,7 +1943,8 @@ \providecommand*{\abs}[1]{\left\vert#1\right\vert} }{ \mm@warning{abs} } \@ifundefined{lfrac}{ - \providecommand*{\lfrac}[2]{\frac{\;#1\;}{\;#2\;}} }{ + \providecommand*{\lfrac}[3][7mu]{% + \frac{\mkern#1#2\mkern#1}{\mkern#1#3\mkern#1}} }{ \mm@warning{lfrac} } \newcommand{\systemstretch}{1.2} @@ -1850,8 +1967,8 @@ \begin{math}\begin{aligned}\displaystyle \else \PackageError{mismath}{The mathcols environment - needs the multicol package}{Add the package multicol - to your preamble.} + needs the multicol package}{Call the package multicol + in your preamble.} \fi }{% \end{aligned}\end{math} \hfill\mbox{} @@ -1864,7 +1981,7 @@ } % \end{macrocode} % -% \begin{thebibliography}{28} +% \begin{thebibliography}{34} % \begin{raggedright} % \bibitem{TYPMA} \emph{Typesetting mathematics for science and technology according % to ISO 31/XI}, Claudio Beccari, TUGboat Volume 18 (1997), No.~1. @@ -1880,31 +1997,43 @@ % \url{https://old.iupac.org/standing/idcns/italic-roman_dec99.pdf}. % \bibitem{VECT} \emph{\textsf{esvect} -- Typesetting vectors with beautiful % arrow with \LaTeXe}, Eddie Saudrais, CTAN, v1.3 2013/07/11. +% \bibitem{TOOL} \emph{The \textsf{mathtools} package}, Morten Høgholm, Lars Madsen, CTAN, +% v1.29 2022/06/29. % \bibitem{AMS} \emph{\textsf{amsmath} -- \AmS\ mathmatical facilities for \LaTeX}, % Frank Mittelbach, Rainer Schöpf, Michael Downes, Davis M.~Jones, David Carlisle, % CTAN, v2.17n 2022/04/08. % \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 2023/08/13. -% \bibitem{TOOL} \emph{The \textsf{mathtools} package}, Morten Høgholm, Lars Madsen, CTAN, -% v1.29 2022/06/29. % \bibitem{FIXM} \emph{The \textsf{fixmath} package for \LaTeXe}, Walter Schmidt, % CTAN, v0.9 2000/04/11. % \bibitem{ISOM} \emph{\textsf{isomath} -- Mathematical style for science and technology}, % Günter Milde, CTAN, v0.6.1 2012/09/04. % \bibitem{PMISO} \emph{\textsf{PM-ISOmath}, The Poor Man ISO math bundle}, % the \textsf{pm-isomath} package by Claudio Beccari, CTAN, v1.2.00 2021/08/04. +% \bibitem{MGREEK} \emph{The \textsf{mathgreeks} package}, Antoine Missier, CTAN, +% v1.1 2024/05/04. % \bibitem{GREEK} \emph{The \textsf{upgreek} package for \LaTeXe}, Walter Schmidt, % CTAN, v2.0 2003/02/12. % \bibitem{DESIGN} \emph{The \textsf{mathdesign} package}, % Paul Pichaureau, CTAN, v2.31 2013/08/29. -% \bibitem{ALPHA} \emph{The \textsf{textalpha} package} -% (part of the \textsf{greek-fontenc} bundle), Günter Milde, CTAN, v2.1 14/06/2022. % \bibitem{KPF} \emph{\textsf{Kp-Fonts} -- The Johannes Kepler project}, % Christophe Caignaert, CTAN, v3.34 20/09/2022. % \bibitem{FOUR} \textsf{Fourier-GUT\hspace{-0.1em}\emph{enberg}}, -% Michel Bovani, CTAN, v1.3 30/01/2005. +% Michel Bovani, CTAN, v1.3 2005/01/30. +% \bibitem{PX} \emph{\textsf{PX Fonts} -- Palatino-like fonts in support of mathematics}, +% Young Ryu, CTAN, 2000/12/14. +% \bibitem{TX} \emph{\textsf{TX Fonts} -- Times-like fonts in support of mathematics}, +% Young Ryu, CTAN, 2000/12/15. +% \bibitem{LIB} \emph{The LibertinusT1 Math Package}, Michael Sharpe, CTAN, v2.0.4 2024/01/14. % \bibitem{LGR} \emph{The \textsf{lgrmath} package}, Jean-François B., CTAN, v1.0 2022/11/16. +% \bibitem{NTX} \emph{New TX font package}, Micahel Sharpe, CTAN, v1.735 2024/03/01. +% \bibitem{ALPHA} \emph{The \textsf{textalpha} package} +% (part of the \textsf{greek-fontenc} bundle), Günter Milde, CTAN, v2.1 2022/06/14. +% \bibitem{SPA} \emph{The \textsf{spacingtricks} package}, Antoine Missier, CTAN, +% v1.8 2023/12/06. +% \bibitem{BRACKET} \emph{Intelligent brackets -- The \textsf{ibrackets} package}, +% Antoine Missier, CTAN, v1.2, 2023/07/26. % \bibitem{INT} \emph{The \textsf{interval} package}, Lars Madsen, CTAN, % v0.4 2019/03/06. % \bibitem{ICOMMA} \emph{The \textsf{icomma} package for \LaTeXe}, @@ -1918,9 +2047,7 @@ % \bibitem{SPAL} \emph{The \textsf{spalign} package}, Joseph Rabinoff, CTAN, 2016/10/05. % \bibitem{NMATX} \emph{The package \textsf{nicematrix}}, François Pantigny, CTAN, % v6.14 2023/02/18. -% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}, Antoine Missier, CTAN, v2.10 2024/02/25. -% \bibitem{BRACKET} \emph{Intelligent brackets -- The \textsf{ibrackets} package}, -% Antoine Missier, CTAN, v1.2, 2023/07/26. +% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}, Antoine Missier, CTAN, v3.0 2024/05/04. % \bibitem{LSHORT} \emph{The Not So Short Introduction to \LaTeXe}, % the \textsf{lshort} package by % Tobias Oetiker, Hubert Partl, Irene Hyna and Elisabeth Schlegl, CTAN, v6.4 2021/04/09. diff --git a/macros/latex/contrib/mismath/mismath.ins b/macros/latex/contrib/mismath/mismath.ins index b57ee6b828..5a39f8da29 100644 --- a/macros/latex/contrib/mismath/mismath.ins +++ b/macros/latex/contrib/mismath/mismath.ins @@ -46,7 +46,7 @@ and version 1.3 or later is part of all distributions of LaTeX version \Msg{* mismath.sty *} \Msg{* *} \Msg{* To produce the documentation run the file mismath.dtx *} -\Msg{* through XeLaTeX or LuaLaTeX. *} +\Msg{* through LaTeX. *} \Msg{* *} \Msg{* Happy TeXing! *} \Msg{* *} diff --git a/macros/latex/contrib/mismath/mismath.pdf b/macros/latex/contrib/mismath/mismath.pdf Binary files differindex 5b97173faa..fd41e6702c 100644 --- a/macros/latex/contrib/mismath/mismath.pdf +++ b/macros/latex/contrib/mismath/mismath.pdf diff --git a/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf Binary files differindex b6afbc2fbb..655d73fe6e 100644 --- a/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf +++ b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty index 9564aec94c..9aa462bb76 100644 --- a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty +++ b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty @@ -2,9 +2,9 @@ % licence : Released under the LaTeX Project Public License v1.3c % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e}% -\def\filedate{2024/04/28}% +\def\filedate{2024/05/02}% \let\PfMfiledate\filedate% -\def\fileversion{0.93}% +\def\fileversion{0.94}% \let\PfMfileversion\fileversion% \ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]% @@ -37,6 +37,7 @@ \makeatletter \gdef\PfMFontSize{\@ptsize} +%\gdef\PfMFontSize{\f@size} \makeatother %définition des clés \RequirePackage{simplekv}% @@ -240,6 +241,15 @@ \repeat }% +% On bloque la graine de fabrication des nombres aléatoires. +\ExplSyntaxOn +\cs_new_eq:NN \PfMGraineAlea \sys_gset_rand_seed:n +\ExplSyntaxOff + +\ExplSyntaxOn +\cs_new_eq:NN \PfMChoisisGraineAlea \int_rand:n +\ExplSyntaxOff + %% Gestion de l'affichage ou pas des item (Pour élèves PAP) par exemple % Code by egreg : https://tex.stackexchange.com/questions/627250/hide-specific-item-in-a-list \ExplSyntaxOn @@ -1924,7 +1934,7 @@ \setsepchar{,}% \readlist*\ListePetitsObjets{bonbons,billes,biscuits,gommes,clous,vis,cahiers,trousses}% \readlist*\ListeFruits{pommes,poires,abricots,cerises,fraises,framboises,noix,pêches,nectarines,myrtilles,oranges,mandarines,kiwis}% -\readlist*\ListeVariables{a,b,c,m,n,p,r,s,t,x,y,z}% +\readlist*\ListeVariables{a,b,c,\ell,m,n,p,r,s,t,x,y,z}% \makeatletter \def\ExoCANWrite{% @@ -3353,14 +3363,15 @@ }{% \ifnum\thePfMMaquette=1\relax% \else% - \ifnum\PfMFontSize=0\relax% - \fontsize{10}{\fpeval{1.2*10}}% - \else\ifnum\PfMFontSize=1\relax% - \fontsize{11}{\fpeval{1.2*11}}% - \else% - \fontsize{12}{\fpeval{1.2*12}}% - \fi% - \fi% + %\ifnum\PfMFontSize=0\relax% + % \fontsize{10}{\fpeval{1.2*10}}% + %\else\ifnum\PfMFontSize=1\relax% + % \fontsize{11}{\fpeval{1.2*11}}% + % \else% + % \fontsize{12}{\fpeval{1.2*12}}% + % \fi% + %\fi% + \fontsize{\fpeval{10+\PfMFontSize}}{\fpeval{1.2*(10+\PfMFontSize)}}% \selectfont% \renewcommand{\JustifyingParindent}{\parindent} \justifying% @@ -3392,6 +3403,7 @@ \fi% \PfMBasculeDys% \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}% + \PfMChangerTailleCorrection% }% \NewDocumentCommand\PfMAffichageCorrectionColonnes{}{% @@ -3421,7 +3433,7 @@ \stepcounter{PfMMaquette}% % options de boulot \IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}% - \IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}% + %\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}% % \AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}% \useKVdefault[Boulot]% \setKV[Boulot]{#1}% @@ -3447,14 +3459,15 @@ \ifboolKV[Boulot]{CAN}{% \setKV[CAN]{#2}% %\ifboolKV[Boulot]{CorrigeSeul}{}{\TikzCAN}% - \PfMChangerTailleCorrection% \setcounter{PfMCNNumQ}{0}% \setlength{\PfMLargeurQuestion}{\useKV[CAN]{CoefQ}\linewidth}\setlength{\PfMLargeurReponse}{\useKV[CAN]{CoefR}\linewidth}\setlength{\PfMLargeurJury}{\useKV[CAN]{CoefJ}\linewidth}% \let\exercice\ExoCANWrite\let\endexercice\endExoCANWrite% \AddToHook{env/exercice/begin}{\setcounter{PfMAlea}{0}}% \AddToHook{env/Maquette/end}{% + \xdef\PfMAncienneGraine{\PfMChoisisGraineAlea{123456789}} \xdef\PfMCANTotalExo{\thePfMExo}% \setbox\PfMSauvegardeBox\vbox{% + \PfMGraineAlea{\thePfMMaquette} \setcounter{PfMExo}{0}% \renewcommand{\arraystretch}{2}% \begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}% @@ -3474,12 +3487,41 @@ \TikzCANCor{#2}% \PfMAffichageCorrectionColonnes% \clearpage + \normalsize% \TikzCAN% - \usebox{\PfMSauvegardeBox}% - }{% - \TikzCAN% - \usebox{\PfMSauvegardeBox}% - \ifboolKV[Boulot]{CorrigeFin}{\ifboolKV[Boulot]{CorrigeInverse}{}{\clearpage + \PfMGraineAlea{\thePfMMaquette}% + \setcounter{PfMCNNumQ}{0}% + \setcounter{PfMExo}{0}% + \renewcommand{\arraystretch}{2}% + \begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}% + \hhline{~---}% + \multicolumn{1}{c|}{}&\cellcolor{gray!15}\centering Question&\cellcolor{gray!15}\centering Réponse&\cellcolor{gray!15}\centering\arraybackslash Jury\\% + \hline% + \endhead% + \xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{% + \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ex##1.can}&\CNReponse&\\ + \hline% + }% + \end{longtable}% + \renewcommand{\arraystretch}{1}% + }{% + \PfMGraineAlea{\PfMAncienneGraine}% + \TikzCAN% + \setcounter{PfMCNNumQ}{0}% + \setcounter{PfMExo}{0}% + \renewcommand{\arraystretch}{2}% + \begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}% + \hhline{~---}% + \multicolumn{1}{c|}{}&\cellcolor{gray!15}\centering Question&\cellcolor{gray!15}\centering Réponse&\cellcolor{gray!15}\centering\arraybackslash Jury\\% + \hline% + \endhead% + \xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{% + \refstepcounter{PfMCNNumQ}\ttfamily{\thePfMCNNumQ}\label{TestCAN-\thePfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ex##1.can}&\CNReponse&\\ + \hline% + }% + \end{longtable}% + \renewcommand{\arraystretch}{1}% + \ifboolKV[Boulot]{CorrigeFin}{\ifboolKV[Boulot]{CorrigeInverse}{}{\clearpage \PfMPrepareCorrection{#1}% \TikzCANCor{#2}% \PfMAffichageCorrectionColonnes% diff --git a/macros/unicodetex/latex/fontspec/CHANGES.md b/macros/unicodetex/latex/fontspec/CHANGES.md index c5f5f6e684..7dab8151f3 100644 --- a/macros/unicodetex/latex/fontspec/CHANGES.md +++ b/macros/unicodetex/latex/fontspec/CHANGES.md @@ -1,6 +1,12 @@ Change history ============== +## v2.9c (2024/05/03) + + * Fix copy/paste regression bug with the `Language` feature (primarily exposed through `babel` package). (#513) + * Re-sync with `expl3` for deprecated commands. + + ## v2.9b (2024/04/27) * Add new `Letters=Uppercase` (LuaLaTeX only) as an interface to `luaotfload` diff --git a/macros/unicodetex/latex/fontspec/README.md b/macros/unicodetex/latex/fontspec/README.md index 349b2c39f2..6624bcca6b 100644 --- a/macros/unicodetex/latex/fontspec/README.md +++ b/macros/unicodetex/latex/fontspec/README.md @@ -50,6 +50,9 @@ To add features to the font family currently in use: Package details --------------- +Repository documentation is provided at: + <http://latex3.github.io/fontspec/> + Release versions of fontspec are available from CTAN: <http://www.ctan.org/pkg/fontspec> @@ -59,19 +62,22 @@ Development and historical versions are available from Github: Please offer suggestions and file bug reports in the issue tracker: <http://github.com/latex3/fontspec/issues> -If you are running TeX Live, you can update to the latest version of this package by running +If you are running TeX Live, you can update to the latest version of this +package by running tlmgr install fontspec -If you wish to manually download the latest release version from CTAN, get the pre-built TDS package and extract it into your local texmf tree: +If you wish to manually download the latest release version from CTAN, +get the pre-built TDS package and extract it into your local texmf tree: http://mirror.ctan.org/install/macros/latex/contrib/fontspec.tds.zip -If you wish to use the latest development version from Github, use git to obtain the latest repository code with +If you wish to use the latest development version from Github, +use git to obtain the latest repository code with git clone git://github.com/latex3/fontspec.git -See the `working` branch for changes that have not been released to CTAN yet (no guarantees the code in that branch will always be fully functional). Having obtained the package from Github, install the package code by running +Having obtained the package from Github, install the package code by running l3build install diff --git a/macros/unicodetex/latex/fontspec/fontspec-code-feat-opentype.dtx b/macros/unicodetex/latex/fontspec/fontspec-code-feat-opentype.dtx index 4ffc5cda4f..5fbd797f44 100644 --- a/macros/unicodetex/latex/fontspec/fontspec-code-feat-opentype.dtx +++ b/macros/unicodetex/latex/fontspec/fontspec-code-feat-opentype.dtx @@ -556,11 +556,11 @@ \@@_warning:nx {language-not-exist} {#1} \clist_set:Nn \l_tmpa_clist {#2} \clist_get:NN \l_tmpa_clist \l_@@_lang_tl - \exp_args:Noo \@@_check_script:NnF \l_@@_fontface_cs_tl \l_@@_script_tl + \exp_args:Noo \@@_check_lang:NnF \l_@@_fontface_cs_tl \l_@@_lang_tl { - \tl_set:Nn \l_@@_script_name_tl {#1} + \tl_set:Nn \l_@@_lang_name_tl {#1} \int_set:Nn \l_@@_language_int {\l_@@_strnum_int} - \tl_gset:Nx \g_@@_single_feat_tl { language=####1 } + \tl_gset:Nx \g_@@_single_feat_tl { language=\l_@@_lang_tl } } } } diff --git a/macros/unicodetex/latex/fontspec/fontspec-code-internal.dtx b/macros/unicodetex/latex/fontspec/fontspec-code-internal.dtx index 49f019c656..16e2922b39 100644 --- a/macros/unicodetex/latex/fontspec/fontspec-code-internal.dtx +++ b/macros/unicodetex/latex/fontspec/fontspec-code-internal.dtx @@ -344,8 +344,8 @@ \tl_if_empty:NF \l_@@_script_name_tl { %<debug> \typeout{:::: Script=\l_@@_script_name_tl, Language=\l_@@_lang_name_tl} - \keys_set:nx {fontspec-opentype} {Script=\l_@@_script_name_tl} - \keys_set:nx {fontspec-opentype} {Language=\l_@@_lang_name_tl} + \keys_set:ne {fontspec-opentype} {Script=\l_@@_script_name_tl} + \keys_set:ne {fontspec-opentype} {Language=\l_@@_lang_name_tl} } } } @@ -557,7 +557,7 @@ \cs_new:Nn \fontspec_complete_fontname:Nn { \tl_set:Nx #1 {#2} - \tl_replace_all:Nnx #1 {*} {\l_@@_basename_tl} + \tl_replace_all:Nne #1 {*} {\l_@@_basename_tl} \@@_process_ext:N #1 } % \end{macrocode} @@ -573,13 +573,13 @@ { \tl_set:Nx \l_@@_this_font_tl {#3} - \tl_if_empty:xTF {#4} + \tl_if_empty:eTF {#4} { \clist_set:Nn \l_@@_sizefeat_clist {Size={-}} } { \@@_keys_set_known:nxN {fontspec-preparse-nested} {#4} \l_@@_tmp_tl } \tl_if_empty:NF \l_@@_this_font_tl { - \prop_put:Nxx \l_@@_nfssfont_prop {#1/#2} + \prop_put:Nee \l_@@_nfssfont_prop {#1/#2} { {#1}{#2}{\l_@@_this_font_tl}{#4}{\l_@@_sizefeat_clist} } } } @@ -662,7 +662,7 @@ { \bool_if:NF \l_@@_external_bool { - \tl_if_empty:xF {#2} + \tl_if_empty:eF {#2} { \tl_if_empty:NT #1 { @@ -776,7 +776,7 @@ \tl_clear:N \l_@@_size_tl \tl_set_eq:NN \l_@@_sizedfont_tl \l_@@_saved_fontname_tl % in case not spec'ed - \keys_set_known:nxN {fontspec-sizing} { \exp_after:wN \use:n #2 } + \keys_set_known:neN {fontspec-sizing} { \exp_after:wN \use:n #2 } \l_@@_sizing_leftover_clist \tl_if_empty:NT \l_@@_size_tl { \@@_error:n {no-size-info} } %<debug>\typeout{==~ size:~\l_@@_size_tl} diff --git a/macros/unicodetex/latex/fontspec/fontspec-code-keyval.dtx b/macros/unicodetex/latex/fontspec/fontspec-code-keyval.dtx index c077a1bc1f..a844b0e056 100644 --- a/macros/unicodetex/latex/fontspec/fontspec-code-keyval.dtx +++ b/macros/unicodetex/latex/fontspec/fontspec-code-keyval.dtx @@ -273,12 +273,12 @@ \seq_put_right:Nx \l_@@_bf_series_seq {\bfdefault} } - \tl_if_eq:oxT \g_@@_curr_series_tl {\bfdefault} + \tl_if_eq:oeT \g_@@_curr_series_tl {\bfdefault} { \tl_set_eq:NN \l_@@_fontname_bf_tl \l_@@_curr_bfname_tl } - \prop_put:NxV \l_@@_nfss_prop {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl + \prop_put:NeV \l_@@_nfss_prop {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl %<debug>\typeout{Setting~bold~font~"\l_@@_curr_bfname_tl"~with~series~"\g_@@_curr_series_tl"} @@ -335,7 +335,7 @@ \@@_keys_define_code:nnn {fontspec-preparse} {BoldFeatures} { \clist_put_right:Nn \l_@@_fontfeat_bf_clist {#1} -% \prop_put:NxV \l_@@_nfss_prop +% \prop_put:NeV \l_@@_nfss_prop % {BoldFont-\g_@@_curr_series_tl} \l_@@_curr_bfname_tl } \@@_keys_define_code:nnn {fontspec-preparse} {ItalicFeatures} diff --git a/macros/unicodetex/latex/fontspec/fontspec-code-opening.dtx b/macros/unicodetex/latex/fontspec/fontspec-code-opening.dtx index 3da1f25d7a..7c19c341b3 100644 --- a/macros/unicodetex/latex/fontspec/fontspec-code-opening.dtx +++ b/macros/unicodetex/latex/fontspec/fontspec-code-opening.dtx @@ -163,21 +163,10 @@ % % \begin{macrocode} \cs_generate_variant:Nn \int_set:Nn {Nv} -\cs_generate_variant:Nn \keys_set:nn {nx} -\cs_generate_variant:Nn \keys_set_known:nnN {nx} -\cs_generate_variant:Nn \prop_put:Nnn {Nxx} -\cs_generate_variant:Nn \prop_put:Nnn {NxV} -\cs_generate_variant:Nn \prop_gput_if_new:Nnn {NxV} -\cs_generate_variant:Nn \prop_gput:Nnn {Nxn} -\cs_generate_variant:Nn \prop_get:NnNT {NxN} -\cs_generate_variant:Nn \prop_get:NnNTF {NxN} -\cs_generate_variant:Nn \str_if_eq:nnTF {nv} -\cs_generate_variant:Nn \tl_if_empty_p:n {e} -\cs_generate_variant:Nn \tl_if_empty:nTF {x} -\cs_generate_variant:Nn \tl_if_empty:nF {x} +\cs_generate_variant:Nn \prop_gput_if_not_in:Nnn {NeV} +\cs_generate_variant:Nn \prop_gput:Nnn {Nxn} % needed by unicode-math \cs_generate_variant:Nn \tl_if_empty:nF {f} -\cs_generate_variant:Nn \tl_if_eq:nnT {ox} -\cs_generate_variant:Nn \tl_replace_all:Nnn {Nnx} +\cs_generate_variant:Nn \tl_if_eq:nnT {oe} % \end{macrocode} % % diff --git a/macros/unicodetex/latex/fontspec/fontspec-code-opentype.dtx b/macros/unicodetex/latex/fontspec/fontspec-code-opentype.dtx index 5a38be87ff..d78e0a8be9 100644 --- a/macros/unicodetex/latex/fontspec/fontspec-code-opentype.dtx +++ b/macros/unicodetex/latex/fontspec/fontspec-code-opentype.dtx @@ -216,7 +216,7 @@ % The script used is whatever's held in \cmd\l_@@_script_int. By default, that's the % number corresponding to `|latn|'. % \begin{macrocode} -\prg_new_conditional:Nnn \@@_check_lang:Nn {TF} +\prg_new_conditional:Nnn \@@_check_lang:Nn {TF,F} { \@@_check_lang:NnnTF #1 {#2} {\l_@@_script_tl} {\prg_return_true:} {\prg_return_false:} } diff --git a/macros/unicodetex/latex/fontspec/fontspec-code-xfss.dtx b/macros/unicodetex/latex/fontspec/fontspec-code-xfss.dtx index d58424a165..6fdb9f4ad5 100644 --- a/macros/unicodetex/latex/fontspec/fontspec-code-xfss.dtx +++ b/macros/unicodetex/latex/fontspec/fontspec-code-xfss.dtx @@ -102,8 +102,8 @@ \clist_map_inline:nn {\strongreset,#1} { ##1 - \prop_gput_if_new:NxV \g_@@_strong_prop { \f@series } { \l_@@_strongdef_int } - \prop_gput:Nxn \g_@@_strong_prop { switch-\int_use:N \l_@@_strongdef_int } { ##1 } + \prop_gput_if_not_in:NeV \g_@@_strong_prop { \f@series } { \l_@@_strongdef_int } + \prop_gput:Nen \g_@@_strong_prop { switch-\int_use:N \l_@@_strongdef_int } { ##1 } \int_incr:N \l_@@_strongdef_int } \group_end: @@ -118,7 +118,7 @@ \@nomath\strongenv %<debug> \typeout{Strong~ level:~\int_use:N \l_@@_strong_int} - \prop_get:NxNT \g_@@_strong_prop { \f@series } \l_@@_strong_tmp_tl + \prop_get:NeNT \g_@@_strong_prop { \f@series } \l_@@_strong_tmp_tl { \int_set:Nn \l_@@_strong_int { \l_@@_strong_tmp_tl } %<debug> \typeout{Series~ (\f@series)~ detected;~ new~ level:~\int_use:N \l_@@_strong_int} @@ -126,7 +126,7 @@ \int_incr:N \l_@@_strong_int - \prop_get:NxNTF \g_@@_strong_prop { switch-\int_use:N \l_@@_strong_int } \l_@@_strong_switch_tl + \prop_get:NeNTF \g_@@_strong_prop { switch-\int_use:N \l_@@_strong_int } \l_@@_strong_switch_tl { \l_@@_strong_switch_tl } { \int_zero:N \l_@@_strong_int diff --git a/macros/unicodetex/latex/fontspec/fontspec-code.pdf b/macros/unicodetex/latex/fontspec/fontspec-code.pdf Binary files differindex 464fc94ebe..576b93ee4c 100644 --- a/macros/unicodetex/latex/fontspec/fontspec-code.pdf +++ b/macros/unicodetex/latex/fontspec/fontspec-code.pdf diff --git a/macros/unicodetex/latex/fontspec/fontspec.dtx b/macros/unicodetex/latex/fontspec/fontspec.dtx index f6a4a73d93..e3002ff5e5 100644 --- a/macros/unicodetex/latex/fontspec/fontspec.dtx +++ b/macros/unicodetex/latex/fontspec/fontspec.dtx @@ -70,7 +70,7 @@ \ProvidesExplFile{fontspec.dtx} %</dtx> %<*fontspec> - {2024/04/27}{2.9b}{Font selection for XeLaTeX and LuaLaTeX} + {2024/05/03}{2.9c}{Font selection for XeLaTeX and LuaLaTeX} %</fontspec> % \end{macrocode} % @@ -89,8 +89,8 @@ %<lua>local fontspec = fontspec %<lua>fontspec.module = { %<lua> name = "fontspec", -%<lua> version = "2.9b", -%<lua> date = "2024/04/27", +%<lua> version = "2.9c", +%<lua> date = "2024/05/03", %<lua> description = "Font selection for XeLaTeX and LuaLaTeX", %<lua> author = "Khaled Hosny, Philipp Gesang, Will Robertson", %<lua> copyright = "Khaled Hosny, Philipp Gesang, Will Robertson", diff --git a/macros/unicodetex/latex/fontspec/fontspec.pdf b/macros/unicodetex/latex/fontspec/fontspec.pdf Binary files differindex 70a93b184b..0ceac30d40 100644 --- a/macros/unicodetex/latex/fontspec/fontspec.pdf +++ b/macros/unicodetex/latex/fontspec/fontspec.pdf |