; TeX output 1996.05.27:1831soQcDtGGcmr17The7tGGcmss17at!", cmsy10 npacqkage#XQ cmr12MarkWVoSoding=sܣH2Mary1996:ōINff cmbx12ContentssI"V cmbx101XUserTguidea1 XK`y cmr101.1oDe ningUU@-commandsٍ..p2X1.2oPrede nedUU@-commands.p2I2XImplemen9tationH)3X2.1oOptionsUUhandling .....p3X2.2oHowUUthecommandswork_3X2.3oConvertingcommandonames...........p3X2.4oDe ningUUnewcommands1'.p6X2.5oRobustness'ExX!doGcuments,byexpandingthenumbGerofshortcommandnamesavqailable.ITheݽnewcommandnamesbGeginwiththe` 'ExX'susualscopingrules.BothoftheseIcommandshavecorrespGondingenvironmentswiththesamenames(withouttheIleadingUU`\',obviously).6I"N cmbx121.1gDe ning@-commandsuTIThe<\newatcommandcommandwillde neanew@-UUcommandusingasyntaxsimilarb\newatcommand 6\renewatcommandItoUU\newcommand.qF*orexample,youcouldde neX\newatcommandc[1]{\chapter{#1}}ItoUUmake@c{Lh$': cmti10name[i3};equivqalentto\chapter{2:hname[iR}W.XAE\renewatcommandEisalsoprovidedtorede neexistingcommands,'shouldItheUUneedarise.XF*orTU>'ExXhackers,GIthe\atdefcommandde nes@-UUcommandsusingasyntax!|\atdefIsimilarUUtoTU>'ExX'sbuilt-in\def.XAsG|anexample,thefollowingcommandmakes@/vhtextظi'c/0writeitsargumentIhtextظideinUUitalics:X\atdef/#1/{\textit{#1}}ITherealimplementationofthe@/.../commandisabitmorecomplex,DandisIgivenUUinthenextsection.XY*ou*canuseallofTU>'ExX'sfeaturesforde ningthesyntaxofyourcommand.I(SeeUUchapter20ofTheTKß'E-Xb}'ookhforUUmoredetails.)XSince\atdefisprovidedtobGehavesimilarlyto\def,Yatprovides\atletwhich!|\atletIworksUUsimilarlyto\let.qF*orexampleyoucansayX\atlet!=\indexItoUUallowtheshort@!tobGehaveexactlylike\index.XNoteN5thatallcommandsde nedusingthesecommandsarerobustevenifyouIusewfragilecommandsintheirde nitions. UnlessyoustartdoingverystrangeIthings,UU@-commandsneverneed\protecting.6I1.2gPrede ned@-commandsuTIAsmall numbGerofhopefullyusefulcommandsareprovidedbydefault.ZZTheseareIdescribGedUUinthetablebelow:2 soLhLΟff$fe vCommandE MeaningSff$fe@@E TypGesetsUUan`@'character.fc@/htextظi) /E Inutext(LRUorparagraph)moGde,typesetsuitsar- E gumentemphasised. CInmathsmoGde,WmitalwaysE choGosesUUitalics.&fc@*htextظi) *E TypGesetsUUitsargumenthtextظiFinbGold.@i{htextظi.\}E EquivqalentUUto`\index{$htextظi=[}B'.@I{htextظi.\}E Asqfor@i,8butalsowritesitsargumenttothedoGc- E ument.Sff$feY>XPackqage4writersshouldnotrelyonanyprede ned@-UUcommands{they're Iprovided&forusers,-andusersshouldbGeabletorede nethemwithoutfearofImessing"[anythingup.(Thisincludesthe`standard'commandsprovidedbytheIat)packqage,bytheway*.BThey'reprovidedinthevqaguehopGethattheymightbGeIuseful,UUandasexamples.)!čI2aLImplementationLs1S& cmsy9h'ow cmss9pack9age#g i6I2.1gOptionshandlinguTIW*eneedaswitchtosaywhetherdigitsshouldbGeallowed.!SincethisisauserIthing,UUI'llavoidUU\newifandjustde nethethingbyhand.Ls2S\def\atallowdigits{\let\ifat@digits\iftrue} Ls3S\def\atdisallowdigits{\let\ifat@digits\iffalse}XNowUUde netheoptions.Ls4S\DeclareOption{digits}{\atallowdigits}Ls5S\DeclareOption{nodigits}{\atdisallowdigits}Ls6S\ExecuteOptions{nodigits}Ls7S\ProcessOptions6I2.2gHowthecommandsworkuTIObviously*&wemakethe`@'characteractive.9ItinspGectsthenextcharacter(or Iargument,xactuallyq{itcanbGeenclosedinbracesforlongercommands,althoughIthisUUisabitfutile),andbuildsthecommandnamefromthat.XTheUU\atcommandisequivqalenttotheactive`@'characteralways.I2.3gConvertingcommandnamesuTIW*ewneedtobGeabletoreadan@-UUcommandname, andconvertwittoanormalTU>'ExXIcontrolsequence.First, wedeclaresomecontrolsequencesforbraces, whichweIneedUUlater.Ls8S\begingroup Ls9S\catcode`\<1I10S\catcode`\>23soI11S\catcode`\{12 I12S\catcode`\}12I13S\gdef\at@lb<{>I14S\gdef\at@rb<}>I15S\gdef\at@spc<>I16S\endgroupXI'll@setupsomehelpGerroutinesnow,{tohelpmereadthecommandnames. IThewaythisworksisthatwe\futureletthetokeninto\@let@token.M>TheseIroutinesUUwillthensortoutwhattodonext.y\at@testIGivenUUan\if...test,UUdoGesits rstorsecondargument.I17S\def\at@test#1\then{% I18]#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi%I19S}$\at@ifcatIChecksIthecategorycoGdeofthecurrentcharacter.mIfitmatchestheargument,Kit IdoGesUUitssecondargument,otherwiseitdoesthethird.I20S\def\at@ifcat#1{\at@test\ifcat#1\noexpand\@let@token\then}b\at@ifletterIThisMroutineteststhetokentoseeifit'saletter, OandifsoaddsittothetokenlistIanddoGesthe rstargument;Yotherwiseitdoesthesecondargument.zItacceptsIdigitsUUaslettersiftheswitchisturnedon.XThere'ssomefunlater,$soI'lldescribGethisslowly*.First,wecomparetheIcategorycoGdetoaletter,andifwehaveamatch,weknowwe'redone;4weneedIto)pickuptheletterasanargument.+CIfthecatcoGdeis`other',wemustcompareIwithUUnumbGerstoseeifit'sinrange.I21S\def\at@ifletter#1#2{% I22]\at@ifcatx%I23f{\at@ifletter@ii{#1}}%I24f{\at@ifcat0%I25p2{\at@ifletter@i{#1}{#2}}%I26p2{#2}%I27f}%I28S}XRight.\It's`other'(soit'ssafetohandleasamacroargument)andweneedto Iknow=ifit'sadigit.Thisisalittletricky:QI!use\iftocomparetwocharacters.IThe rstcharacteris`1'or`0'depGendingonthe`digit'switch;!thesecondis`1'Ior`x'depGendingonwhetherit'sactuallyadigit.+=They'llonlymatchifeverything'sIworkedUUoutOK.I29S\def\at@ifletter@i#1#2#3{% I30]\at@test\if%I31f\ifat@digits1\else0\fi%I32f\ifnum`#3<`0x\else\ifnum`#3>`9x\else1\fi\fi%I33]\then%I34f{\at@ifletter@ii{#1}{#3}}%I35f{#2#3}%I36S}XRight;UUwehavethecharacter,soaddittothelistandcarryon.I37S\def\at@ifletter@ii#1#2{\toks@\expandafter{\the\toks@#2}#1}4$ soXNowwede nethecommandnamereadingroutines.GW*ehavealmostղthesame IbGehaviourasTU>'ExX, althoughwecan'tsuppGort`%'charactersforreasonstodowithITU>'ExX'sUUtokenisingalgorithm.\at@read@nameITheUUroutinewhichactuallyreadsthecommandnameworksasfollows:U81.bHavei2apGeekatthenextcharacter._Ifit'saleftorrightbrace,n*thenusethebappropriateUUcharacter.U82.bIf;thecharacterisnotaletter,Jtjustusethecharacter(orwholecontrolbsequence.U83.bFinally*,UUifit'saletter,keepreadinglettersuntilwe ndonethatwasn't.XFirst,UUwedosomesettingupandreadthe rstcharacterI38S\def\at@read@name#1{% I39]\let\at@next=#1%I40]\toks@{}%I41]\futurelet\@let@token\at@rn@i%I42S}XNext,UUsortoutwhattodo,basedonthecategorycoGde.I43S\def\at@rn@i{%I44]\def\@tempa{\afterassignment\at@rn@iv\let\@let@token=}%I45]\at@ifletter%I46f{\futurelet\@let@token\at@rn@iii}%I47f{\at@ifcat\bgroup%I48p2{\toks@\expandafter{\at@lb}\@tempa}%I49p2{\at@ifcat\egroup%I50yw^{\toks@\expandafter{\at@rb}\@tempa}%I51yw^{\at@ifcat\at@spc%I52{\toks@{}\@tempa}%I53{\at@rn@ii}%I54yw^}%I55p2}%I56f}%I57S}XMostUUtypGesoftokenscanbGe ddledusing\string.I58S\def\at@rn@ii#1{%I59]\toks@\expandafter{\string#1}%I60]\at@rn@iv%I61S}XW*e'veUUfoundaletter,soweshouldcheckforanotherone.I62S\def\at@rn@iii{%I63]\at@ifletter%I64f{\futurelet\@let@token\at@rn@iii}%I65f{\@ifnextchar.\at@rn@iv\at@rn@iv}%I66S}XFinally*,PUwe"needtopasstherealstring,asanargument,tothemacro./W*e Imake\@let@tokenrelax,sinceitmightbGesomethingwhichwillupsetTU>'ExXlater,Ie.g.,UUa#character.5/soI67S\def\at@rn@iv{% I68]\let\@let@token\relax%I69]\expandafter\at@next\csnameat.\the\toks@\endcsname%I70S} L\at@cmdnameIGivenUUacontrolsequence,workoutwhich@-commanditcamefrom.fI71S\def\at@cmdname#1{\expandafter\at@cmdname@i\string#1\@@foo}fXNowUUextractthetrailingbits.I72S\def\at@cmdname@i#1.#2\@@foo{#2}\at@decodeIThe\at@decodemacrotakesanextracted@-UUcommandname,landtriestoexecute ItheUUcorrectcontrolsequencederivedfromit.I73S\def\at@decode#1{% I74]\at@test\ifx#1\relax\then{%I75f\PackageError{at}{Unknown@-command`@\at@cmdname#1'}{%I76p2The@-commandyoutypedwasn'trecognised,soI'veignoredit.I77f}%I78]}{%I79f#1%I80]}%I81S},`\@atIW*e'ddlikeameasureofcompatibilitywithamsmath.The@-UUcommandsprovided IbyamsmathworkonlyinmathsmoGde,!sothisgivesusawayofdistinguishing.IIfthecontrolsequence\Iatisde ned,andwe'reinmathsmoGde,we'llcallthatIinsteadUUofdoingourownthing.fI82S\def\@at{% I83]\def\@tempa{\at@read@name\at@decode}%I84]\ifmmode\ifx\Iat\not@@defined\else%I85f\let\@tempa\Iat%I86]\fi\fi%I87]\@tempa%I88S}I2.4gDe ningnewcommandsuTb\at@buildcmdIFirst,UUwede neacommandtobuildtheseothercommands:I89S\def\at@buildcmd#1#2{%I90]\expandafter\def\csname\expandafterI91f\@gobble\string#1@decode\endcsname##1{#2##1}%I92]\edef#1{%I93f\noexpand\at@read@name%I94f\expandafter\noexpand%I95p2\csname\expandafter\@gobble\string#1@decode\endcsname%I96]}%I97S}\newatcommand f\renewatcommand t\provideatcommand "\atdef 3P\atshowINowUUwede nethevqariousopGerationson@-commands.I98S\at@buildcmd\newatcommand\newcommandI99S\at@buildcmd\renewatcommand\renewcommandE100S\at@buildcmd\provideatcommand\providecommand69ksoE101S\at@buildcmd\atdef\def E102S\at@buildcmd\atshow\show덍"\atletI\atlet˲isratherharderthantheothers,BibGecausewewanttoallowpGeopleto Isay8thingslike\atlet$&hname[iD%n=@Nhhname[in.CpThefollowinghackingdoGesthetrick.II'mtryingveryhardtoduplicate\let'sbGehaviourwithrespGecttospacetokensIhere,]to\0avoidanysurprises,]althoughthereprobablywillbGesomedi erences.XInIparticular,UU\afterassignmentwon'tworkinanysensibleway*.XFirst,`Gwe*readthenameofthe@-UUcommandwe'rede ning.sW*ealsoopGenaIgroup,?tostopmessingotherpGeopleup,andmake`@'intoan`other'token,?soIthatUUitdoGesn'tirritatinglylooklikeitsmeaningasacontrolsequence.gGE103S\def\atlet{%E104]\begingroup%E105]\@makeother\@%E106]\at@read@name\atlet@i%E107S}gGXPutzthenameintoascratchmacroforlateruse.Nowseeifthere'sanequalsIsigndupahead.Ifnot,thiswillgobbleanyspacesinbGetweenthe@-UUcommandInameUUandtheargument.gGE108S\def\atlet@i#1{%E109]\def\at@temp{#1}%E110]\@ifnextchar=\atlet@ii{\atlet@ii=}%E111S}gGXNowowegobbletheequalssign(whatevercatcoGdeitis),vaandpeekatthenextItokenUUupaheadusing\letwithnofollowingspace.gGE112S\def\atlet@ii#1{\afterassignment\atlet@iii\global\let\at@gnext=}XThe controlsequence\at@gnextisnow\lettobGewhateverwewanttheI@-UUcommandIBtobGe,'ExX's`short'commandhandling,qwe'llde ne\attoIdecidewhattododepGendingonwhat\protectlookslike.WIfwe'retypGesetting,Iwe^justcall\@at(abGove)andexpGectittocope.=Otherwisewecall\at@protect,IwhichUUscoGopsupthe\fiandthe\@at,andinsertsothermagic.E125S\def\at{\ifx\protect\@typeset@protect\else\at@protect\fi\@at} L\at@protectISincer/wegobbledthe\fifromtheabGove,yewemustputthatback.UW*ethenneedItodothingswhicharemorecomplicated.'If\protectisbGehavinglike\string,IthenxNwedoonesortofprotection.ڱOtherwise, weassumethat\protectisbGeingIlikeUU\noexpand.E126S\def\at@protect\fi#1{% E127]\fi%E128]\ifx\protect\string%E129f\expandafter\at@protect@string%E130]\else%E131f\expandafter\at@protect@noexpand%E132]\fi%E133S}9\at@protect@stringIWhenE\protectis\string,Hwedon'tneedtobGeabletorecovertheoriginaltext Iparticularlyaccurately{it'sfortheusertoloGokat.zTherefore,wejustoutputaI@N?11Ztanduse\stringonthenexttoken.{ThismustbGesucient,M sinceweonlyIallowUUmulti-tokencommandnamesifthe rsttokenisaletter(coGde11).E134S\def\at@protect@string{@\string}Ʋ\at@protect@noexpandIThisisalittlemorecomplex,sincewe'restillexpGectingtobeexecutedproperlyIat)somestage.CHowever,there's)acheekydoGdgewecanemploysincethe\atIcommandisthoroughlyrobusti ed(oratleastitwillbGebythetimewe've nishedIthis).All^~\@unexpandable@protectdoGesisconferrepeatedrobustnessonafragileIcommand.aSince%ourcommandisrobust,/4wedon'tneedthisandwecangetawayIwithjustusingasingle\noexpand,bGothforthe\@at@commandandthefollowingItoken(whichwemustrobustify*,bGecauseno-oneelsecandoitforus{ifanyoneItries,UUtheyendupusingthe@\protectcommandwhichisratherembarassing).XI'llUUgivethede nition,andthenexaminehowthisexpandsinvqariouscases.E135S\def\at@protect@noexpand{\noexpand\@at@@\noexpand} E136S\def\@at@#1{\at}8 OӠsoXAfewpGoints,beforewegointothemainexaminationoftheprotection.YI've Iinserted~a@{11߲token,which~isgobbledby\@at@whenthethingis nallyexpandedIfully*.UUThispreventsfollowingspacetokensinan\input lefrombGeingswallowedIbGecausetheyfollowacontrolsequence.I(Iݧcan'tusethenormal@Ÿ13tmtoken,bGecauseIwhenUU leslikethe.aux learereadin,@isgivencoGde11by\makeatletter.)XNowIforadescriptionofwhythisworks.mWhen\atisexpanded,L;itworksoutIthatti\protectiseither\noexpandor\@unexpandable@protect,.andbGecomesI\at@protect@noexpand.Becauseofthe\noexpandtokens,YthisstopsbGeingex-Ipandedonceitreaches\@at@?@(111 b> cmmi10x(wherexisthetokenimmediatelyfollowingIthe"@13)'character).=aIf"thisisexpandedagain,דforexampleinanother\edef,orinaI\writeNora\mark,Pthe\@at@wakesNup,gobblesthefollowing@(whatevercatcoGdeIitis{theremaybGeintervening\writeand\inputcommands)andbGecomes\at,IandUUthewholethingcanstartoverUUagain.\7I2.6gEnablinganddisabling@-commandsuT'|\atonIW*eide nethe\atoncommandtoenableallofourmagic..$WestoretheoldcatcoGdeIinUUthe\atoffcommand,make`@'active,andmakeitdothestu .E137S\def\aton{% E138]\ifnum\catcode`\@=\active\else%E139f\edef\atoff{\catcode`\noexpand\@\the\catcode`\@}%E140f\catcode`\@\active%E141f\lccode`\~`\@%E142f\lowercase{\let~\at}%E143]\fi%E144S}˝"\atoffIThe \atoffcommandmakes`@'dothestu it'smeantto.XW*eremembGertheold IcatcoGdeUUandreverttoit.qThisislargelyunnecessary*.E145S\def\atoff{\catcode`\@12}b\makeatotherINowUUwemakeouractive`@'thedefaultoutsideofpackqage les.E146S\let\makeatother\atonXAndWwemustmakesurethattheusercanuseallofournicecommands.[Once ItheUUdoGcumentstarts,weallow@-commands.E147S\AtBeginDocument{\aton} L\dospecials \@sanitizeIW*eUUmustaddthe`@'charactertothevqariousspGecialslists.E148S\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\@} E149S\expandafter\def\expandafter\@sanitize\expandafter{%E150]\@sanitize\@makeother\@}\7I2.7gDefault@-commandsuTIW*eUUde nesometrivialexamplestogettheusergoing.E151S\expandafter\chardef\csnameat.@\endcsname=`\@E152S\atdef*#1*{\ifmmode\mathbf{#1}\else\textbf{#1}\fi}E153S\atdef/#1/{\ifmmode\mathit{#1}\else\emph{#1}\fi}E154S\atleti=\indexE155S\atdefI#1{#1\index{#1}}E156Sh%5" cmmi9=pack9age#g i9 ^so1xвMarkUUW*oGoding,2May1996*8I,Nq cmbx12AppendixꨍIAenTheffGNUGeneralPublicLicenceIThecLfollowingisthetextoftheGNUcHGeneralPublicLicence,funderthetermsof IwhichUUthissoftwareisdistrubuted."UyGNUTGENERALPUBLICLICENSEmV*ersionUU2,June1991}bCopyrightUU(C)1989,1991F*reeSoftwareUUFoundation,Inc.uJ675UUMassAve,Cambridge,MA02139,USAsbEveryoneUUispGermittedtocopyanddistributeverbatimcopies1ofUUthislicensedoGcument,butchangingitisnotallowed.6IA.1k1PreambleuTIThe{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.XAlso,bforeachauthor'sprotectionandours,wewanttomakecertainthatIeveryoneunderstandsthatthereisnowarrantyforthisfreesoftware. eIftheIsoftware%ismoGdi edbysomeoneelseandpassedon,wewantitsrecipientstoIknowthatwhattheyhaveisnottheoriginal, %sothatanyproblemsintroGducedbyIothersUUwillnotre ectontheoriginalauthors'reputations.10 ksoXFinally*,yany>freeprogramisthreatenedconstantlybysoftwarepatents.-W*e Iwish(toavoid(thedangerthatredistributorsofafreeprogramwillindividuallyIobtain)patentlicenses,2ine ectmakingtheprogramproprietary*.cETo)preventthis,Iwe]bhavemadeitclearthatanypatentmustbGelicensedforeveryone'sfreeuseorInotUUlicensedatall.XTheBprecisetermsandconditionsforcopying,}IdistributionandmoGdi cationIfollow.6IA.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.U81.bY*oucmaycopyanddistributeverbatimcopiesoftheProgram'ssourcecoGdebas`youreceiveit,inanymedium,providedthatyouconspicuouslyandappro-bpriately\publishoneachcopyanappropriatecopyrightnoticeanddisclaimerbof\warranty;`ZkeepintactallthenoticesthatrefertothisLicenseandtothebabsencecofanywarranty;andgiveanyotherrecipientsoftheProgramabcopyUUofthisLicensealongwiththeProgram.bY*ouqmaychargeafeeforthephysicalactoftransferringacopy*,I7andyoubmayUUatyouroptiono erwarrantyprotectioninexchangeforafee.U82.bY*oujmaymoGdifyyourcopyorcopiesoftheProgramoranypGortionofit,bthusformingaworkbasedontheProgram,)2andcopyanddistributesuchbmoGdi cations^orworkunderthetermsofSection1above,provided^thatyoubalsoUUmeetalloftheseconditions:f8(a)xY*ou'mustcausethemoGdi ed lestocarryprominentnoticesstatingxthatUUyouchangedthe lesandthedateofanychange.e(b)xY*ou)Tmustcauseanyworkthatyoudistributeorpublish,2!thatinwholexor)inpartcontainsorisderivedfromtheProgramoranypartthereof,xto3bGelicensedasawholeatnochargetoallthirdpartiesunderthextermsUUofthisLicense.f(c)xIfthemoGdi edprogramnormallyreadscommandsinteractivelywhenxrun,you*mustcauseit,whenstartedrunningforsuchinteractiveusein11 ysoxthe\Amostordinaryway*,]to\Aprintordisplayanannouncementincluding xanAappropriatecopyrightAnoticeandanoticethatthereisnowarrantyx(orifabpatenttlicensewouldnotpGermitroyalty-freeredistributionoftheProgrambyballrthosewhoreceivecopiesdirectlyorindirectlythroughyou,thentheonlybwayqyoucouldsatisfybGothitandthisLicensewouldbGetorefrainentirelybfromUUdistributionoftheProgram.bIfnanypGortionofthissectionisheldinvqalidorunenforceableunderanybparticular;circumstance,@thebalanceofthesectionisintendedtoapplyandbtheUUsectionasawholeisintendedtoapplyinothercircumstances.bIt *isnotthepurpGoseofthissectiontoinduceyoutoinfringeanypatentsborAotherpropGertyrightclaimsortocontestvqalidityofanysuchclaims;Gthis13sobsection?hasthesolepurpGoseofprotectingtheintegrity?ofthefreesoftware bdistributionΫsystem,whichisimplementedbypubliclicensepractices.DManybpGeople`havemadegenerouscontributionstothewiderangeofsoftwaredis-btributed)throughthatsysteminrelianceonconsistentapplicationofthatbsystem;3itisuptotheauthor/donortodecideifheorsheiswillingtodis-btributesoftwarethroughanyothersystemandalicenseecannotimpGosethatbchoice.鍑bThisAsectionisintendedtomakethoroughlyclearwhatisbGelievedtobGeabconsequenceUUoftherestofthisLicense.Eҍ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,5pthecommandsyouusemaybGeIcallednsomethingotherthan`showw'and`showc';theycouldevenbGemouse-clicksIorUUmenuitems{whateversuitsyourprogram.15GsoXY*oushouldalsogetyouremployer(ifyouworkasaprogrammer)oryour IschoGol,&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.^!ߍ-t : cmbx9SymCbKols I\<3>}#o cmr9.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz9I\>3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ10I\@3>}.΍}.}.}. /105,T138{141,145,148,150,151I\@@fooP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 71,T72I\@atL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 82 fe ?Ŝ,T125I\@at@ }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp135,T136I\@firstoftwoYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ18I\@gobble}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 91,T95I\@ifnextcharYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 65,T110I\@let@token}.΍}.}.}.}. R20,T41,44,46,64,68I\@makeother}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp105,T150I\@sanitize@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L148Lfe I\@secondoftwo- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ18I\@tempaƈ}.΍}.}.}.}. Ȧ44,T48,50,52,83,85,87I\@typeset@protectyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}.L125I\{3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ11I\}3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ12I\~3>}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L141!;dAI\activeƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp138,T140I\afterassignment}.΍}.}.}.}.}.}.}.}.}. 44,T112I\atv}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.125fe ,T136,142I\at@buildcmdYҍ}.΍}.}.}.}.}.}.}.}.}.}. L89 Lfe ? ,T98{102I\at@cmdname}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 71 Пfe ?,T75I\at@cmdname@i- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}. 71,T72I\at@decode@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 73 Пfe ?,T83I\at@gnextl}.΍}.}.}.}.}.}.}.}.}.}.112,T114,118I\at@ifcatl}.΍}.}.}.}.}. R20 Rfe ?IN,T22,24,47,49,51I\at@ifletterYҍ}.΍}.}.}.}.}.}.}.}.}.}.}. X$21 X$fe ? ,T45,63ߍ\at@ifletter@iB}.΍}.}.}.}.}.}.}.}.}.}.}.}. 25,T29 \at@ifletter@iiz}.΍}.}.}.}.}.}.}.}. X$23,T34,37\at@lbP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 13,T48\at@next}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 39,T69\at@protect}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp125,T126Tfe \at@protect@noexpandfč}.΍}.}.}.}.}. rp131,T135Tfe \at@protect@stringT}.΍}.}.}.}.}.}.}. rp129,T134Tfe \at@rbP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 14,T50\at@read@name- }.΍}.}.}. #38 #fe ?c,T83,93,106,115\at@rn@i}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 41,T43\at@rn@iil}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 53,T58\at@rn@iii@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. X$46,T62,64\at@rn@ivl}.΍}.}.}.}.}.}.}.}.}.}. x44,T60,65,67\at@spcƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 15,T51\at@temp}.΍}.}.}.}.}.}.}.}.}.}.}.109,T118,123\at@test}.΍}.}.}.}.}.}.}.}.}.}.}. x17 xfe ?Wt,T20,30,74\atallowdigitsB}.΍}.}.}.}.}.}.}.}.}.}.}.2,T.j cmti92,4\AtBeginDocument}.΍}.}.}.}.}.}.}.}.}.}.}.}.L147\atdefP}.΍}.}.}.}.}.}.}.}.}. 2,T98Tfe ? UP,T152,153,155\atdisallowdigitsyꍑ}.΍}.}.}.}.}.}.}.}.2,T3,5\atletP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. , 2,T103Tfe N,T154\atlet@i}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp106,T108\atlet@iil}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp110,T112\atlet@iii@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. rp112,T113\atlet@ivl}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp115,T121\atoffP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp139,T145Tfe \aton }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.137fe ,T146,147\atshowƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ98 fJfe ?!Q{C\chardef}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L15116so+D I\DeclareOptionB}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. K4,T5I\dov}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L148I\dospecials}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L148Lfe 33pEI\emph }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L153I\ExecuteOptionsz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz6MFI\futurelet@0}.΍}.}.}.}.}.}.}.}.}.}.}.}. X$41,T46,64=II\IatL}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. 84,T85I\ifat@digitsYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}. ~2,T3,31I\indexP}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp154,T155 +LI\lccodeƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L141I\lowercase@0}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L1423MI\makeatotherYҍ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L146Lfe I\mathbfƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L152I\mathitƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L153Q N b\newatcommand- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.2,T98Tfe ?\newcommand}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ98\not@@defined- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ84'R+P\PackageError- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ75\ProcessOptionsz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. yz7\protect}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. rp125,T128\provideatcommandyꍑ}.΍}.}.}.}.}.}.}.}.}.}.}. fJ98 fJfe ?\providecommandz}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.L100Q€R\renewatcommandz}.΍}.}.}.}.}.}.}.}.}.}.}.2,T98Tfe ?\renewcommand- }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. fJ99RʮS\show }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L102R T\textbfƈ}.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.L152\then }.΍}.}.}.}.}.}.}.}.}.}.}.}.}.}. x17,T20,33,74\toks@P}.΍}.}.}.}.}. Ȧ37,T40,48,50,52,59,6917; .j cmti9-t : cmbx9,Nq cmbx12'ow cmss9& cmsy9%5" cmmi9$': cmti10#o cmr9"N cmbx12!ߤN cmtt9 cmmi10K`y cmr10ٓRcmr7