From 4047de0425ceb45ea0b331e48efe2c6937a4a961 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 20 Sep 2008 00:38:11 +0000 Subject: interim dratex update git-svn-id: svn://tug.org/texlive/trunk@10648 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/dratex/Examples.tex | 2058 --------------------- Master/texmf-dist/doc/generic/dratex/README | 2 - Master/texmf-dist/doc/latex/dratex/Examples.tex | 2058 +++++++++++++++++++++ Master/texmf-dist/doc/latex/dratex/README | 2 + 4 files changed, 2060 insertions(+), 2060 deletions(-) delete mode 100644 Master/texmf-dist/doc/generic/dratex/Examples.tex delete mode 100644 Master/texmf-dist/doc/generic/dratex/README create mode 100644 Master/texmf-dist/doc/latex/dratex/Examples.tex create mode 100644 Master/texmf-dist/doc/latex/dratex/README (limited to 'Master/texmf-dist/doc') diff --git a/Master/texmf-dist/doc/generic/dratex/Examples.tex b/Master/texmf-dist/doc/generic/dratex/Examples.tex deleted file mode 100644 index ade0a511abb..00000000000 --- a/Master/texmf-dist/doc/generic/dratex/Examples.tex +++ /dev/null @@ -1,2058 +0,0 @@ -%\def\TexFiles{} -\def\ext{Changeable} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Compile this file with TeX and review the document. %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\hfill 15 Apr. 94 -\bigskip -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Code of examples and exercises from % -% % -% TeX and LaTeX: Drawing and Literate Programming % -% % -% gurari@cis.ohio-state.edu % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} -\immediate\write16{<<< tex Examples.tex <<<<<<<<<<<} -\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %% - %% -\input ProTex.sty %%%%%%%%%%%%%%%%%%%% - - -\expandafter\def\csname :warn\endcsname#1{} -\Code\top{}{\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} -\immediate\write16{<<<<< \op \name.\ext} -\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} - -% \com -} - - \ifx \TexFiles\empty %%%%%%%%%%%%%%%%%%%%%%%% -\def\tex{tex} - -\def\DEFEND{\% LaTeX requires a {\tt\string\Defend} here \%} - -\Code\Open{}{\files -\startInput -} - -\Code\Close{}{ -\endInput -\\bye} - \else %%%%%%%%%%%%%%%%%%%%%%%% -\def\tex{latex} - -\Code\DEFEND{{\it LaTeX requires a {\tt\string\Defend} - here}}{\% LaTeX requires a \string\Defend here \%\string\Defend} - -\Code\Open{}{\\documentstyle{book} -\files -\\begin{document} -\startInput} - -\Code\Close{}{ -\endInput -\\end{document}} - \fi %%%%%%%%%%%%%%%%%%%%%%%% - -\Code\fileD{}{ -\\input DraTex.sty } - -\Code\fileAD{}{ -\\input DraTex.sty -\\input AlDraTex.sty } - -\Code\fileP{}{ -\\input ProTex.sty } - -\Code\startInput{}{\\Draw} -\Code\endInput{}{\\EndDraw} - -\AlProTex{\ext,<<<>>>,[],list,|,ShowFile,NoShow} %%%%%%%%%%%%%%%%%%%% - -\let\SC=\ShowCode -\Code\execute{}<<< ->>> - -\newcount\exron -\def\nop#1{\ifnum \exron>0 #1 \fi} - -\catcode`\^^M=13 \catcode`\#=12 % -\def\<<<{% - \edef\temp{% - \noexpand\AppendCode\noexpand\execute<<< - \nop#\op\space\space \name.\ext\space\space\space # \com - \nop#xdvi\space\space \name.dvi - >>>}\ShowOff\temp\ShowOn% - \def\ShowCode{% - \expandafter\OutputCode\csname\name\endcsname \def\top - {} \global\let\ShowCode=\SC \ShowCode}% - \expandafter\Code\csname\name\endcsname{}<<< - \top}% -\catcode`\^^M=5 \catcode`\#=6 - -\def\newpage{\def\newpage{\par\vfill\break}} -\newcount\1 \newcount\2 \newcount\3 - -\def\ForTex{tex} - -\def\Ex#1#2#3{\global\advance\exron by -1 - \edef\op{#1} - \edef\For{for \ifx \op\ForTex \else La\fi TeX} - \def\com{#2} - \def\name{#3} \hrule - \medskip\noindent$\underline{\hbox{#1\quad\name.\ext}}$ - \qquad{\it #2\/} {\rm(\For)}\medskip} - -\def\Exr#1#2#3{\global\exron=2 - \setbox0=\hbox{\global\1#1 \global\2#2 \global\3#3} - \Ex{\tex}{Exercise \the\1.\the\2.\the\3}{exr#1#2#3}} - -\def\Lib#1{\newpage\hrule - \noindent\hfil{\bf \strut#1}\hrule} - -\hbadness=10000 \vbadness=10000 \hfuzz=99in \vfuzz=99in - %% - %% - %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\noindent NOTES - -(a) If you want to get TeX files instead of LaTeX files, remove `\%' -from the first line of file `{\tt Examples.tex}'.%%% first line of this file - - -(b) If you want different extensions in the files' names, -change the definition of {\tt\string\ext} in the second line -of file `{\tt Examples.tex}'.%%% second line of this file - -(c) Files carrying names that start with `exr' have been retrieved -from exercises. Many of these files are incomplete, and they expect -that the reader will provide the missing code. (La)TeX will prompt you -with `?' on incomplete files. In such cases, type `x' followed by -RETURN. - -\bigskip \Lib{DraTeX} \def\files{\fileD} - -\Ex{tex}{First example in section 6.2}{sec62a} - -\<<< -\input DraTex.sty -\Draw - \LineAt(0.1, 0,-18,-10) - \LineAt(-18,-10,- 6, 26) - \LineAt(- 6, 26, 18,- 4) - \LineAt( 18,- 4, 12,-40) - \LineAt( 18,- 4, 24,-40) - \LineAt( 18,- 4, 58,- 4) - \LineAt( 58,- 4, 52,-40) - \LineAt(58,-4,64,-40) \LineAt(58,-4,66,4) -\EndDraw -\bye >>> - -\Ex{latex}{First example in section 6.2}{sec62b} - -\<<< -\documentstyle{report} - \input DraTex.sty -\begin{document} -\Draw - \LineAt(0.1, 0,-18,-10) - \LineAt(-18,-10,- 6, 26) - \LineAt(- 6, 26, 18,- 4) - \LineAt( 18,- 4, 12,-40) - \LineAt( 18,- 4, 24,-40) - \LineAt( 18,- 4, 58,- 4) - \LineAt( 58,- 4, 52,-40) - \LineAt(58,-4,64,-40) \LineAt( 58,-4,66,4) -\EndDraw -\end{document}>>> - - -\Ex{latex}{First example in section 6.2---second version}{sec62c} - -\<<< -\documentstyle[DraTex]{report} -\begin{document} -\Draw - \LineAt(0.1, 0,-18,-10) - \LineAt(-18,-10,- 6, 26) - \LineAt(- 6, 26, 18,- 4) - \LineAt( 18,- 4, 12,-40) - \LineAt( 18,- 4, 24,-40) - \LineAt( 18,- 4, 58,- 4) - \LineAt( 58,- 4, 52,-40) - \LineAt(58,-4,64,-40) \LineAt(58,-4,66,4) -\EndDraw -\end{document}>>> - - - -\Exr672 - -\<<< -|Open - \MarkLoc(a) \Move(50,0) - \MarkLoc(A) \Move(50,0) - \MarkLoc(b) \Move(-30,30) - \MarkLoc(B) \Move(-30,30) - \MarkLoc(c) \Move(-20,-30) - \MarkLoc(C) - \Curve(A,b,b,B) - \Curve(B,c,c,C) - \Curve(C,a,a,A) -|Close>>> - - - \Ex{tex}{First example in section 6.1}{sec61} - -\<<< -\input DraTex.sty - -We can draw clocks of -different styles and sizes. - -\Draw - \Move(0,20) \Line(0,-50) \Line(50,0) - \PenSize(1.5pt) \Line(0,50) \Line(-50,0) - \Move(5,-25) \Text(--9--) - \Move(20,-18) \Text(--6--) - \Move(20,18) \Text(--3--) - \Move(-20,18) \Text(--12--) - \Move(0,-18) {\RotateTo(60) \LineF(19)} - \RotateTo(210) \LineF(14) -\EndDraw - -We can draw people of -different shapes and looks. - -\Draw(0.6pt,0.6pt) - \DrawOvalArc(30,45)(0,180) - \DrawOvalArc(30,12)(180,360) - \DrawOvalArc(60,25)(140,400) - \Move(0,5) - \DrawOvalArc(30,60)(225,315) - \DrawOvalArc(20,52)(260,280) - \Move(-10,-37) {\Text(--$\cdotp$--)} \Text(--o--) - \Move(20,0) {\Text(--$\cdotp$--)} \Text(--o--) -\EndDraw - -And we can produce many other -types of drawings. \bye>>> - - - -\Ex{latex}{First example in section 6.1}{sec61a} - -\<<< -\documentstyle{report} -\input DraTex.sty -\begin{document} - -We can draw clocks of -different styles and sizes. - -\Draw - \Move(0,20) \Line(0,-50) \Line(50,0) - \PenSize(1.5pt) \Line(0,50) \Line(-50,0) - \Move(5,-25) \Text(--9--) - \Move(20,-18) \Text(--6--) - \Move(20,18) \Text(--3--) - \Move(-20,18) \Text(--12--) - \Move(0,-18) {\RotateTo(60) \LineF(19)} - \RotateTo(210) \LineF(14) -\EndDraw - -We can draw people of -different shapes and looks. - -\Draw(0.6pt,0.6pt) - \DrawOvalArc(30,45)(0,180) - \DrawOvalArc(30,12)(180,360) - \DrawOvalArc(60,25)(140,400) - \Move(0,5) - \DrawOvalArc(30,60)(225,315) - \DrawOvalArc(20,52)(260,280) - \Move(-10,-37) {\Text(--$\cdotp$--)} \Text(--o--) - \Move(20,0) {\Text(--$\cdotp$--)} \Text(--o--) -\EndDraw - -And we can produce many other -types of drawings. \end{document}>>> - -\Ex{latex}{First example in section 6.1---second version}{sec61b} - -\<<< -\documentstyle[DraTex]{report} -\begin{document} - -We can draw clocks of -different styles and sizes. - -\Draw - \Move(0,20) \Line(0,-50) \Line(50,0) - \PenSize(1.5pt) \Line(0,50) \Line(-50,0) - \Move(5,-25) \Text(--9--) - \Move(20,-18) \Text(--6--) - \Move(20,18) \Text(--3--) - \Move(-20,18) \Text(--12--) - \Move(0,-18) {\RotateTo(60) \LineF(19)} - \RotateTo(210) \LineF(14) -\EndDraw - -We can draw people of -different shapes and looks. - -\Draw(0.6pt,0.6pt) - \DrawOvalArc(30,45)(0,180) - \DrawOvalArc(30,12)(180,360) - \DrawOvalArc(60,25)(140,400) - \Move(0,5) - \DrawOvalArc(30,60)(225,315) - \DrawOvalArc(20,52)(260,280) - \Move(-10,-37) {\Text(--$\cdotp$--)} \Text(--o--) - \Move(20,0) {\Text(--$\cdotp$--)} \Text(--o--) -\EndDraw - -And we can produce many other -types of drawings. \end{document}>>> - - -\Exr732 - -\<<< -|Open -\font\ARROWS=line10\space scaled\magstep5 -\font\CIRCLES=lcircle10\space scaled\magstep5 -% \newfont{\ARROWS}{line10\space scaled\magstep5} -% \newfont{\CIRCLES}{lcircle10\space scaled\magstep5} - - \Text(--\CIRCLES \char 10--) -\Text(--\CIRCLES \char 11--) \Text(--\ARROWS \char 55--) -\Text(--\CIRCLES \char 110--)\EntryExit(-1,0,-1,0) -\Text(--\CIRCLES \char 114--)|Close>>> - -\Exr741 - -\<<< -|Open -\Ragged(8) -\Line(10,-10) \Line(10,20) -\LineTo(0,0) -|Close>>> - - -\Ex{\tex}{First example in section 8.1}{sec81} - -\<<< -|Open -\ThreeDim(-150,-60,-600) - \Line(60,0,0) \Line(0,0,60) - \Line(-60,0,0) \Line(0,0,-60) - \LineTo(0,60,0) \Line(60,0,0) - \Line(0,-60,0) - \LineAt(0,60,0,0,60,60) - \Line(0,-60,0) -\EndThreeDim |Close>>> - - -\Ex{\tex}{Example of USA map in section 9.3}{usa} - -\<<< -|Open(0.9pt,0.9pt) -\Table\USA{ % California - -60,-35 & -77,-30 & -80, - -20 & -90,-15 & -100,40 & - % Oregon - -100,50 & -90,80 & - % Wash - -90,95 & -78,90 & -75,95 & - % Minn - 100,70 & 85,60 & - % Wisc-Mich - 95,60 & 105,65 & 102,63 & 110,60 & 125,60 & 110,55 & 110,30 & - 115,25 & 120,30 & 115,40 & 115,50 & 120,55 & 130,55 & 140,40 & - 135,25 & - % Ohio-NY-Vt - 145,25 & 155,30 & 160,45 & 175,45 & 175,55 & 180,60 & 195,65 & - % Maine - 200,75 & 200,85 & 205,90 & 210,90 & 215,80 & 220,75 & 205,60 & 205,50 & - % Mass--NY - 210,43 & 208,47 & 215,43 & 190,30 & 202,35 & - % NJ--Va - 197,25 & 190,18 & 185,20 & 190,15 & 190,5 & 182,18 & 182,0 & 185,0 & - % NC - 190,-8 & 185,-4 & 183,-6 & 186,-6 & 182,-15 & - 190,-18 & 190,-10 & 192,-10 & - 195,-18 & - % Ga-Fl - 165,-40 & 160,-50 & 175,-80 & 175,-90 & 170,-100 & 165,-100 & - 155,-80 & 155,-65 & 145,-60 & 140,-62 & 136,-62 & 120,-60 & - % Alaba--La - 102,-63 & 107,-67 & 107,-72 & 110,-75 & 90,-65 & - 78,-65 & - % Texas - 62,-78 & 57,-78 & 50,-82 & 53,-92 & 48,-90 & 25,-65 & 15,-65 & - 15,-68 & -10,-50 & - % New Mexico - -40,-50 & - % Back to California - -60,-35 } -{ \USA(0,0){\MoveTo} \USA(1,99){\LineTo} } \Text(--USA--) -\Scale(0.5,0.5) \USA(46,46){\MoveTo} \USA(47,92){\LineTo} -\MoveTo(-30,0) \MarkLoc(a) \USA(0,0){\Move} \MarkLoc(b) -\USA(0,46){{\LineToLoc(b)} \MarkLoc(b) \MoveToLoc(a) \Move} -|Close>>> - - -\Exr{10}1{1a} -\<<< -|Open -\Text(--Government~% - Bonds (\%)--) -\Table\B{Britain,9.59 & - Canada,7.98 & Japan,5.46 & - U.S., 6.84 & Mexico,14.9} -\B(0,4){\PutBar} -|Close >>> - -\Exr{10}1{1b} -\<<< -|Open -\chick(0,75) \Scale(-1,1) -\chick(0,140) -|Close >>> - -\Exr{10}1{1c} -\<<< -|Open -\Table\x{ 30,40 - & 15,60 & 27,15 & 35,35 - & 50,45 & 25,70 & 20,20 - & 25,75 } \x(0,99){\Tr} -|Close >>> - -\Exr{10}1{1d} -\<<< -|Open -\sqr(-24,0) -\sqr(0,32) -\sqr(24,-32) -|Close >>> - -\Exr{10}1{1e} -\<<< -|Open -\engine(90) \MoveTo(50,0) -\engine(180) \MoveTo(100,0) -\engine(-30) -|Close >>> - -\Exr{10}1{1f} -\<<< -|Open -\MarkLoc(A) -\spring(110) \Rotate(70) -\spring(60) \MarkLoc(B) -\DSeg\RotateTo(B,A) -\LSeg\spring(B,A) -|Close >>> - -\Exr{10}21 -\<<< -|Open -\new(BODY) \(20) -\LineF(20) \Rotate(55) \LineF(16) -\new(hand) \(140) \LineF(35) -\new(hand) \(90) \LineF(7) -\new(head) \(-60) \LineF(19) -\new(left-leg) \(210) \LineF(12) -\Rotate(30) \LineF(14) \new(right-leg) -\Do(1,11){\I+15; \(\Val\I) -\LineF(11)} -|Close >>> - - -\Exr{10}22 - -\<<< -|Open -\def\DefineSymbol#1{% - \Indirect\Define<#1>} - -\def\DrawText(--#1--){% - \let\xNextSym=\xDrawSym \xNextSym#1{}} - -\def\xDrawSym#1{\def\temp{#1}% - \ifx \temp\empty \let \xNextSym=\relax - \else \Indirect<#1>\fi \xNextSym } - -\DefineSymbol A{{ \Line(21,60) - \Line(21,-60) \Move(-7,20) - \Line(-28,0) } \Move(52,0) } -\DefineSymbol B{{ \DrawText(--P--) - \Move(-25,18) - \DrawOvalArc(15,18)(-90,90) - \Move(0,-18) \Line(-25,0)} - \Move(50,0) } \DefineSymbol P -{{ \Line(0,60) \Line(25,0) - \Move(0,-12) \DrawOvalArc(15,12)(-90,90) - \Move(0,-12) \Line(-25,0) } \Move(50,0) } - \DefineSymbol C{{ \Move(20,30) - \DrawOvalArc(20,30)(45,315) } \Move(46.6,0) } - \DefineSymbol D{{ \Line(0,60) \Line(20,0) - \Move(0 ,-30) \DrawOvalArc(20,30)(-90,90) \Move(0,-30) - \Line(-20,0) } \Move(50,0) } - \DefineSymbol E{{ \DrawText(--F--) \Move(-50,0) - \Line(40,0) } \Move(50,0) } - \DefineSymbol F{{ \Line(0,60) \Line(40,0) - \Move(-40,-30) \Line(30,0) } \Move(50,0) } - \DefineSymbol G{{ \DrawText(--C--) - \Move(-10,30) {\Line(-20,0)} \Line(0,-30) } - \Move(46.6,0) } - \DefineSymbol H{{ \Line(0,60) \Move(40,0) - \Line(0,-60) \Move(0,30) \Line(-40,0) } \Move(50,0) } - \DefineSymbol I{{ \Line(0,60) } \Move(10,0) } - \DefineSymbol J{{ \Move(20,17) \DrawOvalArc(20,17)(180,360) - \Move(20,0) \Line(0,43) } \Move(50,0) } - \DefineSymbol K{{ \Line(0,60) \Move(0,-35) - \Line(40,35) \Move(-32,-28) \Line(32,-32) } \Move(50,0) } - \DefineSymbol L{{ { \Line(0,60) } \Line(40,0) } \Move(50,0) } - \DefineSymbol M{{ \Line(0,60) \Line(25,-60) - \Line(25,60) \Line(0,-60) } \Move(60,0) } - \DefineSymbol N{{ \Line(0,60) \Line(40,-60) - \Line(0,60) } \Move(50,0) } - \DefineSymbol O{{ \Move(22,30) \DrawOval(22,30) } \Move(54,0) } - \DefineSymbol P{{ \Line(0,60) \Line(25,0) - \Move(0,-12) \DrawOvalArc(15,12)(-90,90) - \Move(0,-12) \Line(-25,0) } \Move(50,0) } - \DefineSymbol Q{{ \DrawText(--O--) \Move(-10,-5) - \Line(-15,15) } \Move(55,0) } - \DefineSymbol R{{ \DrawText(--P--) \Move(-10,0) - \Line(-15,36) } \Move(50,0) } - \DefineSymbol S{{ \Move(20,18) \DrawOvalArc(20,18)(-140,90) - \Move(0,30) \DrawOvalArc(20,12)(40,270) } \Move(50,0) } - \DefineSymbol T{{ \Move(22,0) \Line(0,60) \Move(-22,0) - \Line(44,0) } \Move(54,0) } - \DefineSymbol U{{ \Move(20,15) \DrawOvalArc(20,15)(180,360) - \Move(-20,0) \Line(0,45) \Move(40,0) \Line(0,-45) } - \Move(50,0) } - \DefineSymbol V{{ \Move(0,60) \Line(22,-60) - \Line(22,60) } \Move(54,0) } - \DefineSymbol W{{ \Move(0,60) \Line(15,-60) - \Line(15,60) \Line(15,-60) \Line(15,60) } \Move(70,0) } - \DefineSymbol X{{ \Line(40,60) \Move(-40,0) - \Line(40,-60) } \Move(50,0) } - \DefineSymbol Y{{ \Move(20,0) \Line(0,34) { \Line(-20,26)} - \Line(20,26) } \Move(50,0) } - \DefineSymbol Z{{ \Move(0,60) \Line(40,0) \Line(-40,-60) - \Line(40,0) } \Move(50,0) } - \DefineSymbol 0{{ \Move(25,30) \DrawOval(25,30) } \Move(60,0) } - \DefineSymbol 1{{ \Line(0,60) } \Move(10,0) } - \DefineSymbol 2{{ \MarkLoc(a) \Move(0,10) - \MarkLoc(a') \Move(40,30) \MarkLoc(b) - \Move(0,-10) \MarkLoc(b') \Curve(a,a',b',b) - \Move(-20,10) \DrawOvalArc(20,20)(0,180) - \Move(-20,-40) \Line(40,0) } \Move(50,0) } - \DefineSymbol 3{{ \MarkLoc(a') \Move(0,10) \MarkLoc(a) - \Move(20,-10) \MarkLoc(b) \Move(-10,0) \MarkLoc(b') - \Curve(a,a',b',b) \Move(22,0) \MarkLoc(b') - \Move(8,8) \MarkLoc(a') \Move(0,10) \MarkLoc(a) - \Curve(a,a',b',b) \Move(0,10) \MarkLoc(a') - \Move(-8,8) \MarkLoc(b') \Move(-10,0) - \MarkLoc(b) \Curve(a,a',b',b) \Move(-5,0) - \MarkLoc(b') \Move(-5,-3) \MarkLoc(a') - \Move(0,-2) \MarkLoc(a) \Curve(a,a',b',b) - \Line(30,29) \Line(-40,0) } \Move(50,0) } -\DefineSymbol 4{{ \Move(35,0) \Line(0,60) - \Line(-35,-35) \Line(45,0)} \Move(55,0) } - \DefineSymbol 5{{ \Move(15,20) \DrawOvalArc(19,20)(-140,140) - \Move(-15,10) \Line(0,30) \Line(30,0) } \Move(44,0) } - \DefineSymbol 6{{ \Move(22,30) \DrawOvalArc(22,30)(70,270) - \Move(0,-10) \DrawOvalArc(22,15)(0,174) - \DrawOvalArc(22,20)(270,360) } \Move(54,0) } - \DefineSymbol 7{{ \Move(0,60) \Line(40,0) - \MarkLoc(a) \Move(-20,-60) \MarkLoc(b) - \DSeg\RotateTo(b,a) \Rotate(20) \MoveF(10) \MarkLoc(b') - \MoveToLoc(a) - \DSeg\RotateTo(a,b) \Rotate(-20) \MoveF(10) \MarkLoc(a') - \Curve(a,a',b',b) } \Move(50,0) } - \DefineSymbol 8{{ \Move(20,17) \DrawOval(20,17) - \Move(0,30) \DrawOval(20,13) } \Move(50,0) } - \DefineSymbol 9{{\Move(50,60) \Scale(-1,-1) \DrawText(--6--) } \Move(54,0) -} - -\Scale(0.1,0.1) \Ragged(1) -\DrawText(--BOLD--) -\PenSize(0.2pt) \MoveTo(0,-100) -{ \Scale(-1,1) - \DrawText(--BACKWARD--) } -\MoveTo(0,-200) \RotatedAxes(0,75) \DrawText(--SLANTED--) -\EndRotatedAxes \MoveTo(0,-300) \RotatedAxes(-45,45) -\DrawText(--ROTATED--) \EndRotatedAxes -|Close>>> - -\Ex{\tex}{Last example in section 11.2}{boxes} - -\<<< -|Open -\Object\ch(1){\Text(--#1--) - \MoveToExit(-1,-1) - \FigSize\Q\R{\Text(--#1--)} - \DrawRect(\Val\Q,\Val\R) } -\Define\chrs(1){\font\f=#1\space scaled\magstep4 \f - \Table\chrs{A & l & l & ~ & i & n & ~ & - b & o & x & e & s & .} \chrs(0,99){\ch} } -\PenSize(0.2pt) \EntryExit(-1,-1,1,-1) -{\chrs(cmtt10)} \Move(0,-20) \chrs(cmsl10) -|Close>>> - -\Exr{11}21 -\<<< -|Open -\Define\side(3){ - \ProjectedAxes(#1,#2)(#1,#3) - \DrawRect(1,1) \Move(0.5,0.5) - \DrawCircle(0.5) - \EndProjectedAxes } -\ThreeDim(80,70,-40) \MarkPLoc(a) - \Move(0,-50,0) \MarkPLoc(b) - \Move(0,50,25) \MarkPLoc(c) - \Move(-25,0,-25) \MarkPLoc(d) - \side(a,b,d) \side(a,b,c) \side(a,c,d) -\EndThreeDim -|Close >>> - - -\Exr{11}24 - -\<<< -|Open -\Define\Spline(1){ - \MarkLoc(0) \MoveTo(0,0) \MarkLoc(00) - \Table\P{#1} \Define\Count(1){\K+1;} \K=-4; - \P(0,999){\Count} - \Do(0,\Val\K){ - \GetCoefficients - \MoveTo(\Val\Ao,\Val\Bo) \CSeg\Move(00,0) - \MarkLoc(o) \f \MarkLoc(x) - \Do(1,30){ - \T=\DoReg; \T/30; - \X=\Aiii; \X*\T; \X+\Aii; \X*\T; \X+\Ai; \X*\T; - \Y=\Biii; \Y*\T; \Y+\Bii; \Y*\T; \Y+\Bi; \Y*\T; - \MoveToLoc(o) \Move(\Val\X,\Val\Y) \f - {\LineToLoc(x)} \MarkLoc(x) }} - \MoveToLoc(0)} - -\Define\f{} -\DecVar\Ao \DecVar\Ai \DecVar\Aii \DecVar\Aiii \DecVar\X -\DecVar\Bo \DecVar\Bi \DecVar\Bii \DecVar\Biii \DecVar\Y - -\Define\GetCoefficients{ - \I=\DoReg; \P(\Val\I,\Val\I){\First} - \I+1; \P(\Val\I,\Val\I){\Second} - \I+1; \P(\Val\I,\Val\I){\Third} - \I+1; \P(\Val\I,\Val\I){\Fourth} } -\Define\First(2){\Ao=#1; \Ai=-#1; \Aii=#1; \Aiii=-#1; - \Bo=#2; \Bi=-#2; \Bii=#2; \Biii=-#2;} -\Define\Second(2){ - \T=#1; \T* 4; \Ao +\T; \T=#2; \T* 4; \Bo +\T; - \T=#1; \T*-2; \Aii+\T; \T=#2; \T*-2; \Bii+\T; - \T=#1; \T* 3; \Aiii +\T; \T=#2; \T* 3; \Biii +\T;} -\Define\Third(2){ \Ao +#1; \Ao /6; \Bo +#2; \Bo /6; - \Ai +#1; \Ai /2; \Bi +#2; \Bi /2; - \Aii+#1; \Aii/2; \Bii+#2; \Bii/2; - \T=#1; \T*-3; \Aiii+\T; \T=#2; \T*-3; \Biii+\T;} -\Define\Fourth(2){ - \Aiii+#1; \Aiii/6; \Biii+#2; \Biii/6;} - -\Spline(0,15 & 30,-70 - & 40,-50 & 10,0 & 15,30 - & 50,5 &60,10 & 8,45 & - 8,55 & 30,70 & 0,80 & - -30,70 &-8,55 & -8,45 & - -60,10 &-50,5 & -15,30 & - -10,0 &-40,-50 &-30,-70 & - 0,15 & 30,-70 & 40,-50 ) -\Define\ShowPoint(2){ - \MoveToLoc(0) \Move(#1,#2) - \Text(--$\circ$--)} -\P(0,99){\ShowPoint} - -\Define\TEX{ - \Spline(0,-15 & 0,-15 & - 0,-15 & 0, 15 & - 0, 15 & 0, 15 ) - \Spline(-10,15 & - -10,15 & -10,15 & 10,15 & - 10,15 & 10,15) - \Move(12,0) - \Spline(0,0 & 0,0 & 0,0 & 14,0 & 14,0 & 14,0) - \Spline( 20,15 &20,15 &20,15 & 0,15 & 0,15 - & 0,-15 & 0,-15 & 20,-15 &20,-15&20,-15) - \Move(32,0) \Spline( -10,-15 & -10,-15 & - -10,-15 & 10,15 & 10,15 & 10,15) - \Spline( -10,15 & - -10,15 & -10,15 & 10,-15 & 10,-15 & 10,-15) } -\TEX \MoveTo(0,0) \F -\TEX \MoveTo(0,-35) \G -\TEX -|Close >>> - - -\Exr{11}31 -\<<< -|Open -\Define\put(2){ - \IF \EqText(,#1) \THEN - \top \Define\put(1){} - \ELSE \push(#1) \FI \put(#2)} -\Define\stack(1){ - {\put(#1,,)} \Move(0,-13)} -\Table\x{ & 1& 1, 2& -1, 2, 3& 1, 2, 3, 4& -1, 2, 3, 4, *& 1, 2, 12& -1, 2, 12,+& 1, 14& 1, 14,+& 15} -\x(0,100){\stack} -|Close >>> - - -\Exr{11}32 -\<<< -|Open -\Table\g{ - 16 & 8 & 4 & 2 & 1 & - 20 & 16 & 8 & 4 & 2 & - 17 & 12 & 16 & 8 & 4 & - 23 & 20 & 12 & 13 & 17 } -\ThreeDim(160,75,-70) - \Scale(20,5,20) - \g(0,140){\surface} -\EndThreeDim -|Close >>> - - - - - - -\Ex{\tex}{NEW OPTION FOR {\tt\char92}ThreeDim}{NewThreeDim} - - - -{\tt\string\ThreeDim($x_e$,$y_e$,$z_e$)} perspective projections (old option) - -{\tt\string\ThreeDim($\alpha_{xy}$,$\alpha_z$)} parallel projections (new additional option): -$\alpha_{xy}$ --- direction within xy plane, -$\alpha_z$ --- direction with respect to xy plane. - - e.g., {\tt\string\ThreeDim(30,60)} or -{\tt\string \ThreeDim(45,60)} - - -\<<< -|Open -\Define\cube{ - \Line(50,0,0){\Line(0,0,50)} - \Line(0,50,0){\Line(0,0,50)} - \Line(-50,0,0){\Line(0,0,50)} - \Line(0,-50,0) \Move(0,0,50) - \Move(50,0,0) \Line(0,50,0) - \Line(-50,0,0) } -\ThreeDim(80,80,-100) \cube \EndThreeDim -\MoveTo(0,-130) -\ThreeDim(45,60) \cube \EndThreeDim -\MoveTo(0,-260) -\ThreeDim(30,60) \cube \EndThreeDim -|Close>>> - -\Lib{AlDraTeX} \def\files{\fileAD} - - -\Ex{tex}{Example in section 13.2}{sec132} - -\<<< -\input DraTex.sty -\input AlDraTex.sty -\Draw - \Scale(1,0.5) - \PieChartSpec(1,50,20)() - \PieChart(15 & 10 & 30) - \Move(0,-6) - \DrawOvalArc(50,50)(180,360) -\EndDraw -\bye>>> - -\Ex{tex}{Example in section 13.2---second version}{sec132a} - -\<<< -\input DraTex.sty - \def\AlDraTex{pie} -\input AlDraTex.sty -\Draw - \Scale(1,0.5) - \PieChartSpec(1,50,20)() - \PieChart(15 & 10 & 30) - \Move(0,-6) - \DrawOvalArc(50,50)(180,360) -\EndDraw -\bye>>> - - -\Ex{latex}{Example in section 13.2}{sec132b} - -\<<< -\documentstyle{report} - \input DraTex.sty - \input AlDraTex.sty -\begin{document} -\Draw - \Scale(1,0.5) - \PieChartSpec(1,50,20)() - \PieChart(15 & 10 & 30) - \Move(0,-6) - \DrawOvalArc(50,50)(180,360) -\EndDraw -\end{document}>>> - -\Ex{latex}{Example in section 13.2---second version}{sec132c} - -\<<< -\documentstyle[DraTex,AlDraTex]{report} -\begin{document} -\Draw - \Scale(1,0.5) - \PieChartSpec(1,50,20)() - \PieChart(15 & 10 & 30) - \Move(0,-6) - \DrawOvalArc(50,50)(180,360) -\EndDraw -\end{document}>>> - -\Ex{latex}{Example in section 13.2---third version}{sec132d} - -\<<< -\documentstyle{report} - \input DraTex.sty - \def\AlDraTex{pie} - \input AlDraTex.sty -\begin{document} -\Draw - \Scale(1,0.5) - \PieChartSpec(1,50,20)() - \PieChart(15 & 10 & 30) - \Move(0,-6) - \DrawOvalArc(50,50)(180,360) -\EndDraw -\end{document}>>> - -\Ex{latex}{Example in section 13.2---forth version}{sec132e} - -\<<< -\def\AlDraTex{pie} -\documentstyle[DraTex,AlDraTex]{report} -\begin{document} -\Draw - \Scale(1,0.5) - \PieChartSpec(1,50,20)() - \PieChart(15 & 10 & 30) - \Move(0,-6) - \DrawOvalArc(50,50)(180,360) -\EndDraw -\end{document}>>> - -\Ex{\tex}{Chemical diagram in section 16.1}{sec161} - -\<<< -|Open -\Define\ChemEdge(3){{ - \MoveToNodeDir(#2,#1) - \MarkLoc(b) \MoveToNodeDir(#1,#2) - \MarkLoc(a) \DSeg\RotateTo(a,b) - \Rotate(-90)\Q=#3; \Q/2; \Q-0.5; - \Q*2.2; \MoveF(\Val\Q) - \Do(1,#3){ {\CSeg\Line(a,b)} - \MoveF(-2.2) } }} -\Do(1,6){ \MoveF(30) - \Node(\DoReg)(--C--) \MoveF(20) \Node(x)(--H--) - \ChemEdge(\DoReg,x,1) \MoveTo(0,0) \Rotate(60) } -\ChemEdge(1,2,2) \ChemEdge(2,3,1) \ChemEdge(3,4,2) -\ChemEdge(4,5,1) \ChemEdge(5,6,2) \ChemEdge(6,1,1) -|Close >>> - - -\Ex{\tex}{Finite automaton in last example of chapter 17}{FA} - -\<<< -|Open -\NewCIRCNode(\StateNode,106,) -\NewCIRCNode(\AStateNode,106,103) -\Define\StateAt(3){ \MoveTo(#2,#3) - \StateNode(#1)(--$q_{#1}$--)} -\Define\AStateAt(3){ - \MoveTo(#2,#3) - \AStateNode(#1)(--$q_{#1}$--)} -\DiagramSpec(\StateAt& - \AStateAt&\TransEdge) -\ArrowHeads(1) \Diagram - ( 0,0,0 & 1,50,50 & - 3,90,-50 & 4,20,-50 )(2,75,0) - (0,1,a,b & 1,2,a, & 0,2, ,b & 2,2,0,b & 0,4,a, & 4,3,a,b ) -\CurvedEdgeAt(3,1,0,1,1,0)(20,0.3,0,0.5) \EdgeLabel[+](--a--) -|Close>>> - - -\noindent\dotfill\ - -New commands in AlDraTeX for setting spread diagrams (add to end of ch -17) - -\noindent\dotfill\ - -\begingroup -\leftskip= 1.5em -\parindent = -\leftskip - -\def\item{\medskip\leavevmode\hbox to \leftskip{$\circ$\hss}} - -\item - `{\tt\string\DefNode}'. A prefix to a node-generating command. The -prefix asks that the command will produce an invisble node. The -invisible node is assigned addresses but is not drawn into the -figure. - - -\item - `{\tt\string\PutNode(N)}'. This command realizes, according to the current -conditions, a specified invisible node that has been defined earlier -by `{\tt\string\DefNode}'. - -\item - `{\tt\string\ZeroNodesDim}'. Sets the pseudovariables `{\tt\string\WidthX}', -`{\tt\string\WidthY}', `{\tt\string\MaxX}', and `{\tt\string\MaxY}' to 0. - -\item - `{\tt\string\AddNodeDim(N)}'. Inserts the horizontal and vertical -dimensions of node N to the pseudovariables `{\tt\string\Widthx}' and -`{\tt\string\Widthy}', respectively. Adds these values to the -pseudovariables `{\tt\string\WidthX}' and `{\tt\string\WidthY}', -respectively. In addition, half the horizontal dimension of node N is -stored in `{\tt\string\MaxX}' if the pseudovariable contains a smaller -value, and a similar outcome holds for the vertical dimension with -respect to the pseudovariable `{\tt\string\MaxY}'. -\par\endgroup - -\Ex{\tex}{}{newA} - -\<<< -|Open -\DefNode\CircleNode(a)(--Two--) -\MoveToNode(a,0,0) \MarkLoc(A) -\MoveToNode(a,1,0) \MarkLoc(B) -\LSeg\R(A,B) \MoveTo(0,0) -\OvalNode(b)(--Touching Nodes--) -\RotateTo(19.5) \MoveF(5) \MarkLoc(A) -\MoveToNodeDir(b,A) \MarkLoc(A) -\MoveToNode(b,0,0) -\RotateTo(20.5) \MoveF(5) \MarkLoc(B) -\MoveToNodeDir(b,B) \MarkLoc(B) -\RotateTo(20) \MoveF(5) \MarkLoc(C) -\MoveToNode(b,0,0) \MoveToNodeDir(b,C) -\DSeg\RotateTo(A,B) \Rotate(-90) -\MoveF(\Val\R) \PutNode(a) -|Close>>> - - -\Ex{\tex}{}{newB} - -\<<< -|Open - -\def\Dist#1(#2,#3,#4){\MarkLoc(a*)% - \MoveToNode(#2,0,0)\MarkLoc(b*)% - \MoveToNode(#2,#3,#4)\MarkLoc(c*)% - \LSeg#1(b*,c*)\MoveToLoc(a*)} - -\EntryExit(1,1,1,-1.5) -\Object\G(3){ - \RectNode(a)(--#1--) - \DefNode\RectNode(b)(--#2--) - \DefNode\RectNode(c)(--#3--) - \Dist\T(a,1,0) \Dist\R(b,1,0) \Dist\Q(c,1,0) - \R+\Q; \T-\R; \T*2; - \ZeroNodesDim \AddNodeDim(b) - \AddNodeDim(c) \Q=\MaxY; - \Dist\R(a,0,1) \Q+\R; - \Q+20; \EntryExit(-1,0,1,0) - \IF \GtDec(\T,40) \THEN - \T+40; \T/3; - \SetNodes(20,\Val\T) - \ELSE \T=-\T; \T+60; \T/2; - \SetNodes(\Val\T,20) \FI - \Edge(b,c) \ArrowHeads(1) - \VHEdge(A,c) \VHEdge(B,b) } -\Define\SetNodes(2){ - \MoveToNode(a, 1,0) \Line( #1,0) \FcNode(A) - \MoveToNode(a,-1,0) \Line(-#1,0) \FcNode(B) - \Move(#2,-\Val\Q) \PutNode(b) - \Move(#2, 0) \PutNode(c) } -\G(short~~and~~deep,d~~e~~e~~p,shallow) -\G(very~very~long~node,shallow,d~~e~~e~~p) -|Close>>> - - -\Ex{\tex}{}{newC} - - - - -\<<< -|Open -\Define\Vertex(2){ - \IF \EqText(r,#1) \THEN \Define\NodeType{\RectNode} - \ELSE \IF \EqText(d,#1) \THEN \Define\NodeType{\DiamondNode} - \ELSE \IF \EqText(o,#1) \THEN \Define\NodeType{\OvalNode} - \ELSE \Define\NodeType{\Node} - \FI\FI\FI - \DefNode\NodeType(\Val\I..\Val\J)(--#2--) - \AddNodeDim(\Val\I..\Val\J) } -\Define\DefRow(1){ - \IF \EqText({},{#1}) \THEN \Define\g{\MoveToLoc(start)} - \ELSE \ZeroNodesDim \J=-1; - \Table\x{#1} \x(0,99){\J+1; \Vertex} - \Move( 0,-\MaxY) \MarkLoc(\Val\I) \Move(5,0) \MarkLoc(\Val\I') - \Move(-5,-\MaxY) \Move(0,-\Sy) \I+1; - \FI \g } - -\Define\ProjectToRow(1){ - \MarkLoc(x) \Move(0,5) \MarkLoc(x') - \MoveToLL(#1,#1')(x,x') } - -\Define\VSpace(1){ \Define\Sy{#1} } -\VSpace(15) - -\Define\DefRowDiagram{ - \MarkLoc(start) \I=0; \Define\g{\DefRow} \g} - -\DefRowDiagram - ( o, An~ approach~~ for~ setting~~ flow~ diagrams - & r, Use~~ {\tt\char92DefineRowDiagram}~~ - to~ define~~ the~ rows~~ of~ nodes - )( r, Derive~~ x~ coordinate~~ for~ N~ then~ - call~~ {\tt\char92ProjectToRow} - & r, Choose~~ nonrealized~~ node~ N - & d, More~ nodes~~ to~ realize? - )( r, Realize~ N~~ with~ {\tt\char92PutNode} - & o, Done - )() -\ProjectToRow(0) \EntryExit(0,0,-1,0) \PutNode(0..0) -\ProjectToRow(2) \MarkLoc(A) -\ProjectToRow(1) \EntryExit(-1,0,1,0) \PutNode(1..0) -\Move(20,0) \PutNode(1..1) \Move(20,0) -\EntryExit(-1,0,0,0) \PutNode(1..2) -\ProjectToRow(0) \EntryExit(0,0, 0,0) \PutNode(0..1) -\ProjectToRow(2) \EntryExit(0,0,-1,0) \PutNode(2..1) -\MarkLoc(B) \CSeg[0.5]\Move(B,A) \PutNode(2..0) -\ArrowHeads(1) \Edge(0..0,0..1) \Edge(0..1,1..2) - \Edge(1..2,1..1) \EdgeLabel(--Yes--) - \Edge(1..2,2..1) \EdgeLabel(--No--) -\Edge(1..1,1..0) \VHEdge(1..0,2..0) -\EdgeFrom(2..0,1,0,1..2) -|Close>>> - -\begingroup - \def\startInput{} - \def\endInput{} - -\Ex{\tex}{}{newD} - -\<<< -|Open -\Define\DefNd(1){ - \DefNode\RectNode(\Val\I)(--#1--) - \AddNodeDim(\Val\I) \I+1; } -\Define\D(1){ - \IF \EqText({},{#1}) \THEN \Define\g{} - \ELSE \ZeroNodesDim \J=-1; - \Table\x{#1} \x(0,99){\J+1; \DefNd} - \T=\J; \T*15; \T+\WidthX; \T/\F; - \Move(0,-\MaxY) \MarkLoc(a) \Move(\Val\T,0) - \K=\I; - \Do(0,\Val\J){ \K-1; \PutNode(\Val\K) \Move(-15,0) } - \MoveToLoc(a) \Move(0,-\MaxY) \Move(0,-15) - \FI \g } -\Define\G(1){\I=0; \EntryExit(1,0,-1,0) - \Define\g{\D} \Define\F{#1} \g} - -\Draw -\G(2)(first & diagram) - (centers & of~~rows~~on & vertical~~line ) - (distance~=~15 & between~~rows) - () -\Table\x{0,2 & 0,3 & 1,3 & 1,4 & 2,5 & 3,5 & 3,6 & 4,6} -\x(0,99){\Edge} -\EndDraw - -\Draw\Move(0,-15) -\G(1)(new~diagram) - (left~~margins & for~rows) () -\Edge(0,1) \Edge(1,2) \Edge(2,0) -\EndDraw - -\Draw -\Move(0,-15) -\G(10000)(new~diagram) - (right~margins & for~~rows) () -\Edge(0,1) \Edge(1,2) \Edge(2,0) -\EndDraw -|Close>>> - - -\Ex{\tex}{}{newE} - -\<<< -|Open -\Define\DefNd(1){ - \DefNode\RectNode(\Val\I..\Val\J)(--#1--) - \AddNodeDim(\Val\I..\Val\J) } -\Define\DefG(1){ - \IF \EqText({},{#1}) \THEN \Define\g{\PutG} - \ELSE \ZeroNodesDim \J=-1; - \Table\x{#1} \x(0,99){\J+1; \DefNd} - \Indirect\let<\Val\I.width>=\WidthX - \Indirect\edef<\Val\I.size>{\Val\J} - \T=\J; \T*\Sx; \T+\WidthX; - \IF \GtDec(\T,\Q) \THEN \Q=\T; \FI - \Move(0,-\MaxY) \MarkLoc(\Val\I) - \Move(0,-\MaxY) \Move(0,-\Sy) \I+1; - \FI \g } -\Define\PutG(1){ \I-1; \EntryExit(-1,0,1,0) - \Do(0,\Val\I){ \MoveToLoc(\DoReg) - \R=\Q; \Indirect{\R-}<\DoReg.width>; - \Indirect{\J=}<\DoReg.size>; \K=\J; - \DiagType - \IF \GtDec(\Q,\T) \THEN - \K+2; \R/\K; \Move(\Val\R,0) - \ELSE - \IF \GtInt(\J,0) \THEN \R/\K; \FI - \FI - \I=\DoReg; - \Do(0,\Val\J){ \J=\DoReg; - \PutNode(\Val\I..\Val\J) \Move(\Val\R,0) } - } - \Table\x{#1} \x(0,99){\Edge} } -\Define\G{ \I=0; \Q=0; - \Define\g{\DefG} \g} - -\Define\FillDiagram{ - \Define\DiagType{\T=\Q;} - \G} -\Define\MarginsDiagram{ - \Define\DiagType{\T=\J; \T*\Sx; \Indirect{\T+}<\DoReg.width>;} - \G} -\Define\HVSpaces(2){ \Define\Sx{#1} \Define\Sy{#2} } -\HVSpaces(15,15) - -\Draw -\FillDiagram(Fill & Diagram) - (fixed & distances & between~~rows) - (uniform & spaces &within~~each &row) - () - ( 0..0,1..0 & 0..0,1..1 & 0..1,1..1 & 0..1,1..2 - & 1..0,2..0 & 1..0,2..1 & 1..1,2..1 & 1..1,2..2 - & 1..2,2..2 & 1..2,2..3) -\EndDraw - -\Draw \HVSpaces(25,15) -\MarginsDiagram(Margins & Diagram) - (fixed & distances &between~~rows) - (uniform~~spaces&between~nodes&within~~each~row) - () - ( 0..0,1..0 & 0..0,1..1 & 0..1,1..1 & 0..1,1..2 - & 1..0,2..0 & 1..0,2..1 & 1..1,2..1 & 1..1,2..2 - & 1..2,2..2 ) - -\EndDraw -|Close>>> - -\endgroup -\noindent\dotfill\ - -End new commands for setting spread diagrams (end of ch 17) - -\noindent\dotfill\ - - - -\Ex{\tex}{Commutative diagram in last example of section 18.3}{CM} - -\<<< -|Open -\GridDiagramSpec()(\MyEdge) -\Define\L(4){,+#1..+#2\,L\,#3\,#4} -\Define\D(4){,+#1..+#2\,D\,#3\,#4} -\Define\MyEdge(5){ - \IF \EqText(#3,D) \THEN\EdgeSpec(D) - \ELSE \EdgeSpec(L) \FI - \IF \EqText(#1,#2) \THEN - \RotateTo(#4) \CycleEdge(#1) - \EdgeLabel(--$#5$--) - \ELSE\Edge(#1,#2) - \IF \EqText(,#4) \THEN \EdgeLabel(--$#5$--) - \ELSE \EdgeLabel[#4](--$#5$--) \FI - \FI} -\ArrowHeads(1) -\GridDiagram(3,3)()()({ -& T \D(0,1,,f) \D(2,0,,h) & N \L(2,0,,\sigma)// -S \L(0,0,180,t) \L(-1,1,,f) \L(1,1,+,g\circ f)// -& W \L(0,1,,f) & X \D(0,0,-45,r)//}) -|Close >>> - - -\Ex{\tex}{Second example in section 20.2}{sec202} - -\<<< -|Open -\NewNode(\MyNode,\MoveToRect){ - \Move(-24,-8) \DrawRect(48,16) - \Move(16,0) {\Line(0,16)} - \Move(16,0) \Line(0,16) } -\Define\MyEdge(2){ - \CSeg\FindSign(#1,#2) - \EdgeAt(#1,\sign 0.66,0,#2,0,1)} -\Define\FindSign(2){ - \IF \GtDec(#1,0) \THEN - \Define\sign{} - \ELSE \Define\sign{-} \FI} -\TextNode(2){ \Text(--$#2$--) - \IF \EqInt(#1,0) \THEN { - \Move(-16,0) \Text(--$\Lambda$--) - \Move(32,0) \Text(--$\Lambda$--) - }\FI } -\ArrowHeads(1) -\TreeSpace(D,10,20) -\TreeSpec(\MyNode)()(\MyEdge) -\Tree()(2,2,A// 0,0,B&2,2,C// 2,2,D&0,0,E// 0,0,F&0,0,G//) -|Close >>> - - -\Ex{\tex}{Last example in section 20.2}{LR} - -\<<< -|Open -\GridDiagramSpec(\RNode)(\MyEdge) -\GridSpace(10,10) \ArrowSpec(F,5,3,3) -\ArrowHeads(1) \CycleEdgeSpec(-30,20) -\NewNode(\RNode,\MoveToOval){ - \GetNodeSize \Va+4; \Vb+4; - \SetMinNodeSize \Move(0,3) - \DrawOval(\Val\Va,\Val\Vb) } -\Define\MyEdge(3){ - \IF \EqText(#1,#2) \THEN - \RotateTo(45) \LabelPos(+0.5;,3) - \CycleEdge(#1) - \ELSE \DSeg\Q(#1,#2) - \IF \GtDec(\Q,180) \THEN - \LabelPos(+0.4;,3) \ELSE \LabelPos(0.5;,3) - \FI \Edge(#1,#2) \FI \EdgeLabel(--$#3$--) } -\baselineskip=9pt \Define\NEXT(3){,#1..#2\,#3} -\def\/#1/#2.#3;{\hbox{$\scriptstyle#1\rightarrow #2\cdotp#3$}~~} -\GridDiagram(3,3)()()({ -& \/S'/ S. ; \/A / S.a; $I_1$ \NEXT(+0,+1,a) -& \/A / Sa.; $I_2$ -// \/S'/ .S ; \/S / .AS; \/ / .b ; - \/A / .Sa; \/ / .a ; $I_0$ \NEXT(-1,+1,S) \NEXT(+0,+1,A) - \NEXT(+1,+1,b) \NEXT(+1,+0,a) -& \/S /A.S ; \/S /.AS ; \/ /.b ; - \/A /.Sa ; \/ /.a ; $I_3$ \NEXT(+0,+1,S) \NEXT(+0,+0,A) -& \/A/ S.a ; $I_4$ \NEXT(+1,+0,a) -// - \/A/a.; $I_5$ -& \/S/ b. ; $I_6$ -& \/A/ Sa. ; $I_7$ -// -}) -|Close >>> - - - -\Ex{\tex}{Last example in chapter 20}{TM} - - -\<<< -|Open -\NewCIRCNode(\StateNode,104,) -\NewCIRCNode(\AStateNode,104,102) -\Define\StateAt(3){ \MoveTo(#2,#3) - \StateNode(#1)(--$q_{#1}$--)} -\Define\AStateAt(3){\MoveTo(#2,#3) - \AStateNode(#1)(--$q_{#1}$--)} -\LabelSpec(4){\PictLabel{ - { \Move(1,-5) \Line(8,20) } - { \Move(4,10) { \EntryExit(1,0,0,0) - \Text(--\strut$#1$--) } \Move(6,0) - \EntryExit(-1,0,0,0) \Text(--\strut$#3$--) } - { \EntryExit( 1,0,0,0) \Text(--\strut$#2$--) } - \Move(6,0) \EntryExit(-1,0,0,0) \Text(--\strut$#4$--) }} -\DiagramSpec(\StateAt&\AStateAt&\TransEdge) \ArrowHeads(1) -\Diagram( 0,0,0 & 1,80,0 )(2,80,-60)( - 0,0,90,{a,B,+1,a{,+}1} & - 0,1, {a,B,+1,a{,+}1}, {b,B,0,B{,-}1} & - 1,2, {|DEFEND\$,B,0,B{, }0}, ) -|Close >>> - - - - - -\Lib{ProTeX and AlProTex} \def\files{\fileP} \def\LLL{>>>} - -\let\startInput=\empty - -\let\endInput=\empty - -NOTE. The La\TeX{} files of this part put the -{\tt\string\AlProTex....} command after the -{\tt\string\begin\string{document\string}} command. This is not a nice -style for files. - -\Exr{22}2{2a} -\<<< -|Open -\AlProTex{awk,<<<|LLL,@,% - list,title,[]} -\catcode`\@=0 - -An Awk program for deriving -the distribution of words. - -@<<< -BEGIN {print"words\t lines"} -@ -END { i=0 - while (i<=m) - {if (c[i]>0) - {print i "\t " c[i]} - i=i+1 }} -|LLL - -NF is a built-in variable -that holds the number of -words in the current input -line. - -@<<< -{ c[NF]=c[NF]+1 - {if (NF>m) m=NF} } -|LLL \OutputCode@ -|Close >>> - - -\Exr{22}2{2b} -\<<< -|Open -\AlProTex{awk,<<<|LLL,@,% - list,title,[]} - -An Awk program for deriving -the distribution of words. - -\<<< -BEGIN {print"words\t lines"} -@ -END { i=0 - while (i<=m) - {if (c[i]>0) - {print i "\t " c[i]} - i=i+1 }} -|LLL - -NF is a built-in variable -that holds the number of -words in the current input -line. - -\<<< -{ c[NF]=c[NF]+1 - {if (NF>m) m=NF} } -|LLL \OutputCode\ -|Close >>> - - -\Exr{22}2{3} - -\<<< -|Open -\AlProTex{p,<<<|LLL,% - title,list,[]} - -\<<< -PROGRAM prog;|LLL - -\<<< -{ comment } |LLL - -\<<< -BEGIN - \ -END.|LLL - -\OutputCode\ -|Close >>> - -\Exr{22}2{4a} - -\<<< -|Open -\AlProTex{p,list,% - <<<|LLL,title,[]} - -\<\><<< -PROGRAM prog;|LLL - -\<<< -{ comment } |LLL - -\<\><<< -BEGIN - \ -END.|LLL - -\OutputCode\<\> -|Close >>> - -\Exr{22}2{4b} - -\<<< -|Open -\AlProTex{p,% - <<<|LLL,title,[]} - -\<\><<< -PROGRAM prog;|LLL -\ShowCode-\<\> - -\<<< -{ comment } |LLL -\ShowCode\ - -\<\><<< -BEGIN - \ -END.|LLL -\ShowCode\<\> -\OutputCode\<\> -|Close >>> - -\Exr{22}2{4c} - -\<<< -|Open -\AlProTex{p,% - <<<|LLL,title,[]} - -\<\><<< -PROGRAM prog;|LLL - -\<<< -{ comment } |LLL - -\<\><<< -BEGIN - \ -END.|LLL - -\OutputCode\<\> -|Close >>> - - - -\Exr{22}2{5a} - -\<<< -|Open -\AlProTex{p,<<<|LLL,% - title,list,[]} - -\<<< -PROGRAM prog;|LLL - -\<<< -{ comment } |LLL - -\<<< -BEGIN - \ -END.|LLL -\OutputCode\ - -|Close >>> - -\Exr{22}2{5b} - -\<<< -|Open -\AlProTex{p,title,list,[]} - -\{PROGRAM prog;} - -\{ \{ comment \} } - -\{BEGIN - \ -END.} -\OutputCode\ - -|Close >>> - - - - -\Exr{22}2{6a} - -\<<< -|Open -\AlProTex{p,<<<|LLL,[],% - title,list} -\<<< -PROGRAM prog; -BEGIN - \ -END.|LLL - -\<<< -{ comment: \\@||` } |LLL -|Close >>> - -\Exr{22}2{6b} - -\<<< -|Open -\AlProTex{p,<<<|LLL,[],% - title,list,@} -\<<< -PROGRAM prog; -BEGIN - @ -END.|LLL - -\<<< -{ comment: \@@||` } |LLL -|Close >>> - -\Exr{22}2{6c} - - -\<<< -|Open -\AlProTex{p,<<<|LLL,[],% - title,list,||} -\<<< -PROGRAM prog; -BEGIN - || -END.|LLL - -\<<< -{ comment: \@||||` } |LLL -|Close >>> - - -\Exr{22}2{6d} - -\<<< -|Open -\AlProTex{p,<<<|LLL,[],% - title,list,`} -\<<< -PROGRAM prog; -BEGIN - ` -END.|LLL - -\<<< -{ comment: \@||`` } |LLL -|Close >>> - -\Exr{22}2{7} - -\<<< -|Open -\AlProTex{p,<<<|LLL,[],% - title,list,||} - -\<<< -\<<< -PROGRAM prog; -BEGIN - |||| -END.>||empty>> - -\<<< -{comment: \@||||||||} >||empty>> - -\OutputCode\ |LLL - -\OutputCode[prg]\ -\input temp.prg -|Close >>> - - -\Exr{22}2{8a} - -\<<< -|Open -\Code\myprog{my - program}{PROGRAM prog;} -\ShowCode-\myprog - -\AppendCode\myprog{BEGIN - \body -END.} -\Code\body{body}{} -\ShowCode-\myprog - -\AppendCode\body{\{comment\}} -\ShowCode\body - -Code of title \myprog{} -linearized within -the paragraph: -`\ShowCode-\myprog'. - -\OutputCode\myprog -|Close >>> - -\Exr{22}2{8b} - - -\<<< -|Open -\AlProTex{p,<<<|LLL,list,@} - -\Code\myprog{my program}<<< -PROGRAM prog;|LLL - -\Code\body{body}<<< -|LLL -\AppendCode\myprog<<< -BEGIN - @body -END.|LLL - -\AppendCode\body<<< - {comment} |LLL - -Code of title \myprog{} -linearized within the -paragraph: -`\ShowCode-\myprog'. - -\OutputCode\myprog -|Close >>> - - -\Exr{22}2{9} - -\<<< -|Open -\AlProTex{p,<<<|LLL,% - title,list,[]} - -\<<< -PROGRAM prog;|LLL - -\<<< -{ comment } |LLL - -\<<< -BEGIN - \ -END.|LLL - -\OutputCode\ -|Close >>> - -\Exr{22}2{10a} - -\<<< -|Open -\AlProTex{p,<<<|LLL,title,% - list,[],enumerate} - -See lines \RefLine[*]. - -\<<< -PROGRAM prog;\TagLine[*] |LLL - -\<<< -{comment: see \RefLine[*]}|LLL - -\<<< -BEGIN - \ \TagLine[*] |LLL - -\ResetLineCount -\<<< -END.|LLL \OutputCode\ -|Close >>> - -\Exr{22}2{10b} - - -\<<< -|Open -\AlProTex{p,<<<|LLL,title,% - list,[]} -\def\CodeRef[#1]{\Ref{#1}} -\def\CodeTag[#1][#2]{% - \Tag{#1}{#2}} - -See lines \Ref{*}. - -\<<< -PROGRAM prog;\CodeTag[*][1]|LLL - -\<<< -{comment: see \CodeRef[*]}|LLL - -\<<< -BEGIN - \ \CodeTag[*][2]|LLL - -\ResetLineCount \Tag{*}{3} -\<<< -END.|LLL \OutputCode\ -|Close >>> - - - - -\Exr{22}2{11} - -\<<< -|Open -\AlProTex{p,<<<|LLL,title,% - list,[],ShowIndex} - -\<<< -PROGRAM prog;|LLL - -\<<< -{ comment } |LLL -\TextIndex{Tracing} -\SecIndex{***} - -\<<< -BEGIN - \ -END.|LLL - -\def\BeforeIndex{Index} -\ShowIndex -|Close >>> - - - \Exr{22}2{12} - -\<<< -|Open -\AlProTex{p,<<<|LLL,% - title,[],ShowTop} - -\<<< -PROGRAM prog; -BEGIN \ -END.|LLL -\<<< -{ comment 1} -|LLL -\<<< -\ -|LLL -\<<< -{ comment 2 } |LLL -\ShowTop\ - -\def\ShowSep{(* ***** *)\par} -\ShowTop\ -|Close >>> - - \Exr{22}2{13} - - -\<<< -|Open -\AlProTex{p,<<<|LLL,title,% - list,[],NoShow} - -First piece of text. - -\<<< -PROGRAM prog; |LLL - -\ShowOff Second piece of text. - -\<<< -{ comment } |LLL - -\Note Third piece of -text. \EndNote\ShowOn - -\<<< -BEGIN - \ -END.|LLL - -Last piece of text. -|Close >>> - - \Exr{22}2{14} - -\<<< -|Open -\AlProTex{p,<<<|LLL,title,% - list,ShowIndex,ClearCode} - -Chapter 1 - -\<<< -PROGRAM prog; -|LLL -\<<< -BEGIN - { comment 1 } -END.|LLL \ShowIndex - \ClearCode -\vfil\break Chapter 2 - -\<<< -PROGRAM prog; -|LLL -\<<< -BEGIN - { comment 2 } -END.|LLL \ShowIndex -|Close >>> - -\begingroup -\def\tex{tex}\let\op=\ForTex \Exr{22}2{15}\par\nobreak - -\<<< -\hsize=2.5in \noindent{\bf -LITERATE PROGRAM IN WEB} -\medskip We compute a -two-dimensional view of a -three-dimensional point. - -@* The mapping. The view - {\tt (x,y)} is on the - {\tt Z=0} plane. -@= - x := X * D DIV (D + Z); - -@ The viewer is located - at {\tt (0,0,-D)}. -@= - CONST D=100; - VAR X {x}, Z: INTEGER; - -@ -@= - y := Y * D DIV (D + Z); - -@ -@=Y {y}: INTEGER; - -@* Main program. -@p PROGRAM D2view; - @ - BEGIN read(X,Y,Z); - @ - write(x,y) - END. -\bye>>> -\endgroup - - -\Ex{\tex}{NEW OPTION `[[]]' FOR {\tt\char92}AlProTex}{NewAlPrOptionA} - -An extension of `[]' which frame also the code fragments. - -\<<< -|Open -\AlProTex{p,<<<|LLL,% - title,list,[[]]} - -Foooo... - -\<<< -PROGRAM prog;|LLL - -Foooo... - -\<<< -{ comment } |LLL - -Foooo... - -\<<< -BEGIN - \ -END.|LLL - -Foooo... - -\OutputCode\ -|Close >>> - -\begingroup -\def\tex{latex}\let\op=\ForTex - - -\Ex{\tex}{NEW OPTION `basic' FOR {\tt\char92}AlProTex}{NewAlPrOptionB} - - -An option that requires compilation by latex. The following -are the only available commands. - - -A. References to code segments: \hfill {\tt\string\} - -B. Definitions of code fragments: \hfill {\tt\string\<<< - -\hfill code fragment>>>} - -B. Output file of code (`[{\it extension}]' is optional): - \hfill{\tt\string\o[{\it extention}]\string\} - - -C. The character `{\tt\char92}' \hfill{\tt\string\\} - -D. End of source program \hfill{\tt\string\e} - -E. Logical partitioning of prose (chapters, sections, subsections, and verbatim): -\hfill\hbox{\tt\string\c, \string\s, \string\u, \string\v{$\cdots$}{\char92}} - -\noindent\phantom{E.} A title -must be delimited by an empty line. - -F. Reference to {\tt\string\ClearCode} \hfill {\tt\string\c} - - - - -\<<< -\input ProTex.sty -\AlProTex{foo,basic} - -\cFirst Chapter - -Foooo... - -\sSsssss... - -Foooo. - -\uUuuuuuu..... - -\vVerbatim -verbatim\ -\<<< -PROGRAM prog;|LLL -\cCccc... - -Foooo... - -\<<< -{ comment } |LLL - -Foooo... - -\<<< -BEGIN - \ -END.|LLL - -Foooo... - -\o\ - -\e - >>> - -\Ex{\tex}{variant of `basic'}{NewAlPrOptionC} - -The options `{\tt @}', `{\tt|}', and `{\tt`}' ask that the listed -characters will be used instead of `{\tt\char92}', respectively, -within the commands of option `{\tt basic}'. - -\<<< -\input ProTex.sty -\AlProTex{foo,@,basic} - -@cFirst Chapter - -Foooo... - -@sSsssss... - -Foooo. - -@uUuuuuuu..... - -@vVerbatim -verbatim@ - -@<<< -PROGRAM prog;|LLL -@cCccc... - -Foooo... - -@<<< -{ comment } |LLL - -Foooo... - -@<<< -BEGIN - @ -END.|LLL - -Foooo... - -@o@ - -@e ->>> - -\endgroup - -\newpage \OutputCode[me]\execute - - - On a Unix system containing the xdvi application, the instructions of - the following file can be executed with the compound command - `chmod 777 execute.me ; execute.me'. - - \bigskip - \ShowFile{execute.me} - -\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} -\write16{<< Please review the document <<} -\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} - -\bye diff --git a/Master/texmf-dist/doc/generic/dratex/README b/Master/texmf-dist/doc/generic/dratex/README deleted file mode 100644 index 32f9a71ce18..00000000000 --- a/Master/texmf-dist/doc/generic/dratex/README +++ /dev/null @@ -1,2 +0,0 @@ -Documentation can be found at - http://www.cis.ohio-state.edu/~gurari/systems.html diff --git a/Master/texmf-dist/doc/latex/dratex/Examples.tex b/Master/texmf-dist/doc/latex/dratex/Examples.tex new file mode 100644 index 00000000000..4603a22b63a --- /dev/null +++ b/Master/texmf-dist/doc/latex/dratex/Examples.tex @@ -0,0 +1,2058 @@ +%\def\TexFiles{} +\def\ext{Changeable} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Compile this file with TeX and review the document. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\hfill 15 Apr. 94 +\bigskip +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Code of examples and exercises from % +% % +% TeX and LaTeX: Drawing and Literate Programming % +% % +% gurari@cse.ohio-state.edu % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} +\immediate\write16{<<< tex Examples.tex <<<<<<<<<<<} +\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %% + %% +\input ProTex.sty %%%%%%%%%%%%%%%%%%%% + + +\expandafter\def\csname :warn\endcsname#1{} +\Code\top{}{\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} +\immediate\write16{<<<<< \op \name.\ext} +\immediate\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} + +% \com +} + + \ifx \TexFiles\empty %%%%%%%%%%%%%%%%%%%%%%%% +\def\tex{tex} + +\def\DEFEND{\% LaTeX requires a {\tt\string\Defend} here \%} + +\Code\Open{}{\files +\startInput +} + +\Code\Close{}{ +\endInput +\\bye} + \else %%%%%%%%%%%%%%%%%%%%%%%% +\def\tex{latex} + +\Code\DEFEND{{\it LaTeX requires a {\tt\string\Defend} + here}}{\% LaTeX requires a \string\Defend here \%\string\Defend} + +\Code\Open{}{\\documentstyle{book} +\files +\\begin{document} +\startInput} + +\Code\Close{}{ +\endInput +\\end{document}} + \fi %%%%%%%%%%%%%%%%%%%%%%%% + +\Code\fileD{}{ +\\input DraTex.sty } + +\Code\fileAD{}{ +\\input DraTex.sty +\\input AlDraTex.sty } + +\Code\fileP{}{ +\\input ProTex.sty } + +\Code\startInput{}{\\Draw} +\Code\endInput{}{\\EndDraw} + +\AlProTex{\ext,<<<>>>,[],list,|,ShowFile,NoShow} %%%%%%%%%%%%%%%%%%%% + +\let\SC=\ShowCode +\Code\execute{}<<< +>>> + +\newcount\exron +\def\nop#1{\ifnum \exron>0 #1 \fi} + +\catcode`\^^M=13 \catcode`\#=12 % +\def\<<<{% + \edef\temp{% + \noexpand\AppendCode\noexpand\execute<<< + \nop#\op\space\space \name.\ext\space\space\space # \com + \nop#xdvi\space\space \name.dvi + >>>}\ShowOff\temp\ShowOn% + \def\ShowCode{% + \expandafter\OutputCode\csname\name\endcsname \def\top + {} \global\let\ShowCode=\SC \ShowCode}% + \expandafter\Code\csname\name\endcsname{}<<< + \top}% +\catcode`\^^M=5 \catcode`\#=6 + +\def\newpage{\def\newpage{\par\vfill\break}} +\newcount\1 \newcount\2 \newcount\3 + +\def\ForTex{tex} + +\def\Ex#1#2#3{\global\advance\exron by -1 + \edef\op{#1} + \edef\For{for \ifx \op\ForTex \else La\fi TeX} + \def\com{#2} + \def\name{#3} \hrule + \medskip\noindent$\underline{\hbox{#1\quad\name.\ext}}$ + \qquad{\it #2\/} {\rm(\For)}\medskip} + +\def\Exr#1#2#3{\global\exron=2 + \setbox0=\hbox{\global\1#1 \global\2#2 \global\3#3} + \Ex{\tex}{Exercise \the\1.\the\2.\the\3}{exr#1#2#3}} + +\def\Lib#1{\newpage\hrule + \noindent\hfil{\bf \strut#1}\hrule} + +\hbadness=10000 \vbadness=10000 \hfuzz=99in \vfuzz=99in + %% + %% + %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\noindent NOTES + +(a) If you want to get TeX files instead of LaTeX files, remove `\%' +from the first line of file `{\tt Examples.tex}'.%%% first line of this file + + +(b) If you want different extensions in the files' names, +change the definition of {\tt\string\ext} in the second line +of file `{\tt Examples.tex}'.%%% second line of this file + +(c) Files carrying names that start with `exr' have been retrieved +from exercises. Many of these files are incomplete, and they expect +that the reader will provide the missing code. (La)TeX will prompt you +with `?' on incomplete files. In such cases, type `x' followed by +RETURN. + +\bigskip \Lib{DraTeX} \def\files{\fileD} + +\Ex{tex}{First example in section 6.2}{sec62a} + +\<<< +\input DraTex.sty +\Draw + \LineAt(0.1, 0,-18,-10) + \LineAt(-18,-10,- 6, 26) + \LineAt(- 6, 26, 18,- 4) + \LineAt( 18,- 4, 12,-40) + \LineAt( 18,- 4, 24,-40) + \LineAt( 18,- 4, 58,- 4) + \LineAt( 58,- 4, 52,-40) + \LineAt(58,-4,64,-40) \LineAt(58,-4,66,4) +\EndDraw +\bye >>> + +\Ex{latex}{First example in section 6.2}{sec62b} + +\<<< +\documentstyle{report} + \input DraTex.sty +\begin{document} +\Draw + \LineAt(0.1, 0,-18,-10) + \LineAt(-18,-10,- 6, 26) + \LineAt(- 6, 26, 18,- 4) + \LineAt( 18,- 4, 12,-40) + \LineAt( 18,- 4, 24,-40) + \LineAt( 18,- 4, 58,- 4) + \LineAt( 58,- 4, 52,-40) + \LineAt(58,-4,64,-40) \LineAt( 58,-4,66,4) +\EndDraw +\end{document}>>> + + +\Ex{latex}{First example in section 6.2---second version}{sec62c} + +\<<< +\documentstyle[DraTex]{report} +\begin{document} +\Draw + \LineAt(0.1, 0,-18,-10) + \LineAt(-18,-10,- 6, 26) + \LineAt(- 6, 26, 18,- 4) + \LineAt( 18,- 4, 12,-40) + \LineAt( 18,- 4, 24,-40) + \LineAt( 18,- 4, 58,- 4) + \LineAt( 58,- 4, 52,-40) + \LineAt(58,-4,64,-40) \LineAt(58,-4,66,4) +\EndDraw +\end{document}>>> + + + +\Exr672 + +\<<< +|Open + \MarkLoc(a) \Move(50,0) + \MarkLoc(A) \Move(50,0) + \MarkLoc(b) \Move(-30,30) + \MarkLoc(B) \Move(-30,30) + \MarkLoc(c) \Move(-20,-30) + \MarkLoc(C) + \Curve(A,b,b,B) + \Curve(B,c,c,C) + \Curve(C,a,a,A) +|Close>>> + + + \Ex{tex}{First example in section 6.1}{sec61} + +\<<< +\input DraTex.sty + +We can draw clocks of +different styles and sizes. + +\Draw + \Move(0,20) \Line(0,-50) \Line(50,0) + \PenSize(1.5pt) \Line(0,50) \Line(-50,0) + \Move(5,-25) \Text(--9--) + \Move(20,-18) \Text(--6--) + \Move(20,18) \Text(--3--) + \Move(-20,18) \Text(--12--) + \Move(0,-18) {\RotateTo(60) \LineF(19)} + \RotateTo(210) \LineF(14) +\EndDraw + +We can draw people of +different shapes and looks. + +\Draw(0.6pt,0.6pt) + \DrawOvalArc(30,45)(0,180) + \DrawOvalArc(30,12)(180,360) + \DrawOvalArc(60,25)(140,400) + \Move(0,5) + \DrawOvalArc(30,60)(225,315) + \DrawOvalArc(20,52)(260,280) + \Move(-10,-37) {\Text(--$\cdotp$--)} \Text(--o--) + \Move(20,0) {\Text(--$\cdotp$--)} \Text(--o--) +\EndDraw + +And we can produce many other +types of drawings. \bye>>> + + + +\Ex{latex}{First example in section 6.1}{sec61a} + +\<<< +\documentstyle{report} +\input DraTex.sty +\begin{document} + +We can draw clocks of +different styles and sizes. + +\Draw + \Move(0,20) \Line(0,-50) \Line(50,0) + \PenSize(1.5pt) \Line(0,50) \Line(-50,0) + \Move(5,-25) \Text(--9--) + \Move(20,-18) \Text(--6--) + \Move(20,18) \Text(--3--) + \Move(-20,18) \Text(--12--) + \Move(0,-18) {\RotateTo(60) \LineF(19)} + \RotateTo(210) \LineF(14) +\EndDraw + +We can draw people of +different shapes and looks. + +\Draw(0.6pt,0.6pt) + \DrawOvalArc(30,45)(0,180) + \DrawOvalArc(30,12)(180,360) + \DrawOvalArc(60,25)(140,400) + \Move(0,5) + \DrawOvalArc(30,60)(225,315) + \DrawOvalArc(20,52)(260,280) + \Move(-10,-37) {\Text(--$\cdotp$--)} \Text(--o--) + \Move(20,0) {\Text(--$\cdotp$--)} \Text(--o--) +\EndDraw + +And we can produce many other +types of drawings. \end{document}>>> + +\Ex{latex}{First example in section 6.1---second version}{sec61b} + +\<<< +\documentstyle[DraTex]{report} +\begin{document} + +We can draw clocks of +different styles and sizes. + +\Draw + \Move(0,20) \Line(0,-50) \Line(50,0) + \PenSize(1.5pt) \Line(0,50) \Line(-50,0) + \Move(5,-25) \Text(--9--) + \Move(20,-18) \Text(--6--) + \Move(20,18) \Text(--3--) + \Move(-20,18) \Text(--12--) + \Move(0,-18) {\RotateTo(60) \LineF(19)} + \RotateTo(210) \LineF(14) +\EndDraw + +We can draw people of +different shapes and looks. + +\Draw(0.6pt,0.6pt) + \DrawOvalArc(30,45)(0,180) + \DrawOvalArc(30,12)(180,360) + \DrawOvalArc(60,25)(140,400) + \Move(0,5) + \DrawOvalArc(30,60)(225,315) + \DrawOvalArc(20,52)(260,280) + \Move(-10,-37) {\Text(--$\cdotp$--)} \Text(--o--) + \Move(20,0) {\Text(--$\cdotp$--)} \Text(--o--) +\EndDraw + +And we can produce many other +types of drawings. \end{document}>>> + + +\Exr732 + +\<<< +|Open +\font\ARROWS=line10\space scaled\magstep5 +\font\CIRCLES=lcircle10\space scaled\magstep5 +% \newfont{\ARROWS}{line10\space scaled\magstep5} +% \newfont{\CIRCLES}{lcircle10\space scaled\magstep5} + + \Text(--\CIRCLES \char 10--) +\Text(--\CIRCLES \char 11--) \Text(--\ARROWS \char 55--) +\Text(--\CIRCLES \char 110--)\EntryExit(-1,0,-1,0) +\Text(--\CIRCLES \char 114--)|Close>>> + +\Exr741 + +\<<< +|Open +\Ragged(8) +\Line(10,-10) \Line(10,20) +\LineTo(0,0) +|Close>>> + + +\Ex{\tex}{First example in section 8.1}{sec81} + +\<<< +|Open +\ThreeDim(-150,-60,-600) + \Line(60,0,0) \Line(0,0,60) + \Line(-60,0,0) \Line(0,0,-60) + \LineTo(0,60,0) \Line(60,0,0) + \Line(0,-60,0) + \LineAt(0,60,0,0,60,60) + \Line(0,-60,0) +\EndThreeDim |Close>>> + + +\Ex{\tex}{Example of USA map in section 9.3}{usa} + +\<<< +|Open(0.9pt,0.9pt) +\Table\USA{ % California + -60,-35 & -77,-30 & -80, + -20 & -90,-15 & -100,40 & + % Oregon + -100,50 & -90,80 & + % Wash + -90,95 & -78,90 & -75,95 & + % Minn + 100,70 & 85,60 & + % Wisc-Mich + 95,60 & 105,65 & 102,63 & 110,60 & 125,60 & 110,55 & 110,30 & + 115,25 & 120,30 & 115,40 & 115,50 & 120,55 & 130,55 & 140,40 & + 135,25 & + % Ohio-NY-Vt + 145,25 & 155,30 & 160,45 & 175,45 & 175,55 & 180,60 & 195,65 & + % Maine + 200,75 & 200,85 & 205,90 & 210,90 & 215,80 & 220,75 & 205,60 & 205,50 & + % Mass--NY + 210,43 & 208,47 & 215,43 & 190,30 & 202,35 & + % NJ--Va + 197,25 & 190,18 & 185,20 & 190,15 & 190,5 & 182,18 & 182,0 & 185,0 & + % NC + 190,-8 & 185,-4 & 183,-6 & 186,-6 & 182,-15 & + 190,-18 & 190,-10 & 192,-10 & + 195,-18 & + % Ga-Fl + 165,-40 & 160,-50 & 175,-80 & 175,-90 & 170,-100 & 165,-100 & + 155,-80 & 155,-65 & 145,-60 & 140,-62 & 136,-62 & 120,-60 & + % Alaba--La + 102,-63 & 107,-67 & 107,-72 & 110,-75 & 90,-65 & + 78,-65 & + % Texas + 62,-78 & 57,-78 & 50,-82 & 53,-92 & 48,-90 & 25,-65 & 15,-65 & + 15,-68 & -10,-50 & + % New Mexico + -40,-50 & + % Back to California + -60,-35 } +{ \USA(0,0){\MoveTo} \USA(1,99){\LineTo} } \Text(--USA--) +\Scale(0.5,0.5) \USA(46,46){\MoveTo} \USA(47,92){\LineTo} +\MoveTo(-30,0) \MarkLoc(a) \USA(0,0){\Move} \MarkLoc(b) +\USA(0,46){{\LineToLoc(b)} \MarkLoc(b) \MoveToLoc(a) \Move} +|Close>>> + + +\Exr{10}1{1a} +\<<< +|Open +\Text(--Government~% + Bonds (\%)--) +\Table\B{Britain,9.59 & + Canada,7.98 & Japan,5.46 & + U.S., 6.84 & Mexico,14.9} +\B(0,4){\PutBar} +|Close >>> + +\Exr{10}1{1b} +\<<< +|Open +\chick(0,75) \Scale(-1,1) +\chick(0,140) +|Close >>> + +\Exr{10}1{1c} +\<<< +|Open +\Table\x{ 30,40 + & 15,60 & 27,15 & 35,35 + & 50,45 & 25,70 & 20,20 + & 25,75 } \x(0,99){\Tr} +|Close >>> + +\Exr{10}1{1d} +\<<< +|Open +\sqr(-24,0) +\sqr(0,32) +\sqr(24,-32) +|Close >>> + +\Exr{10}1{1e} +\<<< +|Open +\engine(90) \MoveTo(50,0) +\engine(180) \MoveTo(100,0) +\engine(-30) +|Close >>> + +\Exr{10}1{1f} +\<<< +|Open +\MarkLoc(A) +\spring(110) \Rotate(70) +\spring(60) \MarkLoc(B) +\DSeg\RotateTo(B,A) +\LSeg\spring(B,A) +|Close >>> + +\Exr{10}21 +\<<< +|Open +\new(BODY) \(20) +\LineF(20) \Rotate(55) \LineF(16) +\new(hand) \(140) \LineF(35) +\new(hand) \(90) \LineF(7) +\new(head) \(-60) \LineF(19) +\new(left-leg) \(210) \LineF(12) +\Rotate(30) \LineF(14) \new(right-leg) +\Do(1,11){\I+15; \(\Val\I) +\LineF(11)} +|Close >>> + + +\Exr{10}22 + +\<<< +|Open +\def\DefineSymbol#1{% + \Indirect\Define<#1>} + +\def\DrawText(--#1--){% + \let\xNextSym=\xDrawSym \xNextSym#1{}} + +\def\xDrawSym#1{\def\temp{#1}% + \ifx \temp\empty \let \xNextSym=\relax + \else \Indirect<#1>\fi \xNextSym } + +\DefineSymbol A{{ \Line(21,60) + \Line(21,-60) \Move(-7,20) + \Line(-28,0) } \Move(52,0) } +\DefineSymbol B{{ \DrawText(--P--) + \Move(-25,18) + \DrawOvalArc(15,18)(-90,90) + \Move(0,-18) \Line(-25,0)} + \Move(50,0) } \DefineSymbol P +{{ \Line(0,60) \Line(25,0) + \Move(0,-12) \DrawOvalArc(15,12)(-90,90) + \Move(0,-12) \Line(-25,0) } \Move(50,0) } + \DefineSymbol C{{ \Move(20,30) + \DrawOvalArc(20,30)(45,315) } \Move(46.6,0) } + \DefineSymbol D{{ \Line(0,60) \Line(20,0) + \Move(0 ,-30) \DrawOvalArc(20,30)(-90,90) \Move(0,-30) + \Line(-20,0) } \Move(50,0) } + \DefineSymbol E{{ \DrawText(--F--) \Move(-50,0) + \Line(40,0) } \Move(50,0) } + \DefineSymbol F{{ \Line(0,60) \Line(40,0) + \Move(-40,-30) \Line(30,0) } \Move(50,0) } + \DefineSymbol G{{ \DrawText(--C--) + \Move(-10,30) {\Line(-20,0)} \Line(0,-30) } + \Move(46.6,0) } + \DefineSymbol H{{ \Line(0,60) \Move(40,0) + \Line(0,-60) \Move(0,30) \Line(-40,0) } \Move(50,0) } + \DefineSymbol I{{ \Line(0,60) } \Move(10,0) } + \DefineSymbol J{{ \Move(20,17) \DrawOvalArc(20,17)(180,360) + \Move(20,0) \Line(0,43) } \Move(50,0) } + \DefineSymbol K{{ \Line(0,60) \Move(0,-35) + \Line(40,35) \Move(-32,-28) \Line(32,-32) } \Move(50,0) } + \DefineSymbol L{{ { \Line(0,60) } \Line(40,0) } \Move(50,0) } + \DefineSymbol M{{ \Line(0,60) \Line(25,-60) + \Line(25,60) \Line(0,-60) } \Move(60,0) } + \DefineSymbol N{{ \Line(0,60) \Line(40,-60) + \Line(0,60) } \Move(50,0) } + \DefineSymbol O{{ \Move(22,30) \DrawOval(22,30) } \Move(54,0) } + \DefineSymbol P{{ \Line(0,60) \Line(25,0) + \Move(0,-12) \DrawOvalArc(15,12)(-90,90) + \Move(0,-12) \Line(-25,0) } \Move(50,0) } + \DefineSymbol Q{{ \DrawText(--O--) \Move(-10,-5) + \Line(-15,15) } \Move(55,0) } + \DefineSymbol R{{ \DrawText(--P--) \Move(-10,0) + \Line(-15,36) } \Move(50,0) } + \DefineSymbol S{{ \Move(20,18) \DrawOvalArc(20,18)(-140,90) + \Move(0,30) \DrawOvalArc(20,12)(40,270) } \Move(50,0) } + \DefineSymbol T{{ \Move(22,0) \Line(0,60) \Move(-22,0) + \Line(44,0) } \Move(54,0) } + \DefineSymbol U{{ \Move(20,15) \DrawOvalArc(20,15)(180,360) + \Move(-20,0) \Line(0,45) \Move(40,0) \Line(0,-45) } + \Move(50,0) } + \DefineSymbol V{{ \Move(0,60) \Line(22,-60) + \Line(22,60) } \Move(54,0) } + \DefineSymbol W{{ \Move(0,60) \Line(15,-60) + \Line(15,60) \Line(15,-60) \Line(15,60) } \Move(70,0) } + \DefineSymbol X{{ \Line(40,60) \Move(-40,0) + \Line(40,-60) } \Move(50,0) } + \DefineSymbol Y{{ \Move(20,0) \Line(0,34) { \Line(-20,26)} + \Line(20,26) } \Move(50,0) } + \DefineSymbol Z{{ \Move(0,60) \Line(40,0) \Line(-40,-60) + \Line(40,0) } \Move(50,0) } + \DefineSymbol 0{{ \Move(25,30) \DrawOval(25,30) } \Move(60,0) } + \DefineSymbol 1{{ \Line(0,60) } \Move(10,0) } + \DefineSymbol 2{{ \MarkLoc(a) \Move(0,10) + \MarkLoc(a') \Move(40,30) \MarkLoc(b) + \Move(0,-10) \MarkLoc(b') \Curve(a,a',b',b) + \Move(-20,10) \DrawOvalArc(20,20)(0,180) + \Move(-20,-40) \Line(40,0) } \Move(50,0) } + \DefineSymbol 3{{ \MarkLoc(a') \Move(0,10) \MarkLoc(a) + \Move(20,-10) \MarkLoc(b) \Move(-10,0) \MarkLoc(b') + \Curve(a,a',b',b) \Move(22,0) \MarkLoc(b') + \Move(8,8) \MarkLoc(a') \Move(0,10) \MarkLoc(a) + \Curve(a,a',b',b) \Move(0,10) \MarkLoc(a') + \Move(-8,8) \MarkLoc(b') \Move(-10,0) + \MarkLoc(b) \Curve(a,a',b',b) \Move(-5,0) + \MarkLoc(b') \Move(-5,-3) \MarkLoc(a') + \Move(0,-2) \MarkLoc(a) \Curve(a,a',b',b) + \Line(30,29) \Line(-40,0) } \Move(50,0) } +\DefineSymbol 4{{ \Move(35,0) \Line(0,60) + \Line(-35,-35) \Line(45,0)} \Move(55,0) } + \DefineSymbol 5{{ \Move(15,20) \DrawOvalArc(19,20)(-140,140) + \Move(-15,10) \Line(0,30) \Line(30,0) } \Move(44,0) } + \DefineSymbol 6{{ \Move(22,30) \DrawOvalArc(22,30)(70,270) + \Move(0,-10) \DrawOvalArc(22,15)(0,174) + \DrawOvalArc(22,20)(270,360) } \Move(54,0) } + \DefineSymbol 7{{ \Move(0,60) \Line(40,0) + \MarkLoc(a) \Move(-20,-60) \MarkLoc(b) + \DSeg\RotateTo(b,a) \Rotate(20) \MoveF(10) \MarkLoc(b') + \MoveToLoc(a) + \DSeg\RotateTo(a,b) \Rotate(-20) \MoveF(10) \MarkLoc(a') + \Curve(a,a',b',b) } \Move(50,0) } + \DefineSymbol 8{{ \Move(20,17) \DrawOval(20,17) + \Move(0,30) \DrawOval(20,13) } \Move(50,0) } + \DefineSymbol 9{{\Move(50,60) \Scale(-1,-1) \DrawText(--6--) } \Move(54,0) +} + +\Scale(0.1,0.1) \Ragged(1) +\DrawText(--BOLD--) +\PenSize(0.2pt) \MoveTo(0,-100) +{ \Scale(-1,1) + \DrawText(--BACKWARD--) } +\MoveTo(0,-200) \RotatedAxes(0,75) \DrawText(--SLANTED--) +\EndRotatedAxes \MoveTo(0,-300) \RotatedAxes(-45,45) +\DrawText(--ROTATED--) \EndRotatedAxes +|Close>>> + +\Ex{\tex}{Last example in section 11.2}{boxes} + +\<<< +|Open +\Object\ch(1){\Text(--#1--) + \MoveToExit(-1,-1) + \FigSize\Q\R{\Text(--#1--)} + \DrawRect(\Val\Q,\Val\R) } +\Define\chrs(1){\font\f=#1\space scaled\magstep4 \f + \Table\chrs{A & l & l & ~ & i & n & ~ & + b & o & x & e & s & .} \chrs(0,99){\ch} } +\PenSize(0.2pt) \EntryExit(-1,-1,1,-1) +{\chrs(cmtt10)} \Move(0,-20) \chrs(cmsl10) +|Close>>> + +\Exr{11}21 +\<<< +|Open +\Define\side(3){ + \ProjectedAxes(#1,#2)(#1,#3) + \DrawRect(1,1) \Move(0.5,0.5) + \DrawCircle(0.5) + \EndProjectedAxes } +\ThreeDim(80,70,-40) \MarkPLoc(a) + \Move(0,-50,0) \MarkPLoc(b) + \Move(0,50,25) \MarkPLoc(c) + \Move(-25,0,-25) \MarkPLoc(d) + \side(a,b,d) \side(a,b,c) \side(a,c,d) +\EndThreeDim +|Close >>> + + +\Exr{11}24 + +\<<< +|Open +\Define\Spline(1){ + \MarkLoc(0) \MoveTo(0,0) \MarkLoc(00) + \Table\P{#1} \Define\Count(1){\K+1;} \K=-4; + \P(0,999){\Count} + \Do(0,\Val\K){ + \GetCoefficients + \MoveTo(\Val\Ao,\Val\Bo) \CSeg\Move(00,0) + \MarkLoc(o) \f \MarkLoc(x) + \Do(1,30){ + \T=\DoReg; \T/30; + \X=\Aiii; \X*\T; \X+\Aii; \X*\T; \X+\Ai; \X*\T; + \Y=\Biii; \Y*\T; \Y+\Bii; \Y*\T; \Y+\Bi; \Y*\T; + \MoveToLoc(o) \Move(\Val\X,\Val\Y) \f + {\LineToLoc(x)} \MarkLoc(x) }} + \MoveToLoc(0)} + +\Define\f{} +\DecVar\Ao \DecVar\Ai \DecVar\Aii \DecVar\Aiii \DecVar\X +\DecVar\Bo \DecVar\Bi \DecVar\Bii \DecVar\Biii \DecVar\Y + +\Define\GetCoefficients{ + \I=\DoReg; \P(\Val\I,\Val\I){\First} + \I+1; \P(\Val\I,\Val\I){\Second} + \I+1; \P(\Val\I,\Val\I){\Third} + \I+1; \P(\Val\I,\Val\I){\Fourth} } +\Define\First(2){\Ao=#1; \Ai=-#1; \Aii=#1; \Aiii=-#1; + \Bo=#2; \Bi=-#2; \Bii=#2; \Biii=-#2;} +\Define\Second(2){ + \T=#1; \T* 4; \Ao +\T; \T=#2; \T* 4; \Bo +\T; + \T=#1; \T*-2; \Aii+\T; \T=#2; \T*-2; \Bii+\T; + \T=#1; \T* 3; \Aiii +\T; \T=#2; \T* 3; \Biii +\T;} +\Define\Third(2){ \Ao +#1; \Ao /6; \Bo +#2; \Bo /6; + \Ai +#1; \Ai /2; \Bi +#2; \Bi /2; + \Aii+#1; \Aii/2; \Bii+#2; \Bii/2; + \T=#1; \T*-3; \Aiii+\T; \T=#2; \T*-3; \Biii+\T;} +\Define\Fourth(2){ + \Aiii+#1; \Aiii/6; \Biii+#2; \Biii/6;} + +\Spline(0,15 & 30,-70 + & 40,-50 & 10,0 & 15,30 + & 50,5 &60,10 & 8,45 & + 8,55 & 30,70 & 0,80 & + -30,70 &-8,55 & -8,45 & + -60,10 &-50,5 & -15,30 & + -10,0 &-40,-50 &-30,-70 & + 0,15 & 30,-70 & 40,-50 ) +\Define\ShowPoint(2){ + \MoveToLoc(0) \Move(#1,#2) + \Text(--$\circ$--)} +\P(0,99){\ShowPoint} + +\Define\TEX{ + \Spline(0,-15 & 0,-15 & + 0,-15 & 0, 15 & + 0, 15 & 0, 15 ) + \Spline(-10,15 & + -10,15 & -10,15 & 10,15 & + 10,15 & 10,15) + \Move(12,0) + \Spline(0,0 & 0,0 & 0,0 & 14,0 & 14,0 & 14,0) + \Spline( 20,15 &20,15 &20,15 & 0,15 & 0,15 + & 0,-15 & 0,-15 & 20,-15 &20,-15&20,-15) + \Move(32,0) \Spline( -10,-15 & -10,-15 & + -10,-15 & 10,15 & 10,15 & 10,15) + \Spline( -10,15 & + -10,15 & -10,15 & 10,-15 & 10,-15 & 10,-15) } +\TEX \MoveTo(0,0) \F +\TEX \MoveTo(0,-35) \G +\TEX +|Close >>> + + +\Exr{11}31 +\<<< +|Open +\Define\put(2){ + \IF \EqText(,#1) \THEN + \top \Define\put(1){} + \ELSE \push(#1) \FI \put(#2)} +\Define\stack(1){ + {\put(#1,,)} \Move(0,-13)} +\Table\x{ & 1& 1, 2& +1, 2, 3& 1, 2, 3, 4& +1, 2, 3, 4, *& 1, 2, 12& +1, 2, 12,+& 1, 14& 1, 14,+& 15} +\x(0,100){\stack} +|Close >>> + + +\Exr{11}32 +\<<< +|Open +\Table\g{ + 16 & 8 & 4 & 2 & 1 & + 20 & 16 & 8 & 4 & 2 & + 17 & 12 & 16 & 8 & 4 & + 23 & 20 & 12 & 13 & 17 } +\ThreeDim(160,75,-70) + \Scale(20,5,20) + \g(0,140){\surface} +\EndThreeDim +|Close >>> + + + + + + +\Ex{\tex}{NEW OPTION FOR {\tt\char92}ThreeDim}{NewThreeDim} + + + +{\tt\string\ThreeDim($x_e$,$y_e$,$z_e$)} perspective projections (old option) + +{\tt\string\ThreeDim($\alpha_{xy}$,$\alpha_z$)} parallel projections (new additional option): +$\alpha_{xy}$ --- direction within xy plane, +$\alpha_z$ --- direction with respect to xy plane. + + e.g., {\tt\string\ThreeDim(30,60)} or +{\tt\string \ThreeDim(45,60)} + + +\<<< +|Open +\Define\cube{ + \Line(50,0,0){\Line(0,0,50)} + \Line(0,50,0){\Line(0,0,50)} + \Line(-50,0,0){\Line(0,0,50)} + \Line(0,-50,0) \Move(0,0,50) + \Move(50,0,0) \Line(0,50,0) + \Line(-50,0,0) } +\ThreeDim(80,80,-100) \cube \EndThreeDim +\MoveTo(0,-130) +\ThreeDim(45,60) \cube \EndThreeDim +\MoveTo(0,-260) +\ThreeDim(30,60) \cube \EndThreeDim +|Close>>> + +\Lib{AlDraTeX} \def\files{\fileAD} + + +\Ex{tex}{Example in section 13.2}{sec132} + +\<<< +\input DraTex.sty +\input AlDraTex.sty +\Draw + \Scale(1,0.5) + \PieChartSpec(1,50,20)() + \PieChart(15 & 10 & 30) + \Move(0,-6) + \DrawOvalArc(50,50)(180,360) +\EndDraw +\bye>>> + +\Ex{tex}{Example in section 13.2---second version}{sec132a} + +\<<< +\input DraTex.sty + \def\AlDraTex{pie} +\input AlDraTex.sty +\Draw + \Scale(1,0.5) + \PieChartSpec(1,50,20)() + \PieChart(15 & 10 & 30) + \Move(0,-6) + \DrawOvalArc(50,50)(180,360) +\EndDraw +\bye>>> + + +\Ex{latex}{Example in section 13.2}{sec132b} + +\<<< +\documentstyle{report} + \input DraTex.sty + \input AlDraTex.sty +\begin{document} +\Draw + \Scale(1,0.5) + \PieChartSpec(1,50,20)() + \PieChart(15 & 10 & 30) + \Move(0,-6) + \DrawOvalArc(50,50)(180,360) +\EndDraw +\end{document}>>> + +\Ex{latex}{Example in section 13.2---second version}{sec132c} + +\<<< +\documentstyle[DraTex,AlDraTex]{report} +\begin{document} +\Draw + \Scale(1,0.5) + \PieChartSpec(1,50,20)() + \PieChart(15 & 10 & 30) + \Move(0,-6) + \DrawOvalArc(50,50)(180,360) +\EndDraw +\end{document}>>> + +\Ex{latex}{Example in section 13.2---third version}{sec132d} + +\<<< +\documentstyle{report} + \input DraTex.sty + \def\AlDraTex{pie} + \input AlDraTex.sty +\begin{document} +\Draw + \Scale(1,0.5) + \PieChartSpec(1,50,20)() + \PieChart(15 & 10 & 30) + \Move(0,-6) + \DrawOvalArc(50,50)(180,360) +\EndDraw +\end{document}>>> + +\Ex{latex}{Example in section 13.2---forth version}{sec132e} + +\<<< +\def\AlDraTex{pie} +\documentstyle[DraTex,AlDraTex]{report} +\begin{document} +\Draw + \Scale(1,0.5) + \PieChartSpec(1,50,20)() + \PieChart(15 & 10 & 30) + \Move(0,-6) + \DrawOvalArc(50,50)(180,360) +\EndDraw +\end{document}>>> + +\Ex{\tex}{Chemical diagram in section 16.1}{sec161} + +\<<< +|Open +\Define\ChemEdge(3){{ + \MoveToNodeDir(#2,#1) + \MarkLoc(b) \MoveToNodeDir(#1,#2) + \MarkLoc(a) \DSeg\RotateTo(a,b) + \Rotate(-90)\Q=#3; \Q/2; \Q-0.5; + \Q*2.2; \MoveF(\Val\Q) + \Do(1,#3){ {\CSeg\Line(a,b)} + \MoveF(-2.2) } }} +\Do(1,6){ \MoveF(30) + \Node(\DoReg)(--C--) \MoveF(20) \Node(x)(--H--) + \ChemEdge(\DoReg,x,1) \MoveTo(0,0) \Rotate(60) } +\ChemEdge(1,2,2) \ChemEdge(2,3,1) \ChemEdge(3,4,2) +\ChemEdge(4,5,1) \ChemEdge(5,6,2) \ChemEdge(6,1,1) +|Close >>> + + +\Ex{\tex}{Finite automaton in last example of chapter 17}{FA} + +\<<< +|Open +\NewCIRCNode(\StateNode,106,) +\NewCIRCNode(\AStateNode,106,103) +\Define\StateAt(3){ \MoveTo(#2,#3) + \StateNode(#1)(--$q_{#1}$--)} +\Define\AStateAt(3){ + \MoveTo(#2,#3) + \AStateNode(#1)(--$q_{#1}$--)} +\DiagramSpec(\StateAt& + \AStateAt&\TransEdge) +\ArrowHeads(1) \Diagram + ( 0,0,0 & 1,50,50 & + 3,90,-50 & 4,20,-50 )(2,75,0) + (0,1,a,b & 1,2,a, & 0,2, ,b & 2,2,0,b & 0,4,a, & 4,3,a,b ) +\CurvedEdgeAt(3,1,0,1,1,0)(20,0.3,0,0.5) \EdgeLabel[+](--a--) +|Close>>> + + +\noindent\dotfill\ + +New commands in AlDraTeX for setting spread diagrams (add to end of ch +17) + +\noindent\dotfill\ + +\begingroup +\leftskip= 1.5em +\parindent = -\leftskip + +\def\item{\medskip\leavevmode\hbox to \leftskip{$\circ$\hss}} + +\item + `{\tt\string\DefNode}'. A prefix to a node-generating command. The +prefix asks that the command will produce an invisble node. The +invisible node is assigned addresses but is not drawn into the +figure. + + +\item + `{\tt\string\PutNode(N)}'. This command realizes, according to the current +conditions, a specified invisible node that has been defined earlier +by `{\tt\string\DefNode}'. + +\item + `{\tt\string\ZeroNodesDim}'. Sets the pseudovariables `{\tt\string\WidthX}', +`{\tt\string\WidthY}', `{\tt\string\MaxX}', and `{\tt\string\MaxY}' to 0. + +\item + `{\tt\string\AddNodeDim(N)}'. Inserts the horizontal and vertical +dimensions of node N to the pseudovariables `{\tt\string\Widthx}' and +`{\tt\string\Widthy}', respectively. Adds these values to the +pseudovariables `{\tt\string\WidthX}' and `{\tt\string\WidthY}', +respectively. In addition, half the horizontal dimension of node N is +stored in `{\tt\string\MaxX}' if the pseudovariable contains a smaller +value, and a similar outcome holds for the vertical dimension with +respect to the pseudovariable `{\tt\string\MaxY}'. +\par\endgroup + +\Ex{\tex}{}{newA} + +\<<< +|Open +\DefNode\CircleNode(a)(--Two--) +\MoveToNode(a,0,0) \MarkLoc(A) +\MoveToNode(a,1,0) \MarkLoc(B) +\LSeg\R(A,B) \MoveTo(0,0) +\OvalNode(b)(--Touching Nodes--) +\RotateTo(19.5) \MoveF(5) \MarkLoc(A) +\MoveToNodeDir(b,A) \MarkLoc(A) +\MoveToNode(b,0,0) +\RotateTo(20.5) \MoveF(5) \MarkLoc(B) +\MoveToNodeDir(b,B) \MarkLoc(B) +\RotateTo(20) \MoveF(5) \MarkLoc(C) +\MoveToNode(b,0,0) \MoveToNodeDir(b,C) +\DSeg\RotateTo(A,B) \Rotate(-90) +\MoveF(\Val\R) \PutNode(a) +|Close>>> + + +\Ex{\tex}{}{newB} + +\<<< +|Open + +\def\Dist#1(#2,#3,#4){\MarkLoc(a*)% + \MoveToNode(#2,0,0)\MarkLoc(b*)% + \MoveToNode(#2,#3,#4)\MarkLoc(c*)% + \LSeg#1(b*,c*)\MoveToLoc(a*)} + +\EntryExit(1,1,1,-1.5) +\Object\G(3){ + \RectNode(a)(--#1--) + \DefNode\RectNode(b)(--#2--) + \DefNode\RectNode(c)(--#3--) + \Dist\T(a,1,0) \Dist\R(b,1,0) \Dist\Q(c,1,0) + \R+\Q; \T-\R; \T*2; + \ZeroNodesDim \AddNodeDim(b) + \AddNodeDim(c) \Q=\MaxY; + \Dist\R(a,0,1) \Q+\R; + \Q+20; \EntryExit(-1,0,1,0) + \IF \GtDec(\T,40) \THEN + \T+40; \T/3; + \SetNodes(20,\Val\T) + \ELSE \T=-\T; \T+60; \T/2; + \SetNodes(\Val\T,20) \FI + \Edge(b,c) \ArrowHeads(1) + \VHEdge(A,c) \VHEdge(B,b) } +\Define\SetNodes(2){ + \MoveToNode(a, 1,0) \Line( #1,0) \FcNode(A) + \MoveToNode(a,-1,0) \Line(-#1,0) \FcNode(B) + \Move(#2,-\Val\Q) \PutNode(b) + \Move(#2, 0) \PutNode(c) } +\G(short~~and~~deep,d~~e~~e~~p,shallow) +\G(very~very~long~node,shallow,d~~e~~e~~p) +|Close>>> + + +\Ex{\tex}{}{newC} + + + + +\<<< +|Open +\Define\Vertex(2){ + \IF \EqText(r,#1) \THEN \Define\NodeType{\RectNode} + \ELSE \IF \EqText(d,#1) \THEN \Define\NodeType{\DiamondNode} + \ELSE \IF \EqText(o,#1) \THEN \Define\NodeType{\OvalNode} + \ELSE \Define\NodeType{\Node} + \FI\FI\FI + \DefNode\NodeType(\Val\I..\Val\J)(--#2--) + \AddNodeDim(\Val\I..\Val\J) } +\Define\DefRow(1){ + \IF \EqText({},{#1}) \THEN \Define\g{\MoveToLoc(start)} + \ELSE \ZeroNodesDim \J=-1; + \Table\x{#1} \x(0,99){\J+1; \Vertex} + \Move( 0,-\MaxY) \MarkLoc(\Val\I) \Move(5,0) \MarkLoc(\Val\I') + \Move(-5,-\MaxY) \Move(0,-\Sy) \I+1; + \FI \g } + +\Define\ProjectToRow(1){ + \MarkLoc(x) \Move(0,5) \MarkLoc(x') + \MoveToLL(#1,#1')(x,x') } + +\Define\VSpace(1){ \Define\Sy{#1} } +\VSpace(15) + +\Define\DefRowDiagram{ + \MarkLoc(start) \I=0; \Define\g{\DefRow} \g} + +\DefRowDiagram + ( o, An~ approach~~ for~ setting~~ flow~ diagrams + & r, Use~~ {\tt\char92DefineRowDiagram}~~ + to~ define~~ the~ rows~~ of~ nodes + )( r, Derive~~ x~ coordinate~~ for~ N~ then~ + call~~ {\tt\char92ProjectToRow} + & r, Choose~~ nonrealized~~ node~ N + & d, More~ nodes~~ to~ realize? + )( r, Realize~ N~~ with~ {\tt\char92PutNode} + & o, Done + )() +\ProjectToRow(0) \EntryExit(0,0,-1,0) \PutNode(0..0) +\ProjectToRow(2) \MarkLoc(A) +\ProjectToRow(1) \EntryExit(-1,0,1,0) \PutNode(1..0) +\Move(20,0) \PutNode(1..1) \Move(20,0) +\EntryExit(-1,0,0,0) \PutNode(1..2) +\ProjectToRow(0) \EntryExit(0,0, 0,0) \PutNode(0..1) +\ProjectToRow(2) \EntryExit(0,0,-1,0) \PutNode(2..1) +\MarkLoc(B) \CSeg[0.5]\Move(B,A) \PutNode(2..0) +\ArrowHeads(1) \Edge(0..0,0..1) \Edge(0..1,1..2) + \Edge(1..2,1..1) \EdgeLabel(--Yes--) + \Edge(1..2,2..1) \EdgeLabel(--No--) +\Edge(1..1,1..0) \VHEdge(1..0,2..0) +\EdgeFrom(2..0,1,0,1..2) +|Close>>> + +\begingroup + \def\startInput{} + \def\endInput{} + +\Ex{\tex}{}{newD} + +\<<< +|Open +\Define\DefNd(1){ + \DefNode\RectNode(\Val\I)(--#1--) + \AddNodeDim(\Val\I) \I+1; } +\Define\D(1){ + \IF \EqText({},{#1}) \THEN \Define\g{} + \ELSE \ZeroNodesDim \J=-1; + \Table\x{#1} \x(0,99){\J+1; \DefNd} + \T=\J; \T*15; \T+\WidthX; \T/\F; + \Move(0,-\MaxY) \MarkLoc(a) \Move(\Val\T,0) + \K=\I; + \Do(0,\Val\J){ \K-1; \PutNode(\Val\K) \Move(-15,0) } + \MoveToLoc(a) \Move(0,-\MaxY) \Move(0,-15) + \FI \g } +\Define\G(1){\I=0; \EntryExit(1,0,-1,0) + \Define\g{\D} \Define\F{#1} \g} + +\Draw +\G(2)(first & diagram) + (centers & of~~rows~~on & vertical~~line ) + (distance~=~15 & between~~rows) + () +\Table\x{0,2 & 0,3 & 1,3 & 1,4 & 2,5 & 3,5 & 3,6 & 4,6} +\x(0,99){\Edge} +\EndDraw + +\Draw\Move(0,-15) +\G(1)(new~diagram) + (left~~margins & for~rows) () +\Edge(0,1) \Edge(1,2) \Edge(2,0) +\EndDraw + +\Draw +\Move(0,-15) +\G(10000)(new~diagram) + (right~margins & for~~rows) () +\Edge(0,1) \Edge(1,2) \Edge(2,0) +\EndDraw +|Close>>> + + +\Ex{\tex}{}{newE} + +\<<< +|Open +\Define\DefNd(1){ + \DefNode\RectNode(\Val\I..\Val\J)(--#1--) + \AddNodeDim(\Val\I..\Val\J) } +\Define\DefG(1){ + \IF \EqText({},{#1}) \THEN \Define\g{\PutG} + \ELSE \ZeroNodesDim \J=-1; + \Table\x{#1} \x(0,99){\J+1; \DefNd} + \Indirect\let<\Val\I.width>=\WidthX + \Indirect\edef<\Val\I.size>{\Val\J} + \T=\J; \T*\Sx; \T+\WidthX; + \IF \GtDec(\T,\Q) \THEN \Q=\T; \FI + \Move(0,-\MaxY) \MarkLoc(\Val\I) + \Move(0,-\MaxY) \Move(0,-\Sy) \I+1; + \FI \g } +\Define\PutG(1){ \I-1; \EntryExit(-1,0,1,0) + \Do(0,\Val\I){ \MoveToLoc(\DoReg) + \R=\Q; \Indirect{\R-}<\DoReg.width>; + \Indirect{\J=}<\DoReg.size>; \K=\J; + \DiagType + \IF \GtDec(\Q,\T) \THEN + \K+2; \R/\K; \Move(\Val\R,0) + \ELSE + \IF \GtInt(\J,0) \THEN \R/\K; \FI + \FI + \I=\DoReg; + \Do(0,\Val\J){ \J=\DoReg; + \PutNode(\Val\I..\Val\J) \Move(\Val\R,0) } + } + \Table\x{#1} \x(0,99){\Edge} } +\Define\G{ \I=0; \Q=0; + \Define\g{\DefG} \g} + +\Define\FillDiagram{ + \Define\DiagType{\T=\Q;} + \G} +\Define\MarginsDiagram{ + \Define\DiagType{\T=\J; \T*\Sx; \Indirect{\T+}<\DoReg.width>;} + \G} +\Define\HVSpaces(2){ \Define\Sx{#1} \Define\Sy{#2} } +\HVSpaces(15,15) + +\Draw +\FillDiagram(Fill & Diagram) + (fixed & distances & between~~rows) + (uniform & spaces &within~~each &row) + () + ( 0..0,1..0 & 0..0,1..1 & 0..1,1..1 & 0..1,1..2 + & 1..0,2..0 & 1..0,2..1 & 1..1,2..1 & 1..1,2..2 + & 1..2,2..2 & 1..2,2..3) +\EndDraw + +\Draw \HVSpaces(25,15) +\MarginsDiagram(Margins & Diagram) + (fixed & distances &between~~rows) + (uniform~~spaces&between~nodes&within~~each~row) + () + ( 0..0,1..0 & 0..0,1..1 & 0..1,1..1 & 0..1,1..2 + & 1..0,2..0 & 1..0,2..1 & 1..1,2..1 & 1..1,2..2 + & 1..2,2..2 ) + +\EndDraw +|Close>>> + +\endgroup +\noindent\dotfill\ + +End new commands for setting spread diagrams (end of ch 17) + +\noindent\dotfill\ + + + +\Ex{\tex}{Commutative diagram in last example of section 18.3}{CM} + +\<<< +|Open +\GridDiagramSpec()(\MyEdge) +\Define\L(4){,+#1..+#2\,L\,#3\,#4} +\Define\D(4){,+#1..+#2\,D\,#3\,#4} +\Define\MyEdge(5){ + \IF \EqText(#3,D) \THEN\EdgeSpec(D) + \ELSE \EdgeSpec(L) \FI + \IF \EqText(#1,#2) \THEN + \RotateTo(#4) \CycleEdge(#1) + \EdgeLabel(--$#5$--) + \ELSE\Edge(#1,#2) + \IF \EqText(,#4) \THEN \EdgeLabel(--$#5$--) + \ELSE \EdgeLabel[#4](--$#5$--) \FI + \FI} +\ArrowHeads(1) +\GridDiagram(3,3)()()({ +& T \D(0,1,,f) \D(2,0,,h) & N \L(2,0,,\sigma)// +S \L(0,0,180,t) \L(-1,1,,f) \L(1,1,+,g\circ f)// +& W \L(0,1,,f) & X \D(0,0,-45,r)//}) +|Close >>> + + +\Ex{\tex}{Second example in section 20.2}{sec202} + +\<<< +|Open +\NewNode(\MyNode,\MoveToRect){ + \Move(-24,-8) \DrawRect(48,16) + \Move(16,0) {\Line(0,16)} + \Move(16,0) \Line(0,16) } +\Define\MyEdge(2){ + \CSeg\FindSign(#1,#2) + \EdgeAt(#1,\sign 0.66,0,#2,0,1)} +\Define\FindSign(2){ + \IF \GtDec(#1,0) \THEN + \Define\sign{} + \ELSE \Define\sign{-} \FI} +\TextNode(2){ \Text(--$#2$--) + \IF \EqInt(#1,0) \THEN { + \Move(-16,0) \Text(--$\Lambda$--) + \Move(32,0) \Text(--$\Lambda$--) + }\FI } +\ArrowHeads(1) +\TreeSpace(D,10,20) +\TreeSpec(\MyNode)()(\MyEdge) +\Tree()(2,2,A// 0,0,B&2,2,C// 2,2,D&0,0,E// 0,0,F&0,0,G//) +|Close >>> + + +\Ex{\tex}{Last example in section 20.2}{LR} + +\<<< +|Open +\GridDiagramSpec(\RNode)(\MyEdge) +\GridSpace(10,10) \ArrowSpec(F,5,3,3) +\ArrowHeads(1) \CycleEdgeSpec(-30,20) +\NewNode(\RNode,\MoveToOval){ + \GetNodeSize \Va+4; \Vb+4; + \SetMinNodeSize \Move(0,3) + \DrawOval(\Val\Va,\Val\Vb) } +\Define\MyEdge(3){ + \IF \EqText(#1,#2) \THEN + \RotateTo(45) \LabelPos(+0.5;,3) + \CycleEdge(#1) + \ELSE \DSeg\Q(#1,#2) + \IF \GtDec(\Q,180) \THEN + \LabelPos(+0.4;,3) \ELSE \LabelPos(0.5;,3) + \FI \Edge(#1,#2) \FI \EdgeLabel(--$#3$--) } +\baselineskip=9pt \Define\NEXT(3){,#1..#2\,#3} +\def\/#1/#2.#3;{\hbox{$\scriptstyle#1\rightarrow #2\cdotp#3$}~~} +\GridDiagram(3,3)()()({ +& \/S'/ S. ; \/A / S.a; $I_1$ \NEXT(+0,+1,a) +& \/A / Sa.; $I_2$ +// \/S'/ .S ; \/S / .AS; \/ / .b ; + \/A / .Sa; \/ / .a ; $I_0$ \NEXT(-1,+1,S) \NEXT(+0,+1,A) + \NEXT(+1,+1,b) \NEXT(+1,+0,a) +& \/S /A.S ; \/S /.AS ; \/ /.b ; + \/A /.Sa ; \/ /.a ; $I_3$ \NEXT(+0,+1,S) \NEXT(+0,+0,A) +& \/A/ S.a ; $I_4$ \NEXT(+1,+0,a) +// + \/A/a.; $I_5$ +& \/S/ b. ; $I_6$ +& \/A/ Sa. ; $I_7$ +// +}) +|Close >>> + + + +\Ex{\tex}{Last example in chapter 20}{TM} + + +\<<< +|Open +\NewCIRCNode(\StateNode,104,) +\NewCIRCNode(\AStateNode,104,102) +\Define\StateAt(3){ \MoveTo(#2,#3) + \StateNode(#1)(--$q_{#1}$--)} +\Define\AStateAt(3){\MoveTo(#2,#3) + \AStateNode(#1)(--$q_{#1}$--)} +\LabelSpec(4){\PictLabel{ + { \Move(1,-5) \Line(8,20) } + { \Move(4,10) { \EntryExit(1,0,0,0) + \Text(--\strut$#1$--) } \Move(6,0) + \EntryExit(-1,0,0,0) \Text(--\strut$#3$--) } + { \EntryExit( 1,0,0,0) \Text(--\strut$#2$--) } + \Move(6,0) \EntryExit(-1,0,0,0) \Text(--\strut$#4$--) }} +\DiagramSpec(\StateAt&\AStateAt&\TransEdge) \ArrowHeads(1) +\Diagram( 0,0,0 & 1,80,0 )(2,80,-60)( + 0,0,90,{a,B,+1,a{,+}1} & + 0,1, {a,B,+1,a{,+}1}, {b,B,0,B{,-}1} & + 1,2, {|DEFEND\$,B,0,B{, }0}, ) +|Close >>> + + + + + +\Lib{ProTeX and AlProTex} \def\files{\fileP} \def\LLL{>>>} + +\let\startInput=\empty + +\let\endInput=\empty + +NOTE. The La\TeX{} files of this part put the +{\tt\string\AlProTex....} command after the +{\tt\string\begin\string{document\string}} command. This is not a nice +style for files. + +\Exr{22}2{2a} +\<<< +|Open +\AlProTex{awk,<<<|LLL,@,% + list,title,[]} +\catcode`\@=0 + +An Awk program for deriving +the distribution of words. + +@<<< +BEGIN {print"words\t lines"} +@ +END { i=0 + while (i<=m) + {if (c[i]>0) + {print i "\t " c[i]} + i=i+1 }} +|LLL + +NF is a built-in variable +that holds the number of +words in the current input +line. + +@<<< +{ c[NF]=c[NF]+1 + {if (NF>m) m=NF} } +|LLL \OutputCode@ +|Close >>> + + +\Exr{22}2{2b} +\<<< +|Open +\AlProTex{awk,<<<|LLL,@,% + list,title,[]} + +An Awk program for deriving +the distribution of words. + +\<<< +BEGIN {print"words\t lines"} +@ +END { i=0 + while (i<=m) + {if (c[i]>0) + {print i "\t " c[i]} + i=i+1 }} +|LLL + +NF is a built-in variable +that holds the number of +words in the current input +line. + +\<<< +{ c[NF]=c[NF]+1 + {if (NF>m) m=NF} } +|LLL \OutputCode\ +|Close >>> + + +\Exr{22}2{3} + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,list,[]} + +\<<< +PROGRAM prog;|LLL + +\<<< +{ comment } |LLL + +\<<< +BEGIN + \ +END.|LLL + +\OutputCode\ +|Close >>> + +\Exr{22}2{4a} + +\<<< +|Open +\AlProTex{p,list,% + <<<|LLL,title,[]} + +\<\><<< +PROGRAM prog;|LLL + +\<<< +{ comment } |LLL + +\<\><<< +BEGIN + \ +END.|LLL + +\OutputCode\<\> +|Close >>> + +\Exr{22}2{4b} + +\<<< +|Open +\AlProTex{p,% + <<<|LLL,title,[]} + +\<\><<< +PROGRAM prog;|LLL +\ShowCode-\<\> + +\<<< +{ comment } |LLL +\ShowCode\ + +\<\><<< +BEGIN + \ +END.|LLL +\ShowCode\<\> +\OutputCode\<\> +|Close >>> + +\Exr{22}2{4c} + +\<<< +|Open +\AlProTex{p,% + <<<|LLL,title,[]} + +\<\><<< +PROGRAM prog;|LLL + +\<<< +{ comment } |LLL + +\<\><<< +BEGIN + \ +END.|LLL + +\OutputCode\<\> +|Close >>> + + + +\Exr{22}2{5a} + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,list,[]} + +\<<< +PROGRAM prog;|LLL + +\<<< +{ comment } |LLL + +\<<< +BEGIN + \ +END.|LLL +\OutputCode\ + +|Close >>> + +\Exr{22}2{5b} + +\<<< +|Open +\AlProTex{p,title,list,[]} + +\{PROGRAM prog;} + +\{ \{ comment \} } + +\{BEGIN + \ +END.} +\OutputCode\ + +|Close >>> + + + + +\Exr{22}2{6a} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list} +\<<< +PROGRAM prog; +BEGIN + \ +END.|LLL + +\<<< +{ comment: \\@||` } |LLL +|Close >>> + +\Exr{22}2{6b} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,@} +\<<< +PROGRAM prog; +BEGIN + @ +END.|LLL + +\<<< +{ comment: \@@||` } |LLL +|Close >>> + +\Exr{22}2{6c} + + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,||} +\<<< +PROGRAM prog; +BEGIN + || +END.|LLL + +\<<< +{ comment: \@||||` } |LLL +|Close >>> + + +\Exr{22}2{6d} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,`} +\<<< +PROGRAM prog; +BEGIN + ` +END.|LLL + +\<<< +{ comment: \@||`` } |LLL +|Close >>> + +\Exr{22}2{7} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,||} + +\<<< +\<<< +PROGRAM prog; +BEGIN + |||| +END.>||empty>> + +\<<< +{comment: \@||||||||} >||empty>> + +\OutputCode\ |LLL + +\OutputCode[prg]\ +\input temp.prg +|Close >>> + + +\Exr{22}2{8a} + +\<<< +|Open +\Code\myprog{my + program}{PROGRAM prog;} +\ShowCode-\myprog + +\AppendCode\myprog{BEGIN + \body +END.} +\Code\body{body}{} +\ShowCode-\myprog + +\AppendCode\body{\{comment\}} +\ShowCode\body + +Code of title \myprog{} +linearized within +the paragraph: +`\ShowCode-\myprog'. + +\OutputCode\myprog +|Close >>> + +\Exr{22}2{8b} + + +\<<< +|Open +\AlProTex{p,<<<|LLL,list,@} + +\Code\myprog{my program}<<< +PROGRAM prog;|LLL + +\Code\body{body}<<< +|LLL +\AppendCode\myprog<<< +BEGIN + @body +END.|LLL + +\AppendCode\body<<< + {comment} |LLL + +Code of title \myprog{} +linearized within the +paragraph: +`\ShowCode-\myprog'. + +\OutputCode\myprog +|Close >>> + + +\Exr{22}2{9} + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,list,[]} + +\<<< +PROGRAM prog;|LLL + +\<<< +{ comment } |LLL + +\<<< +BEGIN + \ +END.|LLL + +\OutputCode\ +|Close >>> + +\Exr{22}2{10a} + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,[],enumerate} + +See lines \RefLine[*]. + +\<<< +PROGRAM prog;\TagLine[*] |LLL + +\<<< +{comment: see \RefLine[*]}|LLL + +\<<< +BEGIN + \ \TagLine[*] |LLL + +\ResetLineCount +\<<< +END.|LLL \OutputCode\ +|Close >>> + +\Exr{22}2{10b} + + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,[]} +\def\CodeRef[#1]{\Ref{#1}} +\def\CodeTag[#1][#2]{% + \Tag{#1}{#2}} + +See lines \Ref{*}. + +\<<< +PROGRAM prog;\CodeTag[*][1]|LLL + +\<<< +{comment: see \CodeRef[*]}|LLL + +\<<< +BEGIN + \ \CodeTag[*][2]|LLL + +\ResetLineCount \Tag{*}{3} +\<<< +END.|LLL \OutputCode\ +|Close >>> + + + + +\Exr{22}2{11} + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,[],ShowIndex} + +\<<< +PROGRAM prog;|LLL + +\<<< +{ comment } |LLL +\TextIndex{Tracing} +\SecIndex{***} + +\<<< +BEGIN + \ +END.|LLL + +\def\BeforeIndex{Index} +\ShowIndex +|Close >>> + + + \Exr{22}2{12} + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,[],ShowTop} + +\<<< +PROGRAM prog; +BEGIN \ +END.|LLL +\<<< +{ comment 1} +|LLL +\<<< +\ +|LLL +\<<< +{ comment 2 } |LLL +\ShowTop\ + +\def\ShowSep{(* ***** *)\par} +\ShowTop\ +|Close >>> + + \Exr{22}2{13} + + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,[],NoShow} + +First piece of text. + +\<<< +PROGRAM prog; |LLL + +\ShowOff Second piece of text. + +\<<< +{ comment } |LLL + +\Note Third piece of +text. \EndNote\ShowOn + +\<<< +BEGIN + \ +END.|LLL + +Last piece of text. +|Close >>> + + \Exr{22}2{14} + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,ShowIndex,ClearCode} + +Chapter 1 + +\<<< +PROGRAM prog; +|LLL +\<<< +BEGIN + { comment 1 } +END.|LLL \ShowIndex + \ClearCode +\vfil\break Chapter 2 + +\<<< +PROGRAM prog; +|LLL +\<<< +BEGIN + { comment 2 } +END.|LLL \ShowIndex +|Close >>> + +\begingroup +\def\tex{tex}\let\op=\ForTex \Exr{22}2{15}\par\nobreak + +\<<< +\hsize=2.5in \noindent{\bf +LITERATE PROGRAM IN WEB} +\medskip We compute a +two-dimensional view of a +three-dimensional point. + +@* The mapping. The view + {\tt (x,y)} is on the + {\tt Z=0} plane. +@= + x := X * D DIV (D + Z); + +@ The viewer is located + at {\tt (0,0,-D)}. +@= + CONST D=100; + VAR X {x}, Z: INTEGER; + +@ +@= + y := Y * D DIV (D + Z); + +@ +@=Y {y}: INTEGER; + +@* Main program. +@p PROGRAM D2view; + @ + BEGIN read(X,Y,Z); + @ + write(x,y) + END. +\bye>>> +\endgroup + + +\Ex{\tex}{NEW OPTION `[[]]' FOR {\tt\char92}AlProTex}{NewAlPrOptionA} + +An extension of `[]' which frame also the code fragments. + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,list,[[]]} + +Foooo... + +\<<< +PROGRAM prog;|LLL + +Foooo... + +\<<< +{ comment } |LLL + +Foooo... + +\<<< +BEGIN + \ +END.|LLL + +Foooo... + +\OutputCode\ +|Close >>> + +\begingroup +\def\tex{latex}\let\op=\ForTex + + +\Ex{\tex}{NEW OPTION `basic' FOR {\tt\char92}AlProTex}{NewAlPrOptionB} + + +An option that requires compilation by latex. The following +are the only available commands. + + +A. References to code segments: \hfill {\tt\string\} + +B. Definitions of code fragments: \hfill {\tt\string\<<< + +\hfill code fragment>>>} + +B. Output file of code (`[{\it extension}]' is optional): + \hfill{\tt\string\o[{\it extention}]\string\} + + +C. The character `{\tt\char92}' \hfill{\tt\string\\} + +D. End of source program \hfill{\tt\string\e} + +E. Logical partitioning of prose (chapters, sections, subsections, and verbatim): +\hfill\hbox{\tt\string\c, \string\s, \string\u, \string\v{$\cdots$}{\char92}} + +\noindent\phantom{E.} A title +must be delimited by an empty line. + +F. Reference to {\tt\string\ClearCode} \hfill {\tt\string\c} + + + + +\<<< +\input ProTex.sty +\AlProTex{foo,basic} + +\cFirst Chapter + +Foooo... + +\sSsssss... + +Foooo. + +\uUuuuuuu..... + +\vVerbatim +verbatim\ +\<<< +PROGRAM prog;|LLL +\cCccc... + +Foooo... + +\<<< +{ comment } |LLL + +Foooo... + +\<<< +BEGIN + \ +END.|LLL + +Foooo... + +\o\ + +\e + >>> + +\Ex{\tex}{variant of `basic'}{NewAlPrOptionC} + +The options `{\tt @}', `{\tt|}', and `{\tt`}' ask that the listed +characters will be used instead of `{\tt\char92}', respectively, +within the commands of option `{\tt basic}'. + +\<<< +\input ProTex.sty +\AlProTex{foo,@,basic} + +@cFirst Chapter + +Foooo... + +@sSsssss... + +Foooo. + +@uUuuuuuu..... + +@vVerbatim +verbatim@ + +@<<< +PROGRAM prog;|LLL +@cCccc... + +Foooo... + +@<<< +{ comment } |LLL + +Foooo... + +@<<< +BEGIN + @ +END.|LLL + +Foooo... + +@o@ + +@e +>>> + +\endgroup + +\newpage \OutputCode[me]\execute + + + On a Unix system containing the xdvi application, the instructions of + the following file can be executed with the compound command + `chmod 777 execute.me ; execute.me'. + + \bigskip + \ShowFile{execute.me} + +\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} +\write16{<< Please review the document <<} +\write16{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} + +\bye diff --git a/Master/texmf-dist/doc/latex/dratex/README b/Master/texmf-dist/doc/latex/dratex/README new file mode 100644 index 00000000000..865e121ca3f --- /dev/null +++ b/Master/texmf-dist/doc/latex/dratex/README @@ -0,0 +1,2 @@ +Documentation can be found at + http://www.cse.ohio-state.edu/~gurari/systems.html -- cgit v1.2.3