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í:
- 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.
- Programovo-špecifický konfiguračný súbor, napríklad riadok ‘S /a:/b’ v súbore config.ps
dvips.
- Konfiguračný súbor Kpathsea — texmf.cnf, obsahujúci riadok ako "TEXINPUTS=/c:/d"
(pozri ďalej).
- 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.
- 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;}//
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 potom konečná hodnota použitá na vyhµadávanie by bola: 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é
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 | 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.
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 č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:
- 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. 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.