7 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. Naša verzia má nejaké aktualizávie a identifikuje sa ako
7.3.3.1.
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 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.
7.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 50), 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.
7.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 57).
7.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 11,
začínajúcu na strane 68, 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;}//
7.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.
7.1.4 Predvolená expanzia
Ak vyhľadávacia cesta s najväčšou prioritou (pozri ‘Zdroje cesty’ na strane 46)
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ú ":".
7.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.
7.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é.
7.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.
7.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.
7.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.
7.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.
Tabu ka 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ísiem |
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’.
7.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.
7.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ázok 4: |
Finding configuration files |
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 5: |
Finding the prolog file |
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 6: |
Finding the font file |
|
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 7.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]
7.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. Výpis texmf.cnf je v dodatku 11, začínajúcom na strane 68; 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.