diff options
author | Karl Berry <karl@freefriends.org> | 2024-05-04 19:47:07 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-05-04 19:47:07 +0000 |
commit | 0b4917983682742a8b1d89efaad184d46906b59b (patch) | |
tree | e33633c75868e701d1a623ef4dfee53571493fb2 /Master/texmf-dist/tex/latex | |
parent | bcdacb0db59e8df402d3b26ebfd82cbee0c9976c (diff) |
mismath (4may24)
git-svn-id: svn://tug.org/texlive/trunk@71172 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/mismath/mismath.sty | 423 |
1 files changed, 221 insertions, 202 deletions
diff --git a/Master/texmf-dist/tex/latex/mismath/mismath.sty b/Master/texmf-dist/tex/latex/mismath/mismath.sty index 5b1c32c469d..6a57500d1e0 100644 --- a/Master/texmf-dist/tex/latex/mismath/mismath.sty +++ b/Master/texmf-dist/tex/latex/mismath/mismath.sty @@ -22,42 +22,49 @@ %% \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] + \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{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 +\@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 - } } {\catcode`\|=\z@ \catcode`\\=12 |gdef|bslash{\}} % \bslash command \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}{ @@ -72,7 +79,7 @@ \@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}}} @@ -155,12 +162,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 -} - \def\apply#1#2{\apply@#1#2,\apply@,} \def\apply@#1#2,{\ifx\apply@#2\empty \else #1{#2}\afterfi@{\apply@#1}\fi} @@ -170,150 +171,131 @@ \apply\MathIt{#1} } -\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}} \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*\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 -\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}{ + \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} - }{}}} - - \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@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 + \DeclareSymbolFont{mmupgr}{U}{fsy}{m}{n} + \DeclareMathSymbol{\pi}{\mathord}{mmupgr}{`p} + }{}}} + + \else\ifmm@mathdesign + \ifdefstring{\mm@mathdesign@option}{Utopia}{ + \DeclareSymbolFont{mmupgr}{OML}{mdput}{m}{n} }{ - \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@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{mmupgr}{FML}{futm}{m}{it} + + \else\ifmm@kpfonts + \ifdefstring{\mm@kp@option}{normal}{ + \DeclareSymbolFont{mmupgr}{U}{jkpmia}{m}{it} + }{ + \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}{% @@ -338,9 +320,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 @@ -358,6 +340,7 @@ \newcommand{\tensor}{\mathbfsfit} % isomath uses \mathsfbfit + \mm@macro{di}{\mathop{}\!\mathup{d}} \newcommand\probastyle{} \let\Par\P % end of paragraph symbol @@ -365,53 +348,88 @@ \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} - -\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} - -\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} - -\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} - -\mm@operator[bigO]{\bigO}{\mathcal{O}} +\newcommand*\MathProba[1]{% + \in@{P}{#1} \ifin@ \MathUp{P} \fi + \in@{E}{#1} \ifin@ \MathUp{E} \fi + \in@{V}{#1} \ifin@ \MathUp{V} \fi +} + +\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 + +\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} + +\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}{\cmmathcal{O}} \mm@operator[bigo]{\bigo}{O} \mm@operator[lito]{\lito}{o} \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}} @@ -429,7 +447,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}}{=}} @@ -449,7 +467,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} @@ -472,8 +491,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{} |