You are on page 1of 30

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

May 2004

OFS: Olkv fontov systm


OFS je makro, kter umon pehledn v TEXu vybrat rodiny font, jejich nzvy
jsou v souladu s nzvy z psmovho katalogu. Toto makro je z uivatelskho pohledu
stejn v plainu i LaTEXu. Vklad pouit OFS bude tedy spolen pro ob skupiny
uivatel. Pokud nkter text plat jen pro csplain (a podobn formty), bude uveden
slovem 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 u
nepouvan LaTEX2.09 bez NFSS. Pod skupinu LATEX: bychom mohli zaadit vechny
formty, kter pracuj s NFSS 2, pedevm tedy LaTEX2e.
Po zaveden pslunch maker v zhlav dokumentu (viz ne) se na terminlu mimo
jin objev:
PLAIN:
LATEX:

OFS (Olsaks Font System) based on plain initialized. <verze>


OFS (Olsaks Font System) based on NFSS initialized. <verze>

Vhody OFS:
Sjednocuje rozhran pro uivatele LaTEXu i plainu.
Pomoc pkazu \fontusage dostaneme na terminl a do logu strunou informaci
o pouit maker z OFS.
Umouje pracovat se skutenmi nzvy psmovch rodin tak, jak jsou uvedeny
v psmovm katalogu a tm nenut uivatele si krom tchto nzv pamatovat jet
intern zkratky pouit v NFSS nebo v nzvech metrik font.
Umon pracovat s fontem rozloenm do dvou metrik (zkladn a roziujc) jakoby
se jednalo o jedin font.
Umon na zatku dokumentu vybrat oblben kdovn zkladn metriky, jsou-li
metriky pipraveny v rznch kdovnch (typicky kdovn IL2 a T1).
Definuje rozhran pro vytven pomocnch soubor, kter obsahuj konverzn informace mezi dlouhmi nzvy font z katalogu a PLAIN: nzvy metrik nebo LATEX:
zkratkami pouvanmi v NFSS.
PLAIN: Umouje podobnou nezvislost vbru jednotlivch paramet font, jako
NFSS v LaTEXu.
PLAIN: Definuje deklaran pkazy pro podchycen kdovn font.
PLAIN: Je mon pro rzn velikosti registrovat rzn metriky, co vyuijeme zejmna
u rodiny Computer Modern.
PLAIN: Obsahuje nstroje na pouit PostScriptovch font i v matematick sazb.
Interaktivn makro ofstest.tex umon tisknout vzorky odstavc ve zvolench
psmovch rodinch, tisknout tabulky font, katalogy font, vzorky matematick
sazby a seznamy znak ve fontech vetn jejich TEXovch sekvenc. Sta napsat na
pkazov dek tex ofstest [allfonts] nebo csplain ofstest [allfonts] a
dit se pokyny na terminlu.

1.
\rm \bf \it \bi

lenn psmovch rodin


Makro OFS vychz z toho, e vtina dnes dodvanch psmovch rodin obsahuje
tyi ezy: zkladn (\rm), tun (\bf), kurzvu (\it), a tunou kurzvu (\bi). Tmto
ezm 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 zal
slvy LaTeXu2.09) a tvrt pepn do varianty BoldItalic.
Nkter rodiny mohou deklarovat pepnae dalch nadstandardnch variant a
u nkterch rodin naopak me chybt i nkter ze standardnch variant.
Varianty v nkterch rodinch se mrn li od zde uvedench nzv pro standardn
varianty. Msto tunho psma me bt teba ptomno jen polotun a msto kurzvy
teba 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 do
sklonnho 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 podobn
vznam, jako fd (Font Definition) soubory z LaTEXu. Doporuen ppona souboru je
pro 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 nm
deklarovny. Pklady:
PLAIN:

sjannon.tex,
a35.tex,

LATEX:
sjannon.sty
a35.sty

... souhrnn rodina Jannon ze Steovic


... zkladn skupina 35 font od Adobe

Vidme, e deklaran soubory (na rozdl od fd soubor z LaTEXu) obsahuj obvykle


definice vce souvisejcch rodin. Mezi tmito soubory uivatel vybr ty, kter bude
potebovat a uvede jejich jmna pi zaveden makra OFS v zhlav svho dokumentu.
Aby ml uivatel zjednoduenou prci, zakldme obvykle t souhrn soubory, kter
obsahuj \input nebo \RequirePackage na jednotliv deklaran soubory:
skatalog.tex, skatalog.sty ... vechny fonty ze Steovic
allfonts.tex, allfonts.sty ... vechny fonty na TeXov instalaci

2.
2.1.

Uivatelsk pkazy
Zaveden OFS
Pro pklad pedpokldejme, e budeme chtt pracovat s fonty ze souhrnn rodiny
Jannon a DynaGrotesk. Protoe se jedn o rodiny ze Steovick psmolijny od pana
torma, najdeme odpovdajc deklaran soubory v adresi storm. Na Internetu je
zskme spolen s makrem OFS napklad na www.cstug.cz/stormtype. Souhrnn rodiny Jannon a DynaGrotesk jsou deklarovny v tchto souborech: PLAIN: sjannon.tex,
sdynamo.tex; LATEX: sjannon.sty, sdynamo.sty. Psmeno s na zatku nzv znamen, e fonty pochzej ze Steovick psmolijny. Jmna tchto soubor bez ppony
je nutn uvst v hranat zvorce pi zaveden makra OFS takto:
PLAIN:

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


2

LATEX:

\showfonts

\usepackage [sjannon, sdynamo] {ofs}

Dle meme pracovat s rodinami, kter jsou obsaeny v souhrnnch rodinch


Jannon a DynaGrotesk. Napeme-li do dokumentu pkaz \showfonts, zobraz se na
terminl (a zape do logu) seznam nzv jednotlivch rodin, kter dle meme pouvat. Po zaveden sjannon a sdynamo, jak bylo uvedeno ve, zobraz pkaz \showfonts
tento seznam:
OFS (l.1): The list of known font families:
defaults:
[CMRoman/]
\rm, \bf, \it, \bi,
[CMSans/]
\rm, \bf, \it, [CMTypewriter/]
\rm, - , \it, - ,
[Times/]
\rm, \bf, \it, \bi
[Helvetica/]
\rm, \bf, \it, \bi,
[Courier/]
\rm, \bf, \it, \bi
sjannon.tex:
[JannonAntikva/]
\rm, \bf, \it, \bi,
[JannonText/]
\rm, \bf, \it, \bi,
[JannonCaps/]
\rm, \bf, \it, \bi
sdynamo.tex:
[DynaGroteskDXE/]
\rm, \bf, \it, \bi
[DynaGroteskRXE/]
\rm, \bf, \it, \bi
[DynaGroteskLXE/]
\rm, \bf, \it, \bi
... ha dalch 15 rodin DynaGrotesk i ...

\fontusage

\sl
\sl
\nrm, \nbf, \nit, \nbi

\mr, \mi
\mr, \mi

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 rodin
takov varianta nen pstupn, je zde na mst odpovdajcho pepnae pomlka. Pt
a ppadn dal pepnae se vztahuj k ppadnm nadstandardnm variantm. Zde
napklad rodina Helvetica m navc pepnae pro varianty Narrow a rodiny Jannon
maj pepnae pro varianty Medium.
Napeme-li do dokumentu pkaz \fontusage, zobraz se na terminl a do logu
strun informace o pouit pkaz z balku OFS.
Krom ve uvedenho zpsobu zaveden:
\input ofs [hsoubor i, hsoubor i, ...]
LATEX: \usepackage [hsoubor i, hsoubor i, ...] {ofs}

PLAIN:

existuje jet monost pmo zavst poadovan soubory. Pak nen nutn v dokumentu
explicitn zavdt soubor ofs.tex resp. ofs.sty:
PLAIN:
LATEX:

\input hsoubor i \input hsoubor i ...


\usepackage {hsoubor i} \usepackage {hsoubor i} ...

Pklad:
PLAIN:
LATEX:

\input sjannon \input sdynamo


\usepackage {sjannon} \usepackage {sdynamo}

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

2.2.
\setfonts

Pkaz \setfonts
V dalch pkladech pedpokldme, e jsme zavedli pouze potebn rodiny, napklad 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 mon
pout pepnae \rm, \bf, \it, a \bi a speciln pro tuto rodinu jet \mr a \mi.
Pkaz \setfonts [hJmnoRodinyi/hvelikosti] pepn do nov rodiny a ct naposledy zapnutou variantu. Pokud ped tmto pkazem byla zapnut teba varianta
BoldItalic, pak po tomto pkazu zstv zapnut tato varianta i v nov rodin. Pokud
v nov rodin naposledy zapnut varianta neexistuje, pepn se do \rm. Tato varianta
mus bt deklarovna v kad rodin.
Pkaz \setfonts vymezuje vechny zmny pouze lokln. Po ukonen skupiny se
sazba vrac k rodin a variant, kter byla aktuln pi zahjen skupiny.
Parametry pkazu \setfonts mohou bt przdn: \setfonts [hJmnoRodinyi/]
pepne do nov rodiny a ct naposledy nastavenou velikost a \setfonts [/hvelikosti]
nastav novou velikost a ponech aktuln vybranou rodinu. Po inicializaci OFS je (pro
ppad pouit przdnho parametru) defaultn nastavena rodina CMRoman a velikost
10 pt. Pkaz \setfonts [/] je syntakticky korektn, ale neudl krom zpisu do logu
vbec nic.
Parametr hJmnoRodinyi, je-li uveden, mus pesn odpovdat jmnu rodiny podle
seznamu znmch rodin (viz nahoe pkaz \showfonts). Je teba dodrovat mal a
velk psmena a cel jmno pst bez mezer. Pokud se tento parametr neshoduje s dnou
znmou rodinou, vype TEX varovn a pipoj seznam vech znmch rodin. Take
napklad \setfonts [?/] lze pout se stejnm efektem, jako pkaz \showfonts.
LATEX: hJmnoRodinyi me bt nejen jmno podle seznamu znmch rodin (dlouh
nzev), ale je dovoleno pout i zkratku z NFSS. Take napklad \setfonts [Times/]
a \setfonts [ptm/] je v LaTEXu tot.
PLAIN+LATEX: Parametr hvelikosti m tyto monosti:

hsloi . . . . nap. 12, 17.4,


hsloihjednotkai . . . . nap. 12pt, 17.4pt, 10dd,
athsloihjednotkai . . . . nap. at12pt, at17.4pt, at10dd,
scaledhcel sloi . . . . nap. scaled1200, scaled\magstep3,
maghdesetinn sloi . . . . 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 athsloipt. Font se zavede pesn
v poadovan velikosti. Samozejm pi globlnm \magnification celho dokumentu
se jedn o relativn a nikoli absolutn rozmry, pokud nepouijeme jednotku uvozenou
slovem true (nap. 17truept). Jestlie peme klov slovo at, nesmme vynechat jednotku. Nesprvn: at12, sprvn: at12pt nebo jenom 12.
tvrt monost (scaled) je shodn s pouitm slova scaled pi zavdn fontu pomoc primitivu \font. Nap. scaled1200 je font, jeho zkladn velikost je pronsobena
koeficientem 1,2. Je-li zkladn velikost fontu 10 pt (co je obvykl), pak je scaled1200
shodn s at12pt.
Posledn monost (mag) pronsob aktuln velikost font danm koeficientem. Na
rozdl od scaled se tedy vztahuje k aktuln velikosti a nikoli k zkladn velikosti fontu.

Je-li nejprve pouito teba \setfonts[/12] a v zpt \setfonts[/mag2.], rodina


font 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 je
zase 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 velikost
ostatnch font. Pi specifikaci varianty je nutno v parametru \setfonts za nzev rodiny
napsat znak mnus nsledovan zkratkou pro variantu. Pklady:
\setfonts [JannonText-it/12] ..... nastav kurzvu dan rodiny ve
velikosti 12pt
\setfonts [JannonText-rm/] ....... nastav zkladn ez dan rodiny
v aktuln velikosti.
\setfonts [CMTypeWriter-sl/] ..... nastav zkladn variantu \sl
v aktuln velikosti.
I pi specifikaci varianty je mon v parametru vynechat nzev rodiny, pak se pouije
aktuln rodina. Napklad
\setfonts [JannonText/12]
\setfonts [-bf/17]
... varinata Bold JannonText, velikost 17pt.
Pepnae \rm, \bf, \it a \bi zstanou
nezmnny, v tomto pklad pepnaj
JannonText 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 nyn
pepnaj ve velikosti 17pt. Aktuln
velikost font je nyn 17pt.
LATEX: Co zde bylo eeno o ponechn vznamu pepna variant pi specifikovn
varianty v LaTEXu nen pravda, protoe by to naruilo logiku NFSS. V LaTEXu tedy
je \setfonts [-bf/17] zcela shodn s pkazy \setfonts [/17]\bf.

2.3.
\fontdef

Pkazy \fontdef a \addcmd


Pkaz \fontdef umouje deklarovat nov fontov pepnae.
\fontdef \hpepna i [hJmnoRodinyi/hvelikosti]
Tato deklarace se zhruba shoduje s
\gdef \hpepna i {\setfonts [hJmnoRodinyi/hvelikosti]}

PLAIN: Pokud je specifikovna rodina vetn varianty a parametr hvelikosti nen


przdn ani nen zadn pomoc klovho slova mag, pak \hpepna i nen implementovn jako makro obsahujc \setfonts, ale jedn se o nativn pepna fontu implementovan pomoc \global\font\hpepna i (tzv. fixed font). Tak me uivatel deklarovat
vlastn nativn pepna fontu bez znalosti nzvu metriky.
LATEX: Deklarovan pepna je ve vech ppadech implementovn jako makro obsahujc \setfonts. Pstup k nativnm pepnam je ped uivatelem v NFSS skryt.
PLAIN+LATEX: Msto jmna rodiny me bt uveden vykink. Pak se dopln jmno
rodiny aktuln v mst pkazu \fontdef. Na druh stran, pokud je jmno rodiny
przdn, pak se jmno rodiny dopln podle aktuln rodiny v mst pouit deklarovanho
pepnae. Analogick vlastnost plat pro parametr hvelikosti. Pklady:

\setfonts [JannonAntikva/]
\fontdef \small [/7]
\fontdef \sffam [DynaGroteskR/]
\fontdef \velky [Times/17]
\fontdef \ttfam [Courier/]
\fontdef \mylogo [Times-rm/mag.8]

\fontdef \timbf

[Times-bf/12]

\fontdef \jansmall [!/7]


\fontdef \janbi [!-bi/17]
\fontdef \tt [Courier-rm/!]

\addcmd

%
%
%
%
%
%
%
%
%
%
%
%
%
%

\small = \setfonts [/7pt]


\sffam = \setfonts [DynagroteskR/]
\velky = \setfonts [Times/17pt]
\ttfam = \setfonts [Courier/]
\mylogo = \setfonts [Times-rm/mag.8]
velikost fontu bude vdy rovna
0.8 nsobku aktuln velikosti.
\timbf = fixed-font pepna, jako:
\global\font\timbf=ptmb8z at12pt
\jansmall=\setfonts[JannonAntikva/7]
\janbi = fixed-font pepna, jako:
\global\font\janbi=sjnbi8z at17pt
\tt = fixed-font pepna, jako
\global\font\tt=pcrr8u at10pt

Pkaz \fontdef deklaruje pepna globln, ovem tento pepna je sm o sob


lokln. Jinmi slovy \global\fontdef\jmeno je tot jako \fontdef\jmeno, ale pepna \jmeno nastav font (nebo celou rodinu) jen lokln.
Od verze OFS Oct. 2002 je podporovn pkaz \addcmd, kter umon spolen
s pkazem \fontdef soustedit problematiku font do jedinho msta v souboru maker.
Pkaz m formt:
\addcmd \hpepna i {hpkazyi}
a chov se, jako \def\hpepna i {hpvodn vznam pepnaei hpkazyi}. Pomoc
\addcmd tedy meme rozit obsah makra \hpepna i o dal pkazy. Sekvence
\hpepna i mus bt (ped pouitm \addcmd) definovna jako makro bez parametr
nebo mus bt ve vznamu neexpandovan kontroln sekvence deklarovan napklad
pomoc \font, \chardef apod. Po pouit \addcmd je sekvence \hpepna i definovna
vdy jako makro bez parametru. Opakovan pouit \addcmd na stejn \hpepna i je
mon.
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:

\ifknownfam

2.5.
\OFSfamily

Ve svch makrech meme testovat, zda je rodina font deklarovan,


tj. zda je natena jej deklarace z deklaranho souboru. Pouijeme k tomu konstrukci
\knownfam hJmnoRodinyi? \iftrue, kter expanduje na \iftrue, pokud je rodina
deklarovan a na \iffalse, pokud deklarovan nen. Parametr hJmnoRodinyi musme
uvst bez specifikace varianty.
PLAIN+LATEX: Z dvod zptn kompatibility se star verz OFS dl stejnou prci
jako \knownchar makro \ifknownfam [hJmnoRodinyi]. V OFS pro plain se ale od
verze Feb. 2004 doporuuje pouvat \knownfam, protoe to udruje sprvn sprovan
primitivy \if*, \else, \fi. LaTEXov uivatel si me \knownfam snadno definovat.
LATEX:

Propojen OSF s NFSS

Tato sekce je urena pouze pro LaTEXisty. Pkaz


\OFSfamily [hJmnoRodinyi]
konvertuje dlouh nzev rodiny podle katalogu na intern nzev rodiny zanesen do
NFSS. Napklad
\OFSfamily [JannonText]
expanduje na sjng. Makro pracuje jen na rovni expandprocesoru, proto nedostaneme
pi peklepu v nzvu rodiny chybov hlen. Pi neexistujc rodin makro expanduje
na text unknown. Pouijeme-li napklad \OFSfamily ve svch stylovch souborech a
zpozorujeme, e se NFSS sna substituovat rodinu unknown, meme si bt jisti, e
mme 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]}

\OFSfamilydefault

Vznam maker \rmdefault, \sfdefault, \ttdefault je popsn v dokumentaci


NFSS.
Dle OFS definuje pkaz
\OFSfamilydefault [hJmnoRodinyi]
kter nastav zkladn rodinu celho dokumentu. Tato rodina se v pslunch velikostech a variantch objev nejen v textu, ale i v zhlav kapitol, sekc a podobn (jsou-li
makra v pouitm class souboru udlna rozumn). Pkaz intern provede
\edef\familydefault {\OFSfamily [hJmnoRodinyi]}
s tm, e navc oet ppad neexistujc rodiny chybovm hlenm s vpisem vech
aktuln dostupnch rodin.

2.6.

Kdovn font
LATEX:

Pepnn mezi kdovnm font probh zcela v reii NFSS. OFS v tto vci
nepidv nic novho.

\fotenc

PLAIN (a do konce sekce): Implicitn se pedpokld kdovn CSfont. Pokud ale potebujeme pout fonty napklad v kdovn T1, pak pouijeme \def\fotenc{8t} a OFS
bude 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.

\loadingenc

Krom toho OFS obsahuje nstroje, aby makra zvisl na kdovn font (napklad \v, \, \ae) expandovala sprvn na znak ve zvolenm kdovn. Implicitn je
v OFS nastaveno \loadingenc=0, co znamen, e zmnou kdovn font ani pkazem \setfonts se nemn makra typu \v, \ae. Tato makra si ponechaj svj originln
vznam z plainu. To uvtaj ortodoxn plainist, kte nemaj rdi, kdy m pouit
balek 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 potebn
soubory se jmnem ofs-hkdovni.tex. Tyto soubory obsahuj pedefinovn maker
zvislch na nastavenm kdovn font. Pokud tyto soubory nateny nejsou, TEX je
bhem \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 mete
vytvoit dal soubor analogickho nzvu. Pkazy \accentdef a \characterdef
pouvan v tchto souborech jsou podrobn vysvtleny v sekci 3.4.
2.7.

\setmath

Fonty v matematice
LATEX: OFS pro LaTEX vbec nee otzku font pro matematiku. Je poteba vyut
nabdku monost NFSS.
PLAIN (a do konce sekce): Pkaz \setfonts a pepnae deklarovan pomoc \fontdef
pepnaj jen psmo v textovm reimu. Pokud nepouijeme pkaz \setmath, zstv
ve, co je ve vstupnm souboru mezi dolary, vytitno v Computer Modern ve velikostech 10 pt/7 pt/5 pt (velikost: zkladn/indexov/indexindexov). To nemus bt vdy
douc.
Pkaz \setmath m tento tvar:

\setmath [hzkladn velikosti/hindexov velikosti/hindexindexov velikosti]


V parametrech pkazu dvme najevo, v jakch velikostech chceme matematick fonty
nastavit. Je mon pout libovoln zpis velikosti, jako u pkazu \setfonts. Je-li
pouita monost maghsloi, je velikost vypotna jako hsloi krt velikost aktulnho
textovho fontu. Je-li parametr przdn, dopln se takto:
zkladn velikost mag1.0
indexov velikost mag0.7
indexindexov velikost mag0.5
\setsimplemath

Take \setmath [//] udl tot jako \setmath [mag1./mag.7/mag.5]. OFS definuje makro \setsimplemath jako \setmath [//].
Pkaz \setmath nastav matematick fonty podle aktuln situace. Jeho innost
zvis na obsahu maker \fomenc a \mathversion.
8

\fomenc

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


Implicitn hodnota je \def\fomenc{PS} (PostScript-Symbol). Pkaz \setmath pak
pevezme kurzvu aktuln rodiny a pouije ji jako matematickou kurzvu. Dle
pevezme zkladn variantu aktuln rodiny a pouije ji pro slice a dal symboly, 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 ptomny v PostScriptovch fontech (napklad psmena eck abecedy), nahrad z PostScriptovho fontu Symbol. Tento font se toti ke vtin PostScriptovm psmm
hod daleko lpe ne Computer Modern. Ostatn znaky (napklad zvtujc zvorky
a velk opertory) zstvj v Computer Modern.
Je-li \def\fomenc{CM} (Computer Modern), pak \setmath ponech matematickm
vzorekm Computer Modern fonty, jen se ppadn pizpsob poadovan velikosti.
Po zaveden souboru amsfn.tex je mon pout \def\fomenc{AMS}. Matematika se
pak chov stejn jako pi CM, ale navc jsou k dispozici veker symboly z AMSTEXu.
Po zaveden souboru txfn.tex meme pout dv nov kdovn: \def\fomenc{TX}
nebo \def\fomenc{PX}. V obou ppadech se pro matematiku pouij voln dostupn
TXfonty, kter vychzej z ez rodin Times a Helvetica. Pi hodnot TX se v matematice pouij vhradn TXfonty, zatmco pi hodnot PX budou TXfonty kombinovny s kurzvou a zkladnm ezem aktuln textov rodiny font (podobn jako
pi kdovn PS). OFS podporuje vechny kontroln sekvence na matematick symboly podle manulu k TXfontm. Jsou zde veekr symboly z AMSTEXu a mnoho
dalch. Symbol z TXfont je nkolik stovek.
Po zaveden souboru mtfn.tex je mon pout \def\fomenc{MT}. Matematika bude
obsahovat kurzvu a zkladn ez aktuln rodiny font kombinovanou se znaky komern verze matematickch font MathTimes.

\mathversion

Podobn jako v NFSS jsou podporovny dv verze vzorek: normal a bold. Poadovan verze se nastavuje v makru \mathversion pomoc \def\mathversion{normal}
nebo \def\mathversion{bold}. Makro \setmath pak pizpsob zaveden matematickch font poadovan verzi. Implicitn je nastaveno \def\mathversion{normal}.
Nastaven \mathversion je poteba provst ped vyvolnm pkazu \setmath. Pklady:
\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 definovna
se jmnem \ofs@jmnomakra, aby nedolo ke zmaten s jinmi styly. Makra, kter se
pouvaj v deklaranch souborech, maj nzev \OFSjmnomakra. Dle styl definuje
uivatelsk pkazy \setfonts, \fontdef, \showfonts, \fontusage, a pedefinovv
pepnae \rm, \bf, \it, \bi.
PLAIN: Vechna makra definovan v ofs.tex jsou uvedena v rejstku na konci tohoto
dokumentu. Pi nvrhu nzv maker jsem nevyuil konvenci se znakem @, protoe tento
znak v nzvech maker osobn nenvidm.

3.1.

Vpisy do logu
LATEX:

\nofontmessages
\displayfontmessages
\logfontmessages
\detailfontmessages
\displaymessage

3.2.

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
vidt i na terminlu, pime \displayfontmessages. Implicitn je zapnut vpis pouze
do logu pkazem \logfontmessages. Pokud chceme pesn vidt, kter metriky font
se zavdj primitivnm pkazem \font, pouijeme \detailfontmessages.
Varovn o nepstupnch znacch nebo kdovnch se vdy vypisuj na terminl i
do logu. Chceme-li je mt jen v logu, meme napsat \let\displaymessage=\wlog,
protoe tato sekvence je v OFS pouvna na zobrazen zprv na terminl.
Robustn a kehk pkazy
LATEX: LaTEX2e m zaveden postupy na definovn robustnch pkaz. Vznam
tchto pojm je vysvtlen v dokumentaci k LaTEXu. Pkaz \setfonts a pepnae deklarovan pomoc \fontdef jsou samozejm definovny jako robustn, take se mohou
vyskytovat v textech pro obsahy, rejsky apod. bez toho, aby zpsobily obte.
PLAIN (a do konce sekce): Makro plainu problematiku kehkch pkaz nee a uivatel
plainu, pokud naraz na tento problm, pouvaj rzn sv vlastn een, kter nejsou
standardizovna. Jedno takov een je i v OFS.
Nejprve strun nazname, v em spov problm s kehkmi pkazy. Obas potebujeme (pro generovn obsahu, rejstku apod.) poslat njak text do pomocnho souboru (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 maker, co nemus vdy vyhovovat. Pokud je napklad fontov pepna implementovn
jako sloit makro a je pouit v textu zpracovanm primitivem \write, v souboru se
objev cel makro po expanzi. Pi optovnm naten takovho souboru dojde vtinou
k havrii; kme, e byl pouit kehk (fragile) pkaz v textu poslanm do souboru a
v souboru se nm tento pkaz rozsypal.
Pokud se dostane (potenciln) kehk pkaz z maker OFS do souboru, pak se pi
novm naten takovho souboru automaticky pi havrii zobraz na terminlu a v logu
nvod jak postupovat, aby se uivatel tohoto problmu zbavil. Text nvodu po pekladu
do 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 \write
psobit pote, je v OFS definovno zhruba takto:
\def\makro {%
\ifx\expandaction\noexpand
\noexpand\makro
10

\else
\csname fragilecommand!\endcsname
hvlastn kd makrai
\fi
}
\expandaction
\fragilecommand!

\fragilecommand

3.3.

Pokud se nenastav \expandaction na hodnotu \noexpand, pak se provede st


kdu za \else. Protoe pkaz \csname fragilecommand!\endcsname nen definovn,
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.
Jestlie uivatel pouije kd z npovdy v zhlav svho dokumentu, pak v dob
innosti primitivu \shipout (tj. v dob, kdy expanduj argumenty primitiv \write)
je nastaveno \let\expandaction=\noexpand. V makru \makro se provede prvn st
ped \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 pouze
doporume uivateli, aby to udlal sm. Uivatel plainu toti potebuje mt vci pod
vlastn kontrolou a neml by asi dvru k makru, kter bez jeho vdom pedefinuje tak
zsadn vc, jako je primitiv \shipout. Tak je mon, e uivatel plainu pouije na
rzn sti textu ve svch makrech \edef a potebuje vdt, e je v takovm ppad
vhodn nejpve nastavit \let\expandaction=\noexpand.
Podobn jako zde v ukzce definice pkazu \makro jsou v OFS definovny pkazy \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 smyslu
tohoto slova.
Deklaran soubory
LATEX: Deklaran soubory v LaTEXu jsou bn stylov soubory, kter shrnuj nkolik rodin font ve smyslu NFSS. Tyto rodiny jsou deklarovny bnm zpsobem ve fd
souborech. V deklaranch souborech je mono pout nsledujc pkazy:

\OFSprocessoptions

\OFSextraencoding

\OFSputfamlist
\OFSdeclarefamily

\OFSprocessoptions m vtinou hodnotu \undefined. Pokud ale je stylov


soubor natn ze souboru ofs.sty jako parametr, m \OFSprocessoptions hodnotu \relax. Test na tuto sekvenci pouvme v zhlav stylovho souboru, abychom
vynachali LaTEXovsk \RequirePackage{ofs}, pokud to nen poteba (a pouze by
to zlobilo).
\OFSextraencoding {hroziujc kdovni} Toto makro si poznamen do
pamti hroziujc kdovni a provede \input {hroziujc kdovniini.def}.
Pedpokld se, e tam jsou odpovdajc definice pro hroziujc kdovni, viz
napklad soubor se1ini.def, kter obsahuje deklarace pro roziujc kdovn SE1
font ze Steovick psmolijny. Pokud u byl soubor hroziujc kdovniini.def
naten, makro jej nenat znovu. Pozor: hroziujc kdovni je nutno pst
velkmi psmeny, akoli v nzvu souboru mus bt naopak tato psmena mal.
\OFSputfamlist {htexti} vlo htexti do seznamu rodin, kter se vypisuje pi
\showfonts nebo pi neznm rodin.
\OFSdeclarefamily [hJmnoRodinyi] {hNFSS-jmnoi} poznamen si do pamti, e hJmnoRodinyi je ve skutenosti hNFSS-jmnoi. Tato pam se vyuije

11

\OFSnormalvariants

napklad v pkazu \OFSfamily. Navc zanese hJmnoRodinyi do seznamu rodin


vypisovanm pi \showfonts.
\OFSnormalvariants do textu, kter se vypisuje pi \showfonts nebo pi neznm 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 znak
podle pouitch kdovn (viz sekce 3.4).
V deklaranm souboru je nutno vytvoit vazbu mezi nzvy rodin a pouitmi metrikami. K tomu se pouvaj nsledujc pkazy:

\protectreading

\ofsputfamlist
\ofsdeclarefamily

\loadtextfam
\newvariant
\modifyenc
\fosize

\fotenc

\extraenc
\defaultextraenc
\setfontshook
\registertfm
\registerenc

\protectreading hsoubor ihmezerai poznamen si do pamti, e je peten


hsoubor i. Pokud je pkaz se stejnm parametrem ten podruh, provede \endinput,
take nsledujc deklarace jsou chrnny proti vcensobnmu ten.
\ofsputfamlist {htexti} vlo htexti do seznamu rodin, kter se vypisuje pi
\showfonts nebo pi neznm rodin.
\ofsdeclarefamily [hJmnoRodinyi] {hpkazyi} deklarace nov rodiny se
jmnem hJmnoRodinyi. Toto jmno se zanese do seznamu znmch rodin vypisovanch pomoc \showfonts. Pokud se tato rodina pouije pi \setfonts, pak se
provedou hpkazyi. Mezi hpkazyi se pouije prv jeden pkaz \loadtextfam,
kter zavede fonty dan rodiny do pamti TEXu.
\loadtextfam Zavede tyi fonty s danmi metrikami. Tento pkaz vyaduje
podrobnj vysvtlen, kter je vetn parametr pkazu uvedeno ne.
\newvarianthslicei \hpepna i (hVariantai) hmezerai hmetrikai;hextra-enci;
Deklaruje nov pepna varianty. Podrobnj vysvtlen je uvedeno ne.
\modifyenc hkdovni:hidentifiktor i; pidn vjimek vzhledem k zkladnmu
kdovn, viz sekce 3.5.
\fosize makro, kter uchovv informaci o aktuln velikosti font v naposledy vybran rodin. Obsah \fosize me mt dv podoby: athdimeni nebo
scaledhnumber i podle toho, jak tvar parametru hvelikosti byl pouit v pkazu
\setfonts.
\fotenc makro, kter uchovv informaci o aktulnm kdovn. Nejastj monosti jsou \def\fotenc{8z} (kdovn podle CS-font) nebo \def\fotenc{8t} (kdovn 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 informaci tam kopruje z parametru hextra-enci makro \laodatextfam.
\defaultextraenc makro, jeho pedefinovnm meme zmnit roziujc kdovn zkladnch rodin a rodin z a35.tex. Vchoz hodnota makra 8c.
\setfontshook makro, kter se spust vdy pi innosti pkazu \setfonts tsn
ped tm, ne jsou vykonny hpkazyi z \ofsdeclarefamily.
\registertfm hjmnoi hod i-hdoi hskuten metrikai umouje pracovat pi
rznch velikostech font s rznmi metrikami. Podrobnosti viz sekce 3.8.
\registerenc hJmnoRodinyi: hkdovni hmezerai umouje omezit pouit
rodiny font jen pro vymezen kdovn. Podrobnosti viz sekce 3.9.
Pkaz \loadtextfam pouvan v deklaranch souborech mezi hpkazyi makra
\ofsdeclarefamily m parametry:
\loadtextfam (hVarianta-rmi) hmezerai hmetrika-rmi;%
12

(hVarianta-bf i) hmezerai hmetrika-bf i;%


(hVarianta-iti) hmezerai hmetrika-iti;%
(hVarianta-bi i) hmezerai hmetrika-bi i;hextra-enci;%
Procenta na koncch dk v tto ukzce oznauj, e za stednky nem bt mezera. daje (hVarianta-XX i) slou jako komente o variantch zapisovan do logu
a je mono je kompletn vetn zvorek a hmezeryi vynechat (teba jen nkter). Ve
verzch OFS do Sep 2002 nebyl tento parametr vbec podporovn. Pi vynechn tohoto parametru se pedpokldaj nsledujc implicitn hodnoty: rm: (), bf: (Bold),
it: (Italic), bi: (BoldItalic).
daje hmetrika-XX i odpovdaj nzvm metrik, kter se pro uveden varianty font
makrem \loadtextfam zavedou. Makro zhruba provede toto:
\font\tenrm=hmetrika-rmi \fosize
\font\tenbf=hmetrika-bf i \fosize
\font\tenit=hmetrika-iti \fosize
\font\tenbi=hmetrika-bi i \fosize
Pedpokld se, e vechny hmetriky-XX i jsou v deklaranm souboru napsny tak, e
obsahuj makro \fotenc. Tm je zaruena zmna nzvu metriky pi pechodu na jin
kdovn (tj. pi pedefinovn makra \fotenc).
Konen daj hextra-enci udv nzev extra kdovn. Pokud je tento parametr
neprzdn, pak \loadtextfam provede na pechodnou dobu \def\fotenc{hextra-enci}
a znovu expanduje parametry hmetrika-rmi, hmetrika-bf i, hmetrika-iti a hmetrika-bi i.
Vsledky tchto expanz si poznamen do pamti. Jedn se o roziujc metriky k zkladnm metrikm. Je-li parametr hextra-enci przdn, poznmka o roziujcch metrikch se nekon. Kdy pak njak makro pro pstup ke specilnmu znaku tuto metriku
potebuje, objev se na terminlu varovn, e aktuln zvolen metrika nem roziujc
variantu.
Nkter metriky v pkazu \loadtextfam s vjimkou hmetrika-rmi mohou bt vynechny. Je-li napklad przdn parametr hmetrika-XX i, pak se zhruba provede
\def\tenXX{\message{varovn o neexistujc variant na terminlu}}

\setfonts

\tenrm \tenbf \tenit


\tenbi
\currentvariant

take pi pechodu na takovou variantu se objev na terminlu a v logu hlen o neexistujc variant a font se nezmn.
Pkaz \setfonts nemn vznam maker \rm, \bf, \it a \bi, ale mn vznam
pepna font \tenrm, \tenbf, \tenit a \tenbi. Dl to navc zprostedkovan tm,
e spust hpkazyi deklarovan pro poadovanou rodinu v \ofsdeclarefamily a mezi
tmito hpkazyi se vyskytuje pkaz \loadtextfam.
Makra \rm, \bf, \it, resp. \bi pouvaj fontov pepnae \tenrm, \tenbf, \tenit,
resp. \tenbi. Prvn ti jsou znmy z plainu a tvrt je zaveden nov. Navc makra \rm,
\bf, \it a \bi ukldaj do kontroln sekvence \currentvariant informaci o naposledy
aktivovan variant. Tato informace m podobu psmene (M, F, T, resp. I), protoe
jedin konstrukce \let\currentvariant=hpsmenoi 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 hvelikosti. Slovo ten
v nzvech fontovch pepna tedy nemus znamenat, e se jedn o font ve velikosti

13

\loadingenc

\newvariant

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 a
znovu 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 pi
opakovanm pouit primitivu \font na stejnou metriku se u neobtuje metriku vbec
otevrat. Jen inicializuje pslun fontov pepna asi stejn rychle, jako by se to
provedlo pomoc \let.
Pkaz \loadtextfam jet ped zavedenm font nate pi \loadingenc>0 soubor ofs-\fotenc.tex. Pi neprzdnm parametru hextra-enci navc nate soubor
ofs-hextra-enci.tex. Tyto soubory jsou teny jen jednou a v dob ten jsou ignorovny przdn dky, konce dk. ten probh uvnit skupiny, kde jsou pro jistotu
lokln nastaveny kategorie znak podle plainTEXu (a \catcode@=11) a je nastaveno
\globaldefs=1, tj. vechna pedefinovn ze souboru ofs-hkdovni.tex se provedou
globln. To nm nevad, protoe nov naten kdovac soubory nejsou v konfliktu
s pedchozmi (viz vlastnosti pkaz \characterdef a \accentdef v sekci 3.4).
Naten vtho mnostv tchto soubor ne je v dan chvli poteba, rovn neohroz
funkcionalitu maker zvislch na kdovn. Dvod globln definice je v tom, e nen
vhodn, aby pi opakovanm {...\setfonts...} musel bt kdovac soubor natn
neustle znovu a znovu.
Pokud uivateli vad, e je pedefinovn maker globln (chce napklad svj lnek
zaadit do sbornku, kde by pedefinovn mohlo vadit jinm lnkm), pak ponech
\loadingenc=0 a mus nast soubory s deklaracemi maker manuln pomoc \input
na zatku lnku. V takovm ppad se provede deklarace jen lokln.
V parametru hpkazyi makra \ofsdeclarefamily se me deklarovat nadstandardn varianta rodiny pomoc pkazu \newvariant. Tento pkaz provede:
\font\tenhpepna i=hmetrikai \fosize
\def \hpepna i {\let\currentvariant=hslicei \tenhpepna i}

\setfonts

Dle pkaz \newvariant zanese do pamti informaci o ppadn roziujc metrice


podle hext-enci.
Pokud OFS potebuje dodret pi pechodu na novou rodinu naposledy zvolenou
nadstandardn variantu, in tak podle hodnoty \currentvariant. Pokud tedy nov
rodina m deklarovnu nadstandardn variantu pod stejnnou hslici, bude pouita tato
varianta a OFS nebude pepnat do defaultn varianty \rm. Je proto vhodn deklarovat
varianty rznch rodin ale stejnho typu pod stejnou hslici. Z principu vci vidme,
e v OFS existuje omezen v potu nadstandardnch variant jedn rodiny na maximln
10. 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. Udl
to prv tehdy, kdy je v parametru hRodinai specifikovan varianta. V takovm ppad
sta zavst jeden font a nen poteba zavdt celou rodinu. Pi specifikaci standardn
varianty \newvariant nebude dlat nic a \loadtextfam zavede jedin font. Pi specifikaci nadstandardn varianty \loadtextfam nebude dlat nic a \newvariant zavede
font jen tehdy, pokud se jedn o font specifikovan varianty.
Na zvr tto sekce si podrobnji vysvtlme innost pkazu \setfonts. Tento pkaz vypot a definuje podle parametru hvelikosti hodnotu makra \fosize. Dle

14

\currentfamily

\runmodifylist

3.4.
\setextrafont

\extrafont

pi neprzdnm pamaretru hJmnoRodinyi a pi neuveden varianty tento pkaz provede \def\currentfamily{hJmnoRodinyi}, zatmco pi przdnm parametru hodnotu 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 \setfontshook
a pak hpkazyi 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
ze zvolenho kdovn (podrobnji viz sekci 3.5). Konen pkaz \setfonts spust
\ignorespaces, aby ppadn zapomenut mezera za zvorkou ]nebyla v horizonlnm mdu vytitna.
Kdovn font a deklarace znak
PLAIN:

Pro pepnn do roziujc metriky slou makro \setextrafont. Toto makro


se podv, zda k aktulnmu fontu existuje v pamti poznmka o roziujc metrice
(viz pkaz \loadtextfam a \newvariant v pedchoz sekci). Pokud takov poznmka
existuje, pkaz \setextrafont provede zhruba toto:
\font\extrafont=hroziujc metrika ve velikosti zkladn metrikyi \extrafont
LATEX: Pro pepnn do roziujcho kdovn, kter je deklarovno pkazem
\OFSextraencoding, slou (stejn jako v plainu) makro \setextrafont. Toto makro
se podv, zda bylo roziujc kdovn deklarovno, a pokud ano, provede zhruba toto:

\fontencoding{hroziujc kdovni}\selectfont
\extchar
\characterdef

PLAIN+LATEX: Chceme-li vytisknout z roziujc metriky (roziujcho kdovn) njak znak s kdem hsloi, je mon pout makro \extchar hsloi.
PLAIN (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
tyto parametry:

\characterdef
% pklad:
\characterdef
% nebo
\characterdef
% pklad:
\characterdef
\characterdef

\hsekvencei
\promile
\hsekvencei
\promile
\promile

hkdovni hmezerai hsloi


8z

141

hkdovni hmezerai {hpkazyi}


8t
*

{\%\char24 }
{\vrule height1ex width1ex\relax}
% in another encodings

V prvnm ppad se bude \hsekvencei pi aktulnm kdovn font shodnm


s hkdovnmi expandovat na token kategorie 12 s kdem rovnm hslui. V druhm
ppad \hsekvencei expanduje pi shodnosti hkdovni na hpkazyi. Ve probhne
na 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 kdovn
specifikovno jako parametr hextra-enci v pkazu \loadtextfam. Pklad:
15

\characterdef \euro
\characterdef \euro

8z
6s

134
37

\def\fotenc{8z} \euro % expanduje na znak s kdem 134


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

\printcharacter

V tomto pklad se pi \def\fotenc{8t} me stt, e aktuln font nem poznmku 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 funguj. Pkaz \characterdef definuje \hsekvenci i jako \printcharacter{hsekvencei},
take napklad \promile expanduje nejprve na \printcharacter{promile}. a \euro
na \printcharacter{euro}. Pokud se \characterdef pouije opakovan na stejnou
\hsekvenci i, pak se vdy znovu definuje stejn, take nedochz ke ztrt pedchoz informace. Krom toho ale \characterdef definuje dal makro \hsekvencei:-hkdovni
tak, e toto makro expanduje na znak se specifikovanm kdem nebo na hpkazyi.
Dal inteligence je schovna v pkazu \printcharacter. Ten ov, zda je definovno
makro \hsekvencei:-\fotenc. Pokud ano, expanduje na obsah tohoto makra. Jinak
ov, zda existuje poznmka o roziujc metrice vztaen k aktulnmu fontu. Pokud
ano, zjist kdovn tto roziujc metriky hextra-enci a podv se, zda je definovno
makro \hsekvencei:-hextra-enci. Pokud ano, expanduje na
{\setextrafont \hsekvencei:-hextra-enci}

\printcharacterwarn

Pokud se stle nepodailo realizovat poadovan znak, pokus se vytisknout defaultn


znak nezvisl na kdovn \hsekvencei:-*. Pokud ani to nen mon, spust se
\printcharacterwarn{hsekvencei}. Implicitn hodnota tohoto makra vype varovn
o nedostupnm znaku hsekvencei 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)?}

\safelet
\safeletwarn
\accentdef

Od verze OFS Mar. 2004 \characterdef odmt pedefinovat u definovan kontroln sekvence. Definuje pouze sekvence, kter maj zatm vznam \undefined nebo
\relax. V jinm ppad (a pokud nen sekvence u pomoc \characterdef definovna) vype varovn o ignorovan definici do log souboru. Dvod tohoto opaten je
ten, e kdovac soubory deklaruj obrovsk mnostv novch kontrolnch sekvenc pomoc \characterdef, a pitom programtor maker nemus vechny znt. Me se tedy
stt, e pouije pro sv vlastn makro stejn jmno. V takovm ppad \characterdef
respektuje makro definovan programtorem a pslun znak ponech nepstupn. Pokud potebujeme pomoc \characterdef skuten nkter kontroln sekvence pedefinovat (u maker zvislch na kdovn z plainu to je nutn), pak musme ped pouitm
\characterdef napsat \let\hsekvencei=\relax.
Ze stejnch dvod bylo do OFS pidno makro \safelet, kter se chov jako
\let, ale odmt pedefinovat u definovan kontroln sekvence. Msto toho pouze vype
varovn, definovan v makru \safeletwarn.
Krom deklarace znak pomoc \characterdef je k dispozici monost deklarace
akcentovch pkaz prostednictvm \accentdef, kter m tyto parametry:
\accentdef \hsekvencei hznak i hnepovinn mezerai hkdovni hmezerai hsloi
% Pklad:
16

\accentdef
% nebo
\accentdef
% Pklad:
\accentdef
\accentdef

\printaccent

\v E

8z

204

% Ecaron

\hsekvencei hznak i hnep. mezerai hkdovni hmezerai {hpkazyi}


\v *
\v *

8z
*

{\accent20 }
{\blackbox }

% default caron in 8z
% default caron

Pokud je aktuln kdovn font toton s hkdovnmi, pak \hsekvencei nsledovan znakem hznak i expanduje na token kategorie 12 s kdem hsloi, respektive expanduje na hpkazyi. To ve se dje jen na rovni expand procesoru. Pokud je pi deklaraci
pomoc \accentdef jako hznak i uvedena hvzdika, pak se deklarovan hpkazyi nebo
kd hsloi pouije vdy, kdy znak nsledujc \hsekvenci i nen nikde prostednictvm
\accentdef deklarovn. Jedn se tedy o defaultn realizaci akcentu, pokud ve fontu
neexistuje pmo akcentovan znak.
Krom toho maj akcenty deklarovan pomoc \accentdef stejnou inteligenci tkajc se monosti vyuit roziujc metriky, jako znaky deklarovan v \characterdef.
Vysvtlme si nyn podrobnji, jak akcenty deklarovan pomoc \accentdef funguj. Pkaz \accentdef definuje \hsekvenci i jako makro s jednm neseparovanm
parametrem #1, kter v prvn ad expanduje na \printaccent{hsekvencei}{#1},
take napklad \v E expanduje na \printaccent{v}{E}. Dle \accentdef definuje
makro \hsekvencei:hznak i:-hkdovni jako znak s danm kdem hsloi nebo jako
hpkazyi. Dal prci udl pkaz \printaccent. Tento pkaz zjist, zda je definovno
makro \hsekvencei:hznak i:-\fotenc. Pokud ano, expanduje na toto makro. Pokud
ne, tak si ov, zda je k aktulnmu fontu poznamenna roziujc metrika a zjist jej
kdovn hextra-enci. Jestlie je definovno makro \hsekvencei:hznak i:-hextra-enci,
pak se expanduje na {\setextrafont \hsekvencei:hznak i:-hextra-enci}. Pokud zatm ve selhalo, zkus \printaccent postupn zjistit, zda jsou definovna makra
\hsekvencei:*:-\fotenc a \hsekvencei:*:-hextra-enci. Pokud je definovno prvn
z nich, expanduje a pipoj na konec expanze hznak i. Pokud je definovno jen druh
z nich, expanduje na
{\setextrafont \hsekvencei:*:-hextra-enci hnormalfonti hznak i}

\printaccentwarn

\characterdel
\accentdel

kde hnormalfonti oznauje pepna do aktulnho fontu. Jestlie dosud ve selhalo,


pokus se jet o realizaci akcentu nezvislho na kdovn, tj. pokus se tisknout
\hsekvencei:hznak i:-* nebo konen \hsekvencei:*:-* hznak i. Teprve kdy i toto
selhalo, spust se \printaccentwarn{hsekvencei}{hznak i}. Implicitn hodnota tohoto
makra vype se na terminl a do logu varovn o nedostupnosti akcentovanho znaku
a do vstupu nevytiskne nic.
Je teba si uvdomit, e pechod ke znaku v roziujc metrice uvnit slova znamen
ztrtu vyrovnvacho kernu kolem tohoto znaku a nemonost pout na takov slovo
vzory dlen slov. Proto doporuujeme pout zkladn metriku kdovanou tak, aby
pechod na roziujc metriku byl jen vjimen. Pro esk a slovensk jazyk jsou
v tomto smyslu vhodn kdovn 8z i 8t, protoe ob zahrnuj kompletn eskou a
slovenskou abecedu.
Chceme-li odstranit u deklarovan znak (viz t tzv. hvjimkyi v nsledujc
sekci), meme pout pkazy \characterdel a \accentdel. Tyto pkazy maj
stejn parametry jako \characterdef resp. \accentdef a odstran definici pkazu
\hsekvencei:-hkdovni resp. \hsekvencei:hznak i:-hkdovni.

17

3.5.

\loadingenc

\modifydef

PLAIN:

Soubory maker zvislch na kdovn a vjimky z kdovn

Pkazy \characterdef a \accentdef popsan v pedchoz sekci pedefinovvaj


makra zvisl na kdovn (\v, \ae, atd.). V tto sekci popeme koncepci, kam tato
makra zapisovat, aby OFS pi \loadingenc=1 udrovalo konzistentn definice tchto
maker v zvislosti na zvolenm kdovn a na mnoin vjimek pouit rodiny font.
Deklarace maker pomoc \characterdef a \accentdef se zapisuj do soubor s nzvem ofs-hkdovni.tex (tzv. kdovacch soubor), protoe pkaz \loadtextfam (volan z makra \setfonts) tyto deklarace pi nastavenm \loadingenc=1 odtud te.
Kad kdovn m svou zkladn sadu znak a akcentovanch psmen. Tato sada je
v kdovacm souboru zanesena pomoc pkaz \characterdef a \accentdef. Vzhledem k tto zkladn sad mohou jednotliv rodiny font obsahovat njak znaky navc
nebo naopak njak znaky mohou chybt. Tyto vjimky se deklaruj pomoc pkazu
\modifydef takto:
\modifydef hkdovni:hidentifiktor i; {hvjimkyi}

\modifyenc

Pitom hvjimkyi obsahuj pkazy \characterdef, \accentdef, \characterdel a


\accentdel. Pkazy \*del musej obsahovat v argumentu hodnotu znaku podle
zkladn sady danho kdovn. Pokud m bt njak znak vzhledem k zkladn sad
pedefinovn, musej pkazy \*del a \*def k tomuto znaku nsledovat tsn za sebou.
V parametru pkazu \ofsdeclarefamily meme pomoc odkazu na hvjimkyi
pkazem \modifyenc vyznait, e dan rodina obsahuje vzhledem k zkladn sad kdovn odpovdajc hvjimkyi. Pkaz m tvar:
\modifyenc hkdovni:hidentifiktor i;%

\newmodifylist

\runmodifylist
\modifylist

Takovch pkaz me bt pro kadou rodinu font uvedeno vce (a samozejm tyto
pkazy mohou obsahovat rzn hkdovni). Odkazuje-li tento pkaz na hvjimkyi,
kter jet nebyly deklarovny, neprovede se nic.
Pklad deklarace vjimek kdovn 8z:csfonts najdete v souboru ofs-8z.tex a
odkazy na n pak najdete u rodin CM* v souboru ofsdef.tex.
Pkazy \modifyenc jsou sputny pi kadm \setfonts. Ve skutenosti tyto pkazy pouze ukdaj do tzv. seznamu odkaz (do makra \newmodifylist) sv parametry.
Pi startu \setfonts se zakld przdn seznam odkaz. \modifyenc ukld do tohoto
seznamu svj parametr jen tehdy, pokud hkdovni je rovno \fotenc nebo \extraenc.
Vlastn prci (nastaven vjimek) provede a pkaz \runmodifylist, kter je sputn
na konci \setfonts a jeho innost si nyn podrobn popeme.
Makro \runmodifylist porovn seznam odkaz na vjimky pedchoz rodiny
(\modifylist) se seznamem odkaz nov nastaven rodiny (\newmodifylist). Pokud
jsou oba seznamy stejn nebo \modifylist m vznam \relax, pak \runmodifylist
ukon innost. Jinak se pust do nastaven vjimek. Nejprve prohod vznamy
\characterdef\characterdel a \accentdef\accentdel a spust \modifylist
Jinmi slovy vrt stav maker vzanch na kdovn do vchozho stavu. Pi tto
innosti je ignorovno mazn znaku, pokud tsn ped tm byl znak deklarovn (viz
pravidlo o pedefinovn znaku na zatku tto sekce). Pak pkaz \runmodifylist
vrt \characterdef a \accentdef do pvodnho stavu a spust \newmodifylist.
Veker pedefinovn, kter se pi tto innosti provdj, jsou jen lokln. Mechanismus
dvou seznam odkaz zaruuje, e napklad pi
\setfonts [Rodina1/] ... \setfonts [Rodina2/] ...

18

\skipfirststep

\lccodes
\lccodesloop

\modifyread

budou sprvn nastaveny vjimky aktulnho kdovn i pro Rodinu2, akoli Rodina1
m 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 nastavovn vjimek.
Poznamenejme jet, e deklaran pkazy \modifydef nejene ukldaj hvjimkyi
do pamti, ale projdou tak jejich obsah a definuj vechny zde deklarovan sekvence
jako odpovdajc \printcharacter resp. \printaccent. Tm mme zarueno, e kad
kontroln sekvence ze vech vjimek je definovna (nedojde ke zprv undefined control sequence) a navc OFS m dokonal pehled o tom, zda je v aktuln rodin tato
kontroln sekvence pouiteln nebo nikoli. Tvrce maker si pak me podle poteby
pedefinovat makra \print*warn.
Pkaz \modifydef prochz hvjimkyi tak, e na pechodnou dobu pozmn pkazy
\accentdef, \accentdel, atd. a hvjimkyi spust. Pokud nechceme, aby se makra ve
hvjimkchi spoutla u v dob innosti \modifydef, uvedeme ped tato makra sekvenci \skipfirststep. Ta se chov jako \relax, ale pi spoutn hvjimek i pkazem
\modifydef zpsob, e ve za touto sekvenc a do konce hvjimek i bude peskoeno.
Identifiktory hkdovni:lccodes a hkdovni:ienc jsou rezervovny pro pouit
mimo OFS v dalch makrech. OFS napklad vbec nee nastaven \lccode, \uccode
znak podle pouitho kdovn. Makro, kter se o toto star, me vhodn definovat
pkazy \lccodes a \lccodesloop a spust \csname hkdovni:lccodes\endcsname.
OFS uveden pkazy vbec nedefinuje. Deklarace hkdovni:lccodes jsou uvedeny
v souborech ofs-8t.tex a ofs-8z.tex akoli nejsou v OFS vyuity, protoe to souvis
s kdovnm textovch font. Pklad pouit hkdovni:lccodes je v makru lang.tex
a makro inec.tex pouv hkdovni:ienc. V dokumentaci k tmto makrm je eeno
vce.
Deklarace nejastji pouvanch vjimek se zapisuj pmo do kdovacch soubor.
Deklarace mn obvyklch vjimek (vztahujcch se jen na urit rodiny font) meme
pst za \endinput deklaranch soubor. Mezi hpkazyi makra \ofsdeclarefamily
pak pouijeme pkaz
\modifyread hjmno souborui;%

\modifytext

\knownchar

Tento pkaz pi kladnm \loadingenc nate dan soubor od vskytu sekvence


\modifytext. Tuto sekvenci je vhodn umstit za \endinput, aby \modifyread peetl
tu st souboru, kter zatm nebyla tena. Piazen je v dob ten globln a ignoruj
se konce dk a przdn dky. Opakovan se soubor nenat.
Dky tomuto pkazu meme soustedit deklarace rodin font a deklarace vjimek
z 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 je
ve fontu pstupn i nikoli:
\knownchar hznak nebo akcent+znak i? \iftrue znak je pstupn
\else
znak je nepstupn nebo nedefinovan \fi
% pklad:
\def\tryeuro{\knownchar \euro? \iftrue \euro \else Euro\fi}

19

3.6.
\accentabove
\accentbelow

Pomocn makra pro akcenty a znaky


Pro pohodln deklarovn defaultnch akcent jsou v OFS pipravena dv makra:
\accentabove a \accentbelow, kter se pouvaj takto:
\accentabove {hznak akcentui}{hvertikln mezerai}{hzkladn znak i}
\accentbelow {hznak akcentui}{hvertikln mezerai}{hzkladn znak i}
Pkaz \accentabove resp. \accentbelow pisad hznak akcentui nad resp. pod
hzkladn znak i, piem mezi tmito znaky bude hvertikln mezerai. Oba znaky budou na spolen vertikln ose a pi sklonnm psmu na spolen sklonn ose. ka
vslednho sloenho znaku je odvozena od ky zkladnho znaku. Makra jsou implementovna jako \vbox resp. \vtop spolen s \halign a s vpotem usazen na ppadn
sklonn ose.
Znaky pro akcent nahoe jsou ve fontech vesms kresleny ve vce odpovdajc
zkladnmu znaku o vce 1 ex. Proto usazen takovho akcentu vyaduje kompenzaci:
\accentabove {hznak akcentui}{-1ex}{hzkladn znak i}
V tomto ppad se akcent umst naprosto stejn, jako pi pouit primitivu \accent.
Na rozdl od tohoto primitivu ale makra \accentabove a \accentbelow umonuj vzjemn skldn, m meme doshnout nkolikansobnho akcentu. Vyzkouejte:
\it \accentabove {.}{.1ex}{\accentabove {,}{.1ex}{\v A}}

\ofshexbox
\ofshexboxdef

PLAIN: Bohuel, makra deklarovan pomoc \accentdef nejsou uzpsobena na vce


ne dvoj akcent. Navc dvoj akcent je mon jen v tom ppad, e se vnitn akcent se
zkladnm 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
podobn jako plainov \mathhexbox, ale navc dovede nastavit font podle aktuln varianty. Nejprve pomoc pkazu \ofshexboxdef nastavme rodinu ty metrik:

\ofshexboxdef hrodinai{hmetrika-rmi}{hmetrika-bf i}{hmetrika-iti}{hmetrika-bi i}


\ofshexboxdef 2 {cmsy}{cmbsy10}{cmsy}{cmbsy10} % napklad takto
Pak pkaz \ofshexbox hrodinaihhexa-kd i vytiskne znak s hhexa-kdemi z jednoho ze
ty deklarovanch font a v aktuln velikosti \fosize Volba fontu zvis na aktuln
variant. Pokud je varianta jin ne \bf, \it, \bi, pouije se hmetrika-rmi. OFS implicitn deklaruje jen hrodinui = 2, protoe plain pouv jen \mathhexbox2... Clem
tohoto makra bylo definovat pro CMfonty/CSfonty znaky \S, \dag, \ddag, \P zpsobem, kter je nezvisl na aktulnm nastaven matematickch font, ale je zvisl na
aktuln velikosti a variant. Viz soubor ofs-8z.tex.
Pomoc \ofshexbox meme snadno definovat napklad symbol \euro pro vechna
kdovn font, ve kterch je tento symbol neptupn:
\ofshexboxdef {TS1}{tcrm1000}{tcbx1000}{tcti1000}{tcbi1000}
\characterdef \euro * {\ofshexbox{TS1}BF}
3.7.
\setmath
\textfosize
\scriptfosize

PLAIN:

Fonty v matematice podruh

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

\scriptscriptfosize
\mathfonts
\mathchars

\loadmathfam

daje o velikosti uloeny ve tvaru athdimeni nebo scaledhsloi podobn jako v makru
\fosize. Pak pkaz \setmath spust makro \mathfonts. V nm se pedpokld zaveden a nastaven matematickch font. Pokud je \setmath sputno poprv nebo pokud
dolo ke zmn hodnoty \fomenc, tak \setmath jet spust makro \mathchars. Tam
se obvykle nastavuj kdy matematickch znak pomoc \mathcode, \mathchardef a
pbuznch primitiv. Makra \mathfonts a \mathchars maj sice v OFS svou implicitn
hodnotu, 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
m tyto monosti parametr:
%%
\loadmathfam
\loadmathfam
\loadmathfam
\loadmathfam

hrodinai[/hmetrikai]
hrodinai[-hvariantai/]
hrodinai[hpepna i/]
hrodinai[Xhpepna i/]

% font je deklarovn:
% metrikou
% variantou aktuln rodiny
% pepnaem textovho fontu
% roziujc metrikou pepnae

Pklady:
\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

\newmathfam

\lastfam

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 deklarovna
nov 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 a
tuto metriku pouije ve vech velikostech stejnou pouze modifikovanou klovm slovem
athdimeni. Ve druhm ppad se me pro rzn velikosti pout rzn metrika, pokud
je 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
tedy pout uvnit definice. Navc makro \newmathfam pracuje lokln a tud et
vce msta pro uivatelsk rodiny ne plainovsk \newfam. V deklaracch zkladnch
matematickch kdovn se nov matematick rodiny definuj pmo pomoc \chardef
a je tam pomoc pkazu \lastfam=hsloi nastavena maximln pouit hodonta. To
zaru, e uivatel me pozdji pout \newmathfam a zane alokovat dal rodiny s sly
tsn 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 \hnzev i-Mt = hmetrikai \textfosize
\font \hnzev i-Ms = hmetrikai \scriptfosize
\font \hnzev i-Mss = hmetrikai \scriptscriptfosize
\textfont hrodinai = \hnzev i-Mt
\scriptfont hrodinai = \hnzev i-Ms
\scriptscriptfont hrodinai = \hnzev i-Mss
21

\noindexsize

Pitom hnzev i je text parametru \loadmathfam, kter deklaruje metriku (pepna,


varianta nebo metrika).
Fonty matematick rodiny 3 jsou v plainTEXu obvykle zavedeny bez zmenovn
pro indexy a indexy index. Pokud poadujeme pi zavdn matematick rodiny nezmenovat fonty pro indexy, uvedeme tsn ped \loadmathfam prefix \noindexsize.
Makro \loadmathfam pak zavede font jen ve velikosti \textfosize a pouije ho i pro
indexovou a indexindexovou velikost. Pklad:
\noindexsize\loadmathfam 3[tenex/]% Standard extra symbols from CM
OFS definuje v souboru ofsdef.tex pro zavdn matematickch font tyi
rzn 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 deklaracemi
matematickch kd, kter se pouij podle aktuln nastaven hodnoty \fomenc.

\loadCMnormalmath
\loadCMboldmath
\loadPSnormalmath
\loadPSboldmath
\setCMmathchars
\setPSmathchars

\loadCMnormalmath zavede CM fonty ve verzi normal.


\loadCMboldmath zavede CM fonty ve verzi bold.
\loadPSnormalmath zavede PostScriptov fonty ve verzi normal.
\loadPSboldmath zavede PostScriptov fonty ve verzi bold.
\setCMmathchars ponech matematick kdy z plainu.
\setPSmathchars nastav matematick kdy tak, aby se nahradily nkter znaky
z fontu Symbol.
Dle je v OFS implicitn nastaveno:

\defaultmathfonts
\defaultmathchars

\ifx \fomenc\undefined \def\fomenc{PS}\fi


\def\mathversion{normal}
\def\defaultmathfonts{\csname load\fomenc\mathversion math\endcsname}
\def\defaultmathchars{\csname set\fomenc mathchars\endcsname}
\def\mathfonts{\defaultmathfonts}
\def\mathchars{\defaultmathchars}
Je mon pidvat k implicitn nastavenm matematickm fontm dal matematick rodiny (v terminologii NFSS matematick abecedy) pozmnnm maker
\mathfonts a ppadn \mathchars. Ne je pklad pidn fraktury z Eulerovch
font 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 kdovn AMS, TX, PX, MT. Na konci tchto soubor jsou komente vetn ukzek, jak
doplujc rodiny font je mono pomoc \addcmd zavst.
Protoe chci umonit naten vech fontovch deklarac OFS v iniTEXu (viz projekt
OkTEX), ale pitom etit pokud mono pamt TEXu, rozhodl jsem se nenatat rozshl
definice obsahujc deklarace kdovn matematickch font pomoc \mathchardef atd.
okamit, ale a v dob, kdy to uivatel v dokumentu skuten potebuje. Proto jsem
od verze OFS Apr. 2004 pedefinoval napklad makro \setPSmathchars takto:

22

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

\mathencdef

\mathcharsback

\hex

\safemathchardef

Pkaz \mathencread hsoubor i; nate kdovac pkazy ze souboru hsoubor.tex i. Nap.


v souboru ofs-ps.tex jsou kdovac pkazy pro kdovn PS, v ofs-ams.tex jsou
kdovac pkazy pro kdovn AMS atd.
V souborech ofs-ps.tex, ofs-tx.tex atd. jsou kdovac pkazy baleny do skupin a definovny pkazem \mathencdef. Tento pkaz pracuje implicitn jako definuj, spus a zapome. Tento model et pam, ale pi astch zmnch matematickho kdovn budou kdovac soubory teny opakovan znovu. To vtinou nevad, 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 opakovanm
sputn \mathchars se kdovac pkazy etly ze zapamatovanch maker.
Pkaz \mathencread hsoubor i; zalo skupinu, ve kter pro jistotu nastav kategorie vech znak podle plainTEXu (s vjimkou \catcode@=11) a pete hsoubor i.tex.
Pi ten je \globaldefs=1 a ignoruj se konce dk a przdn dky. Rovn je ignorovno makro \protectreading, take soubor me bt ten opakovan. Pkazy
\mathencdef spust a zapomenou nadefinovan makra a po uzaven skupiny, take
tato makra spout pkazy \mathchardef atd. u jen s loklnmi piazenmi.
Vysvtlme, jak je zajitno obnovovn vchozch hodnot pi pepnn mezi
matematickmi kdovnmi. Pkaz \setmath spout tsn ped \mathchars makro
\mathcharsback, aby uvedl matematick kdovn do vchozho stavu podle plainTEXu. Toto makro m implicitn vznam \relax, protoe implicitn je matematick
kdovn podle plainTEXu nastaveno. Mn-li ale pkaz \sethfomencimathchars
hodnoty nastaven v plainTEXu, ml by tak definovat makro \mathcharsback, do
kterho ulo postup, jak vrtit nastaven do pvodnho stavu. V definici makra
\mathcharsback meme mimo jin pout pkaz \mathencread ofs-cm;, protoe
v souboru ofs-cm.tex jsou uloeny deklarace metamatickho kdovn podle plainTEXu
Pokud si budeme deklarovat vlastn matematick kdovn (rzn od pipravench
PS, CM, AMS atd.), pak je poteba myslet na nsledujc zsadu: ve vech verzch matematickch font (normal/bold/atd.) by mla bt sla matematickch rodin alokovna
stejn a ukonena stejnm \lastfam, protoe makro \mathchars se po pepnut do jin
verze nespout znovu. Zvlt nesmme mnit sla tch rodin, na kter se odvolvme
v makru \sethkdovnimathchars.
Nyn popeme dal makra ulehujc deklaraci matematickho kdovn. Makro
\hex konvertuje slo na jednocifern hexadecimln slo. Vyuit tohoto makra najdeme v souborech ofs-ps.tex, ofs-tx.tex a dalch.
Pro definovn sekvenc, kter budou pracovat v textovm i matematickm mdu
souasn, slou makro \safemathchardef. Toto makro m stejn zpsob pouit, jako
primitivn \mathchardef:
\safemathchardef \hsekvencei hsloi
Pokud nen \hsekvencei v okamiku pouit \safemathchardef definovna, pkaz pracuje zcela stejn jako \mathchardef. Pokud ale je \hsekvencei u definovna, ulo pkaz \safemathchardef jej vznam do \Thsekvencei, dle provede
\mathchardef \Mhsekvencei = hsloi a konen \hsekvenci i pedefinuje nsledujcm
zpsobem:
\def \hsekvencei {\ifmmode \expandafter \Mhsekvencei
\else \expandafter \Thsekvencei \fi}
23

\safemathaccentdef
\mathaccentdef

Od tto chvle \hsekvencei pracuje v textovm i matematickm mdu. Pro ppad opakovanho pouit \safemathchardef na stejnou \hsekvenci i makro kontroluje, zda u
nen definovna \Mhsekvencei. Pokud ano, pak \safemathchardef neprovede nic.
Je poteba, aby byly soubory s pkazy \characterdef nateny ped prvnm pouitm \setmath. Pak lze v rmci \setmath (pesnji v makru \mathchars) pout
\safemathchardef na pedefinovn nkterch sekvenc, kter byly dve deklarovny
pomoc \characterdef. Tyto sekvence pak budou pracovat v textovm i matematickm
mdu.
Naprosto stejn, jako \safemathchardef pracuje pkaz \safemathaccentdef.
Pouze msto primitivu \mathchardef pouije makro \mathaccentdef, kter pete za
\hsekvenci hsloi separovan mezerou a provede:
\def \hsekvencei {\mathaccenthsloi }

\pickmathfont

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 {hmetrikai}{htexti}
% pklad pouit:
\mathbin {\pickmathfont {psybo}{\char"C4}}
Makro \pickmathfont pouije primitiv \font na specifikovanou hmetrikui a v tomto
fontu zape htexti, kter v matematickm seznamu tvo atom typu Ord. Dleit je,
e je pouit font v odpovdajc velikosti (zkladn, indexov, indexindexov), take to
vypad, jako by byl pouita nov matematick rodina font. Pitom to nen pravda, protoe \pickmathfont je implementovn pomoc primitivu \mathchoice. Pouit pkazu
\pickmathfont najdeme v souboru ofsdef.tex v definici makra \setPSmathchars.

3.8.

\registertfm

Registrovn metrik pro rzn velikosti


LATEX: Registrovn rznch metrik pro rzn velikosti se dl ve fd souborech a je
to 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 implementovna v OFS. Dosud jsme zatajili, e v parametrech pkaz \loadtextfam,
\loadmathfam a \pickmathfont je mon msto nzv metrik uvst smylen hjmnoi,
kter je registrovno pkazem \registertfm. V takovm ppad se skuten metrika
pro zaveden primitivem \font vypot z poadovan velikosti fontu a z daj, kter
byly zadny pomoc skupiny pkaz \registertfm. Upesnme nyn parametry pkazu
\registertfm:

\registertfm hjmnoi hmezerai hod i-hdoi hmezerai hskuten metrikai hmezerai


Parametry hod i a hdoi musej obsahovat jednotku a vymezuj uzaven interval, pro
kter plat: jestlie je poadovan velikost fontu ve tvaru athdimeni a souasn hdimeni
le v intervalu hod i-hdoi, pak se msto hjmnai pouije hskuten metrikai athdimeni.
Pkaz \registertfm je poteba pro vymezen rznch interval pout opakovan na
stejn hjmnoi. Akoli jsou intervaly hod i-hdoi uzaven, pozdji deklarovan interval
m pednost ped dve deklarovanm, take nakonec je kladn reln osa rozdlena na
polouzaven intervaly. Pklad pouit je v souboru ofsdef.tex.
Jsou-li oba parametry hod i a hdoi przdn, je pkazem \registertfm deklarovna
metrika, kter se pouije pi specifikaci velikosti pomoc scaledhsloi nebo v ppad,
24

\registerECfont
\registerECTTfont

3.9.

\registerenc

kdy hdimeni nele v dnm specifikovanm intervalu. Hvzdika msto parametru hdoi
zna nekonenou velikost.
Pkaz \registertfm hjmnoi hmezerai - hmezerai - hmezerai vymae z pamti
pedchoz registrace pro dan hjmnoi a navc vyzna hjmnoi jako nepstupn font.
OFS se pak chov stejn, jakoby odpovdajc varianta nebyla vbec deklarovna. Dv
nm to monost vyznait neexistujc varianty deklarovan rodiny jen pro nkter kdovn (viz napklad cmssbxti v souboru ofsdef.tex).
Parametry hjmnoi a hskuten metrikai se expanduj v okamiku innosti pkazu
\registertfm. Nen proto obvykl v nich pouvat makro \fotenc. Nicmn toto makro
meme 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
na vechny velikosti EC font od 0500 a po 3583. Stejn makro \registerECTTfont
je zkratkou pro velikosti EC font od 0800 do 3583 pouvan pro strojopis. Definice a
pouit tchto maker najdeme v souboru ofsdef.tex. Makra meme pout i na jin
fonty, kter maj stejn odstupovan velikosti jako EC fonty (nap. LH fonty s azbukou
nebo fonty odvozen z CM-super).
Omezen pouit rodiny font pro urit kdovn
LATEX: Pouit rodiny v danm kdovn je zvisl na existenci fd souboru, tj. ve je
v reii NFSS.
PLAIN (a do konce sekce): OFS od verze Feb. 2004 zavd pkaz \registerenc, kterm
meme omezit pouit deklarovan rodiny font jen pro vymezen kdovn. Pokud
pak uivatel nape \setfonts a vyaduje rodinu v neregistrovanm kdovn, OFS
vype varovn na obrazovku a vbec do poadovan rodiny nepepne. Tm se vyhne
pokusu zavst pravdpodobn neexistujc metriky font. Pkaz \registerenc m dva
parametry:

\registerenc hJmnoRodinyi: hkdovnihmezerai


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

\registeredfam

Pokud nem rodina registrovno dn kdovn, pak OFS pedpokld, e je pouiteln v jakmkoli kdovn (napklad fonty znaek).
V deklaranch souborech tedy meme pomoc \registerenc omezit pouit rodiny
jen na vymezen kdovn. Uivatel ale me pkazem \registerenc pidat k rodin
dal povolen kdovn. Nebo tak me naznait, e rodina m povoleno libovoln
kdovn pkazem \registerenc hJmnoRodinyi: * .
Abychom v deklaranch souborech nemuseli opisovat hJmnoRodinyi, me bt
tento parametr przdn. V takovm ppad \registerenc pouije rodinu z poslednho
pkazu \ofsdeclarefamily.
Ve svch makrech se mete zeptat, zda je rodina pro aktuln hodnotu \fotenc
registrovan:
\registeredfam hJmnoRodinyi? \iftrue
Rodina m \fotenc registrovno nebo m povoleno jakkoli kdovn
nebo vbec nen deklarovna.
\else Rodina m registovna kdovn, ale \fotenc mezi nimi nen.
\fi
25

\setfontsOK

4.

Pokud spustme \setfonts[hJmnoRodinyi/] pro nedeklarovanou rodinu nebo


pro rodinu s nedovolenm kdovnm, pak OFS nape varovn na terminl a vrt
\setfontsOK jako \undefined. Po spnm nastaven fontu m sekvence \setfontsOK
hodnotu \relax.

Licence
Balek OFS me pouvat kdokoli bez licennch poplatk. Kdokoli jej rovn
me 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 zmnu
tchto soubor a tm zmnu verz zstv vhradn autorovi. Pokud potebujete zmnit
obsah 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

5.

autor: Petr Olk

Historie
16. 8. 2001 uvedena prvn verze
24. 10. 2002 provedeny drobn pravy respekutjc zmny ve verzi OFS Oct. 2002.
V tto verzi byl pidn pkaz \addcmd a byly umonny nepovinn parametry
(hVariantai) 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 deklaranho 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 seznamech 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-hkdovni.tex.
+ Zavedeno \safelet a \protectreading.
+ Mezera za hznakemi v \accentdef je nepovinn.
26

+ Pidna monost \loadmathfam hrodinai[-hvariantai/] a rozena a pepracovna


deklarace 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 vysvtlujc
koment. V tom mst je t uveden pro snadnj orientaci nzev makra v levm
okraji. V rejstku nejsou odkazy na vechny zmnky o makru v textu. Rejstk je
sprvn vygenerovn hned po prvnm prchodu zpracovn tohoto dokumentu pkazem csplain ofsdoc.
Nkter makra definovan v ofs.tex jsou intern nebo pomocn a nen o nich zmnka
v textu. Pak odkaz na stranu zmrn chyb a je pipojena jen krtk poznmka o takovm makru. Rovn jsou pipojeny poznmky o tom, zda je makro pouito ve verzi
pro 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\hmakro i#1{\printaccent{hmakro i}{#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\hmakro i{\printcharacter{hmakro i}}
\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 [hfile i, ...] 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 \thehdimen i [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 maghdesetinn slo i
\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 athdimen i
\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 athdimen i 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 dispozici
na http://math.feld.cvut.cz/olsak/tbn.html.

30

You might also like