; TeX output 1996.04.29:0828J.ҍܥ2kAHG cmssbx10MAAMAxC|Malvern:KA9Macros뗍8K`y cmr10V*ersionUU1.5,lastchangedpGdc1995{04{068/\ffffffffff =P*.UUDamianCugley]n3pi cmssdc100.IntroQduction/ThisUUdoGcumentdescribes=23L%%%?dependencies="",>=24L%%%?}>=25>=26L\message{1.5?}>=27bi)1.8BuildingO'compQositeletters48THisUUsectionrede nescommandslistedatthestartofChapter9oftheTL'EXb}'ook:q\?,UU\", 8etc.qTheUUmaindi erenceisthatthesenowuse`mediumcapitals'anddi erently-drawn8marksUUtomakecompGositecapitalletters.LIUUalsode nehchar}'deftokens!iM~called\acuteglyph,\twodotsglyphwhichmaybGeused V8toUUprintthesemarksinadoGcument:q`theacutemark\㎟\q'' b> cmmi10::: UO'mightbGetypGesetwith`the8acute?mark \acuteglyph :::I'.qAlso,UUifyoudon'tlikethewaymymacrosloGok,you8canUUsay`\accent\acuteglyph?E'ratherthanhavingtoloGokupitsglyphnumbGer.#1.1.8Utility3macrosؚ8FirstUUsomenicknamesforscratchregisters. r6>=28L\dimendef\dimena0 \dimendef\dimenb2 >=29L\toksdef\toksa0>=30L\countdef\counta255>=31L\ifx\countb\UNDEFINED?\csnamenewcount\endcsname\countb\fi>=32L\ifx\countc\UNDEFINED?\csnamenewcount\endcsname\countc\fiLAUUmacroto ndthecoGdeinT'E6X'sinternalencodingforacharacter.qThecharacter 8mightUUbGerepresentedby(1)acharacterwithcategorycoGde11or12,(2)atokende ned8withUU\chardef,or(3)thetoken\charfollowedbyahnumb}'eri,Bn. r6>=33L\def\code#1{% >=34a\ifcat#1a%>=35v{\#1>=36a\else\ifcat#1+%>=37v{\#1>=38a\else\ifx\char#1w%UUIfthe rsttokenis\chartherestisthehnumb}'eri/ëwewant. r6>=39a\else>=40v#1%>=41a\fi\fi\fi>=42L}LSoUUastomakeconditionalmacrosthatcanbGeskippedoverUUiftheyappearnested 8insideUUanotherconditional,wemakeincludethetoken\thenamongstthearguments,mak-8ingUUthisthe`if-'tokentomatchthe\elseand\fifollowingit.qThiswaywewrite,for8example}\ifcaphchar}'acteri4\thenUUhtruetextطi4\\elseUUhfalsetextطi6F\fibi r6>=43L\let\then=\iffalse>=44L\def\ifcap#1\then{\expandafter\ifcapnum\code{#1}\then} >=45L\def\ifcapnum#1\then{\ifnum\lccode#1=#1}>=46L\def\iflower#1\then{\expandafter\iflowernum\code{#1}\then}>=47L\def\iflowernum#1\then{\ifnum\uccode#1=#1}ؚLAUUmacrotoextracttheslant-pGer-pointUUparameterofafontintoGeformofaT'E6X 8hfactoriZd?.>=48L\def\fontslant#1{\expandafter\stripPT\the\fontdimen1#1}>=49L\begingroup?\uccode2=p\uccode3=t\uppercase{\toksa{\endgroup>=50a\def\\#123{#1}>=51L}}?\the\toksa>=52L\let\stripPT=\\2Jܥ53{74aMAAMA[C|Malvern AMacros1.51995{04{06.ҍ#1.2.8Macrosforplacingmarks'8ThisUUsimplemacroplacesthetext#3atdisplaced(#1 ;#2 *)fromcurrentpGosition: 3Í>=53L\def\putxy#1#2#3{\leavevmode\rlap{\hskip#1\raise#2\hbox{#3}}}LNowUUwehaveagenericmark-placementmacro.qItissimilartothe\accentprimitive, 8butUUtakestwoextraparameters:kc\putmarkxy{xf}S+{dy}}){mark}K[{b}'ase[}8TheUUhorizontalpGositionxfsoftheopticalcentreofthebaseletter(ignoringslant)is8expressedUUasahfactori(̫(i.e.,decimalfractionofthewidthofthebaseglyph).qThever-8ticalUUdisplacementdy7ҫisexpressedasafragmentofT'E6XcoGdethatwillcalculatedy}.qThe8coGdeUUisexpandedaftersettingbox0tocontainthebaseglyph,andmustputtheresultin8\dimena.qF*orUUexample,wecouldde neQ\def\fakeaccent{\putmarkxy{0.5}{\dimena\ht0?\advance\dimena-1ex}}8ThisUUproGducesanapproximationtotheprimitive\accentcommand.LGivenUUthex4D-factorxf,abaseglyphwithwidthwd,afontwithslants!,thehorizontal8displacementUUdxisgivenbydx\=xfWt8wdAi+s dy ~:h8InUUthismacroitisstoredin\dimenb. 3Í>=54L\def\putmarkxy#1#2#3#4{{% >=55a\setbox0=\hbox{#4}#2\relax>=56a\dimenb#1\wd0?\advance\dimenb\fontslant\font\dimena>=57a\leavevmode>=58a\putxy{\dimenb}{\dimena}{\hbox?to0pt{\hss\char#3\hss}}%>=59a\box0>=60L}}>=61L\def\putmarky{\putmarkxy{0.5}}4O#1.3.8T*ypGeIMarks'8AUUTypGeImarkisonewhichdoGesnothaveanyscopGeforbeing`squashed'togooverUUcapit- 8alUUletters|forexample,thetwo-dotsUUmark`㎟\q'andmacron`'.LHere'sUUamacroforplacingaTypGeImarkgivenby#1(ahnumb}'eri,Bn)overbaseglyph8#2UU(whichisanythingthat\codeunderstands).qThedi erencebGetweenthismacroand8simplyUUusing\accentis(1)ifpresentedwithacapitalletteritwillusethecorrespGonding8mediumUUcapitalletterand(2)thethemarkisraisedbyanamountintendedtocentreit8verticallyUUbGetweenthetopofthebaseletterandthetopofthebGody-height|assumingit8wasUUoriginalcenteredbGetweenbGody-heightUUandx4D-height.LIfUUH%SisthebGodyUUheight,htheheightofthebaseglyph, &͍ dyק(=<$KHޫ+8hKwfe9 (֍ ׫2" <$lHޫ+81exlwfe%j (֍^52\ ק(= K1K&fes2 )hC l1l&fes2 Faex49>=62L\def\typeImark#1#2{{% >=63a\setbox2=\hbox{#2}%>=64a\ifdim?\ht2=1ex>=65v\accent#1\relax#2%>=66a\else>=67v\counta\code{#2}%>=68v\ifnum\counta>64?\ifnum\counta<96>=69\advance\counta?128>=70v\fi?\fi>=71v\putmarky{\dimena0.5\ht0?\advance\dimena-0.5ex}>=72{#1}{\char\counta}%>=73a\fi>=74L}}3&Jܥ75{108MAAMA[C|Malvern AMacros1.51995{04{06.ҍLFinallyUUwede nethecompGosite-letter-buildingcommands. >=75L\chardef\dotglyph22?\def\.{\typeImark\dotglyph} Ѝ>=76L\chardef\twodotsglyph23?\def\"{\typeImark\twodotsglyph}>=77L\chardef\macronglyph150?\def\={\typeImark\macronglyph}>=78L\chardef\longmacronglyph151>=79v\def\longmacronmark{\typeImark\longmacronglyph}$#1.4.8T*ypGe%IIMarksh8TheseUUmarkshaveUUanalternativeglyphforuseofcapitalandmediumcapitalletters.qAs 8withUU\typeImark,#1isahnumb}'eri/ëand#2isanythingunderstoGodUUby\code.>=80L\def\typeIImark#1#2{{%>=81a\counta#1\relax?\countb\code{#2}%>=82a\ifcap{#2}\then>=83v\ifnum?\counta<128\advance\counta128\fi>=84v\ifnum?\countb<128\advance\countb128\fi>=85a\fi>=86a\accent\counta?\char\countb>=87L}}>=88L\chardef\acuteglyph8\def\?{\typeIImark\acuteglyph}>=89L\chardef\graveglyph9\def\?{\typeIImark\graveglyph}>=90L\chardef\circumglyph10\def\'^?{\typeIImark\circumglyph}>=91L\chardef\tildeglyph11?\def\'~?{\typeIImark\tildeglyph}>=92L\chardef\ringglyph12\def\ringmark{\typeIImark\ringglyph}>=93L\chardef\caronglyph13?\def\v{\typeIImark\caronglyph}>=94L\chardef\breveglyph14?\def\u{\typeIImark\breveglyph}>=95L\chardef\hungarglyph15?\def\H{\typeIImark\hungarglyph}hLIUUhaveabbreviated`circum ex'as`circum'(consistentwithAdobGe's`asciicircum'). 8IUUhavecalledthehoGok`'`caron'becausethatisitsnameasusedbyISOandAdobe.8IUUhavecalledthelongHungarianumlaut`}'`hungar'forwantofabGettername(it'sshort-8erUUthanhungarumlaut)..$#1.5.8Cedilla1andogonek8TheUUcedillaandogonekeachhaveavqariantintendedforcapitalletters(inthiscasethe8vqariantUUislargernotsmaller). >=96L\def\cedillalike#1#2#3{{% Ѝ>=97a\setbox0=\hbox{#3}%>=98a\ifdim\ht0>1ex>=99v\ooalign{\hidewidth\char#2\relax\hidewidth\crcr\unhbox0?}%:ʮ100a\else:ʮ101v\accent#1?#3%:ʮ102a\fi:ʮ103L}}:ʮ104L\chardef\cedillaglyph6?\chardef\Cedillaglyph134:ʮ105L\def\c{\cedillalike\cedillaglyph\Cedillaglyph}:ʮ106L\chardef\ogonekglyph7?\chardef\Ogonekglyph135:ʮ107L\def\k{\cedillalike\ogonekglyph\Ogonekglyph}=)2.8SymbQolsFandspecialletters$#2.1.8SpGeciallettersh8TheUUlettersde nedherethatarenotincludedinChapter9oftheTL'EXb}'ookUUaretheIceland-'  8icUUthorn(\TH,\th)andeth*(\DH,\dh),thePolishaandewithogonek(\A,\a,\E,\e),8andUUtheSamieng#yꩫ(\NG,\ng). 4LW*eUUalsogivereplacementsford,tandlwithhoGok(whichareusuallydrawnwitha V8apGostrophe-likeUUmark),andtheEsperantoletterhho(\q^h).:ʮ108L\chardef\TH"00 \chardef\th"10\chardef\DH"04\chardef\dh"148 lff=  *AlsoUUcalled`edh'. ;yAlsoUUcalled`ing'or`ng'.4+Jܥ109{137R MAAMA[C|Malvern AMacros1.51995{04{06.ҍ:ʮ109L\chardef\A?"01 \chardef\a"11\chardef\E"05\chardef\e"15 Sƍ:ʮ110L\chardef\NG"02 \chardef\ng"12\chardef\L?"03\chardef\l"13:ʮ111L\chardef\AE"5E \chardef\ae"7E\chardef\OE"5F\chardef\oe"7F:ʮ112L\chardef\O?"5C \chardef\o"7C :ʮ113L\chardef\vd"9C \chardef\vt"9D\chardef\h?"9E\chardef\vl"9F:ʮ114L\chardef\ss"18 \chardef\i?"19\chardef\j"1A:ʮ115L\def\aa{\ringmark?a}\def\AA{\ringmarkA}:ʮ116L\chardef\orda"98?\chardef\ordo"99\def\No{N\ordo}\def\no{n\ordo}:ʮ117L\chardef\csuperior"98?\def\Mc{M\csuperior}tTLTheUUcommand\McisusedforformingnameslikeM.:c[1j:Donald..~#2.2.8Other"symbGolsusedintext8ThereUUareseveralnewsymbGolshere.qNotethat\trademarkiswhatyouwillgetifyouuse 8theUUASCIGIdoublequotecharacter`"'inyourmanuscript.:ʮ118L\chardef\trademark?"22 Sƍ:ʮ119L\chardef\copyright?"FB \chardef\registered"FD:ʮ120L\chardef\careof"9A \chardef\Box$"A0:ʮ121L\chardef\cents?"A2 \chardef\pounds"A3:ʮ122L\chardef\currency "A4\chardef\permille"A5:ʮ123L\chardef\yen$"A8 \chardef\florin"A9:ʮ124L\chardef\dag$"AA \chardef\ddag"AB:ʮ125L\chardef\gbdecimal?"AE \chardef\minus?"AF:ʮ126L\chardef\S/?"BA \chardef\P"BB:ʮ127L\chardef\degrees"C0:ʮ128L\chardef\lguillemet"BC \chardef\rguillemet"BEtTLTheUU\careofsign(^cc=UXo˫)isanabbreviationfor`careof'inEnglish-languageaddresses 8(actually*,UUAustralianstraditionallywrite`^cc=UXO!cmsy7Y').qTheraiseddot\gbdecimalistheBrit-8ishUUdecimalpGoint(Iusuallydo\mathcode?.=\gbdecimalandletmathsmodedoallthe8work).qTheUU\degreessignreplacesT'E6X's$'^?\circ$. *LTheUUguillemetscanalsobGeobtainedwiththeligatures<>..~#2.3.8SymbGols>usedinmaths8IUUhavestuckwiththeplainT'E6XconventionsasmuchaspGossible|eventhough\bulletis8moreUUoftenusedintextthanmaths. :ʮ129L\mathcode?\,"602C \mathcode\-"20AF Sƍ:ʮ130L\mathcode?\."002E \mathcode\/"002F:ʮ131L\mathchardef\bullet"2020 \mathchardef\times"20A6:ʮ132L\mathchardef\backslash"005B \mathchardef\setminus?"205B:ʮ133L\mathchardef\cdot?"20AE \mathchardef\cdotp"60AE:ʮ134L\def\langle{\delimiter"40DB30A?} \delcode\<"0DB30A:ʮ135L\def\rangle{\delimiter"50DD30B?} \delcode\>"0DD30B:ʮ136L\def\lbrace{\delimiter"407B308?} \let\{\lbrace\mathcode\{"407B:ʮ137L\def\rbrace{\delimiter"507D309?} \let\}\rbrace\mathcode\}"407Dҍ)3.8Switching<)bQetweenalphabQets.~8ThisUUisoneofthestrangeideasthatwentUUintothedesignoftheMalvernfont|Iwanted 8toUUhavesmallcapitalsandmediumcapitalstreatedasseparatealphabGetsratherthanasa8di erentUUstyle,justasItreatold-styleandrangingnumeralsasseparatesymbGols.qThese8extraUUalphabGetsarepresentinallMalvernAencoGdings*8@Չff=  *F*ontsUUwiththeMalvernAencoGdingbutmadefromnormalPostScriptfontswillhavemediumUUcapitalsreplacedwithfullcapitals,andold-stylenumeralsreplacedwithrangingnumerals.5:<Jܥ138{162R MAAMA[C|Malvern AMacros1.51995{04{06.ҍLTheseUUextraalphabGetsareobtainedbytransliteratingasequenceoflettersusingthe 8\uppercaseUUand\lowercasecommands.y㎫F*orexample,totransliteratecapitalsintosmall8capitalsUU(the\sccommand),we rstmakeassignmentssothat,forexample,\lccode?ais8setUUtothecoGdeforsmall-capital 0ercmmi7A,thenapply\lowercasetothetokenlist.)#3.1.8Setting%uppGerandlower%casecodesforspecialletters 8TheseUUentriesinthe\uucodeand\lccodetablesareusedbythecompGosite-letter-building8commandsUUratherthenthealphabGet-switchigncommands,buttheyareincludedhereto8bGeUUneartheothercode-hackery*. _:ʮ138L\uccode\th\TH \lccode\TH\th\uccode\TH\TH\lccode\th\th :ʮ139L\uccode\a?\A\lccode\A\a\uccode\A\A\lccode\a\a:ʮ140L\uccode\ng\NG \lccode\NG\ng\uccode\NG\NG\lccode\ng\ng:ʮ141L\uccode\l?\L\lccode\L\l\uccode\L\L\lccode\l\l:ʮ142L\uccode\dh\DH \lccode\DH\dh\uccode\DH\DH\lccode\dh\dh:ʮ143L\uccode\e?\E\lccode\E\e\uccode\E\E\lccode\e\e:ʮ144L\uccode\o?\O\lccode\O\o\uccode\O\O\lccode\o\o:ʮ145L\uccode\ae\AE \lccode\AE\ae\uccode\AE\AE\lccode\ae\ae:ʮ146L\uccode\oe\OE \lccode\OE\oe\uccode\OE\OE\lccode\oe\oe:ʮ147L\uccode\i?I\uccode\jJ\lccode\i\i\lccode\j\j:ʮ148L\uccode\csuperior?C)#3.2.8AumacrovGforchangingcharactercoGdes 8TheUU\changecodescommandisusedtochangethosesegmentsofcharactertablesthatare 8contiguousUUandmapontoacontiguoussegmentintherange.qItisinvokedas)1\changecodesc}'ommandxyn8(whereUUc}'ommand]ޫisatokenlike\uccodeor\mathcodeandx4D,y},andnarehnumb}'eri,Bns),8andUUdoGestheequivqalentof܍bEc}'ommandϘ0:ʮ153v#1\counta\countb:ʮ154v\advance\counta?1:ʮ155v\advance\countb?1:ʮ156v\advance\countc-1:ʮ157a\repeat:ʮ158L} LW*eUUcanusethisimmediatelytoarrangethatlowercasingUUmediumcapsmakeslower8case,UUanduppGercasingsmallcapsmakesfullcaps: _:ʮ159L\changecodes\uccode{"E1}{?A}{26}:ʮ160L\changecodes\uccode{"C1}{"C1}{26}:ʮ161L\changecodes\lccode{"E1}{"E1}{26}:ʮ162L\changecodes\lccode{"C1}{?a}{26}8 +]ff=  ;yAlas!qthisUUtaskwouldbGesomucheasierandmoreecientifitwerepGossibletodeclareUUnewalphabGet-switchingtablesstyledafterthe\uccodeand\lccodetableswhichmakeUU\uppercaseand\lowercasework.qThenallthisnonsensecouldhappGeninT'E6X'smouth,UUwhichhassomeadvqantages.qIcanimaginecommands\newchartable(usedtocreateUUatokenwhichcanbGeusedinthesamewayas\uccode)and\usechartable(usedtoUUde nedmacrosthatworklike\uppercase).qET'E6Xhackerstakenote!6J2Jܥ163{193R MAAMA[C|Malvern AMacros1.51995{04{06.ҍLW*eUUalsomakeold-stylenumeralsbGehaveaslowercaseforrangingnumerals,andalso 8arrangeUUthatmathsmoGdeusesranging gures. :ʮ163L\changecodes\lccode{"B0}{?0}{10} :ʮ164L\changecodes\uccode{?0}{"B0}{10}LInUUmathsmoGde(1)weusetextitalicforletters,sinceCMMAthItalicwillnotmatch8theUUbGodytextand(2)weuseranging gures.:ʮ165L\changecodes\mathcode{?a}{"7461}{26} :ʮ166L\changecodes\mathcode{?A}{"7441}{26}:ʮ167L\changecodes\mathcode{?0}{"70B0}{10}#3.3.8ChangingrthealphabGetforspeciallettersgotwithcommands8WhenUUapplying\uppercaseor\lowercasetoatokenlist,macroswillbGeuna ected(\ae 8willUUstillgenerate`ae').qT*ogetaroundthiswede nemacrosthatrede nethesecontrol8sequences.qTheyUUeachtakeasparametershexdigitsusedtomakecharactercoGdes.:ʮ168L\def\capspecials#1#2{% :ʮ169a\chardef\TH"#10?\chardef\A"#11\chardef\NG"#12:ʮ170a\chardef\L?"#13\chardef\DH"#14\chardef\E"#15:ʮ171a\chardef\O?"#2C\chardef\AE"#2E\chardef\OE"#2F:ʮ172L}:ʮ173L\def\lcspecials#1#2#3{%:ʮ174a\chardef\th"#10?\chardef\a"#11\chardef\ng"#12:ʮ175a\chardef\l?"#13\chardef\dh"#14\chardef\e"#15:ʮ176a\chardef\o?"#2C\chardef\ae"#2E\chardef\oe"#2F:ʮ177a\def\ss{\char"#23?\char"#23}\chardef\i"#39\chardef\j"#3A:ʮ178L}#3.4.8Pullingitalltogether8NowUUwecande netheusermacrosthatdothework.qThesetakeoneargument,apiece 8ofUUtexttotransliterate:q\sc{OX1'~?3QD}proGducesasmall-capital`OX Ӓ13(QD%QЫ';\csc{ABCdef}8proGducesUUcapsandsmallcaps`ABCDEF'.:ʮ179L\def\sc#1{{% :ʮ180a\changecodes\lccode{?A}{"E1}{26}\capspecials9F\lowercase{#1}%:ʮ181L}}:ʮ182L\def\mc#1{{%:ʮ183a\changecodes\lccode{?A}{"C1}{26}\capspecials8D\lowercase{#1}%:ʮ184L}}:ʮ185L\def\csc#1{{%:ʮ186a\changecodes\uccode{?a}{"E1}{26}\lcspecials9FE\uppercase{#1}%:ʮ187L}}:ʮ188L\def\allcaps#1{{%:ʮ189a\lcspecials054\uppercase{#1}%:ʮ190L}}:ʮ191L\def\alllc#1{{%:ʮ192a\capspecials17\lowercase{#1}%:ʮ193L}}7Yj;x# 3pi cmssdc102kAHG cmssbx10$': cmti10 cmmi10ٓRcmr7K`y cmr10d]