CSTeX pro UNIX, postup instalace z baliku web2c 7.2 =================================================== 27.3.98 Petr Olsak Balik web2c obsahuje zdrojove texty TeXu a ostatnich potrebnych programu, nastroje na konverzi jazyka web (ve kterem je TeX napsan) do jazyka C a zdrojove texty knihoven v jazyce C (zvlastni pozornost zaslouzi knihovna prohledavacich algoritmu kpathsea). Vse kompaktne pripraveno Karlem Berrym tak, ze staci napsat configure; make; make install a pro vesmes vsechny UNIXove platformy tim vznika provozuschopna instalace TeXu. Takto ale dostaneme jen TeX mluvici anglicky a nasim dalsim cilem je jej pocestit. Dale nasleduje postup kompilace TeXu a podpurnych programu ze zdrojovych textu vcetne zaneseni podpory cestiny. Pokud nechcete kompilovat programy ze zdrojovych textu, podivejte se do bin/README.bin-web2c7.2, zda nejsou jiz pro Vasi platformu binarky predkompilovany. Potrebne soubory ---------------- texk-7.2.tar.gz ......... Zdrojove texty web2c TeXu a dalsich pomocnych programu: prohlizec xdvi, ovladac dvips a dvilj. Tento balik obsahuje krome originalniho Knuthova TeXu i jednotliva rozsireni (vse se kompiluje dohromady jednim make): * etex -- pridava primitivy zvlaste pro lepsi makroprogramovani * pdftex -- vystup nejen do dvi ale rovnou do pdf * omega -- tex s vnitrnim kodovanim Unicode a 16bitovymi fonty texmflib-7.3.tar.gz ..... Knihovna vstupnich souboru (fonty, makra apod.). etexlib-2.0.tar.gz ...... Vstupni soubory specialne pro etex. pdftexlib-0.12f.tar.gz .. Vstupni soubory specialne pro pdftex. omegalib-1.5.tar.gz ..... Vstupni soubory specialne pro omega. Uvedene baliky jsou cerpany z oficialniho Berryho web2c TeXu z CTANu z brezna 1998 a jsou vystaveny na pocitaci math.feld.cvut.cz. V budoucnu neni vylouceno, ze knihovny budou na CTANu v novejsi verzi. Nize uvedeny popis ovsem obsahuje me zkusenosti s prave temito verzemi. Baliky pro pocesteni web2c jsou ulozeny v techto souborech. enctex.tar.gz ....... Patch pro tex.web umoznujici menit kodovani csplain.tar.gz ...... Makra pro csplain cslatex-*-*.tar.gz .. cslatex 2e (za hvezdickami se skryva mesic a rok posledni zaplaty). Staci, kdyz pouzijete ten nejcerstvejsi. csfonts.tar.gz ...... CS-fonty (nutne pro formaty csplain a cslatex) cspsfonts.tar.gz .... Podpora cestiny pro zakladnich 32 fontu, ktere jsou instalovany v kazdem PostScriptovem RIPu. csuvodlat.tar.gz .... Jednoducha prirucka k LaTeXu (bohuzel ke stare verzi 209). cspdftexlib.tar.gz .. DC fonty + CM fonty v Type1 formatu a doplnujici konfiguracni soubory pro pdftex. Pro instalaci byste meli mit zhruba 100 MB volneho mista pro zdrojove texty (ktere po uspesne kompilaci a instalaci muzete vyhodit) a dale 75 MB pro vlastni instalaci vcetne tzv. texmf/ stromu. Pro texmf/ strom se doporucuje rezervovat trochu vice mista -- zhruba 100 MB by mohlo stacit. Na pocatku tedy pocitejte se 100+100 MB a po odstraneni zdrojovych textu staci 100 MB. Pokud nebudete chtit kompilovat vsechna vyse zminena rozsireni TeXu zahrnuta v texk-7.2, diskove naroky jsou samozrejme nizsi. Rozdeleni adresaru ------------------ Zde je popsan nejjednodussi zpusob instalace, kdy je prevzata struktura adresaru implicitni z web2c. TeX se vam nastehuje (implicitne) do techto aderasru: /usr/local/bin ......... Programy ke spusteni /usr/local/share/texmf .. Kosaty strom vstupnich souboru pro TeX /usr/local/man/man1 ..... Manualove stranky TeXu a dalsich programu /usr/local/info ......... Info soubory /usr/local/include/kpathsea .. Hlavickove soubory ke knihovne kpathsea /usr/src ................ Tam nastehujeme zdrojove texty k TeXu. Volba tohoto adresare vubec neovlivni cinnost instalace. Pozadujeme-li jinou strukturu adresaru, je nutno rozbalit nejprve texk-7.2.tar.gz napriklad do /usr/src a prostudovat soubor INSTALL v adresari kpathsea a pripadne dalsi dokumentaci. Napriklad pri spusteni shellu configure (viz nize) je mozne pomoci optionu --datadir naznacit, ze kosaty strom vstupnich souboru pro TeX chceme mit jinde. Vlastni instalace ----------------- # cd /usr/src # mkdir /usr/local/share # ftp math.feld.cvut.cz Name: ftp Password: email@adresa Guest login ok, access restrictions apply. ftp> cd /pub/cstex/unix ftp> bin ftp> get texk-7.2.tar.gz ftp> get enctex.tar.gz ftp> lcd /usr/local/share ftp> get texmflib-7.3.tar.gz ftp> get etexlib-2.0.tar.gz ftp> get pdftexlib-0.12f.tar.gz ftp> get omegalib-1.5.tar.gz ftp> prompt ftp> mget cs*.gz ftp> bye # zcat texk-7.2.tar.gz | tar xvf - # zcat enctex.tar.gz | tar xvf - # cd /usr/local/share # zcat texmflib-7.3.tar.gz | tar xvf - # zcat etexlib-2.0.tar.gz | tar xvf - # zcat pdftexlib-0.12f.tar.gz | tar xvf - # zcat omegalib-1.5.tar.gz | tar xvf - Pokud nechceme nektere rozsireni (etex, pdftex, omega) instalovat, odpovidajici knihovnu samozrejme neni potreba rozbalit. Pak ale nezapomente pri spusteni ./configure (viz nize) zvolit option --help a dale --WITHOUTcosi podle Vasi volby. Pokud nemate instalovany vsechny knihovny a nechate ./configure bez parametru, neprojde make az do konce! Protoze se v ramci kompilece "make" generuji formaty plain a LaTeX k TeXu i ke vsem instalovanym rozsirenim, je vhodne pripravit pro generovani LaTeXu pudu, aby se vygeneroval tento format vcetne ceskych a slovenskych vzoru deleni slov. Velmi doporucuji z vychozi americke distribuce smazat vse, co se tyka LaTeXu, abychom pro jistotu nekrizili verzi pocesteni s verzi LaTeXu. Balik cslatex totiz kompletni originalni LaTeX obsahuje: # cd /usr/local/share/texmf/tex # rm -rf latex # cd /usr/local/share # zcat csplain.tar.gz | tar xvf - # zcat cslatex-12-97.tar.gz | tar xvf - # zcat csfonts.tar.gz | tar xvf - # zcat cspsfonts.tar.gz | tar xvf - # zcat cspdftexlib.tar.gz | tar xvf - # zcat csuvodlat.tar.gz | tar xvf - Nyni pristoupime k vlastni kompilaci zdrojovych textu: $ cd /usr/src/texk-7.2 $ sh ./configure Tento script vytvori soubory Makefile a dalsi konfiguracni soubory. Vstupni udaje vetsinou cerpa ze souboru *.in. Dale upravime tex.ch (bude umet psat na konzoli cesky a navic umozni prekodovat): $ cd web2c $ patch <../../enctex/enctex.patch-to-7.2 Dokumentaci k enctexu najdete v ../../enctex/README. Jedna se o rozsireni TeXu, zavadejici nove tri primitivy \xordcode, \xchrcode a \xprncode, kterymi lze nastavovat kodovaci tabulky pri generovani formatu. Pro cestinu, ktera je v ruznych systemech kodovana sesti ruznymi kodovanimi, je to velmi uzitecne. Take je vhodne: # mkdir /usr/local/share/texmf/tex/enctex # cp ../../enctex/*.tex /usr/local/share/texmf/tex/enctex/ ale neni to nutne. UPOZORNENI: enctex.patch pozmeni tex.ch, coz zpusobi zmenu nejen originalniho TeXu, ale tez rozsireni etex a pdftex. I tyto nadmnoziny TeXu budou od teto chvile umet prekodovaci primitivy \xordcode, \xchrcode a \xprncode. enctex.patch neovlivni pouze omegu. Dale upravime Makefile pro xdvik: $ cd ../xdvik $ vi Makefile Na radku 108 je treba do seznamu DEFS pridat -DA4, aby xdvi pracoval implicitne se stranou formatu A4 (jinak by pouzil americky format papiru). Rovnez je uzitecne deklarovat jiny nahradni font (pro pripad, kdy xdvi nenajde spravny font) pomoci: -DALTFONT=\"csr10\". Zmineny radek vypada po uprave takto: DEFS = -DHAVE_CONFIG_H -DA4 -DALTFONT=\"csr10\" $(XDEFS) Ja osobne jsem jeste modifikoval implicitni rozliseni xdvi (ktere je primarne nastaveno na 600dpi) na 300dpi pridanim dalsich DEFS: -DBDPI=300 -DMFMODE=\"cx\" -DSHRINK=\"3\" ovsem to uz neni zcela nutne. Podrobneji viz INSTALL v adresari xdvik. Nyni pristoupime k vlastni kompilaci vsech zdrojovych textu. Budou se kompilovat programy kolem TeXu a TeX samotny a jeho rozsireni z web2c, dale programy dvips, xdvik a dvilj. $ cd /usr/src/texk-7.2 $ make $ su # make install Doladeni instalace ------------------ *** csplain, cslatex Vygenerujeme format csplain a pripravime odpovidajici linky: # cd /usr/local/share/texmf/web2c # tex -ini csplain.ini # ln -s latex.fmt cslatex.fmt # cd /usr/local/bin # ln -s tex csplain # ln -s tex cslatex TeX s Knuthovym formatem plain vyvolame jednoduse jako "tex dokument". TeX s formatem csplain budeme (diky linku v /usr/local/bin) vyvolavat strucne jako "csplain dokument" a csLaTeX jako "cslatex dokument" nebo "latex dokument" (oboji je totez). *** pdftex Pokud bychom chteli generovat format pro etex, pdftex a omega, je potreba nejprve prostudovat odpovidajici dokumentci. Pro pdftex je mozne postupovat takto: # cd /usr/local/share/texmf/web2c # pdftex -fmt pdfcsplain -ini csplain.ini To vygeneruje format s nazvem pdfcsplain.fmt. Tento nazev je dan parametrem -fmt, coz ma vyssi prioritu nez nazev volaneho souboru. # cd /usr/local/bin # ln -s pdftex pdfcsplain pdfTeX s Knuthovym formatem plain vyvolame jednoduse jako "pdftex dokument". pdfTeX s formatem csplain budeme (diky linku v /usr/local/bin) vyvolavat jako "pdfcsplain dokument" a pdf-LaTeX jako "pdflatex dokument". Pokud budeme chtit v pdfTeXu pracovat se standardnimi 35 PostScriptovymi fonty, pak musime udelat jeste dalsi praci. Acroread totiz ma vestaveny jen varianty fontu Times, Helvetica a Courier, takze jen tyto fonty budou bez problemu. Ostatni musime instalovat v pfb formatu na disk. Je mozne tyto fonty slinkovat s fonty v Ghostscriptu napriklad takto: # cd /usr/local/share/texmf/fonts/type1/adobe/subs # sh ./mklinks Upozornuji ale, ze nektere fonty mi presto nefungovaly (podrobneji viz obsah souboru mklinks). Obavam se, ze to spise bude chyba soucasne verze pdftexu, nez chyba fontu. *** etex Format pro etex takovy, aby umoznoval pristup k rozsirenym funkcim, se generuje pomoci hvezdicky na zacatku. Napriklad ecsplain vygenerujeme nasledovne: # cd /usr/local/share/texmf/web2c # etex -efmt=ecsplain -ini \*csplain.ini # cd /usr/local/bin # ln -s etex ecsplain *** dvips Konfigurujme jeste dvips, aby pracoval implicitne se stranou A4: # cd /usr/local/share/texmf/dvips/ # cp /usr/src/texk-7.2/dvipsk/psfonts.map . # cd config # vi config.ps V souboru config.ps zakryjeme procentem radek 4, aby vystup z dvips nesel implicitne do lpr: %o |lpr *** Aktualizace databaze texmf/ Cinnost uzavreme aktualizaci texmf/ databaze: # mktexlsr Tento povel vytvori soubor ls-R v adresari /usr/local/share/texmf. Do tohoto souboru se TeX a ostatni programy vzdy podivaji, aby nasly pozadovany vstupni soubor co nejrychleji. Po kazde zmene stromu texmf/ je vhodne tento povel provest. Je rovnez vhodne jej zaradit do cronu. Testovani --------- Pri prvnim spusteni xdvi a pripadne dvips budete muset chvili pockat, az se vygeneruji potrebne bitove mapy fontu. Pri opakovanem pouziti xdvi a dvips se stejnymi fonty uz cekat nemusite -- bitove mapy fontu uz jsou vyrobeny. Pokud si chcete usetrit cas, pouzijte vychozi skupinu pk bitmap pro CS-fonty, kterou najdete v bin/CS-cx-300pk.tar.gz nebo bin/CS-ljfour-600pk.tar.gz. Viz README.cs-pk v csTeXu (cstex/unix/bin). (v xtermu:) $ cd ~/prac $ tex story *\end $ xdvi story $ cp /usr/local/share/texmf/doc/cstex/*.tex . $ csplain parpozn $ xdvi parpozn Po zpracovani TeXem vidime na terminalu jeden Underfull \hbox, a vyrez textu pod timto hlasenim je psan cesky s akcenty a ne s ^^ef a podobymi potvorami. To je znameni, ze je funkcne zacleneny enctex. Analogicky pokus udelame s pdftexem, ktery by dokument mel prevest do formatu pdf. Mame-li instalovan Acroreader, muzeme se na vysledek podivat: $ pdfcsplain parpozn $ acroread parpozn.pdf Pro dalsi experiment vyzkousime pozmenit radek 9 souboru parpozn.tex tak, ze odstranime procento (tj. aktivujeme \input cncent) $ vi parpozn.tex $ csplain parpozn $ xdvi parpozn Pokud mame v systemu spravne instalovany Ghostsript, mely by se bitove mapy PostScriptoveho fontu po chvili objevit v xdvi. Jsme-li uchvaceni touto moznosti, muzeme vyzkouset: $ csplain test8z $ xdvi test8z Nyni zkusime funkcnost vystupu do PostScriptu: $ dvips test8z $ dvips -Ptiskarna test8z V prvnim kroku vznika test8z.ps, zatimco v druhem je rovnou proveden tisk na PostScriptove tiskarne "tiskarna", ktera musi byt instalovana v /etc/printcap. V nove verzi dvips neni potreba pritomnost souboru /usr/local/share/texmf/dvips/config.tiskarna. Program pak pouzije standardni nastaveni a vystup presmeruje do lpr -Ptiskarna. Dale vyzkousime funkcnost cslatexu: $ cslatex testlat $ xdvi testlat $ cp /usr/local/share/texmf/doc/uvodlat/* . $ cslatex ltxstruc $ xdvi ltxstruc Pro spravne sestaveni obsahu je nutno spustit $ cslatex ltxstruc jeste dvakrat, tj. dohromady trikrat. Pokud se nam nelibi, ze LaTeX pise do logu: "...je 1. z^^e1^^f8^^ed 1987. ^^a9patn^^ec" misto neceho prehlednejsiho, pak muzete jeste jednou pregenerovat format LaTeXu, tentokrat s hlavnim souborem cslatex.ini: $ su # cd /usr/local/share/texmf/web2c # tex -ini cslatex.ini Vlastnosti ---------- A) xdvi umi na pozadi spolupracovat s Ghostsriptem. Kdyz tedy pouzijete \input epsf text ... \par \epsfbox{obrazek.eps} text ... \end a mate-li pripraveny obrazek.eps v aktualnim adresari, pak jej po TeXovani primo vidite v xdvi. B) xdvi umi obnovovat zobrazeni podle zmeneneho souboru.dvi. Kdyz tedy udelate zmeny a znovu TeXujete svuj dokument, pak staci kliknout mysi kamkoli na plochu xdvi a mate obnoveno zobrazeni. C) xdvi vola MakeTeXPK i v pripade, ze je potreba vykreslit PostScriptovy font. Na pozadi se pak vola gsftopk a Ghostscript, coz vytvori automaticky bitovou mapu pk v rozliseni pro xdvi. Vidime tedy, ze xdvi dokaze verne zobrazit vsechny PostScritpove fonty, ktere jsou instalovany v Ghostscriptu. D) Tiskove fronty UNIXu lze konfigurovat tak, aby se pro ne-PostScriptove tiskarny volal na pozadi Ghostscript jako filtr. Tim muzete pouzivat dvips jako ovladac pro tiskarny univerzalne. Napriklad $ dvips -Pjehla dokument $ dvips -Pinkjet dokument $ dvips -Plj4color dokument $ dvips -Plinotype dokument muze pri spravne konfiguraci vytisknout nejprve dokument na maticove tiskarne, ktera neni PostScriptova (tiskova fronta pouzije na pozadi Ghostscript), druhy povel vytiskne totez na inkoustove tiskarne (ta taky nebyva PostScriptova), treti povel tiskne dokument na barevnou PostScriptovou tiskarnu a ctvrty tiskne dokument na film pro ofsetove predlohy (fotosazeci zarizeni umi samozrejme PostScript). Jak konfigurovat tiskove fronty? Viz man lpd. E) Soucasna instalace Ghostscriptu me mile prekvapila. Zakladni PostScriptove fonty (jako Times apod.) jiz nemaji odkazy na nekvalitni rastry, ale panove kdesi vydolovali kvalitni .pfb public domain ekvivalenty. Proto je tisk PostScriptoveho fontu pres Ghostscript podstatne kvalitnejsi, nez tomu bylo za doby, kdy jsem se s Ghostscriptem seznamoval. Zname chyby ----------- ** dvips dvips 5.78 obsahuje stejnou chybu, jako dvips 5.66a sireny ve web2c 7.0. Jde o to, ze nepredpoklada, ze by fonty vkladane povelem %*Font: (takovy komentar vytvari METAPOST) mohly byt virtualizovane. Proto pri METAPOSTovem obrazku, ktery cerpa z cm fontu dojde k chybe: cm je totiz v CSTeXu virtualizovane a odkazuje na csfonty. Cesta k naprave (zatim provizorni) je dvoji: Bud nahradite text "%*Font: cmr.." za text "%*Font: csr.." v kazdem pouzitem eps souboru, nebo vyhodite z podstromu texmf/fonts/vf cely adresar cm2cs. Dalsi zavada dvips je v tom, ze neumi desifrovat vsechny pfb fonty, se kterymi jinak nema RIP potize. V takovem pripade je nutne zavest font bez desifrovani pomoci parametru -i0. ** pdftex Pri pouziti pdftexu s nekterymi standardnimi PostScriptovymi fonty jsem shledal jiste problemy. Viz soubor. /usr/local/share/texmf/fonts/type1/adobe/subs/mklinks Verim, ze v dalsich verzich pdftexu bude problem odstranen.