%TESTS OF DIAGRAM MACROS - J. C. Reynolds - December 1987 %This is an input file for LATEX that inputs the macros in diagmac.tex %and tests them. A user's manual for these macros is in diagmac.doc \documentstyle[12pt]{article} \oddsidemargin=0in \evensidemargin=0in \textwidth=6.5in \begin{document} \thispagestyle{empty} \begin{centering} {\large\bf TESTS OF DIAGRAM MACROS} \\[14 pt] \today \\[21 pt] \end{centering} \input diagmac %These are the two examples given in the user's manual. $$\diagram{ \vertex 0,100:{A}{\border{3pt}{4pt}\rect} \vertex 150,100:{B}{\border{3pt}{4pt}\rect} \vertex 0,0:{A'}{\border{3pt}{4pt}\rect} \vertex 150,0:{B'}{\border{3pt}{4pt}\rect} \setedge 0,100,150,100: \shadeedge \drawsolidedge \drawedgehead{100}10 \abutabove 75:{\textstyle c}{\border{2pt}{2pt}\octagon{3pt}} \setedge 0,0,150,0: \shadeedge \drawsolidedge \drawedgehead{100}10 \abutbelow 75:{\textstyle c'}{\border{2pt}{2pt}\octagon{3pt}} \setedge 0,100,0,0: \shadeedge \drawsolidedge \drawedgehead{100}10 \abutleft 50:{\textstyle a}{\border{2pt}{2pt}\octagon{3pt}} \setedge 150,100,150,0: \shadeedge \drawsolidedge \drawedgehead{100}10 \abutright 50:{\textstyle b}{\border{2pt}{2pt}\octagon{3pt}} }$$ $$\ctdiagram{ \ctv 0,100:{A} \ctv 150,100:{B} \ctv 0,0:{A'} \ctv 150,0:{B'} \ctet 0,100,150,100:{c} \cteb 0,0,150,0:{c'} \ctel 0,100,0,0:{a} \cter 150,100,150,0:{b} }$$ \newpage %This gives a thorough workout to the general macros for diagrams. %The result looks like an eye-chart for Martians. $$\diagram{ \vertex -150,0:{X+Y}{\border{4pt}{3pt}\rorect{2pt}01\outline} \vertex 0,-50:Y{\border{10pt}{10pt}\hexagon\outline} \vertex 150,0:\sum{\border{10pt}{10pt}\octagon{10pt}\outline \border{5pt}{5pt}\octagon{12pt}\thicklines\outline\thinlines} \vertex -100,150:\alpha{\border{4pt}{3pt}\diamond\outline} \vertex 100,150:\sum{\border{10pt}{10pt}\rorect{20pt}00\outline \border{5pt}{5pt}\rorect{24pt}00\thicklines\outline\thinlines} \vertex 0,200:{X^2+Y^2}{\border{4pt}{3pt}\rect\outline} \place -150,-150:{X+Y^{Z^2}} {\leftghost X\symmetrize\borderto{0pt}{0pt}\border{4pt}{3pt}\rect\outline \setcircle{16pt}{\xcenter}{\bexpr}\drawcircle0110 \drawcirclehead{0}{-1}1 \abutcirclebelow{-10pt}\alpha{\border{2pt}{2pt}\rect\outline} \abutcirclebelow{10pt}\alpha{\border{2pt}{2pt}\rect\outline}} \placed{150pt}{-150pt}{X+Y} {\rightghost Y\symmetrize\borderto{0pt}{26pt}\border{4pt}{0pt}\rect\outline \placed{\lexpr}{\ycenter}{\vrule height3.2pt depth-2.8pt width10pt}{} \place 0,-3:{\vrule height3.2pt depth-2.8pt width10pt}{\xcenter=\lexpr} \setcircle{16pt}{\rexpr}{\texpr}\shiftcircle{8pt}{8pt}\drawcircle1101 \drawcirclehead{0}{-1}1\drawcirclehead{-1}00 \abutcircleabove{0pt}\alpha{\border{2pt}{2pt}\rect\outline}} \vertex 0,-150:{}{\setcircle{40pt}{\xcenter}{\ycenter}\drawcircle1111 \drawcirclehead231\drawcirclehead{-2}30 \drawcirclehead6{-9}0\drawcirclehead{-4}{-6}1 \abutcircleleft{0pt}\alpha{\border{2pt}{2pt}\rect\outline} \abutcircleright{20pt}\alpha{\border{2pt}{2pt}\rect\outline} \abutcircleright{0pt}\alpha{\border{2pt}{2pt}\rect\outline} \abutcircleright{-20pt}\alpha{\border{2pt}{2pt}\rect\outline}} \setedge 0,200,-100,150:\shadeedge\drawsolidedge\drawedgehead{100}10 \abutleft 185:{\alpha+\beta}{\border{2pt}{2pt}\rorect{5pt}01\outline} \setedge 0,200,100,150:\shadeedge\drawsolidedge\drawedgehead{100}10 \abutright 185:{\alpha+\beta}{\border{2pt}{2pt}\rorect{5pt}01\outline} \setedge -150,0,0,-50:\shadeedge\drawdashedge{11pt}{10pt}01\drawedgehead{80}01 \abutleftd{-25pt}{\alpha\beta} {\border{2pt}{2pt}\borderto{25pt}{0pt}\rect\outline} \setedge -150,0,150,0:\drawedgehead{50}01\shadeedge\drawsolidedge \abutabove -10:\rho{\border{2pt}{2pt}\diamond\outline} \setedge -150,0,-100,150:\shadeedge\drawsolidedge\drawedgehead{100}10 \abutleft 75:\rho{\border{10pt}{10pt}\octagon{10pt}\outline} \setedge -150,0,100,150:\shadeedge\drawdotedge{7pt}1 \abutaboved{-100pt}\rho{\border{10pt}{10pt}\hexagon\outline} \setedge 0,-50,150,0:\shadeedge\drawsolidedge\drawedgehead{20}11 \abutrightd{-25pt}\rho{\border{2pt}{2pt}\borderto{25pt}{0pt}\rect\outline} \setedge 0,-50,-100,150:\shadeedge\drawsolidedge \setedge 0,-50,100,150:\shadeedge\drawsolidedge \setedge 150,0,-100,150:\shadeedge\drawsolidedge \abutbelowd{100pt}\rho{\border{10pt}{10pt}\hexagon\outline} \setedge 150,0,100,150:\shadeedge\drawdashedge{40pt}{40pt}11\drawedgehead000 \abutleft 75:\rho{\border{10pt}{10pt}\hexagon\outline} \shiftedge{-10pt}\shadeedge\drawdashedge{30pt}{30pt}10\drawedgehead000 \shiftedge{-10pt}\shadeedge\drawdashedge{11pt}{5pt}01\drawedgehead000 \shiftedge{-10pt}\shadeedge\drawdotedge{8pt}0\drawedgehead{100}10 \abutright 75:\rho{\border{5pt}{5pt}\rorect{5pt}11\outline} \setedge -100,150,100,150:\drawedgehead{50}11\shadeedge\drawsolidedge \abutbelow 0:\rho{\border{2pt}{2pt}\rect\outline} \setedge 0,-50,-150,-150:\thicklines\drawedgehead{50}01\thinlines \shadeedge\drawdashedge{13pt}{3pt}01\drawedgehead{50}11 \abutbelow -50:{X \atop Y}{\border{2pt}{2pt}\rorect{5pt}10\outline} \setedge 0,-50,0,-150:\thicklines\shadeedge\drawsolidedge\thinlines \setedge 0,-50,150,-150:\shadeedge\drawsolidedge \abutabove 75:{X \atop Y}{\border{2pt}{2pt}\rorect{5pt}10\outline} \setedge -175,-50,-175,-100:\drawdashedge{10pt}{31pt}11 \setedge -165,-100,-165,-50:\drawdashedge{15pt}{15pt}01 \setedge -155,-50,-155,-100:\drawdashedge{5pt}{5pt}11 \setedge -145,-100,-145,-50:\drawdotedge{26pt}1 \setedge -135,-50,-135,-100:\drawdotedge{25pt}1 \setedge -125,-100,-125,-50:\drawdotedge{5pt}1 \setedge 125,-50,175,-50:\drawdashedge{10pt}{31pt}11 \setedge 175,-60,125,-60:\drawdashedge{15pt}{15pt}01 \setedge 125,-70,175,-70:\drawdashedge{5pt}{5pt}11 \setedge 175,-80,125,-80:\drawdotedge{26pt}1 \setedge 125,-90,175,-90:\drawdotedge{25pt}1 \setedge 175,-100,125,-100:\drawdotedge{5pt}1 }$$ \newpage %These three diagrams test the macros for category-theory diagrams. $$\ctdiagram{ \ctvg0,0:{Y'}{\ctlpbl{I_{Y'}}} \ctvg150,0:{Z=Z_0}{\ctgl{Z}\ctlpbr{I_Z}} \ctvg0,100:{X_0=X}{\ctgr{X}\ctlptl{I_X}} \ctvg150,100:{Y}{\ctlptr{I_Y}} \ctet0,100,150,100:\alpha \cteb0,0,150,0:{\beta'} \ctel0,100,0,0:{\alpha'} \cter150,100,150,0:\beta \ctetb0,100,150,0:11{\alpha;\beta}{\alpha';\beta'} }$$ $$\ctdiagram{\ctdash \ctvg0,0:{Y'}{\ctlpblcc{I_{Y'}}} \ctvg150,0:{Z=Z_0}{\ctgl{Z}\ctlpbrcc{I_Z}} \ctvg0,100:{X_0=X}{\ctgr{X}\ctlptlcc{I_X}} \ctvg150,100:{Y}{\ctlptrcc{I_Y}} \ctet0,100,150,100:\alpha \ctnohead\cteb0,0,150,0:{\beta'}\cthead \ctel0,100,0,0:{\alpha'} \cter150,100,150,0:\beta \ctelr0,100,150,0:11{\alpha';\beta'}{\alpha;\beta} }$$ $$\ctdiagram{ \ctv0,0:{Y'} \ctvg150,0:{Z=Z_0}{\ctgl{Z}} \ctvg0,100:{X_0=X}{\ctgr{X}} \ctv150,100:Y \ctetg0,100,150,100;50:\alpha \ctebg0,0,150,0;50:{\beta'} \ctelg0,100,0,0;30:{\alpha'} \cterg150,100,150,0;30:\beta \ctetbg0,100,150,0;50,100:10{\rho}{\rho'} \ctelrg0,0,150,100;70,30:01{\theta}{\theta'} }$$ \newpage %The next two diagrams are further tests of the macros for drawing %double edges. $$\ctdiagram{ \ctv0,0:X \ctv-100,100:Y\ctv-100,0:Y\ctv-100,-100:Y \ctv100,100:Z\ctv100,0:Z\ctv100,-100:Z \ctetb0,0,-100,100:10\alpha\beta \ctdash\ctetb0,0,-100,0:00\alpha\beta\ctsolid \ctetb0,0,-100,-100:01\alpha\beta \ctetb0,0,100,100:10\alpha\beta \ctdash\ctetb0,0,100,0:11\alpha\beta\ctsolid \ctetb0,0,100,-100:01\alpha\beta }$$ $$\ctdiagram{ \ctv0,0:X \ctv-100,100:Y\ctv0,100:Y\ctv100,100:Y \ctv-100,-100:Z\ctv0,-100:Z\ctv100,-100:Z \ctelr0,0,-100,100:10\alpha\beta \ctelr0,0,0,100:00\alpha\beta \ctelr0,0,100,100:01\alpha\beta \ctelr0,0,-100,-100:10\alpha\beta \ctelr0,0,0,-100:11\alpha\beta \ctelr0,0,100,-100:01\alpha\beta }$$ \newpage %These two diagrams test the usage of \ctinnermid and \ctoutermid. $$\ctdiagram{\ctv 0,0:{ {\displaystyle\sum_{i=0}^{100}x_i\cdot y_i}\over {\displaystyle\sqrt{\biggl(\sum_{i=0}^{100}x_i^2\biggr) +\biggl(\sum_{i=0}^{100}y_i^2\biggr)}}} \ctv0,150:A\ctv150,150:B\ctv150,0:C\ctv150,-150:D \ctv0,-150:E\ctv-150,-150:F\ctv-150,0:G\ctv-150,150:H \cter0,0,0,150:A\ctinnermid\cter0,0,0,150:a\ctoutermid \cter150,150,0,0:B\ctinnermid\cter150,150,0,0:b\ctoutermid \cteb0,0,150,0:C\ctinnermid\cteb0,0,150,0:c\ctoutermid \cteb150,-150,0,0:D\ctinnermid\cteb150,-150,0,0:d\ctoutermid \ctel0,0,0,-150:E\ctinnermid\ctel0,0,0,-150:e\ctoutermid \ctel-150,-150,0,0:F\ctinnermid\ctel-150,-150,0,0:f\ctoutermid \ctet0,0,-150,0:G\ctinnermid\ctet0,0,-150,0:g\ctoutermid \ctet-150,150,0,0:H\ctinnermid\ctet-150,150,0,0:h }$$ $$\ctdiagram{\ctv 0,0:{ {\displaystyle\sum_{i=0}^{100}x_i\cdot y_i}\over {\displaystyle\sqrt{\biggl(\sum_{i=0}^{100}x_i^2\biggr) +\biggl(\sum_{i=0}^{100}y_i^2\biggr)}}} \ctv-150,150:A\ctv0,150:C\ctv150,150:E\ctv150,0:G \ctelr0,0,-150,150:11AB\ctinnermid \ctelr0,0,-150,150:11ab\ctoutermid \ctelr0,150,0,0:11CD\ctinnermid \ctelr0,150,0,0:11cd\ctoutermid \ctetb0,0,150,150:11EF\ctinnermid \ctetb0,0,150,150:11ef\ctoutermid \ctetb150,0,0,0:11GH\ctinnermid \ctetb150,0,0,0:11gh }$$ \newpage %This is a ``real'' diagram, relating directed complete relations to %Scott's inverse limit construction. It is sufficiently crowded %that it has been necessary to place some of the abutted expressions %carefully to avoid ambiguity. $$\ctdiagram{ \ctvg0,0:{D_0}{\border{2pt}{0pt}} \ctv72,0:{D_1} \ctv144,0:{D_2} \ctv216,0:{\quad\cdots} \ctvg288,144:{D_\infty}{\advance\ycenter by 5pt\border{50pt}{10pt}} \ctv234,36:{\cdots} \ctetbg0,0,72,0;48,48:10{\phi_0}{\psi_0} \ctetbg72,0,144,0;114,114:10{\phi_1}{\psi_1} \ctetb144,0,216,0:10{\phi_2}{\psi_2} \ctelrg0,0,288,144;42,30:10{\Phi_0}{\Psi_0} \ctelrg72,0,288,144;42,30:10{\Phi_1}{\Psi_1} \ctelrg144,0,288,144;42,30:10{\Phi_2}{\Psi_2} \ctvg0,-72:{D'_0}{\border{2pt}{0pt}} \ctv72,-72:{D'_1} \ctv144,-72:{D'_2} \ctv216,-72:{\quad\cdots} \ctvg288,-216:{D'_\infty}{\advance\ycenter by -5pt\border{50pt}{10pt}} \ctv234,-108:{\cdots} \ctetbg0,-72,72,-72;48,48:10{\phi'_0}{\psi'_0} \ctetbg72,-72,144,-72;114,114:10{\phi'_1}{\psi'_1} \ctetb144,-72,216,-72:10{\phi'_2}{\psi'_2} \ctelrg0,-72,288,-216;-114,-102:10{\Phi'_0}{\Psi'_0} \ctelrg72,-72,288,-216;-114,-102:10{\Phi'_1}{\Psi'_1} \ctelrg144,-72,288,-216;-114,-102:10{\Phi'_2}{\Psi'_2} \cter0,0,0,-72:{\alpha_0} \cter72,0,72,-72:{\alpha_1} \cter144,0,144,-72:{\alpha_2} \ctv216,-36:{\cdots} \ctdash \cter288,144,288,-216:{\alpha_\infty} }$$ \newpage %This shows how a macro can be defined and then used to give two different %views of the same diagram. \def\testcube#1#2#3#4#5#6#7#8{ $$\ctdiagram{ \ctv#1,#3:{A_1} \ctv#2,#3:{B_1} \ctv#1,#4:{A_2} \ctv#2,#4:{B_2} \ctv#5,#7:{A'_1} \ctv#6,#7:{B'_1} \ctv#5,#8:{A'_2} \ctv#6,#8:{B'_2} \ctet#1,#3,#2,#3:{\gamma_1} \ctet#1,#4,#2,#4:{\gamma_2} \cter#1,#3,#1,#4:{\alpha} \cter#2,#3,#2,#4:{\beta} \ctet#5,#7,#6,#7:{\gamma'_1} \ctet#5,#8,#6,#8:{\gamma'_2} \cter#5,#7,#5,#8:{\alpha'} \cter#6,#7,#6,#8:{\beta'} \cter#1,#3,#5,#7:{a_1} \cter#2,#3,#6,#7:{b_1} \cter#1,#4,#5,#8:{a_2} \cter#2,#4,#6,#8:{b_2} }$$} \testcube{0}{200}{200}{0}{50}{150}{150}{50} \testcube{0}{150}{150}{0}{100}{250}{200}{50} \newpage %An example of a partial ordering with a limit point. $${\def\diagramunit{0.25in} \ctdiagram{\ctnohead \ctv0,0:{\geq 0} \ctv2,2:{\geq 1} \ctv4,4:{\geq 2} \ctv7,7:\infty \ctv-2,2:{=0} \ctv0,4:{=1} \ctv2,6:{=2} \cten0,0,2,2: \cten2,2,4,4: \cten0,0,-2,2: \cten2,2,0,4: \cten4,4,2,6: \ctdot \cten4,4,7,7: }}$$ %An example of a binary tree, produced by user macros. \newcount\cnx\newcount\cny\newcount\cnxx\newcount\cnyy \def\treea#1{\cnxx=\cnx\cnyy=\cny \ctv\cnx,\cny:{\scriptstyle #1} \advance\cnx by -1\advance\cny by 4 \ctdot \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by 2 \cten\cnxx,\cnyy,\cnx,\cny: \ctsolid \cnx=\cnxx\cny=\cnyy} \def\treeb#1{\ctv\cnx,\cny:{\scriptstyle #1} \advance\cnx by -2\advance\cny by 4 \treea{#10} \cnxx=\cnx\advance\cnxx by 2\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by 4 \treea{#11} \cnxx=\cnx\advance\cnxx by -2\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by -2\advance\cny by -4} \def\treec#1{\ctv\cnx,\cny:{\scriptstyle #1} \advance\cnx by -4\advance\cny by 4 \treeb{#10} \cnxx=\cnx\advance\cnxx by 4\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by 8 \treeb{#11} \cnxx=\cnx\advance\cnxx by -4\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by -4\advance\cny by -4} \def\treed#1{\ctv\cnx,\cny:{\scriptstyle #1} \advance\cnx by -8\advance\cny by 4 \treec{#10} \cnxx=\cnx\advance\cnxx by 8\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by 16 \treec{#11} \cnxx=\cnx\advance\cnxx by -8\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by -8\advance\cny by -4} \def\tree{\ctv\cnx,\cny:\bot\def\centerheight{2pt} \advance\cnx by -16\advance\cny by 4 \treed{0} \cnxx=\cnx\advance\cnxx by 16\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by 32 \treed{1} \cnxx=\cnx\advance\cnxx by -16\cnyy=\cny\advance\cnyy by -4 \cten\cnxx,\cnyy,\cnx,\cny: \advance\cnx by -16\advance\cny by -4} $${\def\diagramunit{7.5pt} \ctdiagram{\ctnohead\cnx=0\cny=0\tree}}$$ \end{document}