summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/esint
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/esint
Initial commit
Diffstat (limited to 'macros/latex/contrib/esint')
-rw-r--r--macros/latex/contrib/esint/README.txt24
-rw-r--r--macros/latex/contrib/esint/esint-doc.pdfbin0 -> 60279 bytes
-rw-r--r--macros/latex/contrib/esint/esint.dtx1453
-rw-r--r--macros/latex/contrib/esint/esint.ins28
-rw-r--r--macros/latex/contrib/esint/esint10.tfmbin0 -> 364 bytes
5 files changed, 1505 insertions, 0 deletions
diff --git a/macros/latex/contrib/esint/README.txt b/macros/latex/contrib/esint/README.txt
new file mode 100644
index 0000000000..38628d8f3a
--- /dev/null
+++ b/macros/latex/contrib/esint/README.txt
@@ -0,0 +1,24 @@
+The esint package is a solution to access to alternate integral symbols
+using the Computer Modern fonts.
+
+In the original Computer Modern Math font, several integral symbols are missing,
+such \oiint. Many of those symbols are available
+in other math fonts (pxfonts, txfonts, etc.), but there is no good solution if you
+want tu use Computer Modern.
+
+The easing.ins file allows to generate mf files, but Type1 font are available on CTAN: it's better to use them!
+
+License : LPPL
+
+Updates:
+
+*2005/01/20: minor change in esint.fd in order to avoid an error inside align environment.
+Thank's to Eckhard Neber.
+
+*2019/07/19: add intimits and nointlimits options, and modify \dotsint command as \idotsint to modify all ams math symbols (request from Franck Mittelbach).
+
+*2019/08/21 and 2019/08/27: some modification of typos in dox and ins files.
+
+Eddie Saudrais
+e.saudrais@wanadoo.fr
+http://www.phylam.org \ No newline at end of file
diff --git a/macros/latex/contrib/esint/esint-doc.pdf b/macros/latex/contrib/esint/esint-doc.pdf
new file mode 100644
index 0000000000..d4b1868795
--- /dev/null
+++ b/macros/latex/contrib/esint/esint-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/esint/esint.dtx b/macros/latex/contrib/esint/esint.dtx
new file mode 100644
index 0000000000..8acdc8f09e
--- /dev/null
+++ b/macros/latex/contrib/esint/esint.dtx
@@ -0,0 +1,1453 @@
+%\iffalse
+%
+%esint.dtx version 1.2d 2019/07/19
+%
+%
+%Eddie Saudrais
+%http://www.phylam.org
+%e.saudrais@wanadoo.fr
+%
+%
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage{esint}
+\usepackage{mflogo}
+\parindent 0cm
+\topmargin -1cm
+\begin{document}
+\DocInput{esint.dtx}
+\end{document}
+%</driver>
+%\fi
+%\title{Alternate integral signs with \LaTeX{}}
+%\author{Eddie Saudrais}
+%\date{version 1.2d 2019/08/27}
+%\maketitle
+%\MakeShortVerb{\|}
+%\begin{abstract}
+%The package \textsf{esint.sty} allows you to use new integral symbols.
+%\end{abstract}
+%\section{License}
+%The LATEX Project Public Li­cense
+%\section{Using esint}
+%Load the package with \verb|\usepackage{esint}|, and enjoy!
+%\begin{itemize}
+%\item
+%BE CAREFUL: if you are using \texttt{amslatex}, you must load
+%\texttt{esint} AFTER \texttt{amslatex}.
+%\item
+%This package is available with two options: intimits and intnolimits.
+%
+%When loading with \verb+\usepackage[nointlimits]{esint}+ (default), \verb+\[\int_0^1f(x)dx\]+ gives \[\int_0^1f(x)dx\]
+%
+%When loading width \verb+\usepackage[intlimits]{esint}+, \verb+\[\int_0^1f(x)dx\]+ gives \[\int\limits_0^1f(x)dx\].
+%
+%\end{itemize}
+%
+%Available integrals signs:
+
+%\begin{tabular}{c c c}
+%Commande & textstyle & displaystyle \\
+%&&\\
+%\verb+\int+ & $\int$ & $\displaystyle \int$\\
+%&&\\
+%\verb+\iint+ & $\iint$& $\displaystyle \iint$\\
+%&&\\
+%\verb+\iiint+ & $\iiint$ & $\displaystyle \iiint$\\
+%&&\\
+%\verb+\iiiint+ & $\iiiint$ & $\displaystyle \iiiint$\\
+%&&\\
+%\verb+\idotsint+ & $\idotsint$ & $\displaystyle \idotsint$
+%\end{tabular}
+
+%\begin{tabular}{c c c}
+%\verb+\oint+ & $\oint$ & $\displaystyle \oint$\\
+%&&\\
+%\verb+\oiint+ & $\oiint$ & $\displaystyle \oiint$\\
+%&&\\
+%\verb+\varoiint+ & $\varoiint$ & $\displaystyle \varoiint$\\
+%&&\\
+%\verb+\sqint+ & $\sqint$ &$\displaystyle \sqint$\\
+%&&\\
+%\verb+\sqiint+ & $\sqiint$ & $\displaystyle \sqiint$\\
+%&&\\
+%\verb+\ointctrclockwise+ & $\ointctrclockwise$ & $\displaystyle \ointctrclockwise$\\
+%&&\\
+%\verb+\ointclockwise+ & $\ointclockwise$ & $\displaystyle \ointclockwise$\\
+%&&\\
+%\verb+\varointclockwise+ & $\varointclockwise$ & $\displaystyle \varointclockwise$\\
+%&&\\
+%\verb+\varointctrclockwise+ & $\varointctrclockwise$ & $\displaystyle \varointctrclockwise$\\
+%&&\\
+%\verb+\fint+ & $\fint$ &$\displaystyle \fint$\\
+%&&\\
+%\verb+\landupint+ & $\landupint$ &$\displaystyle \landupint$\\
+%&&\\
+%\verb+\landdownint+ & $\landdownint$ & $\displaystyle \landdownint$
+%\end{tabular}
+%\StopEventually{}
+%
+%You can customize the space between integral sign in multiple
+%integrals. You have to modify lines 12 and 13 of the \texttt{esint10.mf}
+%file: \texttt{tdec\#} and \texttt{ddec\#} are spaces between
+%signs. If you modify \texttt{esint10.mf}, delete
+%\texttt{esint10.tfm}, the generated \texttt{*.pk} files, and run
+%\MF{} on \texttt{esint10.mf}. Of course, you have to remove pub files: the type 1 version will not be modified!
+%
+%\section{Updates}
+%\begin{itemize}
+%\item
+%20/01/2005: change in esint.fd in order to avoid a problem inside align environment.
+%Thank's to Eckhard Neber.
+%Font files (mf, pfb, tfm...) are unchanged.
+%\item
+%2019/07/19: add intlimits and nointlimits options, and modify \verb+\dotsint+ command as \verb+\idotsint+ to modify all amsmath symbols (request from Frank Mittelbach).
+%\item
+%2019/08/21: correction of wrong esint.dtx file.
+%\item
+%2019/08/27: correction of wrong esint.ins file.
+%\end{itemize}
+%
+%\section{The code}
+%The package identifies himself
+% \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{esint}
+% \end{macrocode}
+%To redifine symbols
+% \begin{macrocode}
+\DeclareOption{intlimits}{\let\ilimits@\displaylimits}
+\DeclareOption{nointlimits}{\let\ilimits@\nolimits}
+\ExecuteOptions{nointlimits}
+\ProcessOptions
+\def\re@DeclareMathSymbol#1#2#3#4{%
+ \let#1=\undefined
+ \DeclareMathSymbol{#1}{#2}{#3}{#4}}
+% \end{macrocode}
+%Definition of the symbol font:
+% \begin{macrocode}
+\DeclareSymbolFont{largesymbolsA}{U}{esint}{m}{n}
+% \end{macrocode}
+%Definition of the new symbols:
+% \begin{macrocode}
+\re@DeclareMathSymbol{\intop}{\mathop}{largesymbolsA}{'001}
+ \def\int{\intop\ilimits@}
+\re@DeclareMathSymbol{\iintop}{\mathop}{largesymbolsA}{'003}
+ \def\iint{\iintop\ilimits@}
+\re@DeclareMathSymbol{\iiintop}{\mathop}{largesymbolsA}{'005}
+ \def\iiint{\iiintop\ilimits@}
+\re@DeclareMathSymbol{\iiiintop}{\mathop}{largesymbolsA}{'007}
+ \def\iiiint{\iiiintop\ilimits@}
+\re@DeclareMathSymbol{\dotsintop}{\mathop}{largesymbolsA}{'011}
+ \def\dotsint{\dotsintop\ilimits@}
+\re@DeclareMathSymbol{\ointop}{\mathop}{largesymbolsA}{'013}
+ \def\oint{\ointop\ilimits@}
+\re@DeclareMathSymbol{\oiintop}{\mathop}{largesymbolsA}{'015}
+ \def\oiint{\oiintop\ilimits@}
+\re@DeclareMathSymbol{\sqintop}{\mathop}{largesymbolsA}{'017}
+ \def\sqint{\sqintop\ilimits@}
+\re@DeclareMathSymbol{\sqiintop}{\mathop}{largesymbolsA}{'021}
+ \def\sqiint{\sqiintop\ilimits@}
+\re@DeclareMathSymbol{\ointctrclockwiseop}{\mathop}{largesymbolsA}{'027}
+ \def\ointctrclockwise{\ointctrclockwiseop\ilimits@}
+\re@DeclareMathSymbol{\ointclockwiseop}{\mathop}{largesymbolsA}{'031}
+ \def\ointclockwise{\ointclockwiseop\ilimits@}
+\re@DeclareMathSymbol{\varointclockwiseop}{\mathop}{largesymbolsA}{'033}
+ \def\varointclockwise{\varointclockwiseop\ilimits@}
+\re@DeclareMathSymbol{\varointctrclockwiseop}{\mathop}{largesymbolsA}{'035}
+ \def\varointctrclockwise{\varointctrclockwiseop\ilimits@}
+\re@DeclareMathSymbol{\fintop}{\mathop}{largesymbolsA}{'037}
+ \def\fint{\fintop\ilimits@}
+\re@DeclareMathSymbol{\varoiintop}{\mathop}{largesymbolsA}{'041}
+ \def\varoiint{\varoiintop\ilimits@}
+\re@DeclareMathSymbol{\landupintop}{\mathop}{largesymbolsA}{'043}
+ \def\landupint{\landupintop\ilimits@}
+\re@DeclareMathSymbol{\landdownintop}{\mathop}{largesymbolsA}{'045}
+ \def\landdownint{\landdownintop\ilimits@}
+\let\idotsint\dotsint
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \begin{macrocode}
+%<*fdfile>
+% \end{macrocode}
+%Font definition file:
+% \begin{macrocode}
+\ProvidesFile{uesint.fd}
+\DeclareFontFamily{U}{esint}{}
+\DeclareFontShape{U}{esint}{m}{n}{
+ <-> esint10
+ }{}
+% \end{macrocode}
+% \begin{macrocode}
+%</fdfile>
+% \end{macrocode}
+%\end{document}
+% \begin{macrocode}
+%<*mffile>
+% Computer Modern Math Extension 10 point
+% Integral signs Eddie Saudrais
+%
+if unknown cmbase: input cmbase fi
+
+font_identifier:="ESINT"; font_size 10pt#;
+
+u#:=20/36pt#; % unit width
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+tdec#:=6u#; % space between integrals signs (textstyle)
+ddec#:=6.5u#; % space between integrals signs (displaystyle)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+width_adj#:=0pt#; % width adjustment for certain characters
+serif_fit#:=0pt#; % extra sidebar near lowercase serifs
+cap_serif_fit#:=5/36pt#; % extra sidebar near uppercase serifs
+letter_fit#:=0pt#; % extra space added to all sidebars
+
+body_height#:=270/36pt#; % height of tallest characters
+asc_height#:=250/36pt#; % height of lowercase ascenders
+cap_height#:=246/36pt#; % height of caps
+fig_height#:=232/36pt#; % height of numerals
+x_height#:=155/36pt#; % height of lowercase without ascenders
+math_axis#:=90/36pt#; % axis of symmetry for math symbols
+bar_height#:=87/36pt#; % height of crossbar in lowercase e
+comma_depth#:=70/36pt#; % depth of comma below baseline
+desc_depth#:=70/36pt#; % depth of lowercase descenders
+
+crisp#:=0pt#; % diameter of serif corners
+tiny#:=8/36pt#; % diameter of rounded corners
+fine#:=7/36pt#; % diameter of sharply rounded corners
+thin_join#:=7/36pt#; % width of extrafine details
+hair#:=9/36pt#; % lowercase hairline breadth
+stem#:=25/36pt#; % lowercase stem breadth
+curve#:=30/36pt#; % lowercase curve breadth
+ess#:=27/36pt#; % breadth in middle of lowercase s
+flare#:=33/36pt#; % diameter of bulbs or breadth of terminals
+dot_size#:=38/36pt#; % diameter of dots
+cap_hair#:=11/36pt#; % uppercase hairline breadth
+cap_stem#:=32/36pt#; % uppercase stem breadth
+cap_curve#:=37/36pt#; % uppercase curve breadth
+cap_ess#:=35/36pt#; % breadth in middle of uppercase s
+rule_thickness#:=.4pt#; % thickness of lines in math symbols
+
+dish#:=1/36pt#; % amount erased at top or bottom of serifs
+bracket#:=20/36pt#; % vertical distance from serif base to tangent
+jut#:=28/36pt#; % protrusion of lowercase serifs
+cap_jut#:=37/36pt#; % protrusion of uppercase serifs
+beak_jut#:=10/36pt#; % horizontal protrusion of beak serifs
+beak#:=70/36pt#; % vertical protrusion of beak serifs
+vair#:=8/36pt#; % vertical diameter of hairlines
+notch_cut#:=10pt#; % maximum breadth above or below notches
+bar#:=11/36pt#; % lowercase bar thickness
+slab#:=11/36pt#; % serif and arm thickness
+cap_bar#:=11/36pt#; % uppercase bar thickness
+cap_band#:=11/36pt#; % uppercase thickness above/below lobes
+cap_notch_cut#:=10pt#; % max breadth above/below uppercase notches
+serif_drop#:=4/36pt#; % vertical drop of sloped serifs
+stem_corr#:=1/36pt#; % for small refinements of stem breadth
+vair_corr#:=1/36pt#; % for small refinements of hairline height
+apex_corr#:=0pt#; % extra width at diagonal junctions
+
+o#:=8/36pt#; % of overshoot for curves
+apex_o#:=8/36pt#; % amount of overshoot for diagonal junctions
+
+slant:=0; % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1; % factor applied to weights of heavy characters
+math_spread:=0; % extra openness of math symbols
+superness:=1/sqrt2; % parameter for superellipses
+superpull:=1/6; % extra openness inside bowls
+beak_darkness:=11/30; % fraction of triangle inside beak serifs
+ligs:=2; % level of ligatures to be included
+
+square_dots:=false; % should dots be square?
+hefty:=false; % should we try hard not to be overweight?
+serifs:=true; % should serifs and bulbs be attached?
+monospace:=false; % should all characters have the same width?
+variant_g:=false; % should an italic-style g be used?
+low_asterisk:=false; % should the asterisk be centered at the axis?
+math_fitting:=false; % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+fontdimen 8: % parameters $\xi_8$ through $\xi_{13}$ will now be listed
+ rule_thickness#, % default\_rule\_thickness
+ 40/36pt#, % big\_op\_spacing1
+ 60/36pt#, % big\_op\_spacing2
+ 72/36pt#, % big\_op\_spacing3
+ 216/36pt#, % big\_op\_spacing4
+ 36/36pt#; % big\_op\_spacing5
+
+generate mathint % switch to the driver file
+% \end{macrocode}
+% \begin{macrocode}
+%</mffile>
+% \end{macrocode}
+% \begin{macrocode}
+%<*mfmath>
+% The Computer Modern Math-Extension family (by D. E. Knuth, 1979--1985)
+% Integral signs by Eddie Saudrais 2002
+
+font_coding_scheme:="TeX math extension"; %
+mode_setup; font_setup;
+
+define_pixels(tdec,ddec);
+
+input bigint; % large operators (integral signs)
+
+font_x_height x_height#;
+font_quad 18u#+4letter_fit#;
+% (The calling file should give the other math extension font parameters.)
+bye.
+% \end{macrocode}
+% \begin{macrocode}
+%</mfmath>
+% \end{macrocode}
+% \begin{macrocode}
+%<*mfsymbol>
+% This file contains pairs of large operators for math extension fonts.
+
+% Each operator has a `{\tt\char`\\textstyle}' form, for math in text,
+% and a `{\tt\char`\\displaystyle}' form, for displayed formulas.
+
+charlist oct"001": oct"002"; % integral signs
+charlist oct"003": oct"004"; % double integral signs
+charlist oct"005": oct"006"; % triple integral signs
+charlist oct"007": oct"010"; % fourth integral signs
+charlist oct"011": oct"012"; % dots integral signs
+charlist oct"013": oct"014"; % contour integral signs
+charlist oct"015": oct"016"; % contour double integral signs
+charlist oct"017": oct"020"; % square integral signs
+charlist oct"021": oct"022"; % square double integral signs
+%charlist oct"023": oct"024"; % contour triple integral signs % later (usefull?)
+%charlist oct"025": oct"026"; % square triple integral signs % later (usefull?)
+charlist oct"027": oct"030"; % right arrow up contour integral signs
+charlist oct"031": oct"032"; % left arrow up contour integral signs
+charlist oct"033": oct"034"; % right arrow down contour integral signs
+charlist oct"035": oct"036"; % left arrow down contour integral signs
+charlist oct"037": oct"040"; % functional integral signs
+charlist oct"041": oct"042"; % alternate contour double integral signs
+charlist oct"043": oct"044"; % landau up integral sign
+charlist oct"045": oct"046"; % landau down integral sign
+
+cmchar "\textstyle integral sign";
+beginchar(oct"001",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle double integral sign";
+beginchar(oct"003",12u#+tdec#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=tdec;y0=0;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos10(curve,0); pos20(hair,0); pos30(vair,90);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(curve,-180);
+rt x1r=hround(w-u-tdec); x9=w-tdec-x1; x7=w-tdec-x3=3u;
+x90=x9+tdec;x70=x7+tdec;
+y90=y9;y80=y8;y70=y7;
+x10=x1+tdec;x30=x3+tdec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5tdec-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle triple integral sign";
+beginchar(oct"005",12u#+2tdec#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=tdec;y0=0;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos10(curve,0); pos20(hair,0); pos30(vair,90);
+pos100(curve,0); pos200(hair,0); pos300(vair,90);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(curve,-180);
+pos700(vair,-90); pos800(hair,-180); pos900(curve,-180);
+rt x1r=hround(w-u-2tdec); x9=w-x1-2tdec; x7=w-2tdec-x3=3u;
+x900=x90+tdec=x9+2tdec;x700=x70+tdec=x7+2tdec;
+y900=y90=y9;y800=y80=y8;y700=y70=y7;
+x100=x10+tdec=x1+2tdec;x300=x30+tdec=x3+2tdec;
+y100=y10=y1;y300=y30=y3;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-tdec-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+bulb(300,200,100); bulb(700,800,900);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+filldraw haut shifted 2z0;
+filldraw bas shifted 2z0;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle fourth integral sign";
+beginchar(oct"007",12u#+3tdec#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=tdec;y0=0;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos10(curve,0); pos20(hair,0); pos30(vair,90);
+pos100(curve,0); pos200(hair,0); pos300(vair,90);
+pos150(curve,0); pos250(hair,0); pos350(vair,90);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(curve,-180);
+pos700(vair,-90); pos800(hair,-180); pos900(curve,-180);
+pos750(vair,-90); pos850(hair,-180); pos950(curve,-180);
+rt x1r=hround(w-u-3tdec); x9=w-x1-3tdec; x7=w-3tdec-x3=3u;
+x950=x900+tdec=x90+2tdec=x9+3tdec;
+x750=x700+tdec=x70+2tdec=x7+3tdec;
+y950=y900=y90=y9;y850=y800=y80=y8;y750=y700=y70=y7;
+x150=x100+tdec=x10+2tdec=x1+3tdec;
+x350=x300+tdec=x30+2tdec=x3+3tdec;
+y150=y100=y10=y1;y350=y300=y30=y3;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-1.5tdec-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+bulb(300,200,100); bulb(700,800,900);
+bulb(350,250,150); bulb(750,850,950);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+filldraw haut shifted 2z0;
+filldraw bas shifted 2z0;
+filldraw haut shifted 3z0;
+filldraw bas shifted 3z0;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle integral sign";
+beginchar(oct"002",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle double integral sign";
+beginchar(oct"004",18u#+ddec#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=ddec;y0=0;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos10(bulb_size,0); pos20(hair,0); pos30(vair,90);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(bulb_size,-180);
+rt x1r=hround(w-u-ddec); x9=w-x1-ddec; x7=w-x3-ddec=3u;
+x90=x9+ddec; x70=x7+ddec;
+y90=y9;y70=y7;y80=y8;
+x10=x1+ddec;x30=x3+ddec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5ddec-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle triple integral sign";
+beginchar(oct"006",18u#+2ddec#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=ddec;y0=0;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos10(bulb_size,0); pos20(hair,0); pos30(vair,90);
+pos100(bulb_size,0); pos200(hair,0); pos300(vair,90);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(bulb_size,-180);
+pos700(vair,-90); pos800(hair,-180); pos900(bulb_size,-180);
+rt x1r=hround(w-u-2ddec); x9=w-x1-2ddec; x7=w-x3-2ddec=3u;
+x90=x9+ddec; x70=x7+ddec;
+x900=x90+ddec; x700=x70+ddec;
+y900=y90=y9;y700=y70=y7;y800=y80=y8;
+x10=x1+ddec;x30=x3+ddec;
+x100=x10+ddec;x300=x30+ddec;
+y100=y10=y1;y300=y30=y3;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-ddec-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+bulb(300,200,100); bulb(700,800,900);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+filldraw haut shifted 2z0;
+filldraw bas shifted 2z0;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle fourth integral sign";
+beginchar(oct"010",18u#+3ddec#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=ddec;y0=0;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos10(bulb_size,0); pos20(hair,0); pos30(vair,90);
+pos100(bulb_size,0); pos200(hair,0); pos300(vair,90);
+pos150(bulb_size,0); pos250(hair,0); pos350(vair,90);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(bulb_size,-180);
+pos700(vair,-90); pos800(hair,-180); pos900(bulb_size,-180);
+pos750(vair,-90); pos850(hair,-180); pos950(bulb_size,-180);
+rt x1r=hround(w-u-3ddec); x9=w-x1-3ddec; x7=w-x3-3ddec=3u;
+x950=x900+ddec=x90+2ddec=x9+3ddec;
+x750=x700+ddec=x70+2ddec=x7+3ddec;
+y950=y900=y90=y9;y750=y700=y70=y7;y800=y80=y8;
+x150=x100+ddec=x10+2ddec=x1+3ddec;
+x350=x300+ddec=x30+2ddec=x3+3ddec;
+y150=y100=y10=y1;y350=y300=y30=y3;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-1.5ddec-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+bulb(300,200,100); bulb(700,800,900);
+bulb(350,250,150); bulb(750,850,950);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+filldraw haut shifted 2z0;
+filldraw bas shifted 2z0;
+filldraw haut shifted 3z0;
+filldraw bas shifted 3z0;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle dots integral sign";
+beginchar(oct"011",12u#+3tdec#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+path rond;
+x0=tdec;y0=0;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos150(curve,0); pos250(hair,0); pos350(vair,90);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+pos750(vair,-90); pos850(hair,-180); pos950(curve,-180);
+rt x1r=hround(w-u-3tdec); x9=w-x1-3tdec; x7=w-3tdec-x3=3u;
+x950=x9+3tdec;x750=x7+3tdec;
+y950=y9;y850=y8;y750=y7;
+x150=x1+3tdec;x350=x3+3tdec;
+y150=y1;y350=y3;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-1.5tdec-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(350,250,150); bulb(750,850,950);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted 3z0;
+filldraw bas shifted 3z0;
+pickup fine.nib;
+numeric dot_diam#; dot_diam#=dot_size#;
+define_whole_blacker_pixels(dot_diam);
+pos51(dot_diam,0);pos52(dot_diam,90);
+lft x51l=hround(.5w-.5dot_diam);
+y52=y5;
+z51=z52;
+rond:=z51l..z52l..z51r..z52r..cycle;
+filldraw rond shifted -.75z0;
+filldraw rond;
+filldraw rond shifted .75z0;
+penlabels(1,2,3,4,5,6,7,8,9,150); endchar;
+
+cmchar "\displaystyle dots integral sign";
+beginchar(oct"012",18u#+3ddec#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+path rond;
+x0=ddec;y0=0;
+x99=tdec;y99=0;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos150(bulb_size,0); pos250(hair,0); pos350(vair,90);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+pos750(vair,-90); pos850(hair,-180); pos950(bulb_size,-180);
+rt x1r=hround(w-u-3ddec); x9=w-x1-3ddec; x7=w-x3-3ddec=3u;
+x950=x9+3ddec;
+x750=x7+3ddec;
+y950=y9;y750=y7;
+x150=x1+3ddec;
+x350=x3+3ddec;
+y150=y100=y10=y1;y350=y300=y30=y3;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-1.5ddec-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(350,250,150); bulb(750,850,950);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted 3z0;
+filldraw bas shifted 3z0;
+pickup fine.nib;
+numeric dot_diam#; dot_diam#=dot_size#;
+define_whole_blacker_pixels(dot_diam);
+pos51(dot_diam,0);pos52(dot_diam,90);
+lft x51l=hround(.5w-.5dot_diam);
+y52=y5;
+z51=z52;
+rond:=z51l..z52l..z51r..z52r..cycle;
+filldraw rond shifted -.75z99;
+filldraw rond;
+filldraw rond shifted .75z99;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle contour integral sign";
+beginchar(oct"013",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle contour double integral sign";
+beginchar(oct"015",12u#+tdec#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=tdec;y0=0;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos10(curve,0); pos20(hair,0); pos30(vair,90);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(curve,-180);
+rt x1r=hround(w-u-tdec); x9=w-tdec-x1; x7=w-tdec-x3=3u;
+x90=x9+tdec;x70=x7+tdec;
+y90=y9;y80=y8;y70=y7;
+x10=x1+tdec;x30=x3+tdec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5tdec-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+pickup rule.nib; autorounded;
+z50=z5+.5z0;
+x51=x54=x50-.55tdec;
+x52=x53=x50+.55tdec;
+y51=y52=y50+.35(w-tdec);
+y53=y54=y50-.35(w-tdec);
+draw z51..z52;
+draw z53..z54;
+z55=.5[z54,z51]; z56=.5[z53,z52];
+draw halfcircle scaled .7(w-tdec) rotated 90 shifted z55 ;
+draw halfcircle scaled .7(w-tdec) rotated -90 shifted z56 ;
+penlabels(1,2,3,4,5,6,7,8,9,51,52,53,54,55,56,50); endchar;
+
+
+cmchar "\displaystyle contour integral sign";
+beginchar(oct"014",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle contour double integral sign";
+beginchar(oct"016",18u#+ddec#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=ddec;y0=0;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos10(bulb_size,0); pos20(hair,0); pos30(vair,90);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(bulb_size,-180);
+rt x1r=hround(w-u-ddec); x9=w-x1-ddec; x7=w-x3-ddec=3u;
+x90=x9+ddec; x70=x7+ddec;
+y90=y9;y70=y7;y80=y8;
+x10=x1+ddec;x30=x3+ddec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5ddec-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+pickup rule.nib; autorounded;
+z50=z5+.5z0;
+x51=x54=x50-.55ddec;
+x52=x53=x50+.55ddec;
+y51=y52=y50+.35(w-ddec);
+y53=y54=y50-.35(w-ddec);
+draw z51..z52;
+draw z53..z54;
+z55=.5[z54,z51]; z56=.5[z53,z52];
+draw halfcircle scaled .7(w-ddec) rotated 90 shifted z55 ;
+draw halfcircle scaled .7(w-ddec) rotated -90 shifted z56 ;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle square integral sign";
+beginchar(oct"017",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+x51=x52=x5+.35w;
+x53=x54=x5-.35w;
+y51=y54=y5+.35w;
+y52=y53=y5-.35w;
+draw z51--z52--z53--z54--cycle;
+penlabels(1,2,3,4,5,6,7,8,9,51,52,53,54); endchar;
+
+cmchar "\displaystyle square integral sign";
+beginchar(oct"020",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+x51=x52=x5+.35w;
+x53=x54=x5-.35w;
+y51=y54=y5+.35w;
+y52=y53=y5-.35w;
+draw z51--z52--z53--z54--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle square double integral sign";
+beginchar(oct"021",12u#+tdec#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=tdec;y0=0;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos10(curve,0); pos20(hair,0); pos30(vair,90);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(curve,-180);
+rt x1r=hround(w-u-tdec); x9=w-tdec-x1; x7=w-tdec-x3=3u;
+x90=x9+tdec;x70=x7+tdec; % on décalle de 10u
+y90=y9;y80=y8;y70=y7;
+x10=x1+tdec;x30=x3+tdec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5tdec-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+pickup rule.nib; autorounded;
+z50=z5+.5z0; % au milieu
+x51=x54=x50-.55tdec-.35(w-tdec);
+x52=x53=x50+.55tdec+.35(w-tdec);
+y51=y52=y50+.35(w-tdec);
+y53=y54=y50-.35(w-tdec);
+draw z51--z52--z53--z54--cycle;
+penlabels(1,2,3,4,5,6,7,8,9,51,52,53,54,55,56,50); endchar;
+
+cmchar "\displaystyle square double integral sign";
+beginchar(oct"022",18u#+ddec#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=ddec;y0=0;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos10(bulb_size,0); pos20(hair,0); pos30(vair,90);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(bulb_size,-180);
+rt x1r=hround(w-u-ddec); x9=w-x1-ddec; x7=w-x3-ddec=3u;
+x90=x9+ddec; x70=x7+ddec;
+y90=y9;y70=y7;y80=y8;
+x10=x1+ddec;x30=x3+ddec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5ddec-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+pickup rule.nib; autorounded;
+z50=z5+.5z0;
+x51=x54=x50-.55ddec-.35(w-ddec);
+x52=x53=x50+.55ddec+.35(w-ddec);
+y51=y52=y50+.35(w-ddec);
+y53=y54=y50-.35(w-ddec);
+draw z51--z52--z53--z54--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle right arrow up contour integral sign";
+beginchar(oct"027",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+x0=.345w;y0=.05w;
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51-.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9,51,52,53); endchar;
+
+cmchar "\displaystyle right arrow up contour integral sign";
+beginchar(oct"030",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+x0=.345w;y0=.05w;
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51-.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9,51,52,53); endchar;
+
+
+cmchar "\textstyle left arrow up contour integral sign";
+beginchar(oct"031",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+x0=-.345w;y0=.05w;
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51-.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle left arrow up contour integral sign";
+beginchar(oct"032",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+x0=-.345w;y0=.05w;
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51-.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle right arrow down contour integral sign";
+beginchar(oct"033",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+x0=.345w;y0=-.05w;
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,-90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51+.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle right arrow down contour integral sign";
+beginchar(oct"034",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+x0=.345w;y0=-.05w;
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,-90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51+.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle left arrow down contour integral sign";
+beginchar(oct"035",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+x0=-.345w;y0=-.05w;
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,-90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51+.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle left arrow down contour integral sign";
+beginchar(oct"036",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+x0=-.345w;y0=-.05w;
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw fullcircle scaled .7w shifted z5; % contour
+z51=z5+z0;
+pos51(1.35rule_thickness,-90);pos52(1.2vair,135);pos53(1.2vair,45);
+y52=y53=y51+.165w;
+x52=x51-.16w;
+x53=x51+.16w;
+pickup fine.nib;
+filldraw z52l--z51l--z51r--z52r--cycle;
+filldraw z53r--z51r--z51l--z53l--cycle;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\textstyle functional integral sign";
+beginchar(oct"037",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib;
+y10=y5;
+x10=x9l;x11=x1l;
+y11-y10=.102(y3-y7);
+cutdraw z10..z11;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+cmchar "\displaystyle functional integral sign";
+beginchar(oct"040",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib;
+y10=y5;
+x10=x9l;x5=.5[x10,x11];
+y11-y10=.102(y3-y7);
+cutdraw z10..z11;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+
+cmchar "\textstyle alternate contour double integral sign";
+beginchar(oct"041",12u#+tdec#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=tdec;y0=0;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos10(curve,0); pos20(hair,0); pos30(vair,90);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(curve,-180);
+rt x1r=hround(w-u-tdec); x9=w-tdec-x1; x7=w-tdec-x3=3u;
+x90=x9+tdec;x70=x7+tdec;
+y90=y9;y80=y8;y70=y7;
+x10=x1+tdec;x30=x3+tdec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5tdec-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+pickup rule.nib; autorounded;
+z50=z5+.5z0;
+draw fullcircle scaled .55w shifted z50; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+cmchar "\displaystyle alternate contour double integral sign";
+beginchar(oct"042",18u#+ddec#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+path haut;
+path bas;
+x0=ddec;y0=0;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos10(bulb_size,0); pos20(hair,0); pos30(vair,90);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+pos70(vair,-90); pos80(hair,-180); pos90(bulb_size,-180);
+rt x1r=hround(w-u-ddec); x9=w-x1-ddec; x7=w-x3-ddec=3u;
+x90=x9+ddec; x70=x7+ddec;
+y90=y9;y70=y7;y80=y8;
+x10=x1+ddec;x30=x3+ddec;
+y10=y1;y30=y3;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5ddec-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+bulb(30,20,10); bulb(70,80,90);
+haut:=stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+bas:=stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+filldraw haut;
+filldraw bas;
+filldraw haut shifted z0;
+filldraw bas shifted z0;
+pickup rule.nib; autorounded;
+z50=z5+.5z0;
+draw fullcircle scaled .65w shifted z50; % contour
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+cmchar "\textstyle landau up integral sign";
+beginchar(oct"043",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw halfcircle scaled .5w shifted z5; % contour
+y10=y11=y12=y13=y5;
+x11+.25w=x12-.25w=x5;
+x10+2u=x11;
+x13-2u=x12;
+cutdraw z10--z11;
+cutdraw z12--z13;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
+
+
+cmchar "\displaystyle landau up integral sign";
+beginchar(oct"044",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw halfcircle scaled .5w shifted z5; % contour
+y10=y11=y12=y13=y5;
+x11+.25w=x12-.25w=x5;
+x10+3u=x11;
+x13-3u=x12;
+cutdraw z10--z11;
+cutdraw z12--z13;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
+
+
+cmchar "\textstyle landau down integral sign";
+beginchar(oct"045",12u#,0,100/54dh#);
+italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(stem,180);
+pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(stem,0);
+pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=1.2u; lft x5r=hround(.5w-.5curve);
+top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
+y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw halfcircle scaled .5w rotated 180 shifted z5; % contour
+y10=y11=y12=y13=y5;
+x11+.25w=x12-.25w=x5;
+x10+2u=x11;
+x13-2u=x12;
+cutdraw z10--z11;
+cutdraw z12--z13;
+penlabels(1,2,3,4,5,6,7,8,9); endchar;
+
+
+cmchar "\displaystyle landau down integral sign";
+beginchar(oct"046",18u#,0,200/54dh#);
+italcorr 8u#; % \TeX\ kerning between upper limit and lower limit
+adjust_fit(0,-ic#); pickup fine.nib;
+numeric bulb_size, max_size;
+bulb_size=hround(bold+dw); max_size=hround(bold+2dw);
+pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(bold,180);
+pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(bold,0);
+pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
+rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
+x5=.5[x4,x6]; x4-x6=4.8u; lft x5r=hround(.5w-.5max_size);
+top y3r=0; bot y7r=-d;
+y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
+y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
+bulb(3,2,1); bulb(7,8,9); % bulbs
+filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
+ ..tension atleast 1 and atleast .8..{z5-z4}z5e; % upper stem
+filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
+ ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e; % lower stem
+pickup rule.nib; autorounded;
+draw halfcircle scaled .5w rotated 180 shifted z5; % contour
+y10=y11=y12=y13=y5;
+x11+.25w=x12-.25w=x5;
+x10+3u=x11;
+x13-3u=x12;
+cutdraw z10--z11;
+cutdraw z12--z13;
+penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
+% \end{macrocode}
+% \begin{macrocode}
+%</mfsymbol>
+% \end{macrocode}
+%\Finale
diff --git a/macros/latex/contrib/esint/esint.ins b/macros/latex/contrib/esint/esint.ins
new file mode 100644
index 0000000000..53b8c362fe
--- /dev/null
+++ b/macros/latex/contrib/esint/esint.ins
@@ -0,0 +1,28 @@
+\def\batchfile{esint.ins}
+\input docstrip.tex
+\keepsilent
+\preamble
+
+esint package to typeset integral signs.
+
+Contact: e.saudrais@wanadoo.fr
+
+License: The LATEX Project Public Li­cense
+
+Run XeLaTeX on esint.ins to generate files.
+
+Install the files:
+
+-- esint.sty and usent.fd on TEXINPUT;
+-- esint10.mf, mathint.mf and bigint.mf on MFINPUT
+-- generate Tom files running METAFONT on ensint10.mf files, and put the *.tfm file on the right location.
+
+Run XeLaTeX on esint.dtx to generate documentation.
+
+\endpreamble
+\generate{\file{esint.sty}{\from{esint.dtx}{package}}}
+\generate{\file{uesint.fd}{\from{esint.dtx}{fdfile}}}
+\generate{\file{esint10.mf}{\from{esint.dtx}{mffile}}}
+\generate{\file{mathint.mf}{\from{esint.dtx}{mfmath}}}
+\generate{\file{bigint.mf}{\from{esint.dtx}{mfsymbol}}}
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/esint/esint10.tfm b/macros/latex/contrib/esint/esint10.tfm
new file mode 100644
index 0000000000..3860d6a519
--- /dev/null
+++ b/macros/latex/contrib/esint/esint10.tfm
Binary files differ