; TeX output 1996.05.27:1836soDtGGcmr17The7tGGcmss17syntax!", cmsy10 npacqkage#XQ cmr12MarkWVoSoding=sٳJ17Mary1996:ōINff cmbx12ContentsdI"V cmbx101XUserTguidea2 .XK`y cmr101.1oIntroGduction........p2X1.2oThe Labbreviatedver- obatimUUnotationT܍......p2X1.3oTypGesettingUJsyntacticitems 3X1.4oAbbreviated n-formsforosyntacticUUitems8o......p4X1.5oTheUUm#R cmss10grammarxenvironment85X1.6oSyntaxUUdiagrams.....p6o1.6.1Line/breakinginsyntaxUUdiagrams?a.p8o1.6.2Customisingzsyn-taxUUdiagrams19...p8X1.7oChangingѼthepresenta-otionUUstyles.........o10)I2XChangeThistoryESR10I3XImplemen9tationTofo kAH cmssbx10syntaxE11 .X3.1oOptionsUUhandling .....o11X3.2oSpGecialUUcharacterhandlingx12X3.3oUnderscoreUUhandlingb...o12X3.4oAbbreviated*verbatimonotation..........o13X3.5oStyle6|hoGoksforsyntaxoforms...........o15X3.6oSimpleUUsyntaxtypGesetting !16o3.6.1TheUUshortcuts...o16X3.7oSyntaxUUdiagrams.....o21%3.7.1EUser-con gurable Eparameters}....o22%3.7.2EOtherUUdeclarations G 23%3.7.3EArrow-drawing..o24%3.7.4EDrawingUUcurves..o24%3.7.5EDrawingUUrulesj ...o26%3.7.6ETheksyntdiagen-Evironment1J.....o27%3.7.7EPutting'ExXandallowyoutotypGesetgoodexpositionsofsyntax.XThepackqageprovidesseveraldi erenttypGesoffeatures:)probablynotallofItheseUUwillbGerequiredbyeverydoGcumentwhichneedsthepackqage:X !", cmsy10bAUUsystemofabbreviatedformsfortypGesettingsyntacticitems.XbAnUUenvironmentfortypGesettingBNF-typGegrammarsXbAUUcollectionofenvironmentsUUforbuildingsyntaxdiagrams.XThepackqagealsoincludessomeotherfeatureswhich,=whilenotnecessarily Isyntax-related,UUwillprobablycomeinhandyforsimilartypGesofdocument:XbAnUUabbreviatednotationforverbatimtext,similartotheshortvrbpackqage.XbAslightlydi erentunderscorecharacter,M\whichworksasexpGectedintextbandUUmathsmoGdes.6I1.2gTheabbreviatedverbatimnotationuTIInudoGcumentsdescribingprogramminglanguagesandlibraries,~itcanbecomete-IdioustotypGe"'ExX'sInormalUUscopingrules.XY*oucansetupacharacterasa`verbatimshorthand'characterusingthe$#ߤN cmtt9\shortverbI\shortverb峲command."Thistakesasingleargument, whichshouldbGeasingle-Icharactercontrolsequencecontainingthecharacteryouwanttouse. ISo,YforIexample,UUthecommandX\shortverb{\|}IwouldDsetupthe`|'charactertoactasaverbatimdelimiter.DWhilea\shortverbIdeclarationisinforce,Ìanytextsurroundedby(inthiscase)verticalbarcharactersIwillUUbGetypesetasifusingthenormal\verbcommand.XSince1L5ffA͉TU>'ExXallowsanydeclarationtobGeusedasanenvironment,8youcanuseyshortverbIaUUshortverbenvironmenttodelimitthetextoverwhichyourcharacterisactive:XSometext... X\begin{shortverb}{\|}X...X\end{shortverb}XIfJyouwanttodisablea\shortverbcharacterwithoutendingthescopGeof\unverbIother^declarations, youcanusethe\unverbcommand,passingitacharacterasIaUUcontrolsequence,inthesamewayasabGove.XThedefaultTU>'ExX/L5ffA͉TU>'EXunderscorecharacterisrathertoGoshortforuseinIidenti ers.qF*orUUexample:2soSffsލfdOld-styleUUunderscoresgBffsގSffN32ff>Ǎ]TypingUUlongunderscore- lled ]names,UUlikebigfffunctionffname,UUis]normallyUUtedious.qThenormal]pGositioningUUoftheunderscoreis]wrong,UUtoGo.9Typinglongunderscore-filled names,likebig\_function\_name,isnormallytedious. s,Thenormalpositioningoftheunderscoreiswrong,too.M㎍SffN32ffSffffNg;XTheosyntaxpackqagerede nesthe\_commandtodrawamoreattractiveun- IderscoreĻcharacter.Italsoallowsyoutousethe_characterdirectlytoproGduceIanunderscoreoutsideofmathsmoGde:Ib_behavesasasubscriptcharacterasusualIinsideUUmathsmoGde.SffnQfdNewxsyntaxUUunderscoresqU]ffnQSffN32ff>Ǎ]Y*ouUUcanuseunderscore- lled]names,UUlikebigB!34functionB!name,]simplyUUandnaturally*.qOfcourse,]subscriptsUUstillworknormallyin]mathsUUmoGde,e.g., b> cmmi10x 0ercmmi7iTL.DYoucanuseunderscore-filled names,likebig_function_name,simplyandnaturally. s,Ofcourse,subscriptsstillworknormallyinmathsmode,e.g.,$x_i$.R`SffN32ffSffffNowI1.3gTyp`esettingsyntacticitemsuTITheQsyntaxpackqageprovidessomesimplecommandsfortypGesettingsyntacticIitems.XTyping5~\synt{#lh%': cmti10textظi{\synt{#1}}ItoUUallowyoutotypGe\< Ohtextظi&q_>/asanalternativeto\synt{"Chtextظi;qS}@P.XY*oucanalsodisplayliteraltext,whichthereadershouldtypGedirectly*,using+\litItheUU\litcommand.SffN=fdUseUUofr\lit>cffN=SffN32ffǍ]TypGeUU`ls'toUUdisplayalistof les.@Type\lit{ls}todisplaya listoffiles.&@SffN32ffSffffN?-XNotethattheliteraltextappGearsinquotes.T*osuppressthequotes,˥usetheI`*'W#vqariant.XThe&\lit:@command&proGducesslightlybetteroutputthan\verb"z=forrunningItext,!LsinceIthespacesaresomewhatnarrower.\However,\verb uallowsIyoutotypGeIarbitrary)characters,2[whicharetreatedliterally*,2[whereasyoumustusecommandsIsuchUTas\{*tousespGecialcharacterswithintheargumentto\litUH.qOfcourse,youIcanuse\litanywhereinthedoGcument:\verb Pmustn'tbGeusedinsideacommandIargument.3soI1.4gAbbreviatedformsforsyntacticitemsuTIItwouldbGeverytedioustorequiretheuseofcommandslike\syntwhenbuilding Isyntax \descriptionslikeBNF .grammars.ItwouldalsomakeyourL5ffA͉TU>'ExXsourceIhardCtoread.Therefore,~syntaxprovidessomeabbreviatedformswhichmakeItypGesettingUUsyntaxquickerandeasier.XSincetheabbreviatedformsuseseveralcharacterswhichyoumaywanttoIuseinnormaltext,(theyaren'tenabledbydefault.cTheyonlyworkwithspGecialIcommandsUUandenvironmentsUUprovidedbythesyntaxpackqage.XTheUUabbreviatedformsareshowninthetablebGelow:)ύ0ffg vInputJ,OutputSffgJ,hsometextظifc`sometext'J,`sometext'"sometext"J,sometextffg+tXWithinUUoneoftheseabbreviatedforms,textistreatedmore-or-lessverbatim:DXbAnyLd$,(%,^,&,{,},~or#charactersaretreatedliterally:_theirnormalbspGecialUUmeaningsareignored.袍XbOtherspGecialcharacters,withtheexceptionof\,arealsotreatedliterally:bthisUUincludesanycharactersmadespGecialby\shortverb.EXHowever,1thek\characterretainsitsmeaning. SincethebracecharactersareInot recognised,Ñmostcommandscan'tbGeusedwithinabbreviatedforms.5 However,IyouUUcanusespGecialcommandstotypGesomeoftheremainingspecialcharacters:9"ffɁ vCommandE ResultSffɁ\\E AUU`\'xcharacterfc\>E AUU`>'xcharacter\'E AUU`''xcharacter\"E AUU`"'xcharacter\ E AUU` 'xcharacterUU(notaspace)ffɁXNotethat\\,\>,\"and\ areonlyusefulina\ttfont,i.e.,inside`...' Iand"..."forms, sincethecharactersdon'texistinnormalfonts.SThe\>, \"andI\'Ocommandsareonlyprovidedsoyoucanusethesecharacterswithin<...>,I"..."and`...'formsrespGectively::Jintheotherforms,ҧthereisnoneedtouseItheUUspGecialcommand.XInaddition,whentheabGoveabbreviationsareenabled,thecharacter|issettoItypGesetHajsymbGol,KwhichisconventionallyusedtoseparatealternativesinsyntaxIdescriptions.XNormally*,thesenabbreviatedformsareenabledonlywithinspGecialenviron-\syntaxIments,\Qsuchasgrammarandsyntdiag. OXT*ousetheminrunningtext,usetheI\syntaxcommand.TheabbreviationsaremadeactivewithintheargumentofIthe,c\syntaxcommand.^1Notethatyoucannotusethe\syntaxcommandwithinItheUUargumentofanothercommand.XY*ou6canalsoenablethesyntaxshortcutsusingthe\synshortsdeclarationor$\synshortsysynshortsIffr J= "5-:Aacmr61LThePargumenÎtofthe&Cscmtt8\syntaxcommandmaycontaincommandssuchas\verb,owhichare normallyXnotalloÎwedXwithinargumenÎts.4,soIthesynshortsenvironment._ThisenablesthesyntaxshortcutsuntilthescopGeof ItheUUdeclarationends.XIfv syntaxshortcutsareenabled,youcandisablethemusingthe\synshortsoffb\synshortsoffIdeclaration.6I1.5gThe'kAH cmssbx10gramma"renvironmentuTIF*ortypGesettingformalgrammars,forexample,ofprogramminglanguages,thegrammarIsyntax<packqageprovidesagrammar_environment.%Withinthisenvironment,utheIabbreviatedUUformsdescribGedaboveUUareenabled.XWithinUtheenvironment,separateUproGductionrulesshouldbeseparatedbyIblank}lines.Y*oucanusethenormal\\commandtopGerformline-breakingofIa'proGductionrule.NotethataproductionrulemustbeginwithanonterminalIname&enclosedinanglebrackets&(<...>),/followed&bywhitespace,/thensomekindIof1proGductionoperator(usually`::=')andthensomemorewhitespace.ZY*oucanIcontrolUUhowthistextisactuallytypGeset,however.XY*oucanusesyntaxdiagrams(seebGelow)insteadofastraightpieceofBNFby/>\[[/>\]]Ienclosingitina\[[...\]]Ųpair.Notethatyoucan'tmixsyntaxdiagramsandIBNF17in1@aproGductionrule,8xandyouwillgetsomethingwhichloGoksverystrangeifIyouUUtry*.XInaddition,5acommand\altisprovidedforsplittinglongproGductionrules+\altIoverseverallines:pthe\altcommandstartsanewlineandplacesajcharacterIslightly@vintheleftmargin.3+ThisisusefulwhenasymbGolhasmanyalternativeIproGductions.SffhjfdTheUUgrammarxenvironment}G+ffhjSffN32ffJȟ]hstatementظi9::=`do'R{hstatementظi~jE `{'hhstat-listظi쇲`}'~jE hempty}i]hstat-listظiȲ::=E hstatementظi`;'颎hstat-listظi&ijUUhstatementظiS]ffN[@ \begin{grammar} ::=`='s-\alt`for'`='`to'`do's-\alt`{'`}'s-\alt ::=`;'| \end{grammar}j@ffN32ffffffN/XY*ouUUcanmoGdifytheappearanceofgrammarsusingthreelengthparameters:I\grammarparsepֲisitheamountofspaceinsertedbGetweenproGductionrules.ItisbaUUrubbGerlengthwhosedefaultvqalueis8pt,with1ptofstretchandshrink.I\grammarindentֲis rtheamountbywhichtherighthandsideofaproGductionrulebis*Cindentedfromtheleftmargin.Itisarigidlength.Itsdefaultvqalueis5;sob2em.XY*ouq0canalsocontrolhowthe`labGel'istypGesetbyrede ningthe\grammarlabelb\grammarlabel Icommand.TheBcommandisgiventwoarguments:ithenameofthenonterminalI(whichjwasenclosedinanglebrackets),p'andthe`proGductionoperator'.%Thecom-Imand~isexpGectedtoproducethelabel.jBBydefault,'ittypesetsthenonterminalInameusing\syntandtheopGeratoratoppositeendsofthelabel,separatedbyanI\hfill.6I1.6gSyntaxdiagramsuTIAfullformalBNFgrammarcanbGesomewhatoverwhelmingforlesstechnicalIreaders.GDoGcumentsaimedatsuchreaderstendtodisplaygrammaticalstructuresIasUUsyntaxdiagr}'ams.XA.syntaxXdiagramisalwaysenclosedinasyntdiagenvironment.ZY*oushould3PsyntdiagIthink?oftheenvironment?asenclosinganewsortofL5ffA͉TU>'ExXmoGde:?tryingtotypeInormalxtextintoasyntaxdiagramwillresultinveryuglyoutput.ܐL5ffA͉TU>'ExXignoresIspacesUUandreturncharacterswhileinsyntaxdiagrammoGde.XTheUUsyntaxoftheenvironmentisverysimple:L͍Ihsynt-diag-enviQ::=FO line10-Ʃ-Ʃff ?ffiffiT\begin{syntdiag}Qffiffiffiffi< lcircle10Lτff3ff&ӄffOffOff&ӟL̈́ff τff3333ffOffOT[ >ffOffOT) cmsy9h*j cmti9declsi ffOffOT]ffOffÖ́ffPݤPݤffiffiffiffiThtexti[ffiffiffiͬ-E-Eff ?ffff'T\end{syntdiag}HP܄ff'ffffͬ-XThehde}'cls!i$18containanydeclarationsyouwanttoinsert,tocontroltheenvir-Ionment.qTheUUparameterstotweakaredescribGedbelow.XWithin@asyntaxdiagram,xyoucanincludesyntacticitemsusingtheabbreviatedIforms CdescribGedelsewhere.ҐTheoutputfromtheseformsismodi edslightlyinIsyntaxUUdiagrammoGdesothatthediagramlooksright.XIprobablyoughttopGointoutnowthatthesyntaxdiagramtypGesettingcom-Imands.proGducebeautiful-lookingdiagramswithalltherulesandcurvesaccuratelyIpGositioned.BSome>devicedriversdon'tpositiontheseob8jectscorrectlyintheirout-Iput.qI'veUUhadparticulartroublewithdvips.I'llsayitagain:it'snotmyfault!XThesyntdiag#environmentonlyworksinparagraphmoGde,*anditactsratherysyntdiag*Ilikeaparagraph,>splittingoverseverallineswhenappropriate.IfyoujustwantIto)typGesetasnippetofasyntaxdiagram,^youcanusethestarredenvironmentIsyntdiag.L͍Ihsynt-diag-star-enviBX::=Ϭ--ff ?ffWffWT\begin{syntdiag*}V}ffWffWffWffWLτff3ff&ӄffOffOff&ӟL̈́ff τff3333ffOffOT[ >ffOffOThdeclsi ffOffOT]ffOffÖ́ffPݤPݤffWffWffWͬ-E-Eff ?ffffOLτff3ff'hffOffOff'hL̈́ff τff3333ffOffOT[ >ffOffOThwidth9i#*ffOffOT]ffOffÖ́ffSq8Sq8ffOffOff'ff'Thtexti[ff'ff'ff'ff'T\end{syntdiag*}M rff'ffff2퍍ͬ- >XWhenΥtypGesettinglittledemoslikethis,,it'snotnormaltofullyadorntheIsyntax[diagramwiththefulldoublearrows(`Ϭ--ffffO ffffͬ-1').ThetwodeclarationsI\left{hharr}'owi$}ands\right{'V^harr}'owiH}PballowsyoutochoGosethearrowsoneachsideIofthesyntaxdiagramsnippGet.oThepossiblevqaluesofharr}'owi)JXareshownintheItable-etteUUbGelow:V>>-,Ϭ--A>-ןϬ-<->I@Ϭ- -><,Ϭ-,A...<-6IsoXThesedeclarationsshouldbGeusedonlyintheoptionalargumenttothe Isyntdiagcommand.хThesecondoptionalargumenttotheenvironment,RifspGe-Ici ed,% xesthewidthofthesyntaxdiagramsnippGet;ifyouomitthisargument,ItheUUdiagramismadejustwideenoughto teverythingin.]G3KSffsjfdExampleUUofrsyntdiaggG*ffsjSffN32ffQg vSff& vConstructionMeaningff&8Ϭ-- ffff]CStartUUofsyntaxdiagramfc8ʦffff]7Cͬ-EndUUofsyntaxdiagram8Ϭ- ffffa7CContinuedUUonnextline8ʦffff`7Cͬ-ContinuedUUfrompreviouslineSff&1ʦffffLτff3ff}҄ffOffOThoption-a9i/]mffOffOff}ҟL̈́ff Lτ ff33ffOffOThoption-b'i.wffOffOL̈́ ffτff3333ff ffOffOThoption-ci.lffOffOff ̈́ff? ? ffffAlternatives:qchoGoseUUanyone31ʦffffLτff33ffffOffOThseparatori3)ffOffOff䍍L̈́ff τff3333ff33ffOffOThrepeat-me i4BffOffOff̈́ffE>ffff GcOneUUormoreitems,withseparatorsfff&SfPffN@$ \newcommand{\bs}[2]{% s-\begin{minipage}{1.6in}%s-\begin{syntdiag*}[\left{#1}\right{#2}][1.6in]% } \newcommand{\es}{\end{syntdiag*}\end{minipage}} \begin{center} \begin{tabular}{cl}D\\\hline \bfConstructionX&\bfMeaningqf\\\hline \bs{>>-}{...}\es&Startofsyntaxdiagram8\\ \bs{...}{-><}\es&EndofsyntaxdiagramB&4\\ \bs{>-} s,{...}\es&Continuedonnextline=l\\ \bs{...}{->} s,\es&Continuedfrompreviousline!\\\hline \bs{...}{...}s-\begin{stack}\\\\\end{stack} \esPR&Alternatives:chooseanyone!\\ \bs{...}{...}s-\begin{rep}\\\end{rep} \esPR&Oneormoreitems,withseparators\\\hline \end{tabular} \end{center}ffN32ffffffNXY*ouuScanalsoincludetextusingthe\tokcommand.Theargumentofthis+\tokIcommandistypGesetinL5ffA͉TU>'ExX'sLRmodeandinsertedintothediagram.SyntaxIabbreviationsOareallowedOwithintheargument,Msoyoucan,Mforexample,includeItextualUUdescriptionslikeX\tok{anyexcept`"'}XWithin@asyntaxdiagram,#achoicebGetweenseveraldi erentitemsisshownby&`stack7^soIstackingDthealternativesvertically*.InL5ffA͉TU>'ExX,@thisisdonebyenclosingtheitems Iin2(astackenvironment.f Each2(individualitemisseparatedby\\commands,91asinIthearray)andtabular)environments.EachrowmaycontainanysyntaxdiagramImaterial,UUincluding\tokcommandsandotherstackenvironments.XNoteKifyouendastackenvironmentwitha\\command,MablankrowisaddedItoUUthebGottomofthestack,indicatingthatnoneoftheitemsneedbespeci ed.XT*extowhichcanbGerepeatedisenclosedinarepenvironment:theotextis/>repIdisplayed(Rwithabackwards(RpGointingarrowdrawnoverit,1RshowingthatitmaybGeIrepGeated.;Optionally*,=youcanspecifytexttobedisplayedinthearrow,=separatingIitUUfromthemaintextwitha\\command.XNotethatitemsonthebackwardsarrowofarepconstructionshouldbGedis-Iplayedb}'ackwards.R]Y*oumustputtheindividualitemsinreverseorderwhenbuild-Iingjthispartofyourdiagrams.syntaxwillcorrectlyreversethearrowsonrepIstructures,o butiapartfromthis,youmustcopGeonyourown.Y*ouarerecommen-IdedTtokeepthesepartsofyourdiagramsassimpleaspGossibletoavoidconfusingIreaders.Sff{JfdAUUsyntaxdiagramXjff{JSffN32ff1WϬ-Z-cff ?ff'ff'Thidenti"H ff'ff'ff'ff'T$o cmr9`('ʄff'ff'ffOffOLτff33ff0)EffOffOT`,'ffOffOff0)EL̈́ff τff3333ff33ffOffLτff3ff3YffOffOff3YL̈́ffff3333ffOffOThtype iffOffLτff3ff@҄ffOffOff@ҟL̈́ffff3333ffOffOThidenti"H ffOffÖ́ff3!3!ffffÖ́ffkSkSffffOff̈́ff3ffOffOffOffOLτff3ffGffOffOffGL̈́ff τff3333ffOffOT`...'zffOffÖ́ff*T*TffOffOff'ff'T`)'ff'ffffͬ-SDffffNP@ \begin{syntdiag} `('s-\begin{rep}\begin{stack}\\Y\begin{stack}\\\end{stack}s-\end{stack}\\`,'\end{rep} \begin{stack}\\`...'\end{stack}`)' \end{syntdiag}_@ffN32ffffffNɍI1.6.1l#LineTbreakinginsyn9taxdiagramsuTISyntaxydiagramsareautomaticallybrokenoverlinesandacrosspages.߰LinesareIonly(brokenbGetweenitemsontheoutermostlevelofthediagram:[i.e.,1notwithinIstackUUorrepenvironments.XY*ouUcanforcealinebreakataparticularplacebyusingthe\\commandasIusual.ȩThisrKsuppGortsalltheusualL5ffA͉TU>'ExXfeatures:a`*'vqariantwhichprohib-IitsDpagebreaking,J@andanoptionalargumentspGecifyingtheextraverticalspaceIbGetweenUUlines.6I1.6.2l#CustomisingTsyn9taxdiagramsIThereUUaretwoUUbasicstylesofsyntaxdiagramssuppGorted:IsquarenkLineshNinthesyntaxdiagramjoinatsquared-o corners.ThisappGearstobbGeGnthestandardwayGnofdisplayingsyntaxdiagramsinIBMG0manuals,andbmostUUotherdoGcumentsI'veseen.8 m\soIroundedwOLinesDcurvearoundcorners.Also,{*noarrowsaredrawnaroundrepGeating bloGops: thecurvingofthelinesprovidesthisinformationinstead.+ThisstyleisbusedninvqarioustextsonPascal,6andappGearstobemorepopularinacademicbcircles.XY*ouJcanspGecifythestyleyouwanttouseforsyntaxdiagramsbygivingtheIstyle?nameasanoptiononthe\usepackagecommand.1gF*orexample,ztoforceIroundedUUedgestobGeused,youcouldsayX\usepackage[rounded]{syntax}XThefsyntdiagenvironmenttakesanoptionargument,&jwhichshouldcontain\sdsize$\sdlengthsIdeclarations'ExXhackerthingsresumeafterthissection.$\syntleft\syntrightIIsGcan'tsseewhyanyonewouldwanttochangethetypGesettingofnonterminals,IalthoughUUI'llprovidethehoGoksforsymmetry'ssake.I84S\newcommand{\syntleft}{$\langle$\normalfont\itshape} I85S\newcommand{\syntright}{$\rangle$}$\ulitleft\ulitrighty\litleft$\litrightINowxwecande netheleftandrightpartsofquotedandunquotedterminals.IUSreadersmaywanttoputdoublequotesaroundthequotedterminals,forex-Iample.15ǩsoI86S\newcommand{\ulitleft}{\normalfont\ttfamily\syn@ttspace\frenchspacing} I87S\newcommand{\ulitright}{}I88S\newcommand{\litleft}{`\bgroup\ulitleft}I89S\newcommand{\litright}{\ulitright\egroup'}6I3.6gSimplesyntaxtyp`esettinguTIIn\generaltext,]weallowaccesstoourtypGesettingconventionsthroughstandard IL5ffA͉TU>'ExXUUcommands.'|\syntIThen\syntmacrotypGesetsitsargumentasasyntacticquantity*.,ItputsthetextIof(theargumentinitalics,1andsetsanglebracketsaroundit.bBreakingofa\syntIob8jectUUacrosslinesisforbidden.I90S\def\synt#1{\mbox{\syntleft{#1\/}\syntright}},`\litIThe.\litmacrotypGesetsitsargumentasliteraltext,tobGetypGedin.SNormally*,Ithistmeanssettingthetextin\ttfont,|andputtingquotesaroundit,althoughItheUUquotescanbGesuppressedbyusingthe-vqariant.XThe\syn@ttspacemacrosetsupthespacingforthetextnicely:<\ttspacesItendUUtobGealittlewide.I91S\def\lit{\@ifstar{\lit@i\ulitleft\ulitright}{\lit@i\litleft\litright}} I92S\def\lit@i#1#2#3{\mbox{#1{#3\/}#2}}b\syn@ttspaceIThisUUsetsupthe\spaceskipvqaluefor\tttext.I93S\def\syn@ttspace{\spaceskip.35em\@plus.2em\@minus.15em\relax}6I3.6.1l#TheTshortcutsuTITheM`easypartisoverM`now.YThenextjobistosetupthe`grammarshortcuts' IwhichUUalloweasychangingofstyles.XW*eUUsuppGortfourshortcuts:Xb`literal?text'UUtypGesets`literaltext'XbUUtypGesetshnon-terminaliXb"unquoted?text"UUtypGesetsunquotedtextXb|UUtypGesetsajcharacterITheseareallimplementedthroughactivecharacters, whichareenabledusingthe I\syntaxShortcutsUUmacro,describGedbelow.$\readuptoI\readupto{}hcharidy}{shde}'cls!io}{oihc}'ommandif}زwillureadallcharactersupuntiltheInextAoGccurrenceofhchari &.6HNormally*,|allspecialcharacterswillbedeactivqated.IHowever,youcanreactivqatesomecharacters,usingthehde}'cls!i$argument,whichIisUUproGcessedbeforethetextisread.XThercoGdeisborrowedrfairlyobviouslyfromtheL5ffA͉TU>'ExX2",8sourceforthe\verbIcommand.I94S\def\readupto#1#2#3{% I95]\bgroup%I96]\verb@eol@error%16lsoI97]\let\do\@makeother\dospecials% I98]#2%I99]\catcode`#1\active%E100]\lccode`\~`#1%E101]\gdef\verb@balance@group{\verb@egroup%E102kJ\@latex@error{\noexpand\verbillegalincommandargument}\@ehc}%E103]\def\@vhook{\verb@egroup#3}%E104]\aftergroup\verb@balance@group%E105]\lowercase{\let~\@vhook}%E106S} L\syn@assistIThe(\syn@assistmacroisusedforde ningthreeoftheshortcuts.bItiscalledasb\syn@assist{޸hleft-de}'cls!i*}{٪hactives!i}{ &θhdelimeteri;Af} l{q@hright-de}'cls!i/}{hend-cmdiLH}XItcreatesanhbGox,!setsuptheescapesequencesforquotingourmagiccharac-Iters,UUandthentypGesetsaboxcontainingbhleft-de}'cls!i*?{j`\>%E111]\chardef\'`\'%E112]\chardef\"`\"%E113]\chardef\`\%XNowUUtode ne\ch.qThisisdonetheobviousway*.E114]\def\ch##1{\char`##1}%XF*orUUactivecharacters,wedosome ddlingwith\lccodes.E115]\def\act##1{% E116f\catcode`##1\active%E117f\begingroup%E118f\lccode`\~`##1%E119f\lowercase{\endgroup\def~}%E120]}%17}soXFinally*,werdotherealworkofsettingthetext.X&W*euse\readuptotoactually I ndUUthetextwewant.E121]#1% E122]\begingroup%E123]\readupto#3{%E124f\catcode`\\0%E125f\catcode`\10%E126f#2%E127]}{%E128f\/\endgroup#4\egroup#5%E129]}%E130S}ff L\syn@shortsIThisdmacroactuallyde nestheexpansionsfortheactivecharacters.W*ehaveIto>dothisseparatelybGecause`mustbeactivewhenweuseitinthe\def,butIweqcan'tdothatanduse\catcodeatthesametime.7Theargumentsarecom-ImandsYtodobGeforeandaftertheactualcommand.} ThesearepassedupfromI\syntaxShortcuts.XAll\Pofthecharactersuse\syn@assistintheobviouswayexceptfor|,^whichIdropsUUintomathsmoGdeinstead.XNoteUUthatwhenchangingthecatcoGdes,wemustsave`untillast.E131S\begingroupE132S\catcode`\<\activeE133S\catcode`\|\activeE134S\catcode`\"\activeE135S\catcode`\`\activeE136S%E137S\gdef\syn@shorts#1#2{%XThe>`<'charactermusttypGesetitsargumentinitalics.,W*emake`_'dotheIsameUUasthe`\_'command.E138]\def<{%E139f#1%E140f\syn@assist%E141p2\syntleft%E142p2{\act_{\@foundunderscore}}%E143p2>%E144p2\syntright%E145p2{#2}%E146]}%XThez``'and`"'charactersshouldprintitsargumentin\ttfont.5W*echangeItheUU`\tt'spacegluetoprovidenicerspacingontheline.E147]\def`{%E148f#1%E149f\syn@assist%E150p2\litleft%E151p2\relax%E152p2'%E153p2\litright%E154p2{#2}%E155]}%E156]\def"{%18겠soE157f#1% E158f\syn@assist%E159p2\ulitleft%E160p2\relax%E161p2"%E162p2\ulitright%E163p2{#2}%E164]}%XFinally*,zwthe?`|'characteristypGesetbyusingthemysterious\textbarcom- Imand.E165]\def|{\textbar}%XW*e'reUU nishedherenow.E166S} E167S%E168S\endgroup \syntaxShortcutsIThisisauser-levelcommandwhichenablestheuseofourshortcutsinthecurrent Igroup.Itauses\addspecial,dde nedbGelow,toregistertheactivecharacters,dsetsIupUUtheirde nitionsandactivqatesthem.XThe5twoargumentsarecommandstobGeperformedbeforeandafterthehand-IlingUUoftheabbreviation.qInthisway*,UUyoucanfurtherproGcesstheoutput.XThisW8commandisnotintendedtobGeuseddirectlybyusers:uitshouldbGeusedIbyBothermacrosandpackqageswhichwishtotakeadvqantageofthefacilitieso eredIby3thispackqage.fW*eprovidea\synshortsdeclaration(whichmaybGeusedasanIenvironment,UUofcourse)whichismore`userpalatable'.E169S\def\syntaxShortcuts#1#2{% E170]\syn@shorts{#1}{#2}%E171]\addspecial\`%E172]\addspecial\<%E173]\addspecial\|%E174]\addspecial\"%E175]\catcode`\|\active%E176]\catcode`\<\active%E177]\catcode`\"\active%E178]\catcode`\`\active%E179S}E180S%E181S\def\synshorts{\syntaxShortcuts\relax\relax}\synshortsoffIThismacrocanbGeusefuloccasionally:)itdisablesthesyntaxshortcuts,soyoucan ItypGeUUnormaltextforawhile.E182S\def\synshortsoff{%E183]\catcode`\|12%E184]\catcode`\<12%E185]\catcode`\"12%E186]\catcode`\`12%E187S}3P\syntaxIThe|\syntaxmacrotypGesetsitsargument,Aallowingtheuseofourshortcutswithin ItheUUargument.19jsoXActually*,cwegotosometroubletoensurethattheargumentto\syntaxisnP't~a IrealargumentsowecanchangecatcoGdesaswego.;3W*eusethe\let\@let@token=ItrickUUfrom0- cmcsc10PlainTU>'ExXtodothis.E188S\def\syntax#{\bgroup\syntaxShortcuts\relax\relax\let\@let@token}㎍3PgrammarIThe5grammarXenvironmentisthe nalob8jectwehavetode ne.gItallowstypGeset-ItingUUofbGeautifulBNFgrammars.XFirst,UUwede nethelengthparametersweneed:E189S\newskip\grammarparsep E190]\grammarparsep8\p@\@plus\p@\@minus\p@E191S\newdimen\grammarindentE192]\grammarindent2emXNow\de nethedefaultlabGeltypGesetting.5Thismacroisdesignedtobereplaced Ibyauser, =sowe'llbGeextra-well-bGehavedandusegenuineL5ffA͉TU>'ExXcommands.[W*ell,IalmostUU...E193S\newcommand{\grammarlabel}[2]{% E194]\synt{#1}\hfill#2%E195S}XNow(forabitofhackingtomaketheitemstu workpropGerly*.bThisgetsdone IforUUeverynewparagraphthat'sstartedwithoutan\itemcommand.XFirst,0storethelefthandsideoftheproGductioninabox.ThenI'llendtheIparagraph,andinsertsomenastygluetotakeupallthespace,sono-onewilleverInoticethattherewasaparagraphbreakthere.KThestrutjustmakessurethatIIknowUUexactlyhowhighthelineis.E196S\def\gr@implitem<#1>#2{% E197]\sbox\z@{\hskip\labelsep\grammarlabel{#1}{#2}}%E198]\strut\@@par%E199]\vskip-\parskip%E200]\vskip-\baselineskip%XTheX\itemcommandwillnoticethatI'veinsertedthesefunnygluesandtryto Iremovez6them:I'llstymieitse ortsbyinsertinganinvisiblerule.kThenI'llinsertItheUUlabGelusing\iteminthenormalway*.E201]\hrule\@height\z@\@depth\z@\relax% E202]\item[\unhbox\z@]%XJustUUbGeforeIgo,I'llmake`<'xbackintoanactivecharacter.E203]\catcode`\<\active%E204S}XNowtfortheenvironmentpropGer.АDeepdown,it'salistenvironment,with IsomeUUnastytrickstostopanyonefromnoticing.XTheUU rstjobistosetupthelistfromtheparametersI'mgiven.E205S\newenvironment{grammar}{% E206]\list{}{%E207f\labelwidth\grammarindent%E208f\leftmargin\grammarindent%E209f\advance\grammarindent\labelsepE210f\itemindent\z@%E211f\listparindent\z@%E212f\parsep\grammarparsep%E213]}%20ԠsoXW*ehavema8jorproblemsin\raggedrightlayouts,whichtrytouse\parto Istart]newlines.W*egobacktonormal\\newlinestotryandbGodge]ourwayIaroundUUtheseproblems.fE214]\let\\\@normalcrfXNowUUtoenabletheshortcuts.E215]\syntaxShortcuts\relax\relax%XNowalittlebitofmagic..The\altmacromovesustoanewline,kandtypGe- Isetsaverticalbarinthemargin.ThisallowstypGesettingofmultilinealternativeIproGductionsUUinaprettyway*.fE216]\def\alt{\\\llap{\textbar\quad}}%XNow'ExX'slinefont,,usedIinSSthepictureenvironment,andSSrules.kThehorizontalrulesofthediagramare21 soIdrawnalongthebaselinesofthelinesinwhichtheyareplaced.]Thetextitemsin Ithe^TdiagramareplacedinbGoxesandloweredbGelowthemainbaseline.StrutsareIaddedUUthroughouttokeeptheverticalspacingconsistent.XTheverticalstructures(stacksandloGops)areallimplementedwithTU>'ExX'sIprimitiveUU\haligncommand.6I3.7.1l#User-con gurableTparametersuTIFirst,wealloGcatethehdimenci(>andhskipikargumentsneeded.KFixedlengths,astheIL5ffA͉TU>'ExXbGookcallsthem,׵arealloGcatedashdimenci&s,totakesomeoftheloado ofIallUUthehskipi7registers.E241S\newskip\sdstartspace E242S\newskip\sdendspaceE243S\newskip\sdmidskipE244S\newskip\sdtokskipE245S\newskip\sdfinalskipE246S\newdimen\sdrulewidthE247S\newdimen\sdcirclediamE248S\newdimen\sdindentXW*eneedsomeTU>'ExXhdimenci'EsforourownpurpGoses,Itogeteverythinginthe Irights,places.LW*euselabGelsforthe`temporary'TU>'ExXparameterswhichweuse,ztoIavoidUUwastingregisters.E249S\dimendef\sd@lower\z@ E250S\dimendef\sd@upper\tw@E251S\dimendef\sd@mid4E252S\dimendef\sd@topcirc6E253S\dimendef\sd@botcirc8 L\sd@setsizeIWhen thetextsizeforsyntaxdiagramschanges,:it'snecessarytoworkoutthe IheightUUforvqariousrulesinthediagram.E254S\def\sd@setsize{%E255]\sd@mid\ht\strutbox%E256]\advance\sd@mid-\dp\strutbox%E257]\sd@mid.5\sd@mid%E258]\sd@upper\sdrulewidth%E259f\advance\sd@upper\sd@mid%E260]\sd@lower\sdrulewidth%E261f\advance\sd@lower-\sd@mid%E262]\sd@topcirc-.5\sdcirclediam%E263f\advance\sd@topcirc\sd@mid%E264]\sd@botcirc-.5\sdcirclediam%E265f\advance\sd@botcirc-\sd@mid%E266S}3P\sdsizeIY*oucansetthedefaulttypGesizeusedbysyntaxdiagramsbyrede ningthe I\sdsizeUUcommand,usingthe\renewcommandcommand.XBy2default,lsyntaxdiagramsaresetslightlysmallerthanthemainbGody2text.^3I X-ffr J= "5-:3LI'vÎe usedpureL#A TAEMXcommandsforthisandthe\sdlengthsmacro,ztotryandillustrate hoÎwthesevaluesmightb'ExXtriestomakethisasawkwardaspGossible, IsoUUwehavetostartmovingthearrowsaroundinbGoxesquitealot.XThe'ExXfeaturesprovidedtoobtain Ithecurves.aThesearedrawnslightlyoGddlytomakeiteasierto tthemintotheIdiagram.XSomeexplanationabGouttheL5ffA͉TU>'ExXcirclefontisprobablycalledforbeforeIwe6goanyfurther.4kThefontconsistsofsetsoffourquadrantsofaparticularIsize5(andsomeothercharacters,.which5aren'timpGortantatthemoment).{gEachIcollectionfofquadrants ttogethertoformapGerfectcircleofagivendiameter.ITheJnindividualquadrantcharactershavestrangebGoundingboxes,LasdescribedinIthe leslcir}'cle.mfdandltpict.dtx,andalsoinAppGendixDofThe&TKß'E-Xbook.4FOurjobIhereistomakethesequadrantsusefulinthecontextofdrawingsyntaxdiagrams.24)7soy\sd@circIFirst,_wede ne\sd@circ,whichpGerformsthecommonpartsofthefourroutines. ISinceOthecharactersinthecirclefontaregroupGedtogether,uwecanpickoutaIparticularcornerpiecebyspGecifyingitsindexintothegroupfortherequiredsize.IThe8\sd@circroutinewillpickouttherequiredcharacter,>giventhisindexasanIargument,UUandputitinbGox2,after ddlingwiththesizesalittle:XbW*ev6clearthewidthtozero.kTheindividualroutinesthenaddakernofthebcorrectUUamount,sothatthequadrantappGearsintherightplace.XbTheopieceisloweredobyhalftherulewidth.GThispGositionsthetopandbbGottomEpiecesofthecircletobehalfwayEoverthebaseline,whichisthebcorrectUUpGositionfortherestofthediagram.XFinally*,4we+makesurewe'reinhorizontalmoGde:\horri cresultsoccurifthisisInotUUthecase.qI'msureIdon'tneedtoexplainthisanymoregraphically*.E312S\def\sd@circ#1{% E313]\@getcirc\sdcirclediam%E314]\advance\@tempcnta#1%E315]\setbox\tw@\hbox{\lower\sdrulewidth%E316f\hbox{\@circlefnt\char\@tempcnta}}%E317]\wd\tw@\z@%E318]\leavevmode%E319S}\sd@tlcirc \sd@trcirc \sd@blcirc \sd@brcircIThesearethemacroswhichactuallydrawquadrantsofcircles.RTheyallcall I\sd@circ,passingܹanappropriateindex,andthen ddlewiththebGoxsizesandIapplyUUkerningspGeci ctothequadrantpGositioning.XTheUUexactrequirementsforpGositioningareasfollows:XbThe0horizontalpartsofthearcsmustliealongthebaseline(i.e.,ghalftheblinemustbGeabovethebaseline,andhalfmustbebelow).[ThisisconsistentbwithUUthehorizontalrulesusedinthediagram.XbThebverticalpartsmustoverlapverticalrulesoneitherside,Hsothatab\vrule\sd@xx4Dcirc ²makesthearcappGeartobearealcurveintheline.XThebrequirements,)areactuallysomewhatinconsistent;9forexample,4ethestacken-bvironment usescurvesb}'eforegthe \vrules.OSpGecialrequirementslikethisarebhandledUUasspGecialcaseslater.XbTheUUheightandwidthofthearcareatleastroughlycorrect.E320S\def\sd@tlcirc{{% E321]\sd@circ3%E322]\ht\tw@\sdrulewidth%E323]\dp\tw@.5\sdcirclediam%E324]\kern-\tw@\sdrulewidth%E325]\raise\sd@mid\box\tw@%E326]\kern.5\sdcirclediam%E327S}}E328S\def\sd@trcirc{{%E329]\sd@circ0%E330]\ht\tw@\sdrulewidth%E331]\dp\tw@.5\sdcirclediam%254XsoE332]\kern.5\sdcirclediam% E333]\raise\sd@mid\box\tw@%E334S}}@E335S\def\sd@blcirc{{%E336]\sd@circ2%E337]\ht\tw@.5\sdcirclediam%E338]\dp\tw@\sdrulewidth%E339]\kern-\tw@\sdrulewidth%E340]\raise\sd@mid\box\tw@%E341]\kern.5\sdcirclediam%E342S}}E343S\def\sd@brcirc{{%E344]\sd@circ1%E345]\ht\tw@.5\sdcirclediam%E346]\dp\tw@\sdrulewidth%E347]\kern.5\sdcirclediam%E348]\raise\sd@mid\box\tw@%E349S}}S3P\sd@llc 3P\sd@rlcIInthebaseline,\ratherthanabGoveit:hence, ItheUUdepthoftherulemustbGeequaltotheheight.Sy\sd@ruleIW*e6useruleleadersinsteadofgluethroughmostofthesyntaxdiagrams.TheIcommandF\sd@rule-.hskipiJdrawsFaruleofthecorrectdimensions,BwhichhastheIbGehaviourUUofan\hskip"Chskipi<в.E364S\def\sd@rule{\leaders\hrule\@height\sd@upper\@depth\sd@lower}S3P\sd@gapITheagapbGetweenaelementsisaddedusingthismacro.fItwillallowalinebreakifIwe'reUUatthetoplevelofthediagram,usingaratherstrangediscretionary*.26A!soXThisUUiscalledas\sd@gap{-U=hskip-r}'egisterijQ}o.aE365S\def\sd@gap#1{%aXFirst,weseeifwe'reatthetoplevel.7Withinconstructs,weavoidtheoverhead Iof\a\discretionary.KW*eputhalfofthewidthoftheskiponeachsideoftheIdiscretionaryUUbreak.E366]\ifsd@base% E367f\skip@#1%E368p2\divide\skip\z@\tw@%E369f\nobreak\sd@rule\hskip\skip@%E370f\discretionary{%E371p2\sd@qarrow{->}%E372f}{%E373p2\hbox{%E374yw^\sd@qarrow{>-}%E375yw^\sd@rule\hskip\sdstartspace%E376yw^\sd@rule\hskip3.5\p@%E377p2}%E378f}{%E379f}%E380f\nobreak\sd@rule\hskip\skip@%aXIfUUwe'renotatthebaselevel,wejustputinaruleofthecorrectwidth.E381]\else%E382f\sd@rule\hskip#1%E383]\fi%E384S},I3.7.6l#TheTsyntdiagqen9vironmentuTIAllUUsyntaxdiagramsarecontainedwithinasyntdiagxenvironment.􍍍ysyntdiagITheUUonlyargumentisacollectionofdeclarations,whichbydefaultist퍍X\sdsize\sdlengthst퍑XHowever,ifptheoptionalargumentisnotspGeci ed,TU>'ExXreadsthe rstcharacter Iof theenvironment,which maynotbGecatcodedcorrectly*.XWesetupthecatcoGdesI rst,)usingothe\syntaxShortcutscommand,andthenreadtheargument.pW*eIdon'tuse\newcommand,ۡbGecausethatwouldinvolvecreatingyetanotherRmacro.ITimeUUto ddlewith\@ifnextchar...E385S\def\syntdiag{% E386]\syntaxShortcuts\sd@tok@i\sd@tok@ii%E387]\@ifnextchar[\syntdiag@i{\syntdiag@i[]}%E388S}aXNowUUweactuallydothejobwe'remeantto.E389S\def\syntdiag@i[#1]{%XTheF rstthingtodoisexecutetheuser'sdeclarations.lW*ethensetupthings IforUUthefontsize.E390]\sdsize\sdlengths% E391]#1%E392]\sd@setsize%27KTsoXNext,UUwestartalist,tochangethetextlayout.⾍E393]\list{}{% E394f\leftmargin\sdindent%E395f\rightmargin\leftmargin%E396f\labelsep\z@%E397f\labelwidth\z@%E398]}%E399]\item[]%⾍XW*erecon guretheparagraphformatquitealotnow.UVWeclear\parfillskip Itoavoidanyjusti cationattheendoftheparagraph.WIW*ealsoturno paragraphIindentation.E400]\parfillskip\z@% E401]\noindent%⾍XNext,UUweaddinthearrowsonthebGeginningoftheline,andabitofglue.E402]\sd@qarrow{>>-}%E403]\nobreak\sd@rule\hskip\sdstartspace%⾍XThisUUisthebaselevelofthediagram,soweenablelinebreaking.E404]\sd@basetrue%XSincetheob8jectsbGeingbrokenareratherlarge,YDweenablesloppyline Ibreaking. zW*eXPalsotrytoavoidXPpagebreaksinmid-diagram,byuppingtheI\interlinepenalty.E405]\sloppy% E406]\interlinepenalty100%E407]\hyphenpenalty0%⾍XW*enJhandleallthespacingwithintheenvironment,sonJwemakeTU>'ExXignore IspacesUUandnewlines.E408]\catcode`\9%E409]\catcode`\^^M9%⾍XW*eUUnowhavetochangethebGehaviourof\\toline-breaksyntaxdiagrams.E410]\let\\\sd@newline%E411]\ignorespaces%E412S}⾍XWhen7weendthediagram, =wejusthavetoaddinthe nal llskip, =anddouble Iarrow.E413S\def\endsyntdiag{%E414]\unskip%E415]\nobreak\sd@rule\hskip\sdmidskip%E416]\sd@rule\hskip\sdfinalskip%E417]\sd@qarrow{-><}%E418]\endlist%E419S}$syntdiag*IThe starredformof=syntdiagtypGesetsasyntaxdiagraminLR-moGde;2thisisuseful IifUUyou'redescribingpartsofsyntaxdiagrams,forexample.XThis#0isinfactreallyeasy*.aThe rstbitwhichchecksforanoptionalargumentIisUUalmostidenticaltothenon-version.28TsoE420S\@namedef{syntdiag*}{% E421]\syntaxShortcuts\sd@tok@i\sd@tok@ii%E422]\@ifnextchar[\syntdiag@s@i{\syntdiag@s@i[]}%E423S}|XHandleUUanotheroptionalargumentgivingthewidthofthebGoxto ll.|E424S\def\syntdiag@s@i[#1]{%E425]\@ifnextchar[{\syntdiag@s@ii{#1}}{\syntdiag@s@iii{#1}{\hbox}}%E426S}E427S\def\syntdiag@s@ii#1[#2]{\syntdiag@s@iii{#1}{\hb@xt@#2}}XNowtoactuallystartthedisplay*.>MThisismostlysimple.Justtomakesure IabGoutUUtheLR-nessofthetypesetting,I'llputeverythinginanhbGox.|E428S\def\syntdiag@s@iii#1#2{%E429]\leavevmode%E430]#2\bgroup%XNowUUcon gurethetypGesettingaccordingtotheuser'swishes.|E431]\let\@@left\left%E432]\let\@@right\right%E433]\def\left##1{\def\sd@startarr{##1}}%E434]\def\right##1{\def\sd@endarr{##1}}%E435]\left{>-}\right{->}%E436]\sdsize\sdlengths%E437]#1%E438]\sd@setsize%E439]\let\left\@@left%E440]\let\right\@@right%XPutUUintheinitialdouble-arrow.|E441]\sd@qarrow\sd@startarr%E442]\sd@rule\hskip\sdmidskip%XW*e'reUUinhorizontalmoGde,sodon'tbotherwithlinebreaking.|E443]\sd@basefalse%XFinally*,UUdisablespacesandthings.E444]\catcode`\9% E445]\catcode`\^^M9%E446]\ignorespaces%E447S}XEndingUUtheenvironmentUUisverysimilar.|E448S\@namedef{endsyntdiag*}{%E449]\unskip%E450]\sd@rule\hskip\sdmidskip%E451]\sd@rule\hskip\sdfinalskip%E452]\sd@qarrow\sd@endarr%E453]\egroup%E454S}躍\sd@qarrowIThisx^typGesetsthevqariousleftandrightarrowsrequiredinsyntaxdiagrams.The IargumentUUisoneof`>>-',`->'c,`>-'or`-><'.E455S\def\sd@qarrow#1{%29^0soE456]\begingroup% E457]\lccode`\~=`\<\lowercase{\def~{<}}%E458]\hbox{\csnamesd@arr@#1\endcsname}%E459]\endgroup%E460S}E461S\@namedef{sd@arr@>>-}{\sd@rightarr\kern-.5\p@\sd@rightarr\kern-\p@}E462S\@namedef{sd@arr@>-}{\sd@rightarr\kern-\p@}E463S\@namedef{sd@arr@->}{\sd@rightarr}E464S\@namedef{sd@arr@-><}{\sd@rightarr\kern-\p@\sd@leftarr}E465S\@namedef{sd@arr@...}{$\cdots$}E466S\@namedef{sd@arr@-}{} L\sd@newlineIThe/linebreakingwithinasyntaxdiagramiscontrolledbythe\sd@newlinecom- Imand,UUtowhich\\isassigned.XW*e]suppGortallthestandardL5ffA͉TU>'ExXfeatureshere.ThelinebreakinginvolvesIadding-a llskipandarrow,5moving-tothenextline,addinganarrowandarule,IandUUcontinuing.E467S\def\sd@newline{\@ifstar{\vadjust{\penalty\@M}\sd@nl@i}\sd@nl@i} E468S\def\sd@nl@i{\@ifnextchar[\sd@nl@ii\sd@nl@iii}E469S\def\sd@nl@ii[#1]{\vspace{#1}\sd@nl@iii}E470S\def\sd@nl@iii{%E471]\nobreak\sd@rule\hskip\sdmidskip%E472]\sd@rule\hskip\sdfinalskip%E473]\kern-3\p@%E474]\sd@rightarr%E475]\newline%E476]\sd@rightarr%E477]\nobreak\sd@rule\hskip\sdstartspace%E478]\sd@rule\hskip3.5\p@%E479S}6I3.7.7l#PuttingTthingsintherigh9tplaceuTISyntax}diagramshavefairlysti requirementsonthepGositioningoftextrelative Itothediagram'srules.]T*ohelppGeople(andme)towriteextensionstothesyntaxIdiagramtypGesettingwhichautomaticallyputthingsintherightplace,IprovideIsomeUUsimplemacros.'|sdboxIBy@placingsometextinthesdbGoxenvironment,{itwillbGereadintoabGoxandIthen6outputatthecorrectheightforthesyntaxdiagram.diNotethatstu intheIbGoxissetinhorizontal(LR)moGde,soyou'llhavetouseaminipageifyouwantIformatted=text.lThemacroalsosuppliesrulesoneithersideofthebGox,(wwithaIlengthUUgivenintheenvironment'sargument.XMacrowritersaregivenexplicitpGermissiontousethisenvironmentthroughItheUU\sdboxand\endsdboxcommandsifthismakeslifeeasier.XThecalculationinthe\endsdboxmacroworksouthowtocentrethebGoxIverticallyԣoverthebaseline.IfthebGox'sheightish,vanditsdepthisd,thenitsIcentre-lineeis(hCa+d)=2efromthebGottomofthebox. SincethebaselineisalreadyIdUUfromthebGottom,weneedtolowerthebGoxby(h8+d)=2d,UUorh=28d=2.E480S\def\sdbox#1{% E481]\@tempskipa#1\relax%E482]\sd@gap\@tempskipa%30g2soE483]\setbox\z@\hbox\bgroup% E484f\begingroup%E485f\catcode`\10%E486f\catcode`\^^M5%E487f\synshortsoff%E488S}E489S\def\endsdbox{%E490f\endgroup%E491]\egroup%E492]\@tempdima\ht\z@%E493]\advance\@tempdima-\dp\z@%E494]\advance\@tempdima-\tw@\sd@mid%E495]\lower.5\@tempdima\box\z@%E496]\sd@gap\@tempskipa%E497S}6I3.7.8l#T9ypQesettingTsyntacticitemsuTIUsing1TthehoGoksbuiltintothesyntaxabbreviationsabGove,hSwetypGesetthetext IintotabGox,andwriteitout,centredoverthebaseline.$AhstruthelpstokeeptheIactualUUtextbaselineslevelforshortpiecesoftext.$\sd@tok@iIThe:preambleforasyntaxabbreviation.uW*estartabGox,sandsetthespaceandIreturncharacterstoworkagain.AxstrutisaddedtothebGoxtoensurecorrectIverticalUUspacingfornormaltext.E498S\def\sd@tok@i{% E499]\sdbox\sdtokskip%E500]\strut%E501]\space%E502S}\sd@tok@iiE503S\def\sd@tok@ii{%E504]\space%E505]\endsdbox%E506S}6I3.7.9l#InsertingTotherpiecesoftextuTIArbitraryUtextmaybGeputintoasyntaxdiagramthroughtheuseofthe\tok Imacro.K`Its`argument'istypGesetinthesamewayasasyntacticitem(centredoverIthebbaseline).]TheimplementationgoGestosomee orttoensurethatthetextIisnotactuallyanargument,toallowcategorycoGdestochangewhilethetextisIbGeingUUtypeset.,`\tokIW*eestartabGox,andmakespaceandreturndotheirnormaljobs. TW*euseI\aftergroup޲toregaincontroloncethebGoxis nished.a\doafterisusedtoIgetUUcontrolafterthegroup nishes.E507S\def\tok#{% E508]\sdbox\sdtokskip%E509]\strut%E510]\enspace%31 ssoE511]\syntaxShortcuts\relax\relax% E512]\doafter\sd@tok%E513S}XTheUU\sd@tokmacroissimilarto\sd@tok@iiabGove.E514S\def\sd@tok{%E515]\enspace%E516]\endsdbox%E517S}6I3.7.10qTheTstacken9vironmentuTITheďstackenvironmentďisusedtopresentalternativesinasyntaxdiagram.vThe IalternativesUUareseparatedby\\commands."\stackITheoptionalpGositioningargumentishandledusingL5ffA͉TU>'ExX's\newcommandmech-Ianism.E518S\newcommand\stack[1][t]{%XFirst,UUweaddsomehorizontalspace.E519]\sd@gap\sdmidskip%XW*e'rewithinacomplexconstruction,soweneedtoclearthe\ifsd@base ag.E520]\begingroup\sd@basefalse%XThe9topandbGottomrowsofthestackaredi erenttotheothers,ssincethe Ivertical frulesmustn'textendallthewayupthesideoftheitem.Y"ThebGottomrowIisڌhandledseparatelyby\endstackbGelow.kThetoprowmustbGehandledviaaI ag,UU\ifsd@toplayer.XInitially*,UUthe agmustbGesettrue.E521]\sd@toplayertrue%XW*eUUsetthe\\commandtoseparatetheitemsinthe\halign.E522]\let\\\sd@stackcr%XTheactualstructuremustbGesetinverticalmoGde,Hbsowemustplaceitina IbGox.I ThepositionargumentdetermineswhetherthismustbGea\vboxora\vtop.IW*eUUalsoinsertabitofroundingiftheoptionssaywemust.E523]\if#1t% E524f\let\@tempa\vtop%E525f\sd@toptrue%E526f\ifsd@round\llap{\sd@trcirc\kern\tw@\sdrulewidth}\fi%E527]\else\if#1b%E528f\let\@tempa\vbox%E529f\sd@topfalse%E530f\ifsd@round\llap{\sd@brcirc\kern\tw@\sdrulewidth}\fi%E531]\else%E532f\sd@err{Badpositionargumentpassedtostack}%E533 {Thepositioningargumentmustbeoneof`t'or`b'. s,I%E534]have^^Jassumedyoumeanttotype`t'.}%E535f\let\@tempa\vtop%E536]\fi\fi%32!}:soXNowUUwestartthebGox,whichwewillcompleteattheendoftheenvironment.E537]\@tempa\bgroup%XW*epmustremoveanyextraspacebGetweenrowsofthetable,sincetheruleswill Inot/joinupcorrectly*.4We/canuse\offinterlineskipsafely*,sinceeachindividualIrowUUcontainsastrut.E538]\offinterlineskip%XNowwecanstartthealignment.0\W*eactuallyusePlainTU>'ExX's\ialignmacro,IwhichUUalsoclears\tabskipforus.E539]\ialign\bgroup%XTheUUpreambleistrivial,sincewemustdoalloftheworkourselvesE540f##\cr%XW*eAcannowstartputtingthetextintoabGoxreadyfortypGesettinglater.kThe IstrutUUmakestheverticalspacingcorrect.E541]\setbox\z@\hbox\bgroup% E542f\strut%E543S}$\endstackITheO rstpartofthisissimilartothe\sd@stackcrmacrobGelow,Pexceptthatthe IverticalH>rulesaredi erent.mjW*edon'tsuppGortroundededgesonsingle-rowstacks,IalthoughUUthisisn'tagreatlosstohumanity*.E544S\def\endstack{% E545]\egroup%E546]\ifsd@toplayer%E547f\sd@dostack\sd@upper\sd@lower\relax\relax%E548]\else%E549f\ifsd@round%E550p2\ifsd@top%E551yw^\sd@dostack{\ht\z@}\sd@botcirc\sd@blcirc\sd@brcirc%E552p2\else%E553yw^\sd@dostack{\ht\z@}\sd@botcirc\relax\relax%E554p2\fi%E555f\else%E556p2\sd@dostack{\ht\z@}\sd@lower\relax\relax%E557f\fi%E558]\fi%XW*eUUnowclosethe\halignandthevbGoxwecreated.E559]\egroup%E560]\egroup%XDealUUwithanyroundingwestartedo .E561]\ifsd@round%E562f\ifsd@topE563p2\rlap{\kern\tw@\sdrulewidth\sd@tlcirc}%E564f\else%E565p2\rlap{\kern\tw@\sdrulewidth\sd@blcirc}%E566f\fi%E567]\fi%33"soXFinally*,UUweaddsomehorizontalgluetospacethediagramout.E568]\endgroup\sd@gap\sdmidskip% E569S} L\sd@stackcrITheUU\\commandissettothismacroduringastackenvironment.E570S\def\sd@stackcr{%XTheUU rstjobistoclosethebGoxcontainingthepreviousitem.E571]\egroup%XNow_wetypGesettheverticalrulesdi erentlydepGendingonwhetherthisis Ithe2P rstiteminthestack.ThisloGoksquiteterrifyinginitially*,ibutit'sjustanIenumerationofthepGossiblecasesforthedi erentvqaluesof\ifsd@toplayer,I\ifsd@top and\ifsd@round,puttinginappropriaterulesandarcsintherightIplaces.E572]\ifsd@toplayer% E573f\ifsd@round%E574p2\ifsd@top%E575yw^\sd@dostack\sd@topcirc{\dp\z@}\relax\relax%E576p2\else%E577yw^\sd@dostack\sd@topcirc{\dp\z@}\sd@tlcirc\sd@trcirc%E578p2\fi%E579f\else%E580p2\sd@dostack\sd@upper{\dp\z@}\relax\relax%E581f\fi%E582]\else%E583f\ifsd@round%E584p2\ifsd@top%E585yw^\sd@dostack{\ht\z@}{\dp\z@}\sd@blcirc\sd@brcirc%E586p2\else%E587yw^\sd@dostack{\ht\z@}{\dp\z@}\sd@tlcirc\sd@trcirc%E588p2\fi%E589f\else%E590p2\sd@dostack{\ht\z@}{\dp\z@}\relax\relax%E591f\fi%E592]\fi%XTheUUnextitemwon'tbGethe rst,soweclearthe ag.E593]\sd@toplayerfalse%XNowUUwehavetosetupthenextcell.qW*eputthetextintoabGoxagain.E594]\setbox\z@\hbox\bgroup% E595f\strut%E596S} L\sd@dostackIActuallyUUtypGesettingthetextinacellisperformedhere.qThemacroiscalledasb\sd@dostack{޸hheightظiÉm}{ ghdepthciJ}{VDhleft-ar}'ci7}{)hright-ar}'ciW_[}Iwhere hheightظi*and hdepthci'\are theheightanddepthoftheverticalrulestoput Iaround,theitem,bandhleft-ar}'ci/;andhright-ar}'ci6ŲarecommandstodrawroundedIedgesUUontheleftandrighthandsidesoftheitem.34#soXThe PvqaluesfortheheightanddeptharequiteoftengoingtobGetheheightand IdepthofbGox0.USinceweemptybGox0inthecourseoftypGesettingtherow,weIneedUUtocachethesizesonentry*.TE597S\def\sd@dostack#1#2#3#4{% E598]\@tempdima#1%E599]\@tempdimb#2%E600]\kern-\tw@\sdrulewidth%E601]\vrule\@height\@tempdima\@depth\@tempdimb\@width\tw@\sdrulewidth%E602]#3%E603]\sd@rule\hfill%E604]\sd@gap\sdtokskip%E605]\unhbox\z@%E606]\sd@gap\sdtokskip%E607]\sd@rule\hfill%E608]#4%E609]\vrule\@height\@tempdima\@depth\@tempdimb\@width\tw@\sdrulewidth%E610]\kern-\tw@\sdrulewidth%E611]\cr%E612S}򺍍I3.7.11qTheTrepen9vironmentuTITheyrepenvironmentyisusedfortypGesettingloopsinthediagram.Again,weuse I\halignwforthetypGesetting.|Loopswaresimplerthanstacks, however,sincewthereIarealwaystworows.kW*estorebGothrowsinbGoxregisters,iandbuildtheloGopatItheUUend.,`\repIAgain,UUweuse\newcommandtoproGcesstheoptionalargument.E613S\newcommand\rep[1][t]{%TXFirst,UUleaveagapontheleftside.E614]\sd@gap\sdmidskip%XW*e'reUUnotatbaselevelanymore,sodisablelinebreaking.E615]\begingroup\sd@basefalse%XRemembGerUUwe'regoingbackwardsnow.E616]\ifsd@backwards\sd@backwardsfalse\else\sd@backwardstrue\fi%XDe neUU\\toseparatethetwoUUpartsoftheloGop.E617ap\let\\\sd@loop%XNowRcchecktheargument,RandusetheappropriatetypGeofbox.pInadditionto IchangingcthetypGesetting,&wemustremembGerwhichwayuptotypGesettheloop,Isince$theendcoGdemustalwaysputthe rstargumentonthebaseline,ʗwiththeIloGopUUeitheraboveUUorbelow.E618]\if#1t% E619f\let\@tempa\vbox%E620f\sd@toptrue%E621]\else\if#1b%E622f\let\@tempa\vtop%E623f\sd@topfalse%E624]\else%35$'soE625f\sd@err{Badpositionargumentpassedtoloop}% E626 {Thepositioningargumentmustbe`t'or`b'. s,Ihave^^J%E627]assumedyoumeanttotype`t'.}%E628f\let\@tempa\vbox%E629f\sd@toptrue%E630]\fi\fi%XNowUUwestartthebGox.񍍑E631]\@tempa\bgroup%XTheUUloGopisbydefaultempty*,apartfromastrut.qThisisputintobGox1.E632]\setbox\tw@\copy\strutbox%XNowUUstarttypGesettingthemaintextinbox0.E633]\setbox\z@\hbox\bgroup\strut% E634S}ii3P\endrepITheUU nalcoGdemust rstclosewhateverbGoxwasopGen.E635S\def\endrep{%E636]\egroup%XNowowetypGesettheloop,adependingonwhichwayupitwasmeanttobGe. IAgain,thisterrifyingpieceofcoGdeisasimplelistofpossibilevqaluesofourvariousI ags.E637]\ifsd@top% E638f\ifsd@round%E639p2\sd@doloop\tw@\z@\relax\relax%E640yw^\sd@tlcirc\sd@trcirc{\sd@rlc\sd@blcirc}{\sd@llc\sd@brcirc}%E641f\else%E642p2\sd@doloop\tw@\z@\relax\sd@downarr\relax\relax\relax\relax%E643f\fi%E644]\else%E645f\ifsd@round%E646p2\sd@doloop\z@\tw@\relax\relax%E647yw^{\sd@rlc\sd@tlcirc}{\sd@llc\sd@trcirc}\sd@blcirc\sd@brcirc%E648f\else%E649p2\sd@doloop\z@\tw@\sd@uparr\relax\relax\relax\relax\relax%E650f\fi%E651]\fi%XCloseUUthevbGoxweopGened.E652]\egroup%XFinally*,UUweleaveagapbGeforethenextstructure.E653]\endgroup\sd@gap\sdmidskip% E654S}iiy\sd@loopIThis'macrohandlesthe\\commandwithinaloGopenvironment.W*e'closethe IcurrentAbGox,Eandstart llinginbGox1.k2W*ealsorede ne\\toraiseanerrorwhenItheUU\\commandisusedagain.E655S\def\sd@loop{% E656]\egroup%E657]\def\\{\sd@err{Toomany\string\\\spacecommandsinloop}\@ehc}%E658]\setbox\tw@\hbox\bgroup\strut%E659S}36%so\sd@doloopIThis(isthemacrowhichactuallycreatesthe\halignfortheloGop.pItiscalled IwithUUfourarguments,as:zpb\sd@doloop{htop-b}'ox4Diñ@}{1:hb}'ottom-box4DiR} O{9Lhtop-arr}'owiB"}{M}hbtm-arr}'owi)}l{q@htop-left-ar}'ci@}{htop-right-ar}'ci}ǘ{hb}'ottom-left-arciDH}{OBhbtm-right-ar}'cit }zoXThetwohb}'ox4Di dargumentsgivethenumbGersofboxestoextractinthetopIandbGottomrowsofthealignment.`Theharr}'owi*argumentsspGecifycharactersItotypGesetattheendofthetopandbottomrowsforarrows.)Thevqarioushar}'ciIargumentsarecommandswhichtypGesetarcsaroundthevqariouspartsoftheitems.XW*e calculatetheheightanddepthofthetwobGoxes,andstoretheminhdimenciIregisters,UUbGecausetheboxesareemptiedbeforetheright-handrulesaretypGeset.XActually*,thetworowsofthealignmentaretypGesetinadi erentmacro:mDweIjustUUpassthecorrectinformationon.=8E660S\def\sd@doloop#1#2#3#4#5#6#7#8{% E661]\@tempdima\dp#1\relax%E662]\@tempdimb\ht#2\relax%E663]\offinterlineskip%E664]\ialign{%E665f##\cr%E666f\ifsd@round%E667p2\sd@doloop@i#1#3\sd@topcirc\@tempdima{#5}{#6}%E668p2\sd@doloop@i#2#4\@tempdimb\sd@botcirc{#7}{#8}%E669f\else%E670p2\sd@doloop@i#1#3\sd@upper\@tempdima{#5}{#6}%E671p2\sd@doloop@i#2#4\@tempdimb\sd@lower{#7}{#8}%E672f\fi%E673]}%E674S}ԍb\sd@doloop@iIHerewedotheactualjoboftypGesettingtherowsofaloGopalignment.JThefour IargumentsUUare:b\sd@doloop@i{?۸hb}'ox4Di}{Ǒharr}'owi6}v{󶀸hrule-heightظi*}{5hrule-depthcii.}l{q@hleft-ar}'ci!}{hright-ar}'ciI}zoXThearrowpGositionisdeterminedbythe\ifsd@backwards ag.RTherestisIfairlyUUsimple.=8E675S\def\sd@doloop@i#1#2#3#4#5#6{% E676]\ifsd@backwards#2\fi%E677]\kern-\tw@\sdrulewidth%E678]\vrule\@height#3\@depth#4\@width\tw@\sdrulewidth%E679]#5%E680]\sd@rule\hfill%E681]\sd@gap\sdtokskip%E682]\unhbox#1%E683]\sd@gap\sdtokskip%E684]\sd@rule\hfill%E685]#6%E686]\vrule\@height#3\@depth#4\@width\tw@\sdrulewidth%E687]\ifsd@backwards\else#2\fi%E688]\kern-\tw@\sdrulewidth%E689]\cr%E690S}37&soI3.8gTheenduTIPhew!DThat'sallofitcompleted.IhopGethiscollectionofcommandsandenvir- IonmentsUUisofsomehelptosomeone.E691Sh(5" cmmi9=pack9age#g i,xϲMarkUUW*oGoding,17May1996*8I2Nq cmbx12AppendixꨍIAenTheffGNUGeneralPublicLicenceIThecLfollowingisthetextoftheGNUcHGeneralPublicLicence,funderthetermsofIwhichUUthissoftwareisdistrubuted."UyGNUTGENERALPUBLICLICENSEmV*ersionUU2,June1991}bCopyrightUU(C)1989,1991F*reeSoftwareUUFoundation,Inc.uJ675UUMassAve,Cambridge,MA02139,USAsbEveryoneUUispGermittedtocopyanddistributeverbatimcopies1ofUUthislicensedoGcument,butchangingitisnotallowed.6IA.1k1PreambleIThe{licensesformostsoftware{aredesignedtotakeawayyourfreedomtoshareandIchange)@it.cBycontrast,2theGNU)5GeneralPublicLicenseisintendedtoguaranteeIyour freedomtoshareandchangefreesoftware|tomakesurethesoftwareisfreeIfor1allitsusers.eThisGeneralPublicLicenseappliestomostoftheF*reeSoftwareIF*oundation'ssoftwareandtoanyotherprogramwhoseauthorscommittousingIit.A(SomeotherF*reeSoftwareFoundationsoftwareiscoveredbytheGNULibraryIGeneralUUPublicLicenseinstead.)qY*oucanapplyittoyourprograms,toGo.XWhenwespGeakoffreesoftware,qwearereferringtofreedom,qnotprice.=OurIGeneralPublicLicensesaredesignedtomakesurethatyouhavethefreedomtoIdistributeՇcopiesoffreesoftwareՇ(andchargeforthisserviceifyouwish),thatyouIreceive4sourcecoGdeorcangetitifyouwantit,thatyoucanchangethesoftwareorIuse"piecesofitinnewfreeprograms;3"andthatyouknowyoucandothesethings.XT*oprotectyourrights,weneedtomakerestrictionsthatforbidanyonetodenyIyouTtheserightsortoaskyoutosurrendertherights.WrTheserestrictionstranslateItocertainrespGonsibilitiesforyouifyoudistributecopiesofthesoftware,$orifyouImoGdifyUUit.XF*oro"example,uifyoudistributecopiesofsuchaprogram,uwhethergratisorforIaġfee,tyoumustgivetherecipientsalltherightsthatyouhave.Y*oumustmakeIsureTMthatthey*,TtoGo,receiveTMorcangetthesourcecode.qoAndyoumustshowthemItheseUUtermssotheyknowtheirrights.XW*eprotectyourrightswithtwosteps:"(1)copyrightthesoftware,֘and(2)o erIyouthislicensewhichgivesyoulegalpGermissiontocopy*,bdistributeand/ormoGdifyItheUUsoftware.38''soXAlso,bforeachauthor'sprotectionandours,wewanttomakecertainthat Ieveryoneunderstandsthatthereisnowarrantyforthisfreesoftware. eIftheIsoftware%ismoGdi edbysomeoneelseandpassedon,wewantitsrecipientstoIknowthatwhattheyhaveisnottheoriginal, %sothatanyproblemsintroGducedbyIothersUUwillnotre ectontheoriginalauthors'reputations.XFinally*,yany>freeprogramisthreatenedconstantlybysoftwarepatents.-W*eIwish(toavoid(thedangerthatredistributorsofafreeprogramwillindividuallyIobtain)patentlicenses,2ine ectmakingtheprogramproprietary*.cETo)preventthis,Iwe]bhavemadeitclearthatanypatentmustbGelicensedforeveryone'sfreeuseorInotUUlicensedatall.XTheBprecisetermsandconditionsforcopying,}IdistributionandmoGdi cationIfollow.ЧIA.2k1Termsqandconditionsforcopying,lMdistributionandk1mo`di cationuTU80.bThisLicenseappliestoanyprogramorotherworkwhichcontainsanoticebplacedbythecopyrightholdersayingitmaybGedistributedunderthetermsbofthisGeneralPublicLicense.KThe\Program",bGelow,referstoanysuchbprogramorwork,Tanda\workbasedontheProgram"meanseitherthebProgramVoranyderivqativeworkundercopyrightlaw:tthatistosay*,W0aworkbcontainingMtheProgramorapGortionofit,eitherverbatimorwithmoGdi-b cationsrand/ortranslatedintoanotherlanguage.[(Hereinafter,ytranslationbiseincludedwithoutlimitationintheterm\moGdi cation".)EachlicenseeisbaddressedUUas\you".bActivities3otherthancopying,mdistributionandmoGdi cationarenotcoveredbbyA,thisLicense;GtheyareoutsideitsscopGe.kTheactofrunningtheProgrambisgnotrestricted,ͫandtheoutputfromtheProgramiscoveredgonlyifitsbcontentsRyconstituteaworkbasedontheProgram(indepGendentofhavingbbGeenmadebyrunningtheProgram).BWhetherthatistruedependsonwhatbtheUUProgramdoGes.0U81.bY*oucmaycopyanddistributeverbatimcopiesoftheProgram'ssourcecoGdebas`youreceiveit,inanymedium,providedthatyouconspicuouslyandappro-bpriately\publishoneachcopyanappropriatecopyrightnoticeanddisclaimerbof\warranty;`ZkeepintactallthenoticesthatrefertothisLicenseandtothebabsencecofanywarranty;andgiveanyotherrecipientsoftheProgramabcopyUUofthisLicensealongwiththeProgram.bY*ouqmaychargeafeeforthephysicalactoftransferringacopy*,I7andyoubmayUUatyouroptiono erwarrantyprotectioninexchangeforafee.0U82.bY*oujmaymoGdifyyourcopyorcopiesoftheProgramoranypGortionofit,bthusformingaworkbasedontheProgram,)2andcopyanddistributesuchbmoGdi cations^orworkunderthetermsofSection1above,provided^thatyoubalsoUUmeetalloftheseconditions:aGf8(a)xY*ou'mustcausethemoGdi ed lestocarryprominentnoticesstatingxthatUUyouchangedthe lesandthedateofanychange.0e(b)xY*ou)Tmustcauseanyworkthatyoudistributeorpublish,2!thatinwholexor)inpartcontainsorisderivedfromtheProgramoranypartthereof,39(Ӡsoxto3bGelicensedasawholeatnochargetoallthirdpartiesunderthe xtermsUUofthisLicense.f(c)xIfthemoGdi edprogramnormallyreadscommandsinteractivelywhenxrun,you*mustcauseit,whenstartedrunningforsuchinteractiveuseinxthe\Amostordinaryway*,]to\AprintordisplayanannouncementincludingxanAappropriatecopyrightAnoticeandanoticethatthereisnowarrantyx(orifabpatenttlicensewouldnotpGermitroyalty-freeredistributionoftheProgrambyballrthosewhoreceivecopiesdirectlyorindirectlythroughyou,thentheonlybwayqyoucouldsatisfybGothitandthisLicensewouldbGetorefrainentirelybfromUUdistributionoftheProgram.bIfnanypGortionofthissectionisheldinvqalidorunenforceableunderanybparticular;circumstance,@thebalanceofthesectionisintendedtoapplyandbtheUUsectionasawholeisintendedtoapplyinothercircumstances.41*rsobIt *isnotthepurpGoseofthissectiontoinduceyoutoinfringeanypatents borAotherpropGertyrightclaimsortocontestvqalidityofanysuchclaims;Gthisbsection?hasthesolepurpGoseofprotectingtheintegrity?ofthefreesoftwarebdistributionΫsystem,whichisimplementedbypubliclicensepractices.DManybpGeople`havemadegenerouscontributionstothewiderangeofsoftwaredis-btributed)throughthatsysteminrelianceonconsistentapplicationofthatbsystem;3itisuptotheauthor/donortodecideifheorsheiswillingtodis-btributesoftwarethroughanyothersystemandalicenseecannotimpGosethatbchoice.bThisAsectionisintendedtomakethoroughlyclearwhatisbGelievedtobGeabconsequenceUUoftherestofthisLicense.U88.bIffthedistributionand/oruseoftheProgramisrestrictedincertaincountriesbeitherTbypatentsorbycopyrightedinterfaces,Ttheoriginalcopyrightholderbwho8placestheProgramunderthisLicensemayaddanexplicitgeograph-bicalI1distributionlimitationexcludingthosecountries,KsothatdistributionisbpGermittedonlyinoramongcountriesnotthusexcluded.Insuchcase,thisbLicense/incorpGoratesthelimitationasifwritteninthebodyofthisLicense.U89.bTheF*reeSoftwareFoundationmaypublishrevisedand/ornewversionsofbthe.GeneralPublicLicensefromtimetotime.SuchnewversionswillbGebsimilarginspirittothepresentversion,butmaydi erindetailtoaddressbnewUUproblemsorconcerns.bEachversionisgivenadistinguishingversionnumbGer.IftheProgramspe-bci esWaversionnumbGerofthisLicensewhichappliestoitand\anylaterbversion",youhavetheoptionoffollowingthetermsandconditionseitherofbthatT"versionorofanylaterversionpublishedbytheF*reeSoftwareF*ounda-btion.!If\theProgramdoGesnotspecifyaversionnumbGerofthisLicense,^youbmayUUchoGoseanyversioneverpublishedbytheF*reeSoftwareF*oundation.P810.bIfB[youwishtoincorpGoratepartsoftheProgramintootherfreeprogramsbwhosefordamages,uincludinganygeneral,uspQecial,incidental>orcon-bsequen9tialqdamagesarisingoutoftheuseorinabilitytousethebprogramg(includingbutnotlimitedtolossofdataordatabQeingbrenderedinaccurateorlossessustainedb9yyouorthirdpartiesorabfailureoftheProgramtoopQeratewithan9yotherprograms),Tevenbif8suc9hholderorotherpartyhasbQeenadvisedofthepossibilit9yofbsuc9hTdamages.sENDTOFTERMSANDCONDITIONS6IA.3k1App`endix:How{toApplyTheseTermstoYourNewk1ProgramsuTIIf youdevelopanewprogram,OandyouwantittobGeofthegreatestpossibleusetoItheapublic,"thebGestwayatoachieveathisistomakeitfreesoftwarewhicheveryoneIcanUUredistributeandchangeundertheseterms.XT*o~doso,/attachthefollowingnoticestotheprogram.|AItissafesttoattachIthemktothestartofeachsource letomoste ectivelyconveytheexclusionofIwarranty;VandVMeach leshouldhaveatleastthe\copyright"lineandapGointertoIwhereUUthefullnoticeisfound.I ICopyright(C)19yy s,IThisprogramisfreesoftware;youcanredistributeitand/ormodifyIitunderthetermsoftheGNUGeneralPublicLicenseaspublishedbyItheFreeSoftwareFoundation;eitherversion2oftheLicense,orI(atyouroption)anylaterversion.IThisprogramisdistributedinthehopethatitwillbeuseful,IbutWITHOUTANYWARRANTY;withouteventheimpliedwarrantyofIMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE. s,SeetheIGNUGeneralPublicLicenseformoredetails.IYoushouldhavereceivedacopyoftheGNUGeneralPublicLicenseIalongwiththisprogram;ifnot,writetotheFreeSoftwareIFoundation,Inc.,675MassAve,Cambridge,MA02139,USA.XAlsoUUaddinformationonhowtocontactyoubyelectronicandpapGermail. XIf theprogramisinteractive,make itoutputashortnoticelikethiswhenitIstartsUUinaninteractiveUUmoGde:IGnomovisionversion69,Copyright(C)19yynameofauthor IGnomovisioncomeswithABSOLUTELYNOWARRANTY;fordetailstype`showw'.IThisisfreesoftware,andyouarewelcometoredistributeitIundercertainconditions;type`showc'fordetails.XThedhypGotheticalcommands`showw'and`showc'shouldshowtheappropriate IpartsoftheGeneralPublicLicense.Ofcourse,5pthecommandsyouusemaybGe43, soIcallednsomethingotherthan`showw'and`showc';theycouldevenbGemouse-clicks IorUUmenuitems{whateversuitsyourprogram.XY*oushouldalsogetyouremployer(ifyouworkasaprogrammer)oryourIschoGol,&Kifany*,tosigna\copyrightdisclaimer"fortheprogram,ifnecessary*.^-HereIisUUasample;alterthenames:IYoyodyne,Inc.,herebydisclaimsallcopyrightinterestintheprogram I`Gnomovision'(whichmakespassesatcompilers)writtenbyJamesHacker.I,1April1989ITyCoon,PresidentofViceXThis4GeneralPublicLicensedoGesnotpermitincorporatingyourprograminto Iproprietary[programs."Ifyourprogramisasubroutinelibrary*,youmayconsiderIitmoreusefultopGermitlinkingproprietaryapplicationswiththelibrary*.3CIfthisIiswhatyouwanttodo,usetheGNULibraryGeneralPublicLicenseinsteadofIthisUULicense.!čIIndexIThe(italicnumbGers(denotethepageswherethecorrespondingentryisdescribed,InumbGers1)underlinedpointtothede nition,8eallothersindicatetheplaceswhereitIisUUused.F!ߍ3t : cmbx9SymCbKols E3I\"3>}.΍}.}.}.}.}.}.}.}.}. 112,T134,174,177,185I\'3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L111I\-3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ38I\/3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. D90,T92,128I\< {N132,T172,176,184,203,221,224,457I\>3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L110I\@@leftƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp431,T439I\@@parP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp198,T220I\@@right}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp432,T440I\@Mv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L467I\@circlefnt}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L316I\@depth r27,T201,364,601,609,678,686I\@ehc }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp102,T657I\@foundunderscoreyꍑ}.΍}.}.}.}.}.}.}.}. 33 fe ?Ŝ,T142I\@getcircl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L313I\@gobble}.΍}.}.}.}.}.}.}.}.}.}.H47,T70,77,234I\@heightH27,T201,364,601,609,678,686I\@ifnextcharYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. g}.΍}. 38,T234,235,387,422,425,468I\@ifstar}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 91,T467I\@ifundefined- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 52,T76I\@latex@error- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L102I\@let@token}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L188I\@linefntl}.΍}.}.}.}.}.}.}. =293,T298,303,309I\@makeother}.΍}.}.}.}.}.}.}. I13,T18,19,21,97I\@minusƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 93,T190I\@namedefl}.΍}.}.}.}.}.}.}. E420,T448,461{466ߍ\@newlistfalseB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.L237 G\@normalcr@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L214\@plusP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 93,T190\@sanitize@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 13,T20\@santizel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ12\@tempaƈ}.΍}.}.}.}.}.}.}.}. 36,T38,40,524, 528,A535,537,619,622,628,631\@tempcnta@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp314,T316\@tempdima@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. Y492{495,A598,601,609,661,667,670\@tempdimb 599,T601,609,662,668,671\@tempskipa}.΍}.}.}.}.}.}.}.}.}.481,T482,496\@totalleftmarginyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.L219\@uscore}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 33,T47\@uscorefalse- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz4\@uscoretrueYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz6\@vhookƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp103,T105\@widthƈ}.΍}.}.}.}.}.}. >27,T601,609,678,686\[3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp231,T234\[[v}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. )5\\ {N109,T124,214,216,410,522,617,657\]3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp232,T235\]]v}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. )5\^3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.409,T445,486\_3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 44,T46\`3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. =135,T171,178,186\|3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. =133,T173,175,183\~3>}.΍}.}.}.}.}.}.}.}.}.}.}. n46,T55,100,118,45744-so I\ 3>}.΍}.}.}.}.}.}.}.}.}. 113,T125,408,444,485;dAI\actL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp115,T142I\activeƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.t44,T68,g99,D116,132{135,175{178,203,224I\addspecial}.΍}.}.}.}.}.}.}.}.}. ~9 ~fe,T53,171{174I\aftergroup}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L104I\altL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 5,T216I\AtBeginDocument}.΍}.}.}.}.}.}.}.}.}.}.}.}. fJ43wMBI\baselineskip- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L200I\beginP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L234g{CI\cdotsP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L465I\chv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L114I\char }.΍}.}.}.}. d114,T293,298,303,309,316I\chardef}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. y109{113I\crv}.΍}.}.}.}.}.}.}.}.}.}.}.}. =540,T611,665,689+DI\DeclareOptionB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.L2{4I\dimendefl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. y249{253I\discretionaryB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.L370I\dov}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. X$11,T16,97I\doafter}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L512I\dospecials}.΍}.}.}.}.}.}.}.}.}.}.}.}. X$11,T17,97pEI\endL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L233I\endlist}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp239,T418I\endrepƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L635Lfe I\endsdboxl}.΍}.}.}.}.}.}.}.}.}.}.489,T505,516I\endstackl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L544Lfe I\endsyntdiagYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L413I\enspace}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp510,T515Ien9vironments:Xgrammarl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.5,T20Tfe ?Xrep }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. )8XsdboxƂ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ30 fJfe ?Xshortverb}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. )2XstackƂ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. )7Xsynshorts}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. )4Xsyntdiag*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.6,T28Tfe ?Xsyntdiag@*}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.6,T27Tfe ?I\everyparl}.΍}.}.}.}.}.}.}.}.}.}.222,T223,238I\ExecuteOptionsz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz7MFI\font }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ29I\fontdimen@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ29I\frenchspacingB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ86QG )%\gr@endsyntdiagz}.΍}.}.}.}.}.}.}.}.}. rp233,T235\gr@implitemYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. rp196,T225\gr@leftsq@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp231,T234\gr@rightsq}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp232,T235\gr@setpar@0}.΍}.}.}.}.}.}.}.}.}.217,T229,233grammarT(en9vironment)j}.΍}.}.}.}.}.}.}. 5,189fe \grammarindentB}.΍}.}.}. E191,T192,207{209\grammarlabel- }.΍}.}.}.}.}.}.}.}.}. , 6,T193,197\grammarparsepB}.΍}.}.}.}.}.}.189,T190,212{nQ H\hb@xt@ƈ}.΍}.}.}.}.}. 303,T309,351,358,427\hruleP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. 127,T201,364\hyphenpenaltyB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.L407SI\ialignƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp539,T664\if@uscore@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.6,T42\ifsd@backwardsz}.΍}.}. =283,T616,676,687\ifsd@base@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp280,T366\ifsd@round}.΍}.}.}.}.}.}.}.}. Y5,T526,530, 549,A561,573,583,638,645,666\ifsd@topl}. d281,T550,562,574,584,637\ifsd@toplayerB}.΍}.}.}.}.}.}.282,T546,572\ignorespaces- }.΍}.}.}.}.}.}.}.}.}.}.}. rp411,T446\interlinepenaltyyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.L406\item }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp202,T399\itemindent}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L210\itshape}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ84R+L\labelsepl}.΍}.}.}.}.}.}.}.}.}.}.197,T209,396\labelwidth}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp207,T397\langleƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ84\lccodeƈ}.΍}.}.}.}.}.}.}. n46,T55,100,118,457\leaders}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L364\leavevmode}.΍}.}.}.}.}.}.}.}.}.}. 124,T318,429\left }.΍}.}.}.}.}.}.}.}.}.}.}. =431,T433,435,439\leftmargin}.΍}.}.}.}.}.}.}.}.}.208,T394,395\linewidth@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L219\list }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp206,T393\listparindentB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.L211\litL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.3,T91Tfe ?\lit@iP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 91,T92\litleft}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. D86 Dfe ?,T91,150\litrightl}.΍}.}.}.}.}.}.}.}.}.}.}.}. D86 Dfe ?,T91,153\llap }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.216,T526,530\lowerP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.304,T315,495\lowercase@0}.΍}.}.}.}. n47,T56,105,119,457PM\mbox }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. D90,T92,108\MessageBreak- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 71,T7845.9so N I\newcommand}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.g}.΍}.}. 84{89,T193,267,270,518,613I\newdimenl}.΍}.}.}.}.}.}.}.}.}.}.}. 191,T246{248I\newenvironmentz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.L205I\newifP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.5,T6,280{283I\newline}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L475I\newskip}.΍}.}.}.}.}.}.}.}.}.}.}.}. 189,T241{245I\nobreak}.΍}. d369,T380,403,415,471,477I\noindentl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L401I\normalfont}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 84,T86͍@OI\offinterlineskipyꍑ}.΍}.}.}.}.}.}.}. rp538,T663+PI\PackageError- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L284I\PackageWarningz}.΍}.}.}.}.}.}.}.}.}.}.}. 70,T77I\parL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.218,T230,233I\parfillskipYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L400I\parsepƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L212I\parshapel}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L219I\parskip}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L199I\penalty}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L467I\ProcessOptionsz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz8I\protect}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ47@QI\quad }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L216BRI\raiseP}.΍}.}.}. d288,T298,325,333,340,348I\rangleƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ85I\readuptol}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 94 fe ?Ŝ,T123I\remspecial}.΍}.}.}.}.}.}.}.}.}.}.}.}. X$10,T15Tfe ? UP,T63I\repL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L613Lfe IrepT(en9vironment)}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. )8I\rightP}.΍}.}.}.}.}.}.}.}.}.}. =432,T434,435,440I\rightmarginYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L395I\rlap }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp563,T565JSI\sbv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ36I\sbox }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L197I\sd@arrowl}.΍}.}.}. 285,T294,299,305,310I\sd@backwardsfalseT}.΍}.}.}.}.}.}.}.}.}.}.}.L616I\sd@backwardstrueyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.L616I\sd@basefalse- }.΍}.}.}.}.}.}.}.443,T520,615I\sd@basetrueYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L404I\sd@blcirc 320 Ɵfe ,T551,565,585,640,647I\sd@botcirc 0253,T264,265,551,553,668I\sd@brcirc 320 Ɵfe ,T530,551,585,640,647I\sd@circ}.΍}.}.}.}. 312 fe ,T321,329,336,344I\sd@doloop@0}.΍}.}. 639,T642,646,649,660fe I\sd@doloop@iYҍ}.΍}. 667,T668,670,671,675fe \sd@dostack}.΍}.}.}. R547,T551,553,556, 575,A577,580,585,587,590,597fe 8\sd@downarr}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp307,T642\sd@endarr@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp434,T452\sd@errƈ}.΍}.}.}.}.}.}.}.}.}. =284 =fe ,T532,625,657\sd@gapƈ}.΍}.}.}.}.}.}. R365 Rfe 2,T482,496,519,568,A604,606,614,653,681,683\sd@leftarr}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp296,T464\sd@llcƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.350fe ,T640,647\sd@loop}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp617,T655Tfe \sd@lowerl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. u249,T260,261,364,547,556,671\sd@midƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. g251,255{257,259,261,263,265,288,A298,325,333,340,348,494\sd@newline}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp410,T467Tfe \sd@nl@i}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp467,T468\sd@nl@iil}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp468,T469\sd@nl@iii@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. y468{470\sd@qarrow@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. u371,T374,402,417,441,452,455fe \sd@rightarrYҍ}.΍}.}. d\291,T461{464,474,476\sd@rlcƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.350fe ,T640,647\sd@roundfalseB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz3\sd@roundtrue- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz2\sd@rule}.΍}.}.}.}.}.}.}.}. 38352,T361,364fe N,369,M375,376,380,382,403,415,M416,442,450,451,471,472,A477,478,603,607,680,684\sd@setsize}.΍}.}.}.}.}.}.}.}.}.254fe ,T392,438\sd@stackcr}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp522,T570Tfe \sd@startarrYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. rp433,T441\sd@tlcirc 320 Ɵfe ,T563,577,587,640,647\sd@tokƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp512,T514\sd@tok@il}.΍}.}.}.}.}.}.}.}.}.}.386,T421,498fe \sd@tok@ii@0}.΍}.}.}.}.}.}.}.}.}.386,T421,503fe \sd@topcirc 0252,T262,263,575,577,667\sd@topfalseYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. rp529,T623\sd@toplayerfalseyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.L593\sd@toplayertrue}.΍}.}.}.}.}.}.}.}.}.}.}.}.L521\sd@toptrue}.΍}.}.}.}.}.}.}.}.}.525,T620,629\sd@trcirc 320 Ɵfe ,T526,577,587,640,647\sd@uparrl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp301,T649\sd@upperl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. u250,T258,259,364,547,580,670\sdboxP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.480,T499,508sdboxT(en9vironment)*}.΍}.}.}.}.}.}.}.}.}.}.}.L480Lfe \sdcirclediam- }.΍}. R247,T262,264,277,313,M323,326,331,332,337,341,A345,347,351,352,358,361\sdendspace}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp242,T272\sdfinalskipYҍ}.΍}. 245,T275,416,451,472\sdindentl}.΍}.}.}.}.}.}.}.}.}.}.248,T278,394\sdlengths@0}.΍}.}.}.}.}.}.}.}. K`9,T270Tfe N,T390,43646/osoI\sdmidskip@0}.΍}.}.}.}.}.}. 38243,T273,415, g442,A450,471,519,568,614,653 UUI\sdrulewidthYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.g}. j246,T258,260,276,303,309,g315,M322,324,330,338,339,g346,M526,530,563,565,600,g601,A609,610,677,678,686,688I\sdsizeƈ}.΍}.}.}.}.}.}.}.}.}.}.}. K`9,T267Tfe N,T390,436I\sdstartspace- }. 241,T271,375,403,477I\sdtokskip@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. g244,g274,A499,508,604,606,681,683I\setlength@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. y271{278I\shortverb@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.2,T51Tfe ?IshortverbT(en9vironment) }.΍}.}.}.}.}.}.}.}. )2I\skip }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L368I\skip@P}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.367,T369,380I\sloppyƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L405I\smallP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L268I\spaceskip@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ93I\stackP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L518Lfe IstackT(en9vironment)*}.΍}.}.}.}.}.}.}.}.}.}.}.}. )7I\strut  198,T500,509,542,595,633,658I\strutboxl}.΍}.}.}.}.}.}.}.}.}.}.255,T256,632I\syn@assist}.΍}.}.}.}.}.}. =107 =fe ,T140,149,158I\syn@shorts}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp131 rpfe Rj,T170I\syn@ttspaceYҍ}.΍}.}.}.}.}.}.}.}.}.}.}. X$66,T86,93fe ?I\synshorts@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 4,T181IsynshortsT(en9vironment) }.΍}.}.}.}.}.}.}.}. )4I\synshortsoff- }.΍}.}.}.}.}.}.}.}.}. , 5,T182Tfe N,T487I\synt }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. ?:3,T90Tfe ? UP,T194I\syntaxƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 4,T188Tfe \syntaxShortcuts}.΍}.}.}.}.}.}.}.}.}.}.}.}. }.΍}.}.}.}.j169jfe d,T188,215,386,421,511\syntdiagl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L385syntdiagT(en9vironment)=ҍ}.΍}.}.}.}.}.}. 6,385fe syntdiag*T(en9vironment) }.΍}.}.}.}.}. 6,420fe \syntdiag@i}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp387,T389\syntdiag@s@i- }.΍}.}.}.}.}.}.}.}.}.}.}. rp422,T424\syntdiag@s@iiB}.΍}.}.}.}.}.}.}.}.}.}. rp425,T427\syntdiag@s@iiiz}.΍}.}.}.}.}.425,T427,428\syntleftl}.΍}.}.}.}.}.}.}.}.}.}.}.}. D84 Dfe ?,T90,141\syntright@0}.΍}.}.}.}.}.}.}.}.}.}.}. D84 Dfe ?,T90,144R T\textbar}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp165,T216\textunderscorez}.΍}.}.}.}.}.}.}.}.}.}.}. 38,T50\tokL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 7,T507Tfe \ttfamilyl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ86QAU\ulitleftl}.΍}.}.}.}.}.}.}.}.}.}.}.}. D86 Dfe ?,T91,159\ulitright@0}.΍}.}.}.}.}.}.}.}.}.}.}. D86 Dfe ?,T91,162\underscore}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 23 Пfe ?,T50\unverbƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.2,T75Tfe ?QdV\vadjust}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L467\verb }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 66,T102\verb@balance@group}.΍}.}.}.}.}.}. rp101,T104\verb@egroupYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}. rp101,T103\verb@eol@errorz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. fJ96\vruleP}.΍}.}.}.}.}.}.}.}.}.}. =601,T609,678,686\vspaceƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L46947;/3t : cmbx92Nq cmbx120- cmcsc10,ow cmss9+kAHff cmssbx10*j cmti9) cmsy9(5" cmmi9'kAH cmssbx10&Cscmtt8%': cmti10$o cmr9#ߤN cmtt9" cmmi10 0ercmmi7K`y cmr10ٓRcmr7< lcircle10O line10