From 9cf78ef142c16ed31ea32b267e8c328ea5e6dcc0 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 11 Jan 2006 23:52:55 +0000
Subject: trunk/Master/texmf-dist/source/latex/esvect

git-svn-id: svn://tug.org/texlive/trunk@259 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/esvect/esvect.dtx | 1435 ++++++++++++++++++++++
 1 file changed, 1435 insertions(+)
 create mode 100644 Master/texmf-dist/source/latex/esvect/esvect.dtx

(limited to 'Master/texmf-dist/source/latex/esvect/esvect.dtx')

diff --git a/Master/texmf-dist/source/latex/esvect/esvect.dtx b/Master/texmf-dist/source/latex/esvect/esvect.dtx
new file mode 100644
index 00000000000..19d8556ae70
--- /dev/null
+++ b/Master/texmf-dist/source/latex/esvect/esvect.dtx
@@ -0,0 +1,1435 @@
+%\iffalse
+%
+%esvect.dtx version 1.2 july 2000
+%
+%version 1.1 june 2000 : first version
+%version 1.2 july 2000 : this version
+%
+%Eddie Saudrais (eddie.saudrais@wanadoo.fr)
+%http://perso.wanadoo.fr/eddie.saudrais
+%
+%
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage{esvect}
+\usepackage{mflogo}
+\DeclareMathSymbol{\fldrap}{\mathrel}{esvector}{'021}
+\DeclareMathSymbol{\fldrbp}{\mathrel}{esvector}{'022}
+\DeclareMathSymbol{\fldrcp}{\mathrel}{esvector}{'023}
+\DeclareMathSymbol{\fldrdp}{\mathrel}{esvector}{'024}
+\DeclareMathSymbol{\fldrep}{\mathrel}{esvector}{'025}
+\DeclareMathSymbol{\fldrfp}{\mathrel}{esvector}{'026}
+\DeclareMathSymbol{\fldrgp}{\mathrel}{esvector}{'027}
+\DeclareMathSymbol{\fldrhp}{\mathrel}{esvector}{'030}
+\parindent 0cm
+\topmargin -1cm
+\begin{document}
+\DocInput{esvect.dtx}
+\end{document}
+%</driver>
+%\fi
+%\title{Typesetting vectors with beautiful arrow with \LaTeXe{}}
+%\author{Eddie Saudrais}
+%\date{version 1.2 07/092000}
+%\maketitle
+%\MakeShortVerb{\|}
+%\begin{abstract}
+%The package \textsf{esvect.sty} allows typesetting vectors.
+%Several arrows are available.
+%\end{abstract}
+%\section{Installation}
+%Run \LaTeXe{} on esvect.ins to generate files:
+%\begin{enumerate}
+%\item
+%Put \textsf{esvect.sty} on TEXINPUT.
+%\item
+%Put \textsf{uesvect.fd} on TEXINPUT, for example with \textsf{esvect.sty}.
+%\item
+%Put \textsf{vect5.mf}, \textsf{vect6.mf}, \textsf{vect7.mf}, \textsf{vect8.mf},
+%\textsf{vect9.mf} and \textsf{vect10.mf} on MFINPUT.
+%\end{enumerate}
+%
+%Run METAFONT on *.mf file to generate *.tfm files. For example:
+%
+%\verb|mf \mode=localfont; input vect5.mf|
+%
+%Put \textsf{vect5.tfm}, ..., \textsf{vect10.tfm} on the right
+%place.
+%\section{Using esvect}
+%Load the package with \verb|\usepackage{esvect}|, and enjoy!
+%
+%To obtain a vector, use the command \verb|\vv{arg}|.
+%
+%For example, \verb|$\vv{E$}|, \verb|$\vv{AB}$|,
+%\verb|$\vv{\imath}$| and \verb|$\vv{u}$| give $\vv{E}$,
+%$\vv{AB}$, $\vv{\imath}$ and $\vv{u}$.
+%
+%A star version \verb|\vv*{arg}{ind}| is available to typeset correctly a vector with a subscript:
+%\verb|$\vv*{e}{r}$| and \verb|$\vv*{L}{\Delta}$| give $\vv*{e}{r}$
+%and $\vv*{L}{\Delta}$.
+%
+%Height differents arrows are available. You have to select one
+%using an option when you load the package:
+%\verb|\usepackage[a]{esvect}|, ..., \verb|\usepackage[h]{esvect}|.
+%The option \verb|d| is selected by default.
+%
+%Corresponding arrows are:
+%
+%\vskip1em
+%\begin{tabular}{c c c c c c c c c}
+%option & a & b & c & d & e & f & g & h \\
+%fl\`eche & $\fldrap$ & $\fldrbp$ & $\fldrcp$ & $\fldrdp$ & $\fldrep$
+%& $\fldrfp$ & $\fldrgp$ & $\fldrhp$\\
+%\end{tabular}
+%
+%The size of the arrow is automatically calculated according to
+%the math environment:
+%
+%\verb|$$\vv{E}_{\vv{u}_{\vv{u}}}}$$| gives
+%$$\vv{E}_{\vv{u}_{\vv{u}}}$$
+%
+%\StopEventually{}
+%\section{The code}
+%The package identifies himself
+%    \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{esvect}
+%    \end{macrocode}
+%Definition of the symbol font:
+%    \begin{macrocode}
+\DeclareSymbolFont{esvector}     {U}{esvect}{m}{n}
+%    \end{macrocode}
+%Options processing:
+%    \begin{macrocode}
+\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'024} %default
+\DeclareOption{a}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'021}}
+\DeclareOption{b}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'022}}
+\DeclareOption{c}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'023}}
+\DeclareOption{d}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'024}}
+\DeclareOption{e}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'025}}
+\DeclareOption{f}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'026}}
+\DeclareOption{g}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'027}}
+\DeclareOption{h}{\DeclareMathSymbol{\fldr}{\mathrel}{esvector}{'030}}
+\ProcessOptions\relax
+%    \end{macrocode}
+%Defition of the lines:
+%    \begin{macrocode}
+\DeclareMathSymbol{\montraita}{\mathrel}{esvector}{'040}
+\DeclareMathSymbol{\montraitd}{\mathrel}{esvector}{'043}
+\def\relbareda{\mathrel{\mathpalette\mathsm@sh\montraita}}
+\def\relbaredd{\mathrel{\mathpalette\mathsm@sh\montraitd}}
+%    \end{macrocode}
+%Definition of the command:
+%    \begin{macrocode}
+\def\vv{\@ifstar{\vvstar}{\vecteur}}
+\def\vvstar#1#2{\vecteur{#1}_{\mkern-1mu\relax#2}}
+\newcommand{\vecteur}{%
+  \mathpalette{\overvect@\vectfill@}}
+%    \end{macrocode}
+%Definition of the characters used to draw the vector:
+%    \begin{macrocode}
+\def\vectfill@{\traitfill@\relbaredd\relbareda\fldr}
+%\end{macrocode}
+%Construction of the arrow:
+%    \begin{macrocode}
+\def\traitfill@#1#2#3#4{%
+  $\m@th\mkern2mu\relax#4#1\mkern-1.5mu%on met \relbaredd au d\'ebut
+   \cleaders\hbox{$#4\mkern0mu#2\mkern0mu$}\hfill%remplit avec relbareda
+   \mkern-1.5mu#3$%
+}
+%    \end{macrocode}
+%Construction of the whole vector:
+%    \begin{macrocode}
+\def\overvect@#1#2#3{\vbox{\ialign{##\crcr%
+ \noalign{\kern-.7pt\nointerlineskip}#1#2\crcr%
+ \noalign{\kern-.3pt\nointerlineskip}$\m@th\hfil#2#3\hfil$\crcr}}}
+%    \end{macrocode}
+%    \begin{macrocode}
+%</package>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*fdfile>
+%    \end{macrocode}
+%Font definition file:
+%    \begin{macrocode}
+\ProvidesFile{uesvect.fd}
+\DeclareFontFamily{U}{esvect}{}
+\DeclareFontShape{U}{esvect}{m}{n}{%
+      <5><6><7><8><9><10>gen*vect%
+      <10.95><12><14.4><17.28><20.74><24.88>vect10%
+      }{}
+%    \end{macrocode}
+%    \begin{macrocode}
+%</fdfile>
+%    \end{macrocode}
+%\end{document}
+%    \begin{macrocode}
+%<*mffilea>
+% Vector Symbols, from Computer Modern Math Symbols 5 point
+if unknown cmbase: input cmbase fi
+
+font_identifier:="VECT"; font_size 5pt#;
+
+u#:=12.5/36pt#;      % unit width
+width_adj#:=0pt#;    % width adjustment for certain characters
+serif_fit#:=0pt#;    % extra sidebar near lowercase serifs
+cap_serif_fit#:=2/36pt#;  % extra sidebar near uppercase serifs
+letter_fit#:=10/36pt#;    % extra space added to all sidebars
+
+body_height#:=135/36pt#;  % height of tallest characters
+asc_height#:=125/36pt#;    % height of lowercase ascenders
+cap_height#:=123/36pt#;    % height of caps
+fig_height#:=116/36pt#;    % height of numerals
+x_height#:=77.5/36pt#;    % height of lowercase without ascenders
+math_axis#:=45/36pt#;    % axis of symmetry for math symbols
+bar_height#:=43.5/36pt#;  % height of crossbar in lowercase e
+comma_depth#:=35/36pt#;    % depth of comma below baseline
+desc_depth#:=35/36pt#;    % depth of lowercase descenders
+
+crisp#:=6/36pt#;    % diameter of serif corners
+tiny#:=6/36pt#;      % diameter of rounded corners
+fine#:=5/36pt#;      % diameter of sharply rounded corners
+thin_join#:=5/36pt#;    % width of extrafine details
+hair#:=7.5/36pt#;    % lowercase hairline breadth
+stem#:=15.5/36pt#;    % lowercase stem breadth
+curve#:=17.5/36pt#;    % lowercase curve breadth
+ess#:=12/36pt#;      % breadth in middle of lowercase s
+flare#:=18.5/36pt#;    % diameter of bulbs or breadth of terminals
+dot_size#:=22/36pt#;    % diameter of dots
+cap_hair#:=8/36pt#;    % uppercase hairline breadth
+cap_stem#:=18.5/36pt#;    % uppercase stem breadth
+cap_curve#:=20.5/36pt#;    % uppercase curve breadth
+cap_ess#:=13.5/36pt#;    % breadth in middle of uppercase s
+rule_thickness#:=.28pt#;  % thickness of lines in math symbols
+
+dish#:=.7/36pt#;    % amount erased at top or bottom of serifs
+bracket#:=10/36pt#;    % vertical distance from serif base to tangent
+jut#:=17/36pt#;      % protrusion of lowercase serifs
+cap_jut#:=20/36pt#;    % protrusion of uppercase serifs
+beak_jut#:=6/36pt#;    % horizontal protrusion of beak serifs
+beak#:=35/36pt#;    % vertical protrusion of beak serifs
+vair#:=6/36pt#;      % vertical diameter of hairlines
+notch_cut#:=5pt#;    % maximum breadth above or below notches
+bar#:=8/36pt#;      % lowercase bar thickness
+slab#:=8/36pt#;      % serif and arm thickness
+cap_bar#:=8/36pt#;    % uppercase bar thickness
+cap_band#:=8/36pt#;    % uppercase thickness above/below lobes
+cap_notch_cut#:=5pt#;    % max breadth above/below uppercase notches
+serif_drop#:=2/36pt#;    % vertical drop of sloped serifs
+stem_corr#:=.7/36pt#;    % for small refinements of stem breadth
+vair_corr#:=.5/36pt#;    % for small refinements of hairline height
+apex_corr#:=0pt#;    % extra width at diagonal junctions
+
+o#:=4/36pt#;      % amount of overshoot for curves
+apex_o#:=4/36pt#;    % amount of overshoot for diagonal junctions
+
+slant:=.25;      % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1;      % factor applied to weights of heavy characters
+math_spread:=1;      % 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:=1;      % 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:=true;    % should an italic-style g be used?
+low_asterisk:=false;    % should the asterisk be centered at the axis?
+math_fitting:=true;    % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=5/5;  % subscripts to 5pt will normally be in 5pt type
+rth#:=.4pt#;  % assume that rules will come from cmex10
+fontdimen 8:  % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#,      % num1
+ math_axis#+1.51rth#+3/36pt#,          % num2
+ math_axis#+1.51rth#+24/36pt#,          % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-63/36pt#),    % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-3/36pt#),    % denom2
+ 5.99pt#-subs*asc_height#,          % sup1
+ 5.49pt#-subs*asc_height#,          % sup2
+ 53/36pt#,              % sup3
+ 36/36pt#,              % sub1
+ 72/36pt#,              % sub2
+ subs*asc_height#-36/36pt#,          % sup\_drop
+ 18/36pt#,              % sub\_drop
+ 9.9pt#,              % delim1
+ 7.1pt#,              % delim2
+ math_axis#;              % axis\_height
+
+generate mathvec      % switch to the driver file
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mffilea>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mffileb>
+% Vector Symbols, from Computer Modern Math Symbols 6 point
+if unknown cmbase: input cmbase fi
+
+font_identifier:="VECT"; font_size 6pt#;
+
+u#:=14/36pt#;      % unit width
+width_adj#:=0pt#;    % width adjustment for certain characters
+serif_fit#:=0pt#;    % extra sidebar near lowercase serifs
+cap_serif_fit#:=2.8/36pt#;  % extra sidebar near uppercase serifs
+letter_fit#:=6/36pt#;    % extra space added to all sidebars
+
+body_height#:=162/36pt#;  % height of tallest characters
+asc_height#:=150/36pt#;    % height of lowercase ascenders
+cap_height#:=147.6/36pt#;  % height of caps
+fig_height#:=139.2/36pt#;  % height of numerals
+x_height#:=93/36pt#;    % height of lowercase without ascenders
+math_axis#:=54/36pt#;    % axis of symmetry for math symbols
+bar_height#:=52.2/36pt#;  % height of crossbar in lowercase e
+comma_depth#:=42/36pt#;    % depth of comma below baseline
+desc_depth#:=42/36pt#;    % depth of lowercase descenders
+
+crisp#:=6.5/36pt#;    % diameter of serif corners
+tiny#:=6.5/36pt#;    % diameter of rounded corners
+fine#:=6/36pt#;      % diameter of sharply rounded corners
+thin_join#:=6/36pt#;    % width of extrafine details
+hair#:=8/36pt#;      % lowercase hairline breadth
+stem#:=17.5/36pt#;    % lowercase stem breadth
+curve#:=20/36pt#;    % lowercase curve breadth
+ess#:=17/36pt#;      % breadth in middle of lowercase s
+flare#:=20.5/36pt#;    % diameter of bulbs or breadth of terminals
+dot_size#:=26/36pt#;    % diameter of dots
+cap_hair#:=8.5/36pt#;    % uppercase hairline breadth
+cap_stem#:=21/36pt#;    % uppercase stem breadth
+cap_curve#:=23.5/36pt#;    % uppercase curve breadth
+cap_ess#:=18.5/36pt#;    % breadth in middle of uppercase s
+rule_thickness#:=.31pt#;  % thickness of lines in math symbols
+
+dish#:=.8/36pt#;    % amount erased at top or bottom of serifs
+bracket#:=12/36pt#;    % vertical distance from serif base to tangent
+jut#:=19/36pt#;      % protrusion of lowercase serifs
+cap_jut#:=23/36pt#;    % protrusion of uppercase serifs
+beak_jut#:=6.8/36pt#;    % horizontal protrusion of beak serifs
+beak#:=42/36pt#;    % vertical protrusion of beak serifs
+vair#:=7/36pt#;      % vertical diameter of hairlines
+notch_cut#:=6pt#;    % maximum breadth above or below notches
+bar#:=8.5/36pt#;    % lowercase bar thickness
+slab#:=8.5/36pt#;    % serif and arm thickness
+cap_bar#:=8.5/36pt#;    % uppercase bar thickness
+cap_band#:=8.5/36pt#;    % uppercase thickness above/below lobes
+cap_notch_cut#:=6pt#;    % max breadth above/below uppercase notches
+serif_drop#:=2.4/36pt#;    % vertical drop of sloped serifs
+stem_corr#:=.8/36pt#;    % for small refinements of stem breadth
+vair_corr#:=.7/36pt#;    % for small refinements of hairline height
+apex_corr#:=0pt#;    % extra width at diagonal junctions
+
+o#:=4.5/36pt#;      % amount of overshoot for curves
+apex_o#:=4.5/36pt#;    % amount of overshoot for diagonal junctions
+
+slant:=.25;      % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1;      % factor applied to weights of heavy characters
+math_spread:=.8;    % 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:=true;    % should an italic-style g be used?
+low_asterisk:=false;    % should the asterisk be centered at the axis?
+math_fitting:=true;    % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=5/6;  % subscripts to 6pt will normally be in 5pt type
+rth#:=.4pt#;  % assume that rules will come from cmex10
+fontdimen 8:  % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#,      % num1
+ math_axis#+1.51rth#+9/36pt#,          % num2
+ math_axis#+1.51rth#+29/36pt#,          % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-74/36pt#),    % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-9/36pt#),    % denom2
+ 6.49pt#-subs*asc_height#,          % sup1
+ 5.99pt#-subs*asc_height#,          % sup2
+ 62/36pt#,              % sup3
+ 36/36pt#,              % sub1
+ 72/36pt#,              % sub2
+ subs*asc_height#-36/36pt#,          % sup\_drop
+ 18/36pt#,              % sub\_drop
+ 11.9pt#,              % delim1
+ 8.1pt#,              % delim2
+ math_axis#;              % axis\_height
+
+generate mathvec      % switch to the driver file
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mffileb>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mffilec>
+% Vector Symbols, from Computer Modern Math Symbols 7 point
+if unknown cmbase: input cmbase fi
+
+font_identifier:="VECT"; font_size 7pt#;
+
+u#:=15.5/36pt#;      % unit width
+width_adj#:=0pt#;    % width adjustment for certain characters
+serif_fit#:=0pt#;    % extra sidebar near lowercase serifs
+cap_serif_fit#:=3.5/36pt#;  % extra sidebar near uppercase serifs
+letter_fit#:=4/36pt#;    % extra space added to all sidebars
+
+body_height#:=189/36pt#;  % height of tallest characters
+asc_height#:=175/36pt#;    % height of lowercase ascenders
+cap_height#:=172.2/36pt#;  % height of caps
+fig_height#:=162.4/36pt#;  % height of numerals
+x_height#:=108.5/36pt#;    % height of lowercase without ascenders
+math_axis#:=63/36pt#;    % axis of symmetry for math symbols
+bar_height#:=60.9/36pt#;  % height of crossbar in lowercase e
+comma_depth#:=49/36pt#;    % depth of comma below baseline
+desc_depth#:=49/36pt#;    % depth of lowercase descenders
+
+crisp#:=7/36pt#;    % diameter of serif corners
+tiny#:=7/36pt#;      % diameter of rounded corners
+fine#:=6/36pt#;      % diameter of sharply rounded corners
+thin_join#:=6/36pt#;    % width of extrafine details
+hair#:=8.5/36pt#;    % lowercase hairline breadth
+stem#:=19.5/36pt#;    % lowercase stem breadth
+curve#:=22.5/36pt#;    % lowercase curve breadth
+ess#:=21/36pt#;      % breadth in middle of lowercase s
+flare#:=23.5/36pt#;    % diameter of bulbs or breadth of terminals
+dot_size#:=29/36pt#;    % diameter of dots
+cap_hair#:=9/36pt#;    % uppercase hairline breadth
+cap_stem#:=23.5/36pt#;    % uppercase stem breadth
+cap_curve#:=26.5/36pt#;    % uppercase curve breadth
+cap_ess#:=22.5/36pt#;    % breadth in middle of uppercase s
+rule_thickness#:=.34pt#;  % thickness of lines in math symbols
+
+dish#:=.9/36pt#;    % amount erased at top or bottom of serifs
+bracket#:=14/36pt#;    % vertical distance from serif base to tangent
+jut#:=21/36pt#;      % protrusion of lowercase serifs
+cap_jut#:=26/36pt#;    % protrusion of uppercase serifs
+beak_jut#:=7.6/36pt#;    % horizontal protrusion of beak serifs
+beak#:=49/36pt#;    % vertical protrusion of beak serifs
+vair#:=7/36pt#;      % vertical diameter of hairlines
+notch_cut#:=7pt#;    % maximum breadth above or below notches
+bar#:=9/36pt#;      % lowercase bar thickness
+slab#:=9/36pt#;      % serif and arm thickness
+cap_bar#:=9/36pt#;    % uppercase bar thickness
+cap_band#:=9/36pt#;    % uppercase thickness above/below lobes
+cap_notch_cut#:=7pt#;    % max breadth above/below uppercase notches
+serif_drop#:=2.8/36pt#;    % vertical drop of sloped serifs
+stem_corr#:=.9/36pt#;    % for small refinements of stem breadth
+vair_corr#:=.9/36pt#;    % for small refinements of hairline height
+apex_corr#:=0pt#;    % extra width at diagonal junctions
+
+o#:=5/36pt#;      % amount of overshoot for curves
+apex_o#:=5/36pt#;    % amount of overshoot for diagonal junctions
+
+slant:=.25;      % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1;      % factor applied to weights of heavy characters
+math_spread:=.6;    % 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:=true;    % should an italic-style g be used?
+low_asterisk:=false;    % should the asterisk be centered at the axis?
+math_fitting:=true;    % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=5/7;  % subscripts to 7pt will normally be in 5pt type
+rth#:=.4pt#;  % assume that rules will come from cmex10
+fontdimen 8:  % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#,      % num1
+ math_axis#+1.51rth#+12/36pt#,          % num2
+ math_axis#+1.51rth#+34/36pt#,          % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-86/36pt#),    % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-12/36pt#),    % denom2
+ 6.99pt#-subs*asc_height#,          % sup1
+ 6.49pt#-subs*asc_height#,          % sup2
+ 72/36pt#,              % sup3
+ 36/36pt#,              % sub1
+ 72/36pt#,              % sub2
+ subs*asc_height#-36/36pt#,          % sup\_drop
+ 18/36pt#,              % sub\_drop
+ 11.9pt#,              % delim1
+ 8.1pt#,              % delim2
+ math_axis#;              % axis\_height
+
+generate mathvec      % switch to the driver file
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mffilec>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mffiled>
+% Vector Symbols, from Computer Modern Math Symbols 8 point
+if unknown cmbase: input cmbase fi
+
+font_identifier:="VECT"; font_size 8pt#;
+
+u#:=17/36pt#;      % unit width
+width_adj#:=0pt#;    % width adjustment for certain characters
+serif_fit#:=0pt#;    % extra sidebar near lowercase serifs
+cap_serif_fit#:=4.1/36pt#;  % extra sidebar near uppercase serifs
+letter_fit#:=0pt#;    % extra space added to all sidebars
+
+body_height#:=216/36pt#;  % height of tallest characters
+asc_height#:=200/36pt#;    % height of lowercase ascenders
+cap_height#:=196.8/36pt#;  % height of caps
+fig_height#:=185.6/36pt#;  % height of numerals
+x_height#:=124/36pt#;    % height of lowercase without ascenders
+math_axis#:=72/36pt#;    % axis of symmetry for math symbols
+bar_height#:=69.6/36pt#;  % height of crossbar in lowercase e
+comma_depth#:=56/36pt#;    % depth of comma below baseline
+desc_depth#:=56/36pt#;    % depth of lowercase descenders
+
+crisp#:=8/36pt#;    % 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#:=21.5/36pt#;    % lowercase stem breadth
+curve#:=25/36pt#;    % lowercase curve breadth
+ess#:=23/36pt#;      % breadth in middle of lowercase s
+flare#:=26.5/36pt#;    % diameter of bulbs or breadth of terminals
+dot_size#:=32/36pt#;    % diameter of dots
+cap_hair#:=9.5/36pt#;    % uppercase hairline breadth
+cap_stem#:=25.5/36pt#;    % uppercase stem breadth
+cap_curve#:=29/36pt#;    % uppercase curve breadth
+cap_ess#:=26/36pt#;    % breadth in middle of uppercase s
+rule_thickness#:=.36pt#;  % thickness of lines in math symbols
+
+dish#:=1/36pt#;      % amount erased at top or bottom of serifs
+bracket#:=16/36pt#;    % vertical distance from serif base to tangent
+jut#:=24/36pt#;      % protrusion of lowercase serifs
+cap_jut#:=29/36pt#;    % protrusion of uppercase serifs
+beak_jut#:=8.4/36pt#;    % horizontal protrusion of beak serifs
+beak#:=56/36pt#;    % vertical protrusion of beak serifs
+vair#:=8/36pt#;      % vertical diameter of hairlines
+notch_cut#:=8pt#;    % maximum breadth above or below notches
+bar#:=9.5/36pt#;    % lowercase bar thickness
+slab#:=9.5/36pt#;    % serif and arm thickness
+cap_bar#:=9.5/36pt#;    % uppercase bar thickness
+cap_band#:=9.5/36pt#;    % uppercase thickness above/below lobes
+cap_notch_cut#:=8pt#;    % max breadth above/below uppercase notches
+serif_drop#:=3.2/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#:=6/36pt#;      % amount of overshoot for curves
+apex_o#:=6/36pt#;    % amount of overshoot for diagonal junctions
+
+slant:=.25;      % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1;      % factor applied to weights of heavy characters
+math_spread:=.4;    % 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:=true;    % should an italic-style g be used?
+low_asterisk:=false;    % should the asterisk be centered at the axis?
+math_fitting:=true;    % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/8;  % subscripts to 8pt will normally be in 6pt type
+rth#:=.4pt#;  % assume that rules will come from cmex10
+fontdimen 8:  % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#,      % num1
+ math_axis#+1.51rth#+24/36pt#,          % num2
+ math_axis#+1.51rth#+38/36pt#,          % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-98/36pt#),    % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-24/36pt#),    % denom2
+ 7.49pt#-subs*asc_height#,          % sup1
+ 6.99pt#-subs*asc_height#,          % sup2
+ 82/36pt#,              % sup3
+ 36/36pt#,              % sub1
+ 72/36pt#,              % sub2
+ subs*asc_height#-36/36pt#,          % sup\_drop
+ 18/36pt#,              % sub\_drop
+ 11.9pt#,              % delim1
+ 9.1pt#,              % delim2
+ math_axis#;              % axis\_height
+
+generate mathvec      % switch to the driver file
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mffiled>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mffilee>
+% Vector Symbols, from Computer Modern Math Symbols 9 point
+if unknown cmbase: input cmbase fi
+
+font_identifier:="VECT"; font_size 9pt#;
+
+u#:=18.5/36pt#;      % unit width
+width_adj#:=0pt#;    % width adjustment for certain characters
+serif_fit#:=0pt#;    % extra sidebar near lowercase serifs
+cap_serif_fit#:=4.6/36pt#;  % extra sidebar near uppercase serifs
+letter_fit#:=0pt#;    % extra space added to all sidebars
+
+body_height#:=243/36pt#;  % height of tallest characters
+asc_height#:=225/36pt#;    % height of lowercase ascenders
+cap_height#:=221.4/36pt#;  % height of caps
+fig_height#:=208.8/36pt#;  % height of numerals
+x_height#:=139.5/36pt#;    % height of lowercase without ascenders
+math_axis#:=81/36pt#;    % axis of symmetry for math symbols
+bar_height#:=78.3/36pt#;  % height of crossbar in lowercase e
+comma_depth#:=63/36pt#;    % depth of comma below baseline
+desc_depth#:=63/36pt#;    % depth of lowercase descenders
+
+crisp#:=8/36pt#;    % 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#:=23/36pt#;    % lowercase stem breadth
+curve#:=27/36pt#;    % lowercase curve breadth
+ess#:=25/36pt#;      % breadth in middle of lowercase s
+flare#:=29/36pt#;    % diameter of bulbs or breadth of terminals
+dot_size#:=35/36pt#;    % diameter of dots
+cap_hair#:=10/36pt#;    % uppercase hairline breadth
+cap_stem#:=28/36pt#;    % uppercase stem breadth
+cap_curve#:=32/36pt#;    % uppercase curve breadth
+cap_ess#:=30/36pt#;    % breadth in middle of uppercase s
+rule_thickness#:=.38pt#;  % thickness of lines in math symbols
+
+dish#:=1/36pt#;      % amount erased at top or bottom of serifs
+bracket#:=18/36pt#;    % vertical distance from serif base to tangent
+jut#:=27/36pt#;      % protrusion of lowercase serifs
+cap_jut#:=33/36pt#;    % protrusion of uppercase serifs
+beak_jut#:=9.2/36pt#;    % horizontal protrusion of beak serifs
+beak#:=63/36pt#;    % vertical protrusion of beak serifs
+vair#:=8/36pt#;      % vertical diameter of hairlines
+notch_cut#:=9pt#;    % maximum breadth above or below notches
+bar#:=10/36pt#;      % lowercase bar thickness
+slab#:=10/36pt#;    % serif and arm thickness
+cap_bar#:=10/36pt#;    % uppercase bar thickness
+cap_band#:=10/36pt#;    % uppercase thickness above/below lobes
+cap_notch_cut#:=9pt#;    % max breadth above/below uppercase notches
+serif_drop#:=3.6/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#:=7/36pt#;      % amount of overshoot for curves
+apex_o#:=7/36pt#;    % amount of overshoot for diagonal junctions
+
+slant:=.25;      % tilt ratio $(\Delta x/\Delta y)$
+fudge:=1;      % factor applied to weights of heavy characters
+math_spread:=.2;    % 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:=true;    % should an italic-style g be used?
+low_asterisk:=false;    % should the asterisk be centered at the axis?
+math_fitting:=true;    % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=6/9;  % subscripts to 9pt will normally be in 6pt type
+rth#:=.4pt#;  % assume that rules will come from cmex10
+fontdimen 8:  % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+36/36pt#+subs*desc_depth#,      % num1
+ math_axis#+1.51rth#+30/36pt#,          % num2
+ math_axis#+1.51rth#+43/36pt#,          % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-111/36pt#),    % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-30/36pt#),    % denom2
+ 8.49pt#-subs*asc_height#,          % sup1
+ 7.99pt#-subs*asc_height#,          % sup2
+ 93/36pt#,              % sup3
+ 36/36pt#,              % sub1
+ -(7.99pt#-2subs*asc_height#-3.1rth#),        % sub2
+ subs*asc_height#-36/36pt#,          % sup\_drop
+ 18/36pt#,              % sub\_drop
+ 23.9pt#,              % delim1
+ 9.1pt#,              % delim2
+ math_axis#;              % axis\_height
+
+generate mathvec      % switch to the driver file
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mffilee>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mffilef>
+% Vector symbols, from Computer Modern Math Symbols 10 point
+if unknown cmbase: input cmbase fi
+
+font_identifier:="VECT"; font_size 10pt#;
+
+u#:=20/36pt#;      % unit width
+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#:=8/36pt#;    % 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#:=24/36pt#;    % lowercase stem breadth
+curve#:=29/36pt#;    % lowercase curve breadth
+ess#:=27/36pt#;      % breadth in middle of lowercase s
+flare#:=32/36pt#;    % diameter of bulbs or breadth of terminals
+dot_size#:=38/36pt#;    % diameter of dots
+cap_hair#:=11/36pt#;    % uppercase hairline breadth
+cap_stem#:=30/36pt#;    % uppercase stem breadth
+cap_curve#:=35/36pt#;    % uppercase curve breadth
+cap_ess#:=33/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#:=30/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#;      % amount of overshoot for curves
+apex_o#:=8/36pt#;    % amount of overshoot for diagonal junctions
+
+slant:=.25;      % 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:=true;    % should an italic-style g be used?
+low_asterisk:=false;    % should the asterisk be centered at the axis?
+math_fitting:=true;    % should math-mode spacing be used?
+
+% the following font parameters are explained in {\sl The \TeX book}, Appendix G
+subs:=7/10;  % subscripts to 10pt will normally be in 7pt type
+rth#:=.4pt#;  % assume that rules will come from cmex10
+fontdimen 8:  % parameters $\sigma_8$ through $\sigma_{22}$ will now be listed
+ math_axis#+3.51rth#+54/36pt#+subs*desc_depth#,      % num1
+ math_axis#+1.51rth#+30/36pt#,          % num2
+ math_axis#+1.51rth#+48/36pt#,          % num3
+ -(math_axis#-3.51rth#-subs*fig_height#-124/36pt#),    % denom1
+ -(math_axis#-1.51rth#-subs*fig_height#-30/36pt#),    % denom2
+ 8.99pt#-subs*asc_height#,          % sup1
+ 8.49pt#-subs*asc_height#,          % sup2
+ 104/36pt#,              % sup3
+ 54/36pt#,              % sub1
+ -(8.49pt#-2subs*asc_height#-3.1rth#),        % sub2
+ subs*asc_height#-36/36pt#,          % sup\_drop
+ 18/36pt#,              % sub\_drop
+ 23.9pt#,              % delim1
+ 10.1pt#,              % delim2
+ math_axis#;              % axis\_height
+
+generate mathvec      % switch to the driver file
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mffilef>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mfmath>
+% Parameters from The Computer Modern Symbols family (by D. E. Knuth, 1979--1985)
+
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+autorounding:=0;
+
+font_slant slant; font_x_height x_height#;
+font_quad 18u# if not monospace:+4letter_fit# fi;
+% (The spacing is zero so that \TeX\ will always add the italic correction.)
+% (The calling file should give the other math symbol font parameters.)
+
+slant:=mono_charic#:=0;  % the remaining characters will not be slanted
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+input vsymbol;  % the symbols
+
+bye.
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mfmath>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mfsymbol>
+% D\'efinition des caract\`eres
+% Character codes \0000--\014, \0020--\0034 and \0040--\0057 are generated.
+
+% Italic corrections have not been computed for most of these characters,
+% since they are generally not slanted.
+
+% Fl\`eches longues
+
+r_arrow1=oct"000";
+r_arrow2=oct"001";
+r_arrow3=oct"002";
+r_arrow4=oct"003";
+r_arrow5=oct"004";
+r_arrow6=oct"005";
+r_arrow7=oct"006";
+r_arrow8=oct"007";
+r_arrow9=oct"010";
+r_arrow10=oct"011";
+r_arrow11=oct"012";
+r_arrow12=oct"013";
+r_arrow13=oct"014";
+
+% Fl\`eches courtes
+
+r_arrow21=oct"020";
+r_arrow22=oct"021";
+r_arrow23=oct"022";
+r_arrow24=oct"023";
+r_arrow25=oct"024";
+r_arrow26=oct"025";
+r_arrow27=oct"026";
+r_arrow28=oct"027";
+r_arrow29=oct"030";
+r_arrow30=oct"031";
+r_arrow31=oct"032";
+r_arrow32=oct"033";
+r_arrow33=oct"034";
+
+% Traits
+
+trait01=oct"040";
+trait02=oct"041";
+trait03=oct"042";
+trait04=oct"043";
+trait05=oct"044";
+trait06=oct"045";
+trait07=oct"046";
+trait08=oct"047";
+
+% Traits avec extr\'emit\'es
+
+traittest01=oct"050";
+traittest02=oct"051";
+traittest03=oct"052";
+traittest04=oct"053";
+traittest05=oct"054";
+traittest06=oct"055";
+traittest07=oct"056";
+traittest08=oct"057";
+
+input vecsym;  % Les symboles
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mfsymbol>
+%    \end{macrocode}
+%    \begin{macrocode}
+%<*mfvecsym>
+% This file generates the following characters when their codes are known:
+% |right_arrow|.
+
+
+iff known r_arrow1: cmchar "Dessin original";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow1,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;%crisp -> fine pour tester
+pos1(rule_thickness,90); pos2(rule_thickness,90);%Trait horizontal
+pos3(rule_thickness,0); pos4(rule_thickness,0);%Extr\'emit\'e fl\`eche
+y0=y1=y2=math_axis;%Axe horizontal
+x1-.5rule_thickness=eps;%Extr\'emit\'e gauche
+rt x0=hround(w)-eps;%Extr\'emit\'e droite
+y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;%largeur
+%fl\`eche
+x3=x4=x0-if monospace:3u else:4u fi-eps;%longueur fl\`eche
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;%Pointe inf\'erieure fl\`eche
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;%Pointe sup\'erieure fl\`eche
+z9=.2[.5[z3,z4],z0];%tangente extr\'emit\'es
+numeric t; path p; p=z4l{z9-z4}..z6r;%Courbe fl\`eche
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));%Intersection
+%courbe avec ligne horizontale inf\'erieure
+x2=xpart point t of p;%Abscisse de cette intersection
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known r_arrow5: cmchar "Fl\`eche grande";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow5,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.5u+eps;
+x3=x4=x0-4.5u-eps;
+z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z9;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z9)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z9)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,9); endchar;
+
+iff known r_arrow3: cmchar "Fl\`eche normale";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow3,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.1u+eps;
+x3=x4=x0-3.8u-eps;
+z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z9;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z9)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z9)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,9); endchar;
+
+iff known r_arrow6: cmchar "Fl\`eche \'etroite";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow6,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=1.5u+eps;
+x3=x4=x0-4.5u-eps;
+z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z9;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z9)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z9)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,9); endchar;
+
+iff known r_arrow8: cmchar "Fleche droite";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow8,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,-90);
+pos3(hair,0); pos6(hair,0);
+pos4(rule_thickness,0); pos5(rule_thickness,0);
+y1=y2=math_axis; x1-.5rule_thickness=eps; rt x2=hround(w-2u);
+y3-y1=y1-y6=2.2u+eps;
+x3=x6=x2-3.5u-eps;
+x4=x5=hround(w)-0.4rule_thickness;
+y4-y1=y1-y5=.2hair;
+filldraw z2l{dir 165}...{z3-z2}z3l--z3r{z4-z3}...
+z4--z5...{z6-z5}z6r--z6l{z2-z6}...{dir 15}z2r---z1l..z1r---z2l & cycle;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known r_arrow2: cmchar "cmsy plus \'etroit";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow2,18u#,v_center(spread#+rule_thickness#));%18u->12u
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis;%Axe horizontal
+x1-.5rule_thickness=eps;%Extr\'emit\'e gauche
+rt x0=hround(w)-eps;%Extr\'emit\'e droite
+y3-y0=y0-y4=if monospace:.16 else:.22 fi asc_height+eps;%largeur
+%fl\`eche
+x3=x4=x0-if monospace:4u else:4u fi-eps;%longueur fl\`eche
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;%Pointe inf\'erieure fl\`eche
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;%Pointe sup\'erieure fl\`eche
+z9=.5[.5[z3,z4],z0];%tangente extr\'emit\'es
+numeric t; path p; p=z4l{z9-z4}..z6r;%Courbe fl\`eche
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));%Intersection
+%courbe avec ligne horizontale inf\'erieure
+x2=xpart point t of p;%Abscisse de cette intersection
+filldraw z0--z5..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z6--z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known r_arrow4: cmchar "Triangle";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow4,18u#,v_center(spread#+rule_thickness#));%18u->12u
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.1u+eps;
+x3=x4=x0-3.8u-eps;
+%z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z3;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z3)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z4)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4); endchar;
+
+iff known r_arrow9: cmchar "Triangle pench\'e";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow9,18u#,v_center(spread#+rule_thickness#));%18u->12u
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,76);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.1u+eps;
+x2=hround(w-4u);
+x3=.25(y3-y2)+x2-eps;
+x4=-.25(y2-y4)+x2-eps;
+filldraw z0..z3--z2r---z1r..z1l---z2l--z4..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4); endchar;
+
+iff known r_arrow7: cmchar "Harpon";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow7,18u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,-90);
+pos3(hair,0); pos6(hair,0);
+pos4(rule_thickness,0); pos5(rule_thickness,0);
+y1=y2=math_axis; x1-.5rule_thickness=eps; rt x2=hround(w-2u);
+y3-y1=y1-y6=2.5u+eps;
+x3=x6=x2-2u-eps;
+x4=x5=hround(w)-0.4rule_thickness;
+y4-y1=y1-y5=.2hair;
+filldraw z2l{dir 175}...{dir 110}z3l--z3r{dir -60}...{dir
+-5}z4--z5{dir 185}...{dir -120}z6r--z6l{dir 70}...{dir
+5}z2r---z1l..z1r---z2l & cycle;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%          Version plus \'etroite
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+iff known r_arrow21: cmchar "Dessin original";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow21,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;%crisp -> fine pour tester
+pos1(rule_thickness,90); pos2(rule_thickness,90);%Trait horizontal
+pos3(rule_thickness,0); pos4(rule_thickness,0);%Extr\'emit\'e fl\`eche
+y0=y1=y2=math_axis;%Axe horizontal
+x1-.5rule_thickness=eps;%Extr\'emit\'e gauche
+rt x0=hround(w-u);%Extr\'emit\'e droite
+y3-y0=y0-y4=if monospace:.24 else:.36 fi asc_height+eps;%largeur
+%fl\`eche
+x3=x4=x0-if monospace:3u else:4u fi-eps;%longueur fl\`eche
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;%Pointe inf\'erieure fl\`eche
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;%Pointe sup\'erieure fl\`eche
+z9=.2[.5[z3,z4],z0];%tangente extr\'emit\'es
+numeric t; path p; p=z4l{z9-z4}..z6r;%Courbe fl\`eche
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));%Intersection
+%courbe avec ligne horizontale inf\'erieure
+x2=xpart point t of p;%Abscisse de cette intersection
+filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known r_arrow25: cmchar "Fl\`eche grande";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow25,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.5u+eps;
+x3=x4=x0-4.5u-eps;
+z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z9;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z9)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z9)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,9); endchar;
+
+iff known r_arrow23: cmchar "Fl\`eche normale";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow23,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.1u+eps;
+x3=x4=x0-3.8u-eps;
+z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z9;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z9)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z9)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,9); endchar;
+
+iff known r_arrow26: cmchar "Fl\`eche \'etroite";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow26,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=1.5u+eps;
+x3=x4=x0-4.5u-eps;
+z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z9;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z9)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z9)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,9); endchar;
+
+iff known r_arrow28: cmchar "Fl\`eche droite";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow28,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,-90);
+pos3(hair,0); pos6(hair,0);
+pos4(rule_thickness,0); pos5(rule_thickness,0);
+y1=y2=math_axis; x1-.5rule_thickness=eps; rt x2=hround(w-2u);
+y3-y1=y1-y6=2.2u+eps;
+x3=x6=x2-3.5u-eps;
+x4=x5=hround(w)-0.4rule_thickness;
+y4-y1=y1-y5=.2hair;
+filldraw z2l{dir 165}...{z3-z2}z3l--z3r{z4-z3}...
+z4--z5...{z6-z5}z6r--z6l{z2-z6}...{dir 15}z2r---z1l..z1r---z2l & cycle;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known r_arrow22: cmchar "cmsy plus \'etroit";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow22,10u#,v_center(spread#+rule_thickness#));%18u->12u
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis;%Axe horizontal
+x1-.5rule_thickness=eps;%Extr\'emit\'e gauche
+rt x0=hround(w)-eps;%Extr\'emit\'e droite
+y3-y0=y0-y4=if monospace:.16 else:.22 fi asc_height+eps;%largeur
+%fl\`eche
+x3=x4=x0-if monospace:4u else:4u fi-eps;%longueur fl\`eche
+pos5(rule_thickness,angle(z4-z0)); z5l=z0;%Pointe inf\'erieure fl\`eche
+pos6(rule_thickness,angle(z3-z0)); z6l=z0;%Pointe sup\'erieure fl\`eche
+z9=.5[.5[z3,z4],z0];%tangente extr\'emit\'es
+numeric t; path p; p=z4l{z9-z4}..z6r;%Courbe fl\`eche
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));%Intersection
+%courbe avec ligne horizontale inf\'erieure
+x2=xpart point t of p;%Abscisse de cette intersection
+filldraw z0--z5..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z6--z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4,5,6,9); endchar;
+
+iff known r_arrow24: cmchar "Triangle";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow24,10u#,v_center(spread#+rule_thickness#));%18u->12u
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,90);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.1u+eps;
+x3=x4=x0-3.8u-eps;
+%z9=.35[.5[z3,z4],z0];
+numeric t; path p; p=z4..z3;
+t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+filldraw z0..z4--subpath (0,t) of\\(z4..z3)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3..z4)
+ --z3..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4); endchar;
+
+iff known r_arrow29: cmchar "Triangle pench\'e";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow29,10u#,v_center(spread#+rule_thickness#));%18u->12u
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,76);
+pos3(rule_thickness,0); pos4(rule_thickness,0);
+y0=y1=y2=math_axis; x1-.5rule_thickness=eps; rt x0=hround(w)-eps;
+y3-y0=y0-y4=2.1u+eps;
+x2=hround(w-4u);
+x3=.25(y3-y2)+x2-eps;
+x4=-.25(y2-y4)+x2-eps;
+filldraw z0..z3--z2r---z1r..z1l---z2l--z4..z0 & cycle;  % arrowhead and stem
+penlabels(0,1,2,3,4); endchar;
+
+iff known r_arrow27: cmchar "Harpon";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(r_arrow27,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup fine.nib;
+pos1(rule_thickness,90); pos2(rule_thickness,-90);
+pos3(hair,0); pos6(hair,0);
+pos4(rule_thickness,0); pos5(rule_thickness,0);
+y1=y2=math_axis; x1-.5rule_thickness=eps; rt x2=hround(w-2u);
+y3-y1=y1-y6=2.5u+eps;
+x3=x6=x2-2u-eps;
+x4=x5=hround(w)-0.4rule_thickness;
+y4-y1=y1-y5=.2hair;
+filldraw z2l{dir 175}...{dir 110}z3l--z3r{dir -60}...{dir
+-5}z4--z5{dir 185}...{dir -120}z6r--z6l{dir 70}...{dir
+5}z2r---z1l..z1r---z2l & cycle;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%% Trait pour remplissage
+
+iff known trait01: cmchar "trait 3u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait01,3u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+
+iff known trait02: cmchar "trait 4u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait02,4u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+
+iff known trait03: cmchar "trait 5u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait03,5u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+
+iff known trait04: cmchar "trait 6u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait04,6u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+
+iff known trait05: cmchar "trait 7u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait05,7u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+
+iff known trait06: cmchar "trait 8u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait06,8u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+
+iff known trait07: cmchar "trait 9u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait07,9u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+
+iff known trait08: cmchar "trait 10u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(trait08,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+draw z1--z2;
+penlabels(1,2);
+endchar;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \`a virer traits pour tester
+
+iff known traittest01: cmchar "traittest 3u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest01,3u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known traittest02: cmchar "traittest 4u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest02,4u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known traittest03: cmchar "traittest 5u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest03,5u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known traittest04: cmchar "traittest 6u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest04,6u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known traittest05: cmchar "traittest 7u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest05,7u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known traittest06: cmchar "traittest 8u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest06,8u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known traittest07: cmchar "traittest 9u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest07,9u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+
+iff known traittest08: cmchar "traittest 10u";
+compute_spread(.45x_height#,.55x_height#);
+beginchar(traittest08,10u#,v_center(spread#+rule_thickness#));
+adjust_fit(0,0); pickup rule.nib;
+x1=eps;
+x2=w-eps;
+y1=y2=math_axis;
+x3=x4=x1;
+y3-y1=y1-y4=1.5u;
+x5=x6=x2;
+y5-y2=y2-y6=1.5u;
+draw z1--z2;
+draw z3--z4;
+draw z5--z6;
+penlabels(1,2,3,4,5,6);
+endchar;
+%    \end{macrocode}
+%    \begin{macrocode}
+%</mfvecsym>
+%    \end{macrocode}
+%\Finale
-- 
cgit v1.2.3

