; TeX output 1997.03.06:1731sogDtGGcmr17The7tGGcmss17graphicxpacqkage!", cmsy10XQ cmr12D.PV.Carlisle YS.PV.Q.Rahrtz37 1996/10/31:ōINff cmbx121aLIntros3ductionIK`y cmr10This4packqageprovidesanalternativeinterfacetotheL5ffٓRcmr7A͉TU>'ExX2 b> cmmi10"+6graphicsfunctions. IThecommandnamesprovidedarethesameasinthestandardpackqage,andtheyIusejthesameinternalfunctions.HoweverthemeaningoftheoptionalargumentsIisdi erent.AONote': cmti10onlyjtheoptionalargumentshavechanged:)anydoGcumentwhichIonly[usesthegraphicscommandswiththemandatoryargumentsand/orthestar-IformsSwillworkidentically(withessentiallyidenticalimplementation)withtheItwoUUpackqages.!čI2aLKey=VfalueffInterfaceIWhenthedecisiontoproGduceL5ffA͉TU>'ExX2"*{twasmade,certain`guidingprinciples'wereImade"(andpublishedintheoriginalannouncement).OneofthesewasthatallInewpfeatureswould`conformtotheconventionsofversion2.09'.&SpGeci callythisImeantdthatnewcommandswouldobGeythesamebasicsyntaxrulesforargumentsIasUUtheexistingcommands.XStandard L5ffA͉TU>'ExXoptionalargumentsarep}'ositional.XIfacommandweretotakeIthreeoptionalarguments,thentherewouldbGenowayofspGecifyingonlythethird,Ionewwouldhavetogiveallthree,evenifthe rsttwowererepGeatsofthedefaultIvqalues.gBasicallythismeansthat`standard'optionalargumentsarenotsuitableIifj;thereismorethanoneoption.zV*ariousexistingpackqages(forL5ffA͉TU>'ExX2.09)haveIrecognised޶this,andused`namedarguments'invqariousforms. PerhapsthetwoImostnoticeableare'ExX3pro8jectdoappreciatetheimportanceofthiskindofIsyntax,rBbut9}feltthatratherthanextendingthesyntaxofL5ffA͉TU>'ExXinanuncoGordinatedIway*,[itwouldbGebettertokeepwith`standardarguments'inL5ffA͉TU>'ExX2")j,[whichisIintendedasa`consolidationofexistingL5ffA͉TU>'ExXvqariants'.qThelongtermplanningIforQ_aneventualQ_L5ffA͉TU>'ExX3releasewillthenbGeabletoconsiderthewholeL5ffATU>'ExXuserIinterface,ϔand!asuitablesyntaxfornamedarguments.+ItisimpGortantthatsuchIaninterfacedesignisnothampGeredbyhavingtoretaincompatibilitywithearlierIattempts atanamedargumentsyntax.NF*orthisreasonthisgraphicxpackqage,IJffr @ -:q% cmsy6L|{Ycmr8ThisX lehasvÎersionnumb'ExXtoloGokforb%%HiResBoundingBox;commentsratherthanthestandard%%BoundingBox.bMaydbGesettofalsetooverrideadefaultsettingoftruespGeci edbythebhiresbbUUpackqageoption.Iangleh1RotationUUangle.IoriginkRotationUUorigin(see\rotatebox,bGelow).IwidthjRequiredwidth,śadimension(defaultunitsbp).5ThegraphicwillbGescaledbtoUUmakethewidththespGeci eddimension.Iheigh9tm%KRequiredUUheight.qadimension(defaultunitsbp).Itotalheigh9tRequiredtotalheight(ieheight+depth).?adimension(defaultunitsbbp).qMostUUusefulafterarotation(whentheheightmightbGezero).Ik9eepaspQectratioBoGolean[Lvqaluedkey(likeclip).Ifitissettotrue,\moGdifythebmeaningofthewidthandheight(andtotalheight)keyssuchthatifbGothbare+spGeci edthenratherthandistortthe gurethe gureisscaledsuchthatbneitherUUdimensionexc}'eeds'vtheUUstateddimensions.Iscalee߲ScaleUUfactor.2tsoIclip_㈲Either`true'or`false'(ornovqalue, whichisequivalentto`true').EClipthe bgraphicUUtothebGoundingbox(orviewportifoneisspeci ed)."Idraftfa|bGooleanvqaluedkey*,like`clip'.loGcallyswitchestodraftmoGde,ie.donotbincludeUUthegraphic,butleaveUUthecorrectspace,andprintthe lename.It9ypQed3SpGecifyUUthe letype.q(Normallydeterminedfromthe leextension.)Iext]SpGecifyUUthe leextension.qOnly7Ҳforusewithtype.IreadcjSpGecifyTthe`read le'whichisusedfordeterminingthesizeofthegraphic.bOnly7ҲforUUusewithtype.Icommand~eCSpGecifyUUthe lecommand.qOnly7Ҳforusewithtype.CXThelargumentsareinterpretedlefttoright.clip,rdraft,bb,,andlbbllxetc.Ihavethesamee ectwherevertheyappGear.butthescalingandrotationkeysIinteract.XAnyscalingthatisspGeci edb}'eforeWrotation,ishandledbytheinternalgraphicsIinclusionzfunction.>6Rotation,oranylaterscalingishandledbyimplicitlycallingI\rotatebox˲or\scalebox.HDSo[height=1in,angle=90]scalesthegraphicto1in,Ithen rotatesit,soitisoneinchwide.Y[angle=90,height=1in] rstrotates,thenIscales{theresultsothatitis1inhigh.6A{driverthatcanscaleincludedgraphics,IbutpnotarbitrarytextwillnotbGeabletosupportthesecondform,8asitwillrequireIacallto\scalebox,butthe rstformshouldworkastherethescalingishandledIbyUU\Ginclude@graphics.\rotateboxI[hkey-vallistظi7<]{hangle[i}{htextظi}IRotateUUtext.XTheUUkeyssuppGortedby\rotateboxare:IoriginkSpGecifydthecentreofrotation.origin=hlab}'eliܲ,huwherethelabelsareuptobtwoUUoflrctbB(Bdenotesthebaseline,asforPST*ricks)."Ix,y]UPAnSalternativetoorigin.sx=hdimenci#`,y=hdimenci&ʳThex;y,coGordinateofthebcentreUUofrotation.qAsusual\heightetcmaybGeused.IunitsfSpGecifystheunitsusedinthemainargument.0egunits=-360wouldmeanbthatmtheargumentreferedtodegreesclo}'ckwiseȲinsteadofthedefaultanti-bcloGckwiseUUrotation.CXAsCanexample\rotatebox[origin=c]{180}{text}willrotate\text"aroundIitsL*centre,3thuscreatinga nalbGoxofthesamedimensionsastheoriginalbGox.dThisIis٬tobGecontrastedtothedefaultbehaviour,which٬rotatesaroundthereferenceIpGointUUonthebaseline,thusproGducingaboxthatismainlyb}'elowhthebaseline. I4aLImplementationLs1S# cmsy9h$ow cmss9pack9age#g i"XAllUUtheoptionsarehandledbythe'm#R cmss10graphicspackqage. Ls2S\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}} 葍Ls3S\ProcessOptionsXThisUUpackqagerequiresthesetwobuildingbloGcks.3ؠsoLs4S\RequirePackage{keyval,graphics}OI(N cmbx124.1gGraphicsInclusionuTIFirstwedeclarethe`bGoundingbox'keys.\Thesealluse\Gin@defaultbpsothat Ithejhvalue[i&ccanjbGegivenasalengthintheusualTU>'ExXunitssuchascmorasanIinteger,UUtakenasbp.썍\KV@Gin@bb OLs5S\define@key{Gin}{bb} Ls6 {\Gin@bboxtrue\Gread@parse@bb#1\\}\KV@Gin@bbllx \KV@Gin@bblly \KV@Gin@bburx \KV@Gin@bburyLs7S\define@key{Gin}{bbllx} Ls8 {\Gin@bboxtrue\Gin@defaultbp\Gin@llx{#1}}Ls9S\define@key{Gin}{bblly}I10 {\Gin@bboxtrue\Gin@defaultbp\Gin@lly{#1}}I11S\define@key{Gin}{bburx}I12 {\Gin@bboxtrue\Gin@defaultbp\Gin@urx{#1}}I13S\define@key{Gin}{bbury}I14 {\Gin@bboxtrue\Gin@defaultbp\Gin@ury{#1}}썍f\KV@Gin@hiresbbIIf[}settotrue(thedefault)TU>'ExXwillloGokforboundingboxcommentsoftheform I%%HiResBoundingBox+(whichtypicallyhaverealvqalues)insteadofthestandardI%%BoundingBox(whichshouldhaveintegervqalues).ItmaybGesettofalsetoIoverrideUUapackqageoptionofhiresbb.I15S\define@key{Gin}{hiresbb}[true]{% I16]\edef\Gread@BBox{%I17f\@percentchar\@percentcharI18f\csnameif#1\endcsnameHiRes\fiI19fBoundingBox}}썍t\KV@Gin@natheight t\KV@Gin@natheightI20S\let\KV@Gin@natwidth\KV@Gin@bburxI21S\let\KV@Gin@natheight\KV@Gin@bbury썍 \KV@Gin@viewport b\KV@Gin@trimIAz`viewpGort'isauser-speci edareaofthegraphictobeincluded.DnItshouldnot IbGeconfusedwiththe`BoundingBox'ofaPS le.?Infact, theoriginforaviewportIspGeci cationisthe(llx,lly)lowerleftcoordinateoftheboundingbox.+=IfaviewportIislspGeci ed,رandclippingisturnedon,clippingisbasedontheviewpGort,notonItheUUbGoundingbox.XBothf`viewpGort'and`trim'weresuggested(andoriginally*,kRbutdi erently*,kRim-Iplemented)UUbyArthurOgawa.I22S\define@key{Gin}{viewport} I23 {\let\Gin@viewport@code\Gin@viewport\Gread@parse@vp#1\\}I24S\define@key{Gin}{trim}I25 {\let\Gin@viewport@code\Gin@trim\Gread@parse@vp#1\\}썍f\Gread@parse@vpIGrabsfourbGoundingboxvqalueslike\Gread@parse@bpbutsavestheminalterna- ItiveEmacrosthatareusedintheviewpGortandtrimcasestomodifytheboundingIbGoxUUreadfromthe le.I26S\def\Gread@parse@vp#1#2#3#4#5\\{% I27]\Gin@defaultbp\Gin@vllx{#1}%4*soI28]\Gin@defaultbp\Gin@vlly{#2}% I29]\Gin@defaultbp\Gin@vurx{#3}%I30]\Gin@defaultbp\Gin@vury{#4}}%\Gin@viewportIIfaviewpGortisspeci ed,resettheboundingboxcordinatesbyaddingtheoriginal Iorigin,\Gin@llx,\Gin@llytothenewvqaluesspGeci edastheviewport.qTheIoriginal2|BoundingbGoxcoordinatesaresaved2|in\Gin@ollx...&some2|driversmightIneedUUthisinformation(currentlyjusttcidvi).I31S\def\Gin@viewport{% I32]\let\Gin@ollx\Gin@llxI33]\let\Gin@olly\Gin@llyI34]\let\Gin@ourx\Gin@urxI35]\let\Gin@oury\Gin@uryI36]\dimen@\Gin@llx\p@\advance\dimen@\Gin@vurx\p@I37\edef\Gin@urx{\strip@pt\dimen@}%I38]\dimen@\Gin@lly\p@\advance\dimen@\Gin@vury\p@I39\edef\Gin@ury{\strip@pt\dimen@}%I40]\dimen@\Gin@llx\p@\advance\dimen@\Gin@vllx\p@I41\edef\Gin@llx{\strip@pt\dimen@}%I42]\dimen@\Gin@lly\p@\advance\dimen@\Gin@vlly\p@I43\edef\Gin@lly{\strip@pt\dimen@}}$\Gin@trimIIf[atrimisspGeci ed,resettheboundingboxcordinatesbytrimmingthefour IspGeci edUUvqalueso eachsideofthegraphic.I44S\def\Gin@trim{%I45]\let\Gin@ollx\Gin@llxI46]\let\Gin@olly\Gin@llyI47]\let\Gin@ourx\Gin@urxI48]\let\Gin@oury\Gin@uryI49]\dimen@\Gin@llx\p@\advance\dimen@\Gin@vllx\p@I50\edef\Gin@llx{\strip@pt\dimen@}%I51]\dimen@\Gin@lly\p@\advance\dimen@\Gin@vlly\p@I52\edef\Gin@lly{\strip@pt\dimen@}%I53]\dimen@\Gin@urx\p@\advance\dimen@-\Gin@vurx\p@I54\edef\Gin@urx{\strip@pt\dimen@}%I55]\dimen@\Gin@ury\p@\advance\dimen@-\Gin@vury\p@I56\edef\Gin@ury{\strip@pt\dimen@}}$\Gin@vllx $\Gin@vlly $\Gin@vurx $\Gin@vuryIF*our7macrostoholdthemoGdi ersfortheboundingboxforviewportandtrim IspGeci cations.I57S\let\Gin@vllx\Gin@llx\let\Gin@vlly\Gin@llxI58S\let\Gin@vurx\Gin@llx\let\Gin@vury\Gin@llx\KV@Gin@angleISpGecifyarotation.NThisisjusthandledbywrappingthe\includegraphicscom- Imandxqinacalltotheinternalversionof\rotatebox.Normallythisisthe`stan-Idard'versionbutifanoriginkeyisusedin\includegraphicsthenthekeyvalIversionUUoforiginisused,andtheoriginkeyispassedon.I59S\define@key{Gin}{angle} I60 {\Gin@esetsizeI61]\@tempswatrueI62]\edef\@tempa{\toks@{\noexpand\Gin@erotate{#1}{\the\toks@}}}%I63]\@tempa}57Uso 6\KV@Gin@originIPassVptheoriginkeyvqalueonto\rotatebox. u\Gin@erotateisinitialisedto I\Grot@box@stdUUlaterinthe le,afterthelatterhasbGeende ned.I64S\define@key{Gin}{origin}[c]{% I65]\def\Gin@erotate{\Grot@box@kv[origin=#1]}}\KV@Gin@width 6\KV@Gin@heightISaveUUtherequiredheightandwidth.qTheactualscalingisdonelater.I66S\define@key{Gin}{width}{\def\Gin@ewidth{#1}} I67S\define@key{Gin}{height}{\def\Gin@eheight{#1}}H\KV@Gin@totalheightIThesameasheightkey*,butloGcallychanges\Gin@eresizeto\totalheightIfromUUitsdefaultvqalueof\height.I68S\define@key{Gin}{totalheight}{% I69]\def\Gin@eresize{\totalheight}\def\Gin@eheight{#1}}ҙ\KV@Gin@keepaspectratioIBoGolean[vqaluedkey(likeclip).Ifitissettotrue,moGdifythemeaningofthewidthIandMheight(andtotalheight)keyssuchthatifbGotharespeci edthenratherIthanadistortthe gurethe gureisscaledsuchthatneitherdimensionexc}'eedsЂtheIstatedUUdimensions.I70S\define@key{Gin}{keepaspectratio}[true]{% I71]\lowercase{\Gin@boolkey{#1}}{iso}}\KV@Gin@scaleIIfithescalingisbGeinghandledexternally*,.wrap\includegraphicsintheinter-Inal[formof\scalebox,](otherwiseloGcallyde ne\Gin@req@sizestocalculatetheIrequiredUUsizesbasedonscalefactor.I72S\define@key{Gin}{scale}{% I73]\if@tempswaI74f\edef\@tempa{\toks@{\noexpand\Gscale@box{#1}[#1]{\the\toks@}}}%I75f\@tempaI76]\elseI77f\def\Gin@req@sizes{%I78p2\def\Gin@scalex{#1}\let\Gin@scaley\Gin@exclamationI79p2\Gin@req@height\Gin@scalex\Gin@nat@heightI80p2\Gin@req@width\Gin@scalex\Gin@nat@width}%I81]\fiI82]\@tempswatrue}\KV@Gin@draftILoGcallyfysetthedraftswitchtotrue.4ThisisusedbythecoGdeingraphicspackqage ItoUUsuppressthe leinclusion.I83S\define@key{Gin}{draft}[true]{%I84]\lowercase{\Gin@boolkey{#1}}{draft}}b\KV@Gin@clipILoGcallysettheclipswitchtotrue.ThisisusedbythecoGdeingraphicspackqage ItoUUsuppresstheprintingofanythingoutsidethebGoundingboxspeci ed.I85S\define@key{Gin}{clip}[true]{%I86]\lowercase{\Gin@boolkey{#1}}{clip}}b\KV@Gin@typeIIfyouuse`typGe'youmustusenoextensioninthemainargumentandyoumust IuseUU`ext'.qY*oucanalsouse`read'and`command'.I87S\define@key{Gin}{type}{%I88]\def\Ginclude@graphics##1{%I89f\begingroupI90f\def\Gin@base{##1}%6CisoI91f\edef\@tempa{{#1}{\Gin@eread}{\Gin@ecom{##1\Gin@eext}}}% I92f\expandafter\Gin@setfile\@tempaI93f\endgroup}} L\KV@Gin@extISpGecifyUUanextension,forusewiththe`type'key*.I94S\define@key{Gin}{ext}{\def\Gin@eext{#1}}b\KV@Gin@readISpGecifyaread le,όforusewiththe`type'key*.Youmaywanttogloballyset Ithis* to*using\setkeys. *meansreadthegraphic leforsizeinfo,9asinI\DeclareGraphicsRule.I95S\define@key{Gin}{read}{% I96XdD\def\Gin@eread{#1}%I97XdD\def\@tempa{*}\ifx\@tempa\Gin@eread\def\Gin@eread{\Gin@eext}\fi}I98S\let\Gin@eread\@emptyf\KV@Gin@commandISpGecifyUUacommand,forusewiththe`type'key*.I99S\define@key{Gin}{command}{\def\Gin@ecom##1{#1}}E100S\let\Gin@ecom\@firstofoneb\Gin@boolkeyIHelpGerHfunctionforde ningbooleanvqaluedfunctions.LfTheorderofarguments IallowsUU\lowercasetoonlyactontheuser-suppliedargument.E101S\def\Gin@boolkey#1#2{%E102]\csnameGin@#2\ifx\relax#1\relaxtrue\else#1\fi\endcsname}\Gin@esetsizeIArrangeforthe nalsizetobGeset,Neitherbywrappingtheincludegraphicscall IinUU\scalebox,orbyrede ning\Gin@req@sizesappropriately*.E103S\def\Gin@eresize{\height}E104S\def\Gin@esetsize{%E105]\let\@tempa\Gin@exclamationE106]\if@tempswaIExternal.UW*rapthe\includegraphicscommandinacalltotheinternalformof I\scaleboxUUtohandletherotation.E107f\edef\@tempa{\toks@{\noexpandE108L\Gscale@@box\noexpand\Gin@eresizeE109{\Gin@ewidth}{\Gin@eheight}{\the\toks@}}}%E110f\@tempaE111]\elseIInternal.!Handle\sscalingwiththe\includegraphicscommanddirectlyrather IthanUUcalling\scalebox.E112f\ifx\Gin@ewidth\@tempaE113p2\ifx\Gin@eheight\@tempaINoUUresizing.E114p2\elseIJustUUheightspGeci ed.E115~0\let\Gin@@eheight\Gin@eheight E116~0\def\Gin@req@sizes{%E117 \Gscale@div\Gin@scaley\Gin@@eheight\Gin@nat@heightE118 \let\Gin@scalex\Gin@exclamationE119 \setlength\Gin@req@height\Gin@@eheightE120 \Gin@req@width\Gin@scaley\Gin@nat@width}%7OԠsoE121p2\fi E122f\elseE123p2\ifx\Gin@eheight\@tempaIJustUUwidthspGeci ed.E124~0\let\Gin@@ewidth\Gin@ewidthE125~0\def\Gin@req@sizes{%E126 \Gscale@div\Gin@scalex\Gin@@ewidth\Gin@nat@widthE127 \let\Gin@scaley\Gin@exclamationE128 \setlength\Gin@req@width\Gin@@ewidthE129 \Gin@req@height\Gin@scalex\Gin@nat@height}%E130p2\elseIBothUUheightandwidthspGeci ed.E131~0\let\Gin@@ewidth\Gin@ewidthE132~0\let\Gin@@eheight\Gin@eheightIAt thispGointcanloGcallyrede ne\Gin@nosize.Insteadofgeneratinganerror, Ijustsetthe`natural'sizetobGethe`requestedsize'.vPreviousversionsofthisIpackqageYdidnotallowtheuseofheightandwidthunlessthenaturalsizewasIknown\JasotherwiseL5ffA͉TU>'ExXcannotcalculatethescalefactor.HowevermanydriversI(espGecially\forbitmapformats)canworkthisoutthemselves,soaslongasbGothIheightandwidtharegiven,osoL5ffA͉TU>'ExXknowsthesizetoleave,oacceptthis.;ThisIassumesthecoGdeinthedriver lewillusethe`requiredheight'information,notItheUUscalefactors,whichwillbGesetto1!.E133~0\def\Gin@nosize##1{% E134 \KV@Gin@natwidth\Gin@@ewidthE135 \KV@Gin@natheight\Gin@@eheight}%E136~0\def\Gin@req@sizes{%E137 \Gscale@div\Gin@scalex\Gin@@ewidth\Gin@nat@widthE138 \Gscale@div\Gin@scaley\Gin@@eheight\Gin@nat@heightIDonaldArseneaurequestedthisfeature.yIfbGothheightandwidtharechosen, IchoGose thesmallerscalefactorratherthandistortthegraphic.ThismodeisIturnedUUonwiththekeepaspGectratiokey*.E139 \ifGin@iso E140L\ifdim\Gin@scaley\p@>\Gin@scalex\p@E141x\let\Gin@scaley\Gin@scalexE142L\elseE143x\let\Gin@scalex\Gin@scaleyE144L\fiE145 \fiE146 \Gin@req@width\Gin@scalex\Gin@nat@widthE147 \Gin@req@height\Gin@scaley\Gin@nat@height}%E148t\fiE149kJ\fiE150]\fiE151]\let\Gin@ewidth\Gin@exclamationE152]\let\Gin@eheight\Gin@ewidth}f\Gin@req@height 6\Gin@req@widthITheUUrequired nalsize.E153S\newdimen\Gin@req@heightE154S\newdimen\Gin@req@width8 Zsot\Gin@outer@scalex t\Gin@outer@scaleyIScaleUUfactorstopassto\scalebox. qOE155S\let\Gin@outer@scalex\relax E156S\let\Gin@outer@scaley\relaxS썍\Gin@angleIRotationUUangle.E157S\let\Gin@angle\relax L\Gin@ewidth b\Gin@eheightIFinalUUsize,initialisedfornoscaling.E158S\let\Gin@ewidth\Gin@exclamation E159S\let\Gin@eheight\Gin@ewidth L\Gin@scalex L\Gin@scaleyIScaleUUfactors.qInitialisedfornoscaling.E160S\def\Gin@scalex{1} E161S\let\Gin@scaley\Gin@exclamation"\Gin@iIUse6 thesametoplevel\includegraphicscommandasthestandardinterface. IThisUUwillsettheclippingswitch,andthencall\Gin@i.E162S\def\Gin@i{% E163XdD\def\Gin@req@sizes{%E164ap\Gin@req@height\Gin@nat@heightE165ap\Gin@req@width\Gin@nat@width}%E166XdD\@ifnextchar[\Gin@ii{\Gin@ii[]}}3P\Gin@iiILoGok)hforasecondoptionalargument.Ifoneoptionalargumentispresent,^lcall I\setkeysUUtoproGcessit, qOE167S\def\Gin@ii[#1]#2{%E168f\def\@tempa{[}\def\@tempb{#2}%E169f\ifx\@tempa\@tempbE170p2\def\@tempa{\Gin@iii[#1][}%E171p2\expandafter\@tempaE172f\elseE173kJ\begingroupE174t\@tempswafalseE175t\toks@{\Ginclude@graphics{#2}}%E176t\setkeys{Gin}{#1}%E177t\Gin@esetsizeE178t\the\toks@E179kJ\endgroupE180kJ\fi} 卍I5aLRotation\rotateboxILoGokUUforanoptionalargument.E181S\def\rotatebox{%E182]\@ifnextchar[\Grot@box@kv\Grot@box@std}S썍\Grot@box@stdIIfUUnoKVargument,justrepGeatthestandardde nition.E183S\def\Grot@box@std#1#2{%E184]\Grot@setangle{#1}%E185]\setbox\z@\hbox{{#2}}%E186]\Grot@x\z@E187]\Grot@y\z@E188]\Grot@box}9 esob\Grot@box@kvE189S\def\Grot@box@kv[#1]#2#3{% E190]\@begin@tempboxa\hbox{#3}%E191f\Grot@x\width\divide\Grot@x\tw@E192f\Grot@y\height\advance\Grot@y-\depth\divide\Grot@y\tw@E193f\setkeys{Grot}{#1}%E194f\setbox\z@\box\@tempboxaE195f\Grot@setangle{#2}%E196f\Grot@boxE197]\@end@tempboxa}XThereUUaretwoUUwaysofspGecifyingthecentreofrotation.f\KV@Grot@originIorigin=hlab}'eliܲ,>;where8uthelabGelsareuptotwo8uoflrctbB8m(Bdenotes8uthebaseline, IasUUforPST*ricks).E198S\define@key{Grot}{origin}[c]{% E199XdD\@tfor\@tempa:=#1\do{%E200f\ifl\@tempa\Grot@x\z@\elseE201f\ifr\@tempa\Grot@x\width\elseE202f\ift\@tempa\Grot@y\height\elseE203f\ifb\@tempa\Grot@y-\depth\elseE204f\ifB\@tempa\Grot@y\z@\fi\fi\fi\fi\fi}}\KV@Grot@x \KV@Grot@yIx=hdimenci#`,y=hdimenci'The0x;y coGordinateofthecentreofrotation.WAsusual I\heightUUetcmaybGeused.E205S\define@key{Grot}{x}{\setlength\Grot@x{#1}}E206S\define@key{Grot}{y}{\setlength\Grot@y{#1}} 6\KV@Grot@unitsI`units'FspGeci esthenumberForunitsinoneanti-clockwiseFcircle.lSothedefaultis I360.qǸ360UUgivescloGckwiserotation,6:283185givesradiansetc.E207S\define@key{Grot}{units}{%E208]\def\Grot@setangle##1{%E209]\dimen@##1\p@E210]\dimen@ii#1\p@E211]\divide\dimen@ii360\relaxE212]\divide\dimen@\dimen@iiE213]\edef\Grot@angle{\number\dimen@}}}b\Gin@erotateIInitialiseUUtherotationcommandtousein\includegraphics.E214S\let\Gin@erotate\Grot@box@stdE215Sh"5" cmmi9=pack9age#g i10n~; (N cmbx12'm#R cmss10$ow cmss9# cmsy9"5" cmmi9 "V cmbx10ߤN cmtt9 cmmi10K`y cmr10ٓRcmr7w*