÷ƒ’À;è TeX output 1998.03.04:1452‹ÿÿÿÿ y ý£ ? ýèg’Œ !óÂÖN ½q cmbx12ºThe‘Ç ó·ág£½q cmmi12½"Ž‘Gåº-T‘üEŸ›ßEŽ‘‚CX‘Ç man‘ÿZualŽ¤’³a(óp®0J cmsl10ÃV›ÿ*ªersion–UU2,“F˜ebruary“1998ŽŸ’ ­óKñ`y cmr10²b¸ãy–UUThe“ó !",š cmsy10¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘£„²T‘ÿ*ªeamŽ¡‘`¿ïPš¸ãeter–UUBreitenlohner,“Max-Planc˜k-Institut“fG‘ú¸âur“Ph˜ysik,“MG‘ú¸âunc˜henŽŸ‘g«%óo´‹Ç cmr9ÄThe–Tpreparation“of“this“repšAÇort“w¾9as“supp˜orted“in“part“b¾9y“óŒ-ø cmcsc10ÅD¼ÌanteÄ,Ž¤ ’†è:Deutsc•¾9hsprac“hige›TAn“w“enderv“ereinigung˜T‘þuAŸïÿEŽ‘˜ŸX˜e.V.Ž¡‘o¿2`T‘þuAŸïÿEŽ‘˜ŸX'–Tis“a“trademark“of“the“American“Mathematical“SoAÇciet¾9y‘ÿ:«.ŽŸ!Ä‘>óÂÖN ff cmbx12Æ1Ž‘VLËInŒÌtros3ductionŽŸç‘>²The‘ºÒ¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘n~²pro‘Ž8ject–ºÒinš¸ãtends“to“dev˜elop“an“`New“T˜ypGesetting“System'“(¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘øÚ²)“thatŽ¤ ‘>will›ãŽev•¸ãen“tually˜replace˜toGda“y's˜T‘þU>Ÿ'EŽ‘ãxX3.‘ qThe˜¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘¿ö²program˜will˜include˜man“yŽ¡‘>features–÷ƒmissing“in“T‘þU>Ÿ'EŽ‘ãxX,‘ but“there“will“also“exist“a“mošGde“of“op˜eration“that“isŽ¡‘>100%–Wöcompatible“with“T‘þU>Ÿ'EŽ‘ãxX3.‘y«It“will,–˜žnecessarily‘ÿ*ª,“require–Wöquite“some“time“toŽ¡‘>dev•¸ãelop‘UU¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘£„²to›UUmaturit“y˜and˜mak“e˜it˜widely˜a“v‘ÿqÇailable.Ž¡‘MMean•¸ãwhile‘;Wó  b> cmmi10µ"Ž‘å²-T‘þU>Ÿ'EŽ‘ãxX›;Win“tends˜to˜ ll˜the˜gap˜bGet“w“een˜T‘þU>Ÿ'EŽ‘ãxX3˜and˜the˜future˜¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘41².Ž¡‘>It–UUconsists“of“a“series“of“features“extending“the“capabilities“of“T‘þU>Ÿ'EŽ‘ãxX3.Ÿü^ÿóÙ“ Rcmr7±1ŽŽŽ¡‘M²Since–ÔŒcompatibilitš¸ãy“bGet˜w˜een“µ"Ž‘~R²-T‘þU>Ÿ'EŽ›ãxX“and“T‘þU>Ÿ'EŽ˜X3“has“bGeen“a“main“concern,‘ôZµ"Ž‘ž ²-Ž¡‘>T‘þU>Ÿ'EŽ‘ãxX–UUhas“t•¸ãw“o–UUmošGdes“of“op˜eration:Ž¡‘>(1)–!^In“T‘þU>Ÿ'EŽ‘ãxX“compatibilitš¸ãy“moGde“it“fully“deserv˜es“the“name“T‘þU>Ÿ'EŽ‘ãxX“and“there“areŽ¡‘>neither–Ýextended“features“nor“additional“primitiv¸ãe“commands.‘ That“means“inŽ¡‘>particular–ÿ‰that“µ"Ž‘©O²-T‘þU>Ÿ'EŽ‘ãxX“passes“the“ó"ßêare,›?@ho•¸ãw“ev“er,˜a–9»few“minor“mošGdi cations“that“w¸ãould“b˜e“legitimate“in“an¸ãy“imple-Ž¡‘>men¸ãtation–UUof“T‘þU>Ÿ'EŽ‘ãxX.Ž¡‘>(2)–\mIn“extended“moGde“there“are“additional“primitiv¸ãe“commands“and“the“extendedŽ¡‘>features–UUof“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX“are“a¸ãv‘ÿqÇailable.Ž¡‘MW‘ÿ*ªe›û&ha•¸ãv“e˜tried˜to˜mak“e˜µ"Ž‘¤ì²-T‘þU>Ÿ'EŽ–ãxX˜as˜compatible˜with˜T‘þU>Ÿ'EŽ“X˜as˜pGossible˜ev¸ãen˜inŽ¡‘>extended–îmoGde.‘ <In“a“few“cases“there“are,›TDho•¸ãw“ev“er,˜some–îsubtle“di erencesŽ¡‘>describGed–'Nin“detail“later“on.‘bpTherefore“the“µ"Ž‘Ѳ-T‘þU>Ÿ'EŽ‘ãxX“features“a¸ãv‘ÿqÇailable“in“extendedŽ¡‘>mošGde–UUare“group˜ed“inš¸ãto“t˜w˜o“categories:Ž¡‘>(1)–´ÐMost“of“them“ha•¸ãv“e–´Ðno“seman¸ãtic“e ect“as“long“as“none“of“the“additionalŽ¡‘>primitivš¸ães–UUare“executed;“these“`extensions'“are“pGermanen˜tly“enabled.Ž¡‘>(2)–¬VThe“remaining“optional“µ"Ž‘V²-T‘þU>Ÿ'EŽ‘ãxX“features“(`enhancemen¸ãts')“can“bGe“individuallyŽ¡‘>enabled–¯Æand“disabled;‘\þinitially“they“are“all“disabled.‘F‘ÿ*ªor“eacš¸ãh“enhancemen˜tŽ¡‘>there–’Åis“a“state“v‘ÿqÇariable“Í\...state²;‘±}an“enhancemenš¸ãt“is“enabled“or“disabled“b˜yŽ¡‘>assigning–UUa“pšGositiv¸ãe“or“non-p˜ositiv¸ãe“v‘ÿqÇalue“resp˜ectiv¸ãely“to“that“state“v‘ÿqÇariable.Ž¡‘MF–ÿ*ªor‘]šµ"Ž‘`²-T‘þU>Ÿ'EŽ‘ãxX›]šV“ersions˜1˜and˜2˜there˜is˜just˜one˜enhancemen¸ãt:‘‚Rmixed˜directionŽ¡‘>t¸ãypGesetting–UU(T‘þU>Ÿ'EŽ‘ãxX-ó#ò"V xbmc10Î-X‘þŸ8ãEŽ‘3sT²)“with“the“state“v‘ÿqÇariable“Í\TeXXeTstate².Ž‘>Ÿæf‰ff‰ÿvŸ J=‘ "5Ÿý-:ó¹Aa¨cmr6È1ŽŽŽ‘LÜó|{Ycmr8ÇThe–àGT‘þ•AŸ¸ãEŽ‘MX3“program;‘å¿for“the“momenšÃŽt“there“are“no“plans“to“extend“the“soft˜w˜are“related“toŽŸ €T‘þ•AŸ¸ãEŽ‘MX.ŽŽŸ’è²1ŽŽŒ‹* y ý£ ? ýä‘M²V‘ÿ*ªersion–¨s1.1“of“µ"Ž‘R9²-T‘þU>Ÿ'EŽ‘ãxX“wš¸ãas“released“in“No˜v˜em˜bGer“1996,‘ËV›ÿ*ªersion“2.0“in“F˜ebruaryŽ¤ ‘>1998.‘^}It–vis“expšGected“that“there“will“b˜e“ab˜out“one“µ"Ž‘Å<²-T‘þU>Ÿ'EŽ‘ãxX“v¸ãersion“p˜er“y¸ãear,‘' whereŽ¡‘>eacš¸ãh–ù÷later“v˜ersion“adds“new“features.‘ _®It“w˜ould“bGe“desirable“if“these“µ"Ž‘ £½²-T‘þU>Ÿ'EŽ‘ãxXŽ¡‘>v•¸ãersions›…®w“ere˜incorpGorated˜in“to˜man“y˜of˜the˜existing˜implemen“tations˜of˜T‘þU>Ÿ'EŽ‘ãxX3Ž¡‘>without›UUm•¸ãuc“h˜dela“y‘ÿ*ª.Ž¡‘MWith–!@eacš¸ãh“µ"Ž‘˲-T‘þU>Ÿ'EŽ‘ãxX“v˜ersion“there“will“bGe“an“Íe-TRIP‘!3²test“[2Ž‘]“in“order“to“help“toŽ¡‘>vš¸ãerify–äìthat“a“particular“implemen˜tation“deserv˜es“the“name“µ"Ž‘Ž²²-T‘þU>Ÿ'EŽ‘ãxX“in“the“sameŽ¡‘>w•¸ãa“y–A§as“the“ÍTRIP‘Aj²test“[1Ž‘]“helps“to“vš¸ãerify“that“an“implemen˜tation“deserv˜es“theŽ¡‘>name‘UUT‘þU>Ÿ'EŽ‘ãxX.ŽŸ!Ä‘>Æ2Ž‘VLËGenerating‘ffó·ág£ff cmmi12¾"Ž‘ ÿŽÆ-T‘ýL¨Ÿ32EŽ‘èdXŽŸç‘>ó$ÂÖN  cmbx12Ï2.1Ž‘\ÀGenerating–€the“ó·ág£ cmmi12¿"Ž‘ ÿ¢Ï-T‘ý¿áŸªªEŽ‘ìSX“ProgramŽ©uT‘>²An–:implemenš¸ãtation“of“T‘þU>Ÿ'EŽ‘ãxX“consists“of“a“WEB‘(c˜hange“ le“Ítex.ch“²con˜taining“allŽ¡‘>system-depGenden•¸ãt›|Ác“hanges˜for˜a˜particular˜system.‘è The˜WEB‘|·system˜programŽ¡‘>ÍTANGLE‘'²applies–'this“cš¸ãhange“ le“to“the“system-indepGenden˜t“ le“Ítex.web“²de ningŽ¡‘>the–dT‘þU>Ÿ'EŽ›ãxX“program“in“order“to“generate“a“T‘þU>Ÿ'EŽ˜X“P¸ãascal“ le“for“that“system“[3Ž‘].Ž¡‘>Similarly–;Yan“implemenš¸ãtation“of“µ"Ž‘å²-T‘þU>Ÿ'EŽ‘ãxX“consists“of“a“system-depGenden˜t“c˜hangeŽ¡‘> le–]Íetex.sys“²to“bšGe“applied“to“the“system-indep˜enden¸ãt“ le“Íe-tex.web“²de ningŽ¡‘>the‘ ·µ"Ž›¶}²-T‘þU>Ÿ'EŽ‘ãxX– ·program.‘Y“Since“µ"Ž˜²-T‘þU>Ÿ'EŽ›ãxX“di ers“from“T‘þU>Ÿ'EŽ˜X“bš¸ãy“a“relativ˜ely“small“fractionŽ¡‘>of–îïits“cošGde“Íe-tex.web“²do˜es,›Uho•¸ãw“ev“er,˜not–îïexist“as“a“ph¸ãysical“ le;‘;»it“is“insteadŽ¡‘>de ned–1Æin“terms“of“a“system-indepGendenš¸ãt“c˜hange“ le“Íe-tex.ch“²to“bGe“appliedŽ¡‘>to–¼pÍtex.web².‘§Similarly“it“should“bšGe“p˜ossible“to“de ne“the“system-dep˜enden¸ãtŽ¡‘>c¸ãhange–%½ le“Íetex.sys“²for“a“particular“system“in“terms“of“its“deviations“from“theŽ¡‘>correspGonding–UU le“Ítex.ch“²[4Ž‘].ŽŸþ6‘>Ï2.2Ž‘\ÀGenerating–€F‘þàormat“Files“for“¿"Ž‘ ÿ¢Ï-T‘ý¿áŸªªEŽ‘ìSXŽ¦‘>²When–Æ–(the“INITEX›Æ7or“VIR‘ÿ*ªTEX˜v¸ãersion“of‘Ç)“the“T‘þU>Ÿ'EŽ‘ãxX“program“is“started,‘"æitŽ¡‘>analyzes–ŽÂthe“ rst“non-blank“input“line“from“the“command“line“or“(with“the“Í**Ž¡‘>²prompt)–£;from“the“terminal:‘ºThe“ rst“non-blank“cš¸ãharacter“of“that“input“line“ma˜yŽ¡‘>bšGe–Ñ®an“Í&“²follo•¸ãw“ed–Ñ®immediately“b¸ãy“the“name“of“the“format“to“b˜e“loaded;‘ýotherwiseŽ¡‘>VIR‘ÿ*ªTEX›“Þuses–”a“default“format“whereas“INITEX˜starts“without“loading“a“formatŽ¡‘> le.Ž¡‘MF‘ÿ*ªor–îeINITEX›íÙ(the“INITEX˜v¸ãersion“of“µ"Ž‘—Dz-T‘þU>Ÿ'EŽ‘ãxX)“there“is“an“additional“pGossi-Ž¡‘>bilitš¸ãy:‘G¹If–9the“ rst“non-blank“input“c˜haracter“is“an“Í*“²(immediately“follo˜w˜ed“whatŽ¡‘>wš¸ãould–ª§bGe“the“ rst“non-blank“input“c˜haracter“for“INITEX),“the“program“startsŽ¡‘>in–óoextended“moGde“without“loading“a“format“ le.‘Q%If“the“ rst“non-blank“c¸ãharacterŽ¡‘>is–×ßneither“Í&“²nor“Í*“²then“eINITEX‘×¾starts“without“loading“a“format“but“in“com-Ž¡‘>patibilit•¸ãy›Ñ”moGde.‘EÜWhenev“er˜a˜format˜ le˜is˜loaded˜b“y˜eINITEX–Ñror˜eVIR‘ÿ*ªTEX“theŽ¡‘>moGde–UU(compatibilit¸ãy“or“extended)“is“inherited“from“the“format.Ž¡‘MIt–n;is“recommended“that“the“input“ le“Íetex.src“²bGe“used“instead“of“Íplain.texŽ¡‘>²when–úûgenerating“an“µ"Ž‘¤Á²-T‘þU>Ÿ'EŽ‘ãxX“format“in“extended“moGde.‘b¸That“ le“will“ rst“readŽŽŸ’è2ŽŽŒ‹ÿ y ý£ ? ýä‘>Íplain.tex–.¡²(without“reading“Íhyphen.tex²)“and“will“then“supply“macro“de ni-Ž¤ ‘>tions–UUsuppGorting“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX“features.ŽŸ!Ä‘>Æ3Ž‘VL˾"Ž‘\åóÆ-T‘ýL¨Ÿ32EŽ‘èdX‘ffExtensionsŽŸç‘>Ï3.1Ž‘\ÀCompatibilit y–€and“Extended“Mo`deŽ©uT‘>²Once‘*¾µ"Ž‘Ô„²-T‘þU>Ÿ'EŽ‘ãxX–*¾has“enš¸ãtered“compatibilit˜y“mošGde“it“b˜eha•¸ãv“es–*¾as“an¸ãy“other“implemen-Ž¡‘>tation–ÚMof“T‘þU>Ÿ'EŽ›ãxX.‘®All“of“µ"Ž‘„²-T‘þU>Ÿ'EŽ˜X's“additional“commands“are“absen¸ãt;‘Èit“is“thereforeŽ¡‘>impGossible–µRto“access“anš¸ãy“of“the“extensions“or“enhancemen˜ts.‘TEX–UQto“initially“c¸ãhošGose“b˜et•¸ãw“een›UQcompatibilit“y˜and˜extended˜moGde˜is,‘URho“w“ev“er,Ž¡‘>bš¸ãy–UUitself“a“feature“not“presen˜t“in“an˜y“T‘þU>Ÿ'EŽ‘ãxX“implemen˜tation.Ž¡‘MThe–ixremainder“of“this“doGcumenš¸ãt“is“dev˜oted“to“a“detailed“and“mostly“tec˜hnicalŽ¡‘>description–Çèof“all“aspšGects“where“µ"Ž‘q®²-T‘þU>Ÿ'EŽ‘ãxX“(in“extended“mo˜de)“b˜eha•¸ãv“es‘Çèdi eren“tlyŽ¡‘>from–}T‘þU>Ÿ'EŽ›ãxX.‘\ÔIt“will“bGe“assumed“that“the“reader“is“familiar“with“ÃThe“T‘þU>Ÿ'EŽ˜X‘b•Go“ok‘±Á²[5Ž‘]Ž¡‘>describing–UUT‘þU>Ÿ'EŽ‘ãxX's“bGeha¸ãviour“in“quite“some“detail.Ž¡‘MAll–%Åof“µ"Ž‘Ï‹²-T‘þU>Ÿ'EŽ‘ãxX's“extensions“and“enhancemenš¸ãts“a˜v‘ÿqÇailable“in“extended“moGde“areŽ¡‘>activ‘ÿqÇated–÷”bš¸ãy“either“executing“some“new“primitiv˜e“command“or“b˜y“assigning“aŽ¡‘>nonzero–‡v›ÿqÇalue“to“some“new“in¸ãteger“parameter“or“state“v˜ariable.‘Since“all“theseŽ¡‘>new–ñPv‘ÿqÇariables“are“initially“zero,Ÿü^ÿ±2ŽŽ‘ ÔÁµ"Ž‘~‡²-T‘þU>Ÿ'EŽ›ãxX“bGeha•¸ãv“es–ñPas“T‘þU>Ÿ'EŽ˜X“as“long“as“none“ofŽ¡‘>µ"Ž‘B©Æ²-T‘þU>Ÿ'EŽ‘ãxX's–Vnew“conš¸ãtrol“sequences“are“used,‘–Nwith“the“follo˜wing“exceptions“whic˜hŽ¡‘>should,›D±ho•¸ãw“ev“er,˜ha“v“e–@ˆno“e ect“on“the“t¸ãypšGesetting“of“error-free“T‘þU>Ÿ'EŽ‘ãxX“do˜cumen¸ãtsŽ¡‘>(proGduced–UUwith“error-free“formats):Ž¡‘>(1)–UUWhen“Í\tracingcommands“²has“a“v‘ÿqÇalue“of“3“or“more,“orŽ¡‘>when–NÍ\tracinglostchars“²has“a“v‘ÿqÇalue“of“2“or“more,‘‚¹µ"Ž‘,²-T‘þU>Ÿ'EŽ‘ãxX“will“displa¸ãy“additionalŽ¡‘>information–UUnot“a¸ãv‘ÿqÇailable“in“T‘þU>Ÿ'EŽ‘ãxX.Ž¡‘>(2)–HHWhen“using“a“counš¸ãt,–Jädimen,“skip,“m˜uskip,“bGo˜x,“or–HHtok˜en“register“n˜um˜bGer“inŽ¡‘>the–Ýñrange“256{32767,‘µ"Ž‘©Þ²-T‘þU>Ÿ'EŽ‘ãxX“will“access“one“of“its“additional“registers“whereasŽ¡‘>T‘þU>Ÿ'EŽ‘ãxX–UUwill“prošGduce“an“error“and“use“register“n•¸ãum“b˜er‘UUzero.ŽŸþ6‘>Ï3.2Ž‘\ÀOptimizationŽ¦‘>²When–‘±a“v‘ÿqÇalue“is“assigned“to“an“¸h²in•¸ãternal‘UUquan“tit“y#¸iŽ‘Z±¦²within“a“sa•¸ãv“e‘‘±group,‘àÈtheŽ¡‘>former–&Pv‘ÿqÇalue“is“restored“when“the“group“ends,‘/¸proš¸ãvided“the“assignmen˜t“w˜as“notŽ¡‘>global.‘@£This–Áèis“ac•¸ãhiev“ed›Áèb“y˜sa“ving˜the˜former˜v‘ÿqÇalue˜on˜T‘þU>Ÿ'EŽ‘ãxX's˜`sa“v“e˜stac“k'.‘@£µ"Ž‘êi²-T‘þU>Ÿ'EŽ‘ãxXŽ¡‘>refrains–ÏÚfrom“creating“sucš¸ãh“sa˜v˜e“stac˜k“en˜tries“when“the“old“and“new“v‘ÿqÇalue“areŽ¡‘>the–UUsame“(`reassignmen¸ãts').Ž¡‘MÍ\aftergroup–çñ²tokš¸ãens“are“also“k˜ept“on“T‘þU>Ÿ'EŽ‘ãxX's“sa˜v˜e“stac˜k.‘)šWhen“the“curren˜tŽ¡‘>group–6ends,‘Ÿ'EŽ‘ãxX“con•¸ãv“erts›6eac“h˜Í\aftergroup˜²tok“en˜in“to˜a˜tok“en˜list˜and˜insertsŽ¡‘>this–“list“as“new“`input“levš¸ãel'“in˜to“the“input“stac˜k.‘1 µ"Ž‘Úв-T‘þU>Ÿ'EŽ‘ãxX“collects“all“Í\aftergroupŽ¡‘>²tokš¸ãens–UUfrom“one“group“in˜to“one“tok˜en“list“and“th˜us“conserv˜es“input“lev˜els.Ž‘>ŸX-‰ff‰ÿvŸ J=‘ "5Ÿý-:È2ŽŽŽ‘LÜÇT›ÿJªo–*bŸ'EŽ‘ãxX“m˜ul-Ž¤ ‘>tiplies–{íthe“relev‘ÿqÇanš¸ãt“stretc˜h“or“shrink“compGonen˜ts“of“glue“nošGdes“in“a“b˜oš¸ãx“b˜y“theŽ¡‘>glue–expansion“factor“of“that“bGoš¸ãx“and“con˜v˜erts“the“proGduct“to“D˜VI‘áunits.‘¤ûInŽ¡‘>order–+âto“a•¸ãv“oid›+âo“v“er o“w˜eac“h˜resulting˜v‘ÿqÇalue˜µx˜²is˜arti cially˜limited˜to˜the˜rangeŽ¡‘>¸jµx¸j–Ç“²10Ÿü^ÿ±9Ž‘|s².‘qÇConsider–UUthe“example:Ž©‘M¿÷Í\shipout\vbox‘?ýto100pt{Ž¡‘X?ñ\hrule‘?ýwidth10ptŽ¡‘X?ñ\vskip–?ý0pt“plus1000filŽ¡‘X?ñ\vskip–?ý0pt“plus1000filŽ¡‘X?ñ\vskip–?ý0pt“plus-2000filŽ¡‘X?ñ\hruleŽ¡‘X?ñ\vskip–?ý0pt“plus0.00005filŽ¡‘X?ñ}Ž¦‘>²Here–cŽthe“three“glues“bGet•¸ãw“een–cŽthe“t•¸ãw“o–cŽrules“add“up“to“zero;‘jªwhen“T‘þU>Ÿ'EŽ‘ãxX“con•¸ãv“ertsŽ¡‘>eac•¸ãh›¯Jstretc“h˜compGonen“t˜individually˜they˜will,›Çho“w“ev“er,˜add–¯Jup“to“10Ÿü^ÿ±9Ž‘ +½²D¸ãVIŽ¡‘>units– Ødue“to“the“truncation“menš¸ãtioned“abGo˜v˜e.‘TQµ"Ž‘ þ²-T‘þU>Ÿ'EŽ‘ãxX,–ó¹ho˜w˜ev˜er,“accum˜ulatesŽ¡‘>the–hrelev‘ÿqÇanš¸ãt“stretc˜h“or“shrink“compGonen˜ts“of“consecutiv˜e“glue“nošGdes“(p˜ossiblyŽ¡‘>separated–àôbš¸ãy“insert,–Ümark,“adjust,“k˜ern,“and–àôpGenalt˜y“nošGdes)“b˜efore“con•¸ãv“ertingŽ¡‘>them–àto“D¸ãVI‘ߟunits.‘ ÕDuring“this“prošGcess“glue“no˜des“ma¸ãy“b˜e“con•¸ãv“erted‘àin“toŽ¡‘>equiv‘ÿqÇalen•¸ãt›Ük“ern˜no•Gdes˜and˜some˜glue˜sp“eci cations˜ma¸ãy˜b“e˜recycled;‘„this˜ma¸ãyŽ¡‘>a ect–@¢the“memory“usage“statistics“displa•¸ãy“ed–@¢after“the“page“has“bšGeen“shipp˜edŽ¡‘>out.ŽŸþ6‘>Ï3.3Ž‘\ÀT‘þàracing–€and“DiagnosticsŽŸuT‘>²When–cÍ\tracingcommands“²has“a“v‘ÿqÇalue“of“3“or“more,‘çthe“commands“follo¸ãwing“aŽ¡‘>pre x–UU(Í\global²,“etc.)‘qÇare“shoš¸ãwn“as“w˜ell,“e.g.:Ž¦‘M¿÷Í\global\count0=0–ÿô=>“{\global}Ž¡’Ö?©{\count}Ž¦‘M²When–QdÍ\tracinglostchars“²has“a“v‘ÿqÇalue“of“2“or“more,‘R.missing“c¸ãharacters“areŽ¡‘>displa•¸ãy“ed–UUon“the“terminal“ev¸ãen“if“the“v‘ÿqÇalue“of“Í\tracingonline“²is“0“or“less.Ž¡‘MWhen–G\Í\tracingscantokens“²has“a“v‘ÿqÇalue“of“1“or“more,‘}[the“opGening“and“closingŽ¡‘>of–4pseudo- les“(generated“bš¸ãy“Í\scantokens²)“is“recorded“as“for“an˜y“other“ le,‘«¢withŽ¡‘>`Í ²'–UUas“ lename.Ž¡‘MWhen–JTthe“program“is“compiled“with“the“coGde“for“collecting“statistics“andŽ¡‘>Í\tracingassigns–L²has“a“v‘ÿqÇalue“of“1“or“more,‘LÉall“assignmen¸ãts“sub‘Ž8ject“to“T‘þU>Ÿ'EŽ‘ãxX'sŽ¡‘>grouping–UUmec¸ãhanism“are“traced,“e.g.:Ž¦‘M¿÷Í\def\foo{\relax}–ÿô=>“{changing‘?ý\foo=undefined}Ž¡’Ö?©{into–?ý\foo=macro:->\relax“}Ž¡‘M¿÷\global\count17=7‘¿÷=>‘ÿô{globally–?ýchanging“\count17=0}Ž¡’Ö?©{into‘?ý\count17=7}Ž¡‘M¿÷\count17=7‘4â=>‘ÿô{reassigning‘?ý\count17=7}ŽŽŸ’è²4ŽŽŒ‹.‘ y ý£ ? ýä‘M²When–¡/Í\tracingifs“²has“a“v‘ÿqÇalue“of“1“or“more,‘ô%all“conditionals“(includingŽ¤ ‘>Í\unless²,–¯™Í\or²,“Í\else²,“and–ŒÍ\fi²)“are“traced,‘¯™together“with“the“starting“line“andŽ¡‘>nesting–¤zlevš¸ãel;‘Ì the“Í\showifs“²command“displa˜ys“the“state“of“all“curren˜tly“activ˜eŽ¡‘>conditionals.‘qÇTh¸ãus–UUthe“inputŽ©€‘M¿÷Í\unless\iffalseŽ¡‘]î\iffalseŽ¡‘]î\elseŽ¡‘m?å\showifsŽ¡‘]î\fiŽ¡‘M¿÷\fiŽ¦‘>²migh¸ãt‘UUyieldŽ¦‘M¿÷Í{\unless\iffalse:–?ý(level“1)“entered“on“line“1}Ž¡‘M¿÷{\iffalse:–?ý(level“2)“entered“on“line“2}Ž¡‘M¿÷{\else:–?ý\iffalse“(level“2)“entered“on“line“2}Ž¡‘M¿÷###–?ýlevel“2:“\iffalse\else“entered“on“line“2Ž¡‘M¿÷###–?ýlevel“1:“\unless\iffalse“entered“on“line“1Ž¡‘M¿÷{\fi:–?ý\iffalse“(level“2)“entered“on“line“2}Ž¡‘M¿÷{\fi:–?ý\unless\iffalse“(level“1)“entered“on“line“1}Ž¦‘M²When–{ÃÍ\tracinggroups“²has“a“v‘ÿqÇalue“of“1“or“more,‘…^the“start“and“end“of“eac¸ãhŽ¡‘>sa•¸ãv“e–group“is“traced,‘Ûtogether“with“the“starting“line“and“grouping“lev¸ãel;‘(útheŽ¡‘>Í\showgroups–0[²command“displaš¸ãys“the“state“of“all“curren˜tly“activ˜e“sa˜v˜e“groups.Ž¡‘>Th¸ãus–UUthe“inputŽ¦‘M¿÷Í\begingroupŽ¡‘]î{Ž¡‘m?å\showgroupsŽ¡‘]î}Ž¡‘M¿÷\endgroupŽ¦‘>²migh¸ãt‘UUyieldŽ¦‘HúÍ{entering–?ýsemi“simple“group“(level“1)“at“line“1}Ž¡‘Hú{entering–?ýsimple“group“(level“2)“at“line“2}Ž¡‘Hú###–?ýsimple“group“(level“2)“entered“at“line“1“({)Ž¡‘Hú###–?ýsemi“simple“group“(level“1)“entered“at“line“1“(\begingroup)Ž¡‘Hú###–?ýbottom“levelŽ¡‘Hú{leaving–?ýsimple“group“(level“2)“entered“at“line“2}Ž¡‘Hú{leaving–?ýsemi“simple“group“(level“1)“entered“at“line“1}Ž¦‘M²Occasionally–Çâconditionals“and/or“sa•¸ãv“e–Çâgroups“are“not“propGerly“nested“withŽ¡‘>respšGect–Fanomalies–jare“mostly“unin•¸ãten“tional–jand“ma¸ãy“cause“quite“obscure“errors.‘¯öWhenŽ¡‘>Í\tracingnesting–Ým²has“a“v‘ÿqÇalue“of“1“or“more,‘ÿsthese“anomalies“are“sho¸ãwn;‘!ywhenŽ¡‘>Í\tracingnesting–ª²has“a“v‘ÿqÇalue“of“2“or“more,‘¿Hthe“currenš¸ãt“con˜text“(tracebac˜k)“isŽ¡‘>shoš¸ãwn–UUas“w˜ell.‘qÇTh˜us“the“inputŽŽŸ’è5ŽŽŒ‹9À y ý£ ? ýä‘M¿÷Í\newlinechar=`\^^JŽ¤ ‘M¿÷\begingroupŽ¡‘]î\iftrueŽ¡‘m?å\scantokens{%Ž¡‘]î\endgroupŽ¡‘M¿÷^^J\fiŽ¡‘M¿÷^^J\bgroupŽ¡‘]î^^\tracingnesting=2Ž¡‘]î^^J\iffalseŽ¡‘]î^^J\elseŽ¡‘gÿè}%Ž¡‘X?ñ\egroupŽ¡‘M¿÷\fiŽ¤‘>²migh¸ãt‘UUyieldŸü^ÿ±3ŽŽŽ¡‘>ÍWarning:–?ýend“of“semi“simple“group“(level“1)“entered“at“line“2“ofŽ¤ ‘C?ýa–?ýdifferent“fileŽ¡‘>Warning:–?ýend“of“\iftrue“entered“on“line“3“of“a“different“fileŽ¡‘>Warning:–?ýend“of“file“when“simple“group“(level“1)“entered“at“lineŽ¡‘C?ý3–?ýis“incompleteŽ¡‘>Warning:–?ýend“of“file“when“\iffalse\else“entered“on“line“5“is“incŽ¡‘>ompleteŽ¡‘>l.7‘?ý\elseŽ¡¡‘>l.11‘î}Ž¡‘w¿ß%Ž©‘M²The–Øocommand“Í\showtokens{¸h²tok¸ãen‘UUlist¸iŽ‘0c•Í}“²displaš¸ãys“the“tok˜en“list,‘ñjand“allo˜wsŽ¡‘>the–UUdisplaš¸ãy“of“quan˜tities“that“cannot“bGe“displa˜y˜ed“b˜y“Í\show“²or“Í\showthe²,“e.g.:Ž¦‘HúÍ\showtokens\expandafter{\jobname}Ž¡‘Hú\showtokens\expandafter{\topmarks‘?ý27}ŽŸþ6‘>Ï3.4Ž‘\ÀStatus‘€EnquiriesŽŸuT‘>²A‘’æn•¸ãum“bGer–’öof“T‘þU>Ÿ'EŽ‘ãxX's“inš¸ãternal“quan˜tities“can“bGe“assigned“v›ÿqÇalues“but“these“v˜aluesŽ¡‘>cannot–ˆbGe“retrievš¸ãed“in“T‘þU>Ÿ'EŽ–ãxX.‘Vƒµ"Ž‘ I²-T‘þU>Ÿ'EŽ“X–ˆin˜troGduces“sev˜eral“new“primitiv˜es“that“allo˜wŽ¡‘>the–UUretriev‘ÿqÇal“of“information“abGout“its“in¸ãternal“state.Ž¡‘>Í\eTeXversion–UU²returns“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX's“(ma‘Ž8jor)“vš¸ãersion“n˜um˜bGer;Ž¡‘>Í\eTeXrevision–é?²expands“inš¸ãto“a“list“of“c˜haracter“tok˜ens“represen˜ting“the“revisionŽ¡‘>(minor–UUvš¸ãersion)“n˜um˜bGer.‘qÇTh˜usŽ¦‘M¿÷Í\message{\number\eTeXversion\eTeXrevision}Ž¦‘>²should–UUwrite“the“complete“vš¸ãersion“as“sho˜wn“when“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX“is“started.Ž‘>Ÿ‚‰ff‰ÿvŸ J=‘ "5Ÿý-:È3ŽŽŽ‘LÜÇThe–ÕXó%ßCÊscmtt8Ð\scantokens“Çcommand“will“b²When–žused“as“n•¸ãum“bGer,‘°5Í\interactionmode–ž²returns“one“of“the“v‘ÿqÇalues“0“(batc¸ãh-Ž¤ ‘>mo•Gde),›¬O1‘šê(nonstopmo“de),˜2‘šê(scrollmo“de),˜or–šê3“(errorstopmoGde).‘B†Assigning“oneŽ¡‘>of–Lthese“v‘ÿqÇalues“to“Í\interactionmode“²cš¸ãhanges“the“curren˜t“in˜teraction“moGde“ac-Ž¡‘>cordingly;–UUsucš¸ãh“assignmen˜ts“are“alw˜a˜ys“global.Ž¡‘>Í\currentgrouplevel–UU²returns“the“currenš¸ãt“sa˜v˜e“group“lev˜el;Ž¡‘>Í\currentgrouptype–ß²returns“a“n•¸ãum“bGer›ßrepresen“ting˜the˜t“ypGe˜of˜the˜innermostŽ¡‘>group:Ž©™š‘R0:Ž‘cÇ!bGottom–UUlev¸ãel“(no“group)Ž’ù‡69:Ž’ NUmath‘UUgroupŽŽ¡‘R1:Ž‘cÇ!simple‘UUgroupŽ’ô‡510:Ž’ NUdisc‘UUgroupŽŽ¡‘R2:Ž‘cÇ!h•¸ãbGo“x‘UUgroupŽ’ô‡511:Ž’ NUinsert‘UUgroupŽŽ¡‘R3:Ž‘cÇ!adjusted›UUh•¸ãbGo“x˜groupŽ’ô‡512:Ž’ NUv•¸ãcen“ter‘UUgroupŽŽ¡‘R4:Ž‘cÇ!vbGo¸ãx‘UUgroupŽ’ô‡513:Ž’ NUmath–UUc¸ãhoice“groupŽŽ¡‘R5:Ž‘cÇ!vtop‘UUgroupŽ’ô‡514:Ž’ NUsemi–UUsimple“groupŽŽ¡‘R6:Ž‘cÇ!align‘UUgroupŽ’ô‡515:Ž’ NUmath–UUshift“groupŽŽ¡‘R7:Ž‘cÇ!no–UUalign“groupŽ’ô‡516:Ž’ NUmath–UUleft“groupŽŽ¡‘R8:Ž‘cÇ!output‘UUgroupŽŽ¦¡‘>Í\currentiflevel–UU²returns“the“n•¸ãum“bGer–UUof“currenš¸ãtly“activ˜e“conditionals;Ž¡‘>Í\currentifbranch–G²indicates“whicš¸ãh“branc˜h“of“the“innermost“conditional“is“tak˜en:Ž¡‘>1–UU`then“brancš¸ãh',“¸²1“`else“branc˜h',“or“0“not“y˜et“decided;Ž¡‘>Í\currentiftype–Í ²returns“0“if“there“are“no“activš¸ãe“conditionals,‘èMa“pGositiv˜e“n˜um˜bGerŽ¡‘>indicating–pthe“tš¸ãypGe“of“the“innermost“activ˜e“conditional,‘v±or“the“negativ˜e“of“thatŽ¡‘>n•¸ãum“bGer–UUwhen“the“conditional“wš¸ãas“pre xed“b˜y“Í\unless²:Ž¦‘R1:Ž‘cÇ!Í\ifŽ’ºÇ²8:Ž’ÌŽ-Í\ifmmodeŽ’Ž²15:Ž’5U9Í\iftrueŽŽ¡‘R²2:Ž‘cÇ!Í\ifcatŽ’ºÇ²9:Ž’ÌŽ-Í\ifinnerŽ’Ž²16:Ž’5U9Í\iffalseŽŽ¡‘R²3:Ž‘cÇ!Í\ifnumŽ’µÇ ²10:Ž’ÌŽ-Í\ifvoidŽ’Ž²17:Ž’5U9Í\ifcaseŽŽ¡‘R²4:Ž‘cÇ!Í\ifdimŽ’µÇ ²11:Ž’ÌŽ-Í\ifhboxŽ’Ž²18:Ž’5U9Í\ifdefinedŽŽ¡‘R²5:Ž‘cÇ!Í\ifoddŽ’µÇ ²12:Ž’ÌŽ-Í\ifvboxŽ’Ž²19:Ž’5U9Í\ifcsnameŽŽ¡‘R²6:Ž‘cÇ!Í\ifvmodeŽ’µÇ ²13:Ž’ÌŽ-Í\ifxŽ’Ž²20:Ž’5U9Í\iffontcharŽŽ¡‘R²7:Ž‘cÇ!Í\ifhmodeŽ’µÇ ²14:Ž’ÌŽ-Í\ifeofŽŽ¦¡‘>\lastnodetype–ÞU²returns“a“n•¸ãum“bšGer–ÞUindicating“the“t¸ãyp˜e“of“the“last“no˜de,‘•if“an¸ãy‘ÿ*ª,Ž¡‘>on–UUthe“currenš¸ãt“(v˜ertical,“horizon˜tal,“or“math)“list:Ž¦‘R-1:Ž‘gvnone–UU(empt¸ãy“list)Ž’߸÷8:Ž’ñ€disc‘UUnoGdeŽŽ¡‘UUW0:Ž‘gvc¸ãhar‘UUnoGdeŽ’߸÷9:Ž’ñ€whatsit‘UUnoGdeŽŽ¡‘UUW1:Ž‘gvhlist‘UUnoGdeŽ’Ú¸ö10:Ž’ñ€math‘UUnoGdeŽŽ¡‘UUW2:Ž‘gvvlist‘UUnoGdeŽ’Ú¸ö11:Ž’ñ€glue‘UUnoGdeŽŽ¡‘UUW3:Ž‘gvrule‘UUnoGdeŽ’Ú¸ö12:Ž’ñ€k¸ãern‘UUnoGdeŽŽ¡‘UUW4:Ž‘gvins‘UUnoGdeŽ’Ú¸ö13:Ž’ñ€p•Genalt¸ãy‘UUno“deŽŽ¡‘UUW5:Ž‘gvmark‘UUnoGdeŽ’Ú¸ö14:Ž’ñ€unset‘UUnoGdeŽŽ¡‘UUW6:Ž‘gvadjust‘UUnoGdeŽ’Ú¸ö15:Ž’ñ€math–UUmošGde“no˜desŽŽ¡‘UUW7:Ž‘gvligature‘UUnoGdeŽŽŽŸ’è7ŽŽŒ‹J+ y ý£ ? ýä¤ ‘>²The–?Gcommands“Í\fontcharht²,–yÄÍ\fontcharwd²,“Í\fontchardp²,“and‘?GÍ\fontcharicŽ¡‘>²follo•¸ãw“ed›¼]b“y˜a˜fon“t˜spGeci cation˜and˜a˜c“haracter˜coGde,‘Öreturn˜a˜dimension:‘?ØtheŽ¡‘>heighš¸ãt,–^width,“depth,“or–)"italic“correction“of“the“c˜haracter“in“the“fon˜t,‘^or‘ÓÐÍ0ptŽ¡‘>²if–°that‘UUc¸ãharacter.Ž¡‘>When–bused“as“n•¸ãum“bšGer,‘2¥Í\parshape–b²returns“the“n•¸ãum“b˜er–bof“lines“of“the“curren¸ãtŽ¡‘>parshap•Ge›UUsp“eci cation˜(or˜zero).Ž¡‘>µ"Ž‘B©Æ²-T‘þU>Ÿ'EŽ‘ãxX's› Í\parshapeindent²,–C·Í\parshapelength²,“and˜Í\parshapedimen²,“follo•¸ãw“edŽ¡‘>bš¸ãy–UUa“n˜um˜bšGer“µn“²return“the“dimensions“of“the“parshap˜e“sp˜eci cation:Ž¡‘>Í0pt‘²for›UUµn–Ǹ“²0˜or˜when˜no˜parshapGe˜is˜curren•¸ãtly˜activ“e,˜otherwiseŽ¡‘>Í\parshapeindent›ª¨µn–q²and“Í\parshapedimen˜²2µn–—¸“²1–qbGoth“return“the“inden¸ãtation“ofŽ¡‘>line–UUµn“²(explicitly“spšGeci ed“or“implied“b¸ãy“rep˜eating“the“last“sp˜eci cation),Ž¡‘>Í\parshapelength›ª¨µn–UU²and“Í\parshapedimen˜²2µn“²bGoth“return“the“length“of“line“µn².ŽŸþ6‘>Ï3.5Ž‘\ÀExpressionsŽŸuT‘>µ"Ž‘B©Æ²-T‘þU>Ÿ'EŽ‘ãxX–´kinš¸ãtroGduces“the“notion“of“expressions“of“t˜ypGe“n˜um˜bGer,– 1dimen,“glue,“orŽ¡‘>mš¸ãuglue,‘’ýthat–Sucan“bGe“used“whenev˜er“a“quan˜tit˜y“of“that“t˜ypGe“is“needed.‘l'Suc˜hŽ¡‘>expressions–äÞare“ev‘ÿqÇaluated“bš¸ãy“µ"Ž‘Ž¤²-T‘þU>Ÿ'EŽ‘ãxX's“scanning“mec˜hanism;‘ [they“are“initiated“b˜yŽ¡‘>one–b~of“the“commands“Í\numexpr²,–eÈÍ\dimexpr²,“Í\glueexpr²,“or–b~Í\muexpr“²(determin-Ž¡‘>ing–^the“tš¸ãypGe“µt²)“and“optionally“terminated“b˜y“one“Í\relax“²(that“will“bšGe“absorb˜edŽ¡‘>bš¸ãy–üñthe“scanning“mec˜hanism).‘h›An“expression“consists“of“one“or“more“terms“ofŽ¡‘>the–©Ësame“t¸ãypšGe“to“b˜e“added“or“subtracted;‘Ôa“term“of“t¸ãyp˜e“µt“²consists“of“a“factorŽ¡‘>of–jthat“tš¸ãypGe,‘oÊoptionally“m˜ultiplied“and/or“divided“b˜y“n˜umeric“factors;‘u nally“aŽ¡‘>factor–‡of“tš¸ãypGe“µt“²is“either“a“paren˜thesized“subGexpression“or“a“quan˜tit˜y“(n˜um˜bGer,Ž¡‘>etc.)›qÇof–UUthat“t•¸ãypGe.˜Th“us,–UUthe“conditionalŽ¤‘HúÍ\ifdim\dimexpr–?ý(2pt-5pt)*\numexpr“3-3*13/5\relax“+“34pt/2<\wd20Ž¡‘>²is–Ðtrue“if“and“only“if“the“width“of“bGo¸ãx“20“exceeds“32–ª®Ípt“².‘]›Note–Ðthe“use“of“Í\relaxŽ¤ ‘>²to–tŠterminate“the“inner“(n¸ãumeric)“expression,‘¼Vthe“outer“(dimen)“expression“isŽ¡‘>terminated–0”automatically“bš¸ãy“the“tok˜en“Í<Ÿÿ±12Ž‘ ©z²that“doGes“not“ t“in˜to“the“expressionŽ¡‘>syn¸ãtax.Ž¡‘MThe–warithmetic“pšGerformed“b¸ãy“µ"Ž‘ !S²-T‘þU>Ÿ'EŽ‘ãxX's“expressions“do˜es“not“do“m•¸ãuc“h‘wthatŽ¡‘>could–ä?not“bšGe“done“b¸ãy“T‘þU>Ÿ'EŽ‘ãxX's“arithmetic“op˜erations“Í\advance²,–úÍ\multiply²,“andŽ¡‘>Í\divide²,‘–although–ï&there“are“some“notable“di erences:‘>°Eacš¸ãh“factor“is“c˜hec˜k˜ed“toŽ¡‘>bšGe–•min“the“allo•¸ãw“ed‘•mrange,‘»Ïn“um“b˜ers›•mm“ust˜bGe˜less˜than˜2Ÿü^ÿ±31Ž‘ S²in˜absolute˜v‘ÿqÇalue,‘»Ïdimen-Ž¡‘>sions–nûor“glue“compGonenš¸ãts“m˜ust“bGe“less“than“2Ÿü^ÿ±14Ž‘ #”Ípt–ª®²,› Ímu“²,˜Ífil“²,‘udetc.‘nûrespGectiv¸ãely‘ÿ*ª.Ž¡‘>The–’arithmetic“opšGerations“are“p˜erformed“individually‘ÿ*ª,‘¹…except“for“`scaling'“op˜era-Ž¡‘>tions–å«(a“mš¸ãultiplication“immediately“follo˜w˜ed“b˜y“a“division)“whic˜h“are“pGerformedŽ¡‘>as–âone“com¸ãbined“opšGeration“with“a“64-bit“pro˜duct“as“in¸ãtermediate“v‘ÿqÇalue.‘ÅoTheŽ¡‘>result–Aof“eacš¸ãh“opGeration“is“again“c˜hec˜k˜ed“to“bGe“in“the“allo˜w˜ed“range.‘VÁFinally“theŽ¡‘>results–ò§of“divisions“and“scalings“are“rounded,‘cwhereas“T‘þU>Ÿ'EŽ‘ãxX's“Í\divide“²truncates.Ž¡‘MThe–ýGimpGortanš¸ãt“new“feature“is,–'Cho˜w˜ev˜er,“that–ýGthe“ev‘ÿqÇaluation“of“expressionsŽ¡‘>doGes–‰:not“in•¸ãv“olv“e›‰:assignmen“ts˜and˜can˜therefore˜b•Ge˜p“erformed˜in˜circumstancesŽŽŸ’è8ŽŽŒ‹ V. y ý£ ? ýä‘>²where–¡×assignmenš¸ãts“are“not“allo˜w˜ed,–´÷e.g.,“inside–¡×an“Í\edef“²or“Í\write².‘WMThis“alsoŽ¤ ‘>allo¸ãws–UUthe“de nition“of“purely“expandable“loGop“constructions:Ž©‘HúÍ\def\foo#1#2{\number#1Ž¡‘Rÿô\ifnum#1<#2,Ž¡‘]î\expandafter\fooŽ¡‘]î\expandafter{\number\numexpr#1+1\expandafter}%Ž¡‘]î\expandafter{\number#2\expandafter}%Ž¡‘Rÿô\fi}Ž¦‘>²sucš¸ãh–UUthat,“e.g.,“`Í\foo{7}{13}²'“expands“in˜to“`Í7,–?ý8,“9,“10,“11,“12,“13²'.Ž¡‘MThe–£“commands“Í\gluestretch“²and“Í\glueshrink“²are“to“bGe“follo•¸ãw“ed›£“b“y˜aŽ¡‘>glue–"óspšGeci cation“and“return“the“stretc¸ãh“or“shrink“comp˜onen¸ãt“of“that“glue“asŽ¡‘>dimensions›4(with–)âÍfil“²etc.˜replaced˜b¸ãy“Ípt‘ª®²),‘ªthe˜commands˜Í\gluestretchorderŽ¡‘>²and–r³Í\glueshrinkorder“²return“the“order“of“in nit¸ãy:‘¬ƒ0“for›aÍpt‘ª®²,‘z 1“for˜Ífil‘ª®²,‘z 2“forŽ¡‘>Ífill›ª®²,–UUand“3“for‘Ífilll˜².Ž¡‘MThe–|tcommands“Í\gluetomu“²and“Í\mutoglue“²con•¸ãv“ert–|tglue“inš¸ãto“m˜uglue“and“viceŽ¡‘>v•¸ãersa›cBb“y˜simply˜equating˜1–ª®Ípt‘ ð²with˜1“Ímu“²,‘f¾precisely˜what˜T‘þU>Ÿ'EŽ‘ãxX˜doGes˜(in˜additionŽ¡‘>to–UUan“error“message)“when“the“wrong“kind“of“glue“is“used.ŽŸþ6‘>Ï3.6Ž‘\ÀAdditional–€Registers“and“MarksŽŸuT‘>µ"Ž‘B©Æ²-T‘þU>Ÿ'EŽ›ãxX–s'increases“the“n•¸ãum“bGer–s'of“T‘þU>Ÿ'EŽ˜X's“counš¸ãt,– ddimen,“skip,“m˜uskip,“bGo˜x,“and‘s'tok˜enŽ¡‘>registers–ê¥from“256“to“32768.‘N7The“additional“registers,›ÿün•¸ãum“bGered‘ê¥256{32767,˜canŽ¡‘>bšGe–oçused“exactly“as“the“ rst“256,‘v‹except“that“they“can“not“b˜e“used“for“insertionŽ¡‘>classes.Ž¡‘MAs–Ñ–in“T‘þU>Ÿ'EŽ‘ãxX,‘ð§the“ rst“256“registers“of“eacš¸ãh“kind“are“realized“as“static“arra˜ysŽ¡‘>that–D¦are“part“of“the“`table“of“equiv–ÿqÇalenš¸ãts';‘¼Nv“alues–D¦to“bGe“restored“when“a“sa˜v˜eŽ¡‘>group–Škends“are“kš¸ãept“on“the“sa˜v˜e“stac˜k.‘ The“additional“registers“are“realized“asŽ¡‘>sparse–kOarraš¸ãys“built“from“T‘þU>Ÿ'EŽ‘ãxX's“main“memory“and“are“therefore“less“ecien˜t.Ž¡‘>They–±Ãuse“a“four-levš¸ãel“index“structure“and“individual“registers“are“presen˜t“onlyŽ¡‘>when–±Åneeded.‘‡V‘ÿ*ªalues“to“bGe“restored“when“a“particular“sa•¸ãv“e–±Ågroup“ends“areŽ¡‘>kš¸ãept–UÔin“a“link˜ed“list“(again“built“from“main“memory)“with“one“sa˜v˜e“stac˜k“en˜tryŽ¡‘>pGoin¸ãting–UUto“that“list.Ÿü^ÿ±4ŽŽŽŸ‘Mµ"Ž‘Q©Æ²-T‘þU>Ÿ'EŽ›ãxX–’ygeneralizes“T‘þU>Ÿ'EŽ˜X's“mark“concept“to“mark“classes“0{32767,‘¡Ãwith“markŽ¡‘>class–UU0“used“for“T‘þU>Ÿ'EŽ‘ãxX's“marks.Ž¡‘>The–À÷command“Í\marks“²follo•¸ãw“ed›À÷b“y˜a˜mark˜class˜µn˜²and˜a˜mark˜text˜appGends˜aŽ¡‘>mark–ß$noGde“to“the“currenš¸ãt“list;‘$ Í\marks0“²is“synon˜ymous“with“Í\mark².‘5The“pageŽ¡‘>builder–Sand“the“Í\vsplit“²command“record“information“abšGout“the“mark“no˜desŽ¡‘>found–cÚon“the“page“or“bšGo¸ãx“pro˜duced,‘”&separately“for“eac¸ãh“mark“class.‘!IThe“informa-Ž¡‘>tion–—³for“mark“class“0“is“kš¸ãept“in“a“small“static“arra˜y“as“in“T‘þU>Ÿ'EŽ‘ãxX,‘½ the“information“forŽ¡‘>the–o”additional“mark“classes“is“again“kš¸ãept“in“a“sparse“arra˜y“with“en˜tries“presen˜tŽ¡‘>only–UUwhen“needed.Ž¡‘>The–¬Xcommand“Í\firstmarks‘ª¨µn“²expands“to“the“mark“text“for“mark“class“µn“² rstŽ‘>ŸX-‰ff‰ÿvŸ J=‘ "5Ÿý-:È4ŽŽŽ‘LÜÇWith–¦Çthe“e ect“that“the“order“of“restoring“(or“discarding)“sa•ÃŽv“ed–¦Çv‡alues“maÃŽy“b²encounš¸ãtered–QOon“the“most“recen˜t“page,–Retc.,“and–QOagain“Í\firstmarks0“²is“synon˜y-Ž¤ ‘>mous–UUwith“Í\firstmark².ŽŸé¿‘>Ï3.7Ž‘\ÀInput‘€HandlingŽŸuT‘>²The–qcommand“Í\readline¸h²n•¸ãum“bGer¸iŽ‘*‡&Íto‘ª®¸h²con¸ãtrol‘UUsequence¸iŽ‘TNC²de nes“the“con¸ãtrol“se-Ž¡‘>quence–Ùas“parameterless“macro“whose“replacemenš¸ãt“text“is“the“con˜ten˜ts“of“theŽ¡‘>next–W„line“read“from“the“designated“ le,‘Xas“for“Í\read².‘xTThe“di erence“is“that“theŽ¡‘>currenš¸ãt–ecategory“coGdes“are“ignored“and“all“c˜haracters“on“that“line“(including“anŽ¡‘>endline–1Ãcš¸ãharacter)“are“con˜v˜erted“to“c˜haracter“tok˜ens“with“category“12“(`other'),Ž¡‘>except–UUthat“the“c¸ãharacter“coGde“32“gets“category“10“(`space').Ž¡‘MThe–Ù´command“Í\scantokens{...}“²absorbs“a“list“of“unexpanded“tok¸ãens,‘òncon-Ž¡‘>vš¸ãerts–mdit“in˜to“a“c˜haracter“string“that“is“treated“as“if“it“w˜ere“an“external“ le,‘shandŽ¡‘>starts–#½to“read“from“this“`pseudo- le'.‘a?A‘#±rather“similar“e ect“can“bGe“ac•¸ãhiev“ed‘#½b“yŽ¡‘>the‘UUcommandsŽ© í‘M¿÷Í\toks0={...}Ž¡‘M¿÷\immediate\openout0=fileŽ¡‘M¿÷\immediate\write0{\the\toks0}Ž¡‘M¿÷\immediate\closeout0Ž¡‘M¿÷\input‘?ýfileŽ¦‘>²In–6¾particular“evš¸ãery“oGccurrence“of“the“curren˜t“newline“c˜haracter“is“in˜terpretedŽ¡‘>as–`Ístart“of“a“new“line,‘£«and“input“cš¸ãharacters“will“bGe“con˜v˜erted“in˜to“tok˜ens“asŽ¡‘>usual.‘AþThe–ðÍ\scantokens“²command“is,›Áho•¸ãw“ev“er,˜expandable–ðand“doGes“not“useŽ¡‘>tok¸ãen–X.registers,›ŠÐwrite“streams,˜or“external“ les.‘eF‘ÿ*ªurthermore“the“con•¸ãv“ersion‘X.fromŽ¡‘>T‘þU>Ÿ'EŽ‘ãxX's–”'inš¸ãternal“ASCI•GI‘”co“des–”'to“external“c˜haracters“and“bac˜k“to“ASCI•GI‘”co“des‘”'isŽ¡‘>skippGed.‘MZFinally–è the“currenš¸ãt“con˜text“(tracebac˜k)“sho˜wn,–ýèe.g.,“as–è part“of“an“errorŽ¡‘>message›ïücon•¸ãtin“ues˜bGey“ond˜an˜input˜line˜from˜a˜pseudo- le˜un“til˜an˜input˜lineŽ¡‘>from–UUa“real“ le“(or“the“terminal)“is“found.Ž¡‘MWhen‘Öµ"Ž‘ Ô²-T‘þU>Ÿ'EŽ‘ãxX's–Öinput“mecš¸ãhanism“attempts“to“read“bGey˜ond“the“end“of“anŽ¡‘>Í\input–GŽ² le“or“Í\scantokens“²pseudo- le,‘JOand“bGefore“c•¸ãhec“king–GŽfor“`runa•¸ãw“a“y'‘GŽcon-Ž¡‘>ditions–òxand“closing“the“ le,‘YÀit“will“ rst“read“a“list“of“tok¸ãens“that“has“bGeenŽ¡‘>prede ned–UUbš¸ãy“the“command“Í\everyeof={¸h²tok˜en“list¸iŽ‘0c•Í}².ŽŸé¿‘>Ï3.8Ž‘\ÀBreaking–€Pš aragraphs“in˜to“LinesŽŸuT‘>²T‘ÿ*ªraditional–h¶tš¸ãypGesetting“with“lead“t˜ypGe“used“to“adjust“(stretc˜h“or“shrink)“theŽ¡‘>in•¸ãterw“ord–Ûkspaces“in“the“last“line“of“a“paragraph“bš¸ãy“the“same“amoun˜t“as“thoseŽ¡‘>in–6"the“preceding“line.‘-With“T‘þU>Ÿ'EŽ‘ãxX“the“last“line“is,›nUho•¸ãw“ev“er,˜usually›6"t“ypGeset˜atŽ¡‘>its–§Ænatural“width“due“to“in nitely“stretcš¸ãhable“par llskip“glue.‘iµ"Ž‘ ß²-T‘þU>Ÿ'EŽ‘ãxX“allo˜wsŽ¡‘>inš¸ãterp•Golation‘ÿFb“et˜w˜een–ÿFthese“t˜w˜o“extremes“b˜y“spGecifying“a“suitable“v‘ÿqÇalue“forŽ¡‘>Í\lastlinefit².‘° F‘ÿ*ªor–¿ka“v‘ÿqÇalue“of“0“or“less,‘Ùñµ"Ž‘ƒ·²-T‘þU>Ÿ'EŽ›ãxX“bGeha•¸ãv“es–¿kas“T‘þU>Ÿ'EŽ˜X,‘Ùñv‘ÿqÇalues“from“1Ž¡‘>to–à1000“indicate“a“glue“adjustmenš¸ãt“fraction“µf‘o²times“1000,‘Äv‘ÿqÇalues“abGo˜v˜e“1000“areŽ¡‘>in¸ãterpreted–UUas“µf‘Ú§²=‘Ç1.Ž¡‘MThe–UUnew“algorithm“is“used“only“ifŽ¡‘>1.‘qÇÍ\lastlinefit–UU²is“pGositiv¸ãe;ŽŽŸ’åÿ10ŽŽŒ‹ s£ y ý£ ? ýä‘>²2.‘qÇÍ\parfillskip–UU²has“in nite“stretc•¸ãhabilit“y;‘UUandŽ¤ ‘>3.‘qÇthe›UUstretc•¸ãhabilit“y˜of˜Í\leftskip˜²plus˜Í\rightskip˜²is˜ nite.Ÿü^ÿ±5ŽŽŽ¡‘>²Thš¸ãus–¶Øthe“last“line“of“a“paragraph“w˜ould“normally“bGe“t˜ypGeset“at“its“natural“widthŽ¡‘>and–qthe“stretc•¸ãhabilit“y–qof“par llskip“glue“wš¸ãould“bGe“used“to“ac˜hiev˜e“the“desired“lineŽ¡‘>width.‘8FThe–ìÕalgorithm“prošGceeds“as“usual,‘´considering“all“p˜ossible“sequences“ofŽ¡‘>feasible–;·break“pGoinš¸ãts“and“accum˜ulating“demerits“for“the“stretc˜hing“or“shrinkingŽ¡‘>of–0lines“as“w¸ãell“as“for“visually“incompatible“lines.‘[»When“a“candidate“for“the“lastŽ¡‘>line–UUhas“bGeen“reacš¸ãhed,“the“follo˜wing“conditions“are“tested:Ž¡‘>4.‘–Qthe–aƒprevious“line“wš¸ãas“not“`in nitely“bad'“and“w˜as“stretc˜hed“with“pGositiv˜eŽ¡‘> nite›UUstretc•¸ãhabilit“y˜or˜w“as˜shrunk˜with˜pGositiv“e˜shrink‘ÿqÇabilit“y;Ž¡‘>5.‘qÇthe–UUlast“line“has“in nite“stretc•¸ãhabilit“y›UUen“tirely˜due˜to˜par llskip˜glue;Ž¡‘>6.‘éÀif–Ò¨the“previous“line“wš¸ãas“stretc˜hed“or“shrunk“the“last“line“has“pGositiv˜e“ niteŽ¡‘>stretc•¸ãhabilit“y–UUor“shrink‘ÿqÇabilitš¸ãy“respGectiv˜ely‘ÿ*ª.Ž¡‘>If–~>all“three“conditions“are“satis ed,‘ˆxa“glue“adjustmen¸ãt“factor“of“µf‘‘Ͳtimes“that“ofŽ¡‘>the–xHpreceding“line“will“bGe“applied“to“the“relev‘ÿqÇanš¸ãt“stretc˜h“or“shrink“compGonen˜tsŽ¡‘>of–§all“glue“nošGdes“in“the“last“line,‘'ýand“the“corresp˜onding“demerits“are“computed.Ž¡‘>(The–UUlast“line“will,“ho•¸ãw“ev“er,–UUnot“bšGe“stretc¸ãhed“b˜ey¸ãond“the“desired“line“width.)Ž¡‘MWhen–$"all“pšGossible“candidates“for“the“last“line“of“the“paragraph“ha•¸ãv“e‘$"b˜eenŽ¡‘>examined,‘†èthe–IËone“haš¸ãving“few˜est“accum˜ulated“demerits“is“c˜hosen.‘O(If“µ"Ž‘ó‘²-T‘þU>Ÿ'EŽ‘ãxX'sŽ¡‘>moGdi ed–Éalgorithm“wš¸ãas“applied“to“that“last“line,‘åythe“actual“stretc˜hing“or“shrink-Ž¡‘>ing–UUis“ac•¸ãhiev“ed›UUb“y˜suitably˜mo•Gdifying˜the˜par llskip˜glue˜no“de.Ž¡‘MAll–K‰computations“describšGed“so“far“are“p˜erformed“with“mac•¸ãhine-indep˜enden“tŽ¡‘>in•¸ãteger‘Ccarithmetic.‘kÌNote,›Fúho“w“ev“er,˜that–Ccthe“actual“stretcš¸ãhing“requires“mac˜hine-Ž¡‘>depšGenden¸ãt–j oating“p˜oinš¸ãt“arithmetic.‘#`Therefore,‘™*when“a“paragraph“is“in˜terruptedŽ¡‘>bš¸ãy–ˆ1a“displa˜y˜ed“equation“and“the“line“preceding“the“displa˜y“is“sub‘Ž8ject“to“theŽ¡‘>adjustmenš¸ãt–SXjust“describGed,‘S¾the“displa˜y“will“in“general“bGe“preceded“b˜y“abGo˜v˜edis-Ž¡‘>plaš¸ãyskip–UUand“not“b˜y“abGo˜v˜edispla˜yshortskip“glue.ŽŸ‘MAfter–Fbreaking“a“paragraph“inš¸ãto“lines,‘I#T‘þU>Ÿ'EŽ‘ãxX“computes“the“in˜terline“pGenaltiesŽ¡‘>b¸ãy–UUadding“the“v‘ÿqÇalues“of:Ž¡‘>Í\interlinepenalty›UU²bGet•¸ãw“een˜an“y˜t“w“o˜lines,Ž¡‘>Í\clubpenalty–UU²after“the“ rst“line“of“a“(partial)“paragraph,Ž¡‘>Í\widowpenalty–UU²bGefore“the“last“line“of“the“paragraph,Ž¡‘>Í\displaywidowpenalty–s’²bGefore“the“line“immediately“preceding“a“displa•¸ãy“ed‘s’equa-Ž¡‘>tion,‘UUandŽ¡‘>Í\brokenpenalty–UU²after“lines“ending“with“a“discretionary“break.Ž¡‘>µ"Ž‘B©Æ²-T‘þU>Ÿ'EŽ‘ãxX––generalizes“the“concept“of“inš¸ãterline,–„eclub,“wido˜w,“and––displa˜y“wido˜wŽ¡‘>pGenalt•¸ãy›Úb“y˜allo“wing˜their˜replacemen“t˜b“y˜arra“ys˜of˜pGenalt“y˜v‘ÿqÇalues˜with˜the˜com-Ž¡‘>mandsŽ¡‘>Í\interlinepenalties²,Ž¡‘>Í\clubpenalties²,Ž¡‘>Í\widowpenalties²,‘UUandŽ¡‘>Í\displaywidowpenalties².Ž¡‘>Eacš¸ãh–Nof“these“commands“is“to“bGe“follo˜w˜ed“b˜y“an“optional“equal“sign“and“a“n˜um-Ž‘>ŸX-‰ff‰ÿvŸ J=‘ "5Ÿý-:È5ŽŽŽ‘LÜÇAs–ü=usual“for“parameters“in uencing“T‘þ•AŸ¸ãEŽ‘MX's“line-breaking“algorithm,‘öthe“v‡alues“currenÃŽt“atŽŸ €the–ÕXend“of“the“(partial)“paragraph“are“used.ŽŽŸ’åÿ²11ŽŽŒ‹ 1 y ý£ ? ýä‘>²bšGer–…µn².‘,]If“µn–Ǹ“²0–…the“resp˜ectivš¸ãe“arra˜y“is“reset“and“T‘þU>Ÿ'EŽ‘ãxX's“correspGonding“single“v‘ÿqÇalueŽ¤ ‘>is–½used“as“usual;‘ña“pGositivš¸ãe“v‘ÿqÇalue“µn“²declares“an“arra˜y“of“length“µn“²and“m˜ust“bGeŽ¡‘>follo•¸ãw“ed›>‰b“y˜µn˜²pGenalt“y˜v‘ÿqÇalues.‘j.When˜one˜of˜these˜arra“ys˜has˜bGeen˜set,‘Cits˜v‘ÿqÇaluesŽ¡‘>are–‚”used“instead“of“T‘þU>Ÿ'EŽ‘ãxX's“correspšGonding“single“v‘ÿqÇalues“as“follo¸ãws“(rep˜eating“theŽ¡‘>last–UUv‘ÿqÇalue“when“necessary):Ž¡‘>the–UUµiŸü^ÿ±thŽ‘ `²inš¸ãterline“pGenalt˜y“v‘ÿqÇalue“is“used“after“line“µi“²of“the“paragraph;Ž¡‘>the–UUµiŸü^ÿ±thŽ‘ `²club“pGenalt¸ãy“v‘ÿqÇalue“is“used“after“line“µi“²of“a“partial“paragraph;Ž¡‘>the–o͵iŸü^ÿ±thŽ‘ zz²widoš¸ãw“pGenalt˜y“v‘ÿqÇalue“is“used“after“line“µm–õ/¸“µi–oͲof“a“paragraph“withoutŽ¡‘>displa•¸ãy“ed–UUequations“or“the“last“partial“paragraph“of“length“µm²;Ž¡‘>the–š5µiŸü^ÿ±thŽ‘ ¤â²displaš¸ãy“wido˜w“pGenalt˜y“v‘ÿqÇalue“is“used“after“line“µm–£¸“µi–š5²of“a“partial“paragraphŽ¡‘>of–UUlength“µm“²that“is“follo•¸ãw“ed›UUb“y˜a˜displa“y“ed˜equation.Ž¡‘MWhen–p¯used“after“Í\the“²or“in“situations“where“T‘þU>Ÿ'EŽ‘ãxX“expšGects“to“see“a“n•¸ãum“b˜er,Ž¡‘>the–ÚÊsame“four“commands“servš¸ãe“to“retriev˜e“the“arra˜ys“of“p•Genalties.‘'Sp“ecifying,Ž¡‘>e.g.,›Ï|Í\clubpenalties¸h²n•¸ãum“bGer¸iŽ‘,“†²with–·a“n•¸ãum“bGer–·µn²,˜returns“0“for“µn–iö<“²0–·or“whenŽ¡‘>the–Çclub“pGenaltš¸ãy“arra˜y“has“bšGeen“reset,‘ãŠthe“length“of“the“declared“club“p˜enalt¸ãyŽ¡‘>arraš¸ãy–æ`for“µn–¸Ô²=“0,‘ £or–æ`the“µnŸü^ÿ±thŽ‘ ñ ²club“pGenalt˜y“v‘ÿqÇalue“for“µn–¸Ô>“²0–æ`(again“repGeating“theŽ¡‘>last–UUv‘ÿqÇalue“when“necessary).Ž©þ6‘>Ï3.9Ž‘\ÀMath‘€F‘þàorm ulasŽŸuT‘>²T‘þU>Ÿ'EŽ‘ãxX's–4,Í\left¸h²delimiter¸iŽ‘.±ÎÍ...\right¸h²delimiter¸iŽ‘3åú²proGduces“t•¸ãw“o–4,delimiters“with“aŽ¡‘>common––Øsize“adjusted“to“the“heigh¸ãt“and“depth“of“the“enclosed“material.‘6QInŽ¡‘>µ"Ž‘B©Æ²-T‘þU>Ÿ'EŽ‘ãxX–Š`this“can“bšGe“generalized“b¸ãy“o˜ccurrences“of“Í\middle¸h²delimiter¸iŽ‘3<.²dividingŽ¡‘>the–(àenclosed“material“inš¸ãto“segmen˜ts“resulting“in“a“sequence“of“delimiters“with“aŽ¡‘>common–‹Ösize“adjusted“to“the“maximal“heighš¸ãt“and“depth“of“all“enclosed“segmen˜ts.Ž¡‘>The–þspacing“bGet•¸ãw“een–þa“segmenš¸ãt“and“the“delimiter“to“its“left“or“righ˜t“is“as“forŽ¡‘>T‘þU>Ÿ'EŽ‘ãxX's–UUleft“or“righš¸ãt“delimiter“respGectiv˜ely‘ÿ*ª.Ž¦‘>Ï3.10Ž‘c€HyphenationŽŸuT‘>²T‘þU>Ÿ'EŽ‘ãxX–UUuses“the“Í\lccode“²v‘ÿqÇalues“for“t•¸ãw“o–UUquite“unrelated“purpGoses:Ž¡‘>(1)–zxwhen“Í\lowercase“²con•¸ãv“erts›zxc“haracter˜tok“ens˜to˜their˜lo“w“er-case˜equiv‘ÿqÇalen“tsŽ¡‘>(in–UUthe“same“w•¸ãa“y–UUas“Í\uppercase“²uses“the“Í\uccode“²v‘ÿqÇalues);“andŽ¡‘>(2)–¼Zwhen“hš¸ãyphenation“patterns“or“exceptions“are“read,‘and“when“w˜ords“areŽ¡‘>h¸ãyphenated–UUduring“the“line-breaking“algorithm.Ž¡‘Mµ"Ž‘Q©Æ²-T‘þU>Ÿ'EŽ‘ãxX–nÙin¸ãtrošGduces“the“concept“of“(language-dep˜endenš¸ãt)“h˜yphenation“coGdesŽ¡‘>that–ê'are“used“instead“of“the“Í\lccode“²v‘ÿqÇalues“for“h¸ãyphenation“purpGoses.‘0>In“or-Ž¡‘>der–+8to“explain“the“details“of“µ"Ž‘Ôþ²-T‘þU>Ÿ'EŽ‘ãxX's“bšGeha•¸ãviour,‘3¤w“e–+8need“some“tec¸ãhnical“asp˜ectsŽ¡‘>of–ìqh¸ãyphenation“patterns.‘7When“INITEX‘ìJstarts“without“reading“a“format“ le,Ž¡‘>the–É(initially“emptš¸ãy)“h˜yphenation“patterns“are“in“a“form“suitable“for“insertingŽ¡‘>new–_patterns“spGeci ed“bš¸ãy“Í\patterns“²commands;‘ãøwhen“INITEX‘^Òattemps“h˜y-Ž¡‘>phenation–É?or“prepares“to“write“a“format“ le,‘æ9they“are“compressed“in¸ãto“a“moreŽ¡‘>compact–Ç™form“suitable“for“ nding“h¸ãyphens.‘B‰Only“these“compressed“patterns“canŽ¡‘>bGe–UUread“from“a“format“ le“(b¸ãy“INITEX“or“VIR‘ÿ*ªTEX).Ž¡‘MIn‘éøµ"Ž‘“¾²-T‘þU>Ÿ'EŽ‘ãxX–éøthe“hš¸ãyphenation“patterns“are“supplemen˜ted“b˜y“h˜yphenation“coGdes.Ž¡‘>When–õeINITEX‘ôÙstarts“without“reading“a“format“ le“bGoth“are“initially“empt¸ãy;ŽŽŸ’åÿ12ŽŽŒ‹ M y ý£ ? ýä‘>²when–ø2a“Í\patterns“²command“is“executed“and“Í\savinghyphcodes“²has“a“pGositiv¸ãeŽ¤ ‘>v›ÿqÇalue,‘ÌTthe–´ˆcurren¸ãt“Í\lccode“²v˜alues“are“sa•¸ãv“ed–´ˆas“h¸ãyphenation“coGdes“for“the“cur-Ž¡‘>renš¸ãt–-ãlanguage.‘ûpThese“sa˜v˜ed“h˜yphenation“coGdes“are“later“compressed“togetherŽ¡‘>with–tthe“patterns“and“written“to“or“read“from“a“format“ le.‘_ÑWhen“the“patternsŽ¡‘>ha•¸ãv“e–8*bšGeen“compressed“(alw•¸ãa“ys–8*true“for“eVIR‘ÿ*ªTEX)‘8#and“h¸ãyphenation“co˜des“ha•¸ãv“eŽ¡‘>bGeen›sësa•¸ãv“ed˜for˜the˜curren“t˜language,‘{‘they˜are˜used˜instead˜of˜the˜Í\lccode˜²v‘ÿqÇal-Ž¡‘>ues–´kfor“hš¸ãyphenation“purpGoses“(reading“h˜yphenation“exceptions“and“h˜yphenatingŽ¡‘>w¸ãords).Ž©þ6‘>Ï3.11Ž‘c€Discarded‘€ItemsŽŸuT‘>²When–=ÜT‘þU>Ÿ'EŽ‘ãxX's“page“builder“transfers“(vš¸ãertical“moGde)“material“from“the“`recen˜tŽ¡‘>con¸ãtributions'–…Øto“the“`page“so“far',›Ñøit“discards“glue,˜k¸ãern,˜and“pšGenalt¸ãy“no˜desŽ¡‘>(discardable–AÃitems)“preceding“the“ rst“bGo¸ãx“or“rule“on“the“page“under“constructionŽ¡‘>and–>inserts“a“topskip“glue“nošGde“immediately“b˜efore“that“b˜o¸ãx“or“rule.‘"Note,Ž¡‘>ho•¸ãw“ev“er,‘Ökthat–¶°this“topskip“glue“need“not“bšGe“the“ rst“no˜de“on“the“page,‘Ökit“ma¸ãy“b˜eŽ¡‘>preceded–çˆb¸ãy“insertion,– mark,“and–çˆwhatsit“noGdes.‘(`Similarly“when“the“Í\vsplitŽ¡‘>²command–gåhas“split“the“ rst“part“o “a“vbGo¸ãx,‘¬‰discardable“items“are“discardedŽ¡‘>from–v°the“top“of“the“remaining“vbšGo¸ãx“and“a“splittopskip“glue“no˜de“is“insertedŽ¡‘>immediately–UUbšGefore“the“ rst“b˜o¸ãx“or“rule.Ž¡‘MWhen‘wµ"Ž‘¿=²-T‘þU>Ÿ'EŽ‘ãxX's–wparameter“Í\savingvdiscards“²has“bšGeen“assigned“a“p˜ositiv¸ãeŽ¡‘>v‘ÿqÇalue,‘Œ™these–NY`discarded“items'“are“sa•¸ãv“ed–NYin“t•¸ãw“o–NYlists“and“can“bGe“reco•¸ãv“ered‘NYb“yŽ¡‘>the–²±commands“Í\pagediscards“²and“Í\splitdiscards“²that“act“likš¸ãe“`un˜vbGo˜xing'Ž¡‘>hš¸ãyp•Gothetical‘UUb“o˜x–UUregisters“con˜taining“a“vbGo˜x“with“the“discarded“items.Ž¡‘MThe–P•list“of“items“discarded“b¸ãy“the“page“builder“is“emptied“at“the“end“of“theŽ¡‘>output–4routine“and“bš¸ãy“the“Í\pagediscards“²command;‘?new“items“ma˜y“bGe“addedŽ¡‘>as–UUlong“as“the“new“`page“so“far'“conš¸ãtains“no“bGo˜x“or“rule.Ž¡‘MThe–ð"list“of“items“discarded“b¸ãy“the“Í\vsplit“²command“is“emptied“at“the“startŽ¡‘>of–Ça“vsplit“opGeration“and“b¸ãy“the“Í\splitdiscards“²command;‘€new“items“areŽ¡‘>added–UUat“the“end“of“a“vsplit“opGeration.Ž¦‘>Ï3.12Ž‘c€Expandable‘€CommandsŽŸuT‘>²Chapter–øe20“of“ÃThe“T‘þU>Ÿ'EŽ›ãxX‘b•Go“ok‘“©²giv¸ães–øecomplete“lists“of“all“expandable“T‘þU>Ÿ'EŽ˜X“com-Ž¡‘>mands–Pand“of“all“cases“where“expandable“tok¸ãens“are“not“expanded.‘"¸F‘ÿ*ªor“µ"Ž‘:²-T‘þU>Ÿ'EŽ‘ãxXŽ¡‘>there–UUare“these“additional“conditionals:Ž¤‘M¸ŽŽŽ‘WÍ\ifdefined¸h²tok¸ãen¸iŽ‘)ª±²(test–UUif“tok¸ãen“is“de ned)Ž¡‘>T›ÿ*ªrue–UUif“¸h²tok¸ãen¸iŽ‘&UZ²is“de ned;“creates“no“new“hash“table“en¸ãtry˜.Ž¡‘M¸ŽŽŽ‘WÍ\ifcsname...\endcsname‘ ²(test–UUif“con¸ãtrol“sequence“is“de ned)Ž¡‘>T‘ÿ*ªrue–}if“the“conš¸ãtrol“sequence“Í\csname...\endcsname“²w˜ould“bGe“de ned;‘ÞcreatesŽŸ ‘>no–UUnew“hash“table“en¸ãtry‘ÿ*ª.Ž¡‘M¸ŽŽŽ‘WÍ\iffontchar¸h²fon¸ãt¸iŽ‘h²8-bit‘UUn•¸ãum“bGer¸iŽ‘cÀ²(test–UUif“c¸ãhar“exists)ŽŽŸ’åÿ13ŽŽŒ‹ l y ý£ ? ýä‘>²T‘ÿ*ªrue–UUif“Í\char¸h²8-bit“n•¸ãum“bGer¸iŽ‘D^²in“Í\font¸h²fon¸ãt¸iŽ‘UZ²exists.Ž¤ ‘MThese–UUare“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX's“additional“expandable“commands:ŽŸ‘M¸ŽŽŽ‘WÍ\unless².Ž¡‘WThe– ðnext“(unexpanded)“tokš¸ãen“m˜ust“bšGe“a“b˜o˜olean“conditional“(i.e.,‘óÖnotŽ¡‘WÍ\ifcase²);–UUthe“truth“v‘ÿqÇalue“of“that“conditional“is“rev¸ãersed.Ž©‘M¸ŽŽŽ‘WÍ\eTeXrevision².Ž¡‘WThe–vexpansion“is“a“list“of“cš¸ãharacter“tok˜ens“of“category“12“(`other')“repre-Ž¡‘Wsenš¸ãting‘UUµ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX's–UUrevision“(minor“v˜ersion)“n˜um˜bGer,“e.g.,“`.0'“or“`.1'.Ž¦‘M¸ŽŽŽ‘WÍ\topmarks¸h²15-bit‘UUn•¸ãum“bGer¸iŽ›EÀ ²,–UUÍ\firstmarks¸h²15-bit“n•¸ãum“bGer¸iŽ˜²,Ž¡‘WÍ\botmarks¸h²15-bit‘UUn•¸ãum“bGer¸iŽ›EÀ ²,–UUÍ\splitfirstmarks¸h²15-bit“n•¸ãum“bGer¸iŽ˜²,“andŽ¡‘WÍ\splitbotmarks¸h²15-bit‘UUn•¸ãum“bGer¸iŽ‘EÀ ².Ž¡‘WThese–²“commands“generalize“T‘þU>Ÿ'EŽ‘ãxX's“Í\topmark“²etc.“to“32768“distinct“markŽ¡‘Wclasses;–UUthe“spGecial“case“Í\topmarks0“²is“synon¸ãymous“with“Í\topmark“²etc.Ž¦‘M¸ŽŽŽ‘WÍ\unexpanded¸h²general‘UUtext¸iŽ‘;À².Ž¡‘WThe–UUexpansion“is“the“tok¸ãen“list“¸h²balanced“text¸iŽ‘FG&².Ž¦‘M¸ŽŽŽ‘WÍ\detokenize¸h²general‘UUtext¸iŽ‘;À².Ž¡‘WThe–è·expansion“is“a“list“of“cš¸ãharacter“tok˜ens“represen˜ting“the“tok˜en“listŽ¡‘W¸h²balanced‘UUtext¸iŽ’™ñÓ².‘ÅRAs–q.with“the“lists“of“cš¸ãharacter“tok˜ens“proGduced“b˜y“T‘þU>Ÿ'EŽ‘ãxX'sŽ¡‘WÍ\the–Ó†²and“µ"Ž‘ }L²-T‘þU>Ÿ'EŽ‘ãxX's“Í\readline²,‘3these“tokš¸ãens“ha˜v˜e“category“12“(`other'),Ž¡‘Wexcept–UUthat“the“c¸ãharacter“coGde“32“gets“category“10“(`space').Ž¦‘M¸ŽŽŽ‘WÍ\scantokens¸h²general‘UUtext¸iŽ‘;À².Ž¡‘WThe–°expansion“is“nš¸ãull;‘ç*but“µ"Ž‘YÚ²-T‘þU>Ÿ'EŽ‘ãxX“creates“a“pseudo- le“con˜taining“the“c˜har-Ž¡‘Wacters–µ¶represenš¸ãting“the“tok˜en“list“¸h²balanced‘UUtext¸iŽ‘L]=²and“prepares“to“readŽ¡‘Wfrom–àôthis“pseudo- le“bšGefore“lo˜oking“at“anš¸ãy“more“tok˜ens“from“its“curren˜tŽ¡‘Wsource.Ž©‘MThese–@are“the“additional“µ"Ž‘¯²-T‘þU>Ÿ'EŽ‘ãxX“cases“when“expandable“tok¸ãens“are“not“ex-Ž¡‘>panded:Ž¦‘M¸ŽŽŽ‘W²When‘UUµ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX–UUis“reading“the“argumenš¸ãt“tok˜en“for“Í\ifdefined².Ž©‘M¸ŽŽŽ‘W²When‘Íbµ"Ž‘w(²-T‘þU>Ÿ'EŽ‘ãxX–Íbis“absorbing“the“tok¸ãen“list“for“Í\unexpanded²,‘ëfÍ\detokenize²,Ž¡‘WÍ\scantokens²,–UUor“Í\showtokens².Ž¦‘M¸ŽŽŽ‘W²Protected–%"macros“(de ned“with“the“Í\protected“²pre x)“are“not“expandedŽ¡‘Wwhen–UUbuilding“an“expanded“tok¸ãen“list“(for“Í\edef²,“Í\xdef²,“Í\message²,Ž¡‘WÍ\errmessage²,–åeÍ\special²,“Í\mark²,“Í\marks–Éi²or“when“writing“the“tok¸ãen“list“forŽ¡‘WÍ\write–fK²to“a“ le)“or“when“loGoking“ahead“in“an“alignmen¸ãt“for“Í\noalign“²orŽ¡‘WÍ\omit².Ÿü^ÿ±6ŽŽŽ‘>Ÿ;¹‰ff‰ÿvŸ J=‘ "5Ÿý-:È6ŽŽŽ‘LÜÇWhereas–£Çprotected“macros“wšÃŽere“in˜troŸ'EŽ›ãxX“and“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ˜X).ŽŸ!‘>Æ4Ž‘VL˾"Ž‘\åóÆ-T‘ýL¨Ÿ32EŽ‘èdX‘ffEnhancemenŒÌtsŽŸç‘>²The–ŒÉexecution“of“most“new“primitivš¸ães“related“to“enhancemen˜ts“is“disallo˜w˜edŽ¡‘>when–œnthe“correspGonding“enhancemenš¸ãt“is“curren˜tly“disabled“and“will“lead“to“anŽ¡‘>`ÍImproper...²'–`øerror“message.‘ SThe“o ending“command“maš¸ãy“nev˜ertheless“alreadyŽ¡‘>ha•¸ãv“e–UUhad“some“e ect“sucš¸ãh“as,“e.g.,“bringing“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX“in˜to“horizon˜tal“moGde.ŽŸì‘>Ï4.1Ž‘\ÀMixed-Direction‘€T yp`esettingŽŸuT‘>²This–ĸfeature“suppGorts“mixed“left-to-righš¸ãt“and“righ˜t-to-left“t˜ypGesetting“and“in˜tro-Ž¡‘>duces–Ášthe“four“text-direction“primitiv¸ães“Í\beginL²,“Í\endL²,“Í\beginR²,“and“Í\endR².Ž¡‘>The–UUcoGde“is“inspired“bš¸ãy“but“di eren˜t“from“T‘þU>Ÿ'EŽ‘ãxX-ÎX‘þŸ8ãEŽ‘3sT“²[6Ž‘].Ž¡‘MIn–$order“to“a•¸ãv“oid–$confusion“with“T‘þU>Ÿ'EŽ‘ãxX-ÎX‘þŸ8ãEŽ‘3sT“²the“presenš¸ãt“implemen˜tation“ofŽ¡‘>mixed-direction–Ólt¸ãypGesetting“is“called“T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT².‘FzIt“uses“the“same“text-directionŽ¡‘>primitivš¸ães,–UUbut“di ers“from“T‘þU>Ÿ'EŽ‘ãxX-ÎX‘þŸ8ãEŽ‘3sT“²in“sev˜eral“impGortan˜t“aspGects:Ž¡‘>(1)–=àRighš¸ãt-to-left“text“is“rev˜ersed“explicitly“b˜y“µ"Ž‘禲-T‘þU>Ÿ'EŽ‘ãxX“and“is“written“to“a“normalŽ¡‘>Dš¸ãVI–UU le“without“an˜y“Íbegin_reflect“²or“Íend_reflect“²commands;Ž¡‘>(2)–QÄa“math“nošGde“is“(ab)used“instead“of“a“whatsit“no˜de“to“record“the“text-directionŽ¡‘>primitiv¸ães–)[in“order“to“minimize“the“in uence“on“the“line-breaking“algorithm“forŽ¡‘>pure–UUleft-to-righ¸ãt“text;Ž¡‘>(3)–V½righš¸ãt-to-left“text“in˜terrupted“b˜y“a“displa˜y˜ed“equation“is“automatically“re-Ž¡‘>sumed–UUafter“that“equation;Ž¡‘>(4)–¬»displaš¸ãy“math“material“is“alw˜a˜ys“prin˜ted“left-to-righ˜t,‘•ev˜en“in“constructionsŽ¡‘>suc¸ãh‘UUas:Ž¤­À‘M¿÷Í\hbox{\beginR\vbox{\noindent$$abc\eqno(123)$$}\endR}Ž¡‘M²T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT–Ë5²is“enabled“or“disabled“bš¸ãy“assigning“a“pGositiv˜e“or“non-pGositiv˜eŽ¤ ‘>v›ÿqÇalue–ödrespGectiv¸ãely“to“the“Í\TeXXeTstate“²state“v˜ariable.‘TôAs“long“as“T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sTŽ¡‘>²is–2disabled,‘i/µ"Ž‘ õ²-T‘þU>Ÿ'EŽ›ãxX“and“T‘þU>Ÿ'EŽ˜X3“build“horizon¸ãtal“lists“and“paragraphs“in“exactlyŽ¡‘>the–2ãsame“w•¸ãa“y‘ÿ*ª.‘ rEv“en–2ãT‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT“²will,›jGin“general,˜proGduce“the“same“results“asŽ¡‘>T‘þU>Ÿ'EŽ‘ãxX3–‹for“pure“left-to-righš¸ãt“text.‘V.There“are,–ho˜w˜ev˜er,“circumstances–‹where“someŽ¡‘>di erences–UUmaš¸ãy“arise.‘qÇThis“is“bGest“illustrated“b˜y“an“example:Ž©­À‘M¿÷Í\vbox{\noindentŽ¡‘]î$\hfil\breakŽ¡‘]î\null\hfil\breakŽ¡‘]î\null$\parŽ¦‘>²Here–UUT‘þU>Ÿ'EŽ‘ãxX“will“proGduce“three“lines“conš¸ãtaining“the“follo˜wing“noGdes:Ž¡‘>1.‘qÇmathon,–UUh l“glue,“break“pGenaltš¸ãy‘ÿ*ª,“and“righ˜tskip“glue;Ž¡‘>2.‘qÇempt•¸ãy›UUh“bGo“x,˜h l˜glue,˜break˜pGenalt“y‘ÿ*ª,˜and˜righ“tskip˜glue;ŽŽŸ’åÿ15ŽŽŒ‹ºW y ý£ ? ýä‘>²3.‘qÇempt•¸ãy›UUh“bGo“x,˜matho ,˜nobreak˜pGenalt“y‘ÿ*ª,˜par llskip˜glue,˜and˜righ“tskip˜glue.Ž¤ ‘>These–UUlines“can“bGe“retriev¸ãed“via:Ž©¡B‘]îÍ\setbox3=\lastboxŽ¡‘]î\unskip\unpenaltyŽ¡‘]î\setbox2=\lastboxŽ¡‘]î\unskip\unpenaltyŽ¡‘]î\setbox1=\lastboxŽ¦‘>²Later–¸on“these“lines“can“bšGe“`unh•¸ãb˜o“xed'–¸as“part“of“a“new“paragraph“and“p˜ossiblyŽ¡‘>their›Ü„con•¸ãten“ts˜analyzed.‘ TAs˜a˜consequence˜in˜T‘þU>Ÿ'EŽ–ãxX˜(and˜µ"Ž‘ †J²-T‘þU>Ÿ'EŽ“X˜in˜compati-Ž¡‘>bilitš¸ãy–VmoGde)“there“ma˜y“bGe“horizon˜tal“lists“where“mathon“and“matho “noGdesŽ¡‘>are–…Snot“propGerly“paired.‘ÂTherefore“T‘þU>Ÿ'EŽ‘ãxX“mighš¸ãt“attempt“h˜yphenation“of“`w˜ords'Ž¡‘>originating–y”from“math“moGde“or“prev•¸ãen“t›y”h“yphenation˜of˜w“ords˜originating˜fromŽ¡‘>horizon¸ãtal‘UUmoGde.Ž¡‘MMath-mošGde–œæmaterial“is“alw•¸ãa“ys‘œæt“yp˜eset›œæleft-to-righ“t˜b“y˜T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT²,‘ÁÉev“en˜whenŽ¡‘>it–øis“conš¸ãtained“inside“righ˜t-to-left“text.‘†±Therefore“T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT“²will“insert“addi-Ž¡‘>tional–ždÍbeginM›žQ²and“ÍendM˜²math“noGdes“suc¸ãh“that“material“originating“from“mathŽ¡‘>mošGde–I is“alw•¸ãa“ys–I enclosed“b˜et•¸ãw“een–I prop˜erly“paired“math“no˜des.‘LäConsequen¸ãtlyŽ¡‘>T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT–”Z²will“nevš¸ãer“attempt“h˜yphenation“of“`w˜ords'“originating“from“mathŽ¡‘>moGde–UUnor“prev•¸ãen“t›UUh“yphenation˜of˜w“ords˜originating˜from˜horizon“tal˜moGde.Ž¡‘MThe–(>additional“math“nošGdes“in¸ãtro˜duced“bš¸ãy“T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT“²are,–\øho˜w˜ev˜er,“trans-Ž¡‘>parenš¸ãt–®9to“opGerations“suc˜h“as“Í\lastpenalty“²that“inspGect“or“remo˜v˜e“the“last“noGdeŽ¡‘>of–UUa“horizon¸ãtal“list.Ÿü^ÿ±7ŽŽŽ¡‘M²When–ÄT‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT“²is“enabled“or“disabled“during“the“construction“of“a“bGo¸ãx,Ž¡‘>that–ÙwbGoš¸ãx“ma˜y“con˜tain“text-direction“directiv˜es“or“math“noGdes“that“are“not“prop-Ž¡‘>erly–8upaired.‘h'Sucš¸ãh“unpaired“noGdes“ma˜y“cause“w˜arning“messages“when“the“bGo˜x“isŽ¡‘>shippšGed–¨öout.‘l©It“is,–½Þtherefore,“advisable–¨öthat“T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT“²b˜e“enabled“or“disabledŽ¡‘>only–UUin“v¸ãertical“moGde.ŽŸ '‘>Æ5Ž‘VLËSynŒÌtax–ffExtensions“for“¾"Ž‘ ÿŽÆ-T‘ýL¨Ÿ32EŽ‘èdXŽŸç‘>Ï5.1Ž‘\ÀMo•`de-Indep“enden t‘€CommandsŽŸuT‘>²The–Ksynš¸ãtax“for“T‘þU>Ÿ'EŽ‘ãxX's“mo•Gde-indep“enden˜t–Kcommands,‘‰/as“describGed“in“the“ rstŽ¡‘>part–èÞof“Chapter“24“of“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘›D²,‘ Àis–èÞextended“b¸ãy“moGdi cations“of“existingŽ¡‘>commands–UUas“wš¸ãell“as“b˜y“new“commands.Ž¡‘MFirst,‘¶µ"Ž‘_Þ²-T‘þU>Ÿ'EŽ‘ãxX–¢¾has“32768“Í\count²,–¶Í\dimen²,“Í\skip²,“Í\muskip²,“Í\box²,“and‘¢¾Í\toksŽ¡‘>²registers–¼pinstead“of“T‘þU>Ÿ'EŽ‘ãxX's“256.‘§Thš¸ãus“it“allo˜ws“a“¸h²15-bit‘UUn˜um˜bGer¸iŽ‘M8ê²instead“of“anŽ¡‘>¸h²8-bit‘UUn•¸ãum“bGer¸iŽ’0’²in–p‰almost“all“syn¸ãtax“constructions“referring“to“these“registers;‘¼ÍtheŽ¡‘>only–9exception“to“this“is“the“Í\insert“²command:‘cäinsertion“classes“are“restrictedŽ¡‘>to–UUthe“range“0{254“in“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ›ãxX“as“they“are“in“T‘þU>Ÿ'EŽ˜X.Ž¡‘MNext,‘UUµ"Ž‘ÿ²-T‘þU>Ÿ'EŽ›ãxX–UUextends“the“list“of“T‘þU>Ÿ'EŽ˜X's“inš¸ãternal“quan˜tities:ŽŸС‘M¸h²in•¸ãternal‘UUin“teger¸iŽ’šÕ^ŽŽŽ’ ñÔ!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nes–UU¸j“Í\eTeXversionŽ¡‘dUW¸j–UUÍ\interactionmode“¸j“h²pGenalties¸iŽ‘1Ç#h²n•¸ãum“bGer¸iŽŽ‘>Ÿ·‰ff‰ÿvŸ J=‘ "5Ÿý-:È7ŽŽŽ‘LÜÇThis–ÕXwšÃŽas“not“the“case“for“some“earlier“T‘þ•AŸ¸ãEŽ‘MX-ó&ò"V xbmc10Ñ-X‘þÙšŸÇEŽ‘\[T“Çimplemen˜tations.ŽŽŸ’åÿ²16ŽŽŒ‹ÇÕ y ý£ ? ýä‘dUW¸j–UUÍ\lastnodetype“¸j“Í\currentgrouplevel“¸j“Í\currentgrouptypeŽ¤ ‘dUW¸j–UUÍ\currentiflevel“¸j“Í\currentiftype“¸j“Í\currentifbranchŽ¡‘dUW¸j–UUÍ\gluestretchorder¸h²glue¸iŽ‘ã’j“Í\glueshrinkorder¸h²glue¸iŽŽ¡‘dUWj–UUÍ\numexpr¸h²in¸ãteger“expr¸iŽ‘<@h²optional“spaces“and“Í\relax¸iŽŽ¡‘Mh²pGenalties¸iŽ‘~Ç#ŽŽŽ’„ã™!–UUÍ\interlinepenalties“¸j“Í\clubpenaltiesŽ¡‘dUW¸j–UUÍ\widowpenalties“¸j“Í\displaywidowpenaltiesŽ¡‘M¸h²in¸ãternal‘UUdimen¸iŽ’—À ŽŽŽ’Ü€!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nesŽ¡‘dUW¸j–UUÍ\parshapeindent¸h²n•¸ãum“bGer¸iŽ‘,1Íj“Í\parshapelength¸h²n•¸ãum“bGer¸iŽŽ¡‘dUWj‘UUÍ\parshapedimen¸h²n•¸ãum“bGer¸iŽŽ¡‘dUWj–UUÍ\gluestretch¸h²glue¸iŽ‘ã’j“Í\glueshrink¸h²glue¸iŽŽ¡‘c\|j–\zÍ\fontcharht¸h²fon¸ãt¸iŽ‘h²8-bit‘UUn•¸ãum“bGer¸iŽ‘\ˆj“Í\fontcharwd¸h²fon¸ãt¸iŽ‘h²8-bit‘UUn•¸ãum“bGer¸iŽŽ¡‘c\|j–\zÍ\fontchardp¸h²fon¸ãt¸iŽ‘h²8-bit‘UUn•¸ãum“bGer¸iŽ‘\ˆj“Í\fontcharic¸h²fon¸ãt¸iŽ‘h²8-bit‘UUn•¸ãum“bGer¸iŽŽ¡‘dUWj–UUÍ\dimexpr¸h²dimen“expr¸iŽ‘8øìh²optional“spaces“and“Í\relax¸iŽŽ¡‘Mh²in¸ãternal‘UUglue¸iŽ’ŽÜzŽŽŽ’”øð!–UU²whatevš¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nes–UU¸j“Í\mutoglue¸h²m˜uglue¸iŽŽ¡‘dUWj–UUÍ\glueexpr¸h²glue“expr¸iŽ‘0\h²optional“spaces“and“Í\relax¸iŽŽ¡‘Mh²in•¸ãternal‘UUm“uglue¸iŽ’œxŽ’¢•d!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nes–UU¸j“Í\gluetomu¸h²glue¸iŽŽ¡‘dUWj–UUÍ\muexpr¸h²m¸ãuglue“expr¸iŽ‘=±Ðh²optional“spaces“and“Í\relax¸iŽŽ©‘M²The–UUadditional“pGossibilities“for“¸h²in¸ãteger“parameter¸iŽ‘\&²are:Ž¡‘WÍ\TeXXeTstate‘ ²(pGositivš¸ãe–UUif“mixed-direction“t˜ypGesetting“is“enabled)Ž¡‘WÍ\tracingassigns‘ ²(pGositivš¸ãe–UUif“sho˜wing“assignmen˜ts)Ž¡‘WÍ\tracinggroups‘ ²(pGositivš¸ãe–UUif“sho˜wing“sa˜v˜e“groups)Ž¡‘WÍ\tracingifs‘ ²(pGositivš¸ãe–UUif“sho˜wing“conditionals)Ž¡‘WÍ\tracingscantokens‘ ²(pGositivš¸ãe–\if“sho˜wing“the“opGening“and“closing“ofŽ¡‘pÍ\scantokens‘UU²pseudo- les)Ž¡‘WÍ\tracingnesting‘ ²(pGositivš¸ãe–$“if“sho˜wing“impropGer“nesting“of“groups“andŽ¡‘pconditionals–UUwithin“ les)Ž¡‘WÍ\predisplaydirection‘ ²(text–UUdirection“preceding“a“displa¸ãy)Ž¡‘WÍ\lastlinefit‘ ²(adjustmen¸ãt–UUratio“for“last“line“of“paragraph,“times“1000)Ž¡‘WÍ\savingvdiscards‘ ²(pGositivš¸ãe–lµif“sa˜ving“items“discarded“from“v˜ertical“lists)Ž¡‘WÍ\savinghyphcodes‘ ²(pGositivš¸ãe–å¡if“Í\patterns“²sa˜v˜es“Í\lccode“²v‘ÿqÇalues“as“h˜y-Ž¡‘pphenation‘UUcoGdes)Ž¡‘>Note–that“the“µ"Ž‘Çc²-T‘þU>Ÿ'EŽ‘ãxX“state“v‘ÿqÇariable“Í\TeXXeTstate“²(the“only“one“so“far)“is“anŽ¡‘>¸h²in¸ãteger‘UUparameter¸iŽ’“\|².‘½;That–&need“not“bGe“the“case“for“all“future“state“v‘ÿqÇariables;Ž¡‘>it–ümighš¸ãt“turn“out“that“some“future“enhancemen˜ts“can“bGe“enabled“and“disabledŽ¡‘>only–UUglobally‘ÿ*ª,“not“sub‘Ž8ject“to“grouping.Ž¡‘MThe–UUadditional“pGossibilities“for“¸h²tok¸ãen“parameter¸iŽ‘V*µ²are:Ž¡‘WÍ\everyeof‘ ²(tok¸ãens–UUto“insert“when“an“Í\input“² le“ends)Ž¡‘MHere–UUis“the“syn¸ãtax“for“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX's“expressions:Ž¦‘M¸h²in¸ãteger‘UUexpr¸iŽ’Œc•ŽŽŽ’’€ !–UUh²in¸ãteger“term¸iŽŽ¡‘dUWj–UUh²in¸ãteger“expr¸iŽ‘?c•h²add–UUor“sub¸iŽ‘uê¹h²in¸ãteger‘UUterm¸iŽŽ¡‘Mh²in¸ãteger‘UUterm¸iŽ’Ç#ŽŽŽ’“ã™!–UUh²in¸ãteger“factor¸iŽŽ¡‘dUWj–UUh²in¸ãteger“term¸iŽ‘@Ç#h²m¸ãul–UUor“div#¸iŽ‘vG*h²in¸ãteger‘UUfactor¸iŽŽ¡‘Mh²in¸ãteger‘UUfactor¸iŽ’’€ŽŽŽ’˜œ~!‘UUh²n•¸ãum“bGer¸iŽŽ¡‘dUWj–UUh²left“paren¸iŽ‘5\h²in¸ãteger‘UUexpr¸iŽ‘q#œh²righ¸ãt‘UUparen¸iŽŽŽŸ’åÿ²17ŽŽŒ‹ÖÄ y ý£ ? ýä‘M¸h²dimen‘UUexpr¸iŽ’‰NAŽŽŽ’j·!–UUh²dimen“term¸iŽŽ¤ ‘dUWj–UUh²dimen“expr¸iŽ‘Ÿ'EŽ‘ãxX–UUextends“the“synš¸ãtax“for“assignmen˜ts:Ž¡‘M¸h²pre x¸iŽ‘pÜwŽŽŽ‘vøí!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nes–UU¸j“Í\protectedŽ¤ ‘M¸h²simple‘UUassignmen¸ãt¸iŽ’§qÒŽŽŽ’­ŽH!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nesŽ¡‘dUW¸j–UUh²pGenalties“assignmen¸ãt¸iŽŽ¡‘dUWj–UUÍ\readline¸h²n•¸ãum“bGer¸iŽ‘*‡&Íto‘ª®¸h²con¸ãtrol“sequence¸iŽŽ¡‘Mh²pGenalties‘UUassignmen¸ãt¸iŽ’²G)ŽŽŽ’¸cŸ!‘UUh²pGenalties¸iŽ‘1Ç#h²equals¸iŽ‘TŽDh²n•¸ãum“bGer¸iŽ‘}j¼h²pGenalt¸ãy‘UUv‘ÿqÇalues¸iŽŽ¡‘Mh²inš¸ãteraction–UUmoGde“assignmen˜t¸iŽ’Õ‡.ŽŽŽ’Û£¤!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nesŽ¡‘dUW¸j–UUÍ\interactionmode¸h²equals¸iŽ‘"Ç!h²2-bit“n•¸ãum“bGer¸iŽŽŸ‘>²In–×a“¸h²pGenalties‘UUassignmen¸ãt¸iŽ‘j1‚²for“whicš¸ãh“the“¸h²n˜um˜bGer¸iŽ‘1&²is“µn²,‘Rwthe“¸h²pGenalt˜y‘UUv‘ÿqÇalues¸iŽŽ¡‘>²are‘\¸h²empt¸ãy#¸iŽ‘+Û·²if›\µn–|ü¸“²0,‘Áotherwise˜they˜consist˜of˜µn˜²consecutiv¸ãe˜oGccurrences˜ofŽ¡‘>¸h²n•¸ãum“bGer¸iŽ‘fÜx².Ž¡‘MFinally‘ÿ*ª,–UUthe“remaining“mo•Gde-indep“enden¸ãt‘UUµ"Ž‘ÿ²-T‘þU>Ÿ'EŽ‘ãxX‘UUcommands:ŽŸ‘M¸ŽŽŽ‘WÍ\showgroups²,–èÎÍ\showifs²,“Í\showtokens¸h²general‘UUtext¸iŽ‘;À².‘:These‘˜commandsŽ¡‘Ware–¤inš¸ãtended“to“help“y˜ou“ gure“out“what“µ"Ž‘±j²-T‘þU>Ÿ'EŽ‘ãxX“thinks“it“is“doing.‘ˆ³TheŽ¡‘WÍ\showtokens–UU²command“displaš¸ãys“the“tok˜en“list“¸h²balanced“text¸iŽ‘FG&².ŽŸ‘M¸ŽŽŽ‘WÍ\marks¸h²15-bit‘UUn•¸ãum“bGer¸iŽ‘EÀ h²general‘UUtext¸iŽ’€².‘nŸ'EŽ‘ãxX'sŽ¡‘WÍ\mark–T™²command“to“32768“distinct“mark“classes;‘TØthe“spGecial“case“Í\marks0Ž¡‘W²is–UUsynon¸ãymous“with“Í\mark².ŽŽŸ’åÿ18ŽŽŒ‹åc y ý£ ? ýä‘>Ï5.2Ž‘\ÀV‘þàertical-Mo`de‘€CommandsŽŸuT‘>²The–³synš¸ãtax“for“T‘þU>Ÿ'EŽ‘ãxX's“v˜ertical-mošGde“commands,‘(as“describ˜ed“in“the“second“partŽ¤ ‘>of–UUChapter“24“of“ÃThe“T‘þU>Ÿ'EŽ›ãxX‘b•Go“ok‘›D²,–UUis“extended“b¸ãy“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ˜X“as“follo¸ãws:Ž©‘M¸ŽŽŽ‘WÍ\pagediscards²,‘‘…Í\splitdiscards².‘h¢These›RIt•¸ãw“o˜commands˜are˜similar˜toŽ¡‘WÍ\unvbox².‘‘ When–_ÂÍ\savingvdiscards“²is“pGositivš¸ãe,‘¢]items“discarded“b˜y“theŽ¡‘Wpage–&#builder“and“bš¸ãy“the“Í\vsplit“²command“are“collected“in“t˜w˜o“spGecialŽ¡‘Wlists.‘ÈœOne–rGof“these“spšGecial“lists“is“app˜ended“to“the“currenš¸ãt“v˜ertical“listŽ¡‘W(in–M¬the“same“w•¸ãa“y–M¬as“Í\unvbox“²appšGends“the“v¸ãertical“list“inside“a“vb˜o¸ãx)“andŽ¡‘WbGecomes‘UUempt¸ãy‘ÿ*ª.ŽŸ‘M¸ŽŽŽ‘W²Here–UUare“the“additional“pGossibilities“for“¸h²horizon¸ãtal“command¸iŽ‘dNH²:Ž¦‘>¸h²horizon¸ãtal‘UUcommand¸iŽ’¢NHŽŽŽ’¨j¾!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nesŽ¡‘UUW¸j–UUÍ\beginL“¸j“Í\endL“¸j“Í\beginR“¸j“Í\endRŽŸ!þ6‘>Ï5.3Ž‘\ÀHorizon tal-Mo`de‘€CommandsŽŸuT‘>²The–Ö^synš¸ãtax“for“T‘þU>Ÿ'EŽ‘ãxX's“horizon˜tal-mošGde“commands,‘ö as“describ˜ed“in“Chapter“25Ž¡‘>of–UUÃThe“T‘þU>Ÿ'EŽ›ãxX‘b•Go“ok‘›D²,–UUis“extended“b¸ãy“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ˜X“as“follo¸ãws:Ž¦‘M¸ŽŽŽ‘W²Here–UUare“the“additional“pGossibilities“for“¸h²v¸ãertical“command¸iŽ‘Xê·²:Ž¦‘>¸h²v¸ãertical‘UUcommand¸iŽ’–ê·ŽŽŽ’-!–UU²whatev¸ãer“ÃThe“T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘ð™²de nesŽ¡‘UUW¸j–UUÍ\pagediscards“¸j“Í\splitdiscardsŽŸ‘M¸ŽŽŽ‘WÍ\beginL²,–UUÍ\endL²,“Í\beginR²,“Í\endR“²(text-direction“commands).Ž¡‘WThe–ú%use“of“these“commands“is“illegal“when“the“T‘þU>Ÿ'EŽ‘ãxX-Î-X‘þŸ8ãEŽ‘3sT“²enhancemen¸ãtŽ¡‘Wis–Rbcurren¸ãtly“disabled;‘S^otherwise“a“ÍbeginL²,“etc.“text-direction“noGde“(a“newŽ¡‘Wkind–‹èof“math“nošGde)“is“app˜ended“to“the“currenš¸ãt“horizon˜tal“list.‘.£These“noGdesŽ¡‘Wdelimit–…¬the“bGeginning“and“end“of“hlist“segmenš¸ãts“con˜taining“left-to-righ˜t“(L)Ž¡‘Wor–Ëbrighš¸ãt-to-left“(R)‘Ë?text.‘CÌBefore“a“paragraph“is“brok˜en“in˜to“lines,‘æùÍendL‘Ë?²andŽ¡‘WÍendR‘¿²noGdes–Ôare“added“to“terminate“anš¸ãy“un nished“L“or“R“segmen˜ts;‘ªwhenŽ¡‘Wa–2¡paragraph“is“con•¸ãtin“ued–2¡after“displaš¸ãy“math“moGde,‘ióan˜y“suc˜h“un nishedŽ¡‘Wsegmen¸ãts–»’are“automatically“resumed,‘Õ"starting“the“new“hlist“with“ÍbeginLŽ¡‘W²and–UUÍbeginR“²noGdes“as“necessary‘ÿ*ª.ŽŸ‘M¸ŽŽŽ‘WÍ\marks¸h²15-bit‘UUn•¸ãum“bGer¸iŽ‘EÀ h²general‘UUtext¸iŽ’€².‘nŸ'EŽ‘ãxX'sŽ¡‘WÍ\mark–T™²command“to“32768“distinct“mark“classes;‘TØthe“spGecial“case“Í\marks0Ž¡‘W²is–UUsynon¸ãymous“with“Í\mark².ŽŸþ6‘>Ï5.4Ž‘\ÀMath-Mo`de‘€CommandsŽŸuT‘>²The–Ô÷syn¸ãtax“for“T‘þU>Ÿ'EŽ‘ãxX's“math-mošGde“commands,‘î£as“describ˜ed“in“Chapter“26“of“ÃTheŽ¡‘>T‘þU>Ÿ'EŽ›ãxX‘b•Go“ok‘›D²,–UUis“extended“b¸ãy“µ"Ž‘ÿ²-T‘þU>Ÿ'EŽ˜X“as“follo¸ãws:ŽŽŸ’åÿ19ŽŽŒ‹ô y ý£ ? ýä‘M¸ŽŽŽ‘WÍ\left¸h²delim¸iŽ‘ª°h²math–UUmoGde“material¸iŽŽ¤ ‘WÍ\middle¸h²delim¸iŽ‘ª°h²math–UUmoGde“material¸iŽ’€££Í...\right¸h²delim¸iŽŽ¡‘W²(generalizing–UUT‘þU>Ÿ'EŽ‘ãxX's“Í\left¸h²delim¸iŽ‘ª°h²math“moGde“material¸iŽ’€££Í\right¸h²delim¸iŽ‘ª°²).Ž¡‘WF‘ÿ*ªor– (eac¸ãh“¸h²math–UUmoGde“material¸iŽ‘iCµ"Ž‘m½ ²-T‘þU>Ÿ'EŽ‘ãxX“bGegins“a“new“group,‘;starting“outŽ¡‘Wwith–Wa“new“math“list“(alw•¸ãa“ys–Win“the“same“st¸ãyle)“that“bGegins“with“a“leftŽ¡‘WbGoundary–titem“conš¸ãtaining“ev˜erything“proGcessed“so“far.‘&ÚThis“group“m˜ust“bGeŽ¡‘Wterminated–Dwith“either“`Í\middle²'“or“`Íright²',‘=¿at“whicš¸ãh“time“the“in˜ternalŽ¡‘Wmath–Ünlist“is“completed“with“a“new“bGoundary“item“con¸ãtaining“the“newŽ¡‘Wdelimiter.‘ÇIn–Çthe“case“of“`Í\middle²',›ãa“new“group“is“started“again,˜in“theŽ¡‘Wcase–?of“`Í\right²',‘y‰µ"Ž‘ #O²-T‘þU>Ÿ'EŽ‘ãxX“appGends“an“Inner“atom“to“the“curren¸ãt“list;‘³útheŽ¡‘Wnš¸ãucleus–UUof“this“atom“con˜tains“the“in˜ternal“math“list“just“completed.ŽŸ!Ä‘>ÆReferencesŽŸç‘>²[1]ŽŽ‘MŽ;ÃA‘ýtorture–-test“for“T‘þU>Ÿ'EŽ‘ãxX‘²,‘B£bš¸ãy“Donald“E.“Kn˜uth,‘B£Stanford“Computer“ScienceŽ¡‘MŽ;RepGort‘UU1027.Ž©‘>[2]ŽŽ‘MŽ;ÃA‘·útorture–¸"test“for“µ"Ž‘aèÃ-T‘þU>Ÿ'EŽ‘ãxX‘²,‘דbš¸ãy“The“¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘i²T‘ÿ*ªeam“(P˜eter“Breitenlohner“and“BerndŽ¡‘MŽ;Raicš¸ãhle).–UUV‘ÿ*ªersion“2,“Jan˜uary“1998.Ž¦‘>[3]ŽŽ‘MŽ;ÃThe–UUWEB“system“of“structured“doGcumenš¸ãtation²,“b˜y“Donald“E.“Kn˜uth,Ž¡‘MŽ;Stanford–UUComputer“Science“RepGort“980.Ž¦‘>[4]ŽŽ‘MŽ;ÃHoš¸ãw–Ü®to“generate“µ"Ž‘†tÃ-T‘þU>Ÿ'EŽ‘ãxX‘²,‘þ„b˜y“The“¸N‘ýù9Ÿ'TŽ‘ö0SŽ‘²6²T‘ÿ*ªeam“(P˜eter“Breitenlohner“and“PhilŽ¡‘MŽ;T–ÿ*ªa¸ãylor).›UUV“ersion˜2,˜Jan¸ãuary˜1998.Ž¦‘>[5]ŽŽ‘MŽ;ÃThe›h+T‘þU>Ÿ'EŽ‘ãxX‘b•Go“ok‘o²(Computers˜and˜T¸ãyp“esetting,‘láV‘ÿ*ªol.˜A),˜b•¸ãy˜Donald˜E.˜Kn“uth,Ž¡‘MŽ;Addison›UUW–ÿ*ªesley“,˜Reading,˜Massac•¸ãh“usetts,˜1986.Ž¦‘>[6]ŽŽ‘MŽ;ÃMixing–¡ righš¸ãt-to-left“texts“with“left-to-righ˜t“textsi}²,‘³ûb˜y“Donald“E.“Kn˜uth“andŽ¡‘MŽ;Pierre–UUMacKa¸ãy‘ÿ*ª,“ÃTUGbGoat‘ ó'ò"V cmbx10Ò8²,“14{25,“1987.ŽŽŸ’åÿ20ŽŽŒølƒ’À;èy—ó'ò"V cmbx10ó&ò"V xbmc10ó%ßCÊscmtt8ó$ÂÖN  cmbx12ó#ò"V xbmc10ó"ßê cmmi10óKñ`y cmr10óÙ“ Rcmr7ù Pßßßßß