ofsdoc

30
May 2004 See the ofsdoc-e.tex for English version of this documentation. OFS: Olšákův fontový systém OFS je makro, které umožní přehledně v T E Xu vybírat rodiny fontů, jejichž názvy jsou v souladu s názvy z písmového katalogu. Toto makro je z uživatelského pohledu stejné v plainu i LaT E Xu. Výklad použití OFS bude tedy společný pro obě skupiny uživatelů. Pokud některý text platí jen pro csplain (a podobné formáty), bude uveden slovem PLAIN: a pokud je text určen pro uživatele LaT E Xu2e, je uveden slovem LATEX:. Pod skupinu PLAIN: patří nejen csplain, plain a odvozené formáty, ale též dnes už nepoužívaný LaT E X2.09 bez NFSS. Pod skupinu LATEX: bychom mohli zařadit všechny formáty, které pracují s NFSS 2, především tedy LaT E X2e. Po zavedení příslušných maker v záhlaví dokumentu (viz níže) se na terminálu mimo jiné objeví: PLAIN: OFS (Olsak’s Font System) based on plain initialized. <verze> LATEX: OFS (Olsak’s Font System) based on NFSS initialized. <verze> Výhody OFS: Sjednocuje rozhraní pro uživatele LaT E Xu i plainu. Pomocí příkazu \fontusage dostaneme na terminál a do logu stručnou informaci o použití maker z OFS. Umožňuje pracovat se skutečnými názvy písmových rodin tak, jak jsou uvedeny v písmovém katalogu a tím nenutí uživatele si kromě těchto názvů pamatovat ještě interní zkratky použité v NFSS nebo v názvech metrik fontů. Umožní pracovat s fontem rozloženým do dvou metrik (základní a rozšiřující) jakoby se jednalo o jediný font. Umožní na začátku dokumentu vybrat oblíbené kódování základní metriky, jsou-li metriky připraveny v různých kódováních (typicky kódování IL2 a T1). Definuje rozhraní pro vytváření pomocných souborů, které obsahují konverzní infor- mace mezi „dlouhými názvy fontů z katalogu a PLAIN: názvy metrik nebo LATEX: zkratkami používanými v NFSS. PLAIN: Umožňuje podobnou nezávislost výběru jednotlivých parametů fontů, jako NFSS v LaT E Xu. PLAIN: Definuje deklarační příkazy pro podchycení kódování fontů. PLAIN: Je možné pro různé velikosti registrovat různé metriky, což využijeme zejména u rodiny Computer Modern. PLAIN: Obsahuje nástroje na použití PostScriptových fontů i v matematické sazbě. Interaktivní makro ofstest.tex umožní tisknout vzorky odstavců ve zvolených písmových rodinách, tisknout tabulky fontů, katalogy fontů, vzorky matematické sazby a seznamy znaků ve fontech včetně jejich T E Xových sekvencí. Stačí napsat na příkazový řádek tex ofstest [allfonts] nebo csplain ofstest [allfonts] a řídit se pokyny na terminálu. 1

Upload: gilmer-calderon-quispe

Post on 10-Nov-2015

217 views

Category:

Documents


3 download

DESCRIPTION

texty

TRANSCRIPT

  • May 2004 See the ofsdoc-e.tex for English version of this documentation.

    OFS: Olkv fontov systm

    OFS je makro, kter umon pehledn v TEXu vybrat rodiny font, jejich nzvyjsou v souladu s nzvy z psmovho katalogu. Toto makro je z uivatelskho pohledustejn v plainu i LaTEXu. Vklad pouit OFS bude tedy spolen pro ob skupinyuivatel. Pokud nkter text plat jen pro csplain (a podobn formty), bude uvedenslovem PLAIN: a pokud je text uren pro uivatele LaTEXu2e, je uveden slovem LATEX:.

    Pod skupinu PLAIN: pat nejen csplain, plain a odvozen formty, ale t dnes unepouvan LaTEX2.09 bez NFSS. Pod skupinu LATEX: bychom mohli zaadit vechnyformty, kter pracuj s NFSS 2, pedevm tedy LaTEX2e.

    Po zaveden pslunch maker v zhlav dokumentu (viz ne) se na terminlu mimojin objev:

    PLAIN: OFS (Olsaks Font System) based on plain initialized. LATEX: OFS (Olsaks Font System) based on NFSS initialized.

    Vhody OFS:

    Sjednocuje rozhran pro uivatele LaTEXu i plainu. Pomoc pkazu \fontusage dostaneme na terminl a do logu strunou informacio pouit maker z OFS.

    Umouje pracovat se skutenmi nzvy psmovch rodin tak, jak jsou uvedenyv psmovm katalogu a tm nenut uivatele si krom tchto nzv pamatovat jetintern zkratky pouit v NFSS nebo v nzvech metrik font.

    Umon pracovat s fontem rozloenm do dvou metrik (zkladn a roziujc) jakobyse jednalo o jedin font.

    Umon na zatku dokumentu vybrat oblben kdovn zkladn metriky, jsou-limetriky pipraveny v rznch kdovnch (typicky kdovn IL2 a T1).

    Definuje rozhran pro vytven pomocnch soubor, kter obsahuj konverzn infor-mace mezi dlouhmi nzvy font z katalogu a PLAIN: nzvy metrik nebo LATEX:zkratkami pouvanmi v NFSS.

    PLAIN: Umouje podobnou nezvislost vbru jednotlivch paramet font, jakoNFSS v LaTEXu.

    PLAIN: Definuje deklaran pkazy pro podchycen kdovn font. PLAIN: Je mon pro rzn velikosti registrovat rzn metriky, co vyuijeme zejmnau rodiny Computer Modern.

    PLAIN: Obsahuje nstroje na pouit PostScriptovch font i v matematick sazb. Interaktivn makro ofstest.tex umon tisknout vzorky odstavc ve zvolenchpsmovch rodinch, tisknout tabulky font, katalogy font, vzorky matematicksazby a seznamy znak ve fontech vetn jejich TEXovch sekvenc. Sta napsat napkazov dek tex ofstest [allfonts] nebo csplain ofstest [allfonts] adit se pokyny na terminlu.

    1

  • 1. lenn psmovch rodin

    Makro OFS vychz z toho, e vtina dnes dodvanch psmovch rodin obsahujetyi ezy: zkladn (\rm), tun (\bf), kurzvu (\it), a tunou kurzvu (\bi). Tmto\rm \bf \it \biezm budeme kat standardn varianty. Po zaveden rodiny pkazem \setfonts(viz ne) lze pak pepnat pomoc \rm, \bf, \it a \bi mezi variantami v dan rodin.Prvn ti uveden pepnae jsou znm z plainu (v LaTEXu petrvvaj z dob zalslvy LaTeXu2.09) a tvrt pepn do varianty BoldItalic.

    Nkter rodiny mohou deklarovat pepnae dalch nadstandardnch variant au nkterch rodin naopak me chybt i nkter ze standardnch variant.

    Varianty v nkterch rodinch se mrn li od zde uvedench nzv pro standardnvarianty. Msto tunho psma me bt teba ptomno jen polotun a msto kurzvyteba sklonn psmo. Pepnae \rm, \bf, \it a \bi zstvaj pokud mono zachovny,take by ns nemlo vyvst z rovnovhy, e v nkter rodin teba \it pepn dosklonnho psma a ne do kurzvy.

    Pokud chceme souasn pracovat s dalmi pepnai font jin rodiny (napklad\tt pro strojopis), je mon takov pepnae deklarovat pomoc pkazu \fontdef.

    lenn font do rodin je deklarovno v souborech, kter maj v plainu podobnvznam, jako fd (Font Definition) soubory z LaTEXu. Doporuen ppona souboru jepro plain tex a pro LaTEX sty. Tmto souborm budeme kat deklaran soubory.Podle nzvu deklaranch soubor by mlo bt uivateli zejm, kter rodiny jsou v nmdeklarovny. Pklady:

    PLAIN: LATEX:sjannon.tex, sjannon.sty ... souhrnn rodina Jannon ze Steovica35.tex, a35.sty ... zkladn skupina 35 font od Adobe

    Vidme, e deklaran soubory (na rozdl od fd soubor z LaTEXu) obsahuj obvykledefinice vce souvisejcch rodin. Mezi tmito soubory uivatel vybr ty, kter budepotebovat a uvede jejich jmna pi zaveden makra OFS v zhlav svho dokumentu.Aby ml uivatel zjednoduenou prci, zakldme obvykle t souhrn soubory, kterobsahuj \input nebo \RequirePackage na jednotliv deklaran soubory:

    skatalog.tex, skatalog.sty ... vechny fonty ze Steovicallfonts.tex, allfonts.sty ... vechny fonty na TeXov instalaci

    2. Uivatelsk pkazy

    2.1. Zaveden OFS

    Pro pklad pedpokldejme, e budeme chtt pracovat s fonty ze souhrnn rodinyJannon a DynaGrotesk. Protoe se jedn o rodiny ze Steovick psmolijny od panatorma, najdeme odpovdajc deklaran soubory v adresi storm. Na Internetu jezskme spolen s makrem OFS napklad na www.cstug.cz/stormtype. Souhrnn ro-diny Jannon a DynaGrotesk jsou deklarovny v tchto souborech: PLAIN: sjannon.tex,sdynamo.tex; LATEX: sjannon.sty, sdynamo.sty. Psmeno s na zatku nzv zna-men, e fonty pochzej ze Steovick psmolijny. Jmna tchto soubor bez pponyje nutn uvst v hranat zvorce pi zaveden makra OFS takto:

    PLAIN: \input ofs [sjannon, sdynamo] % mezera ped "[" je nutn!

    2

  • LATEX: \usepackage [sjannon, sdynamo] {ofs}

    Dle meme pracovat s rodinami, kter jsou obsaeny v souhrnnch rodinchJannon a DynaGrotesk. Napeme-li do dokumentu pkaz \showfonts, zobraz se na\showfontsterminl (a zape do logu) seznam nzv jednotlivch rodin, kter dle meme pou-vat. Po zaveden sjannon a sdynamo, jak bylo uvedeno ve, zobraz pkaz \showfontstento seznam:

    OFS (l.1): The list of known font families:defaults:

    [CMRoman/] \rm, \bf, \it, \bi, \sl[CMSans/] \rm, \bf, \it, -[CMTypewriter/] \rm, - , \it, - , \sl[Times/] \rm, \bf, \it, \bi[Helvetica/] \rm, \bf, \it, \bi, \nrm, \nbf, \nit, \nbi[Courier/] \rm, \bf, \it, \bi

    sjannon.tex:[JannonAntikva/] \rm, \bf, \it, \bi, \mr, \mi[JannonText/] \rm, \bf, \it, \bi, \mr, \mi[JannonCaps/] \rm, \bf, \it, \bi

    sdynamo.tex:[DynaGroteskDXE/] \rm, \bf, \it, \bi[DynaGroteskRXE/] \rm, \bf, \it, \bi[DynaGroteskLXE/] \rm, \bf, \it, \bi... a dalch 15 rodin DynaGrotesk ...Prvnch 6 rodin (oznaen jako defaults) je definovno v OFS. Teprve dal rodiny

    jsou deklarovny v pouitch souborech.Vedle nzv rodin jsou uvedeny pepnae variant, kter pro danou rodinu meme

    pout. Prvn tyi pepnae jsou pro standardn varianty a pokud v nkter rodintakov varianta nen pstupn, je zde na mst odpovdajcho pepnae pomlka. Pta ppadn dal pepnae se vztahuj k ppadnm nadstandardnm variantm. Zdenapklad rodina Helvetica m navc pepnae pro varianty Narrow a rodiny Jannonmaj pepnae pro varianty Medium.

    Napeme-li do dokumentu pkaz \fontusage, zobraz se na terminl a do logu\fontusagestrun informace o pouit pkaz z balku OFS.

    Krom ve uvedenho zpsobu zaveden:

    PLAIN: \input ofs [soubor, soubor, ...]LATEX: \usepackage [soubor, soubor, ...] {ofs}existuje jet monost pmo zavst poadovan soubory. Pak nen nutn v dokumentuexplicitn zavdt soubor ofs.tex resp. ofs.sty:

    PLAIN: \input soubor \input soubor ...LATEX: \usepackage {soubor} \usepackage {soubor} ...Pklad:

    PLAIN: \input sjannon \input sdynamoLATEX: \usepackage {sjannon} \usepackage {sdynamo}

    Nedoporuuje se (zvlt v LaTEXu) oba tyto zpsoby zaveden makra OFS mchat.

    3

  • 2.2. Pkaz \setfonts

    V dalch pkladech pedpokldme, e jsme zavedli pouze potebn rodiny, nap-\setfontsklad ze soubor sjannon a sdynamo. Nyn teba po pouit pkazu

    \setfonts [JannonText/12pt]

    lze pepnat do jednotlivch variant tto rodiny JannonText ve velikosti 12pt. Je monpout pepnae \rm, \bf, \it, a \bi a speciln pro tuto rodinu jet \mr a \mi.

    Pkaz \setfonts [JmnoRodiny/velikost] pepn do nov rodiny a ct na-posledy zapnutou variantu. Pokud ped tmto pkazem byla zapnut teba variantaBoldItalic, pak po tomto pkazu zstv zapnut tato varianta i v nov rodin. Pokudv nov rodin naposledy zapnut varianta neexistuje, pepn se do \rm. Tato variantamus bt deklarovna v kad rodin.

    Pkaz \setfonts vymezuje vechny zmny pouze lokln. Po ukonen skupiny sesazba vrac k rodin a variant, kter byla aktuln pi zahjen skupiny.

    Parametry pkazu \setfonts mohou bt przdn: \setfonts [JmnoRodiny/]pepne do nov rodiny a ct naposledy nastavenou velikost a \setfonts [/velikost]nastav novou velikost a ponech aktuln vybranou rodinu. Po inicializaci OFS je (proppad pouit przdnho parametru) defaultn nastavena rodina CMRoman a velikost10 pt. Pkaz \setfonts [/] je syntakticky korektn, ale neudl krom zpisu do loguvbec nic.

    Parametr JmnoRodiny, je-li uveden, mus pesn odpovdat jmnu rodiny podleseznamu znmch rodin (viz nahoe pkaz \showfonts). Je teba dodrovat mal avelk psmena a cel jmno pst bez mezer. Pokud se tento parametr neshoduje s dnouznmou rodinou, vype TEX varovn a pipoj seznam vech znmch rodin. Takenapklad \setfonts [?/] lze pout se stejnm efektem, jako pkaz \showfonts.

    LATEX: JmnoRodiny me bt nejen jmno podle seznamu znmch rodin (dlouhnzev), ale je dovoleno pout i zkratku z NFSS. Take napklad \setfonts [Times/]a \setfonts [ptm/] je v LaTEXu tot.

    PLAIN+LATEX: Parametr velikost m tyto monosti: slo . . . . nap. 12, 17.4, slojednotka . . . . nap. 12pt, 17.4pt, 10dd, atslojednotka . . . . nap. at12pt, at17.4pt, at10dd, scaledcel slo . . . . nap. scaled1200, scaled\magstep3, magdesetinn slo . . . . nap. mag1.2, mag.7, mag2.0.Prvn ti monosti se vznamov shoduj. Klov slovo at je nepovinn a nen-li

    uvedeno ani at ani jednotka, dopln se automaticky atslopt. Font se zavede pesnv poadovan velikosti. Samozejm pi globlnm \magnification celho dokumentuse jedn o relativn a nikoli absolutn rozmry, pokud nepouijeme jednotku uvozenouslovem true (nap. 17truept). Jestlie peme klov slovo at, nesmme vynechat jed-notku. Nesprvn: at12, sprvn: at12pt nebo jenom 12.

    tvrt monost (scaled) je shodn s pouitm slova scaled pi zavdn fontu po-moc primitivu \font. Nap. scaled1200 je font, jeho zkladn velikost je pronsobenakoeficientem 1,2. Je-li zkladn velikost fontu 10 pt (co je obvykl), pak je scaled1200shodn s at12pt.

    Posledn monost (mag) pronsob aktuln velikost font danm koeficientem. Narozdl od scaled se tedy vztahuje k aktuln velikosti a nikoli k zkladn velikosti fontu.

    4

  • Je-li nejprve pouito teba \setfonts[/12] a v zpt \setfonts[/mag2.], rodinafont bude nyn szena ve velikosti 24 pt. Pklad:

    \def\small{\setfonts[/mag.7]}Text {\small je men \small a men \small a jet men} a tady jezase v normln velikosti.

    Upozornn: Zmna velikosti font pomoc \setfonts nijak nemn vzdlenost a(\baselineskip). To si mus uivatel nastavit sm.

    Pomoc \setfonts meme nastavit nejen celou rodinu (to ovlivn pepnae variant\rm, \bf, \it, \bi a ppadn dal), ale tak jen zvolenou variantu v dan rodin.V takovm ppad \setfonts nemn vznam pepna variant ani aktuln velikostostatnch font. Pi specifikaci varianty je nutno v parametru \setfonts za nzev rodinynapsat znak mnus nsledovan zkratkou pro variantu. Pklady:

    \setfonts [JannonText-it/12] ..... nastav kurzvu dan rodiny vevelikosti 12pt

    \setfonts [JannonText-rm/] ....... nastav zkladn ez dan rodinyv aktuln velikosti.

    \setfonts [CMTypeWriter-sl/] ..... nastav zkladn variantu \slv aktuln velikosti.

    I pi specifikaci varianty je mon v parametru vynechat nzev rodiny, pak se pouijeaktuln rodina. Napklad

    \setfonts [JannonText/12]\setfonts [-bf/17] ... varinata Bold JannonText, velikost 17pt.

    Pepnae \rm, \bf, \it a \bi zstanounezmnny, v tomto pklad pepnajJannonText ve velikosti 12pt.Nsledn pouit teba \setfonts [Times/]nastav rodinu Times ve velikosti 12pt.

    ALE:\setfonts [/17]\bf ... Varinata Bold aktuln rodiny, velikost 17pt.

    Pepnae \rm, \bf, \it a \bi nynpepnaj ve velikosti 17pt. Aktulnvelikost font je nyn 17pt.

    LATEX: Co zde bylo eeno o ponechn vznamu pepna variant pi specifikovnvarianty v LaTEXu nen pravda, protoe by to naruilo logiku NFSS. V LaTEXu tedyje \setfonts [-bf/17] zcela shodn s pkazy \setfonts [/17]\bf.

    2.3. Pkazy \fontdef a \addcmd

    Pkaz \fontdef umouje deklarovat nov fontov pepnae.\fontdef

    \fontdef \pepna [JmnoRodiny/velikost]Tato deklarace se zhruba shoduje s

    \gdef \pepna {\setfonts [JmnoRodiny/velikost]}

    5

  • PLAIN: Pokud je specifikovna rodina vetn varianty a parametr velikost nenprzdn ani nen zadn pomoc klovho slova mag, pak \pepna nen implemento-vn jako makro obsahujc \setfonts, ale jedn se o nativn pepna fontu implemento-van pomoc \global\font\pepna (tzv. fixed font). Tak me uivatel deklarovatvlastn nativn pepna fontu bez znalosti nzvu metriky.

    LATEX: Deklarovan pepna je ve vech ppadech implementovn jako makro ob-sahujc \setfonts. Pstup k nativnm pepnam je ped uivatelem v NFSS skryt.

    PLAIN+LATEX: Msto jmna rodiny me bt uveden vykink. Pak se dopln jmnorodiny aktuln v mst pkazu \fontdef. Na druh stran, pokud je jmno rodinyprzdn, pak se jmno rodiny dopln podle aktuln rodiny v mst pouit deklarovanhopepnae. Analogick vlastnost plat pro parametr velikost. Pklady:\setfonts [JannonAntikva/]\fontdef \small [/7] % \small = \setfonts [/7pt]\fontdef \sffam [DynaGroteskR/] % \sffam = \setfonts [DynagroteskR/]\fontdef \velky [Times/17] % \velky = \setfonts [Times/17pt]\fontdef \ttfam [Courier/] % \ttfam = \setfonts [Courier/]\fontdef \mylogo [Times-rm/mag.8] % \mylogo = \setfonts [Times-rm/mag.8]

    % velikost fontu bude vdy rovna% 0.8 nsobku aktuln velikosti.

    \fontdef \timbf [Times-bf/12] % \timbf = fixed-font pepna, jako:% \global\font\timbf=ptmb8z at12pt

    \fontdef \jansmall [!/7] % \jansmall=\setfonts[JannonAntikva/7]\fontdef \janbi [!-bi/17] % \janbi = fixed-font pepna, jako:

    % \global\font\janbi=sjnbi8z at17pt\fontdef \tt [Courier-rm/!] % \tt = fixed-font pepna, jako

    % \global\font\tt=pcrr8u at10pt

    Pkaz \fontdef deklaruje pepna globln, ovem tento pepna je sm o soblokln. Jinmi slovy \global\fontdef\jmeno je tot jako \fontdef\jmeno, ale pe-pna \jmeno nastav font (nebo celou rodinu) jen lokln.

    Od verze OFS Oct. 2002 je podporovn pkaz \addcmd, kter umon spolen\addcmds pkazem \fontdef soustedit problematiku font do jedinho msta v souboru maker.Pkaz m formt:

    \addcmd \pepna {pkazy}a chov se, jako \def\pepna {pvodn vznam pepnae pkazy}. Pomoc\addcmd tedy meme rozit obsah makra \pepna o dal pkazy. Sekvence\pepna mus bt (ped pouitm \addcmd) definovna jako makro bez parametrnebo mus bt ve vznamu neexpandovan kontroln sekvence deklarovan napkladpomoc \font, \chardef apod. Po pouit \addcmd je sekvence \pepna definovnavdy jako makro bez parametru. Opakovan pouit \addcmd na stejn \pepna jemon.

    Pklad pouit:

    \setfonts [JannonText/]\fontdef \footnotefont [!/7]\addcmd \footnotefont {\rm \baselineskip=9pt \relax}\fontdef \sectionfont [!/12]\addcmd \sectionfont {\bf \let\it=\bi}

    6

  • 2.4. Test ptomnosti rodiny

    PLAIN: Ve svch makrech meme testovat, zda je rodina font deklarovan,tj. zda je natena jej deklarace z deklaranho souboru. Pouijeme k tomu konstrukci\knownfam JmnoRodiny? \iftrue, kter expanduje na \iftrue, pokud je rodinadeklarovan a na \iffalse, pokud deklarovan nen. Parametr JmnoRodiny musmeuvst bez specifikace varianty.

    PLAIN+LATEX: Z dvod zptn kompatibility se star verz OFS dl stejnou prcijako \knownchar makro \ifknownfam [JmnoRodiny]. V OFS pro plain se ale od\ifknownfamverze Feb. 2004 doporuuje pouvat \knownfam, protoe to udruje sprvn sprovanprimitivy \if*, \else, \fi. LaTEXov uivatel si me \knownfam snadno definovat.

    2.5. LATEX: Propojen OSF s NFSS

    Tato sekce je urena pouze pro LaTEXisty. Pkaz\OFSfamily

    \OFSfamily [JmnoRodiny]konvertuje dlouh nzev rodiny podle katalogu na intern nzev rodiny zanesen doNFSS. Napklad

    \OFSfamily [JannonText]

    expanduje na sjng. Makro pracuje jen na rovni expandprocesoru, proto nedostanemepi peklepu v nzvu rodiny chybov hlen. Pi neexistujc rodin makro expandujena text unknown. Pouijeme-li napklad \OFSfamily ve svch stylovch souborech azpozorujeme, e se NFSS sna substituovat rodinu unknown, meme si bt jisti, emme peklep v nzvu rodiny nebo nemme sprvn pouit \usepackage.

    Pklad pouit:

    \usepackage [sjannon, sdynamo] {ofs}\edef\rmdefault {\OFSfamily [JannonAntikva]}\edef\sfdefault {\OFSfamily [DynaGroteskR]}\edef\ttdefault {\OFSfamily [Courirer]}

    Vznam maker \rmdefault, \sfdefault, \ttdefault je popsn v dokumentaciNFSS.

    Dle OFS definuje pkaz\OFSfamilydefault

    \OFSfamilydefault [JmnoRodiny]kter nastav zkladn rodinu celho dokumentu. Tato rodina se v pslunch velikos-tech a variantch objev nejen v textu, ale i v zhlav kapitol, sekc a podobn (jsou-limakra v pouitm class souboru udlna rozumn). Pkaz intern provede

    \edef\familydefault {\OFSfamily [JmnoRodiny]}s tm, e navc oet ppad neexistujc rodiny chybovm hlenm s vpisem vechaktuln dostupnch rodin.

    2.6. Kdovn font

    LATEX: Pepnn mezi kdovnm font probh zcela v reii NFSS. OFS v tto vcinepidv nic novho.

    7

  • PLAIN (a do konce sekce): Implicitn se pedpokld kdovn CSfont. Pokud ale pote-bujeme pout fonty napklad v kdovn T1, pak pouijeme \def\fotenc{8t} a OFS\fotencbude pracovat s fonty v tomto kdovn.

    Meme dokonce uvnit dokumentu pepnat:

    \def\fotenc{8z} \setfonts[/] ... fonty v kdovn CSfont\def\fotenc{8t} \setfonts[/] ... fonty v kdovn podle Corku.

    Krom toho OFS obsahuje nstroje, aby makra zvisl na kdovn font (nap-klad \v, \, \ae) expandovala sprvn na znak ve zvolenm kdovn. Implicitn jev OFS nastaveno \loadingenc=0, co znamen, e zmnou kdovn font ani pka-\loadingenczem \setfonts se nemn makra typu \v, \ae. Tato makra si ponechaj svj originlnvznam z plainu. To uvtaj ortodoxn plainist, kte nemaj rdi, kdy m pouitbalek zbyten velkou inteligenci.

    Je-li ale na zatku dokumentu uvedeno \loadingenc=1, napklad:

    \input ofs [a35,sjannon] \loadingenc=1

    pak pi kadm pkazu \setfonts si TEX zkontroluje, zda m nateny vechny potebnsoubory se jmnem ofs-kdovn.tex. Tyto soubory obsahuj pedefinovn makerzvislch na nastavenm kdovn font. Pokud tyto soubory nateny nejsou, TEX jebhem \setfonts nate. Podrobnji viz sekce 3.3 a 3.5.

    Balek OFS obsahuje ti soubory s deklaracemi maker zvislmi na kdovn:ofs-8z.tex, ofs-8t.tex a ofs-8c.tex. Pi pouit jinho kdovn font si metevytvoit dal soubor analogickho nzvu. Pkazy \accentdef a \characterdefpouvan v tchto souborech jsou podrobn vysvtleny v sekci 3.4.

    2.7. Fonty v matematice

    LATEX: OFS pro LaTEX vbec nee otzku font pro matematiku. Je poteba vyutnabdku monost NFSS.

    PLAIN (a do konce sekce): Pkaz \setfonts a pepnae deklarovan pomoc \fontdefpepnaj jen psmo v textovm reimu. Pokud nepouijeme pkaz \setmath, zstvve, co je ve vstupnm souboru mezi dolary, vytitno v Computer Modern ve velikos-tech 10 pt/7 pt/5 pt (velikost: zkladn/indexov/indexindexov). To nemus bt vdydouc.

    Pkaz \setmath m tento tvar:\setmath

    \setmath [zkladn velikost/indexov velikost/indexindexov velikost]V parametrech pkazu dvme najevo, v jakch velikostech chceme matematick fontynastavit. Je mon pout libovoln zpis velikosti, jako u pkazu \setfonts. Je-lipouita monost magslo, je velikost vypotna jako slo krt velikost aktulnhotextovho fontu. Je-li parametr przdn, dopln se takto:

    zkladn velikost mag1.0 indexov velikost mag0.7 indexindexov velikost mag0.5Take \setmath [//] udl tot jako \setmath [mag1./mag.7/mag.5]. OFS de-

    finuje makro \setsimplemath jako \setmath [//].\setsimplemathPkaz \setmath nastav matematick fonty podle aktuln situace. Jeho innost

    zvis na obsahu maker \fomenc a \mathversion.

    8

  • Matematick kdovn je ureno hodnotou makra \fomenc. Existuj tyto monosti:\fomenc

    Implicitn hodnota je \def\fomenc{PS} (PostScript-Symbol). Pkaz \setmath pakpevezme kurzvu aktuln rodiny a pouije ji jako matematickou kurzvu. Dlepevezme zkladn variantu aktuln rodiny a pouije ji pro slice a dal sym-boly, kter jsou psny i v matematice jako \rm. Standardn pepnae variant \rm,\it, \bf a \bi zanou pepnat do odpovdajcch font i v matematick sazb. Pi\def\fomenc{PS} se navc chybjc matematick znaky, kter obvykle nejsou p-tomny v PostScriptovch fontech (napklad psmena eck abecedy), nahrad z Post-Scriptovho fontu Symbol. Tento font se toti ke vtin PostScriptovm psmmhod daleko lpe ne Computer Modern. Ostatn znaky (napklad zvtujc zvorkya velk opertory) zstvj v Computer Modern.

    Je-li \def\fomenc{CM} (Computer Modern), pak \setmath ponech matematickmvzorekm Computer Modern fonty, jen se ppadn pizpsob poadovan velikosti.

    Po zaveden souboru amsfn.tex je mon pout \def\fomenc{AMS}. Matematika sepak chov stejn jako pi CM, ale navc jsou k dispozici veker symboly z AMSTEXu.

    Po zaveden souboru txfn.texmeme pout dv nov kdovn: \def\fomenc{TX}nebo \def\fomenc{PX}. V obou ppadech se pro matematiku pouij voln dostupnTXfonty, kter vychzej z ez rodin Times a Helvetica. Pi hodnot TX se v ma-tematice pouij vhradn TXfonty, zatmco pi hodnot PX budou TXfonty kombi-novny s kurzvou a zkladnm ezem aktuln textov rodiny font (podobn jakopi kdovn PS). OFS podporuje vechny kontroln sekvence na matematick sym-boly podle manulu k TXfontm. Jsou zde veekr symboly z AMSTEXu a mnohodalch. Symbol z TXfont je nkolik stovek.

    Po zaveden souboru mtfn.tex je mon pout \def\fomenc{MT}. Matematika budeobsahovat kurzvu a zkladn ez aktuln rodiny font kombinovanou se znaky ko-mern verze matematickch font MathTimes.

    Podobn jako v NFSS jsou podporovny dv verze vzorek: normal a bold. Poa-dovan verze se nastavuje v makru \mathversion pomoc \def\mathversion{normal}\mathversionnebo \def\mathversion{bold}. Makro \setmath pak pizpsob zaveden matema-tickch font poadovan verzi. Implicitn je nastaveno \def\mathversion{normal}.Nastaven \mathversion je poteba provst ped vyvolnm pkazu \setmath. P-klady:

    \setmath [//] $vzoreek$ % vzoreek je ve verzi "normal"$\def\mathversion{bold}\setmath[//] vzoreek$ % vzoreek ve verzi "bold"

    3. Jak je to udlno, aneb pohled do hloubky

    LATEX: Vechna makra, kter jsou jen pomocn, jsou ve stylu ofs.sty definovnase jmnem \ofs@jmnomakra, aby nedolo ke zmaten s jinmi styly. Makra, kter sepouvaj v deklaranch souborech, maj nzev \OFSjmnomakra. Dle styl definujeuivatelsk pkazy \setfonts, \fontdef, \showfonts, \fontusage, a pedefinovvpepnae \rm, \bf, \it, \bi.

    PLAIN: Vechna makra definovan v ofs.tex jsou uvedena v rejstku na konci tohotodokumentu. Pi nvrhu nzv maker jsem nevyuil konvenci se znakem @, protoe tentoznak v nzvech maker osobn nenvidm.

    9

  • 3.1. Vpisy do logu

    LATEX: Pro trasovn makra NFSS se pouije balek tracefnt.PLAIN: Pokud nkoho ru pi astm pepnn rodin font pkazem \setfonts

    vpisy v logu, me pout pkaz \nofontmessages. Pokud naopak chceme tyto vpisy\nofontmessagesvidt i na terminlu, pime \displayfontmessages. Implicitn je zapnut vpis pouze\displayfontmessagesdo logu pkazem \logfontmessages. Pokud chceme pesn vidt, kter metriky font\logfontmessagesse zavdj primitivnm pkazem \font, pouijeme \detailfontmessages.\detailfontmessages

    Varovn o nepstupnch znacch nebo kdovnch se vdy vypisuj na terminl ido logu. Chceme-li je mt jen v logu, meme napsat \let\displaymessage=\wlog,\displaymessageprotoe tato sekvence je v OFS pouvna na zobrazen zprv na terminl.

    3.2. Robustn a kehk pkazy

    LATEX: LaTEX2e m zaveden postupy na definovn robustnch pkaz. Vznamtchto pojm je vysvtlen v dokumentaci k LaTEXu. Pkaz \setfonts a pepnae de-klarovan pomoc \fontdef jsou samozejm definovny jako robustn, take se mohouvyskytovat v textech pro obsahy, rejsky apod. bez toho, aby zpsobily obte.

    PLAIN (a do konce sekce): Makro plainu problematiku kehkch pkaz nee a uivatelplainu, pokud naraz na tento problm, pouvaj rzn sv vlastn een, kter nejsoustandardizovna. Jedno takov een je i v OFS.

    Nejprve strun nazname, v em spov problm s kehkmi pkazy. Obas pote-bujeme (pro generovn obsahu, rejstku apod.) poslat njak text do pomocnho sou-boru (primitivem \write), aby byl tento soubor v zpt (pi dalm zpracovn TEXem)znovu naten. Problm je, e primitiv \write zape do souboru text po expanzi ma-ker, co nemus vdy vyhovovat. Pokud je napklad fontov pepna implementovnjako sloit makro a je pouit v textu zpracovanm primitivem \write, v souboru seobjev cel makro po expanzi. Pi optovnm naten takovho souboru dojde vtinouk havrii; kme, e byl pouit kehk (fragile) pkaz v textu poslanm do souboru av souboru se nm tento pkaz rozsypal.

    Pokud se dostane (potenciln) kehk pkaz z maker OFS do souboru, pak se pinovm naten takovho souboru automaticky pi havrii zobraz na terminlu a v logunvod jak postupovat, aby se uivatel tohoto problmu zbavil. Text nvodu po pekladudo etiny vypad takto:

    CHYBA !! kehk pkaz v toc/ind/aux nebo podobnm souboru.Tento problm mete eit nsledujcmi kroky:1. Vymate pomocn soubor s tmto kehkm pkazem.2. Vlote nsledujc kd do zhlav svho dokumentu:

    \let\orishipout=\shipout\def\shipout#1#2{\setbox0=#1{#2}\bgroup

    \let\expandaction=\noexpand \orishipout\box0 \egroup}3. Znovu TeXujte svj dokument nejmn dvakrt za sebou.Dal informace najdete v dokumentaci k OFS.

    Vysvtlme si, jak je to udlno. Makro, kter me v parametru primitivu \writepsobit pote, je v OFS definovno zhruba takto:

    \def\makro {%\ifx\expandaction\noexpand

    \noexpand\makro

    10

  • \else\csname fragilecommand!\endcsnamevlastn kd makra

    \fi}

    Pokud se nenastav \expandaction na hodnotu \noexpand, pak se provede st\expandactionkdu za \else. Protoe pkaz \csname fragilecommand!\endcsname nen definovn,\fragilecommand!realizuje se v hlavnm procesoru jako \relax [TBN, strana 349]. Pi expanzi primitivem\write se do souboru zape \fragilecommand!. Pi dalm ten soboru se spust pkaz\fragilecommand, kter vype na terminl ji zmnnou npovdu.\fragilecommand

    Jestlie uivatel pouije kd z npovdy v zhlav svho dokumentu, pak v dobinnosti primitivu \shipout (tj. v dob, kdy expanduj argumenty primitiv \write)je nastaveno \let\expandaction=\noexpand. V makru \makro se provede prvn stped \else, take do souboru se zape jen \makro. To je pesn to, co potebujeme.

    V OFS nen kd, kter pedefinovv \shipout, pmo zahrnut. Msto toho pouzedoporume uivateli, aby to udlal sm. Uivatel plainu toti potebuje mt vci podvlastn kontrolou a neml by asi dvru k makru, kter bez jeho vdom pedefinuje takzsadn vc, jako je primitiv \shipout. Tak je mon, e uivatel plainu pouije narzn sti textu ve svch makrech \edef a potebuje vdt, e je v takovm ppadvhodn nejpve nastavit \let\expandaction=\noexpand.

    Podobn jako zde v ukzce definice pkazu \makro jsou v OFS definovny p-kazy \setfonts (sekce 2.2), \setmath (sekce 2.7), \setextrafont, \printcharacter,\printaccent (sekce 3.4), \accentabove, \accentbelow a \ofshexbox (sekce 3.6).Po pouit kdu z npovdy se tato makra stvaj robustnmi v LaTEXovm smyslutohoto slova.

    3.3. Deklaran soubory

    LATEX: Deklaran soubory v LaTEXu jsou bn stylov soubory, kter shrnuj nko-lik rodin font ve smyslu NFSS. Tyto rodiny jsou deklarovny bnm zpsobem ve fdsouborech. V deklaranch souborech je mono pout nsledujc pkazy:

    \OFSprocessoptions m vtinou hodnotu \undefined. Pokud ale je stylov\OFSprocessoptionssoubor natn ze souboru ofs.sty jako parametr, m \OFSprocessoptions hod-notu \relax. Test na tuto sekvenci pouvme v zhlav stylovho souboru, abychomvynachali LaTEXovsk \RequirePackage{ofs}, pokud to nen poteba (a pouze byto zlobilo).

    \OFSextraencoding {roziujc kdovn} Toto makro si poznamen do\OFSextraencodingpamti roziujc kdovn a provede \input {roziujc kdovnini.def}.Pedpokld se, e tam jsou odpovdajc definice pro roziujc kdovn, viznapklad soubor se1ini.def, kter obsahuje deklarace pro roziujc kdovn SE1font ze Steovick psmolijny. Pokud u byl soubor roziujc kdovnini.defnaten, makro jej nenat znovu. Pozor: roziujc kdovn je nutno pstvelkmi psmeny, akoli v nzvu souboru mus bt naopak tato psmena mal.

    \OFSputfamlist {text} vlo text do seznamu rodin, kter se vypisuje pi\OFSputfamlist\showfonts nebo pi neznm rodin.

    \OFSdeclarefamily [JmnoRodiny] {NFSS-jmno} poznamen si do pa-\OFSdeclarefamilymti, e JmnoRodiny je ve skutenosti NFSS-jmno. Tato pam se vyuije

    11

  • napklad v pkazu \OFSfamily. Navc zanese JmnoRodiny do seznamu rodinvypisovanm pi \showfonts.

    \OFSnormalvariants do textu, kter se vypisuje pi \showfonts nebo pi ne-\OFSnormalvariantsznm rodin vlo, seznam standardnch pepna, tj. \rm, \bf, \it, \bi.

    PLAIN (a do konce sekce): Deklaran soubory maj pponu tex a pedpokld se o nich,e maj pojistku proti opakovanmu naten. Pokud nen jet naten soubor ofs.tex,je nutno jej ped dal innost nast. Rovn je vhodn zde nast soubor definic znakpodle pouitch kdovn (viz sekce 3.4).

    V deklaranm souboru je nutno vytvoit vazbu mezi nzvy rodin a pouitmi met-rikami. K tomu se pouvaj nsledujc pkazy:

    \protectreading soubormezera poznamen si do pamti, e je peten\protectreadingsoubor. Pokud je pkaz se stejnm parametrem ten podruh, provede \endinput,take nsledujc deklarace jsou chrnny proti vcensobnmu ten.

    \ofsputfamlist {text} vlo text do seznamu rodin, kter se vypisuje pi\ofsputfamlist\showfonts nebo pi neznm rodin.

    \ofsdeclarefamily [JmnoRodiny] {pkazy} deklarace nov rodiny se\ofsdeclarefamilyjmnem JmnoRodiny. Toto jmno se zanese do seznamu znmch rodin vypiso-vanch pomoc \showfonts. Pokud se tato rodina pouije pi \setfonts, pak seprovedou pkazy. Mezi pkazy se pouije prv jeden pkaz \loadtextfam,kter zavede fonty dan rodiny do pamti TEXu.

    \loadtextfam Zavede tyi fonty s danmi metrikami. Tento pkaz vyaduje\loadtextfampodrobnj vysvtlen, kter je vetn parametr pkazu uvedeno ne.

    \newvariantslice \pepna (Varianta) mezera metrika;extra-enc;\newvariant Deklaruje nov pepna varianty. Podrobnj vysvtlen je uvedeno ne.

    \modifyenc kdovn:identifiktor; pidn vjimek vzhledem k zkladnmu\modifyenckdovn, viz sekce 3.5.

    \fosize makro, kter uchovv informaci o aktuln velikosti font v napo-\fosizesledy vybran rodin. Obsah \fosize me mt dv podoby: atdimen neboscalednumber podle toho, jak tvar parametru velikost byl pouit v pkazu\setfonts.

    \fotencmakro, kter uchovv informaci o aktulnm kdovn. Nejastj mo-\fotencnosti jsou \def\fotenc{8z} (kdovn podle CS-font) nebo \def\fotenc{8t} (k-dovn podle Corku). Je-li pi naten souboru ofs.tex makro \fotenc u znm,ponech se beze zmny, jinak se definuje jako 8z.

    \extranec makro, kter uchovv informaci o roziujcm kdovn. Tuto infor-\extraencmaci tam kopruje z parametru extra-enc makro \laodatextfam.

    \defaultextraenc makro, jeho pedefinovnm meme zmnit roziujc k-\defaultextraencdovn zkladnch rodin a rodin z a35.tex. Vchoz hodnota makra 8c.

    \setfontshook makro, kter se spust vdy pi innosti pkazu \setfonts tsn\setfontshookped tm, ne jsou vykonny pkazy z \ofsdeclarefamily.

    \registertfm jmno od-do skuten metrika umouje pracovat pi\registertfmrznch velikostech font s rznmi metrikami. Podrobnosti viz sekce 3.8.

    \registerenc JmnoRodiny: kdovn mezera umouje omezit pouit\registerencrodiny font jen pro vymezen kdovn. Podrobnosti viz sekce 3.9.

    Pkaz \loadtextfam pouvan v deklaranch souborech mezi pkazy makra\ofsdeclarefamily m parametry:

    \loadtextfam (Varianta-rm) mezera metrika-rm;%

    12

  • (Varianta-bf ) mezera metrika-bf ;%(Varianta-it) mezera metrika-it;%(Varianta-bi) mezera metrika-bi;extra-enc;%

    Procenta na koncch dk v tto ukzce oznauj, e za stednky nem bt me-zera. daje (Varianta-XX ) slou jako komente o variantch zapisovan do logua je mono je kompletn vetn zvorek a mezery vynechat (teba jen nkter). Veverzch OFS do Sep 2002 nebyl tento parametr vbec podporovn. Pi vynechn to-hoto parametru se pedpokldaj nsledujc implicitn hodnoty: rm: (), bf: (Bold),it: (Italic), bi: (BoldItalic).

    daje metrika-XX odpovdaj nzvm metrik, kter se pro uveden varianty fontmakrem \loadtextfam zavedou. Makro zhruba provede toto:

    \font\tenrm=metrika-rm \fosize\font\tenbf=metrika-bf \fosize\font\tenit=metrika-it \fosize\font\tenbi=metrika-bi \fosizePedpokld se, e vechny metriky-XX jsou v deklaranm souboru napsny tak, eobsahuj makro \fotenc. Tm je zaruena zmna nzvu metriky pi pechodu na jinkdovn (tj. pi pedefinovn makra \fotenc).

    Konen daj extra-enc udv nzev extra kdovn. Pokud je tento parametrneprzdn, pak \loadtextfam provede na pechodnou dobu \def\fotenc{extra-enc}a znovu expanduje parametry metrika-rm, metrika-bf , metrika-it a metrika-bi.Vsledky tchto expanz si poznamen do pamti. Jedn se o roziujc metriky k z-kladnm metrikm. Je-li parametr extra-enc przdn, poznmka o roziujcch metri-kch se nekon. Kdy pak njak makro pro pstup ke specilnmu znaku tuto metrikupotebuje, objev se na terminlu varovn, e aktuln zvolen metrika nem roziujcvariantu.

    Nkter metriky v pkazu \loadtextfam s vjimkou metrika-rm mohou bt vy-nechny. Je-li napklad przdn parametr metrika-XX , pak se zhruba provede\def\tenXX{\message{varovn o neexistujc variant na terminlu}}

    take pi pechodu na takovou variantu se objev na terminlu a v logu hlen o ne-existujc variant a font se nezmn.

    Pkaz \setfonts nemn vznam maker \rm, \bf, \it a \bi, ale mn vznam\setfontspepna font \tenrm, \tenbf, \tenit a \tenbi. Dl to navc zprostedkovan tm,e spust pkazy deklarovan pro poadovanou rodinu v \ofsdeclarefamily a mezitmito pkazy se vyskytuje pkaz \loadtextfam.

    Makra \rm, \bf, \it, resp. \bi pouvaj fontov pepnae \tenrm, \tenbf, \tenit,\tenrm \tenbf \tenitresp. \tenbi. Prvn ti jsou znmy z plainu a tvrt je zaveden nov. Navc makra \rm,\tenbi\bf, \it a \bi ukldaj do kontroln sekvence \currentvariant informaci o naposledy\currentvariantaktivovan variant. Tato informace m podobu psmene (M, F, T, resp. I), protoejedin konstrukce \let\currentvariant=psmeno je odoln vi expanzi. lo o to,aby makra pepna variant byla robustn i bez pedefinovn \shipout.

    Vimneme si, e \loadtextfam nastavuje pepnae \tenrm, \tenbf, \tenit a\tenbi na fonty v libovoln velikosti. in tak podle aktuln hodnoty makra \fosize,kter mn makro \setfonts podle toho, jak je zadn parametr velikost. Slovo tenv nzvech fontovch pepna tedy nemus znamenat, e se jedn o font ve velikosti

    13

  • 10 pt. Povaujme tyto nzvy za historick a z hlediska OFS mon trochu kurizn.Nen pitom nutn pro pepnae textovch font vymlet nzvy nov.

    Nkdo me namtnout, e opakovan pouvn makra \setfonts vdy znovu aznovu spout tveici pkaz \font, co me zpsobit vt nroky na pam a as.Nen to pravda, protoe TEX si eviduje intern tabulku u zavedench metrik a piopakovanm pouit primitivu \font na stejnou metriku se u neobtuje metriku vbecotevrat. Jen inicializuje pslun fontov pepna asi stejn rychle, jako by se toprovedlo pomoc \let.

    Pkaz \loadtextfam jet ped zavedenm font nate pi \loadingenc>0 sou-\loadingencbor ofs-\fotenc.tex. Pi neprzdnm parametru extra-enc navc nate souborofs-extra-enc.tex. Tyto soubory jsou teny jen jednou a v dob ten jsou ignoro-vny przdn dky, konce dk. ten probh uvnit skupiny, kde jsou pro jistotulokln nastaveny kategorie znak podle plainTEXu (a \catcode@=11) a je nastaveno\globaldefs=1, tj. vechna pedefinovn ze souboru ofs-kdovn.tex se provedouglobln. To nm nevad, protoe nov naten kdovac soubory nejsou v konfliktus pedchozmi (viz vlastnosti pkaz \characterdef a \accentdef v sekci 3.4).Naten vtho mnostv tchto soubor ne je v dan chvli poteba, rovn neohrozfunkcionalitu maker zvislch na kdovn. Dvod globln definice je v tom, e nenvhodn, aby pi opakovanm {...\setfonts...} musel bt kdovac soubor natnneustle znovu a znovu.

    Pokud uivateli vad, e je pedefinovn maker globln (chce napklad svj lnekzaadit do sbornku, kde by pedefinovn mohlo vadit jinm lnkm), pak ponech\loadingenc=0 a mus nast soubory s deklaracemi maker manuln pomoc \inputna zatku lnku. V takovm ppad se provede deklarace jen lokln.

    V parametru pkazy makra \ofsdeclarefamily se me deklarovat nadstan-dardn varianta rodiny pomoc pkazu \newvariant. Tento pkaz provede:\newvariant

    \font\tenpepna =metrika \fosize\def \pepna {\let\currentvariant=slice \tenpepna }Dle pkaz \newvariant zanese do pamti informaci o ppadn roziujc metricepodle ext-enc.

    Pokud OFS potebuje dodret pi pechodu na novou rodinu naposledy zvolenounadstandardn variantu, in tak podle hodnoty \currentvariant. Pokud tedy novrodina m deklarovnu nadstandardn variantu pod stejnnou slic, bude pouita tatovarianta a OFS nebude pepnat do defaultn varianty \rm. Je proto vhodn deklarovatvarianty rznch rodin ale stejnho typu pod stejnou slic. Z principu vci vidme,e v OFS existuje omezen v potu nadstandardnch variant jedn rodiny na maximln10. To by nemlo vadit, protoe kdykoli meme rozdlit rozshlou rodinu na vce rodin(napklad tormovy rodiny DynamoGrotesk).

    Makro \setfonts me mnit vznam maker \loadtextfam a \newvariant. Udlto prv tehdy, kdy je v parametru Rodina specifikovan varianta. V takovm ppadsta zavst jeden font a nen poteba zavdt celou rodinu. Pi specifikaci standardnvarianty \newvariant nebude dlat nic a \loadtextfam zavede jedin font. Pi spe-cifikaci nadstandardn varianty \loadtextfam nebude dlat nic a \newvariant zavedefont jen tehdy, pokud se jedn o font specifikovan varianty.

    Na zvr tto sekce si podrobnji vysvtlme innost pkazu \setfonts. Tento p-\setfontskaz vypot a definuje podle parametru velikost hodnotu makra \fosize. Dle

    14

  • pi neprzdnm pamaretru JmnoRodiny a pi neuveden varianty tento pkaz pro-vede \def\currentfamily{JmnoRodiny}, zatmco pi przdnm parametru hod-\currentfamilynotu z \currentfamily pouze pouije. Je-li v parametrech uvedena varianta rodiny,pozmn \setfonts na pechodnou dobu makra \loadtextfam a \newvariant tak,aby msto cel rodiny font byl zaveden jen jeden font. Dle spust \setfontshooka pak pkazy z odpovdajcho \ofsdeclarefamily. Potom vrt hodnoty maker\loadtextfam a \newvariant do pvodnho stavu, pokud byly tyto hodnoty mnny.Nakonec spust makro \runmodifylist, kter nastav za jistch okolnost vjimky\runmodifylistze zvolenho kdovn (podrobnji viz sekci 3.5). Konen pkaz \setfonts spust\ignorespaces, aby ppadn zapomenut mezera za zvorkou ]nebyla v horizonl-nm mdu vytitna.

    3.4. Kdovn font a deklarace znak

    PLAIN: Pro pepnn do roziujc metriky slou makro \setextrafont. Toto makro\setextrafontse podv, zda k aktulnmu fontu existuje v pamti poznmka o roziujc metrice(viz pkaz \loadtextfam a \newvariant v pedchoz sekci). Pokud takov poznmkaexistuje, pkaz \setextrafont provede zhruba toto:

    \font\extrafont=roziujc metrika ve velikosti zkladn metriky \extrafont\extrafontLATEX: Pro pepnn do roziujcho kdovn, kter je deklarovno pkazem

    \OFSextraencoding, slou (stejn jako v plainu) makro \setextrafont. Toto makrose podv, zda bylo roziujc kdovn deklarovno, a pokud ano, provede zhruba toto:

    \fontencoding{roziujc kdovn}\selectfontPLAIN+LATEX: Chceme-li vytisknout z roziujc metriky (roziujcho kdovn) n-

    jak znak s kdem slo, je mon pout makro \extchar slo.\extcharPLAIN (a do konce sekce): Pro definice maker zvislch na aktulnm kdovn je mon

    v OFS pout dva deklaran pkazy: \characterdef a \accentdef. Prvn z nich m\characterdeftyto parametry:

    \characterdef \sekvence kdovn mezera slo% pklad:\characterdef \promile 8z 141% nebo\characterdef \sekvence kdovn mezera {pkazy}% pklad:\characterdef \promile 8t {\%\char24 }\characterdef \promile * {\vrule height1ex width1ex\relax}

    % in another encodings

    V prvnm ppad se bude \sekvence pi aktulnm kdovn font shodnms kdovnm expandovat na token kategorie 12 s kdem rovnm slu. V druhmppad \sekvence expanduje pi shodnosti kdovn na pkazy. Ve probhnena rovni expand procesoru. Pokud pouijeme oba ve zmnn pklady pro definici\promile, pak plat:

    \def\fotenc{8z} \promile % expanduje na znak s kdem 141\def\fotenc{8t} \promile % expanduje na pkazy \%\char24

    Mimoto je mon deklarovat pstup k rozenmu kdovn, pokud je toto kdovnspecifikovno jako parametr extra-enc v pkazu \loadtextfam. Pklad:

    15

  • \characterdef \euro 8z 134\characterdef \euro 6s 37

    \def\fotenc{8z} \euro % expanduje na znak s kdem 134\def\fotenc{8t} \euro % expanduje na: {\setextrafont znak s kdem 37}

    V tomto pklad se pi \def\fotenc{8t} me stt, e aktuln font nem po-znmku o roziujc metrice, nebo m poznmku o roziujc metrice jin ne 6s. Pak\euro vype varovn na terminl o nedostupnosti znaku \euro.

    Vysvtlme nyn podrobnji, jak makra deklarovan pomoc \characterdef fun-guj. Pkaz \characterdef definuje \sekvenci jako \printcharacter{sekvence},\printcharactertake napklad \promile expanduje nejprve na \printcharacter{promile}. a \eurona \printcharacter{euro}. Pokud se \characterdef pouije opakovan na stejnou\sekvenci, pak se vdy znovu definuje stejn, take nedochz ke ztrt pedchoz in-formace. Krom toho ale \characterdef definuje dal makro \sekvence:-kdovntak, e toto makro expanduje na znak se specifikovanm kdem nebo na pkazy.Dal inteligence je schovna v pkazu \printcharacter. Ten ov, zda je definovnomakro \sekvence:-\fotenc. Pokud ano, expanduje na obsah tohoto makra. Jinakov, zda existuje poznmka o roziujc metrice vztaen k aktulnmu fontu. Pokudano, zjist kdovn tto roziujc metriky extra-enc a podv se, zda je definovnomakro \sekvence:-extra-enc. Pokud ano, expanduje na{\setextrafont \sekvence:-extra-enc}Pokud se stle nepodailo realizovat poadovan znak, pokus se vytisknout defaultnznak nezvisl na kdovn \sekvence:-*. Pokud ani to nen mon, spust se\printcharacterwarn{sekvence}. Implicitn hodnota tohoto makra vype varovn\printcharacterwarno nedostupnm znaku sekvence na terminl a do logu a do vstupu nevytiskne nic.

    Chceme-li se vyhnout vpisu varovn, meme \printcharacterwarn pedefinovat,teba takto:

    \def\printcharacterwarn #1{?(#1)?}

    Od verze OFS Mar. 2004 \characterdef odmt pedefinovat u definovan kon-troln sekvence. Definuje pouze sekvence, kter maj zatm vznam \undefined nebo\relax. V jinm ppad (a pokud nen sekvence u pomoc \characterdef defino-vna) vype varovn o ignorovan definici do log souboru. Dvod tohoto opaten jeten, e kdovac soubory deklaruj obrovsk mnostv novch kontrolnch sekvenc po-moc \characterdef, a pitom programtor maker nemus vechny znt. Me se tedystt, e pouije pro sv vlastn makro stejn jmno. V takovm ppad \characterdefrespektuje makro definovan programtorem a pslun znak ponech nepstupn. Po-kud potebujeme pomoc \characterdef skuten nkter kontroln sekvence pedefi-novat (u maker zvislch na kdovn z plainu to je nutn), pak musme ped pouitm\characterdef napsat \let\sekvence=\relax.

    Ze stejnch dvod bylo do OFS pidno makro \safelet, kter se chov jako\safelet\let, ale odmt pedefinovat u definovan kontroln sekvence. Msto toho pouze vypevarovn, definovan v makru \safeletwarn.\safeletwarn

    Krom deklarace znak pomoc \characterdef je k dispozici monost deklaraceakcentovch pkaz prostednictvm \accentdef, kter m tyto parametry:\accentdef

    \accentdef \sekvence znak nepovinn mezera kdovn mezera slo% Pklad:

    16

  • \accentdef \v E 8z 204 % Ecaron% nebo\accentdef \sekvence znak nep. mezera kdovn mezera {pkazy}% Pklad:\accentdef \v * 8z {\accent20 } % default caron in 8z\accentdef \v * * {\blackbox } % default caron

    Pokud je aktuln kdovn font toton s kdovnm, pak \sekvence nsledo-van znakem znak expanduje na token kategorie 12 s kdem slo, respektive expan-duje na pkazy. To ve se dje jen na rovni expand procesoru. Pokud je pi deklaracipomoc \accentdef jako znak uvedena hvzdika, pak se deklarovan pkazy nebokd slo pouije vdy, kdy znak nsledujc \sekvenci nen nikde prostednictvm\accentdef deklarovn. Jedn se tedy o defaultn realizaci akcentu, pokud ve fontuneexistuje pmo akcentovan znak.

    Krom toho maj akcenty deklarovan pomoc \accentdef stejnou inteligenci tka-jc se monosti vyuit roziujc metriky, jako znaky deklarovan v \characterdef.

    Vysvtlme si nyn podrobnji, jak akcenty deklarovan pomoc \accentdef fun-guj. Pkaz \accentdef definuje \sekvenci jako makro s jednm neseparovanmparametrem #1, kter v prvn ad expanduje na \printaccent{sekvence}{#1},\printaccenttake napklad \v E expanduje na \printaccent{v}{E}. Dle \accentdef definujemakro \sekvence:znak:-kdovn jako znak s danm kdem slo nebo jakopkazy. Dal prci udl pkaz \printaccent. Tento pkaz zjist, zda je definovnomakro \sekvence:znak:-\fotenc. Pokud ano, expanduje na toto makro. Pokudne, tak si ov, zda je k aktulnmu fontu poznamenna roziujc metrika a zjist jejkdovn extra-enc. Jestlie je definovno makro \sekvence:znak:-extra-enc,pak se expanduje na {\setextrafont \sekvence:znak:-extra-enc}. Pokud za-tm ve selhalo, zkus \printaccent postupn zjistit, zda jsou definovna makra\sekvence:*:-\fotenc a \sekvence:*:-extra-enc. Pokud je definovno prvnz nich, expanduje a pipoj na konec expanze znak. Pokud je definovno jen druhz nich, expanduje na

    {\setextrafont \sekvence:*:-extra-enc normalfont znak}kde normalfont oznauje pepna do aktulnho fontu. Jestlie dosud ve selhalo,pokus se jet o realizaci akcentu nezvislho na kdovn, tj. pokus se tisknout\sekvence:znak:-* nebo konen \sekvence:*:-* znak. Teprve kdy i totoselhalo, spust se \printaccentwarn{sekvence}{znak}. Implicitn hodnota tohoto\printaccentwarnmakra vype se na terminl a do logu varovn o nedostupnosti akcentovanho znakua do vstupu nevytiskne nic.

    Je teba si uvdomit, e pechod ke znaku v roziujc metrice uvnit slova znamenztrtu vyrovnvacho kernu kolem tohoto znaku a nemonost pout na takov slovovzory dlen slov. Proto doporuujeme pout zkladn metriku kdovanou tak, abypechod na roziujc metriku byl jen vjimen. Pro esk a slovensk jazyk jsouv tomto smyslu vhodn kdovn 8z i 8t, protoe ob zahrnuj kompletn eskou aslovenskou abecedu.

    Chceme-li odstranit u deklarovan znak (viz t tzv. vjimky v nsledujc\characterdelsekci), meme pout pkazy \characterdel a \accentdel. Tyto pkazy maj\accentdelstejn parametry jako \characterdef resp. \accentdef a odstran definici pkazu\sekvence:-kdovn resp. \sekvence:znak:-kdovn.

    17

  • 3.5. PLAIN: Soubory maker zvislch na kdovn a vjimky z kdovn

    Pkazy \characterdef a \accentdef popsan v pedchoz sekci pedefinovvajmakra zvisl na kdovn (\v, \ae, atd.). V tto sekci popeme koncepci, kam tatomakra zapisovat, aby OFS pi \loadingenc=1 udrovalo konzistentn definice tchtomaker v zvislosti na zvolenm kdovn a na mnoin vjimek pouit rodiny font.

    Deklarace maker pomoc \characterdef a \accentdef se zapisuj do soubor s n-zvem ofs-kdovn.tex (tzv. kdovacch soubor), protoe pkaz \loadtextfam (vo-lan z makra \setfonts) tyto deklarace pi nastavenm \loadingenc=1 odtud te.\loadingenc

    Kad kdovn m svou zkladn sadu znak a akcentovanch psmen. Tato sada jev kdovacm souboru zanesena pomoc pkaz \characterdef a \accentdef. Vzhle-dem k tto zkladn sad mohou jednotliv rodiny font obsahovat njak znaky navcnebo naopak njak znaky mohou chybt. Tyto vjimky se deklaruj pomoc pkazu\modifydef takto:\modifydef

    \modifydef kdovn:identifiktor; {vjimky}Pitom vjimky obsahuj pkazy \characterdef, \accentdef, \characterdel a\accentdel. Pkazy \*del musej obsahovat v argumentu hodnotu znaku podlezkladn sady danho kdovn. Pokud m bt njak znak vzhledem k zkladn sadpedefinovn, musej pkazy \*del a \*def k tomuto znaku nsledovat tsn za sebou.

    V parametru pkazu \ofsdeclarefamily meme pomoc odkazu na vjimkypkazem \modifyenc vyznait, e dan rodina obsahuje vzhledem k zkladn sad k-\modifyencdovn odpovdajc vjimky. Pkaz m tvar:\modifyenc kdovn:identifiktor;%Takovch pkaz me bt pro kadou rodinu font uvedeno vce (a samozejm tytopkazy mohou obsahovat rzn kdovn). Odkazuje-li tento pkaz na vjimky,kter jet nebyly deklarovny, neprovede se nic.

    Pklad deklarace vjimek kdovn 8z:csfonts najdete v souboru ofs-8z.tex aodkazy na n pak najdete u rodin CM* v souboru ofsdef.tex.

    Pkazy \modifyenc jsou sputny pi kadm \setfonts. Ve skutenosti tyto p-kazy pouze ukdaj do tzv. seznamu odkaz (do makra \newmodifylist) sv parametry.\newmodifylistPi startu \setfonts se zakld przdn seznam odkaz. \modifyenc ukld do tohotoseznamu svj parametr jen tehdy, pokud kdovn je rovno \fotenc nebo \extraenc.Vlastn prci (nastaven vjimek) provede a pkaz \runmodifylist, kter je sputnna konci \setfonts a jeho innost si nyn podrobn popeme.

    Makro \runmodifylist porovn seznam odkaz na vjimky pedchoz rodiny\runmodifylist(\modifylist) se seznamem odkaz nov nastaven rodiny (\newmodifylist). Pokud\modifylistjsou oba seznamy stejn nebo \modifylist m vznam \relax, pak \runmodifylistukon innost. Jinak se pust do nastaven vjimek. Nejprve prohod vznamy\characterdef\characterdel a \accentdef\accentdel a spust \modifylistJinmi slovy vrt stav maker vzanch na kdovn do vchozho stavu. Pi ttoinnosti je ignorovno mazn znaku, pokud tsn ped tm byl znak deklarovn (vizpravidlo o pedefinovn znaku na zatku tto sekce). Pak pkaz \runmodifylistvrt \characterdef a \accentdef do pvodnho stavu a spust \newmodifylist.Veker pedefinovn, kter se pi tto innosti provdj, jsou jen lokln. Mechanismusdvou seznam odkaz zaruuje, e napklad pi

    \setfonts [Rodina1/] ... \setfonts [Rodina2/] ...

    18

  • budou sprvn nastaveny vjimky aktulnho kdovn i pro Rodinu2, akoli Rodina1m jinou mnoinu vjimek ne Rodina2.

    Kontroln sekvence \modifylist m po inicializaci OFS vznam przdnho makra.Programtor maker me pout \let\modifylist=\relax a tm potla veker na-stavovn vjimek.

    Poznamenejme jet, e deklaran pkazy \modifydef nejene ukldaj vjimkydo pamti, ale projdou tak jejich obsah a definuj vechny zde deklarovan sekvencejako odpovdajc \printcharacter resp. \printaccent. Tm mme zarueno, e kadkontroln sekvence ze vech vjimek je definovna (nedojde ke zprv undefined con-trol sequence) a navc OFS m dokonal pehled o tom, zda je v aktuln rodin tatokontroln sekvence pouiteln nebo nikoli. Tvrce maker si pak me podle potebypedefinovat makra \print*warn.

    Pkaz \modifydef prochz vjimky tak, e na pechodnou dobu pozmn pkazy\accentdef, \accentdel, atd. a vjimky spust. Pokud nechceme, aby se makra vevjimkch spoutla u v dob innosti \modifydef, uvedeme ped tato makra sek-venci \skipfirststep. Ta se chov jako \relax, ale pi spoutn vjimek pkazem\skipfirststep\modifydef zpsob, e ve za touto sekvenc a do konce vjimek bude peskoeno.

    Identifiktory kdovn:lccodes a kdovn:ienc jsou rezervovny pro pouitmimo OFS v dalch makrech. OFS napklad vbec nee nastaven \lccode, \uccodeznak podle pouitho kdovn. Makro, kter se o toto star, me vhodn definovatpkazy \lccodes a \lccodesloop a spust \csname kdovn:lccodes\endcsname.\lccodesOFS uveden pkazy vbec nedefinuje. Deklarace kdovn:lccodes jsou uvedeny\lccodesloopv souborech ofs-8t.tex a ofs-8z.tex akoli nejsou v OFS vyuity, protoe to souviss kdovnm textovch font. Pklad pouit kdovn:lccodes je v makru lang.texa makro inec.tex pouv kdovn:ienc. V dokumentaci k tmto makrm je eenovce.

    Deklarace nejastji pouvanch vjimek se zapisuj pmo do kdovacch soubor.Deklarace mn obvyklch vjimek (vztahujcch se jen na urit rodiny font) memepst za \endinput deklaranch soubor. Mezi pkazy makra \ofsdeclarefamilypak pouijeme pkaz\modifyread

    \modifyread jmno souboru;%Tento pkaz pi kladnm \loadingenc nate dan soubor od vskytu sekvence\modifytext. Tuto sekvenci je vhodn umstit za \endinput, aby \modifyread peetl\modifytexttu st souboru, kter zatm nebyla tena. Piazen je v dob ten globln a ignorujse konce dk a przdn dky. Opakovan se soubor nenat.

    Dky tomuto pkazu meme soustedit deklarace rodin font a deklarace vjimekz kdovn do spolenho souboru. Vjimky TEX pete a v dob, kdy to potebuje.et se tm pam TEXu. Pklad pouit je v souboru slido.tex.

    OFS nabz tak testovac makro, zda kontroln sekvence odpovd znaku, kter jeve fontu pstupn i nikoli:\knownchar

    \knownchar znak nebo akcent+znak? \iftrue znak je pstupn\else znak je nepstupn nebo nedefinovan \fi

    % pklad:\def\tryeuro{\knownchar \euro? \iftrue \euro \else Euro\fi}

    19

  • 3.6. Pomocn makra pro akcenty a znaky

    Pro pohodln deklarovn defaultnch akcent jsou v OFS pipravena dv makra:\accentabove\accentabove a \accentbelow, kter se pouvaj takto:\accentbelow

    \accentabove {znak akcentu}{vertikln mezera}{zkladn znak}\accentbelow {znak akcentu}{vertikln mezera}{zkladn znak}

    Pkaz \accentabove resp. \accentbelow pisad znak akcentu nad resp. podzkladn znak, piem mezi tmito znaky bude vertikln mezera. Oba znaky bu-dou na spolen vertikln ose a pi sklonnm psmu na spolen sklonn ose. kavslednho sloenho znaku je odvozena od ky zkladnho znaku. Makra jsou imple-mentovna jako \vbox resp. \vtop spolen s \halign a s vpotem usazen na ppadnsklonn ose.

    Znaky pro akcent nahoe jsou ve fontech vesms kresleny ve vce odpovdajczkladnmu znaku o vce 1 ex. Proto usazen takovho akcentu vyaduje kompenzaci:

    \accentabove {znak akcentu}{-1ex}{zkladn znak}V tomto ppad se akcent umst naprosto stejn, jako pi pouit primitivu \accent.

    Na rozdl od tohoto primitivu ale makra \accentabove a \accentbelow umonuj vz-jemn skldn, m meme doshnout nkolikansobnho akcentu. Vyzkouejte:

    \it \accentabove {.}{.1ex}{\accentabove {,}{.1ex}{\v A}}

    PLAIN: Bohuel, makra deklarovan pomoc \accentdef nejsou uzpsobena na vcene dvoj akcent. Navc dvoj akcent je mon jen v tom ppad, e se vnitn akcent sezkladnm znakem realizuje jako jedin znak. Pokud potebujeme vcensobn akcent,meme vdy pout pmo v textu makro \accentabove nebo \accentbelow.

    PLAIN: Od verze OFS Feb. 2004 je k dispozici makro \ofshexbox, kter pracuje\ofshexboxpodobn jako plainov \mathhexbox, ale navc dovede nastavit font podle aktuln va-rianty. Nejprve pomoc pkazu \ofshexboxdef nastavme rodinu ty metrik:\ofshexboxdef

    \ofshexboxdef rodina{metrika-rm}{metrika-bf }{metrika-it}{metrika-bi}\ofshexboxdef 2 {cmsy}{cmbsy10}{cmsy}{cmbsy10} % napklad takto

    Pak pkaz \ofshexbox rodinahexa-kd vytiskne znak s hexa-kdem z jednoho zety deklarovanch font a v aktuln velikosti \fosize Volba fontu zvis na aktulnvariant. Pokud je varianta jin ne \bf, \it, \bi, pouije se metrika-rm. OFS im-plicitn deklaruje jen rodinu = 2, protoe plain pouv jen \mathhexbox2... Clemtohoto makra bylo definovat pro CMfonty/CSfonty znaky \S, \dag, \ddag, \P zpso-bem, kter je nezvisl na aktulnm nastaven matematickch font, ale je zvisl naaktuln velikosti a variant. Viz soubor ofs-8z.tex.

    Pomoc \ofshexbox meme snadno definovat napklad symbol \euro pro vechnakdovn font, ve kterch je tento symbol neptupn:

    \ofshexboxdef {TS1}{tcrm1000}{tcbx1000}{tcti1000}{tcbi1000}\characterdef \euro * {\ofshexbox{TS1}BF}

    3.7. PLAIN: Fonty v matematice podruh

    Nastal as podrobnji vysvtlit innost pkazu \setmath. Ten pevezme parame-\setmathtry a vypot z nich zkladn, indexovou a index-indexovou velikost font. Vsledky\textfosizeulo do maker \textfosize, \scriptfosize a \scriptscriptfosize. V nich jsou\scriptfosize

    20

  • daje o velikosti uloeny ve tvaru atdimen nebo scaledslo podobn jako v makru\scriptscriptfosize\fosize. Pak pkaz \setmath spust makro \mathfonts. V nm se pedpokld zave-\mathfontsden a nastaven matematickch font. Pokud je \setmath sputno poprv nebo pokuddolo ke zmn hodnoty \fomenc, tak \setmath jet spust makro \mathchars. Tam\mathcharsse obvykle nastavuj kdy matematickch znak pomoc \mathcode, \mathchardef apbuznch primitiv. Makra \mathfonts a \mathcharsmaj sice v OFS svou implicitnhodnotu, ale zkuen uivatel je me podle sv poteby mnit.

    Pro pohodln zavdn a nastavovn matematickch font je pipraveno makro\loadmathfam, kter se pouv v definici makra \mathfonts. Makro \loadmathfam\loadmathfamm tyto monosti parametr:

    %% % font je deklarovn:\loadmathfam rodina[/metrika] % metrikou\loadmathfam rodina[-varianta/] % variantou aktuln rodiny\loadmathfam rodina[pepna /] % pepnaem textovho fontu\loadmathfam rodina[Xpepna /] % roziujc metrikou pepnaePklady:

    \loadmathfam 0[tenrm/]% metrika podle pepnae \tenrm\loadmathfam 5[-bi/]% metrika z akuln textov rodiny, varianta bi\newmathfam \symbfam\loadmathfam \symbfam [/psyr]% metrika psyr\newmathfam \extitfam\loadmathfam \extitfam [Xtenit/]% roziujc metrika k pepnai tenit

    V pklad jsou do rodiny 0 zavedeny fonty stejn, jako v aktulnm textovm fontu\tenrm. V rodin 5 jsou zavedeny fonty jako pi \setfonts [-bi/]. Dle je deklarovnanov rodina \symbfam, do kter jsou zavedeny fonty z metriky psyr.

    Existuje nepatrn rozdl nap. mezi pouitm pkazu \loadmathfam 5[tenbi/] a\loadmathfam 5[-bi/]. V prvnm ppad OFS zjist metriku k pepnai \tenbi atuto metriku pouije ve vech velikostech stejnou pouze modifikovanou klovm slovematdimen. Ve druhm ppad se me pro rzn velikosti pout rzn metrika, pokudje tato vlastnost pro danou variantu fontu deklarovna (viz sekce 3.8).

    Pro deklaraci nov rodiny se v pkladu pouila alternativa k \newfam s nzvem\newmathfam, protoe makro \newfam z plainu je definovno jako \outer a nelze je\newmathfamtedy pout uvnit definice. Navc makro \newmathfam pracuje lokln a tud etvce msta pro uivatelsk rodiny ne plainovsk \newfam. V deklaracch zkladnchmatematickch kdovn se nov matematick rodiny definuj pmo pomoc \chardefa je tam pomoc pkazu \lastfam=slo nastavena maximln pouit hodonta. To\lastfamzaru, e uivatel me pozdji pout \newmathfam a zane alokovat dal rodiny s slytsn vtmi ne \lastfam.

    Popeme nyn princip innosti makra \loadmathfam. Toto makro zjist metriku,kter odpovd zadanmu parametru. Pak provede tikrt primitiv \font zhruba takto:

    \font \nzev-Mt = metrika \textfosize\font \nzev-Ms = metrika \scriptfosize\font \nzev-Mss = metrika \scriptscriptfosize\textfont rodina = \nzev-Mt\scriptfont rodina = \nzev-Ms\scriptscriptfont rodina = \nzev-Mss

    21

  • Pitom nzev je text parametru \loadmathfam, kter deklaruje metriku (pepna,varianta nebo metrika).

    Fonty matematick rodiny 3 jsou v plainTEXu obvykle zavedeny bez zmenovnpro indexy a indexy index. Pokud poadujeme pi zavdn matematick rodiny ne-zmenovat fonty pro indexy, uvedeme tsn ped \loadmathfam prefix \noindexsize.\noindexsizeMakro \loadmathfam pak zavede font jen ve velikosti \textfosize a pouije ho i proindexovou a indexindexovou velikost. Pklad:

    \noindexsize\loadmathfam 3[tenex/]% Standard extra symbols from CM

    OFS definuje v souboru ofsdef.tex pro zavdn matematickch font tyirzn makra. Ta se pouij podle toho, zda je \fomenc nastaveno na CM nebo PS a\mathversion na normal nebo bold. Dle OFS definuje dv makra s deklaracemimatematickch kd, kter se pouij podle aktuln nastaven hodnoty \fomenc.

    \loadCMnormalmath zavede CM fonty ve verzi normal.\loadCMnormalmath \loadCMboldmath zavede CM fonty ve verzi bold.\loadCMboldmath \loadPSnormalmath zavede PostScriptov fonty ve verzi normal.\loadPSnormalmath \loadPSboldmath zavede PostScriptov fonty ve verzi bold.\loadPSboldmath \setCMmathchars ponech matematick kdy z plainu.\setCMmathchars \setPSmathchars nastav matematick kdy tak, aby se nahradily nkter znaky\setPSmathcharsz fontu Symbol.

    Dle je v OFS implicitn nastaveno:

    \ifx \fomenc\undefined \def\fomenc{PS}\fi\def\mathversion{normal}\def\defaultmathfonts{\csname load\fomenc\mathversion math\endcsname}\defaultmathfonts\def\defaultmathchars{\csname set\fomenc mathchars\endcsname}\defaultmathchars\def\mathfonts{\defaultmathfonts}\def\mathchars{\defaultmathchars}

    Je mon pidvat k implicitn nastavenm matematickm fontm dal ma-tematick rodiny (v terminologii NFSS matematick abecedy) pozmnnm maker\mathfonts a ppadn \mathchars. Ne je pklad pidn fraktury z Eulerovchfont od AMS:

    \input amsfn % tam je deklarovna metrika eufm a eufb\addcmd\mathfonts{\def\tmpa{bold}%

    \ifx\mathversion\tmpa \def\tmpa{b}\else\def\tmpa{b}\fi\newmathfam\frakfam \loadmathfam\frakfam [/euf\tmpa]}

    \def\frak#1{{\fam\frakfam#1}}

    Dal pklady deklarac matematickch rodin jsou uvedeny v souborech amsfn.tex,txfn.tex a mtfn.tex. Soubory definuj vchoz skupiny matematickch font pro k-dovn AMS, TX, PX, MT. Na konci tchto soubor jsou komente vetn ukzek, jakdoplujc rodiny font je mono pomoc \addcmd zavst.

    Protoe chci umonit naten vech fontovch deklarac OFS v iniTEXu (viz projektOkTEX), ale pitom etit pokud mono pamt TEXu, rozhodl jsem se nenatat rozshldefinice obsahujc deklarace kdovn matematickch font pomoc \mathchardef atd.okamit, ale a v dob, kdy to uivatel v dokumentu skuten potebuje. Proto jsemod verze OFS Apr. 2004 pedefinoval napklad makro \setPSmathchars takto:

    22

  • \def\setPSmathchars{\mathencread ofs-ps;}

    Pkaz \mathencread soubor; nate kdovac pkazy ze souboru soubor.tex . Nap.\mathencreadv souboru ofs-ps.tex jsou kdovac pkazy pro kdovn PS, v ofs-ams.tex jsoukdovac pkazy pro kdovn AMS atd.

    V souborech ofs-ps.tex, ofs-tx.tex atd. jsou kdovac pkazy baleny do sku-pin a definovny pkazem \mathencdef. Tento pkaz pracuje implicitn jako defi-\mathencdefnuj, spus a zapome. Tento model et pam, ale pi astch zmnch matema-tickho kdovn budou kdovac soubory teny opakovan znovu. To vtinou ne-vad, protoe vtinou bv pro cel dokument nastaveno jedin matematick kdovn.Pokud ale tento model nkomu nevyhovuje, me si jako cvien zkusit pedefinovat\mathencread a \mathencdef tak, aby se soubory etly jen jednou a pi opakovanmsputn \mathchars se kdovac pkazy etly ze zapamatovanch maker.

    Pkaz \mathencread soubor; zalo skupinu, ve kter pro jistotu nastav katego-rie vech znak podle plainTEXu (s vjimkou \catcode@=11) a pete soubor.tex.Pi ten je \globaldefs=1 a ignoruj se konce dk a przdn dky. Rovn je ig-norovno makro \protectreading, take soubor me bt ten opakovan. Pkazy\mathencdef spust a zapomenou nadefinovan makra a po uzaven skupiny, taketato makra spout pkazy \mathchardef atd. u jen s loklnmi piazenmi.

    Vysvtlme, jak je zajitno obnovovn vchozch hodnot pi pepnn mezimatematickmi kdovnmi. Pkaz \setmath spout tsn ped \mathchars makro\mathcharsback, aby uvedl matematick kdovn do vchozho stavu podle plain-\mathcharsbackTEXu. Toto makro m implicitn vznam \relax, protoe implicitn je matematickkdovn podle plainTEXu nastaveno. Mn-li ale pkaz \setfomencmathcharshodnoty nastaven v plainTEXu, ml by tak definovat makro \mathcharsback, dokterho ulo postup, jak vrtit nastaven do pvodnho stavu. V definici makra\mathcharsback meme mimo jin pout pkaz \mathencread ofs-cm;, protoev souboru ofs-cm.tex jsou uloeny deklarace metamatickho kdovn podle plainTEXu

    Pokud si budeme deklarovat vlastn matematick kdovn (rzn od pipravenchPS, CM, AMS atd.), pak je poteba myslet na nsledujc zsadu: ve vech verzch mate-matickch font (normal/bold/atd.) by mla bt sla matematickch rodin alokovnastejn a ukonena stejnm \lastfam, protoe makro \mathchars se po pepnut do jinverze nespout znovu. Zvlt nesmme mnit sla tch rodin, na kter se odvolvmev makru \setkdovnmathchars.

    Nyn popeme dal makra ulehujc deklaraci matematickho kdovn. Makro\hex konvertuje slo na jednocifern hexadecimln slo. Vyuit tohoto makra na-\hexjdeme v souborech ofs-ps.tex, ofs-tx.tex a dalch.

    Pro definovn sekvenc, kter budou pracovat v textovm i matematickm mdusouasn, slou makro \safemathchardef. Toto makro m stejn zpsob pouit, jako\safemathchardefprimitivn \mathchardef:

    \safemathchardef \sekvence sloPokud nen \sekvence v okamiku pouit \safemathchardef definovna, p-

    kaz pracuje zcela stejn jako \mathchardef. Pokud ale je \sekvence u defino-vna, ulo pkaz \safemathchardef jej vznam do \Tsekvence, dle provede\mathchardef \Msekvence = slo a konen \sekvenci pedefinuje nsledujcmzpsobem:

    \def \sekvence {\ifmmode \expandafter \Msekvence\else \expandafter \Tsekvence \fi}

    23

  • Od tto chvle \sekvence pracuje v textovm i matematickm mdu. Pro ppad opa-kovanho pouit \safemathchardef na stejnou \sekvenci makro kontroluje, zda unen definovna \Msekvence. Pokud ano, pak \safemathchardef neprovede nic.

    Je poteba, aby byly soubory s pkazy \characterdef nateny ped prvnm po-uitm \setmath. Pak lze v rmci \setmath (pesnji v makru \mathchars) pout\safemathchardef na pedefinovn nkterch sekvenc, kter byly dve deklarovnypomoc \characterdef. Tyto sekvence pak budou pracovat v textovm i matematickmmdu.

    Naprosto stejn, jako \safemathchardef pracuje pkaz \safemathaccentdef.\safemathaccentdefPouze msto primitivu \mathchardef pouije makro \mathaccentdef, kter pete za\mathaccentdef\sekvenc slo separovan mezerou a provede:\def \sekvence {\mathaccentslo }

    Pokud nechceme deklarovat novou matematickou rodinu pro nkolik mlo znak(poet matematickch rodin je toti v TEXu omezen na 16), meme pout makro\pickmathfont, kter m tyto parametry:\pickmathfont

    \pickmathfont {metrika}{text}% pklad pouit:\mathbin {\pickmathfont {psybo}{\char"C4}}

    Makro \pickmathfont pouije primitiv \font na specifikovanou metriku a v tomtofontu zape text, kter v matematickm seznamu tvo atom typu Ord. Dleit je,e je pouit font v odpovdajc velikosti (zkladn, indexov, indexindexov), take tovypad, jako by byl pouita nov matematick rodina font. Pitom to nen pravda, pro-toe \pickmathfont je implementovn pomoc primitivu \mathchoice. Pouit pkazu\pickmathfont najdeme v souboru ofsdef.tex v definici makra \setPSmathchars.

    3.8. Registrovn metrik pro rzn velikosti

    LATEX: Registrovn rznch metrik pro rzn velikosti se dl ve fd souborech a jeto dokonale vyeeno v NFSS.

    PLAIN (a do konce sekce): Existuj speciln rodiny font (napklad Computer Modern),kde se pro rzn velikosti font pouvaj rzn metriky. I tato vlastnost je imple-mentovna v OFS. Dosud jsme zatajili, e v parametrech pkaz \loadtextfam,\loadmathfam a \pickmathfont je mon msto nzv metrik uvst smylen jmno,kter je registrovno pkazem \registertfm. V takovm ppad se skuten metrika\registertfmpro zaveden primitivem \font vypot z poadovan velikosti fontu a z daj, kterbyly zadny pomoc skupiny pkaz \registertfm. Upesnme nyn parametry pkazu\registertfm:

    \registertfm jmno mezera od-do mezera skuten metrika mezeraParametry od a do musej obsahovat jednotku a vymezuj uzaven interval, pro

    kter plat: jestlie je poadovan velikost fontu ve tvaru atdimen a souasn dimenle v intervalu od-do, pak se msto jmna pouije skuten metrika atdimen.Pkaz \registertfm je poteba pro vymezen rznch interval pout opakovan nastejn jmno. Akoli jsou intervaly od-do uzaven, pozdji deklarovan intervalm pednost ped dve deklarovanm, take nakonec je kladn reln osa rozdlena napolouzaven intervaly. Pklad pouit je v souboru ofsdef.tex.

    Jsou-li oba parametry od a do przdn, je pkazem \registertfm deklarovnametrika, kter se pouije pi specifikaci velikosti pomoc scaledslo nebo v ppad,

    24

  • kdy dimen nele v dnm specifikovanm intervalu. Hvzdika msto parametru dozna nekonenou velikost.

    Pkaz \registertfm jmno mezera - mezera - mezera vymae z pamtipedchoz registrace pro dan jmno a navc vyzna jmno jako nepstupn font.OFS se pak chov stejn, jakoby odpovdajc varianta nebyla vbec deklarovna. Dvnm to monost vyznait neexistujc varianty deklarovan rodiny jen pro nkter k-dovn (viz napklad cmssbxti v souboru ofsdef.tex).

    Parametry jmno a skuten metrika se expanduj v okamiku innosti pkazu\registertfm. Nen proto obvykl v nich pouvat makro \fotenc. Nicmn toto makromeme v uvedench parametrech pout, pokud zahrneme potebnou skupinu pkaz\registertfm do vlastnho makra a toto makro spustme opakovan pro rzn hodnoty\fotenc.

    Makro \registerECfont je zkratkou za opakovan pouit pkazu \registertfm\registerECfontna vechny velikosti EC font od 0500 a po 3583. Stejn makro \registerECTTfont\registerECTTfontje zkratkou pro velikosti EC font od 0800 do 3583 pouvan pro strojopis. Definice apouit tchto maker najdeme v souboru ofsdef.tex. Makra meme pout i na jinfonty, kter maj stejn odstupovan velikosti jako EC fonty (nap. LH fonty s azbukounebo fonty odvozen z CM-super).

    3.9. Omezen pouit rodiny font pro urit kdovn

    LATEX: Pouit rodiny v danm kdovn je zvisl na existenci fd souboru, tj. ve jev reii NFSS.

    PLAIN (a do konce sekce): OFS od verze Feb. 2004 zavd pkaz \registerenc, kterm\registerencmeme omezit pouit deklarovan rodiny font jen pro vymezen kdovn. Pokudpak uivatel nape \setfonts a vyaduje rodinu v neregistrovanm kdovn, OFSvype varovn na obrazovku a vbec do poadovan rodiny nepepne. Tm se vyhnepokusu zavst pravdpodobn neexistujc metriky font. Pkaz \registerenc m dvaparametry:

    \registerenc JmnoRodiny: kdovnmezera\registerenc Times: 8t % napklad\registerenc Times: 8z % nyn m Times registrovna dv kdovn

    Pokud nem rodina registrovno dn kdovn, pak OFS pedpokld, e je pou-iteln v jakmkoli kdovn (napklad fonty znaek).

    V deklaranch souborech tedy meme pomoc \registerenc omezit pouit rodinyjen na vymezen kdovn. Uivatel ale me pkazem \registerenc pidat k rodindal povolen kdovn. Nebo tak me naznait, e rodina m povoleno libovolnkdovn pkazem \registerenc JmnoRodiny: * .

    Abychom v deklaranch souborech nemuseli opisovat JmnoRodiny, me bttento parametr przdn. V takovm ppad \registerenc pouije rodinu z poslednhopkazu \ofsdeclarefamily.

    Ve svch makrech se mete zeptat, zda je rodina pro aktuln hodnotu \fotencregistrovan:\registeredfam

    \registeredfam JmnoRodiny? \iftrueRodina m \fotenc registrovno nebo m povoleno jakkoli kdovnnebo vbec nen deklarovna.

    \else Rodina m registovna kdovn, ale \fotenc mezi nimi nen.\fi

    25

  • Pokud spustme \setfonts[JmnoRodiny/] pro nedeklarovanou rodinu nebopro rodinu s nedovolenm kdovnm, pak OFS nape varovn na terminl a vrt\setfontsOK jako \undefined. Po spnm nastaven fontu m sekvence \setfontsOK\setfontsOKhodnotu \relax.

    4. Licence

    Balek OFS me pouvat kdokoli bez licennch poplatk. Kdokoli jej rovnme distribuovat, pokud nezmn obsah souboru readme.ofs ofs.tex, ofsdef.tex,ofs.sty, ofs-8z.tex, ofs-8t.tex, a35.tex, a35.sty, ofsdoc.tex, ofsdoce-e.tex,ofsmtdef.tex a vechny tyto soubory budou v distribuci ptomny. Prvo na zmnutchto soubor a tm zmnu verz zstv vhradn autorovi. Pokud potebujete zmnitobsah nkterho z uvedench soubor, nazvte jej jinak. Balek je poskytovn s pnm,aby byl uiten, ale BEZ JAKKOLI ZRUKY.

    V Praze dne 16. 8. 2001 autor: Petr Olk

    5. Historie

    16. 8. 2001 uvedena prvn verze24. 10. 2002 provedeny drobn pravy respekutjc zmny ve verzi OFS Oct. 2002.V tto verzi byl pidn pkaz \addcmd a byly umonny nepovinn parametry(Varianta) v pkazu \loadtextfam.10. 2. 2004 Vechny pravy se tkaj jen OFS pro plain:+ Vylepena manipulace s deklaracemi maker zvislch na kdovn, deklarace vjimek

    a registrovn kdovn pro zvolenou rodinu. Viz sekce 3.5 a sekce 3.9.+ Pidna monost pedefinovn rodiny (nap. dodatenm natenm souboru dekla-

    ranho souboru, kter modifikuje vlastnosti implicitnch rodin).+ Deklarace CMRoman, CMSans a CMTypewriter pro kdovn 8t pouitm EC font.+ Pidna podpora roziujcho kdovn 8c.+ Upravena deklarace matematickho kdovn PS, aby \int, \sum a \prod pracovaly

    v display mdu s vtmi znaky.+ Definovno makro \ofshexbox a \ofshexboxdef.+ Nov zveejnno interaktivn makro ofstest.tex.+ Zaveden adres examples/, kde prbn budu dvat pklady pouit OFS.12. 3. 2004 OFS pro plain:+ Kdovac soubory jsou teny pmo z \loadtextfam. Tm je umonno dvat do

    kdovacch soubor mapovn metrik pkazem \registerenc (vyuiju pro LANG).+ \characterdef respektuje definovan makro a nepedefinuje jej.+ Reimplementovno \showfonts. Nyn et vrazn pam i as na rozshlch sezna-

    mech font. Pozor: pokud jste mli makra vyuvajc intern makro \listfamilies,pak toto pestane fungovat. Nap. nefunguje od tto verze zastaral ofscatal.tex.Msto nj je mono pout ofstest.tex

    + Modifikovno ofstest.tex, aby pracovalo s novou implementac seznamu rodin\ofslistfamilies.

    2. 4. 2004 pidno \plaincatcodes ped tenm soubor ofs-kdovn.tex.+ Zavedeno \safelet a \protectreading.+ Mezera za znakem v \accentdef je nepovinn.

    26

  • + Pidna monost \loadmathfam rodina[-varianta/] a rozena a pepracovnadeklarace pro matematick kdovn CM, PS, AMS, TX, PX, MT.

    6. Rejstk vech maker definovanch v OFS

    Rejstk obsahuje odkazy pouze na msta v textu, kde je k makru vysvtlujckoment. V tom mst je t uveden pro snadnj orientaci nzev makra v levmokraji. V rejstku nejsou odkazy na vechny zmnky o makru v textu. Rejstk jesprvn vygenerovn hned po prvnm prchodu zpracovn tohoto dokumentu pka-zem csplain ofsdoc.

    Nkter makra definovan v ofs.tex jsou intern nebo pomocn a nen o nich zmnkav textu. Pak odkaz na stranu zmrn chyb a je pipojena jen krtk poznmka o ta-kovm makru. Rovn jsou pipojeny poznmky o tom, zda je makro pouito ve verzipro PLAIN nebo LATEX.

    \accentabove (PLAIN) 20\accentbelow (PLAIN) 20\accentdef (PLAIN) 16\accentdel (PLAIN) 17\accentdefori, \accentdelori (PLAIN) intern, udruj pvodn vznam maker\accentnodef (PLAIN) intern, \def\makro#1{\printaccent{makro}{#1}}\addcmd (PLAIN+LATEX) 6\bf (PLAIN+LATEX) 2\bi (PLAIN+LATEX) 2\bifam (PLAIN) intern, matematick rodina pro BoldItalic\calculatemetricfile (PLAIN) intern, definuje \metricfile podle velikosti\catcodesloop (PLAIN) intern, nastav kategorie znak v cyklu podle danho sla\characterdef (PLAIN) 15\characterdel (PLAIN) 17\characterdefori, \characterdelori (PLAIN) intern, udruj pvodn vznam maker\characternodef (PLAIN) intern, \def\makro{\printcharacter{makro}}\currentfamily (PLAIN) 15\currentfomenc (PLAIN) intern, jmno naposledy pouitho matemat. kdovn\currentvariant (PLAIN) 13\declaredfamily (PLAIN) intern, obsahuje jmno naposledy deklarovan rodiny\defaultextraenc (PLAIN) 12\defaultmathchars (PLAIN) 22\defaultmathfonts (PLAIN) 22\defpttotmpa (PLAIN) intern, udl \def\tmpa{pt}, pokud chyb jednotka\detailfontmessages (PLAIN) 10\displayfontmessages (PLAIN) 10\displaymessage (PLAIN) 10\docharacterdef (PLAIN) intern, pro poteby makra \characterdef\doextchar (PLAIN) intern, pro poteby makra \extchar\dosafemathdef (PLAIN) intern, pro poteby maker \safemath*def\donumbercharacterdef (PLAIN) intern, pro poteby makra \characterdef\endOFSmacro (PLAIN) intern, monost ten [file, ...] za \input ofs\expandaction (PLAIN) 11\extchar (PLAIN+LATEX) 15\extraenc (PLAIN) 12\extrafont (PLAIN) 15\fontdef (PLAIN+LATEX) 5\fontloadmessage (PLAIN) intern, vpis informace o proveden \font\fontmessage (PLAIN) intern, std hodnoty nic, \wlog a \displaymessage

    27

  • \fontprefix (PLAIN) intern, std hodnotu nic a \global\fontusage (PLAIN+LATEX) 3\fosize (PLAIN) 12\fomenc (PLAIN) 9\fotenc (PLAIN) 8, 12\fragilecommand (PLAIN) 11\fragilecommand! (PLAIN) 11\hex (PLAIN) 23\ifknownfam (PLAIN+LATEX) 7\isunitpresent (PLAIN) intern, e ppad absence jednotky\it (PLAIN+LATEX) 2\knownchar pl 19\knownfam pl\lastfam pl 21\lccodes, \lccodesloop (PLAIN) 19\loadCMboldmath (PLAIN) 22\loadCMnormalmath (PLAIN) 22\loadingenc (PLAIN) 8, 14, 18\loadmathfam (PLAIN) 21\loadPSboldmath (PLAIN) 22\loadPSnormalmath (PLAIN) 22\loadtextfam (PLAIN) 12\logfontmessages (PLAIN) 10\mathaccentdef (PLAIN) 24\mathchars (PLAIN) 21\mathcharsback (PLAIN) 23\mathencdef (PLAIN) 23\mathencread (PLAIN) 23\mathfonts (PLAIN) 21\mathversion (PLAIN) 9\metricfile (PLAIN) intern, jmno metriky pi pouit \font\metrictmpa (PLAIN) intern, expanduje na metriku fontu \tmpa\modifydef (PLAIN) 18\modifyenc (PLAIN) 12, 18\modifylist (PLAIN) 18\modifyread (PLAIN) 19\newfamily (PLAIN) pechodn, zadan jmno rodiny\newmathfam (PLAIN) 21\newmodifylist (PLAIN) 18\newvariant (PLAIN) 12, 14\nofontmessages (PLAIN) 10\noindexsize (PLAIN) 22\noPT (PLAIN) intern, odstran pt z \thedimen [TBN, str. 80]\ofsaddenctolist (PLAIN) intern, pid parametr do seznamu \newmodifylist\OFSdeclarefamily (LATEX) 11\ofsdeclarefamily (PLAIN) 12\OFSextraencoding (LATEX) 11\OFSfamily (LATEX) 7\OFSfamilydefault (LATEX) 7\ofshexbox (PLAIN) 20\ofshexboxdef (PLAIN) 20\ofsinput (PLAIN) intern, te soubor pi \globaldefs=1, ignoruje konce dk\ofslistfamilies (PLAIN) intern, seznam rodin pro \showfonts\ofslistfamily (PLAIN) intern, uvozuje rodinu v \listfamilies\ofslistvariants (PLAIN) intern, text pro vpis variant do logu\ofslisttext (PLAIN) intern, uvozuje text v \listfamilies\ofsloadfont (PLAIN) intern, zavede jeden font

    28

  • \ofsloadfontori (PLAIN) intern, zavede jeden font\ofsmeaning (PLAIN) intern, vykost z vstupu \meaning slovo letter/character\ofsmessageheader (PLAIN) intern, hlavika hlen do logu a na terminl\OFSnormalvariants (LATEX) 12\OFSprocessoptions (LATEX) 11\OFSputfamlist (LATEX) 11\ofsputfamlist (PLAIN) 12\ofsremovefromlist (PLAIN) intern, odstran rodinu ze seznamu\OFSversion (PLAIN+LATEX) intern, datum verze makra\orifosize (PLAIN) pechodn, podr hodnotu \fosize\origTeX (PLAIN) intern, originln definice loga TEX\oriloadfam (PLAIN) pechodn, podr hodnotu loadtextfam\pickmathfont (PLAIN) 24\plaincatcodes (PLAIN) intern, nastav kategorie znak podle plainTEXu\printaccent (PLAIN) 17\printaccentwarn (PLAIN) 17\printcharacter (PLAIN) 16\printcharacterwarn (PLAIN) 16\processOFSoption (PLAIN) intern, pro poteby makra endOFSmacro\protectreading (PLAIN) 12\readfamvariant (PLAIN) intern, testuje, zda je zadna varianta rodiny\readfirsttoken (PLAIN) intern, vrt prvn token textu ukonenho :\end\readfosize (PLAIN) intern, vlo hodnotu \fosize do \dimen0\readmag (PLAIN) intern, pot \fosize, je-li dno magdesetinn slo\readOFSoptions (PLAIN) intern, pro poteby makra \endOFSmacro\readothertokens (PLAIN) intern, vrt druh a dal tokeny a po :\end\readsixdigits (PLAIN) intern, vyuito pro zaokrouhlovn\registeredfam (PLAIN) 25\registerECfont (PLAIN) 25\registerECTTfont (PLAIN) 25\registerenc (PLAIN) 12, 25\registertfm (PLAIN) 12, 24\restorefontid (PLAIN) intern, obnoven jmna fontu, viz \savefontid\rm (PLAIN+LATEX) 2\runmodifylist (PLAIN) 15, 18\safelet (PLAIN) 16\safeletwarn (PLAIN) 16\safemathaccentdef (PLAIN) 24\safemathchardef (PLAIN) 23\savefontid (PLAIN) intern, pro udren jmna fontu ve vpisech Overfull\savetokenname (PLAIN) intern, nco jako \string bez backslashe\scriptfosize (PLAIN) 20\scriptscriptfosize (PLAIN) 21\separeofsvariant (PLAIN) intern, separace nepovinnho parametru \loadtextfam\setextrafont (PLAIN+LATEX) 15\setCMmathchars (PLAIN) 22\setfonts (PLAIN+LATEX) 4, 13, 14\setfontshook (PLAIN) 12\setfontsOK (PLAIN) 26\setfontfamily (PLAIN) intern, \setfonts, pokud nen dna varianta\setfosize (PLAIN) intern, vypot hodnotu \fosize\setmath (PLAIN) 8, 20\setPSmathchars (PLAIN) 22\setsimplemath (PLAIN) 8\setsinglefont (PLAIN) intern, \setfonts, pokud je dna varianta\setsinglefontname (PLAIN) intern, vykost z nzvu metriky ppadn atdimen\sgfamily (PLAIN) intern, pro uloen informace o rodin

    29

  • \sgvariant (PLAIN) intern, pro uloen informace o variant\showfonts (PLAIN+LATEX) 3\singlefont (PLAIN)

    \singlefontname (PLAIN) intern, odstran atdimen z nzvu metriky\skipfirststep (PLAIN) 19\slantcorrection (PLAIN) intern, pro poteby \accentabove a \accentbelow\storeofsvariant (PLAIN) intern, separace nepovinnho parametru u \loadtextfam\switchdeftodel (PLAIN) intern, prohod \accent/characterdef s \*del\tenbi (PLAIN) 13\tenbf (PLAIN) 13\tenit (PLAIN) 13\tenrm (PLAIN) 13\testOFSoptions (PLAIN) intern, pro poteby makra \endOFSmacro\testtfmsize (PLAIN) intern, pro poteby \registertfm\testtfmsizeat (PLAIN) intern, pechodn hodnota \testtfmsize\testtfmsizescaled (PLAIN) intern, pechodn hodnota \testtfmsize\textfosize (PLAIN) 20\tryloadenc (PLAIN) intern, nate kdovac soubory\tmpa (PLAIN+LATEX) pechodn\tmpb (PLAIN+LATEX) pechodn\tmpc (PLAIN) pechodn\warnmissingfont (PLAIN) intern, vpis o chybjc variant\warnM, \warnF, \warnT, \warnI (PLAIN) intern, vpis o chybjc standardn variant\warnunregistered (PLAIN) intern, vpis o nedovolenm kdovn zvolen rodiny

    7. Reference

    [TBN] Petr Olk TEXbook naruby, Konvoj 1. vyd. 1997 (ISBN 80-7302-007-6), 2. vyd.2001 (ISBN 80-85615-64-9), Brno, 466 stran. PDF verze knihy je voln k dispozicina http://math.feld.cvut.cz/olsak/tbn.html.

    30