diff options
author | Karl Berry <karl@freefriends.org> | 2008-09-20 13:43:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-09-20 13:43:39 +0000 |
commit | 939f4c88e783054e9fab1efb39d417efe1ce5e89 (patch) | |
tree | e45760c4261b8d10416c8d2a6d04fd256824c0b0 /Master/texmf-dist/doc/generic/dratex | |
parent | 5295575f9f66f7e06cb26584cac5b611b93ff2d7 (diff) |
back to generic
git-svn-id: svn://tug.org/texlive/trunk@10658 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/dratex')
-rw-r--r-- | Master/texmf-dist/doc/generic/dratex/Examples.tex | 2058 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/dratex/README | 2 |
2 files changed, 2060 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/dratex/Examples.tex b/Master/texmf-dist/doc/generic/dratex/Examples.tex new file mode 100644 index 00000000000..4603a22b63a --- /dev/null +++ b/Master/texmf-dist/doc/generic/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) \<BODY>(20) +\LineF(20) \Rotate(55) \LineF(16) +\new(hand) \<BODY>(140) \LineF(35) +\new(hand) \<BODY>(90) \LineF(7) +\new(head) \<BODY>(-60) \LineF(19) +\new(left-leg) \<BODY>(210) \LineF(12) +\Rotate(30) \LineF(14) \new(right-leg) +\Do(1,11){\I+15; \<head>(\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. + +@<dist@><<< +BEGIN {print"words\t lines"} +@<count the words@> +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. + +@<count the words@><<< +{ c[NF]=c[NF]+1 + {if (NF>m) m=NF} } +|LLL \OutputCode@<dist@> +|Close >>> + + +\Exr{22}2{2b} +\<<< +|Open +\AlProTex{awk,<<<|LLL,@,% + list,title,[]} + +An Awk program for deriving +the distribution of words. + +\<dist\><<< +BEGIN {print"words\t lines"} +@<count the words@> +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. + +\<count the words\><<< +{ c[NF]=c[NF]+1 + {if (NF>m) m=NF} } +|LLL \OutputCode\<dist\> +|Close >>> + + +\Exr{22}2{3} + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,list,[]} + +\<prog\><<< +PROGRAM prog;|LLL + +\<body\><<< +{ comment } |LLL + +\<prog\><<< +BEGIN + \<body\> +END.|LLL + +\OutputCode\<prog\> +|Close >>> + +\Exr{22}2{4a} + +\<<< +|Open +\AlProTex{p,list,% + <<<|LLL,title,[]} + +\<\><<< +PROGRAM prog;|LLL + +\<body\><<< +{ comment } |LLL + +\<\><<< +BEGIN + \<body\> +END.|LLL + +\OutputCode\<\> +|Close >>> + +\Exr{22}2{4b} + +\<<< +|Open +\AlProTex{p,% + <<<|LLL,title,[]} + +\<\><<< +PROGRAM prog;|LLL +\ShowCode-\<\> + +\<body\><<< +{ comment } |LLL +\ShowCode\<body\> + +\<\><<< +BEGIN + \<body\> +END.|LLL +\ShowCode\<\> +\OutputCode\<\> +|Close >>> + +\Exr{22}2{4c} + +\<<< +|Open +\AlProTex{p,% + <<<|LLL,title,[]} + +\<\><<< +PROGRAM prog;|LLL + +\<body\><<< +{ comment } |LLL + +\<\><<< +BEGIN + \<body\> +END.|LLL + +\OutputCode\<\> +|Close >>> + + + +\Exr{22}2{5a} + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,list,[]} + +\<myprog\><<< +PROGRAM prog;|LLL + +\<body\><<< +{ comment } |LLL + +\<myprog\><<< +BEGIN + \<body\> +END.|LLL +\OutputCode\<myprog\> + +|Close >>> + +\Exr{22}2{5b} + +\<<< +|Open +\AlProTex{p,title,list,[]} + +\<myprog\>{PROGRAM prog;} + +\<body\>{ \{ comment \} } + +\<myprog\>{BEGIN + \<body\> +END.} +\OutputCode\<myprog\> + +|Close >>> + + + + +\Exr{22}2{6a} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list} +\<myprog\><<< +PROGRAM prog; +BEGIN + \<body\> +END.|LLL + +\<body\><<< +{ comment: \\@||` } |LLL +|Close >>> + +\Exr{22}2{6b} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,@} +\<myprog\><<< +PROGRAM prog; +BEGIN + @<body@> +END.|LLL + +\<body\><<< +{ comment: \@@||` } |LLL +|Close >>> + +\Exr{22}2{6c} + + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,||} +\<myprog\><<< +PROGRAM prog; +BEGIN + ||<body||> +END.|LLL + +\<body\><<< +{ comment: \@||||` } |LLL +|Close >>> + + +\Exr{22}2{6d} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,`} +\<myprog\><<< +PROGRAM prog; +BEGIN + `<body`> +END.|LLL + +\<body\><<< +{ comment: \@||`` } |LLL +|Close >>> + +\Exr{22}2{7} + +\<<< +|Open +\AlProTex{p,<<<|LLL,[],% + title,list,||} + +\<temp\><<< +\<prog\><<< +PROGRAM prog; +BEGIN + ||||<body||||> +END.>||empty>> + +\<body\><<< +{comment: \@||||||||} >||empty>> + +\OutputCode\<prog\> |LLL + +\OutputCode[prg]\<temp\> +\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,[]} + +\<myprog\><<< +PROGRAM prog;|LLL + +\<body\><<< +{ comment } |LLL + +\<myprog\><<< +BEGIN + \<body\> +END.|LLL + +\OutputCode\<myprog\> +|Close >>> + +\Exr{22}2{10a} + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,[],enumerate} + +See lines \RefLine[*]. + +\<myprog\><<< +PROGRAM prog;\TagLine[*] |LLL + +\<body\><<< +{comment: see \RefLine[*]}|LLL + +\<myprog\><<< +BEGIN + \<body\> \TagLine[*] |LLL + +\ResetLineCount +\<myprog\><<< +END.|LLL \OutputCode\<myprog\> +|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{*}. + +\<myprog\><<< +PROGRAM prog;\CodeTag[*][1]|LLL + +\<body\><<< +{comment: see \CodeRef[*]}|LLL + +\<myprog\><<< +BEGIN + \<body\> \CodeTag[*][2]|LLL + +\ResetLineCount \Tag{*}{3} +\<myprog\><<< +END.|LLL \OutputCode\<myprog\> +|Close >>> + + + + +\Exr{22}2{11} + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,[],ShowIndex} + +\<myprog\><<< +PROGRAM prog;|LLL + +\<body\><<< +{ comment } |LLL +\TextIndex{Tracing} +\SecIndex{***} + +\<myprog\><<< +BEGIN + \<body\> +END.|LLL + +\def\BeforeIndex{Index} +\ShowIndex +|Close >>> + + + \Exr{22}2{12} + +\<<< +|Open +\AlProTex{p,<<<|LLL,% + title,[],ShowTop} + +\<my prog\><<< +PROGRAM prog; +BEGIN \<body\> +END.|LLL +\<body\><<< +{ comment 1} +|LLL +\<body\><<< +\<subbody\> +|LLL +\<subbody\><<< +{ comment 2 } |LLL +\ShowTop\<body\> + +\def\ShowSep{(* ***** *)\par} +\ShowTop\<body\> +|Close >>> + + \Exr{22}2{13} + + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,[],NoShow} + +First piece of text. + +\<myprog\><<< +PROGRAM prog; |LLL + +\ShowOff Second piece of text. + +\<body\><<< +{ comment } |LLL + +\Note Third piece of +text. \EndNote\ShowOn + +\<myprog\><<< +BEGIN + \<body\> +END.|LLL + +Last piece of text. +|Close >>> + + \Exr{22}2{14} + +\<<< +|Open +\AlProTex{p,<<<|LLL,title,% + list,ShowIndex,ClearCode} + +Chapter 1 + +\<progA\><<< +PROGRAM prog; +|LLL +\<progA\><<< +BEGIN + { comment 1 } +END.|LLL \ShowIndex + \ClearCode +\vfil\break Chapter 2 + +\<progB\><<< +PROGRAM prog; +|LLL +\<progB\><<< +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. +@<map(x,y) := mapping of + (X,Y,Z)@>= + x := X * D DIV (D + Z); + +@ The viewer is located + at {\tt (0,0,-D)}. +@<CONST + VAR @>= + CONST D=100; + VAR X {x}, Z: INTEGER; + +@ +@<map...@>= + y := Y * D DIV (D + Z); + +@ +@<CON...@>=Y {y}: INTEGER; + +@* Main program. +@p PROGRAM D2view; + @<CON...@> + BEGIN read(X,Y,Z); + @<map...@> + 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... + +\<myprog\><<< +PROGRAM prog;|LLL + +Foooo... + +\<body\><<< +{ comment } |LLL + +Foooo... + +\<myprog\><<< +BEGIN + \<body\> +END.|LLL + +Foooo... + +\OutputCode\<myprog\> +|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\<code title\string\>} + +B. Definitions of code fragments: \hfill {\tt\string\<code title\string\><<< + +\hfill code fragment>>>} + +B. Output file of code (`[{\it extension}]' is optional): + \hfill{\tt\string\o[{\it extention}]\string\<code title\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\ +\<myprog\><<< +PROGRAM prog;|LLL +\cCccc... + +Foooo... + +\<body\><<< +{ comment } |LLL + +Foooo... + +\<myprog\><<< +BEGIN + \<body\> +END.|LLL + +Foooo... + +\o\<myprog\> + +\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@ + +@<myprog@><<< +PROGRAM prog;|LLL +@cCccc... + +Foooo... + +@<body@><<< +{ comment } |LLL + +Foooo... + +@<myprog@><<< +BEGIN + @<body@> +END.|LLL + +Foooo... + +@o@<myprog@> + +@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 new file mode 100644 index 00000000000..865e121ca3f --- /dev/null +++ b/Master/texmf-dist/doc/generic/dratex/README @@ -0,0 +1,2 @@ +Documentation can be found at + http://www.cse.ohio-state.edu/~gurari/systems.html |