From 9cf78ef142c16ed31ea32b267e8c328ea5e6dcc0 Mon Sep 17 00:00:00 2001 From: Karl Berry 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} +% +%\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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \end{macrocode} +%\Finale -- cgit v1.2.3