; TeX output 1998.01.17:2005y?cDtGGcmr17The7tGGcmss17longtablepacqkage!", cmsy10XQ cmr12DarvidCarlisle2K cmsy8y37 1997/10/16.!Kt : cmbx9Abstractэxo cmr9This_pac9k|ragede nestheow cmss9longtableenvironment,ramulti-pageversionof ktabula9r.R Nff cmbx12ListffofTfablesaK`y cmr101xAnUUoptionaltablecaption(usedinthelistoftables))........V2 a2xAUU oatingtableF.............................V4a3xAUUdicult!'ExX'sstandardpage-breakingalgorithm.mItalsosharessomefeatureswithRthe˱tableenvironment.In˱particularitusesthesamecounter,Htable,and˱hasaRsimilar+\captioncommand.Also,aPthestandard\listoftablescommandlistsRtablesUUproGducedbyeitherthetableorlongtableenvironments.aTheCfollowingexampleusesmostofthefeaturesofthelongtableenvironment.RAnUUeditedlistingoftheinputforthisexampleappGearsinSection8.a$"V cmbx10Note:;V*ariouspartsofthefollowingtablewillnotlineupcorrectlyuntilRthisSdoGcumenthasbeenrunthroughL5ffٓRcmr7A͉TU>'ExXseveraltimes.q+ThisisacharacteristicRfeatureUUofthispackqage,asdescribGedbelow.R%ffr @ -:q% cmsy6L|{Ycmr8ThisX lehasvÎersionnumbnewalgorithmforaligning`cÎhunks'>ofatableusedinvÎersion4ofthispackagewas devisedXco'ExXwillQjneverUUbreakaYpageUUwithin[4suchUUarow.XPageUUbreaks_vonlyUUoGccurG>bGetweenUUrowsofMtheUUtableoratmf\hline\commands. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*aff1 Uaff1 Ua*Lots^1ȲofUUlines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis^2 T*aff1 Uaff1 Ua*xLotsUUoflines͟ ff ffD6likeUUthis. T*a*xLotsUUoflines͟ ff ffD6likeUUthis. T*(fhۙaff1 Uaff1 Ua*qTheseUUlineswill͟ ff ffD6appGear T*a*G.inUUplaceofthe͟ ff ffD6usualUUfoGot T*a*0atUUtheend͟ ff ffD6ofUUthetable T*aff1 Uaff1 URffffr J= "5-:Aacmr61LThisXisafo "5-:2L&s6cmss8longtableXtakÎessp'ExXmulti-pagetables,itisnecessarytobreakupthetableintosmallerLTchunksize Rchunks,soXthatTU>'ExXdoGesnothaveXtokeepeverythinginmemoryatonetime.XByRdefault8longtableuses20rowspGerchunk,butthiscanbGesetbytheuser,withe.g.,R\setcounter{LTchunksize}{10}.^3 TheseLchunksdonota ectpagebreaking,RthusQifyouareusingaTU>'ExXwithalotofmemory*,,PyoucansetLTchunksizetoRbGe^severalpagesofthetable.TU>'ExXwillrunfasterwithalargeLTchunksize.RHowever,ifSnecessary*,longtablecanworkwithLTchunksizesetto1,inwhichRcase6thememorytakenupisnegligible.jNotethatifyouusethecommandsforRsettingthetableheadorfoGot(seebelow),GtheLTchunksizemustbGeatleastasRlargeUUasthenumbGerUUofrowsineachoftheheadorfoGotsections.aThiszVdoGcumentspeci es\setcounter{LTchunksize}{10}.IfyoulookattheRprevioustable,ȵafterthe'': cmti10 rstzrunofL5ffA͉TU>'ExXyouwillseethatvqariouspartsoftheRtable{donotlineup.L5ffA͉TU>'ExXwillalsohave{printedawarningthatthecolumnRwidthshadchanged.Flongtablewritesinformationontothe.aux le,sothatitcanRlineupthedi erentchunks.JPriortoversion4ofthispackqage,܌thisinformationRwasnotusedunlessa\setlongtablescommandwasissued,%Chowever,nowtheRinformation "5-:4LDueXtoDaÎvidKastrup.Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.zPageUU4ft.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.5 yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?R\multicolumn{n}{c}{\parbox{\LTcapwidth}{...}} RwhereKsnisthenumbGerKsofcolumnsofthetable.T!Y*oumaysetthewidthoftheRcaption lwithacommandsuchas\setlength{\LTcapwidth}{2in}inthepream-RbleofyourdoGcument.Thedefaultis4in.\captionalsowritestheinformationRtoproGduceanentryinthelistoftables.Aswiththe\captioncommandintheR gureandtableenvironments,anoptionalargumentspGeci esthetexttoappearRinthelistoftablesifthisisdi erentfromthetexttoappGearinthecaption.OThusRthe`captionfortable1wasspGeci edas\caption[An?optionaltablecaptionR(used?inthelistoftables)]{Alongtable\label{long}}.aY*ouSmaywishthecaptiononlaterpagestobGedi erenttothatonthe rstpage.RInthiscaseputthe\captioncommandinthe rstheading,andputasubsidiaryRcaptionOina\caption[]commandinthemainheading.PIftheoptionalargumentRto\captionisempty*,!noentryismadeinthelistoftables.Alternatively*,!ifRyourdonotwantthetablenumbGertobeprintedeachtime,Kusethe\caption*Rcommand.aThe!captionsaresetbasedonthecoGdeforthearticleclass.hIfyouhavere-Rde nedDthestandard\@makecaptioncommandtoproGduceadi erentformatforRthecaptions,L,youmayneedtomakesimilarchangestothelongtableversion,R\LT@makecaption.qSeeUUthecoGdesectionformoredetails.aAmore convenientmethoGdofcustomisingcaptionsisgivenbythecaption(2)Rpackqage,[whichMprovidescommandsforcustomisingcaptions,[andarrangesthattheRcaptions1instandardenvironments, and1manyenvironmentsprovidedbypackqagesR(includingxlongtable)UUaremoGdi edinacompatiblemanner.aY*oumayusethe\labelcommandsothatyoucancrossreferencelongtablesRwithor\ref.Notehowever,thatorthe\labelcommandshouldnotbGeusedinaRheading\thatmayappGearmorethanonce.?Placeiteitherinthe rsthead,orinRtheUUbGodyofthetable.qItshouldnotbethe rstH-commandinanyentry*.!čR4jLMulticolumnffentriesRTher\multicolumncommandmaybGeusedinlongtableinexactlythesamewayasRforXtabular.Soyoumaywanttoskipthissection,mwhichisrathertechnical,mhoweverRcoping9with\multicolumnisoneofthemainproblemsforanenvironment9suchRas6longtable.pkThemaine ectthatauserwillseeisthatcertaincombinationsofR\multicolumnentrieswillresultinadoGcumentneedingmorerunsofL5ffA͉TU>'ExXbGeforeRtheUUvqarious`chunks'UUofatablealign.aTheexamplesinthissectionaresetwithLTchunksizesettotheminimumRvqalueyofone, todemonstratethee ectswhen\multicolumnentriesoGccurindif-RferentUUchunks.aConsiderT*able3.;Inthesecondchunk,longtableseesthewidemulticolumnRentry*.At`cthispGointitthinksthatthe rsttwocolumnsareverynarrow.AllRtheowidthofthemulticolumnentryisassumedtobGeinthethirdcolumn.G(ThisRisUVa`feature'ofTU>'ExX'sprimitive\haligncommand.)qlongtablethenpassestheRinformation; thatthereisawidethirdcolumntothelaterchunks,@Lwith; theresultRthatUUthe rstpassoverUUthetableistoGowide.Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.zPageUU5ft.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.H}yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?I҈jT*ableUU3:qAdicult\multicolumncombination:pass1X-aff3aff3fd`ͤ ff͟fd1 ffx2͟ ff3͟ ff `ͤ ff͟fdwideUUmulticolumnspanning1{3 ff`ͤ ff͟fdmulticolumnUU1{2 ff37+ ff`ͤ ff͟fdwideUU1 ffz2S ff837+ ffaffYaffYfdXT*ableUU4:qAdicult\multicolumncombination:pass2affYaffYfd`ͤ ffwyfd1 ffz2S ff837+ ff`ͤ ff͟fdwideUUmulticolumnspanning1{3 ff`ͤ ff͟fdmulticolumnUU1{2 ffȱ3p^ ff`ͤ ff͟fdwideUU1 ff12C ffȱ3p^ ffaffUhaffUhfd(fT*ableUU5:qAdicult\multicolumncombination:pass3affUhaffUhfd`ͤ ffwyfd1 ff12C ffȱ3p^ ff`ͤ ff͟fdwideUUmulticolumnspanning1{3 ff`ͤ ff͟fdmulticolumnUU1{2 ff\3  ff`ͤ ff͟fdwideUU1 ff12C ff\3  ffaffafffd3T*ableUU6:qAdicult\multicolumncombination:pass4affafffd`ͤ ffwyfd1 ff12C ff\3  ff`ͤ ff͟fdwideUUmulticolumnspanning1{3 ff`ͤ ff͟fdmulticolumnUU1{2 ff\3  ff`ͤ ff͟fdwideUU1 ff12C ff\3  ffaffaffRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.zPageUU6ft.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.[yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?aIfthe`savedrow'fromthis rstpasswasre-insertedintothetableonthenext Rpass,UUthetablewouldlineupintwopasses,butwouldbGemuchtwowide.aTheLsolutiontothisproblemusedinV*ersions1and2,wastousea\kill/`\killRline.yIf;alineis\killed,byusing\killratherthan\\attheendoftheline,Ritisusedincalculatingcolumnwidths,butremovedfromthe naltable.qThusRenteringک\killedcopiesofthelasttworowsbGeforethewidemulticolumnentryRwouldpmeanthat\halign`saw'thewideentriesinthe rsttwocolumns,wandsoRwould*%notwidenthethirdcolumnbysomuchtomakeroGomforthemulticolumnRentry*.aInk-V*ersion3,panewsolutionwasintroGduced.PIfthesavedrowinthe.aux leRwas'notbGeingused,P[longtableusedaspecial`draft'formof\multicolumn,P[thisRmoGdi edthede nition,sothespanningentrywasneverconsideredtobGewiderRthanxthecolumnsitspanned.V1Soafterthe rstpass,the.aux lestoredtheRwidestPnormalentryforeachcolumn,-nocolumnwaswideneddueto\spannedRcolumns.By`defaultlongtableignoredthe.aux le,andsoeachrunofL5ffA͉TU>'ExXRwassconsidereda rstpass.w!Oncethe\setlongtablesdeclarationwasgiven,Rthesavedrowinthe.aux le,,andthepropGerde nitionof\multicolumnwereRused.qIfany\multicolumnentrycausedoneofthecolumnstobGewidened,thisRinformationcouldnotbGepassedbacktoearlierchunks,andsothetablewouldnotRcorrectlylineupuntilthethirdpass.%ThisalgorithmalwaysconvergedinthreeRpasses"asdescribGedabove,V.but"inexamplessuchastheonesinT*ables3{6,theR nal/widthswerenotoptimalasthewidthofcolumn2,7WwhichisdeterminedbyaR\multicolumn7˲entrywasnotknownwhenthe nalwidthforcolumn3was xed,Rduetothefactthatb}'othK<\multicolumncommandswereswitchedfrom`draft'RmoGdeUUto`normal'modeatthesametime.aV*ersionN4alleviatestheproblemconsiderably..The rstpassofthetablewillRindeedhavethethirdcolumnmuchtoGowide.OHowever,6onthenextpasslongtableRwillZnoticetheerrorandreducethecolumnwidthaccordingly*.IfthishastoRpropagatetochunksbGeforethe\multicolumnone, Fanadditionalpasswill,ofRcourse,w'ExX-inga letwice,ʋyoushouldmakethe rstlineofReverylongtableo'ExX.akTheUU\newpagecommandnowworksinsidealongtable.aChangesUUmadebGetweenUUversions3and4.akAvnewalgorithmisusedforaligningchunks.OAswellasthewidestwidthkin9eachcolumn,?WlongtableremembGerswhichchunkproGducedthismaximum.kThis~allowsittocheckthatthemaximumisstillachievedinlaterruns.kAslongtablecannowdealwithcolumnsshrinkingasthe leisedited,thek\setlongtablesUUsystemisnolongerneededandisdisabled.akAn(extrabGene tofthenewalgorithm'sabilitytodealwith`shrinking'kcolumnsËisthatitcangivebGetter(narrower)columnwidthsinthecasekof overlapping\multicolumnentriesindi erentchunksthanthepreviouskalgorithmUUproGduced.akTheV`draft'multicolumnsystemhasbGeenremoved,V.alongwithrelatedcom-kmandsUUsuchas\LTmulticolumn.akThedisadvqantageofthenewalgorithmisthatitcantakemorepasses.kThetheoreticalmaximumisapproximatelytwicethelengthofa`chain'kof~columnswithoverlapping~\multicolumnentries,HalthoughinpracticeitkusuallyXconvergesasfastastheoldversion.y(WhichalwaysconvergedinkthreeUUpassesonce\setlongtableswasactivqated.)ak\\*UUand\nopagebreakcommandsmaybGeusedtocontrolpagebreaking.!čR7jLSummary!K^T*ableUU7:qAsummaryofrlongtablecommandsX+GP9arametersNaffNafffdNb\LTleftGlueUUtotheleftofthetable.~(\fill)Nb\LTrightGlueUUtotherightofthetable.wR (\fill)Nb\LTpreGlueUUbGeforethethetable.YG(\bigskipamount)Nb\LTpostGlueUUafterthethetable.`<(\bigskipamount)Nb\LTcapwidthTheUUwidthofaparbGoxcontainingthecaption.;`(4in)NbLTchunksizeTheUUnumbGerofrowspGerchunk.(20)}hOptionalTargumen9tstoUU\begin{longtable}NaffNafffdNbnonePositionUUasspGeci edby\LTleftand\LTright.Nb[c]CentreUUthetable.Nb[l]PlaceUUthetable ushleft.Nb[r]PlaceUUthetable ushright.Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.zPageUU9ft.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. uyRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?UcCommandsTtoendtablero9wsNaffNafffdNb\\SpGeci esUUtheendofarow Nb\\[hdimci]EndsM9row, thenaddsverticalspace(asinthetabularpƲenvironment).Nb\\*TheUUsameas\\butdisallowsapagebreakaftertherow.Nb\tabularnewlineAlternativertto\\foruseinthescopGeof\raggedrightandsimilarcommandsUUthatrede ne\\.Nb\killRowUUis`killed',butisusedincalculatingwidths.Nb\endheadSpGeci esUUrowstoappearatthetopofeverypage.Nb\endfirstheadSpGeci esUUrowstoappearatthetopthe rstpage.Nb\endfootSpGeci esUUrowstoappearatthebottomofeverypage.Nb\endlastfootSpGeci esUUrowstoappearatthebottomofthelastpage. (kAH cmssbx10longtableTcaptioncommandsNaffNafffdNb\caption{hc}'aptionci'b}Caption&`T*able?:Zhc}'aptionci,T',0anda`hc}'aptionci'b'entryinthelistoftables.Nb\caption[hlotظi]{hc}'aptionci'b}Captionթ`T*able?:rphc}'aptionci/lҲ',5anda`hlotظi'entryinthelistoftables.Nb\caption[]{hc}'aptionci'b}CaptionUU`T*able?:qǸhc}'aptionci,l)',butnoentryinthelistoftables.Nb\caption*{hc}'aptionci'b}CaptionUU`hc}'aptionci'b',butnoentryinthelistoftables.{CommandsTa9v\railableatthestartofarowNaffNafffdNb\pagebreakF*orceUUapagebreak.Nb\pagebreak[hvali]AUU`hint'bGetween0and4ofthedesirabilityofabreak.Nb\nopagebreakProhibitUUapagebreak.Nb\nopagebreak[hvali]AUU`hint'bGetween0and4oftheundesirabilityofabreak.Nb\newpageF*orceUUapagebreak.s`F oQotnoteTcommandsa9v\railableinsidelongtableNaffNafffdNb\footnoteF*oGotnotes,UUbutmaynotbeusedinthetablehead&foot.Nb\footnotemarkF*oGotnotemark,UUmaybeusedinthetablehead&foot.Nb\footnotetextF*oGotnoteUUtext,useinthetablebody*.QSetlongtablesNaffNafffdNb\setlongtablesObsoleteUUcommand.qDoGesnothingnow.Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU10Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. 5yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?R8jLVferbatimffhighlightsfromTable1V\begin{longtable}{@{*}r||p{1in}@{*}} VKILLED&LINE!!!!\killV\caption[Anoptionaltablecaption...]{Alongtable\label{long}}\\V\hline\hlineV\multicolumn{2}{@{*}c@{*}}%nY{Thispartappearsatthetopofthetable}\\V\textsc{First}&\textsc{Second}\\V\hline\hlineV\endfirstheadV\caption[]{(continued)}\\V\hline\hlineV\multicolumn{2}{@{*}c@{*}}%s{Thispartappearsatthetopofeveryotherpage}\\V\textbf{First}&\textbf{Second}\\V\hline\hlineV\endheadV\hlineVThisgoesatthe&bottom.\\V\hlineV\endfootV\hlineVTheselineswill&appear\\Vinplaceofthe&usualfoot\\Vattheend&ofthetable\\V\hlineV\endlastfootV\env{longtable} s,columnsarespecified&inthe\\Vsamewayas s,inthe\env{tabular}&environment.\\V...V\multicolumn{2}{||c||}{Thisisa...}\\V...VSomelinesmaytake...&i\raggedleftThislastcolumnisa``p''column...i\tabularnewlineV...VLotsoflines&likethis.\\V...V\hlineVLots\footnote{...}oflines&likethis.\\VLots,oflines&likethis\footnote{...}\\V\hlineVLotsoflines&likethis.\\V...V\end{longtable}Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU11Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?R9jLTheffMacrosUs1\* cmsy9hpack9age#g iR-N cmbx129.1pInitialco`deuTRBeforeUUdeclaringthepackqageoptions,wemustde nesomedefaultshere.'3P\LT@errRTheUUerrorgeneratingcommandUs2\\def\LT@err{\PackageError{longtable}}"y\LT@warnRTheUUwarninggeneratingcommandUs3\\def\LT@warn{\PackageWarning{longtable}} 6\LT@final@warnRIf;anyBlongtableshavenotaligned,Qgenerateawarningattheendoftherunat R\AtEndDocument.Us4\\def\LT@final@warn{% Us5f\AtEndDocument{%Us6o\LT@warn{Table\@widthshavechanged.RerunLaTeX.\@gobbletwo}}%Us7f\global\let\LT@final@warn\relax}6R9.2pOptionsuTRThe|o rsttwo|ooptionsdealwitherrorhandling.Theyarecompatiblewiththe RoptionsUUusedbythetracefntpackqage.$errorshowROnly7ҲshowUUerrorsontheterminal.q`warnings'arejustsenttothelog le.Us8\\DeclareOption{errorshow}{%Us9f\def\LT@warn{\PackageInfo{longtable}}}'3PpausingRMakeeverywarningmessageintoanerrorsoTU>'ExXstops.,pMaybGeusefulforde- Rbugging.R10\\DeclareOption{pausing}{%R11f\def\LT@warn#1{%R12o\LT@err{#1}{Thisisnotreallyanerror}}}:set 0|finalRTheJnextoptionsarejustalternativesyntaxforthe\setlongtablesdeclaration.R13\\DeclareOption{set}{}R14\\DeclareOption{final}{}R15\\ProcessOptions6R9.3pUserSetableParametersuT'3P\LTleft "y\LTrightRGlueUUtotheleftandrightofthetable,default\fill(iecentred).R16\\newskip\LTleft!\LTleft=\fillR17\\newskip\LTrightY\LTright=\fillRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU12Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. +yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?+\LTpre '3P\LTpostRGlueUUbGeforeandafterthelongtable.q\bigskipbydefault.R18\\newskip\LTpre%̰\LTpre=\bigskipamount R19\\newskip\LTpost!\LTpost=\bigskipamountb\LTchunksizeRChunkUUsize(ThenumbGerofrowstakenpGer\halign).qDefault20.R20\\newcount\LTchunksize\LTchunksize=20 6\c@LTchunksizeRAddedUUinV3.07toallowtheL5ffA͉TU>'ExXsyntax\setcounter{LTchunksize}{10}.R21\\let\c@LTchunksize\LTchunksizeL\LTcapwidthRWidthUUofthe\parboxcontainingthecaption.qDefault4in.R22\\newdimen\LTcapwidth s,\LTcapwidth=4in6R9.4pInternalParametersuT"y\LT@head \LT@firsthead "y\LT@foot b\LT@lastfootRBoxesUUforthetableheadandfoGot.R23\\newbox\LT@head R24\\newbox\LT@firstheadR25\\newbox\LT@footR26\\newbox\LT@lastfoot"y\LT@colsRCounterUUfornumbGerofcolumns.R27\\newcount\LT@cols"y\LT@rowsRCounterUUforrowsuptochunksize.R28\\newcount\LT@rowsb\c@LT@tablesRCounterQbforthetables,eaddedinV3.02.ePreviousversionsjustusedtheL5ffA͉TU>'ExX Rcountertable,sbutthisfailsiftableisresetduringadoGcument,seg.reportclassRresetsUUiteverychapter.aThiswaschangedfrom\newcount\LT@tablesinV3.04.(TL5ffA͉TU>'ExXcountersareRpreserved"correctlywhen\includeonlyisused.?aIntherestofthe le\LT@tablesRhasUUbGeenreplacedby\c@LT@tableswithoutfurthercomment.R29\\newcounter{LT@tables}b\c@LT@chunksRW*eUUneedtocountthroughthechunksofourtablesfromV*ersion4on.R30\\newcounter{LT@chunks}[LT@tables]"y\c@table L\fnum@table \tablenameRIfthetablecounterisnotde ned(eginletterstyle),de neit.(Addedin RV3.06.)R31\\ifx\c@table\undefined R32f\newcounter{table}R33f\def\fnum@table{\tablename~\thetable}R34\\fiR35\\ifx\tablename\undefinedR36f\def\tablename{Table}R37\\fiRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU13Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.ǠyRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?'3P\LT@outRInanormalstyle,Blongtableusesthe.aux letorecordthecolumnwidths.6With Rletter.sty,UUuseaseparate.lta le.q(AddedinV3.06.)aNotUUneededfornewletterclass.R\ifx\startlabels\undefined [s,\let\@auxout\@auxoutR\else[s,{\@input{\jobname.lta}}%[s,\newwrite\@auxout[s,\immediate\openout\@auxout=\jobname.ltaR\fi$\LT@p@ftnRT*empGoraryUUstorageforfootnotetextina`p'column.R38\\newtoks\LT@p@ftnL\LT@end@penRSpGecialpenaltyfortheendofthetable. uDonethiswaytosaveusingupacount Rregister.R39\\mathchardef\LT@end@pen=300006R9.5pThe/kAH cmssbx10longtableenvironmentuT\longtableRCalled?by\begin{longtable}.ZThisimplementationdoGesnotworkinmultipleRcolumnUUformats.q\paraddedatV3.04.R40\\def\longtable{% R41f\parR42f\ifx\multicols\@undefinedR43f\elseR44tJ\ifnum\col@number>\@neR45}\@twocolumntrueR46tJ\fiR47f\fiR48f\if@twocolumnR49o\LT@err{longtablenotin1-columnmode}\@ehcR50f\fiR51f\begingroupRCheckUUforanoptionalargument.R52f\@ifnextchar[\LT@array{\LT@array[x]}}$\LT@arrayRStartDsettingthealignment.?Basedon\@arrayfromtheL5ffA͉TU>'ExXkernelandthe Rarrayxpackqage.aSinceV*ersion3.02,longtablehasusedtheinternalcounter\c@LT@tables.BTheRL5ffA͉TU>'ExXUUcountertableisstillincrementedsothat\captionworkscorrectly*.R53\\def\LT@array[#1]#2{% R54f\refstepcounter{table}\stepcounter{LT@tables}%RSetUUupthegluearoundthetableifanoptionalargumentgiven.R55f\ifl#1%R56o\LTleft\z@\LTright\fillRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU14Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.ayRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?R57f\else\ifr#1% R58o\LTleft\fill\LTright\z@R59f\else\ifc#1%R60o\LTleft\fill\LTright\fillR61f\fi\fi\fiRSetUUuptheseinternalcommandsforlongtable.[s,\global\let\LT@mcw@rn\relaxR62f\let\LT@mcol\multicolumnRNowVrede ne\@tabarraytorestore\hlineand\multicolumnsothatarrays Rand ntabularsnestedinlongtable(orinpageheadingsonlongtablepages)workRoutOK.Savingtheoriginalde nitionsdoneheresothatyoucanloadthearrayRpackqageUUbGeforeorafterlongtable.R63f\let\LT@@tabarray\@tabarray R64f\let\LT@@hl\hlineR65f\def\@tabarray{%R66o\let\hline\LT@@hldX\let\multicolumn\LT@mcolR67o\LT@@tabarray}% R68f\let\\\LT@tabularcr\let\tabularnewline\\%R69f\def\newpage{\noalign{\break}}%RMoreUUorlessstandardde nitions,but rststarta\noalign.R70f\def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%R71f\def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%R72f\let\hline\LT@hline\let\kill\LT@kill\let\caption\LT@captionR73f\@tempdima\ht\strutboxRSetUUupinternalcommandsaccordingtoLampGortorMittelbach.R74f\ifx\extrarowheight\@undefinedRInitialiseUUthesecommandsasintabularxfromtheL5ffA͉TU>'ExXkernel.R75o\let\@acol\@tabacol R76o\let\@classz\@tabclassz\let\@classiv\@tabclassivR77o\def\@startpbox{\vtop\LT@startpbox}\let\LT@LL@FM@cr\@tabularcrR78f\elseRInitialise$6thesecommandsasinarray. k\d@llar$6replacedby\d@llarbegin R\d@llarendinV3.03tomatcharray,6V2.0h.X8W*edonotneedtoset\d@llarbeginRandv\d@llarendasthearray@packqagevgivesthemthecorrectvqaluesatthetopRlevel.R79o\advance\@tempdima\extrarowheight R80o\col@sep\tabcolsepR81o\let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycrR82f\fiRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU15Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.eyRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?RThen restofthismacroismainlybasedonarraypackqage,t6butn shouldworkforthe RstandardUUtabularxtoGo.R83f\setbox\@arstrutbox\hbox{\vrule R84o\@height\arraystretch\@tempdimaR85o\@depth\arraystretch\dp\strutboxR86o\@width\z@}%R87f\let\@sharp##\let\protect\relaxRInterpretUUthepreambleargument.R88jp\begingroupR89o\@mkpream{#2}%RW*eneedtorename\@preamblehereasF.M.'sschemeuses\global, andwemay RneedItonest\@mkpream,egfor\multicolumnoranarray.OW*eIdonotneedtoRworryUUabGoutnestedlongtablesthough!R90o\xdef\LT@bchunk{%R91}\global\advance\c@LT@chunks\@ne R92}\global\LT@rows\z@\setbox\z@\vbox\bgroupRTheQfollowinglinewasaddedinv4.05.]Inordertogetthe\penaltiestoworkatRchunk-bGoundariesNeedtotakemorecareaboutwhereandwhen\lineskipglueRisadded.PCThefollowingdoGesnothingattopoftable,andinheaderchunks,butinRnormalUbGodychunksitsets\prevdepth(to0pt,Ubutanyvqaluewoulddo)sothatR\lineskipªgluewillbGeadded.theimportantthingtonoteisthatthegluewillRbGeUUaddedafterhanyverticalmaterialcomingfrom\noalign.R93}\LT@setprevdepthR94}\tabskip\LTleft\halignto\hsize\bgroup R95y2\tabskip\z@\@arstrut\@preamble\tabskip\LTright\cr}%R96f\endgroupRFindUUouthowmanycolumnswehave(storein\LT@cols).R97f\expandafter\LT@nofcols\LT@bchunk&\LT@nofcolsRGet|thesaved|rowfrom\LT@i...\LT@ix(fromthe.aux le),ormakeanewblank Rrow.R98f\LT@make@rowRAUUfewmoreinternalcommandsforlongtable.R99f\let\@endpbox\LT@endpbox N100f\m@th\let\par\@emptyN101f\everycr{}\lineskip\z@\baselineskip\z@RStartUUthe rstchunk.N102f\LT@bchunk}L\LT@no@pgbkRCandsimplifythestandard\@no@pgbkasthisisvmoGdeonlybutthenneedtoclose RtheUU\noalign.N103\\def\LT@no@pgbk#1[#2]{\penalty#1\@getpen{#2}\ifnum`{=0\fi}}Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU16Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?$\LT@startRThismacrostartstheproGcessofputtingthetableonthecurrentpage.>MItisnot Rcalleduntileithera\\or\endlongtablecommandendsachunk,aswedonotRknowuntilthatpGointwhichofthefourpGossibleheadorfootsectionshavebGeenRspGeci ed.aIt{bGeginsbyrede ningitself,1sothatthetableisonlystartedonce!)8UntilV3.04,Rwas rede nedto\relax,nowuse\endgraftoforcethepage-breakertowakeup.N104\\def\LT@start{% N105f\let\LT@start\endgrafN106f\endgraf\penalty\z@\vskip\LTpreRStartanewpageifthereisnotenoughroGomforthetablehead,Dfoot,andone RextraUUline.N107f\dimen@\pagetotalN108f\advance\dimen@\ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fiN109f\advance\dimen@\dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fiN110f\advance\dimen@\ht\LT@footRAtͪthispGointI͇usedtoadd\ht\@arstrutboxand\dp\@arstrutboxasameasure Rofoarowsize.HoweverthiscanfailspGectacularlyforpcolumnswhichmightbGeRmuchlarger.-zPreviousversionscouldendupwiththetablestartingwithafoGot,Rthenapagebreakthenaheadthen]/a` rsthead'r!<,Sonowmeasurethe rstlineRofUUthetableaccuratelyby\vsplittingitoutofthe rstchunk.N111f\dimen@ii\vfuzz N112f\vfuzz\maxdimenN113o\setbox\tw@\copy\z@N114o\setbox\tw@\vsplit\tw@to\ht\@arstrutboxN115o\setbox\tw@\vbox{\unvbox\tw@}%N116f\vfuzz\dimen@iiN117f\advance\dimen@\htN118w^\ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fiN119f\advance\dimen@\dpN120w^\ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fiN121f\advance\dimen@-\pagegoalN122f\ifdim\dimen@>\z@\vfil\break\fiRStoreUUheightofpageminustablefoGotin\@colroom.N123y2\global\@colroom\@colhtRIfUUthefoGotisnonempty*,reducethe\vsizeand\@colroomaccordingly.N124f\ifvoid\LT@foot\elseN125o\advance\vsize-\ht\LT@footN126o\global\advance\@colroom-\ht\LT@footN127o\dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@N128o\maxdepth\z@N129f\fiRPutUUthetableheadonthepage,andthenswitchtothenewoutputroutine.N130f\ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fiN131f\output{\LT@output}}Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU17Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.? \endlongtableRCalledUUby\end{longtable}.N132\\def\endlongtable{%REssentiallybadda nal\\.ButaswenowknowthenumbGerofactualchunks,fTwe R rst stripaway allentriesreferringtoamaximumentrybGeyondthetable(thisRcanonlyhappGenifatablehasbeenshortened,9orthetablenumberinghasgoneRawry).LCInthatcaseweatleaststartcollectingvqalidnewinformationwiththelastRchunkUUofthistable,byremovingthewidthconstraint.N133f\crcr N134f\noalign{%N135o\let\LT@entry\LT@entry@chopN136o\xdef\LT@save@row{\LT@save@row}}%N137f\LT@echunkN138f\LT@startN139f\unvbox\z@N140f\LT@get@widthsRW*riteUUthedummyrowtothe.aux le.qSinceV3.06,use.ltaforletter.sty.N141f\if@fileswN142o{\let\LT@entry\LT@entry@write\immediate\write\@auxout{%RSince-V*ersion3.02,longtablehasusedtheinternalcounter\c@LT@tablesrather RthantheL5ffA͉TU>'ExXcountertable.8|ThisinformationloGoksentirelydi erentfromver-Rsionr;3information.zStill,yuwedon'tneedtorenamethemacronamebGecauselaterRcoGdewillconsidertheinformationtohavenocolumns,,andthuswillthrowtheRoldUUdataaway*.N143y2\gdef\expandafter\noexpand N144w^\csnameLT@\romannumeral\c@LT@tables\endcsnameN145{\LT@save@row}}}%N146f\fiRAt]thispGointusedtoissueawarningifa\multicolumnhasbGeensetindraft RmoGde.[s,\LT@mcw@rnRIfG'ExXattheendofthedoGcument.N147f\ifx\LT@save@row\LT@@save@row N148f\elseN149o\LT@warn{Column\@widthshavechanged\MessageBreakN150Lintable\thetable}%N151o\LT@final@warnN152f\fiRF*orceUUonemoregowiththelongtableoutputroutine.N153f\endgraf\penalty-\LT@end@penRNowUUclosethegrouptoreturntothestandardroutine.N154f\endgroupRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU18Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.'yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?RResetUU\@mparbottomtoallowmarginparsclosetotheendofthetable.^5N155f\global\@mparbottom\z@ N156f\pagegoal\vsizeN157f\endgraf\penalty\z@\addvspace\LTpostRF*oGotnotes.qAsUUdoneinthemulticolpackqage.N158f\ifvoid\footins\else\insert\footins{}\fi}6R9.6pCountingColumnsuTRColumnsWarecountedbyexamining\@preamble,bratherthansimplygetting R\@mkpreamtoincrementthecounterasitbuildsthepreamblesothatthispackqageRworks8YwithmanyofthepackqageswhichaddextracolumnspGeci erstoL5ffA͉TU>'ExX'sRstandardUUones.aV*ersionw1counted\@sharp'stocalculatethenumbGerofcolumns,thiswasRchangedwforV*ersion2asitdoGesnotworkwiththeNFSS.Nowcount&'s.R(lfonts.new{\(andnowtheStandardL5ffA͉TU>'ExXde nition)de nes\@tabclasszsoRthatUU\@sharpisinsideagroup.)L\LT@nofcolsRFindUUthenext&,thenloGokaheadtoseewhatisnext.N159\\def\LT@nofcols#1&{% N160f\futurelet\@let@token\LT@n@fcols}L\LT@n@fcolsRAddLone, thenstopatan\LT@nofcolsorloGokforthenext&.SThe\expandafter RtrickwasaddedinV*ersion3,alsothenamechangedfrom\@LT@nofcolstopre-RserveUUthe\LT@namingconvention.N161\\def\LT@n@fcols{% N162f\advance\LT@cols\@neN163f\ifx\@let@token\LT@nofcolsN164o\expandafter\@gobbleN165f\elseN166o\expandafter\LT@nofcolsN167f\fi}6R9.7pThe0߆T cmtt12\\and\killCommandsuT \LT@tabularcrRThe;,internalde nitionof\\.iInthe*form,@ginserta\nobreakafterthenext\cr R(orUU\crcr).aThisstarformproGcessingwas nallyaddedinv4.05.xF*ortheprevioussixorRsevenUUyearsthecommentatthispGointsaidkThisNde nitionalsoaccepts\\*,\Hwhic9hactsinthesamewayas\\.ƹtabular kdoAesthis,?butlongtableprobablyough9ttomake\\*preventpagebreaking.R&fffr J= "5-:5LThiscannotb\z@N199o\unskip\@xargarraycr{#1}%N200f\elseN201o\@yargarraycr{#1}%N202f\fiRAddUUthedummyrow,and nishthe\halign.N203f\LT@echunkN204f\LT@startN205f\unvbox\z@N206f\LT@get@widthsN207f\LT@bchunk}\LT@echunkRThisUUendsthecurrentchunk,andremovesthedummyrow.N208\\def\LT@echunk{%N209f\crcr\LT@save@row\cr\egroupN210f\global\setbox\@ne\lastboxRTheh followinglinewasaddedinv4.05.(longtablerelieson\lineskipglue(which Ris0pt)toprovidebreakpGointsbGetweeneachrowsothetablemaybGesplitintoRpages.aPrevious^releasesleftthe\lineskipglueattheendofeachchunkthathadRbGeenmaddedwhenthedummyrowwasadded.TherewasnoglueatthestartRof;thenextchunk;asTU>'ExXnormallydoGoes;notput\lineskipglueatthetopofRa=+bGox.)JThismeantthatnormallythechunks ttedtogetherpGerfectly*,w!howeverR\noalign}Cmaterialatachunk}CbGoundarycamebeforethe rstrowofthenextRchunk1butafterthelineskipglueattheendofthischunk.CfThis1isthewrongplace,Re.g.,Aitmeansevena\penalty10000doGesnotstopabreakasthe\lineskipglueRinSthepreviousitemonthelistprovidesalegalbreakpGoint.SonowremovetheR\lineskip!gluethatwasbGeforethedummyrowandintroGduce\LT@setprevdepthRtovsetthe\prevdepthatthestartofthenextchunk,I>tovmakesure\lineskipRglueUUisaddedlater.N211o\unskip N212f\egroup}$\LT@entryRW*eheregivethe`basic'de nitionof\LT@entry,UnamelythatusedinalignmentRtemplates.OItShasa\kernonlyifthemaximumisimpGosedfromadi erentchunk.RTheUU\ifhmodetestrevealsthe rstentry*,whenwedon'twanttoaddan&.N213\\def\LT@entry#1#2{% N214f\ifhmode\@firstofone{&}\fi\omitN215f\ifnum#1=\c@LT@chunksN216f\elseN217o\kern#2\relaxN218f\fi}Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU21Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.&yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.? 6\LT@entry@chopRThisN9de nitionfortheargumentof\LT@save@rowisusedtoscrapallthosemaxima RwhichcouldnotbGeveri edbGecausetheyoccuraftertheendofthetable.UThisRcanhappGenonlyifatablehasbeenshortened(orthesequencinggotmixedup)Rsincethepreviousrun.bNotethatthisispremature:cthelastchunkstillisgoingRtoUUbGeset,andwiththechoppedlimits.N219\\def\LT@entry@chop#1#2{% N220f\noexpand\LT@entryN221o{\ifnum#1>\c@LT@chunksN222}1}{0pt%N223tJ\elseN224}#1}{#2%N225tJ\fi}}f\LT@entry@writeRT*owriteanentryfortheaux le,_weuseaslightlysurprisingde nitionwhichhas RthesolepurpGoseofavoidingoverfulllines(whichmightbreakTU>'ExX'slimitswhenRreadingtheaux le,probablyyou'dneedtohaveafewhundredcolumnsbGeforeRthisUUhappGenedbut...).N226\\def\LT@entry@write{% N227f\noexpand\LT@entry^^J%N228f\@spaces}"y\LT@killRThisendsthecurrentchunkasabGove,ˢbutstripso tworows,ˢthe`dummyrow' RandFthe`killedrow'bGeforestartingthenextchunk.lSinceV3.04,ItheoldchunkisRrebGoxed7atthestartoftheboxcontainingthenextchunk.(mThisallows\killtoRbGeUUusedinheaders,whichmustbGeprocessedinasinglebox.N229\\def\LT@kill{% N230f\LT@echunkN231f\LT@get@widthsN232f\expandafter\LT@rebox\LT@bchunk}$\LT@reboxRDrop>theoldchunk>(bGox0)backatthetopofthenewchunk,CBremovingthekilled Rrow.qThisUUmacroaddedatV3.04.N233\\def\LT@rebox#1\bgroup{%N234f#1\bgroupN235f\unvbox\z@N236f\unskipN237f\setbox\z@\lastbox}6R9.8pTheDummyRowuTRTheUUdummyrowiskeptinsideofthemacro\LT@save@row. \LT@blank@row f\LT@build@blankRCreateUUablankrowifwearenotusingtheinfointhe.aux le.N238\\def\LT@blank@row{%N239f\xdef\LT@save@row{\expandafter\LT@build@blankN240o\romannumeral\number\LT@cols001}}Rt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU22Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.4yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?RWhoGops!X-What'sthatsupposedtobe?X-Asdrop-inreplacementforthe rsttaskof RAppGendixDintheTU>'ExXbook.EAThe\romannumeralproduces\LT@colsinstancesRofUUmfollowedUUbyi.qThebGelowmacrothenreplacesthemsbyappropriateentries.N241\\def\LT@build@blank#1{% N242f\if#1m%N243o\noexpand\LT@entry{1}{0pt}%N244o\expandafter\LT@build@blankN245f\fi}b\LT@make@rowRPrior6Etoversion4,<|bydefaultdidnotuseinformationinthe.aux lebutnowwe RcanUUde ne\LT@make@rowtousethe.aux le,evenonthe`draft'passes.N246\\def\LT@make@row{%N247f\global\expandafter\let\expandafter\LT@save@rowN248o\csnameLT@\romannumeral\c@LT@tables\endcsnameN249f\ifx\LT@save@row\relaxN250o\LT@blank@rowRNow aslightlydicultpartcomes.Beforewedecidemakingthetemplatefrom RtheN.aux leinfowecheckthatthenumbGerof eldshasremainedthesame.oIfitRhasn't,eitherthetableformathaschanged,orwehavethewrongtablealtogether.RInUUbGothcases,wedecidetobetterdropallgatheredinformationandstartover.aTheݡexpansionbGetweenݡ!...!bGelowwillbeemptyifthenumbGerof\LT@entryRmacrosincludingargumentsin\LT@save@rowisequalto\LT@cols.J0IfitisnotRempty*,UUwethrowtherowawayandstartfromscratch.N251f\else N252o{\let\LT@entry\orN253tJ\if!%N2540\ifcase\expandafter\expandafter\expandafter\LT@colsN2550\expandafter\@gobble\LT@save@rowN2560\orN2570\elseN258 \relaxN2590\fiN260w^!%N261tJ\elseN262}\aftergroup\LT@blank@rowN263tJ\fi}%N264f\fi} 6\setlongtablesRRede ne:\LT@make@rowtouseinformationinthe.aux le,sifthereisasaved:row RforUUthistablewiththerightnumbGerofcolumns.aSince=?V*ersion3.02,uClongtablehasusedtheinternalcounter\c@LT@tablesratherRthantheL5ffA͉TU>'ExXcountertable.PUThewarningmessagewasaddedatV3.04,aswasRtheUU\global,tostopsave-stackUUover ow.aSince"AV*ersion4.01\setlongtablesdoGesnothingasitisnotneeded,U{butisRde nedUUas\relaxforthebGene tofolddocuments.N265\\let\setlongtables\relaxRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU23Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.B.yRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.? 6\LT@get@widthsRThisistheheartoflongtable.=IfitwerenotforthetableheadandfoGot,%thismacro RtogetherwiththemoGdi ed\\commandwouldformthebasisofquiteasimpleRlittlepackqage leforlongtables.'ItiscloselymoGdelledonthe\endvrulealignRmacroUUofappGendixDoftheTU>'ExXbook.N266\\def\LT@get@widths{%R\globalUUaddedatV3.04,tostopsave-stackUUover ow.RLoGop}throughthelastrow,ǖdiscardingglue,andsavingbGoxwidths.cAtV3.04RchangedthescratchbGoxto2,asthenew\killrequiresthat\box0bGepreserved.N267f\setbox\tw@\hbox{% N268o\unhbox\@neN269o\let\LT@old@row\LT@save@rowN270o\global\let\LT@save@row\@emptyN271o\count@\LT@colsN272o\loopN273y2\unskipN274y2\setbox\tw@\lastboxN275o\ifhbox\tw@N276y2\LT@def@rowN277y2\advance\count@\m@neN278o\repeat}%RRemembGerUUthewidthsifweareinthe rstchunk.N279f\ifx\LT@@save@row\@undefinedN280o\let\LT@@save@row\LT@save@rowN281f\fi}L\LT@def@rowRAddZacolumntothedummyrow. Namechangedfrom\defLT@save@rowin RV*ersionUU3,topreservethe\LT@namingconvention.N282\\def\LT@def@row{%RW*ea-startbypickingtherespGectiveentryfromouroldrow.NTheserede nitionsofR\LT@entryUUareloGcaltothegroupstartedin\LT@get@widths.N283f\let\LT@entry\or N284f\edef\@tempa{%N285o\ifcase\expandafter\count@\LT@old@rowN286o\elseN287y2{1}{0pt}%N288o\fi}%RNowUUwetacktherightcombinationinfrontof\LT@save@row:N289f\let\LT@entry\relaxN290f\xdef\LT@save@row{%N291o\LT@entryN292o\expandafter\LT@max@sel\@tempaN293o\LT@save@row}}L\LT@max@selRAndithisishowtoselecttherightcombination.Notethatwetaketheoldmax- RimuminformationonlyifthesizedoGesnotchangeineitherdirection.IfthesizeRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU24Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.PŠyRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?Rhasgrown,;weofcoursehaveanewmaximum.6Ifthesizehasshrunk,;theoldmax- Rimum͞(whichwasexplicitlynotenforcedbGecauseofbeinginthecurrentchunk)Risinvqalid,>andwestartwiththischunkasthenewsize.NotethatevenintheRcase'ofequalitywemustusethe\the\wd\tw@constructinsteadof#2bGecause#2RmightbGereadinfromthe le,)andsocouldhave\catcode11versionsofpandtRinUUitwhichwewanttobGereplacedbytheir`propGer'\catcode12versions.N294\\def\LT@max@sel#1#2{% N295f{\ifdim#2=\wd\tw@N296tJ#1%N297jp\elseN298tJ\number\c@LT@chunksN299jp\fi}%N300f{\the\wd\tw@}}6R9.9pThe\hlineCommanduT$\LT@hlineR\hline8Ųand\hline\hlinebGothproducetwo]lines.hBTheonlydi erencebeingthe Rglue\hsizeN339y2#1{#2:}#3%N340o\elseN341y2\hboxto\hsize{\hfil\box\@tempboxa\hfil}%N342o\fiN343o\endgraf\vskip\baselineskip}%N344f\hss}}}6R9.11wTheOutputRoutineuTRThe5methoGdusedhereforinterfacingaspecialpurposeoutputroutinetothe RstandardUUL5ffA͉TU>'ExXroutineisliftedstraightoutofF.Mittelbach'smulticolpackqage.\LT@outputRActuallyUUthisisnotsobad,withFMleadingtheway*.N345\\def\LT@output{%N346f\ifnum\outputpenalty<-\@MiN347o\ifnum\outputpenalty>-\LT@end@penRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. X~PageUU26Yet.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.kyRt.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t. _longtable.sty`t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.?RIfUUthiswasa oatoramarginparwecomplain.N348y2\LT@err{floatsandmarginparsnotallowedinalongtable}\@ehc N349o\elseRW*eUUhavereachedtheendofthetable,onthescrollatleast,N350y2\setbox\z@\vbox{\unvbox\@cclv}%N351y2\ifdim\ht\LT@lastfoot>\ht\LT@footRTheUUlastfoGotmightnot t,so:^7N352w^\dimen@\pagegoalN353w^\advance\dimen@-\ht\LT@lastfootN354w^\ifdim\dimen@<\ht\z@N355\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%N356\@makecolN357\@outputpageN358\setbox\z@\vbox{\box\LT@head}%REndUUof\ifdim\dimen@<\ht\@cclc.N359w^\fiREndUUof\ifdim?\ht\LT@lastfoot>\ht\LT@foot.N360y2\fiRResetUU\@colroom.N361y2\global\@colroom\@colht N362y2\global\vsize\@colhtRPutUUthelastpageofthetableontothemainverticallist.N363y2\vbox N364w^{\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%REndUUof\ifnum\outputpenalty?>-\LT@end@pen.N365o\fiRElseUU\outputpenalty?>-\@Mi.N366f\elseRIfUUwehavenotreachedtheendofthetable,N367o\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% N368o\@makecolN369o\@outputpageRResetUU\vsize.N370y2\global\vsize\@colroomRPutUUtheheadatthetopofthenextpage.N371o\copy\LT@headREndUUof\ifnum\outputpenalty?<-\@Mi.N372f\fi}R&effr J= "5-:7LAn0"alternativÎewouldb