6 Používateµská príručka ku systému Web2c

Web2c obsahuje množinu TeX-príbuzných programov, t.j. samotný TeX, METAFONT, MetaPost, BIBTeX, atď. Originálna implementácia pochádza od Tomáša Rokického, ktorý v roku 1987 vyvinul prvý TeX-to-C systém adaptujúci zmenové súbory systému pre Unix, ktoré boli v prvom rade prácou Howarda Trickeya a Pavla Curtisa. Tim Morgan sa stal spravovateµom systému a počas jeho obdobia sa meno zmenilo na Web-to-C. V roku 1990 Karl Berry prebral túto prácu, asistoval pri tuctoch dodatočných príspevkov a v roku 1997 podal taktovku Olafovi Weberovi. Posledným výsledkom je Web2c (verzia 7.3) z marca 1999, ktorý tvorí základ súčasného TeX Live CD-ROM.

Web2c 7.3 systém beží pod Unixom, Windows 3.1, 9x/NT, DOS a inými operačnými systémami. Používa originálne TeX zdrojové súbory od Knutha a ostatné základné programy napísané vo web, ktoré sú preložené do C zdrojového kódu. Navyše, systém ponúka veµkú množinu makier a funkcií vyvinutých na rozšírenie originálneho TeX software. Základné komponenty rodiny TeXu sú:

bibtex
Spravovanie bibliografií.
dmp
Konverzia troff do MPX (MetaPost obrázky).
dvicopy
Vytvára modifikovanú kópiu DVI súboru.
dvitomp
Konverzia DVI do MPX (MetaPost obrázky).
dvitype
Konverzia DVI do µudsky-čitateµného textu.
gftodvi
Generovanie fontov pre náhµad.
gftopk
Konverzia gf formátu fontov do pakovaných fontov.
gftype
Konverzia gf formátu fontov do µudsky-čitateµného textu.
makempx
MetaPost značkové sádzanie.
mf
Vytváranie rodín fontov.
mft
Preddefinované METAFONTové zdrojové súbory.
mpost
Tvorba technických diagramov.
mpto
MetaPost značkový výber.
newer
Porovnanie modifikačných časov.
patgen
Vytvaránie vzorov rozdeµovania slov.
pktogf
Konverzia pakovaných formátov fontov do gf formátov.
pktype
Konverzia pakovaných písiem do µudsky-čitateµného textu.
pltotf
Konverzia ‘Property list’ do TFM.
pooltype
Zobrazovanie ‘web pool’ súborov.
tangle
Konverzia web súborov do Pascalu.
tex
Sadzba.
tftopl
Konverzia TFM do ‘property list’.
vftovp
Konverzia virtuálneho fontu do virtuálneho ‘property list´.
vptovf
Konverzia virtuálneho ‘property list´ do virtuálneho fontu.
weave
Konverzia web súborov do TeXu.

Presné funkcie a syntax týchto programov sú popísané v dokumentáciách jednotlivých balíkov alebo dokumentácii Web2c. Napriek tomu, poznanie niekoµkých princípov, ktoré platia pre celý balík programov vám pomôže vy»aži» čo najviac z vašej Web2c inštalácie.

Všetky programy dodržiavajú štandardné GNU voµby:

--help   
Vypisuje prehµad základného používania.
--verbose
Vypisuje detailnú správu spracovania.
--version
Vypisuje informáciu o verzii, potom skončí.

Na vyhµadávanie súborov používajú Web2c programy prehµadávaciu knižnicu Kpathsea. Táto knižnica používa kombináciu premenných prostredia a niekoµkých konfiguračných súborov na optimalizáciu prehµadávania adresárového stromu TeXu. Web2c 7.3 zvládne prácu s viacerými adresárovými stromami súčasne, čo je užitočné, keď niekto chce udržiava» štandardnú distribúciu TeXu a jeho lokálne rozšírenia v dvoch rozličných stromoch. Na urýchlenie vyhµadávania súborov, koreň každého stromu obsahuje súbor ls-R so záznamom obsahujúcim meno a relatívnu cestu ku všetkým súborom umiestneným pod týmto koreňom.

6.1 Vyhµadávanie ciest knižnicou Kpathsea

Najprv popíšeme všeobecný mechanizmus vyhµadávania ciest knižnicou Kpathsea.

Vyhµadávacou cestou nazveme zoznam elementov cesty, ktorými sú v prvom rade mená adresárov oddelené dvojbodkou alebo bodkočiarkou. Vyhµadávacia cesta môže pochádza» z viacerých zdrojov. Pri vyhµadávaní súboru "my-file" podµa cesty ".:/dir", Kpathsea skontroluje každý element cesty: najprv ./my-file, potom /dir/my-file, vracajúc prvý zodpovedajúci nájdený prvok (alebo prípadne všetky zodpovedajúce prvky).

Aby bolo dosiahnuté prispôsobenie sa konvenciám čo možno najviac operačných systémov, na neunixových systémoch Kpathsea môže používa» oddeµovače názvov súborov rôzne od dvojbodky (":") a lomítka ("/").

Pri kontrolovaní určitého elementu cesty p Kpathsea najprv overí, či sa na naň nevz»ahuje vopred vybudovaná databáza (pozri ‘Databáza názvov súborov’ na strane 32), t.j., či sa databáza nachádza v adresári, ktorý je prefixom p. Ak tomu tak je, špecifikácia cesty sa porovnáva s obsahom databázy.

Ak databáza neexistuje, alebo sa nevz»ahuje na tento element cesty, alebo sa v nej hµadaný súbor nevyskytuje, celý systém súborov je prehµadaný (pokiaµ to nebolo zakázané špecifikáciou začínajúcou "!!" a hµadaný súbor musí existova»). Kpathsea zostrojí zoznam adresárov zodpovedajúcich tomuto elementu cesty a potom skontroluje každý z nich, či sa v ňom nenachádza hµadaný súbor.

Podmienka ‘súbor musí existova»’ sa týka napr. súborov typu ".vf" a vstupných súborov čítaných príkazom TeXu \openin. Takéto súbory nemusia existova» (napr. cmr10.vf) a nebolo by dobré prehµadáva» kvôli nim celý disk. Preto, keď zabudnete aktualizova» ls-R pri inštalácii nového ".vf" súboru, súbor nebude nikdy nájdený. Každý element cesty sa prekontroluje — najprv databáza, potom disk. Keď je súbor nájdený, vyhµadávanie sa zastaví a výsledok je vrátený .

Hoci najjednoduchší a najbežnejší element cesty je meno adresáru, Kpathsea podporuje aj iné zdroje vo vyhµadávacích cestách: dedičné (layered) štandardné hodnoty, mená premenných prostredia, hodnoty súboru config, domáce adresáre používateµov a rekurzívne prehµadávanie podadresárov. Preto, keď hovoríme, že Kpathsea rozbalí element cesty, znamená to, že pretransformuje všetky špecifikácie do základného mena alebo mien adresárov. Toto je popísané v nasledujúcich odsekoch.

Všimnite si, že keď je meno hµadaného súboru vyjadrené absolútne alebo explicitne relatívne, t.j. začína "/" alebo "./" alebo "../", Kpathsea jednoducho skontroluje, či taký súbor existuje.

6.1.1 Zdroje cesty
Vyhµadávacia cesta môže by» vytvorená z rôznych zdrojov. Kpathsea ich používa v tomto poradí:
  1. Používateµom nastavená premenná prostredia, napríklad TEXINPUTS. Premenné prostredia s pridanou bodkou a menom programu prepisujú momentálne nastavené; napríklad, keď "latex" je meno práve bežiaceho programu, potom premenná TEXINPUTS.latex prepíše TEXINPUTS.
  2. Programovo-špecifický konfiguračný súbor, napríklad riadok ‘S /a:/b’ v súbore config.ps dvips.
  3. Konfiguračný súbor Kpathsea — texmf.cnf, obsahujúci riadok ako "TEXINPUTS=/c:/d" (pozri ďalej).
  4. Predvolené hodnoty počas kompilácie.

Všetky tieto hodnoty vyhµadávacej cesty môžete prezera» použitím debugovacích možností (pozri ‘Debuggovanie’ na strane 40).

6.1.2 Konfiguračné súbory
Kpathsea číta počas behu z konfiguračných súborov s menom texmf.cnf vyhµadávaciu cestu a ďalšie definície. Vyhµadávacia cesta používaná na hµadanie týchto súborov sa volá TEXMFCNF (v predvolenom nastavení sa tento súbor nachádza v podadresári texmf/web2c). Všetky súbory texmf.cnf vo vyhµadávacej ceste budú prečítané a definície v novších súboroch prepíšu definície v starších. Preto pri vyhµadávacej ceste .:$TEXMF, hodnoty z ./texmf.cnf prepíšu hodnoty z $TEXMF/texmf.cnf.

Pri čítaní popisu formátu súboru texmf.cnf, ktorý sa nachádza nižšie, pozrite si prosím aj prílohu 9, začínajúcu na strane 50, kde sa nachádza výpis súboru texmf.cnf z CD-ROMu.

Ukážkový úsek konfiguračného súboru, ilustrujúci väčšinu týchto bodov nasleduje pod textom:


  TEXMF              = {$TEXMFLOCAL;!!$TEXMFMAIN}
  TEXINPUTS.latex    = .;$TEXMF/tex/{latex;generic;}//
  TEXINPUTS.fontinst = .;$TEXMF/tex//;$TEXMF/fonts/afm//
  % e-TeX related files
  TEXINPUTS.elatex   = .;$TEXMF/{etex;tex}/{latex;generic;}//
  TEXINPUTS.etex     = .;$TEXMF/{etex;tex}/{eplain;plain;generic;}//
6.1.3 Expanzia cesty

Kpathsea rozpoznáva určité zvláštne znaky a konštrukcie vo vyhµadávacích cestách podobné tým, čo existujú v prostrediach Unixovských módov (shells). Ako všeobecný príklad uvedieme komplexnú cestu Ż$USER/{foo,bar}//baz, ktorá sa expanduje do všetkých podadresárov pod adresármi foo a bar v domovskom adresári používateµa $USER, ktorý obsahuje adresár alebo súbor baz. Tieto konštrukcie sú popísané v ďalších odsekoch.

6.1.4 Predvolená expanzia
Ak vyhµadávacia cesta s najväčšou prioritou (pozri ‘Zdroje cesty’ na strane 28) obsahuje dvojbodku navyše (t.j. začiatočnú, koncovú, alebo zdvojenú), Kpathsea vloží na toto miesto vyhµadávaciu cestu s druhou najvyššou prioritou, ktorá je definovaná. Ak táto vložená cesta obsahuje dvojbodku navyše, to isté sa stane s ďalšou najvýznamnejšou cestou. Keby sme mali napríklad dané takéto nastavenie premennej prostredia

>> setenv TEXINPUTS /home/karl:
a hodnotu TEXINPUTS v súbore texmf.cnf

  .:$TEXMF//tex
potom konečná hodnota použitá na vyhµadávanie by bola:

  /home/karl:.:$TEXMF//tex
Keďže by bolo zbytočné vklada» predvolenú hodnotu na viac ako jedno miesto, Kpathsea mení iba nadbytočnú ":" a všetko ostatné ponecháva na mieste: kontroluje najprv začiatočnú ":", potom koncovú ":" a potom zdvojenú ":".
6.1.5 Expanzia zátvoriek
Užitočná črta je expanzia zátvoriek, ktorá funguje tak, že napríklad v{a,b}w sa expanduje na vaw:vbw. Vnáranie je povolené. Toto môže by» použité na implementáciu viacnásobných TeXovských hierarchií, priradením hodnoty $TEXMF s použitím zátvoriek. Napríklad v súbore texmf.cnf nájdete nasledujúcu definíciu:

    TEXMF = {$HOMETEXMF,$TEXMFLOCAL,!!$VARTEXMF,!!$TEXMFMAIN}

Keď potom napíšete niečo podobné ako


    TEXINPUTS = .;$TEXMF/tex//

bude to znamena», že po hµadaní v aktuálnom adresári sa najprv prehµadá celý strom $HOMETEXMF/tex, $TEXMFLOCAL/tex, $VARTEXMF/tex a $TEXMFMAIN/tex (posledné dva s použitím databázových súborov ls-R). Je to vhodný spôsob ako spúš»a» dve paralelné TeX štruktúry, jednu nemennú (napríklad na CD-ROMe) a druhú neustále aktualizovanú novými verziami, akonáhle sú dostupné. Použitím premennej $TEXMF vo všetkých definíciách máme istotu, že sa vždy ako prvý prehµadá aktuálny strom.

6.1.6 Expanzia podadresárov
Dva alebo viac za sebou nasledujúcich znakov ‘/’ v elemente cesty nasledujúcom za adresárom d je nahradený všetkými podadresármi d: najprv podadresármi priamo pod d, potom podadresármi pod nimi, atď. Poradie, v akom sú prehµadávané podadresáre na každej úrovni nie je špecifikované.

Ak po "//", špecifikujete akékoµvek komponenty mena súboru, pridajú sa iba podadresáre so zodpovedajúcimi komponentami. Napríklad, "/a//b" sa expanduje do adresárov /a/1/b, /a/2/b, /a/1/1/b, atď, ale nie do /a/b/c alebo /a/1.

Viacnásobné "//" konštrukcie v ceste sú možné, ale "//" na začiatku cesty je ignorované.

6.1.7 Typy špeciálnych znakov a ich význam: zhrnutie
Nasledujúci zoznam zahŕňa význam zvláštnych znakov v konfiguračných súboroch Kpathsea.
:
Oddeµovač v špecifikácii cesty; na začiatku alebo na konci cesty nahrádza predvolenú expanziu cesty.
;
Oddeµovač v neunixových systémoch (správa sa ako :).
$
Expanzia premennej.
Ż
Reprezentuje domovský adresár používateµa.
{..}
Expanzia zátvoriek, napr. z a{1,2}b sa stane a1b:a2b.
//
Expanzia podadresárov. (Môže sa vyskytnú» kdekoµvek v ceste, okrem jej začiatku).
%
Začiatok komentáru.
\
Znak pokračovania riadku (umožňuje viacriadkové vstupy).
!!
Povel na hµadanie súboru iba v databáze, neprehµadáva disk.

6.2 Súborové databázy

Kpathsea minimalizuje prístupy na disk pri vyhµadávaní. Predsa však pri inštaláciách s dostatočným množstvom adresárov hµadanie súboru v každom možnom adresári môže zabra» prehnane veµa času (toto platí zvláš» vtedy, keď musia by» prejdené stovky adresárov s fontami). Kpathsea preto používa externe vytvorený ‘databázový’ súbor nazývaný ls-R, ktorý mapuje súbory v adresároch a pomáha tak vyhnú» sa vyčerpávajúcemu prehµadávaniu disku.

Skratky mien (aliases) v druhom databázovom súbore vám umožňujú da» dodatočné mená súborom nachádzajúcim sa v zozname ls-R. Toto môže by» užitočné pri prispôsobovaní sa ‘8.3’-súborovým konvenciám DOSu v zdrojových súboroch.

6.2.1 Súborová databáza
Ako bolo vysvetlené hore, meno hlavnej databázy súborov musí by» ls-R. Môžete umiestni» jednu do koreňa každej hierarchie TeXu vo vašej inštalácii ktorú chcete, aby bola prehµadávaná (predvolená je $TEXMF); väčšinou sa jedná iba o jednu hierarchiu. Kpathsea hµadá ls-R súbory podµa cesty v TEXMFDBS.

Odporúčaný spôsob ako vytvori» a udržiava» "ls-R" je spusti» skript mktexlsr zahrnutý v distribúcii. Je vyvolávaný rôznymi "mktex". . .  skriptami. Tento skript v princípe iba spúš»a príkaz


cd /your/texmf/root && ls -LAR ./ >ls-R
predpokladajúc, že ls vášho systému vytvára správny výstup (výstup GNU ls je v poriadku). Aby ste sa ubezpečili, že databáza bude vždy aktuálna, najjednoduchšie je pravidelne ju prebudováva» cez cron, takže po zmenách v inštalovaných súboroch — napríklad pri inštalácii alebo aktualizácii balíka LaTeXu bude súbor ls-R automaticky aktualizovaný.

Ak súbor nie je v databáze nájdený, podµa predvoleného nastavenia Kpathsea začne vyhµadáva» na disku. Ak však určitý element cesty začína "!!", bude prehµadávaná iba databáza, nikdy nie disk.

6.2.2 kpsewhich: Samostatné prehµadávanie cesty
Program kpsewhich vykonáva prehµadávanie cesty nezávislé od každej aplikácie. Môže by» užitočný ako vyhµadávací find program na nájdenie súborov v hierarchiách TeXu (veµmi sa využíva v distribuovaných "mktex". . .  skriptoch).

>> kpsewhich option... filename...
Voµby špecifikované v ‘option’ môžu začína» buď "-" alebo "--" a každá skratka, ktorá nie je viacznačná, je akceptovaná.

Kpathsea považuje každý element vstupného riadku, ktorý nie je argumentom nejakej voµby za meno súboru, ktorý hµadá a vracia prvý súbor, ktorý nájde. Neexistuje voµba umožňujúca vráti» všetky súbory s určitým menom (na to môžete použi» nástroj Unixu "find").

Ďalšie dôležitejšie voµby sú popísané nižšie.

--dpi=num
Nastav rozlíšenie na ‘num’; toto má vplyv iba na "gf" a "pk" vyhµadávanie. "-D" je synonýmom, kvôli kompatibilite s dvips. Predvolená hodnota je 600.
--format=name

Nastav formát pre vyhµadávanie na ‘name’. Podµa predvoleného nastavenia je formát uhádnutý z mena súboru. Pre formáty, ktoré nemajú asociovanú jednoznačnú príponu, ako napríklad podporné súbory MetaPostu a konfiguračné súbory dvips, musíte špecifikova» meno nájdené v prvom stĺpci Tabuµky 1, v ktorej je zoznam rozpoznávaných mien, popis, asociované premenné prostredia1, a možné prípony súborov.

Tabuka 1: Súborové typy Kpathsea
Meno Popis Premenné Prípony




afm Metriky písiem Adobe AFMFONTS .afm
base Výpis pamäti Metafontu MFBASES, TEXMFINI .base
bib Zdrojové súbory BIBTeXu BIBINPUTS, TEXBIB .bib
bst Súbory štýlov BIBTeX BSTINPUTS .bst
cnf Konfiguračné súbory čítané za behu TEXMFCNF .cnf
dvips config Konfiguračné súbory dvips, napr., config.ps a psfonts.map TEXCONFIG .map
fmt Predkompilované formáty TeXu TEXFORMATS, TEXMFINI .fmt, .efmt, .efm
gf Bitmapa generického fontu FONTS, GFFONTS, GLYPHFONTS, TEXFONTS .gf
graphic/figure Zapúzdrené PostScript obrázky TEXPICTS, TEXINPUTS .eps, .epsi
ist Súbory štýlov makeindex TEXINDEXSTYLE, INDEXSTYLE .ist
ls-R Súborové databázy TEXMFDBS
map Mapy písem TEXFONTMAPS .map
mem Predkompilované formáty MetaPostu MPMEMS, TEXMFINI .mem
mf Zdrojové súbory Metafont MFINPUTS .mf
mfpool Programové súboru k Metafontu MFPOOL, TEXMFINI .pool
mft Súbor štýlov MFT MFTINPUTS .mft
mp Zdrojové súbory MetaPostu MPINPUTS .mp
mppool Programové súbory k Metafontu MPPOOL, TEXMFINI .pool
MetaPost support Podporné súbory pre MetaPost, používané DMP MPSUPPORT
ocp Skompilované _O_ súbory OCPINPUTS .ocp
ofm Metriky písiem _O_ OFMFONTS, TEXFONTS .ofm, .tfm
opl Zoznamy vlastností _O_ OPLFONTS, TEXFONTS .opl
otp Translačné procesné _O_ súbory OTPINPUTS .otp
ovf Virtuálne fonty _O_ OVFFONTS, TEXFONTS .ovf
ovp Virtuálne zoznamy vlastností _O_ OVPFONTS, TEXFONTS .ovp
pk spakované bitmapové fonty programFONTS (program being XDVI, etc.), PKFONTS, TEXPKS, GLYPHFONTS, TEXFONTS .pk
PostScript header Preddefionvané PostScriptové headre TEXPSHEADERS, PSHEADERS .pro, .enc
tex Zdrojový súbor TeXu TEXINPUTS .tex, .cls, .sty, .clo, .def
TeX system documentation Súborová dokumentácia pre systém TeX TEXDOCS
TeX system sources Zdrojové súbory pre systém TeX TEXSOURCES
texpool Programové súbory k TeXu TEXPOOL, TEXMFINI .pool
tfm Metriky písiem TeXu TFMFONTS, TEXFONTS .tfm
Troff fonts Fonty Troff, používané DMP TRFONTS
truetype fonts Obrysové fonty TrueType TTFONTS .ttf, .ttc
type1 fonts Obrysové fonty Type 1 PostScript T1FONTS, T1INPUTS, TEXPSHEADERS, DVIPSHEADERS .pfa, .pfb
type42 fonts Obrysové fonty Type 42 PostScript T42FONTS
vf Viruálne fonty VFFONTS, TEXFONTS .vf
web2c files Podporné súbory Web2c WEB2C
other text files textové súbory používané foo FOOINPUTS
other binary files binárne súbory používané foo FOOINPUTS

Posledné dve položky v Tabuµke 1 sú špeciálne prípady, kedy cesta a premenné prostredia závisia na mene programu: meno premennej sa vytvorí tak, že meno programu prepíšeme veµkými písmenami a pridáme INPUTS.

Premenné prostredia sa obyčajne nastavujú z konfiguračného súboru texmf.cnf. Explicitne ich nastavujte pri spúš»aní jedine vtedy, keď chcete prepísa» jednu alebo viac hodnôt špecifikovaných v tomto súbore.

Všimnite si, že voµby "--format" a "--path" sa vzájomne vylučujú.

--mode=string

Nastav meno módu na ‘string’; toto má vplyv iba na "gf" a "pk" vyhµadávanie. Žiadna predvolená hodnota: každý mód bude nájdený.
--must-exist

Urob všetko preto, aby si našiel súbory. Ak je to potrebné, vrátane hµadania na disku. Normálne je v záujme efektívnosti prehµadávaná iba databáza ls-R.
--path=string

Vyhµadávaj podµa cesty ‘string’ (oddeµovaná dvojbodkou ako zvyčajne) namiesto hádania vyhµadávacej cesty z mena súboru. Podporované sú "//" a všetky bežné expanzie. Voµby "--path" a "--format" sa vzájomne vylučujú.
--progname=name

Nastav meno programu na ‘name’. Toto nastavenie ovplyvňuje použitie vyhµadávacej cesty cez nastavenie ‘.progname’ v konfiguračných súboroch. Predvolená hodnota je "kpsewhich".
--show-path=name

Zobrazí cestu použitú na vyhµadávanie súboru s typom ‘name’. Môže by» použitá buď súborová prípona (".pk", ".vf" a pod.) alebo meno, podobne ako vo voµbe "--format".
--debug=num

Nastaví počet debugovacích možností na ‘num’.
6.2.3 Príklady použitia
Pozrime sa na Kpathsea v akcii.

>> kpsewhich  article.cls
/usr/local/texmf/tex/latex/base/article.cls
Hµadáme súbor article.cls. Keďže prípona ".cls" je jednoznačná, nemusíme špecifikova», že hµadáme súbor typu ‘tex’ (zdrojový súbor TeX). Nájdeme ho v podadresári tex/latex/base pod koreňovým adresárom "TEXMF". Podobne, všetky nasledujúce súbory budú nájdené bez problémov vďaka ich jednoznačnej prípone.

>> kpsewhich array.sty
   /usr/local/texmf/tex/latex/tools/array.sty
>> kpsewhich latin1.def
   /usr/local/texmf/tex/latex/base/latin1.def
>> kpsewhich size10.clo
   /usr/local/texmf/tex/latex/base/size10.clo
>> kpsewhich small2e.tex
   /usr/local/texmf/tex/latex/base/small2e.tex
>> kpsewhich tugboat.bib
   /usr/local/texmf/bibtex/bib/beebe/tugboat.bib

Posledným súborom je bibliografická databáza BIBTeXu pre články TUGBoatu.


>> kpsewhich cmr10.pk
Bitmapové súbory fontov typu .pk sa používajú zobrazovacími programami ako dvips a xdvi. V tomto prípade je vrátený prázdny výsledok, keďže neexistujú žiadne vopred generované Computer Modern ".pk" súbory v našom systéme (vzhµadom na to, že používame verzie Type1 na CD-ROMe).

>> kpsewhich ecrm1000.pk
   /usr/local/texmf/fonts/pk/ljfour/jknappen/ec/ecrm1000.600pk
Kvôli rozšíreným Computer Modern súborom sme museli vygenerova» ".pk" súbory. Keďže predvolený mód METAFONT v našej inštalácii je ljfour so základným rozlíšením 600 dpi (dots per inch), je vrátená táto inštancia.

>> kpsewhich -dpi=300 ecrm1000.pk
V tomto prípade po špecifikovaní, že nás zaujíma rozlíšenie 300dpi (-dpi=300) vidíme, že taký font nie je v systéme k dispozícii. Program ako dvips alebo xdvi by v tomto prípade vytvorili .pk súbory požadovaného rozlíšenia, použijúc skript mktexpk.

Teraz obrá»me našu pozornos» na hlavičkové a konfiguračné súbory dvips. Najprv sa pozrieme na jeden z bežne používaných súborov, všeobecný prológový tex.pro na podporu TeXu, potom pohµadáme konfiguračný súbor (config.ps) a PostScriptovú mapu fontov psfonts.map. Keďže prípona ".ps" je nejednoznačná, musíme pre súbor config.ps špecifikova» explicitne, o ktorý typ sa zaujímame (‘dvips config’).


>> kpsewhich tex.pro
   /usr/local/texmf/dvips/base/tex.pro
>> kpsewhich --format=‘dvips config‘  config.ps
   /usr/local/texmf/config/config.ps
>> kpsewhich psfonts.map
   /usr/local/texmf/dvips/base/psfonts.map

Teraz sa pozrieme na podporné súbory URW Times PostScript. V Berryho schéme meno pre tieto pomenovania fontov je "utm". Prvý súbor, ktorý hµadáme, je konfiguračný súbor, ktorý obsahuje meno mapového súboru:


>> kpsewhich --format="dvips config" config.utm
/usr/local/texmf/dvips/psnfss/config.utm
Obsah tohoto súboru je

  p +utm.map
čo odkazuje na súbor utm.map, ktorý ideme ďalej hµada».

>> kpsewhich --format="dvips config" utm.map
   /usr/local/texmf/dvips/psnfss/utm.map
Tento mapový súbor definuje mená súborov fontov typu Type1 PostScript v kolekcii URW. Jeho obsah vyzerá takto (zobrazili sme iba jeho čas»):

  utmb8r  NimbusRomNo9L-Medi    ... <utmb8a.pfb
  utmbi8r NimbusRomNo9L-MediItal... <utmbi8a.pfb
  utmr8r  NimbusRomNo9L-Regu    ... <utmr8a.pfb
  utmri8r NimbusRomNo9L-ReguItal... <utmri8a.pfb
  utmbo8r NimbusRomNo9L-Medi    ... <utmb8a.pfb
  utmro8r NimbusRomNo9L-Regu    ... <utmr8a.pfb
Zoberme napríklad, inštanciu Times Regular utmr8a.pfb a nájdime jej pozíciu v adresárovom strome texmf použitím vyhµadávania fontových súborov Type1:

>> kpsewhich utmr8a.pfb
   /usr/local/texmf/fonts/type1/urw/utm/utmr8a.pfb

Z týchto príkladov by malo by» zrejmé, ako µahko môžete nájs» umiestnenie daného súboru. Toto je zvláš» dôležité keď máte podozrenie, že ste narazili na zlú verziu súboru, keďže kpsewhich vám zobrazí prvý súbor, ktorý zodpovedá vašim požiadavkam.

6.2.4 Debugovanie
Niekedy je potrebné vyšetri» ako program rozpoznáva referencie na súbory. Aby toto bolo možné vhodne uskutočni», Kpathsea ponúka rôzne stupne debugovania:

Hodnota -1 nastaví všetky horeuvedené voµby, v praxi pravdepodobne vždy použijete tieto úrovne ak budete potrebova» akékoµvek debugovanie.

Podobne s programom dvips nastavením kombinácie debugovacích prepínačov môžete detailne sledova», odkiaµ sa berú používané súbory. Alternatívne, keď súbor nie je nájdený, debugovacia cesta ukazuje, v ktorých adresároch program daný súbor hµadal, čo môže naznačova», v čom sa asi vyskytol problém.

Všeobecne povedané, keďže väčšina programov volá knižnicu Kpathsea vnútorne, debugovacie voµby je možné nastavi» pomocou premennej prostredia KPATHSEA_DEBUG na potrebnú kombináciu, ako je to popísané v horeuvedenom zozname.

(Poznámka pre používateµov Windows: nie je jednoduché presmerova» všetky hlášky v tomto systéme do súboru. Pre diagnostikovacie účely môžte dočasne priradi»
SET KPATHSEA_DEBUG_OUTPUT=err.log).

Uvažujme ako príklad malý zdrojový súbor LaTeXu, hello-world.tex, ktorý obsahuje nasledujúci vstup.


    \documentclass{article}
    \begin{document}
    Hello World!
    \end{document}

Tento malý súbor používa iba font cmr10, takže pozrime sa, ako dvips pripravuje PostScriptový súbor (chceme použi» Type1 verziu písem Computer Modern, preto je nastavená voµba -Pcms).


>> dvips -d4100 hello-world -Pcms -o
V tomto prípade sme skombinovali dvips debugovaciu triedu 4 (cesty k fontom) s expanziou elementu cesty Kpathsea (pozri Referenčný Manuál dvips,texmf/doc/html/dvips/dvips_toc.html). Výstup, trochu preusporiadaný, je zobrazený na obrázku 4.

  debug:start search(file=texmf.cnf, must_exist=1, find_all=1,
    path=.:/usr/local/bin/texlive:/usr/local/bin:
         /usr/local/bin/texmf/web2c:/usr/local:
         /usr/local/texmf/web2c:/.:/./teTeX/TeX/texmf/web2c:).
  kdebug:start search(file=ls-R, must_exist=1, find_all=1,
    path=Ż/tex:/usr/local/texmf).
  kdebug:search(ls-R) =>/usr/local/texmf/ls-R
  kdebug:start search(file=aliases, must_exist=1, find_all=1,
    path=Ż/tex:/usr/local/texmf).
  kdebug:search(aliases) => /usr/local/texmf/aliases
  kdebug:start search(file=config.ps, must_exist=0, find_all=0,
    path=.:Ż/tex:!!/usr/local/texmf/dvips//).
  kdebug:search(config.ps) => /usr/local/texmf/dvips/config/config.ps
  kdebug:start search(file=/root/.dvipsrc, must_exist=0, find_all=0,
    path=.:Ż/tex:!!/usr/local/texmf/dvips//).
  search(file=/home/goossens/.dvipsrc, must_exist=1, find_all=0,
    path=.:Ż/tex/dvips//:!!/usr/local/texmf/dvips//).
  kdebug:search($HOME/.dvipsrc) =>
  kdebug:start search(file=config.cms, must_exist=0, find_all=0,
    path=.:Ż/tex/dvips//:!!/usr/local/texmf/dvips//).
  kdebug:search(config.cms)
  =>/usr/local/texmf/dvips/cms/config.cms

Obr. 4: Hµadanie konfiguračných súborov

  kdebug:start search(file=texc.pro, must\_exist=0, find\_all=0,
    path=.:Ż/tex/dvips//:!!/usr/local/texmf/dvips//:
         Ż/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
  kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro

Obr. 5: Hµadanie prológového súboru

  kdebug:start search(file=cmr10.tfm, must\_exist=1, find\_all=0,
    path=.:Ż/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//:
         /var/tex/fonts/tfm//).
  kdebug:search(cmr10.tfm) => /usr/local/texmf/fonts/tfm/public/cm/cmr10.tfm
  kdebug:start search(file=texps.pro, must\_exist=0, find\_all=0,
     ...
  <texps.pro>
  kdebug:start search(file=cmr10.pfb, must\_exist=0, find\_all=0,
    path=.:Ż/tex/dvips//:!!/usr/local/texmf/dvips//:
         Ż/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
  kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb
  <cmr10.pfb>[1]

Obr. 6: Hµadanie fontového súboru

dvips začne lokáciou svojich pracovných súborov. Najprv je nájdený texmf.cnf ktorý obsahuje definície vyhµadávacích ciest ostatných súborov, potom databáza súborov ls-R (na optimalizáciu vyhµadávania súborov) a skratky mien súborov (aliases), čo robí možným deklarova» viacero mien (napr. krátke meno typu ‘8.3’ ako v DOSe a viac prirodzenú dlhšiu verziu) pre ten istý súbor. Potom dvips pokračuje v hµadaní všeobecného konfiguračného súboru config.ps skôr, ako začne hµada» súbor nastavení .dvipsrc (ktorý, v tomto prípade, nie je nájdený). Nakoniec, dvips nájde konfiguračný súbor pre font Computer Modern PostScript, config.cms (toto bolo iniciované voµbou-Pcms v príkaze dvips). Tento súbor obsahuje zoznam "mapových" súborov, ktoré definujú vz»ah medzi menami fontov v TeXu, PostScripte a systéme súborov.

>> more /usr/local/texmf/dvips/cms/config.cms
   p +ams.map
   p +cms.map
   p +cmbkm.map
   p +amsbkm.map
dvips preto pokračuje v hµadaní všetkých týchto súborov plus všeobecného mapového súboru psfonts.map, ktorý sa načítava vždy (obsahuje deklarácie bežne používaných PostScriptových fontov; pozri poslednú čas» sekcie 6.2.3 kde sa nachádza viac detailov o narábaní s mapovými súbormi PostScriptu).

V tomto bode sa dvips identifikuje používateµovi...


This is dvips 5.78 Copyright 1998 Radical Eye Software
  (www.radicaleye.com)

...potom pokračuje v hµadaní prológového súboru texc.pro:


kdebug:start search(file=texc.pro, must_exist=0, find_all=0,
  path=.:Ż/tex/dvips//:!!/usr/local/texmf/dvips//:
       Ż/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro
Po nájdení tohoto súboru, dvips napíše na výstup dátum a čas a informuje nás, že vygeneruje súbor hello-world.ps, že potrebuje súbor s fontom cmr10, ktorý bude deklarovaný ako "rezidentný":

TeX output 1998.02.26:1204’ -> hello-world.ps
Defining font () cmr10 at 10.0pt
Font cmr10 <CMR10> is resident.
Teraz sa rozbehne hµadanie súboru cmr10.tfm, ktorý je nájdený, potom je referencovaných ešte niekoµko prológových súborov (nezobrazené) a nakoniec je nájdená inštancia fontu Type1, cmr10.pfb , ktorá je pridaná do výstupného súboru (pozri posledný riadok).

kdebug:start search(file=cmr10.tfm, must_exist=1, find_all=0,
  path=.:Ż/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//:
       /var/tex/fonts/tfm//).
kdebug:search(cmr10.tfm) => /usr/local/texmf/fonts/tfm/public/cm/cmr10.tfm
kdebug:start search(file=texps.pro, must_exist=0, find_all=0,
   ...
<texps.pro>
kdebug:start search(file=cmr10.pfb, must_exist=0, find_all=0,
  path=.:Ż/tex/dvips//:!!/usr/local/texmf/dvips//:
       Ż/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb
<cmr10.pfb>[1]

6.3 Možnosti nastavenia za behu programu

Ďalšou z pekných čŕt distribúcie Web2c 7.3 je možnos» kontroly množstva pamä»ových parametrov (najmä veµkosti polí) za behu prostredníctvom súboru texmf.cnf, ktorý číta knižnica Kpathsea. Výpis texmf.cnf je v dodatku 9, začínajúcom na strane 50; nastavenia všetkých parametrov môžete nájs» v časti 3 tohto súboru. Najdôležitejšie riadiace premenné (čísla riadkov sa vz»ahujú na súbor texmf.cnf):
main_memory
Celkový počet dostupných slov v pamäti pre TeX, METAFONT a MetaPost. Musíte vytvori» nový formátový súbor pre každé odlišné nastavenie. Napríklad môžete vygenerova» "obrovskú" verziu TeXu a zavola» súbor s formátom hugetex.fmt. S použítím štandardnej špecifikácie mena programu používaného knižnicou Kpathsea, konkrétna hodnota premennej main_memory sa načíta zo súboru texmf.cnf (porovnaj všeobecnú hodnotu a "obrovskú" hodnotu, ktorá sa inštancuje cez hugetex, atď.).
extra_mem_bot
Dodatočný priestor pre "veµké" dátové štruktúry TeXu: "boxy", "glue", "breakpoint(y)" a podobne. Je to užitočné hlavne ak používate PI CTeX. (riadok 300).
font_mem_size
Počet dostupných slov pre informáciu o fontoch v TeXu. Toto je viac-menej celková veµkos» všetkých prečítaných TFM súborov.
hash_extra
Dodatočný priestor pre hašovaciu tabuµku mien riadiacej sekvencie. Približne 10 000 riadiacich sekvencií môže by» uložených v hlavnej hašovacej tabuµke; ak máte veµkú knihu s mnohými krížovými odkazmi, toto nemusí stači». Vidíte, že obidva volania programov hugetex a pdftex požadujú dodatočných 15 000 riadiacich sekvencií (preddefinovaná hodnota hash_extra je nula).

Samozrejme, tento prvok nemôže nahradi» naozajstné dynamické polia a alokácie pamäte, ale keďže tieto sa veµmi »ažko implementujú v súčasnej verzii TeXu, tieto parametre počas behu programu poskytujú praktický kompromis, ktorý dovoµuje aspoň nejakú flexibilitu.