diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/ofs/ofs-slt.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/ofs/ofs-slt.tex | 1004 |
1 files changed, 1004 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/ofs/ofs-slt.tex b/Master/texmf-dist/tex/generic/ofs/ofs-slt.tex new file mode 100644 index 00000000000..ffee32f6955 --- /dev/null +++ b/Master/texmf-dist/tex/generic/ofs/ofs-slt.tex @@ -0,0 +1,1004 @@ +\chyph % použijte csplain + +% Přimlovám se k tomu nepřeznačkovávat článek do LaTeXu +% Na článku totiž demonstruji vlastnosti OFS a opírám se +% o OFS z plainu. Přechod na LaTeX se zachováním těchto vlastností +% by nebyl jednoduchý. Můžete rozbalit metriky +% a virtuální fonty k Charteru (přiložený charter8z.zip) do +% pracovního adresáře a zpracovat csplainem na instalaci TeXu, +% která obsahuje OFS. Před spuštěním dvips je pak potřeba doplnit +% do psfonts.map čtyři řádky uvedené v souboru mapfile. Můžete mě také +% informovat o tom, na kterých stránkách se dokument bude ve sborníku +% nacházet, já opravím údaj \firstpage, zplainuji to, zdvipsuji a +% pošlu obratem zpátky. + +\newcount\firstpage \firstpage=79 +\newcount\numpages \numpages=14 + +\def\addcmd #1#2{\expandafter\def\expandafter\tmpa\expandafter{#1}% + \def\tmpb{#1}% + \ifx\tmpa\tmpb % the #1 is not a macro + \expandafter\let\csname \string#1-original\endcsname =#1% + \expandafter\def\expandafter #1\expandafter{% + \csname\string#1-original\endcsname #2}% + \else % the #1 is a macro + \expandafter\def\expandafter #1\expandafter{#1#2}% + \fi} + +\input ofs [ffonts] % Charter je ve skupině free fonts +\setfonts [Charter/10pt] % výchozí rodina +\setmath[//] % inicializace matematiky +\fontdef\tt [CMTypewriter/mag1.1] % strojopis, korekce střední výšky +\fontdef\verbtt [CMTypewriter-rm/8] % strojopis pro display ukázky +\fontdef\small [!/9] % zmenšení pro abstrakt a záhlaví +\addcmd \small {\baselineskip11pt \rm \def\mathversion{normal}\setmath[//]} +\fontdef\fontsekce [!/12] % pro nadpisy sekcí +\addcmd \fontsekce {\bf \let\it=\bi \def\mathversion{bold}\setmath[//]} +\fontdef\fonttitul [!-bf/14.4] % titul + +\hsize=12,2cm +\vsize=19,3cm +\hoffset=63pt +\voffset=43pt +\parindent=14pt + +\lineskiplimit=-10pt +\raggedbottom + +\exhyphenpenalty=10000 +\widowpenalty=10000 +\clubpenalty=10000 + +\showboxdepth=10 \showboxbreadth=50 + +\def\starthead{\global\headline= + {\small \ifodd\pageno \hfil \thetitul \headspace \the\pageno + \else \the\pageno \headspace \theauthor \hfil \fi}} +\headline={\hfil\starthead} +\def\headspace{\hskip2.5em\relax} +\def\makeheadline{\vbox to0pt{\vskip-25pt + \line{\vbox to8.5pt{}\the\headline}\vss}\nointerlineskip} +\footline={\setfonts[/7]\setmath[//]\baselineskip=9pt + \vbox{\hbox{\copytext}\hbox{\copykonvoj}}\hfil + \global\footline={}} +\def\lastpage{\advance\firstpage by\numpages \advance\firstpage by-1 + \the\firstpage} + +\def\copytext{Jan Kasprzak, Petr Sojka (editoři): \SLT~2002 -- sborník + semináře o~Linuxu a \TeX{}u, str. \the\firstpage--\lastpage, 2002.} +\def\copykonvoj{\copyright~Konvoj, CSTUG, CZLUG 2002} + +\newcount\subnum + +\def\kap #1\par{\advance\subnum by1 + \removelastskip %\goodbreak + \vskip17pt plus2pt minus1pt\noindent{\fontsekce + \ifnum\subnum>1 \the\subnum\enspace\enspace\fi #1}% + \par\nobreak\vskip11pt plus2pt minus1pt + \everypar{\setbox0=\lastbox \everypar={}}} +\def\reference {\subnum=-1 \kap Reference\par \small} +\def\bib{\par\advance\subnum by1 \leftskip=\parindent + \noindent\llap{\the\subnum.\enspace}\ignorespaces} + +\let\orifootnote=\footnote +\newcount\footnotenum +\def\footnote#1{\global\advance\footnotenum by1 + \orifootnote{$\setmath[//]^\the\footnotenum$}{\small + \hangindent=\parindent #1\par}} +\def\footnoterule{\kern-3pt \hrule width 2cm \kern2.6pt } + +\def\titul #1 \par{\def\thetitul{#1}\pageno=\firstpage + \centerline{\fonttitul #1}\vskip20pt\relax} +\def\autor #1 \par{\def\theauthor{#1} + \centerline{#1}\vskip10pt\relax} +\def\institut #1 \par{\centerline{\small #1}} +\def\email #1 \par{\centerline{\small Email: \tt #1}\vskip20pt\relax} +\def\abstrakt #1\par{\bgroup \small + \leftskip=3em \rightskip=3em + \noindent{\bf Abstrakt:}\enspace #1\par \egroup\bigskip} +\def\url#1{{\tt#1}} + +\font\mflogo=logo10 % METAFONT logo +\font\boldsy=cmbsy10 at12pt % Tučné \CS, \AMS. +\font\bboldsy=cmbsy10 scaled\magstep2 % Tučné \CS v titulu + +\def\CS{$\cal C\kern-.1667em\lower.5ex\hbox{$\cal S$}\kern-.075em $} +\def\bCS{{\boldsy C\kern-.1667em\lower.5ex\hbox{S}\kern-.04em}} +\def\CSTeX{\CS\TeX} +\def\CSTUG{\CS TUG} +\def\CSfont{\CS\kern.1em font} +\def\csplain{\CS\kern.1em plain} \let\CSplain=\csplain +\def\mf{{\mflogo META}\-{\mflogo FONT}} +\def\mp{{\mflogo META}\-{\mflogo POST}} +\def\LaTeX{L\kern-.2em\raise.45ex\hbox{\setfonts[/mag.7] A}\kern-.05em\TeX} +\def\twoe{$2_{\textstyle\varepsilon}$} +\def\LaTeXe{\LaTeX\thinspace\twoe} +\def\cslatex{\CS\kern.05em\LaTeX} \let\CSLaTeX=\cslatex +\def\twoe{$2_{\textstyle\varepsilon}$} +\def\LaTeXe{\LaTeX\thinspace\twoe} +\def\AMS{$\cal A\kern-.166em\lower.5ex\hbox{$\cal M$}\kern-.075em S$} +\def\bAMS{{\boldsy A\kern-.166em\lower.5ex\hbox{M}\kern-.075em S}} +\def\ps{Post\-Script} +\def\SLT{S\kern-0.025em\lower.5ex\hbox{L}\kern-.2emT} +\def\DOS{\hbox{DOS}} + +%% Definice verbatim prostředí %% !verb. +\catcode`\"=13 +\def"{\hbox\bgroup\let"=\egroup\setverb\tt} +\def\setverb{\def\do##1{\catcode`##1=12}\dospecials\obeyspaces} +\def\begtt{\medskip\bgroup + \nobreak\setverb \parskip=0pt %\parindent=0pt + \catcode`\"=12\catcode`\~=13 \obeylines + \baselineskip=10pt + \let\tt=\verbtt \startverb} +{\catcode`\|=0 \catcode`\\=12 + |gdef|startverb#1\endtt{% + |tt#1|nobreak|egroup|penalty0|medskip|scannexttoken}} +{\obeyspaces\gdef {\ }} +\long\def\scannexttoken#1{\ifx#1\par\else\noindent#1\fi} + +\def\citeref #1 #2 {\expandafter\def\csname cit:#1\endcsname{#2}} +\citeref pismolijna 1 +\citeref ofsftp 2 +\citeref ofsdoc 3 +\citeref stormcl 4 +\def\cite#1{\expandafter\ifx \csname cit:#1\endcsname\relax + \message{Warning: cite{#1} is not defined}[??]% + \else [\csname cit:#1\endcsname]\fi} + +%------------------------------------------------------------------------- + +\titul Makro OFS + %%%%%%%%% + +\autor Petr Olšák + +\institut Elektrotechnická fakulta ČVUT, Praha + +\email olsak@math.feld.cvut.cz + +\abstrakt + OFS (Olšákův fontový systém) je balíček TeXových maker, který + umožní získat větší přehled nad rozsáhlými kolekcemi fontů a umožní + s~nimi poměrně snadnou manipulaci. Balík byl vyvinut pro získání + přehledu nad fonty z~Typokatalogu Střešovické písmolijny~\cite{pismolijna}. + Na základě poptávky \LaTeX{}ových uživatelů byl balík + napsán ještě jednou pro \LaTeX, kde využívá NFSS a pokouší se je + trošičku vylepšit. Základní uživatelské příkazy OFS jsou pak v~obou + prostředích (plain i \LaTeX) stejné. Na přednášce předvedu použití + OFS na uživatelské i konfigurační úrovni. + +\kap Úvodem +%---------- + +Makro OFS jsem si napsal hlavně proto, abych se vyznal ve stovkách +fontů, které pocházely ze Střešovické písmolijny a pro které jsem +před rokem udělal \TeX{}ovou podporu. Protože jsem plainista, šlo mi +hlavně o~to udělat makro co nejvíce srozumitelné uživateli plainu, +který potřebuje přesně vědět, co to makro dělá. Tento požadavek +například \LaTeX{}ové NFSS nesplňuje. + +Později se začali o~OFS zajímat též někteří uživatelé \LaTeX{}u. Tož +jsem se přemohl a pokusil OFS napsat ještě jednou, tentokrát pod +\LaTeX{}em s~využitím~NFSS. Cílem tohoto přepsání bylo hlavně to, aby +se uživatelské příkazy pro vyhledávání a přepínání rodin fontů +zcela shodovaly v~\LaTeX{}ové verzi s~verzí plainovou. \LaTeX{}ová +verze přesto umí podstatně méně věcí, než plainová, protože pokud by +měla umět vše, musel bych NFSS zcela odmítnout a fontový modul +\LaTeX{}u si napsat po svém. Tím bych ale popřel \LaTeX{} jako +takový, takže jsem zůstal u~respektování principů NFSS. Věci, které +se v~NFSS dají dělat velmi těžko, jsem raději nedělal. + +Z~těchto důvodů jsem se v~\LaTeX{}u nepouštěl ani do podpory +matematických fontů. Koncepce matematiky v~NFSS mi připadá jako +plainistovi poněkud nesrozumitelná. Navíc velké kolekce fontů, které byly +hlavní motivací OFS, jsou většinou textové. Pokud chce někdo +použít matematickou sadu fontů v~\LaTeX{}u, použije +"\usepackage{styl}" a ten styl je k~té matematické sadě většinou +dodáván. Nepovažoval jsem tedy řešení matematiky +v~\LaTeX{}u za prioritní. Na druhou stranu matematické rodiny v~plainu +se pomocí OFS doplňují a zavádějí ve všech velikostech velmi +elegantně. Věřím, že alespoň nějakému plainistovi (kromě mě) se toto +řešení bude hodit. + +Makro OFS jsem zveřejnil na \cite{ofsftp} pod \TeX-like licencí, +tj. je volně k~mání, ale změny pod stejným názvem nesmí dále šířit nikdo +jiný, než autor. Do \TeX{}ových distribucí jsem makro zatím +neprosadil, protože bohužel chybí anglická dokumentace. Domnívám se, +že kdyby anglická dokumentace byla, nebyl by se zařazením do \TeX{}ových +distribucí problém a makro by mohlo využít daleko více lidí. Bohužel, +nejsem v~angličtině natolik zdatný, abych tento problém rychle překonal. +Pro letošní letní prázdniny jsem sice plánoval, že se pokusím anglickou +dokumentaci napsat, jenže přišla voda\dots + +K~OFS existuje samozřejmě česká dokumentace~\cite{ofsdoc} podrobě +popisující chování makra. Navíc jsem se o~OFS zmínil už v~článku +o~\TeX{}ové podpoře Štormových fontů~\cite{stormcl}. Dovolil jsem si +zde přesto znovu k~tomuto tématu vrátit. Nechci být nyní +tak technicky exaktní, jako v~manuálu~\cite{ofsdoc}, ale zase mám zde +více místa k~rozepsání možností makra, než jsem měl ve +článku~\cite{stormcl}, který byl především o~Štormových fontech. + + +\kap Základy uživatelského rozhraní +%---------------------------------- + +Uživatelské rozhraní je shodné v~\LaTeX{}ové verzi OFS i +v~plainové s~výjimkou snad zavedení makra OFS, které v~plainu +provedeme jednoduše pomocí "\input ofs [kolekce, fontů]", zatímco +v~záhlaví \LaTeX{}ového dokumentu píšeme +"\usepackage [kolekce, fontů] {ofs}". + +Abych v~tomto textu nemusel každou chvíli větvit svůj výklad na situaci +vhodnou pro plain a pro \LaTeX{}, rozhodl jsem se zde předpokládat, že +pracujeme pouze s~plainem (například s~\csplain{}em). +\LaTeX{}ový uživatel si bude muset dohledat specifika verze OFS pro +svůj formát v~dokumentaci~\cite{ofsdoc}. + +\bigskip + +Příkazem "\fontusage" dostaneme na terminál a do logu základní +informace o~uživatelských příkazech: + +\begtt +$ tex ofs \\fontusage +This is TeX, Version 3.14159 (Web2C 7.3beta5) +(/usr/local/share/texmf/tex/csplain/ofs.tex +OFS (Olsak's Font System) based on plain initialized. <Oct. 2002> +(/usr/local/share/texmf/tex/csplain/ofsdef.tex)) +\fontusage: ============== Olsak's Font System, usage: ================= +\input ofs [sjannon, sdynamo, a35] ... for example +\showfonts ... shows all loaded font families (by previous \input) +\setfonts [Family/] ... local switch to the new family, after this, the + \rm, \bf, \it, bi will switch to the variants. The current size is used. +\setfonts [/size] ... local switch to the new size of fonts, the family is + not changed. The "size" has the following possible formats: + at<dimen> ... the same as \font\something=file at<dimen> + <dimen> ... the same as at<dimen> + <number> ... the same as at<number>pt + scaled<number> ... the same as \font\something=file scaled<number> + mag<decimal-number> fonts will be magnified by given coefficient + depend on current size of the fonts. +\setfonts [Family/size] ... switch to the new family at given size +\setfonts [Family-vr/] ... switch to the specified font, the current size + is used. The "vr" is acronym for variant (bf for example). +\setfonts [Family-vr/size] ... switch to the specified font. +\fontdef\name [Family/size] ... same as \gdef\name{\setfonts[Family/size]} + The "Family" or "size" parameter may be empty. +\fontdef\name [Family-vr/size] ... \name is fixed-font switch iff: + "size" is no empty and no mag<dec-number>. + Fixed-font switch "\name" is implemented as \global\font\name=file. +\setmath [size/size/size] ... set math it/rm as current it/rm + use PS Symbol +\nofontmessages, \logfontmessages, \displayfontmessages, \detailfontmessages + ... the levels of log. +* +\endtt + +Vidíme, že příkaz "\showfonts" nám ukáže kolekce fontů. Pokud jsme +nepoužili \uv{previous "\input"}, dopadne základní kolekce +(implementovaná přímo uvnitř OFS) takto: + +\begtt +*\showfonts +OFS (l.0): 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 +\endtt + +Názvy fontových rodin jsou zde uvedeny v~hranatých závorkách a vedle jsou +uvedeny přepínače variant, které pro danou rodinu je možné použít. + +Vidíme, že nejběžnější textové fonty Computer Modern jsou zaneseny +v~OFS do tří rodin "CMRoman", "CMSans" a "CMTypewriter". Myslím, že +netřeba dodávat, co to znamená. V~rodinách "CMSans" a "CMTypewriter" +není k~dispozici jinak obvyklá varianta "BoldItalic", pro kterou je +vyhrazen přepínač "\bi". V~rodině "CMTypewriter" nenajdeme ani +přepínač "\bf" pro tučnou variantu, ale zato můžeme použít +\uv{nadstandardní} variantu "\sl" (slanted), která je k~dispozici i +v~rodině "CMRoman". + +%OFS také přímo pracuje s~rodinami "Times", "Helvetica" a +%"Courier". +%Rodina "Helvetica" má kromě běžných variant ještě varianty +%zúžené, například "\nbf" znamená "NarrowBold". Pokud písmová rodina +%nemá skutečnou kurzívu, ale jen skloněnou variantu, je přesto tato +%varianta vymezena přepínačem "\it". +%Většina písmových rodin totiž +%dodržuje \uv{logiku čtyř variant}, pro které jsou v~OFS vyhrazeny +%právě přepínače "\rm", "\bf", "\it", "\bi". + +Deklarace dalších písmových rodin jsou zanášeny do deklaračních +souborů s~příponou "tex"% +\footnote{V \LaTeX{}ovém OFS se jedná o~příponu {\tt sty}.}. +V~každém distribuci \TeX{}u +doporučuji udržovat soubor volající všechny deklarační soubory +"allfonts.tex". Například na mém počítači vypadá tento soubor takto: + +\begtt +$ cat `kpsewhich allfonts.tex` +%%% All OFS families declared on this TeX +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Petr Olsak +\input a35 % PostScript 35 +\input ffonts % Another free fonts +\input btfonts % Bitstream fonts +\input skatalog % Stromtype foundry, 89 families +\endtt +% +Když tedy napíšu "$ tex allfonts \\showfonts \\end | less"~, dostanu +na svém počítači výpis zhruba tří set písmových rodin, každá obvykle +ve čtyřech variantách. Důležité je, že se v tom vyznám a nemusím +vzpomínat, jak se která metrika jmenuje. Následuje jen část výpisu. + +\begtt +OFS (l.0): 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 +a35.tex: + [AvantGarde/] \rm, \bf, \it, \bi + [Bookman/] \rm, \bf, \it, \bi + [NewCentury/] \rm, \bf, \it, \bi + [Palatino/] \rm, \bf, \it, \bi + [ZapfChancery/] \rm, - , \it, - + [ZapfDingbats/] \rm, - , - , - + [Symbol/] \rm, - , \it, - +ffonts.tex: + [Charter/] \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: +... + [DynaGroteskLE/] \rm, \bf, \it, \bi + [DynaGroteskD/] \rm, \bf, \it, \bi + [DynaGroteskR/] \rm, \bf, \it, \bi +... +stitul.tex: + [Alcoholica/] \rm, \bf, \it, - + [Monarchia/] \rm, \bf, - , - + [MonarchiaText/] \rm, \bf, - , - + [Clichee/] \rm, \bf, \it, \bi + [Regula/] \rm, - , \it, - + [Splendid/] \rm, \bf, \it, - , \script, \sans + [Cobra/] \rm, \bf, - , - + [ExcelScript/] \rm, - , - , - , \ext + [ExcelScriptText/] \rm, - , - , - , \ext + [Zeppelin/] \rm, \bf, - , - , \lr, \coll + [Negro/] \rm, - , - , - + [Farao/] \rm, \bf, - , - , \kr, \coll +... +slido.tex: + [Lido/] \rm, \bf, \it, \bi, \crm, \cbf +\endtt + +Ve výpisu je uveden i \TeX{}ový soubor, kde se deklarace odpovídajících +rodin skutečně nachází. Vidíme tedy, že "a35.tex" už obsahuje +deklarace rodin, ale například soubor "skatalog.tex" zřejmě obsahuje jen další +"\input sjannon", "\input sdynamo", "\input stitul" atd. +Když si pro svůj dokument vyberu třeba rodiny "JannonText", +"DynaGroteskR" a "Farao", pak místo toho, abych psal + +\begtt +\input ofs [allfonts] +\endtt +% +si vystačím~s +\begtt +\input ofs [sjannon, sdynamo, stitul] +\endtt +% +což způsobí načítání podstatně méně souborů s~deklaracemi fontových rodin. + +Pokud potřebuji vědět, jak ty fonty vypadají, napíšu například: + +\begtt +$ pdfcsplain ofscatal [sjannon, sdynamo, stitul] ; acroread ofscatal.pdf +\endtt +% +Soubor "ofscatal.tex", který vytvoří katalog, byl zařazen do balíku +OFS od verze~"Oct 2002". + +\kap Přepínač rodin a velikostí + +Hlavním příkazem OFS na uživatelské úrovni je "\setfonts". Jedná se +především o~přepínač rodin, viz výpis "\fontusage" v~předchozí sekci. +Přepínač má dva parametry v~hranaté závorce oddělené lomítkem. Prvním +parametrem je název rodiny a druhým požadovaná velikost fontů. Pokud +některý parametr chybí, přepínač nebude jeho nastavení měnit. Přepínač +samozřejmě funguje lokálně ve skupinách, jako bývá u~fontových +přepínačů obvyklé. Po přepnutí rodiny pracují přepínače variant +(obvykle "\rm", "\bf", "\it", "\bi") pro novou rodinu. Varianta se po +přepnutí rodiny inicializuje stejná, jako byla před přepnutím, +tj. jsme-li zrovna v~kurzívě rodiny Times a přepneme do Helveticy, +zůstáváme ve variantě "\it" rodiny Helvetica, tj. skloněné +písmo. Pokud ale při přepnutí rodiny aktuální varianta v~nové rodině +neexistuje, inicializuje se varianta "\rm", kterou musí obsahovat +každá rodina. + +Příklady + +\begtt +\setfonts [JannonText/10.5] % nastavím na začátku dokumentu +\setfonts [/14]\bf % například pro nadpisy +\setfonts [/8]\rm % pro poznámky pod čarou +\setfonts [DynagroteskR/]\it % třeba pro citáty +\setfonts [CMTypewriter/] % pro strojopis. + % tento přepínač např. v kurzívě nastaví automaticky + % variantu kurzíva-strojopis. +\endtt + +Výhodou tedy je, že si nemusím pamatovat názvy matrik (v~\LaTeX{}u pak +nesrozumitelné zkratky rodin používané v~NFSS), ale píšu název rodiny +do dokumentu stejným způsobem, jak jej vidím v~písmovém katalogu. +Pokud udělám v~názvu rodiny překlep (třeba nedodržím velká a malá +písmena), příkaz "\setfonts" spustí "\showfonts", tj. na obrazovce +a v~logu vidím seznam všech rodin, které mohu použít. + +Velikost fontů mohu nastavit přímo udáním v~jednotce "pt", nebo +připsáním jiné jednotky (např. "mm"), nebo jako u~primitivu "\font" +pomocí slova "scaled" (koeficient zvětšení se váže k~základní +velikosti fontu) a konečně i pomocí zcela nového prefixu "mag", který +udává zvětšení vzhledem ke zrovna použité velikosti fontů, například: + +\begtt +\def\maly{\setfonts [/mag0.8]} +stanu se {\maly menším a {\maly menším a {\maly ještě menším}}} +a už jsem se z toho dostal. +\endtt +% +dopadne takto: + +\medskip +\def\maly{\setfonts[/mag0.8]} +stanu se {\maly menším a {\maly menším a {\maly ještě menším}}} a +už jsem se z~toho dostal. +\medskip + +Prefix "mag" pro velikost využijeme například v~logu \LaTeX{}, které +jsem si v~plainu definoval jako + +\begtt +\def\LaTeX{L\kern-.2em\raise.45ex\hbox{\setfonts[/mag.7] A}\kern-.05em\TeX} +\endtt +% +a funguje to v~nadpisech (je tam tučné vyvýšené A~odpovídající +velikosti) i v~poznámkách pod čarou. V~\LaTeX{}u samotném mají toto +logo definováno tak, že se pro vyvýšené A~použije font v~indexové +velikosti. No jo, zde jim to náhodou prochází, ale co kdyby se +(například v~jiném v~logu) hodilo pro některé písmeno použít +velikost "mag.8", která není jako indexová velikost použita? +Bez OFS bychom to pak dělali dost obtížně, protože NFSS nám řešení +nenabízí. + +Dalším využitím prefixu "mag" je možnost korigovat nestejné střední +výšky písma. Například v~tomto sborníku je pro strojopis použit +"CMTypewriter". Pokud si všimnete v~jiných příspěvcích, než tento, +vidíte, že uvnitř odstavců ten strojopis s~fontem Charter moc nesedí, protože +strojopis má menší střední výšku písma. Stačí ale pro přepínač "\tt" +použít "\setfonts [CMTypewriter/mag1.1]", a střední výška je +v~lati. To vidíme například v~tomto příspěvku. +A~funguje to včetně zmenšených variant, které jsou +v~příspěvcích pro \SLT{} použity v~abstaktu, poznámce pod čarou, +nebo třeba v~údaji \uv{Email}, uvedeném v~záhlaví příspěvku. + +Příkaz "\setfonts" může obsahovat i specifikaci varianty (viz výpis +příkazu "\fontusage"). Pak se už nejedná o~přepínač rodiny, ale fontu +samotného. V~takovém případě přepínač "\setfonts" neovlivní přepínače +variant "\rm", "\bf" a dalších, ale nastaví jen požadovaný jediný +font. Například pro nadpisy by šlo psát "\setfonts[-bf/14]" místo +"\setfonts[/14]\bf", ale museli bychom mít jistotu, že v~nadpisu +nepoužijeme přepínač varianty, protože ten by vrátil font do velikosti +aktuální rodiny. Tou velikostí je třeba 10pt. + +Abychom v~nadpisu mohli použít přepínač "\it", a přitom se dostali do +varianty "\bi" (což je žádoucí), je potřeba přepínač fontu v~makru +pro nadpis naprogramovat zhruba takto: + +\begtt +\def\nadpis #1{{\setfonts[/14]\bf \let\it=\bi #1}} +\endtt +% +Kvůli tomuto jednoduchému obratu, který zvládne snad každý plainista, +jsem se rozhodl nekomplikovat jádro OFS podobným způsobem jako NFSS a +nezavádět tedy další \uv{nezávislou souřadnici} popisující duktus fontu. +Pro speciální rodiny fontů (jako je třeba rodina +"DynaGrotesk") jsem ale snadno pomocí doplňujících maker vytvořil +přepínač, který respektuje ještě o~jednu \uv{nezávislou souřadnici} +více, než zvládá NFSS. V~tomto případě to nebyl jen duktus, ale +i stupeň zúžení písma. Navíc tento přepínač dokáže \uv{poskakovat} po +jednotkách vpřed a vzad podél zvolené souřadnice. To také NFSS +nezvládá. + +Často se hodí vytvářet zkratky pro přepínače rodin. K~tomu slouží +makro "\fontdef\přepínač[Rodina/velikost]", které funguje podobně, +jako použití konstrukce "\gdef\přepínač{\setfonts[Rodina/velikost]}". +V~záhlaví tohoto dokumentu mám například uvedeno: + +\begtt +\input ofs [ffonts] % Charter je ve skupině free fonts +\setfonts [Charter/10pt] % výchozí rodina +\fontdef\tt [CMTypewriter/mag1.1] % strojopis, korekce střední výšky +\fontdef\verbtt [CMTypewriter/8] % strojopis pro display ukázky +\fontdef\small [Charter/9] % zmenšení pro abstrakt a záhlaví +\endtt + +Možná čtenáře napadne, že jsem nemusel psát podruhé slovo "Charter" +v~deklaraci přepínače "\small". Při kompletní změně základní rodiny +dokumentu na jinou bych pak mohl změnit slovo "Charter" jen na +jediném místě (u~příkazu "\setfonts") a byl bych hotov. +Bohužel, vynechání rodiny v~příkazu "\small" vede +k~problémům, protože tento příkaz je použit v~záhlaví dokumentu, +tj. ~v~"\output" rutině. Pokud zde neuvedeme explicitně rodinu, dědí se +rodina aktuálně použitá, která ovšem může být jakákoli, protože +"\output" rutina je vyvolávaná z~různých míst při zpracování +dokumentu. Mít záhlaví jednou strojopisem a podruhé Charterem podle +toho, odkud byla "\output" rutina zavolána, je samozřejmě nežádoucí. + +Tento problém se dá řešit \uv{vykřičníkovou} konvencí, kterou umí +zpracovat příkaz "\fontdef": + +\begtt +\fontdef\small [!/9] \addcmd\small {\rm} % pro abstrakt a záhlaví +\endtt +% +Vykřičník je nahrazen aktuální rodinou už v~době činnosti příkazu +"\fontdef", nikoli tedy až v~době provádění přepínače. V~"\output" +rutině se musíme ještě postarat o~potlačení dědičnosti aktuální +varianty. Proto jsem použil ještě příkaz "\addcmd" (zaveden nově od +verze OFS "Oct 2002"), který k~existujícímu makru přidá další příkazy +na jeho konec. Celá deklarace fontů v~tomto dokumentu tedy vypadá +zhruba takto: + +\begtt +\input ofs [ffonts] % Charter je ve skupině free fonts +\setfonts [Charter/10pt] % výchozí rodina +\fontdef\tt [CMTypewriter/mag1.1] % strojopis, korekce střední výšky +\fontdef\verbtt [CMTypewriter-rm/8] % strojopis pro display ukázky +\fontdef\small [!/9] +\addcmd \small {\baselineskip11pt\rm} % zmenšení pro abstrakt a záhlaví +\fontdef\fontsekce [!/12] +\addcmd \fontsekce {\bf \let\it=\bi} % pro nadpisy sekcí +\fontdef\fonttitul [!-bf/14.4] % v titulu nebudeme přepínat varianty +\endtt + +Povedlo se tedy veškeré aktivity související s~výběrem fontů +soustředit na jedno místo dokumentu bez nutnosti používat názvy +metrik. + + +\kap Kódování fontů +%------------------ + +OFS pro plain implicitně pracuje v~kódování \CSfont{}ů, ale můžete +jej přepnout do jiného kódování. +\footnote{OFS pro \LaTeX{} přenechává starost o~kódování zcela na~NFSS.} + +Základem informace o~kódování v~OFS pro plain je makro "\fotenc", +které má implicitně hodnotu "8z". To znamená, že rodiny "CMRoman", +"CMTypewriter" a "CMSans" budou pracovat s~\CSfont{}y. +Kdyby uživatel nastavil "\def\fotenc{8t}", začalo by OFS pracovat +v~případě těchto rodin s~DC nebo EC fonty. Jaké je technické pozadí +vysvětlíme v~následující sekci. + +Většina metrik \ps{}ových fontů má varianty "*8t" (pro +kódování podle Corku) a "*8z" (pro kódování podle \CSfont{}ů). +Makro "\fotenc" tedy musí obsahovat koncovku metrik, které chceme +použít. Tím volíme kódování. Příklad: + +\begtt +\input ofs +\setfonts [Times/] text 1 % metrika: ptmr8z, tj. kódování CSfontů +\def\fotenc{8t} +\setfonts [/] text 2 % metrika: ptmr8t tj. kódování podle Corku +\endtt +% +Máte-li své fonty v~nějakém dalším kódování a koncovky metrik máte +s~názvy třeba "*8x", pak není problém napsat "\def\fotenc{8x}" +a můžete začít používat své vlastní metriky. + +Pokud používáte kódování podle Corku, doporučuji definovat makro +"\fotenc" jako "8t" před zavedením makra OFS. Při použití složitěji +deklarovaných rodin se to hodí. + +V~balíku OFS jsou soubory "ofs-8z.tex" a "ofs-8t.tex", ve kterých je +deklarace akcentů a některých na kódování závislých maker, jako +například "\promile". Implicitně není načten ani jeden z~těchto +souborů, tj.~jsou respektována makra pro akcenty z~originálního +plainu, která expandují na "\accent" podle kódování CMfontů. + +Pokud je toto chování nevyhovující, můžete načíst pomocí "\input" +jeden nebo oba dva výše zmíněné soubory (v~libovolném pořadí -- jejich +definice se nehádají). Pokud načtete oba soubory, pak makra pro +akcenty expandují na znaky podle kódování, které je aktuálně nastaveno +v~makru "\fotenc" ("8z" nebo "8t"). + +Podívejme se do souborů "ofs-8z.tex" a "ofs-8t.tex" (výrazně kráceno): + +\begtt +%%% Default accents in CM +\accentdef \` * 8z {\accent 18 } % grave +\accentdef \' * 8z {\accent 19 } % acute +\accentdef \v * 8z {\accent 20 } % caron +\accentdef \u * 8z {\accent 21 } % breve +... +%%% Standard characters in plain (redefined here) +\def\aa{\r a} +\def\AA{\r A} +\characterdef \i 8z 16 +\characterdef \j 8z 17 +\characterdef \SS 8z {SS} +\characterdef \AE 8z 29 +... +%%% Extra characters from CS-fonts +\characterdef \promile 8z 141 +\characterdef \varhyphen 8z 156 +\characterdef \flqq 8z 158 +\characterdef \frqq 8z 159 +\characterdef \clqq 8z 254 +\characterdef \crqq 8z 255 +... +%%% Accented letters from CS fonts +\accentdef \` A 8z 152 +\accentdef \' A 8z 193 +\accentdef \" A 8z 196 +\accentdef \` a 8z 184 +\accentdef \' a 8z 225 +... +%%% Default accents in Cork +\accentdef \` * 8t {\accent 0 } +\accentdef \' * 8t {\accent 1 } +\accentdef \^ * 8t {\accent 2 } +\accentdef \~ * 8t {\accent 3 } +\accentdef \" * 8t {\accent 4 } +... +%%% Standard characters in plain (redefined here) +\def\aa{\r a} +\def\AA{\r A} +\characterdef \i 8t 25 +\characterdef \j 8t 26 +\characterdef \SS 8t 223 +\characterdef \AE 8t 198 +... +\characterdef \promile 8t {\%\char 24 } +\characterdef \textpertenthousand 8t {\%\char 24\char 24 } +... +%%% Accented letters from Cork encoding +\accentdef \. i 8t `\i +\accentdef \u A 8t 128 +\accentdef \k A 8t 129 +\accentdef \' C 8t 130 +\accentdef \v C 8t 131 +... +\endtt + +Myslím, že syntaxe a význam příkazů "\characterdef" a "\accentdef" je +v~této ukázce samovysvětlující. Pokud ne, odkazuji čtenáře do +dokumentace~\cite{ofsdoc}, která do posledního detailu (včetně popisu +jednotlivých fází expanze) vysvětluje činnost těchto příkazů. + +\LaTeX{}ovému uživateli to může připomínat příkazy +"\DeclareTextSymbol" a "\DeclareTextComposite" a jim podobné, které +dělají zhruba totéž (jen poněkud komplikovaněji, nepřehledněji a +těžkopádněji). + +OFS také počítá s~možností, že některé znaky jsou přidány do extra +fontu, který s~původním fontem vytváří uspořádanou dvojici. Takové +dvojice metrik jsou použity například pro fonty Štormovy písmolijny, +protože obsahují více než 256 znaků. Přitom by bylo škoda některé +znaky nevyužít. Ke každé metrice těchto fontů ("*8z" i "*8t") je +přiřazena extra metrika "*6s", obsahující zbylé znaky. +Pomocí "\characterdef" a "\accentdef" můžeme deklarovat přítomnost +těchto znaků v~kódování "6s" (viz soubor "stormenc.tex"). Pokud +aktuální metrika má k~sobě extra font v~kódování "6s" a je požadován +znak z~tohoto fontu, OFS jej automaticky \uv{vyloví} pomocí +přechodného přepnutí na extra metriku. + + +\kap Deklarace rodin +%------------------- + +Podívejme se nyní do souboru "a35.tex", který deklaruje rodiny pro +základních 35 \ps{}ových fontů (kráceno): + +\begtt +%%% Times, Helvetica, Courier is in OFS defaults + +\ofsdeclarefamily [AvantGarde] {% -------------------- AvantGarde + \loadtextfam (Book) pagk\fotenc;% + (Demi) pagd\fotenc;% + (BookOblique) pagko\fotenc;% + (DemiOblique) pagdo\fotenc;;% + \def\TeX{T\kern-.08em\lower.3333ex\hbox{E}\kern-0.09emX}% +} +\ofsdeclarefamily [NewCentury] {% -------------------- NewCenturySchlbk + \loadtextfam (Roman) pncr\fotenc;% + pncb\fotenc;% + pncri\fotenc;% + pncbi\fotenc;;% + \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}% +} +... +\endtt + +Zde je tedy deklarováno zobrazení mezi názvy rodin a metrikami.% +\footnote{ + V~OFS pro \LaTeX{} takové soubory neexistují; tam se pouze + deklaruje zobrazení mezi (dlouhými) názvy rodin v~OFS a zkratkami + rodin v~NFSS. +} +Každá rodina má čtyři povinné metriky (pro běžné čtyři +varianty). Metriky jsou zapsány pomocí "\fotenc", aby fungovalo +přepínání kódování. Mezi předposledním a posledním středníkem může být +uvedeno extra kódování, pokud je font rozložen do dvou metrik (v~tomto +příkladě není). Příkazy uvedené v~parametru "\ofsdeclarefamily" se +provedou při každém přepnutí rodiny příkazem "\setfonts". +V~ukázce tam máme alternativní definice loga "\TeX", aby toto logo pěkně +vypadalo v~každém fontu. + +Od verze OFS "Oct 2002" je přidána možnost použít nepovinné parametry +v~argumentech příkazu "\loadtextfam". Tyto parametry píšeme do kulaté +závorky a značí název varianty, pokud je odlišný od běžného názvu. +Tato informace se použije v logu a při tisku katalogu. + +Podívejme se ještě do souboru "sjannon.tex" z~podpory Štormových fontů +(výpis je zde neúplný): + +\begtt +\ofsdeclarefamily [JannonAntikva] {% -------- Jannon Antikva + \loadtextfam sjnr\fotenc;% + sjnb\fotenc;% + sjnri\fotenc;% + sjnbi\fotenc;6s;% + \newvariant2 \mr (Medium) sjnm\fotenc;6s;% + \newvariant3 \mi (MediumItalic) sjnmi\fotenc;6s;% +} +\ofsdeclarefamily [JannonText] {% ------------ Jannon Text + \loadtextfam sjnrg\fotenc;% + sjnbg\fotenc;% + sjnrig\fotenc;% + sjnbig\fotenc;6s;% + \newvariant2 \mr (Medium) sjnmg\fotenc;6s;% + \newvariant3 \mi (MediumItalic) sjnmig\fotenc;6s;% +} +... +\endtt +% +Vidíme, že navíc je zde deklarována extra metrika v~kódování~"6s" a že +se zde deklarují doplňující přepínače variant "\mr" a "\mi" mimo +základní čtyři varianty. Podrobnější vysvětlení použitých příkazů +čtenář opět najde v~dokumentaci~\cite{ofsdoc}. + +Jak jsou pomocí expanze "\fotenc" mapovány metriky \CSfont{}ů +resp. DC~fontů, které v~názvech koncovku "8z" ani "8t" nemají? +To souvisí rovněž s~tím, že tyto fonty mají pro různé velikosti různé +metriky. V~deklaračních souborech je pak tento problém vyřešen +způsobem \uv{dvě mouchy jednou ranou} (viz soubor "ofsdef.tex"): + +\begtt +\registertfm cmr8z - csr10 % metrika pro všechny velikosti +\registertfm cmr8z 0pt-6pt csr5 +\registertfm cmr8z 6pt-7pt csr6 +\registertfm cmr8z 7pt-8pt csr7 +\registertfm cmr8z 8pt-9pt csr8 +\registertfm cmr8z 9pt-10pt csr9 +\registertfm cmr8z 10pt-12pt csr10 +\registertfm cmr8z 12pt-17pt csr12 +\registertfm cmr8z 17pt-* csr17 +... +\registertfm cmr8t - dcr10 % metrika pro všechny velikosti +... +\ofsdeclarefamily [CMRoman] {% ------------ Computer Modern Roman + \loadtextfam cmr\fotenc;% + cmbx\fotenc;% + cmti\fotenc;% + cmbxti\fotenc;;% + \newvariant8 \sl (Slanted) cmsl\fotenc;;% +} +\endtt +% +Centrálním příkazem je zde makro "\registertfm", které mapuje +neexistující metriky formálně vytvořené pomocí expanze "\fotenc" do +skutečných metrik. Toto makro také umí registrovat různé metriky +pro různé velikosti. Pokud tedy budeme chtít font daný pomocí +"\setfonts[CMRoman-rm/12.5]", vyvolá se při "\fotenc" +s~hodnotou "8z" metrika "csr12 at12.5pt". \uv{Metrika pro všechny +velikosti} se použije v~případě, že je velikost fontu deklarovaná +s~\hbox{prefixem} "scaled", takže "\setfonts[CMRoman-rm/scaled1250]" vyvolá +metriku "csr10 scaled1250". Ztrácíte-li přehled o~tom, jaká metrika se +ve skutečnosti použila, můžete zapnout logovací přepínač +"\detailfontmessages". + +Podíváte-li se do souboru "ofsdef.tex" podrobněji, můžete si všimnout, že +jsem metriky rodiny "CMRoman" a dalších "CM"~rodin pro kódování~"8t" poněkud +odbyl. Registroval jsem je jako metriky DC fontů bez střídání metrik pro +různé velikosti. Nechtělo se mi to totiž vypisovat a nevěděl jsem, zda +uživatel tohoto kódování raději nepoužije EC fonty místo DC fontů. +Ve zmíněném souboru jsou příklady, jak by se ta deklarace měla +provést. Pokud ji někdo dopíše (například pro DC i EC fonty do zvláštních +souborů), rád ji do balíku OFS zařadím. Osobně ale fonty kódované +v~"8t" nepoužívám, takže mě zatím nic nemotivuje to udělat. + + +\kap Matematické fonty +%--------------------- + +Každý plainista ví, že fonty pro matematiku se sdružují do matematických +rodin obsahující font pro základní, indexovou a index-indexovou +velikost. Rovněž ví, že první čtyři matematické rodiny (s~číslem 0 až~3) +jsou s~\TeX{}em jistým způsobem pevně významově svázány a další rodiny +se dají deklarovat. + +Aby plainista při deklarování matematických rodin nemusel psát třikrát +za sebou "\font" a potom ještě +"\textfont\rodina=...", "\scriptfont...", atd, je v~OFS k~tomu +vytvořena zkratka "\loadmathfam", jak ukážu za chvíli. + +Inicializaci matematických fontů v~OFS pro plain provedeme pomocí +příkazu "\setmath". Dokud tento příkaz nepoužijeme, jsou matematické +fonty ve stavu, jak je inicializoval plain. Ve třech parametrech +příkazu "\setmath" (oddělených lomítky) dáváme najevo, jakou chceme +základní velikost, jakou pro indexy a jakou pro indexy +indexů. Jsou-li tyto parametry prázdné, je použito relativní zmenšení +podle aktuální velikosti textového fontu pomocí prefixu "mag" takto: + +\begtt +\setmath [//] je totéž jako \setmath [mag1.0/mag.7/mag.5] +\endtt + +Příkaz "\setmath" vypočítá požadované velikosti a startuje makro pro +zavedení fontů "\mathfonts". Dále tento příkaz startuje makro pro +inicializaci matematického kódování "\mathchars". Tato makra si může +plainista definovat jak chce, nicméně většinou využije již +připravených maker "\defaultmathfonts" a "\defaultmathchars", která +jsou udělána tak, že spouštějí různé varianty kódu podle hodnoty maker +"\fomenc" a "\mathversion". + +Při "\def\fomenc{PS}" (imlicitní hodnota: PostScriptové fonty) se zavedou +fonty tak, že matematická kurzíva se ztotožní s~aktuální textovou +kurzívou a podobně rodina~0 pro číslice a textové symboly zůstává +nastavena podle aktuální textové rodiny varianty "\rm". +Matematické symboly se berou +(pokud to je možné) z~běžně dostupného \ps{}ového fontu +"Symbol". Zbytek (např. natahovací závorky) pak zůstává v~Computer +Modern. Matematické kódování je pro tuto situaci výrazně +pozměněno obvyklými primitivy "\mathchardef" a podobnými, aby byly +dosažitelné všechny znaky plainu. Například pro řecká písmena musela být +zavedena nová rodina se skloněným fontem "Symbol" a příkazy typu "\alpha" jsou +překódovány z~původní matematické rodiny~1 na tuto novou rodinu. + +Nastavíte-li "\def\fomenc{CM}", pak příkaz "\setmath" zavede +stejné matematické fonty z~rodiny Computer Modern, jako +v~plainu. Příkaz "\setmath[//]" pak pouze aktualizuje velikosti těchto fontů +podle velikosti aktuálního textového fontu. + +Nakoupíte-li fonty MathTimes, dále načtete soubor "ofsmtdef.tex" (součástí +OFS od verze "Jun. 2002") a definujete "\def\fomenc{MT}", pak příkaz +"\setmath" zavede kurzívu a rodinu~0 stejně jako při +"\def\fomenc{PS}", ale navíc použije pro {\it všechny\/} symboly včetně +natahovacích závorek fonty MathTimes. + +Kromě hodnoty "\fomenc" se příkaz "\setmath" větví i vzhledem +k~hodnotě makra "\mathversion". Implicitně OFS počítá se dvěma +hodnotami tohoto mak\-ra: "\def\mathversion{normal}" nebo "bold". +Při verzi "bold" jsou načteny do matematických rodin tučné alternativy +fontů, pokud to jde. Vše názorně vysvětlí pohled do souboru +"ofsdef.tex": + +\begtt +\def\defaultmathfonts{\csname load\fomenc\mathversion math\endcsname} +\def\defaultmathchars{\csname set\fomenc mathchars\endcsname} +\def\mathfonts{\defaultmathfonts} +\def\mathchars{\defaultmathchars + \let\mathchars=\relax % to protect the twice math-setting +} +\def\loadPSnormalmath{% + \loadmathfam 0[tenrm/]% Actual Roman font + \loadmathfam 1[tenit/]% Actual Italic font + \loadmathfam 2[/cmsy]% Standard symbols from CM + \noindexsize\loadmathfam 3[tenex/]% Standard extra symbols from CM + \chardef\itfam=1 \chardef\bifam=5 + \loadmathfam \bffam [tenbf/]% Actual Bold font + \loadmathfam \bifam [tenbi/]% Actual Bold Italic + \newmathfam\symbfam + \loadmathfam \symbfam [/psyr]% PostScript Symbol + \newmathfam\symbofam + \loadmathfam \symbofam [/psyro]% PostScript Symbol Oblique +} +\def\loadPSboldmath{% + \loadmathfam 0[tenbf/]% Actual Bold font + \loadmathfam 1[tenbi/]% Actual Bold-Italic font +... +} +\def\loadCMnormalmath{% + \loadmathfam 0[/cmr8z]% Roman font + \loadmathfam 1[/cmmi]% Math Italic font + \loadmathfam 2[/cmsy]% Standard symbols from CM + \noindexsize\loadmathfam 3[/cmex10]% Standard extra symbols from CM +... +} +\def\loadCMboldmath{% + \loadmathfam 0[/cmbx8z]% Roman font + \loadmathfam 1[/cmmib10]% Math Italic font +... +} +\def\setPSmathchars{% + \fontmessage{\ofsmessageheader Math codes are set for PS encoding}% + \mathcode`\,="602C + \mathcode`\.="002E + \delcode`\<="\hex\symbfam E130A + \delcode`\>="\hex\symbfam F130B + \delcode`\|="\hex\symbfam 7C30C + \edef\langle{\delimiter"4\hex\symbfam E130A }% + \edef\rangle{\delimiter"5\hex\symbfam F130B }% + \mathchardef\alpha "0\hex\symbofam 61 + \mathchardef\beta "0\hex\symbofam 62 + \mathchardef\gamma "0\hex\symbofam 67 +... +} +\endtt + +Chceme-li přidat nějaké další matematické rodiny (v~terminologii NFSS +matematické abecedy), pak můžeme postupovat třeba takto: + +\begtt +\def\mathfonts{\defaultmathfonts + \newmathfam\bbfam + \loadmathfam \bbfam [/bbold12]% Dvojitá vertikální kresba + \def\bb{\fam\bbfam}% +} +\def\mathchars{\defaultmathchars + \mathchardef\balpha "0\hex\bbfam 0B + \mathchardef\bbeta "0\hex\bbfam 0C + ... +} +\endtt + +Příklad z~konce sekce~3 nyní obohatíme o~možnost práce +s~matematikou v~libovolných velikostech: + +\begtt +\input ofs [ffonts] % Charter je ve skupině free fonts +\setfonts [Charter/10pt] % výchozí rodina +\setmath[//] % inicializace matematiky +\fontdef\tt [CMTypewriter/mag1.1] % strojopis, korekce střední výšky +\fontdef\verbtt [CMTypewriter-rm/8] % strojopis pro display ukázky +\fontdef\small [!/9] % zmenšení pro abstrakt a záhlaví +\addcmd \small {\baselineskip11pt \rm \def\mathversion{normal}\setmath[//]} +\fontdef\fontsekce [!/12] % pro nadpisy sekcí +\addcmd \fontsekce {\bf \let\it=\bi \def\mathversion{bold}\setmath[//]} +\fontdef\fonttitul [!-bf/14.4] % titul +\endtt + +Nyní i v~abstraktech, poznámkách pod čarou a záhlavích je matematika +ve všech velikostech všech možných indexů zmenšená odpovídajícím +způsobem. Pokud by se matematika měla použít v~názvu sekce, pak bude +také tučná a správně veliká. + + +\reference + +\bib \url{www.pismolijna.cz}, \url{www.cstug.cz/stormtype}. + +\bib \url{ftp://math.feld.cvut.cz/pub/olsak/ofs}. + +\bib Petr Olšák. {\it OFS: Olšákův fontový systém}. 2001. + Dokumentace k~balíku je v~souborech "ofsdoc.tex", "ofsdoc.pdf". + +\bib Petr Olšák. {\it Jak \TeX{} k~fontům ze Střešovic přišel}. Zpravodaj + Československého sdružení uživatelů \TeX{}u, 4/2001, pp~153--180. + +\bye + |