summaryrefslogtreecommitdiff
path: root/macros/generic/diagrams/kuvio/arrsy
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/generic/diagrams/kuvio/arrsy
Initial commit
Diffstat (limited to 'macros/generic/diagrams/kuvio/arrsy')
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/Makefile-dist50
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/README40
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/Uarrsy.fd8
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/arrsy.mf116
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/arrsy.sty137
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/arrsy.tex133
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/arrsy10.mf45
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/arrsym.mf477
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/patchlevel_191
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/symbols.ps264
-rw-r--r--macros/generic/diagrams/kuvio/arrsy/symbols.tex43
11 files changed, 1314 insertions, 0 deletions
diff --git a/macros/generic/diagrams/kuvio/arrsy/Makefile-dist b/macros/generic/diagrams/kuvio/arrsy/Makefile-dist
new file mode 100644
index 0000000000..2c72b4f8fe
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/Makefile-dist
@@ -0,0 +1,50 @@
+# Anders G S Svensson
+# $Date: 1994/11/24 01:39:37 $
+# $Revision: 1.5 $
+
+# Installation directories.
+
+DESTDIR = /usr/local/lib
+
+# pk files go here.
+#
+PKDEST = $(DESTDIR)/tex/fonts/pk
+
+# tfm files go here.
+#
+TFMDEST = $(DESTDIR)/tex/fonts/tfm
+
+# mf files go here.
+#
+MFDEST = $(DESTDIR)/mf/inputs
+
+# tex files go here.
+#
+TEXDEST = $(DESTDIR)/tex/inputs
+
+##################################################
+
+INSTALL = install -c -m 644
+
+MFSOURCES = arrsy.mf arrsy10.mf arrsym.mf
+TEXSOURCES = arrsy.tex
+
+all:
+ make MFINPUTS=.:$(MFINPUTS) GFFONTS=. pk
+
+pk:
+ mf "\mode=localfont; input arrsy10"
+ @for file in *gf; do gftopk ./$$file; done
+
+install: install-src install-fonts
+
+install-src:
+ $(INSTALL) $(MFSOURCES) $(MFDEST)
+ $(INSTALL) $(TEXSOURCES) $(TEXDEST)
+
+install-fonts:
+ $(INSTALL) arrsy10.tfm $(TFMDEST)
+ $(INSTALL) arrsy10.*pk $(PKDEST)
+
+clean:
+ rm -f arrsy10.tfm arrsy10.*pk arrsy10.*gf *.log
diff --git a/macros/generic/diagrams/kuvio/arrsy/README b/macros/generic/diagrams/kuvio/arrsy/README
new file mode 100644
index 0000000000..ecb59c42a2
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/README
@@ -0,0 +1,40 @@
+02 Dec 1995
+
+Added the files arrsy.sty and Uarrsy.fd for LaTeX. The fonts themselves are
+unchanged.
+
+%-----------------------------------------------------------------------------
+31 Mar 1995
+
+Added \cupp and \capp for cup and cap products (smaller than the smile and
+frown found in the msam font).
+
+------------------------------------------------------------------------------
+22 Nov 1994
+
+Here's a small font I put together, mainly for a few characters I wanted to
+use with my diagram macros, kuvio.tex. The font also contains reproductions
+of a few arrows from the pre-1992 versions of cmsy10 and cmmi10. (The
+arrowheads were made wider in '92, a change for the worse in my opinion.)
+There are probably only three characters in arrsy10 which people not
+using kuvio.tex may find useful: \of for function composition (smaller that
+the massive \circ), \vect for vectors (\vec doesn't do it for me) and
+\dotp for dot products (heavier than \cdot, lighter than \bullet). Who knows,
+versions of these may already exist somewhere else but here are mine.
+
+On a Unix box, you can install the font as follows.
+
+ 1. Copy Makefile-dist to Makefile and then edit this file, setting the
+ variables DESTDIR, PKDEST, TFMDEST, MFDEST and TEXDDEST appropriately.
+
+ 2. Do "make". If you don't have MFINPUTS set you should do
+ "make MFINPUTS=<path>" instead, where <path> is a path in which the file
+ cmbase.mf can be found (usually something like /usr/local/lib/mf/inputs).
+ If all goes well you should get one tfm file and one pk file and you can
+ then do "make install".
+
+ 3. Do "make clean" to clean up.
+
+If none of this works for you, mail me.
+
+Anders Svensson <svensson@math.ubc.ca>
diff --git a/macros/generic/diagrams/kuvio/arrsy/Uarrsy.fd b/macros/generic/diagrams/kuvio/arrsy/Uarrsy.fd
new file mode 100644
index 0000000000..57a40fafb8
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/Uarrsy.fd
@@ -0,0 +1,8 @@
+% Uarrsy.fd
+% Anders G S Svensson
+
+\ProvidesFile{Uarrsy.fd}[1995/12/02]
+
+\DeclareFontFamily{U}{arrsy}{}
+\DeclareFontShape{U}{arrsy}{m}{n}{ <5> <6> <7> <8> <9> <10>
+ <10.95> <12> <14.4> <17.28> <20.74> <24.88> arrsy10 }{}
diff --git a/macros/generic/diagrams/kuvio/arrsy/arrsy.mf b/macros/generic/diagrams/kuvio/arrsy/arrsy.mf
new file mode 100644
index 0000000000..d48792b9f8
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/arrsy.mf
@@ -0,0 +1,116 @@
+% arrsy.mf
+% Anders G S Svensson
+% $Date: 1993/08/29 06:19:19 $
+% $Revision: 1.1 $
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Computer Modern parameters from cmsy10.mf
+%%
+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?
+
+% 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
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Modified from mathsy.mf
+%%
+font_coding_scheme:="TeX math symbols";
+mode_setup; font_setup;
+
+slant:=mono_charic#:=0; % Symbols shouldn't be slanted.
+
+font_slant slant;
+font_x_height x_height#;
+font_quad 18u#;
+
+currenttransform:=identity yscaled aspect_ratio scaled granularity;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/generic/diagrams/kuvio/arrsy/arrsy.sty b/macros/generic/diagrams/kuvio/arrsy/arrsy.sty
new file mode 100644
index 0000000000..1a9df06107
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/arrsy.sty
@@ -0,0 +1,137 @@
+% arrsy.sty
+% Anders G S Svensson
+% $Date: 1995/12/27 12:25:18 $
+% $Revision: 1.1 $
+
+\def\Revision@$#1 #2 ${v#2}
+\def\Date@$#1 #2 #3 ${#2}
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{arrsy}%
+ [\Date@$Date: 1995/12/27 12:25:18 $ \Revision@$Revision: 1.1 $]
+
+\DeclareOption{cmarrows}{\AtEndOfPackage{\cmarrows}}
+\ProcessOptions\relax
+
+\DeclareSymbolFont{Arrsy}{U}{arrsy}{m}{n}
+
+\let\cmrightarrow\rightarrow
+\let\cmleftarrow\leftarrow
+\let\cmleftrightarrow\leftrightarrow
+\let\cmleftharpoonup\leftharpoonup
+\let\cmleftharpoondown\leftharpoondown
+\let\cmrightharpoonup\rightharpoonup
+\let\cmrightharpoondown\rightharpoondown
+
+\DeclareMathSymbol{\A@Rightharpoonup}{\mathrel}{Arrsy}{"00}
+\DeclareMathSymbol{\A@Leftharpoondown}{\mathrel}{Arrsy}{"01}
+\DeclareMathSymbol{\A@Upharpoonleft}{\mathrel}{Arrsy}{"02}
+\DeclareMathSymbol{\A@Downharpoonright}{\mathrel}{Arrsy}{"03}
+\DeclareMathSymbol{\A@Rightharpoondown}{\mathrel}{Arrsy}{"04}
+\DeclareMathSymbol{\A@Leftharpoonup}{\mathrel}{Arrsy}{"05}
+\DeclareMathSymbol{\A@Upharpoonright}{\mathrel}{Arrsy}{"06}
+\DeclareMathSymbol{\A@Downharpoonleft}{\mathrel}{Arrsy}{"07}
+\DeclareMathSymbol{\A@Rrightarrow}{\mathrel}{Arrsy}{"08}
+\DeclareMathSymbol{\A@Lleftarrow}{\mathrel}{Arrsy}{"09}
+\DeclareMathSymbol{\A@Rrelbar}{\mathrel}{Arrsy}{"0A}
+\DeclareMathSymbol{\A@dashbar}{\mathrel}{Arrsy}{"0B}
+\DeclareMathSymbol{\A@shortrightarrow}{\mathrel}{Arrsy}{"0C}
+\DeclareMathSymbol{\A@shortleftarrow}{\mathrel}{Arrsy}{"0D}
+\DeclareMathSymbol{\A@rightmonotail}{\mathrel}{Arrsy}{"0E}
+\DeclareMathSymbol{\A@leftmonotail}{\mathrel}{Arrsy}{"0F}
+\DeclareMathSymbol{\A@squiggle}{\mathrel}{Arrsy}{"10}
+\DeclareMathSymbol{\A@rightarrow}{\mathrel}{Arrsy}{"11}
+\DeclareMathSymbol{\A@leftarrow}{\mathrel}{Arrsy}{"12}
+\DeclareMathSymbol{\A@leftrightarrow}{\mathrel}{Arrsy}{"13}
+\DeclareMathSymbol{\A@leftharpoonup}{\mathrel}{Arrsy}{"14}
+\DeclareMathSymbol{\A@leftharpoondown}{\mathrel}{Arrsy}{"15}
+\DeclareMathSymbol{\A@rightharpoonup}{\mathrel}{Arrsy}{"16}
+\DeclareMathSymbol{\A@rightharpoondown}{\mathrel}{Arrsy}{"17}
+
+\let\Rightharpoonup\A@Rightharpoonup
+\let\Leftharpoondown\A@Leftharpoondown
+\let\Upharpoonleft\A@Upharpoonleft
+\let\Downharpoonright\A@Downharpoonright
+\let\Rightharpoondown\A@Rightharpoondown
+\let\Leftharpoonup\A@Leftharpoonup
+\let\Upharpoonright\A@Upharpoonright
+\let\Downharpoonleft\A@Downharpoonleft
+\let\Rrightarrow\A@Rrightarrow
+\let\Lleftarrow\A@Lleftarrow
+\let\Rrelbar\A@Rrelbar
+\let\dashbar\A@dashbar
+\let\shortrightarrow\A@shortrightarrow
+\let\shortleftarrow\A@shortleftarrow
+\let\rightmonotail\A@rightmonotail
+\let\leftmonotail\A@leftmonotail
+\let\squiggle\A@squiggle
+\let\rightarrow\A@rightarrow
+\let\leftarrow\A@leftarrow
+\let\leftrightarrow\A@leftrightarrow
+\let\leftharpoonup\A@leftharpoonup
+\let\leftharpoondown\A@leftharpoondown
+\let\rightharpoonup\A@rightharpoonup
+\let\rightharpoondown\A@rightharpoondown
+
+\DeclareMathAccent{\vect}{\mathord}{Arrsy}{"18}
+\DeclareMathSymbol{\comp}{\mathrel}{Arrsy}{"19}
+\DeclareMathSymbol{\dotp}{\mathrel}{Arrsy}{"1A}
+\DeclareMathSymbol{\cupp}{\mathrel}{Arrsy}{"1B}
+\DeclareMathSymbol{\capp}{\mathrel}{Arrsy}{"1C}
+
+\let\of\comp
+
+\let\gets\leftarrow
+\let\to\rightarrow
+
+\def\cmarrows{\let\leftrightarrow\cmleftrightarrow
+ \let\rightarrow\cmrightarrow\let\leftarrow\cmleftarrow
+ \let\gets\leftarrow\let\to\rightarrow
+ \let\leftharpoonup\cmleftharpoonup
+ \let\leftharpoondown\cmleftharpoondown
+ \let\rightharpoonup\cmrightharpoonup
+ \let\rightharpoondown\cmrightharpoondown}
+
+\def\rightepi{\A@rightarrow\mkern-13mu\A@shortrightarrow\mkern3mu}
+\let\epito\rightepi
+\def\leftepi{\A@leftarrow\mkern-15mu\A@shortleftarrow\mkern5mu}
+\let\A@rightepi\rightepi \let\A@leftepi\leftepi
+
+\def\rightmono{\A@rightmonotail\mkern-8mu\relbar\mkern-8mu\A@shortrightarrow}
+\let\monoto\rightmono
+\def\leftmono{\A@shortleftarrow\mkern-8mu\relbar\mkern-8mu\A@leftmonotail}
+
+\def\rightiso{\A@rightmonotail\mkern-5mu\A@shortrightarrow
+ \mkern-7mu\A@shortrightarrow}
+\let\isoto\rightiso
+\def\leftiso{\A@shortleftarrow\mkern-7mu\A@shortleftarrow
+ \mkern-5mu\A@leftmonotail}
+
+\def\longrightepi{\relbar\joinrel\A@rightepi}
+\def\longleftepi{\A@leftepi\joinrel\relbar}
+
+\def\longrightmono{\A@rightmonotail\mkern-7mu\relbar\mkern-6mu\A@rightarrow}
+\def\longleftmono{\A@leftarrow\mkern-6mu\relbar\mkern-7mu\A@leftmonotail}
+
+\def\longrightiso{\A@rightmonotail\mkern-7mu\relbar\mkern-6mu\A@rightepi}
+\def\longleftiso{\A@leftepi\mkern-6mu\relbar\mkern-7mu\A@leftmonotail}
+
+\def\Longrightharpoonup{\Relbar\joinrel\A@Rightharpoonup}
+\def\Longrightharpoondown{\Relbar\joinrel\A@Rightharpoondown}
+\def\Longleftharpoonup{\A@Leftharpoonup\joinrel\Relbar}
+\def\Longleftharpoondown{\A@Leftharpoondown\joinrel\Relbar}
+\def\Llongrightarrow{\A@Rrelbar\joinrel\A@Rrightarrow}
+\def\Llongleftarrow{\A@Lleftarrow\joinrel\A@Rrelbar}
+\def\Llongrelbar{\A@Rrelbar\joinrel\A@Rrelbar}
+
+\let\Leftallo\Leftharpoondown
+\let\Leftpara\Leftharpoonup
+\let\Rightallo\Rightharpoonup
+\let\Rightpara\Rightharpoondown
+
+\let\Longleftallo\Longleftharpoondown
+\let\Longleftpara\Longleftharpoonup
+\let\Longrightallo\Longrightharpoonup
+\let\Longrightpara\Longrightharpoondown
+
+\let\inputarrsy\relax
diff --git a/macros/generic/diagrams/kuvio/arrsy/arrsy.tex b/macros/generic/diagrams/kuvio/arrsy/arrsy.tex
new file mode 100644
index 0000000000..842d082048
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/arrsy.tex
@@ -0,0 +1,133 @@
+% arrsy.tex
+% Anders G S Svensson
+% $Date: 1995/03/31 21:55:00 $
+% $Revision: 1.13 $
+
+\chardef\ArrsycodE=\catcode`\@
+\catcode`\@=11
+
+\def\@@bailout@@{\message{again}\catcode`\@=\ArrsycodE\endinput}
+
+\ifx\@@agss@arrsy@@\relax
+\else
+ \let\@@agss@arrsy@@\relax
+ \let\@@bailout@@\relax
+\fi
+
+\@@bailout@@
+
+
+\font\A@tenarr=arrsy10
+\font\A@sevenarr=arrsy10 at 7pt
+\font\A@fivearr=arrsy10 at 5pt
+
+\newfam\arrfam
+
+\textfont\arrfam=\A@tenarr
+\scriptfont\arrfam=\A@sevenarr
+\scriptscriptfont\arrfam=\A@fivearr
+
+\let\cmrightarrow\rightarrow
+\let\cmleftarrow\leftarrow
+\let\cmleftrightarrow\leftrightarrow
+\let\cmleftharpoonup\leftharpoonup
+\let\cmleftharpoondown\leftharpoondown
+\let\cmrightharpoonup\rightharpoonup
+\let\cmrightharpoondown\rightharpoondown
+
+\def\hex#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or
+ A\or B\or C\or D\or E\or F\fi}
+
+\edef\A@arrsy{\hex\arrfam}
+
+\def\A@newarrow#1#2#3#4{%
+ \expandafter\mathchardef\csname A@#1\endcsname="#2\A@arrsy#3#4
+ \expandafter\expandafter\expandafter\let\expandafter\expandafter
+ \csname #1\endcsname\csname A@#1\endcsname}
+
+\A@newarrow{Rightharpoonup}300
+\A@newarrow{Leftharpoondown}301
+\A@newarrow{Upharpoonleft}302
+\A@newarrow{Downharpoonright}303
+\A@newarrow{Rightharpoondown}304
+\A@newarrow{Leftharpoonup}305
+\A@newarrow{Upharpoonright}306
+\A@newarrow{Downharpoonleft}307
+\A@newarrow{Rrightarrow}308
+\A@newarrow{Lleftarrow}309
+\A@newarrow{Rrelbar}30A
+\A@newarrow{dashbar}30B
+\A@newarrow{shortrightarrow}30C
+\A@newarrow{shortleftarrow}30D
+\A@newarrow{rightmonotail}30E
+\A@newarrow{leftmonotail}30F
+\A@newarrow{squiggle}310
+\A@newarrow{rightarrow}311
+\A@newarrow{leftarrow}312
+\A@newarrow{leftrightarrow}313
+\A@newarrow{leftharpoonup}314
+\A@newarrow{leftharpoondown}315
+\A@newarrow{rightharpoonup}316
+\A@newarrow{rightharpoondown}317
+\edef\vect{\mathaccent"0\A@arrsy 18 }
+\mathchardef\comp="3\A@arrsy 19
+\mathchardef\dotp="3\A@arrsy 1A
+\mathchardef\cupp="3\A@arrsy 1B
+\mathchardef\capp="3\A@arrsy 1C
+
+\let\of\comp
+
+\let\gets\leftarrow
+\let\to\rightarrow
+
+\def\cmarrows{\let\leftrightarrow\cmleftrightarrow
+ \let\rightarrow\cmrightarrow\let\leftarrow\cmleftarrow
+ \let\gets\leftarrow\let\to\rightarrow
+ \let\leftharpoonup\cmleftharpoonup
+ \let\leftharpoondown\cmleftharpoondown
+ \let\rightharpoonup\cmrightharpoonup
+ \let\rightharpoondown\cmrightharpoondown}
+
+\def\rightepi{\A@rightarrow\mkern-13mu\A@shortrightarrow\mkern3mu}
+\let\epito\rightepi
+\def\leftepi{\A@leftarrow\mkern-15mu\A@shortleftarrow\mkern5mu}
+\let\A@rightepi\rightepi \let\A@leftepi\leftepi
+
+\def\rightmono{\A@rightmonotail\mkern-8mu\relbar\mkern-8mu\A@shortrightarrow}
+\let\monoto\rightmono
+\def\leftmono{\A@shortleftarrow\mkern-8mu\relbar\mkern-8mu\A@leftmonotail}
+
+\def\rightiso{\A@rightmonotail\mkern-5mu\A@shortrightarrow
+ \mkern-7mu\A@shortrightarrow}
+\let\isoto\rightiso
+\def\leftiso{\A@shortleftarrow\mkern-7mu\A@shortleftarrow
+ \mkern-5mu\A@leftmonotail}
+
+\def\longrightepi{\relbar\joinrel\A@rightepi}
+\def\longleftepi{\A@leftepi\joinrel\relbar}
+
+\def\longrightmono{\A@rightmonotail\mkern-7mu\relbar\mkern-6mu\A@rightarrow}
+\def\longleftmono{\A@leftarrow\mkern-6mu\relbar\mkern-7mu\A@leftmonotail}
+
+\def\longrightiso{\A@rightmonotail\mkern-7mu\relbar\mkern-6mu\A@rightepi}
+\def\longleftiso{\A@leftepi\mkern-6mu\relbar\mkern-7mu\A@leftmonotail}
+
+\def\Longrightharpoonup{\Relbar\joinrel\A@Rightharpoonup}
+\def\Longrightharpoondown{\Relbar\joinrel\A@Rightharpoondown}
+\def\Longleftharpoonup{\A@Leftharpoonup\joinrel\Relbar}
+\def\Longleftharpoondown{\A@Leftharpoondown\joinrel\Relbar}
+\def\Llongrightarrow{\A@Rrelbar\joinrel\A@Rrightarrow}
+\def\Llongleftarrow{\A@Lleftarrow\joinrel\A@Rrelbar}
+\def\Llongrelbar{\A@Rrelbar\joinrel\A@Rrelbar}
+
+\let\Leftallo\Leftharpoondown
+\let\Leftpara\Leftharpoonup
+\let\Rightallo\Rightharpoonup
+\let\Rightpara\Rightharpoondown
+
+\let\Longleftallo\Longleftharpoondown
+\let\Longleftpara\Longleftharpoonup
+\let\Longrightallo\Longrightharpoonup
+\let\Longrightpara\Longrightharpoondown
+
+\catcode`\@=\ArrsycodE
diff --git a/macros/generic/diagrams/kuvio/arrsy/arrsy10.mf b/macros/generic/diagrams/kuvio/arrsy/arrsy10.mf
new file mode 100644
index 0000000000..a73fa349a1
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/arrsy10.mf
@@ -0,0 +1,45 @@
+% arrsy10.mf
+% Anders G S Svensson
+% $Date: 1995/03/31 21:55:19 $
+% $Revision: 1.10 $
+
+if unknown cmbase: input cmbase fi
+font_identifier:="ARRSY"; font_size 10pt#;
+
+input arrsy; % Computer modern parameters.
+input arrsym; % Macros for the symbols.
+
+% Encoding
+%
+rightallo(hex "00");
+leftallo(hex "01");
+upallo(hex "02");
+downallo(hex "03");
+rightpara(hex "04");
+leftpara(hex "05");
+uppara(hex "06");
+downpara(hex "07");
+righttriple(hex "08");
+lefttriple(hex "09");
+equiv(hex "0A");
+dashbar(hex "0B");
+rightarrow(hex "0C", 10);
+leftarrow(hex "0D", 10);
+rightmonotail(hex "0E");
+leftmonotail(hex "0F");
+squiggle(hex "10");
+rightarrow(hex "11", 18);
+leftarrow(hex "12", 18);
+leftrightarrow(hex "13");
+leftharpoonup(hex "14");
+leftharpoondown(hex "15");
+rightharpoonup(hex "16");
+rightharpoondown(hex "17");
+vector(hex "18");
+ofcirc(hex "19");
+dotp(hex "1A");
+cupp(hex "1B");
+capp(hex "1C");
+
+bye
+
diff --git a/macros/generic/diagrams/kuvio/arrsy/arrsym.mf b/macros/generic/diagrams/kuvio/arrsy/arrsym.mf
new file mode 100644
index 0000000000..81b113bc79
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/arrsym.mf
@@ -0,0 +1,477 @@
+% arrsym.mf
+% Anders G S Svensson
+
+% This file was tangled from arrsym.fw.
+% $Revision: 1.9 $
+% $Date: 1995/04/01 02:31:13 $
+
+compute_spread(.45x_height#,.55y_height#);
+numeric thin_spread#; thin_spread#:=4/5spread#;
+define_pixels(thin_spread);
+
+def rightallo(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ pickup rule.nib;
+ lft x1=hround u - eps; x2=x1; x7=x8=w-x1;
+ y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib; rt x0=hround(w-u)+eps; y0=y2;
+ pos3(rule_thickness,0);
+ y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0-6u-eps;
+ pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z3-z9}z3--(w,y3)--z0&cycle;
+ filldraw z5l..{z3-z9}z3r---{z9-z3}z3l..z5r--cycle;
+ endchar;
+enddef;
+
+def rightpara(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ pickup rule.nib;
+ lft x1=hround u - eps; x2=x1; x7=x8=w-x1;
+ y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib; rt x0=hround(w-u)+eps; y0=y1;
+ pos4(rule_thickness,0);
+ y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0-6u-eps;
+ pos5(rule_thickness,angle(z3-z0)); z5l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z4-z9}z4--(w,y4)--z0&cycle;
+ filldraw z5r..{z4-z9}z4l---{z9-z4}z4r..z5l--cycle;
+ endchar;
+enddef;
+
+def leftpara(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ pickup rule.nib;
+ lft x7=hround u - eps; x8=x7; x1=x2=w-x7;
+ y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib; lft x0=hround u - eps; y0=y2;
+ pos3(rule_thickness,0);
+ y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0+6u+eps;
+ pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z3-z9}z3--(0,y3)--z0&cycle;
+ filldraw z5r..{z3-z9}z3r---{z9-z3}z3l..z5l--cycle;
+ endchar;
+enddef;
+
+def leftallo(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ pickup rule.nib;
+ lft x7=hround u - eps; x8=x7; x1=x2=w-x7;
+ y1=y7; y2=y8; y1-y2=spread; .5[y1,y2]=math_axis;
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib; lft x0=hround u - eps; y0=y1;
+ pos4(rule_thickness,0);
+ y3-y1=y2-y4=.24asc_height+eps; x3=x4=x0+6u+eps;
+ pos5(rule_thickness,angle(z3-z0)); z5l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z4-z9}z4--(0,y4)--z0&cycle;
+ filldraw z5l..{z4-z9}z4l---{z9-z4}z4r..z5r--cycle;
+ endchar;
+enddef;
+
+def downallo(expr code) =
+ beginchar(code, 11u#, asc_height#, asc_depth#);
+ pickup rule.nib;
+ top y1=top y2=h+eps; bot y7=-d; y8=y7;
+ x1=x7; x2=x8; x1-x2=spread; .5[x1,x2]=crisp.lft hround(crisp.rt .5w);
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib;
+ bot y0=-d-eps; x0=x2;
+ pos4(rule_thickness,90);
+ x2-x3=x4-x1=3u+eps; y3=y4=y0+.48asc_height-eps;
+ pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z4-z9}z4--(x4,-d-eps)--z0&cycle;
+ filldraw z6l..{z4-z9}z4l---{z9-z4}z4r..z6r--cycle;
+ endchar;
+enddef;
+
+def downpara(expr code) =
+ beginchar(code, 11u#, asc_height#, asc_depth#);
+ pickup rule.nib;
+ top y1=top y2=h+eps; bot y7=-d; y8=y7;
+ x1=x7; x2=x8; x1-x2=spread; .5[x1,x2]=crisp.lft hround(crisp.rt .5w);
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib;
+ bot y0=-d-eps; x0=x1;
+ pos3(rule_thickness,90);
+ x2-x3=x4-x1=3u+eps; y3=y4=y0+.48asc_height-eps;
+ pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z3-z9}z3--(x3,-d-eps)--z0&cycle;
+ filldraw z5r..{z3-z9}z3r---{z9-z3}z3l..z5l--cycle;
+ endchar;
+enddef;
+
+def uppara(expr code) =
+ beginchar(code, 11u#, asc_height#, asc_depth#);
+ pickup rule.nib;
+ bot y1=bot y2=-d-eps; top y7=h; y8=y7;
+ x1=x7; x2=x8; x1-x2=spread; .5[x1,x2]=crisp.lft hround(crisp.rt .5w);
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib;
+ top y0=h+eps; x0=x2;
+ pos4(rule_thickness,90);
+ x2-x3=x4-x1=3u+eps; y3=y4=y0-.48asc_height-eps;
+ pos6(rule_thickness,angle(z3-z0)); z6l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z4-z9}z4--(x4,h+eps)--z0&cycle;
+ filldraw z6r..{z4-z9}z4l---{z9-z4}z4r..z6l--cycle;
+ endchar;
+enddef;
+
+def upallo(expr code) =
+ beginchar(code, 11u#, asc_height#, asc_depth#);
+ pickup rule.nib;
+ bot y1=bot y2=-d-eps; top y7=h; y8=y7;
+ x1=x7; x2=x8; x1-x2=spread; .5[x1,x2]=crisp.lft hround(crisp.rt .5w);
+ draw z1--z7; draw z2--z8;
+ pickup crisp.nib;
+ top y0=h+eps; x0=x1;
+ pos3(rule_thickness,90);
+ x2-x3=x4-x1=3u+eps; y3=y4=y0-.48asc_height-eps;
+ pos5(rule_thickness,angle(z4-z0)); z5l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ erase filldraw z0..{z3-z9}z3--(x3,h+eps)--z0&cycle;
+ filldraw z5l..{z3-z9}z3r---{z9-z3}z3l..z5r--cycle;
+ endchar;
+enddef;
+
+def righttriple(expr code) =
+ beginchar(code, 18u#, v_center(2spread#+rule_thickness#));
+ pickup rule.nib;
+ lft x1=hround u - eps; x3=x5=x1; x2=x4=x6=w-x1;
+ y1=y2; y3=y4=math_axis; y5=y6; y1-y3=y3-y5=thin_spread;
+ draw z1--z2; draw z3--z4; draw z5--z6;
+ pickup crisp.nib; rt x0=hround(w-u)+eps; y0=y4;
+ pos7(rule_thickness,0); pos8(rule_thickness,0);
+ y7-y2=y6-y8=.24asc_height+eps; x7=x8=x0-6u-eps;
+ pos9(rule_thickness,angle(z8-z0)); z9l=z0;
+ pos10(rule_thickness,angle(z7-z0)); z10l=z0;
+ z11=.381966[.5[z7,z8],z0];
+ erase filldraw z0..{z7-z11}z7--(w,y7)--(w,y8)--
+ z8{z11-z8}..z0&cycle;
+ filldraw z9l..{z7-z11}z7r---z7l{z11-z7}..z9r--cycle;
+ filldraw z10r..{z8-z11}z8l---z8r{z11-z8}..z10l--cycle;
+ endchar;
+enddef;
+
+def lefttriple(expr code) =
+ beginchar(code, 18u#, v_center(2spread#+rule_thickness#));
+ pickup rule.nib;
+ lft x1=hround u - eps; x3=x5=x1; x2=x4=x6=w-x1;
+ y1=y2; y3=y4=math_axis; y5=y6; y1-y3=y3-y5=thin_spread;
+ draw z1--z2; draw z3--z4; draw z5--z6;
+ pickup crisp.nib; lft x0=hround u-eps; y0=y4;
+ pos7(rule_thickness,0); pos8(rule_thickness,0);
+ y7-y2=y6-y8=.24asc_height+eps; x7=x8=x0+6u+eps;
+ pos9(rule_thickness,angle(z8-z0)); z9l=z0;
+ pos10(rule_thickness,angle(z7-z0)); z10l=z0;
+ z11=.381966[.5[z7,z8],z0];
+ erase filldraw z0..{z7-z11}z7--(0,y7)--(0,y8)--
+ z8{z11-z8}..z0&cycle;
+ filldraw z9r..{z7-z11}z7r---z7l{z11-z7}..z9l--cycle;
+ filldraw z10l..{z8-z11}z8l---z8r{z11-z8}..z10r--cycle;
+ endchar;
+enddef;
+
+def equiv(expr code) =
+ beginchar(code, 14u#, v_center(2spread#+rule_thickness#));
+ pickup rule.nib;
+ lft x1=hround u - eps; x3=x5=x1; x2=x4=x6=w-x1;
+ y1=y2; y3=y4=math_axis; y5=y6; y1-y3=y3-y5=thin_spread;
+ draw z1--z2;
+ draw z3--z4;
+ draw z5--z6;
+ endchar;
+enddef;
+
+def dashbar(expr code) =
+ beginarithchar(code);
+ pickup rule.nib;
+ lft x1=hround u-eps;
+ x2=.3w; x3=.7w;
+ x4=w-x1;
+ y1=y2=y3=y4=math_axis;
+ draw z1--z2;
+ draw z3--z4;
+ endchar;
+enddef;
+
+def rightarrow(expr code, width) =
+ beginchar(code, width*u#, v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ y0=y1=y2=math_axis; x1-.5rule_thickness=hround u; rt x0=hround(w-u);
+ y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
+ pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ numeric t; path p; p=z4l{z9-z4}..z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+ 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
+ endchar;
+enddef;
+
+def leftarrow(expr code, width) =
+ beginchar(code, width*u#, v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ y0=y1=y2=math_axis; x1+.5rule_thickness=hround(w-u); lft x0=hround u;
+ y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
+ pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ numeric t; path p; p=z4r{z9-z4}..z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+ filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+ endchar;
+enddef;
+
+def leftrightarrow(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ y0=y1=y2=math_axis; lft x0=hround u;
+ x1=.5w;
+ y3-y0=y0-y4=.24asc_height+eps;
+ x3=x4=x0+3u+eps;
+ pos5(bar,angle(z4-z0)); z5l=z0;
+ pos6(bar,angle(z3-z0)); z6l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ numeric t; path p; p=z4r{z9-z4}..z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+ x2=xpart point t of p;
+ filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % left arrowhead and stem
+ pos11(rule_thickness,90); pos12(rule_thickness,90);
+ pos13(bar,0); pos14(bar,0);
+ y10=y11=y12=math_axis;
+ rt x10=hround(w-u);
+ x11=.5w;
+ y13-y10=y10-y14=.24asc_height+eps;
+ x13=x14=x10-3u-eps;
+ pos15(bar,angle(z14-z10)); z15l=z10;
+ pos16(bar,angle(z13-z10)); z16l=z10;
+ z19=.381966[.5[z13,z14],z10];
+ numeric t; path p; p=z14l{z19-z14}..z16r;
+ t=xpart(p intersectiontimes((0,y12l)--(w,y12l)));
+ x12=xpart point t of p;
+ filldraw z10..{z14-z19}z14r--subpath (0,t) of\\(z14l{z19-z14}..z16r)
+ --z12l---z11l..z11r---z12r--subpath (t,0) of\\(z13l{z19-z13}..z15r)
+ --z13r{z19-z13}..z10 & cycle; % right arrowhead and stem
+ endchar;
+enddef;
+
+def rightmonotail(expr code) =
+ beginchar(code,10u#,v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ x3=x4=.5rule_thickness+hround u;
+ y0=y1=y2=math_axis;
+ y3-y0=y0-y4=.24asc_height+eps;
+ x0=x3+3u+eps;
+ rt x1=hround(w-u);
+ pos5(bar,angle(z4-z0)); z5l=z0;
+ pos6(bar,angle(z3-z0)); z6l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ numeric t; path p; p=z4l{z9-z4}..z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+ filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
+ --z2l---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
+ --z3r{z9-z3}..z0 & cycle;
+ filldraw z1l..z1r---z2r..z2l---z1l & cycle;
+ endchar;
+enddef;
+
+def leftmonotail(expr code) =
+ beginchar(code,10u#,v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ x3=x4=hround(w-u)-.5rule_thickness;
+ y0=y1=y2=math_axis;
+ y3-y0=y0-y4=.24asc_height+eps;
+ x0=x3-3u-eps;
+ lft x1=hround u;
+ pos5(bar,angle(z4-z0)); z5l=z0;
+ pos6(bar,angle(z3-z0)); z6l=z0;
+ z9=.381966[.5[z3,z4],z0];
+ numeric t; path p; p=z4r{z9-z4}..z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
+ filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
+ --z2l---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
+ --z3l{z9-z3}..z0 & cycle; % arrowhead and stem
+ filldraw z1l..z1r---z2r..z2l---z1l & cycle;
+ endchar;
+enddef;
+
+def squiggle(expr code) =
+ beginarithchar(code);
+ pickup rule.nib;
+ x2=.12w; x3=.3w;
+ x4=.7w; x5=.88w;
+ y2=y5=math_axis;
+ y3-y2=y2-y4=.5spread;
+ draw z2{right}..z3{right}..z4{right}..z5{right};
+ endchar;
+enddef;
+
+def leftharpoonup(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ y0=y1=y2=math_axis;
+ x1+.5rule_thickness=hround(w-u);
+ lft x0=hround u;
+ y3-y0=y0-y4=.24asc_height+eps;
+ x3=x4=x0+3u+eps;
+ pos5(bar,angle(z4-z0)); z5l=z0;
+ pos6(bar,angle(z3-z0)); z6l=z0;
+ numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+ x2=xpart point t of p;
+ filldraw z0--(x0,y2l)---z1l..z1r---z2r
+ ..subpath (t,0) of\\(z3r..{2(x0-x3),y0-y3}z5r)
+ --z3l..{2(x0-x3),y0-y3}cycle; % arrowhead and stem
+ endchar;
+enddef;
+
+def leftharpoondown(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ y0=y1=y2=math_axis;
+ x1+.5rule_thickness=hround(w-u);
+ lft x0=hround u;
+ y3-y0=y0-y4=.24asc_height+eps;
+ x3=x4=x0+3u+eps;
+ pos5(bar,angle(z4-z0)); z5l=z0;
+ pos6(bar,angle(z3-z0)); z6l=z0;
+ numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+ x2=xpart point t of p;
+ filldraw z0{2(x4-x0),y4-y0}..z4l
+ --subpath (0,t) of\\(z4r..{2(x0-x4),y0-y4}z6r)
+ ..z2l---z1l..z1r---(x0,y2r)--cycle; % arrowhead and stem
+ endchar;
+enddef;
+
+def rightharpoonup(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ y0=y1=y2=math_axis;
+ x1-.5rule_thickness=hround u;
+ rt x0=hround(w-u);
+ y3-y0=y0-y4=.24asc_height+eps;
+ x3=x4=x0-3u-eps;
+ pos5(bar,angle(z4-z0)); z5l=z0;
+ pos6(bar,angle(z3-z0)); z6l=z0;
+ numeric t; path p; p=z4l..{2(x0-x4),y0-y4}z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+ x2=xpart point t of p;
+ filldraw z0--(x0,y2l)---z1l..z1r---z2r
+ ..subpath (t,0) of\\(z3l..{2(x0-x3),y0-y3}z5r)
+ --z3r..{2(x0-x3),y0-y3}cycle; % arrowhead and stem
+ endchar;
+enddef;
+
+def rightharpoondown(expr code) =
+ beginchar(code, 18u#, v_center(spread#+rule_thickness#));
+ adjust_fit(0,0); pickup crisp.nib;
+ pos1(rule_thickness,90); pos2(rule_thickness,90);
+ pos3(bar,0); pos4(bar,0);
+ y0=y1=y2=math_axis;
+ x1-.5rule_thickness=hround u;
+ rt x0=hround(w-u);
+ y3-y0=y0-y4=.24asc_height+eps;
+ x3=x4=x0-3u-eps;
+ pos5(bar,angle(z4-z0)); z5l=z0;
+ pos6(bar,angle(z3-z0)); z6l=z0;
+ numeric t; path p; p=z4l..{2(x0-x4),y0-y4}z6r;
+ t=xpart(p intersectiontimes((0,y2l)--(w,y2l)));
+ x2=xpart point t of p;
+ filldraw z0{2(x4-x0),y4-y0}..z4r
+ --subpath (0,t) of\\(z4l..{2(x0-x4),y0-y4}z6r)
+ ..z2l---z1l..z1r---(x0,y2r)--cycle; % arrowhead and stem
+ endchar;
+enddef;
+
+def vector(expr code) =
+ beginchar(code, 9u#, asc_height#+.5rule_thickness#,0);
+ italcorr .7[x_height#,asc_height#]*slant;
+ adjust_fit(0,0); pickup rule.nib;
+ lft x1=hround .5u; x2=w-x1; y1=y2=good.x .7[x_height,asc_height];
+ draw z1--z2; % bar
+ rt x3=hround(x2-u);
+ y3=y2+.3(asc_height-x_height);
+ draw z3{x2-x3,2(y2-y3)}...{2(x2-x3),y2-y3}z2; % upper point
+ endchar;
+enddef;
+
+def ofcirc(expr code) =
+ beginchar(code, 7u#, v_center(7u#));
+ adjust_fit(0,0); pickup rule.nib; autorounded;
+ lft x6=hround u; x2=w-x6;
+ z0=.5[z2,z6];
+ y8-y0=x2-x0;
+ y2=math_axis;
+ circle_points; draw_circle; % circle
+ endchar;
+enddef;
+
+def dotp(expr code) =
+ beginchar(code, 5u#, v_center(7u#));
+ adjust_fit(0,0); pickup fine.nib;
+ numeric dot_diam#; dot_diam#=2dot_size#;
+ define_whole_blacker_pixels(dot_diam);
+ pos1(dot_diam,0); pos2(dot_diam,90);
+ lft x1l=hround(.5w-.5dot_diam);
+ y1+.5dot_diam=vround(math_axis+.5dot_diam);
+ z1=z2; dot(1,2); % dot
+ endchar;
+enddef;
+
+def cupp(expr code) =
+ beginchar(code, 10u#, v_center(7u#));
+ adjust_fit(0,0); pickup rule.nib; autorounded;
+ lft x1=hround u; y1=vround(math_axis+.15x_height);
+ x3=w-x1; y3=y1;
+ penpos2(rule_thickness,90); x2=.5w;
+ y2=good.y(math_axis-.15x_height);
+ numeric theta; theta=angle((z2-z1)yscaled 3);
+ penpos1(rule_thickness,90+theta);
+ penpos3(rule_thickness,90-theta);
+ draw z1{dir theta}...z2...{dir-theta}z3;
+ endchar;
+enddef;
+
+def capp(expr code) =
+ beginchar(code, 10u#, v_center(7u#));
+ adjust_fit(0,0); pickup rule.nib; autorounded;
+ lft x1=hround u; y1=vround(math_axis-.15x_height);
+ x3=w-x1; y3=y1;
+ penpos2(rule_thickness,90); x2=.5w;
+ y2=good.y(.15x_height+math_axis);
+ numeric theta; theta=angle((z2-z1)yscaled 3);
+ penpos1(rule_thickness,90+theta);
+ penpos3(rule_thickness,90-theta);
+ draw z1{dir theta}...z2...{dir-theta}z3;
+ endchar;
+enddef;
+
diff --git a/macros/generic/diagrams/kuvio/arrsy/patchlevel_19 b/macros/generic/diagrams/kuvio/arrsy/patchlevel_19
new file mode 100644
index 0000000000..22dba0647c
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/patchlevel_19
@@ -0,0 +1 @@
+27 Dec 1995
diff --git a/macros/generic/diagrams/kuvio/arrsy/symbols.ps b/macros/generic/diagrams/kuvio/arrsy/symbols.ps
new file mode 100644
index 0000000000..22ef9e8585
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/symbols.ps
@@ -0,0 +1,264 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.516 Copyright 1986, 1993 Radical Eye Software
+%%Title: symbols.dvi
+%%CreationDate: Fri Apr 21 16:11:04 1995
+%%Pages: 1
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%DVIPSCommandLine: dvips -o symbols.ps symbols.dvi
+%DVIPSSource: TeX output 1995.04.21:1611
+%%BeginProcSet: tex.pro
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
+/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
+mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
+ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
+hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
+TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
+round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
+0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
+begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
+array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
+setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
+FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
+pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
+B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
+length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
+/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
+0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
+index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
+ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
+ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
+ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
+/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
+sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
+}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
+moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
+userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
+/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
+65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
+0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
+{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
+getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
+ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
+false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
+scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0
+ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
+0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
+B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
+3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
+-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
+3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 400 400
+(/Riseberga/._homes/user/agss/Mathematics/TeX/src/arrsy/symbols.dvi)
+@start /Fa 29 29 df<0000000600000000000007000000000000070000000000000380
+00000000000380000000000001C0000000000001C0000000000000E000007FFFFFFFF000
+00FFFFFFFFF00000FFFFFFFFF80000000000001C0000000000000E0000000000000F0000
+000000000780000000000003C0000000000001E0000000000000F0000000000000380000
+000000001E00FFFFFFFFFFFF80FFFFFFFFFFFF807FFFFFFFFFFF0031177D9C01>0
+D<7FFFFFFFFFFF00FFFFFFFFFFFF80FFFFFFFFFFFF803C0000000000000E000000000000
+0780000000000003C0000000000001E0000000000000F000000000000078000000000000
+380000000000001C0000000000000FFFFFFFFF800007FFFFFFFF800007FFFFFFFF000003
+80000000000001C0000000000001C0000000000000E0000000000000E000000000000070
+00000000000070000000000000300000000031177D9402>I<00000C00000E00001E0000
+3E00003E00007E0000EE0001CE0003CE00078E000F0E001C0E00780E00F00E03E00E0FE0
+0E3FE00E7CE00EF8E00EC0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
+0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
+0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00600C17317EA503>I<60
+0C00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
+0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
+0E00E00E00E00E00E00E00E00E00E00E06E00E3EE00E7CE00FF8E00FE0E00F80E01E00E0
+3C00E07000E1E000E3C000E78000E70000EE0000FC0000F80000F80000F00000E0000060
+0000173176A504>I<7FFFFFFFFFFF00FFFFFFFFFFFF80FFFFFFFFFFFF8000000000001E
+00000000000038000000000000F0000000000001E0000000000003C00000000000078000
+000000000F0000000000000E0000000000001C0000FFFFFFFFF80000FFFFFFFFF000007F
+FFFFFFF0000000000000E0000000000001C0000000000001C00000000000038000000000
+000380000000000007000000000000070000000000000600000031177D9405>I<000030
+0000000000007000000000000070000000000000E0000000000000E0000000000001C000
+0000000001C000000000000380000000000007FFFFFFFF000007FFFFFFFF80000FFFFFFF
+FF80001C0000000000003800000000000078000000000000F0000000000001E000000000
+0003C00000000000078000000000000E0000000000003C000000000000FFFFFFFFFFFF80
+FFFFFFFFFFFF807FFFFFFFFFFF0031177D9C06>I<600000E00000F00000F80000F80000
+FC0000EE0000E70000E78000E3C000E1E000E07000E03C00E01E00E00F80E00FE0E00FF8
+E00E7CE00E3EE00E06E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
+E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
+E00E00E00E00E00E00E00E00E00E00E00E00E00E00600C00173176A507>I<00600C00E0
+0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
+0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
+0E00E00E00E00E00E00EC0E00EF8E00E7CE00E3FE00E0FE00E03E00E00F00E00780E001C
+0E000F0E00078E0003CE0001CE0000EE00007E00003E00003E00001E00000E00000C1731
+7EA508>I<00000006000000000000070000000000000700000000000003800000000000
+0380000000000001C0000000000001E0000000000000E000007FFFFFFFF00000FFFFFFFF
+F80000FFFFFFFFFC0000000000001E0000000000000F0000000000000780000000000003
+C0000000000001F00000000000007800FFFFFFFFFFFF00FFFFFFFFFFFF80FFFFFFFFFFFF
+00000000000078000000000001F0000000000003C00000000000078000000000000F0000
+000000001E0000FFFFFFFFFC0000FFFFFFFFF800007FFFFFFFF0000000000000E0000000
+000001E0000000000001C000000000000380000000000003800000000000070000000000
+00070000000000000600000031257D9F09>I<0000300000000000007000000000000070
+000000000000E0000000000000E0000000000001C0000000000003C00000000000038000
+0000000007FFFFFFFF00000FFFFFFFFF80001FFFFFFFFF80003C00000000000078000000
+000000F0000000000001E0000000000007C000000000000F0000000000007FFFFFFFFFFF
+80FFFFFFFFFFFF807FFFFFFFFFFF800F00000000000007C0000000000001E00000000000
+00F0000000000000780000000000003C0000000000001FFFFFFFFF80000FFFFFFFFF8000
+07FFFFFFFF00000380000000000003C0000000000001C0000000000000E0000000000000
+E00000000000007000000000000070000000000000300000000031257D9F0A>I<7FFFFF
+FFF0FFFFFFFFF8FFFFFFFFF8000000000000000000000000000000000000000000000000
+000000000000FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8000000000000000000000000000000
+000000000000000000000000000000FFFFFFFFF8FFFFFFFFF87FFFFFFFF025157D970B>
+I<FFE0007FF0FFE0007FF0FFE0007FF024037D8E2B>I<00060000030000030000018000
+00C00000C00000600000387FFFFCFFFFFF7FFFFC0000380000600000C00000C000018000
+030000030000060018137D961F>I<00600000C00000C000018000030000030000060000
+1C00003FFFFEFFFFFF3FFFFE1C000006000003000003000001800000C00000C000006000
+18137D961F>I<C00000C00000C000006000003000001800001C00000E000007FFFE07FF
+FF07FFFE0E00001C0000180000300000600000C00000C00000C0000018137C961F>I<00
+000300000300000300000600000C0000180000380000707FFFE0FFFFE07FFFE000007000
+003800001800000C00000600000300000300000318137E961F>I<03F000000007FC0000
+000FFE0000001E0F0000003C07800000F803C001C0F001E003C0E000F007C00000780F00
+00003C1E0000001FFC0000000FF800000003F000220D7C932B>I<000000000600000000
+0003000000000003000000000001800000000000C00000000000C0000000000060000000
+0000387FFFFFFFFFFCFFFFFFFFFFFF7FFFFFFFFFFC000000000038000000000060000000
+0000C00000000000C000000000018000000000030000000000030000000000060030137D
+9637>I<00600000000000C00000000000C0000000000180000000000300000000000300
+000000000600000000001C00000000003FFFFFFFFFFEFFFFFFFFFFFF3FFFFFFFFFFE1C00
+0000000006000000000003000000000003000000000001800000000000C00000000000C0
+0000000000600000000030137D9637>I<00600000060000C00000030000C00000030001
+80000001800300000000C00300000000C00600000000601C00000000383FFFFFFFFFFCFF
+FFFFFFFFFF3FFFFFFFFFFC1C00000000380600000000600300000000C00300000000C001
+800000018000C00000030000C00000030000600000060030137D9637>I<006000000000
+00C00000000000C0000000000180000000000300000000000700000000000E0000000000
+1C00000000007FFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE300B7D9637>I<FFFFFFFFFF
+FEFFFFFFFFFFFF7FFFFFFFFFFE1C00000000000E00000000000700000000000300000000
+0001800000000000C00000000000C000000000006000000000300B7D8E37>I<00000000
+06000000000003000000000003000000000001800000000000C00000000000E000000000
+00700000000000387FFFFFFFFFFEFFFFFFFFFFFF7FFFFFFFFFFF300B7D9637>I<7FFFFF
+FFFFFFFFFFFFFFFFFF7FFFFFFFFFFE0000000000380000000000700000000000E0000000
+0000C0000000000180000000000300000000000300000000000600300B7D8E37>I<0001
+C00001C00000E00000F87FFFFEFFFFFE7FFFFE17077EA61C>I<07C01FF03FF8783C701C
+E00EE00EE00EE00EE00E701C783C3FF81FF007C00F0F7D9416>I<0F003FC07FE07FE0FF
+F0FFF0FFF0FFF07FE07FE03FC00F000C0C7F930F>I<E00007E0000770000E78001E3C00
+3C1E00780F81F007FFE001FF80007E00180A7D911F>I<007E0001FF8007FFE00F81F01E
+00783C003C78001E70000EE00007E00007180A7D921F>I E /Fb
+26 120 df<FFFF0000FFFFC000FFFFE0001E01F0001E00F8001E007C001E003C001E001E
+001E001E001E000F001E000F001E000F001E0007801E0007801E0007801E0007801E0007
+801E0007801E0007801E0007801E0007801E0007801E000F001E000F001E000F001E001F
+001E001E001E003E001E007C001E00F8001E01F800FFFFF000FFFFC000FFFF000019227F
+A11D>68 D<FFF800FFF800FFF8000F00000F00000F00000F00000F00000F00000F00000F
+00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
+00000F00000F00000F000F0F000F0F000F0F000F0F000F0F000FFFFFFFFFFFFFFFFFFF18
+227EA11D>76 D<7FFE0000FFFF80007FFFE0000F03F0000F00F8000F0078000F007C000F
+003C000F003C000F003C000F003C000F007C000F0078000F00F8000F03F0000FFFE0000F
+FF80000FFFC0000F03E0000F00F0000F00F0000F0078000F0078000F0078000F0078000F
+0078000F0078000F0079E00F0079E00F0079E00F0039E07FE03FC0FFF01FC07FE007001B
+227FA11D>82 D<7FE07FE0FFF0FFF07FE07FE00F000F000F000F000F000F000F000F000F
+000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
+000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
+000F0007801E0007801E0003C03C0003C03C0001F0F80000FFF000007FE000001F80001C
+2280A11D>85 D<600000F00000F00000F800007800007C00003C00003E00001E00001F00
+000F00000F800007800007C00003C00003C00003E00001E00001F00000F00000F8000078
+00007C00003C00003E00001E00001F00000F00000F00000F800007800007C00003C00003
+E00001E00001F00000F00000F800007800007C00003C00003C000018162B7DA51D>92
+D<0FF800003FFF00007FFF80007C07C0007C03E0003801E0000000F0000000F0000000F0
+00003FF00003FFF0000FFFF0003FC0F0007E00F0007800F000F000F000F000F000F000F0
+00F000F0007801F0007C07F0003FFFFF800FFE7F8003F81F8019187D971D>97
+D<7F800000FF8000007F8000000780000007800000078000000780000007800000078000
+00078000000787C000079FF00007FFFC0007F83E0007E01F0007C00F0007C00780078007
+8007800380078003C0078003C0078003C0078003C0078003C0078003C007800380078007
+8007C0078007C00F0007E01E0007F07E0007FFFC0007BFF000038FC0001A2280A11D>I<
+007F8003FFE007FFF00F81F01E01F03C00E0780000780000780000F00000F00000F00000
+F00000F00000F000007800007800007800F03C00F01E01F00F83E007FFC003FF80007E00
+14187C971D>I<0007F800000FF8000007F8000000780000007800000078000000780000
+007800000078000000780000FC780003FF78000FFFF8001F83F8001E01F8003C00F80078
+0078007800780070007800F0007800F0007800F0007800F0007800F0007800F000780070
+007800780078007800F8003C01F8003E03F8001F07F8000FFF7F8003FE7FC000F87F801A
+227EA11D>I<00FC0003FF0007FFC01F83E01E01E03C00F07800F0780078700078F00078
+FFFFF8FFFFF8FFFFF8F00000F000007800007800003C00783C00781E00F80F81F007FFE0
+01FFC0007F0015187D971D>I<0001FC000FFE001FFF003E1F003C1F00780E0078000078
+000078000078007FFFFCFFFFFCFFFFFC0078000078000078000078000078000078000078
+000078000078000078000078000078000078000078000078000078000078000078003FFF
+F07FFFF83FFFF018227FA11D>I<00F83E0003FEFF0007FFFF800F8FC7801E03C7001E03
+C0003C01E0003C01E0003C01E0003C01E0003C01E0003C01E0001E03C0001E03C0000F8F
+80001FFF00001FFE00001CF800001C0000001C0000001E0000000FFF80000FFFF0003FFF
+FC003C007C0070000E0070000F00E0000700E0000700E0000700E000070070000E007800
+1E003F00FC001FFFF80007FFE00000FF000019257E971D>I<7F800000FF8000007F8000
+00078000000780000007800000078000000780000007800000078000000787E000079FF8
+0007BFFC0007F83C0007F01E0007E01E0007C01E0007801E0007801E0007801E0007801E
+0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E
+0007801E007FF87FE0FFFCFFF07FF87FE01C2280A11D>I<00600000F00001F80001F800
+00F0000060000000000000000000000000000000007FF800FFF8007FF800007800007800
+007800007800007800007800007800007800007800007800007800007800007800007800
+0078000078000078000078007FFFF8FFFFF87FFFF815237CA21D>I<FFF800FFF800FFF8
+000078000078000078000078000078000078000078000078000078000078000078000078
+000078000078000078000078000078000078000078000078000078000078000078000078
+00007800007800007800007800FFFFFCFFFFFCFFFFFC16227DA11D>108
+D<FC781E00FDFC7F00FFFEFF801F8FE3801F07C1C01E0781C01E0781C01C0701C01C0701
+C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701
+C01C0701C01C0701C01C0701C0FF8FE3F8FF9FE7F8FF8FE3F81D1880971D>I<7F87E000
+FF9FF8007FBFFC0007F83C0007F01E0007E01E0007C01E0007801E0007801E0007801E00
+07801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E00
+07801E0007801E007FF87FE0FFFCFFF07FF87FE01C1880971D>I<00FC0003FF000FFFC0
+1F87E03E01F03C00F0780078780078F0003CF0003CF0003CF0003CF0003CF0003CF0003C
+F8007C7800787C00F83C00F03E01F01F87E00FFFC003FF0000FC0016187D971D>I<7F87
+C000FF9FF0007FFFFC0007F83E0007E01F0007C00F0007C0078007800780078003800780
+03C0078003C0078003C0078003C0078003C0078003C0078003800780078007C0078007C0
+0F0007E01E0007F07E0007FFFC0007BFF000078FC0000780000007800000078000000780
+000007800000078000000780000007800000078000007FF80000FFFC00007FF800001A24
+80971D>I<007E3C0001FF3C0007FFFC000F83FC001E00FC003C007C003C007C0078003C
+0078003C00F0003C00F0003C00F0003C00F0003C00F0003C00F0003C0078003C0078003C
+0078007C003C00FC001E01FC001F83FC0007FFBC0003FF3C0000FC3C0000003C0000003C
+0000003C0000003C0000003C0000003C0000003C0000003C0000003C000003FFC00007FF
+E00003FFC01B247E971D>I<7FE07C00FFE1FF007FE7FF8001EF8F8001FE0F8001FC0700
+01F8000001F0000001F0000001F0000001E0000001E0000001E0000001E0000001E00000
+01E0000001E0000001E0000001E0000001E0000001E000007FFFE000FFFFE0007FFFE000
+19187F971D>I<03FCE01FFFE03FFFE07C07E07001E0E001E0E001E0F001E07800007FC0
+003FFE000FFF8001FFE00007F00000F0700078F00038F00038F80038FC0070FE01F0FFFF
+E0EFFF80E1FE0015187C971D>I<00E00001E00001E00001E00001E00001E00001E0007F
+FFFCFFFFFCFFFFFC01E00001E00001E00001E00001E00001E00001E00001E00001E00001
+E00001E00001E00001E01E01E01E01E01E01E01E01E01E00F07C00FFF8003FF0000FC017
+1F7F9E1D>I<7F81FE00FF83FE007F81FE0007801E0007801E0007801E0007801E000780
+1E0007801E0007801E0007801E0007801E0007801E0007801E0007801E0007801E000780
+1E0007801E0007803E0007807E0003C0FE0003FFFFE001FFDFF0007F1FE01C1880971D>
+I<7FE1FF80FFE1FFC07FE1FF800E001C000F003C00070038000700380007807800038070
+000380700003C0F00001C0E00001C0E00001E1E00000E1C00000E1C00000F3C000007380
+000073800000738000003F0000003F0000003F0000001E00001A187F971D>I<FFC0FFC0
+FFE1FFC0FFC0FFC01C000E001C000E001C000E001C000E001C000E001E001E000E001C00
+0E1E1C000E1E1C000E3F1C000E3F1C000E331C00073338000773B8000773B8000773B800
+0761B80007E1F80003E1F00003E1F00003C0F0001A187F971D>I
+E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 400dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 0 55 a Fb(\\Rightharpoonup)167 b Fa(\000)0 177
+y Fb(\\Leftharpoondown)138 b Fa(\001)0 299 y Fb(\\Upharpoonleft)207
+b Fa(\002)0 421 y Fb(\\Downharpoonright)120 b Fa(\003)0
+542 y Fb(\\Rightharpoondown)109 b Fa(\004)0 664 y Fb(\\Leftharpoonup)
+196 b Fa(\005)0 786 y Fb(\\Upharpoonright)178 b Fa(\006)0
+908 y Fb(\\Downharpoonleft)149 b Fa(\007)0 1029 y Fb(\\Rrightarrow)254
+b Fa(\010)0 1151 y Fb(\\Lleftarrow)283 b Fa(\011)0 1273
+y Fb(\\Rrelbar)376 b Fa(\012)0 1395 y Fb(\\dashbar)g
+Fa(\013)0 1517 y Fb(\\shortrightarrow)151 b Fa(\014)0
+1638 y Fb(\\shortleftarrow)180 b Fa(\015)0 1760 y Fb(\\rightmonotail)
+209 b Fa(\016)0 1882 y Fb(\\leftmonotail)238 b Fa(\017)0
+2004 y Fb(\\squiggle)347 b Fa(\020)0 2125 y Fb(\\rightarrow)283
+b Fa(\021)0 2247 y Fb(\\leftarrow)312 b Fa(\022)0 2369
+y Fb(\\leftrightarrow)167 b Fa(\023)0 2491 y Fb(\\leftharpoonup)196
+b Fa(\024)0 2612 y Fb(\\leftharpoondown)138 b Fa(\025)0
+2734 y Fb(\\rightharpoonup)167 b Fa(\026)0 2856 y Fb
+(\\rightharpoondown)109 b Fa(\027)0 2978 y Fb(\\vect)471
+b Fa(\030)0 3099 y Fb(\\of)532 b Fa(\031)0 3221 y Fb(\\dotp)477
+b Fa(\032)0 3343 y Fb(\\cupp)470 b Fa(\033)0 3465 y Fb(\\capp)g
+Fa(\034)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/macros/generic/diagrams/kuvio/arrsy/symbols.tex b/macros/generic/diagrams/kuvio/arrsy/symbols.tex
new file mode 100644
index 0000000000..e7f5ef289b
--- /dev/null
+++ b/macros/generic/diagrams/kuvio/arrsy/symbols.tex
@@ -0,0 +1,43 @@
+
+\input arrsy
+
+\parindent=0pt
+\nopagenumbers
+\parskip=10pt
+
+\def\disp#1{{\tt\string#1}\hfil\hbox to 0pt{\hss$#1$\hss}}
+\def\test#1{\leavevmode\hbox to 4cm{\disp#1}\par}
+
+\test\Rightharpoonup
+\test\Leftharpoondown
+\test\Upharpoonleft
+\test\Downharpoonright
+\test\Rightharpoondown
+\test\Leftharpoonup
+\test\Upharpoonright
+\test\Downharpoonleft
+\test\Rrightarrow
+\test\Lleftarrow
+\test\Rrelbar
+\test\dashbar
+\test\shortrightarrow
+\test\shortleftarrow
+\test\rightmonotail
+\test\leftmonotail
+\test\squiggle
+\test\rightarrow
+\test\leftarrow
+\test\leftrightarrow
+\test\leftharpoonup
+\test\leftharpoondown
+\test\rightharpoonup
+\test\rightharpoondown
+{\def\disp#1{#1}%
+ \leavevmode\test{{\tt \string\vect}\hfil\hbox to 0pt{\hss$\vect{ }$\hss}}
+}%
+\test\of
+\test\dotp
+\test\cupp
+\test\capp
+
+\bye