[next] [prev] [prev-tail] [tail] [up]

### 8 Používateľská príručka ku systému Web2C

Web2C obsahuje množinu TeX-príbuzných programov, t.j. samotný TeX, M E T A F O N T, METAPOST, BI BTeX, 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.

Web2C systém beží pod Unixom, 32-bitovými Windows, MacOSX 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
  M E T A F O N T – vytváranie rodín fontov.
mft
  Preddefinované M E T A F O N Tové zdrojové súbory.
mpost
  METAPOST – 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
  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 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.

#### 8.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 78), 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.

##### 8.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 majú prednosť pred premennými rovnakého mena, ale bez prípony. 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 88).

##### 8.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 posledných načítaných súborov majú prednosť pred definíciami čítanými predtým. Preto pri vyhľadávacej ceste .:$TEXMF, hodnoty z ./texmf.cnf prepíšu hodnoty z $TEXMF/texmf.cnf.

- Komentáre začínajú znakom ‘%’ a pokračujú do konca riadku.
- Prázdne riadky sú ignorované.
- Znak \ na konci riadku slúži ako pokračovací znak, t.j. nasledujúci riadok je k nemu pripojený. Prázdne znaky na začiatku pripájaných riadkov nie sú ignorované.
- Všetky ostatné riadky majú tvar:
  variable[.progname] [=] value
  kde ‘=’ a prázdne znaky naokolo sú nepovinné.
- Meno premennej ‘variable ’ môže obsahovať akékoľvek znaky okrem prázdnych znakov, ‘=’, alebo ‘.’, ale obmedziť sa na znaky ‘A-Za-z_’ je najbezpečnejšie.
- Ak je ‘.progname ’ neprázdne, definícia sa použije iba vtedy, keď práve bežiaci program má meno progname alebo progname.exe. Toto umožňuje napríklad mať pre rôzne nadstavby TeXu rôzne vyhľadávacie cesty.
- Hodnota ‘value ’ môže obsahovať akékoľvek znaky okrem ‘%’ a ‘@’. Na pravej strane nie je možné použiť ‘$var.prog ’; namiesto toho musíte použiť ďalšiu premennú. Znak ‘;’ vo ‘value ’ je preložený do ‘:’ ak sme pod operačným systémom Unix. Toto je užitočné, keď chceme mať jediný texmf.cnf súbor pre systémy Unix, MSDOS a Windows.
- Všetky definície sú prečítané skôr, ako sa expandujú. Preto môžu existovať referencie na premenné skôr, ako sú tieto definované.

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;}//

##### 8.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 interprétov príkazového riadku (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.

##### 8.1.4 Predvolená expanzia

Ak vyhľadávacia cesta s najväčšou prioritou (pozri ‘Zdroje cesty’ na strane 72) 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ú ‘:’.

##### 8.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 e) 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.

##### 8.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é.

##### 8.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.

#### 8.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.

##### 8.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.

##### 8.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 3, v ktorej je zoznam rozpoznávaných mien, popis, asociované premenné prostredia a možné prípony súborov.

Tabu ľka 3: | S úborov é typy Kpathsea
Meno | Popis | Premenn é | Pr ípony
afm | Metriky p ísiem Adobe | AFMFONTS | .afm
base | V ýpis pam äti METAFONT u | MFBASES, TEXMFINI | .base
bib | Zdrojov é s úbory BI B TeXu | BIBINPUTS, TEXBIB | .bib
bst | S úbory št ýlov BI B TeX | 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 ísiem | TEXFONTMAPS | .map
mem | Predkompilovan é form áty METAPOST u | MPMEMS, TEXMFINI | .mem
mf | Zdrojov é s úbory METAFONT u | MFINPUTS | .mf
mfpool | Programov é s úboru k METAFONT u | MFPOOL, TEXMFINI | .pool
mft | S úbor št ýlov MFT | MFTINPUTS | .mft
mp | Zdrojov é s úbory METAPOST u | MPINPUTS | .mp
mppool | Programov é s úbory k M E T A F O N T | MPPOOL, TEXMFINI | .pool
METAPOST support | Podporn é s úbory pre METAPOST, pou ž ívan é DMP (ditroff-to-mpx) | MPSUPPORT |
ocp | Skompilovan é s úbory | OCPINPUTS | .ocp
ofm | Metriky p ísiem | OFMFONTS, TEXFONTS | .ofm, .tfm
opl | Zoznamy vlastnost í | OPLFONTS, TEXFONTS | .opl
otp | Transla čn é procesn é s úbory | OTPINPUTS | .otp
ovf | Virtu álne fonty | OVFFONTS, TEXFONTS | .ovf
ovp | Virtu álne zoznamy vlastnost í | OVPFONTS, TEXFONTS | .ovp
pk | spakovan é bitmapov é fonty | program FONTS (program being XDVI, etc.), PKFONTS, TEXPKS, GLYPHFONTS, TEXFONTS | .pk
PostScript header | Preddefinovan é 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 é konvertorem 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 | Virtu á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 3 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 ’.

##### 8.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 BI BTeXu 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 e).
>> 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 M E T A F O N T 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, pretože kpsewhich emuluje vyhľadávanie úplne rovnakým spôsobom ako skutočný program (TeX, dvips a pod).

##### 8.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:

- Volania stat (testy súborov). Pri behu s aktuálnou ls-R databázou by nemal dať takmer žiaden výstup.
- Referencie do hašovacích tabuliek (ako ls-R databáza, mapové súbory, konfiguračné súbory).
- Operácie otvárania a zatvárania súboru.
- Všeobecná informácia o ceste pre typy súborov hľadaných Kpathsea. Toto je užitočné pri zisťovaní, kde bola definovaná určitá cesta pre daný súbor.
- Adresárový zoznam pre každý element cesty (vzťahuje sa iba na vyhľadávanie na disku).
- Vyhľadávanie súborov.

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. (Aktuálny popis parametrov je možné nájsť v ../texmf/doc/html/dvips/dvips_2.html.) 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ísiem Computer Modern, preto je nastavená voľba -Pcms 4.

>> 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 7.

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ázok 7: | 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ázok 8: | 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ázok 9: | 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 8.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]

#### 8.3 Možnosti nastavenia za behu programu

Ďalšou z pekných čŕt distribúcie Web2C 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. 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, M E T A F O N T 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.
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.

[next] [prev] [prev-tail] [front] [up]