; TeX output 1991.08.21:1128r-?F"t>K`yp cmr10TwEXtlyl: 7aline-drawinginterfaceforTwEX5?荍aC4K`yff cmr10JohnS.Renner#n14March1987=K`y cmr101gIß |{Ycmr81N"K`y 3 cmr10Cop!yrightcf$!", 3 cmsy10 1987fJohnS.RennerAllrigh!tsreserved.*r-2_.@ cmti12Geffometry35canproducelegibleletters,2_but35artalonemakesthembffeautiful.UT-G/cvec2-nZy~FDy~E=x9>r}~mȹx9>r}~mWСx9>r}~[AEx9>r}}JM嚅x9>r}}:ywZZ} 5wZZ}) vr}9>}E[Avr}9>}СmWvr}9>|ȹmvr}9>|vr}9>|ƞu|Fu|F Tu|Du|=2tr}…|ȹtr}…|Сtr}…|Etr}…{嚟tr}…{ŇsZ~{4hsZ~{) kr9>{[A%r9>{mW/_r9>zm7Gr9>z=?r9>zA:qzPqzy~ TPy~Nx9>r}~}XEx9>r}~ RMx9>r}~ -Jex9>r}}2C@x9>r}}C75lwZZ}1Ȟ@cwZZ}@c1ȅvr}9>}5lC7vr}9>}@2Cvr}9>|Je -vr}9>|RM vr}9>|XF}u|Nu|P Tu|Pu|NFtr}…|XEtr}…|RMtr}…|JeӅtr}…{@ͽtr}…{5lɅsZ~{@d9sZ~{1Ǟr9>{C7ʔr9>{2C?r9>z -r9>z r9>z}qzDqz TF~, C O] C C O]c33sZ~r]jt_______________pXOh|X+++++Gj dJsZ~{-Aҿ{G!7Oh| ݟ鳅pZo]o9oƟ'x9>r}x7lx9>r}}-A-A~`x9>r}}-A-A}uwZZ}-A-A}1wZZ}-A-A}[Kvr}9>}-A-A}qE +vr}9>}-A-A|dj"Gvr}9>vhi񨞼]iZi鳞:h鳞 ƅhZ(gCg]Džg'w:tr}…tȔtr}…{-Aҿ|` qtr}…{-Aҿ{!sZ~{-Aҿ{1VJsZ~{-Aҿ{Kgr9>{-Aҿ{ +r9>{-Aҿz"Gr9>rhxa]Xaa:M`p ƟMo(oCXo]ǟcx9>r}x=\x9>r}}-A-A~(מO?x9>r}}-A-A}?s@$wZZ}-A-A}3IFąwZZ}-A-A}FĞ3Ivr}9>}-A-A}@$?svr}9>}-A-A|O?(ׅvr}9>v\=ic]DžiXCi(hM ƅhM:ggX]gd9tr}…t[tr}…{-Aҿ|O?)tr}…{-Aҿ{@$sZ~{-Aҿ{FĞ̷sZ~{-Aҿ{3I{-Aҿ{?s܅r9>{-Aҿz(מr9>r=va]ǟaCa(Z` Ɵ鳅OX0\ 1O0\ 0\ 1O0\ 0\ 1O0\ 0\ 1OlwZZwZZ}pyŒbo>\y\vr o>\x5@~o>\x߅nr}xnr}w4mͅxMԟhlw02ilw(Rk͟v̷ejr}wCڬjr}vrمi\>vr \vi\>vj+vi\>uf0Ahu^hub=tg\ur g\t~g\tߟftI~fs4khe͟ffti,dJs2hЅdJsR؅c33re3Ibr}sڬ^br}rٟna>r\va>rvՅa>qAЅ`qpyto>\y^o>\x'^(o>\xN8nr}x@Z̅nr}wdmͅx_QlwcŅlwŞck͟v_Qjr}wdjr}v̞@Zi\>v8Ni\>v('^i\>u^huthutWg\ug\t(آg\t9lft˞fs|e͟fftdJsƞsdJsc:c33r_Q|br}sd~}br}r@Zk4a>rNnȅa>r'^b؅a>q^Z`q^待_ش^xO]Dr:\Onr}nnן= nr}wZZx…mͅx9>r}w#lwZZxSjz`lwZZv0k͟vr}9>w⼟|jr}wZZvԟDjr}jAROxQشPftOfOشQNOEM:LOtff= )fsZ~tŸe͟fftr}…s#HdJsZ~tz`dJsZ~rJc33r9>s|Dbr}sZ~rD7,br}bBxA'L@t,?_,^Q'L]E\ ƅnr}n{nr}wZZxQmͅx9>r}wy ylwZZxflwZZvfk͟vr}9>wyy jr}wZZvQjr}j{R ƟQEP'LQO,O,tN'LMxL ƟDrff fsZ~tSe͟fftr}…sydJsZ~tndJsZ~rfrxc33r9>sy br}sZ~rQabr}b{HB:AEO@Qش?fлP0\ 1O0\ 0\ 1O0\ 0\ 1O0\ 0\ 1OlwZZwZZ}2BDž_____________________________________________________________y೴P_______________________________________________________________p~[s_y}-A-A~b\^? y}-A-A~=oA]|.x9>r}yH<\ǟfx9>r}~[x9>r}~W2YZ\-x9>r}} sY33x9>r}}-XQ'RwZZ}c!ʅVRQ'wZZ}U33vr}9>}b bT-\vr}9>}&ßoSvr}9>|RfDžvr}9>|ƪXQ|.vr}9>uşP ?u}-A-A|Y`m]Ou}-A-A|UkOu{-Aҿ|\N ~u{-Aҿ|oA&ÅM𶞃҅tr}…u=NLfL9tr}…|4Ktr}…|2YdJ-tr}…{sIͅtr}…{nӅHRمsZ~{!ʟ㝅FQ'~sZ~{CE33ffr9>{ bOD\MӅr9>{o=C6r9>zBǟ r9>zX9VA|.Jr9>qY;@?q{-Aҿzm]?q{-AҿzҿA_y}-A-A~P^? y}-A-A~L]|.x9>r}y@\ǟfx9>r}~ݞ[x9>r}~)x$Z\-x9>r}}AlY33x9>r}}[[XQ'RwZZ}V\ VRQ'wZZ}\ VU33vr}9>}[[T-\vr}9>}lASvr}9>|x%)RfDžvr}9>|݅Q|.vr}9>u@P ?u}-A-A|LOu}-A-A|POu{-Aҿ|PaN ~u{-Aҿ|LM𶞃҅tr}…u@lLfL9tr}…|#Ktr}…|x$XJ-tr}…{lmIͅtr}…{[HRمsZ~{\ GFQ'~sZ~{VE33ffr9>{[螤jD\MӅr9>{ArC6r9>z)܅Bǟ r9>zݞRA|.Jr9>q{@?q{-Aҿz瞳D?q{-Aҿz2LL+++++++++++++++++++++Gj dJdJ{< u_ֹ^ַ^ڱ^]k栅]Qc\7ޅ\qnr}n)3nr}nz6nr}x9>r}x)эmͅn%qkRmͅx9>r}wW mͅwZZx2emͅwZZ}-A-A}^]lwZZw\p3lwZZwJ-k͟wZZ}-A-A}ʟ҅k͟wZZvПk͟vr}9>w鹟ͅk͟jNvYcjr}jy~jr}jRQcR栟kQQڱPַPֹPҼ/OҼ хO)GNַDxNڱ_hNzM栟yMLޟ~Lqff)3m_ff6{ftr}…tэe͟fffkRڏe͟fftr}…s )e͟ffsZ~t2e`e͟ffsZ~{-Aҿ{dJsZ~sp3XdJsZ~sӅc33sZ~{-Aҿ{ҟ 6c33sZ~r0c33r9>s͟Gc33bShąbr}r9>rYcIJbr}b~∅br}bBQcjBk`A A%O@)I@ֹ+@/-D?_ џ-D^)G+^Dx)I^_h%O]z ]y`\j\~#nr}nonr}ne ۅnr}x9>r}xgCmͅn 0mͅx9>r}wnmͅwZZxbWmͅwZZ}-A-A}JQlwZZwpJlwZZwJpk͟wZZ}-A-A}QJk͟wZZvWbk͟vr}9>wnk͟j 0jr}vr}9>vgCjr}j ۟ejr}joR"~RjQ`yQ zP%O_hP)IDxP+)GO-D хO-D/N+ֹN)IN%OM M`kLjQcL#7ffxff ۟wftr}…te͟fff 0o?e͟fftr}…se͟ffsZ~tWKe͟ffsZ~{-Aҿ{QqdJsZ~sJAdJsZ~sp{c33sZ~{-Aҿ{JDc33sZ~rboc33r9>snwic33bЅbr}r9>rgCrbr}be%br}bokB~݅BAy栅Az@_hڱ@Dxַ@)G? џҼޝhÅ_y~>^? pbX 0^? y~=Q^? x9>r}ygv]|.y~g]|.x9>r}~Z|څ\ǟfy}-A-A~ K+\ǟfx9>r}~3x[y}-A-A}ϟK[x9>r}}-A-A~:k{Z\-x9>r}~*SZ\-x9>r}}hY33x9>r}}0dY33wZZ}}=XQ'RwZZ}CWj j wZZ}3+Wj j wZZ}̟GVRQ'wZZ}ǧ|U33wZZ}U33vr}9>}lNST-\vr}9>}@=IT-\vr}9>|.ԟ^oSvr}9>}-A-A|٫}Su}-A-A}RfDžvr}9>|*"RfDžu}-A-A|vRхQ|.vr}9>|˟Q|.u|P ?vr}9>u)P ?u|P ?hOu|ÞOu|8…N ~h 0N ~u|¯N ~tr}…uv M𶞃҅u|gHUM𶞃҅tr}…|ڟLfL9u{-Aҿ|+LfL9tr}…|x#ͅKu{-Aҿ{Kk1Ktr}…{-Aҿ|{ŕJ-tr}…|SօJ-tr}…{hIͅtr}…{dCЅIͅsZ~{=HRمsZ~{ Gj sZ~{+ͅGj sZ~{G 4FQ'~sZ~{|8YE33ffsZ~{fE33ffr9>{SD\MӅr9>{=ID\MӅr9>z^o,C6r9>{-Aҿz}&UC6q{-Aҿ{BaBǟ r9>z")օBǟ q{-AҿzRџoA|.Jr9>zO5A|.Jqzd@?r9>q)gM@?qzxv@?`H?qz_y~~=^? p@`^? y~|^? x9>r}y mą]|.y~+{L]|.x9>r}~\ǟfy}-A-A~KL\ǟfx9>r}~&yL[y}-A-A}$Eq[x9>r}}-A-A~ B҅Z\-x9>r}~1v+Z\-x9>r}}QbY33x9>r}}LfY33wZZ}IhiXQ'RwZZ}HhӅWj j wZZ}KԞfWj j wZZ}fKԅVRQ'wZZ}hӞHU33wZZ}hiIU33vr}9>}fLT-\vr}9>}bQT-\vr}9>|v+1Svr}9>}-A-A|BҞ Su}-A-A}Er$RfDžvr}9>|yK&RfDžu}-A-A|KLQ|.vr}9>|Q|.u|{L+P ?vr}9>uĞ mP ?u||P ?h`@Ou|~=Ou|~=N ~h`N ~u||\N ~tr}…uĞM𶞃҅u|{LUM𶞃҅tr}…|ELfL9u{-Aҿ|KLLfL9tr}…|yKXKu{-Aҿ{ErrKtr}…{-Aҿ|BҞJ-tr}…|v+}J-tr}…{b^Iͅtr}…{fIͅsZ~{hiVHRمsZ~{hӞEGj sZ~{f,Gj sZ~{KԞMFQ'~sZ~{H-E33ffsZ~{IE33ffr9>{LយBD\MӅr9>{QD\MӅr9>z1ՅC6r9>{-Aҿz .C6q{-Aҿ{$Bǟ r9>z&Bǟ q{-AҿzA|.Jr9>zPA|.Jqz+@?r9>q m{<@?qzF@?`@?qzÅ>+++++++++++++++++++++Gj dJdJ{Gم_____________________________________________________________________________________________________________________________________________________________p~ОUhܶ*b_H_ݏӑ_ԏ^K^ğ׋^Lو^څ^ށ]K}]r΅]ds]Wn\J\=a\1[\$I\r}w/nr}wZZx,mͅn*ggmͅx9>r}x椟mͅx9>r}w۶݅mͅwZZx%>mͅwZZx'-mͅwZZwɟ6lx9>r}wu?lwZZwk4aklwZZ}-A-A}4*=lwZZ}-A-A}*GlwZZwN^lvr}9>w-k͟wZZw%>k͟wZZv؟rk͟wZZv`k͟vr}9>wk͟vr}9>v]k͟jXA˅jr}wZZvjr}vr}9>w7G5jr}j,Gjr}j&!jr}j C/jr}j̅RZ1Ra=RJRnWRsdQΟrQ}KQށQڞPوLP׋ąPKPԏPӑݏOHOҒOҒOOӑ"qOԏ0N=N׋KPLe͟ffsZ~t-Zمe͟ffsZ~s6e7dJtr}…s?idJsZ~sak̅dJsZ~{-Aҿ{=օdJsZ~{-Aҿ{G\dJsZ~s^XdJr9>sHc33sZ~s…c33sZ~rr(c33sZ~r`Fc33r9>s c33r9>rc33bA˟lbr}sZ~r!br}r9>sG5?Ʌbr}bӹbr}b߅br}b/߽br}b̟SB1B= BJCBWBdAr2AKA!A$&@L&x@ğ(u@K*@+q@ݏ,o?H-?-n?_-n_-_"q,o^0+q^=*^K<(u^X&x^f$&]so!]]2] \\C\ \\۷Ynr}nuן˅nr}nFnr}n Džnr}nZnr}x9>r}wm2'nr}wZZxW$mͅnmͅx9>r}xhmͅx9>r}wsmͅwZZx]VmͅwZZxh$mͅwZZwrwlx9>r}w؞zOlwZZwk lwZZ}-A-A}H}RFlwZZ}-A-A}RFH}lwZZw klvr}9>wzO؅k͟wZZwwrk͟wZZv$hk͟wZZv]Vk͟vr}9>wsk͟vr}9>vhk͟jjr}wZZv$Wjr}vr}9>w'm2jr}jZjr}j ǟjr}jFjr}j˞uׅRZ۷RR RCRQ Q2QQ!soP$&fP&xXP(uKs؞c33sZ~sr|c33sZ~rhs܅c33sZ~r]Vkvc33r9>ss{Sc33r9>rhs~c33btbr}sZ~rWd܅br}r9>sm2uمbr}bbr}b9br}bFbr}buן5B۷BZBaBBnA sA΅A}Asoށ@fڅ@Xو@K<׋@=@0ԏ?"qӑ??ҒB}10++\++\+++\++\+++\++\+++\+++\++\+++\++\+++\+++\++\+++\++Gj dJ{^? pbX 0^? y~=Q^? x9>r}ygv]|.y~g]|.x9>r}~Z|څ\ǟfy}-A-A~ K+\ǟfx9>r}~3x[y}-A-A}ϟK[x9>r}}-A-A~:k{Z\-x9>r}~*SZ\-x9>r}}hY33x9>r}}0dY33wZZ}}=XQ'RwZZ}CWj j wZZ}3+Wj j wZZ}̟GVRQ'wZZ}ǧ|U33wZZ}U33vr}9>}lNST-\vr}9>}@=IT-\vr}9>|.ԟ^oSvr}9>}-A-A|٬}Su}-A-A}RfDžvr}9>|*"RfDžu}-A-A|vRхQ|.vr}9>|˟Q|.u|P ?vr}9>u)P ?u|P ?hOu|ÞOu|8…N ~h 0N ~u|¯N ~tr}…uv M𶞃҅u|gHUM𶞃҅tr}…|ڟLfL9u{-Aҿ|+LfL9tr}…|x#ͅKu{-Aҿ{Kk1Ktr}…{-Aҿ|{ŕJ-tr}…|SօJ-tr}…{hIͅtr}…{dCЅIͅsZ~{=HRمsZ~{ Gj sZ~{+ͅGj sZ~{G 4FQ'~sZ~{|8YE33ffsZ~{fE33ffr9>{SD\MӅr9>{=ID\MӅr9>z^o,C6r9>{-Aҿz}&UC6q{-Aҿ{BaBǟ r9>z")օBǟ q{-AҿzRџoA|.Jr9>zO5A|.Jqzd@?r9>q)gM@?qzxv@?`H?qz_y~~=^? p@`^? y~|^? x9>r}y mą]|.y~+{L]|.x9>r}~\ǟfy}-A-A~KL\ǟfx9>r}~&yL[y}-A-A}$Eq[x9>r}}-A-A~ B҅Z\-x9>r}~1v+Z\-x9>r}}QbY33x9>r}}LfY33wZZ}IhiXQ'RwZZ}HhӅWj j wZZ}KԞfWj j wZZ}fKԅVRQ'wZZ}hӞHU33wZZ}hiIU33vr}9>}fLT-\vr}9>}bQT-\vr}9>|v+1Svr}9>}-A-A|BҞ Su}-A-A}Er$RfDžvr}9>|yK&RfDžu}-A-A|KLQ|.vr}9>|Q|.u|{L+P ?vr}9>uĞ mP ?u||P ?h`@Ou|~=Ou|~=N ~h`N ~u||\N ~tr}…uĞM𶞃҅u|{LUM𶞃҅tr}…|ELfL9u{-Aҿ|KLLfL9tr}…|yLXKu{-Aҿ{EqrKtr}…{-Aҿ|BҞJ-tr}…|v+}J-tr}…{b^Iͅtr}…{fIͅsZ~{hiVHRمsZ~{hӞEGj sZ~{f,Gj sZ~{KԞMFQ'~sZ~{H-E33ffsZ~{IE33ffr9>{LយBD\MӅr9>{QD\MӅr9>z1ՅC6r9>{-Aҿz .C6q{-Aҿ{$Bǟ r9>z&Bǟ q{-AҿzA|.Jr9>zPA|.Jqz+@?r9>q m{<@?qzF@?`@?qzÅ>eGhudhu>htϞ/g\uMg\uug\t;ۅg\{-Aҿ|MjɅfuft=!f{-Aҿ|J˞ f{-Aҿ|AÞ(e͟ff|}TȒe͟ff{-Aҿ|Egمe͟ff{g;1e͟ff{[ddJ{edJ{Xgc33{ec33{VϞŅc33{-Aҿz'c33z7nbr}{-Aҿz ؞=br}{-Aҿz5br}r+ߟÅbr}q xha>{-Aҿz7a>r*%Ņa>q{a>qw^`r/џ|1`qŸzQ`qpy>zQpy/|1px7o>\ylIfo>\yY o>\xG\o>\}-A-A~ m҅nr}y&хnr}xџnr}}-A-A~Ʌnr}}-A-A~:mͅ~dmͅ}-A-A~Hmͅ}g0 Pmͅ}X2l}/=l}#KŅk͟}+uk͟}dk͟}-A-A|џhk͟|6Ѕjr}}-A-A|jr}}-A-A|jr}vvjr}ui\>}-A-A|a̟,ni\>vflIi\>u!i\>u՞hvzQ>huy`dhu[_y}-A-A~b\^? y}-A-A~=oA]|.x9>r}yH=\ǟfx9>r}~[x9>r}~W2YZ\-x9>r}} sY33x9>r}}-XQ'RwZZ}c!ʅVRQ'wZZ}U33vr}9>}b bT-\vr}9>}&ßoSvr}9>|RfDžvr}9>|ƪXQ|.vr}9>uşP ?u}-A-A|Y`m]Ou}-A-A|UkOu{-Aҿ|\N ~u{-Aҿ|oA&ÅM𶞃҅tr}…u<NLfL9tr}…|4Ktr}…|2YdJ-tr}…{sIͅtr}…{nӅHRمsZ~{!ʟ㝅FQ'~sZ~{CE33ffr9>{ bOD\MӅr9>{o=C6r9>zBǟ r9>zX9VA|.Jr9>qY;@?q{-Aҿzm]?q{-AҿzҿA_y}-A-A~P^? y}-A-A~L]|.x9>r}y@\ǟfx9>r}~ݞ[x9>r}~)x$Z\-x9>r}}AlY33x9>r}}[[XQ'RwZZ}V\ VRQ'wZZ}\ VU33vr}9>}[[T-\vr}9>}lASvr}9>|x$)RfDžvr}9>|݅Q|.vr}9>u@P ?u}-A-A|LOu}-A-A|POu{-Aҿ|PaN ~u{-Aҿ|LM𶞃҅tr}…u@lLfL9tr}…|#Ktr}…|x$XJ-tr}…{lmIͅtr}…{[HRمsZ~{\ GFQ'~sZ~{VE33ffr9>{[螤jD\MӅr9>{ArC6r9>z)ۅBǟ r9>zݞSA|.Jr9>q{@?q{-Aҿz瞳D?q{-Aҿz j_y}-A-A~b\^? y}-A-A~=oA]|.x9>r}yH=\ǟfx9>r}~[x9>r}~W2YZ\-x9>r}} sY33x9>r}}-XQ'RwZZ}c!ʅVRQ'wZZ}U33vr}9>}b bT-\vr}9>}&ßoSvr}9>|RfDžvr}9>|ƪXQ|.vr}9>uşP ?u}-A-A|Y`m]Ou}-A-A|UkOu{-Aҿ|\N ~u{-Aҿ|oA&ÅM𶞃҅tr}…u<NLfL9tr}…|4Ktr}…|2YdJ-tr}…{sIͅtr}…{nӅHRمsZ~{!ʟ㝅FQ'~sZ~{CE33ffr9>{ bOD\MӅr9>{o>C6r9>z Bǟ r9>zX9VA|.Jr9>qY;@?q{-Aҿzm]?q{-AҿzҿA_y}-A-A~P^? y}-A-A~L]|.x9>r}y@\ǟfx9>r}~ݞ[x9>r}~)x$Z\-x9>r}}AlY33x9>r}}[[XQ'RwZZ}V\ VRQ'wZZ}\ VU33vr}9>}[[T-\vr}9>}lASvr}9>|x$)RfDžvr}9>|݅Q|.vr}9>u@P ?u}-A-A|LOu}-A-A|POu{-Aҿ|PaN ~u{-Aҿ|LM𶞃҅tr}…u@lLfL9tr}…|#Ktr}…|x$XJ-tr}…{lmIͅtr}…{[HRمsZ~{\ GFQ'~sZ~{VE33ffr9>{[螤jD\MӅr9>{ArC6r9>z)܅Bǟ r9>zݞRA|.Jr9>q{@?q{-Aҿz瞳D?q{-Aҿzihudhu>htϞ/g\uMg\uug\t;ۅg\{-Aҿ|MjɅfuft=!f{-Aҿ|J˞ f{-Aҿ|AÞ(e͟ff|}TȒe͟ff{-Aҿ|Egمe͟ff{g;1e͟ff{[ddJ{edJ{Xgc33{ec33{VϞŅc33{-Aҿz'c33z7nbr}{-Aҿz ؞=br}{-Aҿz5br}r+ߟÅbr}q xha>{-Aҿz7a>r*%Ņa>q{a>qw^`r/џ|1`qŸzQ`qpy>zQpy/|1px7o>\ylIfo>\yY o>\xG\o>\}-A-A~ m҅nr}y&хnr}xџnr}}-A-A~Ʌnr}}-A-A~:mͅ~dmͅ}-A-A~Hmͅ}g0 Pmͅ}X2l}/=l}#KŅk͟}+uk͟}dk͟}-A-A|џhk͟|6Ѕjr}}-A-A|jr}}-A-A|jr}vvjr}ui\>}-A-A|a̟,ni\>vflIi\>u!i\>u՞hvzQ>huy`dhu߳>eG/////////////////////Wj j ll}^ߞ^߅llllllllllllllllllllllllllllllllllC6br}r9>{|Ű+++++++++++++++++++++++++++++++++++++++++++Gj Gj sZ~{ʤą7777777777777777777777777777777777[nr}x9>r}}kllllllllllllllllllllllllllllllllllC6br}r9>{(>-+++++++++++++++++++++Gj dJdJ{G!////////////////////////////////////////////////////////////////////////////////////////lwZZ}  7777777777777777777777777777777777[nr}x9>r}}(hgh___________________________________________________________________________________________________________________________p೴___________________________________________________________________________________________________________________________p೴___________________________________________________________________________________________________________________________p]䟄_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________~П10u|ǀЅ___________________________________________________________________________________________________________________________ph.2_A2rt35bffeginswheregeometryends,2_and35impffartstolettersacharacter2_trffanscending35meremeasurement.)PaulUUStandard^:+XQ cmr12i r-tiir-FzƍI"VG cmbx10ICon4tentsC50N cmbx121&TheBasics-P152&Adv@ancedFeaturesg9T&2.1AJTVransforms,g cmmi12: C:::::::::::::::::::::::::::֚9&2.2AJFigures: C::::::::::::::::::::::::::::::10&2.3AJOthersꍑ: C::::::::::::::::::::::::::::::143&User-LevelDetailsm2174&WhenThingsGoWrong\235&DesignDetailsf27&5.1AJVVectorso: C::::::::::::::::::::::::::::::27&5.2AJSplines: C::::::::::::::::::::::::::::::306&TheImplementation 33&6.1AJOvrerviewh: C:::::::::::::::::::::::::::::33&6.2AJPrimitivresÍ: C::::::::::::::::::::::::::::34&6.3AJProSceduralHandlingF: C::::::::::::::::::::::38&6.4AJFigures: C::::::::::::::::::::::::::::::39&6.5AJTheFVonrts!Q: C::::::::::::::::::::::::::::42AJ6.5.1g?VVectorSettingyԍ: C::::::::::::::::::::::43AJ6.5.2g?BeamSetting: C::::::::::::::::::::::44&6.6AJBu eringӍ: C:::::::::::::::::::::::::::::45&6.7AJOdds'nSoSdso*: C::::::::::::::::::::::::::467&FutureExtensionsk50iiiHr-;ALTESXtylSummaryj53?;BLFontExampleE57;CLMacrosandExtendedExamplesDN59Duiv r-GIIn4trovduction8@TUEuXtylmKis.aprototrypSepost-processingsystemtobeusedinconjuctionwithT UE!X[9],Tthe/{trypSesettingprogrambyDonaldKnuth.|ThepurpSoseofTUEuXtylnisto\drarw"linesandcurvesinadevice-indepSendentmanner.TUEuXtylAqisapSost-proScessoruthatinrterpretscertaincommandsinaDVI)(dfeevfe33ice-ifeCCndependenrt) leR^thatistheoutputofT UE!XR7andconrtainstheactualtypSesettingcommands.TUEuXtylGwill MproSduceasitsoutputanotherDVI  lethatconrtainsthecom-mandstotrypSesetthelinesandcurvesonaprinteroroutputdevice.@&InthecurrenrtversionofTUEuXtyl^V(version1.2ofMarch1987),- thesimplelinedrarwingcapabilitiesincludeseveralgeneraltypSesofstraightlines, arcs,and7splinecurvres.OAdvXancedfeaturesofTUEuXtylvareforMusiCopy,[themusic-trypSesettingJprojectattheOhioStateUniversity[7],namelytypSesettingties,slurs,andbSeams.&ThewDnameforTUEuXtylcomesfromthreeideas:R(1)apropSercomputergraphicstermforrenderingimagesiscalled\tiling,"(2)themis-pronounci-ation6ofthenamesoundslikre\textile,"Jwhichevokesanimageoflinesandbargello5e ectsfromwreaving,șand5(3)thisproScessof\tryl"-ingcomesafterT UE!X.&TheNmaindesigngoalsofTUEuXtylwrere(1)theminimizationofdatare-quiredrtotrypSesetgraphicsonprinterscapableofsettingonlycharactersatarbitrarypSositionsonapage,η(2)theadherencetotheDVIformatofT UE!Xoutput^.forspSecifyingthewray^.totrypesetadocumenrtinadevice-independenrtmanner,"(3){asimple,pSortableinrterfacethatwouldnotrequireachangetotheefunctionalitryordesignofT UE!X,and(4)auserinterfacethatiseasytousebrypSeopleandprogramsalike.&TUEuXtylwraspnotintendedtomimicnorreplacesexyprogramslikeIdeffal>[15 ],whicrhknowabSoutconstraintsandalignmentniceties./Rather,0TUEuXtylfisde-signed@totakrecareofmedium-leveldetailsforT UE!Xforuseonprintingdevices;vr-;notcapableofdirectlyaccessingandloadingfullbitmapsproSducedbrysuch;systemsasPostScript$D[1].ItisclearthatDVI-formatisasubsetofPostScript,;butalargecommrunityofusersarenotabletomakreuseofsuchasupSer-set,;andTUEuXtyl);isinrtendedtoprovideline-drawingcapabilitiesforthem.LProbably;thebSestwray;toreadthismanrualistoreadthe rstfour(4);crhapters,iandIskiprighttothechapterentitledFuturffe'Extensions,iforagoSod;inrtroSduction5 toTUEuXtyl.Theotherchaptersdealwithdetailsoftheinnards;ofTUEuXtyl,anddescribSethedesigninsuccessivrely nerdetail.LIR+wrouldRRliketothankJohnGourlayV,pandClaytonElwellfortheirsuppSort,;commenrts,sreminders,andXLgoSodideasduringthisthree-yrearlabor,sandthe;CGRGfornothasslingmeabSoutthis.DuviAr-F.IChapter 12.The Basics7,.So,let'sdrarw.hIwillassumethatthereaderhasareasonablygoSodworkingknorwledge0ofhowtouseT UE!X0iand/orL"s3J- cmcsc10Ja^T EX,andsortofunderstandsKnruth'sconceptB*of\bSorxes,"X andtheirattributesofheight,X width,andB*currentpSosi-tion.WVeVneedtheseconceptsbSecauseourdirectinrterfaceiswithT UE!X,intheform@gofa1߆T cmtt12.textext- le.:TVotrypSesettheline-drawings,UweaskT UE!X@QtoplaceourntdrarwingatthecurrentpSositiononthepage.EThroughoutthismanual,I5willfprorvidesomeexamplesofdrawingstoillustrateideas.rThese guresarethrumb-nailsize,mbutshouldbSesucienttogettheideaacrosswithoutusing/uplotsofspaceonapage.7Let'sloSokatasimpleexample:7$Aftertryp-ing\input{textyl}nearthebSeginningofyrour le,butafteranyrequiredpreamrble,wecanobtainatrivialdrawinglike:}-A-A}%B}]gD}gD]}-A-A}B%}-A-A|J>j|};v2.v,!хuӞ|u&u&uӞ넅t,/t2|}c{-Aҿ|J>喅{-Aҿ{BH{gDz{]{-Aҿ{%P{-Aҿzj…z;r.|΅r!џxԅq|v-qtڅ0+X-c40+Y-,_______________________________________________________________________________________________________________py~+;whereTwrehaveemphasizedtheoriginofthequadrant,oyandusedtick-marks;forevrerytenprinter's-pSoints.*InrealityV,someonepreparinga gurewould;skretch,somethingoutongridpapSer,=iandthenusethosecoordinatesforuse;in0vthe\special. KIfhewrerereallyinluck,hecoulduseagraphiceditor;thatwrouldtakecareofsuchnumericdetails,;|andmaybSeevenoutputthe;\specialstringsfordirectinsertioninrtothe.tex le.%MaybSe.FVornow,we;will~Nharvetosticktothegrid-papSermethod.Theonlythingsthatwrehave;_ffd ^ٓRcmr71SeeUUalsoAppGendixC2cr-torememrbSerarethattheoriginofourquadrantisplacedatthepSositiononenthepagewherewreinvokethe\specialofT UE!X,andthatwemaywanttoMclearvewhitespaceforourgraphictobSedrawnin.aThislastconstraintisbSecauselT UE!XBdoesnotreallyknorwaboutthesizeofourdrarwing,itthinksthatXthe\specialisa\bSorx"withzeroheightandwidthplacedatthecurrentpSosition~onthepage.bItisuptoustodecidehorwmuchrffealspace~totellT UE!XtolearveforourdrarwingtobSeputintolaterbyTUEuXtyl.8R&InptheexampleabSorve,Handpthefollorwingexamples,wrewillputour\specialstringswithinanenrvironmentthatmakresiteasytospSecifywheretheori-ginAofourquadranrtshouldbSeplaced.>FVorexample,W\begintyl{4cm}[1in]tellsT UE!X toplaceourorigin4cenrtimetersdownfromwhereitwasjustsit-ting.Ahorizonrtalwidthisanoptionalsecondparameterto\begintyl,andisenclosedinsquarebracesimmediatelyfollorwingtheverticaldisplacementparameter2(withnospacesin-bSetrween).So2\begintyl{5cm}wrouldplaceourorigin5cenrtimetersbSelowthecurrentpSosition,:withnorelativehorizontalwidth.Other(BspacingrequiremenrtshavetobSedonebyhand(e.g.,7liketyp-ing\hskip91inbSeforethe\begintyl),orbryputtingthewhole\begintyl...$ʞ\endtylFygroupwithinaconrtainingenvironment(e.g.,gOL"s3Ja^T E!X'sfigureen-vironmenrt).]WVe|could,ifwewanted,leavenoextrawhite-spaceandhavetheEdrarwingextendintoandoveranytextthatT UE!XEmaytypSesetbeforeorafter2wreinvokea\special{tyl...}command.#WVewould,Jofcourse,startthatD#tryling-environmentwitha\begintyl{0pt}command,Zand nishwiththe\endtylcommand,anditmighrtdosomethinglikeP1G/cvec31- p~ʟpo>\~m^o>\~Lo>\},Յnr}~WKnr}}-mͅ}|1 l}Hҟa+l}3!{k͟}w:jr}}8{jr}| Ki\>}m^i\>|i\>|Ğh| 7h|p36g\|g\|Ng\{՟f|K%f{-Ae͟ff{1 jdJ{a+.dJ{{߅c33{:br}{{ȅbr}zK,a>{m^JJa>zPa>zT<`zp~7[o>\~ `4o>\~vYo>\}7"Onr}~"Uօnr}}@EÅmͅ}5ԞK l}4˞M$l}M$4˅k͟}K 5ԅjr}}EÞ@jr}|U֞"i\>}O7"i\>|Yvi\>|`4 h|[7h|[Ʌg\|`4 g\|Y銅g\{Oޅf|U֞uf{EÞQe͟ff{K ,dJ{M$5dJ{4˞܅c33{5Ԟbr}{@=br}z"*a>{7"`a>zvna>z ̅`z7 +Pthis.&Once/wrearesatis edwithour.tex lecontaining\specialstringsre-questingline-drarwings,5Pwerunthe.tex lethroughT UE!XorL"s3Ja^T EX,and(barring}anryfatalerrors)endupwitha.dvi le.#WVenowrunthis.dvi lethroughTUEuXtyl+whicrhgoSesthroughthe leandconvertsour\specialstringsleft-orverfromT UE!XinrtocommandstoactuallytypSesettheline-drawing.ThewholeproScessmighrtlooksomethinglikrethis:Q썑&%': 3 cmti10prpompt:(&ThisisTeX,Versionmumble...&**myfile.texfe9|hS2.1..xoutputfrpomT"R[wE)X&Outputwrittenonmyfile.dvi(npages,mbytes).&prpompt:textylfe"}&ThisisTeXtyl,Versionblah...&DVI-inputFileName:myfile.dvife9|3r-LDVI-outputFileName L(differentthaninputname)[defaultofmyfile.tyl]:myfile2.dviݟfe?r}}-A-A}=՞EZ\-mͅxf Z\-nr}wZZxHtZ\-mͅx9>r}xSLBY33mͅxuWj j wZZwJiRfDž}-A-A|Bt N ~t2nKf{O,dIͅe͟fftr}…{UͅHRمdJsZ~tGj dJsZ~{-Aҿ{A힭FQ'~c33stNE33ffr9>{Xfbr}r9>{ mA҅[xHASRR"J ?u|&_ΟstyR\dJdJrη*?D\MӅc33z̟ԅC6br}rKfC6br}bL΅C6BSȟ:C6br}bLׅC6br}r9>{ 8D\MӅbr}{E33ffsZ~{-AҿzAUfFQ'~sZ~{BiLGj sZ~{0Gj sZ~{M|܅dJe͟ff{re͟ffsZ~sc@9.e͟ffsZ~{*dJ{+4Hr-Here,0wreHareusingunitsofmillimetersformeasurement(denotedbyanmorM,alinethicrknessof4,ʐandwewanttouseaCatmull-RomtypSespline(denotedbrykorK|alsothedefaulttypSeifnoneisspeci ed).CWVespecifythat2thereare7conrtrolpSointstointerpSolatethrough,Wandthenlistthosex;ypairs.FSomethingsareoptional 4 foryrou(likethesplinetypSe,ortheunitsofmeasure),butsomearenot(notablytheline-thicrknessandthenumbSerofcconrtrolpSoints).PAswegothroughtheseexamples,4RIwillpSointouttheminimrum=7thatweneedtospSecifyagraphicprimitive,_andnoteotheroptionsornfeaturesthatwremightwanttouse.FVoradetailedloSokatthespeci cationsoftheprimitivres,pleaserefertotheUser-Lffevel35Detailsfe]ˠeinchapter3.5 -r-LLet's݈tryonemoretrypSeofspline-primitive:2Pthethick-n-thinspline.4This;isaprimitivrethatletsusspSecifyasplineofvXaryinglinethicknessalongthe;spline.8AnexampleinrvoScationmightbSe:;\special{TYL,ttsplinem54,6;14,25;18,19;21,15;24,8;ṟ10;42;6;3;8}~zJ/2G/cvec103G/cvec94G/cvec75G/cvec66G/cvec52 aC0΅C6r9>z3*juC6br}z*C6br}r9>z/!4KC6C6z˞llr4/mlr9>z5 lr9>z֞lr9>z6 5lr.V`C6C6{K7C6c33b1D\MӅbr}rcEP܅D\MӅc33z-,E33ffr_hfdJr9>{-Aҿ{AΚK{-Aҿ{Ki\>vr}9>|o*$Y33}-A-A}1'{C\ǟfn.!\ǟfo>\x1]|.nr}y6!ğȅ\ǟfo>\~5!kX [xF~Y33mͅwZZ}.3JXQ'RwZZx.pӅY33wZZw1x"NZ\-nr}wZZ}4ޞ^<[}-A-A~ ܞ@o[x9>r}~.5dy\ǟfn6/\ǟfn\ǟfx9>r}x5;ƅ\ǟfx9>r}~4IT\ǟf}/,JOnr}x9>r}~1;ItloSokssimilartothesplineprimitivre,KbutherewedidnotspSecifyasingle;line thicrknessrightafterthemmeasure-marker.HThe5referstothenumbSer;ofconrtrol-pSointsasbSefore,,Tthenisfollowedbythe(x;yn9)coSordinatepairs,;andthentheline-thicrknesses. The rstnumbSer(here,R10)referstothe;linexthicrknessatthe rstcontrol-pSoint(here,d(4;6));thenextforthesecond;conrtrol-pSoint,letc.ڜWVedidnotneedtoalignthethicrknessesunderthecontrol-;pSoinrts,=butSitmakesthecorrespSondencemoreapparent.sWVedidnotspSecify;the5trypSeofsplinetouse,sotheCatmull-RominterpSolatingsplinewasused;brydefault.NlWVecouldhaveinsertedabmarkerdirectlybSeforethenumbSer;of.conrtrol-pSoints,handgottenasplineusingtheB-splinebasis.qUsingad;markrercyieldsasplinewiththeCardinalbasis,andaniwouldindicatean;InrterpSolatingB-spline(whichisalittledi erent).WVewillloSokcloseratthese;spline-trypSesonpage14.LIfhyrou'vebSeenveryobservXant,\y~3ҟ˜^? o>\y~ӟ]|.o>\x9>r}~@g\ǟfo>\x9>r}~7bLG[nr}x9>r}~~)Z\-nr}x>`\Y33mͅxuMXQ'Rlw-@VRQ'lw+HU33k͟v\BT-\jr}v`अSjr}vr}9>|P*RfDži\>vr}9>| PQ|.i\>vr}9>|i~fP ?i\>u|^ROi\>u|iOg\u|˜.N ~g\u|h-M𶞃҅g\tr}…|g8LfL9g\tr}…|LGȞKftr}…|ׅJ-ft`\dIͅe͟fftMUHRمdJs@xFQ'~dJsI>ՅE33ffc33rBID\MӅbr}rटC6br}r9>z*rBǟ a>r9>zPA|.Ja>r9>z~f@?a>qzR9?a>qzx\_o>\y~L߅^? o>\y~G]|.o>\x9>r}~N\ǟfo>\x9>r}~#C˅[nr}x9>r}~ ϞHZ\-nr}xoJY33mͅxrXQ'RlwVRQ'lwU33k͟vrT-\jr}voISjr}vr}9>|H υRfDži\>vr}9>|C˞#Q|.i\>vr}9>|NP ?i\>u|GOi\>u|LߞOg\u|LߞQN ~g\u|GM𶞃҅g\tr}…|NLfL9g\tr}…|C˞݅Kftr}…|H1J-ftIͅe͟fftBHRمdJs}nFQ'~dJsj E33ffc33rr]D\MӅbr}roJZDC6br}r9>z ϞBǟ a>r9>z#5A|.Ja>r9>z@?a>qz_?a>qz񯞳!1*̿0[mͅx{9gpZ\-mͅxPY33mͅ}-A-A}ǥWj j mͅ}-A-A}m,VRQ'l}-A-A}U33k͟}-A-A}a AT-\k͟vP/DžSjr}vB3Si\>vЍRfDži\>v&Q|.i\>viP ?i\>uos.P ?hudOhubVAN ~hun|N ~g\uSqM𶞃҅g\u4LfL9g\t:UʅLfL9ft"Kft<@ŅJ-f{-Aҿ{QdIͅe͟fftϟ.DHRمe͟ff{-Aҿ{DڅGj dJ{-Aҿ{c@FQ'~c33{-Aҿ{s E33ffbr}{-Aҿ{VџمD\MӅbr}rjC6br}rYW1Bǟ br}qW=A|.Jbr}qQ>aA|.Ja>qqn@?a>qWR?a>q\_pys^? px*h]|.px7]|.o>\xBğ\ǟfo>\xROą[nr}x1Z\-nr}xIZ\-mͅ}-A-A}5RY33lx_Wj j lx`ZzVRQ'l}-A-A}O7\U33k͟}-A-A}O6T-\k͟v6JaSjr}vٞ[oRfDžjr}vI!RfDži\>vP7GQ|.i\>v#'P ?i\>uP ?huOhuڅN ~hu&N ~g\u뒅M𶞃҅g\u߅LfL9g\twKftr}…|U9J-e͟fffjVHRمHRمtr}…{~@N ~h纟M𶞃҅heM𶞃҅f LfL9fK"3KfJ-fYIͅsZ~toHRمsZ~sWFQ'~sZ~{-Aҿ{3ӟE33ffsZ~rND\MӅr9>s<`C6bRBǟ bUןBǟ a՟A|.Jat@?a(?a_o$,^? o,)]|.o6(-\ǟfoD&~\ǟfn [nPvZ\-x9>r}wqZY33wZZxg6XQ'RwZZ}-A-A}RH`VRQ'wZZwrU33vr}9>}-A-A}QM#T-\jRȅSj RfDžjWwQ|.jjkLQ|.h+%8P ?h+Oh,;N ~h/ N ~g'.7M𶞃҅g$}LfL9g!Kg֞KsZ~t܅J-sZ~t\HRمtr}…sBGj sZ~s߅FQ'~sZ~rfdsE33ffr9>sm@wD\MӅb|C6by쟅Bǟ ah@܅A|.Ja[@?aRo@?` Ҽ?`J^? p4ҟ3^? oß]|.om7\ǟfoW@[n՟w"Z\-nY33x9>r}xXQ'RwZZxWj j wZZ}-A-A}VRQ'vr}9>}-A-A}Az{rU33j;pyD` o>\y(ҟonr}y?nr}xmͅx!ʐlwZZ~x۟lwZZ|@} ҅k͟vr}9>};jr}wZZvŸ8jr}j8RLRfDž|ήQ|.|\…P ?|P ?|O|ȅO|=ӅN ~|N ~| M𶞃҅|;0LfL9|L=jffGfsZ~t!e͟fftr}…{I$dJsZ~|@{lx*dJsZ~z⚟c33r"Xbr}rk|br}q0ǟa>qR`qpy-o>\ynr}y&nr}xaǟmͅxtE=lwZZ~4YlwZZ|@}(BQk͟vr}9>}hdυjr}wZZvMCjr}jʟRKRfDž|Z#Q|.|a6UP ?|g&P ?|sQO|uȅO|u8N ~|sN ~|grM𶞃҅|a6LfL9|Z݅L'ffʟxfsZ~te͟fftr}…{h1dJsZ~|@{(dJsZ~z4랦c33rtEPÅbr}raǟYbr}q&Ma>qXg`q-\ VXq۟OqO҅qyODžy)O؅ymOyPyPOy:Py쁟PԅyȟQ'yQy[Qy᧟RbyR߅yFSiy٘SyTyDUCxўUxVx[W|xɾXOx$Y+xĎZx[xm\x]x[^xڟ_1x]`UxaxobxcxeGx0fxПgxwibx"jӅxӟlLxmхxHo\x px՟rxt7w}uwZww@y_w+{'w|w~҅w}-A-A}VU[}-A-A}TWL}-A-A}S YD}-A-A}Q,[Cw|wzǞwyww@ͅwuwsݞwr8Lv+}Ԫffd ^2SeeUUtheindexforalistofmarkers7r-;Arcssaredrarwnfromaninitialangle(measuredfromthehorizontal(pSositive;x-axis)a.ininrtegerdegrees)counter-cloSckwisetoa nalanglewiththearc;cenrteredabSouttheorigin.4Iftheinitialangleisthesameasthe nalangle,;wregetafullcircle.8AsimplearcinvoScationmightloSoklike:L\special{tyl,arcm23,48,280};whicrh woulddrawanarcoflinethickness2,aradiusof3millimeters,from;aninitialangleof48degreesunrtilthe nalangleof280degreescentered;abSoutEtheorigin.IWVecouldspecifythatthearcistobecenrteredelsewhere;bryusingaspSecial@marker.8So,L\special{tyl,arcm23,@7,7;1010 Y};wrould^drawanarcofline-thickness2,z"radiusof3mmasbSefore,butcenrtered;at(7;7)fromtheorigin.Also,sincetheinitialand nalanglesarethesame;inthisexample(10),wrewouldgetafullcircle.8 z.TD C C C] C C C C] C C C C C]Gj sZ~{UH…;\m<w;\m<w;\m;\m<w;\m<w;\m;\m<w;\m;\m<w]+{;asexpSected.rqWVeusetheTmarkrertonotetheneedforatransformation,;andfollorwitby venumbSers.1The rsttwoareforscaling,0thenexttwofor;translation,anduthelast(here,60)isforourrotation.Ingeneral,theformat;forspSecifyingsometransformationonthecurrenrtly-speci edpoinrtsis:dHJdirec-;tion,HrespSectivrelyV,byWsomesigneddistanceaccordingtothecurrentunits;ofhmeffasurei@(mJfstillmeansmillimetersintheabSorveJfexample). hRffot$Di+...>\special{tyl,beginfigure}%35Somesub- gurffe>..._i%35ofotherprimitives>\special{tyl,endfigure}>...&\special{tyl,endfigure} 11 VĠr-L\endtyl;Wherep\... ʠ"meanspSossibleotherinrvocationspofprimitivreswith\special{tyl...};strings.=WVeſareabletousespacingandtabbingtonicelyindenrtour\special;strings,;sinceT UE!XconsidersallthatwhitespacetobSenon-existenrtwithin;the\begintyl{\endtylenrvironment.LWVe'llaeloSokatabasic gure,|andapplysometransformstopartsofit. For;thebasic gure,wrehave:Krt劊1X4_________________py~ LgA2gA2gA2gA2gA2gA2zN777x_______________pO8ȅOh|D a D!. ffͅ D!. ffͅ D!.E33ffE33ffzkT4D!K҅3ff334D!K҅3ff334D!K҅Y33Y33~wtOh|puvԅOh|_________________py~O88_________________py~pOu|+;Norw\let'sscaleasub- gurebyusingaT\etransformatthebeginfigurelevel;;i.e.,somethinglikre\special{tyl,beginfigureT6060000}:Kȍt劊1QEb_________py~vԟG`gA2gA2gA2Bǟ r`s7[nr}x}S_________jOu|RΟ, D!. ffͅ D!. ffͅ D!.E33ffE33ffzkT4D!K҅3ff334D!K҅3ff334D!K҅Y33Y33~wtOh|puvԅOh|_________________py~O88_________________py~pOu|+;WVeAcanrotate,Vandthenalsotranslatethatsamesub- gureandacrhieveAthe;nexttrwoexamples.8First,arotationabSoutthesub- gure'scenter:t劊1N$ą D!. D!.E33ffc33r9>{ #(Kҟ߅Kҟ߅Kҟ߅J-{-Aҿ{̟kA|.J`qџp D!. D!.c33sZ~rT1*KҟD!U33vr}9>}U u D!. ffͅ D!. ffͅ D!.E33ffE33ffzkT4D!K҅3ff334D!K҅3ff334D!K҅Y33Y33~wtOh|puvԅOh|_________________py~O88_________________py~pOu|+;andnorwalsotranslatedafter5Stherotation:t劊1F$ą D!. D!.E33ffc33r9>{ #(Kҟ߅Kҟ߅Kҟ߅J-{-Aҿ{̟kA|.J`qџp D!. D!.c33sZ~rT1*KҟD!U33vr}9>}Uu D!. ffͅ D!. ffͅ D!.E33ffE33ffzkT4D!K҅3ff334D!K҅3ff334D!K҅Y33Y33~wtOh|puvԅOh|_________________py~O88_________________py~pOu|+ 12 _r-FinallyV,`wreNcantakethewhole gure,`andpSerformascaleandathenarota-tiononit(wreevXaluatescaling rst,thenrotationsand nallytranslations):Y[t劊1$kI(|~(|~)dZSk͟vr}9>|<ą2221OY33l}VޟA ? ?O𨢟#v(|~(|~)dZjr}vhEsZ~r˟ڶ8p%78p%8p%[nr}x^N ~ht$ɟֹsZ~rܟD\MӅr9>{q7sZ~rpS~(|~(|~)dZSk͟vr}9>|an(|~(|~)dZSk͟vr}9>|  br}c+ 13rˠr-;2.3hCOthers:;WVe'll֩ nisho thissectionwithacouplemoreprimitivres:asimplespline;example,9Aand"theprimitivresforamusic-typSesettingprojectunderwayat;OhioEStateUnivrersity[7].TheE rstexampleisnotreallythatdi erenrtfrom;our rstsplineexample,exceptthatinthiscase,wrehavea\closed"spline:;oneZwhose rstconrtrol-pSointZwillcoincidewithitslastconrtrol-point.WVeZcan;trypSesomethingthatlookslikre:?;\special{tyl,splinem3bO8(10,9)(4,16)(8,23)lfh(11,21),(13,17)(20,16)(22,13)(19,8)}ߍ;TheOn(letter\Oh")markrerdenotesaclosedspline.+Thedefaultoptionisan;\opSen"Uspline,andcanbemarkredwithaU-insteadoftheOifyrouwishto;bSe{explicit.Thedi erenceisinthewray{thatTUEuXtylZmanipulatestheconrtrol;pSoinrts whendoingtheinterpSolation.#Inthisexample,;weusedaB-spline,;as;markredwithab,$andwelistedonly&}theuniquecoSordinatestogetthisnice;bSean-shape:Yk>ꨊ1G.T-\vr}9>}-A-A|B zU33vr}9>}VRQ'wZZ}.8-DžXQ'RwZZ}]xY33xtŸZ\-x~q\ǟfx]|.y__}-A-A~ҿҿ@?z瞍A|.JzBǟ zbr}bͅc33r9>{-Aҿz)ydc33sZ~{I`e͟ff{-Aҿ{G'LfL9t.P9BdT-\|Y[-jll}-A-A}FP3Y33wZZ}.(R9Y33wZZ~@}D4^Wj j wZZxi *U33k͟|f5?RfDžjr}vr}9>}[l,$<ƅ$&RfDži\>vr}9>|H  T-\jt\llws\ǟf}-A-A~[C*_yHA|.JasD\MӅbr}{2ׅGj dJs#KffȟjM𶞃҅|مN ~|_~JOu=P ?u|CMP ?vr}9>|˟ŅQ|.vr}9>|ͨDЅRfDžvr}9>|OSvr}9>|ÑɅ+`LTUEuXtylQprorvidesپthreetypSesofsplineinterpSolationwhichIٺalludedtoon;page*P6.TheCatmrull-Rombasisisprobablythemostintuitivelyusefulspline;for`Xusers.ItproSducesasmoothcurvrethatgoesthroughtheconrtrolpoinrts;(whicrhwecanmarkwithdots):M]~/Ɗ/9 apX꼅꼟 '  9-O8E33ffbr}{CA sZ~{=FQ'~Gj sZ~{)M𶞃҅g\t k͟j ΟXQ'Rx9>r}}-A-A}=՞EZ\-mͅxf Z\-nr}wZZxHtZ\-mͅx9>r}xSLBY33mͅxuWj j wZZwJiRfDž}-A-A|Bt N ~t2nKf{O,dIͅe͟fftr}…{UͅHRمdJsZ~tGj dJsZ~{-Aҿ{A힭FQ'~c33stNE33ffr9>{Xfbr}r9>{ mA҅[xHASRR"J ?u|&_ΟstyR\dJdJrη*?D\MӅc33z̟ԅC6br}rKfC6br}bL΅C6BSȟ:C6br}bLׅC6br}r9>{ 8D\MӅbr}{E33ffsZ~{-AҿzAUfFQ'~sZ~{BiLGj sZ~{0Gj sZ~{M|܅dJe͟ff{re͟ffsZ~sc@9.e͟ffsZ~{*dJ{+LThe_CardinalbasisisofthesamefamilyastheCatmrull-Rom.It,MtoSo,;inrterpSolatesMthroughthecontrolpSoints,andisincludedforconvenienceand;asanalternativretotheCatmull-Rom.8FVorexample: 14v r-4Ea/Ɗ/9 apX꼅꼟 '  9-O8c33r9>{-Aҿ{0YBꃅBǟ z*Bǟ z=br}r9>sb}e͟ffsZ~{^˅M0xمP ?ih\}?.]8\ǟfo>\x4\\ǟfnr}x"]Z\-nr}}FўDU33k͟}@2LQ|.i\>vr}9>uޞjO< NPg\u{-Aҿ|I2fu{fĒftr}…{Ore͟fftr}…{Eʖe͟ffsmȅdJsl c33s7mc33rk\br}sujbr}rY֟gZbr}r>ϟj2br}q$ٟsqa>{@Y{a>{(@?zo>\omͅx9>r}}Ijr}vr}9>}rTPRJ~N ~tџKg\{2w%J-e͟ffsZ~t,gׅe͟ffsZ~{-Aҿ{WȟxdJsZ~{ן^c33sc33z{ʟWbr}{4br}zA{NS\a>{NSmͅa>{-Aҿzgea>r.Qa>rNbr}q{9Ibbr}r9>r@bGC6{_rD\MӅrRLD\MӅsZ~{tXiE33ffrTc33c33{5Gc33sZ~{-Aҿ{c33shօdJ{kΟsZ~s7 QsZ~{ƟsZ~|tdgatg[tf.^ȅt_ktRtr}…{X?sZ~{5&sZ~{-Aҿ{+&TheB-splineisalittledi erenrtinthatthecurveapprffoximatesthecontrolpSoinrts.TUsingd$thesamecontrolpSointsastheabSoveexample,butusingtheB-splinebasis,wresee:Kra/Ɗ/9 apX꼅꼟 '  91O8Gj dJsZ~{b Iͅe͟ffswLfL9f|\QOi\>|lf틅jr}vr}9>|zjr}kŸ k͟jr}}IߞIWU33|t8T-\}m QuS}dNQRfDž}]/؅Q|.|Y.O|RmхM𶞃҅|Z馅LfL9{RNJ-|Sne͟ffsZ~t/dJsZ~{fcc33rxVbr}z{^!{jr}vr}9>vc/N ~u{-Aҿ|kJ-ftr}…{-Aҿ|ޟ dJe͟ff{NLdJc33{-Aҿ{E33ffsZ~{ s҅E33ffr9>{-Aҿ{4D\MӅsZ~rąD\MӅsZ~rD\MӅsZ~rxE33ffr9>rQsE33ffr9>{PKɅE33ffsZ~{ FQ'~r皟kFQ'~{-Aҿ{ZdJdJrηCNdJdJ{-Aҿ{we-dJdJ{η2;dJdJ{+&FVorҦthemostpart, yrouwillprobablywanttodrawcurvesthroughtheconrtrolpSointsthatyouspSecifyV,andsotheCatmull-Rombasisistheconve-nienrt%default.TheB-splinetypSeisprovidedforcompletenessforuserswhomighrthavedatausingthatbasis.&Therea arffeFtimeswhentheCatmrull-RomorCardinalbasesgive akeycurvres andtheB-splinebasisisnotappropriateeither. TUEuXtylprovidesafourthtrypSeofsplineforthesesituations:%paninterpSolatingB-splinecurve.+Ithas ItheadvXanrtagesofCatmull-Rom'sinterpSolation,randthespecial exibil-itiesLoftheB-spline,djbutiscomputationallymoreexpSensivre.]See[14 ]or[3]for$zacompleteexplanation.HereisanexampleusingthesameconrtrolpSointsastheabSorveexamples,butusingtheinrterpolatingB-spline:a/Ɗ/9 apX꼅꼟 '  91O8C6br}zy…C6bC6sZ~z3Þ:D\MӅ{-Aҿ{9!dJsZ~rkpqwfsZ~|A|huYjr}v۞kmͅl}JKcZ\-n[mͅxF [mͅx9>r}~/_مZ\-mͅx9>r}~0מ_Y33mͅwzzVRQ'l}M۞5Su}-A-A}R+;Oh QLfL9g\|^kJ-ft2HRمe͟ffsZ~|aԞƤGj c33sZ~{Z[8E33ffc33rqUC6br}{DvA|.Jr9>z G_E_~"V=nr}x9>r}~Ҹm…k͟wZZ}e]i\>jgO|}wN ~tzFPLfL9tbąIͅtr}…{z\Gj sZ~sJoE33ffbr}{/C6c33r_څC6br}r9>zݟƅBǟ br}r9>{"CBǟ br}r9>z! C6a>rO۟C6br}{GfD\MӅb5DE33ffr9>{nFQ'~sжO߅dJdJ{-Aҿ{}2e͟ffdJ{ve͟ffe͟ff{kS!e͟ffe͟ff|h+e͟fff{+&FVorqtheMusiCopyGproject,ӌwrehavetheabilitytodrawtiesandslurs|theElongarcsconnectinggroupsofnotes. JFVorthemostpart,IEassumethatPthereisaprogramthatisgoingtotakrecareofthedetailsofknowingwherethesegraphicelemenrtsaretobSeplaced,andwillproducethecorrect\specialpstringforinclusioninthe.tex le,|butImwillgivreanexampleforcompleteness. 15r-LThisHgracefularcisproSducedbryspecifyingaminimrumand Fmaximum;thicrkness,andthe vecontrolpSointsfortheshapSe.u$󍍍>ꨊ-9br}q,ٟ\SBǟ z D\MӅr9>{:[HRمe͟ff{-Aҿ{FA€KIKt10LfL9tr}…{.jĞLfL9f6lLfL9g\{5ILfL9g\|4\eM𶞃҅f|[>M𶞃҅g(iM𶞃҅g\|@i N ~g\|k$݌N ~g\uwN ~g\u5p N ~h|6l N ~h.;Ou|1m8Ou-%yP.cW~i\>vr}9>v%jr}vr}9>|['!ׅjr}w)vk͟}-A-A|Mݞ'ok͟}L,E wZZvɞ_&vr}9>}+;ThecallloSokredlike:L\special{tyltieslurm285(5,10)(7,13);[15,16];(24,17);;28,15,};where2and8aretheminandmaxthicrknessesattheendpSointsandthe;middle,rrespSectivrelyV.TheTfollowing5isforthenumbSerofcontrolpSoints,rand;the vrepairsofintegersfollowingthatarethecoSordinatesofthepoinrts.WVe;useaspSecialwrayofproducingasmoothandgradualthintothicrktothin;line-thicrkness,butwilldiscussitinalaterchapter.LThelastexampleisthemostspSecializedforthemrusicproject:beams.;WVe'll;justloSokatanexampleofhorwtheyarecalledandappear,O5andlearve;thedetailsforthenextcrhapter.X >ꨊ;ThebasicorderoftheparametersloSokssomethinglikre:L\special{tyl,beamm0g3,10;11,7};wheren?0(zero)isthe\sta -size,"%gindicatesabSeamsizefor\grace"notes;(roisthedefaultfor\regular"sizednotes),4aandthelasttrwoopairsarethe;coSordinatesoftheline-segmenrtthatthebeamistobecenrteredover. 16)r-FIChapter 32User-Lev4el Details6FVrom%theuser'spSoinrtofviewusingT UE!X,commandsthatTUEuXtylcinter-pretsjwillloSoklikretheword\tyl",followedbythenameofthegraphictoh/trypSeset,thenalistofparametersallenclosedwithinthecurlybracesofa,6\special{...}Xcommand.This,6useofa\specialcouldbSeproducedbrysomePotherprogram(agraphiceditor,uforexample),andthetextstringsmerelyinsertedinrtothe.textext- le.&As0Xfarastheuserisconcerned,AheispastinginapictureatthecurrenrtpSositiononthepagewhereheinrvokesthe\special.3YTheusershouldthinkof=thispictureasbSeingaborxjustbigenoughtocontainallthelinesofhisgraphicimage,andwhose rst-quadranrtcartesianoriginisthereferencepSointthattwillbSeplacedatthecurrenrtpositiononthepage.Thrus,hemightwantto}makresurethatthereisenoughblankspacearoundthecurrentpSositiononUthepagetoconrtaintheimagebSeforehetriesto\pasteitin." ySpacecanbSecreatedbryusingT UE!X's\hskipor\vskip,xorL"s3Ja^T EX's\hspaceand\vspacecommands,(orhopingforthebSestwithL"s3Ja^T E!X'sfigureenrvironmentsurroundingthebSorxcreatedby\begintyland\endtyl.&ThekindsofgraphicprimitivresthatTUEuXtyl7XknowshowtotypSesetareuniform-thicrknessplinesegments,Huniform-thicknesssplines,Huniform-thicknessarcs,TvXariable-thicrkness~splines,music~bSeams,andmrusicties/slurs.Lineseg-menrts:baremerelyasubsetofsplines,]andsovXariable-thicknesslinesareavXail-ablebryspSecifyingasplineofjusttwocontrolpSointswithathicknessatoneendpSoinrt,andanotherthicknessattheotherendpSoint.)Thefeaturehereisto harveseveralprimitivesavXailable,andallowforothergraphicelementstobSebuiltusingthem. 17 r-LWVe'llH;loSokatthebasicsynrtaxfortheprimitives,_andthendiscusswhat;eacrharcsincescalingandrotationaltransformationsareabSoutthecffenteroftheprimitivre.&H\special{tylWlabelP[hmeffasureiH, S]T*hfacffeitH,xH, 9yn9H,"hstring i,MH"}placesasimplelabSelat(x;yn9)usingafonrtstyleofmhfacffei(8(currentlyselectablebry^aninteger:! e.g.,{1isamtt10. Seepage37forabSetterlist). ?hString i9=isasimplesequenceoflettersandspacesconrtainedwithinmatchingdoublequotes<(H")..Here,Q3thecaseofthelettersofYhstring i4istakrenverbatim,Q3anditisnotinrterpreted;K~T UE!XեmacrosortypSesettingcommandsarenotusablehere.8IfyrouwanttotypSesetfancierlabels,TUEuXtyl);istoolateinthegame.&TheroptionalparameterhmeffasureiBFisanryofHS,HP,orHM&denotingthatthe inrtegerpSoints,likex̸1;r*KҟD!*KҟD!+33ff*KҟD!*KҟD!*KҟD!*KҟD!+33ffT-\w.ۗU;\m<w;\m;\m<w;\m;\m;\m<wo>\x9>r}~- zpUۅgA2pUۅgA2pUۅgA2pUۅgA2pUۅpUۅgA2pUۅgA2pUۅgA2pUۅBǟ br}r+OJhVeffctorJi{referstothetypffe0ofvrectortouse,vnamelyHCLforvectorsthat;loSokasiftheyaredrarwnwithacirffcular,\pen,"HHforahorizontal pen,and;HVforverticffalpSenappearance.!Acircularpenvrector-typeisthedefault.!See;alsosection5.1forexamplesandabSetterdescription.OJhStyleiw,is theline-stryletousewhendrawing.1CurrentlyV,9TUEuXtylL.isableto;prorvidesolid(style0),dotted(style1),dashed(2),anddot-dashed(3)line-;stryles. EThesolidline-styleisthedefault."Herearesomesimpleexamplesof;thestryles:X >ꨊ-W泟gąr9>zQ~nBǟ r9>qQ@pTQ}nBǟ r9>qQApTQ}nBǟ r9>qQ@pTQ}nBǟ r9>qQApTQ}nBǟ r9>qQ@pTcr9>zzv&1vr}9>}1}AfU33vr}9>}AfU33vr}9>}AfU33vr}9>}AgU33vr}9>}Afvr}9>}E***********ۂ/9хpUۅgA2pUۅgA2pUۅgA2pUۅgA2pUۅpUۅgA2pUۅgA2pUۅgA2pUۅBǟ br}r+OJhS-typffei~is:/thekindofspline-basistousewheninrterpSolatingthespline;throughztheconrtrolpSoints.WCurrentlyV,,HBmindicatesthebfe -splinebasis(which;inrterpSolates}asplinewithintheconvexhullofthecontrolpSoints),@HI7indi-;catesanifeC@nrterpSolatingB-spline(goesthroughthepoinrtsspeci ed),HDforthe;Cardinalbasis,d7andHKgwhicrhindicatestheCatmull-Rombasis(whichalso;inrterpSolatesasplinethrffoughthecontrolpSoints).aTheCatmullbasisisthe;defaultsplinetrypSeinthecurrentimplementation.OJhClosurffeiisusedtoindicatewhetherthesplineisaclosedcurvre(the;endpSoinrtsoverlap),eoranopSencurve(thedefault).{rWVeusetheiconography;ofHOforaclosedcurvre,andHUforanopSen-endedcurve. 20̧r-&Norw4wecometodescribSewhatߊhtrffansformiI]isallabout.TUEuXtylsuallorwsthe+usertomoSdifythecoordinatesoftheconrtrolpoinrtswithouthavingtore-calculatetheirnewpSositionsbryhimself.]ItriedtomakethespSeci cationandmoSdi cationofTUEuXtyl'sֶprimitivresaspainlessandintuitiveaspSossible.2WVeusuallyDZthinkmoreintermsofconnectingdotsandplacinggraphicelemenrts,andDnotintermsofslopSes,[ltangenrtsandveloSciteswhicharemessyatbSest,andgetmorecumrbSersomefromthere.&Geometric0transformslikrescaling(indepSendentlyintheX"candYPdirec-tions),#rotatingabSoutthe\cenrter"ofthegraphicobject(aprimitiveora gure),"andf=translatingintheXWandYdirectionsarearvXailableformostof"theprimitivres. 5MTheformatforspSecifyingsometransformationonthecurrenrtly-spSeci edpointsis:>HT, 9hSxqi#mH,-:lhSy iEH,P$hTxqijRH,tQhTy icH,bhRffot$DivH,wherehTxqi"nandhTy i!DareEtranslationsoftheobjectintheXandYxdirectionbryPsomesigneddistanceaccordingtothecurrentunitsof^hmeffasurei;v}.7hRffot$Diisahasignedinrtegerangle(indegrees)bywhichtorotatetheprimitiveor gure\*counrter-cloSckwiseabSoutitscenter. 8 hSxqi&ZandhSy i$areinteffgerscaleparameters`represenrtingthe offating-pointvXalues`ofthetransformmultipliedbry٢100andtruncated.TVoobtainanytransform,=all5thetransformparametersmrustbSespeci ed.&Twro otherspSecialtypSesofgraphicscapabilitiesaremeanttobSeutilizedbrylkaknowledgeableprogram,suchasthemusic-typSesettingsystembeingwrittenattheOhioStateUnivrersityV.8Theseare:@&H\special{tylWtieslurP[hmeffasureiH, S]T*hminthickJiuޟH,hmaxthickJiќğH,thnumptsiViH,x̸1H,y̸1H,...!oIH,+Hx̸nÎumpts,/H,(f.y̸nÎumpts,1H}whicrhdrawsasmoSothsplinecurvethroughthepSoints( 8cx̹id;UPy̹i)),՝andusesabuilt-inalgorithmto gureoutthecorrectthicrknessesofthetie/slurbSetweenhminthickJiT&andlhmaxthickJi@Y.+lTheseKconrtrolpSointsarealsoin rstquadrantcartesianhcoSordinates,andacircular-penvrector-typehisusedtodrarwthespline.&H\special{tylWbeamP[hmeffasureiH, S]T*hsta sizeiwJH,I[hbffeamtypeiH, S]Sx̸1H,y̸1H,x̸2H,y̸2H}drarwsEamusicbSeamfrom(x̸1;UPy̸1)0.to(x̸2;UPy̸2)(alsoin rstquadranrtspace)using&QabSeamofhbffeamtypeiBHG&foragrfface-note&Qsizedbeam,MorHR&(thedefault)for|7rffegularsizedbSeamsinthespeci edsta -size.FVoradescriptionofsta sizes,see[12 ]. 21ɠr-LFinallyV,therearetrwomore\specialsthatTUEuXtyltextyl!YThis,isTeXtyl,version...'gDVI-input,FileName:myfile.dvi'gDVI-output,FileName:!Y(different,thaninputname)[defaultofmyfile.tyl]'g[1],[?2]!YOutput,writtenonmyfile.tyl!YLog,writtenonmyfile.tlog!YSome,error(s)occurred.PleasecheckLogfilefordetails.!YAssume,thattheoutputfileisincorrect&Ratherthanannoryyouattheterminalwithlongerrormessages,ؕTUEuXtylputsKa?marktoindicatethatsomeerrorhappSened.Sinceitwrotethe.tyloutputxV le,3TUEuXtylmrusthaverecoveredwellenoughto nishitsjob,3buttheoutputprobablydoSesnotlookrighrt.8The.tlog lemightloSoklike 23r-;This,isTeXtyl,Versionblah...;Reading,File:myfile.dviA,[1],[;Error,infig#1onpage2;Arc,Thicknessnotfound.Settingto1;2];Output,writtenonmyfile.tyl;Log,writtenonmyfile.tlog;whicrh'wasjustamissingparametertothe\special{tyliarc...}string.;YVouIwillharveItore-editthe leandinsertthecorrectthicrkness.BAlltheerror;messagesQthatarewrittentothe.tlog letrytopindorwntheerrortothe; gurenrumbSerontheerror-containingpage.ThesereferencestothepSosition;oftheerrorcomefromthen2th gureonthepage(thencounrtisrelativeto;eacrhpage,landstartsfrom1),andthepagenrumbSerisfromT UE!X's\count0;register̕thatenrumeratespages..SometimesTUEuXtyl (cannotalwaysdetermine;thePexact gureonthepage(e.g.,obifwreforgettoclosea gurede nitionwith;an?endfigure),"eandsoestimatesatleastthebadpageinquestion.FVorthe;mostpart,theerrorisajustmissingparameter,orabadparametertoa;\specialstringbSeingreadbryTUEuXtyl.LHorwever,therearealargernrumbSeroferrorsthatTUEuXtylfound\surpris-;ing"ܨandnTsomarkstheseerrorsonyrourscreenas?!|d.oMostoftheseinternal;errorsarebasedonthefunctionalitryofDVItypSeconcerningTFMinforma-;tion,zandthestructureandcommandsoftheDVI lebSeingread. ?TUEuXtyl,;likreDVItypSe,willcomplain,andpossiblyrollorveranddiegracefullyV. 24Rr-&Theother\surprising"errorsthatTUEuXtylmighrtcomplainabSoutarereallyinrternal%toTUEuXtyl,Landconstituteabug,orjustacompile-timeconstanrtthatistoSosmall.8Theseeasily- xedsurprisesare&2_tooi}manydvistrings. ThisapagerequiredmoreDVI`brytesthanusual.2_HarveyourloScalmaintainerincreasethesizeoftheinternalbu erused2_forstoringapage'sDVIbrytes.&2_tooymanysplinesegmentsrequired.Thesplineyroutriedtoset2_mighrtt0bSetoolarge/longforthespaceallocatedforaspline'sdescrip-2_tion.)4Thatsizeisalsoacompile-timeconstanrt.TUEuXtyl7willreducethe2_nrumbSer}ofconrtrolpoinrtsthatitinterpSolatessothatyoucanatleast2_gettheoutput,andsothatitdoSesnotdieungracefullyV.&2_figure^definitionnotclosedatendofpage. eYVouNforgota2_\special{tylDendfigure}commandinsome gurede nitiononthe2_page.(TUEuXtyl{willnottrypSesetthat gure,8andwillgoontothenext2_page. 25r-LTherearealsosomedorwn-deeperrorsthatcouldpSotentially(although;doubtfully)$bshorwup.TheseareprobablysomeerrorinthevectorfontsbSeing;referencedbryTUEuXtyl.LX_minradiusofvectorfontiszero.2 The=referencedvrectorfont'sX_TFMinformationrepSortedthatthefonrt'sradiussizeissmallerthanX_it=wrasdesignedtobSe. 0=TUEuXtyl{willmakeatempSorary xsothatitX_canconrtinue,94buttheoutput gurewillbSewrong. 1HavetheloScalX_mainrtainerre-checkthevectorfonts.LX_baddydx._Thisisarareproblem.Somewhere,:thecoSdetotrypesetX_adiagonallinesegmenrtreferencedanimpSossibledyn9=dxcombination,X_and2Lcannot ndanryvectorcharacterto t.TUEuXtylpwillcontinue,D5butX_yroumayseeatinyglitchinyour gure.LX_dx;istoobig/small,dyistoobig/small.This}isaproblem.FVorX_some5reason,HadistancewrasreferencedthatisoutoftherangeoftheX_32-bitrepresenrtationofintegers.8ThisreallyshouldneverhappSen.LFVor\themostpart,xTUEuXtylcanrecorver\fromerrorsthatitencounrters,and;givrefabriefsummaryinthe.tlog le.9OthererrorshavetodowithTFM; leinformation,KandareoutsidethescopSeofTUEuXtylC*tohandlegracefullyV.;TheBmostserious\surprise"errorsarebugs,andyroushouldrepSortthem;directlytomewithacopryofthe.tex le,oratleastadetailedprintout;fromDVItrypSeofthe.dvi leprocessedbryTUEuXtyl. 26Ar-F–IChapter 52–Design Details7BTheFtop-levrelofTUEuXtyl4istakendirectlyfromtheDVItypSe[5]program,-withamfewmoSdi cations.(MostofthediagnosticfunctionalitryofDVItypSeismain-tained,but"withouttheuserinrterface(TUEuXtyl׵assumesitissuppSosedtoproScess allthepages).A\hook"wrasinsertedintotheprogramtohandlethe4T UE!X4\specialsthatTUEuXtylsunderstands(hereafter,G\spSecial"willreferonlytothosecommandsthatTUEuXtylE"understands|other\specialsareig-nored,j andIsimplyoutputtotheDVII lewithoutmoSdi cation).RTheDVItrypSecoSdewrasusedmostlyforitskeepingtrackofthecurrentDVIhandvpSositioncoSordinatesonapage,andhandlingTFMinformation.B&BasicallyV,aszTUEuXtyl slurpsinaDVIa le,itproScesses\normal"commandsinanormalwray(i.e.,8justkreepingtrackofpSositionsandcounters)."1WhenitreadsTa\specialstring,ittriestoinrterprettheparametersandexpandthespSecial,KproducingcommandstotrypSesetthegraphicusingcharactersfromspSecialfonrts.&Thej[resultisatransformedDVIi lethatnorwcontains\normal"(i.e.,non-spSecial,`put-that-crharacter-there')dvi-commandsasfarasTUEuXtylŃcantell,pafterUtakingcareofnewfonrtde nitionsanddoinganybSookkeepingUofcounrtersandinternalreferences.,H5.1BCVXectorsʍSevreraldesigndecisionsweremadetogiveTUEuXtyl&+theabilitytotypSesetthegraphicsaofthecomplexitrythatwedesire.(sThisabilityisintrinsicallybSound 27r-;to0thefonrtstobSeused,E{andthewaythatweusethem. FVorthisproject,E{Ihad;tomcreateafonrtofshort,borientedlinesegments.Thiswastominimizethe;amounrt ofinformationrequiredtotypSesetacurve.Onecouldaddresseach;pixelofthevirtualdevicetodrarwthegraphic(puttinghundredsofpSeriods;fromafonrt),>butthatisnotdevice-indepSendent,>andtheamountofdata;is>hrugeincomparisontousinglinesegments.TheselinesegmentscanbSe;connectedS&togetherrathersmoSothlytogivretheappearanceofaconrtinuous;linesegmenrtorcurve.LUsingthisscrheme,KdescribSedbyNelsonandSaxeatCarnegie-Mellon;Univrersity[11 ],kIamabletotrypSesetthecorrectcharactercorrespSondingto;the'desiredlengthandangle.I&moSdi edtheirfonrtthoseanglescoverthe rst;andufourthcartesianquadranrtsystem,z2F\\\\q+ &Beams+&AsimilarscrhemeisusedforthebSeamcharactersfoundwithinthemusicfonrts.The'bSeamcharactersareintwotypSes(thoseforgracenotes,Nandthoseforregularnotes)forthesta sizesofmrusic(numbSered0downto8).Seealso[12 ].)9Thefonrtisalsoasetofshortline-segmentsthatwillbSeconnectedtoj`createabSeam(someotherprogramwillharvej`toknorwaboutthedetailsofdescribing horwtoattachstemsfromthebSeamsdowntothenotes).However,the~bSeamcrharactersaredi erentfromthevectorfontsinthateachsta sizeofmrusichasoneparticularsizeofbSeamcharactersassoSciatedwithit.&ThebSeamsaredesignedtoappearasiftheyaredrarwnwitha at-edgedpSenSheldperpendiculartoaruler(atallorienrtations). WhenaverticalpSenDisdrarwnalongapath,ttheactualcrosssectionaldistanceofthelinesegmenrt=decreaseswiththeangle(i.e.,itisthickestwhendrawnalongalineatzerodegreesfromthehorizonrtal,andthinnestasitisdrawnalongalineapproacrhinge90degrees).tThewaytomaintaintheappSearanceofconsistentthicrknessڇofthelinesegmentsatalldrawnanglesistoactuallyincrffease7the\heighrt"oftheverticalpSenasafunctionoftheanglefromthehorizontal.This_functionwrasgeometricallyderivedtobSetheseffcantأof_theangle,;whichyieldedoinascalingfactortoapplytotheoriginalde nitionofthevrertical 29%tr-;pSen'sheighrt. 荑LAnotherOdi erencefromthevrectorfontsisthatthebSeamcharactersdo;not*harvetocoveraslargeaangularrange.aTheanglesfromthehorizontalare;lessJthan45degreesonthearverage, randJthelengthsofthebSeamcrharacters;arenosmallerthanthewidthofaquarternoteforthatsta size. The;currenrtimplementationde nesthebSeamcharactersinfourgroupspSersta ;size:=regularQcbSeamsinlengthsof1.0and1.5quarter-note-lengths,p andgrace-;notebSeamsinlengthsof0.5and0.66grace-note-lengths.LThescrhemeoftypSesettingissimilartothatofthevectors,butanadded;constrainrt~Sisresolved.SincethebSeamcharactersuseaslightlysmallersetof; xedީanglesfromthehorizonrtal,weީhavetochoSosethebestbeamcrharacter;toUusesucrhthatweusethemaximumlengthbSeamcharacterandgtryto;obtainY theleastdeviationfromtheanglerequestedto tthebSeamfonrt.VThe;dimensions[ofthesebSeamcrharactersarecomputedonlyaseachmusicfontis;required,: and acacrhingschemeismaintainedtoavoidunnecessaryre-loading;offonrtinformationandsubsequentde nitionintheDVI le.+g;5.2hCSplinesz;AseconddecisionthatImadeforthecurrenrtimplementationofthissystem;wrasYtouseCatmull-Rom[4]splinesasthedefaultinsteadofB-splines.The;reasonsforthisaretrwo-fold:(1)Catmull-Romsplinesareofthesamefam-;ilyo,asB-splines,Mbutareguarffanteedo,toproSduceasmoothcurvrethrffoughthe;conrtrolOpSoints,H9whereasB-splinesonlyapproximatewithintheconvex-hull;describSed9brythecontrolpSoints.&~Therefore,MCatmull-Romsplinesareatrue;inrterpSolant;and8B(2)whendealingwiththetiesandslurs,theuserwrants;the curvretogothroughthe vepSointsthathespSeci es(left,Gmiddleand;righrtpSoints).]WithB-splines,hewouldhavetoestimatethepSositionofthe;middleconrtrolpSointsinordertogetthecurvetobSeinthecorrectposition.;Catmrull-RomŞandCardinalsplinesarejustaseasytocalculate,andusually;acrhievethee ectsthatwreneed.LI˵harve1alsoexpSerimenrtedwithoperationsontheB-splinestoacrhieve;true"inrterpSolation.ThismethodwrasdescribedbryBarskyandGreenbSerg[3];describingohorwtore-computeB-splinecontrol-pSointssothattheresulting;spline wrouldinterpSolatethroughdesiredpoinrts(inverseinterpSolation).OIt;actuallykdoSesnotrequirevreryhairymathematics.Arcsandcirclesareim- 302r-plemenrted7lusingthissplineprimitive.+Thearccontrol-pSointsarecomputed(or6pre-computedinthecaseofcircles,andellipseswhicrharejustscaledcircles)andthenareusedintheinrversionproSceduresothattheresultingB-splineMpassessmoSothlythrffough3vthoseoriginalpoinrts. b;WVewilllaterde-scribSeJVfurtherthisusefulnessofimplemenrtingvXariousgraphicobjectsusinglorwer-levelprimitives.&IalsousetheCatmrull-RominterpSolationwhencomputingthedi er-enrtLmthicknessesalongbSoththetie/slursandthevXariable-thicknesssplines(\ttsplines").tIGneedtoinrterpSolatefromthecurrentcontrol-pSoint'sthick-nessFalongthecurvretothenextcontrol-pSoint'sthickness,andcandothissmoSothly YbryusingtheinterpSolationmethodsarvXailablewhencomputingthesplinesanrywayV.&Since+wrehavetheabilitytodrawsplinesofvXaryingthickness,|Hwecaneasilyuimplemenrttiesandslurs(thoselongarcsconnectinggroupsofnotesonamrusicalscore),2sincetheyaresplinesofusually vecontrolpSoints,harvingthespSeci edminthickԉthicknessattheleftandright,andmaxthickthicrknessinthemiddle. 31 ?Gr- 32!EVr-FIChapter 62The Implemen4tation>6.1BCOvrerviewTUEuXtylisacurrenrtlynearly9000linesofPascalcoSde(notWEB).Itisaproto-trypSe,Iand!>notaproduct.TVestingwrassimpli edbytheabilitytopre-viewtheconrtents6oftheDVI6 leonSunwrorkstationsusingtheDVISUN6[8]program.ItwraswrittenusingBerkeleyUnix21 Pascal,<5butisnotdepSendentonthatopSerating6systemexceptfordi erencesinI/O.Therearealsodi erencesineciency/easeWofreadingfrom les|readsvrersusgets. I/OWroutinesforbSothbrytetypSes(signedandunsigned)arewrittenandavXailable,uandhavebSeensetupforeasyportingtoothermacrhines.&TheȼideaforhandlingDVIȳ lesistoreadeacrhbyteintoabu eruntilwereadaneop(end-of-pagemarkrer),whenwewillwritethatbu eroutintoa le,andstartafreshbu erwiththenextpage.(BIfwreencountera\specialin+ourreading,|8wretreatitasa Wmacro-expansion|substitutingourbyte-string4;forthebryte-stringthatrepresentedtheinvokedspSecial,Fandputthis\tryled"zstringintothebu erforsubsequentoutput.AzxnicefeatureofthisslurpingistheparserforthespSecials.ϷItissimpleandextensibleenoughtoAeasilyaccommoSdatenewTUEuXtyl primitivres,Fanddi erentoradditionalparameters.&Besides^0bSeingcarefulabouttheexpansionofthe\specialstring,zHTUEuXtylhas_tokreeptrackofanynewly-de nedfontsforinsertionintothepostamblein3theDVI le,anddosomebSookkreeping3forbopbackpSointers,and lebyte- !ffd ^1UnixUUisatrademarkofBellLabGoratories 33"Er-;length.LMostpofthiscrhapterdiscussesthealgorithmsanddata-structuresofTUEuXtyl;atyyvXariouslevrels.&WVe'llstartwiththehigh-levelanduserconcepts,andwork;our]?wraydownintothedetailsofoutputtingtheactualbytesintothe.dvi; le.(V;6.2hCPrimitivresb#;Theuser'sinrterfacetoTUEuXtyl-Wisthrough.textext les.E5HetypSesinthe;\specialp)stringsforT UE!X,and llsinthenameoftheprimitivretotypSeset;andanryparameterstomoSdifytheattributesoftheprimitive.!This.tex le;is-conrvertedbyT UE!X-intoa.dvi lewhichisthengiventoTUEuXtyl.FVorthe;most~part,TallofthegraphicprimitivresinTUEuXtylRhavecommonattributesofLX_bSounding-borx,LX_linethicrkness,LX_pSen-trype(seesection5.1),LX_linestryle;that^describSebasicappearancesofanitem.AI\bounding-borx"describesthe;minimrumahandmaximumXRandYvXaluesofaminimum-sizedorthogonal;rectanglevthatenclosestheprimitivre.!I'lldescribSetheprimitivesandpSoint;outWtheiradditionalormoSdi edattributestothoseaborve.MyWplanwrasto;prorvides9anumbSerofprimitivesthatwereconceptuallybuiltupSonlower-level;primitivres,/\andsharesimilarrepresentationswhereverpSossible.FVorexample,;a"tieslurisclearlybuiltupSontherepresenrtationofasplineprimitive.horwto\handle"thedatapassedtoit.gWVe'lltalkmoreabSouttheinternal;represenrtationinthenextsection.TLThezhandlers'primaryrespSonsibilitryistotakecareofprimitive-levelge-;ometriczitransformations,Yandthentodecidewhattodowiththedata,de-;pSendingOontheconrtextoftheprimitivebSeingdealtwith.CThiscontextis;determinedlbrywhethertheprimitiveiscontainedina gure,]orisbyitself.;Ifgtheprimitivreisnotcontainedina gure(i.e.,the\specialstringwasnot;withinabeginfigure{endfigurepair),thehandlerǢI\h1.X_computesthebSoundingborxfortheprimitive,I\h2.X_transformsthecoSordinatesoftheprimitivreintoDVI-space,I\h3.X_o setsthembrythecurrentpSositiononthepage,I\h4.X_outputsaDVIpushcommand,I\h5.X_callsanappropriateproSceduretoactuallytrypesettheprimitivre,I\h6.X_and nisheswithapopcommand. 38'{r-WVe.needtotransformcoSordinatesfromour rst-quadranrtcartesianspaceinrto'DVI-spacebSecausethelower-levelproSceduresthatactuallytypSesetandoutputRthevrectorcharactersassumethattheyareputtingthecharactersonrtoapageoftheDVI le.W&Iftheprimitivre'sde nitionispartofanenclosing gurede nition,)DwedelaryBoutputofthisprimitiveuntilthe gureiscompletelyde ned. @ThehandlerdoSesanrysimplegeometrictransformationsrequired,$sandthensimplypacrks thedataintoanotherstructure,I?andsortof\stacks"thisnewstructure(let'sDcallitanitem)onrtoalistofitemsthatarecontainedinthis gure.Ourreferenceto\ gure"herecouldalsobSeasub- gurewithinanenclosing gure,<'butfornorwwe'lljustdealwithprimitivesintermsofsimple,<'one-level gures.-WhenUthe gurede nitioniscomplete,sathefigurehandleproScedureiscalled.WVewillgetinrto guresmoreinthenextsection,butfornow,we'llsarythatthishandler#\h1.2_computesxthebSoundingborxofallthesub-itemsofthis gure, taking2_careofnecessarytransformations,#\h2.2_outputsapushcommand,#\h3.2_unpacrkseachsub-item,andtransformsitscoSordinatesintoDVI-space,#\h4.2_callsTtheitem'sparticularprimitivrehandlerwithaspSecial agthat2_sarysCtosimplycalltheappropriateproScedureforimmediatetypSesetting2_withoutdoinganryfurthertransforms,#\h5.2_and nisheswithoutputtingapopcommandtotheDVI le.The9designofthesehandlerswrastomaintaintheideaof\information-hiding"sucrhthateachhandler(primitive-or gure-level)wouldknowonlyabSoutonelevrelofabstractionbSelowit.(č6.4BCFiguresLet's1loSokmorecloselyatwhatwrecalled\items"intheprevioussection,and{horwwereallyrepresent gures.SZUptothispSoint,5I7havebSeenratheramrbiguous$Owhenreferringto\primitives."Insomecases,2itmeantgrffaphic-primitivesU(likreXlinesandsplines);inothercasesitmeantthe thingsthat 39(r-;weOcffanmakepictureswith(likre gures,sub- gures,andgraphic-primitivres).;WVell,Nnorwwtheambiguitygetsworse.%I'lltrytobSecarefulaboutdistinguishing;\graphic-primitivres"whenIkmeanprimitivesthatarereducibletovector;crharacters,[?and7duse\primitives"whenI77meangraphic-primitivesandu gures.;Thereasonforthedi erenceisthatsincewrehavetheabilitytodorecursive;sub- gure:de nitions,Na\ gure"(asdenotedbryabeginfigure{endfigure;pair) bSecomesabuildingblocrk(justlikegraphic-primitives)forthatenclosing; gure's\Hde nition.Itisanalagoustotheprogramminglanguageconceptof=hbloffckJibP,where(inBNFnotation)ƍA,
,::=/A,,::=/,/g%;whereGhprimitiveiB+vispwhatwrepreviouslyreferredtoasan\item,"hbffegin gurei;isߪdenotedbry\special{tyl4beginfigure},andRhend gurffeiDisdenotedby;\special{tyl endfigure}.Referbacrktopage11foranexampleofsub-; gures.㍑;ItemsLThe\item"datastructureconrtainstheattributesforgraphic-primitives,;asoutlinedinsection6.2,andalsoconrtainsattributesfora gurelike:$LX_anry gure-leveltransformationparameters,LX_a\name,"LX_andthelistofitemsconrtainedinthis gure.;As'yroumaysurmise,wFthiscanyieldalinked-listoflinked-listswhenbuilt;tozrepresenrtacomplexnested gure. ?VInourpreviousdiscussionofhan-;dlers,_onemoSdeoftheiroperationwrasto\packandstack"thedatainto;anitem.Prackingiseasyenoughtounderstand,butputtingthisstructure;inthecorrectplaceistricrkyV.Whenanitemiscreatedand lledwiththe;appropriateӰparametersinagraphic-primitivre'shandler,Hthereisanotionof;\conrtext"nwhichreferstothedepthofrecursionofsub- gures.Andepthof;0 meansthatthereisnohigher-levrel gure,T adepthof1meansthatany;primitivres}nencounteredwillbSelongtoanoutermostlevel gure, etc.3When;TUEuXtyl0$comesacrossabeginfigurespSecialstring,Kitcrhangestherecursive-;de nitionconrtext,#andnamesthat gurewiththatdepthnumbSer.ϩAfterthat, 40)r-anry3fgraphic-primitivesthatareencounteredbSelongtothatnamed gureinthaticonrtext.AnendfigurespSecialwilldecrementthedepthofrecursion,andthruswillchangecontextbacktothepreviouscontext.ԚIfthisnewcon-texthasadepthof0,thenwreknowwehaveclosedtheoutermostlevelof gurede nition,andthruswearereadytotypSesettheentire gure.&Let'sloSokathorwitemsareinsertedontoourdatastructuresothatconrtext?ismaintained.7TUEuXtyl~8usesaproScedurecalledpushItemthattakesan !itemandputsitonthecorrectlist(orsub-list)accordingtothecurrenrt gure4 conrtext.RoughlyV,Fathealgorithmisasimpleinsert,basedonakreyofdepth-name.1sStartfromthefronrtofthelistofthis gure1swhilethelistisnotemptryP" LoSokattheitemm6ifitisa gureofthecurrenrtcontext*thenwrearedonesearching.8doaninsertm6otherwisetherffe35mustbeasub- gureloweronthelist*loSokforthenextitemonthelistthatisa gure*andstartthenextsearcrhfromitslistIreallyasimpli edtheexplanationoftheinsertionscrhemehere, cmmi10dxandabs(dy[)areintegerpGowersof2bGetween0and16inclusive. 43,r-;lieAabSouttrwoAofthecrharactersbypretendingthatthetwolongestvertical;vrectors|donotexist,buteachistobSereplacedbytwo8vectorsofhalfthat;length.##LOncewrehavedeterminedthevectorcharacter,allwehavetodoismove;tothecurrenrt-pSosition,Msetthecharacter,MincrementourpSosition,Mand nish;setting6ctherestofthisline-segmenrt.Thethicknessofthevectortheoretically;doSes!notmatter,+ asthepathfollorwed!bythevectorcharacterisinvXariantover;thethicrkness(atleasttotheresolutionoftheprinter).&;6.5.2mBeamSetting;The-+wraythatTUEuXtylktypSesetsbeamissimilartotrypesettingline-segmenrts.;The$cTylBeamproSceduretakrescareofdeterminingthecorrectbeamcrharacter;touse. +Recallfromsection5.1thattherearetrwolengthsforeacrhtypSe;ofҌquarternote(i.e., regularnotesandgracenotes).WhenTUEuXtyltriesto;trypSesetbthebeam,Eitusesthebeamcrharacterwhoselengthislongestand;whoseangleisclosesttothatrequired.LGivren$amusicfontofbSeamcharacterswiththeirlengths,>?heights,depths,;andoanglesfromhorizonrtalcomputed,wetrytosetthewholebSeamatonce;brythefollowingmethoSd:I\h1.X_ComputeWthedyźanddxofthebSeam,raswrellasitslengthandactualX_anglefromhorizonrtalI\h2.X_compute IthefractionalnrumbSer IofcrharactersneededtotypsetthebSeamX_forbSothsizesofbeamcrharacters(thisisX0 length#]8Aacmr6b1eam۟fe6'length#8b1eamc9har<&)I\h3.X_tryEtobracrketEapairofbSeamcrharacterswhoseanglesarenearesttheX_actualangleofthebSeamI\h4.X_usethebSeamcrharacterthathasthesmallestangulardeviationfromX_thatoftheactualbSeamI\h5.X_trypSeset+8thecharactersalongthelinefromtheleftendpSointofthebSeamX_to;asclosetotherighrtendpSointaspSossible. ,ThentypSesetthelastX_crharactersuchthattheright-hand-sideofthecharactercoincideswithX_therighrtendpSointofthebSeam. 44-r-WVe8onlyneedtoselectonecrharactertousefortypSesettingastheslopeofthebSeamisconstanrtoveritslength,+andthecharacterusedhasa\slopSe"(anglefromhorizonrtal)thatisascloseaspSossibletothebeam. 荑&Thisjugglingof\bSest-length"vrersus\best-slope"isonlynecessarybe-causeoftheneedtokreepthesetofcharacterstoareasonablesize,andalsobSecauseFtheanglesrequiredforbeamsisnotasbroadasfortherequiremenrtsofthemore-generalvrectorline-segments.+g6.6BCBu eringzAsOtTUEuXtylreadsinbrytesfromtheDVIOZ leforsubsequentinterpretation,hitcopies'theminrtoaninternalbu er.Atasimplelevel,wTthisbu erisusedtodsimplycoprytheDVIdrbytesusedonaDVIdrpage(delimitedbybopandeopabrytes).?Thus,~TUEuXtylwouldactsimplyasamechanismthatcopiesitsinput toitsoutput,3vrerbatim.OHAt thelevrelthatweareinterestedin,3thisbu ernwillholdallthebrytesupto,andincludingatylspSecialstring.OnpageA38,wremadementionofa\noteabSoutwherethestartofthespecialoSccurred"intheDVI le. Whenwrereadaspecial,wemarkthepSositionofthe+bSeginningbryteofthespecial,asfoundinourbu er.@jIfwre ndthatthespSecial'is\tryl"-able,61we'backupthecurrentplaceinthebu ertothestartofhthespSecial,andproceedwiththetryling.}TUEuXtylwilloutputtypSesettingcommandbrytes,Fande ectivelyover-writethepreviousspecialstringinthebu er,acrhievingakindofin-linemacro-expansionofthespSecial.&Atricrkypartofthismacro-expansionapproachistakingcareofde ningnewQfonrtsthatwereusedduringtylingonapage.#AsTUEuXtyl\tyl"sa gure,it1^recordstheusedfonrtnames(here,C onlyvectororbSeamfonts)inalistof\fonrts-to-bSe-de ned."At!Ltheendofapage,.wreformallyde netheseasyetunde nedpfonrtswithintheDVIp le,andthenmarkthemashavingbSeenDVI-de nedtoarvoidre-de nitionbSeforethepostamrble.UEventhisscrhemeneedsclevrerness\usincewedonotknowallthefontsusedtotypSesetanyprimitiveunrtilctheendofthepage, butwehavetode nethefontwithintheDVIX lebSeforethe rstactualuseofthefonrttotypSesetthosegraphicprimitives.&Thewraywegetaroundthis\Catch-22"-ishsituationistohaveaninternal ag(a\fonrt- ag")insertedintothebu erbSeforethe rstcommandstotrypSeset|agraphicprimitive.SincetheDVI|formatallowsustode nefontsbSetrweenanytwoDVIzcommandsina le,wecande nethemmid-stream. 45.r-;AsWTUEuXtylEparsesagraphicprimitivre'sspecialstring,Nitbacksupinthe;bu ertothestartofthespSecial,6outputsthefonrt- agandthencontinuesto;insertthetrylingcommandsintothebu eruntilthenextspSecial,ܖortheend;ofUpage.-Arttheendofapage,s`allthetyl-ablespecialshavebSeenexpanded,;wre.&havebu erfullofDVI.commandsandfont- agsforthispage,?andalist;ofGfonrtsreadyforinitialde nitionintheDVI. le.WVearenowreadytowrite;theEbu ertotheactual le.dAsTUEuXtyl7writeseacrhbyteofthebu ertothe;diskH le,i:it rstloSoksatthebryte.Ifitis\normal"(i.e.,0...ʜ255),itconrverts;theEbrytetothepropSersystem-dependenrtformat(ifnecessary)andoutputs;it. tothedisk le.Horwever,>if. thebryteisourfont- ag,>ittreatsthis agas;amacro,toSo,andwritesouttothe letheformalDVIde nitionsofthenew;fonrts.(DTUEuXtylgdoSesthisexpansiononlyonceperpage,andignoresanryother;fonrt- agsfortherestofthepage(well,.itactuallyoutputsthemasnops).;AfterthesenewfonrtshavebSeende ned,-|TUEuXtyl+~continuestooutputeach;bryteofthepagebu er,oandwhendone,startsproScessingonthenextDVI;pagefortryling.)];6.7hCOdds'nSoOdsg;Thissectionconrtainsdown-deepinformationinTUEuXtylOVthatreallydoSesnot; tnicelyanrywhereelse.?LAsxxIxTdiscussedbSefore,TUEuXtyl isbuiltontopoftheDVItrypeprogram[5];andwrasmoSdi edinfollowingways::LX_The()specialcasesandskippagesproScedureswreremodi edtocallX_TUEuXtyl'spmainhandlespecialsproSceduretohandleanry\specialstrings,X_insteadofthrorwingthosebytesout.LX_ThereadpostambleproScedurewraschangedsothatwecaninsertallX_theهfonrtde nitionsofthenewfontsthatweusedduringanytyling.X_TUEuXtyl';simplycopiestotheinrternalbu eranyfontde nitonsalreadyX_inqthepSostamrble,}untilqitreacrhesapostpost.HereTUEuXtylLbacksupX_oneNbryte(overthepostpost),outputsallitsnewfonts,andtheninsertsX_thenewpostpost.LX_TheOmainloSopwrasmodi edsothatateacrhend-of-page,wewriteoutX_theinrternalbu er,clearit,andresetanryinternalcountersforthe 46/3r-2_page (likre gure-depthcontext, gure-numbSer,and countsoffonts-to-2_bSe-de ned).OtherNotes&Ixharveyimplementedanadaptivesub-divisionmethoSdfordetermininganoptimalKnrumbSerofvectorcharacterswithwhichtotypSesetasplines.ThemethoSdy|usesasimplequadraturesub-divisiononeacrhspanofthesplineunrtilalinear-distancecriterionismet.1NIfweletthenumbSerofsub-divisionsbSezN@,wrecandeterminethenear-optimumnumbSerofintervXalswithwhichtoFactuallysamplethesplinewhenwredotheinterpSolationas22ND.Thisis\optimal"@inthatwreusethefewestvectorsforlongspans,banddonotunder-sampleshorter,tighrterspans,andachieveasplinethatisverysmoSoth.&Thenamesoftheprimrtiveswithinthe\specialstringsneedbSeuniqueonly@tothe rstthreeletters. 9%Thrus\special{tylGbeg}isequivXalentto\special{tyl,beginfigure}.8Thiscanmakreinputeasierandshorter.&Also,;wrecanbSeprettylenientabSouthowwedelimitourkeywordsandmakrers.Inmostoftheexamples, commasorspaceswereusedtoseparatethemarkrersandintegers.InactualityV,"wecanusealmostanythingforkeywordandmarkrerdelimitingotherthan:&2_otheralphabSeticletters&2_othermarkrercharacters(like@and")&2_%,~,\andthoseotherreservredcharacterswhichmightupsetT UE!X,as2_itytriestoexpandmacrosinsidethebSodyyofthespecialstringbSefore2_outputtingittotheDVI le.FVorexample,5 \special{tyl,line*()(]!::4...3**4&&12[5}MislexicallyequivXalenrt]tothenicelytypSed\special{tyl,linem4(3,4)(12,5)}ܮortheterselytrypSed\special{tyl,linm434125}*.&Another3\signature"ofTUEuXtylriswhenevrerweoutputthecommandstotrypsetaline-drawing,Kwepreceedthepushcommandwithtwonops.iThiseasilyidenrti esthesectionsthathavebSeen\tyl"-ed. 470r- 481 r-u:I*G/(dZHdZHKҟ߅dZHdZHdZHKҟ߅dZHdZHdZHKҟ߅dZHdZHdZHKҟ߅dZHdZHdZHKҟ߅dZHJ-J-{-?F-@%Ohȅhuȟp_________p~O8huXOh|a<_____________________y~pOh|"$Ou|C y___________________________________________py<Ou|DI`hu@___________________________________________________________________________________________py~yhuk$Oh I_____________________________________________________________________________________________________________________________________________________________________________________LOh+e.Figure6.1:8Semi-squaresoftheVVectorFonrts 492_r-F;IChapter 72;Future Extensions6;Givrenalittletime,tonecouldextendthecurrentsetofgraphicprimitivesin;TUEuXtyl,sucrhas:LLX_simpler-appSearingmacros,LX_regularpSolygons(alleasilybuiltuponcurrenrtly-existingprimitives),LX_orienrtedarrowsLX_line-pattern lled gures,LX_amoregeneralmethoSdofde ningandinstancingsymrbolde nitions.K;I*amӨstillexpSerimenrtingwithtwomethoSdsofadequatelycomputingthe;smoSothest]inrterpolationofthicrknessesalongthelengthoftheslur."When;thethicrknessforaparticularsegmentofthecurvehavebSeendetermined,;wrechecktoseeifthatthicknessisinasubsetofvector-fontsizes.Ifso,;wreCHcanuseitas-is;ootherwise,Ypwehavetoclampthatthicknessto tinthe;subset. TThe^$onlyproblemisthatacrhievingasupSer-smooth^$interpolation;along_thecurvre'sthicknessesmightrequirealargenumbSerofvectorfontsto;bSealoaded|sometimesstressingtheprinrtingdevice'scapabilities. (Ia\stillhave;to@expSerimenrtto ndareasonablesubsetofthesesizesthatcanbeusedand;stillacrhieveadequateresults.LI+{wrote+thisprogramwiththeinrtention+ofeaseofextensibilitryforaddi-;tional\primitivres"tobSebuiltontopofthefunctionalityprovidedbyTUEuXtyl.;IharvealsoinrterfacedTUEuXtyliwithDarioGiuse'sgraphicdrawingprogram 503Or-DPthat%hewroteatC-MU[6].WItissmartenoughtorepresenrtitsgraph-ics9 primitivresin lesasalistoftext-strings,Landisnowabletooutputthe\special$\strings,LspSecifyingthewidthandheighrtofthecreated gure.Con-vrertingUthe lesoftheMacDrawprogramtoyieldASCIGITstringsispSotentiallypSossible,Rtoo.In,eithercase,sucrhstringsarebSeeasilyconvertedto\specialcommandstringsforTUEuXtyl);towrorkon. 514r- 525 3r-FGIAppvendix A2GT:eE sXt4yl Summary6ǮLet'sKsummarizetheabilitiesandrequiremenrtsofTUEuXtyl.|Firstofall,Fweharve6Vtoputan\input{textyl}nearthestartofthedoScumenrt(atleastbSefore our rstinrvocation ofa\special{tylAO...Gcommand).This loadstheSmacrosthatwreneedtocreatespaceforour gure,5~andtosetuptherighrtenvironmentforTUEuXtyl.Ǯ&Once͗themacrosharve͗bSeenloaded,whenwrewanttoseta gure(orevenasinglewTUEuXtylR primitivre),>wemustplacetheprimitiveswithinanenvironmentstartedbdbry\begintyl{hvertsizei5%}[hhorizsizei:] and nishedby\endtyl.Here,`theHrequiredparameter,hvertsizei5%,determinesthevrerticalsizeofthebSorxthatTUEuXtylwillcreateforour guretobeplacedin. wIfwredonotneedextraspace,ڼwreputin0ptorsomesimilarzero-lengthdimension.2>Theoptionalbparameter,hhorizsizei:,willaddanon-zerowidthtothebSorxthat\begintyl5createsforus.ItiscrucialBthatthereisnoKspacebSetrween5the}and2F[crharactersofthe\begintylinvoScationifwedecidetousetheoptionalhorizonrtal+widthspSeci cation.)Otherwise,Qthingsmaygoawryforthis gure.Also,nwretarerespSonsibleforanyo setsthatwemayneedbSeforethe gureisplaced.3@WVecanacrhievethisthrough\hskipand\vskipcallsinT UE!X,or\hspaceand\vspacecallsinL"s3Ja^T E!X.&TheQltrypSesofprimitivesthatwemayplacewithinthe\begintyland\endtylpairaresummarizedhere,H)withouttheirsurrounding\special{tyl{},noranryextradelimitingpunctuation(likecommas).f2_beginfigureG[hmeffasi]8[hxfmi]e>[WhwRidihhti]f[FhwRidihhti] which35opffenstheenvironment332_endfigurefjwhich35closestheenvirffonment 536 r-X_lineP[hmeffasi]7M[hxfmi]e>hthickJi[hveffct$Di][Lhstyn9lCei]Jx̸ly̸bx̸rzy̸tnXX_spline[hmeffasi]6<[hxfmi]`C#hthickJi[hveffct$Di][Lhstyn9lCei]=[hspltypffei]r[hclosurffei]"[Xhthickgi]8hnumptsithe35x-ypffointsX_ttsplineP[hmeffasi]7M[hxfmi]e>[hveffct$Di]i[Lhstyn9lCei][hspltypffei]r[hclosurffei]"[Xhthickgi]8hnumptsi"r\pffointsDthicknessesX_arcP[hmeffasi]7M[hxfmi]e>hthickJi[hveffct$Di][Lhstyn9lCei]pJhrffadiusir[@hcent̹xHihcent̹y i] /hstartA2ng iVhstopA2ng iX_labelP[hmeffasi];8*hfacffei^YxyX"hstring i,M"X_tieslurP[hmeffasi];8*hminthickJivhmaxthickJihnumptsi9pffointsX_beamP[hmeffasi];8*hsta sizeiv[hbffeamtypei]x̸1jy̸1x̸2y̸2X_where:;meas^,spSeci es:unitsoflengthforthisprimitivre.(OneofS,P,orM:xindicatesX_scaled-pSoinrts,;printers-points,;andRmillimeters,respectivrelyV.aDefaultsX_toprinrters-pSoints.\;xfmW_spSeci esatransformationtobeapplied.8ItisoftheformX_ThsxqiNhsy i5whtxqiNXhty igAvhrffot$Di,Ewhere3sxandsyAareforscaling,txandtyX_are{Kfortranslation,tandrffotisforcounrter-cloSckwise{Krotation(inde-X_grees).;thick^istheinrtegerthicknessoftheline.8UsuallybSetween1and12.;vectYisvthetrypSeofvectorfonttouse.݃OneofC,H,orVvindicatescircular,X_horizonrtal- at,orvertical- atpSentypSe.8Defaultstocircularpen.;style\isOtheline-stryletouse.h@Oneof0,i1,2,orO3indicatesasolid,idotted,X_dashed,ordot-dashedline-stryle.8Defaultstosolidline.;spltyp`ek|is8thekindofsplinetousethroughtheconrtrolpSoints.#eOneofB,D,X_K,RjorIRCindicatestheB-spline,pCardinal,Catmrull-Rom,orRjInterpSolatingX_b-splinebasistouse,respSectivrelyV.8DefaultstoCatmull-Rom.;closureiߢisXoneofOX(\oh")orUwhicrhindicatesthatthesplineisclosedorX_opSen,respectivrelyV.8Defaultstoopen.;numptsl0istheinrtegernumbSerofcontrolpSointsforthisspline. 547Mr-radius?isthelengthoftheradiusinunitsspSeci edbryPhmeffasi,.centx:andcentyarethecenrter-pSointcoSordinatesofthearc/circle.startAngO8andFstopAngaretheinitialand nalangles,grespSectivrelyV,forFthe2_arc asmeasuredindegreescounrter-cloSckwise fromthepositivrex-axis.2_IftheyarethesamenrumbSer,aclosedcircleisindicated.face1referstothestryleoftypSefaceforthelabel.8Seepage37forthelist.string5)ΟffHY?Z~}ffff pk10x/ffBK@U-ffg(Azcff BffB C+ffׁDpffaEff" F5)ΟffGRSGZ~}ffffZ㎍gU}4x pk11x/ffAKHU-ffg>rIzcffJffϤK+ffLpffeMff!N5)ΟffGYOZ~}ffff pk12x/ffAKPU-ffgQzcffp;RffϤS+ff05Tpff.Uff!V5)ΟffGRSWZ~}ffffZ㎍gU}5x pk13x/ffB KXU-ffgqYzcff@ZffB [+ffׯh\pff]ff"^5)ΟffHY_Z~}ffff pk14x/ffBK`U-ffg4azcff&bffgc+ff׮dpffeff"@-f5)ΟffG+gZ~}ffffZ㎍gU}6x pk15x/ffB6KhU-ffgizcffqjffN6k+ff׮lpff.mff"ykn5)ΟffGNoZ~}ffff pk16x/ffBKpU-ffh ?qzcffCOrff\s+ff tpffuff"ykv5)ΟffGwZ~}ffffZ㎍gU}7x pk17x/ffBKxU-ffh ?yzcff_zff{+ffL|pffGZ}ff"~5)ΟffGYZ~}ffff/ff<+}8U-ffb}9zcffY}Aff8}B+ff}CpffW}DffE}E5)ΟffB}FZ~}ff 58;&r-FFIAppvendix C2FMacros andExtendedExamples7FAllpofthethrumbnailp guresinthismanrualwerecreatedusingthe\special{tyl...stringsasdescribSed,P_andwrereplacedwithinanenvironmentdelimitedby\begintyl̈́and\endtyl./)Thisenrvironmenẗ́allowstheusertospSecifyaver-tical=andoptionalhorizonrtalo setfromthe\current-pSosition"onthepage.This'determineswheretheoriginoftheuser'scoSordinatesystemistobeplaced.#(Also,thisenrvironmentsetsparameterssothattheusercanusetab-bing gandspacingtoalignthe\special96stringsashedesires(e.g.,tobSettershorwthenestingof guresandgraphic-primitives).Themacrosusedarede nedbSelorw: /% This?istextyl.tex %%?macrosforfiguresforTyling%?specify:%?\begintyl{vert_dimen}[optional_horiz_dimen]%(with?NOinterveningspacebetweenthe}andthe[chars)%?thenthe\special{tyl...}strings% then?youmustfinishenvironmentwith\endtyl%\def\begintyl#1{\begingroup\endlinechar=-1\catcode?`\^^I=9\dimen120=#1\ifhmode\toks0={\futurelet\tyltempb\begHtyl}\let\endtyl=\endHtyl\else\toks0={\futurelet\tyltempb\begVtyl}\let\endtyl=\endVtyl\fi\the\toks0} 59<=r-;\def\begHtyl{\ifx?[\tyltempb\let\tylh=\tylHspace ;\else\let\tylh=\tylHnospace\fi\tylh};%;\def\tylHspace[#1]{\setbox0=\hbox?to#1\bgroup;\vbox?to\dimen120\bgroup\vss};\def\tylHnospace{\setbox0=\hbox\bgroup;\vbox?to\dimen120\bgroup\vss};%;\def\begVtyl{\ifx?[\tyltempb\let\tylv=\tylVspace;\else\let\tylv=\tylVnospace\fi\tylv};%;\def\tylVspace[#1]{\setbox0=\vbox?to\dimen120\bgroup\vss;\hbox?to#1\bgroup};\def\tylVnospace{\setbox0=\vbox?to\dimen120\bgroup\vss;\hbox\bgroup};%;\def\endHtyl{\egroup\hss\egroup\box0\endgroup};\def\endVtyl{\hss\egroup\egroup\box0\endgroup}B0LLet'suloSokatanon-trivialexampleoffrequenrtly-used gures.Theoriginal; gureisfrom[2],page325.I'llgivrethediagram,andthentheannotated;\specialcommands.Ѝ;98)cmsl81 t:1od9g΅y}-A-A~'KlC6{xԪ'S}}z왊0e1ȅΟsΟsΟsΟsΟsΟsΟsdΑΟsΟsΟsΟsΟsΟsΟsΟsΟsΟsΟsΟsg\tr}…|rݟƅ1o.gA2q{-Aҿza_7[}Q*6K|3"ӊ0a10jr}vr}9>}a5S|QŞ$,SvBHsSvr}9>v0ISjr}|PSjr}vX/Sjr}vGSjr}vr}9>|W5"Sjr}vr}9>|hH3*Sjr}vr}9>}-A-A|@\DžSjr}vr}9>}g7KSk͟vr}9>|m?,T-\jr}vr}9>}N- T-\jr}vٞg]T-\k͟|z>U33jU33wZZv8hVRQ'k͟}J)6VRQ'l}`*>VRQ'l}ZYWj j l}hTWj j l}[_BWj j l}JbuWj j mͅ}QEXQ'RwZZwXQ'RwZZ}-A-A}HRXQ'RwZZ}V.byXQ'RwL+lmͅ}hj܅lmtׅlwZZ}NZklw]1_______y,Gj dJsZ~{nf7[}Ab0e1d|R$lwZZ}86ElwZZxtRƅlmͅ}-A-A}>AȅXQ'RwZZ}@eRXQ'RwZZwl!XQ'Rl}8T)XQ'Rl}-A-A},DȅXQ'RlwvH?XQ'Rlw DžWj j lwZZ}+HjWj j lwWj j lwn~VRQ'lwudVRQ'k͟}fcU33k͟}E[JxU33jT-\vr}9>v \Sj;Sjr}|a!΅RfDžjr}}lO=օRfDžjr}v])6RfDži\>}-A-A|MDRfDži\>}-A-A|OkRfDži\>|tO"RfDži\>|aўoQ|.jr}|GCQ|.jwbQ|.vr}9>|bQ|.vAyQ|.}TZ1i\>vr}9>v'6i\>v5pOh|+Gj dJsZ~{c"ޅ/Wj j lwZZ}c"(80b1O8y_____________________________________________________________________________pywhshu7[})yRlC6{iƊ0b1ZXI(KtFKtr}…{-Aҿ|K`Kf{S㞼 Ke͟fftr}…|A$Ke͟fftr}…tKJ-{QhW|~ t|~ tr}…{M<|~ tr}…{-Aҿ|PϞܒ|~ f^9|~ f{]Ꞽ|~ f{-Aҿ|Rw|~ ft |~ ftr}…{B:|~ ftr}…{VzϷ|~ ftr}…|e=E|~ ftr}…|o26ftr}…{\6ftr}…{]OC6ftr}…{Xݞ6ftr}…|O6ftr}…|A%eft:%ef|sNS%ef|Vٞ~Οsf{ZΟstr}…|m]ΟsudΑ|rXkM𶞃҅g\u|mYAN ~g\u:N ~h{-Aҿ|CiN ~h|[OuOh|B0Oh.@ZP ?hP ?i -Q|.hcGQ|.u}-A-A|EI Q|.vr}9>|n͞ÅRfDžu}a=,RfDžvr}9>|_jRfDžvr}9>}O9ASvr}9>|VSvr}9>}HS5T-\vr}9>|Rq(T-\vr}9>}Ee/T-\voxT-\wZZ}E*ƅU33vlU33vDuU33w8|U33wşU33wVRQ'vgnVRQ'vPf0VRQ'vDbVRQ'vў]k͟l}-A-A}M8+Sk͟l}-A-A|G!хk͟k͟}X͞^k͟k͟}TQAk͟k͟}QOAk͟k͟}KڞCk͟l}[r}xO|mͅx9>r}}-A-A~yImͅx9>r}}9֞fmͅx9>r}}.ϞTmͅx9>r}}#AmͅxQKmͅxF-Umͅ~:nmͅ}.Thm>wZZxla|\m:1od9g΅y}-A-A~'K+Gj dJsZ~{z$d1o%Οgu}-A-A|Q$0a1*9mdΑmdΑmmdΑmdΑmmdΑmdΑmmdΑmdΑmmdΑmdΑmmdΑmdΑMFȊ9s41-f_ش^xO]Dr:\Onr}nnן= nr}wZZx…mͅx9>r}w#lwZZxSjz`lwZZv0k͟vr}9>w⼟|jr}wZZvԟDjr}jAROxQشPftOfOشQNOEM:LOtff= )fsZ~tŸe͟fftr}…s#HdJsZ~tz`dJsZ~rJc33r9>s|Dbr}sZ~rD7,br}bBxA'L@t,?_,^Q'L]E\ ƅnr}n{nr}wZZxQmͅx9>r}wy ylwZZxflwZZvfk͟vr}9>wyy jr}wZZvQjr}j{R ƟQEP'LQO,O,tN'LMxL ƟDrff fsZ~tSe͟fftr}…sydJsZ~tndJsZ~rfrxc33r9>sy br}sZ~rQabr}b{HB:AEO@Qش?f_^pyŒbo>\y\vr o>\x5@~o>\xnr}xnr}w4mͅxMԟhlw02ilw(Rk͟v̷ejr}wCڬjr}vrمi\>vr \vi\>vj+vi\>uf0Ahu^hub=tg\ur g\t~g\tߟftI~fs4khe͟ffti-dJs2hυdJsR؅c33re3Ibr}sڬ^br}rٟna>r\va>rvՅa>qAЅ`qpyto>\y^o>\x'^(o>\xN9nr}x@Z˅nr}wdmͅx_QlwcŅlwŞck͟v_Qjr}wdjr}v˞@Zi\>v9Ni\>v('^i\>u^huthutWg\ug\t(آg\t9lft˞fs|e͟fftdJsŞrdJsc;c33r_Q|br}sd~}br}r@Zk4a>rNnȅa>r'^b؅a>q^Z`q^u؊9s3-g/^pyŒbo>\y\vr o>\x5@~o>\xnr}xnr}w4mͅxMԟhlw02ilw(Rk͟v̷ejr}wCڬjr}vrمi\>vr \vi\>vj+vi\>uf0Ahu^hub=tg\ur g\t~g\tߟftI~fs4khe͟ffti-dJs2hυdJsR؅c33re3Ibr}sڬ^br}rٟna>r\va>rvՅa>qAЅ`qpyto>\y^o>\x'^(o>\xN9nr}x@Z˅nr}wdmͅx_QlwcŅlwƞck͟v_Qjr}wdjr}v̞@Zi\>v8Ni\>v('^i\>u^huthutWg\ug\t(آg\t8lft̞fs|e͟fftdJsƞrdJsc;c33r_Q|br}sd~}br}r@Zk4a>rNnȅa>r'^b؅a>q^Z`q^(qϠ9s2-g/^pyŒbo>\y\vr o>\x5@~o>\x߅nr}xnr}w4mͅxMԟilw02hlw(Rk͟v̷ejr}wCڬjr}vrمi\>vr \vi\>vj+vi\>uf0Ahu^hub=tg\ur g\t~g\tߟftI~fs4khe͟ffti-dJs2hυdJsR؅c33re3Ibr}sڬ^br}rٟna>r\va>rvՅa>qAЅ`qpyto>\y^o>\x'^(o>\xN9nr}x@Z˅nr}wdmͅx_Qlwcƅlwƞck͟v_Qjr}wdjr}v̞@Zi\>v8Ni\>v('^i\>u^huthutWg\ug\t(آg\t8lft̞fs|e͟fftdJsƞsdJsc:c33r_Q|br}sd~}br}r@Zk5a>rNnDža>r'^b؅a>q^Z`q^X؟؊9s1-g/^pyŒbo>\y\vr o>\x5@~o>\xnr}xnr}w4mͅxMӟhlw12ilw(Rk͟v̷ejr}wBڬjr}vsمi\>vr \vi\>vj+vi\>uf0Ahu^hub=tg\ur g\t~g\tߟftI~fs4khe͟ffti-dJs2hυdJsR؅c33re3Ibr}sڬ^br}rٟna>r\va>rvՅa>qAЅ`qpyto>\y^o>\x'^(o>\xN9nr}x@Z˅nr}wdmͅx_QlwcŅlwŞck͟v_Qjr}wdjr}v˞@Zi\>v9Ni\>v('^i\>u^huthutWg\ug\t(آg\t9lft˞fs|e͟fftdJsŞrdJsc;c33r_Q|br}sd~}br}r@Zk4a>rNnȅa>r'^b؅a>q^Z`q^+ 60=C8r-&AndthetexttoproSducethisis:\begintyl{9cm} \special{tyl?begin/AHU=fig=9.7/}\special{tyl?arcm26@10461010/state=s1/}\special{tyl?labelm5946"s1"}\special{tyl?arcm26@62201010/state=s2/}\special{tyl?labm56120"s2"}\special{tyl?arcm26@62601010/state=s3/}\special{tyl?labm56160"s3"}\special{tyl?arcm26@104341010/finalstate=s4/}\special{tyl?arcm28@104341010}\special{tyl?labm510334"s4"}%now?drawtheconnectors\special{tyl?linem316485659/s1-s2/}\special{tyl?labm13053"a"}/?\special{tyl?linem356595360}%andthearrow/?\special{tyl?linem356595457}/?\special{tyl?linem353605457}\special{tyl?linem315435623/s1-s3/}\special{tyl?labm13230"e"}/?\special{tyl?linem356235525}/?\special{tyl?linem356235323}/?\special{tyl?linem355255323}\special{tyl?splinem341252;6276;90,63; 105,44/s1-s4/}\special{tyl?labm17078"b"}/?\special{tyl?linem3105,4210644}/?\special{tyl?linem31054210444}/?\special{tyl?linem31044410644}\special{tyl?linem362266254/s3-s2/}\special{tyl?labm16438"b"}/?\special{tyl?linem362546452}/?\special{tyl?linem362546052}/?\special{tyl?linem360526452}\special{tyl?splinem336755;8042;9636/s3-s4/}\special{tyl?labm17640"e"}/?\special{tyl?linem396369538}/?\special{tyl?linem396369535}/?\special{tyl?linem395359538} 61>y+r-E\special{tyl?splinem336961;8652;9840/s4-s3/} E\special{tyl?labm18951"a"}U?\special{tyl?linem369617162}U?\special{tyl?linem369617059}U?\special{tyl?linem370597162}E\special{tyl?linem369229632/s2-s4/}E\special{tyl?labm18224"e"}U?\special{tyl?linem39632,9433}U?\special{tyl?linem396329530}U?\special{tyl?linem394339530};\special{tyl?endfigure};\endtyl\par 62?}r-FIBibliograph4y6[1]-' AdobSe;GSystemsInc.,OoPostScript}PLffanguageReferenceManual.;GAddison--' WVesley,Reading,MA,1985.䍍[2]-' AlfredV.Aho,պJohnE.HopScroft,andJe reyD.Ullman,TheDesign-' and$A2nalysisofComputerAlgorithms.Addison-WVesley,tReading,Mass.-' 1974.[3]-' BrianA.BarskyV,BandDonaldP.GreenrbSerg,B\DeterminingaSetofB--' spline9ConrtrolVVerticestoGenerateanInterpSolatingSurface."Computer-' Grffaphics35andImageProcessing.143,(Norv.1980),pp.203{226.[4]-' EdwinE.Catmrull,1andRaphaelJ.Rom,\AvClassofLoScalInrterpolating-' Splines."JAComputervcA2ideffdGeometricDesign.JARobSertE.Barnhilland-' RicrhardtF.Riesenfeld,keds.AcademicPress,NewYVork,NY,1974,pp.-' 317{326.[5]-' DarvidZR.FVuchs,wHowardTVrickey,wTheUD2VItypffeprocessor.ZProgramdoSc--' umenrtation,1983{4.[6]-' DariolGiuse,VDP|Formatofthedrffawing les.TVecrhnicalRepSort.Car--' negie-MellonUnivrersityRobSoticsInstitute,1983.[7]-' JohnS.GourlaryV,r\ALanguageforMusicPrinting."Communicffationsof-' the35A2CM5295,(Mary1986),pp.388{401.[8]-' NormHutcrhinson,etal.DVISUNProgram.1983.[9]-' DonaldE.Knruth,The4TUEuXbffook.Addison-WVesley,Reading,Mass.1984.[10]-' DonaldE.Knruth,TUEuXandMETAF2ONT:NewDirffectionsinTypffeset--' ting.DigitalPress,Bedford,MA,1979. 63@٠r-;[11]S' Bruce>Nelson,)andJamesSaxe,\DrarwingSplineswithaVVectorFonrt."S' UnpublishedtecrhnicalrepSort.Carnegie-MellonUniversityV,1980.;[12]S' TVed0URoss,AThes@A2rtofMusicEngrffavingandProcessing.0UHansenBoSoks,S' 1970.;[13]S' DanielBerkreleyUpSdike,Printing=Typffes:xTheirHistory,4Forms,andS' Use.HarvXardUnivrersityPress,Camrbridge,MA,1937.;[14]S' Sheng-ChruanWVu,JohnF.AbSel,andDonaldGreenrbSerg,\AnInrteractiveS' ComputerGGraphicsApproacrhtoSurfaceRepresentation."Communicffa-S' tions35oftheA2CM52010,(Oct.1977),pp.703{712.;[15]S' ChristopherXJ.VVanWyk,t A!Lffanguage;forTypesettingGraphics.XPh.D.S' dissertation.StanfordUnivrersityV,1980.;[16]S' HermannAZapf,ThenPrintingSalesman'sHerffald.BoSok39.ChampionS' PrapSers,NewYVork,NY,1978. 64A{r-CGIIndex䍍aG"-markrer19,48.dvi le3.textext le1,3,34.tlog le4,23.tyl le23?!8 ag24?8 ag23@-markrer8,19-9DtGGcmr17AWxarc36arc19arcs7)angles8,19)attributes36)cenrter8)cenrtering8,19)circles8,36)closedsplines36)conrtrolpSoints31,36)ellipses36)example8)opSen36)opSenspline36)phanrtoming37)radius8)represenrtation31,36dBWxB-markrer6,14,20B-splinebasis6,20B-splinesaGinrterpSolating-type6recomputingpSoinrts30b`eam22beam37bSeam-trypes22bSeamfonrt29constrainrts30design29di erencefromvrectorfont29lengths30rangeofangles30relationtosta size29sizes29trypSes29bSeams16attributes37defaultsize22di erencefromlines37sizes22sta size22trypSesetting45b`egin gure11,22begintyl1,3,4,12,57bitmapsviblankspace17bSoundingborx34,38,41bSorxes1,3,9hpCC-markrer20 65B"r-;capabilitiesv,vi,17ō;Cardinalbasis6,20;cartesian-space2;Catmrull-Rombasis20;Catmrull-Romsplines5,30;circles7,8,36OconrtrolpSoints31,36Orelationtoarcs36Orepresenrtation31;circularpSen20;clamping35,43,49;closedsplines14,20;closure20;comrbiningprimitives9,10;coSordinates2Oorigin2;coSordinatespacesystem19;currenrtpSosition1,2,3,17;curvres5-E#ID=;D-markrer6,20;defaultingvXalues5;de ningfonrts46;delimiters6,48;designdecisions21,27,30;designgoalsv;DrVIv;DrVI- lters4;DrVI-space35,38,43;DrVI le27Opreviewing33;DrVIformat46;DrVIpSositioncoordinates27;DrVISUN33;DrVItypSe27,479EWxellipses19,31,36#relationtocircles36endfigure42end gure11,22endtyl1,12,57errors#inrternal24extensions49GYAFF-markrer22 gurede nitions22 gures10#conrtext41#de ning11#example12#examples11# ttingtosize22#nestedsymrbSols11#preparation2#sub- gures11#tranforms22#transforms10,22fonrts#computingdimensionsof42#de ning46#fonrt ag46#forlabSels38#nrumbSering43#tobSede ned46GY-GG-markrer16,22geometrictransforms21Giuse,Dario28,49grace-notes16graphiceditors17,22grid-origin3 66CǠr-9-HWxH-markrer20handlers38)designidea39) gurehandle39)functionalitry38)linehandle38)ttsplinehandle38handlingspSecials27horizonrtalpSen20_II-markrer6,20Idealvinput1inrterpSolatingB-spline6)basis20item39,40)inserting41)pacrking40)trarversing41_FJjaggies36eKK-markrer5,20kreywords6,48Knruth,Donald1_5LL-markrer20label37lab`el19labSels)face19)fonrtface-styles38)fonrtstyle19)strings19L"s3Ja^T E!X1,3,17,51)figure uenrvironment17layline43learvingnospace3ulearvingwhitespace3lies37,44line35line18lineexample1linesegmenrts18,35linestryle20,34dashed20dot-dashed20dotted20solid20linestrylesexamples20linethicrkness2,18,20,31,43example20loScalmainrtainer4,25Lucas,Bruce42\Mc퍒M-markrer5,6,10M-measure19macro-expansion33,46macros1,9,57seffebegintyl1markrers6measuremenrt19default19default22units2Metafonrt28,42limitations28millimeters19measuremenrt5mrusicv,21mrusicfont29MusiCopryv,15,42 67Dr-9$-NWx;Nelson,Bruce28;nestedsymrbSols11#O;O-markrer14,20;opSenspline14,20;optionalvXalues5;origin2;originofquadranrt17;OSU14;outputdevice4,49Ofonrtmemory36;orvXalOseffeellipse19%MP;P-measure19;parameterstoTUEuXtyl 17;Prascal33;pSens20;phanrtomcontrolpSoints37;phanrtoming37;pixelthicrkness20;pop39;pSostamrble47;ProstScriptvi;preamrble1;preparinga gure2;primitivre2;primitivres17,34Oattributes34Obuilt-up17Ocomrbining9,10Ode nitionof40Oinrvoking9OmoSdifyingattributes34Onames48Oparameters9,18Oreductionof34#scaling;rotating;translating9prinrter'spSoints19#measuremenrt2programmer'shoSok43programsmaking gures22push39R`R-markrer16,22referencepSoinrt17rotation9,10#usingdegreesmeasuremenrt10runningTUEuXtyl 3S`S-measure19Saxe,James28scaledpSoinrts19scaling9slurs15,21,30,31#seffe35alsoties16space1,3,51spacemacros1spSecial38special2spSecials2,17,27,46,57#caseinsensitivitry6#handling33#handlingbryTUEuXtyl 27#punctuation6#trypingin6spline35spline18spline#B-spline6#Cardinal6#Catmrull-Rom5#conrtrol-pSoints5#coSordinates5 68EΠr-)default5)example5)InrterpSolatingB-spline6)ttspline6splinecurvres5splines)attributes35)B-spline353example15)basis20,35)Cardinal353example14)Catmrull-Rom353example14)clamping35)closed14)closure20)defaultbasis20)defaultclosure20)defaulttrypSe30)families30)InrterpSolatingB-spline3example15)inrterpSolation30)inrversion30)opSen14)trypSes20)trypSesetting47)useinsimrulating37sta -size16sta lines37sta sizes29,37Standard,Praulisub- gures11subSdivisionofsplines47surpriseerrors24symrbSolseffe gure22xT]T-markrer10,12T UE!Xv,1,3,17,34,51T UE!XbSook9T UE!Xcommands17,51TUEuXtyl v.tloglog- le23errorhandling23errormessages24errorrecorvering23horwtoreadmanualvinamevparameters17seriousproblems26signatures43,48simpleproblem25textyl.tex le1TFMinformation27Thicrk-n-thinspline6ties15,21,30andttsplines16example16seffe35alsoslurs16tieslur21tieslur35tieslurattributes35clamping35example16implemenrtation31pSentrype21relationtottsplines35represenrtation34thicrknesses16,21vrectortypSe21tranforms 69FLr-O gure-levrel22;transform21;transformationsOseffetransforms21;transforms9Oadditivreness22,42Oconcatenation11Oexample10O gure-levrel41Omirroring10Ono-op10Oparameters10,21Yformat21Yrequiremenrt21Orotating9Oscaling9Osub- gures11Otop-levrel42Otranslation9;transformtoDrVIspace39;translating9;ttspline35;ttspline6,31Oclamping35Odefaults6Oexample6Olinethicrknesses31Othicrknesses6,18;ttspline18;trylingv,33,37,46;tylname-string2;trypinginspSecialstrings6x$-U];U-markrer14,20;unitsofmeasure19;Unix33;user'sview17userinrtuition21VWxV-markrer20vrector-typSes20#default20vrectorfont20,28#computingdimensions28#cvrec29#dimensions28#mappingfunction44#pathinrvXariance45#pSen-trypes29#pSens-example29#pixelsize29#rangeofangles28#sizes29#trypSes29vrectors#trypSesettingwith28vrerticalpSen20*gWWxW-markrer22XX-markrer18ZZapf,Hermanni 70v;r MKG/cvec3J- cmcsc10I"VG cmbx10HK`yp cmr10<"VG cmbx109DtGGcmr177"Vff cmbx104K`yff cmr101߆T cmtt120N cmbx12.@ cmti12-!", cmsy10,g cmmi12+XQ cmr12( cmmi10K`y cmr102cmmi8 |{Ycmr8ٓRcmr7Aacmr6-G/cvec2.G/cvec4/G/cvec81G/cvec32G/cvec103G/cvec94G/cvec75G/cvec66G/cvec57G/vvec108G/hvec100