÷ƒ’À;è TeX output 1998.06.08:2311‹ÿÿÿÿ ª ýs o ýÝþÀ‘xEóUªsÉG®G®ecrm1728ºThe–hçóBCØG®G®ecss1728»mdwtabŸùº¯ó!",š cmsy10ÁŽŽ‘ Ñκand“»mathenv9ÄŸùº¯ÁyŽŽ‘ ’ºpacŒyk‘ÿñagesŽŸ#ýw’ÓÿîóÓ·å ecrm1200ÈMark‘êlW‘ÿeo•Sˆo“dingŽŽŽŽŽŸM_’×À 28–êlApril“1998ŽŸ9Y‘Ió-&Lt$ffffecbx1440ØCon•cten“tsŽ ‘Ÿ› þƒÖî‘Ió.]fŒ ecbx1000Ù1Ž‘WÿUser‘Õguide‘a82ŽŽ¤ mó‘Wÿó 1ê± ecrm1000¹1.1Ž‘ný¡The‘U do¸èwnside‘Ê—‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½3ŽŽ¡‘Wÿ1.2Ž‘ný¡Syn¸ètax‘»O‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½5ŽŽ¡‘Wÿ1.3Ž‘ný¡An–ƒoupGdated“ó1qLË ectt1000Ü\cline“¹com-Ž© ‘ný¡mand‘G‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½8ŽŽ¡‘Wÿ1.4Ž‘ný¡Spacing‘U con¸ètrol‘`+‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½8ŽŽ¡‘Wÿ1.5Ž‘ný¡Creating–ebGeautiful“longŽ¦‘ný¡tables‘e¯‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h10ŽŽ¡‘Wÿ1.6Ž‘ný¡Rules–<'and“v¸èertical“pGosi-Ž¦‘ný¡tioning‘t7‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h11ŽŽ¡‘Wÿ1.7Ž‘ný¡User–U serviceable“parts‘6s‘ü.ŽŽ‘Æè‘ü.ŽŽ‘½h11ŽŽ¡‘Wÿ1.8Ž‘ný¡Dening–U column“t¸èypGes‘ ë‘ü.ŽŽ‘Æè‘ü.ŽŽ‘½h12ŽŽ¡‘Wÿ1.9Ž‘ný¡Dening–$qnew“table-Ž¦‘ný¡generating‘U en•¸èvironmen“ts‘¾‘ü.ŽŽ‘½h14ŽŽ¡‘ný¡1.9.1Ž’ŽûŸReading‘U pream¸èbles‘ ÑI14ŽŽ¡‘ný¡1.9.2Ž’ŽûŸStarting–U new“lines‘ ‘ 15ŽŽ¡‘Wÿ1.10Ž‘ný¡The‘ ³ó2Œ6 ecss1000Ýmathenv‘ (?¹pac¸èk‘ÿqÐageŽ¦‘ný¡alignmen•¸èt‘U en“vironmen“ts‘E‘ü.ŽŽ‘½h16ŽŽ¡‘ný¡1.10.1Ž’ŽûŸThe‘–ònew‘º~Ýeqna•¸èrra“yŽ¦’ŽûŸ¹en•¸èvironmen“tD}‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h16ŽŽ¡‘ný¡1.10.2Ž’ŽûŸThe–úZÝeqnalign“¹en-Ž¦’ŽûŸvironmen¸èt‘5Ý‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h19ŽŽ¡‘ný¡1.10.3Ž’ŽûŸA‘›note–›2on“spacingŽ¦’ŽûŸin–E@alignmenš¸èt“en˜vi-Ž¦’ŽûŸronmen¸èts‘R ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h20ŽŽ¡‘ný¡1.10.4Ž’ŽûŸConguring‘ ìtheŽ¦’ŽûŸalignmen•¸èt‘ ßPen“vi-Ž¦’ŽûŸronmen¸èts‘R ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h21ŽŽ¡‘Wÿ1.11Ž‘ný¡Other–U m¸èultiline“equations‘ ;Ë22ŽŽ¡‘Wÿ1.12Ž‘ný¡Matrices‘4s‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h22ŽŽ¡‘Wÿ1.13Ž‘ný¡Other‘ýçÝmathenv‘!s¹en¸èviron-Ž¦‘ný¡men¸èts‘—‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h25ŽŽŽ þƒÖî’ÿ€Ù2Ž’Implemen®>tation–!×of“tableŽ¤ ’handling‘f»y26ŽŽ© cz’¹2.1Ž’%}¡Registers,‘­switc¸èhes‘ΣandŽ¡’%}¡things‘IO‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h26ŽŽ¦’2.2Ž’%}¡Some–U little“details‘„‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h27ŽŽ¦’2.3Ž’%}¡P¸èarser‘U states‘íã‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h28ŽŽ¦’2.4Ž’%}¡Aš¸èdding–¢‡things“to“tok˜en“lists‘©28ŽŽ¦’2.5Ž’%}¡Committing–‘—a“column“toŽ¡’%}¡the‘U pream¸èble‘&Ó‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h28ŽŽ¦’2.6Ž’%}¡Pla¸èying–U with“parser“states‘ J#29ŽŽ¦’2.7Ž’%}¡Declaring–U tokš¸èen“t˜ypGes‘Ë¿‘ü.ŽŽ‘Æè‘ü.ŽŽ‘½h30ŽŽ¦’2.8Ž’%}¡The–U colset“stac¸èk<Ï‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h32ŽŽ¦’2.9Ž’%}¡The–U main“parser“routine‘þ ‘ü.ŽŽ‘½h33ŽŽ¦’2.10Ž’%}¡Standard–U column“t¸èypGes‘Œ#‘ü.ŽŽ‘Æè‘ü.ŽŽ‘½h36ŽŽ¦’2.11Ž’%}¡P¸èaragraph‘U handling‘§Û‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ‘½h37ŽŽ¦’2.12Ž’%}¡Gen¸ètle‘U pGersuasion‘²e‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h38ŽŽ¦’2.13Ž’%}¡Debugging‘ #‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h39ŽŽ¦’2.14Ž’%}¡The– ¸Ýtabulaš¸èr‘DD¹and“Ýa˜rra˜y‘DD¹en-Ž¡’%}¡vironmen¸èts‘훑ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h39ŽŽ¦’%}¡2.14.1Ž’E{ŸThe‘ŸÄen•¸èvironmen“tŽ¡’E{Ÿroutines‘Ñí‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h39ŽŽ¦’%}¡2.14.2Ž’E{ŸSetting–l*the“strutŽ¡’E{Ÿheigh¸èt‘.‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h41ŽŽ¦’%}¡2.14.3Ž’E{ŸSetting– v„up“theŽ¡’E{Ÿalignmen¸èt‘ q‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h41ŽŽ¦’%}¡2.14.4Ž’E{ŸP¸èositioning‘XtheŽ¡’E{Ÿtable‘­ñ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h42ŽŽ¦’%}¡2.14.5Ž’E{ŸHandling‘í(topsŽ¡’E{Ÿand‘U bGottoms‘çé‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ‘½h45ŽŽ¦’2.15Ž’%}¡Breaking–U tables“in¸èto“bits‘7‘ü.ŽŽ‘½h46ŽŽ¦’2.16Ž’%}¡The––5wš¸èonderful“w˜orld“ofŽ¡’%}¡Ü\multicolumn ‘ü¹.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h46ŽŽŽŽ‘IŸüj‰ffÿrŸ @‘ ö…Ÿý-:ó#q¡% cmsy6ÎŽŽ‘KÙó(¦÷²"ecrm0800ÓThe–Õ(ó+:–ã ecss0800Ömdwtab“ÓpacšÃ’k‡$age“is“curren˜tly“at“v˜ersion“1.9,“dated“28“April“1998.ŽŸ × ‘ ZŸý-:ÎyŽŽ‘KÙÓThe–Õ(Ömathenv‘ó_ÓpacšÃ’k‡$age“is“curren˜tly“at“v˜ersion“1.9,“dated“28“April“1998.ŽŽŸ’ø(¹1ŽŽŒ‹* ª ýs o þ¬ÿ` ÿ ‘Wÿ¹2.17Ž‘ný¡In¸èterlude:‘q€range‘U lists‘ö_‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ‘½h47ŽŽ¤ ‘Wÿ2.18Ž‘ný¡Horizon¸ètal–U rules“OK‘ˇ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ‘½h48ŽŽ¡‘ný¡2.18.1Ž’ŽûŸDra¸èwing‘ŸÔhorizon-Ž¡’ŽûŸtal‘U rules‘C½‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h48ŽŽ¡‘ný¡2.18.2Ž’ŽûŸV‘ÿ*¸ertical‘U rules‘YÙ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ‘½h49ŽŽ¡‘ný¡2.18.3Ž’ŽûŸDra¸èwing–ýÈbits“ofŽ¡’ŽûŸlines‘Øy‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h49ŽŽ¡‘ný¡2.18.4Ž’ŽûŸDra¸èwing–Öþshort“ta-Ž¡’ŽûŸble‘U ro¸èws‘ü¥‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h51ŽŽ¡‘ný¡2.18.5Ž’ŽûŸPrettifying‘U syn¸ètax‘ &i53ŽŽ¡‘Wÿ2.19Ž‘ný¡Starting–U new“table“ro¸èws‘„ÿ‘ü.ŽŽ‘½h55ŽŽ¡‘Wÿ2.20Ž‘ný¡Gratuitous‘U grotesquery‘¥‘ü.ŽŽ‘Æè‘ü.ŽŽ‘½h56ŽŽ¡‘Wÿ2.21Ž‘ný¡Error‘U messages‘õg‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h57ŽŽŸÿ`‘IÙ3Ž‘WÿImplemen®>tation‘Õof‘ì#ó3»y&³ ecsx1000Þmathenv‘ #Ù58ŽŽ¡‘Wÿ¹3.1Ž‘ný¡Options‘U handling‘?‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h58ŽŽ¡‘Wÿ3.2Ž‘ný¡Some–U useful“registers‘¡‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ‘½h59ŽŽ¡‘Wÿ3.3Ž‘ný¡A–U little“displa¸èy“handling‘Zw‘ü.ŽŽ‘½h59ŽŽ¡‘Wÿ3.4Ž‘ný¡The‘U Ýeqna•¸èrra“y‘x¬¹en“vironmen“t‘ 60ŽŽ¡‘ný¡3.4.1Ž’ŽûŸThe–„Ümain“en¸èvi-Ž¡’ŽûŸronmen¸èts‘R ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h60ŽŽ¡‘ný¡3.4.2Ž’ŽûŸNewline‘U coGdes‘„Á‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ‘½h63ŽŽŽ ÿ ’%}¡3.4.3Ž’E{ŸSetting‘mÐequationŽ© ’E{Ÿn•¸èum“bGers‘àE‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h63ŽŽ¤ ÞP’%}¡3.4.4Ž’E{ŸNum•¸èbGering‘U con“trol‘ C 64ŽŽ¡’%}¡3.4.5Ž’E{ŸThe–úZÝeqnalign“¹en-Ž¦’E{Ÿvironmen¸èt‘5Ý‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h64ŽŽ¡’3.5Ž’%}¡Simple–U m¸èultiline“equations‘_—65ŽŽ¡’3.6Ž’%}¡Split‘U equations‘‘Ï‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h66ŽŽ¡’3.7Ž’%}¡Matrix‘U handling‘ŠÛ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h68ŽŽ¡’3.8Ž’%}¡Dots.–ª.“.‘¥ã‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h73ŽŽ¡’3.9Ž’%}¡Luc¸èky‘U dip‘Ñ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h73ŽŽ¡’3.10Ž’%}¡Error‘U messages‘õg‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h74ŽŽŸqæ’ÿ€ÙAŽ’The–ô GNU‘òüGeneral“PublicŽ¦’Licence‘lÀn74ŽŽ¡’¹A.1Ž’%}¡Pream¸èble‘ç‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h75ŽŽ¡’A.2Ž’%}¡T‘ÿ*¸erms–$•and“conditions“forŽ¦’%}¡cop¸èying,‘Þ¯distribution‘ÁandŽ¦’%}¡moGdication‘-÷‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h75ŽŽ¡’A.3Ž’%}¡AppGendix:‘hkHo¸èw–P•to“Ap-Ž¦’%}¡ply–0·These“T›ÿ*¸erms“to“Y˜ourŽ¦’%}¡New‘U Programs‘|k‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h79ŽŽŽŽŸ-Ö‘IØList–G\of“T‘þ®(ablesŽŸFŸÐ‘Wÿ¹1Ž‘ný¡Ýa•¸èrra“y›ðb¹and‘ÌÖÝtabula“r˜¹columnŽ¤ ‘ný¡t¸èypšGes–U and“mo˜diers‘Äs‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½7ŽŽŸ‘Wÿ2Ž‘ný¡P¸èarameters–¥for“congur-Ž¡‘ný¡ing–U table“en•¸èvironmen“ts‘6³‘ü.ŽŽ‘Æè‘ü.ŽŽ‘½h12ŽŽŽŸÐ’3Ž’%}¡Ýeqna•¸èrra“y‘ u¹column‘ két“ypGesŽ¤ ’%}¡and‘U moGdiers‘ßÛ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h17ŽŽ¡’4Ž’%}¡Pš¸èarameters–‘§for“the“Ýeqna˜r-Ž¡’%}¡raš¸èy‘ƒ_¹and–_ÓÝeqnalign“¹en˜viron-Ž¡’%}¡men¸èts‘—‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘½h22ŽŽŽŽŸ/~‘IØ1Ž‘`ÁUser‘G\guideŽŸæ~‘I¹The–ÍpÝmdwtab“¹pacš¸èk‘ÿqÐage“con˜tains“a“reimplemen˜tation“of“the“standard“LŸýï‘üf ó4TÆ2‚ecrm0700ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“Ýtabula˜rŽ¤ ‘I¹and›jsÝa•¸èrra“y‘ÿ¹en“vironmen“ts.‘±xThis˜is˜not˜just˜an˜upgraded˜v“ersion:‘œ%it's˜a˜completeŽ¡‘Irewrite.‘[-It–&has“sevš¸èeral“adv‘ÿqÐan˜tages“o˜v˜er“the“ocial“Ýa˜rra˜y‘5²¹pac˜k‘ÿqÐage“(not“ra˜w“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X's,Ž¡‘Iwhicš¸èh–òÂis“ev˜en“less“nice),‘nand“it's“more-or-less“compatible.‘P¶Most“of“these“are“ratherŽ¡‘Itec¸èhnical,–U I'll“admit.ŽŸ‘Xó !",š cmsy10¸ŽŽŽ‘b¹The–é´new¸ècolumn“system“is“propšGerly“and“p˜erfectly“inš¸ètegrated“in˜to“the“system.Ž¡‘bThere–×Üare“noš¸èw“ó5½HЃ ecti1000àno‘yj¹`primitiv˜e'“column“t˜ypGes““all“the“standard“t˜ypGes“areŽ¡‘bcreated–U as“user-dened“columns.ŽŸ‘X¸ŽŽŽ‘b¹Y‘ÿ*¸ou–Œgcan“dene“enš¸ètirely“dieren˜t“table-lik˜e“en˜vironmen˜ts“using“the“equipmen˜tŽ¡‘bhere.›\bIt's–Åstill“hard“w¸èork,‘"palthough“less“so“than“bGefore.˜I'll“do“an“example“ofŽ¡‘bthis–U some“time.ŽŽŸ’ø(2ŽŽŒ‹+ ª ýs o ý´‘X¸ŽŽŽ‘b¹Construction–‡bof“the“preamš¸èble“is“generally“m˜uc˜h“tidier.‘FI'v˜e“used“tok˜en“reg-Ž¤ ‘bisters–U rather“than“Ü\edef¹,“and“it's“all“done“v¸èery“nicely‘ÿ*¸.Ž©‘X¸ŽŽŽ‘b¹Fine–ˆspacing“bšGefore“and“after“rules“(describ˜ed“bš¸èy“DEK‘‡Îas“`a“mark“of“qualit˜y')Ž¡‘bis–ž÷noš¸èw“utterly“trivial,‘Ãfsince“the“pream˜ble-generator“will“store“the“appropriateŽ¡‘binformation.Ž¦‘X¸ŽŽŽ‘b¹Y‘ÿ*¸ou–Šdcan“use“Ýa•¸èrra“y‘­ð¹in–ŠdLR‘ŠVand“paragraph“moGdes“without“ha¸èving“to“surroundŽ¡‘bit–U with“`Ü$¹'“signs.Ž¦‘X¸ŽŽŽ‘b¹Usually–7”yš¸èou“don't“w˜an˜t“tables“in“the“middle“of“paragraphs.‘g§F‘ÿ*¸or“these“cases,Ž¡‘bI'v•¸èe›U pro“vided˜a˜simpler˜w“a“y˜to˜pGosition˜the˜table˜horizon“tally‘ÿ*¸.Ž¦‘X¸ŽŽŽ‘b¹F‘ÿ*¸ošGotnotes–­Üw¸èork“prop˜erly“inside“Ýtabula•¸èr‘Ñh¹en“vironmen“ts–­Ü(ho˜orah!).‘{³Y‘ÿ*¸ou“canŽ¡‘b`catcš¸èh'–˜FfoGotnotes“using“the“Ýminipage“¹en˜vironmen˜t“if“y˜ou“lik˜e.‘:ò(It“uses“anŽ¡‘bin•¸èternal›¼gv“ersion˜of˜the˜ÝfoGotnote˜¹pac“k‘ÿqÐage˜to˜handle˜foGotnotes,‘Ö9whic“h˜doGesn'tŽ¡‘bproš¸èvide–\{extra“go•Go“dies–\{lik˜e“the“ÝfoGotnote“¹en˜vironmen˜t;‘`)y˜ou'll“need“to“load“theŽ¡‘bfull–U pac¸èk‘ÿqÐage“explicitly“to“get“them.)Ž¦‘X¸ŽŽŽ‘b¹Standard–²úLŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“tabular“en•¸èvironmen“ts›²úha“v“e˜a˜problem˜with˜lining˜up˜ruledŽ¡‘btables.‘ÝiThe–yÜ\firsthline“¹command“giv¸èen“in“the“àLŸýï‘üR&ó6DZYecti0700áAŽŽ‘ØÿàT‘þKÞŸ&úEŽ‘ÌñX‘´ÈComp‘ÿ}/anion‘=m¹helps“aŽ¡‘bbit,›+#but– £it's“not“really“go•Go“d– £enough,˜and“bGesides,˜it“doGesn't“àactual‘‚Ðly‘¹line“theŽ¡‘btext–vAup“righš¸èt“after“all.‘ÔäThe“Ýmdwtab“¹pac˜k‘ÿqÐage“došGes“the“job“prop˜erly“to“b˜eginŽ¡‘bwith,–U so“yš¸èou“don't“need“to“w˜orry‘ÿ*¸.ŽŸ‘XI'vš¸èe–ÿ?tested“the“follo˜wing“pac˜k‘ÿqÐages“with“Ýmdwtab¹,‘)Çand“they“all“w˜ork.‘oÝSome“ofŽ¡‘Ithe–!bconš¸ètortions“required“to“mak˜e“them“w˜ork“w˜eren't“pleasan˜t,‘+»but“y˜ou“don't“needŽ¡‘Ito–ˆîknoš¸èw“abGout“them.‘ éBy“a“strange“coincidence,‘•áall“the“pac˜k‘ÿqÐages“w˜ere“written“b˜yŽ¡‘IDa•¸èvid›U Carlisle.‘q€An“yw“a“y‘ÿ*¸,˜here's˜the˜list:Ž¦‘X¸ŽŽŽ‘b¹The–U quite“nice“Ýdcolumn“¹pac¸èk‘ÿqÐage.Ž¦‘X¸ŽŽŽ‘b¹The–U more“useful“Ýdela•¸èrra“y‘x¬¹pac“k‘ÿqÐage.Ž¦‘X¸ŽŽŽ‘b¹The–U rather“spiy‘x¬Ýhhline“¹pac¸èk‘ÿqÐage.Ž¦‘X¸ŽŽŽ‘b¹The–U truly“wš¸èonderful“Ýtabula˜rx“¹pac˜k‘ÿqÐage.Ž¦‘X¸ŽŽŽ‘b¹The–U utterly“magnicenš¸èt“Ýlongtable“¹pac˜k‘ÿqÐage.Ž¦‘XNote–âÏthat“I'vš¸èe“loGok˜ed“at“ÝsupGertabula˜r‘[¹as“w˜ell:‘ŒÞit“w˜on't“w˜ork,‘;so“use“ÝlongtableŽ¡‘I¹instead,–U 'cos“it's“m•¸èuc“h‘U bGetter.ŽŸýY‘Ió7¥!¢N ecbx1200â1.1Ž‘g¾The‘¸do wnsideŽŸtî‘I¹There's–¬Íno“sucš¸èh“thing“as“a“free“lunc˜h.‘xˆThe“Ýmdwtab“¹en˜vironmen˜t“is“not“100%Ž¡‘Icompatible–U with“the“Ýtabula•¸èr›x¬¹en“vironmen“t–U found“in“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X‘ä2Ÿÿó  b> cmmi10µ"ŽŽ‘+ûá¹or“the“Ýa•¸èrra“y˜¹pac“k‘ÿqÐage.Ž¡‘XThe–Ámdierences“bGet•¸èw“een–ÁmÝmdwtab“¹and“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X‘ä2Ÿÿµ"ŽŽ‘*¹'s“Ýtabula•¸èr‘äù¹en“vironmen“t–Ámare“asŽ¡‘Ifollo¸èws:ŽŸ‘X¸ŽŽŽ‘b¹The–áåvš¸èertical“spacing“in“Ýa˜rra˜y‘q¹en˜vironmen˜ts“is“dieren˜t“to“that“in“Ýtabula˜rŽ¡‘b¹en•¸èvironmen“ts.‘þ This–ƒúproGduces“more“attractiv¸èe“results“in“most“mathematicalŽ¡‘buses›­Ñof‘táÝa•¸èrra“y#Œ¹s,‘þin˜the˜author's˜opinion.‘{”The˜spacing˜can˜b•Ge˜mo“died˜b¸èyŽ¡‘bpla¸èying–U with“length“parameters.ŽŽŸ’ø(3ŽŽŒ‹* ª ýs o ý´‘X¸ŽŽŽ‘b¹The–Opresence“of“horizonš¸ètal“and“v˜ertical“rules“will“alter“the“spacing“of“theŽ¤ ‘btable–(so“a“pair“of“columns“separated“b¸èy“a“`Ü|¹'Ž‘ªis“wider“than“a“pair“withŽ¡‘bno–W•separation“bš¸èy“Ü\arrayrulewidthŽ‘S©¹.‘xàThis“doGes“mean“that“horizon˜tal“andŽ¡‘bvš¸èertical–§Ürules“matc˜h“up“propGerly““the“usual“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“en˜vironmen˜t“mak˜es“theŽ¡‘bhorizon¸ètal–Èòrules“stop“just“short“of“the“edge“of“the“table,‘äûmaking“an“ugly“messŽ¡‘b(c•¸èhec“k–out“the“àLŸýï‘üR&áAŽŽ‘ØÿàT‘þKÞŸ&úEŽ‘ÌñX‘Exb–ÿ}/o“ok‘˜¹if–yš¸èou“don't“bGeliev˜e“me““page“62“pro˜vides“a“go•Go“dŽ¡‘bexample).‘q€The›U Ýa•¸èrra“y‘x¬¹pac“k‘ÿqÐage˜handles˜rules˜in˜the˜same˜w“a“y˜as˜Ýmdwtab¹.Ž©TÈ‘X¸ŽŽŽ‘b¹In–:common“with“the“Ýa•¸èrra“y‘<ƹpac“k‘ÿqÐage,‘JAthere–:are“some“restrictions“on“the“useŽ¡‘bof–É the“Ü\extracolsepŽ‘HŽP¹command“in“pream•¸èbles:‘Yy“ou›É ma“y˜use˜at˜most˜oneŽ¡‘bÜ\extracolsepŽ’¤Q2¹command–U in“eac¸èh“`Ü@¹'Ž›wÌor“`Ü!¹'Ž˜expression.‘q€Also,“yš¸èou“can't“sa˜yŽŸTÇ‘qó:qLË ectt0900å\newcommand{\xcs}{\extracolsep{\fill}}ŽŽ¦‘b¹and–ìlthen“expGect“something“likš¸èe“`Ü...@{\xcs}...¹'Ž‘S¢tto“actually“w˜ork““theŽ¡‘bÜ\extracolsepŽ’¦.*¹mš¸èustn't–2bGe“hidden“inside“an˜y“other“commands.‘ gBecauseŽ¡‘bthings–é|lik¸èe“`Ü@¹'Ž‘ „expressions“aren't“expanded“at“the“time,‘“Ü\extracolsepŽ‘Fô¹hasŽ¡‘bto–U bšGe“searc¸èhed“and“pro˜cessed“`b¸èy“hand'.Ÿü^ÿß1ŽŽŽ¦‘X¸ŽŽŽ‘b¹Conš¸ètrol–ßYsequences“(commands)“in“a“table's“pream˜ble“aren't“expanded“bGeforeŽ¡‘bthe–‚ùpreamš¸èble“is“read.‘û In“fact,‘Žpcommands“in“the“pream˜ble“are“considered“toŽ¡‘bbšGe–!!column“t¸èyp˜es,‘+‡and“their“names“are“en¸ètirely“indep˜enden¸èt“of“normal“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9XŽ¡‘bcommands.‘òNo–ûcolumn“tš¸èypGes“of“this“nature“ha˜v˜e“y˜et“bGeen“denedŸü^ÿß2ŽŽ‘ü-¹but“theŽ¡‘bpGossibilit•¸èy's›• alw“a“ys˜there.‘1=Use˜the˜Ü\newcolumntypeŽ‘P¥|¹or˜Ü\coldefŽ‘+çȹcommandsŽ¡‘bto–U dene“new“column“t¸èypGes.Ž¦‘X¸ŽŽŽ‘b¹The–Êapreamš¸èble“parsing“w˜orks“in“a“completely“dieren˜t“w˜a˜y‘ÿ*¸.‘ÑCThere“is“a“cer-Ž¡‘btain–)kamounš¸èt“of“compatibilit˜y“pro˜vided,‘2)although“it's“hea˜vily“geared“to˜w˜ardsŽ¡‘bk•¸èeeping‘x¬Ýlongtable›U ¹happ“y˜and˜probably˜w“on't˜w“ork˜with˜other˜pac“k‘ÿqÐages.Ž¦‘X¸ŽŽŽ‘b¹Obscure–Ï6constructs“whicš¸èh“w˜ere“allo˜w˜ed“b˜y“the“old“pream˜ble“parser“but“vi-Ž¡‘bolate–‹the“synš¸ètax“sho˜wn“in“the“next“section“(e.g.,‘Ù+`Ü|@{}|¹'Ž‘)0öto“suppress“theŽ¡‘bÜ\doublerulesepŽ’¯W¹space›Û¨bGet•¸èw“een˜t“w“o˜v“ertical˜rules,‘ýJdescribGed˜in˜àThe‘uLŸýï‘üR&áAŽŽ‘ØÿàT‘þKÞŸ&úEŽ‘ÌñXŽ¡‘bComp‘ÿ}/anion‘µ¹as–U``a“misuse“of“the“`Ü@{...}¹'Ž‘-¶¨qualier')“are“no¸èw“propGerly“out-Ž¡‘bla•¸èw“ed.‘þzY‘ÿ*¸ou–„will“bGe“givš¸èen“an“error“message“if“y˜ou“attempt“to“use“suc˜h“aŽ¡‘bconstruction.Ž¦‘X¸ŽŽŽ‘b¹The‘XŸ`Ü*¹'Ž‘~Êforms–XŸ(whicš¸èh“repGeat“column“t˜ypGes)“are“no˜w“expanded“at“a“dieren˜tŽ¡‘btime.‘Ö¹Previously‘ÿ*¸,‘Mpream•¸èbles›vÞlik“e˜`Üc@*{4}{{:}@}{}c¹'Ž‘`v\w“ere˜considered˜v‘ÿqÐalidŽ¡‘b(the–Õlexample“w¸èould“expand“to“`Üc@{:}@{:}@{:}@{:}@{}c¹'Ž‘}Ü),‘5€bGecause“`Ü*¹'Ž‘¢øsŽ¡‘bwš¸èere–õlexpanded“bGefore“the“pream˜ble“w˜as“actually“parsed.‘QšIn“the“new“system,Ž¡‘b`Ü*¹'Ž‘oËËis–þ=treated“just“likš¸èe“an˜y“other“pream˜ble“c˜haracter“(it“just“has“a“rather“oGddŽ¡‘baction),‘ÓÇand–³qpreamš¸èbles“lik˜e“this“will“result“in“an“error“(and“probably“a“ratherŽ¡‘bconfusing‘U one).Ž¤Só‘XThere–U are“also“sevš¸èeral“incompatibilities“bGet˜w˜een“Ýmdwtab“¹and“Ýa˜rra˜y#Œ¹:Ž¡‘X¸ŽŽŽ‘b¹Because–3‚of“the“w•¸èa“y‘3‚Ü\newcolumntypeŽ‘Qâl¹w“orks–3‚in“the“Ýa•¸èrra“y‘W¹pac“k‘ÿqÐage,‘ka‘3‚horridŽŸ ‘bconstruction‘U lik¸èeŽ‘IŸ»-‰ffÿrŸ E¼‘ !iŸý-:ó;º7Lecrm0600æ1ŽŽŽ‘KÙÓAll–#4ó8¿&Ëectt0800ã\extracolsep“ÓdošŽŽ– ã–„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþ{ŽŽ“„ff'í„ff'í„ff'í„ff'í‘$ŸÿþêhëBtext‘ÙºêiŽŽ‘Ûø„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþå}ŽŽ“„ff'í„ffŸ¶„ff£¨Ý‘úžÌͬ-Ž‘žÌÍŽŽŽ©¤LÍ‘I¸hàc–ÿ}/olumn-typ“e‘ÀO¸iŽ’ˆ¹ÿ¹::=ŽŽ’•ŸýÌϬ-Ž’˜ŽŸýÌÏ-ŽŽ’¡ŽŸþ„ff ?l„ffOÛ„ffOÛ™š®ŽŽŽ¤ÿþ•™šŸLÏ„€ffŸä³3„ffJ`„ffOÛ„ffŸ¶“ŽŽŽ¡“ŸLÏ„€ffŸú³3„ff Žs„ffOÛ„ffOÛ„ff ŽsŸLÍ„€ffŽŽ© “ŸLÏ„ ff“Ÿú³3ŽŽ‘™šŸú³3„ffOÛ„ffOÛ‘$¡åTŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡åMŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘¼œŽŽŽ›¼œ„ffŸ¶„ffŸ¶“ŽŽŽ¡“ŸLÏ„€ffŸú³3„ffÌÍ„ffOÛ„ffOÛ‘$¡ålŽŽ‘ ã–„ffOÛ„ffOÛ„ffÌÍŸLÍ„€ffŽŽ© “ŸLÏ„ ff“Ÿú³3®ŽŽ‘™šŸú³3„ffOÛ„ffOÛ‘$¡åcŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡årŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ˜ŽŽŽ˜„ffŸ¶„ffOÛ„ffJ`ŸLÍ„€ffŽŽ©!•™šŸLÏ„!ff“Ÿä³3ŽŽ›™šŸä³3„ff3ü¡„ffOÛ„ffŸ¶“ŽŽŽ¡“ŸLÏ„€ffŸú³3„ffÌÍ„ffOÛ„ffOÛ‘$¡åpŽŽ‘ ã–„ffOÛ„ffOÛ„ffÌÍŸLÍ„€ffŽŽ© “ŸLÏ„ ff“Ÿú³3®ŽŽ˜Ÿú³3„ffOÛ„ffOÛ‘$¡åmŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸùÌÏ„€ff“Ÿ33ŽŽ˜Ÿ33„ffOÛ„ffOÛ‘$¡åbŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘¼œŽŽŽ‘¼œ„ffŸ¶„ffOÛ‘$¡å{ŽŽ– ã–„ffOÛ„ffOÛ‘$¡êhëBlength‘¶.êiŽŽ‘%éž„ffOÛ„ffOÛ‘$¡å}ŽŽ“„ffOÛ„ffOÛ„ff3ü¡‘®ŽŽ‘ŸLÍ„!ffŽŽ¦•™šŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡å#ŽŽ– ã–„ffOÛ„ffOÛ‘$¡{ŽŽ“„ffOÛ„ffOÛ‘$¡êhëBr•‡$aw-pr“e-text‘ÙºêiŽŽ‘>$Š„ffOÛ„ffOÛ‘$¡å}ŽŽ“„ffOÛ„ffOÛ‘$¡{ŽŽ“„ffOÛ„ffOÛ‘$¡êhëBr•‡$aw-p“ost-text‘ÙºêiŽŽ‘AÄ„ffOÛ„ffOÛ‘$¡å}ŽŽ“„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ’⾆ŽŽŽ’⾆„ffOÛ„ffŸ¶„ff äH‘úžÌͬ-Ž‘žÌÍŽŽŽŸV³3¡‘I¸hàuser-p‘ÿ}/ost-text‘òɸiŽ’zF¹::=ŽŽ’›ÎÆŸýÌϬ-Ž’ŸNÆŸýÌÏ-ŽŽ’¨NÆŸþ„ff ?l„ff'í„ff'í‘$Ÿÿþå<ŽŽ– ã–„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþ{ŽŽ“„ff'í„ff'í„ff'í„ff'í‘$ŸÿþêhëBtext‘ÙºêiŽŽ‘Ûø„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþå}ŽŽ“„ff'í„ffŸ¶„ffŸôz‘úžÌͬ-Ž‘žÌÍŽŽŽ¦¡‘I¸hàrule‘ÀO¸iŽ‘~ðž¹::=ŽŽ’‹EŸýÌϬ-Ž’ŽÅŸýÌÏ-ŽŽ’—ÅŸþ„ff ?l„ffOÛ„ffOÛ™š®ŽŽŽ¤ÿþ™šŸLÏ„€ffŸú³3„ff$ ð„ffOÛ„ffOÛ‘$¡å|ŽŽ‘ ã–„ffOÛ„ffOÛ„ff$ ðŸLÍ„€ffŽŽŸ •™šŸùÌÏ„€ff“Ÿ33®ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡å!ŽŽ– ã–„ffOÛ„ffOÛ‘$¡{ŽŽ“„ffOÛ„ffOÛ‘$¡êhëBtext‘ÙºêiŽŽ‘Ûø„ffOÛ„ffOÛ‘$¡å}ŽŽ“„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘\>⎎Ž‘\>â„ffOÛ„ffŸ¶„ffœ-M‘úžÌͬ-Ž‘žÌÍŽŽŽŸ /ï‘X¹If–Ó£yš¸èou“examine“the“abGo˜v˜e“v˜ery“carefully‘ÿ*¸,‘óDy˜ou'll“notice“a“sligh˜t“deviation“fromŽ¤ ‘Ithe–2/original““an“Ü@¹-expression“àfol‘‚Ðlowing‘¹a“rule“is“considered“to“bGe“part“of“the“ànextŽ¡‘I¹column,›ðºnot–žhthe“curren¸èt“one.‘MXThis“is,˜I‘žthink,˜an“almost“insignicanš¸èt“c˜hange,Ž¡‘Iand–Û^essen¸ètial“for“some“of“the“new“features.‘;Y‘ÿ*¸ou'll“also“notice“the“new“Ü#“¹columnŽ¡‘It•¸èypGe›2¬form,‘9whic“h˜allo“ws˜y“ou˜to˜dene˜new˜real˜column˜t“yp•Ges˜instead˜of˜just˜mo“d-Ž¡‘Iifying–»øexisting“ones.‘¦It's“not“inš¸ètended“for“direct“use“in“pream˜bles““it's“thereŽ¡‘Imainly–4.for“the“bšGenet“of“p˜eople“who“kno¸èw“what“they're“doing“and“insist“on“usingŽ¡‘IÜ\newcolumntype‘U ¹an•¸èyw“a“y‘ÿ*¸.Ž¡‘XThe–U actual“column“tš¸èypGes“are“sho˜wn“in“table“1.Ž¡‘XNoš¸èw–·¤that's“sorted“ev˜erything“out,‘Dthere“shouldn't“bGe“an˜y“argumen˜ts“at“allŽ¡‘IabGout–U what“a“column“means.Ž¡‘XThe›s²lo•¸èw“ercase˜¸hàp–ÿ}/osition-ar“g‘ân¸iŽ‘?Źs˜`Üt¹'Ž‘A>,‘{V`Üc¹'Ž‘¼”and˜`Üb¹'Ž‘´ðdo˜exactly˜what˜they˜did˜bGefore:Ž¡‘Iconš¸ètrol–pÐthe“v˜ertical“pšGositioning“of“the“table.‘ÄThe“upp˜ercase“ones“con¸ètrol“the“àhor-Ž¡‘Iizontal‘´Ü¹pGositioning–¬e“this“is“hoš¸èw“y˜ou“create“àunb–ÿ}/oxe“d‘´Ü¹tables.‘wNY‘ÿ*¸ou–¬ecan“only“createŽ¡‘Iun•¸èbšGo“xed–U tables“in“paragraph“mo˜de.Ž¡‘XNote–CŽthat“un•¸èbšGo“xed–CŽtables“still“can't“b˜e“brok¸èen“across“pages.‘k¥Use“the“ÝlongtableŽ¡‘I¹pac¸èk‘ÿqÐage–U for“this,“bšGecause“it“already“do˜es“an“excellen¸èt“job.Ž¡‘XOne–6)thing“yš¸èou“can“to“with“un˜bGo˜xed“tables,–its–«argumen¸èt“is“written“out“in“paragraph“moGde,‘Áand“the“table“is“con-Ž¡‘Itinš¸èued–>after“the“argumen˜t“nishes.‘ÆÙNote“that“it“isn't“a“real“argumen˜t“as“far“asŽ¡‘Icommands–;Zlikš¸èe“Ü\verb“¹are“concerned““they'll“w˜ork“inside“Ü\tabpause“¹without“an˜yŽ¡‘Iproblems.Ž¡‘XThe– ¦Ü\vline“¹command“draš¸èws“a“v˜ertical“rule“the“heigh˜t“of“the“curren˜t“table“cellŽ‘!¨,å\vlineŽŽŽŽ¡‘I¹(unless–JÁthe“currenš¸èt“cell“is“bGeing“t˜ypšGeset“in“paragraph“mo˜de““it“only“w¸èorks“in“theŽ¡‘Isimple–YLR-moGde“table“cells,‘š or“in“`Ü@¹'Ž›¨or“`Ü!¹'Ž˜mošGdiers).‘}IIt's“no¸èw“b˜een“giv¸èen“anŽ¡‘Ioptional–U argumenš¸èt“whic˜h“giv˜es“the“width“of“the“rule“to“dra˜w:ŽŽŸ’ø(6ŽŽŒ‹i< ª ýs o ÿ!n¤ þŽ÷‘X(à„ffD®AŽŽ¤‘X(à„ffŽ’œp»„ffŽŽ© =l‘X(à¤õÄ„ 30ff—rÁŸü <óC‹–uÌ ecbx0900ëCColumn‘Œ”t´HypK·es“¡„ 30ffŽŽŸõÄ‘X(à„ffŽ’œp»„ffŽŽžff‘X(à„ffD®AŽŽ¡‘X(à„ff‘^«³„ffŽ’œp»„ffŽŽ¦‘X(à¤Y˜„ —ff–!µ£Ÿû¦hName“¡„ —ffŽžcÔ’½¡_MeaningŽŽ’œp»ŸY˜„ —ffŽŽŸY˜‘X(à„ff‘^«³„ffŽ’œp»„ffŽŽžff‘X(à„ffD®AŽŽ¡‘X(à„ff‘^«³„ffŽ’œp»„ffŽŽ¦‘X(àŸY˜„ —ff‘,ù3Ÿû¦hålŽ‘^«´„ —ffŽžcÔ’½¡_ó9Ù.œŒ ecrm0900äLeft–$aligned“text“(óDD—¾è ecss0900ëDtabulaš¾‡êhëBtext‘ÙºêiŽ‘.¾äbAÃet•¾‡columns,‘istreating“it“as“a“v¾{Ž‘&Y©Ÿû¦hêhëBtext‘ÙºêiŽ‘= YŸû¦hå}Ž‘^«´„ —ffŽžcÔ’½¡_äInserts‘$êhëBtext‘ÙºêiŽ‘Ûøäjust–$bAÃefore“the“actual“column“en¾standard“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“Ü\cline“¹command“has“bšGeen“up˜dated.‘qÚAs“w¸èell“as“just“passingŽ‘!¨,å\clineŽŽŽŽ¡‘I¹a–¤ƒrange“of“columns“to“draš¸èw“lines“through,‘¸\y˜ou“can“no˜w“pass“a“comma“separatedŽ¡‘Ilist–U of“column“n•¸èum“bGers–U and“ranges:ŽŸèíŸ ð€‘I¸hàcline-cmd‘w¸iŽ‘ R¹::=ŽŽ’‹_ÒŸýÌϬ-Ž’ŽßÒŸýÌÏ-ŽŽ’—ßÒŸþ„ff ?l„ff'í„ff'í‘$Ÿÿþå\clineŽŽ‘"‚„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþ{ŽŽ› ã–„ff'í„ff'í„ffOÛ„ffOÛŸöÿþ•™šŸLÏ„€ff“Ÿú³3®ŽŽ‘™šŸú³3„ff;ƒ0„ffOÛ„ffOÛ‘$Ÿÿþå,ŽŽ˜„ffOÛ„ffOÛ„ff;ƒ0‘®ŽŽ‘ŸLÍ„€ffŽŽ¤ •™š©ùÌÏ„€ff“Ÿ33ŽŽŸ33„ffŽ‘Ÿ33„ffOÛ„ffOÛ‘$ŸÿþêhëBnumb‡$er‘÷ñêiŽŽ‘+óé„ffOÛ„ffŸ¶“®ŽŽŽŸÿþ“ŸLÏ„€ffŸú³3„ff#ØC„ffOÛ„ffOÛ„ff#ØCŸLÍ„€ffŽŽ¡“¦„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$Ÿÿþå-ŽŽ˜„ffOÛ„ffOÛ‘$ŸÿþêhëBnumb‡$er‘÷ñêiŽŽ‘+óé„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘LP;ŽŽŽ‘LP;„ffŸ¶„ffOÛ„ffŽŽŽ‘ŸûÌÍ„€ffŽŽŽ’’Âü„ffOÛ„ffOÛ„ff'í„ff'í‘$Ÿÿþå}ŽŽ˜„ff'í„ffŸ¶„ff>-‘úžÌͬ-Ž‘žÌÍŽŽŽŸ¼Ž‘X¹The–á)pšGositioning“of“the“horizon¸ètal“lines“has“also“b˜een“impro•¸èv“ed–á)a“bit,‘+so“thatŽ¡‘Ithey–Úmeet“up“with“the“vš¸èertical“lines“propGerly‘ÿ*¸.‘HwDispla˜ys“lik˜e“the“one“in“the“exampleŽ¡‘IbšGelo¸èw–U don't“lo˜ok“go˜o˜d“unless“this“has“b˜een“done“prop˜erly‘ÿ*¸.Ž¡‘Rÿ`„ffyÃ|‘ÿ°ŸfdA–U Ü\cline“¹exampleŽ‘[zH„ffyÃ|ŽŸ‘Rÿ`„ff’N4t„ffŽŸ+3,Ÿã’×pZ„ffZ Ž’,~„ff!ÈžŽŽŸ áC’Â>one‘33ŸQí„fcffŽ’ÝÖÀt•¸èw“o‘ŸQí„fcffŽ’ú\$three‘‘¾ŸQí„fcffŽ’MËfour‘ºçŸQí„fcffŽŽŸ¸S’¼ ä„ff|ê8ŽŽŸ v’¼ ä¤Qí„fcff–Ÿû®v¸èe“¡„fcffŽ’ßÀsix‘ÇŸQí„fcffŽ’ùÊfsev¸èen‘ŸQí„fcffŽ’’äeigh¸ètŽŽŸ… ’¼ ä„ffËÜŽ’ód„ff$.䎎ŽŽŽ‘Rÿ`Ÿ;™’‰ffO@ŸŸ:?œŸÔ‘ ÿ`å\newcommand{\mc}{\multicolumn{1}}ŽŽ¤ ‘ ÿ`\begin{tabular}[C]{|c|c|c|c|}‘8¯¨\cline{2,4}ŽŽ¡‘qü\mc{c|}{one}–¹N&“two“&“three“&“four‘+ê\\“\hlineŽŽ¡‘qüfive–¹N&“six“&“seven“&“\mc{c}{eight}‘ rœ\\“\cline{1,3}ŽŽ¡‘ ÿ`\end{tabular}ŽŽŽŽŽŸGÿ„ff’N4t„ffŽžff‰ffO@ŽŽ ¨1‘Iâ1.4Ž‘g¾Spacing‘¸con trolŽ¦‘I¹One–¤of“the“most“irritating“things“abGout“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X's“tables“is“that“there“isn't“enoughŽ¡‘Ispace–ùQaround“horizonš¸ètal“rules.‘RæDonald“Kn˜uth,› ®in“àThe‘?:T‘þKÞŸ&úEŽ‘ÌñXb–ÿ}/o“ok¹,˜describGes‘ùQadditionŽ¡‘Iof–m,some“extra“vš¸èertical“space“here“as“`a“mark“of“qualit˜y',‘›and“since“T‘þUYŸ&úEŽ‘ã9X“w˜as“designedŽ¡‘Ito–‚JprošGduce“`b˜eautiful“do˜cumen¸èts'“it“seems“a“shame“that“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“do˜esn't“allo¸èw“thisŽ¡‘Ito–U bšGe“done“nicely–ÿ*¸.‘q€W“ell,–U it“do˜es“no¸èw.Ž¡‘XThe–`ºextra“vš¸èertical“space“is“added“using“a“command“Ü\vgap¹,‘c with“the“follo˜wingŽ‘&azå\vgapŽŽŽŽ¡‘I¹syn¸ètax:ŽŸèíŸð€‘I¸hàvgap-cmd‘w¸iŽ‘~ðž¹::=ŽŽ’‹EŸýÌϬ-Ž’ŽÅŸýÌÏ-ŽŽ’—ÅŸþ„ff ?l„ff'í„ff'í‘$Ÿÿþå\vgapŽŽ‘È΄ff'í„ff'í„ffOÛ„ffOÛ™š®ŽŽŽ¤ÿþ™šŸLÏ„€ffŸú³3„ff0ø­„ffOÛ„ffOÛ„ff0ø­ŸLÍ„€ffŽŽŸ •™šŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡å[ŽŽ– ã–„ffOÛ„ffOÛ‘$¡êhëBwhich-c‡$ols‘»ƒêiŽŽ‘6±r„ffOÛ„ffOÛ‘$¡å]ŽŽ“„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘f‘ŽŽŽ‘f‘„ffOÛ„ffOÛ„ff'í„ff'í‘$Ÿÿþå{ŽŽ– ã–„ff'í„ff'í„ff'í„ff'í‘$ŸÿþêhëBlength‘¶.êiŽŽ‘%éž„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþå}ŽŽ“„ff'í„ffŸ¶„ff$ºÉ‘úžÌͬ-Ž‘žÌÍŽŽŽŸœ Ÿ5º‘I¸hàwhich-c‘ÿ}/ols‘Ò¸iŽ’€à.¹::=ŽŽ’4®ŸýÌϬ-Ž’´®ŸýÌÏ-ŽŽ’™´®Ÿþ„ff ?l„ffOÛ„ffOÛŸöÿþ•™šŸLÏ„€ff“Ÿú³3®ŽŽ‘™šŸú³3„ff;ƒ0„ffOÛ„ffOÛ‘$Ÿÿþå,ŽŽ‘ ã–„ffOÛ„ffOÛ„ff;ƒ0‘®ŽŽ‘ŸLÍ„€ffŽŽ¤ •™š©ùÌÏ„€ff“Ÿ33ŽŽŸ33„ffŽ‘Ÿ33„ffOÛ„ffOÛ‘$ŸÿþêhëBnumb‡$er‘÷ñêiŽŽ›+óé„ffOÛ„ffŸ¶“®ŽŽŽŸÿþ“ŸLÏ„€ffŸú³3„ff#ØC„ffOÛ„ffOÛ„ff#ØCŸLÍ„€ffŽŽ¡“¦„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$Ÿÿþå-ŽŽ‘ ã–„ffOÛ„ffOÛ‘$ŸÿþêhëBnumb‡$er‘÷ñêiŽŽ˜„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘LP;ŽŽŽ‘LP;„ffŸ¶„ffOÛ„ffŽŽŽ‘ŸûÌÍ„€ffŽŽŽ’’Âü„ffOÛ„ffŸ¶„ffc¹£‘úžÌͬ-Ž‘žÌÍŽŽŽŸ¼Ž‘X¹This–¤command“m¸èust“appšGear“either“immediately“after“the“b˜eginning“of“the“tableŽ¡‘Ior–Ptimmediately“after“the“Ü\\“¹whicš¸èh“ends“a“ro˜w.‘(A˜ctually‘ÿ*¸,‘„–there“are“other“commandsŽ‘IŸ¸‰ffÿrŸ E¼‘ !iŸý-:æ4ŽŽŽ‘KÙÓThere's–¹ a“nastšÃ’y“use“of‘ZÝÖsmallmatrix“Óin“the“ãtestmath.tex“Óle“whic˜h“comes“with“the“Öamsla-Ž¤ €tex–8lÓdistribution.‘ð­It's“actually“there“to“simšÃ’ulate“a“`smallcases'“en˜vironmen˜t,‘Q>whic˜h“the“ÖmathenvŽ¡ÓpacšÃ’k‡$age–Õ(includes,“based“around“Ösma˜rra˜yÓ.ŽŽŸ’ø(¹8ŽŽŒ‹ —ä ª ýs o ý´‘I¹whicš¸èh–g=also“ha˜v˜e“this“requiremen˜t““y˜ou“can“spGecify“a“collection“of“them“wherev˜erŽ¤ ‘Iy•¸èou're›Quallo“w“ed˜to˜giv“e˜an“y˜one.)‘pGIt˜adds˜some˜v“ertical˜space˜(the˜amoun“t˜is˜giv“enŽ¡‘Ibš¸èy–Œ?the“¸hàlength‘ÄU¸iŽ‘%å·¹)“to“the“table,‘šmaking“sure“that“the“v˜ertical“rules“of“the“table“areŽ¡‘Iextended‘U correctly‘ÿ*¸.Ž¡‘XThe– Ü\vgap“¹command“relies“on“information“stored“while“yš¸èour“table“pream˜ble“isŽ¡‘IbGeing› œexamined.‘XTHo•¸èw“ev“er,‘¶it's˜pGossible˜that˜y“ou˜migh“t˜not˜w“an“t˜some˜of˜the˜rulesŽ¡‘Idraš¸èwn–ÙD(e.g.,‘úNif“y˜ou'v˜e“used“Ü\multicolumn¹).‘ýíThe“optional“¸hàwhich-c‘ÿ}/ols‘Ò¸iŽ‘<=–¹argumen˜tŽ¡‘Iallo•¸èws›[·y“ou˜to˜spGecify˜whic“h˜rules˜are˜ànot‘N€¹to˜bGe˜dra“wn.‘…EY‘ÿ*¸ou˜can˜spGecify˜eitherŽ¡‘Isingle–T1column“n•¸èum“bGers–T1or“ranges.‘q0The“rule“at“the“vš¸èery“left“hand“side“is“giv˜en“theŽ¡‘In•¸èum“bšGer–U 0;“the“rules“at“the“end“of“column“µn“¹are“n•¸èum“b˜ered–U µn¹.‘q€It's“easy“really‘ÿ*¸.Ž¡‘XUsing–‹iÜ\vgap“¹is“all“vš¸èery“w˜ell,‘˜ûbut“it's“a“bit“cum˜bGersome,‘˜ûand“tak˜es“up“a“lot“ofŽ‘+Èå\hlxŽŽŽŽ¡‘I¹tš¸èyping,‘!ÐespGecially–øàwhen“com˜bined“with“Ü\hline“¹commands.‘\ÀThe“Ü\hlx“¹commandŽ¡‘Itries–U to“tidy“things.Ž¡‘XThe–U syn¸ètax“is“simple:Ž©Ÿ LÍ‘I¸hàhlx-cmd‘w¸iŽ‘~ðž¹::=ŽŽ’‹EŸýÌϬ-Ž’ŽÅŸýÌÏ-ŽŽ’—ÅŸþ„ff ?l„ff'í„ff'í‘$Ÿÿþå\hlxŽŽ‘€„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþ{ŽŽ› ã–„ff'í„ff'í„ffOÛ„ffOÛŸöÿþ•™šŸLÏ„€ff“Ÿú³3®ŽŽ‘™šŸú³3„ffEÑ¥„ffOÛ„ffOÛ„ffEÑ¥‘ŽŽ‘ŸLÍ„€ffŽŽ© •™šŸùÌÏ„€ff“Ÿ33ŽŽŸ33„ffŽ‘Ÿ33„ffOÛ„ffŸ¶“ŽŽŽ¤ÿþ“ŸLÏ„€ffŸú³3„ff6í;„ffOÛ„ffOÛ‘$¡åhŽŽ˜„ffOÛ„ffOÛ„ff6í;ŸLÍ„€ffŽŽ¦“ŸLÏ„ ff“Ÿú³3®ŽŽ‘™šŸú³3„ffOÛ„ffOÛ‘Ÿ¶¡åv[Ž‘R¡êhëBwhich-c‡$ols‘»ƒêiŽ‘>™|¡å][Ž‘H ¡êhëBlength‘¶.êiŽ‘gËn¡å]ŽŽ‘q$r„ffOÛ„ffOÛ‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸLÏ„ ff“Ÿú³3ŽŽ‘™šŸú³3„ffüã„ffOÛ„ffOÛ‘Ÿ¶¡ås[Ž‘R¡êhëBlength‘¶.êiŽ‘-Ѩ¡å]ŽŽ‘7*¬„ffOÛ„ffOÛ„ffüã‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸLÏ„ ff“Ÿú³3ŽŽ‘™šŸú³3„ff˜ù„ffOÛ„ffOÛ‘Ÿ¶¡åc{Ž‘R¡êhëBwhich-c‡$ols‘»ƒêiŽ‘>™|¡å}ŽŽ‘Gò€„ffOÛ„ffOÛ„ff˜ù‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸLÏ„ ff“Ÿú³3ŽŽ‘™šŸú³3„ff3 n„ffOÛ„ffOÛ‘$¡åbŽŽ˜„ffOÛ„ffOÛ„ff3 n‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸLÏ„ ff“Ÿú³3ŽŽ‘™šŸú³3„ff÷¾„ffOÛ„ffOÛ‘Ÿ¶¡å/[Ž‘R¡êhëBnumb‡$er‘÷ñêiŽ‘3Ûó¡å]ŽŽ‘=4÷„ffOÛ„ffOÛ„ff÷¾‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ff3 n„ffOÛ„ffOÛ‘$¡å.ŽŽ˜„ffOÛ„ffOÛ„ff3 n‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ’ýxŽŽŽ’ýx„ffŸ¶„ffOÛ„ffŽŽŽ‘ŸûÌÍ„€ffŽŽŽ’—Üš„ffOÛ„ffOÛ„ff'í„ff'í‘$Ÿÿþå}ŽŽ˜„ff'í„ffŸ¶„ff"±ß‘úžÌͬ-Ž‘žÌÍŽŽŽŸU/ï‘I¹The–èbargumenš¸èt“w˜orks“a“bit“lik˜e“a“table“pream˜ble,‘þ"really‘ÿ*¸.‘MAEac˜h“letter“is“a“command.Ž¡‘IThe–U follo¸èwing“are“suppGorted:ŽŸ‘IÜhŽŽŽ‘S?¬¹W‘ÿ*¸orks–÷Šjust“likš¸èe“Ü\hline¹.‘X¾If“y˜ou“put“t˜w˜o“adjacen˜t“to“eac˜h“other,‘ $a“gap“will“bGeŽ¡‘bput›U bGet•¸èw“een˜them.Ž¦‘IÜv[Ž‘SX¸hàwhich-c‘ÿ}/ols‘Ò¸iŽ’ˆ fÜ][Ž’’‰¾¸hàlength‘ÄU¸iŽ’´ã6Ü]ŽŽŽ’¿"â¹W‘ÿ*¸orks–{lik¸èe“Ü\vgap[Ž‘&Žƒ¸hàwhich-c‘ÿ}/ols‘Ò¸iŽ‘[‘Ü]{Ž‘e˜é¸hàlength‘ÄU¸iŽ’‡òaÜ}Ž’2 ¹.‘£If“theŽ¡‘b¸hàlength‘ÄU¸iŽ’‡.í¹is–Õsomitted,‘îüthe“v‘ÿqÐalue“of“Ü\doublerulesep“¹is“used.‘FñThis“usually“loGoksŽ¡‘brigh¸èt.Ž¦‘IÜs[Ž‘SX¸hàlength‘ÄU¸iŽ‘uØÐÜ]ŽŽŽ’€|¹Lea•¸èv“es–5¼a“vš¸èertical“gap“with“the“giv˜en“size.‘UIf“y˜ou“omit“the“¸hàlength‘ÄU¸iŽŽ¡‘b¹then–U Ü\doublerulesep“¹is“used.‘q€This“is“usually“righ¸èt.Ž¦‘IÜc{Ž‘SX¸hàwhich-c‘ÿ}/ols‘Ò¸iŽ’ˆ fÜ}ŽŽŽ’’J¹W‘ÿ*¸orks–U just“lik¸èe“Ü\cline¹.Ž¦‘IÜbŽŽŽ‘S?¬¹Inserts–U a“bac¸èkspace“the“width“of“a“rule.‘q€This“is“useful“when“doing‘x¬Ýlongtable¹s.Ž¦‘IÜ/[Ž‘SX¸hànumb‘ÿ}/er‘}¸iŽ‘|jkÜ]ŽŽŽ’†ª¹Allo¸èws–:ja“page“break“in“a“table.‘h™Don't“use“this“except“in“a“ÝlongtableŽ¡‘b¹en•¸èvironmen“t.‘ úThe‘‚¨¸hànumb‘ÿ}/er‘}¸iŽ‘3ðc¹w“orks–‚¨exactly“the“same“as“it“doGes“in“theŽ¡‘bÜ\pagebreak–Iß¹command,›‡except“that“the“default“is“0,˜whic¸èh“just“pGermits“aŽ¡‘bbreak–U without“forcing“it.Ž¦‘IÜ.ŽŽŽ‘S?¬¹(That's–&Ça“dot)“Starts“the“next“roš¸èw“of“the“table.‘b No“more“c˜haracters“ma˜y“follo˜wŽ¡‘bthe–ºdot,›Ó[and“no“Ü\hline¹,˜Ü\hlx¹,˜Ü\vgap“¹or“Ü\multicolumn“¹commands“ma¸èy“bGeŽ¡‘bused–Safter“it.‘pÐY‘ÿ*¸ou“don't“ha•¸èv“e–Sto“include“it,‘Szand“most“of“the“time“it's“totallyŽ¡‘buseless.›ê*It–}Ycan“bGe“handy“for“some“macros,‘‡gthough.˜I‘}Nused“it“in“(and“in“factŽ¡‘badded–U it“espšGecially“for)“the“table“of“column“t¸èyp˜es.ŽŸ‘XAn–U example“of“the“use“of“Ü\hlx“¹is“givš¸èen,“so“y˜ou“can“see“what's“going“on.ŽŽŸ’ø(9ŽŽŒ‹ ¬« ª ýs o ÿ)eÕ þ‘‘Rÿ`„ffn]‘ÿ°Ÿfd¹Beautiful–U table“exampleŽ‘rG„ffn]ŽŸ‘Rÿ`„ff’N4t„ffŽ šá& ÿs…@’ªÔ”„ffŸVØŽŽ¤’ªÔ”„ffŽ’IÅ„ffŽŽ© v’ªÔ”¤Qí„fcff›ˆ’Ÿû®ÙA‘ÿ ºT&T–ÕCommon“StoQÂc®>k˜¡„fcffŽŽŸQí’ªÔ”„ffŽ’IÅ„ffŽŽžff’ªÔ”„ffŸVØŽŽ¡’ªÔ”„ff‘1üà„ffŽ’šÐ„ffŽ’IÅ„ffŽŽ¦’ªÔ”ŸQí„fcff‘ T€Ÿû®Y‘ÿ ºearŽ‘1üà„fcffŽ’ì PriceŽ’šÐŸQí„fcffŽ’ˆýDividendŽ’IÅŸQí„fcffŽŽŸQí’ªÔ”„ff‘1üà„ffŽ’šÐ„ffŽ’IÅ„ffŽŽžff’ªÔ”„ffŸVØŽŽ¡’ªÔ”„ff‘1üà„ffŽ’šÐ„ffŽ’IÅ„ffŽŽ¦’ªÔ”¤Qí„fcff–ÿŸû®¹1971“¡„fcffŽ’ìP4154‘ÿŸQí„fcffŽ’$F$2.60‘ÿŸQí„fcffŽŽ¤fc’ªÔ”¤Qí„fcff‘þ Ÿû®2‘ÿ¡„fcffŽ’ìP4154‘ÿŸQí„fcffŽ’(ÿö2.70‘ÿŸQí„fcffŽŽ¡’ªÔ”¤Qí„fcff‘þ Ÿû®3‘ÿ¡„fcffŽ’ìP4655‘ÿŸQí„fcffŽ’(ÿö2.87‘ÿŸQí„fcffŽŽ¡’ªÔ”¤Qí„fcff‘þ Ÿû®4‘ÿ¡„fcffŽ’ìP4053‘ÿŸQí„fcffŽ’(ÿö3.24‘ÿŸQí„fcffŽŽ¡’ªÔ”¤Qí„fcff‘þ Ÿû®5‘ÿ¡„fcffŽ’ìP4552‘ÿŸQí„fcffŽ’(ÿö3.40‘ÿŸQí„fcffŽŽ¡’ªÔ”¤Qí„fcff‘þ Ÿû®6‘ÿ¡„fcffŽ’ìP5159‘ÿŸQí„fcffŽ’-ÿ¦.95*Ž‘ÿŸQí„fcffŽŽŸQí’ªÔ”„ff‘1üà„ffŽ’šÐ„ffŽ’IÅ„ffŽŽžff’ªÔ”„ffŸVØŽŽŸ v’ªÔ”*–U (rst“quarter“only)ŽŽŽŽŽ‘Rÿ` ¯™y‰ffO@Ÿ ¨?œ ÿf‘ ÿ`å\newcommand{\zerowidth}[1]{\hbox–¹Nto“0pt{\hss#1\hss}}ŽŽ¤ ‘ ÿ`\setlength{\tabcolsep}{1.5em}ŽŽ¡‘ ÿ`\begin{tabular}[C]{|–¹Nr“|“c“|“r“|}‘U|\hlx{hv[1,2]}ŽŽ¡‘qü\multicolumn{3}{|c|}{\bf–¹NAT\&T“Common“Stock}‘ rœ\\“\hlx{v[1,2]hv}ŽŽ¡‘qü\multicolumn{1}{|c|}{\zerowidth{\bf–¹NYear}}“&ŽŽ¡‘qü\multicolumn{1}{c|}{\zerowidth{\bf–¹NPrice}}“&ŽŽ¡‘qü\multicolumn{1}{c|}{\zerowidth{\bf–¹NDividend}}“\\“\hlx{vhv}ŽŽ¡‘qü1971–¹N&“41--54“&“\$2.60‘q_P\\ŽŽ¡‘!æ2–¹N&“41--54“&‘+ê2.70‘q_P\\ŽŽ¡‘!æ3–¹N&“46--55“&‘+ê2.87‘q_P\\ŽŽ¡‘!æ4–¹N&“40--53“&‘+ê3.24‘q_P\\ŽŽ¡‘!æ5–¹N&“45--52“&‘+ê3.40‘q_P\\ŽŽ¡‘!æ6–¹N&“51--59“&‘å8.95\rlap{*}‘K”à\\“\hlx{vhs}ŽŽ¡‘qü\multicolumn{3}{@{}l}{*–¹N(first“quarter“only)}ŽŽ¡‘ ÿ`\end{tabular}ŽŽŽŽŽ µÿ„ff’N4t„ffŽžff‰ffO@ŽŽŽŸ‘Iâ1.5Ž‘g¾Creating–¸b_úeautiful“long“tablesŽŸtî‘I¹Y‘ÿ*¸ou–²%can“use“the“Ü\vgap“¹and“Ü\hlx“¹commands“with“Da¸èvid“Carlisle's“stunningŽ¤ ‘IÝlongtable›ìʹpac•¸èk‘ÿqÐage.‘ 8~Ho“w“ev“er,‘Rµthere˜are˜some˜things˜y“ou˜should˜bGe˜a“w“a“y˜of˜toŽ¡‘Iensure–U that“yš¸èour“tables“alw˜a˜ys“come“out“loGoking“lo˜v˜ely‘ÿ*¸.Ž¡‘XThe–ÊDÝlongtable“¹pacš¸èk‘ÿqÐage“will“break“a“table“at“an“Ü\hline“¹command,‘æ lea˜ving“a“ruleŽ¡‘Iat–³-the“bGottom“of“the“page“and“another“at“the“top“of“the“next“page.‘‹¦This“meansŽ¡‘Ithat–pYa“constructions“likš¸èe“Ü\hlx{vhv}“¹will“bGe“brok˜en“in˜to“something“lik˜e“Ü\hlx{vh}Ž¡‘I¹at–^2the“bGottom“of“the“page“and“Ü\hlx{hv}“¹at“the“top“of“the“next.‘ŒµY‘ÿ*¸ou“need“toŽ¡‘Idesign–U the“table“headers“and“foGoters“with“this“in“mind.Ž¡‘XHo•¸èw“ev“er,‘'—there–ýappšGears“to“b˜e“a“sligh¸èt“problem:Ÿü^ÿß5ŽŽ‘ >q¹if“the“fo˜oter“starts“with“anŽ¡‘IÜ\hline¹,›ëÿand–ÍÒa“page“is“brok¸èen“at“an“Ü\hline¹,˜then“yš¸èou“get“an“extra“thic˜k“rule“atŽ¡‘Ithe–]KbšGottom“of“the“page.‘ŠThis“is“a“bit“of“a“problem,‘_Vb˜ecause“if“the“rule“isn't“thereŽ¡‘Iin–+áthe“fošGoter“and“y¸èou“get“a“break“b˜et•¸èw“een›+át“w“o˜ro“ws˜àwithout‘ª¹a˜rule˜bGet“w“een˜them,Ž¡‘Ithen–U the“page“lošGoks“v¸èery“o˜dd.Ž‘IŸX‰ffÿrŸ E¼‘ !iŸý-:æ5ŽŽŽ‘KÙÓY‘ÿJ¶ou–Õ(mighšÃ’t“v˜ery“w˜ell“call“it“a“bug.‘ÆàI“couldn't“p5ùž" cmmi9é:Ž¤³0‘a?l:Ž¡‘a?l:ŽŽŽ¡‘XåLots–¹Nof“text“&“like“this‘3öZ\\“\hlx{vhv}Ž¡‘XLast–¹Nmain“&“table“line‘=hö\\“\hlx{vh}Ž¡‘X\end{longtable}Ž©ýY‘Iâ1.6Ž‘g¾Rules–¸and“v ertical“p_úositioningŽŸtî‘I¹In– ãthe“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X‘ä2Ÿÿµ"ŽŽ‘.“g¹and“Ýa•¸èrra“y‘ÿ*¸.st“y‘Äo¹v“ersions› ãof‘góÝtabula“r¹,‘óÓy“ou˜run˜in“to˜problems˜if˜y“ouŽ¤ ‘Itry–0to“use“ruled“tables“together“with“the“`Ü[t]¹'Ž›}Dor“`Ü[b]¹'Ž˜pšGosition“sp˜eciers““theŽ¡‘Itop– Hor“bšGottom“rule“ends“up“b˜eing“nicely“lined“up“with“the“text“baseline,‘:givingŽ¡‘Iyš¸èou–‰"an“eect“whic˜h“is“nothing“lik˜e“the“one“y˜ou“expGected.‘ ‡The“àLŸýï‘üR&áAŽŽ‘ØÿàT‘þKÞŸ&úEŽ‘ÌñX‘ÉComp‘ÿ}/anionŽ¡‘I¹giv•¸èes›dt“w“o˜commands˜Ü\firsthline˜¹and˜Ü\lasthline˜¹whic“h˜are˜suppGosed˜to˜helpŽ¡‘Iwith–îthis“problem.‘O!(These“commands“ha•¸èv“e–îsince“migrated“inš¸èto“the“Ýa˜rra˜y‘Ž¹pac˜k‘ÿqÐage.)Ž¡‘IUnfortunately‘ÿ*¸,‘UÜ\firsthline–ü¢¹došGesn't“do“its“job“prop˜erly““it“gets“the“text“p˜ositionŽ¡‘Iwrong–U b¸èy“exactly“the“width“of“the“table“rules.Ž¡‘XThe–ÓåÝmdwtab“¹pacš¸èk‘ÿqÐage“mak˜es“all“of“this“automatic.‘FmIt“gets“the“baseline“pGositionsŽ¡‘Iexactly–Urighš¸èt,‘2£whether“or“not“y˜ou“use“rules.‘… Earlier“v˜ersions“of“this“pac˜k‘ÿqÐage“re-Ž¡‘Iquired–ø•that“yš¸èou“pla˜y“with“a“length“parameter“called“Ü\rulefudge¹;‘nthis“is“no“longerŽ¡‘Inecessary–j(or“evš¸èen“pGossible““the“length“parameter“no“longer“exists).‘W™The“pac˜k‘ÿqÐageŽ¡‘Ino¸èw–ð"correctly“compšGensates“for“all“sorts“of“rules“and“Ü\vgap¹s“at“the“top“and“b˜ottomŽ¡‘Iof–äa“table“and“it“gets“the“pGositioning“righš¸èt“all“b˜y“itself.‘¹ÌY‘ÿ*¸ou'v˜e“nev˜er“had“it“soŽ¡‘Igo•Go“d.Ž¦‘Iâ1.7Ž‘g¾User–¸serviceable“partsŽŸtî‘I¹There–hare“a“lot“of“parameters“whicš¸èh“y˜ou“can“moGdify“in“order“to“mak˜e“arra˜ys“andŽ¡‘Itables–U loGok“nicer.‘q€They“are“all“listed“in“table“2.ŽŽŸ’õ€P11ŽŽŒ‹ ÎÞ ª ýs o ÿ+RÀ þ…¦‘[´I„ff=—nŽŽ¤‘[´I„ff‘W”à„ffŽ’˜åQ„ffŽŽŸ =l‘[´I¤Y˜„ —ff‘Ÿû¦hëCP´Harameter‘ ¯Æ¡„ —ffŽžcÔ’ºõMeaningŽŽ’˜åQŸY˜„ —ffŽŽŸY˜‘[´I„ff‘W”à„ffŽ’˜åQ„ffŽŽ¨ff‘[´I„ff=—nŽŽ¡‘[´I„ff‘W”à„ffŽ’˜åQ„ffŽŽŸÙ˜‘[´I¤Y˜„#30ff‘Ÿð¦hå\tabstyle‘'"¡„#30ffŽŸõcÔ’ºõäA‘ˆðcommand–‰Pexecuted“at“the“bAÃeginning“of“a“ëDtabula¾¹'Ž‘pream“ble˜command.‘ZnY‘ÿ*¸ou˜use˜theŽ¡‘bÜ\tabuserpretype{Ž’µú¸hàtext‘òɸiŽ’ΕÊÜ}Ž’Ø3¯¹command–^9to“insert“it.‘ŒÊUser“pre-texts“are“writ-Ž¡‘bten–Ì_in“àr‘ÿ}/everse‘Œ®¹order“bGet•¸èw“een–Ì_the“pre-text“of“the“column“item“and“the“textŽ¡‘bfrom–U the“table“cell.Ž¦‘IÙUser–ÕpQÂost-text“itemsŽŽ’µ¬]¹w•¸èork› ýlik“e˜the˜`Ü<¹'Ž‘†pream“ble˜command.‘ ÕY‘ÿ*¸ou˜use˜theŽ¡‘bÜ\tabuserposttype{Ž’»:n¸hàtext‘òɸiŽ’ÓÕvÜ}Ž’ܧ6¹command–’to“insert“it.‘(]Lik¸èe“user“pre-texts,‘¡RuserŽ¡‘bpšGost-texts–¸Oare“written“in“rev¸èerse“order,‘Ñb˜et•¸èw“een–¸Othe“table“cell“text“and“theŽ¡‘bcolumn–U item“pGost-text.Ž¦‘IÙSpace‘ÕitemsŽŽ’‰ /¹w•¸èork›r*lik“e˜the˜`Ü@¹'Ž‘±àpream“ble˜command.‘ÈžThey're˜inserted˜with˜theŽ¡‘bÜ\tabspctype{Ž’ ü¸hàtext‘òɸiŽ’¹—Ü}Ž’Â+æ¹command.Ž¦‘IÙRule‘ÕitemsŽŽ’„[.¹w•¸èork›,ilik“e˜the˜`Ü|¹'˜and˜`Ü!¹'Ž‘&^commands.‘ ÷ZY‘ÿ*¸ou˜insert˜them˜with˜theŽ¡‘bÜ\tabruletype{Ž’¦;¾¸hàtext‘òɸiŽ’¾ÖÆÜ}Ž’È.¹command.‘kUNote–ý¼that“the“text“is“inserted“b¸èy“Ü\vgapŽ¡‘b¹toGo,‘blesŽ¦‘I¹The–VÅmain“tricš¸èky“bit“in“doing“table-lik˜e“en˜vironmen˜ts“is“parsing“pream˜bles.‘voNoŽ¡‘Ilonger.Ž¡‘XThe–E[main“parser“routine“is“called“Ü\tab@doreadpream¹.‘B2Giv¸èen“a“user“pream-Ž‘í±Òå\tab@readpreambleŽŽŽŽ¡‘òk \tab@doreadpreamŽŽŽŽ¡‘I¹ble–,6string“as“an“argumenš¸èt,‘aüit“will“build“an“Ü\halign“¹pream˜ble“to“return“to“y˜ou.Ž¡‘IHo•¸èw“ev“er,‘jgthe›f&pream“ble˜proGduced˜w“on't˜b•Ge˜complete.‘¤’This˜is˜b“ecause˜y¸èou˜can˜ac-Ž¡‘Itually–ûmakš¸èe“m˜ultiple“calls“to“Ü\tab@doreadpream“¹with“bits“of“user“pream˜bles.‘S|TheŽ¡‘IÜ\newcolumntype–§¹system“uses“this“mec¸èhanism,‘Ééas“došGes“the“`Ü*¹'Ž‘Â(rep˜eating)“mo˜dier.Ž¡‘IWhen–F,there“really“is“no“more“preamš¸èble“to“read,‘I)y˜ou“need“to“àc‘ÿ}/ommit‘8õ¹the“heldo˜v˜erŽ¡‘Itokš¸èens–»Ýto“the“output.‘>jThe“Ü\tab@readpreamble“¹routine“will“do“this“for“y˜ou““giv˜enŽ¡‘Ia–U user“pream¸èble,“it“builds“a“complete“output“from“it.Ž¡‘XA‘^ôtokš¸èen–^÷register“Ü\tab@preamble“¹is“used“to“store“the“generated“pream˜ble.‘Be-Ž¡‘Ifore–Cstarting,‘FŒyš¸èou“m˜ust“iniitialise“this“tok˜en“list“to“whatev˜er“y˜ou“w˜an˜t.‘´èThere'sŽŽŸ’õ€P14ŽŽŒ‹% ª ýs o ý´‘I¹another–:Žtokš¸èen“register,–séÜ\tab@shortline¹,“whic˜h–:Žis“used“to“store“tok˜ens“used“b˜yŽ¤ ‘IÜ\vgap¹.‘RF‘ÿ*¸or–Ÿþeacš¸èh“column“in“the“table,‘²µthe“list“con˜tains“an“Ü\omit“¹(to“o˜v˜erride“theŽ¡‘Istandard–Ñšpream¸èble)“and“an“Ü\hfil“¹space“taking“up“most“of“the“column.‘æíFinally‘ÿ*¸,Ž¡‘Ifor–A}eacš¸èh“rule“item“in“the“user“pream˜ble,‘Ejthe“shortline“list“con˜tains“an“en˜try“of“theŽ¡‘Iform:Ž¤‘bÜ\tab@ckr{Ž’‘=¸hàc–ÿ}/olumn-numb“er‘}¸iŽ’Ü¥öÜ}{Ž’ç%N¸hàrule-text‘òɸiŽ’ Ü}ŽŽ¡‘I¹This–êis“used“to“decide“whether“to“prinš¸èt“the“rule“or“an“empt˜y“thing“of“the“sameŽ¤ ‘Iwidth.‘ ]Y‘ÿ*¸ou–Ýprobably“oughš¸èt“to“kno˜w“that“the“v˜ery“rst“column“doGes“ànot‘Ïݹha˜v˜e“aŽ¡‘Ileading–,\Ü\omit“¹“this“is“supplied“b¸èy“Ü\vgap“¹so“that“it“can“then“loGok“for“optionalŽ¡‘Iargumen¸èts.Ž¡‘XAs–/#wš¸èell“as“initialising“Ü\tab@preamble“¹and“empt˜ying“Ü\tab@shortline¹,‘e¤thereŽ‘— å\tab@initreadŽŽŽŽ¡‘I¹are–¸¸sevš¸èeral“other“opGerations“required“to“initialise“a“pream˜ble“read.‘œGThese“are“allŽ¡‘IpGerformed–'Ébš¸èy“the“Ü\tab@initread“¹macro,‘0Úalthough“y˜ou“ma˜y“w˜an˜t“to“c˜hange“someŽ¡‘Iof–«the“v‘ÿqÐalues“for“y¸èour“spšGecic“application.‘­!F‘ÿ*¸or“reference,‘CNthe“actions“p˜erformedŽ¡‘Iare:Ž¤‘X¸ŽŽŽ‘b¹initialising–U the“parser“state“b¸èy“setting“Ü\tab@stateŽ‘:˜ðóKñ`y cmr10²=‘ÇÜ\tab@startstateŽ‘Q‚,¹;Ž¡‘X¸ŽŽŽ‘b¹clearing–U the“tok¸èen“lists“Ü\tab@preamble“¹and“Ü\tab@shortlist¹;Ž¡‘X¸ŽŽŽ‘b¹initialising–óœthe“macros“Ü\tab@tabtext¹,–;Ü\tab@midtext¹,“and‘óœÜ\tab@multicolŽ¤ ‘b¹to–„ their“default“v‘ÿqÐalues“of“`Ü&¹',‘­í`Ü\ignorespaces#\unskip¹'“and“the“emptš¸èy“tok˜enŽ¡‘blist‘U respGectiv¸èely‘ÿ*¸.Ÿü^ÿß6ŽŽŽ©‘X¸ŽŽŽ‘b¹clearing–Süthe“inš¸èternal“tok˜en“list“registers“Ü\tab@pretext¹,‘“³Ütab@userpretextŽ¡‘b¹and‘U Ü\tab@posttext¹;Ž¦‘X¸ŽŽŽ‘b¹clearing–U the“column“coun¸èter“Ü\tab@columns“¹to“zero;Ž¦‘X¸ŽŽŽ‘b¹clearing–ïthe“action“pGerformed“when“a“new“column“is“started“(b¸èy“making“theŽ¡‘bÜ\tab@looped–1¹macro“equal“to“Ü\relax¹;‘Ÿthis“is“used“to“mak¸èe“Ü\multicolumnŽ¡‘b¹macro–U raise“an“error“if“y¸èou“try“to“do“more“than“one“column);“andŽ¦‘X¸ŽŽŽ‘b¹setting–4Yup“some“other“switcš¸èhes“used“b˜y“the“parser“(Ü\iftab@rule¹,Ž¡‘bÜ\iftab@initrule–U ¹and“Ü\iftab@firstcol¹,“all“of“whic¸èh“are“set“to“bGe“Ütrue¹).Ž¦‘XThe–Ü2macro“Ü\tab@multicol“¹is“used“b¸èy“the“Ü\multicolumn“¹command“to“insertŽ¡‘Ianš¸èy–-"necessary“items“(e.g.,‘5"struts)“bGefore“the“actual“column“text.‘d+If“y˜ou“set“this“toŽ¡‘Isomething›ýv¹pacš¸èk‘ÿqÐage“pro˜vides“sev˜eral“en˜vironmen˜ts“for“aligning“equations“in“v‘ÿqÐar-Ž¡‘Iious›£áw•¸èa“ys.‘]ÃThey're˜mainly˜pro“vided˜as˜a˜demonstration˜of˜the˜table˜handlingŽ¡‘Imacros–öÄin“Ýmdwtab¹,‘_.so“don't“expGect“great“things.‘ VmIf“yš¸èou“w˜an˜t“truly“bGeautifulŽ¡‘Imathematics,› Üuse‘^ƒÝamsmath¹.Ÿü^ÿß7ŽŽ‘ ܹHo•¸èw“ev“er,˜the–^ƒv‘ÿqÐarious“en•¸èvironmen“ts–^ƒdo“nest“in“anŽ¡‘Iapproš¸èximately–.Ýuseful“w˜a˜y‘ÿ*¸.‘þ¸I‘.¥also“think“that“the“Ýmatrix“¹and“Ýscript“¹en˜vironmen˜tsŽ¡‘Iproš¸èvided–dNhere“giv˜e“bGetter“results“than“their“Ýamsmath“¹equiv‘ÿqÐalen˜ts,‘¨and“they“areŽ¡‘Icertainly–U more“v¸èersatile.ŽŸýY‘IÙ1.10.1Ž‘qáThe‘Õnew‘ýùÞeqna•±Ìrra“y‘ü2Ùen•®>vironmen“tŽ¦‘I¹As–×"an“example“of“the“new“column“dening“features,‘7¢and“bGecause“the“originalŽ‘5åeqnarrayŽŽŽŽ¡‘|Beqnarray*ŽŽŽŽ¡‘I¹isn't–`”terribly“go•Go“d,‘cpI'vš¸èe–`”included“a“rewritten“v˜ersion“of“the“Ýeqna˜rra˜y‘„ ¹en˜vironmen˜t.Ž¡‘IThe–e¡new“implemenš¸ètation“closes“the“gap“bGet˜w˜een“Ýeqna˜rra˜y‘‰-¹and“¸A‘þ"ŸžWMŽ‘‘S‘¿ü¹-T‘þUYŸ&úEŽ‘ã9XŽ‘1ˆpalignmen˜tŽ¡‘Ifeatures.‘- It's–‡ºin“a“separate,›°Îpac¸èk‘ÿqÐage“called“Ýmathenv¹,˜to“a•¸èv“oid›‡ºw“asting˜y“our˜memory‘ÿ*¸.Ž¤Ÿ LÍ‘I¸hàe–ÿ}/qnarr“ay-env‘}¸iŽ’ŒâE¹::=ŽŽ’™6ÅŸýÌϬ-Ž’œ¶ÅŸýÌÏ-ŽŽ’¥¶ÅŸþ„ff ?l„ff'í„ff'í‘$ŸÿþêhëBb•‡$e“gin-e“qnarr“ay‘ÍIêiŽŽ‘GÂ)„ff'í„ff'í„ffOÛ„ffOÛŸöÿþ•™šŸLÏ„€ff“Ÿú³3®ŽŽ‘™šŸú³3„ff²¿„ffOÛ„ffOÛ‘$Ÿÿþå\\ŽŽ‘œä„ffOÛ„ffOÛ„ff²¿‘®ŽŽ‘ŸLÍ„€ffŽŽŸ •™šŸùÌÏ„€ff“Ÿ33ŽŽŸ33„ffŽ–Ÿ33„ffOÛ„ffOÛ‘$ŸÿþêhëBr‡$ow‘÷ñêiŽŽ‘›û„ffOÛ„ffOÛ„ff®ŽŽŽ“ŸûÌÍ„€ffŽŽŽ‘-Ûg„ffOÛ„ffOÛ„ff'í„ff'í‘$ŸÿþêhëBend-e•‡$qnarr“ay‘ÍIêiŽŽ‘BØ„ff'í„ffŸ¶„ff(]Ê‘úžÌͬ-Ž‘žÌÍŽŽŽ¡ŸLÍ‘I¸hàb–ÿ}/e“gin-e“qnarr“ay‘ân¸iŽ’“Uù::=ŽŽ’ŸªCŸýÌϬ-Ž’£*CŸýÌÏ-ŽŽ’¬*CŸþ„ff ?l„ff%¨„ff%¨‘$Ÿÿþå\beginŽŽ‘"‚„ff%¨„ff%¨„ffM–„ffM–™š®ŽŽŽ¤ÿþ™šŸLÏ„€ffŸú³3„ff)t„ffOÛ„ffOÛ‘$¡å{eqnarray}ŽŽ‘5gT„ffOÛ„ffOÛ„ff)tŸLÍ„€ffŽŽŸ •™šŸùÌÏ„€ff“Ÿ33®ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡å{eqnarray*}ŽŽ‘: ¢„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘Jù¨ŽŽŽ‘Jù¨„ffM–„ffM–„ffM–‘úžÌͬ-ŽŽŽŸ’‹EŸýÌÏ-ŽŽ’”EŸþ„ff ?l„ff€Ž’¡ŠŸþ„ffOÛ™š®ŽŽŽ¤ÿþ™šŸLÏ„€ffŸú³3„ff=ç;„ffOÛ„ffOÛ„ff=ç;ŸLÍ„€ffŽŽŸ•™š©ùÌÏ„ €ff“Ÿ33ŽŽ›™šŸ33„ffOÛ„ffOÛ‘$¡å[ŽŽ‘ ã–„ffOÛ„ffŸ¶Ÿöÿþ“ŸLÏ„€ff“Ÿú³3®ŽŽ˜Ÿú³3„ffÚÄ„ffOÛ„ffOÛ„ffÚÄ‘ŽŽ‘ŸLÍ„€ffŽŽŸ “¦„€ff“Ÿ33ŽŽŸ33„ffŽ–Ÿ33„ffOÛ„ffOÛ‘$¡êhëBe•‡$qa-c“olumn‘¶.êiŽŽ‘:¯k„ffOÛ„ffOÛ„ff®ŽŽŽ“ŸûÌÍ„€ffŽŽŽ‘KîׄffŸ¶„ffOÛ‘$¡å]ŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„ €ffŽŽŽ’€n+ŽŽŽ’€n+„ffOÛ„ffŸ¶„ffzMß‘úžÌͬ-Ž‘žÌÍŽŽŽŸ*³3‘IŸ ‰ffÿrŸ E¼‘ !iŸý-:æ6ŽŽŽ‘KÙÓThese–üDare“macros“rather“than“tokšÃ’en“lists“to“a˜v˜oid“hogging“all“the“tok˜en“list“registers.‘~”A˜ctually‘ÿJ¶,Ž¤ €the–g±pacšÃ’k‡$age“only“allo˜p„ffOÛ„ffOÛ„ff>˜pŸLÍ„€ffŽŽŸ•™š¤ùÌÏ„ €ff“Ÿ33ŽŽ›™š©33„ffOÛ„ffŸ¶Ÿöÿþ“ŸLÏ„€ff“Ÿú³3ŽŽ˜Ÿú³3„ff0E„ffOÛ„ffOÛ„ff0E‘ŽŽ‘ŸLÍ„€ffŽŽŸ “¡„€ff“¦ŽŽ¦„ffŽ›¦„ffOÛ„ffOÛ‘$Ÿÿþå>ŽŽ– ã–„ffOÛ„ffOÛ‘$Ÿÿþ{ŽŽ“„ffOÛ„ffOÛ‘$ŸÿþêhëBpr‡$e-text‘ÙºêiŽŽ‘,Ž‰„ffOÛ„ffOÛ‘$Ÿÿþå}ŽŽ“„ffOÛ„ffOÛ„ff®ŽŽŽ˜ŸûÌÍ„€ffŽŽŽ‘lWÙ„ffŸ¶„ffOÛ‘ŽŽ‘ŸûÌÍ„ €ffŽŽŽ’ЕŽŽŽ’Е„ff ׄff ׄff בúžÌͬ-ŽŽŽŸ"’‹EŸýÌÏ-ŽŽ’”EŸþ„ff ?l„ff€Ž’¡ŠŸþ„ffOÛ™š®ŽŽŽ¤ÿþ•™šŸLÏ„€ffŸä³3„ffOÛ„ffŸ¶“ŽŽŽ¡“ŸLÏ„€ffŸú³3„ff Žs„ffOÛ„ffOÛ„ff ŽsŸLÍ„€ffŽŽŸ “ŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡åTŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘¼œŽŽŽ›¼œ„ffŸ¶„ffŸ¶“ŽŽŽ¡“ŸLÏ„€ffŸú³3„ffÌÍ„ffOÛ„ffOÛ‘$¡årŽŽ‘ ã–„ffOÛ„ffOÛ„ffÌÍŸLÍ„€ffŽŽ© “ŸLÏ„ ff“Ÿú³3®ŽŽ‘™šŸú³3„ffOÛ„ffOÛ‘$¡åcŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡ålŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ˜ŽŽŽ˜„ffŸ¶„ffOÛŸLÍ„€ffŽŽŸ!•™šŸLÏ„ ff“Ÿú³3ŽŽ‘™šŸú³3„ffm•„ffOÛ„ffOÛ‘$¡åLŽŽ‘ ã–„ffOÛ„ffOÛ„ffm•‘®ŽŽ‘ŸLÍ„ ffŽŽŸ •™šŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffm•„ffOÛ„ffOÛ‘$¡åxŽŽ‘ ã–„ffOÛ„ffOÛ„ffm•‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘N—ÆŽŽŽ‘N—Æ„ffOÛ„ffOÛ„ffOÛ„ffOÛ™šŽŽŽŸÿþ™šŸLÏ„€ffŸú³3„ff@N„ffOÛ„ffOÛ„ff@NŸLÍ„€ffŽŽŸ•™š¤ùÌÏ„ €ff“Ÿ33ŽŽ›™š©33„ffOÛ„ffŸ¶Ÿöÿþ“ŸLÏ„€ff“Ÿú³3ŽŽ˜Ÿú³3„ff1Åb„ffOÛ„ffOÛ„ff1Åb‘ŽŽ‘ŸLÍ„€ffŽŽŸ “¡„€ff“¦ŽŽ¦„ffŽ›¦„ffOÛ„ffOÛ‘$Ÿÿþå<ŽŽ– ã–„ffOÛ„ffOÛ‘$Ÿÿþ{ŽŽ“„ffOÛ„ffOÛ‘$ŸÿþêhëBp‡$ost-text‘ÙºêiŽŽ‘/úÄffOÛ„ffOÛ‘$Ÿÿþå}ŽŽ“„ffOÛ„ffOÛ„ff®ŽŽŽ˜ŸûÌÍ„€ffŽŽŽ‘oÄ„ffŸ¶„ffOÛ‘ŽŽ‘ŸûÌÍ„ €ffŽŽŽ’…<ÏŽŽŽ’…<Ï„ffOÛ„ffŸ¶„ff¨ ‘úžÌͬ-Ž‘žÌÍŽŽŽŸ@ :Ÿ¤Ô‘I¸hàend-e–ÿ}/qnarr“ay‘ân¸iŽ’4¹::=ŽŽ’™ˆ‡ŸýÌϬ-Ž’‡ŸýÌÏ-ŽŽ’¦‡Ÿþ„ff ?l„ff'í„ff'í‘$Ÿÿþå\endŽŽ‘€„ff'í„ff'í„ffOÛ„ffOÛ™š®ŽŽŽ¤ÿþ™šŸLÏ„€ffŸú³3„ff)t„ffOÛ„ffOÛ‘$¡å{eqnarray}ŽŽ‘5gT„ffOÛ„ffOÛ„ff)tŸLÍ„€ffŽŽŸ •™šŸùÌÏ„€ff“Ÿ33®ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡å{eqnarray*}ŽŽ‘: ¢„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘Jù¨ŽŽŽ‘Jù¨„ffOÛ„ffŸ¶„ffê‘úžÌͬ-Ž‘žÌÍŽŽŽŸè‘X¹Descriptions–U of“the“v‘ÿqÐarious“column“tš¸èypGes“are“giv˜en“in“table“3.Ž OF> þÃÁÞ‘X(à„ffD®AŽŽ¤‘X(à„ffŽ’œp»„ffŽŽ© =l‘X(à¤õÄ„ 30ff—rÁŸü <ëCColumn‘Œ”t´HypK·es“¡„ 30ffŽŽŸõÄ‘X(à„ffŽ’œp»„ffŽŽžff‘X(à„ffD®AŽŽ¡‘X(à„ff‘^«³„ffŽ’œp»„ffŽŽ¦‘X(à¤Y˜„ —ff–!µ£Ÿû¦hName“¡„ —ffŽžcÔ’½¡_MeaningŽŽ’œp»ŸY˜„ —ffŽŽŸY˜‘X(à„ff‘^«³„ffŽ’œp»„ffŽŽžff‘X(à„ffD®AŽŽ¡‘X(à„ff‘^«³„ffŽ’œp»„ffŽŽ¦‘X(àŸY˜„ —ff‘,ù3Ÿû¦hålŽ‘^«´„ —ffŽžcÔ’½¡_äLeft–$aligned“piece“of“equation.ŽŽ’œp»ŸY˜„ —ffŽŽŸ —‘X(àŸY˜„ —ff‘,ù3Ÿû¦håcŽ‘^«´„ —ffŽžcÔ’½¡_äCen¾{Ž‘&Y©Ÿû¦hêhëBtext‘ÙºêiŽ‘= YŸû¦hå}Ž‘^«´„ —ffŽžcÔ’½¡_äInserts‘$êhëBtext‘ÙºêiŽ‘Ûøäjust–$bAÃefore“the“actual“column“en¾M ª ýs o ý´‘Rÿ`„ffo`‘ÿ°Ÿfd¹Sim¸èultaneous‘U equationsŽ‘pÜ€„ffo`ŽŸ‘Rÿ`„ff’N4t„ffŽŸ#ŸåŸ ’ÁÀž²10µwŽ’Õg"²+Ž’äg!3µxŽ’ñW²+Ž’ûW3µyŽ’Òõ²+Ž’Òó18µzŽ’#±+²=‘Ç1Ž’‹:ð¹(1)ŽŽŽŸ’ÆÀŸ²6µwŽ’Õg"¸Ž’ßg ²17µxŽ’Òõ¸Ž’Òô²5µzŽ’#±+²=‘Ç2Ž’‹:ð¹(2)ŽŽŽŽŽŽ‘Rÿ`Ÿ5æ>‰ffO@ŸŸ/?œŸß‘ ÿ`å\begin{eqnarray}[*3{rc}rl]ŽŽ¤ ‘qü10w–¹N&“+“&‘ rœ3x“&“+“&“3y“&“+“&“18z“&“=“1“\\ŽŽ¡‘+J6w–¹N&“-“&“17x“&‘+ê&‘å8&“-“&‘ rœ5z“&“=“2ŽŽ¡‘ ÿ`\end{eqnarray}ŽŽŽŽŽŸ>?|„ff’N4t„ffŽžff‰ffO@ŽŽ •o@‘X¹ChoGosing–<…a“more“up-to-date“example,‘v^here's“some“examples“from“the“àLŸýï‘üR&áAŽŽ‘ØÿàT‘þKÞŸ&úEŽ‘ÌñXŽ¤ ‘IComp‘ÿ}/anion¹.Ž¡‘Rÿ`„ff|ãJ‘ÿ°ŸfdLots–U of“equationsŽ‘U:¬„ff|ãJŽŸ‘Rÿ`„ff’N4t„ffŽŸ%\tŸâ£Œ¡‘jq†µVŸÿó 0e—rcmmi7´iŽŽ‘vb?²=‘ǵvŸÿ´iŽ‘,¸‘8àµqŸÿ´iŽ‘TLµvŸÿ´jŽ‘6¬µ;Ž’Åj#XŸÿ´iŽŽ’ÓÎk²=‘ǵxŸÿ´iŽ‘,¸‘8àµqŸÿ´iŽ‘TLµxŸÿ´jŽ‘6¬µ;Ž’#°_UŸÿ´iŽ‘d²=–ǵuŸÿ´iŽ‘TLµ;‘©h¹for‘U µi“¸6²=“µjŽŽ’‹:ñ¹(3)ŽŽŽŸ\t‘i&µVŸÿ´jŽŽ‘vb?²=‘ǵvŸÿ´jŽ‘6¬µ;Ž’ćÃXŸÿ´jŽŽ’ÓÎk²=‘ǵxŸÿ´jŽŽ’#°_µUŸÿ´jŽ‘6¬µuŸÿ´jŽ‘oŒ²+‘8àŸöüóú±u cmex10«XŽŽŸ ‘´ió O!â…cmsy7·6óÙ“ Rcmr7±=´jŽŽ‘UQµqŸÿ´iŽ–TLµuŸÿ´iŽ“µ:Ž’‹:ñ¹(4)ŽŽŽŽŽŽ‘Rÿ`ŸD&j‰ffO@ŸŸE?œŸÉ‘ ÿ`å\begin{eqnarray}[rl:rl:lq]ŽŽ¤ ‘¸®V_i–¹N&=“v_i“-“q_i“v_j,“&“X_i“&=“x_i“-“q_i“x_j,“&ŽŽ¡‘+‚U_i–¹N=“u_i,“\qquad“\mbox{for“$i“\ne“j$}‘ rœ\\ŽŽ¡‘¸®V_j–¹N&=“v_j,‘3öZ&“X_j“&=“x_j‘8¯¨&ŽŽ¡‘+‚U_j–¹Nu_j“+“\sum_{i“\ne“j}“q_i“u_i.“\label{eq:A}ŽŽ¡‘ ÿ`\end{eqnarray}ŽŽŽŽŽŸT?|„ff’N4t„ffŽžff‰ffO@ŽŽ š¾Ò ÿ#sà‘Rÿ`„ffX"‘ÿ°Ÿfd¹Plain–U text“column“and“Ü\tabpauseŽ’ž½0„ffX"ŽŸ‘Rÿ`„ff’N4t„ffŽŸ\Ÿ¬¤’ɹµxŽ’Ñ’í²=‘ǵyŽ’ ¬ê¹b¸èy‘U (4)Ž’‹:ð(5)ŽŽŽŸ’ÆF€µxŸûÞÿ·0ŽŽ’Ñ’í²=‘ǵy[ÙŸûÞÿ·0ŽŽ’ ¬ê¹b¸èy‘U denitionŽ’‹:ð(6)ŽŽŽŸ‘\þÀandŽ¡’´V†µx–8à²+“µxŸûÞÿ·0ŽŽ’Ñ’í²=‘ǵy‘”¹²+‘8àµy[ÙŸûÞÿ·0ŽŽ’ ¬ê¹b¸èy–U Axiom“1Ž’‹:ð(7)ŽŽŽŽŽŽ‘Rÿ`Ÿnæ>‰ffO@ŸŸE?œŸÉ‘ ÿ`å\begin{eqnarray}[rlqqTl]ŽŽ¤ ‘!æx‘ rœ&=–¹Ny‘3öZ&“by“(\ref{eq:A})“\\ŽŽ¡‘!æx'–¹N&=“y'‘/= &“by“definition“\\ŽŽ¡‘ ÿ`\tabpause{and}ŽŽ¡‘¸®x–¹N+“x'“&=“y“+“y'‘WÔ&“by“Axiom~1ŽŽ¡‘ ÿ`\end{eqnarray}ŽŽŽŽŽŸT?|„ff’N4t„ffŽžff‰ffO@ŽŽŽŽŸ’õ€P¹18ŽŽŒ‹\G ª ýs o ý´‘X¹The–óÆnew“features“also“mean“that“y¸èou“don't“need“to“mess“abGout“with“Ü\lefteqnŽ¤ ‘I¹anš¸èy–U more.‘q€This“is“handled“b˜y“the“`ÜL¹'Ž‘wÌcolumn“t˜ypGe:Ž¡‘Rÿ`„ff| t‘ÿ°ŸfdSplitting‘U exampleŽ‘VìX„ff| tŽŸ‘Rÿ`„ff’N4t„ffŽŸ2ŸÖ¡‘wɵw‘}ò+–8àµx“²+“µy‘”¹²+“µz‘7¯²=ŽŽŽ¤’‹‰µa–8à²+“µb“²+“µc“²+“µd“²+“µe²+ŽŽ¡’‹‰µf‘Lo²+–8àµg‘”¹²+“µh“²+“µi“²+“µjŽŽŽŽŸ:?œŸÔ’ÿ°å\begin{eqnarray*}[Ll]ŽŽ¤ ’ «šw+x+y+z–¹N=“\\ŽŽ¡’dè&–¹Na+b+c+d+e+“\\ŽŽ¡’dè&‘¹Nf+g+h+i+jŽŽ¡’ÿ°\end{eqnarray*}ŽŽŽŽŽŸI?|‘Rÿ`„ff’N4t„ffŽ‘Rÿ`žff‰ffO@ŽŽŸb‰‘X¹Finally‘ÿ*¸,›…,just–{to“pro•¸èv“e–{that“the“spacing's“righ¸èt“at“last,˜here's“another“one“fromŽ¡‘Ithe‘U àComp‘ÿ}/anion¹.Ž¡‘Rÿ`„ffpyf‘ÿ°ŸfdSpacing‘U demonstrationŽ‘nt„ffpyfŽŸ‘Rÿ`„ff’N4t„ffŽŸ5ŸÓ¡’µ-µxŸûÞÿ±2Ž‘µS²+‘8àµy[ÙŸûÞÿ±2Ž‘Ÿd²=‘ǵzp—ŸûÞÿ±2ŽŽ’躹(8)ŽŽŽŸ’µ-µxŸûÞÿ±2Ž‘µS²+‘8àµy[ÙŸûÞÿ±2ŽŽ’°¨²=‘ǵzp—ŸûÞÿ±2ŽŽ’躹(9)ŽŽŽŸ’¤!šµy[ÙŸûÞÿ±2ŽŽ’°¨µ<‘Çzp—ŸûÞÿ±2ŽŽ’ãºQ¹(10)ŽŽŽŽŽŸP?œŸ¾’ÿ°å\begin{equation}ŽŽ¤ ’òLx^2–¹N+“y^2“=“z^2ŽŽ¡’ÿ°\end{equation}ŽŽ¡’ÿ°\begin{eqnarray}[rl]ŽŽ¡’òLx^2–¹N+“y^2“&=“z^2“\\ŽŽ¡’%J y^2–¹N&<“z^2ŽŽ¡’ÿ°\end{eqnarray}ŽŽŽŽŽŸ_?|‘Rÿ`„ff’N4t„ffŽ‘Rÿ`žff‰ffO@ŽŽŸx‰‘X¹W‘ÿ*¸ell,‘U}that–"7wš¸èas“easy“enough.‘ØÅNo˜w“on“to“n˜um˜bGering.‘ØÅAs“y˜ou'v˜e“noticed,‘U}theŽ¡‘Iequations›çeabGo•¸èv“e˜are˜n“um“bGered.‘LíY‘ÿ*¸ou˜can˜use˜the˜Ýeqna“rra“y¸˜¹en“vironmen“t˜to˜turn˜oŽ¡‘Ithe›ZŽn•¸èum“bGering˜in˜the˜whole˜en“vironmen“t,‘[êor˜sa“y˜Ü\nonumber˜¹on˜a˜line˜to˜suppressŽ¡‘In•¸èum“bGering–U of“that“one“in“particular.Ž¡‘XMore–„„excitingly‘ÿ*¸,‘\yš¸èou“can“sa˜y“Ü\eqnumber“¹to“enable“n˜um˜bGering“for“a“particularŽ‘|Bå\eqnumberŽŽŽŽ¡‘I¹equation,‘¢×or‘vDÜ\eqnumber[Ž‘6òü¸hàtext‘òɸiŽ‘OŽÜ]Ž‘WCô¹to–vDcš¸èhoGose“what“to“sho˜w“instead“of“the“line“n˜um˜bGer.Ž¡‘IThis–ʵwš¸èorks“for“bGoth“starred“and“unstarred“v˜ersions“of“the“en˜vironmen˜t.‘Ò?No˜wŽ¡‘IÜ\nonumber–U ¹bGecomes“merely“a“synon¸èym“for“`Ü\eqnumber[]¹'.Ž¡‘XA‘’note–’for“c•¸èheats:‘ë_y“ou–’can“use“the“sparkly“new›µœÝeqna•¸èrra“y˜¹for–’simple“equationsŽ¡‘Ib¸èy–U spGecifying“`Üx¹'Ž‘wÌas“the“column“description.‘q€Who“needs“¸A‘þ"ŸžWMŽ‘‘S‘¿ü¹-T‘þUYŸ&úEŽ‘ã9XŽ‘0N?“Ü;-)Ž¡‘X¹In–OÁfact,›PÔthere's“a“separate“en•¸èvironmen“t‘OÁÝeqlines¹,˜whic“h–OÁis“equiv‘ÿqÐalenš¸èt“to“Ýeqna˜rra˜yŽ‘îÞåeqlinesŽŽŽŽ¡‘5eqlines*ŽŽŽŽ¡‘I¹with–/`a“single“`Üx¹'Ž‘,Lcolumn;‘;õthe“result“is“that“yš¸èou“can“insert“a“collection“of“displa˜y˜edŽ¡‘Iequations–òaseparated“bš¸èy“Ü\\“¹commands.‘IBIf“y˜ou“don't“lik˜e“n˜um˜bGering,‘±use“Ýeqlines¸Ž¡‘I¹insead.ŽŸýY‘IÙ1.10.2Ž‘qáThe–ÕÞeqnalign“Ùen•®>vironmen“tŽŸtî‘I¹There's–}wa“new“en•¸èvironmen“t,–¨™Ýeqnalign¹,“whicš¸èh–}wdoGes“almost“the“same“thing“as“Ýeqna˜rra˜yŽ‘5åeqnalignŽŽŽŽ¡‘I¹but–‡ not“quite.‘AIt“došGesn't“do“equation“n•¸èum“b˜ers,‘“†and–‡ it“wraps“its“con•¸èten“ts–‡ up“in“aŽ¡‘IbGo¸èx.‘q€The–U result“of“this“is“that:ŽŸ‘X¸ŽŽŽ‘b¹Y‘ÿ*¸ou–²can“use“Ýeqnalign“¹for“just“a“part“of“a“formš¸èula.‘]±The“Ýeqna˜rra˜y‘=>¹en˜vironmen˜tŽ¡‘bm•¸èust›U tak“e˜up˜the˜whole˜displa“y‘ÿ*¸.ŽŸ‘X¸ŽŽŽ‘b¹Y‘ÿ*¸ou–³lcan“use“Ýeqnalign“¹within“Ýeqna•¸èrra“y‘Öø¹for–³lextra“ne“alignmen¸èt“of“subsidiaryŽ¡‘bbits.ŽŽŸ’õ€P19ŽŽŒ‹eê ª ýs o ý´‘X¸ŽŽŽ‘b¹Y‘ÿ*¸ou–ø“can“break“o“from“doing“an“Ýeqna•¸èrra“y‘¹using–ø“the“Ü\tabpause“¹command.ŽŸ ‘bY‘ÿ*¸ou–U can't“use“Ü\tabpause“¹inside“Ýeqnalign¹.Ÿü^ÿß8ŽŽŽ©‘X¹The–U Ýeqnalign“¹en•¸èvironmen“t›U w“orks˜lik“e˜this:Ž¤ŸLÍ‘I¸hàe‘ÿ}/qnalign-env‘}¸iŽ’Š×¹::=ŽŽ’—+…ŸýÌϬ-Ž’š«…ŸýÌÏ-ŽŽ’£«…Ÿþ„ff ?l„ff'í„ff'í‘$ŸÿþêhëBb•‡$e“gin-e“qnalign‘¶.êiŽŽ‘EÇŸ„ff'í„ff'í„ff'í„ff'í‘$ŸÿþhëBc‡$ontents‘»ƒêiŽŽ‘/#¶„ff'í„ff'í„ff'í„ff'í‘$ŸÿþhëBend-e‡$qnalign‘¶.êiŽŽ‘@N„ff'í„ffŸ¶„ff1µ‡‘úžÌͬ-Ž‘žÌÍŽŽŽ¡¤LÍ‘I¸hàb–ÿ}/e“gin-e“qnalign‘ÄU¸iŽ’‘,j¹::=ŽŽ’€êŸýÌϬ-Ž’¡êŸýÌÏ-ŽŽ’ªêŸþ„ff ?l„ff½’„ff½’‘$Ÿÿþå\beginŽŽ‘"‚„ff½’„ff½’„ff½’„ff½’‘$Ÿÿþ{eqnalign}ŽŽ‘5gT„ff½’„ff½’„ff倄ff候š®ŽŽŽ¤ÿþ™šŸLÏ„€ffŸú³3„ff=ç;„ffOÛ„ffOÛ„ff=ç;ŸLÍ„€ffŽŽ¦•™š©ùÌÏ„ €ff“Ÿ33ŽŽ›™šŸ33„ffOÛ„ffOÛ‘$¡å[ŽŽ‘ ã–„ffOÛ„ffŸ¶Ÿöÿþ“ŸLÏ„€ff“Ÿú³3®ŽŽ˜Ÿú³3„ffÚÄ„ffOÛ„ffOÛ„ffÚÄ‘ŽŽ‘ŸLÍ„€ffŽŽŸ “¦„€ff“Ÿ33ŽŽŸ33„ffŽ–Ÿ33„ffOÛ„ffOÛ‘$¡êhëBe•‡$qa-c“olumn‘¶.êiŽŽ‘:¯k„ffOÛ„ffOÛ„ff®ŽŽŽ“ŸûÌÍ„€ffŽŽŽ‘KîׄffŸ¶„ffOÛ‘$¡å]ŽŽ‘ ã–„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„ €ffŽŽŽ’€n+ŽŽŽ’€n+„ff倄ff倄ff們úžÌͬ-ŽŽŽŸ"’‹EŸýÌÏ-ŽŽ’”EŸþ„ff ?l„ff€Ž’¡ŠŸþ„ffOÛ™š®ŽŽŽ¤ÿþ™šŸLÏ„€ffŸú³3„ff%΄ffOÛ„ffOÛ„ff%ΟLÍ„€ffŽŽ© •™šŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡å[ŽŽ› ã–„ffOÛ„ffŸ¶“®ŽŽŽ¡“ŸLÏ„€ffŸú³3„ffÌÍ„ffOÛ„ffOÛ‘$¡åtŽŽ˜„ffOÛ„ffOÛ„ffÌÍŸLÍ„€ffŽŽ¦“ŸLÏ„ ff“Ÿú³3®ŽŽ‘™šŸú³3„ffOÛ„ffOÛ‘$¡åcŽŽ˜„ffOÛ„ffOÛ‘®ŽŽ‘ŸLÍ„ ffŽŽ¦“ŸùÌÏ„€ff“Ÿ33ŽŽ‘™šŸ33„ffOÛ„ffOÛ‘$¡åbŽŽ˜„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘¼œŽŽŽ‘¼œ„ffŸ¶„ffOÛ‘$¡å]ŽŽ˜„ffOÛ„ffOÛ‘®ŽŽ‘ŸûÌÍ„€ffŽŽŽ‘P;ðŽŽŽ‘P;ð„ffOÛ„ffŸ¶„ffª€‘úžÌͬ-Ž‘žÌÍŽŽŽŸ5³3¡‘I¸hàend-e‘ÿ}/qnalign‘ÄU¸iŽ’‹ ®¹::=ŽŽ’—_.ŸýÌϬ-Ž’šß.ŸýÌÏ-ŽŽ’£ß.Ÿþ„ff ?l„ff'í„ff'í‘$Ÿÿþå\endŽŽ‘€„ff'í„ff'í„ff'í„ff'í‘$Ÿÿþ{eqnalign}ŽŽ‘5gT„ff'í„ffŸ¶„ffœ³a‘úžÌͬ-Ž‘žÌÍŽŽŽ¦‘X¹As–¼Âthe“synš¸ètax“suggests,‘Öªthe“pream˜ble“for“the“Ýeqnalign“¹en˜vironmen˜t“w˜orks“ex-Ž¤ ‘Iactly–Ôõthe“same“w•¸èa“y–Ôõas“for“Ýeqna•¸èrra“y¹.‘FÇExample–Ôõtime:‘1kanother“one“from“the“àT‘þKÞŸ&úEŽ‘ÌñXb–ÿ}/o“ok¹.Ž ôYØ ÿ3ˆ‘Rÿ`„ffvg@‘ÿ°ŸfdExample‘U of‘0ÝeqnalignŽ‘b2À„ffvg@ŽŸ‘Rÿ`„ff’N4t„ffŽŸ*€ŸÝòŸ"€Ÿèò’¯Rà«8ŽŸ ’¯Rà>Ž¤’¯Rà<ŽŸ ’¯Rà>Ž¡’¯Rà:ŽŽŸñ’¸6oµ Ž’Ál¤²=‘ǵf‘²(µzp—²)ŽŽ¤’¸vpµ Ž’Ál¤²=‘ǵf‘²(µzp—ŸûÞÿ±2Ž‘í ²)ŽŽ¡’¸éðµ Ž’Ál¤²=‘ǵf‘²(µzp—ŸûÞÿ±3Ž‘í ²)ŽŽŽŸèò’ãNo«9ŽŸ ’ãNo>Ž¤’ãNo=ŽŸ ’ãNo>Ž¡’ãNo;ŽŽŽ’ÛfŸñæ^ŽŸùY ’ [gµxŽ’Ù›²=‘ǵ zŸûÞÿ±2Ž‘¾Í¸‘8ൠŽŽŸ’ Ï‹yŽ’Ù›²=‘Ç2µ ŽŽŽ’9»[Ÿñæ^«ŽŽ’Bæµ:ŽŽŽŽ‘Rÿ`ŸMf‚‰ffO@ŸŸq?œŸ‘ ÿ`å\[ŽŽ¤ ‘qü\left\{‘¹N\begin{eqnalign}[rl]ŽŽ¡‘ä˜\alpha–¹N&=“f(z)“\\“\beta‘ rœ&=“f(z^2)“\\ŽŽ¡‘ä˜\gamma–¹N&=“f(z^3)ŽŽ¡‘qü\end{eqnalign}‘¹N\right\}ŽŽ¡‘qü\qquadŽŽ¡‘qü\left\{‘¹N\begin{eqnalign}[rl]ŽŽ¡‘ä˜x–¹N&=“\alpha^2“-“\beta“\\“y“&=“2\gammaŽŽ¡‘qü\end{eqnalign}‘¹N\right\}.ŽŽ¡‘ ÿ`\]ŽŽŽŽŽŸ~ÿ„ff’N4t„ffŽžff‰ffO@ŽŽŽŸÙ‘X¹The–––Ü\multicolumn“¹command“wš¸èorks“correctly“in“bGoth“the“Ýeqna˜rra˜y‘º"¹and“ÝeqnalignŽ‘PXå\multicolumnŽŽŽŽ¡‘I¹en•¸èvironmen“ts,‘…Xalthough›H€y“ou˜should˜bGear˜in˜mind˜that˜y“ou˜should˜giv“e˜Ýeqna“rra“yŽ¡‘I¹column–U tš¸èypGes,“not“Ýa˜rra˜y‘x¬¹ones.ŽŸýY‘IÙ1.10.3Ž‘qáA–Õnote“on“spacing“in“alignmenš®>t“en˜vironmen˜tsŽŸtî‘I¹Most–/Øof“the“time,‘7Mequations“in“Ýeqna•¸èrra“y‘Sd¹and–/ØÝeqnalign“¹en•¸èvironmen“ts–/Øwill“bšGe“b˜eauti-Ž¡‘Iful.‘š*Ho•¸èw“ev“er,‘мthere–¸are“some“things“yš¸èou“should“bGear“in“mind“when“y˜ou“proGduceŽ¡‘IbGeautiful‘U equations.Ž‘IŸX‰ffÿrŸ E¼‘ !iŸý-:æ8ŽŽŽ‘KÙÓW‘ÿJ¶ell,‘”ŠtecšÃ’hnically–„bspPThese“hiddenŽ¡‘Iob‘Ž0jects–¼add“the“correct“space“when“there's“a“binary“opGerator“or“relation“next“toŽ¡‘Ithem.›3$If–•¬some“other“sort“of“ob‘Ž0ject“is“lurking“there,‘¥Ïno“space“is“added.˜So“far,‘¥ÏsoŽ¡‘Igo•Go“d.Ž¡‘XThe–U only“problem“comes“when“yš¸èou“ha˜v˜e“something“lik˜e“this:Ž¡‘Rÿ`„ffhˆ‘ÿ°ŸfdHoš¸èw–U not“to“do“an“Ýeqna˜rra˜yŽ‘}ñ„ffhˆŽŸ‘Rÿ`„ff’N4t„ffŽŸ#Ÿå¡’“^úµx–8à²+“µyŽ’­Y²=Ž’·ç:12ŽŽŸ’‰^ø2µx–8ณ²5µyŽ’­Y²=Ž’º ¸‘8à²6ŽŽŽŽŸ/?œŸß’ÿ°å\begin{eqnarray*}[rcl]ŽŽ¤ ’òLx–¹N+‘ rœy“&“=“&“12“\\ŽŽ¡’8þ2x–¹N-“5y“&“=“&“-6ŽŽ¡’ÿ°\end{eqnarray*}ŽŽŽŽŽŸ>?|‘Rÿ`„ff’N4t„ffŽ‘Rÿ`žff‰ffO@ŽŽ©W‰‘X¹The–Œ`¸¹'“sign“in“the“second“equation“has“bšGeen“treated“as“a“binary“op˜erator“whenŽ¡‘Ireally–—Œit“should“bšGe“a“unary“prex“op˜erator,‘¨'but“T‘þUYŸ&úEŽ‘ã9X“isn't“clevš¸èer“enough“to“kno˜wŽ¡‘Ithe–Idierence.‘ïú(Can“yš¸èou“see“the“dierence“in“the“spacing“bGet˜w˜een“¸²6“¹and‘ÔF¸‘Tý²6¹?)Ž¡‘IThere–BÕare“t•¸èw“o–BÕpGossible“solutions“to“the“problem.‘kgY‘ÿ*¸ou“could“wrap“the“`Ü-6¹'“up“in“aŽ¡‘Igroup–BU(`Ü{-6}¹'),›For“just“the“¸“¹sign“(`Ü{-}6¹').‘k?|‘Rÿ`„ff’N4t„ffŽ‘Rÿ`žff‰ffO@ŽŽ¦‘X¹Since–¨Òthe“things“in“the“middle“column“w¸èere“the“same“width,‘½¿it's“not“actuallyŽ¡‘Idoing–_Üanš¸èy“go•Go“d.‘‘´Also,‘b‹no˜w–_Üthat“T‘þUYŸ&úEŽ‘ã9X“can“see“that“the“thing“on“the“left“of“the“`¸¹'Ž¡‘Isign–U is“a“relation“(the“`²=¹'“sign),“it“will“space“the“form¸èula“correctly‘ÿ*¸.Ž¡‘XIn–²;this“case,‘É‚it“mighš¸èt“bGe“ev˜en“bGetter“to“add“some“extra“columns,‘É‚and“line“upŽ¡‘Ithe–U µx“¹and“µy‘°ù¹terms“in“the“left“hand“side:Ž¡‘Rÿ`„ffm–‘ÿ°ŸfdExtra–U bGeautiful“Ýeqna•¸èrra“yŽ‘sÕ4„ffm–ŽŸ‘Rÿ`„ff’N4t„ffŽŸ#Ÿå¡’—Ùµx‘8à²+Ž’§‡ÔµyŽ’¯‘ä²=‘Ç12ŽŽŸ’‹—Ø2µx‘8ฎ’¢‡Ó²5µyŽ’¯‘ä²=‘Ǹ²6ŽŽŽŽŸ/?œŸß’ÿ°å\begin{eqnarray*}[rrl]ŽŽ¤ ’òLx–¹N+“&‘ rœy“&“=“12“\\ŽŽ¡’8þ2x–¹N-“&“5y“&“=“-6ŽŽ¡’ÿ°\end{eqnarray*}ŽŽŽŽŽŸ>?|‘Rÿ`„ff’N4t„ffŽ‘Rÿ`žff‰ffO@ŽŽ¦‘X¹There's–Ñno“need“to“put“the“`²+¹'“and“`¸¹'“opGerators“in“their“o¸èwn“column“here,Ž¡‘IbšGecause–U they're“b˜oth“7.7778‘ª“pt“wide,“ev¸èen“though“they“don't“lo˜ok“it.ŽŸýY‘IÙ1.10.4Ž‘qáConguring–Õthe“alignmenš®>t“en˜vironmen˜tsŽŸtî‘I¹There–Lýare“a“collection“of“parameters“yš¸èou“can“use“to“mak˜e“the“equation“alignmen˜tŽ¡‘Ien•¸èvironmen“ts›âÞ(Ýeqna“rra“y‘j¹and˜Ýeqnalign¹)˜loGok˜the˜w“a“y˜y“ou˜lik“e˜them.‘¹These˜are˜allŽ¡‘Isho¸èwn–U in“table“4.ŽŽŸ’õ€P21ŽŽŒ‹… ª ýs o þ¢$Æ ÿA ‘bÊ>„ff/k„ŽŽ¤‘bÊ>„ff‘Ihö„ffŽ’‘Ï\„ffŽŽ© =l‘bÊ>¤õÄ„ 30ff‘Ÿü <ëCP´Harameter‘ƒÜ¡„ 30ffŽ’³UseŽŽ’‘Ï\ŸõÄ„ 30ffŽŽŸõÄ‘bÊ>„ff‘Ihö„ffŽ’‘Ï\„ffŽŽžff‘bÊ>„ff/k„ŽŽ¡‘bÊ>„ff‘Ihö„ffŽ’‘Ï\„ffŽŽ¦‘bÊ>¤$õÄ„.30ff‘ŸÛ <å\eqaopenskip‘ ¹N¡„.30ffŽ’³äLength–™øput“on“the“left“of“an“ëDeqna•¾¤õÄ„#30ff–Ÿæ <å\eqacloseskip“¡„#30ffŽ’³äLength–ÀLput“on“the“righš¾„ff‘Ihö„ffŽ’‘Ï\„ffŽŽžff‘bÊ>„ff/k„ŽŽ¡‘bÊ>„ff‘Ihö„ffŽ’‘Ï\„ffŽŽ¦‘bÊ>¤$õÄ„.30ff‘ŸÛ <å\eqacolskip‘rœ¡„.30ffŽ’³äSpace–JLadded“b¾¤õÄ„30ff‘Ÿñ <å\eqainskip‘+ê¡„30ffŽ’³äSpace–‚Þadded“at“eac¾„ff‘Ihö„ffŽ’‘Ï\„ffŽŽžff‘bÊ>„ff/k„ŽŽ¡‘bÊ>„ff‘Ihö„ffŽ’‘Ï\„ffŽŽ¦‘bÊ>¤õÄ„#30ff‘Ÿæ <å\eqastyle‘å8¡„#30ffŽ’³äThe–ú/maths“stš¾„ff‘Ihö„ffŽ’‘Ï\„ffŽŽžff‘bÊ>„ff/k„ŽŽŸ‘nïÖ¹T‘ÿ*¸able–U 4:‘q€Pš¸èarameters“for“the“Ýeqna˜rra˜y‘x¬¹and“Ýeqnalign“¹en˜vironmen˜tsŽŽŽŸ‘Iâ1.11Ž‘n}¨Other–¸m ultiline“equationsŽ©tî‘I¹Sometimes–Ê–there's“no“sensible“alignmenš¸èt“pGoin˜t“for“splitting“equations.‘CRThe“normalŽ¤ ‘Ithing–xHto“do“under“these“circumstances“is“to“put“the“rst“line“w•¸èa“y›xHo“v“er˜to˜the˜leftŽ¡‘Iof–I”the“page,›Kãand“the“last“line“o•¸èv“er–I”to“the“righ¸èt.‘m§(If“there“are“more“lines,˜I‘I‘imagineŽ¡‘Iw¸èe–U put“them“in“the“middle.)Ž¡‘XThe–G[Ýspliteqn“¹en•¸èvironmen“t›G[allo“ws˜y“ou˜to˜do˜suc“h˜splitting˜of˜equations.‘léRatherŽ‘5åspliteqnŽŽŽŽ¡‘|Bspliteqn*ŽŽŽŽ¡‘I¹than–‚—tediously“describGe“it,›ôI'll“just“giv¸èe“an“example,˜bGecause“it's“really“easy‘ÿ*¸.‘ùäTheŽ¡‘I¸¹-v•¸èersion›U w“orks˜the˜same,˜except˜it˜doGesn't˜put˜an˜equation˜n“um“bGer˜in.Ž¡‘XIf–Œ™yš¸èou“ha˜v˜e“a“v˜ery“badly“bGeha˜v˜ed“equation,‘šwy˜ou“migh˜t“w˜an˜t“to“split“a“part“ofŽ‘5åsubsplitŽŽŽŽ¡‘I¹it–U (saš¸èy‘ÿ*¸,“a“bit“of“a“fraction),“particularly“if“y˜ou're“doing“things“in“narro˜w“columns.ŽŸýY‘Iâ1.12Ž‘n}¨MatricesŽ¦‘I¹Also–é?included“in“the“Ýmathenv‘ ˹pacš¸èk‘ÿqÐage“is“a“collection“of“things“for“t˜ypGesettingŽ¡‘Imatrices.‘H]The–Gjstandard“Ýa•¸èrra“y‘jö¹doGesn't–Gj(in“mš¸èy“opinion)“pro˜vide“the“righ˜t“sort“ofŽ¡‘Ispacing–\¾for“matrices.‘µóIåÉV eccc1000ëIPlain‘¹T‘þUYŸ&úEŽ‘ã9X“pro¸èvides“some“quite“nice“matrix“handling“macros,Ž¡‘Ibut–U they“don't“wš¸èork“in“the“appropriate“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“w˜a˜y‘ÿ*¸.Ž¡‘XÙW‘ÿ ºarning:‘+¹These–˜vdenitions“will“makš¸èe“old“v˜ersions“of‘_†Ýplain.st˜y‘¼¹unhapp˜y;‘×Ynew˜erŽ¡‘Iv¸èersions–U correctly“restore“the“Plain“T‘þUYŸ&úEŽ‘ã9X“macros“Ü\matrix“¹and“Ü\pmatrix¹.Ž¡‘XThe–U simple“w•¸èa“y–U to“do“matrices“is“with“the“Ýmatrix“¹en•¸èvironmen“t.Ž‘!¨,åmatrixŽŽŽŽ¤ŸLÍ‘I¸hàmatrix-env‘}¸iŽ’„¸¹::=ŽŽ’p8ŸýÌϬ-Ž’“ð8ŸýÌÏ-ŽŽ’œð8Ÿþ„ff ?l„ff'í„ff'í‘$ŸÿþêhëBb•‡$e“gin-matrix‘(êiŽŽ‘?éÄ„ff'í„ff'í„ff'í„ff'í‘$ŸÿþhëBc‡$ontents‘»ƒêiŽŽ‘/#¶„ff'í„ff'í„ff'í„ff'í‘$ŸÿþhëBend-matrix‘(êiŽŽ‘:?s„ff'í„ffŸ¶„ffj²=“µAŸü^ÿ´TŽ‘L¶¹).‘H:This–œ³is“accomplished“using“the“Ýsmatrix“¹(the“`s'Ž¡‘Istands–ÃÓfor“`small'““I‘÷thoughš¸èt“that“`smallmatrix'“w˜as“toGo“big“to“t˜ypGe“inline).‘½šAsŽ¡‘Iwš¸èell–?Ãas“inline“text,‘D the“Ýsmatrix“¹can“bGe“useful“in“displa˜ys,‘D if“the“matrix“is“deep“in“aŽ¡‘Isubformš¸èula.‘q€I–U can't“think“of“an˜y“examples“ohand,“though.Ž¡‘XThe–3¥Ýsmatrix“¹en•¸èvironmen“t–3¥doGesn't“supply“anš¸èy“delimiters,‘:Wlik˜e“Ýmatrix¹.‘fWThere“areŽ‘5åspmatrixŽŽŽŽ¡‘5sdmatrixŽŽŽŽ¡‘IÝspmatrix–lý¹and“Ýsdmatrix“¹en•¸èvironmen“ts›lýwhic“h˜do,‘rõthough.‘¹Note˜that˜delimiters˜ha“v“eŽ¡‘Ia–Ätendency“to“get“toGo“big“and“mess“up“the“line“spacing““I‘Ãåhad“to“use“explicitlyŽ¡‘IÜ\big–U ¹delimiters“in“the“abGo•¸èv“e‘U example.ŽŽŸ’õ€P24ŽŽŒ‹­þ ª ýs o ý´‘X¹All–6Öthe“small“matrix“en•¸èvironmen“ts›6Öha“v“e˜starred˜v“ersions,‘<åwhic“h˜are˜more˜suit-Ž‘5åpmatrix*ŽŽŽŽŸ ‘|Bspmatrix*ŽŽŽŽŸ‘|Bsdmatrix*ŽŽŽŽ¤ ‘I¹able– ™for“use“in“displaš¸èys,‘6·since“they“ha˜v˜e“more“space“bGet˜w˜een“the“ro˜ws.‘ŽêThey'reŽ¡‘Iinš¸ètended–U for“t˜ypGesetting“really“big“matrices“in“displa˜ys.Ž¡‘XThe–bstandard“Ü\vdots“¹and“Ü\ddots“¹commands“don't“proGduce“an¸èything“at“allŽ‘!¨,å\ddotsŽŽŽŽ¡‘!¨,\vdotsŽŽŽŽ¡‘I¹nice–gøin“small“matrices,‘l®so“this“pac¸èk‘ÿqÐage“redenes“them“so“that“they“scale“propGerlyŽ¡‘Ito–U smaller“sizes.Ž¡‘XAš¸èctually‘ÿ*¸,‘îûall–Õqthese“en˜vironmen˜ts“are“spGecial“cases“of“one:‘1©Ýgenmatrix¹.‘FñThis“tak˜esŽ‘|BågenmatrixŽŽŽŽ¡‘I¹o•Go“dles–U of“argumen¸èts:Ž©U‘bÜ\begin{genmatrix}{Ž’Àz¸hàmatrix-style‘ÀO¸iŽ’ü†ÓÜ}{Ž’+¸hàouter-style‘ÀO¸iŽ’=(–Ü}ŽŽ¡‘uþÂ{Ž‘{>n¸hàsp‘ÿ}/acing‘ân¸iŽ’£–VÜ}{Ž’®®¸hàleft-delim‘ÄU¸iŽ’ß@¶Ü}{Ž’éÀ¸hàright-delim‘ÄU¸iŽ’!°ZÜ}ŽŽŸŽŸø‘kÿbµ:Ž¤ÿø‘kÿb:Ž¡‘kÿb:ŽŽŽ¡‘bÜ\end{genmatrix}ŽŽ¦‘I¹The›±ét•¸èw“o˜`st“yle'˜argumen“ts˜should˜bGe˜things˜lik“e˜Ü\textstyle˜¹or˜Ü\scriptstyle¹;‘èQtheŽ¡‘Irst,‘N¸hàmatrix-style‘ÀO¸iŽ‘@!¹,‘Nis–îthe“stš¸èyle“to“use“for“the“matrix“elemen˜ts,‘Nand“the“second,Ž¡‘I¸hàouter-style‘ÀO¸iŽ‘"k¹,‘dbis–úîthe“st¸èyle“to“assume“for“the“surrounding“text“(this“aects“theŽ¡‘Ispacing–Ýwithin“the“matrix;‘­åAs“far“as“I'm“concerned,‘ªµit's“impGortan˜tŽ¡‘Ithat–8tit“has“a“unique“meaning“(i.e.,›>0that“it“w¸èon't“bGe“Ü\ifx¹-equal“to“other“things,˜orŽ¡‘Isomething–»¡undened)“and“that“it“w¸èon't“bšGe“used“where“I‘»zdon't“exp˜ect“it“to“b˜e“used.ŽŽŸ’õ€P27ŽŽŒ‹Ú^ ª ýs o ý´‘I¹T‘þUYŸ&úEŽ‘ã9X–›0will“loGop“horridly“if“it“tries“to“expand“this,‘¬´so“I‘›don't“think“that“quarks“areŽ¤ ‘Iw•¸èonderfully›ûclev“er˜thing˜to˜use.‘]t(Ma“ybGe˜it˜should˜really˜expand˜to˜something˜lik“eŽ¡‘I`¸hàquark‘}¸iŽ‘ ¾Ü.Ž‘%ýÀ¹',‘òjwhicš¸èh–Òõwill“rapGdly“ll“T‘þUYŸ&úEŽ‘ã9X's“memory“if“it“gets“acciden˜tally“expanded.Ž¡‘IStill,–U I'll“lea•¸èv“e–U it“as“it“is“unš¸ètil“suc˜h“time“as“I“understand“the“idea“more.)Ž©Û‘I®ß30Ž‘Sª®å\def\q@delim{\q@delim}ŽŸíw‘Iâ2.3Ž‘g¾P arser‘¸statesŽŸtî‘I¹No•¸èw›éüw“e˜start˜on˜the˜parser.‘MÉIt's˜really˜simple,‘ÿideep˜do“wn.‘MÉW‘ÿ*¸e˜progress˜from˜stateŽ¡‘Ito–ƒUstate,‘Žãextracing“tokš¸èens“from“the“pream˜ble“and“building“command“names“fromŽ¡‘Ithem.‘\{Eacš¸èh–command“calls“one“of“the“elemen˜t-building“routines,‘"®whic˜h“w˜orks“outŽ¡‘Iwhicš¸èh–H‘state“it“should“bGe“in.‘KÔW‘ÿ*¸e“go“through“eac˜h“of“the“states“in“bGet˜w˜een“(seeŽ¡‘Ilater)–U doing“default“things“for“the“ones“w¸èe“missed“out.Ž¡‘XAn•¸èyw“a“y‘ÿ*¸,–U here's“some“symš¸èbGolic“names“for“the“states.‘q€It“mak˜es“m˜y“life“easier.Ž¦‘I®ß31Ž‘Sª®å\chardef\tab@startstate‘¹N0Ž¤ ‘I®ß32Ž‘Sª®å\chardef\tab@loopstate‘¹N1Ž¡‘I®ß33Ž‘Sª®å\chardef\tab@rulestate‘¹N1Ž¡‘I®ß34Ž‘Sª®å\chardef\tab@prespcstate‘¹N2Ž¡‘I®ß35Ž‘Sª®å\chardef\tab@prestate‘¹N3Ž¡‘I®ß36Ž‘Sª®å\chardef\tab@colstate‘¹N4Ž¡‘I®ß37Ž‘Sª®å\chardef\tab@poststate‘¹N5Ž¡‘I®ß38Ž‘Sª®å\chardef\tab@postspcstate‘¹N6Ž¡‘I®ß39Ž‘Sª®å\chardef\tab@limitstate‘¹N7ŽŸíw‘Iâ2.4Ž‘g¾Aš dding–¸things“to“tok˜en“listsŽŸtî‘I¹Dene–1ÿsome“macros“for“adding“stu“to“the“bGeginning“and“end“of“tok¸èen“lists.‘eËThisŽŸ ‘Iis–U really“easy›ÿ*¸,“actually˜.‘q€Here“w¸èe“go.Ž¦‘I®ß40Ž‘Sª®å\def\tab@append#1#2{#1\expandafter{\the#1#2}}Ž¡‘I®ß41Ž‘Sª®å\def\tab@prepend#1#2{%Ž¡‘I®ß42Ž‘]Jå\toks@{#2}#1\expandafter{\the\expandafter\toks@\the#1}%Ž¡‘I®ß43Ž‘Sª®å}ŽŸíw‘Iâ2.5Ž‘g¾Committing–¸a“column“to“the“pream bleŽŸtî‘I¹Eacš¸èh–˜Štime“w˜e“pass“the“`rule'“state,‘©dw˜e“`commit'“the“tok˜ens“w˜e'v˜e“gathered“so“farŽ¤ ‘Ito–¡-the“main“preamš¸èble“tok˜en“list.‘U§This“is“ho˜w“w˜e“do“it.‘U§Note“the“ic˜ky“use“ofŽ¡‘IÜ\expandafter¹.Ž¦‘I®ß44Ž‘Sª®å\def\tab@commit{%ŽŸÛ‘X¹If–U this“isn't“the“rst“column,“then“w¸èe“need“to“put“in“a“column“separator.Ž¦‘I®ß45Ž‘]Jå\iftab@firstcol\else%Ž¤ ‘I®ß46Ž‘fæå\expandafter\tab@append\expandafter\tab@preamble%Ž¡‘I®ß47Ž‘p‚å\expandafter{\tab@tabtext}%Ž¡‘I®ß48Ž‘]Jå\fi%ŽŸÛ‘X¹No•¸èw›¥8w“e˜spill˜the˜tok“en˜registers˜in“to˜the˜main˜list˜in˜a˜funn“y˜order˜(whic“h˜isŽŸ ‘Iwh•¸èy›U w“e're˜doing˜it˜in˜this˜strange˜w“a“y˜in˜the˜rst˜place.Ž¦‘I®ß49Ž‘]Jå\toks@\expandafter{\tab@midtext}%Ž¡‘I®ß50Ž‘]Jå\tab@preamble\expandafter{%Ž¡‘I®ß51Ž‘fæå\the\expandafter\tab@preamble%ŽŽŸ’õ€P¹28ŽŽŒ‹æÁ ª ýs o ý´‘I®ß52Ž‘fæå\the\expandafter\tab@pretext%Ž¤ ‘I®ß53Ž‘fæå\the\expandafter\tab@userpretext%Ž¡‘I®ß54Ž‘fæå\the\expandafter\toks@%Ž¡‘I®ß55Ž‘fæå\the\tab@posttext%Ž¡‘I®ß56Ž‘]Jå}%ŽŸ û‘X¹Noš¸èw–U reset“tok˜en“lists“and“things“for“the“next“go“round.ŽŸ û‘I®ß57Ž‘]Jå\tab@firstcolfalse%Ž¡‘I®ß58Ž‘]Jå\tab@pretext{}%Ž¡‘I®ß59Ž‘]Jå\tab@userpretext{}%Ž¡‘I®ß60Ž‘]Jå\tab@posttext{}%Ž¡‘I®ß61Ž‘Sª®å}ŽŸ“s‘Iâ2.6Ž‘g¾Pla ying–¸with“parser“statesŽŸtî‘ݼå\tab@setstateŽŽŽ‘I¹This–U is“hoš¸èw“w˜e“set“new“states.‘q€The“algorithm“is“fairly“simple,“really‘ÿ*¸.Ž©˜ô‘bÙwhile‘U óý': cmti10Çtab‘¡˜à_Ž‘KÈÇstate‘‡s¸6²=‘ÇÇs‘'AÙdoŽ¤ ‘kÿbÇtab‘¡˜à_Ž–KÈÇstate‘‡s²=‘ÇÇtab‘¡˜à_Ž“ÇstateŽ’КT²+‘8à1¹;Ž¡‘kÿbÙif›U Çtab‘¡˜à_Ž–KÈÇstate‘‡s²=‘ÇÇtab‘¡˜à_Ž“ÇlimitState‘{Ùthen˜Çtab‘¡˜à_Ž“Çstate‘‡s²=‘ÇÇtab‘¡˜à_Ž“Çlo‘ÿ}'opState‘À[¹;Ž¡‘kÿbÙif‘U Çtab‘¡˜à_Ž–KÈÇstate‘‡s²=‘ÇÇtab‘¡˜à_Ž“Çpr–ÿ}'eSp“cState‘{ÙthenŽ¡‘uþÂif‘U Çtab‘¡˜à_Ž‘KÈÇinitR¾“ule‘{ÙthenŽ¡‘þ"Çtab‘¡˜à_Ž‘KÈÇinitR¾“ule‘‡s²=‘Çóò"V cmbx10ÄfalseŽ‘â¹;Ž¡‘uþÂÙelseŽ¡‘þ"if‘U Çtab‘¡˜à_Ž‘KÈÇinMultiCol‘]©Ùthen‘Õmoan¹;Ž¡‘þ"Çc‘ÿ}'ommit‘òع;Ž¡‘þ"Çapp‘ÿ}'end‘‰²(Çtab‘¡˜à_Ž‘KÈÇshortLine‘À[µ;‘ª¨¹`Ü&\omit¹')Ž‘*™à;Ž¡‘uþÂÙend‘êif¹;Ž¡‘kÿbÙend‘êif¹;Ž¡‘kÿbÙif–U Çtab‘¡˜à_Ž›KÈÇstate‘‡s¸6²=‘ÇÇs‘'AÙthen“Çdo‘¡˜à_Ž˜Çdefault‘òز(Çtab‘¡˜à_Ž˜Çstate‘À[²)¹;Ž¡‘bÙend‘êwhile¹;Ž¦‘XFirst–O|wš¸èe“decide“if“there's“an˜ything“to“do.‘oŸIf“so,‘Pœw˜e“call“another“macro“to“do“itŽ¡‘Ifor‘U us.Ž© û‘I®ß62Ž‘Sª®å\def\tab@setstate#1{%Ž¤ ‘I®ß63Ž‘]Jå\ifnum#1=\tab@state\else%Ž¡‘I®ß64Ž‘fæå\def\@tempa{\tab@setstate@i{#1}}%Ž¡‘I®ß65Ž‘fæå\@tempa%Ž¡‘I®ß66Ž‘]Jå\fi%Ž¡‘I®ß67Ž‘Sª®å}ŽŸ û‘X¹This–WVis“where“the“fun“is.‘x#First“wš¸èe“bump“the“state“b˜y“one,‘Wäand“loGop“bac˜k“if“w˜eŽŸ ‘Ifall–U o“the“end.Ž¦‘I®ß68Ž‘Sª®å\def\tab@setstate@i#1{%Ž¡‘I®ß69Ž‘]Jå\global\advance\tab@state\@ne%Ž¡‘I®ß70Ž‘]Jå\ifnum\tab@state>\tab@limitstate%Ž¡‘I®ß71Ž‘fæå\global\tab@state\tab@loopstate%Ž¡‘I®ß72Ž‘]Jå\fi%ŽŸ û‘X¹No•¸èw,‘xîif›qÅw“e'v“e˜just˜passed˜the˜ruleo˜state,‘xîw“e˜commit˜the˜curren“t˜text˜àunlessŽ¤ ‘I¹this–Òíwš¸èas“the“strange“initial“rule“at“the“v˜ery“bGeginning.‘êçW‘ÿ*¸e“pro˜vide“a“little“hoGokŽ¡‘Ihere–«„so“that“Ü\multicolumn“¹can“moan“if“yš¸èou“try“and“giv˜e“more“than“one“columnŽ¡‘Ithere.‘q€W‘ÿ*¸e–U also“add“another“tab/omit“pair“to“the“list“w¸èe“use“for“Ü\vgap¹.ŽŽŸ’õ€P29ŽŽŒ‹ò) ª ýs o ý´‘I®ß73Ž‘]Jå\ifnum\tab@state=\tab@prespcstate%Ž¤ ‘I®ß74Ž‘fæå\iftab@initrule%Ž¡‘I®ß75Ž‘p‚å\tab@initrulefalse%Ž¡‘I®ß76Ž‘fæå\else%Ž¡‘I®ß77Ž‘p‚å\tab@looped%Ž¡‘I®ß78Ž‘p‚å\tab@commit%Ž¡‘I®ß79Ž‘p‚å\tab@append\tab@shortline{&\omit}%Ž¡‘I®ß80Ž‘fæå\fi%Ž¡‘I®ß81Ž‘]Jå\fi%ŽŸ‘X¹No•¸èw›]]w“e˜decide˜whether˜to˜go˜round˜again.‘Š7If˜not,‘_lw“e˜do˜the˜default˜thing˜forŽ¤ ‘Ithis–-state.‘dKThis“is“mainly“here“so“that“wš¸èe“can“put“the“Ü\tabcolsep“¹or“whatev˜er“inŽ¡‘Iif–U the“user“didn't“giv¸èe“an“`Ü@¹'Ž‘wÌexpression.Ž©‘I®ß82Ž‘]Jå\ifnum#1=\tab@state%Ž¤ ‘I®ß83Ž‘fæå\let\@tempa\relax%Ž¡‘I®ß84Ž‘]Jå\else%Ž¡‘I®ß85Ž‘fæå\csname‘¹Ntab@default@\number\tab@state\endcsname%Ž¡‘I®ß86Ž‘]Jå\fi%Ž¡‘I®ß87Ž‘]Jå\@tempa%Ž¡‘I®ß88Ž‘Sª®å}ŽŸ‘X¹No•¸èw›U w“e˜set˜up˜the˜default˜actions˜for˜the˜v‘ÿqÐarious˜states.Ž¤ ‘XIn–5!state“2“(pre-space)“wš¸èe“add“in“the“default“gap“if“either“w˜e“didn't“ha˜v˜e“an“`Ü@¹'ŽŽ¡‘Iexpression–U in“the“pGost-space“state“or“there“wš¸èas“an“explicit“in˜terv˜ening“rule.Ž¦‘I®ß89Ž‘Sª®å\@namedef{tab@default@2}{%Ž¤ ‘I®ß90Ž‘]Jå\iftab@rule%Ž¡‘I®ß91Ž‘fæå\tab@append\tab@pretext{\hskip\col@sep}%Ž¡‘I®ß92Ž‘]Jå\fi%Ž¡‘I®ß93Ž‘Sª®å}ŽŸ‘X¹If–>the“user“omits“the“column“t•¸èypšGe,‘,Ew“e–>insert“an“`l'-t¸èyp˜e“column“and“moan“aŽŸ ‘Ilot.Ž¦‘I®ß94Ž‘Sª®å\@namedef{tab@default@4}{%Ž¡‘I®ß95Ž‘]Jå\tab@err@misscol%Ž¡‘I®ß96Ž‘]Jå\tab@append\tab@pretext{\tab@bgroup\relax}%Ž¡‘I®ß97Ž‘]Jå\tab@append\tab@posttext{\relax\tab@egroup\hfil}%Ž¡‘I®ß98Ž‘]Jå\tab@append\tab@shortline{\hfil}%Ž¡‘I®ß99Ž‘]Jå\advance\tab@columns\@ne%Ž¡‘E|ß100Ž‘Sª®å}ŽŸ‘X¹Finally–}Dwš¸èe“deal“with“the“pGost-space“state.‘éíW‘ÿ*¸e“set“a“mark˜er“so“that“w˜e“put“inŽŸ ‘Ithe–U default“space“in“the“pre-space“state“later“toGo.Ž¦‘E|ß101Ž‘Sª®å\@namedef{tab@default@6}{%Ž¡‘E|ß102Ž‘]Jå\tab@append\tab@posttext{\hskip\col@sep}%Ž¡‘E|ß103Ž‘]Jå\tab@ruletrue%Ž¡‘E|ß104Ž‘Sª®å}ŽŸýY‘Iâ2.7Ž‘g¾Declaring–¸tokš en“t˜yp_úesŽŸtî‘ݼå\tab@extracolŽŽŽ‘I¹Before–°uwš¸èe“start,‘ÇJw˜e“need“to“handle“Ü\extracolsep¹.‘ƒ~This“is“a“righ˜t“pain,‘ÇJbGecauseŽ¤ ‘Ithe–µ\tab@prespcstate%Ž¡‘E|ß142Ž‘fæå\tab@setstate\tab@postspcstate%Ž¡‘E|ß143Ž‘fæå\let\tab@tok\tab@posttext%Ž¡‘E|ß144Ž‘]Jå\else%Ž¡‘E|ß145Ž‘fæå\tab@setstate\tab@prespcstate%Ž¡‘E|ß146Ž‘fæå\let\tab@tok\tab@pretext%Ž¡‘E|ß147Ž‘]Jå\fi%Ž¡‘E|ß148Ž‘]Jå\tab@append\tab@tok{\begingroup#1\endgroup}%Ž¡‘E|ß149Ž‘Sª®å}ŽŸ‘ PX\tabcoltypeŽŽŽ‘I¹If–Iwš¸èe're“already“in“the“column“state,‘KÓw˜e“bump“the“state“and“loGop“round“again,‘KÓtoŽ¦‘Iget–all“the“appropriate“default“bGehaš¸èviour.‘^(W‘ÿ*¸e“bump“the“column“coun˜ter,‘&³and“addŽ¦‘Ithe–’§bits“of“text“wš¸èe“w˜ere“giv˜en“to“appropriate“tok˜en“lists.‘*W‘ÿ*¸e“also“add“the“Ü\hfilŽ¦‘I¹glue–U to“the“shortline“list,“to“space“out“the“rules“propGerly‘ÿ*¸.ŽŸ‘E|ß150Ž‘Sª®å\def\tabcoltype#1#2{%Ž¡‘E|ß151Ž‘]Jå\ifnum\tab@state=\tab@colstate%Ž¡‘E|ß152Ž‘fæå\global\advance\tab@state\@ne%Ž¡‘E|ß153Ž‘]Jå\fi%Ž¡‘E|ß154Ž‘]Jå\advance\tab@columns\@ne%Ž¡‘E|ß155Ž‘]Jå\tab@setstate\tab@colstate%Ž¡‘E|ß156Ž‘]Jå\tab@append\tab@pretext{#1}%Ž¡‘E|ß157Ž‘]Jå\tab@append\tab@posttext{#2}%Ž¡‘E|ß158Ž‘]Jå\tab@append\tab@shortline{\hfil}%Ž¡‘E|ß159Ž‘Sª®å}ŽŸ‘øk \tabuserpretypeŽŽ¦‘ó±Ò\tabuserposttypeŽŽŽŽŽ‘I¹These–U are“bGoth“utterly“trivial.Ž©‘E|ß160Ž‘Sª®å\def\tabuserpretype#1{%Ž¡‘E|ß161Ž‘]Jå\tab@setstate\tab@prestate%Ž¡‘E|ß162Ž‘]Jå\tab@prepend\tab@userpretext{#1}%Ž¡‘E|ß163Ž‘Sª®å}Ž¦‘E|ß164Ž‘Sª®å\def\tabuserposttype#1{%Ž¡‘E|ß165Ž‘]Jå\tab@setstate\tab@poststate%Ž¡‘E|ß166Ž‘]Jå\tab@prepend\tab@posttext{#1}%Ž¡‘E|ß167Ž‘Sª®å}ŽŸýY‘Iâ2.8Ž‘g¾The–¸colset“stac kŽŸtî‘I¹Let's–²}start“with“something“fairly“easy–ÿ*¸.‘‰˜W“e'll–²}kš¸èeep“a“stac˜k“of“column“sets“so“thatŽ¤ ‘Iusers–Š•don't“get“confused“bš¸èy“pac˜k‘ÿqÐage“authors“c˜hanging“the“curren˜t“column“set.‘-ýThisŽ¡‘Iis–U fairly“easy›ÿ*¸,“really˜.ŽŸ‘Âôå\tab@pushŽŽ¡‘|B\tab@popŽŽŽŽ¡¡‘Âô\tab@headŽŽŽŽŽ‘I¹These–ÅÉare“the“stacš¸èk“managemen˜t“routines.‘Ã{The“only“impGortan˜t“thing“to“noteŽ¡‘Iis–Ò that“Ü\tab@head“¹mš¸èust“tak˜e“place“àonly‘´x¹in“T‘þUYŸ&úEŽ‘ã9X's“mouth,‘1Eso“w˜e“can“use“it“inŽ¡‘IÜ\csname¹.–ª.“.“Ü\endcsname‘U ¹constructions.Ž¦‘E|ß168Ž‘Sª®å\def\tab@push#1#2{%ŽŸ ‘E|ß169Ž‘]Jå\toks@{{#2}}%ŽŽŸ’õ€P¹32ŽŽŒ‹!A ª ýs o ý´‘E|ß170Ž‘]Jå\expandafter\def\expandafter#1\expandafter{\the\expandafter\toks@#1}%Ž¤ ‘E|ß171Ž‘Sª®å}Ž¡‘E|ß172Ž‘Sª®å\def\tab@pop#1{\expandafter\def\expandafter#1\expandafter{\@gobble#1}}Ž¡‘E|ß173Ž‘Sª®å\def\tab@head#1{\expandafter\tab@head@i#1\relax}Ž¡‘E|ß174Ž‘Sª®å\def\tab@head@i#1#2\relax{#1}Ž©‘5\colsetŽŽŸ ‘|B\colpushŽŽŽŽ¤ ¡‘5\colpopŽŽŽŽŽ‘I¹No•¸èw›U w“e˜can˜dene˜the˜user˜macros.ŽŸ‘E|ß175Ž‘Sª®å\def\tab@colstack{{tabular}}Ž¡‘E|ß176Ž‘Sª®å\def\colset{\colpop\colpush}Ž¡‘E|ß177Ž‘Sª®å\def\colpush{\tab@push\tab@colstack}Ž¡‘E|ß178Ž‘Sª®å\def\colpop{\tab@pop\tab@colstack}Ž¦‘ PX\tab@colsetŽŽŽ‘I¹No•¸èw›U w“e˜dene˜a˜shortcut˜for˜reading˜the˜top˜item˜o˜the˜stac“k.Ž¤‘E|ß179Ž‘Sª®å\def\tab@colset{\tab@head\tab@colstack}ŽŸýY‘Iâ2.9Ž‘g¾The–¸main“parser“routineŽŸtî‘ݼå\tab@initreadŽŽŽ‘I¹This–× macro“sets“up“lots“of“v‘ÿqÐariables“to“their“normal“states“prior“to“parsing“aŽŸ ‘Ipreamš¸èble.‘q€Some–U things“ma˜y“need“c˜hanging,“but“not“man˜y‘ÿ*¸.Ž¡‘E|ß180Ž‘Sª®å\def\tab@initread{%Ž©‘X¹First,–U reset“the“parser“state“to“the“start“state.Ž¡‘E|ß181Ž‘]Jå\global\tab@state\tab@startstate%Ž¦‘X¹W›ÿ*¸e–­-clear“the“tok¸èen“lists“to“sensible“v‘ÿqÐalues,‘ÎÄmostly˜.‘9…The“midtext“macro“con¸ètainsŽ¤ ‘Iwhat–íto“put“in“the“vš¸èery“middle“of“eac˜h“template““Ü\multicolumn“¹will“insert“itsŽ¡‘Iargumen¸èt‘U here.ŽŸ‘E|ß182Ž‘]Jå\tab@preamble{}%Ž¤ ‘E|ß183Ž‘]Jå\tab@shortline{}%Ž¡‘E|ß184Ž‘]Jå\def\tab@tabtext{&}%Ž¡‘E|ß185Ž‘]Jå\def\tab@midtext{\ignorespaces####\@maybe@unskip}%Ž¡‘E|ß186Ž‘]Jå\tab@pretext{}%Ž¡‘E|ß187Ž‘]Jå\tab@userpretext{}%Ž¡‘E|ß188Ž‘]Jå\tab@posttext{}%Ž¡‘E|ß189Ž‘]Jå\let\tab@multicol\@empty%Ž¡‘E|ß190Ž‘]Jå\def\tab@startpause{\penalty\postdisplaypenalty\medskip}%Ž¡‘E|ß191Ž‘]Jå\def\tab@endpause{\penalty\predisplaypenalty\medskip}%Ž¦‘X¹Finally‘ÿ*¸,›´greset–n&the“column“coun¸èter,˜don't“raise“errors“when“w¸èe“loGop,˜and“setŽ© ‘Isome–U parser“ags“to“their“appropriate“v‘ÿqÐalues.ŽŸ‘E|ß192Ž‘]Jå\tab@columns\z@%Ž¡‘E|ß193Ž‘]Jå\let\tab@looped\relax%Ž¡‘E|ß194Ž‘]Jå\tab@ruletrue%Ž¡‘E|ß195Ž‘]Jå\tab@initruletrue%Ž¡‘E|ß196Ž‘]Jå\tab@firstcoltrue%Ž¡‘E|ß197Ž‘Sª®å}ŽŸ‘îø„\tab@readpreambleŽŽŽ‘I¹This–¬®is“the“main“macro“for“preamš¸èble“handling.‘x)A˜ctually‘ÿ*¸,‘‘all“it“doGes“is“gobble“itsŽ¦‘Iargumenš¸èt's–U leading“brace“and“call“another“macro,“but“it“doGes“it“with“st˜yle.ŽŸ‘E|ß198Ž‘Sª®å\def\tab@readpreamble#1{%Ž¡‘E|ß199Ž‘]Jå\tab@doreadpream{#1}%Ž¡‘E|ß200Ž‘]Jå\iftab@initrule\global\tab@state\tab@prespcstate\fi%ŽŽŸ’õ€P¹33ŽŽŒ‹"Í ª ýs o ý´‘E|ß201Ž‘]Jå\tab@setstate\tab@rulestate%Ž¤ ‘E|ß202Ž‘]Jå\tab@commit%Ž¡‘E|ß203Ž‘Sª®å}Ž©‘ó±Ò\tab@doreadpreamŽŽŽ‘I¹The–Q)preamš¸èble“is“in“an“argumen˜t.‘p.Previous“v˜ersions“used“a“nast˜y“tric˜k“using“Ü\letŽ¤ ‘I¹and–ä_Ü\afterassignment¹.‘=Noš¸èw“w˜e“use“an“explicit“end“tok˜en,‘/to“allo˜w“doGdgy“col-Ž¡‘Iumn–+"t¸èypšGe“handlers“to“sco˜op“up“the“remaining“preamš¸èble“tok˜ens“and“proGcess“them.Ž¡‘INot–óŽthat“an•¸èy“one›óŽw“ould˜w“an“t˜to˜do˜that,‘)oh˜no˜(see˜the˜`Ü[¹'Ž‘´¨t“ypGe˜in˜the˜Ýeqna“rra“yŽ¡‘I¹en•¸èvironmen“t‘U Ü;-)¹).ŽŸ‘E|ß204Ž‘Sª®å\def\tab@doreadpream#1{\tab@mkpreamble#1\q@delim}Ž¦‘øk \tab@mkpreambleŽŽŽ‘I¹This–¤-is“the“main“parser“routine.‘6…It“takš¸èes“eac˜h“tok˜en“in“turn,‘Ç‘scrutinises“it“carefully‘ÿ*¸,Ž¡‘Iand–U doGes“the“appropriate“thing“with“it.Ž¡‘XThe–ˆNpreamš¸èble“w˜as“giv˜en“as“an“argumen˜t“to“Ü\tab@doreadpream¹,‘•and“that“hasŽ¡‘Ihelpfully–¿`strippGed“o“the“initial“Ü{“¹cš¸èharacter.‘°@W‘ÿ*¸e“need“to“pic˜k“o“the“next“tok˜enŽ¡‘I(whatevš¸èer–KWit“is)“so“w˜e“can“examine“it.‘T&W‘ÿ*¸e'll“use“Ü\futurelet“¹so“w˜e“can“detectŽ¡‘Igroups–U and“things“in“funn¸èy“places.Ž©‘E|ß205Ž‘Sª®å\def\tab@mkpreamble{\futurelet\@let@token\tab@mkpreamble@i}ŽŸ‘X¹If–Œwš¸èe“nd“a“space“tok˜en,‘̧w˜e'll“go“o“and“do“something“a“bit“spGecial,‘̧sinceŽ¡‘Ispaces–U are“sort“of“hard“to“handle.‘q€Otherwise“wš¸èe'll“do“it“in“the“old“fashioned“w˜a˜y‘ÿ*¸.Ž¦‘E|ß206Ž‘Sª®å\def\tab@mkpreamble@i{%Ž¤ ‘E|ß207Ž‘]Jå\ifx\@let@token\@sptoken%Ž¡‘E|ß208Ž‘fæå\expandafter\tab@mkpreamble@spc%Ž¡‘E|ß209Ž‘]Jå\else%Ž¡‘E|ß210Ž‘fæå\expandafter\tab@mkpreamble@ii%Ž¡‘E|ß211Ž‘]Jå\fi%Ž¡‘E|ß212Ž‘Sª®å}ŽŸ‘X¹If–æwš¸èe“nd“a“Ü\@@endpreamble“¹tok˜en,‘µ¿that's“it“and“w˜e're“nished.‘/W‘ÿ*¸e“just“gobbleŽ¤ ‘Iit–†´and“return.‘=Otherwise,›“if“it's“an“opGen“group“c•¸èharacter,˜w“e'll–†´complain“bGecauseŽ¡‘Isomeone's–Cžprobably“tried“to“put“an“argumen¸èt“in“the“wrong“place.‘kªFinally‘ÿ*¸,‘Gif“noneŽ¡‘Iof–U the“other“things“apply‘ÿ*¸,“wš¸èe'll“deal“with“the“c˜haracter“bGelo˜w.Ž¦‘E|ß213Ž‘Sª®å\def\tab@mkpreamble@ii{%Ž¤ ‘E|ß214Ž‘]Jå\ifx\@let@token\q@delim%Ž¡‘E|ß215Ž‘fæå\def\@tempa{\let\@let@token}%Ž¡‘E|ß216Ž‘]Jå\else%Ž¡‘E|ß217Ž‘fæå\ifcat\bgroup\noexpand\@let@token%Ž¡‘E|ß218Ž‘p‚å\tab@err@oddgroup%Ž¡‘E|ß219Ž‘p‚å\def\@tempa##1{\tab@mkpreamble}%Ž¡‘E|ß220Ž‘fæå\else%Ž¡‘E|ß221Ž‘p‚å\let\@tempa\tab@mkpreamble@iii%Ž¡‘E|ß222Ž‘fæå\fi%Ž¡‘E|ß223Ž‘]Jå\fi%Ž¡‘E|ß224Ž‘]Jå\@tempa%Ž¡‘E|ß225Ž‘Sª®å}ŽŸ‘X¹Handle–—ya“cš¸èharacter.‘8ŒThis“in˜v˜olv˜es“c˜hec˜king“to“see“if“it's“actually“dened,‘¨andŽ¤ ‘Ithen–„†doing“it.‘+øDoing“things“this“w•¸èa“y–„†means“wš¸èe“w˜on't“get“stranded“in“mid-pream˜bleŽ¡‘Iunless–U a“pacš¸èk‘ÿqÐage“author“has“blo˜wn“it.Ž¦‘E|ß226Ž‘Sª®å\def\tab@mkpreamble@iii#1{%ŽŸ ‘E|ß227Ž‘]Jå\@ifundefined{\tab@colset!col.\string#1}{%ŽŽŸ’õ€P¹34ŽŽŒ‹#&s ª ýs o ý´‘E|ß228Ž‘fæå\tab@err@undef{#1}\tab@mkpreamble%Ž¤ ‘E|ß229Ž‘]Jå}{%Ž¡‘E|ß230Ž‘fæå\@nameuse{\tab@colset!col.\string#1}%Ž¡‘E|ß231Ž‘]Jå}%Ž¡‘E|ß232Ž‘Sª®å}ŽŸ”6‘X¹If–bwš¸èe“get“giv˜en“a“space“c˜haracter,‘eUw˜e'll“lošGok“up“the“command“name“as“b˜efore.Ž¤ ‘IIf–Ÿno-one's“dened“the“column“tš¸èypGe“w˜e'll“just“skip“it“silen˜tly‘ÿ*¸,‘±whic˜h“lets“users“doŽ¡‘Iprettš¸èy–U formatting“if“they“lik˜e.Ž©”6‘E|ß233Ž‘Sª®å\@namedef{tab@mkpreamble@spc}‘¹N{%Ž¤ ‘E|ß234Ž‘]Jå\@ifundefined{\tab@colset!col.‘¹N}{%Ž¡‘E|ß235Ž‘fæå\tab@mkpreamble%Ž¡‘E|ß236Ž‘]Jå}{%Ž¡‘E|ß237Ž‘fæå\@nameuse{\tab@colset!col.‘¹N}%Ž¡‘E|ß238Ž‘]Jå}%Ž¡‘E|ß239Ž‘Sª®å}ŽŸ^Q‘5\coldefŽŽŽ‘I¹Here's–0 hoš¸èw“to“dene“column“t˜ypGes“the“nice“w˜a˜y‘ÿ*¸.‘Some“dexterit˜y“is“required“toŽŸ ‘Imak•¸èe›U ev“erything˜w“ork˜righ“t,˜but˜it's˜simple˜really‘ÿ*¸.Ž¦‘E|ß240Ž‘Sª®å\def\coldef{\@ifnextchar[\coldef@i{\coldef@i[\tab@colset]}}Ž¡‘E|ß241Ž‘Sª®å\def\coldef@i[#1]#2#3#{\coldef@ii[#1]{#2}{#3}}Ž¡‘E|ß242Ž‘Sª®å\def\coldef@ii[#1]#2#3#4{%Ž¡‘E|ß243Ž‘]Jå\expandafter\def\csname#1!col.\string#2\endcsname#3{%Ž¡‘E|ß244Ž‘fæå#4\tab@mkpreamble%Ž¡‘E|ß245Ž‘]Jå}%Ž¡‘E|ß246Ž‘Sª®å}ŽŸ^Q‘5\colletŽŽŽ‘I¹W‘ÿ*¸e'd–likš¸èe“to“let“pGeople“cop˜y“column“t˜ypGes“from“other“places.‘ZÍThis“is“ho˜w“to“do“it.Ž¦‘E|ß247Ž‘Sª®å\def\collet{\@ifnextchar[\collet@i{\collet@i[\tab@colset]}}Ž¡‘E|ß248Ž‘Sª®å\def\collet@i[#1]#2{%Ž¡‘E|ß249Ž‘]Jå\@ifnextchar=%Ž¡‘E|ß250Ž‘fæå{\collet@ii[#1]{#2}}%Ž¡‘E|ß251Ž‘fæå{\collet@ii[#1]{#2}=}%Ž¡‘E|ß252Ž‘Sª®å}Ž¡‘E|ß253Ž‘Sª®å\def\collet@ii[#1]#2={%Ž¡‘E|ß254Ž‘]Jå\@ifnextchar[%Ž¡‘E|ß255Ž‘fæå{\collet@iii[#1]{#2}}%Ž¡‘E|ß256Ž‘fæå{\collet@iii[#1]{#2}[\tab@colset]}%Ž¡‘E|ß257Ž‘Sª®å}Ž¡‘E|ß258Ž‘Sª®å\def\collet@iii[#1]#2[#3]#4{%Ž¡‘E|ß259Ž‘]Jå\expandafter\let\csname#1!col.\string#2\expandafter\endcsname%Ž¡‘E|ß260Ž’¨²*å\csname#3!col.\string#4\endcsname%Ž¡‘E|ß261Ž‘Sª®å}ŽŸ^Q‘ý$n\newcolumntypeŽŽŽ‘I¹W‘ÿ*¸e–Ô2just“bundle“the“text“o“to“Ü\newcommand“¹and“expšGect“it“to“cop˜e.‘î·It“ough¸ètŽ¤ ‘Ito.‘z‰The–Îcolumn“t¸èypšGe“co˜de“inserts“the“user's“tok¸èens“directly‘ÿ*¸,‘.9rather“than“callingŽ¡‘IÜ\tab@doreadpream–„˜¹recursivš¸èely‘ÿ*¸.‘ÿçThe“magic“con˜trol“sequence“is“the“one“loGok˜ed“upŽ¡‘Ib¸èy–U the“parser.Ž¡‘XThere's–µ{some“additional“magic“here“for“compatiblitš¸èy“with“the“obscure“w˜a˜y“thatŽ¡‘IÝa•¸èrra“y‘x¬¹w“orks.Ž¦‘E|ß262Ž‘Sª®å\def\newcolumntype#1{\@ifnextchar[{\nct@i{#1}}{\nct@i#1[0]}}Ž¤ ‘E|ß263Ž‘Sª®å\def\nct@i#1[#2]{\@ifnextchar[{\nct@ii{#1}[#2]}{\nct@iii{#1}{[#2]}}}Ž¡‘E|ß264Ž‘Sª®å\def\nct@ii#1[#2][#3]{\nct@iii{#1}{[#2][#3]}}ŽŽŸ’õ€P¹35ŽŽŒ‹$2a ª ýs o ý´‘E|ß265Ž‘Sª®å\def\nct@iii#1#2#3{%Ž¤ ‘E|ß266Ž‘]Jå\expandafter\let\csname\tab@colset!col.\string#1\endcsname\relax%Ž¡‘E|ß267Ž‘]Jå\expandafter\newcommand\csname\tab@colset!col.\string#1\endcsname#2{%Ž¡‘E|ß268Ž‘fæå\tab@deepmagic{#1}%Ž¡‘E|ß269Ž‘fæå\tab@mkpreamble%Ž¡‘E|ß270Ž‘fæå#3%Ž¡‘E|ß271Ž‘]Jå}%Ž¡‘E|ß272Ž‘Sª®å}Ž¤‘X¹Noš¸èw–U for“some“hac˜king“for“compatibilit˜y“with“Ýtabula˜rx¹.Ž©‘E|ß273Ž‘Sª®å\def\newcol@#1[#2]{\nct@iii{#1}{[#2]}}Ž¡‘X¹And–U no¸èw“some“more.›q€This“is“seriously“deep“magic.˜Hence“the“name.Ž¦‘E|ß274Ž‘Sª®å\def\tab@deepmagic#1{%Ž¤ ‘E|ß275Ž‘]Jå\csname‘¹NNC@rewrite@\string#1\endcsname\NC@find\tab@@magic@@%Ž¡‘E|ß276Ž‘Sª®å}Ž¡‘E|ß277Ž‘Sª®å\def\NC@find#1\tab@@magic@@{}ŽŸýY‘Iâ2.10Ž‘n}¨Standard–¸column“t yp_úesŽŸtî‘I¹First,‘5makš¸èe–-­sure“w˜e're“setting“up“the“righ˜t“columns.‘dZThis“also“sets“the“default“forŽ¤ ‘Ithe–Ûuser.‘0Other“pacš¸èk‘ÿqÐages“m˜ust“not“use“the“Ü\colset“¹command“for“dening“columnsŽ¡‘I–U they“should“use“the“stac¸èk“opšGerations“dened“ab˜o•¸èv“e.Ž¦‘E|ß278Ž‘Sª®å\colset{tabular}ŽŸ‘X¹Noš¸èw–›Ddo“the“simple“alignmen˜t“t˜ypGes.›CìThese“are“fairly“simple.˜The“m¸èysteriousŽ¡‘Ikš¸èern–€Win“the“`Ül¹'Ž‘Î:t˜ypGe“is“to“stop“the“Ü\col@sep“¹glue“from“v‘ÿqÐanishing“due“to“the“Ü\unskipŽ¡‘I¹inserted–ƒ­bš¸èy“the“standard“Ü\tab@midtext“¹if“the“column“con˜tains“no“text.‘ý'(ThanksŽ¡‘Ifor–U spGotting“this“bug“go“to“that“nice“Mr“Carlisle.)Ž¦‘E|ß279Ž‘Sª®å\coldef‘¹Nl{\tabcoltype{\kern\z@\tab@bgroup}{\tab@egroup\hfil}}Ž¤ ‘E|ß280Ž‘Sª®å\coldef‘¹Nc{\tabcoltype{\hfil\tab@bgroup}{\tab@egroup\hfil}}Ž¡‘E|ß281Ž‘Sª®å\coldef‘¹Nr{\tabcoltype{\hfil\tab@bgroup}{\tab@egroup}}ŽŸ‘X¹Some–Fextensions“no¸èw.‘lªThese“are“explicitly“teextual“or“mathematical“columns.Ž¤ ‘ICan–Ú×bGe“useful“if“yš¸èou're“pro˜viding“column“t˜ypšGes“for“other“p˜eople.‘¤I'v¸èe“inserted“aŽ¡‘Ikš¸èern–U here“for“exactly“the“same“reason“as“for“the“`Ül¹'Ž‘wÌcolumn“t˜ypšGe“ab˜o•¸èv“e.Ž¦‘E|ß282Ž‘Sª®å\coldef‘¹NT#1{\tab@aligncol{#1}{\tab@btext}{\tab@etext}}Ž¤ ‘E|ß283Ž‘Sª®å\coldef‘¹NM#1{\tab@aligncol{#1}{\tab@bmaths}{\tab@emaths}}Ž¡‘E|ß284Ž‘Sª®å\def\tab@aligncol#1#2#3{%Ž¡‘E|ß285Ž‘]Jå\if#1l\tabcoltype{\kern\z@#2}{#3\hfil}\fi%Ž¡‘E|ß286Ž‘]Jå\if#1c\tabcoltype{\hfil#2}{#3\hfil}\fi%Ž¡‘E|ß287Ž‘]Jå\if#1r\tabcoltype{\hfil#2}{#3}\fi%Ž¡‘E|ß288Ž‘Sª®å}ŽŸ‘X¹No¸èw–U for“the“default“rules.Ž¦‘E|ß289Ž‘Sª®å\coldef‘¹N|{\tabruletype{\vrule\@width\arrayrulewidth}}Ž¡‘E|ß290Ž‘Sª®å\coldef‘¹N!#1{\tabruletype{#1}}ŽŸ‘X¹Deal–U with“`Ü@¹'Ž‘wÌexpressions.Ž¦‘E|ß291Ž‘Sª®å\coldef‘¹N@#1{\tabspctype{#1}}ŽŽŸ’õ€P¹36ŽŽŒ‹%=A ª ýs o ý´‘X¹And–U the“paragraph“t•¸èypšGes.‘q€I'v“e–U added“things“to“handle“fo˜otnotes“here.Ž©„‘E|ß292Ž‘Sª®å\coldef‘¹Np#1{\tabcoltype%Ž¤ ‘E|ß293Ž’‘¤å{\savenotes\vtop\tab@bpar{#1}}%Ž¡‘E|ß294Ž’‘¤å{\tab@epar\spewnotes\hfil}}Ž¡‘E|ß295Ž‘Sª®å\coldef‘¹Nm#1{\tabcoltype%Ž¡‘E|ß296Ž’‘¤å{\savenotes$\vcenter\tab@bpar{#1}}%Ž¡‘E|ß297Ž’‘¤å{\tab@epar$\spewnotes\hfil}}Ž¡‘E|ß298Ž‘Sª®å\coldef‘¹Nb#1{\tabcoltype%Ž¡‘E|ß299Ž’‘¤å{\savenotes\vbox\tab@bpar{#1}}%Ž¡‘E|ß300Ž’‘¤å{\tab@epar\spewnotes\hfil}}ŽŸ„‘X¹Phew.›q€Only–U a“few“more“left“no¸èw.˜The“user“text“ones.Ž¦‘E|ß301Ž‘Sª®å\coldef‘¹N>#1{\tabuserpretype{#1}}Ž¡‘E|ß302Ž‘Sª®å\coldef‘¹N<#1{\tabuserposttype{#1}}Ž¤„‘X¹The–U strange“column“t¸èypGe.Ž¦‘E|ß303Ž‘Sª®å\coldef‘¹N##1#2{\tabcoltype{#1}{#2}}Ž¡‘X¹And‘,Ï`Ü*¹'Ž‘ ú[,‘4àwhicš¸èh–,ÏrepGeats“a“pream˜ble“spGec.‘dThis“is“really“easy‘ÿ*¸,‘4àand“not“at“all“lik˜eŽŸ ‘Ithe–U original“one.Ž¦‘E|ß304Ž‘Sª®å\coldef‘¹N*#1#2{%Ž¤ ‘E|ß305Ž‘]Jå\count@#1%Ž¡‘E|ß306Ž‘]Jå\loop\ifnum\count@>0\relax%Ž¡‘E|ß307Ž‘fæå\tab@doreadpream{#2}%Ž¡‘E|ß308Ž‘fæå\advance\count@\m@ne%Ž¡‘E|ß309Ž‘]Jå\repeat%Ž¡‘E|ß310Ž‘Sª®å}ŽŸYÓ‘Iâ2.11Ž‘n}¨P aragraph‘¸handlingŽŸtî‘I¹First–ÄÕof“all,‘á±starting“new“paragraphs:‘)[the“vbGoš¸èx“tok˜en“is“already“there,‘á±and“w˜e“ha˜v˜eŽ¤ ‘Ithe–U width“as“an“argumen¸èt.ŽŸÆ(‘Âôå\tab@bparŽŽŽ‘I¹There–Û¹are“some“gymnastics“to“do“here“to“suppGort“lists“whic¸èh“form“the“completeŽ¡‘Itext–§Hof“the“parbšGo¸èx.‘gøOne“of“the“o˜dd“things“I'll“do“here“is“to“not“insert“a“strut“onŽ¡‘Ithe–pqrst“line:‘¨#instead,‘wFI'll“put“the“text“inš¸èto“a“bGo˜x“register“so“that“I‘pjcan“inspGect“itŽ¡‘Ilater.‘¡ÍSo–e:that“I›e6ha•¸èv“e–e:access“to“the“heigh¸èt“of“the“rst“line,‘i@I'll“use“a“Ü\vtop“¹“I˜canŽ¡‘Iget–c+at“the“nal“depth“b¸èy“using“Ü\prevdepth¹,‘f­so“this“seems“to“bGe“the“most“generalŽ¡‘Isolution.Ž¦‘E|ß311Ž‘Sª®å\def\tab@bpar#1{%Ž¤ ‘E|ß312Ž‘]Jå\bgroup%Ž¡‘E|ß313Ž‘]Jå\hsize#1\relax%Ž¡‘E|ß314Ž‘]Jå\@arrayparboxrestore%Ž¡‘E|ß315Ž‘]Jå\setbox\z@\vtop\bgroupŽ¡‘E|ß316Ž‘]Jå\global\@minipagetrue%Ž¡‘E|ß317Ž‘]Jå\everypar{%Ž¡‘E|ß318Ž‘fæå\global\@minipagefalse%Ž¡‘E|ß319Ž‘fæå\everypar{}%Ž¡‘E|ß320Ž‘]Jå}%Ž¡‘E|ß321Ž‘Sª®å}ŽŸÆ(‘Âô\tab@eparŽŽŽ‘I¹T›ÿ*¸o–©/end“the“paragraph,‘Ë’close“the“bGo¸èx.‘80That“sounds“easy˜,‘Ë’doGesn't“it?‘80I‘©need“to“spaceŽŸ ‘Iout–Iwthe“top“and“bšGottom“of“the“b˜o¸èx“so“that“it“lo˜oks“as“if“struts“ha•¸èv“e–Iwb˜een“applied.Ž¦‘E|ß322Ž‘Sª®å\def\tab@epar{%ŽŽŸ’õ€P¹37ŽŽŒ‹&H ª ýs o ý´‘X¹An•¸èyw“a“y‘ÿ*¸,‘?I‘:$should–:+end“the“currenš¸èt“paragraph“if“I'm“still“in“horizon˜tal“moGde.‘h„AŽ¤ ‘Isimple–Á?Ü\par“¹will“do“this“nicely‘ÿ*¸.‘µÜI'll“also“remo•¸èv“e›Á?an“y˜trailing˜v“ertical˜glue˜(whic“hŽ¡‘Imaš¸èy–AÐbGe“left“there“b˜y“a“list“en˜vironmen˜t),‘|übšGecause“things“will“lo˜ok“v¸èery“strangeŽ¡‘Iotherwise.Ž©‘E|ß323Ž‘]Jå\ifhmode\@maybe@unskip\par\fi%ŽŸ ‘E|ß324Ž‘]Jå\unskip%ŽŸ‘X¹No¸èw–—‰I'll“lošGok“at“the“depth“of“the“last“b˜oš¸èx:‘µif“it's“less“deep“than“m˜y“spGecial“strut,Ž¡‘II'll–¨‚cunningly“bacš¸èkpGedal“b˜y“a“bit,‘Ëand“add“a“bGo˜x“with“the“appropriate“depth.‘7öSinceŽ¡‘Ithis–,Zwill“lie“on“the“previous“baseline,‘4‚it“wš¸èon't“alter“the“eectiv˜e“heigh˜t“of“the“bGo˜x.Ž¡‘IThere's–˜åa“snag“here.‘<ÐÜ\prevdepth“¹ma¸èy“bGe“wrong“for“example“if“the“last“thingŽ¡‘Iinserted–(Qwš¸èas“a“rule,‘1Gor“the“bGo˜x“is“just“empt˜y‘ÿ*¸.‘bChec˜k“for“this“spGecially‘ÿ*¸.‘b(Thanks“toŽ¡‘IRo¸èwland–U for“spGotting“this.)Ž¦‘E|ß325Ž‘]Jå\ifdim\prevdepth>-\@m\p@\ifdim\prevdepth<\dp\@arstrutbox%Ž¤ ‘E|ß326Ž‘fæå\kern-\prevdepth%Ž¡‘E|ß327Ž‘fæå\nointerlineskip%Ž¡‘E|ß328Ž‘fæå\vtop‘¹Nto\dp\@arstrutbox{}%Ž¡‘E|ß329Ž‘]Jå\fi\fi%Ž¤‘X¹I'v¸èe–ì’nished“the“bšGottom“of“the“b˜oš¸èx“no˜w:‘=9I'll“close“it,‘{and“start“w˜ork“on“the“topŽŸ ‘Iagain.Ž¦‘E|ß330Ž‘]Jå\egroup%Ž¡‘X¹F‘ÿ*¸or–ŒRtop-alignmenš¸èt“to“w˜ork,‘Úthe“rst“item“in“the“bGo˜x“m˜ust“bšGe“another“b˜o¸èx.Ž¤ ‘I(This–%is“wh¸èy“I‘õcouldn't“just“set“Ü\prevdepth“¹at“the“bšGeginning.)‘¥If“the“b˜o¸èx“isn'tŽ¡‘Ihigh–Ã4enough,‘Þ¹I'll“add“a“bGoš¸èx“of“the“righ˜t“heigh˜t“and“then“k˜ern“bac˜kw˜ards“so“thatŽ¡‘Ithe–U `real'“rst“bGoš¸èx“ends“up“in“the“righ˜t“place.Ž¦‘E|ß331Ž‘]Jå\ifdim\ht\z@<\ht\@arstrutbox%Ž¤ ‘E|ß332Ž‘fæå\vbox‘¹Nto\ht\@arstrutbox{}%Ž¡‘E|ß333Ž‘fæå\kern-\ht\z@%Ž¡‘E|ß334Ž‘]Jå\fi%Ž¡‘E|ß335Ž‘]Jå\unvbox\z@%Ž¡‘E|ß336Ž‘]Jå\egroup%Ž¡‘E|ß337Ž‘Sª®å}ŽŸýY‘Iâ2.12Ž‘n}¨Gen tle‘¸p_úersuasionŽŸtî‘I¹T‘ÿ*¸o–ð7pGersuade“Ýlongtable“¹to“w•¸èork,‘ew“e›ð7em“ulate˜some˜features˜of˜the˜Ýa“rra“y‘ùw“a“y˜of˜doingŽ¤ ‘Ithings.‘q€It's–U a“shame,“but“wš¸èe“ha˜v˜e“to“do“it,“bGecause“Ýlongtable“¹came“rst.Ž¡‘XNote–Êïthe“horribleness“with“the“grouping“here.‘ÒìIn“order“to“get“ev¸èerything“ex-Ž¡‘Ipanded–Çat“the“righ¸èt“time,‘ãêÜ\@preamble“¹just“replaces“itself“with“the“(not“expanded!)Ž¡‘Ipreamš¸èble–Ârstring,‘ÝÆusing“Ü\the¹.‘¹vThis“means“that“the“pream˜ble“string“m˜ust“bGe“visi-Ž¡‘Ible–ðin“the“group“just“abGo•¸èv“e›ðus.‘BINo“w,‘ÉÝlongtable˜¹(and˜Ýa“rra“y‘š¹for˜that˜matter)˜doGesŽ¡‘IÜ\@mkpreamble–€¹immediately“after“opGening“a“new“group.‘ So“all“w¸èe“need“to“do“isŽ¡‘Iclose–U that“group,“do“our“stu,“and“reopGen“the“group“again.‘q€(Evil“laugh¸èter.–ª.“.“)Ž¦‘E|ß338Ž‘Sª®å\def\@mkpream#1{%Ž¤ ‘E|ß339Ž‘]Jå\endgroup%Ž¡‘E|ß340Ž‘]Jå\colset{tabular}%Ž¡‘E|ß341Ž‘]Jå\tab@initread%Ž¡‘E|ß342Ž‘]Jå\def\tab@multicol{\@arstrut}%Ž¡‘E|ß343Ž‘]Jå\tab@preamble{\tab@multicol}%ŽŽŸ’õ€P¹38ŽŽŒ‹'R“ ª ýs o ý´‘E|ß344Ž‘]Jå\def\tab@midtext{\ignorespaces\@sharp\@sharp\@maybe@unskip}%Ž¤ ‘E|ß345Ž‘]Jå\tab@readpreamble{#1}%Ž¡‘E|ß346Ž‘]Jå\gdef\@preamble{\the\tab@preamble}%Ž¡‘E|ß347Ž‘]Jå\let\tab@bgroup\begingroup%Ž¡‘E|ß348Ž‘]Jå\let\tab@egroup\endgroup%Ž¡‘E|ß349Ž‘]Jå\begingroup%Ž¡‘E|ß350Ž‘Sª®å}ŽŸú.‘Iâ2.13Ž‘n}¨DebuggingŽŸtî‘I¹This–þdmacro“just“parses“a“preamš¸èble“and“displa˜ys“it“on“the“terminal.‘T—It“means“I‘þNcanŽŸ ‘Isee–U whether“the“thing's“w¸èorking.Ž©ø£‘E|ß351Ž‘Sª®å\def\showpream#1{%Ž¡‘E|ß352Ž‘]Jå\tab@initread%Ž¡‘E|ß353Ž‘]Jå\tab@readpreamble{#1}%Ž¡‘E|ß354Ž‘]Jå\showthe\tab@preamble%Ž¡‘E|ß355Ž‘]Jå\showthe\tab@shortline%Ž¡‘E|ß356Ž‘Sª®å}ŽŸø£‘X¹A–U quicš¸èk“macro“for“sho˜wing“column“t˜ypGes.Ž¦‘E|ß357Ž‘Sª®å\def\showcol#1{%Ž¡‘E|ß358Ž‘]Jå\expandafter\show\csname\tab@colset!col.\string#1\endcsname%Ž¡‘E|ß359Ž‘Sª®å}ŽŸú.‘Iâ2.14Ž‘n}¨The–¸ëHtabulaš r‘¯µâand“ëHa˜rra˜y‘¯µâen˜vironmen˜tsŽ¤tî‘I¹This–U is“where“wš¸èe“dene“the“actual“en˜vironmen˜ts“whic˜h“users“pla˜y“with.ŽŸú.‘IÙ2.14.1Ž‘qáThe›Õen•®>vironmen“t˜routinesŽ¡‘I¹The–Ä­real“w¸èork“is“done“in“the“Ü\@array“¹macro“later.‘AZW‘ÿ*¸e“just“set“up“lots“(and“I‘ĉmeanŽŸ ‘Iàlots‘Ò¹)–U of“parameters“rst,“and“then“call“Ü\@array¹.ŽŸôô‘ ¦å\tab@arrayŽŽŽ‘I¹The–U Ü\tab@array“¹macro“doGes“most“of“the“common“arra¸èy“things.Ž¦‘E|ß360Ž‘Sª®å\def\tab@array{%Ž¤ ‘E|ß361Ž‘]Jå\tab@width\z@%Ž¡‘E|ß362Ž‘]Jå\let\tab@bgroup\tab@bmaths%Ž¡‘E|ß363Ž‘]Jå\let\tab@egroup\tab@emaths%Ž¡‘E|ß364Ž‘]Jå\@tabarray%Ž¡‘E|ß365Ž‘Sª®å}ŽŸôô‘ ¦\tab@btextŽŽŸ ‘ PX\tab@bmathsŽŽŽŽ¤ ¡‘ ¦\tab@etextŽŽŽŽ¤ ¡¡‘ PX\tab@emathsŽŽŽŽŽ‘I¹These–Ô‡macros“conš¸ètain“appropriate“things“to“use“when“t˜ypGesetting“text“or“mathsŽ¤ ‘Imacros.›èìThey're–|ïall“trivial.˜They're“here“only“for“later“moGdication“bš¸èy“funn˜yŽ¡‘Ithings–U likš¸èe“the“Ýsma˜rra˜y‘x¬¹en˜vironmen˜t.Ž¦‘E|ß366Ž‘Sª®å\def\tab@btext{\begingroup}Ž¤ ‘E|ß367Ž‘Sª®å\def\tab@bmaths{$}Ž¡‘E|ß368Ž‘Sª®å\def\tab@etext{\endgroup}Ž¡‘E|ß369Ž‘Sª®å\def\tab@emaths{\m@th$}ŽŸôô‘'¨,arrayŽŽŽ‘I¹Noš¸èw–h¦for“the“Ýa˜rra˜y‘Œ2¹en˜vironmen˜t.‘¬The“`Ü$¹'“signs“act“as“a“group,‘mˆso“w˜e“don't“need“toŽŸ ‘Ido–U extra“grouping“this“time.‘q€Closing“the“en•¸èvironmen“t–U is“easy‘ÿ*¸.Ž¦‘E|ß370Ž‘Sª®å\def\array{%ŽŽŸ’õ€P¹39ŽŽŒ‹(_ ª ýs o ý´‘E|ß371Ž‘]Jå\col@sep\arraycolsep%Ž¤ ‘E|ß372Ž‘]Jå\let\tab@extrasep\arrayextrasep%Ž¡‘E|ß373Ž‘]Jå\tab@normalstrut%Ž¡‘E|ß374Ž‘]Jå\tab@array%Ž¡‘E|ß375Ž‘Sª®å}Ž¡‘E|ß376Ž‘Sª®å\def\endarray{%Ž¡‘E|ß377Ž‘]Jå\crcr%Ž¡‘E|ß378Ž‘]Jå\egroup%Ž¡‘E|ß379Ž‘]Jå\tab@right%Ž¡‘E|ß380Ž‘]Jå\tab@restorehlstate%Ž¡‘E|ß381Ž‘Sª®å}Ž©‘5smarrayŽŽŽ‘I¹Noš¸èw–M for“something“a“little“dieren˜t.‘nÏThe“Ýsma˜rra˜y‘p˜¹en˜vironmen˜t“giv˜es“y˜ou“an“arra˜yŽŸ ‘Iwith–U lots“of“small“text.ŽŸ‘E|ß382Ž‘Sª®å\def\smarray{%Ž¡‘E|ß383Ž‘]Jå\extrarowheight\z@%Ž¡‘E|ß384Ž‘]Jå\col@sep\smarraycolsep%Ž¡‘E|ß385Ž‘]Jå\let\tab@extrasep\smarrayextrasep%Ž¡‘E|ß386Ž‘]Jå\def\tab@bmaths{$\scriptstyle}%Ž¡‘E|ß387Ž‘]Jå\def\tab@btext{\begingroup\scriptsize}%Ž¡‘E|ß388Ž‘]Jå\setbox\z@\hbox{\scriptsize\strut}%Ž¡‘E|ß389Ž‘]Jå\dimen@\ht\z@\dimen\tw@\dp\z@\tab@setstrut%Ž¡‘E|ß390Ž‘]Jå\tab@array%Ž¡‘E|ß391Ž‘Sª®å}Ž¡‘E|ß392Ž‘Sª®å\let\endsmarray\endarrayŽ¦‘Âô\tabstyleŽŽŽ‘I¹This–Þuis“a“little“hošGok“that“do˜cumen¸èt“designers“can“use“to“mo˜dify“the“app˜earanceŽ¤ ‘Iof–ËNtables“throughout“a“doGcumenš¸èt.‘Ô F‘ÿ*¸or“example,‘èÙI'v˜e“set“it“to“mak˜e“the“text“sizeŽ¡‘IÜ\small–„o¹in“all“tables“in“this“doGcumen¸èt.‘ÿlMacro“writers“shouldn't“try“to“use“it“as“aŽ¡‘IhoGok–¥Ðfor“their“oš¸èwn“evilness,‘Èàthough.‘7I'v˜e“used“Ü\providecommand“¹to“a˜v˜oid“nobblingŽ¡‘Ian–U existing“denition.ŽŸ‘E|ß393Ž‘Sª®å\providecommand\tabstyle{}Ž¦‘Âô\@tabularŽŽŽ‘I¹The›Ùät•¸èw“o˜Ýtabula“r‘ýp¹en“vironmen“ts˜share˜lots˜of˜common˜coGde,‘ò‰so˜w“e˜separate˜that˜out.Ž¡‘I(This–™Xneeds“to“bšGe“done“b˜etter.)‘>'All“w¸èe“really“do“here“is“set“up“the“Ü\tab@bgroupŽ¡‘I¹and–U Ü\tab@egroup“¹to“lošGcalise“things“prop˜erly‘ÿ*¸,“and“then“go.ŽŸ‘E|ß394Ž‘Sª®å\def\@tabular#1{%Ž¤ ‘E|ß395Ž‘]Jå\tabstyle%Ž¡‘E|ß396Ž‘]Jå\tab@width#1%Ž¡‘E|ß397Ž‘]Jå\let\tab@bgroup\tab@btext%Ž¡‘E|ß398Ž‘]Jå\let\tab@egroup\tab@etext%Ž¡‘E|ß399Ž‘]Jå\col@sep\tabcolsep%Ž¡‘E|ß400Ž‘]Jå\let\tab@extrasep\tabextrasep%Ž¡‘E|ß401Ž‘]Jå\tab@normalstrut%Ž¡‘E|ß402Ž‘]Jå\@tabarray%Ž¡‘E|ß403Ž‘Sª®å}Ž¦‘5tabularŽŽŸ ‘|Btabular*ŽŽŽŽŽ‘I¹These›U en•¸èvironmen“ts˜just˜call˜a˜macro˜whic“h˜doGes˜all˜the˜common˜stu.ŽŸ‘E|ß404Ž‘Sª®å\def\tabular{\@tabular\z@}Ž¡‘E|ß405Ž‘Sª®å\expandafter\let\csname‘¹Ntabular*\endcsname\@tabularŽ¡‘E|ß406Ž‘Sª®å\let\endtabular\endarrayŽ¡‘E|ß407Ž‘Sª®å\expandafter\let\csname‘¹Nendtabular*\endcsname\endarrayŽŽŸ’õ€P¹40ŽŽŒ‹)h¬ ª ýs o ý´‘IÙ2.14.2Ž‘qáSetting–Õthe“strut“heigh®>tŽŸtî‘ݼå\tab@setstrutŽŽŽ‘I¹W‘ÿ*¸e–‰…use“a“magical“strut,›–žcalled“Ü\@arstrut¹,˜whicš¸èh“k˜eeps“the“table“from“collapsingŽ¤ ‘Iaround–U our“heads.‘q€This“is“where“w¸èe“set“it“up.Ž¡‘XIt–¢bases“the“arraš¸èy“strut“size“on“the“giv˜en“v‘ÿqÐalues“of“Ü\dimen@“¹and“Ü\dimen\tw@¹,Ž¡‘Iamended–U b¸èy“v›ÿqÐarious“appropriate“ddle“v˜alues“added“in“b¸èy“v˜arious“pGeople.Ž©Ä6‘E|ß408Ž‘Sª®å\def\tab@setstrut{%Ž¤ ‘E|ß409Ž‘]Jå\setbox\@arstrutbox\hbox{%Ž¡‘E|ß410Ž‘fæå\vrule%Ž¡‘E|ß411Ž‘p‚å\@height\arraystretch\dimen@%Ž¡‘E|ß412Ž‘p‚å\@depth\arraystretch\dimen\tw@%Ž¡‘E|ß413Ž‘p‚å\@width\z@%Ž¡‘E|ß414Ž‘]Jå}%Ž¡‘E|ß415Ž‘Sª®å}ŽŸ¦Q‘ó±Ò\tab@normalstrutŽŽŽ‘I¹This–U sets“the“strut“the“normal“w•¸èa“y‘ÿ*¸,–U from“the“size“of“Ü\strutbox¹.Ž¦‘E|ß416Ž‘Sª®å\def\tab@normalstrut{%Ž¡‘E|ß417Ž‘]Jå\dimen@\ht\strutbox\advance\dimen@\extrarowheight%Ž¡‘E|ß418Ž‘]Jå\dimen\tw@\dp\strutbox%Ž¡‘E|ß419Ž‘]Jå\tab@setstrut%Ž¡‘E|ß420Ž‘Sª®å}ŽŸã‘IÙ2.14.3Ž‘qáSetting–Õup“the“alignmen®>tŽŸtî‘I¹The–U folloš¸èwing“bits“are“mainly“for“other“pac˜k‘ÿqÐages“to“hoGok“themselv˜es“on˜to.Ž¦‘E|ß421Ž‘Sª®å\let\@arrayleft\relax%Ž¡‘E|ß422Ž‘Sª®å\let\@arrayright\relax%Ž¦‘E|ß423Ž‘Sª®å\def\@tabarray{%Ž¡‘E|ß424Ž‘]Jå\let\@arrayleft\relax%Ž¡‘E|ß425Ž‘]Jå\let\@arrayright\relax%Ž¡‘E|ß426Ž‘]Jå\@ifnextchar[\@array{\@array[c]}%Ž¡‘E|ß427Ž‘Sª®å}ŽŸ¦Q‘5\@arrayŽŽŽ‘I¹The–ï±Ü\@array“¹macro“doGes“most“of“the“real“wš¸èork“for“the“en˜vironmen˜ts.‘A4The“rstŽ¤ ‘Ijob–PUis“to“set“up“the“roš¸èw“strut,‘QJwhic˜h“k˜eeps“the“table“ro˜ws“at“the“righ˜t“heigh˜t.‘oçW‘ÿ*¸eŽ¡‘Ijust–& takš¸èe“the“normal“strut“bGo˜x,‘Z`and“extend“its“heigh˜t“b˜y“the“Ü\extrarowheightŽ¡‘I¹length‘U parameter.Ž¦‘E|ß428Ž‘Sª®å\def\@array[#1]#2{%ŽŸÄ6‘X¹Sort–±mout“the“hline“state“v›ÿqÐariable.‘:ïW‘ÿ*¸e'll“store“the“old“v˜alue“in“a“con¸ètrol“sequenceŽ¡‘Ito›U a•¸èv“oid˜w“asting˜an“y˜more˜coun“t˜registers.Ž¦‘E|ß429Ž‘]Jå\edef\tab@restorehlstate{%Ž¤ ‘E|ß430Ž‘fæå\global\tab@endheight\the\tab@endheight%Ž¡‘E|ß431Ž‘fæå\gdef\noexpand\tab@hlstate{\tab@hlstate}%Ž¡‘E|ß432Ž‘]Jå}%Ž¡‘E|ß433Ž‘]Jå\def\tab@hlstate{n}%ŽŸÄ6‘X¹No•¸èw›kw“e˜read˜the˜pream“ble.‘#}All˜the˜clev“er˜things˜w“e'v“e˜already˜done˜are˜terriblyŽ¤ ‘Iuseful‘U here.Ž¡‘XThe–î¿Ü\tab@setcr“¹sets“up“Ü\\“¹to“bGe“a“newline“evš¸èen“if“users“ha˜v˜e“c˜hanged“it“usingŽ¡‘Isomething–U lik¸èe“Ü\raggedright¹.Ž¦‘E|ß434Ž‘]Jå\colset{tabular}%ŽŽŸ’õ€P¹41ŽŽŒ‹*rÞ ª ýs o ý´‘E|ß435Ž‘]Jå\tab@initread%Ž¤ ‘E|ß436Ž‘]Jå\def\tab@midtext{\tab@setcr\ignorespaces####\@maybe@unskip}%Ž¡‘E|ß437Ž‘]Jå\def\tab@multicol{\@arstrut\tab@startrow}%Ž¡‘E|ß438Ž‘]Jå\tab@preamble{\tab@multicol\tabskip\z@skip}%Ž¡‘E|ß439Ž‘]Jå\tab@readpreamble{#2}%Ž©Þ ‘X¹Set–U up“the“default“tabskip“glue.›q€This“is“easy:˜there“isn't“an¸èy‘ÿ*¸.ŽŸÞ ‘E|ß440Ž‘]Jå\tab@leftskip\z@skip%Ž¡‘E|ß441Ž‘]Jå\tab@rightskip\z@skip%Ž¦‘X¹Noš¸èw–E‚set“up“the“pGositioning“of“the“table.‘B¥This“is“put“in˜to“a“separate“macroŽŸ ‘IbGecause–U it's“rather“complicated.Ž¤Þ ‘E|ß442Ž‘]Jå\tab@setposn{#1}%Ž¦‘X¹No•¸èw›U w“ork˜out˜ho“w˜to˜start˜the˜alignmen“t.Ž¡‘E|ß443Ž‘]Jå\ifdim\tab@width=\z@%Ž¤ ‘E|ß444Ž‘fæå\def\tab@halign{}%Ž¡‘E|ß445Ž‘]Jå\else%Ž¡‘E|ß446Ž‘fæå\def\tab@halign{to\tab@width}%Ž¡‘E|ß447Ž‘]Jå\fi%Ž¦‘X¹Finally‘ÿ*¸,‘£œdo–`¶all“the“normal“things“wš¸èe“need“to“do“bGefore“an“alignmen˜t.‘”CNoteŽ¤ ‘Ithat–Gw¸èe“dene“Ü\tabularnewline“¹rst,‘&Ùthen“set“Ü\\“¹from“that“(using“Ü\tab@setcr¹).Ž¡‘ISince–$ÃÜ\\“¹is“reset“in“the“Ü\tab@midtext“¹of“ev¸èery“table“cell,‘.oit“bGecomes“secondary“toŽ¡‘IÜ\tabularnewline¹.‘©çDoing–½Bthings“this“w•¸èa“y›½Ba“v“oids˜the˜problems˜with˜declarationsŽ¡‘Ilikš¸èe–þpÜ\raggedright“¹whic˜h“redene“Ü\\“¹in“their“o˜wn“(usually“rather“strange)“w˜a˜y‘ÿ*¸,‘ÇsoŽ¡‘Iyš¸èou–½Rdon't“need“to“mess“abGout“with“things“lik˜e“the“Ü\PreserveBackslash“¹commandŽ¡‘Igiv¸èen–U in“the“àLŸýï‘üR&áAŽŽ‘ØÿàT‘þKÞŸ&úEŽ‘ÌñX‘“°Comp‘ÿ}/anion¹.Ž©Þ ‘E|ß448Ž‘]Jå\lineskip\z@\baselineskip\z@%Ž¤ ‘E|ß449Ž‘]Jå\m@th%Ž¡‘E|ß450Ž‘]Jå\def\tabularnewline{\tab@arraycr\tab@penalty}%Ž¡‘E|ß451Ž‘]Jå\tab@setcr%Ž¡‘E|ß452Ž‘]Jå\let\par\@empty%Ž¡‘E|ß453Ž‘]Jå\everycr{}\tabskip\tab@leftskip%Ž¡‘E|ß454Ž‘]Jå\tab@left\halign\tab@halign\expandafter\bgroup%Ž¡‘E|ß455Ž‘fæå\the\tab@preamble\tabskip\tab@rightskip\cr%Ž¡‘E|ß456Ž‘Sª®å}ŽŸÍ0‘X¹Y‘ÿ*¸ou'vš¸èe–Âno“doubt“noticed“the“Ü\tab@left“¹and“Ü\tab@right“¹macros“abGo˜v˜e.‘@TheseŽ¤ ‘Iare–™®set“up“here“and“elsewhere“to“alloš¸èw“other“things“to“gain“con˜trol“at“v‘ÿqÐariousŽ¡‘IpGoinš¸èts–ðqof“the“table“(they“include“and“tak˜e“the“place“of“the“Ü\@arrayleft“¹andŽ¡‘IÜ\@arrayright–U ¹hoGoks“in“Ýa•¸èrra“y¹,–U put“in“for“Ýdela•¸èrra“y#Œ¹'s‘U use.ŽŸîÄ‘IÙ2.14.4Ž‘qáP®>ositioning–Õthe“tableŽŸtî‘— å\tab@setposnŽŽŽ‘I¹This–ã†macro“sets“ev¸èerything“up“for“the“table's“pGositioning.‘K¢It's“rather“long,‘ú>but“notŽ¡‘Iall–U that“complicated.‘q€Honest.Ž¡‘XFirst,‘„"wš¸èe–z»set“up“some“defaults“(for“cen˜tring).‘âQIf“an˜ything“goGes“wrong,‘„"w˜e“justŽ¡‘Ido–U the“cen¸ètring“things.Ž¦‘E|ß457Ž‘Sª®å\def\tab@setposn#1{%Ž¤ ‘E|ß458Ž‘]Jå\def\tab@left{%Ž¡‘E|ß459Ž‘fæå\savenotes%Ž¡‘E|ß460Ž‘fæå\leavevmode\hbox\bgroup$\@arrayleft\vcenter\bgroup%ŽŽŸ’õ€P¹42ŽŽŒ‹+}! ª ýs o ý´‘E|ß461Ž‘]Jå}%Ž¤ ‘E|ß462Ž‘]Jå\def\tab@right{%Ž¡‘E|ß463Ž‘fæå\egroup%Ž¡‘E|ß464Ž‘fæå\m@th\@arrayright$\egroup%Ž¡‘E|ß465Ž‘fæå\spewnotes%Ž¡‘E|ß466Ž‘]Jå}%Ž¡‘E|ß467Ž‘]Jå\global\tab@endheight\z@%Ž©€‘X¹F‘ÿ*¸or–Àthe“standard“pšGositioning“things,‘lw¸èe“just“do“appropriate“b˜o¸èxing“things.Ž¤ ‘INote–ªúthat“the“dollar“signs“are“impGortanš¸èt,‘psince“Ýdela˜rra˜y‘Ά¹migh˜t“w˜an˜t“to“put“itsŽ¡‘Idelimiters–U in“here.Ž¡‘XThe–qŽÜ\if@tempswa“¹switcš¸èh“it“used“to“decide“if“w˜e're“doing“an“un˜bGo˜xed“tabular.Ž¡‘IW‘ÿ*¸e'll–V±set“it“if“wš¸èe“nd“an“un˜b•Go˜x-t˜yp“e›V±p“osition˜co“de,‘‰”and˜then˜c•¸èhec“k˜that˜ev“erything'sŽ¡‘IOK–U for“this.ŽŸ€‘E|ß468Ž‘]Jå\@tempswafalse%Ž¤ ‘E|ß469Ž‘]Jå\let\tab@penalty\relax%Ž¡‘E|ß470Ž‘]Jå\if#1t%Ž¡‘E|ß471Ž‘fæå\def\tab@left{%Ž¡‘E|ß472Ž‘p‚å\savenotes%Ž¡‘E|ß473Ž‘p‚å\leavevmode\setbox\z@\hbox\bgroup$\@arrayleft\vtop\bgroup%Ž¡‘E|ß474Ž‘fæå}%Ž¡‘E|ß475Ž‘fæå\def\tab@right{%Ž¡‘E|ß476Ž‘p‚å\egroup%Ž¡‘E|ß477Ž‘p‚å\m@th\@arrayright$\egroup%Ž¡‘E|ß478Ž‘p‚å\tab@raisebase%Ž¡‘E|ß479Ž‘p‚å\spewnotes%Ž¡‘E|ß480Ž‘fæå}%Ž¡‘E|ß481Ž‘fæå\gdef\tab@hlstate{t}%Ž¡‘E|ß482Ž‘fæå\global\tab@endheight\ht\@arstrutbox%Ž¡‘E|ß483Ž‘]Jå\else\if#1b%Ž¡‘E|ß484Ž‘fæå\def\tab@left{%Ž¡‘E|ß485Ž‘p‚å\savenotes%Ž¡‘E|ß486Ž‘p‚å\leavevmode\setbox\z@\hbox\bgroup$\@arrayleft\vbox\bgroup%Ž¡‘E|ß487Ž‘fæå}%Ž¡‘E|ß488Ž‘fæå\def\tab@right{%Ž¡‘E|ß489Ž‘p‚å\egroup%Ž¡‘E|ß490Ž‘p‚å\m@th\@arrayright$\egroup%Ž¡‘E|ß491Ž‘p‚å\tab@lowerbase%Ž¡‘E|ß492Ž‘p‚å\spewnotes%Ž¡‘E|ß493Ž‘fæå}%Ž¡‘E|ß494Ž‘fæå\gdef\tab@hlstate{b}%Ž¡‘E|ß495Ž‘]Jå\else%Ž¡‘E|ß496Ž‘fæå\if#1L\@tempswatrue\fi%Ž¡‘E|ß497Ž‘fæå\if#1C\@tempswatrue\fi%Ž¡‘E|ß498Ž‘fæå\if#1R\@tempswatrue\fi%Ž¡‘E|ß499Ž‘]Jå\fi\fi%Ž¦‘X¹Noš¸èw–ÅÆfor“some“tests“to“mak˜e“sure“w˜e're“allo˜w˜ed“to“do“the“un˜bGo˜xing.‘A¸W‘ÿ*¸e“text“forŽ¤ ‘IÜ\@arrayleft–ä¹bšGeing“dened,‘Õb˜ecause“p˜eople“trying“to“ho˜ok“us“w¸èon't“understandŽ¡‘Iun•¸èbGo“xed‘U tabulars.ŽŸ€‘E|ß500Ž‘]Jå\if@tempswa\ifhmode%Ž¤ ‘E|ß501Ž‘fæå\ifinner\tab@err@unbrh\@tempswafalse\else\par\fi%Ž¡‘E|ß502Ž‘]Jå\fi\fi%Ž¡‘E|ß503Ž‘]Jå\if@tempswa\ifmmode\tab@err@unbmm\@tempswafalse\fi\fi%ŽŽŸ’õ€P¹43ŽŽŒ‹,ˆ¯ ª ýs o ý´‘E|ß504Ž‘]Jå\if@tempswa\ifx\@arrayleft\relax\else%Ž¤ ‘E|ß505Ž‘fæå\tab@err@unbext\@tempswafalse%Ž¡‘E|ß506Ž‘]Jå\fi\fi%Ž©‘X¹Finally‘ÿ*¸,‘î‘if–œ­wš¸èe're“still“doing“an“un˜bGo˜xed“alignmen˜t,‘î‘w˜e“need“to“sort“out“theŽ¤ ‘Ispacing.‘ppW‘ÿ*¸e–Qñknoš¸èw“that“no-one's“tried“to“hoGok“on“to“the“en˜vironmen˜t,‘R”so“w˜e“clearŽ¡‘IÜ\tab@left–U ¹and“Ü\tab@right¹.ŽŸ‘E|ß507Ž‘]Jå\if@tempswa%Ž¤ ‘E|ß508Ž‘fæå\def\tab@left{\vskip\parskip\medskip}%Ž¡‘E|ß509Ž‘fæå\def\tab@right{\par\@endpetrue\global\@ignoretrue}%Ž¦‘X¹No•¸èw›ý`w“e˜need˜to˜sort˜out˜the˜alignmen“t.‘jAThe˜only˜w“a“y˜w“e˜can˜do˜this˜is˜b“yŽ¤ ‘Iplaš¸èying–U with“tabskip“glue.‘q€There“are“t˜w˜o“pGossiblities:Ž©‘X¸ŽŽŽ‘b¹If–xwthis“is“a“straighš¸èt“Ýtabula˜r‘œ¹or“an“Ýa˜rra˜y¹,‘ÁMw˜e“just“use“innite“glue.‘Û…This“isŽ¡‘breasonable,–U I“think.ŽŸ‘X¸ŽŽŽ‘b¹If–L)wš¸èe“ha˜v˜e“a“width“for“the“table,‘‰ëw˜e“calculate“the“xed“v‘ÿqÐalues“of“glue“onŽ¡‘beither–U side.‘q€This“is“fairly“easy‘ÿ*¸,“and“forces“the“table“to“the“required“width.Ž¦‘XFirst,‘‹set–&up“the“left“and“righš¸èt“glues“to“represen˜t“the“prev‘ÿqÐailing“margins“set“upŽ¡‘Ib•¸èy‘x¬Ýlist›U ¹en“vironmen“ts.‘q€I˜think˜this˜is˜the˜righ“t˜thing˜to˜do.Ž©‘E|ß510Ž‘fæå\tab@leftskip\@totalleftmargin%Ž¤ ‘E|ß511Ž‘fæå\tab@rightskip\hsize%Ž¡‘E|ß512Ž‘fæå\advance\tab@rightskip-\linewidth%Ž¡‘E|ß513Ž‘fæå\advance\tab@rightskip-\@totalleftmargin%ŽŸ‘X¹First–_fof“all,›¡÷deal“with“the“simple“case.‘RI'm“using“10000‘ª“ll“glue“here,˜in“anŽ¤ ‘Iattempt–fto“suppress“Ü\extracolsep“¹glue“from“making“the“table“the“wrong“width.Ž¡‘IIt–U can“alw•¸èa“ys–U use“lll“glue“if“it“really“needs“to,“though.Ž¦‘E|ß514Ž‘fæå\ifdim\tab@width=\z@%Ž¤ ‘E|ß515Ž‘p‚å\if#1L\else\advance\tab@leftskip\z@\@plus10000fill\fi%Ž¡‘E|ß516Ž‘p‚å\if#1R\else\advance\tab@rightskip\z@\@plus10000fill\fi%ŽŸ‘X¹No¸èw–ßófor“the“fun“bit.›øThis“isn't“toGo“hard“really‘ÿ*¸.˜The“extra“space“I‘ßÏm¸èust“addŽ¤ ‘Iaround–Âthe“table“adds“up“to“Ü\linewidthŽ‘:Á ¸‘ÙÜ\tab@widthŽ‘6þ‘¹.‘¹ÎI‘Âsjust“need“to“add“thisŽ¡‘Ion¸èto–U the“appropriate“sides“of“the“table.Ž¦‘E|ß517Ž‘fæå\else%Ž¤ ‘E|ß518Ž‘p‚å\dimen@\linewidth%Ž¡‘E|ß519Ž‘p‚å\advance\dimen@-\tab@width%Ž¡‘E|ß520Ž‘p‚å\if#1L\advance\tab@rightskip\dimen@\fi%Ž¡‘E|ß521Ž‘p‚å\if#1R\advance\tab@leftskip\dimen@\fi%Ž¡‘E|ß522Ž‘p‚å\if#1C%Ž¡‘E|ß523Ž‘yuå\advance\tab@leftskip.5\dimen@%Ž¡‘E|ß524Ž‘yuå\advance\tab@rightskip.5\dimen@%Ž¡‘E|ß525Ž‘p‚å\fi%Ž¡‘E|ß526Ž‘fæå\fi%ŽŸ‘X¹Don't–Zßalloš¸èw“page“breaks.‘‚¾Da˜vid“Carlisle's“w˜onderful“Ýlongtable“¹pac˜k‘ÿqÐage“doGesŽ¤ ‘Ipage–Ìbreaks“far“bšGetter“than“I‘·could“p˜ossibly“do“here,‘and“w¸èe're“compatible“with“itŽ¡‘I(w¸èahey!).Ž¦‘E|ß527Ž‘fæå\def\tab@penalty{\penalty\@M}%ŽŽŸ’õ€P¹44ŽŽŒ‹-‘ë ª ýs o ý´‘X¹Finally‘ÿ*¸,–U set“the“new“width“of“the“table,“and“lea•¸èv“e.Ž©‘E|ß528Ž‘fæå\tab@width\hsize%Ž¤ ‘E|ß529Ž‘]Jå\fi%Ž¡‘E|ß530Ž‘Sª®å}ŽŸýY‘IÙ2.14.5Ž‘qáHandling–Õtops“and“bQÂottomsŽŸtî‘I¹This–„is“ho¸èw“the“tops“and“bGottoms“of“tables“are“made“to“line“up“with“the“text“onŽ¤ ‘Ithe–Ð*same“line,›êÂin“the“presence“of“arbitrary“rules“and“space.‘E.The“old“methoGd,˜basedŽ¡‘Ion–¤>the“w•¸èa“y–¤>the“Ýa•¸èrra“y‘Çʹpac“k‘ÿqÐage›¤>w“ork“ed,‘Çžw“asn't˜terribly˜go•Go“d.‘6ŠThis˜new˜v¸èersion˜cop“esŽ¡‘Im•¸èuc“h–U bGetter“with“almost“anš¸èything“that“gets“thro˜wn“at“it.Ž¡‘XI'll–Їkš¸èeep“a“state“in“a“macro“(Ü\tab@hlstate¹),‘ïawhic˜h“tells“me“what“I'm“mean˜tŽ¡‘Ito–FJbšGe“doing.‘DþThe“p˜ossible“v‘ÿqÐalues“are“`Ün¹'Ž‘Ö,‘‚•whicš¸èh“means“I‘F don't“ha˜v˜e“to“do“an˜y-Ž¡‘Ithing,‘m`Üt¹'Ž‘ âù,‘mwhicš¸èh–€means“that“I'm“mean˜t“to“bGe“handling“top-aligned“tables,‘mand“`Üb¹'Ž‘ Ó ,Ž¡‘Iwhicš¸èh–Wgmeans“that“I'm“mean˜t“to“bšGe“lining“up“the“b˜ottom.‘xTThere“are“sev¸èeral“otherŽ¡‘I`substates'–U whicš¸èh“ha˜v˜e“v‘ÿqÐarious“magic“meanings.Ž¦‘E|ß531Ž‘Sª®å\def\tab@hlstate{n}ŽŸ‘X¹When–¼}all's“said“and“done,‘ÛI‘¼Vextract“the“bGoš¸èx“con˜taining“the“table,‘Ûand“pla˜y“withŽ¡‘Ithe–U heighš¸èt“and“depth“to“try“and“mak˜e“it“correct.ŽŸ‘ê?6å\tab@addruleheightŽŽŽ‘I¹This–§„macro“is“called“bš¸èy“`in˜ter-ro˜w'“things“to“add“their“heigh˜t“to“our“dimen“register.Ž¡‘XOnly–U do“this“if“the“state“indicates“that“it's“sensible.Ž¦‘E|ß532Ž‘Sª®å\def\tab@addruleheight#1{%Ž¤ ‘E|ß533Ž‘]Jå\if\tab@hlstate‘¹Nn\else%Ž¡‘E|ß534Ž‘fæå\global\advance\tab@endheight#1\relax%Ž¡‘E|ß535Ž‘]Jå\fi%Ž¡‘E|ß536Ž‘Sª®å}ŽŸ‘ݼ\tab@startrowŽŽŽ‘I¹This–›øis“called“at“the“start“of“a“roš¸èw,‘Áfrom“within“the“arra˜y“pream˜ble.‘3ÈCurren˜tly‘ÿ*¸,‘ÁthisŽ¤ ‘Iassumes–Èthat“the“ro¸èws“aren't“bigger“than“their“struts:‘HTthis“is“reasonable,‘@althoughŽ¡‘Isligh¸ètly–fnlimiting,‘jÂand“it“could“bšGe“done“b˜etter“if“I‘fjwš¸èas“willing“to“rip“the“alignmen˜tŽ¡‘Iapart–U and“put“it“bac¸èk“together“again.Ž¦‘E|ß537Ž‘Sª®å\def\tab@startrow{%Ž¤ ‘E|ß538Ž‘]Jå\if\tab@hlstate‘¹Nt%Ž¡‘E|ß539Ž‘fæå\gdef\tab@hlstate{n}%Ž¡‘E|ß540Ž‘]Jå\else\if\tab@hlstate‘¹Nb%Ž¡‘E|ß541Ž‘fæå\global\tab@endheight\dp\@arstrutbox%Ž¡‘E|ß542Ž‘]Jå\fi\fi%Ž¡‘E|ß543Ž‘Sª®å}ŽŸ‘ý$n\tab@raisebaseŽŽŽ‘I¹This–ßÛmacro“is“called“at“the“end“of“it“all,‘‰to“set“the“heighš¸èt“and“depth“of“the“bGo˜xŽ¤ ‘Icorrectly‘ÿ*¸.‘SMIt–ú‡sets“the“heighš¸èt“to“Ü\tab@endheight¹,‘ ¥and“the“depth“to“ev˜erything“else.Ž¡‘IThe–U bGoš¸èx“is“in“Ü\box“¹0“curren˜tly‘ÿ*¸.Ž¦‘E|ß544Ž‘Sª®å\def\tab@raisebase{%Ž¤ ‘E|ß545Ž‘]Jå\global\advance\tab@endheight-\ht\z@%Ž¡‘E|ß546Ž‘]Jå\raise\tab@endheight\box\z@%Ž¡‘E|ß547Ž‘Sª®å}ŽŸ‘ý$n\tab@lowerbaseŽŽŽ‘I¹And,–U for“symmetry's“sakš¸èe,“here's“ho˜w“to“set“the“bšGottom“prop˜erly“instead.Ž¦‘E|ß548Ž‘Sª®å\def\tab@lowerbase{%ŽŽŸ’õ€P¹45ŽŽŒ‹.u ª ýs o ý´‘E|ß549Ž‘]Jå\global\advance\tab@endheight-\dp\z@%Ž¤ ‘E|ß550Ž‘]Jå\lower\tab@endheight\box\z@%Ž¡‘E|ß551Ž‘Sª®å}Ž©ýY‘Iâ2.15Ž‘n}¨Breaking–¸tables“in to“bitsŽŸtî‘I¹Un•¸èbGo“xed–ëtables“ha•¸èv“e–ëa“wš¸èonderful“adv‘ÿqÐan˜tage“o˜v˜er“bGo˜xed“ones:‘æy˜ou“can“stop“halfw˜a˜yŽ¤ ‘Ithrough–U and“do“something“else“for“a“bit.‘q€Here's“ho¸èw:ŽŸ‘Âôå\tabpauseŽŽŽ‘I¹I'd–™èlikš¸èe“to“a˜v˜oid“forbidding“catcoGde“c˜hanges“here.‘?ØI'll“use“Ü\doafter“¹no˜w“I'v˜e“gotŽ¡‘Iit,‘Ð!to–®âensure“that“colour“handling“and“things“oGccur“àinside‘o1¹the“Ü\noalign“¹(otherwiseŽ¡‘Ithey'll–U mess“up“the“alignmenš¸èt“v˜ery“seriously).Ž¡‘XW‘ÿ*¸e›ü0ha•¸èv“e˜to˜bGe˜careful˜here˜to˜ensure˜that˜ev“erything˜w“orks˜correctly˜withinŽ¡‘Ilists.‘13(The–ê\Ýamsmath“¹pac¸èk‘ÿqÐage“had“this“problem“in“its“Ü\intertext“¹macro,‘ªso“I'mŽ¡‘Inot–U alone“here.)ŽŸ‘E|ß552Ž‘Sª®å\def\tabpause#{%Ž¤ ‘E|ß553Ž‘]Jå\noalign{\ifnum0=`}\fi%Ž¡‘E|ß554Ž‘]Jå\@parboxrestore%Ž¡‘E|ß555Ž‘]Jå\tab@startpause%Ž¡‘E|ß556Ž‘]Jå\vskip-\parskip%Ž¡‘E|ß557Ž‘]Jå\parshape\@ne\@totalleftmargin\linewidth%Ž¡‘E|ß558Ž‘]Jå\noindent%Ž¡‘E|ß559Ž‘]Jå\doafter\tabpause@i%Ž¡‘E|ß560Ž‘Sª®å}Ž¡‘E|ß561Ž‘Sª®å\def\tabpause@i{%Ž¡‘E|ß562Ž‘]Jå\nobreak%Ž¡‘E|ß563Ž‘]Jå\tab@endpause%Ž¡‘E|ß564Ž‘]Jå\ifnum0=`{\fi}%Ž¡‘E|ß565Ž‘Sª®å}Ž¦‘Iâ2.16Ž‘n}¨The–¸wš onderful“w˜orld“of‘ºOëG\multicolumnŽŸtî‘— å\multicolumnŽŽŽ‘I¹This–PËis“actually“fanš¸ètasitcally“easy–ÿ*¸.‘ d€W“atc˜h–PËand“learn.‘ d€Mak˜e“sure“y˜ou“noticeŽ¤ ‘Ithe–2ÊÜ\long¹s“here:‘,Órememš¸èbGer“that“some“table“cells“can“con˜tain“paragraphs,‘j4so“itŽ¡‘Iseems–Qsensible“to“alloš¸èw“Ü\par“¹in˜to“the“argumen˜t.‘¦(As“far“as“I‘ kno˜w,‘@]most“otherŽ¡‘IÜ\multicolumn–¦¹commands“don't“do“this,›ºSwhic¸èh“seems“a“little“silly‘ÿ*¸.‘daThen“again,˜IŽ¡‘Iforgot–U to“do“it“the“rst“time“around.)ŽŸ‘E|ß566Ž‘Sª®å\long\def\multicolumn#1#2#3{%Ž¤ ‘E|ß567Ž‘]Jå\multispan{#1}%Ž¡‘E|ß568Ž‘]Jå\begingroup%Ž¡‘E|ß569Ž‘fæå\tab@multicol%Ž¡‘E|ß570Ž‘fæå\tab@initread%Ž¡‘E|ß571Ž‘fæå\tab@preamble{}%Ž¡‘E|ß572Ž‘fæå\long\def\tab@midtext{#3}%Ž¡‘E|ß573Ž‘fæå\let\tab@looped\tab@err@multi%Ž¡‘E|ß574Ž‘fæå\tab@readpreamble{#2}%Ž¡‘E|ß575Ž‘fæå\the\tab@preamble%Ž¡‘E|ß576Ž‘]Jå\endgroup%Ž¡‘E|ß577Ž‘]Jå\ignorespaces%Ž¡‘E|ß578Ž‘Sª®å}ŽŽŸ’õ€P¹46ŽŽŒ‹/©| ª ýs o ý´‘Iâ2.17Ž‘n}¨In terlude:‘ÿ range‘¸listsŽŸtî‘I¹F‘ÿ*¸or–• proGcessing“argumenš¸èts“to“Ü\vgap“¹and“Ü\cline¹,‘¥w˜e“need“to“bGe“able“to“do“thingsŽ¤ ‘Iwith–0lists“of“column“ranges.‘UÛT‘ÿ*¸o“sa•¸èv“e–0space,‘Æand“to“makš¸èe“m˜y“ngers“do“less“t˜yping,Ž¡‘Ihere's–U some“routines“whic¸èh“do“range“handling.ŽŸñø‘5å\rangesŽŽŽ‘I¹Givš¸èen–¥Oa“macro“name“and“a“comma“separated“list“of“ranges“and“simple“n˜um˜bGers,Ž¡‘Ithis–¡¥macro“will“call“the“macro“giving“it“eac¸èh“range“in“the“list“in“turn.‘WSingleŽ¡‘In•¸èum“bšGers–U µn“¹will“b˜e“turned“in¸èto“ranges“µn¹µn¹.Ž¡‘XThe–“¯rst“job“is“to“read“the“macro“to“do“(whicš¸èh“ma˜y“already“ha˜v˜e“some“argu-Ž¡‘Imen•¸èts›Nattac“hed˜to˜it).‘ W‘ÿ*¸e'll˜also˜start˜a˜group˜to˜mak“e˜sure˜that˜our˜c“hanges˜toŽ¡‘Itemp–U registers“don't“aect“an•¸èy“one‘U else.Ž¡‘XThere's–S.a“space“bšGefore“the“delimiting“Ü\q@delim“¹to“stop“n•¸èum“b˜ers–S.b˜eing“parsedŽ¡‘Ito–ó{far“and“expanding“our“quark“(whicš¸èh“will“stop“T‘þUYŸ&úEŽ‘ã9X“dead“in“its“trac˜ks).‘PôSince“w˜eŽ¡‘Iuse–U Ü\@ifnextchar“¹to“lošGok“ahead,“spaces“in“range“lists“are“p˜erfectly“all“righ¸èt.Ž©ö¥‘E|ß579Ž‘Sª®å\def\ranges#1#2{%Ž¤ ‘E|ß580Ž‘]Jå\gdef\ranges@temp{#1}%Ž¡‘E|ß581Ž‘]Jå\begingroup%Ž¡‘E|ß582Ž‘]Jå\ranges@i#2‘¹N\q@delim%Ž¡‘E|ß583Ž‘Sª®å}ŽŸö¥‘X¹W›ÿ*¸e're–¼at“the“bGeginning“of“the“list.‘\´W˜e“expGect“either“the“closing“mark¸èer“(if“thisŽŸ ‘Iis–U an“emptš¸èy“list)“or“a“n˜um˜bGer,“whic˜h“w˜e“can“scoGop“up“in˜to“a“scratc˜h“register.Ž¦‘E|ß584Ž‘Sª®å\def\ranges@i{%Ž¡‘E|ß585Ž‘]Jå\@ifnextchar\q@delim\ranges@done{\afterassignment\ranges@ii\count@}%Ž¡‘E|ß586Ž‘Sª®å}ŽŸö¥‘X¹W‘ÿ*¸e'vš¸èe–w{read“the“rst“n˜um˜bGer“in“the“range.‘Ø’If“there's“another“n˜um˜bGer,‘Àw˜e'llŽ¤ ‘IexpšGect–Þ€a“`Ü-¹'“sign“to“b˜e“next.‘IöIf“there“is“no“`Ü-¹',‘ö:call“the“user's“co˜de“with“the“n•¸èum“b˜erŽ¡‘Iduplicated–U and“then“do“the“rest“of“the“list.Ž¦‘E|ß587Ž‘Sª®å\def\ranges@ii{%Ž¤ ‘E|ß588Ž‘]Jå\@ifnextchar-\ranges@iii{\ranges@do\count@\count@\ranges@v}%Ž¡‘E|ß589Ž‘Sª®å}Ž¤ö¥‘X¹No•¸èw›Kûw“e˜strip˜the˜`Ü-¹'˜o˜and˜read˜the˜other˜n“um“bGer˜in“to˜a˜tempGorary˜register.Ž¦‘E|ß590Ž‘Sª®å\def\ranges@iii-{\afterassignment\ranges@iv\@tempcnta}Ž¡‘X¹W‘ÿ*¸e›ÇTha•¸èv“e˜bGoth˜ends˜of˜the˜range˜no“w,–ãáso˜call˜the˜user's˜coGde,“passing˜it˜bGothŽŸ ‘Iends–U of“the“range.Ž¦‘E|ß591Ž‘Sª®å\def\ranges@iv{\ranges@do\count@\@tempcnta\ranges@v}Ž¡‘X¹W‘ÿ*¸e'vš¸èe–uDnished“doing“an“item“no˜w.‘ÑíIf“w˜e“ha˜v˜e“a“`Ü,¹'“next,‘}Nthen“start“o˜v˜er“withŽ¤ ‘Ithe–„¥next“item.‘Otherwise,›Іif“w¸èe're“at“the“end“of“the“list,˜w¸èe“can“end“happily‘ÿ*¸.Ž¡‘IFinally‘ÿ*¸,–U if“w¸èe're“totally“confused,“raise“an“error.Ž¦‘E|ß592Ž‘Sª®å\def\ranges@v{%Ž¤ ‘E|ß593Ž‘]Jå\@ifnextchar,%Ž¡‘E|ß594Ž‘fæå\ranges@vi%Ž¡‘E|ß595Ž‘fæå{%Ž¡‘E|ß596Ž‘p‚å\@ifnextchar\q@delim%Ž¡‘E|ß597Ž‘yuå\ranges@done%Ž¡‘E|ß598Ž‘yuå{\tab@err@range\ranges@vi,}%Ž¡‘E|ß599Ž‘fæå}%Ž¡‘E|ß600Ž‘Sª®å}ŽŽŸ’õ€P¹47ŽŽŒ‹0³! ª ýs o ý´‘X¹W‘ÿ*¸e–U had“a“comma,“so“gobble“it,“read“the“next“n•¸èum“bGer,–U and“go“round“again.Ž©é‘E|ß601Ž‘Sª®å\def\ranges@vi,{\afterassignment\ranges@ii\count@}ŽŸé‘X¹Here's–ö¹hoš¸èw“w˜e“call“the“user's“coGde,‘ ›no˜w.‘R W‘ÿ*¸e“close“the“group,‘ ›so“that“the“user'sŽ¤ ‘Ico•Gde›6Gdo“esn't˜ha•¸èv“e˜to˜do˜global˜things˜to˜remem“bGer˜its˜results,‘#2\else%Ž¡‘E|ß604Ž‘fæå\expandafter\endgroup%Ž¡‘E|ß605Ž‘fæå\expandafter\ranges@temp%Ž¡‘E|ß606Ž‘fæå\expandafter{%Ž¡‘E|ß607Ž‘fæå\the\expandafter#1%Ž¡‘E|ß608Ž‘fæå\expandafter}%Ž¡‘E|ß609Ž‘fæå\expandafter{%Ž¡‘E|ß610Ž‘fæå\the#2%Ž¡‘E|ß611Ž‘fæå}%Ž¡‘E|ß612Ž‘fæå\begingroup%Ž¡‘E|ß613Ž‘]Jå\fi%Ž¡‘E|ß614Ž‘Sª®å}ŽŸé‘X¹And–´nishing“the“scan“is“really“easy–ÿ*¸.‘ª#2“\else\@tempswatrue\fi\fi%Ž¡‘E|ß628Ž‘Sª®å}ŽŸó‘Iâ2.18Ž‘n}¨Horizon tal–¸rules“OKŽ¤tî‘I¹This–Ais“where“all“the“gubbins“for“Ü\vgap“¹and“friends“is“kš¸èept,‘JIlest“it“con˜taminateŽ© ‘Ifairly–U clean“bits“of“coGde“found“elsewhere.ŽŸó‘IÙ2.18.1Ž‘qáDra•®>wing›Õhorizon“tal˜rulesŽ¡‘"îÞå\hlineŽŽŽ‘I¹Note–K÷the“funnš¸èy“use“of“Ü\noalign“¹to“allo˜w“T‘þUYŸ&úEŽ‘ã9X“stomac˜h“ops“lik˜e“Ü\futurelet“¹withoutŽ¦‘Istarting–[a“new“table“ro¸èw.‘_?This“lets“us“see“if“there's“another“Ü\hline“¹coming“up,‘)OsoŽ¦‘Iwš¸èe–U can“see“if“w˜e“need“to“insert“extra“v˜ertical“space.ŽŽŸ’õ€P48ŽŽŒ‹1¿d ª ýs o ý´‘E|ß629Ž‘Sª®å\def\hline{%Ž¤ ‘E|ß630Ž‘]Jå\tab@dohline%Ž¡‘E|ß631Ž‘]Jå\noalign{\ifnum0=`}\fi%Ž¡‘E|ß632Ž‘]Jå\tab@penalty%Ž¡‘E|ß633Ž‘]Jå\futurelet\@let@token\hline@i%Ž¡‘E|ß634Ž‘Sª®å}ŽŸ Í‘X¹W‘ÿ*¸e›~%c•¸èhec“k˜here˜for˜another˜Ü\hline˜¹command,‘ˆfand˜insert˜glue˜if˜there˜is.‘ìThisŽ© ‘IloGoks–U terrible,“though,“and“Ü\hlx{hvh}“¹is“m•¸èuc“h‘U nicer.‘q€Still.–ª.“.ŽŸ Í‘E|ß635Ž‘Sª®å\def\hline@i{%Ž¡‘E|ß636Ž‘]Jå\ifx\@let@token\hline%Ž¡‘E|ß637Ž‘fæå\vskip\doublerulesep%Ž¡‘E|ß638Ž‘fæå\tab@addruleheight\doublerulesep%Ž¡‘E|ß639Ž‘]Jå\fi%Ž¡‘E|ß640Ž‘]Jå\ifnum0=`{\fi}%Ž¡‘E|ß641Ž‘Sª®å}ŽŸ“4‘— \tab@dohlineŽŽŽ‘I¹This–x*is“where“hlines“actually“get“dra•¸èwn.‘ÚDra“wing–x*lines“is“more“a•¸èwkw“ard‘x*thanŽ¦‘Iit–Ôàused“to“bšGe,‘4Ðparticularly“in“un•¸èb˜o“xed–Ôàtables.‘ðÀIt“used“to“b˜e“a“case“simply“ofŽ¦‘Isa•¸èying›FBÜ\noalign{\hrule}¹.‘7Ho“w“ev“er,‘|nsince˜un“bGo“xed˜tables˜are˜actually˜m“uc“h˜widerŽ¦‘Ithan–•‹they“loGok,‘¥¦this“wš¸èould“mak˜e“the“rules“stretc˜h“righ˜t“across“the“page“and“loGokŽ¦‘Igenerally‘U horrible.Ž¦‘XThe–U solution“is“simple:‘q€wš¸èe“basically“do“a“dirt˜y“big“Ü\cline¹.ŽŸ Í‘E|ß642Ž‘Sª®å\def\tab@dohline{%Ž¡‘E|ß643Ž‘]Jå\multispan{\tab@columns}%Ž¡‘E|ß644Ž‘]Jå\leaders\hrule\@height\arrayrulewidth\hfil%Ž¡‘E|ß645Ž‘]Jå\tab@addruleheight\arrayrulewidth%Ž¡‘E|ß646Ž‘]Jå\cr%Ž¡‘E|ß647Ž‘Sª®å}Ž¤”ª‘IÙ2.18.2Ž‘qáV‘ÿ ºertical‘ÕrulesŽŸtî‘I¹I‘{)couldn't–{ut“these“in“anš¸èywhere“else,‘Å so“they'll“ha˜v˜e“to“go“here.‘ä€I'll“pro˜vide“aŽ¦‘Inew–¸:optional“argumenš¸èt“whic˜h“spGecies“the“width“of“the“rule;‘éÆthis“gets“rid“of“theŽ¦‘Iproblem–¬describGed“in“the“àComp‘ÿ}/anion¹,‘Í×where“to“get“an“unš¸èusually“wide“v˜ertical“rule,Ž¦‘Iy•¸èou›{§ha“v“e˜to˜pla“y˜with˜things˜lik“e˜Ü\vrule‘¬–widthŽ‘B`H¸hàdimen‘ÄU¸iŽ‘gù¡¹whic“h˜really˜isn't˜toGo˜nice.ŽŸ“4‘"îÞå\vlineŽŽŽ‘I¹The–ü%new“Ü\vline“¹has“an“optional“argumenš¸èt“whic˜h“giv˜es“the“width“of“the“rule.‘S×TheŽ¦‘IÜ\relax– ¹stops“T‘þUYŸ&úEŽ‘ã9X“trying“to“parse“a“¸hàrule-sp–ÿ}/e“cic“ation‘ÄU¸iŽ‘WV¹for“toGo“long,‘Ôin“case“some-Ž¦‘Ione–U saš¸èys“something“lik˜e“`Ü\vline‘?¬depthcharges¹'“or“something“equally“unlik˜ely‘ÿ*¸.ŽŸ Í‘E|ß648Ž‘Sª®å\renewcommand\vline[1][\arrayrulewidth]{\vrule\@width#1\relax}Ž¡‘IÙ2.18.3Ž‘qáDra®>wing–Õbits“of“linesŽŸtî‘I¹Just–ófor“a“bit“of“fun,‘here's“an“extended“vš¸èersion“of“Ü\cline“¹whic˜h“tak˜es“a“list“ofŽ¦‘Icolumns–U to“dra¸èw“lines“under,“rather“than“just“a“single“range.ŽŸ“4‘"îÞå\clineŽŽŽ‘I¹Not–±ea“single“line“of“coGde“written“yš¸èet,‘Ò$and“w˜e“already“ha˜v˜e“a“dilemma“on“our“hands.Ž¦‘IMultiple–Ðconsecutivš¸èe“Ü\cline“¹commands“are“mean˜t“to“dra˜w“on“the“same“v˜erticalŽ¦‘Ibit–âof“table.‘K But“horizonš¸ètal“lines“are“mean˜t“to“ha˜v˜e“thic˜kness“no˜w.‘K Oh,‘ùw˜ell“[sigh],Ž¦‘Iwš¸èe'll–U skip“bac˜k“on“it“after“all.Ž¦‘XNoš¸èw–mªthe“problem“remains“ho˜w“bGest“to“do“the“job.‘»The“w˜a˜y“I‘m¤see“it,‘sÌthere“areŽ¦‘Ithree‘U pGossibilities:ŽŽŸ’õ€P49ŽŽŒ‹2Éf ª ýs o ý´‘X¸ŽŽŽ‘b¹W‘ÿ*¸e–Þècan“start“a“table“roš¸èw,‘öand“then“for“eac˜h“column“of“the“table“(as“recordedŽ¤ ‘bin–#?Ü\tab@columns¹)“w¸èe“loGok“to“see“if“that“column“is“listed“in“the“range“listŽ¡‘band–U if“so“dra¸èw“the“rule.‘q€This“requires“lots“of“scanning“of“the“range“list.Ž©O*‘X¸ŽŽŽ‘b¹W‘ÿ*¸e–é”can“takš¸èe“eac˜h“range“in“the“list,‘±and“dra˜w“rules“appropriately‘ÿ*¸,‘±just“lik˜eŽ¡‘bthe–U old“Ü\cline“¹used“to“do,“and“starting“a“new“table“roš¸èw“for“eac˜h.Ž¦‘X¸ŽŽŽ‘b¹W‘ÿ*¸e–é£can“start“a“table“roš¸èw,‘NÃand“then“for“eac˜h“range“remem˜bGer“where“w˜eŽ¡‘bstoppGed–½ƒdraš¸èwing“the“last“ro˜w,‘×›mo˜v˜e“to“the“start“of“the“new“one,‘×›and“dra˜wŽ¡‘bit.‘ÏÞIf–t•wš¸èe“start“mo˜ving“bac˜kw˜ards,‘|rw˜e“close“the“curren˜t“ro˜w“and“opGen“a“newŽ¡‘bone.ŽŸEç‘XThe–plast“option“loGoks“the“most“ecien¸èt,‘×and“the“most“dicult.‘%"This“is“thereforeŽ¡‘Iwhat–U I“shall“do“Ü;-)¹.Ž¡‘XThe–Mrst“thing“to“do“is“to“add“in“a“little“negativš¸èe“space,‘Oand“start“a“table“ro˜wŽ¡‘I(omitting–0athe“rst“item).‘eAThen“scan“the“range“list,‘7»and“nally“close“the“table“ro¸èwŽ¡‘Iand–U add“some“negativ¸èe“space“again.Ž¡‘XW‘ÿ*¸e–Ø¥need“a“global“counš¸èt“register“to“k˜eep“trac˜k“of“where“w˜e“are.‘üMixing“loGcalŽ¡‘Iand–U global“assignmenš¸èts“causes“all“sorts“of“tragedy‘ÿ*¸,“so“I“shall“hijac˜k“Ü\tab@state¹.Ž©O)‘E|ß649Ž‘Sª®å\def\cline#1{%Ž¤ ‘E|ß650Ž‘]Jå\noalign{\kern-.5\arrayrulewidth\tab@penalty}%Ž¡‘E|ß651Ž‘]Jå\omit%Ž¡‘E|ß652Ž‘]Jå\global\tab@state\@ne%Ž¡‘E|ß653Ž‘]Jå\ranges\cline@i{#1}%Ž¡‘E|ß654Ž‘]Jå\cr%Ž¡‘E|ß655Ž‘]Jå\noalign{\kern-.5\arrayrulewidth\tab@penalty}%Ž¡‘E|ß656Ž‘Sª®å}ŽŸO)‘X¹Noš¸èw–Ïqfor“the“tric˜ky“bit.‘àsWhen“w˜e're“giv˜en“a“range,‘îw˜e“loGok“to“see“if“the“rstŽ¤ ‘In•¸èum“bGer–^Kis“less“than“Ü\tab@state¹.‘If“so,‘ •wš¸èe“quic˜kly“close“the“curren˜t“ro˜w,‘ •k˜ernŽ¡‘Ibac•¸èkw“ards–uÛand“start“again“with“an“Ü\omit“¹and“reset“Ü\tab@state“¹to“1,‘¾ and“tryŽ¡‘Iagain.Ž¦‘E|ß657Ž‘Sª®å\def\cline@i#1#2{%Ž¤ ‘E|ß658Ž‘]Jå\ifnum#1<\tab@state\relax%Ž¡‘E|ß659Ž‘fæå\tab@@cr%Ž¡‘E|ß660Ž‘fæå\noalign{\kern-\arrayrulewidth\tab@penalty}%Ž¡‘E|ß661Ž‘fæå\omit%Ž¡‘E|ß662Ž‘fæå\global\tab@state\@ne%Ž¡‘E|ß663Ž‘]Jå\fi%ŽŸO)‘X¹W‘ÿ*¸e–k´are“noš¸èw“either“at“or“in“fron˜t“of“the“column“pGosition“required.‘µ\@ne%Ž¤ ‘E|ß669Ž‘fæå\kern-\arrayrulewidth%Ž¡‘E|ß670Ž‘]Jå\fi%Ž©‘X¹No•¸èw›U w“e˜m“ust˜stretc“h˜this˜table˜cell˜to˜the˜correct˜width.ŽŸ‘E|ß671Ž‘]Jå\@whilenum\tab@state<#2\do{%Ž¡‘E|ß672Ž‘fæå\tab@@span@omit%Ž¡‘E|ß673Ž‘fæå\global\advance\tab@state\@ne%Ž¡‘E|ß674Ž‘]Jå}%Ž¦‘X¹W–ÿ*¸e're›(Bready“.–êçDra¸èw˜the˜rule.“Note˜that˜this˜is˜Ü\hfill˜¹glue,‘] just˜in˜case˜w¸èeŽŸ ‘Istart–U putting“in“Ü\hfil“¹glue“when“wš¸èe“step“on˜to“the“next“cell.ŽŸ‘E|ß675Ž‘]Jå\leaders\hrule\@height\arrayrulewidth\hfill%Ž¡‘E|ß676Ž‘Sª®å}Ž¦‘X¹Some–[ alignmenš¸èt“primitiv˜es“are“hidden“inside“macros“so“they“don't“get“seen“atŽ© ‘Ithe–U wrong“time.‘q€This“is“what“they“loGok“lik¸èe:ŽŸ‘E|ß677Ž‘Sª®å\def\tab@@cr{\cr}Ž¡‘E|ß678Ž‘Sª®å\def\tab@@tab@omit{&\omit}Ž¡‘E|ß679Ž‘Sª®å\def\tab@@span@omit{\span\omit}ŽŸýY‘IÙ2.18.4Ž‘qáDraš®>wing–Õshort“table“ro˜wsŽŸtî‘I¹Before– -I› start“on“a“description“of“more“coGde,‘ÄI˜think“I'll“briey“discuss“m¸èy“reasonsŽ¦‘Ifor–Tžleaš¸èving“the“Ü\vgap“¹command“in“its“curren˜t“state.‘oùThere's“a“reasonable“caseŽ¦‘Ifor–‡inš¸ètroGducing“an“in˜terface“bGet˜w˜een“Ü\vgap“¹and“Ü\multicolumn¹,‘O¡to“a˜v˜oid“all“theŽ¦‘Itedious–‹†messing“abšGout“with“column“ranges.‘±There“are“go˜o˜d“reasons“wh¸èy“I'm“notŽ¦‘Igoing–U to“do“this:ŽŸ‘X¸ŽŽŽ‘b¹It's–uvš¸èery“dicult“to“do:‘¶it“requires“either“p•Gostpro“cessing–uof“the“table“or“dela˜y-Ž¦‘bing–ÒNproGcessing“of“eacš¸èh“ro˜w“un˜til“I‘Ò-kno˜w“exactly“what's“in“it;‘ýéa“Ü\multicolumnŽ¦‘b¹in–‘a“ro¸èw“should“bšGe“able“to“aect“a“Ü\vgap“¹b˜efore“the“ro•¸èw,‘,®whic“h–‘gets“v¸èeryŽ¦‘bnast•¸èy‘ÿ*¸.‘ëmThis›Ópac“k‘ÿqÐage˜is˜probably˜far˜toGo˜large˜already‘ÿ*¸,‘2˜and˜adding˜moreŽ¦‘bcomplexit¸èy–GŽand“running“the“risk“of“exhausting“T‘þUYŸ&úEŽ‘ã9X's“frustratingly“nite“ca-Ž¦‘bpacitš¸èy–Ùfor“the“sak˜e“of“relieving“the“user“of“a“fairly“trivial“job“doGesn't“seemŽ¦‘bw•¸èorth“while.ŽŸ‘X¸ŽŽŽ‘b¹Pš¸èerhaps–Jmore“impGortan˜tly‘ÿ*¸,‘there“are“pšGerfectly“v‘ÿqÐalid“o˜ccasions“when“it's“usefulŽ¦‘bto›àha•¸èv“e˜the˜curren“t˜vgap˜bGeha“viour.‘ %F‘ÿ*¸or˜example,‘Bºthe˜ÜMIX‘ßœ¹w“ord˜la“y“outŽ¦‘bdiagrams–found“in“àThe–A‡A¾˜rt“of“Computer“Pr–ÿ}/o“gr“amming‘ôƒ¹use–the“little“`stubŽ¦‘blines'–U to“shoš¸èw“where“data“items“cross“b˜yte“bGoundaries:ŽŸ $Û’íIþ„ffiŽŽ¤ÌÍ’íIþ„ffŽ’â(„ffŽ’èD„ffŽ’"î`„ffŽ’3ô|„ffŽ’Dú˜„ffŽ’V´„ffŽŽ© =l’Ážäempt¾no˜w“I'll“press“on“with“the“actual“program-Ž¤ ‘Iming.ŽŸ‘ý$nå\tab@checkruleŽŽŽ‘I¹W‘ÿ*¸e›)™ha•¸èv“e˜a˜range˜list˜in˜Ü\tab@xcols˜¹and˜a˜n“um“bGer˜as˜an˜argumen“t.‘bþIf˜w“e˜nd˜theŽ¡‘In•¸èum“bGer–U in“the“list,“wš¸èejust“space“out“the“follo˜wing“group,“otherwise“w˜e“let“it“bGe.ŽŸ‘E|ß680Ž‘Sª®å\def\tab@checkrule#1{%ŽŽŸ’õ€P¹51ŽŽŒ‹4âÑ ª ýs o ý´‘E|ß681Ž‘]Jå\count@#1\relax%Ž¤ ‘E|ß682Ž‘]Jå\expandafter\ifinrange%Ž¡‘E|ß683Ž‘]Jå\expandafter\count@%Ž¡‘E|ß684Ž‘]Jå\expandafter{\tab@xcols}%Ž¡‘E|ß685Ž‘fæå{\tab@checkrule@i}%Ž¡‘E|ß686Ž‘fæå{}%Ž¡‘E|ß687Ž‘Sª®å}Ž¡‘E|ß688Ž‘Sª®å\def\tab@checkrule@i#1{\setbox\z@\hbox{#1}\hb@xt@\wd\z@{}}ŽŸ‘'¨,\vgapŽŽŽ‘I¹W‘ÿ*¸e–mš¸èust“tread“carefully“here.‘Ï#A‘Ísingle“misplaced“stomac˜h“opGeration“can“causeŽ¤ ‘Ierror–âlmessages.‘dW‘ÿ*¸e“therefore“start“with“an“Ü\omit“¹so“wš¸èe“can“searc˜h“for“optionalŽ¡‘Iargumen¸èts.Ž¡‘XSo–ÑÀthat“Ü\hlx“¹can“get“conš¸ètrol“after“Ü\vgap“¹has“nished,‘ìw˜e“pro˜vide“a“hoGok“calledŽ¡‘IÜ\vgap@after–’ ¹whicš¸èh“is“expanded“after“Ü\vgap“¹has“nished.‘(Here“w˜e“mak˜e“it“w˜orkŽ¡‘Ilik•¸èe›ýäÜ\@empty¹,‘Vwhic“h˜expands˜to˜nothing.‘Tl(Note˜that˜Ü\relax˜¹will˜start˜a˜new˜tableŽ¡‘Iro•¸èw,‘\fso›Zòw“e˜can't˜use˜that.)‘‚öThere˜are˜some˜pGenalt“y˜items˜here˜to˜stic“k˜the˜Ü\vgapŽ¡‘I¹roš¸èw–Ø°to“the“text“ro˜w“and“Ü\hline“¹that“are“adjacen˜t“to“it.‘HThe“Ýlongtable“¹pac˜k‘ÿqÐage“willŽ¡‘Isplit–U an“Ü\hline“¹in“half,“so“this“is“the“correct“thing“to“do.Ž©‘E|ß689Ž‘Sª®å\def\vgap{%Ž¤ ‘E|ß690Ž‘]Jå\noalign{\nobreak}%Ž¡‘E|ß691Ž‘]Jå\omit%Ž¡‘E|ß692Ž‘]Jå\global\let\vgap@after\@empty%Ž¡‘E|ß693Ž‘]Jå\iffalse{\fi\ifnum0=`}\fi%Ž¡‘E|ß694Ž‘]Jå\@ifnextchar[\vgap@i\vgap@simple%Ž¡‘E|ß695Ž‘Sª®å}ŽŸ‘X¹W‘ÿ*¸e–èset“up“t•¸èw“o›èdieren“t˜sorts˜of˜Ü\vgap˜¹˜a˜simple˜one˜whic“h˜allo“ws˜all˜rulesŽ¤ ‘Ito–hbšGe“passed“through,‘¬Òand“a“sp˜ecic“one“whicš¸èh“carefully“v˜ets“eac˜h“one“(and“isŽ¡‘Itherefore›Lslo•¸èw“er).‘VxW‘ÿ*¸e˜decide˜whic“h˜to˜so˜based˜on˜the˜presence˜of˜an˜optionalŽ¡‘Iargumen¸èt.Ž¡‘XThe–¸¶optional“argumenš¸èt“handler“just“passes“its“argumen˜t“to“an“in˜terface“routineŽ¡‘Iwhicš¸èh–U is“used“b˜y“Ü\hlx¹.Ž¦‘E|ß696Ž‘Sª®å\def\vgap@i[#1]{\vgap@spec{#1}}ŽŸ‘X¹No•¸èw›‘jw“e˜handle˜spGecied˜columns.‘0DSince˜w“e're˜in˜an˜omitted˜table˜cell,‘¸w“e˜m“ustŽ¡‘Iset–aŠthings“up“globally‘ÿ*¸.‘–¾Assign“the“column“spGec“to“a“macro,‘d¤and“set“up“vš¸èetting“b˜yŽ¡‘Ithe–U routine“abGo•¸èv“e.‘q€Then–U just“go“and“do“the“job.Ž¦‘E|ß697Ž‘Sª®å\def\vgap@spec#1#2{%Ž¤ ‘E|ß698Ž‘]Jå\gdef\tab@xcols{#1}%Ž¡‘E|ß699Ž‘]Jå\global\let\tab@ckr\tab@checkrule%Ž¡‘E|ß700Ž‘]Jå\vgap@do{#2}%Ž¡‘E|ß701Ž‘Sª®å}ŽŸ‘X¹Handle–8hall“columns.‘gîJust“gobble“the“column“n•¸èum“bGer–8hfor“eac¸èh“rule,‘>'and“let“theŽŸ ‘Idra¸èwing–U pass“unharmed.‘q€Easy‘ÿ*¸.Ž¦‘E|ß702Ž‘Sª®å\def\vgap@simple#1{%Ž¡‘E|ß703Ž‘]Jå\global\let\tab@ckr\@gobble%Ž¡‘E|ß704Ž‘]Jå\vgap@do{#1}%Ž¡‘E|ß705Ž‘Sª®å}ŽŸ‘X¹This–þis“where“stu“actually“gets“done.‘0 W‘ÿ*¸e“set“the“Ü\vgap“¹ag“on“while“w¸èe“do“theŽŸ ‘Ishort–?Jroš¸èw.‘j9Then“just“expand“the“tok˜en“list“w˜e“built“while“scanning“the“pream˜ble.ŽŽŸ’õ€P52ŽŽŒ‹5ñ• ª ýs o ý´‘X¹Note–ÌÈthat“the“ag“is“cleared“at“the“end“of“the“last“column,‘è to“alloš¸èw“other“funn˜yŽ© ‘Ithings–U likš¸èe“Ü\noalign“¹and“Ü\omit“¹bGefore“a“new“ro˜w“is“started.ŽŸ‘E|ß706Ž‘Sª®å\def\vgap@do#1{%Ž¤ ‘E|ß707Ž‘]Jå\ifnum0=`{}\fi%Ž¡‘E|ß708Ž‘]Jå\global\tab@vgaptrue%Ž¡‘E|ß709Ž‘]Jå\the\tab@shortline%Ž¡‘E|ß710Ž‘fæå\vrule\@height#1\@width\z@%Ž¡‘E|ß711Ž‘fæå\global\tab@vgapfalseŽ¡‘E|ß712Ž‘fæå\tab@addruleheight{#1}%Ž¡‘E|ß713Ž‘fæå\cr%Ž¡‘E|ß714Ž‘]Jå\noalign{\nobreak}%Ž¡‘E|ß715Ž‘]Jå\vgap@after%Ž¡‘E|ß716Ž‘Sª®å}ŽŸýY‘IÙ2.18.5Ž‘qáPrettifying‘Õsyn®>taxŽŸtî‘,azå\hlxŽŽŽ‘I¹This–cVis“likš¸èe“a“p•Go“or–cVcousin“to“the“pream˜ble“parser.‘œ!The“whole“loGop“is“carefullyŽ¦‘Iwritten–!™to“takš¸èe“place“àonly‘¹in“T‘þUYŸ&úEŽ‘ã9X's“mouth,‘T·so“the“alignmen˜t“handling“bits“halfŽ¦‘Iw•¸èa“y›U do“wn˜the˜gullet˜don't˜see˜an“y˜of˜this.Ž¦‘XFirst,–U pass“the“string“to“another“routine.Ž¤‘E|ß717Ž‘Sª®å\def\hlx#1{\hlx@loop#1\q@delim}ŽŸ‘X¹Noš¸èw–¶ÆpGeel“o“a“tok˜en,‘Ï/and“dispatc˜h“using“Ü\csname¹.‘–qW‘ÿ*¸e“handle“undenednessŽ¦‘Iof–U the“command“in“a“fairly“messy“w•¸èa“y‘ÿ*¸,–U although“it“probably“w•¸èorks.‘q€Ma“ybGe.Ž¡‘E|ß718Ž‘Sª®å\def\hlx@loop#1{%Ž¤ ‘E|ß719Ž‘]Jå\ifx#1\q@delim\else%Ž¡‘E|ß720Ž‘fæå\@ifundefined{hlx@cmd@\string#1}{%Ž¡‘E|ß721Ž‘p‚å\expandafter\hlx@loop%Ž¡‘E|ß722Ž‘fæå}{%Ž¡‘E|ß723Ž‘p‚å\csname‘¹Nhlx@cmd@\string#1\expandafter\endcsname%Ž¡‘E|ß724Ž‘fæå}%Ž¡‘E|ß725Ž‘]Jå\fi%Ž¡‘E|ß726Ž‘Sª®å}Ž¤‘5\hlxdefŽŽŽ‘I¹New–§pÜ\hlx“¹commands“can“bGe“dened“using“Ü\hlxdef¹.‘7›This“is“a“simple“abbreviation.ŽŸ‘E|ß727Ž‘Sª®å\def\hlxdef#1{\@namedef{hlx@cmd@#1}}Ž¡‘"îÞ\hlx‘¹NhŽŽŽ‘I¹Handle–®4an“`Üh¹'Ž‘)ôc¸èharacter.›9ÜJust“do“an“Ü\hline“¹and“return“to“the“loGop.˜W‘ÿ*¸e“loGok“aheadŽ¦‘Ito–pPsee“if“there's“another“`Üh¹'Ž‘®,coming“up,‘žand“if“so“insert“t•¸èw“o–pPÜ\hline“¹commands.‘%;ThisŽ¦‘Istrange–U (and“inecienš¸èt)“bGeha˜viour“k˜eeps“pac˜k‘ÿqÐages“whic˜h“redene“Ü\hline“¹happ˜y‘ÿ*¸.ŽŸ‘E|ß728Ž‘Sª®å\hlxdef‘¹Nh#1{%Ž¤ ‘E|ß729Ž‘]Jå\noalign{%Ž¡‘E|ß730Ž‘fæå\ifx#1h%Ž¡‘E|ß731Ž‘p‚å\def\@tempa{\hline\hline\hlx@loop}%Ž¡‘E|ß732Ž‘fæå\else%Ž¡‘E|ß733Ž‘p‚å\def\@tempa{\hline\hlx@loop#1}%Ž¡‘E|ß734Ž‘fæå\fi%Ž¡‘E|ß735Ž‘fæå\expandafterŽ¡‘E|ß736Ž‘]Jå}%Ž¡‘E|ß737Ž‘]Jå\@tempa%Ž¡‘E|ß738Ž‘Sª®å}ŽŽŸ’õ€P¹53ŽŽŒ‹6ý& ª ýs o ý´‘"îÞå\hlx‘¹NbŽŽŽ‘I¹The‘U `Üb¹'Ž‘wÌcš¸èharacter–U doGes“a“nift˜y“bac˜kspace,“for“Ýlongtable¹'s“bGenet.Ž¤‘E|ß739Ž‘Sª®å\hlxdef‘¹Nb{\noalign{\kern-\arrayrulewidth}\hlx@loop}Ž©‘"îÞ\hlx‘¹N/ŽŽŽ‘I¹The–U `Ü/¹'“cš¸èharacter“allo˜ws“a“page“break“at“the“curren˜t“pGosition.Ž¡‘E|ß740Ž‘Sª®å\hlxdef‘¹N/{%Ž¤ ‘E|ß741Ž‘]Jå\noalign{\ifnum0=`}\fi%Ž¡‘E|ß742Ž‘]Jå\@ifnextchar[\hlx@cmd@break@i{\hlx@cmd@break@i[0]}%Ž¡‘E|ß743Ž‘Sª®å}Ž¡‘E|ß744Ž‘Sª®å\def\hlx@cmd@break@i[#1]{\ifnum0=`{\fi}\pagebreak[0]\hlx@loop}Ž¦‘"îÞ\hlx‘¹NvŽŽŽ‘I¹Handle–¤oa“`Üv¹'Ž‘jcš¸èharacter.‘_mThis“is“rather“lik˜e“the“Ü\vgap“¹cošGde“ab˜o•¸èv“e,‘¸Calthough‘¤othereŽŸ ‘Iare–U syn¸ètactic“dierences.ŽŸ‘E|ß745Ž‘Sª®å\hlxdef‘¹Nv{%Ž¡‘E|ß746Ž‘]Jå\noalign{\nobreak}%Ž¡‘E|ß747Ž‘]Jå\omit%Ž¡‘E|ß748Ž‘]Jå\iffalse{\fi\ifnum0=`}\fi%Ž¡‘E|ß749Ž‘]Jå\global\let\vgap@after\hlx@loop%Ž¡‘E|ß750Ž‘]Jå\@ifnextchar[\hlx@vgap@i{\hlx@vgap@ii\vgap@simple}%Ž¡‘E|ß751Ž‘Sª®å}Ž¡‘E|ß752Ž‘Sª®å\def\hlx@vgap@i[#1]{%Ž¡‘E|ß753Ž‘]Jå\ifx!#1!%Ž¡‘E|ß754Ž‘fæå\def\@tempa{\hlx@vgap@ii\vgap@simple}%Ž¡‘E|ß755Ž‘]Jå\else%Ž¡‘E|ß756Ž‘fæå\def\@tempa{\hlx@vgap@ii{\vgap@spec{#1}}}%Ž¡‘E|ß757Ž‘]Jå\fi%Ž¡‘E|ß758Ž‘]Jå\@tempa%Ž¡‘E|ß759Ž‘Sª®å}Ž¡‘E|ß760Ž‘Sª®å\def\hlx@vgap@ii#1{%Ž¡‘E|ß761Ž‘]Jå\@ifnextchar[{\hlx@vgap@iii{#1}}{\hlx@vgap@iii{#1}[\doublerulesep]}%Ž¡‘E|ß762Ž‘Sª®å}Ž¡‘E|ß763Ž‘Sª®å\def\hlx@vgap@iii#1[#2]{#1{#2}}Ž¦‘"îÞ\hlx‘¹NsŽŽŽ‘I¹Alloš¸èw–U the“user“to“lea˜v˜e“a“small“gap“using“the“`Üs¹'Ž‘wÌcommand.ŽŸ‘E|ß764Ž‘Sª®å\hlxdef‘¹Ns{%Ž¡‘E|ß765Ž‘]Jå\noalign{\ifnum0=`}\fi%Ž¡‘E|ß766Ž‘]Jå\nobreak%Ž¡‘E|ß767Ž‘]Jå\@ifnextchar[\hlx@space@i{\hlx@space@i[\doublerulesep]}%Ž¡‘E|ß768Ž‘Sª®å}Ž¡‘E|ß769Ž‘Sª®å\def\hlx@space@i[#1]{%Ž¡‘E|ß770Ž‘]Jå\vskip#1%Ž¡‘E|ß771Ž‘]Jå\tab@addruleheight{#1}%Ž¡‘E|ß772Ž‘]Jå\ifnum0=`{\fi}%Ž¡‘E|ß773Ž‘]Jå\hlx@loop%Ž¡‘E|ß774Ž‘Sª®å}Ž¦‘"îÞ\hlx‘¹NcŽŽŽ‘I¹W‘ÿ*¸e–U mighš¸èt“as“w˜ell“allo˜w“a“`Üc¹'Ž‘wÌcommand“to“do“a“Ü\cline¹.ŽŸ‘E|ß775Ž‘Sª®å\hlxdef‘¹Nc#1{\cline{#1}\hlx@loop}Ž¦‘"îÞ\hlx‘¹N.ŽŽŽ‘I¹The‘Z`Ü.¹'Ž‘®c¸èharacter–Zforces“a“start“of“the“new“column.‘€SThere's“a“little“problem“here.Ž¤ ‘ISince–ˆ“the“`Ü.¹'Ž‘Þ²cš¸èharacter“starts“the“next“column,‘•ow˜e“need“to“gobble“an˜y“spaces“fol-Ž¡‘Iloš¸èwing–5:the“Ü\hlx“¹command“bGefore“the“cell“con˜ten˜ts“actually“starts.‘fÞUnfortunately‘ÿ*¸,Ž¡‘IÜ\ignorespaces–ÉŽ¹will“start“the“column“for“us,‘æ©so“wš¸èe“can't“put“it“in“alw˜a˜ys.‘ÎÉW‘ÿ*¸e'llŽŽŸ’õ€P54ŽŽŒ‹7ß ª ýs o ý´‘I¹handle–zit“here,‘ƒèthen.‘áÆW‘ÿ*¸e'll“takš¸èe“the“rest“of“the“`pream˜ble'“string,‘ƒèand“w˜arn“if“it'sŽ¤ ‘Inot–ªîemptš¸èy‘ÿ*¸.‘réThen“w˜e'll“Ü\ignorespaces“¹“this“will“start“the“column“for“us,‘Àaso“w˜eŽ¡‘Idon't–U need“to“Ü\relax“¹an¸èy“more.Ž©‘E|ß776Ž‘Sª®å\hlxdef‘¹N.#1\q@delim{%Ž¤ ‘E|ß777Ž‘]Jå\ifx‘¹N@#1@\else%Ž¡‘E|ß778Ž‘fæå\PackageWarning{mdwtab}{%Ž¡‘E|ß779Ž‘p‚åIgnoring–¹N\protect\hlx\space“command“characters“following“aŽ¡‘E|ß780Ž‘p‚å`.'\MessageBreak‘¹Ncommand%Ž¡‘E|ß781Ž‘fæå}%Ž¡‘E|ß782Ž‘]Jå\fi%Ž¡‘E|ß783Ž‘]Jå\ignorespaces%Ž¡‘E|ß784Ž‘Sª®å}ŽŸýY‘Iâ2.19Ž‘n}¨Starting–¸new“table“ro wsŽŸtî‘I¹W‘ÿ*¸e–¦¿takš¸èe“a“break“from“careful“mouthery“at“last,‘»'and“start“pla˜ying“with“newlines.Ž¤ ‘IThe–Ýstandard“one“alloš¸èws“pagebreaks“in“un˜bGo˜xed“tables,‘>úwhic˜h“isn't“really“toGoŽ¡‘Idesirable.Ž¡‘XAn•¸èyw“a“y‘ÿ*¸,‘K{w“e'll–Itry“to“mak¸èe“this“macro“rather“more“reusable“than“the“standardŽ¡‘Ione.‘q€Here‘U goGes.ŽŸ‘Âôå\@arraycrŽŽŽ‘I¹W‘ÿ*¸e–U pass“lots“of“information“to“a“main“parser“macro,“and“expšGect“it“to“cop˜e.Ž¦‘E|ß785Ž‘Sª®å\def\@arraycr{\tab@arraycr{}}ŽŸ ‘E|ß786Ž‘Sª®å\def\tab@arraycr#1{\tab@cr{\tab@tabcr{#1}}{}{}}ŽŸ‘X¹Noš¸èw–MŠto“actually“do“the“w˜ork.‘nùÜ\tab@cr“¹passes“us“the“skip“size,‘Oand“the“appro-Ž¡‘Ipriate–ÛÉone“of“the“t•¸èw“o›ÛÉargumen“ts˜giv“en˜abGo“v“e˜(bGoth˜of˜whic“h˜are˜empt“y)˜depGendingŽ¡‘Ion–U the“presence“of“the“¸¹.Ž¦‘E|ß787Ž‘Sª®å\def\tab@tabcr#1#2{%ŽŸ‘X¹If–êthe“total“heighš¸èt“I‘¸need“to“add“bGet˜w˜een“ro˜ws“(from“the“optional“argumen˜tŽ¡‘Iand–áthe“`extrasep'“parameter)“is“greater“than“zero,‘ I'll“handle“this“b¸èy“extendingŽ¡‘Ithe–ã÷strut“slighš¸ètly‘ÿ*¸.‘KÈI'm“not“actually“sure“whether“this“is“the“righ˜t“thing“to“do,‘ú™to“bGeŽ¡‘Ihonest,›K@although–HÈit's“easier“than“trying“to“to“an“automatic“Ü\vgap¹,˜bGecause“I‘HÅneedŽ¡‘Ito–¥knoš¸èw“whic˜h“columns“to“skip.‘a8If“the“space“is“less“than“zero,‘¹I'll“just“insert“theŽ¡‘Iv¸èertical–U space“with“in“a“Ü\noalign¹.Ž¡‘XFirst,–U to“calculate“hoš¸èw“m˜uc˜h“space“needs“adding.Ž¦‘E|ß788Ž‘]Jå\dimen@#2%ŽŸ ‘E|ß789Ž‘]Jå\advance\dimen@\tab@extrasep%ŽŸ‘X¹If–Qthe“heighš¸èt“is“greater“than“zero,‘$zI‘Aneed“to“pla˜y“with“the“strut.‘];I‘Am˜ust“bGear“inŽ¡‘Imind–>…that“the“currenš¸èt“table“cell“(whic˜h“I'm“still“in,‘C remem˜bGer)“ma˜y“bGe“in“v˜erticalŽ¡‘ImoGde,–U and“I“maš¸èy“or“ma˜y“not“bGe“in“a“paragraph.Ž¡‘XIf–àI‘Õam“in“vš¸èertical“moGde,‘I'll“bac˜kpšGedal“to“the“previous“b˜o¸èx“and“put“the“strutŽ¡‘Iin–yŒan“h•¸èbšGo“x–yŒsup˜erimp˜osed“on“the“previous“baseline.‘ÞÄOtherwise,‘‚§I‘yƒcan“just“put“theŽ¡‘Istrut–FÏat“the“end“of“the“text.‘lº(This“w¸èorks“in“either“LR‘FËor“paragraph“moGde“as“longŽ¡‘Ias–йI'm“not“bGet•¸èw“een›йparagraphs.)‘äJAgain,‘ïŸRo“wland's˜empt“y˜cell˜bug˜strik“es.‘äJ(SeeŽ¡‘IÜ\tab@epar–U ¹for“details.)Ž¦‘E|ß790Ž‘]Jå\ifdim\dimen@>\z@%Ž¤ ‘E|ß791Ž‘fæå\ifvmode%Ž¡‘E|ß792Ž‘p‚å\unskip\ifdim\prevdepth>-\@m\p@\kern-\prevdepth\fi%ŽŽŸ’õ€P¹55ŽŽŒ‹8. ª ýs o ý´‘E|ß793Ž‘p‚å\nointerlineskip\expandafter\hbox%Ž¤ ‘E|ß794Ž‘fæå\else%Ž¡‘E|ß795Ž‘p‚å\@maybe@unskip\expandafter\@firstofone%Ž¡‘E|ß796Ž‘fæå\fi%Ž¡‘E|ß797Ž‘fæå{\advance\dimen@\dp\@arstrutbox\vrule\@depth\dimen@\@width\z@}%Ž¡‘E|ß798Ž‘]Jå\fi%ŽŸµ¶‘X¹This–štable“cell“wš¸èorks“as“a“group“(whic˜h“is“anno˜ying“here).‘3KI'll“cop˜y“the“in˜terro˜wŽ© ‘Igap–U in¸èto“a“global“register“so“that“I“can“use“it“in“the“Ü\noalign¹.ŽŸµ¶‘E|ß799Ž‘]Jå\global\dimen\@ne\dimen@%Ž¡‘E|ß800Ž‘]Jå\cr%Ž¡‘E|ß801Ž‘]Jå\noalign{%Ž¡‘E|ß802Ž‘fæå#1%Ž¡‘E|ß803Ž‘fæå\ifdim\dimen\@ne<\z@\vskip\dimen\@ne\relax\fi%Ž¡‘E|ß804Ž‘]Jå}%Ž¡‘E|ß805Ž‘]Jå\@gobble%Ž¡‘E|ß806Ž‘Sª®å}Ž¤’‘ ¦\tab@setcrŽŽŽ‘I¹T‘ÿ*¸o–Nset“the“Ü\\“¹command“correctly“in“eacš¸èh“table“cell,‘ïYw˜e“mak˜e“it“a“part“of“theŽ¦‘Ipreamš¸èble–W(in“Ü\tab@midtext¹)“to“call“this“routine.‘ûIt's“easy““just“sa˜v˜es“the“pream˜bleŽ¦‘Ifrom–U bGeing“h¸èuge.ŽŸµ¶‘E|ß807Ž‘Sª®å\def\tab@setcr{\let\\\tabularnewline}Ž¡‘5\tab@crŽŽŽ‘I¹No•¸èw›¶Õw“e˜do˜the˜parsing˜w“ork.––žThis˜is˜fun.“Note˜the˜rev•¸èenge˜of˜the˜funn“y˜bracesŽ¦‘Ihere.›IÈNothing–òto“w¸èorry“abGout,‘éhonest.˜The“tricš¸èky“bit“is“to“k˜eep“trac˜k“of“whic˜hŽ¦‘Iargumenš¸èts–kˆare“whic˜h.‘´·(Thanks“to“Da˜vid“Carlisle“for“pGoin˜ting“out“that“I'd“missedŽ¦‘Iout–U the“Ü\relax“¹here.)ŽŸµ¶‘E|ß808Ž‘Sª®å\def\tab@cr#1#2#3{%Ž¤ ‘E|ß809Ž‘]Jå\relax%Ž¡‘E|ß810Ž‘]Jå\iffalse{\fi\ifnum0=`}\fi%Ž¡‘E|ß811Ž‘]Jå\@ifstar{\tab@cr@i{#1}{#3}}{\tab@cr@i{#1}{#2}}%Ž¡‘E|ß812Ž‘Sª®å}Ž¡‘E|ß813Ž‘Sª®å\def\tab@cr@i#1#2{%Ž¡‘E|ß814Ž‘]Jå\@ifnextchar[{\tab@cr@ii{#1}{#2}}{\tab@cr@ii{#1}{#2}[\z@]}%Ž¡‘E|ß815Ž‘Sª®å}Ž¡‘E|ß816Ž‘Sª®å\def\tab@cr@ii#1#2[#3]{%Ž¡‘E|ß817Ž‘]Jå\ifnum0=`{}\fi%Ž¡‘E|ß818Ž‘]Jå#1{#3}{#2}%Ž¡‘E|ß819Ž‘Sª®å}ŽŸÝ_‘Iâ2.20Ž‘n}¨Gratuitous‘¸grotesqueryŽŸtî‘I¹So–#¯far“w•¸èe'v“e–#¯had“an“easy-ish“ride“(or“should“that“bGe“àque‘ÿ}/asy‘ân¹?).‘aNo¸èw“for“somethingŽ¦‘Iunexplainably–IÇevil.‘m¸W‘ÿ*¸e“conš¸èvince“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“that“it's“loaded“the“Ýa˜rra˜y‘mS¹pac˜k‘ÿqÐage,‘L so“thatŽ¦‘Ipac•¸èk‘ÿqÐages›U whic“h˜need˜it˜think˜they'v“e˜got˜it.Ž¦‘XThe–щbGogus“date“is“the“same“as“the“date“for“the“Ýa•¸èrra“y‘õ¹pac“k‘ÿqÐage›щI'v“e˜got˜here˜Ž¦‘Ithis–zÄwill“raise“a“wš¸èarning“if“F‘ÿ*¸rank“upGdates“his“pac˜k‘ÿqÐage“whic˜h“should“lter“bac˜k“toŽ¦‘Ime–U telling“me“that“there's“something“I“need“to“kno¸èw“abGout.Ž¦‘XThe–o messing“with“Ü\xdef“¹and“the“funnš¸èy“parsing“ough˜t“to“insert“the“curren˜tŽ¦‘IÝmdwtab–f¹vš¸èersion“and“date“in˜to“the“fak˜e“Ýa˜rra˜y‘;ò¹v˜ersion“string,‘$‹giving“a“visible“clue“toŽ¦‘Ithe–U user“that“this“isn't“the“real“Ýa•¸èrra“y‘x¬¹pac“k‘ÿqÐage.ŽŸµ¶‘E|ß820Ž‘Sª®å\begingroupŽŽŸ’õ€P¹56ŽŽŒ‹9» ª ýs o ý´‘E|ß821Ž‘Sª®å\catcode`.=11Ž¤ ‘E|ß822Ž‘Sª®å\def\@tempa#1–¹N#2“#3\@@{#1“#2}Ž¡‘E|ß823Ž‘Sª®å\xdef\ver@array.styŽ¡‘E|ß824Ž‘]Jå{1995/11/19–¹N[mdwtab.sty“\expandafter\@tempa\ver@mdwtab.sty\@@]}Ž¡‘E|ß825Ž‘Sª®å\endgroupŽŸÙ‘Iâ2.21Ž‘n}¨Error‘¸messagesŽŸtî‘I¹I'v¸èe–:put“all“the“error“messages“together,›?nwhere“I‘9ûcan“nd“them,˜translate“them“orŽ¤ ‘Iwhatev¸èer.Ž¡‘XFirst,–U some“tokš¸èen-space“sa˜ving“(whic˜h“also“sa˜v˜es“m˜y“ngers):Ž¤«·‘E|ß826Ž‘Sª®å\def\tab@error{\PackageError{mdwtab}}ŽŸ«·‘X¹No¸èw–U do“the“error“messages.Ž¡‘E|ß827Ž‘Sª®å\def\tab@err@misscol{%Ž¤ ‘E|ß828Ž‘]Jå\tab@error{Missing–¹Ncolumn“type}{%Ž¡‘E|ß829Ž‘fæåI'm–¹Nlost.‘ rœI“was“expecting“something“describing^^J%Ž¡‘E|ß830Ž‘fæåthe–¹Ntype“of“the“current“column,“but“you“seem“to^^J%Ž¡‘E|ß831Ž‘fæåhave–¹Nmissed“it“out.‘ rœI've“inserted“a“type“`l'^^J%Ž¡‘E|ß832Ž‘fæåcolumn–¹Nhere“in“the“hope“that“this“makes“sense.%Ž¡‘E|ß833Ž‘]Jå}%Ž¡‘E|ß834Ž‘Sª®å}Ž©«·‘E|ß835Ž‘Sª®å\def\tab@err@oddgroup{%Ž¡‘E|ß836Ž‘]Jå\tab@error{Misplaced–¹Ngroup“in“table“preamble}{%Ž¡‘E|ß837Ž‘fæåI've–¹Nfound“an“open“brace“character“in“your“preamble^^J%Ž¡‘E|ß838Ž‘fæåwhen–¹NI“was“expecting“a“specifier“character.‘ rœI'm^^J%Ž¡‘E|ß839Ž‘fæågoing–¹Nto“gobble“the“whole“group“and“carry“on“as“if^^J%Ž¡‘E|ß840Ž‘fæåI'd–¹Nnever“seen“it.%Ž¡‘E|ß841Ž‘]Jå}%Ž¡‘E|ß842Ž‘Sª®å}Ž¦‘E|ß843Ž‘Sª®å\def\tab@err@undef#1{%Ž¡‘E|ß844Ž‘]Jå\tab@error{Unknown–¹N`\tab@colset'“preamble“character“`\string#1'}{%Ž¡‘E|ß845Ž‘fæåI–¹Ndon't“understand“what“you“meant“by“typing“this^^J%Ž¡‘E|ß846Ž‘fæåcharacter.‘ rœAnyway,–¹NI'll“ignore“it“this“time“around.^^J%Ž¡‘E|ß847Ž‘fæåJust–¹Ndon't“you“do“it“again.%Ž¡‘E|ß848Ž‘]Jå}%Ž¡‘E|ß849Ž‘Sª®å}Ž¦‘E|ß850Ž‘Sª®å\def\tab@err@unbrh{%Ž¡‘E|ß851Ž‘]Jå\tab@error{Can't–¹Nuse“unboxed“tabular“in“LR“mode}{%Ž¡‘E|ß852Ž‘fæåYou've–¹Nasked“for“a“tabular“or“array“environment“with^^J%Ž¡‘E|ß853Ž‘fæå`L',–¹N`C'“or“`R'“as“the“position“specifier,“but“you're^^J%Ž¡‘E|ß854Ž‘fæåin–¹NLR“(restricted“horizontal)“mode,“so“it“won't“work.^^J%Ž¡‘E|ß855Ž‘fæåI'll–¹Nassume“you“really“meant“`c'“and“soldier“on.%Ž¡‘E|ß856Ž‘]Jå}%Ž¡‘E|ß857Ž‘Sª®å}Ž¦‘E|ß858Ž‘Sª®å\def\tab@err@unbmm{%Ž¡‘E|ß859Ž‘]Jå\tab@error{Can't–¹Nuse“unboxed“tabular“in“maths“mode}{%Ž¡‘E|ß860Ž‘fæåYou've–¹Nasked“for“a“tabular“or“array“environment“with^^J%Ž¡‘E|ß861Ž‘fæå`L',–¹N`C'“or“`R'“as“the“position“specifier,“but“you're^^J%Ž¡‘E|ß862Ž‘fæåin–¹Nmaths“mode,“so“it“won't“work.‘ rœI'll“pretend“that^^J%Ž¡‘E|ß863Ž‘fæåyou–¹Nreally“typed“`c',“and“that“this“is“all“a“bad“dream.%Ž¡‘E|ß864Ž‘]Jå}%ŽŽŸ’õ€P¹57ŽŽŒ‹:(ù ª ýs o ý´‘E|ß865Ž‘Sª®å}Ž©‘E|ß866Ž‘Sª®å\def\tab@err@unbext{%Ž¤ ‘E|ß867Ž‘]Jå\tab@error{Can't–¹Nextend“unboxed“tabulars}{%Ž¡‘E|ß868Ž‘fæåYou're–¹Ntrying“to“use“kludgy“extensions“(e.g.,^^J%Ž¡‘E|ß869Ž‘fæå`delarray')–¹Non“an“array“or“tabular“with“`L',“`C'^^J%Ž¡‘E|ß870Ž‘fæåor–¹N`R'“as“the“position“specifier.‘ rœI'll“assume“you^^J%Ž¡‘E|ß871Ž‘fæåsubconsciously–¹Nwanted“a“`c'“type“all“along.%Ž¡‘E|ß872Ž‘]Jå}%Ž¡‘E|ß873Ž‘Sª®å}Ž¦‘E|ß874Ž‘Sª®å\def\tab@err@multi{%Ž¡‘E|ß875Ž‘]Jå\tab@error{More–¹Nthan“one“column“in“a“\protect\multicolumn}{%Ž¡‘E|ß876Ž‘fæåYou've–¹Nput“more“than“one“column“into“a“\string\multicolumn^^J%Ž¡‘E|ß877Ž‘fæådescriptor.› rœIt–¹Nwon't“work.˜I“have“no“idea“what^^J%Ž¡‘E|ß878Ž‘fæåwill–¹Nhappen,“although“it“won't“be“pleasant.‘ rœHold^^J%Ž¡‘E|ß879Ž‘fæåon–¹Ntight“now...%Ž¡‘E|ß880Ž‘]Jå}%Ž¡‘E|ß881Ž‘Sª®å}Ž¦‘E|ß882Ž‘Sª®å\def\tab@err@range{%Ž¡‘E|ß883Ž‘]Jå\tab@error{Expected–¹N`,'“or“`'“in“range“list}{%Ž¡‘E|ß884Ž‘fæåI–¹Nwas“expecting“either“the“end“of“the“range“list,^^J%Ž¡‘E|ß885Ž‘fæåor–¹Na“comma,“followed“by“another“range.‘ rœI've^^J%Ž¡‘E|ß886Ž‘fæåinserted–¹Na“comma“to“try“and“get“me“back“on“track.^^J%Ž¡‘E|ß887Ž‘fæåGood‘¹Nluck.%Ž¡‘E|ß888Ž‘]Jå}%Ž¡‘E|ß889Ž‘Sª®å}ŽŸ‘X¹That's–U it.›q€No“more.˜Mo•¸èv“e–U along“please.Ž¦‘E|ß890Ž‘Sª®êhé=ëJmdwtabŽ‘#¡²êiŽŸ!Ö‘IØ3Ž‘`ÁImplemenctation‘G\of‘¬ÑóOÒÎffffecsx1440ëOmathenvŽŸæ~‘I¹This–U is“in“a“separate“pacš¸èk‘ÿqÐage,“mainly“to“a˜v˜oid“w˜asting“pGeople's“memory‘ÿ*¸.Ž¦‘E|ß891Ž‘Sª®êhëJmathenvŽ‘%ÐÏêiŽŸýY‘Iâ3.1Ž‘g¾Options‘¸handlingŽŸtî‘I¹W‘ÿ*¸e–@Ÿneed“to“bšGe“able“to“cop˜e“with“Ýeqn“¹and“Ýleqno“¹options.‘3ýThis“will“adjust“ourŽŸ ‘Imagic–U moGdied“Ýeqna•¸èrra“y‘x¬¹en“vironmen“t‘U appropriately‘ÿ*¸.Ž¦‘E|ß892Ž‘Sª®å\newif\if@fleqnŽ¡‘E|ß893Ž‘Sª®å\newif\if@leqnoŽ¡‘E|ß894Ž‘Sª®å\DeclareOption{fleqn}{\@fleqntrue}Ž¡‘E|ß895Ž‘Sª®å\DeclareOption{leqno}{\@leqnotrue}Ž¡‘E|ß896Ž‘Sª®å\ProcessOptionsŽŸ‘X¹W‘ÿ*¸e–>íuse“the“Ýmdwtab“¹pac¸èk‘ÿqÐage“for“all“its“nice“table“handling“things.‘j(Oh,‘C]and“toŽŸ ‘Iinict–it“on“users“who“w•¸èan“t–to“do“nice“equations“and“don't“care“abGout“our“tables.)Ž¦‘E|ß897Ž‘Sª®å\RequirePackage{mdwtab}ŽŽŸ’õ€P¹58ŽŽŒ‹;3¾ ª ýs o ý´‘Iâ3.2Ž‘g¾Some–¸useful“registersŽŸtî‘I¹The–P*old“LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“vš¸èersion“puts“the“equation“n˜um˜bGers“in“b˜y“k˜eeping“a“coun˜t“of“whereŽ¤ ‘Iit–Vis“in“the“alignmenš¸èt.‘U=Since“I‘Adon't“kno˜w“ho˜w“ma˜y“columns“there“are“going“to“bGe,Ž¡‘II'll–U just“use“a“switcš¸èh“in“the“pream˜ble“to“tell“me“to“stop“tabbing.Ž¤‘E|ß898Ž‘Sª®å\newif\if@eqalastŽ©‘X¹No¸èw–U dene“some“useful“length“parameters.‘q€First“alloGcate“them:Ž¡‘E|ß899Ž‘Sª®å\newskip\eqaopenskipŽ¤ ‘E|ß900Ž‘Sª®å\newskip\eqacloseskipŽ¡‘E|ß901Ž‘Sª®å\newskip\eqacolskipŽ¡‘E|ß902Ž‘Sª®å\newskip\eqainskipŽ¡‘E|ß903Ž‘Sª®å\newskip\splitleftŽ¡‘E|ß904Ž‘Sª®å\newskip\splitrightŽ¦‘X¹Noš¸èw–M assign“some“default“v‘ÿqÐalues.‘oUsers“can“pla˜y“with“these“if“they“really“w˜an˜tŽ© ‘Ialthough–U I“can't“see“the“pGoinš¸èt“m˜yself.ŽŸ‘E|ß905Ž‘Sª®å\AtBeginDocument{%Ž¡‘E|ß906Ž‘]Jå\eqacloseskip\@centering%Ž¡‘E|ß907Ž‘]Jå\eqacolskip1.5em\@plus\@m\p@Ž¡‘E|ß908Ž‘]Jå\eqainskip\z@%Ž¡‘E|ß909Ž‘]Jå\if@fleqn%Ž¡‘E|ß910Ž‘fæå\eqaopenskip\mathindent%Ž¡‘E|ß911Ž‘fæå\splitleft\mathindent\relax%Ž¡‘E|ß912Ž‘fæå\splitright\mathindent\@minus\mathindent\relax%Ž¡‘E|ß913Ž‘]Jå\else%Ž¡‘E|ß914Ž‘fæå\eqaopenskip\@centering%Ž¡‘E|ß915Ž‘fæå\splitleft2.5em\@minus2.5em%Ž¡‘E|ß916Ž‘fæå\splitright\splitleft%Ž¡‘E|ß917Ž‘]Jå\fi%Ž¡‘E|ß918Ž‘]Jå\relax%Ž¡‘E|ß919Ž‘Sª®å}ŽŸýY‘Iâ3.3Ž‘g¾A–¸little“displa y“handlingŽŸtî‘I¹I'm–àprobably“going“a“little“far“here,‘"†and“inš¸èv‘ÿqÐading“territory“already“claimed“b˜y“theŽ¦‘IÝamsmath–ߦ¹stu“(and“done“a“go•Go“d–ߦdeal“bšGetter“than“I‘ß‚can“b˜e“b˜othered“to“do),‘HbutŽ¦‘Ijust–*mfor“completeness,‘2÷this“is“hoš¸èw“w˜e“handle“attempts“to“put“displa˜ys“inside“otherŽ¦‘Idispla¸èys–U without“screwing“up“the“spacing.ŽŸ‘øk å\dsp@startouterŽŽŽ‘I¹This–ý¦is“hoš¸èw“w˜e“start“an“outermost“displa˜y›ÿ*¸.‘ kIt's“fairly“easy“really˜.‘ kW˜e“mak¸èeŽ¦‘IÜ\dsp@start–U ¹start“an“inner“displaš¸èy‘ÿ*¸,“and“mak˜e“Ü\dsp@end“¹close“the“outer“displa˜y‘ÿ*¸.Ž©‘E|ß920Ž‘Sª®å\def\dsp@startouter{%Ž¡‘E|ß921Ž‘]Jå\let\dsp@end\dsp@endouter%Ž¡‘E|ß922Ž‘]Jå$$%Ž¡‘E|ß923Ž‘Sª®å}Ž¤‘ݼ\dsp@endouterŽŽŽ‘I¹Ending–U the“outer“displa¸èy“is“utterly“trivial.Ž¦‘E|ß924Ž‘Sª®å\def\dsp@endouter{$$}Ž¡‘øk \dsp@startinnerŽŽŽ‘I¹Starting–ø·inner“displaš¸èys“is“done“in“a“vbGo˜x“(actually“I‘øc˜hoGose“Ü\vbox“¹or“Ü\vtop“¹de-ŽŸ ‘IpšGending–0on“the“setting“of‘Û@Ýleqno“¹to“put“the“equation“n•¸èum“b˜er–0the“righš¸èt“w˜a˜y“round).ŽŽŸ’õ€P59ŽŽŒ‹<<û ª ýs o ý´‘E|ß925Ž‘Sª®å\def\dsp@startinner{%Ž¤ ‘E|ß926Ž‘]Jå\let\dsp@end\dsp@endinner%Ž¡‘E|ß927Ž‘]Jå\if@fleqn\kern-\mathindent\fi%Ž¡‘E|ß928Ž‘]Jå\if@leqno\vtop\else\vtop\fi\bgroup%Ž¡‘E|ß929Ž‘Sª®å}Ž¤¶i‘ݼ\dsp@endinnerŽŽŽ‘I¹Ending–U an“inner“displa¸èy“is“also“really“easy‘ÿ*¸.Ž©$F‘E|ß930Ž‘Sª®å\def\dsp@endinner{\egroup}Ž¡‘ ¦\dsp@startŽŽŽ‘I¹This–A>is“what“other“bits“of“coGde“uses“to“start“displa¸èys.‘jàIt's“one“of“the“start“macrosŽŸ ‘Iup›U abGo•¸èv“e,˜and˜outer˜b“y˜default.Ž¦‘E|ß931Ž‘Sª®å\def\dsp@start{%Ž¤ ‘E|ß932Ž‘]Jå\ifmmode%Ž¡‘E|ß933Ž‘fæå\ifinner\mth@err@mdsp\fi%Ž¡‘E|ß934Ž‘fæå\expandafter\dsp@startinner%Ž¡‘E|ß935Ž‘]Jå\else%Ž¡‘E|ß936Ž‘fæå\ifhmode\ifinner\mth@err@hdsp\fi\fi%Ž¡‘E|ß937Ž‘fæå\expandafter\dsp@startouter%Ž¡‘E|ß938Ž‘]Jå\fi%Ž¡‘E|ß939Ž‘Sª®å}ŽŸ¶i‘ݼ\dsp@tabpauseŽŽŽ‘I¹This–©õsets“up“the“correct“pre-“and“pGostam¸èbles“for“the“Ü\tabpause“¹macro“in“mathsŽŸ ‘Idispla¸èys.‘q€This–U is“fairly“simple“stu.Ž¦‘E|ß940Ž‘Sª®å\def\dsp@tabpause{%Ž¡‘E|ß941Ž‘]Jå\def\tab@startpause%Ž¡‘E|ß942Ž‘fæå{\penalty\postdisplaypenalty\vskip\belowdisplayskip}%Ž¡‘E|ß943Ž‘]Jå\def\tab@endpause%Ž¡‘E|ß944Ž‘fæå{\penalty\predisplaypenalty\vskip\abovedisplayskip}%Ž¡‘E|ß945Ž‘Sª®å}ŽŸžÅ‘Iâ3.4Ž‘g¾The‘¸ëHeqna• rra“y‘¯µâen“vironmen“tŽ¤tî‘I¹W‘ÿ*¸e–#Àalloš¸èw“the“user“to“pla˜y“with“the“st˜yle“if“this“is“really“w˜an˜ted.‘ÝaI‘#‹dunno“wh˜y‘ÿ*¸,ŽŸ ‘Ireally‘ÿ*¸.‘q€Maš¸èybGe–U someone“w˜an˜ts“v˜ery“small“alignmen˜ts.Ž¦‘E|ß946Ž‘Sª®å\let\eqastyle\displaystyleŽŸžÅ‘IÙ3.4.1Ž‘l!\The–Õmain“en•®>vironmen“tsŽ¡‘|BåeqnarrayŽŽŸ ‘Âôeqnarray*ŽŽŽŽŽ‘I¹W‘ÿ*¸e–£ædene“the“toplevš¸èel“commands“here.‘]ÑThey“just“add“in“default“argumen˜ts“andŽ¤ ‘Ithen–"Ñcall“Ü\@eqnarray“¹with“a“preamš¸èble“string.‘Ú“W‘ÿ*¸e“handle“equation“n˜um˜bGers“b˜yŽ¡‘Isetting–Hup“a“default“(Ü\eqa@defnumber¹)“whicš¸èh“is“put“in˜to“the“nal“column.‘^ãA˜t“theŽ¡‘IbGeginning–j¶of“eacš¸èh“ro˜w,‘pw˜e“globally“Ü\let“\eqa@number“¹equal“to“Ü\eqa@defnumber¹.Ž¡‘IThe–óÜ\eqnumber“¹macro“just“c¸èhanges“Ü\eqa@number“¹as“required.‘PÕSince“Ü\eqa@numberŽ¡‘I¹is–U cš¸èhanged“globally“w˜e“m˜ust“sa˜v˜e“it“in“this“en˜vironmen˜t.Ž¡‘XFirst,‘^w•¸èe›ÁRm“ust˜sort˜out˜the˜optional˜argumen“ts˜and˜things.‘¶This˜is˜reallyŽ¡‘Ieasy‘ÿ*¸.‘EDThe–Ðlonly“dierence“bGet•¸èw“een–Ðlthe“starred“and“non-starred“en•¸èvironmen“ts–Ðlis“theŽ¡‘Idefault–U denition“of“Ü\eqa@defnumber¹.Ž¦‘E|ß947Ž‘Sª®å\def\eqnarray{%Ž¤ ‘E|ß948Ž‘]Jå\eqnarray@i\eqa@eqcount%Ž¡‘E|ß949Ž‘Sª®å}Ž¡‘E|ß950Ž‘Sª®å\@namedef{eqnarray*}{\eqnarray@i{}}Ž¡‘E|ß951Ž‘Sª®å\def\eqnarray@i#1{\@ifnextchar[{\eqnarray@ii{#1}}{\eqnarray@ii{#1}[rcl]}}ŽŽŸ’õ€P¹60ŽŽŒ‹=Gf ª ýs o ý´‘X¹Righ•¸èt.›¹XNo“w–½for“the“real“w¸èork.˜The“rst“argumenš¸èt“is“the“default“n˜um˜bGeringŽ¤ ‘Itokš¸èens;–U the“second“is“the“pream˜ble“string.ŽŸ‘E|ß952Ž‘Sª®å\def\eqnarray@ii#1[#2]{%ŽŸ‘X¹Set–U up“the“equation“coun¸èter“and“labGels“correctly‘ÿ*¸.ŽŸ‘IÜ\begin{rant}Ž¡‘X¹The–ÿhac¸èking“with“Ü\@currentlabel“¹is“here“bGecause“(in“the“author's“opinion)Ž¡‘ILŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X's–U Ü\refstepcounter“¹macro“is“brokš¸èen.‘q€It's“curren˜tly“dened“asŽ©‘Xå\def\refstepcounter#1{%ŽŽ¤ ‘arœ\stepcounter{#1}%ŽŽ¡‘arœ\protected@edef\@currentlabel%ŽŽ¡‘jå8{\csname–¹Np@#1\endcsname\csname“the#1\endcsname}%ŽŽ¡‘X}ŽŽŸ‘I¹whicš¸èh–/ means“that“the“curren˜t“labšGel“gets“`frozen'“as“so˜on“as“yš¸èou“do“the“coun˜terŽŸ ‘Istep.‘q€By–U redening“the“macro“asŽ¦‘Xå\def\refstepcounter#1{%ŽŽ¡‘arœ\stepcounter{#1}%ŽŽ¡‘arœ\edef\@currentlabel{%ŽŽ¡‘jå8\expandafter\noexpand\csname‘¹Np@#1\endcsname%ŽŽ¡‘jå8\expandafter\noexpand\csname‘¹Nthe#1\endcsname%ŽŽ¡‘arœ}%ŽŽ¡‘X}ŽŽŸ‘I¹these–“;sorts“of“problems“wš¸èould“bGe“a˜v˜oided,‘âÂwithout“an˜y“loss“of“functionalit˜y“orŽ¤ ‘Icompatibilit¸èy–U that“I“can“see.Ž¡‘IÜ\end{rant}Ž©‘E|ß953Ž‘]Jå\stepcounter{equation}%ŽŸ ‘E|ß954Ž‘]Jå\def\@currentlabel{\p@equation\theequation}%ŽŸ‘X¹The–T¨next“step“is“to“set“up“the“n•¸èum“bGering.‘qXI›T¨m“ust˜sa“v“e˜the˜old˜n“um“bGering˜so˜IŽ¡‘Ican–U restore“it“later“(once“in“the“alignmenš¸èt,“I“m˜ust“assign“these“things“globally).Ž¦‘E|ß955Ž‘]Jå\let\eqa@oldnumber\eqa@number%Ž¤ ‘E|ß956Ž‘]Jå\def\eqa@defnumber{#1}%Ž¡‘E|ß957Ž‘]Jå\global\let\eqa@number\eqa@defnumber%Ž¤‘X¹The–.Ü\if@eqalastfalse“¹switcš¸èh“is“false“ev˜erywhere“except“when“w˜e're“in“theŽŸ ‘Inal‘U column.Ž¦‘E|ß958Ž‘]Jå\@eqalastfalse%Ž¡‘X¹Remo•¸èv“e–ÆÎthe“Ü\mathsurround“¹kš¸èerning,‘#:since“it“will“loGok“v˜ery“oGdd“inside“theŽ¤ ‘Idisplaš¸èy–ÿ*¸.‘aYW“e–¥ha˜v˜e“our“o˜wn“spacing“parameters“for“conguring“these“things,‘ùsoŽ¡‘IÜ\mathsurround–U ¹is“unnecessary‘ÿ*¸.Ž¦‘E|ß959Ž‘]Jå\m@th%ŽŸ‘X¹Time–€Àto“parse“the“preamš¸èble“string“no˜w.‘ô`I‘€sm˜ust“c˜hoGose“the“correct“columnŽ¡‘Iset,‘vàinitialise– ºthe“pream¸èble“parser“and“set“up“the“v‘ÿqÐarious“macros.‘ MThe“extraŽ¡‘I`Ü@{\tabskip\eqacloseskip}¹'–ñžitem“sets“up“the“tabskip“glue“to“cen¸ètre“the“align-Ž¡‘Imen¸èt‘U propGerly‘ÿ*¸.Ž¦‘E|ß960Ž‘]Jå\colset{eqnarray}%ŽŸ ‘E|ß961Ž‘]Jå\tab@initread%ŽŽŸ’õ€P¹61ŽŽŒ‹>Rt ª ýs o ý´‘E|ß962Ž‘]Jå\def\tab@tabtext{&\tabskip\z@skip}%Ž¤ ‘E|ß963Ž‘]Jå\tab@preamble{\tabskip\z@skip}%Ž¡‘E|ß964Ž‘]Jå\tab@readpreamble{#2@{\tabskip\eqacloseskip}}%Ž¡‘E|ß965Ž‘]Jå\dsp@tabpause%Ž©‘X¹No¸èw–å­for“some“nal“setting“up.‘#(The“column“separation“is“set“from“the“user'sŽ¤ ‘Iparameter,›Þothe–ÂùÜ\everycr“¹tok¸èens“are“cleared,˜and“I‘ÂÜset“up“the“newline“commandŽ¡‘Iappropriately‘ÿ*¸.ŽŸ‘E|ß966Ž‘]Jå\col@sep.5\eqainskip%Ž¤ ‘E|ß967Ž‘]Jå\everycr{}%Ž¡‘E|ß968Ž‘]Jå\let\\\@eqncr%Ž¦‘X¹Noš¸èw–Dstart“a“maths“displa˜y“and“do“the“alignmen˜t.‘\âSet“up“the“left“hand“tabskipŽ¤ ‘Iglue–oÁto“cenš¸ètre“the“alignmen˜t,‘viand“do“the“actual“alignmen˜t.‘ÁcThe“pream˜ble“used“isŽ¡‘Imainly–&Nthat“generated“from“the“user's“string,‘/¬although“the“stu“at“the“end“is“ho¸èwŽ¡‘Iwš¸èe–ícset“up“the“equation“n˜um˜bšGer““it“rep˜eats“appropriately“so“wš¸èe“can“alw˜a˜ys“nd“it.ŽŸ‘E|ß969Ž‘]Jå\dsp@start%Ž¤ ‘E|ß970Ž‘]Jå\tabskip\eqaopenskip%Ž¡‘E|ß971Ž‘]Jå\halign‘¹Nto\displaywidth\expandafter\bgroup%Ž¡‘E|ß972Ž‘fæå\the\tab@preamble%Ž¡‘E|ß973Ž‘fæå&&\eqa@lastcol\hb@xt@\z@{\hss##}\tabskip\z@\cr%Ž¡‘E|ß974Ž‘Sª®å}Ž¦‘X¹Noš¸èw–Éfor“the“end“of“the“en˜vironmen˜t.›XThis“is“really“easy‘ÿ*¸.˜Set“the“nal“equationŽ¤ ‘In•¸èum“bGer,›ˆfclose–~%the“Ü\halign¹,˜tidy“up“the“equation“coun¸èter“(it's“bšGeen“stepp˜ed“onceŽ¡‘ItoGo–U manš¸èy“times)“and“close“the“displa˜y‘ÿ*¸.Ž©‘E|ß975Ž‘Sª®å\def\endeqnarray{%Ž¤ ‘E|ß976Ž‘]Jå\eqa@eqnum%Ž¡‘E|ß977Ž‘]Jå\egroup%Ž¡‘E|ß978Ž‘]Jå\dsp@end%Ž¡‘E|ß979Ž‘]Jå\global\let\eqa@number\eqa@oldnumber%Ž¡‘E|ß980Ž‘]Jå\global\@ignoretrue%Ž¡‘E|ß981Ž‘]Jå\global\advance\c@equation\m@ne%Ž¡‘E|ß982Ž‘Sª®å}Ž¡‘E|ß983Ž‘Sª®å\expandafter\let\csname‘¹Nendeqnarray*\endcsname\endeqnarrayŽŸ‘X¹No•¸èw›U w“e˜can˜dene˜the˜column˜t“ypGes.Ž¦‘E|ß984Ž‘Sª®å\colpush{eqnarray}ŽŸ‘X¹Note–Ìthe“pšGositioning“of“ord“atoms“in“the“stu“b˜elo¸èw.‘לThis“will“space“outŽ¤ ‘Irelations–Ðrand“binops“correctly“when“they“oGccur“at“the“edges“of“columns,‘êûand“w¸èon'tŽ¡‘Iaect–U ord“atoms“at“the“edges,“bGecause“ords“pac¸èk“closely‘ÿ*¸.Ž¡‘XFirst–£the“easy“onces.‘KJust“sticš¸èk“Ü\hfil“¹in“the“righ˜t“places“and“ev˜erything“willŽ¡‘IbGe–U all“righ¸èt.Ž¦‘E|ß985Ž‘Sª®å\coldef‘¹Nr{\tabcoltype{\hfil$\eqastyle}{{}$}}Ž¤ ‘E|ß986Ž‘Sª®å\coldef‘¹Nc{\tabcoltype{\hfil$\eqastyle{}}{{}$\hfil}}Ž¡‘E|ß987Ž‘Sª®å\coldef‘¹Nl{\tabcoltype{$\eqastyle{}}{$\hfil}}Ž¡‘E|ß988Ž‘Sª®å\coldef‘¹Nx{\tabcoltype{\if@fleqn\else\hfil\fi$\eqastyle}{$\hfil}}ŽŸ‘X¹No¸èw–U for“the“textual“ones.‘q€This“is“also“fairly“easy‘ÿ*¸.Ž¦‘E|ß989Ž‘Sª®å\collet–¹NT“[tabular]TŽŽŸ’õ€P¹62ŽŽŒ‹?\– ª ýs o ý´‘X¹Sort–„­of“split“tš¸èypGes“of“equations.‘&I‘„ m˜ustn't“use“Ü\rlap“¹here,‘or“ev˜erything“goGesŽŸ ‘Iwrong–U “Ü\\“¹doGesn't“get“noticed“bš¸èy“T‘þUYŸ&úEŽ‘ã9X“in“the“same“w˜a˜y“as“Ü\cr“¹doGes.Ž¤¯a‘E|ß990Ž‘Sª®å\coldef‘¹NL{\tabcoltype{\hb@xt@2em\bgroup$\eqastyle}{$\hss\egroup}}Ž©¯a‘X¹The‘U `Ü:¹'Ž‘wÌcolumn–U t¸èypGe“is“fairly“simple.Ž¡‘E|ß991Ž‘Sª®å\coldef‘¹N:{\tabspctype{\tabskip\eqacolskip}}ŽŸ ‘E|ß992Ž‘Sª®å\coldef‘¹Nq{\tabspctype{\quad}}Ž¦‘X¹The–U other“column“tš¸èypGes“just“insert“giv˜en“text“in“an“appropriate“w˜a˜y‘ÿ*¸.Ž¡‘E|ß993Ž‘Sª®å\collet–¹N>“[tabular]>Ž¤ ‘E|ß994Ž‘Sª®å\collet–¹N<“[tabular]<Ž¡‘E|ß995Ž‘Sª®å\collet–¹N*“[tabular]*Ž¡‘E|ß996Ž‘Sª®å\collet–¹N@“[tabular]@Ž¦‘X¹Finally‘ÿ*¸,›8Éthe– Amagical“`Ü\magic¹'“column“t•¸èypGe,˜whic“h– Asets“the“equation“n•¸èum“bGer.Ž¤ ‘IW›ÿ*¸e–šæset“up“the“Ü\tabskip“¹glue“propGerly˜,›¬Wtab“on,˜and“set“the“ag“whic¸èh“marks“theŽ¡‘Inal–Ö“column.‘õØThe“Ü\eqa@lastcol“¹command“is“there“to“raise“an“error“if“the“userŽ¡‘Itabs›²o•¸èv“er˜to˜this˜column.‘ˆkI'll˜tempGorarily˜redene˜it˜to˜Ü\@eqalasttrue˜¹whenŽ¡‘II‘­Aenš¸èter–­Xthis“column“legitimately‘ÿ*¸.‘z)The“extra“magical“bits“here“will“mak˜e“the“nalŽ¡‘Icolumn–¹ÁrepGeat,‘ØÔso“that“wš¸èe“can“nd“it“if“necessary–ÿ*¸.‘=¶W“ell–¹Áis“this“column“t˜ypGe“named.Ž¡‘XThat's–U it.‘q€W‘ÿ*¸e“can“return“to“normal“no¸èw.Ž©¯a‘E|ß997Ž‘Sª®å\colpopŽŸÚ¥‘IÙ3.4.2Ž‘l!\Newline‘ÕcoQÂdesŽŸtî‘I¹Newline–>#sequences“(Ü\\¹)“get“turned“in¸èto“calls“of“Ü\@eqncr¹.‘iÖThe“job“is“fairly“simple,Ž¡‘Ireally‘ÿ*¸.Ž¦‘E|ß998Ž‘Sª®å\def\@eqncr{\tab@cr\eqacr@i\interdisplaylinepenalty\@M}%Ž¤ ‘E|ß999Ž‘Sª®å\def\eqacr@i#1#2{%Ž¡‘AJß1000Ž‘]Jå\eqa@eqnum%Ž¡‘AJß1001Ž‘]Jå\noalign{\penalty#2\vskip\jot\vskip#1}%Ž¡‘AJß1002Ž‘Sª®å}ŽŸÚ¥‘IÙ3.4.3Ž‘l!\Setting–Õequation“n•®>um“bQÂersŽŸtî‘ ¦å\eqa@eqposŽŽŽ‘I¹Before–Îwš¸èe“start,‘,úw˜e“need“to“generalise“the“ush-left“n˜um˜bGer“handling“bits.‘w‹TheŽŸ ‘Imacro–U Ü\eqa@eqpos“¹will“put“its“argumenš¸èt“in“the“righ˜t“place.Ž¦‘AJß1003Ž‘Sª®å\if@leqnoŽ¡‘AJß1004Ž‘]Jå\def\eqa@eqpos#1{%Ž¡‘AJß1005Ž‘fæå\hb@xt@.01\p@{}\rlap{\normalfont\normalcolor\hskip-\displaywidth#1}%Ž¡‘AJß1006Ž‘]Jå}Ž¡‘AJß1007Ž‘Sª®å\elseŽ¡‘AJß1008Ž‘]Jå\def\eqa@eqpos#1{\normalfont\normalcolor#1}Ž¡‘AJß1009Ž‘Sª®å\fiŽŸ‡‘ ¦\eqa@eqnumŽŽŽ‘I¹Here–1uwš¸èe“t˜ypGeset“an“equation“n˜um˜bGer“in“roughly“the“righ˜t“place.‘eœFirst“I'll“redeneŽ¤ ‘IÜ\eqa@lastcol–«^¹so“that“it“tells“me“I'm“in“the“righ¸èt“place,‘Àíand“start“a“loGop“to“ndŽ¡‘Ithat‘U place.Ž¦‘AJß1010Ž‘Sª®å\def\eqa@eqnum{%Ž¤ ‘AJß1011Ž‘]Jå\global\let\eqa@lastcol\@eqalasttrue%Ž¡‘AJß1012Ž‘]Jå\eqa@eqnum@i%Ž¡‘AJß1013Ž‘Sª®å}ŽŽŸ’õ€P¹63ŽŽŒ‹@gŠ ª ýs o ý´‘X¹No¸èw–Uòfor“the“loGop.‘s÷The“Ü\relax“¹here“is“absolutely“vital““it“starts“the“tableŽ¤ ‘Icolumn,‘ªinserting–™useful“tokš¸èens“lik˜e“`Ü\eqa@lastcol¹'“whic˜h“tell“me“where“I‘™ am“inŽ¡‘Ithe–galignmenš¸èt.‘§VThen,‘kŽif“I'v˜e“reac˜hed“the“end,‘kŽI‘g can“t˜ypGeset“the“equation“n˜um˜bGer;Ž¡‘Iotherwise–U I“go“o“in¸èto“another“macro“and“step“on“to“the“next“column.Ž©‘AJß1014Ž‘Sª®å\def\eqa@eqnum@i{%Ž¤ ‘AJß1015Ž‘]Jå\relax%Ž¡‘AJß1016Ž‘]Jå\if@eqalast%Ž¡‘AJß1017Ž‘fæå\expandafter\eqa@eqnum@ii%Ž¡‘AJß1018Ž‘]Jå\else%Ž¡‘AJß1019Ž‘fæå\expandafter\eqa@eqnum@iii%Ž¡‘AJß1020Ž‘]Jå\fi%Ž¡‘AJß1021Ž‘Sª®å}Ž¡‘AJß1022Ž‘Sª®å\def\eqa@eqnum@ii{%Ž¡‘AJß1023Ž‘]Jå\eqa@eqpos\eqa@number%Ž¡‘AJß1024Ž‘]Jå\global\let\eqa@number\eqa@defnumber%Ž¡‘AJß1025Ž‘]Jå\global\let\eqa@lastcol\eqa@@lastcol%Ž¡‘AJß1026Ž‘]Jå\cr%Ž¡‘AJß1027Ž‘Sª®å}Ž¡‘AJß1028Ž‘Sª®å\def\eqa@eqnum@iii{&\eqa@eqnum@i}ŽŸ‘— \eqa@lastcolŽŽŽ‘I¹This–d«is“used“as“a“markš¸èer“for“the“nal“column“in“an“Ýeqna˜rra˜y‘ˆ7¹en˜vironmen˜t.‘ !ByŽ¤ ‘Idefault–dit“informs“the“user“that“they'vš¸èe“bGeen“v˜ery“silly“and“sw˜allo˜ws“the“con˜ten˜tsŽ¡‘Iof–KbQÂering‘Õcon“trolŽŸtî‘Âôå\eqnumberŽŽŽ‘I¹The–ÆËÜ\eqnumber“¹command“sets“the“equation“n•¸èum“bGer–ÆËon“the“curren¸èt“equation.‘BThisŽ¡‘Iis–U really“easy›ÿ*¸,“actually˜.Ž¦‘AJß1031Ž‘Sª®å\newcommand\eqnumber[1][\eqa@eqcount]{\gdef\eqa@number{#1}}ŽŸ‘— \eqa@eqcountŽŽŽ‘I¹This–dîis“hoš¸èw“a“standard“equation“n˜um˜bGer“is“set,‘hástepping“the“coun˜ter“and“all.‘ éIt'sŽ¡‘Ireally–U easy“and“ob¸èvious.Ž¦‘AJß1032Ž‘Sª®å\def\eqa@eqcount{(\theequation)\global\advance\c@equation\@ne}ŽŸ‘Âô\nonumberŽŽŽ‘I¹The–U LŸýï‘üf ßAŽŽ‘Íz¹T‘þUYŸ&úEŽ‘ã9X“Ü\nonumber“¹command“could“bGe“dened“bš¸èy“sa˜yingŽŸ‘Xå\renewcommand{\nonumber}{\eqnumber[]}ŽŽŸ‘I¹but–U I'll“bGe“slighš¸ètly“more“ecien˜t“and“redene“Ü\eqa@number“¹directly‘ÿ*¸.Ž¦‘AJß1033Ž‘Sª®å\def\nonumber{\global\let\eqa@number\@empty}ŽŸýY‘IÙ3.4.5Ž‘l!\The–ÕÞeqnalign“Ùen•®>vironmen“tŽŸtî‘I¹As–Ÿka“sort“of“companion“to“Ýeqna•¸èrra“y¹,‘ñþhere's–Ÿkan“en•¸èvironmen“t›Ÿkwhic“h˜doGes˜similarŽ¡‘Ithings–óinside“a“bGoš¸èx,‘rather“than“taking“up“the“whole“displa˜y“width.‘KyIt“uses“theŽ¡‘Isame–U column“tš¸èypGes“that“w˜e'v˜e“already“created,“so“there“should“bGe“no“problems.ŽŽŸ’õ€P64ŽŽŒ‹ArÅ ª ýs o ý´‘|BåeqnalignŽŽŽ‘I¹First,–U sort“out“some“simple“things“likš¸èe“optional“argumen˜ts.Ž©‘AJß1034Ž‘Sª®å\def\eqnalign{\@ifnextchar[\eqnalign@i{\eqnalign@i[rcl]}}Ž¤ ‘AJß1035Ž‘Sª®å\def\eqnalign@i[#1]{%Ž¡‘AJß1036Ž‘]Jå\@ifnextchar[{\eqnalign@ii{#1}}{\eqnalign@ii{#1}[c]}%Ž¡‘AJß1037Ž‘Sª®å}ŽŸ‘X¹No•¸èw›U w“e˜actually˜do˜the˜en“vironmen“t.‘q€This˜is˜fairly˜easy–ÿ*¸,˜actually“.Ž¦‘AJß1038Ž‘Sª®å\def\eqnalign@ii#1[#2]{%Ž¡‘AJß1039Ž‘]Jå\let\\\eqn@cr%Ž¡‘AJß1040Ž‘]Jå\colset{eqnarray}%Ž¡‘AJß1041Ž‘]Jå\tab@initread%Ž¡‘AJß1042Ž‘]Jå\def\tab@tabtext{&\tabskip\z@skip}%Ž¡‘AJß1043Ž‘]Jå\tabskip\z@skip%Ž¡‘AJß1044Ž‘]Jå\col@sep.5\eqainskip%Ž¡‘AJß1045Ž‘]Jå\tab@readpreamble{#1}%Ž¡‘AJß1046Ž‘]Jå\everycr{}%Ž¡‘AJß1047Ž‘]Jå\if#2t\vtop\else%Ž¡‘AJß1048Ž‘fæå\if#2b\vbox\else%Ž¡‘AJß1049Ž‘p‚å\vcenter%Ž¡‘AJß1050Ž‘fæå\fi%Ž¡‘AJß1051Ž‘]Jå\fi%Ž¡‘AJß1052Ž‘]Jå\bgroup%Ž¡‘AJß1053Ž‘]Jå\halign\expandafter\bgroup\the\tab@preamble\cr%Ž¡‘AJß1054Ž‘Sª®å}ŽŸ‘X¹Finishing–U the“en•¸èvironmen“t–U is“ev¸èen“simpler.Ž¦‘AJß1055Ž‘Sª®å\def\endeqnalign{%Ž¡‘AJß1056Ž‘]Jå\crcr%Ž¡‘AJß1057Ž‘]Jå\egroup%Ž¡‘AJß1058Ž‘]Jå\egroup%Ž¡‘AJß1059Ž‘Sª®å}ŽŸ‘5\eqn@crŽŽŽ‘I¹Newlines–U are“really“easy“here.Ž¦‘AJß1060Ž‘Sª®å\def\eqn@cr{\tab@cr\eqn@cr@i{}{}}Ž¡‘AJß1061Ž‘Sª®å\def\eqn@cr@i#1{\cr\noalign{\vskip\jot\vskip#1}\@gobble}ŽŸýY‘Iâ3.5Ž‘g¾Simple–¸m ultiline“equationsŽŸtî‘I¹As–˜ a“sort“of“example“and“abbreviation,‘èàhere's“a“mš¸èultiline“displa˜y“en˜vironmen˜tŽŸ ‘Iwhicš¸èh–U just“cen˜tres“ev˜erything.ŽŸ‘5åeqlinesŽŽŽ‘I¹W›ÿ*¸e–U just“get“Ü\eqnarray“¹to“do“ev¸èerything“for“us.‘q€This“is“really“easy˜.Ž¦‘AJß1062Ž‘Sª®å\def\eqlines{\eqnarray[x]}Ž¡‘AJß1063Ž‘Sª®å\let\endeqlines\endeqnarrayŽŸ‘|Beqlines*ŽŽŽ‘I¹There's–xOa“¸“¹vš¸èersion“whic˜h“omits“n˜um˜bšGers.‘Û This“is“easy“to˜o.‘Û Lots“of“hac¸èking“withŽŸ ‘Iexpansion–´here“to“try“and“reduce“the“n•¸èum“bšGer–´of“tok¸èens“b˜eing“used.‘\Is“it“w¸èorth“it?Ž¦‘AJß1064Ž‘Sª®å\expandafter\edef\csname‘¹Neqlines*\endcsname{%Ž¡‘AJß1065Ž‘]Jå\expandafter\noexpand\csname‘¹Neqnarray*\endcsname[x]%Ž¡‘AJß1066Ž‘Sª®å}Ž¡‘AJß1067Ž‘Sª®å\expandafter\let\csname‘¹Nendeqlines*\expandafter\endcsnameŽ¡‘AJß1068Ž’Ÿ?Žå\csname‘¹Nendeqnarray*\endcsnameŽŽŸ’õ€P¹65ŽŽŒ‹B}† ª ýs o ý´‘Iâ3.6Ž‘g¾Split‘¸equationsŽŸtî‘I¹Based–$æon“an“idea“from“àThe‘RÖT‘þKÞŸ&úEŽ‘ÌñXb–ÿ}/o“ok¹,‘XØw•¸èe›$æpro“vide˜some˜simple˜en“vironmen“ts˜forŽ¤ ‘Idoing–U split“equations.‘q€These's“plen•¸èt“y–U of“scopGe“for“impro•¸èv“emen“t–U here,“though.ŽŸ8p‘|BåspliteqnŽŽ¡‘Âôspliteqn*ŽŽŽŽŽ‘I¹The–´0only“dierence“bšGet•¸èw“een–´0these“t•¸èw“o–´0is“that“the“¸¹-v¸èersion“do˜esn't“put“in“an“equa-Ž¡‘Ition›U n•¸èum“bGer˜b“y˜default˜(although˜this˜bGeha“viour˜can˜bGe˜c“hanged˜b“y˜Ü\eqnumber¹).Ž¡‘XThe–Wfun“here“mainly“concerns“putting“in“the“equation“n•¸èum“bGer–Wat“the“righ¸ètŽ¡‘Iplace– R“for“Üleqno“¹users,‘*âwš¸èe“need“to“put“the“n˜um˜bGer“on“the“rst“line;‘1ìotherwise“w˜eŽ¡‘Iput–U it“on“the“last“line.Ž¡‘XThe›Š»w•¸èa“y˜w“e˜handle˜this˜is˜to˜ha“v“e˜t“w“o˜macros,‘˜"Ü\\˜¹(whic“h˜clearly˜doGes˜all˜theŽ¡‘Iuser–Ôline“breaks)“and“Ü\seq@lastcr“¹whicš¸èh“is“used“at“the“end“of“the“en˜vironmen˜tŽ¡‘Ito–}wrap“evš¸èerything“up.‘^JThe“Ü\seq@eqnocr“¹macro“puts“an“equation“n˜um˜bGer“on“theŽ¡‘Icurren¸èt–Ö5line“and“then“doGes“a“normal“Ü\\¹.‘G2It“also“resets“Ü\\“¹and“Ü\seq@lastcr“¹so“thatŽ¡‘Ithey–êôdon't“try“to“put“another“equation“n•¸èum“bšGer–êôin.‘2üThis“m¸èust“b˜e“done“globally‘ÿ*¸,Ž¡‘Ialthough›U an•¸èy“one˜who˜tries˜to˜nest˜maths˜displa“ys˜will˜get˜what˜they˜deserv“e.Ž¡‘XF‘ÿ*¸or–â+the“non-¸“¹en•¸èvironmen“t,–mthen,“wš¸èe–â+need“to“step“the“equation“coun˜ter,‘mandŽ¡‘Iset–ó°Ü\\“¹to“Ü\seq@cr“¹or“Ü\seq@eqnocr“¹as“appropriate“for“the“setting“of“the“Üleqno“¹agŽ¡‘I–žÒÜ\seq@lastcr“¹alw•¸èa“ys–žÒgets“set“to“put“an“equation“n•¸èum“bšGer–žÒin“(b˜ecause“it“will“b˜eŽ¡‘Ireset–3*if“the“n•¸èum“bGer–3*actually“gets“done“earlier““this“catc¸èhes“stupid“users“trying“toŽ¡‘Iput–U a“single“roš¸èw“in˜to“a“split“en˜vironmen˜t).Ž©zö‘AJß1069Ž‘Sª®å\def\spliteqn{%Ž¤ ‘AJß1070Ž‘]Jå\let\eqa@oldnumber\eqa@number%Ž¡‘AJß1071Ž‘]Jå\global\let\eqa@number\eqa@eqcount%Ž¡‘AJß1072Ž‘]Jå\spliteqn@i%Ž¡‘AJß1073Ž‘Sª®å}ŽŸzö‘X¹F‘ÿ*¸or–Œthe“¸“¹v‘ÿqÐarian•¸èt,‘&Cw“e–Œdon't“need“to“bšGother“with“equation“n•¸èum“b˜ering,‘&Cso–Œthis“isŽŸ ‘Ireally‘U easy‘ÿ*¸.Ž¦‘AJß1074Ž‘Sª®å\@namedef{spliteqn*}{%Ž¡‘AJß1075Ž‘]Jå\let\eqa@oldnumber\eqa@number%Ž¡‘AJß1076Ž‘]Jå\gdef\eqa@number{}%Ž¡‘AJß1077Ž‘]Jå\spliteqn@i%Ž¡‘AJß1078Ž‘Sª®å}ŽŸzö‘X¹Ending–×uthe“en•¸èvironmen“ts–×uis“easy‘ÿ*¸.‘GMost“of“the“stu“here“will“bšGe“describ˜ed“later.Ž¦‘AJß1079Ž‘Sª®å\def\endspliteqn{%Ž¡‘AJß1080Ž‘]Jå\hfilneg\seq@lastcr%Ž¡‘AJß1081Ž‘]Jå\egroup%Ž¡‘AJß1082Ž‘]Jå\dsp@end%Ž¡‘AJß1083Ž‘]Jå\global\let\eqa@number\eqa@oldnumber%Ž¡‘AJß1084Ž‘]Jå\global\advance\c@equation\m@ne%Ž¡‘AJß1085Ž‘Sª®å}Ž¡‘AJß1086Ž‘Sª®å\expandafter\let\csname‘¹Nendspliteqn*\endcsname\endspliteqnŽŸ8p‘ PX\spliteqn@iŽŽŽ‘I¹Here–sÎwš¸èe“handle“the“full“displa˜y“splits.‘͉Start“a“maths“displa˜y‘ÿ*¸,‘{yand“mak˜e“eac˜h“ro˜wŽ¤ ‘Iof–U the“alignmenš¸èt“tak˜e“up“the“full“displa˜y“width.Ž¡‘XThe–ÁImacro“Ü\seq@dosplit“¹doGes“most“of“the“real“w¸èork“for“us““setting“up“theŽ¡‘Ialignmenš¸èt–U and“so“forth.‘rÿThe“template“column“is“in˜teresting.‘rÿThere“are“t˜w˜o“itemsŽ¡‘Iglue–U on“bGoth“sides“of“the“actual“text:ŽŸ³f‘X¸ŽŽŽ‘b¹Some–Õ…glue“whicš¸èh“can“shrink.‘ò°This“k˜eeps“the“displa˜y“from“the“edges“of“theŽ¡‘bpage–U unless“w¸èe“get“a“really“wide“item.ŽŽŸ’õ€P66ŽŽŒ‹C†û ª ýs o ý´‘X¸ŽŽŽ‘b¹An–³•Ü\hfil“¹to“do“the“alignmenš¸èt.‘ŒÞBy“default,‘Ë2this“cen˜tres“the“equations.‘ŒÞOnŽ¤ ‘bthe–9µrst“line,›rÚho•¸èw“ev“er,˜w“e–9µput“a“leading“Ü\hfilneg“¹whic¸èh“cancels“the“rstŽ¡‘bÜ\hfil¹,›'‡making–ýsthe“rst“ro¸èw“left“aligned.‘jxSimilarly‘ÿ*¸,˜at“the“end,˜w¸èe“put“anŽ¡‘bÜ\hfilneg–U ¹after“the“last“equation“to“righ¸èt“align“the“last“line.ŽŸ‘XW›ÿ*¸e–U pass“this“information“on“as“an“argumen¸èt.‘q€It's“easy“really˜.Ž©‘AJß1087Ž‘Sª®å\def\spliteqn@i{%ŽŸ‘X¹First,‘ ã¨set– `Àup“equation“n•¸èum“b•Gering› `Àprop“erly‘ÿ*¸.‘”`See˜m•¸èy˜ran“t˜abGoutŽ¡‘IÜ\refstepcounter‘U ¹abGo•¸èv“e.Ž¦‘AJß1088Ž‘]Jå\stepcounter{equation}%ŽŸ ‘AJß1089Ž‘]Jå\def\@currentlabel{\p@equation\theequation}%ŽŸ‘X¹Righ•¸èt;‘Ä,no“w–Ÿ(to“sort“out“the“n•¸èum“bšGering–Ÿ(and“newline“handling.‘O—If“the“n•¸èum“b˜er'sŽ¡‘Imeanš¸èt–E^to“bGe“on“the“rst“line“(for“Ýleqno“¹users),‘mthen“it“gets“t˜ypGeset“on“the“rstŽ¡‘Ilik•¸èe;‘ÚHotherwise›Xw“e˜just˜do˜a˜normal˜newline˜on˜all˜lines˜except˜the˜rst.‘{ÏOnceŽ¡‘IÜ\seq@eqnocr–@¹has“done“its“stu,‘DKit“redenes“all“the“newline“handling“not“to“insertŽ¡‘Ianother‘U n•¸èum“bGer.Ž¦‘AJß1090Ž‘]Jå\if@leqno%Ž¤ ‘AJß1091Ž‘fæå\global\let\seq@docr\seq@eqnocr%Ž¡‘AJß1092Ž‘]Jå\else%Ž¡‘AJß1093Ž‘fæå\global\let\seq@docr\seq@cr%Ž¡‘AJß1094Ž‘]Jå\fi%Ž¡‘AJß1095Ž‘]Jå\global\let\seq@lastcr\seq@eqnocr%ŽŸ‘X¹F‘ÿ*¸or–M‹mš¸èy“next“tric˜k,‘‹¦I'll“do“some“displa˜y“handling““start“a“(pGossibly“nested)Ž¤ ‘Imaths–eÔdispla¸èy›ÿ*¸,‘ªset“up“the“Ü\tabpause“¹macro“appropriately˜,‘ªand“set“the“newlineŽ¡‘Icommand–U to“do“the“righ¸èt“thing.Ž¦‘AJß1096Ž‘]Jå\dsp@start%Ž¤ ‘AJß1097Ž‘]Jå\dsp@tabpause%Ž¡‘AJß1098Ž‘]Jå\def\\{\seq@docr}%ŽŸ‘X¹Finally‘ÿ*¸,–U call“another“macro“to“do“the“remaining“bits“of“setting“up.Ž¦‘AJß1099Ž‘]Jå\seq@dosplit%Ž¡‘AJß1100Ž‘fæå{\hb@xt@\displaywidth{%Ž¡‘AJß1101Ž‘p‚å\hskip\splitleft\hfil$\displaystyle##$%Ž¡‘AJß1102Ž‘p‚å\hfil\hskip\splitright}}%Ž¡‘AJß1103Ž‘fæå{\hfilneg}%Ž¡‘AJß1104Ž‘Sª®å}ŽŸ‘|BsubsplitŽŽŽ‘I¹F‘ÿ*¸or–†wdoing“splits“in“the“middle“of“equations,‘ÒÌwš¸èe“pro˜vide“a“similar“en˜vironmen˜t.Ž¤ ‘IHere,‘w•¸èe›ý|mak“e˜Ü\\˜¹just˜start˜a˜new˜line.‘TJW‘ÿ*¸e˜also˜use˜a˜Ü\vcenter˜¹rather˜than˜a˜fullŽ¡‘Imaths–f‚displaš¸èy‘ÿ*¸.‘¥¦The“glue“items“are“also“a“bit“dieren˜t:‘”Dw˜e“use“plain“double-quadsŽ¡‘Ion–"Ueacš¸èh“side“of“the“item,‘,~and“w˜e“need“to“remo˜v˜e“them“b˜y“hand“at“the“extremetiesŽ¡‘Iof–U the“en•¸èvironmen“t.Ž¦‘AJß1105Ž‘Sª®å\def\subsplit{%Ž¤ ‘AJß1106Ž‘]Jå\let\\\seq@cr%Ž¡‘AJß1107Ž‘]Jå\vcenter\bgroup%Ž¡‘AJß1108Ž‘]Jå\seq@dosplit{\hfil\qquad$##$\qquad\hfil}{\hfilneg\hskip-2em}%Ž¡‘AJß1109Ž‘Sª®å}ŽŽŸ’õ€P¹67ŽŽŒ‹D”³ ª ýs o ý´‘X¹Ending–ªœthe“en•¸èvironmen“t–ªœis“fairly“easy–ÿ*¸.‘8ªW“e›ªœremo•¸èv“e˜the˜nal˜glue˜item,‘Ì·and˜closeŽ© ‘Ithe–U alignmenš¸èt“and“the“vbGo˜x.ŽŸ‘AJß1110Ž‘Sª®å\def\endsubsplit{%Ž¤ ‘AJß1111Ž‘]Jå\hfilneg\hskip-2em\cr%Ž¡‘AJß1112Ž‘]Jå\egroup\egroup%Ž¡‘AJß1113Ž‘Sª®å}ŽŸ‘— \seq@dosplitŽŽŽ‘I¹Here–Cop•¸èyrigh“t–U (C)“1989,“1991“F›ÿ*¸ree“Soft•¸èw“are–U F˜oundation,“Inc.Ž¡’› †675–U Mass“A‘þã vš¸èe,“Cam˜bridge,“MA“02139,“USAŽ¡‘tÚEv•¸èery“one–U is“pGermitted“to“copš¸èy“and“distribute“v˜erbatim“copiesŽ¡’€9lof–U this“license“doGcumenš¸èt,“but“c˜hanging“it“is“not“allo˜w˜ed.ŽŽŸ’õ€P74ŽŽŒ‹K嶠ª ýs o ý´‘IâA.1Ž‘k/¤Pream bleŽ©tî‘I¹The–}^licenses“for“most“soft•¸èw“are–}^are“designed“to“takš¸èe“a˜w˜a˜y“y˜our“freedom“to“share“andŽ¤ ‘Icš¸èhange–+it.‘c{By“con˜trast,‘3ythe“GNU‘+General“Public“License“is“in˜tended“to“guaran˜teeŽ¡‘Iyš¸èour– ]freedom“to“share“and“c˜hange“free“soft˜w˜areto“mak˜e“sure“the“soft˜w˜are“is“freeŽ¡‘Ifor–3Uall“its“users.‘faddition,‘i†mere“aggregation“of“another“w¸èork“not“based“on“the“ProgramŽ¤ ‘bwith–êáthe“Program“(or“with“a“wš¸èork“based“on“the“Program)“on“a“v˜olume“ofŽ¡‘ba–ËŽstorage“or“distribution“medium“doGes“not“bring“the“other“w¸èork“under“theŽ¡‘bscopGe–U of“this“License.ŽŸ‘U9b3.ŽŽŽ‘bY‘ÿ*¸ou–Esmaš¸èy“cop˜y“and“distribute“the“Program“(or“a“w˜ork“based“on“it,‘ˆunderŽ¡‘bSection–¤^2)“in“ob‘Ž0ject“coGde“or“executable“form“under“the“terms“of“Sections“1Ž¡‘band–U 2“abGo•¸èv“e›U pro“vided˜that˜y“ou˜also˜do˜one˜of˜the˜follo“wing:ŽŸ‘f9²(a)ŽŽŽ‘xA•¸èccompan“y–øit“with“the“complete“correspGonding“mac¸èhine-readableŽ¡‘xsource–˜ÕcoGde,‘éÂwhicš¸èh“m˜ust“bGe“distributed“under“the“terms“of“SectionsŽ¡‘x1–5Dand“2“abGo•¸èv“e–5Don“a“medium“customarily“used“for“soft•¸èw“are‘5Din“terc“hange;Ž¡‘xor,Ž©‘e«‚(b)ŽŽŽ‘xA•¸èccompan“y–ƒˆit“with“a“written“oer,›Ï#v‘ÿqÐalid“for“at“least“three“y¸èears,˜toŽ¡‘xgiv•¸èe›O÷an“y˜third˜part“y‘ÿ*¸,‘Pÿfor˜a˜c“harge˜no˜more˜than˜y“our˜cost˜of˜ph“ysicallyŽ¡‘xpGerforming–i^source“distribution,‘®na“complete“macš¸èhine-readable“cop˜y“ofŽ¡‘xthe–v'correspšGonding“source“co˜de,‘¾ito“b˜e“distributed“under“the“terms“ofŽ¡‘xSections–ÅU1“and“2“abGo•¸èv“e–ÅUon“a“medium“customarily“used“for“soft•¸èw“areŽ¡‘xin•¸èterc“hange;‘U or,Ž¦‘fÇâ(c)ŽŽŽ‘xA•¸èccompan“y–c,it“with“the“information“yš¸èou“receiv˜ed“as“to“the“oer“to“dis-Ž¡‘xtribute–…3correspšGonding“source“co˜de.‘¸(This“alternativš¸èe“is“allo˜w˜ed“onlyŽ¡‘xfor–,‹noncommercial“distribution“and“only“if“yš¸èou“receiv˜ed“the“programŽ¡‘xin–4dob‘Ž0ject“coGde“or“executable“form“with“suc¸èh“an“oer,‘l6in“accord“withŽ¡‘xSubsection–U b“abGo•¸èv“e.)ŽŸ‘bThe–Û3source“coGde“for“a“wš¸èork“means“the“preferred“form“of“the“w˜ork“for“makingŽ¡‘bmošGdications–<¡to“it.‘(F‘ÿ*¸or“an“executable“w¸èork,‘vcomplete“source“co˜de“meansŽ¡‘ball–SÜthe“source“cošGde“for“all“mo˜dules“it“conš¸ètains,‘Tplus“an˜y“assoGciated“in˜terfaceŽ¡‘bdenition–`×les,‘‘²plus“the“scripts“used“to“con¸ètrol“compilation“and“installation“ofŽ¡‘bthe›executable.‘WzHo•¸èw“ev“er,–«as˜a˜spGecial˜exception,“the˜source˜coGde˜distributedŽ¡‘bneed–½Ãnot“include“an¸èything“that“is“normally“distributed“(in“either“source“orŽ¡‘bbinary–/éform)“with“the“ma‘Ž0jor“compGonenš¸èts“(compiler,–f›k˜ernel,“and–/éso“on)“ofŽ¡‘bthe–†MopšGerating“system“on“whic¸èh“the“executable“runs,‘’˜unless“that“comp˜onen¸ètŽ¡‘bitself–U accompanies“the“executable.Ž¦‘bIf–§*distribution“of“executable“or“ob‘Ž0ject“coGde“is“made“bš¸èy“oering“access“to“cop˜yŽ¡‘bfrom–»pa“designated“place,‘Õthen“oering“equiv‘ÿqÐalenš¸èt“access“to“cop˜y“the“sourceŽ¡‘bcošGde–`from“the“same“place“coun¸èts“as“distribution“of“the“source“co˜de,‘¢Âev¸èenŽ¡‘bthough–-Othird“parties“are“not“compGelled“to“cop¸èy“the“source“along“with“theŽ¡‘bob‘Ž0ject‘U coGde.Ž©‘U9b4.ŽŽŽ‘bY‘ÿ*¸ou–¿ymaš¸èy“not“cop˜y–ÿ*¸,›moGdify“,˜sublicense,˜or–¿ydistribute“the“Program“exceptŽ¡‘bas–üexpressly“proš¸èvided“under“this“License.‘ŠAn˜y“attempt“otherwise“to“cop˜y‘ÿ*¸,Ž¡‘bmoGdify‘ÿ*¸,›:ÿsublicense–4wor“distribute“the“Program“is“v¸èoid,˜and“will“automaticallyŽ¡‘bterminate–fyš¸èour“righ˜ts“under“this“License.‘!ÒHo˜w˜ev˜er,‘•ãparties“who“ha˜v˜e“receiv˜edŽ¡‘bcopies,–£èor›`órigh¸èts,“from˜y•¸èou˜under˜this˜License˜will˜not˜ha“v“e˜their˜licensesŽ¡‘bterminated–U so“long“as“suc¸èh“parties“remain“in“full“compliance.Ž¦‘U9b5.ŽŽŽ‘bY‘ÿ*¸ou–$¸are“not“required“to“accept“this“License,‘Xžsince“yš¸èou“ha˜v˜e“not“signed“it.Ž¡‘bHo•¸èw“ev“er,‘¬nothing–želse“granš¸èts“y˜ou“pšGermission“to“mo˜dify“or“distribute“the“Pro-Ž¡‘bgram–q or“its“deriv‘ÿqÐativš¸èe“w˜orks.‘Å@These“actions“are“prohibited“b˜y“la˜w“if“y˜ou“doŽŽŸ’õ€P77ŽŽŒ‹NI ª ýs o ý´‘b¹not–lNaccept“this“License.‘#åTherefore,‘šßb¸èy“moGdifying“or“distributing“the“ProgramŽ¤ ‘b(or–Ô*anš¸èy“w˜ork“based“on“the“Program),‘óíy˜ou“indicate“y˜our“acceptance“of“thisŽ¡‘bLicense–ÂÖto“do“so,›ÞDand“all“its“terms“and“conditions“for“cop¸èying,˜distributingŽ¡‘bor–U moGdifying“the“Program“or“w¸èorks“based“on“it.Ž©‘U9b6.ŽŽŽ‘bEacš¸èh–u—time“y˜ou“redistribute“the“Program“(or“an˜y“w˜ork“based“on“the“Pro-Ž¡‘bgram),‘KÈthe–Irrecipienš¸èt“automatically“receiv˜es“a“license“from“the“original“licen-Ž¡‘bsor–!Zto“cop¸èy‘ÿ*¸,‘Tidistribute“or“moGdify“the“Program“sub‘Ž0ject“to“these“terms“andŽ¡‘bconditions.‘­±Y‘ÿ*¸ou–¾†maš¸èy“not“impGose“an˜y“further“restrictions“on“the“recipien˜ts'Ž¡‘bexercise–ªîof“the“righš¸èts“gran˜ted“herein.‘rêY‘ÿ*¸ou“are“not“respGonsible“for“enforcingŽ¡‘bcompliance–U b¸èy“third“parties“to“this“License.Ž¦‘U9b7.ŽŽŽ‘bIf,‘òÀas–Ú(a“consequence“of“a“court“judgmenš¸èt“or“allegation“of“paten˜t“infringemen˜tŽ¡‘bor–©õfor“anš¸èy“other“reason“(not“limited“to“paten˜t“issues),‘Ì1conditions“are“impGosedŽ¡‘bon–ÌÌyš¸èou“(whether“b˜y“court“order,‘èagreemen˜t“or“otherwise)“that“con˜tradict“theŽ¡‘bconditions–R¯of“this“License,‘’they“do“not“excuse“y¸èou“from“the“conditions“ofŽ¡‘bthis–úLicense.‘{If“yš¸èou“cannot“distribute“so“as“to“satisfy“sim˜ultaneously“y˜ourŽ¡‘bobligations–«Áunder“this“License“and“anš¸èy“other“pGertinen˜t“obligations,‘Ájthen“asŽ¡‘ba–:³consequence“yš¸èou“ma˜y“not“distribute“the“Program“at“all.‘h±F‘ÿ*¸or“example,‘?üif“aŽ¡‘bpatenš¸èt–vˆlicense“w˜ould“not“pGermit“ro˜y˜alt˜y-free“redistribution“of“the“Program“b˜yŽ¡‘ball–ëthose“who“receivš¸èe“copies“directly“or“indirectly“through“y˜ou,‘?then“the“onlyŽ¡‘bw•¸èa“y›ÀÎy“ou˜could˜satisfy˜bGoth˜it˜and˜this˜License˜w“ould˜bGe˜to˜refrain˜en“tirelyŽ¡‘bfrom–U distribution“of“the“Program.Ž©‘bIf–ÝÜanš¸èy“pGortion“of“this“section“is“held“in˜v‘ÿqÐalid“or“unenforceable“under“an˜yŽ¡‘bparticular–=\circumstance,‘Bthe“balance“of“the“section“is“in¸ètended“to“apply“andŽ¡‘bthe–U section“as“a“whole“is“in¸ètended“to“apply“in“other“circumstances.Ž¦‘bIt– eis“not“the“purpGose“of“this“section“to“induce“yš¸èou“to“infringe“an˜y“paten˜tsŽ¡‘bor–BŒother“propGertš¸èy“righ˜t“claims“or“to“con˜test“v‘ÿqÐalidit˜y“of“an˜y“suc˜h“claims;‘H½thisŽ¡‘bsection–¬Àhas“the“sole“purpGose“of“protecting“the“in•¸ètegrit“y–¬Àof“the“free“soft•¸èw“areŽ¡‘bdistribution–Ñ system,‘ëwwhicš¸èh“is“implemen˜ted“b˜y“public“license“practices.‘EzMan˜yŽ¡‘bpGeople›b¢ha•¸èv“e˜made˜generous˜con“tributions˜to˜the˜wide˜range˜of˜soft“w“are˜dis-Ž¡‘btributed–+Âthrough“that“system“in“reliance“on“consisten¸èt“application“of“thatŽ¡‘bsystem;‘šÝit–ƒžis“up“to“the“author/donor“to“decide“if“he“or“she“is“willing“to“dis-Ž¡‘btribute›¬`soft•¸èw“are˜through˜an“y˜other˜system˜and˜a˜licensee˜cannot˜impGose˜thatŽ¡‘bc¸èhoice.Ž¦‘bThis–¾žsection“is“inš¸ètended“to“mak˜e“thoroughly“clear“what“is“bGeliev˜ed“to“bGe“aŽ¡‘bconsequence–U of“the“rest“of“this“License.Ž©‘U9b8.ŽŽŽ‘bIf–hthe“distribution“and/or“use“of“the“Program“is“restricted“in“certain“coun¸ètriesŽ¡‘beither–Vqbš¸èy“paten˜ts“or“b˜y“cop˜yrigh˜ted“in˜terfaces,‘VÆthe“original“cop˜yrigh˜t“holderŽ¡‘bwho–„>places“the“Program“under“this“License“ma¸èy“add“an“explicit“geographi-Ž¡‘bcal–˜¯distribution“limitation“excluding“those“coun¸ètries,‘©“so“that“distribution“isŽ¡‘bpGermitted–†÷only“in“or“among“counš¸ètries“not“th˜us“excluded.‘In“suc˜h“case,‘“mthisŽ¡‘bLicense–1…incorpšGorates“the“limitation“as“if“written“in“the“b˜o˜dy“of“this“License.Ž¦‘U9b9.ŽŽŽ‘bThe–±zF›ÿ*¸ree“Soft•¸èw“are–±zF˜oundation“maš¸èy“publish“revised“and/or“new“v˜ersions“ofŽ¡‘bthe–02General“Public“License“from“time“to“time.‘¶Sucš¸èh“new“v˜ersions“will“bGeŽ¡‘bsimilar–ø¹in“spirit“to“the“presenš¸èt“v˜ersion,‘!Ÿbut“ma˜y“dier“in“detail“to“addressŽ¡‘bnew–U problems“or“concerns.ŽŽŸ’õ€P78ŽŽŒ‹O¾ ª ýs o ý´‘b¹Eac•¸èh›"%v“ersion˜is˜giv“en˜a˜distinguishing˜v“ersion˜n“um“b•Ger.‘`‚If˜the˜Program˜sp“ec-Ž¤ ‘bies–Ñ&a“vš¸èersion“n˜um˜bGer“of“this“License“whic˜h“applies“to“it“and“an˜y“laterŽ¡‘bv•¸èersion,‘&Îy“ou›:ha“v“e˜the˜option˜of˜follo“wing˜the˜terms˜and˜conditions˜either˜ofŽ¡‘bthat–U©vš¸èersion“or“of“an˜y“later“v˜ersion“published“b˜y“the“F‘ÿ*¸ree“Soft˜w˜are“F‘ÿ*¸ounda-Ž¡‘btion.‘‹ïIf–]ðthe“Program“došGes“not“sp˜ecify“a“vš¸èersion“n˜um˜bGer“of“this“License,‘`$y˜ouŽ¡‘bma•¸èy›U c“hoGose˜an“y˜v“ersion˜ev“er˜published˜b“y˜the˜F‘ÿ*¸ree˜Soft“w“are˜F‘ÿ*¸oundation.Ž©‘P9²10.ŽŽŽ‘bIf–CÓyš¸èou“wish“to“incorpGorate“parts“of“the“Program“in˜to“other“free“programsŽ¡‘bwhose–>@distribution“conditions“are“dieren¸èt,‘xˆwrite“to“the“author“to“ask“forŽ¡‘bpGermission.‘TF‘ÿ*¸or›ü°soft•¸èw“are˜whic“h˜is˜cop“yrigh“ted˜b“y˜the˜F‘ÿ*¸ree˜Soft“w“are˜F‘ÿ*¸ounda-Ž¡‘btion,‘9nwrite–2to“the“F›ÿ*¸ree“Soft•¸èw“are‘2F˜oundation;‘> w“e–2sometimes“mak¸èe“exceptionsŽ¡‘bfor–]øthis.‘ŒOur“decision“will“bGe“guided“bš¸èy“the“t˜w˜o“goals“of“preserving“the“freeŽ¡‘bstatus–"¥of“all“deriv‘ÿqÐativš¸èes“of“our“free“soft˜w˜are“and“of“promoting“the“sharingŽ¡‘band–U reuse“of“soft•¸èw“are‘U generally‘ÿ*¸.Ž¤’ß& NO‘U W‘þã ARRANTYŽ¡‘NO&Ù11.ŽŽŽ‘bBecause–”bthe“Program“is“licensed“free“of“cš®>harge,‘Ä5there“is“no“w˜ar-Ž¤ ‘bran•®>t“y–Ž§for“the“Program,‘œ¾to“the“extenš®>t“pQÂermitted“b˜y“applicable“la˜w.Ž¡‘bexcept–çiwhen“otherwise“stated“in“writing“the“cop•®>yrigh“t‘çiholdersŽ¡‘band/or–˜Wother“parties“proš®>vide“the“program“as“is‘without“w˜ar-Ž¡‘bran•®>t“y–ðhof“an®>y“kind,›÷arran“ties–¶9of“merc•®>han“tabilit“y–¶9and“tnessŽ¡‘bfor–Càa“particular“purpQÂose.‘ë¸The“enš®>tire“risk“as“to“the“qualit˜y“and“pQÂer-Ž¡‘bformance–úof“the“Program“is“with“yš®>ou.‘ŠñShould“the“Program“pro˜v˜eŽ¡‘bdefectiv•®>e,›¨’y“ou–qassume“the“cost“of“all“necessary“servicing,˜repair“orŽ¡‘bcorrection.Ž¦‘NO&12.ŽŽŽ‘bIn–hÚno“ev•®>en“t–hÚunless“required“bš®>y“applicable“la˜w“or“agreed“to“in“writ-Ž¡‘bing–Š¥will“anš®>y“cop˜yrigh˜t“holder,‘™ˆor“an˜y“other“part˜y“who“ma˜y“moQÂdifyŽ¡‘band/or–redistribute“the“program“as“pšQÂermitted“ab˜o•®>v“e,‘ou–†mfor“damages,‘–)including“an˜y“general,––)spQÂecial,“inciden˜tal–†mor“con-Ž¡‘bsequenš®>tial–©ýdamages“arising“out“of“the“use“or“inabilit˜y“to“use“theŽ¡‘bprogram–i!(including“but“not“limited“to“loss“of“data“or“data“bQÂeingŽ¡‘brendered–ù½inaccurate“or“losses“sustained“bš®>y“y˜ou“or“third“parties“or“aŽ¡‘bfailure–¨êof“the“Program“to“opQÂerate“with“anš®>y“other“programs),‘±Àev˜enŽ¡‘bif–†¯sucš®>h“holder“or“other“part˜y“has“bšQÂeen“advised“of“the“p˜ossibilit®>y“ofŽ¡‘bsuc®>h‘Õdamages.ŽŸ’–yÏEND–ÕOF“TERMS“AND“CONDITIONSŽŸýY‘IâA.3Ž‘k/¤App_úendix:‘üNHo w–~to“Apply“These“T›þàerms“to“Y˜our“NewŽŸ‘k/¤ProgramsŽŸtî‘I¹If–µ7yš¸èou“dev˜elop“a“new“program,‘Õ2and“y˜ou“w˜an˜t“it“to“bšGe“of“the“greatest“p˜ossible“use“toŽ¡‘Ithe–²public,‘#ûthe“bGest“w•¸èa“y–²to“ac•¸èhiev“e–²this“is“to“makš¸èe“it“free“soft˜w˜are“whic˜h“ev˜ery˜oneŽ¡‘Ican–U redistribute“and“c¸èhange“under“these“terms.Ž¡‘XT‘ÿ*¸o–do“so,‘0jattacš¸èh“the“follo˜wing“notices“to“the“program.‘ÌIt“is“safest“to“attac˜hŽ¡‘Ithem–Âto“the“start“of“eacš¸èh“source“le“to“most“eectiv˜ely“con˜v˜ey“the“exclusion“ofŽŽŸ’õ€P79ŽŽŒ‹P.¶ ª ýs o ý´‘I¹w•¸èarran“t“y;‘›and›ƒÃeac“h˜le˜should˜ha“v“e˜at˜least˜the˜cop“yrigh“t‘Y line˜and˜a˜pGoin“ter˜toŽŸ ‘Iwhere–U the“full“notice“is“found.ŽŸ‘I厤 ‘ICopyright–¹N(C)“19yy‘ rœŽ©‘IThis–¹Nprogram“is“free“software;“you“can“redistribute“it“and/or“modifyŽ¡‘Iit–¹Nunder“the“terms“of“the“GNU“General“Public“License“as“published“byŽ¡‘Ithe–¹NFree“Software“Foundation;“either“version“2“of“the“License,“orŽ¡‘I(at–¹Nyour“option)“any“later“version.Ž¦‘IThis–¹Nprogram“is“distributed“in“the“hope“that“it“will“be“useful,Ž¡‘Ibut–¹NWITHOUT“ANY“WARRANTY;“without“even“the“implied“warranty“ofŽ¡‘IMERCHANTABILITY–¹Nor“FITNESS“FOR“A“PARTICULAR“PURPOSE.‘ rœSee“theŽ¡‘IGNU–¹NGeneral“Public“License“for“more“details.Ž¦‘IYou–¹Nshould“have“received“a“copy“of“the“GNU“General“Public“LicenseŽ¡‘Ialong–¹Nwith“this“program;“if“not,“write“to“the“Free“SoftwareŽ¡‘IFoundation,–¹NInc.,“675“Mass“Ave,“Cambridge,“MA“02139,“USA.Ž¦‘X¹Also–U add“information“on“hoš¸èw“to“con˜tact“y˜ou“b˜y“electronic“and“papGer“mail.Ž¤ ‘XIf–âOthe“program“is“in•¸èteractiv“e,‘›mak“e–âOit“output“a“short“notice“lik¸èe“this“when“itŽ¡‘Istarts–U in“an“in•¸èteractiv“e‘U moGde:ŽŸ‘IåGnomovision–¹Nversion“69,“Copyright“(C)“19yy“name“of“authorŽ¤ ‘IGnomovision–¹Ncomes“with“ABSOLUTELY“NO“WARRANTY;“for“details“type“`show“w'.Ž¡‘IThis–¹Nis“free“software,“and“you“are“welcome“to“redistribute“itŽ¡‘Iunder–¹Ncertain“conditions;“type“`show“c'“for“details.Ž¦‘X¹The–f¡hš¸èypGothetical“commands“`sho˜w“w'“and“`sho˜w“c'“should“sho˜w“the“appropriateŽ¤ ‘Iparts– Ôof“the“General“Public“License.‘Of“course,‘7the“commands“yš¸èou“use“ma˜y“bGeŽ¡‘Icalled–p2something“other“than“`shoš¸èw“w'“and“`sho˜w“c';‘¼‚they“could“ev˜en“bGe“mouse-clic˜ksŽ¡‘Ior–U menš¸èu“itemswhatev˜er“suits“y˜our“program.Ž¡‘XY‘ÿ*¸ou–—:should“also“get“yš¸èour“emplo˜y˜er“(if“y˜ou“w˜ork“as“a“programmer)“or“y˜ourŽ¡‘Isc•¸èhoGol,›S?if‘RÆan“y‘ÿ*¸,˜to–RÆsign“a“cop•¸èyrigh“t–RÆdisclaimer‘(for“the“program,˜if“necessary‘ÿ*¸.‘p·HereŽ¡‘Iis–U a“sample;“alter“the“names:ŽŸ‘IåYoyodyne,–¹NInc.,“hereby“disclaims“all“copyright“interest“in“the“programŽ¤ ‘I`Gnomovision'–¹N(which“makes“passes“at“compilers)“written“by“James“Hacker.Ž¦‘I,“1“April“1989Ž¡‘ITy–¹NCoon,“President“of“ViceŽ¦‘X¹This–6çGeneral“Public“License“došGes“not“p˜ermit“incorp˜orating“yš¸èour“program“in˜toŽ¤ ‘Iproprietary–‘Òprograms.‘'–If“yš¸èour“program“is“a“subroutine“library‘ÿ*¸,‘ ÿy˜ou“ma˜y“considerŽ¡‘Iit–—4more“useful“to“pGermit“linking“proprietary“applications“with“the“library‘ÿ*¸.‘7»If“thisŽ¡‘Iis–«what“yš¸èou“w˜an˜t“to“do,‘Àyuse“the“GNU‘ªëLibrary“General“Public“License“instead“ofŽ¡‘Ithis‘U License.ŽŽŸ’õ€P80ŽŽŒ‹Q<Ê ª ýs o ý´‘IØIndexŽŸæ~‘I¹Num¸èbšGers–·written“in“italic“refer“to“the“page“where“the“corresp˜onding“en¸ètry“is“de-Ž¤ ‘IscribšGed,‘Lthe–ones“underlined“to“the“co˜de“line“of“the“denition,‘Lthe“rest“to“the“co˜deŽ¡‘Ilines–U where“the“en¸ètry“is“used.Ž ‚ ýùØ&’‹ÙëCSym´HbK·olsŽ¤ e‘Iå\,‘2É‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘11991201,–$1263,“1264,“1266Ž¡‘Iå\@@‘ò‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I822,‘$824Ž¡‘Iå\@M‘ò‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ˆ‹527,–$998,“1126Ž¡‘Iå\@array‘Æ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I426,‘$428Ž‘$Ÿ™”‰fe ß"ŽŽ¡‘Iå\@arraycr‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ785Ž‘ÐQŸ™”‰fe ß"ŽŽ¡‘Iå\@arrayleft‘ ä421,–$424,“460,“473,“486,“504Ž¡‘Iå\@arrayparboxrestore‘fF‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ314Ž¡‘Iå\@arrayright‘Yu‘}mä.Ž‘Œw‘}m.Ž‘ óº422,–$425,“464,“477,“490Ž¡‘Iå\@arstrut‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I342,‘$437Ž¡‘Iå\@arstrutbox‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ p325,Ž© ‘g328,–ÿe331,“332,“409,“482,“541,“797Ž¡‘Iå\@centering‘†L‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I906,‘$914Ž¡‘Iå\@currentlabel‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ i 954,‘$1089Ž¡‘Iå\@depth‘Æ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I412,‘$797Ž¡‘Iå\@endpetrue‘†L‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ509Ž¡‘Iå\@eqalastfalse‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ958Ž¡‘Iå\@eqalasttrue‘,ž‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ½1011Ž¡‘Iå\@eqncr‘Æ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I968,‘$998Ž¡‘Iå\@firstofone‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ795Ž¡‘Iå\@firstoftwo‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ i 621,‘$1223Ž¡‘Iå\@fleqntrue‘†L‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ894Ž¡‘Iå\@gobble‘™H‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž‘ @Å172,–$703,“805,“1061,“1194Ž¡‘Iå\@height‘™H‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ GÂ411,–$644,“675,“710Ž¡‘Iå\@ifnextchar‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž‘ [‰240,–$247,“249,“254,Ž¦‘g262,–Å€263,“426,“585,“588,“593,Ž¦‘g596,–Å€694,“742,“750,“761,“767,Ž¦‘g814,––951,“1034,“1036,“1157,“1214Ž¡‘Iå\@ifstar‘™H‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ811Ž¡‘Iå\@ifundefined‘,ž‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A227,–$234,“720Ž¡‘Iå\@ignoretrue‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I509,‘$980Ž¡‘Iå\@leqnotrue‘†L‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ895Ž¡‘Iå\@let@token‘†L‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.ŽŽ¦‘g‘}m.Ž‘ }†205,–$207,“214,“215,“217,“633,“636Ž¡‘Iå\@m‘ò‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A325,–$792,“907Ž¡‘Iå\@maybe@unskip‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.ŽŽ¦‘g‘}m.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qD29Ž‘ qDŸ™”‰fe ?lŽ‘°°,–$185,“323,“344,“436,“795Ž¡‘Iå\@minipagefalse‘Òð‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ318Ž¡‘Iå\@minipagetrue‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ316Ž¡‘Iå\@minus‘Æ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I912,‘$915Ž¡‘Iå\@mkpream‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ338Ž¡‘Iå\@namedef‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ƒÎ89,Ž¦‘g94,–:101,“233,“727,“950,“1074,“1196Ž¡‘Iå\@nameuse‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I230,‘$237Ž¡‘Iå\@parboxrestore‘Òð‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ554Ž¡‘Iå\@plus‘òö‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A515,–$516,“907Ž¡‘Iå\@preamble‘?š‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ346Ž¡‘Iå\@secondoftwo‘,ž‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ623ŽŽ ýùØ&’ÿ€å\@sharp‘Æ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ344Ž¤ ó’ÿ€å\@sptoken‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ207Ž¡’ÿ€å\@tabarray‘?š‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A364,–$402,“423Ž¡’ÿ€å\@tabular‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A394Ž‘(AŸ™”‰fe ß"Ž‘c,–$404,“405Ž¡’ÿ€å\@tempa‘Æ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ƒÎ64,Ž¤ ’€65,–a¦83,“87,“108,“110,“112,“215,Ž¡’€219,–Å€221,“224,“731,“733,“737,Ž¡’€754,–tÓ756,“758,“822,“824,“1225,“1228Ž¤ ó’ÿ€å\@tempcnta‘?š‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I590,‘$591Ž¡’ÿ€å\@tempswafalse‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.ŽŽ© ’€‘}m.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ¾O468,–$501,“503,“505,“617,“1148Ž¡’ÿ€å\@tempswatrue‘,ž‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ;496498,–$627,“1146Ž¡’ÿ€å\@totalleftmargin‘yB‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A510,–$513,“557Ž¡’ÿ€å\@whilenum‘?š‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I664,‘$671Ž¡’ÿ€å\@width‘Æ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ óº289,–$413,“648,“710,“797Ž¡’ÿ€å\\‘2É‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž‘ 9È807,–$968,“1039,“1098,“1106,“1176Ž¡’ÿ€å\{‘2É‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ UË1263,‘$1265ŽŸMØ’Q»¢ëCAŽ¡’ÿ€å\abovedisplayskip‘yB‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ÐQ944Ž¡’ÿ€å\afterassignment‘¦‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A585,–$590,“601Ž¡’ÿ€å\array‘òö‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ i 370,‘$1263Ž¡’ÿ€åarray›$ä(en•¾­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB19ä,‘$65Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åeqlines‘k„‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB19ä,‘$65Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åeqnalign‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB19ä,‘$65Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åeqnarray*‘…_‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB16ä,‘$60Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åeqnarray‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB16ä,‘$60Ž‘$Ÿ™”‰fe ?lŽŽ¡’€ågenmatrix‘…_‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB25ä,‘$69Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åmatrix‘˜[‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB22ä,‘$71Ž‘$Ÿ™”‰fe ?lŽŽ¡’€ånewmatrix‘…_‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ —ëB25Ž¡’€åpmatrix*‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ —ëB25Ž¡’€åpmatrix‘k„‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB24ä,‘$71Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åscript‘˜[‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB25ä,‘$72Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åsdmatrix*‘…_‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB25ä,‘$71Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åsdmatrix‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB24ä,‘$71Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åsmarray‘k„‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ p40Ž‘ pŸ™”‰fe ?lŽŽ¡’€åsmatrix*‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ p71Ž‘ pŸ™”‰fe ?lŽŽ¡’€åsmatrix‘k„‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB24ä,‘$71Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åsmcases‘k„‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB26ä,‘$73Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åspliteqn*‘…_‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB22ä,‘$66Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åspliteqn‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB22ä,‘$66Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åspmatrix*‘…_‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB25ä,‘$71Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åspmatrix‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB24ä,‘$71Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åsubsplit‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ qëB22ä,‘$67Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åtabular*‘>­‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘)œëB5ä,‘$40Ž‘$Ÿ™”‰fe ?lŽŽ¡’€åtabular‘k„‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘)œëB5ä,‘$40Ž‘$Ÿ™”‰fe ?lŽŽ¡’ÿ€å\eqa@@lastcol‘,ž‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ b 1025,–$1029,“1030Ž¡’ÿ€å\eqa@defnumber‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ˆ‹956,–$957,“1024Ž¡’ÿ€å\eqa@eqcount‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž‘948,–$1031,“1032Ž“Ÿ™”‰fe~ØŽ‘“ü,“1071Ž¡’ÿ€å\eqa@eqnum‘?š‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ uL976,–$1000,“1010Ž“Ÿ™”‰fe~ØŽŽ¡’ÿ€å\eqa@eqnum@i‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ b 1012,–$1014,“1028Ž¡’ÿ€å\eqa@eqnum@ii‘,ž‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ UË1017,‘$1022Ž¡’ÿ€å\eqa@eqnum@iii‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ UË1019,‘$1028Ž¡’ÿ€å\eqa@eqpos‘?š‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ b 1003Ž‘ b Ÿ™”‰fe~ØŽ‘àå,–$1023,“1121Ž¡’ÿ€å\eqa@lastcol‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž‘973,–$1011,“1025,“1029Ž“Ÿ™”‰fe~ØŽŽ¡’ÿ€å\eqa@number‘†L‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ 955,‘$957,Ž¤ ’€979,–³Z1023,“1024,“1031,“1033,Ž¡’€1070,–¼’1071,“1075,“1076,“1083,“1121Ž© š’ÿ€å\eqa@oldnumber‘ÿÇ‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.ŽŽ¡’€‘}m.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ëÙ955,–$979,“1070,“1075,“1083Ž¦’ÿ€å\eqacloseskip‘,ž‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A900,–$906,“964Ž¦’ÿ€å\eqacolskip‘†L‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘(A901,–$907,“991Ž¦’ÿ€å\eqacr@i‘™H‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ |I998,‘$999Ž¦’ÿ€å\eqainskip‘?š‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ 4ƒ902,–$908,“966,“1044Ž¦’ÿ€å\eqaopenskip‘Yu‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ GÂ899,–$910,“914,“970Ž¦’ÿ€å\eqastyle‘lq‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ NÎ946,–$985988,“990Ž¦’ÿ€å\eqlines‘™H‘}mä.Ž–Œw‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž“‘}m.Ž‘ ½1062Ž¦’ÿ€åeqlines›$ä(en•¾5ùž" cmmi9ó=o´‹Ç cmr9ó< {—}ecti0800ó;º7Lecrm0600ó:qLË ectt0900ó9Ù.œŒ ecrm0900ó8¿&Ëectt0800ó7¥!¢N ecbx1200ó6DZYecti0700ó5½HЃ ecti1000ó4TÆ2‚ecrm0700ó3»y&³ ecsx1000ó2Œ6 ecss1000ó1qLË ectt1000ó.]fŒ ecbx1000ó-&Lt$ffffecbx1440ó+:–ã ecss0800ó(¦÷²"ecrm0800ó#q¡% cmsy6ó¹Aa¨cmr6óÓ·å ecrm1200óý': cmti10óò"V cmbx10ó!",š cmsy10óBCØG®G®ecss1728óUªsÉG®G®ecrm1728ó 1ê± ecrm1000ó !",š cmsy10ó O!â…cmsy7ó  b> cmmi10ó 0e—rcmmi7óKñ`y cmr10óÙ“ Rcmr7ó†›Zcmr5óü<˜ lcircle10óäO£ line10óú±u cmex10ùo—ßßßß