summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/metapost/expressg/expeg.mp
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 22:58:36 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 22:58:36 +0000
commitac3c55a3216b5988f0e48ba9414ddb059f19a699 (patch)
treea752ab12de05a9ac4511903abc09675172018fd6 /Master/texmf-dist/metapost/expressg/expeg.mp
parentd087712418726a64822e40ce1c0627a514d17975 (diff)
trunk/Master/texmf-dist/metapost
git-svn-id: svn://tug.org/texlive/trunk@104 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/metapost/expressg/expeg.mp')
-rw-r--r--Master/texmf-dist/metapost/expressg/expeg.mp1357
1 files changed, 1357 insertions, 0 deletions
diff --git a/Master/texmf-dist/metapost/expressg/expeg.mp b/Master/texmf-dist/metapost/expressg/expeg.mp
new file mode 100644
index 00000000000..d8c5d64982f
--- /dev/null
+++ b/Master/texmf-dist/metapost/expressg/expeg.mp
@@ -0,0 +1,1357 @@
+%%
+%% This is file `expeg.mp',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% expressg.dtx (with options: `eg')
+%%
+%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com until June 2004
+%% (or pandgwilson@earthlink.net)
+%% Copyright 1996, 2003 Peter R. Wilson
+%%
+%% v1.0 1996/05/09 (first release)
+%% v1.2 1999/11/15
+%% v1.3 2000/05/22
+%% v1.4 2000/07/10
+%% v1.5 2003/07/31
+%% v1.6 2004/02/29
+%% v1.61 2004/03/17
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any
+%% later version.
+%% The latest version of the license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2003/06/01 or later.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% This work consists of the files listed in the README file.
+%% This program is provided under the terms of the
+%% LaTeX Project Public License distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt.
+%%
+%%% EXPEG.MP Example MetaPost EXPRESS-G diagrams
+
+
+verbatimtex \def\twolines#1#2{\vbox{\hbox{#1} \hbox{#2}}} etex
+
+input expressg
+
+beginfig(1)
+
+z1=(0,0);
+drawEXPRESSION(1);
+
+z2bl=z1tr;
+drawINTEGER(2);
+
+z3bl=z2tr;
+drawBOOLEAN(3);
+
+z4bm=z3tm;
+drawcirclebox(4, namespace(btex ABS etex)(nextra))(btex ABS etex);
+
+numeric diam;
+diam = namespace(btex ABS etex)(nextra);
+
+z5bm=z4tm;
+drawcirclebox(5, diam)(btex SAB etex);
+
+x5ml-x5tl = x5tr-x6bl;
+y6mr=y5tm;
+drawENT(6, pconl, enth)(btex an\_ent etex);
+
+z7bm=(x6tm,y6tm+u);
+drawLEVENT(7, pconl, eventh)(btex levent etex);
+
+z8=(x7tl, y7tr+u);
+drawGEVENT(8, pconl, eventh)(btex gevent etex);
+
+z9br=1/8[z3tl,z3tr];
+drawSCHEMA(9, pconl, schemah)(btex a\_schema etex);
+
+numeric xmid, len;
+xmid = x8tr + diam;
+len = 2diam;
+
+z11=(xmid, y1ml); z111=z11 shifted (len, 0);
+drawdashO(11, 111);
+
+pair moveright;
+moveright = (len, 0);
+
+z12=(xmid, y2ml); z121=z12 shifted moveright;
+drawnormalO(12, 121);
+
+z13=(xmid, y3ml); z131=z13 shifted moveright;
+drawthickO(13, 131);
+
+pair moveup;
+moveup = (0, y13-y12);
+
+z14=z13 shifted moveup; z141=z14 shifted moveright;
+drawnormalD(14, 141);
+
+z15=z14 shifted moveup; z151=z15 shifted moveright;
+drawnormalCA(15, 151);
+
+z16=z15 shifted moveup; z161=z16 shifted moveright;
+drawnormalOA(16, 161);
+
+z17=z16 shifted moveup; z171=z17 shifted moveright;
+drawnormalF(17, 171);
+
+z300=(0,y8tm+diam); z301=(x111,y300);
+draw z300--z301 dashes;
+
+numeric mup; mup := onelineh;
+
+z302=(0,y300+mup);
+drawcardbox(302, pconl, onelineh, 1/4onelineh)("");
+
+z303bm=(x302tm, y302tm+mup);
+drawdiamondbox(303, pconl, 2onelineh)(btex jewel etex);
+
+z304=(0, y303tm+mup);
+drawdoublerectangle(304, pconl, 2onelineh, 3/4);
+label(btex top etex, z304ct);
+
+z305=(0, y304tm+mup);
+drawtriplerectangle(305, pconl, 3onelineh, 2/5, 0.2);
+label(btex top etex, z305ct);
+label("middle", z305cm);
+
+z306=(0,y305tm+mup);
+drawindexbox(306, 2pconl, 3onelineh, 3/4pconl, onelineh)(btex pack etex);
+z307=1/8[z306bl,z306tr];
+drawENT(307, 1/4pconl, onelineh)(btex E etex);
+
+z308=(0, y306P.tl+mup);
+z309ml=z308c;
+drawcardbox(308, pconl, 2onelineh, 1/4onelineh)(btex covered etex);
+drawdashboxover(309, pconl, onelineh);
+
+z310bm=(x306bm,y309tm+mup);
+drawovalbox(310, 2pconl, 2onelineh)("");
+
+z311ml=(x310mr+mup, y310ml);
+drawroundedbox(311, 2pconl, 2onelineh, 1/2onelineh)("rounded");
+
+z312ml=(x311mr+mup, y311mr);
+drawroundedbox(312, 2pconl, 2onelineh, 3/2onelineh)(btex large radius etex);
+
+z314=(x312bm-1/4pconl, y312bm-1/2mup);
+hiderectangle(314, 1/2pconl, (3/2onelineh + mup));
+
+z315tm=(x312bm, y312bm-mup);
+drawdashellipse(315, 2pconl, 2onelineh);
+
+z316tm=(x315bm, y315bm-mup);
+drawdashcircle(316, diam);
+
+z317bc=(x311bm,y304br);
+drawdrum(317, pconl, 3onelineh)(btex drum etex);
+z317A=(x317tc, y317tc+2onelineh);
+drawnormalthree(317tml, 317A, 317tmr);
+smooth(317tml, 317A, 317tmr);
+
+z320bm = (x317bm, y302);
+drawstickman(320, onelineh, 2onelineh);
+
+z325bm = (x320bm, y306);
+drawoutputbox(325, pconl, 2onelineh)(btex output etex);
+
+z330 = (x320bm, y309ml);
+drawCircledDot(330, 3/2onelineh);
+
+z401bm=(1/2[x11,x111], y301+mup);
+drawcircleA(401, diam);
+
+z402=(xmid, y401tm+mup); z502=(x111, y402);
+drawdashA(402, 502);
+
+z403=(xmid, y402+mup); z503=(x111, y403);
+drawdashOA(403, 503);
+
+z404=(xmid, y403+mup); z504=(x111, y404);
+drawnormalOD(404, 504);
+
+z405=(xmid, y404+mup); z505=(x111, y405);
+drawnormalCD(405, 505);
+
+z406=(xmid, y405+mup); z506=(x111, y406);
+drawnormalDCA(406, 506);
+
+numeric ang; ang = 180/7;
+z600=(xmid, y406+2mup);
+z699=(x600+len, y600);
+z601=z699 rotatedaround(z600, ang);
+z602=z699 rotatedaround(z600, 2ang);
+z603=z699 rotatedaround(z600, 3ang);
+z604=z699 rotatedaround(z600, 4ang);
+z605=z699 rotatedaround(z600, 5ang);
+z606=z699 rotatedaround(z600, 6ang);
+z607=z699 rotatedaround(z600, 7ang);
+drawnormalCA(600,601);
+drawnormalOA(600,602);
+drawnormalF(600,603);
+drawdashA(600,604);
+drawnormalOD(600,605);
+drawnormalCD(600,606);
+
+endfig; % end figure 1
+
+beginfig(2) % schema level model
+
+numeric lb, hb; % length & height of boxes
+lb=20u; hb=schemah;
+numeric upshift; % vertical distance between rows
+upshift = 20u;
+numeric sideshift; % horizontal distance between boxes
+sideshift = 10u;
+
+%%% bottom row
+
+z9=(lb+sideshift,0);
+drawSCHEMA(9, lb, hb)("nine");
+
+z11=(x9br+sideshift,y9);
+drawSCHEMA(11, lb, hb)("eleven");
+
+%%% middle row
+
+z1=(0,y9tl+upshift);
+drawSCHEMA(1, lb, hb)("one");
+
+z3=(x1br+sideshift, y1);
+drawSCHEMA(3, lb, hb)("three");
+
+z5=(x3br+sideshift, y1);
+drawSCHEMA(5, lb, hb)("five");
+
+z7=(x5br+sideshift, y1);
+drawSCHEMA(7, lb, hb)("seven");
+
+%%% top row
+
+x50 = 1/2[x3br,x5bl];
+z31bm=(x50,y1tl+upshift);
+drawSCHEMA(31, lb, hb)("thirtyone");
+
+%%% connectors
+
+drawdashOO(9tm, 3bm); % three/nine
+drawdashO(5bm, 11tm); % five/eleven
+drawdashO(3ml, 1mr); % three/one
+drawdashO(3mr, 5ml); % three/five
+drawdashOO(9mr, 11ml); % nine/eleven
+
+%%% thirtyone/nine
+z90=((x1bl-sideshift), y9ml);
+z31A=3/4[z31bl,z31tl];
+VH(90, 31A);
+drawdashO(90vh, 31A);
+drawdashthreeO(90vh, 90, 9ml);
+pickup thickpen;
+draw z90;
+pickup normalpen;
+label.lft("z90", z90);
+
+%%% one/eleven
+z1A=1/3[z1bl,z1br];
+z11A=(x11bm, (y11bm-sideshift));
+VH(1A, 11A);
+drawdashthree(1A, 1A.vh, 11A); % note it is 1A.vh and not 1Avh
+drawdashO(11A, 11bm);
+dotlabel.rt("z11A", z11A);
+dotlabel.lft("z1A.vh", z1A.vh); % note it is z1A.vh and not z1Avh
+
+%%% thirtyone/eleven
+z31B=3/4[z31br,z31tr];
+x31BC=x7br+sideshift;
+HxH(31B, 31BC, 11mr);
+drawdashfourO(31B, 31B.hxh, 11mr.hxh, 11mr);
+
+%%% thirtyone/seven
+z31D=1/4[z31br,z31tr];
+VH(7tm, 31D);
+drawnormalthreeO(31D, 7tm.vh, 7tm);
+
+%%% thirtyone/one
+z31C=1/4[z31bl,z31tl];
+VH(1tm, 31C);
+drawdashO(1tm.vh, 31C);
+drawdashO(1tm.vh, 1tm);
+
+%%% thirtyone/three
+z31E=1/4[z31bl,z31br];
+VhV(31E, 3tm);
+drawnormalfourO(31E, 31E.vhv, 3tm.vhv, 3tm);
+
+%%% thirtyone/five
+z31F=3/4[z31bl,z31br];
+VhV(31F, 5tm);
+drawnormalfourO(31F, 31F.vhv, 5tm.vhv, 5tm);
+
+%%% labeled arrow
+z3111=1/4[z31B,z31B.hxh];
+numeric arrowsize;
+arrowsize := schemah;
+z3112=(x3111, y3111+arrowsize);
+drawnormalCA(3112, 3111);
+label.rt(btex an\_import etex, 1/2[z3111, z3112]);
+
+endfig; % end fig 2
+
+
+%%%% some commonly used variables & values
+
+numeric pl, ph; % length & height of numeric page connectors
+pl:=pconl; ph:=pconh; % for eg., 9,9 (9,9)
+numeric plnamed; % length of named page connector
+numeric irh; % height of interschema boxes
+irh:=ish; % normally one line of text
+numeric sdtl, sdth; % length & height of SDT (e.g. INTEGER) boxes
+sdtl:=sdtbl; sdth:=sdtbh;
+numeric edtl, edth; % length & height of enum boxes (inset is sdtbs)
+edth:=sdtbh; % normally one text line
+numeric el, eh; % length & height of entity boxes
+eh:=enth; % normally one text line
+numeric upshift; % vertical space between rows of boxes
+numeric nextup; % vertical space between bases of rows of boxes
+picture sindex, pindex;
+sindex := btex eleven.Index etex; % interschema reference text
+pindex := btex 9,9 Index etex; % page reference text
+numeric slindex, plindex;
+slindex := namespace(sindex)(nextra); % length of Index interschema
+plindex := namespace(pindex)(nextra); % length of Index page reference
+numeric hspace[]; % horizontal spaces
+numeric lyc[]; % Y coords of box bases
+
+%%%%%%%%%%% end commonly used variables & values
+
+beginfig(3) % example fig 3
+%%%drawgrid;
+
+edtl := namespace(btex standard\_data\_name etex)(niextra);
+upshift=2sdth;
+nextup=sdth+upshift;
+%%% the y coords of box bases
+lyc1:=0;
+lyc2:=lyc1+nextup;
+lyc3:=lyc2+nextup;
+lyc4:=lyc3+nextup;
+lyc5:=lyc4+nextup;
+lyc6:=lyc5+nextup;
+lyc7:=lyc6+nextup;
+lyc8:=lyc7+nextup;
+hspace1 := 1/3edtl; % space between data enums
+hspace2 := 2/3edtl; % initial space at start of second row
+
+%%% bottom two rows (1 & 2)
+
+z11=(0,lyc1);
+drawENUM(11, edtl, edth)(btex coordinates etex);
+
+z22=(hspace2, lyc2);
+drawENUM(22, edtl, edth)(btex solution\_data etex);
+
+z31=(x11br+hspace1, lyc1);
+drawENUM(31, edtl, edth)(btex pressure\_loads etex);
+
+z42=(x22br+hspace1, lyc2);
+drawENUM(42, edtl, edth)(btex nondimensional etex);
+
+z51=(x31br+hspace1, lyc1);
+drawENUM(51, edtl, edth)(btex temperature etex);
+
+z62=(x42br+hspace1, lyc2);
+drawENUM(62, edtl, edth)(btex force\_loads etex);
+
+%%% third row (horizontal line between 2 & 4 row)
+
+z13=(x11tm,lyc3);
+VyV(11tm, 13, 62tm);
+drawnormal(11tm.vyv, 62tm.vyv);
+z23=(x22tm,lyc3); z33=(x31tm,lyc3); z43=(x42tm,lyc3); z53=(x51tm,lyc3);
+drawnormalO(11tm.vyv,11tm);
+drawnormalO(23,22tm);
+drawnormalO(33,31tm);
+drawnormalO(43,42tm);
+drawnormalO(53,51tm);
+drawnormalO(62tm.vyv,62tm);
+
+%%% fourth row
+
+z3224=1/3[z13,z62tm.vyv];
+z3554=2/3[z13,z62tm.vyv];
+
+%%% standard_data_name
+z24bm=(x3224,lyc4);
+drawSELECT(24, edtl, edth)(btex standard\_data\_name etex);
+drawnormal(24bm,3224);
+
+%%% adhoc_data_name
+z54bm=(x3554,lyc4);
+drawTYPE(54, edtl, edth)(btex adhoc\_data\_name etex);
+
+%%% STRING
+z64br=(x62br,lyc4);
+drawSTRING(64);
+
+%%% fifth row
+
+z35=(1/2[x24tm,x54tm], lyc5);
+VyV(24tm, 35, 54tm);
+drawnormalthreeO(35, 24tm.vyv, 24tm);
+drawnormalthreeO(35, 54tm.vyv, 54tm);
+
+%%% sixth row
+
+z36bm=(x35,lyc6);
+drawSELECT(36,edtl, edth)(btex data\_name etex);
+drawnormal(36bm,35);
+
+%%% data_name
+z66=(x62,lyc6);
+drawPREF(66, sdtl, ph)(btex 3,1 (4) etex);
+
+%%%% rest of the connectors
+
+%%% adhoc/STRING (54, 64)
+drawnormalO(54mr,64ml);
+
+%%% PREF/data_name (36, 66)
+drawdashO(66ml,36mr);
+
+endfig; % end fig 3
+
+
+beginfig(4) % example 4
+%%%drawgrid;
+
+%%% length of named page reference boxes
+plnamed := namespace(btex 9,9 data\_name etex)(nextra);
+
+%%% length of entity boxes
+el := namespace(btex (ABS) Data\_t etex)(nextra);
+
+upshift := 2sdth; % vertical space between boxes
+nextup := sdth+upshift; % vertical space between bases of boxes
+hspace1 := 1/2el; % space between entity boxes
+
+%%% the y coords of box bases
+lyc1:=0;
+lyc2:=lyc1+nextup;
+lyc3:=lyc2+nextup;
+lyc4:=lyc3+nextup;
+lyc5:=lyc4+nextup;
+lyc6:=lyc5+nextup;
+lyc7:=lyc6+nextup;
+lyc8:=lyc7+nextup;
+
+%%%% 2nd row
+
+%%% IntArray
+z12=(0,lyc2);
+drawENT(12, el, eh)(btex IntArray etex);
+
+%%% RealArray
+z22=(x12br+hspace1, lyc2);
+drawENT(22, el, eh)(btex RealArray etex);
+
+%%% CharArray
+z42=(x22br+hspace1, lyc2);
+drawENT(42, el, eh)(btex CharArray etex);
+
+%%% BitArray
+z52=(x42br+hspace1, lyc2);
+drawENT(52, el, eh)(btex BitArray etex);
+
+%%%% 1st row
+
+z11bm=(x12bm,lyc1);
+drawINTEGER(11);
+
+z21bm=(x22bm,lyc1);
+drawREAL(21);
+
+z41bm=(x42bm,lyc1);
+drawSTRING(41);
+
+z51bm=(x52bm,lyc1);
+drawBINARY(51);
+
+%%% 3rd row
+
+y13= y23= y43= y53=lyc3;
+x13=x12tm; x23=x22tm; x43=x42tm; x53=x52tm;
+drawthick(13,53); % horizontal line
+%%% vertical connectors
+drawthickO(13,12tm); drawthickO(23,22tm);
+drawthickO(43, 42tm); drawthickO(53, 52tm);
+
+z33=1/2[z13,z53]; % midpoint of horizontal line
+
+%%% 4th row
+
+%%% Data_t
+z34bm=(x33,lyc4);
+drawENT(34, el, 3eh)(btex \twolines{(ABS)}{Data\_t} etex);
+drawthick(34bm,33);
+label.urt("1", z33); % label the connection point
+
+%%% Index
+z14=(0,lyc4);
+drawPREF(14, plindex, ph)(pindex);
+
+%%% INTEGER
+z54br=(x51br,lyc4);
+drawINTEGER(54);
+
+%%% 5th row
+
+lyc5:=y34tm-ph; % change the initial y coord value
+
+%%% Index
+z15=(0,lyc5);
+drawPREF(15, plindex, ph)(pindex);
+
+%%% DataType
+z55=(x54,lyc5);
+drawPREF(55, plnamed, ph)(btex 3,1 data\_name etex);
+
+%%% 6th row
+
+%%% PREF to Data_t
+lyc6:=lyc5+nextup;
+z36bm=(x34tm,lyc6);
+drawPREF(36, pl, ph)(btex 7,5 (6) etex);
+
+%%%% attributes
+
+%%% Sizes Data_t/Index (34, 14)
+z3414=(x34,y14mr);
+drawnormal(3414,14mr);
+label.ulft(btex Sizes A[1:Limit] etex, z3414);
+
+%%% num Data_t/INTEGER (34, 54)
+z3454=(x34mr,y54ml);
+drawnormalO(3454,54ml);
+label.urt(btex (DER) num etex, z3454);
+
+%%% Limit Data_t/Index (34, 15)
+z3415=(x34,y15mr);
+drawnormal(3415,15mr);
+label.ulft(btex Limit etex, z3415);
+
+%%% Kind Data_t/data_name (34, 55)
+z3455=(x34mr, y55ml);
+drawnormal(3455, 55ml);
+label.urt(btex Kind etex, z3455);
+
+%%% PREF into Data_t (36, 34)
+drawdashO(36bm, 34tm);
+
+%%% Data IntArray/INTEGER (12, 11)
+drawnormalO(12bm, 11tm);
+label.lrt(btex Data A[1:num] etex, z12bm);
+
+%%% Data RealArray/REAL (22, 21)
+drawnormalO(22bm, 21tm);
+label.lrt(btex Data A[1:num] etex, z22bm);
+
+%%% Data CharArray/STRING (42, 41)
+drawnormalO(42bm, 41tm);
+label.lrt(btex Data A[1:num] etex, z42bm);
+
+%%% Data BitArray/BINARY (52, 51)
+drawnormalO(52bm, 51tm);
+label.lrt(btex Data A[1:num] etex, z52bm);
+
+endfig; % end fig 4
+
+beginfig(5) % example 5
+%%drawgrid;
+
+plnamed := namespace(btex 7,4 Unstructured\_Donor etex)(nextra);
+
+numeric irls, irll; % length of short and long ISR boxes
+irls = namespace(btex eleven.MeshLocation etex)(nextra);
+irll = namespace(btex eleven.MeshConnectivityType etex)(nextra);
+
+upshift := irh;
+nextup := irh+upshift;
+
+numeric maxrx; % max x coordinate value of LH of right column boxes
+maxrx := maxx-irrl;
+numeric xmid; % x coord of figure center
+xmid := 1/2[irls, maxx-irll];
+
+el := namespace(btex MeshConnectivity1\_1 etex)(nextra);
+eh := irh;
+
+%%% y coords
+lyc1 := 0;
+lyc2 := lyc1+nextup;
+lyc3 := lyc2+nextup;
+lyc4 := lyc3+nextup+irh;
+lyc5 := lyc4+nextup;
+lyc6 := lyc5+nextup;
+lyc7 := lyc6+nextup;
+lyc8 := lyc7+nextup;
+lyc9 := lyc8+nextup;
+
+%%% Zcol/row
+%%% row 1
+
+%%% PREF for Overlapping
+z21bm=(xmid,lyc1);
+drawPREF(21, pl, ph)(btex 5,3 (8) etex)
+
+%%% row 2
+
+%%% OverlappingArea
+z22bm=(x21bm,lyc2);
+drawENT(22, el, eh)(btex OverlappingArea etex);
+
+%%% row 3
+
+%%% IndexArray
+z13=(pl,lyc3);
+drawISR(13, irls, irh)(btex eleven.IndexArray etex);
+
+%%% Index
+z23bm=(x22bm,lyc3);
+drawISR(23, slindex, irh)(sindex);
+
+%%% MeshLocation
+z33br=(maxx,lyc3);
+drawISR(33, irls, irh)(btex eleven.MeshLocation etex);
+
+%%% row 4
+
+%%% MeshConnectivity
+z24bm=(x23bm,lyc4);
+drawENT(24, el, eh)(btex MeshConnectivity etex);
+
+%%% PREF for MeshConnectivity
+z14ml=(pl,y24ml);
+drawPREF(14, pl, ph)(btex 5,2 (8) etex);
+
+%%% Structured_Donor
+z34br=(maxx,lyc4);
+drawPREF(34, plnamed, ph)(btex 7,5 Structured\_Donor etex);
+
+%%% row 5
+
+%%% Unstructured_donor
+z35br=(maxx,lyc5);
+drawPREF(35, plnamed, ph)(btex 7,4 Unstructured\_Donor etex);
+
+%%% row 6
+
+%%% MeshConnType
+z36br=(maxx,lyc6);
+drawISR(36, irll, irh)(btex eleven.MeshConnectivityType etex);
+
+%%% row 7
+
+%%% IndexRange
+z17=(0,lyc7);
+drawISR(17, irls, irh)(btex eleven.IndexRange etex);
+
+%%% INTEGER
+x27bm=x24bm; y27ml=y17mr;
+drawINTEGER(27);
+
+%%% Zone
+z37br=(maxx,lyc7);
+drawISR(37, irls, irh)(btex seven.Zone etex);
+
+%%% row 8
+
+%%% 1to1
+z28bm=(x24bm,lyc8);
+drawENT(28, el, eh)(btex MeshConnectivity1\_1 etex);
+
+%%% row 9
+
+%%% PREF to 1to1
+z29bm=(x28bm,lyc9);
+drawPREF(29, pl, ph)(btex 5,1 (8) etex);
+
+%%%% attributes, etc
+
+drawthickO(21tm,22bm); % PREF to Overlap (21, 22)
+drawthickO(14mr,24ml); % PREF to MeshConn (14, 24)
+drawthickO(29bm,28tm); % PREF to 1to1 (29, 28)
+
+%%% PointListSize (22, 23)
+drawdashO(22tm,23bm);
+label.llft(btex PointListSize etex, z23bm);
+
+%%% PointRange (22, 17)
+z22A=1/4[z22bl,z22tl]; z17A=(1/2[0,x13], y17);
+VH(17A,22A);
+drawdashthreeO(22A, 17A.vh, 17A);
+label.ulft(btex PointRange etex, z22A);
+
+%%% PointList (22, 13)
+z22B=3/4[z22bl,z22tl];
+VH(13bm,22B);
+drawdashthreeO(22B, 13bm.vh, 13bm);
+label.ulft(btex PointList etex, z22B);
+
+%%% MeshLocation (22, 33)
+z22C=1/4[z22br,z22tr];
+z33B=2/3[z33bl,z33br];
+VH(33B,22C);
+drawnormalthreeO(22C, 33B.vh, 33B);
+label.urt(btex (DER) Location etex, z22C);
+
+%%% Meshloc (22, 33)
+z22D=3/4[z22br,z22tr];
+z33A=1/3[z33bl,z33br];
+VH(33A,22D);
+drawdashthreeO(22D, 33A.vh, 33A);
+label.urt(btex Meshloc etex, z22D);
+
+%%% PointListSize (24, 23)
+drawnormalO(24bm, 23tm);
+label.ulft(btex PointListSize etex, z23tm);
+
+%%% StructuredDonor (24, 34)
+z24A=(x24br,y34ml);
+draw z24A--z34ml dashes;
+label.lrt(btex StructuredDonor etex, z24A);
+
+%%% UnstructuredDonor (24, 35)
+z24B=3/4[z24br,z24tr];
+HvH(24B,35ml);
+drawdashfourO(24B, 24B.hvh, 35ml.hvh, 35ml);
+label.urt(btex UnstructuredDonor etex, z24B.hvh);
+
+%%% Meshloc (24, 33)
+z24C=4/6[z24bl,z24br];
+z33C=(x33A,y33tm);
+y2433C=1/3[y33C,y24C];
+VyV(24C, 2433C, 33C);
+drawdashfourO(24C, 24C.vyv, 33C.vyv, 33C);
+label.lrt(btex Meshloc etex, z24C.vyv);
+
+%%% Location (24, 33)
+z24D=5/6[z24bl,z24br];
+z33D=(x33B,y33tm);
+y2433D=2/3[y33D,y24D];
+VyV(24D, 2433D, 33D);
+drawnormalfourO(24D, 24D.vyv, 33D.vyv, 33D);
+label.lrt(btex (DER) Location etex, z24D.vyv);
+
+%%% ConnectivityType (24, 36)
+z24H=(x24D,y24tr);
+z36H=z36bm;
+y2436H=1/2[y35tr,y36br];
+VyV(24H, 2436H, 36H);
+drawnormalfourO(24H, 24H.vyv, 36H.vyv, 36H);
+label.urt(btex (DER) ConnectivityType etex, z24H.vyv);
+
+%%% Meshcon (24, 36)
+z24G=(x24C,y24tr);
+z36G=z36ml;
+VH(24G,36G);
+drawdashthreeO(24G, 24G.vh, 36G);
+label.urt(btex Meshcon etex, z24G.vh);
+
+%%% K (24, 27)
+drawnormalO(24tm, 27bm);
+label.ulft(btex K etex, z24tm);
+
+%%% PointRange (24, 17)
+z24E=1/4[z24tl,z24tr];
+x17br-x17E = x17A-x17bl;
+y17E = y17A;
+VhV(24E,17E);
+drawdashfourO(24E, 24E.vhv, 17E.vhv, 17E);
+label.ulft(btex PointRange etex, z24E);
+
+%%% PointList (24, 13)
+z24F=1/4[z24bl,z24br];
+z13F=1/2[z13tl,z13tr];
+VhV(24F,13F);
+drawnormalfourO(24F, 24F.vhv, 13F.vhv, 13F);
+label.llft(btex PointList etex, z24F);
+
+%%% N (28, 27)
+z27A=1/5[z27tl,z27tr];
+z28A=(x27A,y28bl);
+drawnormalO(28A,27A);
+label.llft(btex N etex, z28A);
+
+%%% trans (28, 27)
+z27B=1/2[z27tl,z27tr];
+z28B=(x27B,y28bl);
+drawdashO(28B,27B);
+label.lrt(btex \twolines{trans}{A[1:N]} etex, z28B);
+
+%%% Transform (28, 27)
+z27C=1/2[z27br,z27tr];
+z28C=(1/2[x27C,x28br], y28br);
+VH(28C,27C);
+drawnormalthreeO(28C,28C.vh,27C);
+label.lrt(btex (DER) Transform A[1:N] etex , z28C);
+
+%%% DonorZone (28, 37)
+z28D=1/2[z28br,z28tr];
+z37D=z37tm;
+VH(37D,28D);
+drawdashthreeO(28D,37D.vh,37D);
+label.urt(btex DonorZone etex, z28D);
+
+%%% DonorPointRange (28, 17)
+z28G=3/4[z28bl,z28tl];
+z17G=(x17A,y17tl);
+VH(17G,28G);
+drawnormalthreeO(28G,17G.vh,17G);
+label.ulft(btex DonorPointRange etex, z28G);
+
+%%% PointRange (28, 17)
+z28H=1/4[z28bl,z28tl];
+z17H=(x17E,y17G);
+VH(17H,28H);
+drawnormalthreeO(28H,17H.vh,17H);
+label.ulft(btex PointRange etex, z28H);
+
+endfig; % end fig 5
+
+
+beginfig(6) % example 6 EXPRESS-G
+%%%drawgrid;
+
+upshift := 3/2onelineh;
+nextup := onelineh+upshift;
+
+el := namespace(btex manufacturer etex)(nextra);
+eh := onelineh;
+
+hspace1 := 1/2el;
+
+%%% y coords
+lyc1 := 0;
+lyc2 := lyc1+nextup;
+lyc3 := lyc2+nextup;
+lyc4 := lyc3+nextup;
+lyc5 := lyc4+nextup;
+
+%%% Zcol/row
+
+%%% rows 4 and 5
+z14=(0,lyc4);
+drawENT(14, el, eh)(btex manufacturer etex);
+
+z25=(x14br+hspace1, lyc5);
+drawSTRING(25);
+
+z34=(x25br+hspace1, lyc4);
+drawENT(34, el, eh)(btex car\_model etex);
+
+%%% row 3
+
+z33bm=(x34bm, lyc3);
+drawENT(33, el, eh)(btex car etex);
+
+%%% row 2
+
+z22=(x25, lyc2);
+drawINTEGER(22);
+
+%%% row 1
+
+z21=(x22, lyc1);
+drawSTRING(21);
+
+%%% attributes
+
+%%% manufacturer name (14, 25)
+VH(14tm, 25ml);
+drawnormalthreeO(14tm, 14tm.vh, 25ml);
+label.urt(btex *name etex, z14tm.vh);
+
+%%% model name (34, 25)
+VH(34tm, 25mr);
+drawnormalthreeO(34tm, 34tm.vh, 25mr);
+label.ulft(btex *name etex, z34tm.vh);
+
+%%% made_by (34, 14)
+drawnormalO(34ml, 14mr);
+label.ulft(btex made\_by etex, z34ml);
+
+%%% model_type (33, 34)
+drawnormalO(33tm, 34bm);
+label.urt(btex model\_type etex, z33tm);
+
+%%% DER made_by (33, 14)
+VH(14bm, 33ml);
+drawnormalthreeO(33ml, 14bm.vh, 14bm);
+label.ulft(btex (DER) *made\_by etex, z33ml);
+
+%%% year (33, 22)
+z33A=1/3[z33bl, z33br];
+VH(33A, 22mr);
+drawnormalthreeO(33A, 33A.vh, 22mr);
+label.ulft(btex year etex, z33A.vh);
+
+%%% serial_no
+z33B=2/3[z33bl, z33br];
+VH(33B, 21mr);
+drawnormalthreeO(33B, 33B.vh, 21mr);
+label.ulft(btex *serial\_no etex, z33B.vh);
+
+endfig; % end fig 6
+
+
+beginfig(7) % example 7
+%%%drawgrid;
+
+el := namespace(btex MANUFACTURER etex)(niextra);
+eh := onelineh;
+
+hspace1 := namespace(btex made by maker of etex)(4ndextra);
+
+hspace2 := 6onelineh; % height of CAR
+hspace3 := 5onelineh; % space between rows
+hspace4 := 3onelineh; % height of MANUFACTURER
+
+%%% y coords
+lyc1 := 0;
+lyc2 := lyc1+hspace2+hspace3;
+
+%%% Zcol/row
+
+%%% row 2
+
+z12=(0, lyc2);
+drawENT(12, el, hspace4)("");
+x121=x12+sdtbs;
+label.rt(btex MANUFACTURER etex, (x121, 2/3[y12bl, y12tl]));
+label.rt(btex * manuf-name etex, (x121, 1/3[y12bl, y12tl]));
+
+z22=(x12br+hspace1, lyc2);
+drawENT(22, el, hspace4)("");
+x221=x22+sdtbs;
+label.rt(btex CAR-MODEL etex, (x221, 2/3[y12bl, y12tl]));
+label.rt(btex * model-name etex, (x221, 1/3[y12bl, y12tl]));
+
+%%% row 1
+
+z21=(x22, lyc1);
+drawENT(21, el, hspace2)("");
+x211=x21+sdtbs;
+label.rt(btex CAR etex, (x211, 5/6[y21bl, y21tl]));
+label.rt(btex o year etex, (x211, 4/6[y21bl, y21tl]));
+label.rt(btex o model (R) etex, (x211, 3/6[y21bl, y21tl]));
+label.rt(btex * serial-no etex, (x211, 2/6[y21bl, y21tl]));
+label.rt(btex * maker (R) etex, (x211, 1/6[y21bl, y21tl]));
+
+%%%%% relationship lines
+
+%%% MANUFACTURER / CAR-MODEL (12, 22)
+drawnormalDCA(12mr, 22ml);
+drawnormalCA(22ml, 12mr);
+label.urt(btex { }{ }made by etex, z12mr);
+label.llft(btex maker of{ }{ } etex, z22ml);
+
+%%% MANUFACTURER / CAR (12, 21)
+VH(12bm, 21ml);
+drawnormalCA(12bm.vh, 12bm);
+drawnormalDCA(12bm.vh, 21ml);
+label.llft(btex { }{ }made by etex, z12bm);
+label.ulft(btex maker of{ }{ } etex, z21ml);
+
+%%% CAR-MODEL / CAR (22, 21)
+drawnormalDCA(22bm, 21tm);
+drawnormalCA(21tm, 22bm);
+label.lrt(btex { }one of etex, z22bm);
+label.ulft(btex type of{ } etex, z21tm);
+
+endfig; % end fig 7
+
+
+beginfig(8) % example 8 IDEF1X
+%%%drawgrid;
+
+el := namespace(btex MANUFACTURER etex)(niextra);
+eh := onelineh;
+
+hspace1 := namespace(btex made by maker of etex)(4ndextra);
+
+hspace2 := 5onelineh; % height of CAR
+hspace3 := 5onelineh; % space between rows
+hspace4 := 3onelineh; % height of MANUFACTURER
+
+%%% y coords
+lyc1 := 0;
+lyc2 := lyc1+hspace2+hspace3;
+
+%%% Zcol/row
+
+%%% row 2
+
+z12=(0, lyc2);
+drawdoublerectangle(12, el, hspace4, 1/2);
+label.urt(btex Manufacturer etex, z12tl);
+x121=x12+sdtbs;
+label.rt(btex manuf-name etex, (x121, 3/4[y12bl, y12tl]));
+
+z22=(x12br+hspace1, lyc2);
+drawdoublerectangle(22, el, hspace4, 1/2);
+label.urt(btex Car-model etex, z22tl);
+x221=x22+sdtbs;
+label.rt(btex Model-name etex, (x221, 3/4[y12bl, y12tl]));
+label.rt(btex Manuf-name (FK) etex, (x221, 1/4[y12bl, y12tl]));
+
+%%% row 1
+
+z21=(x22, lyc1);
+drawroundedbox(21, el, hspace2, 2sdtbs)("");
+label.urt(btex Car etex, z21tl);
+draw z21ml--z21mr;
+x211=x21+sdtbs;
+label.rt(btex Serial-no etex, (x211, 5/6[y21bl, y21tl]));
+label.rt(btex Manuf-name (FK) etex, (x211, 4/6[y21bl, y21tl]));
+label.rt(btex Model-name (FK) etex, (x211, 2/6[y21bl, y21tl]));
+label.rt(btex Year etex, (x211, 1/6[y21bl, y21tl]));
+
+%%%%% relationship lines
+
+%%% MANUFACTURER / CAR-MODEL (12, 22)
+drawnormalD(12mr, 22ml);
+label.top(btex of etex, 1/2[z12mr, z22ml]);
+
+%%% MANUFACTURER / CAR (12, 21)
+VH(12bm, 21ml);
+drawnormalthreeD(12bm, 12bm.vh, 21ml);
+label.top(btex makes etex, 1/2[z12bm.vh, z21ml]);
+label.ulft(btex P{ } etex, z21ml);
+
+%%% CAR-MODEL / CAR (22, 21)
+drawnormalD(22bm, 21tm);
+label.lft(btex of etex, 1/2[z21tm,z22bm]);
+label.urt(btex { }P etex, z21tm);
+
+endfig; % end fig 8
+
+
+beginfig(9) % example 9 OMT
+%%%drawgrid;
+
+el := namespace(btex {\bf MANUFACTURER} etex)(niextra);
+eh := onelineh;
+
+hspace1 := namespace(btex made by maker of etex)(4ndextra);
+
+hspace2 := 4onelineh; % height of CAR
+hspace3 := 4onelineh; % space between rows
+hspace4 := 3onelineh; % height of MANUFACTURER
+
+%%% y coords
+lyc1 := 0;
+lyc2 := lyc1+hspace2+hspace3;
+
+%%% Zcol/row
+
+%%% row 2
+
+z12=(0, lyc2);
+drawdoublerectangle(12, el, hspace4, 1/2);
+x121=x12+sdtbs;
+label.rt(btex {\bf Manufacturer} etex, (x121, 3/4[y12bl, y12tl]));
+label.rt(btex name : String etex, (x121, 1/4[y12bl, y12tl]));
+
+z22=(x12br+hspace1, lyc2);
+drawdoublerectangle(22, el, hspace4, 1/2);
+x221=x22+sdtbs;
+label.rt(btex {\bf Car Model} etex, (x221, 3/4[y22bl, y22tl]));
+label.rt(btex name: String etex, (x221, 1/4[y22bl, y22tl]));
+
+%%% row 1
+
+z21=(x22, lyc1);
+drawdoublerectangle(21, el, hspace2, 1/3);
+x211=x21+sdtbs;
+label.rt(btex {\bf Car} etex, (x211, 5/6[y21bl, y21tl]));
+label.rt(btex serial-no : String etex, (x211, 4/9[y21bl, y21tl]));
+label.rt(btex year : Integer etex, (x211, 2/9[y21bl, y21tl]));
+
+%%%%% relationship lines
+
+%%% MANUFACTURER / CAR-MODEL (12, 22)
+drawnormalD(12mr, 22ml);
+label.top(btex {\it makes} etex, 1/2[z12mr, z22ml]);
+label.ulft(btex 1+{ } etex, z22ml);
+
+%%% MANUFACTURER / CAR (12, 21)
+VH(12bm, 21ml);
+drawnormalthreeD(12bm, 12bm.vh, 21ml);
+label.top(btex {\it makes} etex, 1/2[z12bm.vh, z21ml]);
+label.ulft(btex 1+{ } etex, z21ml);
+
+%%% CAR-MODEL / CAR (22, 21)
+drawnormalD(22bm, 21tm);
+label.lft(btex {\it produced as} etex, 1/2[z21tm,z22bm]);
+
+endfig; % end fig 9
+
+
+beginfig(10) % example 10 E-R
+%%%drawgrid;
+
+numeric diam; diam := 2onelineh;
+
+upshift := diam; % circle diameter
+nextup := diam+upshift;
+
+el := namespace(btex MANUFACTURER etex)(niextra);
+eh := onelineh;
+
+numeric dl, dh; % length and height of diamond boxes
+dl := 1/2el; dh := 2eh;
+
+numeric marg; marg := 4u; % double the seperation between parallel lines
+
+hspace1 := 1/2el;
+
+%%% y coords
+lyc1 := 0;
+lyc2 := lyc1+nextup;
+lyc3 := lyc2+nextup;
+lyc4 := lyc3+nextup;
+lyc5 := lyc4+nextup;
+
+%%% Zcol/row
+%%% row 4
+
+z14=(0,lyc4);
+drawENT(14, el, eh)(btex manufacturer etex);
+
+z34ml=(x14br+hspace1, y14mr);
+drawdiamondbox(34, dl, dh)(btex has etex);
+
+z54ml=(x34mr+hspace1, y34mr);
+drawENT(54, el, eh)(btex car\_model etex);
+
+%%% row 5
+
+z15bm=(x14bm, lyc5);
+drawcirclebox(15, diam)(btex Name etex);
+
+z55bm=(x54bm, lyc5);
+drawcirclebox(55, diam)(btex Name etex);
+
+%%% row 3
+
+z53bm=(x54bm, lyc3);
+drawdiamondbox(53, dl, dh)(btex of etex);
+
+z13c=(x14bm, y53c);
+drawtwodiamondbox(13, dl+marg, dh+marg, 2/5marg)(btex Makes etex);
+
+%%% row 2
+
+z32bm=(x34bm, lyc2);
+drawENT(32, el, eh)(btex car etex);
+z31c=z32c;
+drawENT(31, el+marg, eh+marg)("");
+
+%%% row 1
+
+z21bm=(x32bl, lyc1);
+drawcirclebox(21, 5/4diam)(btex \twolines{Serial}{No} etex);
+
+z41bm=(x32br, lyc1);
+drawcirclebox(41, diam)(btex Year etex);
+
+%%%%%% lines
+
+%%% Name / manufacturer (15, 14)
+drawnormal(15bm, 14tm);
+
+%%% Name / model (55, 54)
+drawnormal(55bm, 54tm);
+
+%%% Mnf / has (14, 34)
+drawnormal(14mr, 34ml);
+label.top(btex 1 etex, 1/2[z14mr,z34ml]);
+
+%%% has/ model (34, 54)
+drawnormal(34mr, 54ml);
+label.top(btex N etex, 1/2[z34mr,z54ml]);
+
+%%% Mnf / makes (14, 13)
+drawnormal(14bm, 13tm);
+label.rt(btex 1 etex, 1/2[z14bm,z13tm]);
+
+%%% model / of (54, 53)
+drawnormal(54bm, 53tm);
+label.rt(btex 1 etex, 1/2[z54bm,z53tm]);
+
+%%% makes / car (13, 31)
+drawnormal(13bm, 31ml);
+z31A=(x31ml, y31ml+1/2marg);
+z13U-z31A = z13bm-z31ml;
+z13A = whatever[z13U,z31A] = whatever[z13bm,z13mr];
+draw z13A--z31A;
+label.urt(btex N etex, 1/2[z13A,z31A]);
+
+%%% of / car (53, 31)
+drawnormal(53bm, 31mr);
+z31B=(x31mr, y31mr+1/2marg);
+z53U - z31B = z53bm - z31mr;
+z53B = whatever[z53U,z31B] = whatever[z53bm,z53ml];
+draw z53B--z31B;
+label.ulft(btex N etex, 1/2[z53B,z31B]);
+
+%%% car / serial no (31, 21)
+z31C=(x21tm, y31bl);
+drawnormal(31C, 21tm);
+
+%%% car / year (31, 41)
+z31D=(x41tm, y31br);
+drawnormal(31D, 41tm);
+
+endfig; % end fig 10
+
+
+beginfig(11) % example 11 NIAM
+%%%drawgrid;
+
+numeric diam; diam := 2onelineh; % circle diameter
+
+upshift := diam;
+nextup := diam+upshift;
+
+numeric hel, vel; % length of horizontal and vertical box pairs
+eh := onelineh;
+hel = namespace(btex made by etex)(nextra);
+vel = namespace(btex of prod etex)(nextra);
+
+numeric del, deh; % horizontal & vertical diameters of oval boxes
+del := namespace(btex MANUFACTURER etex)(niextra);
+deh := 2eh;
+
+numeric marg; marg := 2u; % margin for doubly enclosed oval boxes
+numeric lmarg; lmarg := marg; % gap for short lines
+
+numeric dashel, dasheh; % diameters of dashed ellipses
+dashel := del+2marg;
+dasheh := deh+2marg;
+
+hspace1 := diam;
+
+%%% y coords
+lyc1 := 0;
+lyc2 := lyc1+nextup;
+lyc3 := lyc2+nextup;
+
+%%% Zcol/row
+
+%%% row 3
+
+x13ml=0; y13bm=lyc3;
+drawovalbox(13, del, deh)(btex manufacturer etex);
+z14=z13c;
+drawdashellipse(14, dashel, dasheh);
+
+z23ml=(x14mr+hspace1, y14mr);
+drawENT(23, hel, eh)(btex of etex);
+
+z33bl=z23br;
+drawENT(33, hel, eh)(btex made by etex);
+
+z44ml=(x33mr+hspace1, y33mr);
+drawdashellipse(44, dashel, dasheh);
+z43=z44c;
+drawovalbox(43, del, deh)(btex car model etex);
+
+z53ml=(x44mr+hspace1, y44mr);
+drawdashcircle(53, diam);
+label(btex year etex, z53c);
+
+%%% row 2
+
+z22c=(x23bm,lyc2);
+drawcirclebox(22, namespace(btex U etex)(2nextra))(btex U etex);
+
+x42tm=x43bm; y42ml=lyc2;
+drawdoublerectangle(42, vel, 2eh, 1/2);
+label(btex of etex, z42ct);
+label(btex is of etex, z42cb);
+
+%%z52c=(x53x,lyc2);
+x52tm=x53bm; y52ml=lyc2;
+drawdoublerectangle(52, vel, 2eh, 1/2);
+label(btex of prod etex, z52ct);
+label(btex prod in etex, z52cb);
+
+%%% row 1
+
+z11ml=(x13ml,lyc1);
+drawdashellipse(11, del, deh);
+label(btex serial no etex, z11c);
+
+z21ml=(x23ml,lyc1);
+drawENT(21, hel, eh)(btex of etex);
+
+z31bl=z21br;
+drawENT(31, hel, eh)(btex has etex);
+
+z41c=(x43c,lyc1);
+drawcirclebox(41, diam)(btex car etex);
+
+%%%%%% lines
+
+%%% manufacturer / of (14, 23)
+drawnormal(14mr, 23ml);
+
+%%% made by / car model (33, 44)
+drawnormal(33mr, 44ml);
+draw (x33tl, y33tl+lmarg)--(x33tr, y33tl+lmarg);
+draw (x33mr, y33mr+lmarg)--(x33mr+eh, y33mr+lmarg);
+
+%%% serial no / of (11, 21)
+drawnormal(11mr, 21ml);
+
+%%% of / of (23, 22, 21)
+drawnormal(23bm, 22tm); drawnormal(22bm, 21tm);
+label.rt(btex id etex, z22mr);
+
+%%% has / car (31, 41)
+drawnormal(31mr, 41ml);
+draw (x31tl, y31tl+lmarg)--(x31tr, y31tl+lmarg);
+draw (x31mr, y31mr+lmarg)--(x33mr+eh, y31mr+lmarg);
+
+%%% model / of (44, 42)
+drawnormal(43bm, 42tm);
+
+%%% is of / car (42, 41)
+drawnormal(42bm, 41tm);
+draw (x42tfr+lmarg, y42tfr)--(x42tfr+lmarg, y42br);
+draw (x42bm+lmarg, y42bm)--(x42bm+lmarg, y42bm-eh);
+
+%%% year / of prod (53, 52)
+drawnormal(53bm, 52tm);
+
+%%% prod in / car (52, 41)
+VH(52bm,41mr);
+drawnormalthree(52bm, 52bm.vh, 41mr);
+draw (x52tfr+lmarg, y52tfr)--(x52tfr+lmarg, y52br);
+draw (x52bm+lmarg, y52bm)--(x52bm+lmarg, y52bm-eh);
+
+endfig; % end fig 11
+
+end
+