diff options
Diffstat (limited to 'macros/latex/contrib/mathsemantics/mathsemantics-syntax.sty')
-rw-r--r-- | macros/latex/contrib/mathsemantics/mathsemantics-syntax.sty | 428 |
1 files changed, 428 insertions, 0 deletions
diff --git a/macros/latex/contrib/mathsemantics/mathsemantics-syntax.sty b/macros/latex/contrib/mathsemantics/mathsemantics-syntax.sty new file mode 100644 index 0000000000..d11cd62405 --- /dev/null +++ b/macros/latex/contrib/mathsemantics/mathsemantics-syntax.sty @@ -0,0 +1,428 @@ +\ProvidesPackage{mathsemantics-syntax}[2022/05/06] +\provideboolean{mathsemantics@syntax@shortbb} +\setboolean{mathsemantics@syntax@shortbb}{false}% default: false +\DeclareOption{shortbb}{% + \setboolean{mathsemantics@syntax@shortbb}{true}% Some Code +} +\ProcessOptions\relax +\RequirePackage{mathsemantics-commons} + +% Define commands for bold upper-case letters in math mode +\newcommand{\bA}{{\boldsymbol{A}}} +\newcommand{\bB}{{\boldsymbol{B}}} +\newcommand{\bC}{{\boldsymbol{C}}} +\newcommand{\bD}{{\boldsymbol{D}}} +\newcommand{\bE}{{\boldsymbol{E}}} +\newcommand{\bF}{{\boldsymbol{F}}} +\newcommand{\bG}{{\boldsymbol{G}}} +\newcommand{\bH}{{\boldsymbol{H}}} +\newcommand{\bI}{{\boldsymbol{I}}} +\newcommand{\bJ}{{\boldsymbol{J}}} +\newcommand{\bK}{{\boldsymbol{K}}} +\newcommand{\bL}{{\boldsymbol{L}}} +\newcommand{\bM}{{\boldsymbol{M}}} +\newcommand{\bN}{{\boldsymbol{N}}} +\newcommand{\bO}{{\boldsymbol{O}}} +\newcommand{\bP}{{\boldsymbol{P}}} +\newcommand{\bQ}{{\boldsymbol{Q}}} +\newcommand{\bR}{{\boldsymbol{R}}} +\newcommand{\bS}{{\boldsymbol{S}}} +\newcommand{\bT}{{\boldsymbol{T}}} +\newcommand{\bU}{{\boldsymbol{U}}} +\newcommand{\bV}{{\boldsymbol{V}}} +\newcommand{\bW}{{\boldsymbol{W}}} +\newcommand{\bX}{{\boldsymbol{X}}} +\newcommand{\bY}{{\boldsymbol{Y}}} +\newcommand{\bZ}{{\boldsymbol{Z}}} + +% Define commands for bold lower-case letters in math mode +\newcommand{\ba}{{\boldsymbol{a}}} +\newcommand{\bb}{{\boldsymbol{b}}} +\newcommand{\bc}{{\boldsymbol{c}}} +\newcommand{\bd}{{\boldsymbol{d}}} +\newcommand{\be}{{\boldsymbol{e}}} +\let\bf\undefined \newcommand{\bf}{{\boldsymbol{f}}} +\newcommand{\bg}{{\boldsymbol{g}}} +\newcommand{\bh}{{\boldsymbol{h}}} +\let\bi\undefined \newcommand{\bi}{{\boldsymbol{i}}} % Taylor and Francis +\newcommand{\bj}{{\boldsymbol{j}}} +\newcommand{\bk}{{\boldsymbol{k}}} +\newcommand{\bl}{{\boldsymbol{l}}} +\let\bm\undefined \newcommand{\bm}{{\boldsymbol{m}}} % Taylor and Francis +\newcommand{\bn}{{\boldsymbol{n}}} +\newcommand{\bo}{{\boldsymbol{o}}} +\newcommand{\bp}{{\boldsymbol{p}}} +\newcommand{\bq}{{\boldsymbol{q}}} +\newcommand{\br}{{\boldsymbol{r}}} +\newcommand{\bs}{{\boldsymbol{s}}} +\newcommand{\bt}{{\boldsymbol{t}}} +\newcommand{\bu}{{\boldsymbol{u}}} +\newcommand{\bv}{{\boldsymbol{v}}} +\newcommand{\bw}{{\boldsymbol{w}}} +\newcommand{\bx}{{\boldsymbol{x}}} +\newcommand{\by}{{\boldsymbol{y}}} +\newcommand{\bz}{{\boldsymbol{z}}} + +% Define commands for bold numbers 0, 1 in math mode +\newcommand{\bnull}{{\boldsymbol{0}}} +\newcommand{\bone}{{\boldsymbol{1}}} + +% Define commands for bold lower-case Greek letters in math mode +\newcommand{\balpha}{{\boldsymbol{\alpha}}} +\newcommand{\bbeta}{{\boldsymbol{\beta}}} +\newcommand{\bgamma}{{\boldsymbol{\gamma}}} +\newcommand{\bdelta}{{\boldsymbol{\delta}}} +\newcommand{\bepsilon}{{\boldsymbol{\epsilon}}} +\newcommand{\bvarepsilon}{{\boldsymbol{\varepsilon}}} +\newcommand{\bzeta}{{\boldsymbol{\zeta}}} +\newcommand{\boldeta}{{\boldsymbol{\eta}}} % exception: \boldeta instead of \beta +\newcommand{\btheta}{{\boldsymbol{\theta}}} +\newcommand{\bvartheta}{{\boldsymbol{\vartheta}}} +\newcommand{\biota}{{\boldsymbol{\iota}}} +\newcommand{\bkappa}{{\boldsymbol{\kappa}}} +\newcommand{\bvarkappa}{{\boldsymbol{\varkappa}}} +\newcommand{\blambda}{{\boldsymbol{\lambda}}} +\newcommand{\bmu}{{\boldsymbol{\mu}}} +\newcommand{\bnu}{{\boldsymbol{\nu}}} +\newcommand{\bomicron}{\boldsymbol{o}} +\newcommand{\bxi}{{\boldsymbol{\xi}}} +\newcommand{\bpi}{{\boldsymbol{\pi}}} +\newcommand{\bvarpi}{{\boldsymbol{\varpi}}} +\newcommand{\brho}{{\boldsymbol{\rho}}} +\newcommand{\bvarrho}{{\boldsymbol{\varrho}}} +\newcommand{\bsigma}{{\boldsymbol{\sigma}}} +\newcommand{\bvarsigma}{{\boldsymbol{\varsigma}}} +\newcommand{\btau}{{\boldsymbol{\tau}}} +\newcommand{\bupsilon}{{\boldsymbol{\upsilon}}} +\newcommand{\bphi}{{\boldsymbol{\phi}}} +\newcommand{\bvarphi}{{\boldsymbol{\varphi}}} +\newcommand{\bchi}{{\boldsymbol{\chi}}} +\newcommand{\bpsi}{{\boldsymbol{\psi}}} +\newcommand{\bomega}{{\boldsymbol{\omega}}} + +% Define commands for bold upper-case Greek letters in math mode +\newcommand{\bAlpha}{{\boldsymbol{A}}} +\newcommand{\bBeta}{{\boldsymbol{B}}} +\newcommand{\bGamma}{{\boldsymbol{\Gamma}}} +\newcommand{\bDelta}{{\boldsymbol{\Delta}}} +\newcommand{\bEpsilon}{{\boldsymbol{E}}} +\newcommand{\bZeta}{{\boldsymbol{Z}}} +\newcommand{\bEta}{{\boldsymbol{H}}} +\newcommand{\bTheta}{{\boldsymbol{\Theta}}} +\newcommand{\bIota}{{\boldsymbol{I}}} +\newcommand{\bKappa}{{\boldsymbol{K}}} +\newcommand{\bLambda}{{\boldsymbol{\Lambda}}} +\newcommand{\bMu}{{\boldsymbol{M}}} +\newcommand{\bNu}{{\boldsymbol{N}}} +\newcommand{\bXi}{{\boldsymbol{\Xi}}} +\newcommand{\bOmicron}{{\boldsymbol{O}}} +\newcommand{\bPi}{{\boldsymbol{\Pi}}} +\newcommand{\bRho}{{\boldsymbol{P}}} +\newcommand{\bSigma}{{\boldsymbol{\Sigma}}} +\newcommand{\bTau}{{\boldsymbol{T}}} +\newcommand{\bUpsilon}{{\boldsymbol{\Upsilon}}} +\newcommand{\bPhi}{{\boldsymbol{\Phi}}} +\newcommand{\bChi}{{\boldsymbol{X}}} +\newcommand{\bPsi}{{\boldsymbol{\Psi}}} +\newcommand{\bOmega}{{\boldsymbol{\Omega}}} + +% Define commands for calligraphic upper-case letters in math mode +\newcommand{\cA}{\mathcal{A}} +\newcommand{\cB}{\mathcal{B}} +\newcommand{\cC}{\mathcal{C}} +\newcommand{\cD}{\mathcal{D}} +\newcommand{\cE}{\mathcal{E}} +\newcommand{\cF}{\mathcal{F}} +\newcommand{\cG}{\mathcal{G}} +\newcommand{\cH}{\mathcal{H}} +\newcommand{\cI}{\mathcal{I}} +\newcommand{\cJ}{\mathcal{J}} +\newcommand{\cK}{\mathcal{K}} +\newcommand{\cL}{\mathcal{L}} +\newcommand{\cM}{\mathcal{M}} +\newcommand{\cN}{\mathcal{N}} +\newcommand{\cO}{\mathcal{O}} +\newcommand{\cP}{\mathcal{P}} +\newcommand{\cQ}{\mathcal{Q}} +\newcommand{\cR}{\mathcal{R}} +\newcommand{\cS}{\mathcal{S}} +\newcommand{\cT}{\mathcal{T}} +\newcommand{\cU}{\mathcal{U}} +\newcommand{\cV}{\mathcal{V}} +\newcommand{\cW}{\mathcal{W}} +\newcommand{\cX}{\mathcal{X}} +\newcommand{\cY}{\mathcal{Y}} +\newcommand{\cZ}{\mathcal{Z}} + +% Define commands for fraktur upper-case letters in math mode +\newcommand{\fA}{\mathfrak{A}} +\newcommand{\fB}{\mathfrak{B}} +\newcommand{\fC}{\mathfrak{C}} +\newcommand{\fD}{\mathfrak{D}} +\newcommand{\fE}{\mathfrak{E}} +\newcommand{\fF}{\mathfrak{F}} +\newcommand{\fG}{\mathfrak{G}} +\newcommand{\fH}{\mathfrak{H}} +\newcommand{\fI}{\mathfrak{I}} +\newcommand{\fJ}{\mathfrak{J}} +\newcommand{\fK}{\mathfrak{K}} +\newcommand{\fL}{\mathfrak{L}} +\newcommand{\fM}{\mathfrak{M}} +\newcommand{\fN}{\mathfrak{N}} +\newcommand{\fO}{\mathfrak{O}} +\newcommand{\fP}{\mathfrak{P}} +\newcommand{\fQ}{\mathfrak{Q}} +\newcommand{\fR}{\mathfrak{R}} +\newcommand{\fS}{\mathfrak{S}} +\newcommand{\fT}{\mathfrak{T}} +\newcommand{\fU}{\mathfrak{U}} +\newcommand{\fV}{\mathfrak{V}} +\newcommand{\fW}{\mathfrak{W}} +\newcommand{\fX}{\mathfrak{X}} +\newcommand{\fY}{\mathfrak{Y}} +\newcommand{\fZ}{\mathfrak{Z}} + + +% Define commands for fraktur upper-case letters in math mode +\newcommand{\sA}{\mathscr{A}} +\newcommand{\sB}{\mathscr{B}} +\newcommand{\sC}{\mathscr{C}} +\newcommand{\sD}{\mathscr{D}} +\newcommand{\sE}{\mathscr{E}} +\newcommand{\sF}{\mathscr{F}} +\newcommand{\sG}{\mathscr{G}} +\newcommand{\sH}{\mathscr{H}} +\newcommand{\sI}{\mathscr{I}} +\newcommand{\sJ}{\mathscr{J}} +\newcommand{\sK}{\mathscr{K}} +\newcommand{\sL}{\mathscr{L}} +\newcommand{\sM}{\mathscr{M}} +\newcommand{\sN}{\mathscr{N}} +\newcommand{\sO}{\mathscr{O}} +\newcommand{\sP}{\mathscr{P}} +\newcommand{\sQ}{\mathscr{Q}} +\newcommand{\sR}{\mathscr{R}} +\newcommand{\sS}{\mathscr{S}} +\newcommand{\sT}{\mathscr{T}} +\newcommand{\sU}{\mathscr{U}} +\newcommand{\sV}{\mathscr{V}} +\newcommand{\sW}{\mathscr{W}} +\newcommand{\sX}{\mathscr{X}} +\newcommand{\sY}{\mathscr{Y}} +\newcommand{\sZ}{\mathscr{Z}} + +% Define commands for lower-case letters with vector accents in math mode +\newcommand{\va}{\vec{a}} +\newcommand{\vb}{\vec{b}} +\newcommand{\vc}{\vec{c}} +\newcommand{\vd}{\vec{d}} +\newcommand{\ve}{\vec{e}} +\newcommand{\vf}{\vec{f}} +\let\vg\undefined \newcommand{\vg}{\vec{g}} % ESAIM +\newcommand{\vh}{\vec{h}} +\newcommand{\vi}{\vec{i}} +\newcommand{\vj}{\vec{j}} +\newcommand{\vk}{\vec{k}} +\newcommand{\vl}{\vec{l}} +\newcommand{\vm}{\vec{m}} +\newcommand{\vn}{\vec{n}} +\newcommand{\vo}{\vec{o}} +\newcommand{\vp}{\vec{p}} +\newcommand{\vq}{\vec{q}} +\newcommand{\vr}{\vec{r}} +\newcommand{\vs}{\vec{s}} +\newcommand{\vt}{\vec{t}} +\newcommand{\vu}{\vec{u}} +\let\vv\undefined \newcommand{\vv}{\vec{v}} % jnsao +\newcommand{\vw}{\vec{w}} +\newcommand{\vx}{\vec{x}} +\newcommand{\vy}{\vec{y}} +\newcommand{\vz}{\vec{z}} + +% Define commands for upper-case letters with vector accents in math mode +\newcommand{\vA}{\vec{A}} +\newcommand{\vB}{\vec{B}} +\newcommand{\vC}{\vec{C}} +\newcommand{\vD}{\vec{D}} +\newcommand{\vE}{\vec{E}} +\newcommand{\vF}{\vec{F}} +\newcommand{\vG}{\vec{G}} +\newcommand{\vH}{\vec{H}} +\newcommand{\vI}{\vec{I}} +\newcommand{\vJ}{\vec{J}} +\newcommand{\vK}{\vec{K}} +\newcommand{\vL}{\vec{L}} +\newcommand{\vM}{\vec{M}} +\newcommand{\vN}{\vec{N}} +\newcommand{\vO}{\vec{O}} +\newcommand{\vP}{\vec{P}} +\newcommand{\vQ}{\vec{Q}} +\newcommand{\vR}{\vec{R}} +\newcommand{\vS}{\vec{S}} +\newcommand{\vT}{\vec{T}} +\newcommand{\vU}{\vec{U}} +\newcommand{\vV}{\vec{V}} +\newcommand{\vW}{\vec{W}} +\newcommand{\vX}{\vec{X}} +\newcommand{\vY}{\vec{Y}} +\newcommand{\vZ}{\vec{Z}} + +% Define commands for numbers 0, 1 with vector accents in math mode +\newcommand{\vnull}{{\vec{0}}} +\newcommand{\vone}{{\vec{1}}} + +% Define commands for lower-case Greek letters with vector accents in math mode +\newcommand{\valpha}{{\vec{\alpha}}} +\newcommand{\vbeta}{{\vec{\beta}}} +\newcommand{\vgamma}{{\vec{\gamma}}} +\newcommand{\vdelta}{{\vec{\delta}}} +\newcommand{\vepsilon}{{\vec{\epsilon}}} +\newcommand{\vvarepsilon}{{\vec{\varepsilon}}} +\newcommand{\vzeta}{{\vec{\zeta}}} +\newcommand{\veta}{{\vec{\eta}}} +\newcommand{\vtheta}{{\vec{\theta}}} +\newcommand{\vvartheta}{{\vec{\vartheta}}} +\newcommand{\viota}{{\vec{\iota}}} +\newcommand{\vkappa}{{\vec{\kappa}}} +\newcommand{\vvarkappa}{{\vec{\varkappa}}} +\newcommand{\vlambda}{{\vec{\lambda}}} +\newcommand{\vmu}{{\vec{\mu}}} +\newcommand{\vnu}{{\vec{\nu}}} +\newcommand{\vomicron}{\vec{o}} +\newcommand{\vxi}{{\vec{\xi}}} +\newcommand{\vpi}{{\vec{\pi}}} +\newcommand{\vvarpi}{{\vec{\varpi}}} +\newcommand{\vrho}{{\vec{\rho}}} +\newcommand{\vvarrho}{{\vec{\varrho}}} +\newcommand{\vsigma}{{\vec{\sigma}}} +\newcommand{\vvarsigma}{{\vec{\varsigma}}} +\newcommand{\vtau}{{\vec{\tau}}} +\newcommand{\vupsilon}{{\vec{\upsilon}}} +\newcommand{\vphi}{{\vec{\phi}}} +\newcommand{\vvarphi}{{\vec{\varphi}}} +\newcommand{\vchi}{{\vec{\chi}}} +\newcommand{\vpsi}{{\vec{\psi}}} +\newcommand{\vomega}{{\vec{\omega}}} + +% Define commands for upper-case Greek letters with vector accents in math mode +\newcommand{\vAlpha}{{\vec{A}}} +\newcommand{\vBeta}{{\vec{B}}} +\newcommand{\vGamma}{{\vec{\Gamma}}} +\newcommand{\vDelta}{{\vec{\Delta}}} +\newcommand{\vEpsilon}{{\vec{E}}} +\newcommand{\vZeta}{{\vec{Z}}} +\newcommand{\vEta}{{\vec{H}}} +\newcommand{\vTheta}{{\vec{\Theta}}} +\newcommand{\vIota}{{\vec{I}}} +\newcommand{\vKappa}{{\vec{K}}} +\newcommand{\vLambda}{{\vec{\Lambda}}} +\newcommand{\vMu}{{\vec{M}}} +\newcommand{\vNu}{{\vec{N}}} +\newcommand{\vOmicron}{\vec{O}} +\newcommand{\vXi}{{\vec{\Xi}}} +\newcommand{\vPi}{{\vec{\Pi}}} +\newcommand{\vRho}{{\vec{P}}} +\newcommand{\vSigma}{{\vec{\Sigma}}} +\newcommand{\vTau}{{\vec{T}}} +\newcommand{\vUpsilon}{{\vec{\Upsilon}}} +\newcommand{\vPhi}{{\vec{\Phi}}} +\newcommand{\vChi}{{\vec{X}}} +\newcommand{\vPsi}{{\vec{\Psi}}} +\newcommand{\vOmega}{{\vec{\Omega}}} + +% Define commands for some blackboard characters in math mode, mainly used for sets +\newcommand{\bbA}{\mathbb{A}} +\newcommand{\bbB}{\mathbb{B}} +\newcommand{\bbC}{\mathbb{C}} +\newcommand{\bbD}{\mathbb{D}} +\newcommand{\bbE}{\mathbb{E}} +\newcommand{\bbF}{\mathbb{F}} +\newcommand{\bbG}{\mathbb{G}} +\newcommand{\bbH}{\mathbb{H}} +\newcommand{\bbI}{\mathbb{I}} +\newcommand{\bbJ}{\mathbb{J}} +\newcommand{\bbK}{\mathbb{K}} +\newcommand{\bbL}{\mathbb{L}} +\newcommand{\bbM}{\mathbb{M}} +\newcommand{\bbN}{\mathbb{N}} +\newcommand{\bbO}{\mathbb{O}} +\newcommand{\bbP}{\mathbb{P}} +\newcommand{\bbQ}{\mathbb{Q}} +\newcommand{\bbR}{\mathbb{R}} +\newcommand{\bbS}{\mathbb{S}} +\newcommand{\bbT}{\mathbb{T}} +\newcommand{\bbU}{\mathbb{U}} +\newcommand{\bbV}{\mathbb{V}} +\newcommand{\bbW}{\mathbb{W}} +\newcommand{\bbX}{\mathbb{X}} +\newcommand{\bbY}{\mathbb{Y}} +\newcommand{\bbZ}{\mathbb{Z}} + +\ifthenelse{\boolean{mathsemantics@syntax@shortbb}}{ + \providecommand{\C}{\bbC}% + \providecommand{\K}{\bbK}% + \providecommand{\N}{\bbN}% + \providecommand{\Q}{\bbQ}% + \providecommand{\R}{\bbR}% + \providecommand{\Z}{\bbZ}% +}{} + + +% Define \enclose command +% \enclose[a]{b}{c}{d} encloses content (c) in brackets (b,d) where the optional parameter +% a scales the brackets (big, Big, bigg, Bigg) or (auto)matically scales them. +% It can also be set to [none] do deactivate the brackets/enclosing +% \enclosespacing allows for additional spacing before and after the \enclose:d content +% https://blag.nullteilerfrei.de/2014/01/16/a-dynamic-bracketing-macro-in-latex/ +% The \enclose command is mainly meant for internal use; use \paren instead +\newcommand{\enclspacing}{} +\newcommand{\enclose}[4][]{% + \ifthenelse{\isempty{#1}}% + {\ifthenelse{\equal{#2}{.}}{}{#2}\enclspacing#3\enclspacing#4}% + {\ifthenelse{\equal{#1}{auto}}% given auto + {\mathopen{}\left#2\enclspacing#3\enclspacing\mathclose{}\right#4}% + {\ifthenelse{\equal{#1}{none}}% given none + {#3}% + {\csname#1l\endcsname#2\enclspacing#3\enclspacing\csname#1r\endcsname#4}% + }% end auto + }% end #1 empty +} + +% Define \encloseSet command to do { c | e } +% \enclose[a]{b}{c}{d}{e}{f} encloses content c and e in brackets (b,f) with a center delimiter d, where the optional parameter +% a scales the brackets (big, Big, bigg, Bigg) or (auto)matically scales them +% \enclosespacingSet allows for additional spacing before and after the center delimiter, the outer brackets gain a \encloseSpacing as \enclose: +% https://blag.nullteilerfrei.de/2014/01/16/a-dynamic-bracketing-macro-in-latex/ +% The \enclose command is mainly meant for internal use; use \paren instead +\newcommand{\enclspacingSet}{\,} +\newcommand{\encloseSet}[6][]{% + \ifthenelse{\isempty{#1}}% + {#2\enclspacing#3 \enclspacingSet#4\enclspacingSet #5\enclspacing#6}% + {\ifthenelse{\equal{#1}{auto}}% + {\left#2\enclspacing#3\enclspacingSet\middle#4\enclspacingSet#5\right#6}% + {\csname#1l\endcsname#2\enclspacing#3\enclspacingSet\csname#1\endcsname#4\enclspacingSet#5\enclspacing\csname#1r\endcsname#6}% + }% + } + +% Define \paren command +% \paren[a]bc{d} encloses content (d) in brackets b,c where the optional parameter +% a scales the brackets +\newcommand{\paren}[4][]{\enclose[#1]{#2}{#4}{#3}} + +% Define the \clap (complementing \{l,r}lap) and \math{l,c,r}lap commands, +% which horizontally smash the argument with alignment +% http://www.tug.org/TUGboat/Articles/tb22-4/tb72perlS.pdf +\def\clap#1{\hbox to 0pt{\hss#1\hss}} +\def\mathllap{\mathpalette\mathllapinternal} +\def\mathrlap{\mathpalette\mathrlapinternal} +\def\mathclap{\mathpalette\mathclapinternal} +\def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}} +\def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} +\def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}} + +% Define the \mrep[a]{b}{c} command, which prints b but reserves the space for c. +% The optional argument a specifies the alignment {l,c,r}. The command works in text and math modes. +% https://groups.google.com/forum/?fromgroups#!topic/comp.text.tex/GikFchXJIM0 +\def\my@mathpalette#1#2#3#4{\mathchoice{#1\displaystyle{#2}{#3}{#4}}{#1\textstyle{#2}{#3}{#4}}{#1\scriptstyle{#2}{#3}{#4}}{#1\scriptscriptstyle{#2}{#3}{#4}}} +\def\mrepinternal#1#2#3#4{\makebox[\widthof{$#1#4$}][#2]{$#1\vphantom{#4}{#3}$}} +\newcommand{\mrep}[3][l]{\ifmmode\my@mathpalette\mrepinternal{#1}{#2}{#3}\else\makebox[\widthof{#3}][#1]{\vphantom{#3}#2}\fi}
\ No newline at end of file |