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ú:
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:
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.
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.
Všetky tieto hodnoty vyhµadávacej cesty môžete prezera» použitím debugovacích možností (pozri ‘Debuggovanie’ na strane 40).
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:
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.
Keď potom napíšete niečo podobné ako
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.
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é.
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.
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
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.
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.
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é
| ![]() OCPINPUTS | .ocp |
ofm | Metriky
písiem
| ![]() OFMFONTS,
TEXFONTS | .ofm,
.tfm |
opl | Zoznamy
vlastností
| ![]() OPLFONTS,
TEXFONTS | .opl |
otp | Translačné
procesné
| ![]() OTPINPUTS | .otp |
ovf | Virtuálne
fonty
| ![]() OVFFONTS,
TEXFONTS | .ovf |
ovp | Virtuálne
zoznamy
vlastností
| ![]() 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 | |
| |
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ú.
Posledným súborom je bibliografická databáza BIBTeXu pre články TUGBoatu.
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’).
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:
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.
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.
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).
V tomto bode sa dvips identifikuje používateµovi...
...potom pokračuje v hµadaní prológového súboru texc.pro:
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.