diff options
author | Karl Berry <karl@freefriends.org> | 2022-12-15 20:42:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-12-15 20:42:42 +0000 |
commit | dccf812b58bec2756465d19e430239fda0325e4f (patch) | |
tree | 64b8fd4d144a594a20a2e0ef23685632a8da6748 /Master/texmf-dist/doc | |
parent | 64918a3ead1f3d83f7feca583cb89f7c86716a3a (diff) |
pdfmsym (15dec22)
git-svn-id: svn://tug.org/texlive/trunk@65277 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/generic/pdfmsym/README.md | 10 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.pdf | bin | 0 -> 190599 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.tex | 400 |
3 files changed, 410 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/pdfmsym/README.md b/Master/texmf-dist/doc/generic/pdfmsym/README.md new file mode 100644 index 00000000000..5954add2ed1 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pdfmsym/README.md @@ -0,0 +1,10 @@ +# PDF Math Symbols - pdfMsym +## version 1.0.2 +The pdfMsym package provides mathematical symbols for PDF-dependent TeX compilers. +Read the documentation (documentation.pdf) for more details. +The pdfMsym package is provided under the MIT license. + +Compile the documentation via `pdftex pdfsym-doc.tex`. + +The pdfMsym package was created and is maintained by Slurp who can be reached via email: slurper04@gmail.com +Please report any bugs or issues with the package, doing so would be greatly appreciated. diff --git a/Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.pdf b/Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.pdf Binary files differnew file mode 100644 index 00000000000..6e0305bb561 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.pdf diff --git a/Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.tex b/Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.tex new file mode 100644 index 00000000000..f7e84d1bb40 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pdfmsym/pdfmsym-doc.tex @@ -0,0 +1,400 @@ +\catcode`\@=11 + +\input pdfmsym +\pdfmsymsetscalefactor{10} + + +\let\@xp=\expandafter +\font\scten = cmcsc10 + +\def\fakebold#1{\pdf@literal{2 Tr .2 w}#1\pdf@literal{0 Tr 1 w}} +\def\scalebox[#1]#2{{\setbox0=\hbox{#2}\hbox to#1\wd0{\pdfliteral{q #1 0 0 #1 0 0 cm}\rlap{#2}\pdfliteral{Q}\hfil}}} +\def\begincenter{\bgroup\leftskip=0pt plus 1fill \rightskip=\leftskip} +\def\endcenter{\par\egroup} + +\def\fbox#1{\vbox{\hrule\hbox{\vrule$#1$\vrule}\hrule}} + +\def\flip#1{{\setbox0=\hbox{#1}\kern\wd0\pdf@literal{q -1 0 0 1 0 0 cm}\rlap{#1}\pdf@literal{Q}}} + +\font\sevenrm = cmr7 +\def\MatheX{Math\kern-.1ex\lower .6ex\hbox {E}\kern -.125emX} +\def\xetex{X\kern-.125em\lower.5ex\hbox{\flip{E}}\kern-.1667em\TeX} +\def\LaTeX{L\kern-.36em{\setbox0=\hbox{T}\vbox to\ht0{\hbox{\sevenrm A}\vss}}\kern-.15em\TeX} + +\def\fontuse{\afterassignment\@@ \font\@@} +\def\scalefont{\fontuse \curr@font scaled } + +%\def\title#1{\leavevmode\vskip.1\vsize\centerline{\fontuse cmcsc10 scaled 5000 \fakebold{#1}}\bigskip} +\def\title#1{\leavevmode\vskip.1\vsize\centerline{\scalebox[8]{\fakebold{#1}}}\bigskip} + +\newcount\c@section +\newcount\c@subsection +\def\section#1{\bigskip\advance\c@section by 1 \c@subsection=0 \bgroup\fontuse cmbx10 scaled 2000 \the\c@section. #1\par\bigskip\egroup} +\def\subsection#1{\medskip\advance\c@subsection by 1 \bgroup\fontuse cmbx10 scaled 1500 \the\c@section.\the\c@subsection. #1\par\medskip\egroup} + +\chardef\fslash=`\/ +{\catcode`\^^M=\active% +\gdef\begincode{% + \bgroup\everypar={}% + \medskip% + \setbox0=\vbox\bgroup% + \global\dimen69=0pt% + \tt% + \catcode`\^^M=\active% + \def^^M{\egroup\ifnum\wd1>\dimen69 \global\dimen69=\wd1\fi\copy1\setbox1=\hbox\bgroup}% + \catcode`\ =\active% + \catcode`\{=12% + \catcode`\}=12% + \catcode`\/=0% + \catcode`\$=12% + \catcode`\\=12% + \catcode`\%=12 \setbox1=\hbox\bgroup}} +\def\endcode{% + \egroup\egroup% + \hfil\hbox to \dimen69{\box0}\hfil\par% + \medskip% + %\let\@par=\par% + \egroup% +} + +\def\icode{\bgroup\tt% + \catcode`\ =\active% + \catcode`\/=0% + \catcode`\{=12% + \catcode`\}=12% + \catcode`\$=12% + \catcode`\\=12% +} +\def\eicode{\egroup} + +{\catcode`\<=\active +\gdef\macrousage{\bgroup\setbox0=\hbox\bgroup\tt% + \catcode`\ =\active% + \catcode`\/=0% + \catcode`\{=12% + \catcode`\}=12% + \catcode`\$=12% + \catcode`\\=12% + \catcode`\<=\active% + \def<##1>{$\langle${\it ##1}$\rangle$}% +}} +\def\emacrousage{\egroup\par\smallskip\centerline{\box0}\egroup\par\smallskip} +\def\emacrousageB{\egroup\box0\egroup} + +\def\macroname#1{{\tt\string#1}} + +\chardef\lbrace="7B +\chardef\rbrace="7D + +\def\macroexp#1{\par\smallskip\bgroup\leftskip=1cm\leavevmode\kern-1cm\macrousage \scantokens{#1}\emacrousageB:} +\def\emacroexp{\par\egroup\smallskip} + +\def\showcase#1#2{{\openup3\jot\halign{\tt\hskip 1cm\string##\hfil&\quad\hfil##\cr + \omit\tt\string#1: & $\displaystyle#1$\cr\noalign{\kern3pt\hrule\kern3pt} + \displaystyle & $\displaystyle #2$\cr + \textstyle & $\textstyle #2$\cr + \scriptstyle & $\scriptstyle #2$\cr + \scriptscriptstyle & $\scriptscriptstyle #2$\cr} +}} + +\def\showcasevecc#1#2#3{\hbox to\hsize{\hss\vbox{\tabskip=5pt\openup3\jot% +\halign{\tt\hskip 1cm\string##\tabskip=0pt\hfil&\quad##\hfil&\quad\hfil##\tabskip=5pt\cr + \omit\tt\string#1: & \tt\string#1 & \tt\expandafter\string\csname short\m@strip#1\endcsname% + \cr\noalign{\kern3pt\hrule\kern3pt} + \displaystyle & $\displaystyle #2$ & $\displaystyle #3$\cr + \textstyle & $\textstyle #2$ & $\textstyle #3$\cr + \scriptstyle & $\scriptstyle #2$ & $\scriptstyle #3$\cr + \scriptscriptstyle & $\scriptscriptstyle #2$ & $\scriptscriptstyle #3$\cr} +}\hss}\bigskip} + +\def\showcasearrow#1#2#3#4{\hbox to\hsize{\hss\vbox{\tabskip=0pt\openup3\jot +\halign{\tt\hskip 1cm\string##\tabskip=0pt\hfil&\quad##\hfil&\quad\hfil##\hfil\quad&\quad\hfil##\tabskip=5pt\cr + \omit\tt\string#1: & \tt\string#1 & \tt\expandafter\string\csname long\m@strip#1\endcsname & + \tt\expandafter\string\csname x\m@strip#1\endcsname\cr\noalign{\kern3pt\hrule\kern3pt} + \displaystyle & $\displaystyle #2$ & $\displaystyle #3$ & $\displaystyle #4$\cr + \textstyle & $\textstyle #2$ & $\textstyle #3$ & $\textstyle #4$\cr + \scriptstyle & $\scriptstyle #2$ & $\scriptstyle #3$ & $\scriptstyle #4$\cr + \scriptscriptstyle & $\scriptscriptstyle #2$ & $\scriptscriptstyle #3$ & $\scriptscriptstyle #4$\cr} +}\hss}\bigskip} + +\def\showcaseaccent#1#2{{\openup3\jot\halign{\tt\hskip 1cm\string##\hfil&\quad\hfil##\cr + \omit\tt\string#1: & \cr\noalign{\kern3pt\hrule\kern3pt} + \displaystyle & $\displaystyle #2$\cr + \textstyle & $\textstyle #2$\cr + \scriptstyle & $\scriptstyle #2$\cr + \scriptscriptstyle & $\scriptscriptstyle #2$\cr} +}} + +\parindent=0pt +\parskip=3pt +\hoffset=\dimexpr 2cm - 1in \relax +\advance\hsize by -2\hoffset +\voffset=2\hoffset +\advance\vsize by -2\voffset + +\nopagenumbers +\title{\pdfMsym} +\unskip +{\setbox0=\hbox{\fakebold{\pdfMsym}}\centerline{\hbox to8\wd0{\hfil\it version \pdfMsymversion}}} +\centerline{\it S. Lurp} +\centerline{\tt slurper04@gmail.com} +\centerline{\it December 15, 2022} + +\bigskip +\hbox to \hsize{\hfil\vbox{\hsize=.7\hsize +\hrule +\smallskip +\begincenter +The \pdfMsym{} package (the {\scten pdf} Math Symbols package) was created as an extension to the math macros provided by \TeX{} and \LaTeX{}. +It provides more obscure symbols not found in popular preexisting and reimpliments macros which were viewed as flawed. + +A big part of the package was implemented through \macroname\pdfliteral s and other {\scten pdf} primitives. +So the \pdfMsym{} package is intended for use with {\scten pdf}\TeX, Lua\TeX, \xetex, and their \LaTeX{} counterparts. +Unfortunately, some macros are not supported by \xetex. +\endcenter +\smallskip +\hrule +}\hfil} + +\vfill\break + +\footline={\hfil\folio\hfil} +\section{An Introduction to \scalebox[2]{\fakebold\pdfMsym}} + +The main motivator for creating \pdfMsym{} was \TeX's poor implementation of the \macroname\overrightarrow{} macro which many +times yields unsavory results. +For example \icode \overrightarrow{\hbox{ABC}}/eicode{} yields: + +$$ \overrightarrow{\hbox{ABC}} $$ + +As you can see, the arrow overlaps with the {\tt ABC} which is undesirable. +This can be fixed by altering the \macroname\rightarrow{} macro, but I decided to make a more versatile alternative. +The \pdfMsym{} alternative, \macroname\vecc{}, on the other hand yields: + +$$ \vecc{\hbox{ABC}} $$ + +Along with a few other features, \pdfMsym{} provides a simple interface for creating your own style of arrows. + +\pdfMsym{} requires the current font size in order to properly scale its symbols, which must be provided after +{\tt\string\input}ing {\tt pdfmsym.tex}. +This can be done with the \macroname\pdfmsymsetscalefactor{} macro. +If your font is 12pt then you can load \pdfMsym{} like so: + +\begincode +\input pdfmsym +\pdfmsymsetscalefactor{12} +/endcode\par + +It is {\it imperative} that you set the scale factor after loading {\tt pdfmsym} as otherwise almost none of the macros will +work. + +\section{The Predefined Symbols} + +This section will simply be an exhaustive list of all the predefined symbols \pdfMsym{} provides. + +\subsection{Math Symbols} + +{\tabskip=10pt plus 5pt minus 5pt\openup3\jot\halign to \hsize{{\hsize=.45\hsize#}\hfil&\hfil{\hsize=.45\hsize#}\cr +\vbox{\showcase\dwedge{A\dwedge B}} & \vbox{\showcase\dcup{A\dcup B}}\cr +\vbox{\showcase\bigdwedge{A\dwedge\bigdwedge_{n=1}^N B_n}} & \vbox{\showcase\bigdcup{A\dcup\bigdcup_{n=1}^N B_n}}\cr +\noalign{\vfil\eject} +\vbox{\showcase\aint{f(x) + \aint_a^b g(x)\, dx}} & \vbox{\showcase\divs{n\divs m}}\cr +\vbox{\showcase\ndivs{n\ndivs m}} & \cr}} + +Additionally, \macroname\lightning{} is provided as a textmode command and renders \lightning. + +\subsection{Vector Symbols} + +Each vector comes as a pair: the normal form and the short form. +The normal form is meant to cover longer material while the short form covers shorter material. + +\bigskip +\showcasevecc\vecc{\vecc{\hbox{ABC}}}{\shortvecc{a}} +\showcasevecc\lvecc{\lvecc{\hbox{ABC}}}{\shortlvecc{a}} +\showcasevecc\overrightharp{\overrightharp{\hbox{ABC}}}{\shortoverrightharp{a}} +\vfill\eject +\showcasevecc\overleftharp{\overleftharp{\hbox{ABC}}}{\shortoverleftharp{a}} +\showcasevecc\oveleftrrightvecc{\overleftrightvecc{\hbox{ABC}}}{\shortoverleftrightvecc{a}} +\showcasevecc\oveleftrrightharp{\overleftrightharp{\hbox{ABC}}}{\shortoverleftrightharp{a}} +\showcasevecc\overrightleftharp{\overrightleftharp{\hbox{ABC}}}{\shortoverrightleftharp{a}} +\showcasevecc\straightvecc{\straightvecc{\hbox{ABC}}}{\shortstraightvecc{a}} +\showcasevecc\straightlvecc{\straightlvecc{\hbox{ABC}}}{\shortstraightlvecc{a}} + +\unless\ifx\pdfxform\undefined +The \macroname\constvec{} macro has the following usage: +\macrousage \constvec<vector macro>{<material>} /emacrousage +And it centers the {\tt vector macro} above {\tt material} as if it had the same height as {\tt x}, cropping anything above +that height. +So for example \icode \constvec\vecc{abc}/eicode{} yields $\constvec\vecc{abc}$. +This macro cannot be used in \xetex. +\fi +\subsection{Arrow Symbols} + +Each arrow comes as a triplet: the normal form, the long form, and the extendable form. +The extendable form is similar to \macroname\xrightarrow{} and friends, an extendable arrow has the following use: +\macrousage \xarrow{<top material>}[<bottom material>] /emacrousage +And creates an extended arrow to fit both the top and bottom material. + +\bigskip +\showcasearrow\varrightarrow{A\varrightarrow B}{A\longvarrightarrow B}{A\xvarrightarrow{ABC}[abc] B} +\showcasearrow\varleftarrow{A\varleftarrow B}{A\longvarleftarrow B}{A\xvarleftarrow{ABC}[abc] B} +\showcasearrow\varrightharp{A\varrightharp B}{A\longvarrightharp B}{A\xvarrightharp{ABC}[abc] B} +\showcasearrow\varleftharp{A\varleftharp B}{A\longvarleftharp B}{A\xvarleftharp{ABC}[abc] B} +\showcasearrow\varleftrightarrow{A\varleftrightarrow B}{A\longvarleftrightarrow B}{A\xvarleftrightarrow{ABC}[abc] B} +\vfill\eject +\showcasearrow\varleftrightharp{A\varleftrightharp B}{A\longvarleftrightharp B}{A\xvarleftrightharp{ABC}[abc] B} +\showcasearrow\varrightleftharp{A\varrightleftharp B}{A\longvarrightleftharp B}{A\xvarrightleftharp{ABC}[abc] B} +\showcasearrow\varmapsto{A\varmapsto B}{A\longvarmapsto B}{A\xvarmapsto{ABC}[abc] B} +\showcasearrow\varhookrightarrow{A\varhookrightarrow B}{A\longvarhookrightarrow B}{A\xvarhookrightarrow{ABC}[abc] B} +\showcasearrow\varhookleftarrow{A\varhookleftarrow B}{A\longvarhookleftarrow B}{A\xvarhookleftarrow{ABC}[abc] B} +\showcasearrow\vardoublerightarrow{A\vardoublerightarrow B}{A\longvardoublerightarrow B}{A\xvardoublerightarrow{ABC}[abc] B} +\showcasearrow\vardoubleleftarrow{A\vardoubleleftarrow B}{A\longvardoubleleftarrow B}{A\xvardoubleleftarrow{ABC}[abc] B} +\showcasearrow\varcirclerightarrow{A\varcirclerightarrow B}{A\longvarcirclerightarrow B}{A\xvarcirclerightarrow{ABC}[abc] B} +\showcasearrow\varcircleleftarrow{A\varcircleleftarrow B}{A\longvarcircleleftarrow B}{A\xvarcircleleftarrow{ABC}[abc] B} + +\subsection{Wide Accents} +Wide accents provide variants to the commonly used accents like \macroname\widehat{} and \macroname\widetilde. +Unlike these accents, \pdfMsym's wide accents can grow arbitrarily large. + +\bigskip +{\tabskip=20pt plus 10pt minus 5pt\halign{{\hsize=.45\hsize#}\hfil&\hfil{\hsize=.45\hsize#}\cr +\vbox{\showcaseaccent\varwidehat{\varwidehat{ABC}+D}} & \vbox{\showcaseaccent\varwidecheck{\varwidecheck{ABC}+D}}\cr}} +\bigskip +\hbox to\hsize{\hfil\vbox{\tabskip=20pt plus 10pt minus 5pt\showcaseaccent\varwidetilde{\varwidetilde{ABC}+D}}\hfil} + +\unless\ifx\pdfxform\undefined +\subsection{Extendable Operators} +Extendible operators extend to the width of the material in their limits. +These operators should only be used in display mode, since they use the display modes of the operators. +They are \macroname\suum{} and \macroname\prood{}: + +$$ \suum_{\hbox{abcdef}}^{\hbox{ABCDEF}} \qquad \prood_{\hbox{abcdef}}^{\hbox{ABCDEF}} $$ + +These are not available in \xetex. +\fi + +\vfill\eject +\section{Defining Your Own Symbols} + +\pdfMsym{} provides an interface for creating your own mathematical symbols through the use of \macroname\pdfliteral s. +This interface requires prior knowledege of drawing with PDFs. + +\macroexp{\@linehead@type{<pdf code>}{<width>}} This creates a ``linehead'' which is used to cap lines, like +\macroname\@rarrow{} ($\@rarrow{.4}{2.5}$). +{\it pdf code} is the actual code used to draw the symbol, and it should be noted that all necessary transformations to the +linehead are done by \macroname\@linehead@type{} and should not be included in the code. +This includes the setting of the width and transforming the coordinate system. +The {\it width} is the width of the drawing of the {\it pdf code}. + +This macro actually accepts more parameters, but they're used internally and therefore aren't necessary to explain. +Therefore the only use this macro should be for is defining line heads. +For example, the definition of \macroname\@rarrow{} is: +\begincode +\def\@rarrow {\@linehead@type{0 0 m 2 0 l 1 0 0 1 0 1.5 c 2 0 m 1 0 0 -1 0 -1.5 c S}{2}} +/endcode + +The predefine lineheads are +\icode \@rarrow, \@larrow, \@rharp, \@lharp, \@rdharp, \@rlharp, \@mapcap, \@rsarrow, \@lsarrow, \@backhook, \@fronthook, \@doublerarrow, \@doublelarrow, /hfil/break\@circlecap/eicode. +\emacroexp + +\macroexp{\@vecc@def{<vector name>}<left cap><right cap>} This creates a vector macro, like \macroname\vecc. +This creates both the normal and short variations of the vector. +For example, the definition of the {\tt vecc} vectors is: +\begincode +\@vecc@def{vecc}\@linecap\@rarrow +/endcode +\emacroexp + +\macroexp{\@arrow@def{<arrow name>}<left cap><right cap>} This creates an arrow macro, like \macroname\varrightarrow. +This creates the normal, long, and extendable versions of the arrow. +For example, the definition of the {\it varrightarrow} vectors is: +\begincode +\@arrow@def{varrightarrow}\@linecap\@rarrow +/endcode +\emacroexp + +\macroexp{\@wide@accent{<pdf code>}} This creates a wide accent, like \macroname\varwidecheck. +The width of the drawing by the {\it pdf code} should be $1$, and it should be filled not stroked (since the accent is +transformed to stretch over the material beneath it). +Again this macro should only be used to define wide accents. +For example, the definition of \macroname\varwidecheck{} is: +\begincode +\def\varwidecheck{\@wide@accent{0 1.3 m .5 -.4 l 1 1.3 l 1 1.6 l .5 .3 l 0 1.6 l f}} +/endcode +\emacroexp + +\macroexp{\pdf@drawing@macro{<name>}{<pdf code>}{<width>}{<height>}{<horizontal skew>}{<depth>}} This creates a text mode +symbol like \macroname\lightning. +It is important that the {\it pdf code} fits inside the box created by {\it width, height,\/} and {\it depth} since the +drawing is placed inside of an XForm and so anything outside the box will be cropped. +The {\it horizontal skew} can be used to shift the symbol so that it fits horizontally inside the box. +For example, the definition of \macroname\lightning{} is: +\begincode +\pdf@drawing@macro{lightning} % The lightning symbol is drawn upright + {.86603 -.5 .5 .86603 0 0 cm % and rotated 30 degrees + 1 J 1 j .6 w + -3 10 m -3 4.133975 l 0 5.866025 l 0 0 l -1.125 1.5 l 0 0 l 1.125 1.5 l S} + {4.2pt}{10.5pt}{.5pt}{.9pt} +/endcode +\emacroexp + +\macroexp{\pdf@drawing@math@macro{<name>}{<pdf code>}{<width>}{<height>}{<skew>}{<depth>}<style scaling>} This creates a math +mode symbol like \macroname\divs. +The first few parameters are identical in use as \macroname\pdf@drawing@macro's, and {\it style scaling} is used to set the +scaling for the symbol in different math styles. +{\it style scaling} should be three groups: the first group is the scaling used in textstyle, the second in scriptstyle, and +the third in scriptscriptstyle. +Each of these scalings should consist of two components: the fractional scaling and the decimal scaling. +So for example if we'd like to scale it by $0.6$ the scaling would be \icode {{6 /fslash 10}{0.6}}/eicode. +This is necessary since \macroname\dimexpr{} doesn't play with decimals nicely, but \macroname\pdfliteral{} requires them. +For example, the definition of \macroname\divs{} is: +\begincode +\pdf@drawing@math@macro{@divs} + {1.3 w 1 j + 2.5 1 0 .1 re + 2.5 5 0 .1 re + 2.5 9 0 .1 re B} + {5.4pt}{10pt}{0pt}{.2pt} + {{1}{1}}{{7 /fslash 10}{.7}}{{11 /fslash 20}{.55}} +\def\divs{\mathrel{\@divs}} % Make divs a relation +/endcode +\emacroexp + +\macroexp{\putsym{<main symbol>}{<secondary symbol>}} This centers the {\it secondary symbol} over the {\it main symbol}, and +can be used to create symbols like \macroname\aint. +Note that doing this creates a symbol which acts like an Ord on the left side and whatever type of atom {\it main symbol} is +on the right (glue-wise). +So it may be necessary to add some math atom ``hackery'' around the \macroname\putsym{} in order to get the target glue. +For example, the definition of \macroname\aint{} is: +\begincode +\def\aint{\mathop{}\mathclose{}\putsym\int-} +/endcode +The \icode \mathop{}\mathclose{}/eicode{} makes it act like an Op on the left (the \macroname\mathclose{} removes any glue +added on the right of the \macroname\mathop). +Usually the definition is simpler, but this is slightly more complicated since \macroname\int{} has specially placed limits. +Another example, this time the definition of \macroname\bigdcup{} is: +\begincode +\def\bigdcup{\mathop{\putsym\bigcup\cdot}} +/endcode +\emacroexp + +\unless\ifx\pdfxform\undefined +\macroexp{\@wide@operator{<name>}<operator>{<first cut>}{<second cut>}} This creates an extendable operator of {\it operator} +whose name is {\it name}, like \macroname\suum. +{\it first cut} is a decimal value which is where on the width of {\it operator} to make the first slice, and similar for +{\it second cut}. +The extendable part of the new operator is the area between the two cuts. +For example, the definition of \macroname\suum{} is: +\begincode +\@wide@operator{suum}\sum{.52}{.6} +/endcode +You can see where the slices are for a wide operator using the \macroname\@show@slices{} macro, for example +\begincode +\@show@slices{suum} +/endcode +gives: +$$ \@show@slices{suum} $$ +These macros are not available for \xetex. +\emacroexp +\fi +\end |