÷ƒ’À;è TeX output 2001.10.31:1003‹ÿÿÿÿ ª ýs o ýÝþÀ’¿ÙóUªsÉG®G®ecrm1728ºLe–hçpacŒyk‘ÿñage“ó”N9>G®G®ectt1728»calcŽŸ‘_ÝTºArithm€étique–hçen“notation“inxe“dans“LŸü]b‘ú'ÊóÓ·å ecrm1200ÂAŽŽ‘†ÇºT‘ýK*Ÿ·òEŽ‘OÂXŸùº¯ó!",š cmsy10ÁŽŽŽŸÿ‘hw¹ÂKresten–êlKrab“Thorup,“F‘ÿerank“Jensen“(and“Chris“Ro¬wwley)ŽŽŽŽŽŸûß’ƒxT‘ÿeraduction–êlfran€çaise“par“Jean-Pierre“DrucbSˆertŸû¥2ó¾KÈ cmsy8ÇyŽŽŽŽŽŽŽŽŸ2’Ý!ÖÂ1998/07/07ŽŸ#Ï€’è!”ó ‹–uÌ ecbx0900ËR€ésum€éŽŸ S<‘oß$óÙ.œŒ ecrm0900ÊLe–zïpacš¾ ª ýs o ý´‘I¹la–¾Ðv‘ÿqÐaleur“du“facteur“Ó4cm“¹est“aect€ée“€à“un“registre“dimension,“puis“ce“registre“estŽ¤ ‘Imš¸èultipli€é–ÎŒpar“óKñ`y cmr10²3“¹(en“utilisan˜t“Ó\multiply¹)“et,“enn,“ce“registre“est“m˜ultipli€é“par“²4Ž¡‘I¹(en– utilisan¸èt“encore“Ó\multiply¹).“Ceci“explique“aussi“pGourquoi“la“partie“dimensionŽ¡‘I(c'est-€à-dire–°qla“partie“a•¸èv“ec–°qla“d€ésignation“d'unit€é)“doit“v¸èenir“en“premier‘ª“;“T‘þUYŸ&úEŽ‘ã9X“neŽ¡‘IpGermet–àsimplemenš¸èt“pas“que“des“constan˜tes“sans“t˜ypGe“soien˜t“aect€ées“€à“un“registreŽ¡‘Idimension.Ž¡‘XLe–ß=pacš¸èk‘ÿqÐage“Ócalc“¹pGermet“aussi“la“m˜ultiplication“et“la“division“par“desŽ¡‘Inomš¸èbres–5‰r€éels.“CepGendan˜t“une“syn˜taxe“spG€éciale“est“n€écessaire“:“v˜ous“dev˜ez“utiliserŽ¡‘IÓ\real{¸h¹constan¸ète–‚8d€écimale¸iÓ}‘ª“Ÿü^ÿÔ2ŽŽ‘ ¨ý¹ou“Ó\ratio{¸h¹expression“dimension¸iÓ}{¸h¹expressionŽ¡‘Idimension¸iÓ}–¸¹pGour“repr€ésenš¸èter“une“v‘ÿqÐaleur“r€éelle“€à“utiliser“dans“une“m˜ultiplicationŽ¡‘Iou– €division.“La“premi€ère“forme“a“une“signication“€évidenš¸ète“et“la“seconde“repr€ésen˜teŽ¡‘Ile–i€nomš¸èbre“obten˜u“en“divisan˜t“la“v›ÿqÐaleur“de“la“premi€ère“expression“par“la“v˜aleur“deŽ¡‘Ila–U seconde“expression.Ž¡‘XUne–Õaddition“ult€érieure“au“pac¸èk‘ÿqÐage“(en“juin“1998)“ore“une“m€éthoGde“suppl€é-Ž¡‘Imen¸ètaire–?îpšGour“sp˜€écier“un“facteur“de“t¸èyp˜e“dimension“en“comp˜osan¸èt“un“certain“texteŽ¡‘I(en–U moGde“LR)“et“mesuranš¸èt“ses“dimensions“:“ce“son˜t“les“commandes“ci-dessous.Ž¤Pä‘bÓ\widthof{¸h¹text¸iÓ}– ÿ`\heightof{¸h¹text¸iÓ}“\depthof{¸h¹text¸iÓ}Ž¡‘I¹Ces–i×commandes“calculenš¸èt“les“tailles“naturelles“du“¸h¹texte¸i“¹exactemen˜t“de“la“m€êmeŽ¤ ‘Imani€ère–U que“les“commandes“Ó\settowidth¹,“etc.Ž¡‘XNotez– 9qu'il“y“a“une“pšGetite“di€érence“dans“l'utilisation“de“ces“deux“m€étho˜desŽ¡‘Id'acc€ès–‰ au“dimensions“d'un“texte.“Apr€ès“Ó\settowidth{\txtwd}{Du‘?¬texte}“¹v¸èousŽ¡‘IpGouv¸èez–U utiliser“:Ž©Pä‘`ž†Ì\setlength{\parskip}{0.68\textwd}ŽŸ ŸPä‘I¹tandis–Wªqu'en“utilisan¸èt“l'acc€ès“plus“direct“€à“la“largeur“du“texte“il“faut“utiliser“laŽ¡‘Iforme–U longue“pGour“la“m¸èultiplication,“donc“:Ž¦‘`ž†Ì\setlength{\parskip}{\widthof{Du–¹Ntexte}“*“\real{0.68}}ŽŸ ŸPä‘X¹T‘þUYŸ&úEŽ‘ã9X–»>€élimine“les“compGosanš¸ètes“d'€étiremen˜t“et“de“compression“de“la“glu“lorsqueŽ¡‘Icette–U glu“est“mš¸èultipli€ée“par“un“nom˜bre“r€éel.“Ainsi,“par“exemple,Ž¦‘`ž†Ì\setlength{\parskip}{3pt–¹Nplus“3pt“*“\real{1.5}}ŽŸ ŸPä‘I¹forcera–¥|la“s€éparation“enš¸ètre“paragraphes“€à“4.5pt“sans“€étiremen˜t“ni“compression.Ž¡‘I(En–QCpassanš¸èt,“notez“commen˜t“les“espaces“pGeuv˜en˜t“€être“utilis€és“pGour“am€éliorer“laŽ¡‘Ilisibilit€é.)Ž¡‘XLorsque–SÕT‘þUYŸ&úEŽ‘ã9X“eectue“de“l'arithm€étique“sur“des“en¸ètiers,“toutes“les“parties“frac-Ž¡‘Itionnaires–U des“r€ésultats“sonš¸èt“pGerdues.“P˜ar“exemple,Ž¦‘`ž†Ì\setcounter{x}{7/2}Ž¤ ‘`ž†\setcounter{y}{3*\real{1.6}}Ž¡‘`ž†\setcounter{z}{3*\real{1.7}}Ž¡ŸPä‘I¹aectera–¼ïla“v›ÿqÐaleur“²3“¹au“compteur“Óx¹,“la“v˜aleur“²4“¹€à“Óy“¹et“la“v˜aleur“²5“¹€à“Óz¹.“CetteŽ¤ ‘Itroncature–»ôs'applique“aussi“aux“r€ésultats“Öinterm€é–ÿ}/diair“es‘Ž ¹dans–»ôle“calcul“s€équen¸ètielŽ¡‘Id'une–U expression“compGosite‘ª“;“donc“la“commande“suiv‘ÿqÐan¸èteŽ¦‘`ž†Ì\setcounter{x}{3–¹N*“\real{1.6}“*“\real{1.7}}Ž‘IŸ@s‰ffÿrŸ E¼‘ !iŸý-:Ð2ŽŽŽ‘KÙÉEn–úòfait,“au“lieu“de“ÇhÉconstanÃ’te“d€écimaleÇiÉ,“la“forme“plus“g€én€érale“ÇhÉsignes“optionnelsÇihÉfacteurÇiŽ¤ €Épš cmmi10µE‘=I¹est“une“somme“de“termes“:“µTŸÿ±1Ž‘˜s²+‘¸–ª¨“Ž‘⧲+‘µTŸÿó 0e—rcmmi7´nŽ‘¹;“un“terme“estŽ¡‘Iun–fYproGduit“de“facteurs“:“µFŸÿ±1Ž‘kƒ¸‘ï–ª¨“Ž‘ˆÇ‘ïµFŸÿ´mŽ‘ C.¹;“un“facteur“est“soit“une“simple“quan¸ètit€éŽ¡‘Inš¸èum€érique–ázµf‘õ ¹(comme“¸h¹nom˜bre¸i“¹tel“que“d€écrit“dans“le“ÖT‘þKÞŸ&úEŽ‘ÌñXb–ÿ}/o“ok‘}¹),–ázou“une“expressionŽ¡‘Iparen¸èth€és€ée‘U ²(µE‘“Ÿü^ÿó O!â…cmsy7·0Ž‘aƲ)¹.Ž‘IŸff‰ffÿrŸ E¼‘ !iŸý-:Ð3ŽŽŽ‘KÙÉCette–PØvšÃ’ersion“du“pac˜kš‡$age“Õcalc“Éne“suppñ ª ýs o ý´‘X¹ŽŽ‘aÿ°nous–=ªdevš¸èons“engendrer““¸fŸÎ:´,‘þ¢_·!±[´BW=· ´A±]ŽŽ‘"`ã¸fŸÎ:´,‘þ¢_·!±[´BW=· ´A±]ŽŽ‘%ž¹“au“bGord“gauc˜he“d'une“expres-Ž¤ ‘aÿ°sion–¹T(c'est-€à-dire“pGour“cš¸èhaque“paren˜th€èse“gauc˜he“et“€à“la“paren˜th€èse“gauc˜heŽ¡‘aÿ°implicite–U au“d€ébut“de“l'expression“compl€ète)‘ª“;Ž¡‘XŽŽ‘aÿ°nous–X$dev¸èons“engendrer““¸gµA–̸(“µB‘€q¸gµA“¸(“µB‘Ø•¹–X$au“bGord“droit“d'une“expressionŽ¡‘aÿ°(c'est-€à-dire–Á&cš¸èhaque“paren˜th€èse“droite“et“la“paren˜th€èse“droite“implicite“€à“laŽ¡‘aÿ°n–U de“l'expression“compl€ète)‘ª“;Ž¡‘XŽŽ‘aÿ°–U Ó*“¹“est“remplac€é“par““¸gfŸÎ:´,‘þ¢_·!±[´B•W=· ´B“·´A±]ŽŽ‘00󹑪“;Ž¡‘XŽŽ‘aÿ°–U Ó+“¹“est“remplac€é“par““¸gµA–Ǹ(“µB‘€q¸gfŸÎ:´,‘þ¢_·!±[´B•W=· ´B“±+´A±]ŽŽ‘.æ¸fŸÎ:´,‘þ¢_·!±[´BW=· ´A±]ŽŽ‘%¶¹‘ª“;Ž¡‘XŽŽ‘aÿ°lorsque–hnous“v•¸èo“y“ons–h(attendons)“une“quanš¸ètit€é“n˜um€érique,“nous“ins€érons“leŽ¡‘aÿ°coGde–#Ýd'aectation““µA‘Ǹ(“¹“dev‘ÿqÐanš¸èt“cette“quan˜tit€é“et“laissons“T‘þUYŸ&úEŽ‘ã9X“l'analyser.ŽŸ!Ö‘IÒ3Ž‘`ÁImplemenctationŽŸæ~‘I¹F‘ÿ*¸or–U brevit¸èy“deneŽ¤‘X¸h¹n¸èumeric¸iŽ’…ÚŽŽŽ’‹öˆ!‘U h¹n•¸èum“bGer¸iŽ‘/„¢j‘U h¹dimen¸iŽ‘)^j‘U h¹glue¸iŽ‘ 7^j‘U h¹m¸èuglue¸iŽŽ¡‘X¹So–ÁËfar“wš¸èe“ha˜v˜e“ignored“the“question“of“ho˜w“to“determine“the“t˜ypGe“of“registerŽ¤ ‘Ito–VCbšGe“used“in“the“co˜de.‘tèHo•¸èw“ev“er,‘–‹it–VCis“easy“to“see“that“(1)“`¸¹'“alw•¸èa“ys‘VCinitiatesŽ¡‘Ian–`m¸h¹inš¸èteger“factor¸i¹,‘£A(2)“all“¸h¹n˜umeric¸i¹s“in“an“expression,‘£Aexcept“those“whic˜h“areŽ¡‘Ipart–™óof“an“¸h¹inš¸èteger“factor¸i¹,‘«(are“of“the“same“t˜ypGe“as“the“whole“expression,‘«(and“allŽ¡‘I¸h¹nš¸èumeric¸i¹s–U in“an“¸h¹in˜teger“factor¸i“¹are“¸h¹n˜um˜bGer¸i¹s.Ž¡‘XW‘ÿ*¸e›¦,ha•¸èv“e˜to˜ensure˜that˜µA˜¹and˜µB‘&¹alw“a“ys˜ha“v“e˜an˜appropriate˜t“ypGe˜for˜theŽ¡‘I¸h¹nš¸èumeric¸i¹s–±zthey“manipulate.‘†ŽW‘ÿ*¸e“can“ac˜hiev˜e“this“b˜y“ha˜ving“an“instance“of“µAŽ¡‘I¹and–ËîµB‘L_¹for“eacš¸èh“t˜ypšGe.‘CÅInitially‘ÿ*¸,‘ç^µA“¹and“µB‘L_¹refer“to“registers“of“the“prop˜er“t¸èyp˜e“for“theŽ¡‘Iwhole–Fexpression.‘Z8When“an“¸h¹inš¸èteger“factor¸i“¹is“expGected,‘?w˜e“m˜ust“c˜hange“µA“¹and“µBŽ¡‘I¹to–Èrefer“to“inš¸èteger“t˜ypGe“registers.‘B{W‘ÿ*¸e“can“accomplish“this“b˜y“including“instructionsŽ¡‘Ito–wcš¸èhange“the“t˜ypGe“of“µA“¹and“µB‘…è¹to“in˜teger“t˜ypGe“as“part“of“the“replacemen˜t“coGdeŽ¡‘Ifor–m`¸¹;‘o“if“wš¸èe“appGend“suc˜h“instructions“to“the“replacemen˜t“cošGde“describ˜ed“ab˜o•¸èv“e,Ž¡‘Iwš¸èe–ÈÔalso“ensure“that“the“t˜ypGe-c˜hange“is“loGcal“(pro˜vided“that“the“t˜ypGe-c˜hangingŽ¡‘Iinstructions–6‚only“ha•¸èv“e–6‚loGcal“eect).‘gKHo•¸èw“ev“er,‘<¢note–6‚that“the“instance“of“µA“¹referredŽ¡‘Ito–U in“ŸÎ:´,‘þ¢_·!±[´B•W=· ´B“·´A±]ŽŽ‘3†¹is“the“in¸èteger“instance“of“µA¹.Ž¡‘XW‘ÿ*¸e–úshall“use“Ó\begingroup“¹and“Ó\endgroup“¹for“the“opGen-group“and“close-groupŽ¡‘Ic•¸èharacters.‘–”This›¶Ña“v“oids˜problems˜with˜spacing˜in˜math˜(as˜pGoin“ted˜out˜to˜us˜b“yŽ¡‘IF‘ÿ*¸rank‘U Mittelbac¸èh).Ž©ýY‘I×3.1Ž‘g¾Getting‘¸startedŽŸtî‘I¹No•¸èw›Æyw“e˜ha“v“e˜enough˜insigh“t˜to˜do˜the˜actual˜implemen“tation˜in˜T‘þUYŸ&úEŽ‘ã9X.‘ÅŠFirst,‘âÏw“eŽ¡‘Iannounce–U the“macro“pac¸èk‘ÿqÐageŸü^ÿÔ5ŽŽ‘|2¹.ŽŸ‘LüàÔ1Ž‘Sª®ó$©±Ê cmsy9Ïhó-ÒoÇw cmss9Øpack¾9ageŽ‘#g ÏiŽ¤ ‘LüàÔ2Ž‘Sª®Ì%\NeedsTeXFormat{LaTeX2e}Ž¡‘LüàÔ3Ž‘Sª®Ì%\ProvidesPackage{calc}[\filedate\space\fileversion]Ž¦‘I×3.2Ž‘g¾Assignmen t‘¸macrosŽŸtî‘àÌšÌ\calc@assign@genericŽŽŽ‘I¹The–M»Ó\calc@assign@generic“¹macro“takš¸èes“four“argumen˜ts:‘mÎ(1“and“2)“the“registersŽ¤ ‘Ito–%¼bšGe“used“for“global“and“lo˜cal“manipulations,‘Yãresp˜ectiv¸èely;‘Ž (3)“the“lv‘ÿqÐalue“part;Ž¡‘I(4)–U the“expression“to“bGe“ev‘ÿqÐaluated.Ž‘IŸff‰ffÿrŸ E¼‘ !iŸý-:Ð5ŽŽŽ‘KÙÉCoremaining“tok¸èens“of“this“expansion“are“inserted“explicitly‘ÿ*¸,‘bexcept“thatŽ¡‘Ithe–ƒÏlast“assignmenš¸èt“has“bGeen“replaced“b˜y“the“lv‘ÿqÐalue“part“(i.e.,‘Ïzargumen˜t“Ó#3“¹ofŽ¡‘IÓ\calc@assign@generic¹)›U follo•¸èw“ed˜b“y˜Ó\calc@B¹.ŽŸ‘LüàÔ4Ž‘Sª®Ì\def\calc@assign@generic#1#2#3#4{\let\calc@A#1\let\calc@B#2%Ž¤ ‘LüàÔ5Ž‘fæÌ\expandafter\calc@open\expandafter(#4!%Ž¡‘LüàÔ6Ž‘fæÌ\global\calc@A\calc@B\endgroup#3\calc@B}ŽŸ‘I¹(The–ùmÓ\expandafter“¹tokš¸èens“allo˜w“the“user“to“use“expressions“stored“one-lev˜el“deepŽ¤ ‘Iin–U a“macro“as“argumenš¸èts“in“assignmen˜t“commands.)Ž©‘ê?6Ì\calc@assign@countŽŽ¡‘ê?6\calc@assign@dimenŽŽŽŽ¡¡‘îø„\calc@assign@skipŽŽŽŽŽ‘I¹W‘ÿ*¸e–¬need“three“instances“of“the“Ó\calc@assign@generic“¹macro,‘ÁÎcorrespGonding“toŽ¡‘Ithe–U tš¸èypGes“¸h¹in˜teger¸i¹,“¸h¹dimen¸i¹,“and“¸h¹glue¸i¹.ŽŸ‘LüàÔ7Ž‘Sª®Ì\def\calc@assign@count{\calc@assign@generic\calc@Acount\calc@Bcount}Ž¤ ‘LüàÔ8Ž‘Sª®Ì\def\calc@assign@dimen{\calc@assign@generic\calc@Adimen\calc@Bdimen}Ž¡‘LüàÔ9Ž‘Sª®Ì\def\calc@assign@skip{\calc@assign@generic\calc@Askip\calc@Bskip}Ž¦‘I¹These–àmacros“eacš¸èh“refer“to“t˜w˜o“registers,‘Úone“to“bšGe“used“globally“and“one“to“b˜eŽ© ‘Iused›U loGcally–ÿ*¸.‘q€W“e˜m¸èust˜alloGcate˜these˜registers.ŽŸ‘I®Ô10Ž‘Sª®Ì\newcount\calc@Acount‘+ê\newcount\calc@BcountŽ¡‘I®Ô11Ž‘Sª®Ì\newdimen\calc@Adimen‘+ê\newdimen\calc@BdimenŽ¡‘I®Ô12Ž‘Sª®Ì\newskip\calc@Askip‘ž†\newskip\calc@BskipŽŸýY‘I×3.3Ž‘g¾The–¸LŸý=T‘û$%ó4Y›ecbx0800ßAŽŽ~%×T‘ýÀŸª€EŽ‘ìX“in terfaceŽŸtî‘I¹As–)¤promised,‘2Vwš¸èe“redene“the“follo˜wing“standard“LŸýï‘üf ÔAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“commands:‘[ÂÓ\setcounter¹,Ž¦‘IÓ\addtocounter¹,–U Ó\setlength¹,“and“Ó\addtolength¹.ŽŸ‘I®Ô13Ž‘Sª®Ì\def\setcounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}%Ž¡‘I®Ô14Ž‘aÖ˜Ì{\calc@assign@count{\global\csname‘¹Nc@#1\endcsname}{#2}}}Ž¡‘I®Ô15Ž‘Sª®Ì\def\addtocounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}%Ž¡‘I®Ô16Ž‘aÖ˜Ì{\calc@assign@count{\global\advance\csname‘¹Nc@#1\endcsname}{#2}}}ŽŸ‘I®Ô17Ž‘Sª®Ì\DeclareRobustCommand\setlength{\calc@assign@skip}Ž¡‘I®Ô18Ž‘Sª®Ì\DeclareRobustCommand\addtolength[1]{\calc@assign@skip{\advance#1}}ŽŸ‘I¹(Ó\setlength–U ¹and“Ó\addtolength“¹are“robust“according“to“[2Ž‘ÿ°].)ŽŸýY‘I×3.4Ž‘g¾The‘¸scannerŽŸtî‘I¹W‘ÿ*¸e–Wªev‘ÿqÐaluate“expressions“bš¸èy“explicit“scanning“of“c˜haracters.‘yW‘ÿ*¸e“do“not“rely“onŽ¦‘Iactiv•¸èe›U c“haracters˜for˜this.ŽŽŸ’ø(7ŽŽŒ‹aÛ ª ýs o ý´‘X¹The–‹Xscanner“consists“of“t•¸èw“o–‹Xparts,‘ØæÓ\calc@pre@scan“¹and“Ó\calc@post@scan¹;Ž¤ ‘IÓ\calc@pre@scan–˜è¹consumes“left“paren¸ètheses,‘©Úand“Ó\calc@post@scan“¹consumes“bi-Ž¡‘Inary–U opGerator,“Ó\real¹,“Ó\ratio¹,“and“righš¸èt“paren˜thesis“tok˜ens.Ž©‘ý$nÌ\calc@pre@scanŽŽŽ‘I¹Note–Ò–that“this“is“called“at“least“once“on“evš¸èery“use“of“calc“proGcessing,‘ñôev˜en“whenŽ¡‘Inone–Ÿ£of“the“extended“synš¸ètax“is“presen˜t;‘Ü#it“therefore“needs“to“bGe“made“v˜ery“ecien˜t.Ž¡‘XIt–LÔreads“the“initial“part“of“expressions,‘ÊÁun¸ètil“some“¸h¹text“dimen“factor¸i“¹orŽ¡‘I¸h¹nš¸èumeric¸i–B&¹is“seen;‘Hyin“fact,‘Eñan˜ything“not“explicitly“recognized“here“is“tak˜en“to“bGe“aŽ¡‘I¸h¹nš¸èumeric¸i–p¤¹of“some“sort“as“this“allo˜ws“unary“`Ó+¹'“and“unary“`Ó-¹'“to“bGe“treated“easilyŽ¡‘Iand– correctlyŸü^ÿÔ6ŽŽ‘‰G¹but“means“that“anš¸èything“illegal“will“simply“generate“a“T‘þUYŸ&úEŽ‘ã9X-lev˜elŽ¡‘Ierror,–U often“a“reasonably“comprehensible“one!Ž¡‘XThe–ÚÖmanš¸èy“Ó\expandafter¹s“are“needed“to“ecien˜tly“end“the“nested“conditionalsŽ¡‘Iso–U that“Ó\calc@textsize“¹can“proGcess“its“argumen¸èt.ŽŸ‘I®Ô19Ž‘Sª®Ì\def\calc@pre@scan#1{%Ž¤ ‘I®Ô20Ž‘aÖ˜Ì\ifx(#1%Ž¡‘I®Ô21Ž‘t»ÐÌ\expandafter\calc@openŽ¡‘I®Ô22Ž‘aÖ˜Ì\elseŽ¡‘I®Ô23Ž‘yuÌ\ifx\widthof#1%Ž¡‘I®Ô24Ž’ŒZVÌ\expandafter\expandafter\expandafter\calc@textsizeŽ¡‘I®Ô25Ž‘yuÌ\elseŽ¡‘I®Ô26Ž’ŒZVÌ\calc@numeric%–¹Nno“\expandafter“needed“for“this“one.Ž¡‘I®Ô27Ž‘yuÌ\fiŽ¡‘I®Ô28Ž‘aÖ˜Ì\fiŽ¡‘I®Ô29Ž‘aÖ˜Ì#1}Ž¦‘IÓ\calc@open–+,¹is“used“when“there“is“a“left“parenš¸èthesis“righ˜t“ahead.‘c„This“paren˜thesisŽ¤ ‘Iis–wcreplaced“b¸èy“T‘þUYŸ&úEŽ‘ã9X“cošGde“corresp˜onding“to“the“co˜de“sequence“‘ÕH¸fŸÎ:´,‘þ¢_·!±[´BW=· ´A±]ŽŽ–"`ã¸fŸÎ:´,‘þ¢_·!±[´BW=· ´A±]ŽŽ“¹Ž¡‘Ideriv¸èed–U in“Section“2.2.‘q€Finally‘ÿ*¸,“Ó\calc@pre@scan“¹is“called“again.Ž©‘I®Ô30Ž‘Sª®Ì\def\calc@open({\begingroup\aftergroup\calc@initBŽ¤ ‘I®Ô31Ž‘aÖ˜Ì\begingroup\aftergroup\calc@initBŽ¡‘I®Ô32Ž‘aÖ˜Ì\calc@pre@scan}Ž¡‘I®Ô33Ž‘Sª®Ì\def\calc@initB{\calc@B\calc@A}ŽŸ‘IÓ\calc@numeric–8ǹassigns“the“folloš¸èwing“v‘ÿqÐalue“to“Ó\calc@A‘8À¹and“then“transfers“con˜trolŽ¤ ‘Ito‘U Ó\calc@post@scan¹.Ž¦‘I®Ô34Ž‘Sª®Ì\def\calc@numeric{\afterassignment\calc@post@scan‘¹N\global\calc@A}ŽŸ‘|B\widthofŽŽ¡‘Âô\heightofŽŽŽŽ¡¡‘|B\depthofŽŽŽŽŽ‘I¹These–=…do“not“need“an¸èy“particular“denition“when“they“are“scanned“so,‘wžfor“e-Ž¡‘Iciency–åand“robustness,‘ûàwš¸èe“mak˜e“them“all“equiv‘ÿqÐalen˜t“to“the“same“harmless“(I‘åshopGe)Ž¡‘Iunexpandable–úÉcommandŸü^ÿÔ7ŽŽ‘|2¹.‘byThš¸èus“the“test“in“Ó\calc@pre@scan“¹nds“an˜y“of“them.Ž¡‘IThey–‘åare“rst“dened“using“Ó\newcommand“¹so“that“they“appšGear“to“b˜e“normal“userŽ¡‘Icommands–U to“a“LŸýï‘üf ÔAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“userŸü^ÿÔ8ŽŽ‘|2¹.Ž¦‘I®Ô35Ž‘Sª®Ì\newcommand\widthof{}Ž¤ ‘I®Ô36Ž‘Sª®Ì\let\widthof\ignorespacesŽ¡‘I®Ô37Ž‘Sª®Ì\newcommand\heightof{}Ž¡‘I®Ô38Ž‘Sª®Ì\let\heightof\ignorespacesŽ¡‘I®Ô39Ž‘Sª®Ì\newcommand\depthof{}Ž¡‘I®Ô40Ž‘Sª®Ì\let\depthof\ignorespacesŽ‘IŸfF‰ffÿrŸ E¼‘ !iŸý-:Ð6ŽŽŽ‘KÙÉIn–Õ(the“few“conšÃ’texts“where“signs“are“allo˜w˜ed:‘Æàthis“could,“I“think,“bJit“is“imp˜ortanš¸èt“that“w˜e“rst“assign“the“result“to“a“dimenŽŸ ‘Iregister.‘q€Otherwise,–U T‘þUYŸ&úEŽ‘ã9X“wš¸èon't“allo˜w“us“to“m˜ultiply“with“a“real“n˜um˜bGer.Ž¦‘E|Ô136Ž‘Sª®Ì\def\calc@multiply@by@real#1{\calc@Bdimen–¹N#1\calc@B“\calc@B\calc@Bdimen}Ž¡‘I¹(Note–)ˆthat“this“coGde“wš¸èouldn't“w˜ork“if“Ó\calc@B‘)Q¹w˜ere“a“m˜uglue“register.‘î·This“isŽ¤ ‘Ithe–\=real“reason“whš¸èy“the“Ócalc“¹pac˜k‘ÿqÐage“došGesn't“supp˜ort“m¸èuglue“expressions.‘†×T‘ÿ*¸oŽ¡‘IsuppGort–Àâmš¸èuglue“expressions“in“full,‘Óthe“Ó\calc@multiply@by@real“¹macro“m˜ustŽ¡‘Iuse–´a“mš¸èuglue“register“instead“of“Ó\calc@Bdimen“¹when“Ó\calc@B‘³è¹is“a“m˜uglue“register;Ž¡‘Iotherwise,‘Œàa–¹dimen“register“should“bšGe“used.‘÷LSince“in¸èteger“expressions“can“app˜earŽ¡‘Ias–Epart“of“a“mš¸èuglue“expression,‘it“w˜ould“bGe“necessary“to“determine“the“correctŽ¡‘Iregister–U to“use“eacš¸èh“time“a“m˜ultiplication“is“made.)ŽŸýY‘I×3.6Ž‘g¾Multiplication–¸bš y“real“n˜um˜b_úersŽŸtî‘I¹This–>èis“similar“to“the“Ó\calc@ratio@evaluate“¹macro“abGo•¸èv“e,‘CYexcept–>èthat“it“is“con-Ž¡‘Isiderably–U simplied“since“w¸èe“don't“need“to“calculate“the“factor“explicitly‘ÿ*¸.Ž¦‘E|Ô137Ž‘Sª®Ì\def\calc@real@multiply\real#1{\endgroupŽ¤ ‘E|Ô138Ž‘aÖ˜Ì\calc@multiply@by@real{#1}\begingroupŽ¡‘E|Ô139Ž‘aÖ˜Ì\calc@post@scan}Ž¡‘E|Ô140Ž‘Sª®Ì\def\calc@real@divide\real#1{\calc@ratio@evaluate{1pt}{#1pt}}ŽŽŸ’õ€P¹12ŽŽŒ‹ ¥Ê ª ýs o ý´‘IÒ4Ž‘`ÁReppœorting‘G\errorsŽ©æ~‘I¹If–6`Ó\calc@post@scan“¹reads“a“c¸èharacter“that“is“not“one“of“`Ó+¹',–<†`Ó-¹',“`Ó*¹',“`Ó/¹',“or‘6``Ó)¹',“anŽ¤ ‘Ierror–Þhas“ošGccurred,‘]and“this“is“rep˜orted“to“the“user.‘ yViolations“in“the“syn¸ètax“ofŽ¡‘I¸h¹n¸èumeric¸i¹s–U will“bšGe“detected“and“rep˜orted“b¸èy“T‘þUYŸ&úEŽ‘ã9X.ŽŸ‘E|Ô141Ž‘Sª®Ì\def\calc@error#1{%Ž¤ ‘E|Ô142Ž‘aÖ˜Ì\PackageError{calc}%Ž¡‘E|Ô143Ž‘kI4Ì{`#1'–¹Ninvalid“at“this“point}%Ž¡‘E|Ô144Ž‘kI4Ì{I–¹Nexpected“to“see“one“of:“+“-“*“/“)}}Ž¡‘E|Ô145Ž‘Sª®Ïhó#5ùž" cmmi9Î=Øpack¾9ageŽ‘#g ÏiŽŸ!Ö‘IÒReferencesŽ¦‘I¹[1]ŽŽ‘Xó5åÉV eccc1000àD.–"iE.“Knuth¹.›oVÖThe‘–T‘þKÞŸ&úEŽ‘ÌñXb–ÿ}/o“ok‘Ëû¹(Computers–¸~&“T¸èypGesetting“V‘ÿ*¸olume“A).˜A¸èddison-Ž¤ ‘XW–ÿ*¸esley“,–U Reading,“Massac•¸èh“usetts,‘U 1986.ŽŸ‘I[2]ŽŽ‘XàL.‘ÅþLampor‘ÿ t¹.‘ßÜÖLŸýï‘üR&ó6DZYecti0700áAŽŽ‘ØÿÖT‘þKÞŸ&úEŽ‘ÌñX,‘ß A‘²bDo–ÿ}/cument›²œPr“ep“ar“ation˜System.‘ßܹA¸èddison-W–ÿ*¸esley“,‘‘gRead-Ž¡‘Xing,›U Massac•¸èh“usetts,˜Second˜edition˜1994/1985.ŽŽŸ’õ€P13ŽŽŒø³?ƒ’À;説 ó6DZYecti0700ó5åÉV eccc1000ó4Y›ecbx0800ó-ÒoÇw cmss9ó,¥!¢N ecbx1200ó+½HЃ ecti1000ó*¿&Ëectt0800ó)TÆ2‚ecrm0700ó(qLË ectt1000ó'&Lt$ffffecbx1440ó%º7Lecrm0600ó$©±Ê cmsy9ó#5ùž" cmmi9ó!qLË ectt0900ó ‹–uÌ ecbx0900óÙ.œŒ ecrm0900ó¦÷²"ecrm0800óq¡% cmsy6ó¾KÈ cmsy8óÓ·å ecrm1200ó!",š cmsy10ó”N9>G®G®ectt1728óUªsÉG®G®ecrm1728ó 1ê± ecrm1000ó !",š cmsy10ó O!â…cmsy7ó  b> cmmi10ó 0e—rcmmi7óKñ`y cmr10óÙ“ Rcmr7ù·Üßßßßßßß