Sergej Korop. TeX FAQ ili Kak propustit' Knuta cherez TeX TeX FAQ

|to "nulevaya versiya" --- otnosites' k nej dostatochno kritichno.

Ot avtora

Ideya napisat' etot FAQ poyavilas' u menya posle togo, kak bol'shinstvo pisem, kotorye ya stal poluchat' v svyazi s rabotoj po ocifrovke knigi "Iskusstvo programmirovaniya dlya |VM", byli voprosami tipa "kak poluchit' chitaemuyu kopiyu?" CHtoby sekonomit' svoe i vashe vremya, v etom fajle sobrany te rekomendacii, kotorye ya by poslal v otvet na takie pis'ma.

Otmechu, chto imena fajlov i komandnye stroki dany v stile *nix. Ne somnevayus', pol'zovatelyam M$-DOG ne sostavit osobogo truda ih ponyat'. (Vprochem, vidennye mnoyu TeX'i ispol'zuyut ih kak est', poskol'ku pereneseny iz Unix.)

K sozhaleniyu, realizacii sistemy TeX dlya razlichnyh platform imeyut svoi osobennosti v nastrojke. Bol'shej chast'yu eto kasaetsya mehanizmov poiska fajlov. Vprochem, po sravneniyu s tem, naskol'ko razlichayutsya sami platformy, eto prakticheski nezametno.

Osobo otmechu, chto ya ne stavlyu svoej cel'yu ischerpyvayushche izlozhit' zdes' vse tonkosti TeX-masterstva. Proshu priznannyh Guru etoj nauki ne uzhasat'sya "chajnomu" stilyu i tem, pryamo skazhem, uproshchennym metodam rusifikacii, kotorye ya primenyal. Vo-pervyh, ne vse versii TeX dostatochno moshchny, chtoby vse delat' "po pravilam", a vo-vtoryh (eto moe lichnoe mnenie) predlagaemyj podhod dostatochno udoben v ispol'zovanii (po sravneniyu, k primeru, s temi paketami, kotorye trebuyut yavno pereklyuchat'sya s yazyka na yazyk).

Pol'zovatelej TeX, zhelayushchih adaptirovat' Knuta k svoej sisteme, po-vidimomu, mozhet zainteresovat' razdel "Rusifikaciya", gde opisan bystryj i prostoj sposob rusifikacii, ispol'zovannyj pri podgotovke elektronnoj versii "Iskusstva programmirovaniya". Detali etogo sposoba mogut prigodit'sya pri adaptacii tekstov k drugim makropaketam. Ostal'noe --- poyasneniya po ustanovke i nastrojke, prednaznachenye dlya novichkov. K sozhaleniyu, shirokij spektr razlichnyh realizacij TeX ne pozvolyaet svesti vse k poshagovym instrukciyam. Vmesto etogo predprinyata popytka populyarno raz座asnit' cel' kazhdogo iz dejstvij (soprovozhdaya primerami v konkretnoj realizacii), v nadezhde na to, chto eto pomozhet razyskat' nuzhnuyu informaciyu v dokumentacii na vashu sistemu.

Takzhe poproshu chitatelej ne nachinat' so mnoj diskussiyu v pis'mah na temu, chto luchshe: TeX ili, k primeru Word libo PageMaker. Kazhdyj iz nas ostanetsya pri svoem mnenii, a uteryannogo vremeni ne vernesh'. No zamechu, chto mnogie, uvidev otformatirovannuyu TeX stranicu, s uzhasom ponimayut, kakoj ruchnoj dovodki potreboval by Word dlya polucheniya analogichnogo rezul'tata.

PREDUPREZHDAYU: kak i chto pojdet v Vashej sisteme, ya ne znayu!!! Poetomu AVTOR |TOGO RUKOVODSTVA NE NESET NIKAKOJ OTVETSTVENNOSTI ZA VOZMOZHNYE SBOI V RABOTE VASHEJ SISTEMY (VOZMOZHNO, SOPROVOZHDAYUSHCHIESYA POTEREJ INFORMACII) VYZVANNYE ISPOLXZOVANIEM IZLOZHENNOGO NIZHE.

Obratnaya svyaz'

Avtor etogo rukovodstva s blagodarnost'yu i vnimaniem oznakomitsya s lyuboj konstruktivnoj kritikoj libo pozhelaniyami, kasayushchimisya ego soderzhaniya i oformleniya.

Sleduet osobo otmetit', avtor ostavlyaet za soboj pravo ispol'zovat' vashi pis'ma pri dorabotke teksta, esli tol'ko vy YAVNO ne zapretili etogo. Soderzhimoe pis'ma mozhet kak citirovat'sya, tak i podvergat'sya obrabotke. Dlya ssylok na avtorov pisem budut ispol'zovany libo ih imena (esli takovye odnoznachno mogut byt' vyyasneny iz pis'ma) libo imya iz email-adresa, sami adresa publikovat'sya ne budut. Esli vas ne ustraivayut eti usloviya, ogovarivajte zhelaemye v vashih pis'mah.

Otvetstvennosti za dostovernost' prislannoj informacii avtor rukovodstva ne neset. Mnenie avtora ne obyazatel'no sovpadaet s mneniem chitatelej, ch'i pis'ma citiruyutsya.

Blagodarnosti

Avtor vyrazhaet svoyu iskrennyuyu blagodarnost' za konstruktivnoe obsuzhdenie i predostavlennuyu informaciyu:

1. CHto takoe TeX

Sistema TeX (proiznositsya "teh", ot slova "tehnologiya") byla zadumana professorom Stenfordskogo universiteta Donal'dom |. Knutom v processe podgotovki k izdaniyu 3-go toma "Iskusstva programmirovaniya dlya |VM". Okazalos', chto sushchestvovavshie togda sredstva podgotovki k pechati matematicheskih tekstov sovershenno neprigodny dlya vypolneniya stol' slozhnoj raboty bystro i kachestvenno. Rabota po sozdaniyu TeX nachalas' v 1978 godu i Knut planiroval zakonchit' ee v techenie svoego godichnogo otpuska (sabbatical year, polagaetsya universitetskim professoram kazhdye sem' let), no neskol'ko oshibsya v srokah [1] --- okonchatel'nyj variant programmy poyavilsya v 1985. S teh por TeX sdelalsya standartom de facto dlya mnogih ser'eznyh izdatel'skih proektov: vse knigi samogo Knuta nabirayutsya v TeX, stat'i v izdaniya American Mathematical Society, American Physical Society prinimayutsya tol'ko v etom formate, on ispol'zovalsya vo mnozhestve proektov onlajn-dokumentacii.

V Rossii eta sistema takzhe dostatochno populyarna. Pozhaluj, pervaya ee rusifikaciya (ProTeX), izvestnaya avtoru, poyavilas' v Institute Fiziki Vysokih |nergij (IFV|, Protvino) i sluchilos' eto ne menee devyati let tomu nazad. S teh por mnogie izdatel'stva vzyali TeX na vooruzhenie. Ego shiroko ispol'zuyut v izdatel'stve "Mir" i mnogih drugih izdatel'stvah, vypuskayushchih fiziko-matematicheskie knigi. Avtoru ne raz dovodilos' vstrechat' knigi, nabrannye v TeX, a eshche, sudya po vneshnemu vidu zhurnala "Programmirovanie", on takzhe nabiralsya v etoj sisteme (po krajnej mere, ego vypuski za 1991--1993gg.)

Za chto zhe tak polyubilsya TeX professionalam?

K sozhaleniyu, u sistemy est' i opredelennye nedostatki.

Kratkoe opisanie raboty s TeX

Posledovatel'nost' dejstvij takaya:
  1. Ustanovit' i zastavit' TeX rabotat' :-)
  2. Podgotovit' tekstovyj fajl (po umolchaniyu rasshirenie .tex), soderzhashchij tekst dokumenta, v kotorom tekst soderzhit komandy formatirovaniya.
  3. Propustit' etot fajl cherez TeX, poluchiv versiyu dokumenta v formate DVI (DeVice Independent). V takom vide on perenosim mezhdu platformami. (K sozhaleniyu, v real'noj zhizni eto sluchaetsya ne vsegda, no glavnaya prichina --- nesoblyudenie obshcheprinyatyh pravil horoshego tona, k primeru, shrifty, iskalechennye mestnymi umel'cami.)
  4. Prosmotret' DVI-fajl s pomoshch'yu special'noj utility prosmotra libo vyvesti ego na printer s pomoshch'yu programmy "drajver printera".
  5. Naslazhdat'sya bezuprechnym rezul'tatom.

2. Gde vzyat'

Pol'zovateli GNU/Linux, primite pozdravleniya. Pomimo togo, chto vy rabotaete s isklyuchitel'no udobnoj i moshchnoj sistemoj, u vas ne budet hlopot s poiskami sistemy TeX. Vse versii GNU/Linux, vidennye avtorom, nachinaya so Slackware 2.0.1 i zakanchivaya Red Hat 6.0, imeyut TeX v svoem sostave. Pravda, k primeru, v Slackware 3.30 i RedHat 5.1 razlichaetsya mestopolozhenie kataloga TeX po otnosheniyu k kornevomu, tak chto otnosites' k privedennym zdes' rekomendaciyam kriticheski.

Ostal'nym pridetsya poiskat' v Seti. Adresa mozhno posovetovat' takie:

http://www.tug.org/ --- TeX Users' Group.

http://www.cemi.rssi.ru/cyrtug/ --- associaciya pol'zovatelej kirillicheskogo TeX.

[Evgenij Cymbalyuk] pishet:

Ochen' sovetuyu tuda shodit'. V nee mozhet vstupit' lyuboj zhelayushchij. Pri etom vy poluchaete dostup k dovol'no bogatoj biblioteke po TeX na raznyh yazykah, mozhete konsul'tirovat'sya po telefonu i lichno priehat' poobshchat'sya v priemnye chasy (k sozhaleniyu, eti vozmozhnosti fizicheski dostupny v osnovnom moskvicham, hotya vsegda mozhno uznat' pro filialy v svoem gorode). Takzhe lyuboj zhelayushchij mozhet skachat' russificirovannyj distributiv LaTeX dlya emTeX. Hotya komplekt russkih shriftov, razrabotannyh Ol'goj Lapko (vozmozhno, luchshij iz dostupnyh), mozhno prisposobit' dlya lyuboj sistemy.

http://tug2.cs.umb.edu/ctan --- CTAN --- Comprehensive TeX Archive Network,

poslednij sajt chto-to vrode interfejsa k raspredelennomu ftp-arhivu, v kotorom lezhit vse, svyazannoe s etoj sistemoj. Esli ran'she ne prihodilos' imet' dela s TeX, ochen' rekomenduyu knigu: D.E. Knuth "The TeX book", ili, v russkom perevode, "Vse pro TeX", (Protvino, AO RDTeX, 1993, ISBN 5-900614-01-8).

Rekomendacii chitatelej:

S. M. L'vovskij. "Nabor i verstka v pakete LaTeX", 2-e izdanie (eto vazhno, tak kak v nej opisan LaTeX2e, imeyushchij principial'nye dobavki po sravneniyu s LaTeX, opisannym v pervom izdanii), 1995 g., Moskva, Kosmosinform.

K.O.Tel'nikov i P.Z.CHebotaev. LaTeX. Izdatel'skaya sistema dlya vseh. 1994, Novosibirsk, Sibirskij hronograf. Sejchas vyshlo i novoe izdanie.

Onlajnovyj variant anglijskogo izdaniya "The TeX Book" dostupen v CTAN po imeni

    texbook.tex
polnost'yu:
    systems/knuth/tex/texbook.tex

Osnovnye sajty CTAN, dostupnye po ftp (i drugimi sposobami):

ftp.dante.de (Mainz, Germany)
ftp.tex.ac.uk (Cambridge, UK)
ctan.tug.org (Boston, Massachusetts, USA)

Osnovnye sajty CTAN ochen' zagruzheny, poetomu rekomenduetsya soblyudat' pravila horoshego tona i pol'zovat'sya ih zerkalami. Spisok zerkal mozhno najti na odnom iz vysheupomyanutyh sajtov, on raspolozhen neposredstvenno v nachal'nom (ne kornevom!) kataloge arhiva i nazyvaetsya CTAN.sites.

Pol'zovateli TeX v Rossii ochen' rekomenduyut zerkalo ftp://ftp.radio-msu.net/tex-archive/, no k sozhaleniyu, za ee predelami ono nedostupno.

Interesnaya stranichka, posvyashchennaya TeX, mozhet byt' najdena u Borisa Tobotrasa: http://xtalk.price.ru/tex/.

http://www-cs-faculty.stanford.edu/~knuth/index.html --- avtor TeX, professor Donal'd Knut.

Iskat' nado sleduyushchee:

Vmesto programm raboty s dvi-fajlami mozhno iskat' translyator dvips, kotoryj ochen' akkuratno peregonyaet vse v PostScript. |tot format izvesten shire, i sredstva raboty s nim mozhno najti vo mnogih izdatel'skih sistemah. V *nix PS --- voobshche standart "de fakto". Otmetim takzhe, chto programma dvips sohranyaet v PS-fajle nachertaniya vseh ispol'zovannyh shriftov. Osobenno eto vazhno pri obmene dokumentami mezhdu platformami, kotorye lokalizovany po-raznomu ili ne lokalizovany voobshche.

Pomimo etogo, sushchestvuyut konvertory v drugie populyarnye formaty. Naprimer, avtoru izvestno o takom, kak latex2html. Nikogda etih konvertorov ne proboval, no videl rezul'taty ih deyatel'nosti --- uzhasno, no chitat' mozhno. Eshche podozrevayu, chto dlya ih raboty trebuetsya vse zhe ustanovit' TeX --- esli eto tak, to zachem oni voobshche nuzhny?

[Evgenij Cymbalyuk] sovetuet nachinat' s samogo prostogo iz nih, dostupnogo po adresu: http://hutchinson.belmont.ma.us/tth/tth-noncom/download.html. On pishet, chto na CTAN est' i drugie pakety, no oni slozhnee v nastrojke.

Pol'zovatelyam Micro$oft Widows :-) mozhno ispol'zovat' versiyu TeX dlya M$-DOG. Avtoru dovelos' vospol'zovat'sya dvumya versiyami, odna iz kotoryh rabotaet pod rasshiritelem DOS4GW i nazyvaetsya texas (vtoraya --- sbtex, pol'zuetsya tol'ko standartnoj DOS-pamyat'yu, no ee mozhno polnocennee nastroit' na russkij yazyk). Horoshim vyborom budet texas (ili drugie, kotorye ispol'zuyut rasshirennuyu pamyat'), tak kak rusifikaciya obychno trebuet mnogo pamyati. [Zamechanie: kogda texas byl oprobovan pod Windows NT 4.0, on chasten'ko "sypalsya" (pravda, neizvestno, vinovat li v etom sam TeX, DOS-rasshiritel' ili zhe vindovyj VDM), tak chto v nastoyashchij moment, uvy, nel'zya rekomendovat' ego bezogovorochno.]

Luchshaya iz vidennyh smotrelka dvi-fajlov nazyvaetsya DVIWIN v.2.7, avtor Hippocrates Sendoukas, versiya ot June 15, 1993. Ona zhe i pechataet na lyubom printere cherez vindovyj drajver.

Pomimo vysheupomyanutyh DOS-versij TeX, kotorye dovelos' oprobovat' lichno, chitateli posovetovali upomyanut' eshche takie:

emtex

[Aleksej Abramychev] na tom zhe CTANe lezhit emTeX v direktorii systems/dos.

[Evgenij Cymbalyuk] samyj moshchnyj i ser'eznyj paket pod DOS --- emtex. Kogda-to ya imel dve disketki 1.2 MB gde byla vsya sistema, nezapakovannaya.

MiKTeX

[Aleksej Abramychev] v direktorii CTAN systems/win32/MikTeX --- polnyj komplekt dlya Vyn'-95-98 (ili skoka tam ih eshche budet...). MiKTeX soderzhit v sebe installyator, tak chto problem s ustanovkoj ne budet --- vse ustanovitsya samo, on zhe ustanavlivaet svoyu smotrelku YAP, po svojstvam analogichnuyu dviWin, tol'ko vrode ne umeyushchuyu krutit' tablicy...

V svoe vremya ya pereshel ot EmTeX k MikTeX po sleduyushchim prichinam:

Tam zhe lezhit sharovarnaya obolochka WinEdit, zatochennaya kak raz pod MiKTeH, iz nee mozhno kak kompilirovat', tak i smotret' (pravda, rabotaet tol'ko 30 dnej). WinEdit --- nu, eto ot leni, pishu dokumenty ya vse ravno v MultiEdite, poskol'ku klaviaturnye kombinacii davno zabity, i mnogie iz nih pod Vin prosto ne rabotayut. A WinEdit ispol'zuyu tol'ko dlya otladki i spellinga (tam srazu krasnen'kim plohie slova podcherkivayutsya).

Ssylochka neposredstvenno na avtora MikTeHa: www.snafu.de/~cschenk/miktex

V sostave GNU/Linux standartnym yavlyaetsya paket teTeX, v poslednih versiyah rusifikaciya ne trebuet dopolnitel'nyh usilij.

Sushchestvuyut sistemy, gde sama rabota idet po principu WYSIWYG (What You See Is What You Get, chto vizhu na ekrane, to budet napechatano printerom), kak v MS Word ili Word Perfect, no rezul'tat zapisyvaetsya v formate LaTeX. Dlya Windows populyaren Scientific Word, a v GNU/Linux ispol'zuyut LyX.

3. Ustanovka

V osnovnom, zdes' privodyatsya poyasneniya po isprobovannym DOG-versiyam, poskol'ku v GNU/Linux (da i v bolee novyh versiyah dlya Windows) vse uzhe voobshche-to govorya sdelano avtomaticheski, hotya i tem, kto sidit v GNU/Linux, stoit prochitat' etot razdel, tak kak v nem budet raz座asnyat'sya naznachenie formatov fajlov i pr.

Vidennye avtorom versii TeX dlya M$-DOG rasprostranyalis' v arhive s uzhe zadannoj strukturoj katalogov, tak chto ih ustanovka svoditsya k raspakovke arhiva. Naprimer, poluchaetsya takaya struktura podkatalogov:

\TeX+
    |
    +FONTTFMS
    |
    +FORMATS.BIG
    |
    +INPUTS
Dlya programmy sbtex nuzhno zapustit' sb38set.exe, kotoromu trebuetsya ukazat', na kakom logicheskom diske ustanovlena programma i v kakom kataloge iskat' nekotorye fajly. |ta informaciya propisyvaetsya pryamo v ispolnyaemyj fajl (tupovato, no uzh tak sdelali).

Podkatalogi sleduyushchie:

FONTTFMS --- hranit opisaniya shriftov *.tfm (TeX Font Metrics). |ti fajly imeyut imena vida cmr10.tfm, chto znachit shrift nachertaniya "Computer Modern Roman", razmerom 10 pt. Dlya kazhdogo razmera shrifta v TeX, voobshche govorya, svoj .tfm: cmr5.tfm, cmr7.tfm i t.p. V otlichie ot vindovyh True Type, shrifty TeX masshtabirovat' v neskol'ko raz ne prinyato (hotya i vozmozhno chisto tehnicheski). |to sdelano potomu, chto dlya odnogo i togo zhe nachertaniya v razmerah 5 pt i 10 pt polagaetsya dlya uluchsheniya chitaemosti izmenyat' proporcii elementov bukv, t.e. eto voobshche govorya, raznye shrifty (nebol'shie koefficienty masshtabirovaniya, tem ne menee, primenyayutsya shiroko, skazhem 1.2 i 1.44). Krome togo, graficheskoe izobrazhenie simvolov v .tfm-fajlah ne sohranyaetsya, dlya etogo sluzhat fajly GF i PK (sm. nizhe).

FORMATS.BIG ("BIG" on potomu, chto "big TeX for i386", t.e. s rasshirennoj pamyat'yu) --- hranit "formatnye" fajly. CHto takoe formatnyj fajl? Delo v tom, chto v TeX prinyato sozdavat' "stili" dokumentov --- nabory makroopredelenij, kotorye mogut imet' bol'shoj ob容m. Naprimer, paket PiCTeX, pozvolyayushchij risovat' prosten'kie kartinki, vesit azh 120K teksta. Tak vot, chtoby pri obrabotke ocherednogo dokumenta ne prihodilos' kazhdyj raz translirovat' makrosy vo vnutrennee predstavlenie, delaetsya "formatnyj fajl". Po suti, eto prosto damp pamyati TeX posle togo, kak byli proglocheny opredelennye fajly. (I poetomu ON NE PERENOSIM.)

VAZHNO: pri generacii formatnogo fajla v nego zapisyvaetsya informaciya o nekotoryh ispol'zuemyh shriftah (tak nazyvaemye preloaded fonts), Poetomu pri povtornoj generacii shriftov nuzhno obnovit' i formaty, ispol'zuyushchie eti shrifty. (Esli izmenilsya tol'ko tip vyvodnogo ustrojstva, naprimer, so 180dpi na 600dpi (sm. nizhe), no ne soderzhimoe shrifta, to etogo delat' ne nado, poskol'ku v formatnyj fajl pishutsya tol'ko "metriki shrifta", a pri smene razresheniya oni ostayutsya prezhnimi).

Pri zapuske TeX emu mozhno skazat', kakoj format zagruzit':

tex '&plain' ...

INPUTS --- v etom kataloge hranyatsya standartnye fajly .tex, takie, kak, k primeru, stili (samyj pervyj iz nih --- plain.tex).

Imena katalogov ne fiksirovany i mogut zadavat'sya v peremennyh okruzheniya: nizhe prosto privoditsya kusok .bat-fajla, kotoryj dovodit konfiguraciyu "do uma" v moment zapuska programmy:

set TEXFORMATS=d:\tex\formats.big
set TEXPOOL=d:\tex\formats.big
set TEXFONTS=d:\tex\fonttfms
set TEXINPUTS=d:\tex\inputs
krome togo, pozabot'tes' o tom, chtoby rasshiritel' dos4gw (ili drugoj, esli on voobshche ispol'zuetsya) byl dostupen cherez PATH. Peremennaya TEXPOOL ukazyvaet katalog, v kotorom raspolozhen fajl tex.pool (tex.poo v M$-DOG). V etom fajle nahodyatsya simvol'nye stroki soobshchenij ob oshibkah.

V GNU/Linux vse gorazdo proshche i slozhnee. S odnoj storony, ustanovka proishodit avtomaticheski, a struktura katalogov standartizovana (standart TDS, TeX Directory Structure, detali ishchite v CTAN), no s drugoj --- kogda chto-to idet ne tak, gorazdo slozhnee najti prichinu. V nastoyashchij moment u avtora otsutstvuet dostatochno prodolzhitel'nyj opyt v konfigurirovanii TeX pod GNU/Linux, poetomu vam pridetsya pochitat' dokumentaciyu (sdelana ona tam ochen' horosho).

Generaciya formata plain

Po umolchaniyu TeX pri starte dolzhen zagruzit' kakoj-nibud' formatnyj fajl. Esli on ego ne nahodit, vydaetsya soobshchenie ob oshibke
I can't find the default format file!
|to znachit, chto TeX ne mozhet otyskat' fajl formata (on zovetsya plain.fmt v dvuh iz treh oprobovannyh versij). Poishchite ego. Naprimer, pod GNU/Linux on lezhit zdes':
/usr/lib/texmf/texmf/web2c/plain.fmt
Voobshche-to struktura katalogov TeX standartizovana, no imenno mesto dlya formatnyh fajlov opredeleno kak sistemno-zavisimoe. Posmotrite manpage--- tam ono mozhet ukazyvat'sya, a eshche u TeX'a dolzhny byt' peremennye okruzheniya i esli format ne nahoditsya, nuzhno zadat' put' k nemu v TEXFORMATS. Kstati, v etoj zhe manpage skazano, chto teper' po umolchaniyu zagruzhaetsya ne plain.fmt, a format s takim imenem, po kotoromu programma byla vyzvana (t.e. argv[0]), tak chto iskat' nado uzhe ne plain.fmt, a k primeru, tex.fmt. Bolee starye sistemy (k primeru, obe upomyanutye DOS-versii) etogo ne delayut.

Esli zhe formatov voobshche net, mozhno poprobovat' ego izgotovit':

esli est'

/TeX/INPUTS/plain.tex (/usr/lib/texmf/texmf/tex/plain/base/plain.tex)
to eto delaetsya tak (sbtex):
initex '\input plain.tex \dump \end'

v drugoj versii net initex (texas):

tex -i '\input plain.tex \dump \end'
posle etogo poyavitsya dva fajla: plain.fmt i plain.log. Esli v loge net oshibok, a tol'ko soobshcheniya o zagruzhennyh shriftah i t.d., to format gotov. V oprobovannyh versiyah on sozdaetsya v tekushchem kataloge i ego rukami mozhno perelozhit' po naznacheniyu. Mozhet sluchit'sya, chto ne budet najden fajl tex.pool --- est' peremennaya TEXPOOL.

V dal'nejshem mozhno yavno ukazat', kakoj format zagruzit' pri vyzove TeX:

tex '&plain' ...

Nastrojka METAFONT i generaciya shriftov

Kak uzhe bylo upomyanuto, shrifty TeX hranyat razmery liter i ih nachertaniya porozn'. Fajly nachertanij simvolov shrifta imeyut format GF i PK, t.e. "Generic Font" i "PacKed font". Po umolchaniyu, GF-fajly imeyut imena, sovpadayushchie s imenem tfm-fajla, i rasshirenie, ukazyvayushchee razreshayushchuyu sposobnost' ustrojstva, dlya kotorogo sgenerirovan shrift. Da, imenno tak! SHrifty TeX generiruyutsya dlya konkretnogo razresheniya na konkretnom ustrojstve. Vyglyadit eto, konechno, strannovato, no podumajte, chto razlichnye ustrojstva vyvoda imeyut svoi osobennosti, k primeru, u odnih tochka (piksel) kvadratnaya, u drugih --- net (da eshche i aspect ratio razlichaetsya) i t.p. Vse eti osobennosti i uchityvayutsya pri generacii shrifta. CHestno govorya, na moj vzglyad, eto edinstvennyj "nedostatok" TeX, kotoryj dosazhdaet pri aktivnoj rabote s razlichnymi razmerami shriftov. No! Lichno mne prishlos' stolknut'sya s problemoj masshtabirovaniya shriftov odin raz v techenie dvuh let postoyannoj raboty v TeX, a v GNU/Linux generaciya nuzhnogo shrifta uzhe delaetsya avtomaticheski.

Na stranice Borisa Tobotrasa rassmatrivaetsya sposob ispol'zovaniya v TeX shriftov PostScript.

Sistema generacii shriftov nazyvaetsya METAFONT. V M$-DOG versii (iz distributiva sbtex) pri ustanovke poluchaetsya takaya struktura katalogov:

MF-+
   |
   +-MFBASES
   |
   +-MFINPUTS
Naznachenie etih katalogov shodno s analogami TeX. Nastrojka sistemy svoditsya k zapusku programmy sbmfset.exe, ustanovka peremennyh okruzheniya ne obyazatel'na (spisok peremennyh sm. prilagaemuyu dokumentaciyu).

U programmy mf (osnovnaya utilita sistemy) takzhe sushchestvuyut zagruzhaemye dampy pamyati, nazyvaemye "bazami" (naprimer, u TeX --- plain.fmt, u METAFONT --- plain.base), sredi kotoryh osobo vydelim cm.base --- osnovu generacii shriftov Computer Modern.

Sozdanie bazy delaetsya tak:

inimf plain input local dump
Komanda "input local" po-vidimomu, specifichna imenno dlya sbmf. (Ne to, chtoby ee nel'zya bylo realizovat' v drugoj sisteme, prosto tam net po umolchaniyu ishodnika local.mf.)

Poluchennyj "plain.bas" ("plain.base") perenositsya v MFBASES, log mozhno udalit'.

Sgenerirovat' shrift, k primeru, cmr10, mozhno sleduyushchej komandoj:

mf '&cm' 'mode:=cdvi; mag:=magstep(0);input cmr10'
Rasshifruem napisannoe. Pervyj parametr imeet to zhe naznachenie, chto i dlya TeX --- imya bazy. Dalee idet "imya ustrojstva". Kak uzhe bylo skazano, METAFONT uchityvaet v svoej rabote osobennosti konkretnyh fizicheskih ustrojstv, dlya chego v fajle modes.mf hranitsya mnozhestvo ih opisanij. Ustrojstvo cdvi, po-vidimomu, nestandartno, ono opredelyaetsya dopolnitel'no v fajle local.mf. V GNU/Linux ego net. Skoree vsego, naibolee bezopasno skazat' "mode:=localfont", ustrojstvo "localfont" imeetsya kak v DOG, tak i v GNU/Linux, no ego istinnoe znachenie mozhet byt' razlichno. Naprimer, v DOG (sbmf) eto imagen, v GNU/Linux --- ljfour. Sleduyushchij parametr opredelyaet masshtabirovanie shrifta (v TeX i METAFONT opredeleny standartnye koefficienty masshtabirovaniya, nazyvaemye magstep(0)--magstep(6), obrazuyushchie geometricheskuyu progressiyu: 1, 1.2, 1.44 i t.d., estestvenno, takzhe imeetsya sposob zadaniya proizvol'nogo masshtaba.). Nakonec, poslednee opredelyaet imya generiruemogo shrifta.

Esli programma otrabotaet bez oshibok, to ona vyvedet na ekran poocheredno vse simvoly shrifta (esli najdet podderzhku grafiki), a v log-fajl --- tekstovye soobshcheniya ob etom zhe. Dlya shrifta sozdaetsya dva fajla: metricheskaya informaciya o shrifte (.tfm) i graficheskij obraz simvolov --- GF-fajl, kotoryj imeet imya vida: cmr10.180, esli vashe ustrojstvo vyvoda podderzhivaet 180 tochek na dyujm. S pomoshch'yu standartnoj programmy GFtoPK mozhno upakovat' ego:

gftopk cmr10.180
i poluchit' iz nego cmr10.180pk v GNU/Linux libo cmr10.pk v M$-DOG.

Sleduet otmetit' takuyu detal'. Pri generacii dvi-fajla TeX zapisyvaet v nego kontrol'nuyu summu ispol'zuemyh shriftov, a sredstva vyvoda dvi (programmy prosmotra i pechati) sravnivayut ee so shriftami, dostupnymi v moment vyvoda. Takim obrazom garantiruetsya polnoe shodstvo rezul'tatov raboty. Poetomu, esli na vas obrushivaetsya potok soobshchenij o nesootvetstvii shriftov, libo ignorirujte ih (esli vy TOCHNO znaete, chto vashi shrifty yavlyayutsya nadmnozhestvom ispol'zovannyh v dvi-fajle), libo zamenite shrifty, libo otformatirujte problemnyj dokument na svoej mashine (pri etom bud'te gotovy, chto rezul'tat mozhet sushchestvenno otlichat'sya ot ishodnogo).

Nastrojka DVI viewer'a

DVIWIN takzhe ustanavlivaetsya raspakovkoj arhiva v katalog, dopustim, DVIEW. Dalee nuzhno ee nastroit'. Osnovnoj punkt nastrojki --- ukazanie puti k fajlam shriftov. V M$-DOG prinyato raspredelyat' shrifty po katalogam. Naprimer, pust' oni lezhat v kataloge "DVIEW\PXL\". Znachit, shrifty pod razreshenie 180 nuzhno sobrat' v "DVIEW\PXL\180\", i t.d. Nastrojka DVIWIN svoditsya k tomu, chto nuzhno opredelit' v "Options/Custom Resolutions" razreshenie vashego printera, esli ego net sredi standartnyh, i monitora (luchshe budet ne vychislyat' ego tochno, poskol'ku poluchite ochen' melkij shrift, a vzyat' "s zapasom", tak, avtor ispol'zuet 132dpi pri istinnom razreshenii monitora 96dpi). Posle etogo nuzhno zadat' "Options/Font Directory" (k primeru, "d:\dview\pxl\$r"). |ta stroka pri poiske shrifta ispol'zuetsya tak: vmesto $r podstavlyaetsya razreshenie i fajl shrifta ishchetsya v etom kataloge. (Imya katalogov ne obyazatel'no dolzhno byt' isklyuchitel'no chislovym, mozhno i tak: "d:\dview\pxl\dpi$r" dlya imen vida "dpi180").

Ostal'nye opcij opisyvat'sya ne budut --- v programme horoshaya spravochnaya sistema. Otmetim tol'ko, chto esli pri otkrytii dvi-fajla nichego ne vidno, eto skoree vsego iz-za otsutstviya nuzhnogo shrifta. Imeetsya vozmozhnost' prosmotret' protokol otkrytiya --- v nem fiksiruetsya, kakoj shrift ne najden.

4. Zapusk

Proverku korrektnosti ustanovki budem delat' na anglijskom tekste, chtoby ne zaviset' ot detalej neizvestno kakoj rusifikacii (esli ona voobshche est' v vashej sisteme).

Poprobujte prosto zapustit' TeX:

tex
pri etom dolzhno poyavit'sya soobshchenie tipa:
This is TeX, C Version 3.14t3
i priglashenie ko vvodu:
**
eto govorit o tom, chto sistema gotova ispolnyat' komandy. Naprimer, komandu "pustaya operaciya":
**\relax
vse komandy obychno nachinayutsya simvolom '\' (v nekotoryh formatah eto ne tak), poetomu v imenah fajlov, dazhe v M$-DOG, prinyato ispol'zovat' kak razdelitel' katalogov '/'. Priglashenie pri etom izmenitsya:
*
Kogda priglashenie imeet vid '**', eto znachit, chto stroka, nachinayushchayasya '\' budet interpretirovana kak komanda, v protivnom sluchae schitaetsya, chto vvedeno imya fajla, iz kotorogo nuzhno schitat' tekst dokumenta. To est', mozhno vvesti
** file
i TeX popytaetsya najti fajl file.tex. Vmesto etogo mozhno zadat'
**\input file.txt
i budet predprinyata popytka zagruzit' file.txt (rasshirenie ukazano yavno). Otmechu dlya *nix'istov: mozhno ukazyvat' put', no ne ispol'zuya simvol '~' (on imeet special'noe znachenie v formate plain TeX, hotya, voobshche govorya, v drugih formatah ego primenenie v imeni fajla mozhet byt' vpolne dopustimym).

Zagruzhennyj fajl interpretiruetsya, kak esli by on byl vveden s klaviatury, a po ego okonchanii TeX vnov' perehodit v komandnyj rezhim i vydaet priglashenie i my mozhem prodolzhat' vvod. No ne budem poka rassmatrivat' etogo, a prosto vvedem tekst s klaviatury:

This is TeX, C Version 3.14t3
**\relax

*Hello, \TeX.

*This is the first paragraph.

*
(Please type a command or say `\end')
*This is the second.

*
(Please type a command or say `\end')
*\bye

Iz etogo primera vidno, chto prostoj tekst vvoditsya bez lishnih trudnostej: on nabiraetsya abzac za abzacem, razdelennymi pustoj strokoj. Konec vvoda oboznachaetsya komandnym slovom '\bye' (mozhno ispol'zovat' '\end', no '\bye' predpochtitel'nee, tak kak avtomaticheski delaet nekotorye zavershayushchie operacii). Komandnoe slovo \TeX vyvodit logotip TeX'a.

Teper' to zhe samoe so vvodom iz fajla:

first.tex:
Hello, \TeX.
This is the first paragraph.

This is the second.

\bye
Komandnaya stroka mozhet byt' takoj:
tex first.tex
ili takoj:
tex "\batchmode\input first.tex"
Komanda "\batchmode" privodit k tomu, chto TeX ne budet ostanavlivat'sya na kazhdoj vstrechennoj oshibke, ozhidaya vashih komand po ee ispravleniyu. Voobshche govorya, soderzhimoe komandnoj stroki prosto interpretiruetsya TeX'om kak budto ono bylo vvedeno s klaviatury, i tam moglo by byt' vse, chto ugodno, naprimer:
tex "Hello, \TeX. This is the 1st paragraph.\par This is the 2nd.\bye"

Esli vse proshlo, kak nado, my poluchim dva vyhodnyh fajla: texput.dvi i texput.log. V pervom soderzhitsya otformatirovannyj tekst, a vo vtorom---protokol, v kotorom fiksiruyutsya nashi dejstviya i reakciya TeX'a. V sluchae, kogda vvedennyj tekst soderzhit oshibki, oni budut vyvedeny syuda zhe. Esli vasha sistema ne podderzhivaet russkoj simvol'noj tablicy, to v loge dlya kazhdogo russkogo simvola :-( poyavitsya otdel'noe soobshchenie, chto shrift "..." ne soderzhit simvola "..." Krome soobshchenij ob oshibkah, protokoliruyutsya samye razlichnye fakty iz zhizni TeX'a: naprimer, imena vvodimyh fajlov (nemalovazhno, esli dokument sostavnoj), nomera stranic, a takzhe soobshcheniya o perepolnennyh i nedopolnennyh boksah (overfull and underfull [hv]boxes), gde hbox i vbox sootvetstvenno "gorizontal'nyj" i "vertikal'nyj boksy". |ti soobshcheniya nefatal'ny, ih smysl v tom, chto ne udaetsya otyskat' udachnoe razbienie teksta na stroki/stranicy. V TeX prinyato pravilo, chto esli ne udaetsya sdelat' eto udachno (naprimer, TeX nikogda, esli ne prikazat' emu eto yavno, ne pytaetsya rastyanut' promezhutki mezhdu slovami slishkom sil'no), to konfliktnoe slovo ne razdelyaetsya i poprostu vylazit na pravoe pole lista. Soobshchenie ob etom zapisyvaetsya v protokol, a na polyah, ryadom s mestom avarii, stavitsya chernyj pryamougol'nik, otmechayushchij ego. (Anglijskoe nazvanie --- "slug"). Imeetsya vozmozhnost' kak gibko upravlyat' avtomaticheskimi pravilami razbieniya, tak i zadavat' svoi tochki razryva stroki, perenosa slova i t.p. Ochen' sushchestvennym dlya polucheniya krasivogo vyvoda yavlyaetsya horoshaya tablica perenosov. Sleduet s sozhaleniem otmetit', chto ispol'zovannaya avtorom zachastuyu ne dejstvuet, poetomu pri formatirovanii Knuta, v chastnosti, vy poluchite mnozhestvo perepolnenij. Oni ne ispravlyalis' vruchnuyu, poskol'ku vozmozhno, chto vasha tablica okazhetsya bolee polnoj. Na vsyakij sluchaj, vot vkratce sposob lecheniya nepravil'nogo perenosa: najti v tekste problemnoe slovo i pryamo v nem postavit' v nuzhnom meste tochku(i) perenosa:

obo\-ronosposob\-nost'
(|to vozmozhnye tochki perenosa).

Sushchestvuet i drugoj sposob, kotoryj bolee predpochtitelen. S ego pomoshch'yu mozhno kak zadat' perenosy v slovah, kotorye ne opredelyayutsya po imeyushchejsya tablice avtomaticheski, tak i zadat' slova-isklyucheniya, esli standartnyj metod daet nepravil'noe razbienie. (Samye izvestnye sluchai stanovyatsya anekdotami: Donal'd Knut upominaet v [2], chto odna iz sistem avtomaticheskogo formatirovaniya tekstov umudrilas' perenesti slovo "God", a drugaya --- "weeknights", no sovsem ne tam, gde nuzhno :).

Vot kak eto delaetsya. V nachale teksta zadaetsya slovar' isklyuchenij:

\hyphenation{frame-work ef-fi-ciency Lo-mo-no-sov}
Dalee TeX budet ispol'zovat' etot slovar' dlya poiska tochek razryva slov do togo, kak obratitsya k obshchej tablice. Registr bukv roli ne igraet. Slova pri sopostavlenii dolzhny tochno sovpast', poetomu pridetsya vvodit' neskol'ko trebuemyh form. (Obshchaya tablica rabotaet ne so slovami celikom, a s ih fragmentami, tak chto odnokorennye slova ona perenosit "avtomaticheski", v otlichie ot slovarya isklyuchenij.)

"Rodnym" yazykom TeX yavlyaetsya, konechno, anglijskij, no avtor sproektiroval ego s uchetom nuzhd i drugih yazykov. Kak pisal Donal'd Knut v predislovii k russkomu perevodu "The TeX book", on vsegda pomnil o tom, chto "teh"---vazhnoe russkoe slovo. CHtoby nauchit' TeX simvolam kirillicy i pravilam perenosa, prinyatym u nas, sushchestvuyut razlichnye makropakety "lokalizacii". V kachestve primera populyarnyh lokalizacij mozhno nazvat' babel i LaTeX2e. |ti pakety podderzhivayut mnozhestvo razlichnyh yazykov i dopuskayut nastrojku na novye.

K sozhaleniyu, ideal'nogo po vsem parametram vybora sdelat' ne udaetsya. Pravila vvoda teksta sushchestvenno menyayutsya ot paketa k paketu. Naprimer, vmesto russkih bukv v AmSTeX upotreblyayutsya komandnye slova, drugie trebuyut yavnogo pereklyucheniya mezhdu yazykami i t.p. Luchshie pozvolyayut vvodit' russkij tekst bez kakih-libo uhishchrenij. Vot primer nabora teksta [Aleksej Abramychev]:

\documentclass[12pt,a4paper]{article}
% "Raskommentirujte" svoyu kodirovku.
% \usepackage[cp1251]{inputenc}
% \usepackage[koi8-r]{inputenc}
\usepackage[russian]{babel}
\begin{document}
Papa u Vasi silen v matematike, uchitsya papa u Vasi ves' god.
Navuhodonosor.
\end{document}
|tot primer pol'zovateli GNU/Linux mogut oprobovat' v svoej sisteme, vydav komandu:
latex example.tex
(konechno, esli fajl s tekstom primera nazyvaetsya example.tex.)

Po istoricheskim prichinam, dlya ocifrovki Knuta ispol'zovalsya inoj paket rusifikacii, opisannyj v sleduyushchem razdele.

5. Rusifikaciya

Rusifikaciya, ispol'zuemaya pri ocifrovke "Iskusstva programmirovaniya", mozhet byt' imitirovana samym prostym sposobom:

  1. Beretsya obychnyj format plain.tex i v nem vse standartnye shrifty zamenyayutsya na drugie, analogichnye po nachertaniyu, no s russkimi simvolami. T.e. dlya shrifta cmr10 nuzhno podyskat' nekij romanskij shrift razmerom 10pt, v kotorom budut russkie litery. (YAsno, chto luchshe vsego takoj, verhnyaya polovina kodovoj tablicy kotorogo tochno sovpadaet po nacher