From 2257828845c52e3a8b6becfa850d1eafdf6f20e5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 21 Dec 2012 17:17:30 +0000 Subject: new doc package cstex (20dec12) git-svn-id: svn://tug.org/texlive/trunk@28595 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/cstex/00-README-cslatex | 23 + Master/texmf-dist/doc/cstex/INSTALL.cslatex | 35 + Master/texmf-dist/doc/cstex/README-csplain | 4 + Master/texmf-dist/doc/cstex/README-cspsfont | 55 + Master/texmf-dist/doc/cstex/README-doc | 30 + Master/texmf-dist/doc/cstex/README-opmac | 7 + Master/texmf-dist/doc/cstex/README.cslatex | 211 ++ Master/texmf-dist/doc/cstex/cspsfonts-gen/README | 12 + Master/texmf-dist/doc/cstex/cspsfonts-gen/fontgen | 72 + .../texmf-dist/doc/cstex/cspsfonts-gen/kernoff.c | 45 + Master/texmf-dist/doc/cstex/cspsfonts-gen/mkf | 9 + Master/texmf-dist/doc/cstex/cspsfonts-gen/mkfc | 9 + Master/texmf-dist/doc/cstex/cspsfonts-gen/xl2.enc | 332 ++ Master/texmf-dist/doc/cstex/cspsfonts-gen/xt2.enc | 321 ++ Master/texmf-dist/doc/cstex/cstexman.pdf | 1 + Master/texmf-dist/doc/cstex/cstexman.tex | 3265 ++++++++++++++++++++ Master/texmf-dist/doc/cstex/jemny.errata | 15 + Master/texmf-dist/doc/cstex/jemny.pdf | Bin 0 -> 502779 bytes Master/texmf-dist/doc/cstex/jemny.tar.gz | Bin 0 -> 558398 bytes Master/texmf-dist/doc/cstex/lic-gpl.eng | 340 ++ Master/texmf-dist/doc/cstex/opmac-d.pdf | Bin 0 -> 644772 bytes Master/texmf-dist/doc/cstex/opmac-d.tex | 2170 +++++++++++++ Master/texmf-dist/doc/cstex/opmac-u.pdf | Bin 0 -> 252876 bytes Master/texmf-dist/doc/cstex/opmac-u.tex | 1511 +++++++++ Master/texmf-dist/doc/cstex/prvni.pdf | Bin 0 -> 256105 bytes Master/texmf-dist/doc/cstex/prvni.tex | 1562 ++++++++++ Master/texmf-dist/doc/cstex/test8z.pdf | Bin 0 -> 632360 bytes Master/texmf-dist/doc/cstex/test8z.tex | 81 + Master/texmf-dist/doc/cstex/testgyre8z.pdf | Bin 0 -> 1098766 bytes Master/texmf-dist/doc/cstex/testgyre8z.tex | 81 + Master/texmf-dist/doc/cstex/testlat.tex | 30 + Master/texmf-dist/doc/cstex/zmeny.txt | 184 ++ Master/tlpkg/bin/tlpkg-ctan-check | 4 +- .../tlpkg/tlpsrc/collection-langczechslovak.tlpsrc | 1 + Master/tlpkg/tlpsrc/cslatex.tlpsrc | 4 +- Master/tlpkg/tlpsrc/csplain.tlpsrc | 13 +- Master/tlpkg/tlpsrc/cstex.tlpsrc | 0 37 files changed, 10421 insertions(+), 6 deletions(-) create mode 100644 Master/texmf-dist/doc/cstex/00-README-cslatex create mode 100644 Master/texmf-dist/doc/cstex/INSTALL.cslatex create mode 100644 Master/texmf-dist/doc/cstex/README-csplain create mode 100644 Master/texmf-dist/doc/cstex/README-cspsfont create mode 100644 Master/texmf-dist/doc/cstex/README-doc create mode 100644 Master/texmf-dist/doc/cstex/README-opmac create mode 100644 Master/texmf-dist/doc/cstex/README.cslatex create mode 100644 Master/texmf-dist/doc/cstex/cspsfonts-gen/README create mode 100755 Master/texmf-dist/doc/cstex/cspsfonts-gen/fontgen create mode 100644 Master/texmf-dist/doc/cstex/cspsfonts-gen/kernoff.c create mode 100755 Master/texmf-dist/doc/cstex/cspsfonts-gen/mkf create mode 100755 Master/texmf-dist/doc/cstex/cspsfonts-gen/mkfc create mode 100644 Master/texmf-dist/doc/cstex/cspsfonts-gen/xl2.enc create mode 100644 Master/texmf-dist/doc/cstex/cspsfonts-gen/xt2.enc create mode 120000 Master/texmf-dist/doc/cstex/cstexman.pdf create mode 100644 Master/texmf-dist/doc/cstex/cstexman.tex create mode 100644 Master/texmf-dist/doc/cstex/jemny.errata create mode 100644 Master/texmf-dist/doc/cstex/jemny.pdf create mode 100644 Master/texmf-dist/doc/cstex/jemny.tar.gz create mode 100644 Master/texmf-dist/doc/cstex/lic-gpl.eng create mode 100644 Master/texmf-dist/doc/cstex/opmac-d.pdf create mode 100644 Master/texmf-dist/doc/cstex/opmac-d.tex create mode 100644 Master/texmf-dist/doc/cstex/opmac-u.pdf create mode 100644 Master/texmf-dist/doc/cstex/opmac-u.tex create mode 100644 Master/texmf-dist/doc/cstex/prvni.pdf create mode 100644 Master/texmf-dist/doc/cstex/prvni.tex create mode 100644 Master/texmf-dist/doc/cstex/test8z.pdf create mode 100644 Master/texmf-dist/doc/cstex/test8z.tex create mode 100644 Master/texmf-dist/doc/cstex/testgyre8z.pdf create mode 100644 Master/texmf-dist/doc/cstex/testgyre8z.tex create mode 100644 Master/texmf-dist/doc/cstex/testlat.tex create mode 100644 Master/texmf-dist/doc/cstex/zmeny.txt create mode 100644 Master/tlpkg/tlpsrc/cstex.tlpsrc diff --git a/Master/texmf-dist/doc/cstex/00-README-cslatex b/Master/texmf-dist/doc/cstex/00-README-cslatex new file mode 100644 index 00000000000..900105f5928 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/00-README-cslatex @@ -0,0 +1,23 @@ + +The CSLaTeX package is obsolete and it will be maintained no more. +This is our decision discussed on the CSTeX list + + https://groups.google.com/forum/?fromgroups#!forum/cz.comp.cstex + +in October 2012. + +The last two changes was done by Petr Olsak in Oct.2012. + +1) in cslatex.ini file: The cslatex.fmt is generated as usual but there + is one difference. The \everyjob gives the following message: + + ***** WARNING ******** CSLaTeX is obsolete, don't use it please ***** + ***** You can use ``normal'' LaTeX+Babel or XeLaTeX+polyglossia ***** + +2) The files czech.sty and slovak.sty are obsolete too. But they was moved + from csplain package to their right place: to the cslatex package. + +3) The cslatex files from cspsfonts.tar.gz was moved to cslatex.tar.gz + +That's all. + diff --git a/Master/texmf-dist/doc/cstex/INSTALL.cslatex b/Master/texmf-dist/doc/cstex/INSTALL.cslatex new file mode 100644 index 00000000000..19695bb86cc --- /dev/null +++ b/Master/texmf-dist/doc/cstex/INSTALL.cslatex @@ -0,0 +1,35 @@ +CSLaTeX 2e +---------- + +Toto je LaTeX2e z jna 1997 upraven pro eskou a slovenskou +sazbu. Vznikl pizpsobenm starch verz autor Jiho Zlatuky a +Zdeka Wagnera. + +Posledn poetn provedl pan Jaroslav Snajdr, viz +http://home.zcu.cz/~snajdr5/cslatex. + +Pebalen do taru s ji docstipovanmi soubory pro UNIX provedl +Petr Olk. + +Tar cslatex-01-98.tar obsahuje jednak plnou verzi LaTeXu 2e datovanou +k prosinci 1997, dle balk tools a graphics. Ve je ji po +"rozbalen" programem docstrip pipraveno pmo k provozu. Proto je +instalace jednoduch: + +INSTALACE +--------- + +0. Je poteba mt instalovn tex, csplain, ltfonts a csfonty. + +1. Rozbalte tar do adrese, ve kterm mte texmf (v teTeXu mezi prvnm a + druhm texmf) + +2. cd texmf/web2c + +3. initex cslatex.ini + +Ped i po bodu 3 je vhodn aktualizovat databzi ls-R, napklad +pkazem MakeTeXls-R. + + + diff --git a/Master/texmf-dist/doc/cstex/README-csplain b/Master/texmf-dist/doc/cstex/README-csplain new file mode 100644 index 00000000000..1650145e965 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/README-csplain @@ -0,0 +1,4 @@ +The documentation of csplain is on the site + + http://petr.olsak.net/csplain.html + diff --git a/Master/texmf-dist/doc/cstex/README-cspsfont b/Master/texmf-dist/doc/cstex/README-cspsfont new file mode 100644 index 00000000000..323cceed417 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/README-cspsfont @@ -0,0 +1,55 @@ + + Informace o balíku cspsfont + %%%%%%%%%%%%%%%%%%%%%%%%%%% + 23. 11. 1995 Petr Olšák + 5. 1. 1996 Zdeněk Wagner + 20. 10. 2012 Petr Olšák + +Dokumentace k tomto balíku je v souboru cstexman.pdf v kapitole třetí. + +Dokumentaci k LaTeXové části tohoto balíku získáte pomocí latex +cspsfont.drv, ovšem je to dokumentace z roku 1996, která se týká +CSLaTeXu. To považujeme za zastaralé. + +Historie +%%%%%%%% + +říjen 2012 - Přegenerovány metriky podle URW metrik. + - Přidány znaky Euro, TM, registered a další (viz cstexman.pdf). + - Přidán soubor chars-8z.tex pro csplain. + - Soubory ctimes.tex a jim podobné volají chars-8z.tex. + - Aktualizována dokumenace. + - Přidány *8z.vf a *8z.tfm rodiny Charter + +24. 3. 1999: POZOR! Pro šest fontů pcrb8t, pcrbc8t, pcrbo8t, pcrr8t, pcrrc8t + a pcrro8t jsme museli změnit názvy na *8u, takže nyní se + správně jmenují: pcrb8u, pcrbc8u, pcrbo8u, pcrr8u, + pcrrc8u a pcrro8u. Důvod: Názvy *8t byly v konfliktu se + stejnými názvy používanými v LaTeXu v kódování T1. + Nebude-li vám tedy fungovat čeština v rodině Courier, + nezapomeňte změnit svá makra, která obsahují konfliktní + názvy *8t. + +5. 1. 1996 Přegenerovány metriky Z. Wagnerem a přidána podpora pro + CSLaTeX. + +23. 11. 1995 Vytvořeny metriky a makra pro csplain. + + +Copyright +%%%%%%%%% + +Tento balík patří mezi volně šířený software; můžete +jej dále distribuovat anebo modifikovat za podmínek GNU General Public +License, jak ji publikovala Free Software Foundation; buď ve verzi 2 +této licence nebo (podle Vaší volby) v libovolné pozdější verzi. + +Tento software je distribuován s přáním, aby byl užitečný, ale BEZ +ŽÁDNÉ ZÁRUKY. Viz GNU General Public License. + +Anglický originál GNU General Publics License najdete v distribuci +CSTeXu a mnoha dalších volně šířených programů. Můžete si též o něj +napsat na adresu Free Software Foundation, Inc., 59 Temple Place, +Suite 330, Boston, MA 02111-1307 USA + + diff --git a/Master/texmf-dist/doc/cstex/README-doc b/Master/texmf-dist/doc/cstex/README-doc new file mode 100644 index 00000000000..0b99758a0a0 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/README-doc @@ -0,0 +1,30 @@ +V tomto adresari jsou ulozeny ceske preklady (a do budoucna mozna i +puvodni texty) nekterych prirucek o TeXu. Tyto dokumenty jsou +vystaveny ve zdrojove forme v kodovani ISO-8859-2, pokud neni receno jinak. + +cstexman.tex, cstexman.ps, cstexman.pdf + Manual k CSTeXu -- referencni manual. Petr Olsak (2002, 2012) +prvni.tex, prvni.ps, prvni.pdf + Prvni seznameni s TeXem. Petr Olsak (1999) +parpozn.tex, parpozn.ps, parpozn.pdf + Par poznamek k CSTeXu -- zastaraly dokument z roku 1996 +csuvodlat.tar.gz + Uvod do LaTeXu (2.09). H. Partl, E. Schlegl and I. Hyna (1987-1990) + Preklad: P. Sykora (1992) +uvodlat.zip + Totez, ale v DOSovem formatu koncu radku a v kodovani Kamenickych. +jemny.tar.gz + Jemny uvod do TeXu (plainu). Michael Doob + Preklad: Josef Danes a Jiri Vesely +jemny.zip + Totez, ale v DOSovem formatu koncu radku a v kodovani CP852. +jemny.errata + ERRATA vyse zmineneho dokumentu +lshort-0.9beta-cz.tgz + Ne prilis strucny uvod do systemu LaTeX2e. Tobias Oetiker + Preklad: Michal Kocer +lshort2e-0.9beta-cz.ps.gz, lshortps.zip + Totez v PostScriptovem formatu +lshort09.zip + Totez, ale v DOSovem formatu koncu radku a v kodovani CP852. + diff --git a/Master/texmf-dist/doc/cstex/README-opmac b/Master/texmf-dist/doc/cstex/README-opmac new file mode 100644 index 00000000000..53632ef9a14 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/README-opmac @@ -0,0 +1,7 @@ +The documentation of the OPmac is: + +opmac-u.tex,pdf ... user documentation (in Czech) +opamc-d.tex,pdf ... technical documentation (in Czech) + +See http://petr.olsak.net/opmac.html for more information. + diff --git a/Master/texmf-dist/doc/cstex/README.cslatex b/Master/texmf-dist/doc/cstex/README.cslatex new file mode 100644 index 00000000000..17acb5b46a7 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/README.cslatex @@ -0,0 +1,211 @@ +CSLaTeX --- pravy LaTeXu 2e pro eskou a slovenskou sazbu + Verze pro LaTeX z prosince '96 +========================================================== +28.10.1997 Jaroslav najdr + +CSLaTeX je sada konfiguranch soubor pro LaTeX2e, kter umouj v +tomto systmu pipravovat esk a slovensk dokumenty. Balk je +distribuovn (jak je u LaTeXu zvykem) v souboru cslatex.dtx, kter +obsahuje pslun makra i s dkladnou dokumentac. Soubor cslatex.ins +je dvka pro program docstrip, kter z dtx zdroje vygeneruje vlastn +soubory. + +Instalace +--------- + +(jednodu postup instalace z balku cslatex-10-97.tar, viz INSTALL.cslatex) + +Pro instalaci potebujete (krom TeXu): + +o CS-fonty. + +o esk a slovensk vzory dlen czhyphen.tex a skhyphen.tex. Jsou + soust csplainu. + +o LaTeXov "obrzkov" fonty lasy, lcircle a line. + +o Originln LaTeX2e. Distribun soubory jsou k nalezen na CTANu v + adresi /tex-archive/macros/latex/base/. + +Pokud toto vechno mte, mete zat instalovat: + +o Smate (zazlohujte) starou verzi LaTeXu. POZOR! Toto se netk + podprnch balk, nap. graphics, tools nebo psnfss. Jejich + upgrade (je-li k dispozici novj verze) je samostatnou zleitost + a nen bezpodmnen nutn. Pokud mte nainstalovanou star verzi + CSLaTeXu, mly by zmizet adrese texmf/tex/latex/cslatex, input a + src. Mte-li v adresi input nkter styly, kter nejsou standardn + soust LaTeXu (nap. a4, a4wide, fancyhdr), vytvote adres + texmf/tex/latex/misc a pesute je tam. + +o Pokud v TeX pouv ke hledn v adresovm stromu hashovac + soubor (nap. v teTeXu ls-R), nechte ho znovu vytvoit, aby se + projevily proveden zmny -- smazan soubory. V teTeXu k tomuto + slou pkaz texhash. + +o Vytvote si nkde v /tmp doasn adres, do kterho zkoprujete + distribun soubory LaTeXu a CSLaTeXov soubory cslatex.dtx a + cslatex.ins. + +o V tomto adresi rozbalte distribuci LaTeXu pkazy "initex + unpack.ins" a "initex cslatex.ins". + +o V normln konfiguraci pouv LaTeX v kdovn T1 dc-fonty. Mte-li + novj ec-fonty, vytvote pslun upraven definin soubory + pkazem "initex ec.ins". Tento krok mus nsledovat a PO + zpracovn unpack.ins. + +o Vytvote formt LaTeX pkazem "initex latex.ltx". + +Nyn mme v naem adresi 266 soubor, z nich ty potebn pesuneme +na pslun msta do adresov struktury TeXu: + +o Soubor latex.fmt pesute do adrese s formty -- v teTeXu + texmf/web2c. + +o Konfiguran soubory pro etinu pesuneme do adrese + texmf/tex/latex/cslatex. Jsou to tyto: + + fonttext.cfg + hyphen.cfg + il2enc.def + il2*.fd + lczech.sty + lslovak.sty + +o Do adrese texmf/tex/latex/input dme vstupn soubory LaTeXu: + + docstrip.tex + *.cls + *.clo + *.sty + *.fd + *.ist + *.def + *.cfg + +o Zdrojov soubory LaTeXu + + fontmath.ltx + fonttext.ltx + hyphen.ltx + latex.ltx + ltpatch.ltx + preload.ltx + +nejsou teba pro normln prci, ale budeme je potebovat, pokud +chceme vygenerovat znovu formt. Tento ppad me nastat, kdy budeme +do LaTeXu pidvat nov vzory dlen, nebo kdy si fmt soubor prost +omylem smaeme. Proto je pesuneme do adrese /texmf/tex/latex/src. + +Ostatn soubory nebudeme potebovat, proto je meme smazat. + +Vygenerujeme hashovac soubor pro TeX pkazem "texhash" +(teTeX). LaTeX je nainstalovn a meme ho otestovat na njakm +krtkm dokumentku. + + +Konfigurace dlen slov +----------------------- + +Konfiguran pkazy se nachzej v souboru cslatex/hyphen.cfg. +Pslun st souboru je viditeln ohraniena komentovmi +dkami. K zaveden vzor dlen slou pkaz + + \DeclareLanguage[seznam kdovn]{jmno pkazu zapnut vzor}% + {jmno souboru se vzory a vjimkami}% + {\lefthyphenmin=slo \righthyphenmin=slo + \@requesthyphens \@splitrequestedfalse} + +Vzory dlen naten s \@requesthyphens um vyuvat funkci penen +pomlky pi dlen (viz ne). + +Implicitn je zavedena americk anglitina, etina a sloventina v +kdovn IL2. Pro zaveden etiny v IL2 i T1 pouijte: + + \DeclareLanguage[IL2,T1]{\czech}{czhyphen.tex}% + {\lefthyphenmin=2 \righthyphenmin=3 + \@requesthyphens}% + +V bnm TeXu me bt maximln 4 a 5 vzor najednou -- vc se do +jeho pamti nevejde. + + +Styl czech.sty/slovak.sty +------------------------- + +Bez zaveden tohoto stylu se CSLaTeX chov jako normln LaTeX a +pouv cm-fonty bez eskch znak. + +Pomocn styl zavedeme pomoc + + \usepackage[parametry]{czech} +pop. + \usepackage[paremetry]{slovak} + +Parametry mou bt: + +T1 + Cork kdovn. Budou se pouvat dc(ec) fonty. Aby se sprvn + dlila slova, mus bt vzory dlen nataeny tak pro T1 (viz + ve). Bez tohoto parametru je pouito kdovn IL2. + +split + Zapn penen pomlky pi dlen slov typu propan- + -butan. Tato vlastnost funguje skoro bez problm -- vjimkou + je pouit `-' jako minus v sle, kter te TeX v + horizontlnm mdu (tak bv zadvno nap. \looseness=-1); v + tchto ppadech je pi zapnutm penen dltka mon + napsat \minus. + +nosplit + Vypn penen pomlky. To je tak implicitn chovn. + +nocaptions + Nebudou pedefinovny texty vkldan LaTeXem jako "Kapitola" + nebo "Obsah". Zstanou tedy pvodn "Chapter" nebo "Contents". + +olduv + Pkaz \uv je (nov) definovn tak, e zajist sprvn kerning + kolem uvozovek, ale uvnit jeho argumentu nelze pout pkaz + \verb. Pouitm volby olduv dostaneme starou definici, kter + se chovala pesn obrcen -- patn kerning, lze pout \verb. + Oba tyto poadavky se navzjem vyluuj a nikdo dosud + nevymyslel een, kde by fungovalo oboj najednou. + +Volba 'cstex', kter umoovala pouvn pkaz \csprimeson/off, +byla zruena a tyto pkazy lze pouvat rovnou. Kvli zptn +kompatibilit je stle deklarovna, ale vbec nic nedl -- jej +pouit pouze nezpsob chybu. + +Pkazy definovan ve stylu czech/slovak.sty +-------------------------------------------- + +\dateczech + Pkaz \today expanduje na esk datum, nap. 30. srpna 1977. + +\dateslovak + Slovensk datum, nap. 30. augusta 1977. + +\dateUSenglish + Americk \today, nap. August 30th, 1977. + +\dateenglish + Britsk \today, nap. 30th August 1977. + +\captionsczech + esk captions -- Pedmluva, Tabulka. + +\captionsslovak + Slovensk captions -- Predhovor, Tabuka. + +\captionsenglish + Anglick captions -- Preface, Table. + +\csprimeson, \csprimesoff + ``Anglick'' uvozovky se (ne)budou szet jako esk 99 66. + +\cstieon, \cstieoff + Pedefinuje vlnku ~, aby se v mat. mdu (ne)szela mezera. + +-- diff --git a/Master/texmf-dist/doc/cstex/cspsfonts-gen/README b/Master/texmf-dist/doc/cstex/cspsfonts-gen/README new file mode 100644 index 00000000000..9225b898141 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cspsfonts-gen/README @@ -0,0 +1,12 @@ +Font generation tools of cspsfonts +---------------------------------- +Petr Olsak, 2012 + +The script fontgen was used to generate the metrics of cspsfonts pckage. +The script mkf generates one ``normal'' metrics. +The script mkc generates one ``Caps&SmalCaps'' metrics. + +The program kenroff removes small (invisible) kerns form AFM metric in order +to do the tfm more simple. The kerns smaller then 9/1000 of font size was +removed. + diff --git a/Master/texmf-dist/doc/cstex/cspsfonts-gen/fontgen b/Master/texmf-dist/doc/cstex/cspsfonts-gen/fontgen new file mode 100755 index 00000000000..0a35ae76c85 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cspsfonts-gen/fontgen @@ -0,0 +1,72 @@ +# mkfc command have to preceede the mkf command with the same metric name +# because mkfc makes the raw metrics (and deletes it) and after then the mkf +# command makes the fine metrics with kerns and ligatures used by TeX. + +export AFMDIR="/usr/share/texmf-dist/fonts/afm/urw/*" + +./mkfc ptmr8z ptmrc8z xl2.enc utmr8a.afm +./mkfc ptmb8z ptmbc8z xl2.enc utmb8a.afm + +./mkf ptmr8z xl2.enc utmr8a.afm +./mkf ptmb8z xl2.enc utmb8a.afm +./mkf ptmri8z xl2.enc utmri8a.afm +./mkf ptmbi8z xl2.enc utmbi8a.afm + +./mkfc pagk8z pagkc8z xl2.enc uagk8a.afm +./mkfc pagd8z pagdc8z xl2.enc uagd8a.afm + +./mkf pagk8z xl2.enc uagk8a.afm +./mkf pagko8z xl2.enc uagko8a.afm +./mkf pagd8z xl2.enc uagd8a.afm +./mkf pagdo8z xl2.enc uagdo8a.afm + +./mkfc pbkd8z pbkdc8z xl2.enc ubkd8a.afm +./mkfc pbkl8z pbklc8z xl2.enc ubkl8a.afm + +./mkf pbkd8z xl2.enc ubkd8a.afm +./mkf pbkdi8z xl2.enc ubkdi8a.afm +./mkf pbkl8z xl2.enc ubkl8a.afm +./mkf pbkli8z xl2.enc ubkli8a.afm + +./mkfc pcrb8u pcrbc8u xt2.enc ucrb8a.afm +./mkfc pcrr8u pcrrc8u xt2.enc ucrr8a.afm + +./mkf pcrb8u xt2.enc ucrb8a.afm +./mkf pcrbo8u xt2.enc ucrbo8a.afm +./mkf pcrro8u xt2.enc ucrro8a.afm +./mkf pcrr8u xt2.enc ucrr8a.afm + +./mkfc pncb8z pncbc8z xl2.enc uncb8a.afm +./mkfc pncr8z pncrc8z xl2.enc uncr8a.afm + +./mkf pncb8z xl2.enc uncb8a.afm +./mkf pncbi8z xl2.enc uncbi8a.afm +./mkf pncri8z xl2.enc uncri8a.afm +./mkf pncr8z xl2.enc uncr8a.afm + +./mkfc phvb8z phvbc8z xl2.enc uhvb8a.afm +./mkfc phvr8z phvrc8z xl2.enc uhvr8a.afm + +./mkf phvb8z xl2.enc uhvb8a.afm +./mkf phvbo8z xl2.enc uhvbo8a.afm +./mkf phvro8z xl2.enc uhvro8a.afm +./mkf phvr8z xl2.enc uhvr8a.afm + +./mkfc phvbn8z phvbnc8z xl2.enc uhvb8ac.afm +./mkfc phvrn8z phvrnc8z xl2.enc uhvr8ac.afm + +./mkf phvbn8z xl2.enc uhvb8ac.afm +./mkf phvbon8z xl2.enc uhvbo8ac.afm +./mkf phvrn8z xl2.enc uhvr8ac.afm +./mkf phvron8z xl2.enc uhvro8ac.afm + +./mkfc pplr8z pplrc8z xl2.enc uplr8a.afm +./mkfc pplb8z pplbc8z xl2.enc uplb8a.afm + +./mkf pplbi8z xl2.enc uplbi8a.afm +./mkf pplri8z xl2.enc uplri8a.afm +./mkf pplr8z xl2.enc uplr8a.afm +./mkf pplb8z xl2.enc uplb8a.afm + +./mkf pzcmi8z xl2.enc uzcmi8a.afm + diff --git a/Master/texmf-dist/doc/cstex/cspsfonts-gen/kernoff.c b/Master/texmf-dist/doc/cstex/cspsfonts-gen/kernoff.c new file mode 100644 index 00000000000..45bdbb5810b --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cspsfonts-gen/kernoff.c @@ -0,0 +1,45 @@ +/* This program removes kerns smaller then KERNLIMIT from AFM file + Petr Olsak, 2012 + input AFM file = stdin, output = stdout, no parameters */ + + +#include + +#define KERNLIMIT 9 + +char line[500]; + +int mygets(char *s, int num) +{ + int c, i; + if ((c=fgetc(stdin))==EOF) return EOF; + if (c=='\n') return s[0] = 0; + s[0] = c; i=1; + while (1) { + if (i>=num) { + fprintf (stderr, "line is too long\n"); + s[num-1] = 0; + return; + } + if ((c=fgetc(stdin))==EOF) return s[i] = 0; + if (c=='\n') return s[i] = 0; + s[i++]=c; + } +} + +int main(int argc, char *argv[]) +{ + int i, v; + while (1) { + if (mygets(line,500)==EOF) return 0; + v=100; + if (line[0]=='K' && line[1]=='P' && line[2]=='X' && line[3]==' ') { + i = 4; + while (line[i]!=' ') i++; + i++; + while (line[i]!=' ') i++; + v = atoi(&line[i]); + } + if (v>KERNLIMIT || v<-KERNLIMIT) printf("%s\n", line); + } +} diff --git a/Master/texmf-dist/doc/cstex/cspsfonts-gen/mkf b/Master/texmf-dist/doc/cstex/cspsfonts-gen/mkf new file mode 100755 index 00000000000..f05e423bd7c --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cspsfonts-gen/mkf @@ -0,0 +1,9 @@ +#!/bin/bash + +echo $1 $2 +cat $AFMDIR/$3 | ./kernoff > $3 +afm2tfm $3 -T $2 -v $1 $1.tfm +rm $1.tfm +vptovf $1 +rm $1.vpl $1.vf + diff --git a/Master/texmf-dist/doc/cstex/cspsfonts-gen/mkfc b/Master/texmf-dist/doc/cstex/cspsfonts-gen/mkfc new file mode 100755 index 00000000000..f0d9664389e --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cspsfonts-gen/mkfc @@ -0,0 +1,9 @@ +#!/bin/bash + +echo $1 $2 $3 +cat $AFMDIR/$4 | ./kernoff > $4 +afm2tfm $4 -T $3 -V $2 $1.tfm +rm $1-c.tfm +vptovf $2 +rm $2.vpl + diff --git a/Master/texmf-dist/doc/cstex/cspsfonts-gen/xl2.enc b/Master/texmf-dist/doc/cstex/cspsfonts-gen/xl2.enc new file mode 100644 index 00000000000..e13e0f2e18b --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cspsfonts-gen/xl2.enc @@ -0,0 +1,332 @@ +% @psencodingfile{ +% author = "Petr Olsak, Zdenek Wagner", +% date = "19oct12", +% filename = "xl2.enc", +% license = "public domain", +% email = "tex-fonts@tug.org", +% codetable = "ISO/ASCII", +% docstring = " +% some of our (CSTUG- czech TeX Users Group) users want to support +% 8bit font coding such that: +% -- lower 7bit is exactly OT1 (but with differences imposed +% by DEK -- e.g. layout of cmr is different from cmtt) +% -- upper part is taken from ISO-Latin 2 (iso 8859-2), +% but some of empty positions are filled with useful characters +% usually available in type-1 font (permill sign etc.) +% " +% } +% +% 19oct12 - added: /Euro, /trademark, /copyright, /registered +% /guilsinglleft/right, /quotesinglbase, /quoteleft. +% fi and ff LIGKERN's added. (Petr Olsak) +% 27aug05 - record Petr Olsak and Zdenek Wagner as the authors. +% 12jun05 - remove Texinfo @'s from LIGKERN's. +% +/XL2encoding [ +%%%%% '000 = "00 + /Gamma + /Delta + /Theta + /Lambda + /Xi + /Pi + /Sigma + /Upsilon +%%%%% '010 = "08 + /Phi + /Psi + /Omega + /ff + /fi + /fl + /ffi + /ffl +%%%%% '020 = "10 + /dotlessi + /dotlessj + /grave + /acute + /caron + /breve + /macron + /ring +%%%%% '030 = "18 + /cedilla + /germandbls + /ae + /oe + /oslash + /AE + /OE + /Oslash +%%%%% '040 = "20 + /.notdef + /exclam + /quotedblright + /numbersign + /dollar + /percent + /ampersand + /quoteright +%%%%% '050 = "28 + /parenleft + /parenright + /asterisk + /plus + /comma + /hyphen + /period + /slash +%%%%% '060 = "30 + /zero + /one + /two + /three + /four + /five + /six + /seven +%%%%% '070 = "38 + /eight + /nine + /colon + /semicolon + /exclamdown + /equal + /questiondown + /question +%%%%% '100 = "40 + /at + /A + /B + /C + /D + /E + /F + /G +%%%%% '110 = "48 + /H + /I + /J + /K + /L + /M + /N + /O +%%%%% '120 = "50 + /P + /Q + /R + /S + /T + /U + /V + /W +%%%%% '130 = "58 + /X + /Y + /Z + /bracketleft + /quotedblleft + /bracketright + /circumflex + /dotaccent +%%%%% '140 = "60 + /quoteleft + /a + /b + /c + /d + /e + /f + /g +%%%%% '150 = "68 + /h + /i + /j + /k + /l + /m + /n + /o +%%%%% '160 = "70 + /p + /q + /r + /s + /t + /u + /v + /w +%%%%% '170 = "78 + /x + /y + /z + /endash + /emdash + /hungarumlaut + /tilde + /dieresis +%%%%% '200 = "80 + /ellipsis + /dagger + /daggerdbl + /bullet + /sterling + /paragraph + /Euro + /.notdef +%%%%% '210 = "88 + /trademark + /copyright + /registered + /.notdef + /.notdef + /perthousand + /guilsinglleft + /guilsinglright +%%%%% '220 = "90 + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef +%%%%% '230 = "98 + /Agrave + /.notdef + /quotesinglbase + /quoteleft + /hyphen + /ogonek + /guillemotleft + /guillemotright +%%%%% '240 = "A0 + /.notdef + /Aogonek + /breve + /Lslash + /currency + /Lcaron + /Sacute + /section +%%%%% '250 = "A8 + /dieresis + /Scaron + /Scedilla + /Tcaron + /Zacute + /.notdef + /Zcaron + /Zdotaccent +%%%%% '260 = "B0 + /ring + /aogonek + /cedilla + /lslash + /acute + /lcaron + /sacute + /caron +%%%%% '270 = "B8 + /agrave + /scaron + /scedilla + /tcaron + /zacute + /hungarumlaut + /zcaron + /zdotaccent +%%%%% '300 = "C0 + /Racute + /Aacute + /Acircumflex + /Abreve + /Adieresis + /Lacute + /Cacute + /Ccedilla +%%%%% '310 = "C8 + /Ccaron + /Eacute + /Eogonek + /Edieresis + /Ecaron + /Iacute + /Icircumflex + /Dcaron +%%%%% '320 = "D0 + /Eth + /Nacute + /Ncaron + /Oacute + /Ocircumflex + /Ohungarumlaut + /Odieresis + /multiply +%%%%% '330 = "D8 + /Rcaron + /Uring + /Uacute + /Uhungarumlaut + /Udieresis + /Yacute + /Togonek + /germandbls +%%%%% '340 = "E0 + /racute + /aacute + /acircumflex + /abreve + /adieresis + /lacute + /cacute + /ccedilla +%%%%% '350 = "E8 + /ccaron + /eacute + /eogonek + /edieresis + /ecaron + /iacute + /icircumflex + /dcaron +%%%%% '360 = "F0 + /eth + /nacute + /ncaron + /oacute + /ocircumflex + /ohungarumlaut + /odieresis + /divide +%%%%% '370 = "F8 + /rcaron + /uring + /uacute + /uhungarumlaut + /udieresis + /yacute + /quotedblbase + /quotedblleft +] def + +% LIGKERN f i =: fi ; f fi =: ffi ; +% LIGKERN f f =: ff ; +% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; +% LIGKERN quoteleft quoteleft =: quotedblleft ; +% LIGKERN quoteright quoteright =: quotedblright ; +% LIGKERN exclamdown exclamdown =: guillemotleft ; +% frenchdblquotes +% LIGKERN questiondown questiondown =: guillemotright ; +% csquoteleft +% LIGKERN comma comma =: quotedblbase ; +% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; +% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; +% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; +% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; +% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; +% LIGKERN nine {} * ; * {} nine ; +% LIGKERN question {} quoteleft ; exclam {} quoteleft ; diff --git a/Master/texmf-dist/doc/cstex/cspsfonts-gen/xt2.enc b/Master/texmf-dist/doc/cstex/cspsfonts-gen/xt2.enc new file mode 100644 index 00000000000..26d1d3af51e --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cspsfonts-gen/xt2.enc @@ -0,0 +1,321 @@ +% @psencodingfile{ +% author = "Petr Olsak, Zdenek Wagner", +% date = "19aug12", +% filename = "xt2.enc", +% license = "public domain", +% email = "tex-fonts@tug.org", +% codetable = "ISO/ASCII", +% docstring = "This is the typewriter version of xl2." +% } +% +% 19oct12 - added: /Euro, /trademark, /copyright, /registered +% /guilsinglleft/right, /quotesinglbase, /quoteleft (Petr Olsak) +% 27aug05 - record Petr Olsak and Zdenek Wagner as the authors. +% 12jun05 - remove Texinfo @'s from LIGKERN's. +% +/XT2encoding [ +%%%%% '000 = "00 + /Gamma + /Delta + /Theta + /Lambda + /Xi + /Pi + /Sigma + /Upsilon +%%%%% '010 = "08 + /Phi + /Psi + /Omega + /arrowup + /arrowdown + /quotesingle + /exclamdown + /questiondown +%%%%% '020 = "10 + /dotlessi + /dotlessj + /grave + /acute + /caron + /breve + /macron + /ring +%%%%% '030 = "18 + /cedilla + /germandbls + /ae + /oe + /oslash + /AE + /OE + /Oslash +%%%%% '040 = "20 + /.notdef + /exclam + /quotedblright + /numbersign + /dollar + /percent + /ampersand + /quoteright +%%%%% '050 = "28 + /parenleft + /parenright + /asterisk + /plus + /comma + /hyphen + /period + /slash +%%%%% '060 = "30 + /zero + /one + /two + /three + /four + /five + /six + /seven +%%%%% '070 = "38 + /eight + /nine + /colon + /semicolon + /less + /equal + /greater + /question +%%%%% '100 = "40 + /at + /A + /B + /C + /D + /E + /F + /G +%%%%% '110 = "48 + /H + /I + /J + /K + /L + /M + /N + /O +%%%%% '120 = "50 + /P + /Q + /R + /S + /T + /U + /V + /W +%%%%% '130 = "58 + /X + /Y + /Z + /bracketleft + /backslash + /bracketright + /circumflex + /underscore +%%%%% '140 = "60 + /quoteleft + /a + /b + /c + /d + /e + /f + /g +%%%%% '150 = "68 + /h + /i + /j + /k + /l + /m + /n + /o +%%%%% '160 = "70 + /p + /q + /r + /s + /t + /u + /v + /w +%%%%% '170 = "78 + /x + /y + /z + /braceleft + /bar + /braceright + /tilde + /dieresis +%%%%% '200 = "80 + /ellipsis + /dagger + /daggerdbl + /bullet + /sterling + /paragraph + /Euro + /.notdef +%%%%% '210 = "88 + /trademark + /copyright + /registered + /.notdef + /.notdef + /perthousand + /guilsinglleft + /guilsinglright +%%%%% '220 = "90 + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef +%%%%% '230 = "98 + /Agrave + /.notdef + /quotesinglbase + /quoteleft + /hyphen + /ogonek + /guillemotleft + /guillemotright +%%%%% '240 = "A0 + /.notdef + /Aogonek + /breve + /Lslash + /currency + /Lcaron + /Sacute + /section +%%%%% '250 = "A8 + /dieresis + /Scaron + /Scedilla + /Tcaron + /Zacute + /.notdef + /Zcaron + /Zdotaccent +%%%%% '260 = "B0 + /ring + /aogonek + /cedilla + /lslash + /acute + /lcaron + /sacute + /caron +%%%%% '270 = "B8 + /agrave + /scaron + /scedilla + /tcaron + /zacute + /hungarumlaut + /zcaron + /zdotaccent +%%%%% '300 = "C0 + /Racute + /Aacute + /Acircumflex + /Abreve + /Adieresis + /Lacute + /Cacute + /Ccedilla +%%%%% '310 = "C8 + /Ccaron + /Eacute + /Eogonek + /Edieresis + /Ecaron + /Iacute + /Icircumflex + /Dcaron +%%%%% '320 = "D0 + /Eth + /Nacute + /Ncaron + /Oacute + /Ocircumflex + /Ohungarumlaut + /Odieresis + /multiply +%%%%% '330 = "D8 + /Rcaron + /Uring + /Uacute + /Uhungarumlaut + /Udieresis + /Yacute + /Togonek + /germandbls +%%%%% '340 = "E0 + /racute + /aacute + /acircumflex + /abreve + /adieresis + /lacute + /cacute + /ccedilla +%%%%% '350 = "E8 + /ccaron + /eacute + /eogonek + /edieresis + /ecaron + /iacute + /icircumflex + /dcaron +%%%%% '360 = "F0 + /eth + /nacute + /ncaron + /oacute + /ocircumflex + /ohungarumlaut + /odieresis + /divide +%%%%% '370 = "F8 + /rcaron + /uring + /uacute + /uhungarumlaut + /udieresis + /yacute + /quotedblbase + /quotedblleft +] def + +% LIGKERN quoteleft quoteleft =: quotedblleft ; +% LIGKERN quoteright quoteright =: quotedblright ; +% LIGKERN exclamdown exclamdown =: guillemotleft ; +% frenchdblquotes +% LIGKERN questiondown questiondown =: guillemotright ; +% csquoteleft +% LIGKERN comma comma =: quotedblbase ; +% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; +% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; +% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; +% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; +% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; +% LIGKERN nine {} * ; * {} nine ; +% LIGKERN question {} quoteleft ; exclam {} quoteleft ; +% LIGKERN f {} f ; f {} i ; f {} l ; diff --git a/Master/texmf-dist/doc/cstex/cstexman.pdf b/Master/texmf-dist/doc/cstex/cstexman.pdf new file mode 120000 index 00000000000..5ab3fbfdc51 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cstexman.pdf @@ -0,0 +1 @@ +doc/cstexman.pdf \ No newline at end of file diff --git a/Master/texmf-dist/doc/cstex/cstexman.tex b/Master/texmf-dist/doc/cstex/cstexman.tex new file mode 100644 index 00000000000..a9ac921f609 --- /dev/null +++ b/Master/texmf-dist/doc/cstex/cstexman.tex @@ -0,0 +1,3265 @@ + +\chyph % pouzijte csplain + +\mag=\magstephalf + +\csaccents +\raggedbottom + +\hsize=30pc % 30 pica +\vsize=46pc % 46 řádků po 12pt (zhruba) +\hoffset=.8cm + +\emergencystretch=4em +\parindent=12pt + +\widowpenalty=10000 +\clubpenalty=10000 +\exhyphenpenalty=10000 + +\newcount\subnum \newcount\subsubnum +\newwrite\fileref \newread\testin +\newcount\numlink +\newif\iflinecolor \linecolorfalse + +\def\beglink#1{} +\def\endlink{} +\def\aimlink#1{} +\def\urllink#1{{\tt#1}} +\def\zalozka#1{} + +\def\subtitle #1 | #2\par{\subsubnum=0 \advance\subnum by1 + \bigskip\noindent{\llap{\raise15pt\hbox{\zalozka{#2}}\kapfont\the\subnum. }% + \kapfont #1}% + \writetoc\refsub{\ifnum\subnum=0 \else\the\subnum. \fi#1}% + \par\nobreak\medskip} +\def\subsub#1| #2\par{\advance\subsubnum by1 + \bigskip\noindent{\llap{\raise15pt\hbox{\zalozka{ \space#2}}% + \bf\the\subnum.\the\subsubnum\space}% + \bf\let\CS=\bCS \let\AMS=\bAMS \let\LaTeX=\bLaTeX #1}% + \writetoc\refsubsub{\the\subnum.\the\subsubnum\space #1}% + \par\nobreak\medskip} +\def\writetoc #1#2{{\noexpandcs\xdef\act{% + \write\fileref{\noexpand\noexpand\noexpand#1{% + \noexpand\the\noexpand\pageno}{#2}}}}\act} + +\def\url#1{{\tt #1}} + +\def\delejobsah{\bgroup \subnum=-1 + \noindent {\kapfont Obsah} \bigskip + \softinput \jobname.ref + \immediate\openout\fileref\jobname.ref + \egroup \vfil\break} +\def\softinput #1 {\let\next=\relax \openin\testin=#1 + \ifeof\testin \message{VAROVÁNÍ: pro vytvoření obsahu TeXujte ještě jednou.}% + \else \closein\testin \def\next{\input #1 }\fi + \next} +\def\tocfill{\leaders\hbox{ . }\hfill} +\def\refsub#1#2{\advance\subnum by1 + \line{#2\unskip\tocfill\space#1}} +\def\refsubsub#1#2{\advance\subnum by1 + \line{\indent#2\unskip\tocfill\space#1}} +\def\noexpandcs{\let\csplain=\relax \let\cslatex=\relax \let\CSfont=\relax \let\tt=\relax + \let\AMS=\relax \let\TeX=\relax \let\LaTeX=\relax \let~=\relax \let\mf=\relax} +\output={\noexpandcs \plainoutput} + + +\font\mflogo=logo10 % METAFONT logo +\font\boldsy=cmbsy10 % Tučné \CS, \AMS. +\font\titulfontinternal=csb10 scaled\magstep4 +\font\titulboldsy=cmbsy10 scaled\magstep4 +\def\titulfont{\titulfontinternal \let\CS=\bCS \let\boldsy=\titulboldsy} +\font\kapfontinternal=csbx12 +\font\kapboldsy=cmbsy10 at12pt +\font\kaptt=cstt12 +\def\kapfont{\kapfontinternal \let\CS=\bCS \let\boldsy=\kapboldsy + \let\tt=\kaptt \let\sevenbf=\tenbf \let\LaTeX=\bLaTeX} + + +\def\CS{$\cal C\kern-.1667em\lower.5ex\hbox{$\cal S$}\kern-.075em $} +\def\bCS{{\boldsy C\kern-.1667em\lower.5ex\hbox{S}\kern-.04em}} +\def\CSTeX{\CS\TeX} +\def\CSTUG{\CS TUG} +\def\CSfont{\CS\kern.1em font} +\def\csplain{\CS\kern.1em plain} +\def\mf{{\mflogo META}\-{\mflogo FONT}} +\def\mp{{\mflogo META}\-{\mflogo POST}} +\def\LaTeX{L\kern-.36em\raise.5ex\hbox{\sevenrm A}\kern-.12em\TeX} +\def\twoe{$2_{\textstyle\varepsilon}$} +\def\LaTeXe{\LaTeX\thinspace\twoe} +\def\bLaTeX{L\kern-.3em\raise.5ex\hbox{\sevenbf A}\kern-.12em\TeX} +\def\cslatex{\CS\LaTeX} +\def\twoe{$2_{\textstyle\varepsilon}$} +\def\LaTeXe{\LaTeX\thinspace\twoe} +\def\AMS{$\cal A\kern-.166em\lower.5ex\hbox{$\cal M$}\kern-.075em S$} +\def\bAMS{{\boldsy A\kern-.166em\lower.5ex\hbox{M}\kern-.075em S}} +\def\ps{Post\-Script} +\let\copyleft=\copyright + +%% Definice verbatim prostředí %% !verb. +\catcode`\"=13 +\def"{\hbox\bgroup\let"=\egroup\setverb\tt} +\def\setverb{\def\do##1{\catcode`##1=12}\dospecials\obeyspaces} +\def\begtt{\medskip\bgroup + \nobreak\setverb \parskip=0pt %\parindent=0pt + \def\par{\endgraf\penalty500 } + \catcode`\"=12 \obeylines + \startverb} +{\catcode`\|=0 \catcode`\\=12 + |gdef|startverb#1\endtt{% + |tt#1|nobreak|egroup|penalty0|medskip|scannexttoken}} +{\obeyspaces\gdef {\ }} +\long\def\scannexttoken#1{\ifx#1\par\else\noindent#1\fi} + + +%% Prostředí s puntíkatými nebo číslovanými položkami %% +\def\begitems{\medskip\bgroup\catcode`\*=13 \narrower} +\def\enditems{\par\egroup\medskip} +{\catcode`\*=13 \gdef*{\par\noindent\llap{$\bullet$\ }\ignorespaces} +\gdef\numerate{% \numerate napsat těsně za \begitems + \def*{\par\advance\itemnum by1\noindent + \llap{\bf\the\itemnum. }\ignorespaces}}} + +\newcount\bibnum +\def\cit#1{\expandafter\ifx \csname b:#1\endcsname \relax + \message{Warning: The bibitem #1 is not defined}[??#1]% + \else [\csname b:#1\endcsname]\fi} + +\def\bib #1 {\smallskip\advance\bibnum by1 + \immediate\write\fileref{\noexpand\bibref{#1}{\the\bibnum}} + \noindent \llap{[\the\bibnum]\enspace}\ignorespaces} +\def\bibref #1#2{\expandafter\gdef \csname b:#1\endcsname{#2}} + +\def\reference{\subtitle Reference | REFERENCE\par} + +\let\Red=\relax \let\Black=\relax +\def\startcolor#1{} \def\stopcolor#1{} + +\def\newstart{\startcolor{Red}} +\def\newstop{\stopcolor{Black}} +\def\startcc#1#2{} +\def\stopcc#1#2{} + + +\def\new#1{\leavevmode\newstart#1\newstop} +\def\newAbox#1{\Red\hbox{#1}\Black} + +\def\skrt#1{\let\barva=\Red + \dimen0=\maxdimen \leavevmode \skrtslovo #1 {} } + +\def\skrtrule{\vrule height2.8pt depth-2.5pt} + +\def\skrtslovo #1 {\def\tmp{#1}\ifx\tmp\empty \else + \ifdim\dimen0=\maxdimen \else + \linecolortrue\barva \leaders\skrtrule\hskip + \fontdimen2\the\font plus\fontdimen3\the\font minus\fontdimen4\the\font + \Black\linecolorfalse + \fi + \setbox0=\hbox{#1}\dimen0=\wd0% + \rlap{\box0}% + {\linecolortrue\barva\skrtrule width\dimen0\Black\linecolorfalse}% + \expandafter\skrtslovo\fi} + +\def\setbrackets{\catcode`!=0 \catcode`\[=1 \catcode`\]=2 } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Makra pro pdfTeX %%%%%%%%%%%%%%%%%%%%%%% + +\ifx\pdfoutput\undefined\else %%%% pdfTeX is used %%%%%%%%%% +\ifnum\pdfoutput>0 + +\pdfhorigin=3mm \pdfvorigin=10mm +\pdfpagewidth=14.5cm +\pdfpageheight=22cm + +\ifx\pdfannotlink\undefined %%% Backward compatibility + \let\pdfannotlink=\pdfstartlink +\fi + +\def\beglink#1{% % Začátek textu odkazu, #1 je klíč odkazu + \Green \pdfannotlink height9pt depth3pt + attr{/Border[0 0 0]} goto name{#1}\relax} +\def\endlink{\pdfendlink\Black} +\def\aimlink#1{% % Místo cíle odkazu, #1 je klíč odkazu + \expandafter\ifx \csname aim:#1\endcsname \relax + \expandafter\gdef \csname aim:#1\endcsname {}% + \vbox to0pt{\vss\hbox{\pdfdest name{#1} fith}\kern15pt}% + \fi +} +\def\zalozka#1{\global\advance\numlink by1 + \pdfdest num\numlink fith\relax + {\let~=\space\pdfoutline goto num\numlink {#1}}} + +\def\pdfsetcmykcolor#1{\special{PDF:#1 \iflinecolor K\else k\fi}} +\def\Red{\pdfsetcmykcolor{0.1 0.9 0.9 0.3}} +\def\Black{\pdfsetcmykcolor{0 0 0 1}} +\def\Green{\pdfsetcmykcolor{0.9 0.1 0.9 .3}} +\def\Blue{\pdfsetcmykcolor{0.9 0.9 0.1 0}} +\def\Orange{\pdfsetcmykcolor{0 0.7 1 .5}} + +\footline={\hss\Black\tenrm\folio\hss} +\headline={\hss \csname cc:\the\pageno\endcsname} +\edef\footnoterule{\noexpand\Black\footnoterule} + +\csname newcount\endcsname\ccnum + +\def\startcc#1#2{\def\ccval{#1}\ccnum=#2 } +\def\stopcc#1#2{\loop \ifnum\ccnum<#2 + \advance\ccnum by1 + \expandafter\xdef\csname cc:\the\ccnum\endcsname + {\noexpand\csname\ccval\noexpand\endcsname}\repeat} + +\def\startcolor#1{\csname#1\endcsname + \write\fileref{\string\startcc{#1}{\the\pageno}}} +\def\stopcolor#1{\csname#1\endcsname + \write\fileref{\string\stopcc{#1}{\the\pageno}}} + +\pdfcompresslevel=9 +\pdfinfo{/Author (Petr Olsak) + /CreationDate (September 2002) + /ModDate (\the\year-\the\month-\the\day) + /Creator (TeX) + /Producer (pdfTeX) + /Title (CSTeX Manual) + /Subject (Documentation) + /Keywords (TeX, Czech+Sloavk localisation) +} +\pdfcatalog{/PageMode /UseOutlines}\relax + + +\fi\fi %%%%%%%%%%%%%%%%%%%%%%%%%%%% Konec maker PDFTeXu %%%%% + + +%%%%%%%%%%%%%%%%%%%%%%% Titulni strana %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +{\nopagenumbers \vglue 5cm + +\centerline{\titulfont Manuál k \CS\TeX{}u} + +\vskip 2cm + +\centerline{\titulfont Petr Olšák} + +\vfill + +\hrule +\bigskip + +\noindent +\hfil Hněvanice, Morávka, Praha -- léto 2002, \newAbox{podzim 2012} + +\vfil\break + +Autor \TeX{}u je profesor Donald Knuth. +\bigskip + +\TeX{} je ochranná známka American Mathematical Society. +\bigskip + +Ostatní v manuálu použité názvy programových produktů, firem +apod. mohou být ochrannými známkami nebo registrovanými ochrannými +známkami příslušných vlastníků. + +\vfill + +Tento text je volně šířen společně s~balíkem \CSTeX. Jedná se +o~referenční manuál k tomuto balíku. Text je k~dispozici ve +formátech "tex" (\csplain), PostScript a PDF. Výchozí adresa textu je +\url{ftp://math.feld.cvut.cz/pub/cstex/doc}. + +Text můžete tisknout a jinak používat pro soukromé účely. V~nezměněném +stavu v elektronické podobě jej můžete také distribuovat bez dalšího +omezení. Není dovoleno tento text zveřejňovat v~pozměněném stavu a +publikovat jej v~papírové podobě bez předchozí dohody s~autorem. + +\bigskip + +This document is free distributed as a part of the \CSTeX{} package. +It is a reference manual of the \CSTeX. It is available +in formats "tex" (\csplain), PostScript and PDF. The base URL of it +is \url{ftp://math.feld.cvut.cz/pub/cstex/doc}. + +You can print this document or use it in another way only as an individual +end-user. If you don't do any change in this document then you can +distribute it in electronical form without any limitation. +It is not permitted to distribute this document in changed versions or to +publish it in hardcopy form without previous agreement with the +author. + +\bigskip + +This original is written in Czech language. +The translation into other languages are welcome. + + +\vfill + +Verze textu 15. 5. 2003 + +\leavevmode\newAbox{Verze textu 30. 11. 2012} +\bigskip + +\copyleft{} RNDr. Petr Olšák, 2002\newAbox{, 2012} + +\bigskip + +%\leavevmode\newAbox{\bf Upozornění: tato verze textu je provizorní.} + +%\leavevmode\newAbox{\bf Během několika týdnů se ještě bude měnit.} + +\break + +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\delejobsah + + +\subtitle Úvod | ÚVOD +%%%%%%%%%%%%%%%%%%%%% + +\new{Po skoro deseti letech se k tomuto textu vracím, abych jej +aktualizoval. Veškeré změny jsou vyznačeny touto barvou. Černý text je +naopak původní z roku 2003. Nabízím čtenáři dva bonbónky v jednom: podrobnou +technickou dokumentaci i pohled do historie.} + +V~tomto manuálu se pokusím vyčerpávajícím způsobem popsat +vlastnosti \CSTeX{}u. Z~tohoto důvodu to asi nebude jednoduché čtení +pro \TeX{}ové začátečníky. Těm doporučuji nejprve přečíst~\cit{prvni}. + +\CSTeX{} je sada \TeX{}ových maker, fontů, vzorů dělení slov a +doplňujícího software pro podporu české a slovenské sazby +v~\TeX{}u. Je vytvořen tak, aby mohl být použit na libovolné \TeX{}ové +distribuci na libovolném operačním systému. + +Dříve byla slovem \CSTeX{} označována také kompletní em\TeX{}ová +distribuce doplněná o~zmíněná makra, fonty a vzory dělení. To bylo +v~roce 1993, kdy sdružení \CSTUG{} rozesílalo pod tímto názvem em\TeX{}ovou +distribuci na disketách svým členům. V~té době většina členů používala +DOS, takže em\TeX{} pro DOS byl pro ně vyhovující. V~dnešní době uživatelé +pracují s~nejrůznějšími operačními systémy a s~různými distribucemi +\TeX{}u pro tyto systémy. Z~toho důvodu se v~tomto manuálu přidržíme +jen užšího významu slova \CSTeX, definovaného v~předchozím odstavci. + +\CSTeX{} sestává ze \skrt{tří} \new{dvou} +základních pilířů: \CSfont{}y, \csplain{} \skrt{a \CS\LaTeX}. +\CSfont{}y jsou konzervativním rozšířením Knuthových Computer Modern +fontů, \csplain{} je konzervativním rozšířením Knuthova formátu plain +a konečně \cslatex{} \skrt{je} \new{byl} jistou modifikací běžně používaného formátu +\LaTeX. Tyto \skrt{tři} pilíře jsou podrobně dokumentovány v~následujících +kapitolách. K~těmto pilířům \CSTeX{}u je ještě připojena podpora +použití základních 35 PostScriptových fontů v~češtině a slovenštině +prostřednictvím virtuálních fontů. + +Základní balíčky \CSTeX{}u přístupné na Internetu mají následující názvy: + +{\setbrackets +\begtt +csfonts.tar.gz ... CSfonty -- Metafontové soubory a metriky. +csplain.tar.gz ... Makra pro formát CSplain a vzory dělení slov. +cslatex.tar.gz ... Makra pro formát CSLaTeX. !newAbox[-- zastaralé] +cspsfonts.tar.gz ... Virtuální fonty základních 35 PostScriptových + fontů v~kódování podle CSfontů. +\endtt +\par} + +Pokud někdo řekne, že má na své distribuci \TeX{}u instalován \CSTeX, +pak to znamená, že má určitě instalovány tyto čtyři balíky. +Kromě toho k~\CSTeX{}u řadíme i následující doplňující software, +který už nemusejí mít všichni uživatelé \CSTeX{}u instalován: + +{\setbrackets +\begtt +csfonts-t1.tar.gz .. Varianta CSfontů ve formátu PostScript Type1. +enctex.tar.gz ... Makra a návod na modifikaci tex.ch souboru !skrt[na] + !skrt[zahrnutí podpory přímého přístupu k vektorům] + !skrt[xord/xchr prostřednictvím primitivů.] + !new[pro vícebytové překódování v input procesoru.] +cstrip.tar.gz ... Test funkcionality formátu CSplain. +csindex-19980713.tar.gz ... Zdrojové soubory v~jazyce C programu + csindex, který je modifikací programu + makeindex se zahrnutou podporou českého a + slovenského řazení. +vlna.tar.gz ... Zdrojové soubory v~jazyce C a v~jazyce cweb + programu vlna na automatické doplňování vlnek + za neslabičné předložky. +\endtt +\par} + +Na Internetu naleznete všechny uvedené balíky na + +\begtt +ftp://math.feld.cvut.cz/pub/cstex/base +\endtt + +Základní balíčky a {\tt csfonts-t1.tar.gz} obsahují adresářovou strukturu +podle TDS (\TeX{} directory standard), takže pokud vaše distribuce +\TeX{}u používá tento standard, pak rozbalení balíčků nad adresářem +{\tt texmf} povede automaticky k~zařazení všech souborů na správná +místa v~{\tt texmf} stromu. + +Starší verze uvedených balíků najdete na + +\begtt +ftp://math.feld.cvut.cz/pub/cstex/base/old +\endtt + +Dokumentaci k~\CSTeX{}u (včetně tohoto manuálu) najdete na + +\begtt +ftp://math.feld.cvut.cz/pub/cstex/doc +\endtt + +Adresář "ftp://math.feld.cvut.cz/pub/cstex/"\new{{\tt old/}} obsahuje kromě +zmíněných věcí kompletní distribuci em\TeX{}u s~podporou \CSTeX{}u +(v~podadresáři {\tt emtex}), minimalizovanou distribuci +em\TeX{}u+\CSTeX{}u pro pouhé tři instalační diskety (v~podadresáři +{\tt minitex}), návody a software na instalaci web2c \TeX{}u +(v~podadresáři {\tt web2c}) a RPM balíky te\TeX{}u podporující \CSTeX{} +pro různé distribuce Linuxu (v~podadresáři {\tt tetex-rpm}). Tyto +podadresáře vznikaly postupně v~poslední dekádě minulého +tisíciletí podle potřeby a zájmu o~uvedené distribuce \TeX{}u. +Podle toho, jak rostla a klesala popularita jednotlivých distribucí, +jsou tyto podadresáře aktualizovány (nebo spíše neaktualizovány). +Na druhé straně mohou vzniknout další adresáře s~balíčky dalších +distribucí \TeX{}u obsahujících \CSTeX{}~-- stačí, když je někdo udělá a +pošle o~tom informaci na mou elektronickou adresu. Mohu třeba založit +podadresář {\tt miktex-zip} analogicky k~adresáři {\tt tetex-rpm}, +pokud se to někomu bude hodit a pokud ty archivy samozřejmě udělá. + + +\subtitle \CSfont{}y | CSFONTY +%%%%%%%%%%%%%%%%%%%% + +\CSfont{}y jsou konzervativním rozšířením CM fontů Donalda Knutha. Tím je +míněno, že každý \CSfont{} má svůj protějšek v~nějakém CM fontu, +přičemž se naprosto shoduje v~kódování, tvarech a šířkách znaků na +prvních 128 pozicích (kódy 0~až~127), tj. na všech pozicích, které +jsou tímto CM fontem použity. \CSfont{} tedy pouze doplňuje další +znaky do pozic s~kódem větším než 127. Tam jsou umístěny znaky české +a slovenské abecedy podle kódování ISO~8859-2. +Některé pozice stále zůstávají neobsazeny. +Níže uvádím tabulku \CSfont{}u. Druhý znak na +pozicích 0B~až 0F se vyskytuje namísto prvního znaku ve fontech +bez ligatur typu fi ({\tt csr5}, {\tt cstt*} a {\tt cssltt*}), +druhý znak na pozicích~20, 3C, 3E, 5C, 5F a +7B~až~7D najdeme ve strojopisných fontech ({\tt cstt*} a {\tt cslstt*}) a +konečně libra místo dolaru na pozici~24 se vyskytuje v kurzívách +({\tt csti*}). Tyto nejednoznačnosti v~kódování mají samozřejmě i +původní CM fonty. + +%------------------------------------------------------------ + +\newcount\colnum \newcount\linenum \newcount\posnum +\def\tabfont #1{\posnum=0 + \vbox\bgroup \offinterlineskip #1 + \line{\hfil {\tt \space\space\space}\vrule depth.4em + \loop + \ifnum\colnum<16 + \hbox to.055\hsize{\hfil\tentt\hex\colnum\hfil}\vrule + \advance\colnum by1 + \repeat + }% end of \line + \loop + \ifnum\linenum<16 + \hrule + \line{\hfil{\tentt \hex\linenum x }% + \vrule height 1.0em depth .4em\tabline} + \advance\linenum by1 + \repeat + \hrule + \egroup +} +\def\tabline{ + \colnum=0 + \loop + \ifnum\colnum<16 + \tabitem + \advance\colnum by1 + \repeat +} +\def\tabitem{\hbox to.055\hsize{\hfil\char\posnum\altchar\hfil}% + \vrule\global\advance\posnum by1} +\def\altchar{\ifcase\posnum + \or\or\or\or\or\or\or\or\or\or\or\a\or\a\or\a\or\a\or\a\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \a\or\or\or\or\kern2pt{\it\$}\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\a\or\or\a\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\a\or\or\or\a\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\a\or\a\or\a\or\or\or + \fi} +\def\a{\kern2pt{\tt\char\posnum}} +\def\hex#1{\ifcase#1\relax 0\or1\or2\or3\or4\or5\or6\or7\or8\or + 9\or A\or B\or C\or D\or E\or F\fi} +\bigskip +\tabfont {\font\f=csr10 \font\it=csti10 \font\tt=cstt10 \f} +\bigskip +%---------------------------------------------------------------- + +Následuje seznam všech CM fontů. Pokud není vpravo uveden alternativní název +\CSfont{}u, jedná se o~matematický font, který nemá v~\CSfont{}ech alternativu. +Také ji nepotřebuje. + +\begtt +CM font CSfont +------------------------------------------------------------------ +cmr17, 12, 10, 9, 8, 7, 6, 5 csr17, 12, 10, 9, 8, 7, 6, 5 +cmbx12, 10, 9, 8, 7, 6, 5 csbx12, 10, 9, 8, 7, 6, 5 +cmsl12, 10, 9, 8 cssl12, 10, 9, 8 +cmtt12, 10, 9, 8 cstt12, 10, 9, 8 +cmsltt10, cmvtt10 cssltt10, csvtt10 +cmss17, 12, 10, 9, 8 csss17, 12, 10, 9, 8 +cmssi17, 12, 10, 9, 8 csssi17, 12, 10, 9, 8 +cmssdc10, cmssbx10 csssdc10, csssbx10 +cmssqi8, cmssq8 csssqi8, csssq8 +cmdunh10, cmbxsl10, cmb10 csdunh10, csbxsl10, csb10 +cmff10, cmfib10 csff10, csfib10 +------------------------------------------------------------------ +cmti12, 10, 9, 8, 7 csti12, 10, 9, 8, 7 +cmbxti10, cmitt10 csbxti10, csitt10 +cmu10, cmfi10 csu10, csfi10 +------------------------------------------------------------------ +cmcsc10, cmtcsc10 cscsc10, cstcsc10 +------------------------------------------------------------------ +cminch10 csinch10 +------------------------------------------------------------------ +cmmi12, 10, 9, 8, 7, 6, 5 +cmmib10 +------------------------------------------------------------------ +cmtex10, 9, 8 +------------------------------------------------------------------ +cmsy10, 9, 8, 7, 6, 5 +cmbsy10 +------------------------------------------------------------------ +cmex10 +------------------------------------------------------------------ +\endtt + +Mezi soubory metrik \CSfont{}ů navíc najdeme metriky vytvořené Sauterovou +extrapolací, které nemají přímou obdobu mezi CM fonty: + +\begtt + CSfont +------------------------------------------------------------------ + csb17, 12, 9, 8, 7, 6, 5 + csbxsl12, 5, 6, 7, 8, 9 + csbxti17, 12 + cscsc17, 12 + csdunh17, 12, 5, 6, 7, 8, 9 + csfib12, 10, 9 + csitt12, 17, 8, 9 + cssl17, 5, 6, 7 + cssltt12, 8, 9 + csssbx12, 17, 9 + cstcs12, 17 + csti17 + csu12, 17, 7, 8, 9 + csvtt12, 8, 9 +------------------------------------------------------------------ +\endtt + +\mf{}ová makra pro Sauterovu extrapolaci jsou součástí balíčku +s~\CSfont{}y {\tt csfonts.tar.gz}. Princip této extrapolace je například +popsán v~\cit{tst}. +\new{Fonty vytvořené Sauterovou extrapolací nedoporučujeme používat, protože +nemají svou implementaci pomocí PostScriptového fontu. Do výstupního PDF se +při použití takového fontu zavede bitmapový výstup z \mf{}u, což může vést +ke komplikacím.} + + +\subsub Odlišnosti od CM fontů | Odlisnosti od CMfontu +%----------------------------- + +Nelze tvrdit, že text používající jen znaky z~pozic 0--127 bude +100\% shodně zpracován při použití CM fontů i \CSfont{}ů. Odlišnosti existují, +ale jsou tak nepatrné, že je velmi malá prvaděpodobnost, že by při běžném +užívání byla pozorovatelná rozdílnost. Nicméně přesto zde všechny +odlišnosti uvádím včetně komentářů. Uvedené hodnoty jsou příkladem +při srovnání fontu "csr10" s~"cmr10". + +\medskip{\bf 1. Kerningové páry} + +Mezi tečkami ("..") je v "csr10" implicitní kern, aby bylo možno sázet + elipsu. Kern~$0,011111$pt. V cmr10 není. + +Dvojice "ka" -- "csr10": $-0,0027777$pt, "cmr10": $-0,0055555$pt. + +Dvojice "P." a "P," -- "csr10": $-0,0027777$pt, "cmr10" není. + +Dvojice "F.", "F,", "V.", "V,", "W." a "W," -- "csr10": $-0,0055555$pt, "cmr10" není. + +Dvojice "Av" a "Aw" -- "csr10": $-0,011111$pt, "cmr10" není. + + +\medskip{\bf 2. Ligatury} + +Dvojice "<<" vede v csr10 na francouzské uvozovky, kód 158, v cmr10 není. + +Dvojice ">>" vede v csr10 na francouzské uvozovky, kód 159, v cmr10 není. + + +\medskip{\bf 3. Výšky znaků} + +Formát "tfm" je omezen na maximálně 16 různých výšek znaků v~jednom fontu. +V~"cmr10" je obsazeno všech 16 různých výšek. Přitom v~"csr10" přicházejí další +výšky znaků dané akcentovanými znaky. Proto \mf{} provedl v~"csr10" jistá +zaokrouhlení, která způsobí odlišnost výšek od výšek v~"cmr10" maximálně +o~0,007779pt. Jedná se o~tyto znaky: + +\begitems +* $\Gamma$ až $\Omega$, \AE, \OE{} a všechny kapitálky: + v~"csr10" jsou menší o~0,00773pt. + +* Nadržítko (kód 22), nadpuntík (kód 95) a přehláska (kód 127): + v~"csr10" větší o~0,007779pt. + +* Písmena i, j jsou v~"csr10" větší o~0,007779pt. + +* Znak plus (+) je v~"csr10" menší o~0,007778pt. +\enditems + +Rozdílnost výšek není kritická, protože při sazbě se většinou berou v~úvahu +jen šířky znaků. Pouze výjimečně promluví do sazby i výška (většinou když +objekt v~řádku je větší než "\baselineskip"). + + +\subsub Struktura \mf{}ových zdrojových souborů \CSfont{}ů | +%--------------------------------------------------------- + Struktura METAFONTovych zdrojovych souboru CSfontu + +\mf{} čte nejprve soubor, který má stejné jméno, jako je jméno +generovaného fontu, a má příponu {\tt mf}. Například {\tt csr10.mf}. +Takovému souboru říkáme hlavní soubor generování fontu. V~\CSfont{}ech je +takových hlavních souborů celkem 121. Všechny mají stejný dvouřádkový +obsah: + +\begtt +input cscode +use_driver; +\endtt + +V~souboru {\tt cscode.mf} se načtou jména a kódy akcentovaných znaků +(jsou uspořádány podle ISO~8859-2) a definuje se "use_driver" +v~závislosti na jménu hlavního souboru tak, že se načte odpovídající +hlavní soubor CM fontů (tj. odpojí se předpona "cs" a připojí předpona +"cm"). V~případě fontu "csr10" se tedy načte v~tuto chvíli +soubor~{\tt cmr10.mf}. Navíc je v~souboru {\tt cscode.mf} +předefinováno {\tt generate} (v~CM fontech má význam {\tt input}) tak, +že poslední řádek {\tt cmr10.mf} s~textem + +\begtt +generate roman +\endtt +% +neprovede {\tt input roman.mf}, ale provede {\tt input kmroman.mf}. +Další průběh výpočtu je tedy zase v~režii \CSfont{}ů. Kromě souboru +{\tt kmroman.mf} jako alternativy k~souboru {\tt roman.mf} z~CM fontů +najdeme analogické alternativy s~názvy {\tt kmtextit.mf}, +{\tt kmcsc.mf}, {\tt kmtexset.mf} a {\tt kmtitle.mf}. + +Z~uvedených souborů se postupně načítají soubory generující tvary +jednotlivých znaků. Jedná o~všechny odpovídající soubory +z~CM fontů a navíc soubory uvedené v~následující tabulce. + +\begitems +* {\tt csaccent.mf} definuje makra pro akcenty, +* {\tt csacutl.mf} generuje á, é, í, ó, \'r, ú, ý, +* {\tt csacutu.mf} generuje Á, É, Í, \'L, Ó, \'R, Ú, Ý, +* {\tt cshachel.mf} generuje č, ě, ň, ř, š, ž, +* {\tt cshacheu.mf} generuje Č, Ď, Ě, Ň, Ř, Š, Ť, Ž, +* {\tt csotherl.mf} generuje \^o, ů, \`a, \'l, \v t, \v d, \v l, \"a, + \"o, \"u, +* {\tt csotheru.mf} generuje \^O, Ů, \`A, \v L, \"A, \"O, \"U, +* {\tt csadded.mf} generuje \clqq\kern2pt, \crqq, >>, <<, \promile, \ogonek{}, +* {\tt cshyph.mf} generuje alternativní hyphenchar. +\enditems + +V~souboru {\tt kmroman.mf} a jemu podobných souborech jsou ještě zapsány +kernové páry a údaje pro tabulku ligatur. V~tomto souboru činnost +\mf{}u končí příkazem {\tt bye}. + + +\subsub Alternativní hyphenchar | Alternativni hyphenchar +%------------------------------ + +Na pozici 156 je v~\CSfont{}ech spojovník s~úplně stejnou kresbou a +metrikou, jako na pozici~45. Nastavíme-li +"\hyphenchar\beznyfont=156", budeme mít zaručeno, že ve slovech +\uv{je-li} nebude \TeX{} dělit slovo. Bez tohoto nastavení by \TeX{} +rozdělil \uv{je-/li}, což není v~souladu s~požadavky na českou sazbu. +Mnoho dalších způsobů řešení tohoto problému najdeme v~\cit{tbn}. + +Další aplikací znaku 156 je modifikace jeho metriky tak, aby kresba +přesahovala přes šířku znaku výrazně doprava. Pak nastavením +"\hyphenchar\beznyfont=156" dosáhneme tzv.~visící interpunkce, +viz například~\cit{texbook} nebo~\cit{tbn}. V~poslední době se visící +interpunkce stává módní záležitostí, protože to umí i nejnovější verze +programu Adobe InDesign. Metriku \CSfont{}u můžete pro vlastní potřeby +modifikovat například programy tftopl a pltotf. Takto modifikovanou +metriku ovšem nesmíte distribuovat pod stejným názvem, jaký má +původní metrika \CSfont{}u. + + +\subsub Anabáze UNIXových hard-linků | Anabase UNIXovych hard-linku +%----------------------------------- + +Jak jsme uvedli v předchozí sekci, +hlavní \mf{}ové soubory \CSfont{}ů mají jednu zvláštnost: ačkoli zde existuje +121 různě nazvaných souborů, všechny obsahují stejný dvouřádkový text. + +Rozhodl jsem se těch 121 stejných různě nazvaných souborů +implementovat pro úsporu inodů v~UNIXu jako hard linky. Takto jsem +fonty zabalil do balíčku {\tt csfonts.tar.gz} a dal k~dispozici +internetové veřejnosti. + +Pokud je systém, na který se balíček {\tt csfonts.tar.gz} instaluje, +rovněž UNIXo\-vého typu, pak program {\tt tar} vytvoří v~cílovém +adresáři 121 hard linků a je vše v~pořádku. Systém ušetřil 120 inodů, +které nemusel alokovat. + +Jestliže ale cílový systém nepracuje s~hard linky, mohou nastat +potíže. Osobně se ale domnívám, že pokud tento systém provozuje +nějakou implementaci programu {\tt tar}, měla by se tato implementace +s~problémem hard linků vyrovnat například tak, že místo hard linků +vytvoří při extrahování archivu stejné soubory. + +Proto považuji stížnosti uživatelů MS Windows na podivnost archivu +{\tt csfonts.tar.gz} za neopodstatněné. Tito uživatelé si stěžují, že +se jim rozbalí z~těch 121 souborů jen jeden, přičemž používají jakýsi +"Wintar". Odpovídám: nechť si tito uživatelé stěžují u~svého dodavatele +implementace programu {\tt tar}. Odmítám kvůli Windowsovým uživatelům +balit \CSfont{}y jinak a opustit tak možnost šetření inodů na UNIXových +systémech. Navíc se mi doneslo, že Windowsoví uživatelé mají možnost +použít jiné implementace programu {\tt tar}, které popsanou chybu +neobsahují, a skutečně na Windowsovém filesystému založí 121 různých +souborů se stejným obsahem. + + +\subsub Virtuální fonty přidané do balíčku \CSfont{}ů | +%---------------------------------------------------- + Virtualni fonty pridane do balicku CSfontu + +V~balíčku {\tt csfonts.tar.gz} jsou přítomny dvě skupiny virtuálních +fontů. Jedny mapují \CSfont{}y na CM fonty a druhé mapují CM fonty na +\CSfont{}y. V~tomto odstavci vysvětlím důvody existence obou skupin a +způsob jejich použití. + +Až donedávna bylo potřeba při prohlížení "dvi" souborů programem "xdvi" +(a~jemu podobnými programy) počkat, až se pomocí \mf{}u a programu +"gftopk" vygenerují potřebné bitmapy fontů, a teprve pak jsme je viděli +v~prohlížeči. Teprve od roku 2002 má program "xdvi" schopnost přímo +zobrazovat Type1 verze fontů, ale popisované virtuální fonty vznikly +v~době, kdy tomu tak nebylo a kdy \CSfont{}y ještě neměly svou Type1 +variantu. Pokud jsme tehdy nemuseli čekat na generování nových fontů +\mf{}em, pak jen proto, že už byly fonty vygenerovány dříve a zůstaly +uloženy na disku v~podobě {\tt pk} souborů. + +Za této situace bylo výhodné udržovat na disku co nejméně {\tt pk} +souborů. Protože uživatel \CSTeX{}u obvykle používá \CSfont{}y, dá se +předpokládat, že jejich {\tt pk} soubory má na disku v~hojném +množství. Když pak jednou za čas potřebuje takový uživatel prohlédnout +{\tt dvi} soubor odkazující na CM fonty, pak je přeci zbytečné pro ně +generovat nové bitmapy, když \CSfont{}y jsou nadmnožinou CM fontů a +bitmapy \CSfont{}ů pravděpodobně na disku už vygenerované jsou. Stačí pro +zobrazení znaků CM fontů čerpat z~bitmap \CSfont{}ů. + +Právě k~tomu účelu slouží první skupina virtuálních fontů označovaná +jako cm2cs. Po rozbalení {\tt csfonts.tar.gz} je tato skupina +virtuálních fontů uložena do adresáře {\tt fonts/vf/public} a je tedy aktivní. +Každý "dvi"-ovladač, který potřebuje vykreslit znak z~CM fontu, pak +použije tyto virtuální fonty, které jej nasměrují na \CSfont{}y. Takže +"dvi"-ovladač bude tyto znaky nakonec čerpat z~\CSfont{}ů. K~žádnému +zkreslení informace přitom nedochází, protože všechny znaky CM fontů +jsou v~odpovídajících \CSfont{}ech na stejných pozicích a vypadají úplně +stejně. + +Pokud \CSfont{}y vůbec nepoužíváte (nebo jen občas), bude pro vás +asi výhodné virtuální fonty cm2cs z~adresáře {\tt fonts/vf/public} +odstranit. Stejně tak se nehodí mít tyto virtuální fonty aktivní +v~mezinárodních \TeX{}ových distribucích, kde většina uživatelů \CSfont{}y +nikdy nepoužije. Tito uživatelé by asi byli velmi překvapeni, že při +prohlížení {\tt dvi} souboru se standardními CM fonty jim distribuce +generuje na disk bitmapy jakýchsi \CSfont{}ů. + +Druhá skupina virtuálních fontů s~označením cs2cm není po rozbalení +balíčku s~\CSfont{}y aktivní, protože není v~adresáři {\tt fonts/vf}, ale +v~adresáři {\tt fonts/vf-cnv}, který dvi-ovladače s~obvyklou konfigurací +neprocházejí. + +Tuto skupinu virtuálních fontů použijeme v~případě, že jsme vytvořili +v~\CSTeX{}u dokument odkazující na \CSfont{}y, a nyní jej chceme ve +formátovaném tvaru (jako soubor {\tt dvi}) poslat například do +zahraničí. Přitom předpokládáme, že příjemce nebude mít ve své \TeX{}ové +distribuci \CSfont{}y. + +Virtuální fonty cs2cm mapují všechny znaky \CSfont{}ů +na odpovídající znaky z~CM fontů. Pokud znak v~CM fontech +neexistuje, virtuální font jej nahradí kompozitem (například +písmeno+háček). Pokud tedy aplikujeme například program "dvicopy" s~těmito +virtuálními fonty, dostáváme nový {\tt dvi} soubor, který už odkazuje +jen na CM fonty, a akcentovaná písmena jsou v~tomto {\tt dvi} souboru +nahrazena kompozity. Takový "dvi" soubor můžeme poslat do zahraničí a máme +jistotu, že bude zpracovatelný na libovolné \TeX{}ové distribuci, +protože každá distribuce obsahuje CM fonty. Kvalita sazby se ovšem +zhorší, protože akcenty (coby samostatné znaky) jsou v~CM fontech +takové poněkud nedomrlé, zatímco v~\CSfont{}ech jsou kresleny společně +s~písmenem s~velikou péčí. Informace v~dokumentu +ovšem není uvedenou modifikací {\tt dvi} souboru +vůbec změněna. Výjimkou je případ výskytu jednoho z těchto čtyř znaků: +promile, ogonek (ocásek pod polské a), levá a pravá francouzská +uvozovka. Tyto znaky nelze nijak pomocí CM fontů nahradit. Pokud +dokument některý z~těchto znaků obsahuje, pak program +"dvicopy" ohlásí \uv{{\tt---missing character packet}} a ponechá místo +těchto znaků prázdná místa. + +Ve web2c distribuci \TeX{}u v UNIXu můžete pro uvedenou +konverzi "dvi" souboru z~\CSfont{}ů na CM~fonty použít příkaz: + +\begtt +VFFONTS=\$TEXMF/fonts/vf-cnv// dvicopy vstup.dvi vystup.dvi +\endtt + +Poznamenejme, že v~žádném případě nesmí "dvi" ovladač najít současně +virtuální fonty cm2cs i cs2cm. V~takovém případě dojde k~havárii, +neboť odkazy ve virtuálních fontech se dostanou do nekonečného cyklu. + + + + +\subsub Historie a budoucnost \CSfont{}ů | Historie a budoucnost CSfontu +%------------------------------------ + +Tvary akcentů \CSfont{}ů byly vytvořeny a implementovány v~jazyce +\mf{}u Petrem Novákem ve spolupráci s~českými typografy někdy na +začátku 90.~let. Autor přenechal \CSfont{}y \CSTUG{}u, který s~nimi +může libovolně nakládat. + +\mf{}ový kód byl pak v~letech 1992--1993 dále upraven Karlem Horákem. +Karel se inspiroval z~\mf{}ových zdrojů pro fonty vytvořené v~Polsku. +Zapracoval tam možnost nastavení kódování fontu a vytvořil makra +umožňující mít všechny hlavní {\tt mf} soubory se stejným +dvouřádkovým obsahem. + +Na schůzce tvůrců \CSTeX{}u na FEL v~roce 1993 bylo rozhodnuto, že +\CSfont{}y budou mít kódování podle ISO~8859-2. Později, při +implementaci \CSTeX{}u do UNIXo\-vých distribucí nepodporujících +změny xord/xchr vektorů, se ukázalo, že to bylo velmi prozíravé +rozhodnutí. + +V~roce 1993 jsem převzal údržbu \CSfont{}ů do svých rukou. Udělal jsem +jen velmi drobné změny. Poslední 28.~9.~1996: + +Písmeno Č a další akcentované kapitálky měly před tímto datem větší +výšku než kresba o~1,2pt. Opravil jsem. +Také jsem tehdy odstranil nevhodné záporné kerny: + Tě, Tř, T\"o, T\"u, T\"a, T\`a (analogicky pro Ť, Y, Ý). + Vě, Vř, V\"o, V\"u (analogicky pro F, W) +a redukoval jsem přílišné záporné kerny: + Té, Tó, Tů, Tŕ, Tá, Tú (analogicky pro Ť, Y, Ý). + +Pak jsem vývoj \CSfont{}ů zmrazil podobným způsobem, jako Knuth přestal +měnit CM~fonty. Prioritním požadavkem je, aby dokument opírající se +o~\CSfont{}y byl od roku 1996 formátován naprosto stejně dnes i kdykoli +v~budoucnu. Aby byl tento požadavek splněn, není tedy možné zasáhnout +do rozměrů znaků, kernů a ligaturních tabulek. + +V~roce 1996 jsem do \CSfont{}ů přidal virtuální fonty podporující náhradu +Computer Modern fonty a naopak. + +V~roce 1998 se podařilo dohodnout s~autorem te\TeX{}u Thomassem +Esserem, aby zařadil do své distribuce \CSfont{}y a celý \CSTeX. +Od této chvíle jsou distribuce odvozené z~te\TeX{}u implicitně +vybaveny \CSfont{}y. + +V~roce 1998 jsem také pro potřeby výstupu do formátu PDF vytvořil +variantu \CSfont{}ů, tentokrát ve formátu PostScript +Type1. Vyšel jsem z~BaKoMa Type1 implementace +CM~fontů a vytvořil jsem si program {\tt t1accent}, který k~písmenkům +přidával akcenty podle vzorových PostScriptových tahů generovaných +z~původních \CSfont{}ů \mp{}em. Na mnoha místech jsem byl nucen přistoupit +k~mikrotypografickým kompromisům~-- v~drobnostech se kresby některých znaků +\CSfont{}ů z~Type1 liší od svých originálních \mf{}ových protějšků. +Proto jsem distribuci Type1 \CSfont{}ů označil jako \uv{alpha} a do +komentáře jsem dal důrazné varování, že tyto fonty je možné používat +na vlastní riziko. Z~toho důvodu jsem také ponechal +implicitní konfiguraci programu "dvips" tak, aby program používal +léty osvědčený výstup z~\mf{}u, tedy bitmapy formátu "pk". +Type1 \CSfont{}y byly původně konfigurovány jen pro pdf\TeX. + +Rozhodnutí ponechat "dvips" pracovat implicitně s~bitmapami naráželo na +problémy. Neustále dokola se uživaté ptali, jak je možné, že výstup +z~pdf\TeX{}u je dobrý, ale při cestě dvips~-- pstopdf dostávají +roztřesená písmenka. Protože jsem byl uondán velmi častým +odpovídáním na tuto otázku, ani jsem se nakonec nezlobil, když v~roce +2001 autor te\TeX{}u rozhodl, že bude \CSfont{}y pro "dvips" implicitně +konfigurovat ve verzi Type1. Asi ty mikrotypografické kompromisy ani +tak moc nevadí, zatímco roztřesená písmenka v~PDF způsobovala oheň na +střeše. + +V~současné době existují volně dostupné nástroje, jako například +"textrace" opírající se o~"autotrace". Tyto nástroje umožní převést +\mf{}ový font do Type1 \uv{obtahováním bitmap} skoro automaticky. +Vyzkoušel jsem to na \CSfont{}ech a s~výsledkem jsem nebyl vůbec +spokojen: výsledné {\tt pfb} soubory byly asi pětkrát větší než ty +moje \uv{ručně} vyrobené. Proto jsem zatím alpha verzi Type1 formátu +\CSfont{}ů z~roku 1998 neopustil. + +Do budoucna bych velmi rád do \CSfont{}ů přidal znak euro a paragraf. +Taková změna by byla zpětně kompatibilní, takže bych se jí nebránil. +\mf{}ové zdroje pro paragraf ověřené na všech \CSfont{}ech už několik +let mám, ale nezveřejnil jsem je. \mf{}ové zdroje znaku euro by se +snadno daly převzít z~jiného \mf{}ového fontu. Největší potíž je ovšem +v~tom, že s~uvedením nové verze \CSfont{}ů dnes nestačí zveřejnit jen +\mf{}ové zdroje a metriky, ale je třeba mít okamžitě s~tím +konzistentní Type1 varianty fontů. Do manuální práce na nové verzi +Type1 varianty \CSfont{}ů se mi ale moc nechce. Je to nevděčná a rozsáhlá +práce: {\tt pfb} souborů je v~balíčku 57 a každý je třeba disassemblovat, +v~editoru přidat nové znaky a znovu převést na {\tt pfb}. +Přitom s~automatickými nástroji, jak jsem uvedl před chvílí, nejsem +spokojen. + + + +\subtitle {\tt cspsfonts.tar.gz} -- 35 základních PostScriptových fontů | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +CSPSFONTS - 35 ZAKLADNICH FONTU + +Každý \ps{}ový RIP musí být vybaven aspoň 35 základními fonty ze sady +\uv{base~35}. Sada mimo jiné obsahuje sedm rodin textových fontů, +každá rodina obsahuje čtyři fonty (základní, kurzíva, tučný a tučná +kurzíva, \new{Helvetica navíc čtyři zúžené varianty}). +Strojopis se obvykle kombinuje z~rodiny Courier. +Pro tyto fonty je vytvořena podpora ve formě metrik v~kódování +\CSfont{}ů a virtuálních fontů, které tyto metriky mapují na +skutečné fonty, kódované samozřejmě úplně jinak. Tato podpora je +v~balíčku {\tt cspsfonts.tar.gz}, který je povinnou součástí \CSTeX{}u. + +Kódování těchto metrik je inspirováno kódováním \CSfont{}ů, ale chybí +matematické znaky ze začátku tabulky a znaky, které v běžných +\ps{}ových fontech nenajdeme (např. pozice 20: škrtátko polského l). +Na druhé straně jsou přidány znaky s~kódy 80--86 (hexadecimálně) a +některé další (např. kompletní polské \L{} a~\l). Viz následující tabulku +fontu "ptmr8z", implementující písmo Times-Roman pro \CSTeX. + +Fonty rodiny Courier mají kódování inspirováno \CSfont{}em "cstt10", +takže se na pozicích 3C, 3E, 5C, 5F a 7B až 7D znaky poněkud liší. +Toto kódování je označeno "8u" na rozdíl od kódování ostatních +PostScriptových fontů z balíčku "cspsfonts.tar.gz", které je nazváno +"8z". Tuto nejednotnost kódování známe už u~\CSfont{}ů a prapůvodně +existuje u~Computer Modern fontů. Znak vlevo na zmíněných pozicích +odpovídá kódování "8z" a znak vpravo kódování "8u". Na ostatních +pozicích je kódování "8z" a "8u" shodné. + +\def\tabitem{\hbox to.055\hsize{\hfil + \if|\testchar|\char\posnum\fi + \if A\testchar \newAbox{\char\posnum}\fi + \altchar\hfil}% + \vrule\global\advance\posnum by1} +\def\altchar{\ifcase\posnum + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\a\or\or\a\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\a\or\or\or\a\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\a\or\a\or\a\or\or\or + \fi} +\def\testchar{\ifcase\posnum + \or.\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or\or\or\or\or\or\or\or\or\or\or + \or\or\or\or\or\or A\or.\or A\or A\or A\or.\or.\or\or A\or A\or + .\or.\or.\or.\or.\or.\or.\or.\or\or.\or A\or A\or\or\or\or\or + .\or A\or.\or\or\or\or.\or\or.\or\or.\or\or.\or.\or\or.\or + .\or A\or.\or\or.\or\or.\or.\or\or\or.\or\or.\or.\or\or.\or + \or\or\or.\or\or\or.\or\or\or\or.\or\or\or\or\or\or + .\or.\or\or\or\or.\or\or.\or\or\or\or.\or\or\or.\or.\or + \or\or\or.\or\or\or.\or\or\or\or.\or\or\or\or\or\or + .\or.\or\or\or\or.\or\or.\or\or\or\or.\or\or\or\or\or + \fi} +\bigskip +\tabfont {\font\f=ptmr8z \font\tt=pcrr8u \f} +\bigskip + +{\bf Upozornění:} Ve výše uvedené tabulce jsou prázdná místa, na +kterých mohou být umístěny nedokumentované znaky. Když si vytisknete +například skutečnou tabulku fontu "ptmr8z", zjistíte, že tomu tak +skutečně je. Pokud chcete mít dokument zpracovatelný i v budoucích +verzích \CSTeX{}u, nemůžete se o tyto nedokumentované znaky opírat. +Tyto znaky byly obsazeny v rámci soukromé iniciativy Zdeňka Wagnera, +který potřeboval použít font pro více jazyků. Bohužel umístil některé +znaky na pozice, které nejsou pro budoucí rozšíření fontů vhodné. +Každý si může do volných pozic doplnit co potřebuje, ovšem s tím +rizikem, že jeho dokumenty využívající tyto pozice nemusejí být +kompatibilní s~\CSTeX{}em. + +Sada metrik balíčku "cspsfonts.tar.gz" zahrnuje následující fonty: + +{\setbrackets \catcode`/=13 \def/#1/{\skrt{#1}} +\begtt +Metrika /odkazuje na/ Odpovídající PostScriptový font +----------------------------------------------------------- +pagk8z /rpagk/ AvantGarde-Book +pagko8z /rpagko/ AvantGarde-BookOblique +pagd8z /rpagd/ AvantGarde-Demi +pagdo8z /rpagdo/ AvantGarde-DemiOblique +pagkc8z * /rpagk/ AvantGarde-Book Caps & Small Caps +pagdc8z * /rpagd/ AvantGarde-Demi Caps & Small Caps +pbkl8z /rpbkl/ Bookman-Light +pbkli8z /rpbkli/ Bookman-LightItalic +pbkd8z /rpbkd/ Bookman-Demi +pbkdi8z /rpbkdi/ Bookman-DemiItalic +pbklc8z * /rpbkl/ Bookman-Light Caps & Small Caps +pbkdc8z * /rpbkd/ Bookman-Demi Caps & Small Caps +pcrr8u /rpcrr/ Courier +pcrro8u /rpcrro/ Courier-Oblique +pcrb8u /rpcrb/ Courier-Bold +pcrbo8u /rpcrbo/ Courier-BoldOblique +pcrrc8u * /rpcrr/ Courier Caps & Small Caps +pcrbc8u * /rpcrb/ Courier-Bold Caps & Small Caps +phvr8z /rphvr/ Helvetica +phvro8z /rphvro/ Helvetica-Oblique +phvb8z /rphvb/ Helvetica-Bold +phvbo8z /rphvbo/ Helvetica-BoldOblique +phvrc8z * /rphvr/ Helvetica Caps & Small Caps +phvbc8z * /rphvb/ Helvetica-Bold Caps & Small Caps +phvrn8z !skrt[*] /rphvrrn/ Helvetica-Narrow +phvron8z !skrt[*] /rphvron/ Helvetica-Narrow-Oblique +phvbn8z !skrt[*] /rphvbrn/ Helvetica-Narrow-Bold +phvbon8z !skrt[*] /rphvbon/ Helvetica-Narrow-BoldOblique +phvrnc8z * /rphvrrn/ Helvetica-Narrow Caps & Small Caps +phvbnc8z * /rphvbrn/ Helvetica-Narrow-Bold Narrow C & Small C +pncr8z /rpncr/ NewCenturySchlbk-Roman +pncri8z /rpncri/ NewCenturySchlbk-Italic +pncb8z /rpncb/ NewCenturySchlbk-Bold +pncbi8z /rpncbi/ NewCenturySchlbk-BoldItalic +pncrc8z * /rpncr/ NewCenturySchlbk-Roman Caps & Small Caps +pncbc8z * /rpncb/ NewCenturySchlbk-Bold Caps & Small Caps +pplr8z /rpplr/ Palatino-Roman +pplri8z /rpplri/ Palatino-Italic +pplb8z /rpplb/ Palatino-Bold +pplbi8z /rpplbi/ Palatino-BoldItalic +pplrc8z * /rpplr/ Palatino-Roman Caps & Small Caps +pplbc8z * /rpplb/ Palatino-Bold Caps & Small Caps +ptmr8z /rptmr/ Times-Roman +ptmri8z /rptmri/ Times-Italic +ptmb8z /rptmb/ Times-Bold +ptmbi8z /rptmbi/ Times-BoldItalic +ptmrc8z * /rptmr/ Times-Roman Caps & Small Caps +ptmbc8z * /rptmb/ Times-Bold Caps & Small Caps +pzcmi8z /rpzcmi/ ZapfChancery-MediumItalic +\endtt +\par} + +V tabulce jsou hvězdičkou označeny ty metriky, které neodkazují \new{přímo} na +speciální \ps{}ový font, ale jsou implementovány pomocí +virtuálního fontu (Caps \& Small Caps). \skrt{Nebo se jedná o~Narrow varianty fontu +Helvetica, které jsou konfigurovány v "psfonts.map" pomocí \ps{}ové +transformace.} + +České a slovenské znaky \skrt{jsou} \new{byly} ve fontech +"8z" a "8u" implementovány +jako kompozity (tj. virtuální font je posklád\skrt{á}\new{al} +ze samostatného akcentu +a základního písmene). +\new{Tento přístup přinášel problémy: ve výsledném PDF nebylo možno +vyhledávat český text a nebylo možno přenést text clipboardem do jiné +aplikace. Proto jsem v roce 2012 zveřejnil novou verzi fontů, které +odkazují přímo na PostScriptový font, který překódovávají pomocí {\tt +/Encoding} vektoru. Bývalý argument, že nemáme jistotu, zda ve fontu naše +akcentované znaky jsou, už dávno neplatí.} +% +\skrt{Použité segmenty jsou přítomny v~každém +PostScriptovém fontu. Proto virtuální fonty po sestavení kompozitů +odkazují na metriky fontů (s písmenem "r" na začátku), které jsou již +kódovány podle StandardEncoding. Fonty v~PostScriptovém RIPu tedy +nepotřebujeme mít počeštěny ani poslovenštěny a také nepotřebujeme +měnit Encoding vektor těchto fontů na úrovni \ps{}u.} + +Program {\tt dvips} je obvykle konfigurován tak, že do výstupního +\ps{}ového kódu nezavádí žádný z~fontů \uv{base~35} a ponechá tam +jenom odkaz. Starost o~font přenechá \ps{}ovému RIPu. PostScriptové +fonty z~\uv{base35} tedy principiálně není nutné pro provoz v \TeX{}u +instalovat na disk a nejsou tedy ani obsaženy v~balíčku +"cspsfonts.tar.gz". \new{Programu {\tt dvips} je doporučeno nabídnout +mapovací soubor {\tt cs-a35-nodownload.map}.} + +\new{Program {\tt pdftex} je naopak konfigurován tak, že do výstupního PDF +vkládá všechny použité fonty. Pokud je použit Adobe font z~\uv{base35}, je za něj +připravena a zavedena náhrada z~dílny URW, která je přítomna v běžných +\TeX{}ových distribucích. Programu {\tt pdftex} je tedy potřeba nabídnout +jiný mapovací soubor {\tt cs-a35-urwdownload.map}.} + +Pokud \skrt{si chcete prohlížet} \new{jste si prohlíželi} +{\tt dvi} soubor odkazující na fonty +z~\uv{base~35} například starší verzí programu {\tt xdvi}, pak tento +program potřeb\skrt{uje}\new{oval} (alespoň na přechodnou dobu) bitové mapy těchto fontů. +Pokud bitové mapy v~instalaci ještě \skrt{neexistují} \new{nebyly}, +program zavol\skrt{á}\new{al} skript +{\tt mktexpk}, který pro vytvoření rastru vol\skrt{á}\new{al} dále Ghostscript. +To je implementace \ps{}ového RIPu, která musí obsahovat fonty +z~\uv{base~35}.% +\footnote*{Z licenčních důvodů Ghostscript neobsahuje originální fonty od + Adobe, ale jen jejich hodně dobré náhražky od firmy URW. + Rozdíl většinou pouhým okem nerozeznáte.} +Odtud se fonty konvertují do bitových map {\tt pk} a odtud je +nakonec použije program {\tt xdvi}. + +Poznamenejme ještě, že novější verze programu {\tt xdvi} obsahují +tzv.~modul "t1lib", díky němuž {\tt xdvi} umí přímo číst PostScriptové +fonty a vykreslovat je na obrazovku. Není tedy potřeba vůbec vyrábět +{\tt pk} bitmapy fontů, ani na přechodnou dobu. Náhražky fontů od +firmy URW z~\uv{base~35} jsou proto v~novějších distribucích +\TeX{}u přímo instalovány a nespoléhá se v~tomto případě +na Ghostscript. Nemusíte pak ani spoléhat na přítomnost fontů +v PostScriptovém RIPu v tiskárně. Novější verze web2c \TeX{}u +nabízejí pro takový případ možnost použít u~programu +"dvips" přepínač "-Pdownload"\new{{\tt35}}. + + +\subsub Historie a budoucnost balíčku {\tt cspsfonts.tar.gz} | +%----------------------------------------------------------- + Historie a budoucnost balicku cspsfonts + +Balíček "cspsfonts.tar.gz" má méně bohatou historii než \CSfont{}y. +Tento balíček začal vznikat v~září roku 1994. Tehdy jsem zjistil, že +popisy kompozitů v~"AFM" metrice pomocí řádků "CC" jsou správně převáděny +programem "afm2tfm" na odpovídající kompozity ve vytvářeném virtuálním +fontu. Problém byl jen v tom, že originální "AFM" metriky od Adobe +neobsahovaly popisy všech kompozitů potřebných pro český a slovenský +jazyk. Z toho důvodu jsem si vytvořil program "a2ac"~\cit{a2ac}, který +na základě přehledné tabulky kompozity do "AFM" metrik doplnil a +současně doplnil kerningové informace pro nově vytvářené znaky. Za +použití tohoto programu pak vznikla sada metrik a virtuálních fontů +s~písmenem "c" na začátku (např. "cptmr"). \new{České a slovenské znaky měly +plovoucí akcenty.} + +V roce 1996 pak uveřejnil pan Wagner nové metriky generované stejným +způsobem, ovšem opravil několik estetických nedostatků a navíc metriky +nazval podle doporučení Karla Berryho ("8z" a "8t" na konci). Od té +doby jsou v balíčku "cspsfonts.tar.gz" obsaženy metriky pana Wagnera. + +\skrt{Konečně v} \new{V} roce 1999 jsem musel po konzultaci s~Karlem Berrym metriky +pro rodinu Courier přejmenovat z původního "*8t" na nynější "*8u", +protože názvy s~"8t" na konci nám kolidovaly s~názvy stejných fontů +v~kódování podle Corku. To je zatím poslední změna v tomto +balíčku. + +Chyst\skrt{ám} \new{al jsem} doplnění balíčku {\tt cspsfonts.tar.gz} o~nové metriky kódované +jako "8z", které mapují další běžně používané \ps{}ové fonty. +Jako první na řadě se nabízí přidání metrik "8z" pro volně +šířenou rodinu fontů Charter písmolijny BitStream. + +\newstart +V roce 2012 jsem přidal do merik fontů z tohoto balíčku znak Euro a další +znaky (viz vybarvené znaky v tabulce). Bohužel po letech už nebyly k +dispozici zdroje, ze kterých metriky generoval kdysi pan Wagner. +Zejména nebyl k dohledání správný soubor {\tt xl2.enc}. V metrikách tedy bylo +plno nedokumentovatelných slotů, o kterých jsem těžko mohl soudit, co byly +zač. Takové sloty považuji za chybu. Proto jsem ustoupil od zpětné +kompatibility a přegeneroval všechny metriky kompletně znovu. Je možné že sazba +těmito fonty někdy +výjde mírně jinak než kdysi, ale aspoň máme metriky, které přesně +korespondují souboru {\tt xl2.enc}. Protože se mi nepodařilo dohledat AFM +metriky fontů přímo od adobe takové, které obsahují znak {rcaron}, fonty +jsem vygeneroval z metrik URW. Generující skript je obsahem balíčku. + +Z balíčku {\tt cspsfonts.tar.gz} jsem přemístil soubory {\tt ctimes.tex} +atd. do balíčku {\tt csplain.tar.gz}, kam jsem přidal další podobné soubory. + +\newstop + +\subtitle Formát \csplain{} | FORMAT CSPLAIN +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\new{Formát \csplain{} má svou stránku na +{\tt http://petr.olsak.net/csplain.html}. Je tam poněkud stručněji řečeno +víceméně totéž, jako zde.} + +Popíšu \skrt{jenom} \new{zejména} odlišnosti formátu \csplain{} (povel {\tt csplain}) od +Knuthova formátu plain (povel {\tt tex}), popsaného +v~\TeX{}booku~\cit{texbook}. + + +\subsub Překódování v~input procesoru \TeX{}u | Prekodovani v input procesoru TeXu +%-------------------------------------------- + +\skrt{Vstupní text pro formát \csplain{} se předpokládá 8bitový.} Kódování +češtiny nebo slovenštiny vstupního textu je takové, jaké +běžně používáte v~systému, kde je váš \TeX{} instalován. O~tomto kódování +budeme nadále mluvit jako o~{\it vstupním kódování}. + +Ze vstupního kódování je třeba text překódovat do {\it vnitřního +kódování}, se kterým interně pracuje \TeX. Toto vnitřní kódování je +v~\csplain{}u implicitně nastaveno na ISO-8859-2 nezávisle na operačním +systému. V~tomto kódování musí být připraveny fonty použité +v~dokumentu. \CSfont{}y a fonty zaváděné pomocí "\input ctimes", +"\input cbookman" atd. tuto vlastnost mají. + +Překódování textu \skrt{do vnitřního kódování můžete udělat ručně před +spuštěním \TeX{}u (to moc nedoporučuji) nebo} je \skrt{tato konverze} +implementován\skrt{a}\new{o} do input procesoru samotného \TeX{}u. Jak je to uděláno +závisí na použité distribuci \TeX{}u. Nejběžnější metody nastavení +input procesoru budou zmíněny níže. + +Problém vztahu vstupního a vnitřního kódování ilustruji na +příkladě. Nechť je ve vstupním souboru napsáno "\char174=Ž". Po +zpracování \csplain{}em musím na výstupu dostat: Ž=Ž. Tímto příkladem +jsem naznačil dvě věci. Za prvé: některá makra mohou být závislá na +zvoleném vnitřním kódování \TeX{}u (zde makro "\char174", které má +vytisknout písmeno Ž). Pokud použiju v~systému povel {\tt csplain} bez +doplňujících maker, pak předpokládám, že kód 174 znamená písmeno~Ž. + +Za druhé: pokud vpravo od rovnítka vidím v~editoru, kterým zpracovávám +vstupní dokument, písmeno~Ž, pak se tento znak musí dostat do +vnitřních částí \TeX{}u pod kódem 174, ačkoli v~tom editoru je třeba +kódován úplně jinak. Konverze by měla být implementována (závisle +na použitém vstupním kódování) v~input procesoru +\TeX{}u. Důležité je, že to ve svém editoru {\it vidím jako Ž\/} a +očekávám na základě této vizuální informace jednotné chování \csplain{}u +na všech systémech, kde existují editory, kterými se mohu do zdrojového +textu podívat a vidět~Ž (ačkoli různé operační systémy mohou toto~Ž +kódovat různě). + +\new{Pokud se zdrojový soubor \csplain{}u přenáší mezi systémy s různým +kódováním, pak předpokládáme, že příjemce se na soubor podívá ve svém +editoru a když uvidí rozsypaný čaj, nejprve si obdržený soubor +opraví}. + +\new{Jak bylo řečeno, konverze mezi vstupním kódováním a vnitřním kódováním +probíhá na úrovni input procesoru \TeX{}u. To} +\skrt{Konverzi do jednotného vnitřního kódování} je možné realizovat +v~různých distribucích \TeX{}u různě. Pročtěte si dokumentaci k~použité +distribuci. V~em\TeX{}u se pro tyto účely používá tzv.~TCP tabulka +zaváděná při inicializaci formátu. Ve velmi starých web2c distribucích +\TeX{}u (léta 1992--1997) můžete najít tzv.~Škarvadovu záplatu, která +nastavovala kódování podle proměnné prostředí systému. Později se pro +překódování používal enc\TeX (rok 1997), který nastavoval +xord/xchr vektor input procesoru \TeX{}u pomocí +přidaných primitivů (viz~\cit{enctex} a \cit{putovani}). \skrt{Dnes} +\new{Ještě později} +(po roce 1998) se v~distribucích web2c, te\TeX{}, \TeX{}live a +odvozených používají tzv.~TCX tabulky, +které se vyvolají z~příkazového řádku pomocí přepínače +"-translate-file" nebo "-default-translate-file". +\new{Dnes doporučuji se k enc\TeX{}u vrátit, protože jeho současná verze nabízí +(na rozdíl od TCX tabulek) novou možnost: konverzi vícebytového kódování na vnitřní jednobytové, +takže zvládne vstup kódovaný v UTF-8. Toto kódování je od roku 2012 +doporučeno jako implicitní vstupní kódování \csplain{}u.} + +Se správným nastavením překódovací tabulky úzce souvisí schopnost +\TeX{}u zapisovat přímo znaky použité abecedy \skrt{8bitový text} +do logů a do "\write" souborů \new{zpětně ve vstupním kódování.} +\skrt{(tam musí být text zpětně konvertován do vstupního kódování).} +\TeX{} implicitně pro výstup do těchto souborů používá pro znaky +s~kódem větším než 127 hexadecimální přepis uvozený dvěma znaky "^". +To je pro \csplain{} nepřípustné, a proto je nutné v~\TeX{}u rozšířit +tzv.~tabulku znaků povolených pro tisk do logů a pracovních +souborů. Ta je ve web2c distribuci rozšířena automaticky zavedením~TCX +tabulky: znaky, které jsou v~této tabulce zmíněny, se stávají povolenými pro +tisk. To vysvětluje nutnost používání tabulky "il2-cs.tcx" v~UNIXových +distribucích, přestože tabulka pouze deklaruje překódování +\uv{jedna ku jedné}. \new{Detekuje-li \csplain{} při generování formátu +aktivovaný enc\TeX, nastaví se tisknutelnost znaků s kódem větším než 127 +automaticky}. + +Věnujte prosím při implementaci \csplain{}u do jiných \TeX{}ových +distribucí zvýšenou pozornost právě problémům překódování v~input +procesoru a problému množiny povolených znaků pro tisk do logů a +pracovních souborů. Pokud se chcete přesvědčit o~správnosti +implementace \csplain{}u, vyzkoušejte test cstrip (viz~\cit{cstrip}). + + +\subsub Inicializace formátu | Inicializace formatu +%--------------------------- + +Pokud se vám podařilo \csplain{}em zpracovat tento dokument, pak máte +formát \csplain{} již inicializovaný a můžete směle tuto sekci +přeskočit. Pokud používáte \skrt{nejnovější verzi} \TeX{}live, pak stačí +napsat na příkazový řádek {\tt csplain dokument} a \new{použije se +předgenerovaný formát, nebo se} +\skrt{pokud tak činíte +poprvé,} formát \skrt{se} automaticky vytvoří. Také můžete inicializovat +formát \csplain{} pomocí nástroje {\tt texconfig} například +tak, že odstraníte komentářové znaky u~slova {\tt csplain} v~souboru +{\tt texmf/web2c/fmtutil.cnf} a spustíte "texconfig init". + +Následující text popisuje možnost vytvoření formátu \uv{ručně}. +\newstart +\csplain{} v \TeX{}live se vstupním kódováním UTF-8 vygenerujete za použití +enc\TeX{}u (přepínač {\tt-enc}) z příkazové řádky takto: + +{\font\tt=cstt9 +\begtt +pdfetex -ini -enc "\let\enc=u \input csplain.ini" +\endtt +\par} + +Takto vygenerovaný formát implicitně vystupuje do DVI. Dále pdf\csplain{} +vygenerujete z příkazové řádky: + +{\font\tt=cstt9 +\begtt +pdfetex -jobname=pdfcsplain -ini -enc "\let\enc=u \input csplain.ini" +\endtt +\par} + +Pozorování: těsně před "\dump" je ve výpisu a v~log souboru napsáno toto hlášení: +{\tt jobname=pdfcsplain, PDF output initialised.} Takže nyní je implicitně +nastaven výstup do PDF. + +Soubory {\tt csplain.fmt} a {\tt pdfcsplain.fmt} je třeba umístit někam, kde je +\TeX{}ová distribuce najde. Místo použití výše uvedených příkazů se můžete pokusit +editovat konfigurační soubor v~\TeX{}ové distribuci a spustit generování +formátu prostředky, které k tomu účelu nabízí distribuce. + +Spuštění \csplain{}u (resp. pdf\csplain{}u) provedete jedním z příkazů + +\begtt +pdfetex -fmt=csplain.fmt dokument +csplain dokument +pdfetex -fmt=pdfcsplain.fmt dokument +pdfcsplain dokument +\endtt + +Druhý a čtvrtý řádek obsahuje typické zkratky implementované různým způsobem +v~závislosti na operačním systému a \TeX{}ové distribuci. + +Další možností je vygenerovat csplain s jednobytovým vstupním kódováním pomocí tcx +tabulek. To se dělá přepínačem "-translate-file", za kterým následuje +název použité tcx tabulky. +Zbylý text v této sekci většinou dokresluje situaci před deseti a více lety. + +\newstop + +Příkazem {\tt initex} označuji v tomto textu spuštění \TeX{}u +v~inicializačním módu, kdy \TeX{} dokáže načítat tabulky vzorů dělení pro +různé jazyky a ukládat nabyté vědomosti příkazem "\dump" do +binárních souborů, tzv. formátů. Dříve na to existoval zvláštní +program ini\TeX, dnes se často používá nějaký přepínač: +{\tt tex -ini}, {\tt tex /i} atd. + +Formát \csplain{} (soubor {\tt csplain.fmt}) vygenerujete jednoduše: + +\begtt +initex csplain.ini +\endtt + +Používat jej pak můžete pomocí příkazu + +\begtt +tex &csplain dokument +\endtt + +V~UNIXu musíte použít "tex \&csplain dokument", aby se znak "&" +neinterpretoval na úrovni shellu. Nezapomeňte ale +nastavit správnou překódovací \new{tcx} tabulku způsobem obvyklým v~použité +\TeX{}ové distribuci. Níže uvádím několik příkladů. + +\begitems \parindent=0pt +* {\bf te\TeX{}, \TeX{}Live, vstupní kódování ISO-8859-2}: + +\skrt{inicializace: {\tt tex -ini csplain.ini}} + +\skrt{obsah skriptu {\tt csplain}:}\hfil\break\null\hfil + \skrt{{\tt tex -fmt=csplain -default-translate-file=il2-cs \char`\$@}} + +\newstart +inicializace: "tex -ini -translate-file=il2-cs csplain.ini" + +instalace povelu {\tt csplain}:\quad + "ln -s tex csplain" +\newstop + +spuštění \csplain{}u: "csplain dokument" + +\medskip +* {\bf te\TeX{}, \TeX{}Live, vstupní kódování podle Kamenických} +(hypotetický příklad): + +inicializace: "tex -ini csplain.ini" + +obsah skriptu {\tt csplain}:\hfil\break\null\hfil + "tex -fmt=csplain -default-translate-file=kam-cs $@" + +spuštění \csplain{}u: "csplain dokument" + +\medskip +* {\bf web2c\TeX{} s~enc\TeX{}em, vstupní kódování ISO-8859-2}: + +inicializace: "tex -ini csplain.ini" + +instalace povelu {\tt csplain}:\quad + "ln -s tex csplain" + +spuštění \csplain{}u: "csplain dokument" + +\medskip +* {\bf web2\TeX{} s~enc\TeX{}em, vstupní kódování podle Kamenických}: + +inicializace: {\tt tex -ini \newAbox{-enc}} "'\let\enc=k \input csplain.ini'" + +instalace povelu {\tt csplain}:\quad + "ln -s tex csplain" + +spuštění \csplain{}u: "csplain dokument" + +\medskip +* {\bf em\TeX{}, vstupní kódování podle Kamenických}: + +inicializace: "htex386 /i /8 /mt26000 /Ckamenic.tcp csplain.ini" + +obsah dávky {\tt csplain.bat}:\hfil\break\null\hfil + "htex386 /mt26000 &csplain %1 %2 %3 %4 %5 %6 %7" +\enditems + +Zastavím se na chvíli u~em\TeX{}u. Parametr {\tt /mt} zde zvětšuje +prostor pro ukládání vzorů dělení slov tak, aby se do formátu vešlo +celkem pět vzorů dělení: anglické vzory dělení a dále české i +slovenské vzory dělení obě v~kódování ISO-8859-2 a Cork% + \footnote*{Možnost zapnout kódování Cork jako alternativní + vnitřní kódování \csplain{}u je implementována od verze "". + Podrobněji se o~tom zmiňuji v~sekci~4.5.}. +Paměť pro vzory dělení v~\TeX{}u se skládá ze dvou částí. První +je nastavována interní \TeX{}ovou proměnnou trie\_size (ta +koresponduje s~přepínačem {\tt/mt}) a druhá proměnnou trie\_op\_size +(viz~\cit{tbn}, str.~301). Bohužel, hodnota trie\_op\_size není +v~em\TeX{}u měnitelná a je ve verzích "tex.exe" a "tex386.exe" nastavena na +malou hodnotu: pět vzorů dělení slov se tam nevejde. Proto jsem +v~příkladu použil "htex386.exe", ve kterém je trie\_op\_size nastavena na +dostatečně velkou hodnotu. Pokud chcete v~em\TeX{}u použít "tex.exe" +nebo "tex386.exe", pak musíte generovat formát \csplain{} jen se třemi +vzory dělení -- vyloučit alternativní kódování Cork. Toho lze +dosáhnout jednak tím, že použijete verzi \csplain{}u starší než +"", nebo tak, že potlačíte opakované volání vzorů +dělení pro Cork pomocí "\let\Cork=\relax" takto: + +\begtt +tex /i/8/mt17000/Ckamenic.tcp \let\Cork=\relax \input csplain.ini +\endtt + +Poznamenejme, že potlačit načítání vzorů dělení v~alternativním +kódování (Cork) lze pomocí "\let\Cork=\relax" ve všech distribucích +\TeX{}u. Nejedná se tedy jen o~em\TeX{}ovou záležitost. Nicméně +v~ostatních mě dostupných distribucích nejsou problémy s~výchozí +hodnotou paměti \TeX{}u pro vzory dělení a je možno načíst bez +nutnosti cokoli nastavovat všech pět vzorů dělení. + + +\subsub Výchozí nastavení v~\csplain{}u | Vychozi nastaveni v CSplainu +%-------------------------------------- + +Aby byla zachována co největší kompatibilita s~mezinárodním formátem +plain a aby se necítili Češi nebo Slováci vzájemně utlačováni, jsou při +startu \csplain{}u inicializovány americké vzory dělení slov a zapnuto +větší mezerování za tečkami (tzv.~"\nonfrenchspacing"). + +Pro přepnutí na české vzory dělení slov použijte povel "\chyph" a +do slovenštiny přepnete pomocí "\shyph". Oba povely navíc zapnou +stejnoměrné mezerování i za tečkou (tzv.~"\frenchspacing"). Takové +mezerování je v~české a slovenské sazbě obvyklejší. Zpět na americké +vzory dělení a větší mezerování za tečkou přejdete pomocí povelu +"\ehyph". + +Příklad: Chceme-li v~\csplain{}u zpracovat český dokument, stačí na +začátku dokumentu uvést "\chyph": + +\begtt +\chyph +Tady už bude vše fungovat česky. +\bye +\endtt + +\newstart +Přepínače "\chyph", resp. "\shyph", resp. "\ehyph" je možné v dokumentu používat kdekoli +(například i uvnitř odstavce) na oddělení částí dokumentu, které podléhají +českým resp. slovenským resp. anglickým pravidlům dělené slov. + +Příkazy pro akcenty "\v", "\^", "\`", "\'", "\v", {\tt\char`\\\char`\"} +mají implicitně původní význam z~plainu, tj. pracují s primitivem "\accent", +který sestavuje znak z akcentu a základu. +To menusí být žádoucí, protože pak nefunguje dělení slov. Příkazem +"\csaccents" se uvedené příkazy předefinují tak, že expandují přímo na +akcentované znaky jako celek. Začne fungovat dělení slov v případech, kdy +jsou slova napsána "takov\'ym podivn\'ym zp\r usobem".~ +Nově je po "\csaccents" definován příkaz "\r" pro +akcent kroužku. Konečně se správně vysázejí i sekvence "\v d" nebo "\'i", které +původně činily potíže. + +\newstop + +\skrt{{\bf Upozornění:} nedoporučuji v~dokumentech pro \csplain{} používat styl +{\tt czech.sty} resp. {\tt slovak.sty}. +Tím se totiž dokument zcela zbytečně stává +závislým na externím balíku maker, který není příliš stabilní. Pokud +k~tomu nemáte vážné důvody, styl {\it nepoužívejte}. Styl je +vyvíjen +spíše pro uživatele \LaTeX{}u, zatímco uživatel \csplain{}u si vystačí +s~povely {\tt\char`\\chyph} a {\char`\\shyph}. V~budoucnu přestěhuji tyto styly +z~archivního souboru {\tt csplain.tar.gz} (kam nepatří a jsou tam jen +z~historických důvodů) do archivu {\tt cslatex.tar.gz}.} + +Rozměr tiskového zrcadla (výška a šířka textu) je implicitně nastaven +tak, aby všechny čtyři okraje měly velikost 1~palec na papíru formátu +A4. To je významný rozdíl oproti nastavení ve formátu plain, kde se sice +také předpokládají okraje 1~in, ale na papíru US-letter. Níže uvádím +tabulku nastavení rozměrů zrcadla v~\csplain{}u a pro srovnání tytéž parametry +v~originálním plainu: + +\begtt + CSplain plain +----------------------------------------------------- +\hsize = 159.2mm \hsize = 6.5in (165.1mm) +\vsize = 239.2mm \vsize = 8.9in (226.06mm) +\hoffset = 0mm \hoffset = 0in +\voffset = 0mm \voffset = 0in +\endtt + +\newstart +Kromě znaků anglické abecedy jsou v \csplain{}u za písmena považovány i +všechny akcentované znaky české a slovenské abecedy, takže i tyto znaky mají +nastaven "\catcode=11" a dále mají nastaveny odpovídající "\lccode" a "\uccode". +\newstop + +Výchozí fonty zavedené do formátu \csplain{} jsou \CSfont{}y. Pro matematiku +jsou zavedeny původní Computer Modern fonty. Na rozdíl od plainu formát +\csplain{} nezavádí do paměti při inicializaci desítky dalších fontů +označených jako "\preloaded", protože další fonty se dají zavést +povelem "\font" až v~době potřeby. Na starodávných strojích bylo možná +užitečné zavést fonty \uv{do rezervy} už při inicializaci formátu, aby +pak příkaz "\font" použitý v~dokumentu moc nezdržoval. Při dnešních +rychlostech počítačů je toto opatření zcela zbytečné, a proto +v~\csplain{}u nepoužité. + +Matematická sazba funguje v~\csplain{}u zcela stejně, jako v~originálním +plainu. Je to díky tomu, že implicitně zavedené \CSfont{}y jsou +konzervativním rozšířením Computer Modern fontů. Při zavádění jiných +fontů do dokumentu je potřeba počítat při matematické sazbě +s~některými obtížemi (viz následující dvě sekce). + + +\newstart + +\subsub Makro {\tt opmac.tex} | +%---------------------------- + Makro opmac.tex + +Makro {\tt opmac.tex} je od konce roku 2012 součástí balíčku \csplain{}u. +Napíšete-li do záhlaví dokumentu + +\begtt +\chyph \input opmac +\endtt +% +pak máte k dispozici další makra, která řeší následující věci: +automatickou tvorbu obsahu, číslování, kapitoly, sekce, křížové reference, +verbatim prostředí, vkládání obrázků, bibtexové odkazy. Tuto sadu svých maker +dávám k dispozici s tím, že jsem si vědom, že makra neřeší všechno a ve +všech souvislostech, nicméně kladu důraz na jednoduchost a srozumitelnost +maker. Předpokládám, že si je uživatelé předefinují k obrazu svému, nicméně +usnadním začínajícímu uživateli první kroky směrem k \csplain{}u. + +WWW stránka nabízející OPmac je {\tt http://petr.olsak.net/opmac.html}. +Uživatelká dokumentace k makrům je v souboru {\tt opmac-u.pdf} +a technická dokumentace v souboru {\tt opmac-d.pdf}. +\newstop + + +\subsub Použití \ps{}ových fontů v~\csplain{}u | +%------------------------------------------ + Pouziti PostScriptovych fontu v CSplainu + +Součástí \CSTeX{}u v~balíčku {\tt cspsfonts.tar.gz} jsou kromě metrik +také soubory, které předefinují textové fonty z~výchozích \CSfont{}ů na +fonty některé rodiny z~\uv{base~35}. Jak jsme již uvedli v předchozí +kapitole, fonty z balíčku {\tt cspsfonts.tar.gz} jsou kódovány +v~ISO-8859-2, tedy v~souladu s~vnitřním kódováním použitým +v~\csplain{}u. Níže je tabulka souborů, které zavádějí \ps{}ové +fonty do \TeX{}u primitivem "\font": + +\begtt +soubor Rodina fontů +-------------------------------- +cavantga.tex Avantgarde Book +cbookman.tex Bookman +chelvet.tex Helvetica +cncent.tex New Century +cpalatin.tex Palatino +ctimes.tex Times Roman +\endtt +% +Chcete-li například přepnout do písma Bookman, stačí napsat na začátek +dokumentu: + +\begtt +\input cbookman +\endtt + +Pokud sami pracujete s~primitivem "\font" například pro zavedení +větších velikostí fontů u nadpisů, doporučuji použít následující +konstrukci: + +\begtt +\font\titulfont=\fontname\tenbf\space scaled \magstep2 +\endtt +% +Tato konstrukce není závislá na konkrétním fontu, takže když později +změníte před takovou konstrukcí "\input bookman" například na +"\input cpalatin", změní se automaticky i font pro nadpisy. + +\newstart +Uvedené soubory {\tt cavantga.tex}, \dots, {\tt ctimes.tex} +zavádějí čtyři běžné varianty textových fontů "\tenrm", "\tenit", +"\tenbf", "\tenbi" a k nim pátou variantu "\tentt" implicitně ve velikosti +10pt. Uživatel místo přímého použití uvedených přepínačů používá obvykle makra +"\rm", "\it", "\bf", "\bi", "\tt". + +Je možné tyto jednou zavedené fonty kdykoli později změnit do jiné velikosti. +Například po "\def\sizespec{at12pt}\resizeall" bude všech pět variant fontů +připraveno ve velikosti 12pt. Individuálně lze změnit velikost každému fontu +zvlášť příkazem "\resizefont" jehož parametr je fontový přepínač (nikoli +makro). Přepínač změní velikost svého fontu podle makra "\sizespec". +Pozor: makra "\resizefont" a "\resizeall" sice změní velikosti fontů +odpovídajícím přepínačům, ale nenastaví aktuální sazbu novým fontem, takže +bez následného použití přepínače nevidíte výsledek. Je tedy nutno například +psát: "\def\sizespec{at12pt}\resizeall\tenrm". + +Změna velikosti fontů má lokální +platnost, takže třeba makro pro sazbu titulu může vypadat takto: + +{\font\tt=cstt9 +\begtt +\def\titul#1{\centerline{\def\sizespec{at20pt}\resizefont\tenbf\tenbf#1}} +\endtt +\par} + +Makro "\resizeall" lze rozšiřovat o další fontové přepínače mimo uvedených +pět. O toto rozšíření se postará makro "\regfont ". Po použití +tohoto makra je "" tzv. \uv{registrovaný}, takže bude měnit +velikost svého fontu po spuštění makra "\resizeall". Fontové +soubory {\tt cavantga.tex}, \dots, +{\tt ctimes.tex} nastavují obvykle jen základních pět variant a žádné nové +přepínače neregistrují. Zavádí-li ale +fontový soubor fonty i pro další varianty, měl by použít "\regfont". + +Fontové soubory {\tt cavantga.tex}, \dots, {\tt ctimes.tex} automaticky načtou +další soubor maker {\tt tx-math.tex}. +Tato makra zavedou do matematické sazby TXfonty. Ty jsou vizuálně +kompatibilní s Times\-Roman a mnoha dalšími fonty. + +Po zavedení makra "tx-math.tex" jsou k dispozici stovky příkazů pro jednotlivé +znaky matematické sazby (nadmnožina znaků z AMS\TeX{}u) a dále jsou +(kromě přepínače "\cal" z plain\TeX{}u) k dispozici +následující přepínače matematických abeced: + +\begtt +\frak % matematická fraktura +\script % skript mnohem zakroucenější než \cal +\bbchar % písmena kreslená dvěma tahy +\bf % bold sans-serif písmo +\bi % bold slanted sans-serif písmo, někdo tím značí vektory +\endtt + +Kompletní soubor matematických fontů je makrem "tx-math.tex" zaveden ve +velikosti 10/7/5pt (základní/indexová/indexindexová velikost). Ovšem tuto +implicitní volbu je možné kdykoli v dokumentu změnit pomocí (například): + +\begtt +\setmathsizes[12/8.4/6]\normalmath +\endtt + +Příkaz "\normalmath" pozmění všechny matematické fonty do potřebných nových +velikostí deklarovaných pomocí "\setmathsizes". Příkaz "\boldmath" dělá +totéž, ale připraví místo \uv{normálních} fontů jejich tučné varianty. Tento +příkaz se hodí použít do maker s nadpisy. Změny fontů mají lokální platnost. + +Kromě "tx-math.tex" je k dispozici analogické makro "ams-math.tex", které +ponechává v matematické sazbě \CS{}fonty a přidává k nim kompletní sadu +\AMS{} fontů. Toto makro nabízí pro práci s fonty (volba matematické abecedy, +změna velikostí a duktu) stejné příkazy jako makro "tx-math.tex". + +Obě makra navíc nabízejí dva přepínače, které mění chování proměnných, +číslic a fontů pro sazbu $\sin$, $\cos$, $\lim$, atd.: + +\begtt +\itvariables % proměnné a \rm z aktuálního textového fontu +\mitvariables % proměné ze speiálního fontu, \rm taky. +\endtt + +Volba "\itvariables" je implicitní v "tx-math.tex", protože se předpokládá, +že \uv{kolem} je textový font se kterým by měly být proměnné v matematice v +souladu. Naopak v "ams-math.tex" je implicitní "\mitvrariables", aby se +využilo mírně modifikované kurzívy vyvinuté speciálně pro matematickou sazbu +v Computer Modern. \uv{Kolem} se totiž předpokládá běžný text v +\CS{}fontech nebo ve vizuálně kompatibilních fontech. + +Kromě souborů {\tt cavantga.tex}, \dots, {\tt ctimes.tex} jsou v balíčku +\csplain{}u připraveny další obdobné, jejichž názvy větčinou začínají na +{\tt cs-}. Například {\tt cs-antt.tex} zavádí fonty Antykwy Toru\'nske. +Přehled o všech takových souborech by se měl objevit na terminálu po +{\tt\char`\\input cs-all}. Toto makro nevykoná nic, jen vypíše seznam +dostupných fontových souborů. Iniciativě k přidání dalších fontových souborů +se meze nekladou. + +\newstop + + +\skrt{% +Po zavedení rodiny \ps{}ových fontů je potřeba dát pozor na +matematickou sazbu. Jedná se o~veškerou sazbu realizovanou ve +zdrojovém textu mezi dolary. Ta i po změně textových fontů pracuje +s~původními \CSfont{}y a Computer Modern fonty. Jedině tak je dosaženo, +že realizace všech matematických symbolů z~plainu zůstává zachována. +% +Napíšete-li po zavedení nového textového fontu v~textu například +číslovku 2 bez použití dolarů, dostanete dvojku z~nového +fontu. Použijete-li ale "$2$", na výstupu bude dvojka z~\CSfont{}ů. +Toto míchání fontů není estetické. Chcete-li se mu aspoň částečně +vyhnout, použijte po zavedení rodiny fontů povel {\tt\char`\\setsimplemath}, +například:} + +{\catcode`/=0 \catcode`[=1 \catcode`]=2 +\begtt +/skrt[\input cbookman \setsimplemath] +\endtt +\relax}% +\skrt{Příkaz zavede i pro fonty, které \TeX{} používá při sazbě mezi dolary +(\TeX{}ová rodina 0 a 1), odkazy na nově použité \ps{}ové fonty. Tento +příkaz je ale potřeba použít s~velkou opatrností, protože bude fungovat +zřejmě jen jednoduchá matematika. Například řecké symboly, které +použité rodiny fontů neobsahují, nenávratně ztratíte. Navíc matematické +symboly a natahovací závorky (\TeX{}ová rodina 2 a 3) zůstávají i +nadále v~Computer Modern, takže se míchání typů fontů zcela nevyhnete.} + +\skrt{Pokud chcete používat složitější matematickou sazbu kombinovanou +s~Post-}\break\skrt{Scriptovými fonty, pak máte dvě možnosti:} + +\skrt{1. Nastavit {\tt\char`\\mathcode} všech matematických + symbolů tak, aby byly + použity například znaky z~PostScriptového fontu Symbol. Matematické + znaky z~tohoto fontu jsou navrženy jako doplněk k~fontu Times Roman, + ale hodí se i k~jiným PostScriptovým fontům. Bohužel, natahovací + závorky a velké operátory (jedna ze specialit \TeX{}u) v~tomto fontu + nejsou, takže tyto objekty je nutné ponechat v~Computer Modern. + Abyste nemuseli {\tt\char`\\mathcode} pracně nastavovat, doporučuji použít + makro OFS~\cit{OFS}.} + +\skrt{2. Zakoupit nějaký komerční matematický font včetně natahovacích + závorek. Vhodný je například MathTimes firmy Y\&Y. + Pro šťastné majitele této sady fontů je v~\csplain{}u + distribuován soubor {\tt cmt.tex}, takže pokud na začátku dokumentu + uvedete} + +{\setbrackets +\begtt +!skrt[\input ctimes] +!skrt[\input cmt] +\endtt +% +\relax}\skrt{pak budete mít i matematickou sazbu v~\uv{Times-Roman stylu} se vším + všudy včetně řeckých symbolů a natahovacích závorek. Jen některé + drobnosti (například skákavé číslice v~plainu dosažené pomocí + "\fam=1") musíte udělat jinak. Přečtěte si manuál k~zakoupené sadě + fontů. +} + +\skrt{Matematické fonty v~\uv{Times-Roman stylu} se dají kombinovat i + s~mnoha textovými \ps{}ovými fonty dynamické antikvy s~dostačujícím + estetickým výsledkem. Podstatně horší je kombinovat dynamickou antikvu + textového \ps{}ového fontu se statickou antikvou Computer Modern. To + je důvod, proč se nákup sady fontů MathTime vyplatí.} +{\hbadness=4000\par} + +\new{Pokud chcete používat rozsáhlé množství fontů sofistikovaným +způsobem v matematické i textové sazbě, můžete +použít balíček OFS~\cit{OFS}.} + + +\newstart + +\subsub UTF-8 kódovaný \csplain{} | UTF-8 kodovany csplain +%-------------------------------- + +Od roku 2012 je doporučeno implicitně generovat \csplain{} se vstupním +kódováním UTF-8 pomocí enc\TeX{}u. Každý znak mimo ASCII je v UTF-8 kódován +dvěma nebo více byty. Tato sekce pojednává o vlastnostech takto generovaného +formátu. Poznáte jej podle toho, že do logu a na terminál napíše: + +\begtt +The utf8->iso8859-2 re-encoding of Czech+Slovak alphabet + activated by encTeX +\endtt + +Vygenerovaný formát zaručí správné zpracování ASCII znaků. Dále je při +výchozím nastavení zaručeno správné zpracování jen znaků české a +slovenské abecedy, tedy znaků: + +\medskip +{\spaceskip=2pt +Á á Ä ä Č č Ď ď É é Ě ě Í í Ĺ ĺ Ľ ľ Ň ň Ó ó Ö ö Ô ô +Ŕ ŕ Ř ř Š š Ť ť Ú ú Ů ů Ü ü Ý ý Ž ž +}\medskip + +Tyto znaky jsou z UTF-8 kódu mapovány na interní jeden byte podle kódování +\CS{}fontů. Dále jsou implicitně mapovány UTF-8 kódy všech znaků, které +mají svou řídicí sekvenci definovanou v plainu nebo v \csplain{}u. Jsou +to tyto znaky: + +{\catcode`/=13 \def/#1/{{\rm \csname#1\endcsname}} +\begtt +plain: \ss /ss/ \l /l/ \L /L/ \ae /ae/ \oe /oe/ \AE /AE/ \OE /OE/ + \o /o/ \O /O/ \i /i/ \j /j/ \aa /aa/ \AA /AA/ + \S /S/ \P /P/ \copyright /copyright/ \dots /dots/ \dag /dag/ \ddag /ddag/ +csplain: \clqq /clqq/ \crqq /crqq/ \flqq /flqq/ \frqq /frqq/ \promile /promile/ +\endtt +\par} + +Pokud je na vstupu jakýkoli jiný UTF-8 kód, implicitně je nemá \csplain{} +mapován, takže se vypíše na terminál a do logu následující varování: + +\begtt +WARNING: unknown UTF-8 code: `X = ^^xx^^xx' (line: ??) +\endtt +% +a do tiskového výstupu se vloží na dané místo černý čtvereček. Uživatel si musí +takový znak dodefinovat. Například po hlášení: + +{\catcode`!=0 +\begtt +WARNING: unknown UTF-8 code: `!~N = ^^c3^^91' (line: 42) +\endtt +\relax}% +si uživatel do záhlaví dokumentu například doplní definici: + +\begtt +\mubyte\Ntilde ^^c3^^91\endmubyte % UTF-8 kód mapován na \Ntilde +\def\Ntilde{{\~N}} % sekvence \Ntilde definována +\endtt +% +Po této úpravě se +při zpracování dokumentu už varování neobjeví a vstupní kód se zpracuje jako +řídicí sekvence "\Ntilde", která expanduje na "\~N", takže v tiskovém +výstupu se objeví~\~N. + +Pokud se řídicí sekvence mapovaná pomocí "\mubyte" objeví v argumentu +"\write" souboru, nebude expandovat, ale promění se při zápisu do souboru +zpětně do odpovídajícího UTF-8 kódu. + +Během "\write" a při zápisu do logu se také zpět na UTF-8 kódy proměňují +interní byte, které byly mapovány. Implicitně tedy jsou to znaky české a +slovenské abecedy vyjmenované výše. Ostatní nemapované interní byte s kódem +větším jak 127 se přepisují podle dvouzobákové konvence např.~takto:~"^^ad". +Jestliže do deklarace dokumentu napíšete +"\xprncodes=1", budou se ostatní nemapované byty vypisovat přímo. + +Příkazy "\mubytein", "\mubyte" a "\endmubyte" jsou součástí enc\TeX{}u a +jsou popsány v jeho dokumentaci. Stručně řečeno +"\mubytein=0" vypíná přechodně použití kódovací tabulky a +"\mubyte token string\endmubyte" zařadí do kódovací tabulky +další údaj: "string" bude na vstupu převeden na interní "token" v~\TeX{}u +a při činnosti "\write" bude "token" zpětně převeden na "string". + +Při použití jiných fontů pomocí "\input ctimes" (atd., viz sekci 4.5) je zavolán +soubor "chars-8z.tex", který mapuje další UTF-8 kódy na řídicí sekvence, +jež jsou pomocí "\chardef" propojeny se znakem fontu. Jsou to tyto znaky: + +{\font\f=ptmr8z +\catcode`/=13 \def/#1/{{\f\char#1}} +\begtt +\euro /134/ \trademark /136/ \registered /138/ \ellipsis /128/ +\textbullet /131/ \sterling /132/ \currency /164/ +\endtt +\par} + +Soubor "chars-8z.tex" navíc předefinovává makra plainu "\P", "\S", +"\dag", "\ddag", "\copyright", "\lslash", "\Lslash" pomocí "\chardef", aby +tyto řídicí sekvence vedly přímo na znak ve fontu. + +V balíčku {\tt enctex.tar.gz} (a podruhé i v {\tt csplain.tar.gz}) jsou +připraveny soubory, které mapují UTF-8 kódy celých bloků UNICODE tabulky na +řídicí sekvence a definují jejich výchozí chování. Můžete použít: + +\begtt +\input utf8lat1 % Latin-1 Supplement U+0080--U+00FF +\input utf8lata % Latin Extended-A U+0100--U+017F +\endtt +% +a možná v budoucnu i další. Po zavedení těchto souborů se nově deklarované +UTF-8 kódy mapují na řídicí sekvenci, např. \"e se mapuje na "\edieresis" a +tato sekvence expanduje na příslušné sestavení akcentu, v tomto příkladě na +{\tt\char`\\\char`\"e}. Na interní byte zůstávají mapovány jen znaky české a +slovenské abecedy. Pokud ale {\it před zavedením těchto souborů\/} použijete +"\input t1code" (přechod na interní kódování T1, tj. podle Corku), pak se na +interní byte mapují také všechny znaky definované v T1 kódování. Pro nově +mapované řídicí sekvence jsou použity definice ze souborů {\tt utf8lat*.tex} +jen tehdy, pokud tyto řídicí sekvence nejsou definovány dříve. + +Pokud předložíte \csplain{}u (generovaném pro UTF-8 kodování vstupu) +dokument kódovaný jinak, než v UTF-8, skoro jistě se dočkáte chybového +hlášení: + +{\font\tt=cstt9 +\begtt +! UTF-8 INPUT IS CORRUPTED ! May be you are using another input encoding. +\endtt +\par} + +Je ovšem možné snadno přejít do módu, při němž UTF-8 kódovaný \csplain{} +pracuje stejně jako \csplain{} s kódováním ISO-8859-2. Stačí na začátek +dokumentu napsat: +\begtt +\mubytein=0 \mubyteout=0 \mubytelog=0 \xprncodes=1 +\endtt +% +Tuto práci vykoná také soubor "utf8off.tex", tj. stačí napsat "\input utf8off". +Tento soubor navíc definuje makro "\clearmubyte", které vymaže +data deklarovaná pomocí "\mubyte...\endmubyte". + +Je dokonce možné mít na vstupu při sazbě jediného dokumentu různé soubory +různě kódované. Není nutné při přechodu z jednoho kódování přepínat na +druhé. Stačí na začátek dokumentu napsat: +\begtt +\input mixcodes +\endtt +a od této chvíle je možné na vstupu střídat texty kódované dle UTF-8, +ISO-8859-2 nebo CP1250 dle libosti. Všechny výstupy pomocí "\write" jsou +kódovány podle UTF-8 a jsou tedy opět připraveny k načtení. + +V předchozím odstavci není zcela přesná formulace \uv{střídat kódování dle libosti}. +Platí to jen pro český text. Slovákům nefunguje \frqq\v l\flqq{} v~CP1250. Pokud jim to +vadí, napíšou "\shyph" před voláním "\input mixcodes". Pak ale zase +nefunguje \frqq ž\flqq{} v~ISO-8859-2. Tyto dva znaky jsou v uvedených dvou kódováních +poněkud v~konfliktu. UTF-8 vstup ale funguje bez problémů. + +\newstop + + +\subsub Použití fontů kódovaných podle Corku (T1 kódování) nebo v Unicode | +%-------------------------------------------------------------------- + Pouziti fontu kodovanych podle Corku nebo v Unicode + +Od verze \csplain{}u "" načítá tento formát při +inicializaci tabulky vzorů dělení nejen v~ISO-8859-2, ale též +v~kódování podle Corku (tzv.~T1 kódování). Tyto tabulky \uv{čekají} na +případ, kdy uživatel bude chtít použít ve svém dokumentu fonty, +jejichž metriky jsou kódované v~T1. Může se totiž stát, že uživatel +nebude chtít připravovat metriky a virtuální fonty pro nově zakoupené +\skrt{\ps{}ové} fonty ručně (pomocí programů "a2ac" a "afm2tfm" nebo pomocí +"fontinst"), ale bude chtít využít již hotové metriky nabízené +v~\TeX{}ových archivech. Tyto hotové metriky jsou ale většinou v~T1 +kódování. + +\newstart + +Od verze \csplain{}u "" načítá tento formát při své inicializaci +tabulky vzorů dělení také v UNICODE, pokud detekuje, že je použit \TeX{}ový +program, který interně dovede pracovat v UNICODE. Takovým \TeX{}ovým +programem může být Lua\TeX{}, Xe\TeX{} nebo Omega. + +\newstop + +Upozorňuji na určitá omezení použití \csplain{}u s~T1 kódovanými fonty: + +\begitems +* Všechny fonty v~celém dokumentu musejí být kódovány jednotně + v~ISO-8859-2 nebo v~T1 \new{nebo v UNICODE}. + V~dokumentu nelze fonty \skrt{obou}\new{těchto} kódování jednoduše míchat. +* \csplain{} {\it implicitně} nastavuje vnitřní kódování do + ISO-8859-2. Změníte-li tuto vlastnost, pak použitý povel v~systému + se už nesmí nazývat {\tt csplain}. +* Změnit vnitřní kódování \TeX{}u příkazem "%&" na prvním řádku + dokumentu je možné ve web2c distribucích \TeX{}u a odvozených. + V~jiných instalacích nemusí být tato vlastnost možná. Proto je + třeba počítat s~tím, že dokument opírající se o~tento příkaz + nemusí být zcela přenositelný na jiné implementace \TeX{}u. +\enditems + + + +Přepnutí na vnitřní kódování podle Corku uděláte příkazem +"\input t1code". \newstart Přepnutí na kódování UNICODE provedete pomocí +"\input ucode". Toto by měl být první příkaz v dokumentu, pak teprve +následuje "\chyph" nebo "\input opmac" nebo načítání fontových souborů. +\newstop + +\skrt{Kromě toho,} \new{Nemáte-li UTF-kódovaný csplain,} +\skrt{se} musíte \new{se} postarat o~to, aby se vstupní +kódování správně konvertovalo na vnitřní kódování \TeX{}u. Například +ve web2c distribuci použijete volbu "-translate-file". +Příklad použití T1 kódovaného fontu: + +\begtt +%&csplain -translate-file=il2-t1 +\input t1code %% Některé definice závislé na kódování +\chyph %% Příkaz nyní zapne tabulku 15 místo tabulky 5 +\font\f=ptmr8t %% Zavedení T1 kódovaného fontu Times-Roman +\f +Tady je český text zpracovaný uvnitř \TeX{}u v kódování T1 +včetně použití správné tabulky pro dělení slov. +\end +\endtt + +Takto připravený soubor \TeX{}ujte na web2c instalaci nikoli povelem +{\tt csplain}, ale raději povelem {\tt tex}, tedy: + +\begtt +tex dokument +\endtt + +Program {\tt tex} z~web2c implementace se podívá do prvního řádku dokumentu +a pokud tam najde dvojici "%&", zavede formát a TCX tabulku (která +pozměňuje xord/xchr vektor) podle toho, co je za touto dvojicí napsáno. +Pokud byste použili skript {\tt csplain} obsahující přepínač +"-translate-file=il2-cs", nebude to fungovat, +protože přepínač na příkazovém řádku má vyšší prioritu než v~dokumentu. +V~novějších implemetacích příkazu {\tt csplain} je použit skript, +který obsahuje přepínač +"-default-translate-file=il2-cs". Ten má prioritu nižší, takže +pak lze při zpracování dokumentu s~konstrukcí "%&" použít i příkaz +{\tt csplain}. + +Do distribuce \csplain{}u jsou zařazeny soubory {\tt dcfonts.tex}, +{\tt ecfonts.tex} \skrt{a pro inspiraci též {\tt ttimes.tex}}. Pokud na +začátku dokumentu například napíšete: + +\begtt +%&csplain -translate-file=il2-t1 +\input ecfonts +\chyph +\endtt +\noindent +převádíte celou sazbu do EC fontů kódovaných podle Corku. V~zaváděném +souboru "ecfonts.tex" je proveden "\input t1code", takže se o~to +přímo v~dokumentu už není potřeba starat. + +\skrt{Při zavádění \ps{}ových fontů (například použitím {\tt ttimes.tex}) +nastávají stejné problémy s~matematickou sazbou, jako při použití +\ps{}ových fontů kódovaných v~ISO-8859-2. Tyto problémy jsou popsány +v~předchozí sekci.} + +\newstart +Pokud dáte "\input t1code" před "\input ctimes", (nebo "\input cavantga", +atd.), budou požadované fonty zavedeny v T1 kódování. Takže k sazbě +Bookmanem v T1 kódování stačí v UTF-8 kódovaném \csplain{}u napsat: + +\begtt +\input t1code \input cbookan +\endtt + +Bohužel T1 kódované fonty jsou generovány programem fontinst, který má ve +svých konfiguračních souborech chybu pro písmena ť a ď. Tato písmena jediná nejsou +v těchto fontech realizovaná jako přímé znaky a jsou poskládána z komponent +naprosto odstrašujícím způsobem. Kdo opraví tuto chybu ve fontinstu, nechť o +tom, prosím, reportuje na příslušných místech, aby mohli správci distribucí +přegenerovat {\tt 8t}~metriky. + +Pokud dáte v 16bitovém \TeX{}u (tj. Xe\TeX, Lua\TeX{} nebo v něčem podobném) +"\input ucode" před "\chyph" a "\input lmfonts", bude čeština uvnitř \TeX{}u +zpracována v Unicode a tištěna Latin Modern Unicode fonty. +Jiné soubory pro čtení fontů zatím pro 16bitový \TeX{} upraveny nejsou. + + +\subsub Vzory dělení slov v různých jazycích a kódováních | +%------------------------------------------------------ + Vzory deleni slov v ruznych jazycich a kodovanich + +Implicitně načítá \csplain{} při generování formátu následující +vzory dělení: + +\begitems +* "\USenglish=0" ... (implicitní vzor z plain\TeX{}u) v ASCII kódování +* "\czILtwo=5" ... čeština v ISO-8859-2 +* "\skILtwo=6" ... slovenština v ISO-8859-2 +* "\czCork=15" ... čeština v T1 kódování +* "\skCork=16" ... slovenština v T1 kódování +* "\czUnicode=115" ... čeština v Unicode (jen, pokud je detekován + Xe\TeX, Lua\TeX, nebo jiný 16bitový \TeX) +* "\skUnicode=116" ... slovenština v Unicode (jen, pokud je detekován + Xe\TeX, Lua\TeX, nebo jiný 16bitový \TeX) +\enditems + +Jednotlivé vzory dělení se v dokumentu zapínají pomocí "\uslang", "\czlang" +a "\sklang". Příkaz "\uslang" zapne také "\nonfrenchspacing" a ostatní +zapínají "\frenchspacing". Jsou zachovány staré názvy těchto přepínačů: +"\ehyph=\uslang", "\chyph=\czlang" a "\shyph=\sklang". Přechod k novým +názvům s aspoň dvěma písmenky pro jazyk je důsledkem nové +možnosti v \csplain{}u použít 54 různých jazyků. + +V roce 2012 byl zcela přepracován soubor "hyphen.lan", který je použit +\csplain{}em pro čtení vzorů dělení slov. Na řádcích 48 až 160 +tohoto souboru jsou za dvojtečkami skryty jazyky a kódování zhruba ve tvaru: + +\begtt +\let\czCork=y % Czech +\let\skCork=y % Slovak +:\let\deCork=y % German +:\let\frCork=y % French +:\let\plCork=y % Polish +:\let\cyCork=y % Welsh +:\let\daCork=y % Danish +... +:\let\saUnicode=y % Sanskrit +:\let\ruUnicode=y % Russian +:\let\ukUnicode=y % Ukrainian +:\let\hyUnicode=y % Armenian +:\let\asUnicode=y % Assamese +\endtt + +Stačí si vybrat jazyky, odstranit příslušnou dvojtečku a znovu vygenerovat +formát \csplain{}. Nebo můžete přidat vzor bez zásahu do souboru +"hyphen.lan" vhodně zvolenou zprávou na příkazovém řádku při generování +formátu. Například:\par\nobreak + +{\font\tt=cstt9 +\begtt +pdftex -ini -enc "\let\plCork=y \let\enc=u \input csplain.ini" +nebo +pdftex -ini -enc "\let\allpatterns=y \let\enc=u \input csplain.ini" + +\endtt + +} +Jakmile je načten vzor dělení pro nový jazyk, je automaticky připraven k +tomu odpovídající přepínač, tedy například "\delang" po načtení "\deCork". +Seznam všech načtených vzorů dělení je v makru "\pattlist". + +Na začátku zpracování dokumentu jsou inicializovány vzory dělení "\..ILtwo". +Vzory dělení typu "\..Cork" budou fungovat až po "\input t1code" a vzory +dělení "\..Unicode" budou fungovat až po "\input ucode". Pozor: \csplain{} +neřeší správné nastavení "\lccode" a "\uccode" v~16bitovém \TeX{}u v rozsahu +větším, než jsou znaky z české a slovenské abecedy. Takže při použití +exotických jazyků si uživatel musí nastavit k tomu správná "\lccode". + +\csplain{} definuje pro každý jazyk s načtenými vzory dělení makro "\lan:<číslo>" jako +"", například "\lan:5" stejně jako "\lan:15" expandují na +"cz". Programátor maker toho může využít. Programátor maker dále může využít +toho, že makra "\czlang", "\delang" atd. volají makro +"\initlanguage{}". Toto makro implicitně neudělá nic, ale +programátor maker si je může předefinovat dle svého. Protože je +"\initlanguage" zavolán těsně za "\language=<číslo>" v~kontextu: + +\begtt +\..lang -> \language=<číslo>\relax + \initlanguage{}\frenchspacing + \lefthyphenmin=\righthyphenmin=% + \message{} +\endtt +% +je možné, aby programátor maker odebral další inteligenci maker "\..lang" +a převzal je do vlastnívch rukou. Třeba definuje: + +\begtt +\def\initlanguage #1#2#3\message#4{#3\csname lg:#1\endcsname} +\endtt + +Toto řešení přebírá z makra "\..lang" jen nastavení registrů "\lefthyphenmin" a +"\righthyphenmin", ale ruší implicitní "\message" i nastavení +"\frenchspacing". Místo toho se předpokládá, že budou definována makra +"\lg:", ve kterých budou tyto věci (a možná mnoho dalších jako třeba +nastavení implicitního fontu) řešeny pro každý jazyk individuálně. + +Přepínání mezi kódováními funguje pomocí "\corklangs" ... "\czlang" +(nyní je aktivní vzor dělení "\czCork") a dále třeba ... "\iltwolangs" +... "\czlang" (nyní je aktivní vzor dělení "\czILtwo"). +Makra "\iltwolangs", "\corklangs", a "\unicodelangs" jsou spuštěna při +"\input il2code", "\input t1code" a "\input ucode", takže uživatel to nemusí +řešit. + +Je potřeba si uvědomit, že 8bitovým \TeX{}em sice můžete vynutit načtení +Unicodových vzorů dělení slov, ale bude vám to málo platné, tedy k ničemu. +Dále je potřeba vědět, že v 16bitovém \TeX{}u můžete načíst vzory dělení +"\..ILtwo" a "\..Cork" korektně jen pro češtinu a slovenštinu, protože další +vzory dělení jsou čteny pomocí triku s aktivními znaky, který dekóduje +8bitový vstup. Nicméně typicky v~16bitovém \TeX{}u není inicializován +8bitový vstup, takže se to poláme. + +\newstop + +\subsub Nové řídicí sekvence \csplain{}u oproti Knuthovu plainu | +%----------------------------------------------------------- + Nove ridici sekvence CSplainu + +\bgroup \leftskip=\parindent \parindent=0pt + +\hbox{\skrt{\tt\char`\\austrian}} \skrt{Registr rezervovaný pro číslo tabulky vzorů dělení slov pro + rakouskou němčinu (hodnota 2). + Vzory dělení pro tento jazyk implicitně nejsou zavedeny.} + +\newstart +"\bi" Přejde na tučnou krurzívu. Příkaz doplňuje sadu příkazů "\rm", "\it" a +"\bf" definovanou v plain\TeX{}u. +\newstop + +"\cmaccents"\nobreak Nastaví řídicí sekvence "\^", "\`", "\'", "\v" a + "\"{\tt\char`\"} tak, aby fungovaly stejně, jako + v~originálním plainu (použití primitivu "\accent"). + Sekvence "\r" je nedefinována. Toto je defaultní + nastavení. Pokud slovo obsahuje akcentovaný znak zapsaný + některou z~těchto sekvencí, pak pro ně nefunguje + automatické dělení. + +"\cmaccentsmesage" Způsobí výpis informace do logu a na terminál + o~použití příkazu "\cmaccents". Pokud vás tato zpráva + obtěžuje, nastavte "\let\cmaccentsmesage=\relax" před + vyvoláním příkazu "\cmaccents". + +\newstart +"\corklangs" Inicializace vzorů dělení podle T1 kódování (Cork). \newstop + +"\csaccents"\nobreak Nastaví řídicí sekvence "\^", "\`", "\'", "\v", + "\"{\tt\char`\"} a "\r" tak, aby expandovaly na + odpovídající 8bitové reprezentace znaků podle ISO-8859-2 + (po "\input t1code" pak expandují na kódování podle + Corku). Sekvence "\r u" expanduje na ů. Pokud slovo + obsahuje akcentovaný znak zapsaný některou z~těchto + sekvencí, pak pro ně funguje i automatické dělení slov. + +"\csaccentsmesage" Způsobí výpis informace do logu a na terminál + o~použití příkazu "\csaccents". Pokud vás tato zpráva + obtěžuje, nastavte "\let\csaccentsmesage=\relax" před + vyvoláním příkazu "\csaccents". + +"\clqq" Vytiskne levé české uvozovky (\clqq). + +"\crqq" Vytiskne pravé české uvozovky (\crqq). + +\hbox{"\chyph" \new{={\tt\char`\\czlang}}} + Aktivuje tabulku dělení slov podle registru "\czech" a + nastaví stejnoměrné mezerování za tečkami + (tzv.~"\frenchspacing"). \new{Dále nastavuje + {\tt\char`\\lefthyphenmin=2} a {\tt\char`\\righthyphenmin=3}. Druhý registr + lze změnit na dvojku, vzory dělení jsou na to připraveny.} + +"\czech" \nobreak Registr rezervovaný pro číslo tabulky vzorů dělení slov pro + češtinu (hodnota "\iltwoczech" nebo "\toneczech" podle toho, + zda nebylo nebo bylo použito "\input t1code"). + +\hbox{"\ehyph" \new{={\tt\char`\\uslang}}}\nobreak + Aktivuje tabulku dělení slov podle registru "\USenglish" a + nastaví větší mezerování za tečkami + (tzv.~"\nonfrenchspacing"). Toto nastavení je výchozí. + +\hbox{\skrt{\tt\char`\\english}} +\nobreak \skrt{Registr rezervovaný pro číslo tabulky vzorů dělení slov pro + britskou angličtinu (hodnota 4). + Vzory dělení pro tento jazyk implicitně nejsou zavedeny.} + +"\extrahyphenchar" Alternativní znak spojovníku (-). Kód 156. + Po "\input t1code" není toto makro definováno. + +"\extrahyphens"\nobreak Nastaví rozdělovací znak pro běžné textové fonty na + "\extrahyphenchar". Defaultně je v~plainu jako rozdělovací znak + nastaven znak minus (ASCI~45), což může činit v~českém + textu komplikace. \TeX{} totiž v~případě rozdělovacího znaku + přímo ve vstupním textu může dělit tak, že znak neopakuje + na dalším řádku. Po "\extrahyphens" bude mít dělicí + znak kód 156, což je kód, který se na vstupu nevyskytuje. + Máme tím zaručeno, že ve slovech \uv{je-li} nebude \TeX{} + dělit vůbec. Jinou aplikací je použití speciální metriky + nebo dokonce speciálního tvaru pro "\extrahyphenchar". + +"\flqq" Levé francouzské uvozovky (\flqq), které se v~češtině a + němčině používají vpravo. + +"\frqq" Pravé francouzské uvozovky (\frqq), které se v~češtině a + němčině používají vlevo, tedy \frqq takto\flqq. + +\hbox{\skrt{\tt\char`\\french}} + \skrt{Registr rezervovaný pro číslo tabulky vzorů dělení slov pro + francouzštinu (hodnota 3). + Vzory dělení pro tento jazyk implicitně nejsou zavedeny.} + +\hbox{\skrt{\tt\char`\\german}} + \skrt{Registr rezervovaný pro číslo tabulky vzorů dělení slov pro + němčinu (hodnota 1). + Vzory dělení pro tento jazyk implicitně nejsou zavedeny.} + +\hbox{"\iltwoczech"\new{={\tt\char`\\czILtwo}}} + Konstanta 5 rezervovaná pro číslo tabulky vzorů dělení slov + pro češtinu při kódování fontů podle ISO-8859-2. + +\newstart +"\iltwolangs" Inicializace vzorů dělení podle ISO-8859-2 (implicitní).\newstop + +\hbox{"\iltwoslovak"\new{={\tt\char`\\skILtwo}}} + Konstanta 6 rezervovaná pro číslo tabulky vzorů dělení slov + pro slovenštinu při kódování fontů podle ISO-8859-2. + +"\ogonek" Vytvoří polský akcent pod písmenem: \ogonek a. + +\newstart +"\pattlist" Seznam všech načtených vzorů dělení. \newstop + +"\promile" Vytiskne znak \promile. + +\newstart +"\regfont " Provede registraci fontového přepínače. Tedy přidá +do existujícího makra "\resizefontall" další dva tokeny: +"\resizefont ". + +"\resizeall" Provede "\resizefont" podle aktuláně nastaveného "\sizespec" na +sekvence "\tenrm", "\tenit", "\tenbf", "\tenbi" a "\tentt" a případně další +registované fontové přepínače. Příklad:\hfil\break +"\def\sizespec{at12pt}\resizeall \tenrm"\hfil\break +"Nastavená \it velikost 12pt \bf funguje \bi všude." + +"\resizefont "\nobreak Argumentem musí být fontový "", tj. sekvence + dříve deklarovaná pomocí "\font". Tento "" pozmění +po činnosti příkazu "\resizefont" svůj význam: odkazuje na stejný font ale ve velikosti nastavené podle obsahu +makra "\sizespec". Naříklad: "\def\sizespec{at14pt}\resizefont\tenbf". +Od této chvíle je "\tenbf" tučný font (stejný, jako byl původní "\tenbf") +ve velikosti 14pt. Změna významu je lokální. + +"\resizefontskipat"\nobreak Pomocné makro pro "\resizefont". +\newstop + +\hbox{"\shyph"\new{={\tt\char`\\sklang}}} + Aktivuje tabulku dělení slov podle registru "\slovak" a + nastaví stejnoměrné mezerování za tečkami + (tzv.~"\frenchspacing"). + +\newstart +"\sizespec" Makro spolupracující s příkazem "\resizefont". Makro +"\sizespec" je buď prázdné, nebo +obsahuje \uv{{\tt at}}, nebo \uv{{\tt scaled}}. Nezapomeňte +na klíčová slova {\tt at} resp. {\tt scaled}. + +\newstop + +"\slovak" Registr rezervovaný pro číslo tabulky vzorů dělení slov pro + slovenštinu (hodnota "\iltwoslovak" nebo "\toneslovak" podle toho, + zda nebylo nebo bylo použito "\input t1code"). + +\newstart +"\tenbi" Font-selector definovaný jako "\font\tenbi=csbxti10". Je totiž +užitečné mít preloadovanou fontovou čtveřici "\tenrm", "\tenit", "\tenbf" a +"\tenbi". +\newstop + +\hbox{"\toneczech"\new{={\tt\char`\\czCork}}} + Konstanta 15 rezervovaná pro číslo tabulky vzorů dělení slov + pro češtinu při kódování fontů podle Corku. + +\hbox{"\toneslovak"\new{={\tt\char`\\skCork}}} + Konstanta 16 rezervovaná pro číslo tabulky vzorů dělení slov + pro slovenštinu při kódování fontů podle Corku. + +\newstart +"\unicodelangs" Inicializace vzorů dělení v Unicode.\newstop + +"\USenglish" Registr rezervovaný pro číslo tabulky vzorů dělení slov pro + americkou angličtinu (hodnota 0). + +"\uv" Makro pro uvozovky. Používá se "\uv{takto}". Makro je + definováno tak, aby se uvnitř jeho argumentu dala použít + verbatim konstrukce. To ale způsobí, že je potlačen + kerning před pravou uvozovkou. Pokud nepoužíváte verbatim + konstrukce v~argumentu uvozovek, doporučuji makro + předefinovat jednoduše na: + +\begtt +\long\def\uv#1{\clqq#1\crqq}. +\endtt + +{\bf Poznámka:} \csplain{} nedefinuje makro pro ,jednoduché` uvozovky, protože + \CSfont{}y neobsahují pro tyto uvozovky speciální znaky. Můžete + ale místo nich použít čárku a apostrof třeba takto: + +\begtt +\long\def\singleuv#1{,#1`} +\endtt +\par\egroup + + + +\newstart +Při generování UTF-8 \csplain{}u se použije enc\TeX, který přidává primitivy +"\mubyte", "\endmubyte", "\mubytein", "\mubyteout", "\mubytelog", +"\specialout", "\noconvert", "\xordcode", "\xchrcode" a "\xprncode". +Během generování je načten soubor {\tt utf8unkn.tex}, který mapuje +neznámé kódy na "\warntwobytes" a "\warnthreebytes" a tyto sekvence definuje +jako makra. Dále definuje makra "\badutfinput", "\missingutfchar" a +"\xprncodes".{\hbadness=4000\par} +\newstop + +\bigskip +\skrt{{\bf Přidání vzorů dělení slov dalších jazyků}} +\par\nobreak\bigskip + + +\skrt{\csplain{} implicitně načítá jen anglické vzory dělení (US) a české a +slovenské. Od verze {\tt } navíc načítá české a slovenské vzory +dělení nejen v~kódování ISO-8859-2, ale i v~kódování podle Corku. +Anglické vzory dělení jsou implicitně aktivní a přepínáme na ně pomocí +{\tt\char`\\ehyph}. České vzory dělení se zapínají pomocí +{\tt\char`\\chyph} a slovenské +pomocí {\tt\char`\\shyph}.} + +\skrt{Pokud potřebujete přidat další jazyk, pak před generováním formátu +\csplain{} editujte soubor {\tt hyphen.lan}. Tam najdete příklady doplnění +vzorů dělení němčiny nebo francouzštiny (stačí odkomentovat +odpovídající řádky). Podle těchto příkladů můžete analogicky zařadit +potřebný další jazyk. Nezapomeňte v~souboru {\tt hyphen.lan} také +definovat přepínač na nové vzory dělení. +Pro němčinu definujeme například přepínač {\tt ghyph} takto:} +{\hbadness=3000\par} + + + +{\catcode`!=\active \def!#1!{\skrt{#1}} +\begtt +!\def\ghyph{\language=\german! + !\lccode`\'=`\'! + !\frenchspacing! + !\lefthyphenmin=2! + !\righthyphenmin=2 }! +\endtt + +} +\skrt{Nakonec přegenerujte formát způsobem popsaným v~sekci 4.2.} + +\skrt{Vzory dělení západoevropských jazyků jsou většinou kódovány podle +ISO-8859-1, přičemž kódování Cork je nadmnožinou tohoto kódování. Je +tedy možné přepnout pomocí {\tt\char`\\input t1code} na začátku dokumentu do +Corku, použít fonty kódované podle Corku a pak přepínat mezi češtinou +a třeba němčinou střídavě pomocí přepínačů +{\tt\char`\\chyph} a {\tt\char`\\ghyph}.}{\hbadness=6500 \par} + +\skrt{Vzory dělení exotických jazyků jsou kódovány ve svém specifickém +kódování, ke kterému musíme sehnat font stejně kódovaný. Po přepnutí +do nového jazyka musíme přepnout i na tento font. Dále je nutno řešit +otázku možné kolize vstupního kódování češtiny/slovenštiny se vstupním +kódováním pro nový jazyk. Je proto bezpečnější si pro speciální znaky +jazyka udělat makra, která expandují na znak podle kódování fontu, a +psát vstupní text pomocí těchto maker.} + + +\subsub \csplain{} a \AMS\TeX | CSplain a AMSTeX +%------------------------- + +\AMS\TeX{} můžete používat v~plainu i \csplain{}u bez nutnosti generovat +kvůli tomu formátový soubor. Máte-li dokument v~\AMS\TeX{}u, napište +jednoduše na jeho začátek: + +\begtt +\input amstex +\endtt +% +a dále můžete dokument zpracovat příkazem \csplain{}. + + +\subsub pdf\TeX{} + \csplain{} = pdf\csplain{} | +%--------------------------------------- + pdfTeX + CSplain = pdfCSplain + +Pokud vygenerujete formát \csplain{} pdf\TeX{}em, je potřeba jej nazvat +jinak, aby byl odlišen od formátu \csplain{} pro originální +\TeX{}. Proto je v~\CSTeX{}u zvoleno jméno "pdfcsplain.fmt". +Dále je potřeba připravit příkaz "pdfcsplain", který spustí +pdf\TeX{} s~formátem "pdfcsplain.fmt" a zajistí případné překódování +na úrovni input procesoru pdf\TeX{}u stejně, jako do dělá příkaz +"csplain". Pokud uživatel nepoužil ve svých makrech +konstrukce měnící sazbu při použití pdf\TeX{}u, měl by dostat +příkazem "pdfcsplain" naprosto stejný výstup jako při použití +příkazu "csplain". Pouze s~tím rozdílem, že výstup nebude v~"dvi" +souboru, ale v~"pdf". + +Ve web2c \TeX{}u a odvozených distribucích lze generovat formát +příkazem + +\begtt +pdftex -ini -fmt pdfcsplain csplain.ini +\endtt +% +a příkaz "pdfcsplain" v~UNIXu implementovat jako skript s~obsahem + +\begtt +pdftex -fmt pdfcsplain -default-translate-file=il2-cs $@ +\endtt + +Toto je pouze příklad implementace. Na jiných operačních systémech a +jiných \TeX{}ových distribucích se situace může trochu lišit. + +Poznamenejme, že v~te\TeX{}u a odvozených distribucích většinou +stačí napsat "pdfcsplain dokument", a pokud jste "pdfcsplain" +ještě nepoužili, vygeneruje se automaticky. + + + +\subsub Historie a budoucnost \csplain{}u | Historie a budoucnost CSplainu +%------------------------------------- + +\csplain{} vznikl v~roce 1992 jako jednoduché a minimální rozšíření +Knuthova \hbox{plainu} používající \CSfont{}y a akceptující 8bitový vstup. +Jeho vytvoření bylo motivováno zařazením do em\TeX{}ové distribuce, +která se připravovala k~rozesílání členům \CS{}TUGu. + +\csplain{} se opíral a stále opírá o~starší makra {\tt hyphen.lan} a +{\tt plaina4.tex}, která už měl Olin Ulrych vytvořena dříve. +\csplain{} v~době svého vzniku načítal české vzory dělení, které +vytvořil Láďa Lhotka heuristicky bez použití slovníků a programu +"patgen". Já jsem pro \csplain{} vytvořil {\tt csplain.ini} a makro +{\tt csfonts.tex}, umožňující při generování formátu číst přímo Knuthovo +makro {\tt plain.tex}, a přitom natáhnout místo CMfontů \CSfont{}y. + +V~roce 1994 byly vzory dělení slov Ládi Lhotky vyměněny za nové české +vzory dělení od Pavla Ševečka, který na to použil slovník a "patgen". +V~rámci své firmy tyto vzory dělení prodává komerčním firmám pro +potřeby DTP programů, jako byly Ventura, PageMaker nebo Quark. Dnes +jsou tyto vzory dělení také například ve Wordu. Aby Pavel Ševeček +odlišil volně šířené vzory dělení pro \CSTUG{} od komerčně šířených, +volně šířené vzory dělení mírně modifikoval. Tvrdí se, že běžný +uživatel nepozná rozdíl v~kvalitě vzorů dělení komerčních a volně +šířených. Ševečkovy vzory dělení slov jsou výrazně kvalitnější než +původní Lhotkovy, a proto jsme u~těchto vzorů dělení zůstali. + +Opuštěním Lhotkových vzorů dělení došlo k~poslední změně +v~\csplain{}u, která může způsobit zpětnou nekompatibilitu: tj. dokumenty +vytvořené v~\csplain{}u před rokem 1994 mohly dopadnout jinak než dnes, +protože některá slova mohla být rozdělena jinak. Od této doby je +\csplain{} fixován a stabilní podobně, jako Knuthův plain. + +Protože jsem autorem názvu \csplain{}, souborů {\tt csplain.ini}, +"csfonts.tex" a množství dokumentace k~\csplain{}u a protože jej od +jeho vzniku udržuji, rozhodl jsem se přísně dbát na zpětnou +kompatibilitu. Změny do \csplain{}u dělám jen takové, které jsou +opravdu nezbytné. To se stává jednou za několik let (viz historické +poznámky v~{\tt csplain.ini}). Změny dělám tak, že pouze přidám další +nejnutnější makra, ale stávající makra a jejich význam nechávám +nezměněna. Uživatelům \csplain{}u ručím, že jejich dokumenty napsané +v~\csplain{}u a opírající se o~neměnné fonty (např. \CSfont{}y nebo +base 35 PostScriptové fonty, metriky z~\CSTeX{}u), budou i v~budoucnu +\csplain{}em formátovány naprosto stejně, jako dnes. + +Abych mohl takovou záruku uživatelům poskytnout, není \csplain{} +zveřejněn pod GNU GPL, ale jedná se o~licenci velmi podobnou Knuthově. +Přesné znění licence je uvedeno na konci souboru {\tt csplain.ini}. +Zhruba řečeno, jedná se o~\uv{patent na název}. \csplain{} můžete svobodně +distribuovat, používat a měnit, ale pokud jej změníte, nesmíte jej +dále distribuovat pod názvem \csplain{}. Změny v~\csplain{}u může dělat jen +tzv.~\uv{současný administrátor \CSTeX{}u}, což jsem zatím stále já. +Pokud bych v~budoucnu toto břímě někomu předal, pak určitě jen takovému +člověku, který má na budoucnost \csplain{}u stejný názor jako já. + +\csplain{} i nadále považuji za minimální rozšíření Knuthova plainu a +nikdy do něj nepřidám žádné složitější makro vylepšující uživatelský +komfort (jako například eplain). Zastávám názor, že uživatel plainu a +\csplain{}u chce mít všechna makra pod svou vlastní kontrolou a raději si +je udělá sám, než aby spoléhal na hotová, ale méně stabilní, řešení. +Uživatel plainu/\csplain{}u si vytváří vlastní stále znovu používaná +makra, která mu musí fungovat ve všech i budoucích verzích +\csplain{}u. Proto se snažím \csplain{} pokud možno neměnit. + +Lákavá je například změna definice uvozovek v~\csplain{}u jednoduše na + +\begtt +\long\def\uv#1{\clqq#1\crqq} +\endtt + +aby fungoval automatický kerning s~oběma stranami uvozovek. Tuto +změnu ale nikdy v~\csplain{}u neudělám, protože není zpětně kompatibilní +se stávajícím řešením. Raději budu psát do omrzení do dokumentace, že +taková jednoduchá definice je asi lepší, než ta z~\csplain{}u, a že si ji +každý může zařadit do svých maker. + +Změnu v~\csplain{}u z~"" považuji za asi největší, kterou +jsem byl ochoten udělat. K~zařazení alternativního kódování Cork +(které samozřejmě není a nikdy nebude v~\csplain{}u implicitní), mě +motivovala skutečnost, že se kolem mě pohybovalo mnoho uživatelů +plainu, kteří rádi používají fonty v~tomto alternativním +kódování. Svým krokem jsem jim umožnil používat \csplain{}, takže si +nemusejí vytvářet své vlastní formáty. + + + +\subtitle Formát \cslatex{} | FORMAT CSLATEX +%%%%%%%%%%%%%%%%%%%%%%%% + +\newstart Významní uživatelé \LaTeX{}u sice v elektronické konferenci v roce 2012 +přiznali, že už \cslatex{} dávno nepoužívají, nicméně se stále přimlouvají, +aby v \CS\TeX{}u zůstal. Nebude ale dále rozvíjen a všem uživatelům je +kladeno silné doporučení, aby přešli na \uv{normální} \LaTeX. Navrhoval jsem +\cslatex{} zrušit úplně (aby to lidi nepletlo), ale nebyl jsem vyslyšen. + +Od roku 2012 napíše \cslatex{} při každém spuštění na terminál a do +logu toto: + +\begtt +**** WARNING ******* CSLaTeX is obsolete, don't use it please. +**** You can use ``normal'' LaTeX+Babel or XeLaTeX+polyglossia. +\endtt + +Pokud použijete \LaTeX{}, pak záhlaví dokumentu může vypadat třeba +takto: + +\begtt +\documentclass[a4paper,12pt,twoside]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[czech]{babel} +\endtt + +Při použití Xe\LaTeX{}u s balíčkem {\tt polyglossia} může +záhlaví dokumentu být například takové: + +\begtt +\documentclass[a4paper,12pt,twoside]{article} +\usepackage{polyglossia} +\setdefaultlanguage{czech} +\usepackage{fontspec} +\usepackage{xunicode} +\endtt + +Následující text až do konce kapitoly bych mohl celý škrtnout, ale +nechám jej beze změny. Čtenář to možná ocení jako materiál ke studiu historie +\CS\TeX{}u. + +\newstop + + +\subsub Různé \LaTeX{}y | Ruzne LaTeXy +%---------------------- + +Do roku 1992 byl \LaTeX{} udržován Leslie Lamportem. Naposledy měl +jeho \LaTeX{} verzi 2.09. Typické pro tento \uv{starý} \LaTeX{} bylo +použití příkazu "\documentstyle" namísto "\documentclass" v~záhlaví +dokumentu. Tato větev \LaTeX{}u není dále udržována a podporována. +Dnes převzali iniciativu nad \LaTeX{}em Němci Frank Mittelbach a +Rainer Sch\"opf a nazvali jej \LaTeXe. Každý půlrok +vytvářejí novou verzi (většinou obsahující jen opravy předchozí verze) +a názvem dávají najevo, že se jedná o~předchůdce \LaTeX{}u~3, na němž +už deset let pracují. Dokument napsaný pro \LaTeXe{} poznáme vesměs +podle toho, že začíná příkazem "\documentclass" místo "\documentstyle". +\LaTeXe{} ovšem také akceptuje příkaz "\documentstyle", +přechází přitom do pokusu o~emulaci starého \LaTeX{}u~2.09, a navíc +uživatele upozorní na to, že použil zastaralé záhlaví dokumentu. + +V~\LaTeX{}u~\twoe{} je zabudovaná \uv{časovaná bomba} s~rozbuškou +na rok a půl. Ta se projeví při generování formátu, nikoli při běžném +provozu. Pokud generujete formát ze zdrojů \LaTeX{}u, které jsou +starší než rok a půl, generování končí chybou a na terminálu se objeví +varování, že máte instalován příliš starý \LaTeX{} a že je vhodné si +obstarat nový. Pokud na toto hlášení odpovíte klávesou Enter, formát +se přesto vygeneruje. + +V~tomto manuálu se budeme dále zabývat jen dnes asi nejpoužívanějším +\LaTeX{}em~\twoe. Pojmem \LaTeX{} tedy budeme rozumět +\LaTeXe. I~za těchto okolností budeme nuceni +rozlišovat mezi třemi \uv{druhy} \LaTeX{}ů: + +\begitems +* vanilla \LaTeX +* babelizovaný \LaTeX +* \cslatex{} +\enditems + +Vanilla \LaTeX{} (nedotčený \LaTeX) vzniká vygenerováním formátu +\LaTeX{} pouze za přítomnosti souborů z~adresáře {\tt latex/base}, tj. při +generování nejsou čteny žádné soubory ovlivňující generování +formátu. V~distribuci tedy zcela chybí tyto soubory: +{\tt fonttext.cfg}, {\tt fontmath.cfg}, +{\tt preload.cfg} a {\tt hyphen.cfg}. +Tento formát obsahuje pouze anglické dělení slov. Pro český nebo +slovenský jazyk není tedy příliš použitelný. Není často používaný. + +Babelizovaný \LaTeX{} vzniká generováním formátu \LaTeX{} za +přítomnosti souborů {\tt fonttext.cfg}, {\tt fontmath.cfg} a +{\tt preload.cfg} z~balíčku generic a {\tt hyphen.cfg} z~balíčku Babel. +Tento formát obsahuje vzory dělení těch jazyků, které jsou v~době +generování formátu uvedeny v~konfiguračním souboru Babelu s~názvem +{\tt language.dat}. Je běžně používaný. + +Formát \cslatex{} vzniká generováním formátu \LaTeX{} za přítomnosti souborů +"fonttext.cfg" a "hyphen.cfg" z~balíčku \cslatex{}. Ostatní +soubory ovlivňující generování formátu mohou chybět nebo být z~balíčku +generic. Obvykle je formát \cslatex{}u nazván {\tt cslatex.fmt} a nikoli +{\tt latex.fmt}, aby bylo možno jej odlišit od běžně používaného +babelizovaného \LaTeX{}u. Z~toho důvodu je v~balíčku \cslatex{}u +k~dispozici soubor {\tt cslatex.ini}, který provede +"\input latex.ltx". \cslatex{} obsahuje vzory dělení anglického, +českého a slovenského jazyka. Navíc příkaz "cslatex" musí zajistit +konverzi ze vstupního kódování (podle použitého systému) na +vnitřní kódování ISO~8859-2 na úrovni vstupního preprocesoru +\TeX{}u. Tento princip je tedy shodný s~\csplain{}em. + +Je patrno, že absolutní jistotu o~tom, jaký \LaTeX{} vlastně +používáme, získáme jen pečlivým pročtením logu po vygenerování +formátu. Koncept, kdy vlastnosti formátu jsou závislé na obsahu +nějakých dodatečných souborů v~distribuci v~době generování +formátů, se mi nelíbí, ale nelze proti tomu nic dělat. Takto +to navrhli tvůrci \LaTeX{}u a je to tedy jejich věc. Důsledek tohoto +rozhodnutí je, že pokud řekneme: \uv{používám \LaTeX}, nikdy není +zcela přesně řečeno, co se tím vlastně myslí. Tím se tento koncept +diametrálně liší od Knuthova plainu nebo též \csplain{}u. + +Co se stane, pokud jsou například v~\TeX{}ové distribuci přítomny +hned dva soubory {\tt hyphen.cfg}~-- jeden z~balíčku Babel a druhý +z~balíčku \cslatex{}? Není-li taková situace v~distribuci řešena speciální +konfigurací, není definováno, který z~těchto souborů se vlastně načte, +a tudíž není dopředu známo, jaký vygenerujeme \LaTeX. + +V~novějších web2c distribucích \TeX{}u lze konfigurovat způsob +prohledávání {\tt texmf} stromu podle názvu použitého programu nebo +podle názvu použitého (resp. generovaného) formátu. Nejčastěji jsou +tyto rozdílnosti konfigurovány v~souboru {\tt web2c/texmf.cnf}. +Tam je (mimo jiné) řečeno: + +\begtt +% cstex, from Petr Olsak +TEXINPUTS.cslatex= .;$TEXMF/tex/{cslatex,csplain,latex,generic,}// +TEXINPUTS.csplain= .;$TEXMF/tex/{csplain,plain,generic,}// +TEXINPUTS.pdfcslatex= \ + .;$TEXMF/{pdftex,tex}/{cslatex,csplain,latex,generic,}// +TEXINPUTS.pdfcsplain= \ + .;$TEXMF/{pdftex,cstex,tex}/{csplain,plain,generic,}// +\endtt +% +což znamená, že pokud použijeme nebo generujeme formát \cslatex{}, pak se +vstupní soubory přednostně čtou z~adresáře {\tt tex/cslatex} a {\tt +tex/csplain} a teprve potom v~ostatních adresářích. Takže {\tt +hyphen.cfg} a {\tt fonttext.cfg} si ini\TeX{} vezme přednostně +z~adresáře {\tt tex/cslatex}. Při provozu \cslatex{}u pak bude stylový soubor +{\tt czech.sty} nebo {\tt slovak.sty} při použití formátu \cslatex{} +přečten z~adresáře {\tt tex/csplain} a nikoli z~adresáře +{\tt tex/generic/babel}, kde se nalézá soubor stejného jména, ovšem +pro balík Babel. + +Aby se hledací algoritmy přizpůsobily názvu generovaného formátu, je +nutné tento formát při generování \cslatex{}u explicitně specifikovat na +příkazový řádek. Nestačí tedy napsat: + +\begtt +$ tex -ini cslatex.ini +\endtt +% +ale musíme psát + +\begtt +$ tex -ini -fmt cslatex cslatex.ini +\endtt +% +Při provozu formátu pak stačí psát + +\begtt +$ tex -fmt cslatex dokument +\endtt +% +Ve web2c distribuci jsou k~babelizovanému \LaTeX{}u v~konfiguračním +souboru {\tt web2c/texmf.cnf} uvedeny následující řádky: + +\begtt +TEXINPUTS.latex = .;$TEXMF/tex/{latex,generic,}// +TEXINPUTS.pdflatex = .;$TEXMF/{pdftex,tex}/{latex,generic,}// +TEXINPUTS = .;$TEXMF/tex/{generic,}// +\endtt +% +což znamená, že formát přednostně hledá vstupní soubory v~adresáři +{\tt tex/generic} a tam je podadresář {\tt babel}. Dokonce je babel +upřednostněn i v~případě, kdy neuvedeme na příkazové řádce +žádný název formátu. + +S~uvedenou konfigurací je možné bezproblémové soužití babelizovaného +\LaTeX{}u s~\cslatex{}em v~jediné distribuci. \cslatex{} pak obvykle voláme +skriptem {\tt cslatex}, který provede {\tt tex -fmt cslatex}, zatímco +babelizovaný \LaTeX{} voláme skriptem {\tt latex}, což spustí +{\tt tex -fmt latex}. + +Pokud nelze ve vaší \TeX{}ové distribuci konfigurovat prohledávací +algoritmy podle názvu formátu, pak je možné soužití babelizovaného +\LaTeX{}u s~\cslatex{}em za předpokladu, že budete dodržovat +následující zásady: + +\begitems +* Babelizovaný \LaTeX{} vygenerujte v~době, kdy není v~distribuci +přítomen \cslatex{}. Tak máte jistotu, že ini\TeX{} nenajde soubor +{\tt hyphen.cfg} z~\cslatex{}u, ale z~balíku Babel. + +* \cslatex{} pak vygenerujte nad adresářem {\tt cslatex}. +Aktuální adresář má totiž ve všech distribucích \TeX{}u přednost před +ostatními adresáři v~{\tt texmf} stromu. Proto si ini\TeX{} přečte soubory +{\tt fonttext.cfg} a {\tt hyphen.cfg} z~balíčku \cslatex{}. + +* Po instalaci \cslatex{}u do {\tt texmf} stromu je nutno ještě vymazat +soubory + +\begtt +tex/generic/babel/czech.sty +tex/generic/babel/slovak.sty +\endtt +% +protože soubory s~těmito názvy jsou v~{\tt texmf} stromu +dvojmo. Přitom v~balíčku Babel je nikdy nevyužijete, pokud budete psát +korektní záhlaví dokumentu pro babelizovaný \LaTeX{} (o~tom pojednám +podrobněji v~následující sekci). Na druhé straně soubory +{\tt czech.sty} a {\tt slovak.sty} z~\cslatex{}u budete potřebovat velmi +často, takže tyto soubory nemažte. +\enditems + + +\subsub Záhlaví \LaTeX{}ového dokumentu | Zahlavi LaTeXoveho dokumentu +%-------------------------------------- + +Pokud používáte \cslatex{}, pak záhlaví dokumentu může mít tvar + +\begtt +\documentclass{article} +\usepackage{czech} % nebo \usepackage{slovak} +... další příkazy záhlaví dokumentu +\begin{document} +... +\end{document} +\endtt + +Jestliže zapomenete na "\usepackage{czech}" nebo "\usepackage{slovak}", +pak v~dokumentu nebudou fungovat akcentovaná písmena, nebude zapnuto +české ani slovenské dělení slov a automaticky generované názvy +(kapitoly, sekce, obrázky,~...) nebudou přeloženy do národního jazyka. +V~tomto případě tedy \cslatex{} bude pracovat stejně jako vanilla \LaTeX{}. + +Pokud naopak používáte babelizovaný \LaTeX{}, pak záhlaví dokumentu +může mít tvar + +\begtt +\documentclass{article} +\usepackage[czech]{babel} % nebo \usepackage[slovak]{babel} +\usepackage[T1]{fontenc} +\usepackage[kódování-vstupu]{inputenc} +... další příkazy záhlaví dokumentu +\begin{document} +... +\end{document} +\endtt + +Všimněte si jiného způsobu volání stylového souboru "czech" nebo "slovak". +V~tomto případě se slovo "czech" či "slovak" zapíše pouze jako volba balíčku +"babel". Prakticky je to realizováno načtením souboru "czech.lfd" nebo +"slovak.lfd". Pro fungování Babelu tedy není vůbec nutná existence +souboru "czech.sty" nebo "slovak.sty". Tyto soubory v~balíčku Babel +sice existují, ale jejich funkce spočívá pouze v~tom, že \uv{vynadají} +uživateli za nesprávné použití příkazu "\usepackage" a dále načítají +odpovídající "lfd" soubor. + +Volba "[czech]" nebo "[slovak]" v~balíčku Babel ještě nemusí zajistit +přepnutí na odpovídající dělení slov. K~tomu je navíc potřeba, aby byl +babelizovaný \LaTeX{} s~těmito vzory dělení už vygenerován. + +Na rozdíl od \cslatex{}u není v~babelizovaném \LaTeX{}u řešena +synchronizace vstupního kódování dokumentu s~vnitřním kódováním +\LaTeX{}u. \LaTeX{} implicitně pracuje s~vnitřním +kódováním podle CM fontů (tzv.~"OT1"), což pro většinu jazyků není +užitečné. Je tedy třeba při použití babelizovaného \LaTeX{}u přepnout +do vnitřního kódování podle Corku (tzv.~"T1"), protože v~tomto +kódování jsou načteny vzory dělení. Použijeme tedy balíček fontenc +s~volbou "[T1]". Pak se automaticky použijí též fonty v~tomto kódování. +Babelizovaný \LaTeX{} nepodporuje (na rozdíl od \cslatex{}u) žádné jiné +vnitřní kódování vhodné pro češtinu nebo slovenštinu. + +Dále je potřeba v~babelizovaném \LaTeX{}u na vnitřní kódování "[T1]" +navázat vstupní kódování dokumentu. Pokud například máte dokument +napsán v~kódování ISO~8859-2, pak je potřeba použít balíček inputenc +s~volbou "[latin2]". Pokud máte dokument v~kódování MS~Windows CP~1250, +napište volbu "[cp1250]". + + +\subsub Vlastnosti \cslatex{}u | Vlastnosti CSLaTeXu +%-------------------------- + +Uvedeme podrobně rozdíly mezi vanilla \LaTeX{}em a \cslatex{}em. + +Oba formáty deklarují vnitřní kódování CM fontů jako implicitní +(tzv.~"OT1") a oba načítají ještě deklaraci kódování podle +Corku (tzv.~"T1"). \cslatex{} navíc načítá deklaraci vnitřního kódování +podle \CSfont{}ů (tzv.~"IL2"). + +\cslatex{} má ve svém souboru "hyphen.cfg" u~příkazu "\DeclareLanguage" +pro jazyky czech a slovak možnost použít kromě volby "IL2" ještě volbu +"T1". V~novějších distribucích \cslatex{}u jsou již obě volby implicitně +napsány. V~takovém případě se při generování formátu načtou vzory +dělení češtiny a slovenštiny nejen v~kódování "IL2", ale +také v~kódování "T1". \cslatex{} dále definuje mechanismy přepínání mezi +těmito vzory dělení poté, co uživatel přepne vnitřní kódování +z~"T1" na "IL2" nebo naopak standardními \LaTeX{}ovými prostředky. +Kvůli tomu je v~\cslatex{}u předefinováno interní makro \LaTeX{}u +"\DeclareFontEncoding", protože vanilla \LaTeX{} nepředpokládá, +že je po přepnutí kódování nutné přepnout i vzory dělení slov. + +V~\cslatex{}u je navíc definováno makro "\splithyphens" a +"\standardhyphens". Po použití makra "\splithyphens" se +nastaví znak~"-" jako aktivní a funguje podobně jako +"\discretionary{-}{-}{-}". Znamená to, že slova jako +\uv{je-li} se rozdělí správně česky: \uv{je-/-li}. Spojovník se +opakuje na následujícím řádku. Makro navíc složitě ošetřuje výskyt +"--" a "---", který tiskne \uv{normálně} jako za sebou následující +znaky s~kódem~45, které se promění v~ligaturu pomlčky nebo dlouhé +pomlčky. Makro "\standardhyphens" dává vše do původního stavu, +tj. po jeho použití znak~"-" není aktivní. (Uživatelé \csplain{}u mohou +pro tyto potřeby použít makro podle~\cit{tbn} na straně~217.) + +Příkaz "cslatex" musí také zajistit konverzi z~kódování +češtiny/slovenštiny obvyklé v~použitém systému do vnitřního +kódování ISO~8859-2 alias~"IL2". +Ve web2c distribuci \TeX{}u je proto ve skriptu +"cslatex" resp.~dávce "cslatex.bat" použit přepínač +"-default-translate-file". Pro systémy MS~Windows je vedle tohoto +přepínače použita hodnota "cp1250cs", zatímco pro UNIXové systémy se +používá hodnota "il2-cs", což nastavuje konverzi \uv{jedna ku jedné}. +V~jiných distribucích se musí implementovat konverze na úrovni +vstupního procesoru \TeX{}u způsobem závislým na použité +distribuci. Například v~em\TeX{}u je možné použít TCP tabulky. + + +\subsub Vlastnosti stylových souborů {\tt czech.sty} a {\tt slovak.sty} | +%-------------------------------------------------------------- + Vlastnosti stylovych souboru + +V~této sekci budu z~důvodu stručnosti mluvit o~češtině a souboru +"czech.sty", ale to samé samozřejmě platí i pro slovenštinu a stylový +soubor "slovak.sty". + +Načtení souboru "czech.sty" z~\cslatex{}u pomocí +"\usepackage{czech}" způsobí následující změny: + +\begitems +* Nastaví se vnitřní kódování \LaTeX{}u na "IL2", takže se + implicitně použijí \CSfont{}y. +* Inicializuje se české dělení slov v~kódování "IL2". +* Mezerování se nastaví na "\frenchspacing", tj. rovnoměrné mezerování + mezi slovy i za tečkami. +* Nastaví se české názvy pro jména \uv{Kapitola}, \uv{Obsah} atd. + Viz následující tabulka. +* Makro "\today" expanduje na český datum. +* Definují se makra "\clqq" a "\crqq" pro dvojité české uvozovky, + a to i jejich nouzová varianta pro případ, kdy není použito + kódování "IL2". Definují se též makra + "\clq" a "\crq" pro jednoduché české uvozovky. +* Definuje se makro "\uv" jako "\def\uv#1{\clqq#1\crqq}". +* Definují se přepínače "\csprimeson" a "\csprimesoff" (popis viz níže). +\enditems + +Tabulka automaticky generovaných slov \LaTeX{}u, která jsou změněna po +načtení "czech.sty" na české názvy: + +\begtt +Původní název czech.sty slovak.sty +------------------------------------------------------------- +Preface Předmluva Predhovor +References Reference Literatúra +Abstract Abstrakt Abstrakt +Bibliography Literatura Literatúra +Chapter Kapitola Kapitola +Appendix Příloha Dodatok +Contents Obsah Obsah +List of Figures Seznam obrázků Zoznam obrázkov +List of Tables Seznam tabulek Zoznam tabuliek +Index Rejstřík Register +Figure Obrázek Obr. +Table Tabulka Tabuľka +Part Část Časť +encl Příloha Príloha +cc Na vědomí cc. +To Komu Pre +Page Strana Str. +see viz viď +see also viz také viď tiež +\endtt + +Kromě toho styl "czech.sty" akceptuje následující volby: + +\bgroup\medskip\leftskip=\parindent \parindent=0pt +"T1" místo implicitního vnitřního kódování \LaTeX{}u~"IL2" + se použije kódování "T1". + +"IL2" nemusíte psát, je to implicitní volba. + +"OT1" použije se vnitřní kódování podle CM fontů. Pak samozřejmě + nefunguje dělení slov češtiny a slovenštiny. + +"split" zapne "\splithyphens". + +"nocaptions" výstup makra "\today" a automaticky generovaná slova zůstanou + v~angličtině. + +"olduv" použije se stará definice makra "\uv", která umožňuje + použít v~argumentu verbatim konstrukce. +%"primeson" zapne "\csprimeson". V současné verzi "czech.sty" není +% tato volba implementována, ale počítáme s ní do budoucí verze. +\medskip\par\egroup + +Například "\usepackage[split,olduv]{czech}" zapne navíc zdvojování +spojovníku při rozdělení a definuje makro "\uv" tak, že jsou možné +verbatim konstrukce uvnitř argumentu. + +Nyní vysvětlím vlastnosti přepínačů "\csprimeson" a "\csprimesoff". +Po po\-užití příkazu "\csprimeson" jsou přiděleny znakům +\uv{"`"} a \uv{"'"} aktivní +kategorie, aby "``takto po anglicku''" zapsané uvozovky se převedly na +\uv{takové} uvozovky. Rovněž "`jednoduché'" anglické uvozovky +jsou pak vytištěny ,jednoduše`. Makro "\csprimesoff" vrací vše do +původního stavu, kdy jsou uvedené znaky neaktivní. Po načtení +"czech.sty" je implicitně nastaveno "\csprimesoff". + +Uvedený popis chování stylového souboru "czech.sty" se týká jen +případu, kdy je tento stylový soubor načten z~\cslatex{}u. Pokud je +načten z~babelizovaného \LaTeX{}u, pak se provede "\input czech.lfd", +takže veškeré definice \uv{češtiny} jsou v~režii balíku Babel. Tam +například vůbec není definováno makro "\uv". Pokud je "czech.sty" +načten z~\csplain{}u, pak se provede "\chyph", definuje se "\csprimeson", +"\csprimesof" a makro "\today" expanduje na datum po česku. Je-li +načten "czech.sty" z~originálního plainu, pak se provede totéž jen +s~tím rozdílem, že místo "\chyph" se objeví na terminálu varování +o~nemožnosti přepnout na české vzory dělení. + + +\subsub PostScriptové fonty v~\cslatex{}u | PostScriptove fonty v CSLaTeXu +%------------------------------------- + +Při práci s~PostScriptovými fonty v~\cslatex{}u stačí použít standardní +nástroje NFSS. Například pro zapnutí do fontů rodiny Times~Roman stačí +napsat do záhlaví dokumentu "\usepackage{times}". Protože \cslatex{} při +"\usepackage{czech}" implicitně pracuje +s~vnitřním kódováním podle ISO~8859-2, použijí se v~tomto případě +virtuální fonty z~balíčku "cspsfonts.tar.gz". Z~toho důvodu jsou +v~balíčku \cslatex{}u přítomny potřebné "fd" soubory. Následující tabulka +ukazuje parametry příkazu "\usepackage" pro rodiny fontů ze +standardní skupiny 35~PostScriptových fontů. + +\begtt +Rodina fontů parametr +-------------------------- +Avantgarde Book avant +Bookman bookman +Helvetica helvet +New Century newcent +Palatino palatino +Times Roman times +\endtt + + +\subsub Použití fontů kódovaných podle Corku (T1 kódování) v~\cslatex{}u | +%-------------------------------------------------------------------- + Pouziti fontu kodovanych podle Corku v CSLaTeXu + +Máte-li vzory dělení v~\cslatex{}u načteny i pro kódování T1 +(viz příkaz "\DeclareLanguage" v souboru "hyphen.cfg"), pak můžete +místo implicitního vnitřního kódování "IL2" použít kódování "T1". +V~takovém případě se automaticky použijí místo \CSfont{}ů fonty kódované +podle Corku. Vnitřní kódování "T1" inicializujete zápisem: + +\begtt +\usepackage[T1]{czech} % nebo \usepackage[T1]{slovak} +\endtt + +Protože ale input procesor \TeX{}u při použití příkazu "cslatex" +konvertuje vstupní kódování dokumentu na ISO~8859-2, je v~tomto +případě nutné navázat na to další konverzí pomocí balíčku inputenc takto: + +\begtt +\usepackage[latin2]{inputenc} +\endtt + +Zde je potřeba vždy psát "[latin2]", ať je vstupní kódování dokumentu +jakékoli, protože vstupní procesor \TeX{}u nám toto kódování převedl +na ISO~8859-2. + +Po zapnutí vnitřního kódování na "T1" lze použít PostScriptové fonty +stejným způsobem jako předtím (například "\usepackage{times}"). Nyní +se ale použijí metriky dodávané v~mezinárodních distribucích \TeX{}u a +kódované podle Corku. + + +\subsub pdf\TeX{} + \cslatex{} = pdf\cslatex{} | +%--------------------------------------- + pdfTeX + CSLaTeX = pdfCSLaTeX + +V~případě spojení \cslatex{}u s~pdf\TeX{}em platí vše naprosto stejně, +jako bylo řečeno v~sekci \uv{pdf\TeX + \csplain{} = pdf\csplain{}}. +Nahraďte v~této sekci slovo \csplain{} slovem \cslatex{} a slovo +pdf\csplain{} slovem pdf\cslatex{} a přečtěte si tuto sekci ještě jednou. + + +\subsub Historie a budoucnost \cslatex{}u | Historie a budoucnost CSLaTeXu +%------------------------------------- + +\cslatex{} vytvořil zhruba v~roce 1992 Jiří Zlatuška. Od něj pochází +myšlenka načtení vzorů dělení stejného jazyka v~různých kódováních a +předefinování vnitřního \LaTeX{}ového makra "\DeclareFontEncoding". +Na své implementaci \TeX{}u tehdy provozoval mimo jiné fonty +kódované v~KOI-8, takže přepínání vnitřního kódování \LaTeX{}u si +vlastně udělal pro svoje potřeby. +Jiří Zlatuška je také autorem maker "\splithyphens" a +"\standardhyphens". Veškerá makra napsal dobře +dokumentovaná pro použití v~systému docstrip. Svou práci zveřejnil pod +licencí GPL mimo jiné podle jeho slov proto, že pokud to bude někoho +zajímat, tak to může dále udržovat a zvelebovat podle svých vlastních +představ. On sám se kvůli své zaneprázněnosti v~jiné oblasti +tímto problémem později zřejmě nezabýval. + +Po schůzce tvůrců \CSTeX{}u v~roce 1993 převzal starost o~\cslatex{} +podle dohody Zdeněk Wagner, který vytvořil definice kódování +"IL2". Vytvořil také pro \cslatex{} definiční soubory "fd" jednak +pro \CSfont{}y a jednak pro PostScriptové fonty z~balíčku +"cspsfonts.tar.gz". Od něj také pochází implementace \cslatex{}u pro +\LaTeX{}~2.09. V~em\TeX{}ové distribuci \CSTeX{}u je stále tato +implementace obsažena (pod označením latex209). + +Soubor "czech.sty" má asi podstatně delší historii než \cslatex{}. Pochází +z~dílny Olina Ulricha. který se zřejmě inspiroval podobným stylovým +souborem pro německý jazyk. Olin rovněž vytvořil makra "\csprimeson" a +"\csprimesoff". Zdeněk Wagner pak převzal Olinův stylový soubor +a upravil jej pro provoz v~\cslatex{}u. Slovenskou část včetně vzorů +dělení slov vytvořila Janka Chlebíková. Soubor "slovak.sty" je +přesnou kopií souboru "czech.sty" s~výjimkou slovensky +špecifických částí. + +V~duchu licence GPL převzal zhruba v~roce 1997 údržbu \cslatex{}u +Jaroslav \hbox{Šnajdr}. Udělal několik úprav stylových souborů "czech.sty" a +"slovak.sty" včetně přechodu na novou definici uvozovek, uvnitř +jejichž argumentu nefungují verbatim konstrukce. Tím kuriózně +způsobil, že \cslatex{}em od této doby nejde bez chyb formátovat český +překlad úvodu do \LaTeX{}u, který je pod názvem balíčku +"csuvodlat.tar.gz" součástí dokumentace \CSTeX{}u. Je to názorná +ukázka toho, co může způsobit změna kódu, která nerespektuje zpětnou +kompatibilitu. Pan Šnajdr rovněž napsal "html" dokumentaci +k~\cslatex{}u, která popisuje instalaci \cslatex{}u ze zdrojových souborů +použitím docstripu. Použijete-li ale balíček "cslatex.tar.gz", +pak nemusíte docstrip aplikovat, protože vedle zdrojových souborů +jsou tam už přítomny i všechny soubory, které vznikají po aplikaci +docstripu. + +Já osobně jsem o~\LaTeX{} a tím pádem \cslatex{} jevil od začátku +malý zájem, protože celý projekt je závislý na \LaTeX{}u samotném. +Nemám tedy jistotu, jaké změny v~něm současný \LaTeX{}-team udělá a jaké +budou existovat do budoucna potíže se zpětnou kompatibilitou. To je +zásadní odlišnost od Knuthova plainu a \TeX{}u samotného. +Raději jsem se tedy do \LaTeX{}ových věcí nemíchal. + +V~roce 1999 jsem nicméně přidal pár řádek maker do souboru +"czhyphen.tex" tak, aby byl použitelný v~babelizovaném \LaTeX{}u. +Do té doby totiž tato větev \LaTeX{}u používala Lhotkovy +vzory dělení, zatímco v~\cslatex{}u jsme už dávno měli daleko +kvalitnější Ševečkovy vzory dělení. Tyto novější vzory dělení jsou +totiž napsány za použití \TeX{}ových sekvencí, což je sice nezávislé +na kódování češtiny, ale balíček Babel to implicitně nedokáže strávit +a očekává vzory dělení v~kódování "T1". Upravený soubor jsem +nazval Babelovsky: "czhyph.tex", zatímco v~\CSTeX{}u zůstává původní +soubor "czhyphen.tex". Sjednocení názvů těchto souborů by stejně +nevyřešilo nejednotnost vývoje \cslatex{}u a babelizovaného \LaTeX{}u. + +Na výborové schůzi v~roce 1999 jsem dostal za úkol prověřit +možnost spojení babelizovaného \LaTeX{}u s~\cslatex{}em. Neustálé +dotazy začínajících uživatelů, kteří si pletou tyto dva \LaTeX{}y, nás +utvrzují v~tom, že by se pro sloučení mělo něco udělat. + +Analyzoval jsem proto makra Babelu a udělal návrh na možné zapracování +funkcionality \cslatex{}u do Babelu. Domnívám se, že \cslatex{} klidně +může přestat existovat, ale babelizovaný \LaTeX{} musí bezpodmínečně +převzít všechny vlastnosti \cslatex{}u tak, aby dokumenty dříve +zpracovávané \cslatex{}em byly naprosto stejně a bez jediné úpravy +zpracované novým babelizovaným \LaTeX{}em. Kvůli tomuto požadavku +musí babelizovaný \LaTeX{} umět načítat vzory dělení stejného jazyka +ve více kódováních, jako to nyní dělá \cslatex{}. Dospěl jsem +k~závěru, že čistým řešením tohoto problému je jedině zásah do jádra +\LaTeX{}u samotného, aby dokázal při změně kódování fontů přepnout +automaticky i vzory dělení. Zlatuška kvůli tomu předefinoval makro +jádra \LaTeX{}u "\DeclareFontEncoding". Tato záplata, či jinak řečeno +odmítnutí původního kódu tohoto makra, je na úrovni Babelu podle mého +názoru velmi nečisté řešení. Skutečnost, že přepínání vzorů dělení při +přepnutí kódování fontů \LaTeX{}ové jádro neřeší, považuji totiž za +chybu \LaTeX{}u. V~roce 1999 jsem tedy požádal \LaTeX{}-team, aby +zapracoval změnu v~duchu Zlatuškova návrhu do \LaTeX{}ového jádra. +Můj návrh nebyl \LaTeX{}-teamem akceptován. Za těchto +okolností nejsem schopen zapracovat funkcionalitu \cslatex{}u do +Babelu, protože to prostě nejde. Uživatelé \LaTeX{}u se budou muset +nadále potýkat s~tím, že jejich oblíbený formát trpí určitou +schizofrenií. + +Společně se sloučením \cslatex{}u s~Babelem jsem připravoval zásadní +revizi stylů "czech.sty" a "slovak.sty" -- v~podstatě jsem měl +v~úmyslu jejich totální přepsání. Tyto stylové soubory obsahují +množství reliktů z~dob minulých, plno zcela nepoužívaných větví ve +složitém větvení pomocí "\if" a stávají se totálně nepřehlednými. +Protože ale ke sloučení \cslatex{}u s~Babelem nakonec nedošlo, upustil +jsem zatím od plánu pracovat na těch stylových souborech. +Není ale vyloučeno, že k~tomu dojde v~budoucnosti. V~takovém případě +počítám s~tím, že makra "\splithyphens" a "\standardhyphens" +přesunu z~formátu do stylového souboru, kam přirozeně patří. +Dokumenty, které tato makra používají, a přitom nemají v~záhlaví +"\usepackage{czech}" ani "\usepackage{slovak}", pak nebudou fungovat. +Předpokládám, že takových dokumentů není mnoho, protože \cslatex{} a +stylové soubory jsou většinou používány současně. + +Protože pan Šnajdr se přestal \cslatex{}em zabývat, byl jsem nucen +v~roce 2002 zanést do stylových souborů jednu opravu podle požadavku +pana Kubena. Neznamená to ale, že bych se ujal iniciativy nad \cslatex{}em. +Jak jsem už vysvětlil, jsem ochoten převzít iniciativu jen tehdy, +když bude \LaTeX{}ové jádro umět přepínat mezi různě kódovanými +vzory dělení stejného jazyka. Přitom členové \LaTeX{}-teamu jsou toho +názoru, že to možná bude zapracováno až do \LaTeX{}u~3. + +\reference + +\bib cstex +WWW stránka \CSTeX{}u {\tt http://petr.olsak.net/cstex/}. + +\bib cstex +WWW stránka \csplain{}u {\tt http://petr.olsak.net/csplain.html}. + +\bib cstex +WWW stránka makra OPmac {\tt http://petr.olsak.net/opmac.html}. + + +\bib texbook +Donald Knuth. {\it The \TeX{}book}. Addison Wesley Publishing Company. +Eleventh printing, revised, May 1991, +ISBN 0-201-13447-0 + +\bib tst +Petr Olšák. {\it Typografický systém \TeX}. Konvoj, Brno~2000, +ISBN~80-85615-91-6 + +\bib tbn +Petr Olšák. {\it \TeX{}book naruby}. Konvoj, Brno~2001, +ISBN~80-7302-007-6. + +\bib prvni +Petr Olšák. {\it První setkání s~\TeX{}em}. Volně šířený dokument ve +formátech "tex", "ps", "pdf" na +\url{ftp://math.feld.cvut.cz/pub/cstex/doc/prvni.*}, 22~stran. + +\bib putovani +Petr Olšák. {\it Putování písmene ř z klávesy na papír}. +Zpravodaj \CS{}TUGu, 3/1997, strany 109--118. + +\bib enctex +Petr Olšák. {\it Rozšíření \TeX{}u enc\TeX}. Rozšíření ve formě +změnového souboru k~"tex.web" je volně šířeno na +\url{ftp://math.feld.cvut.cz/pub/olsak/enctex/}. + +\bib a2ac +Petr Olšák. {\it Program {\tt a2ac}}. Program včetně zdrojových kódů +v jazyce~C je volně šířen na +\url{ftp://math.feld.cvut.cz/pub/olsak/a2ac/}. + +\bib cstrip +Petr Olšák. {\it Test {\tt cstrip}}. Test je nepovinnou součástí +\CSTeX{}u. Je volně šířen na +\url{ftp://math.feld.cvut.cz/pub/cstex/base/cstrip.tar.gz}. + +\bib OFS +Petr Olšák. {\it Makro OFS}. \TeX{}ové makro OFS pro práci s +rozsáhlými kolekcemi fontů je volně šířeno na +\url{ftp://math.feld.cvut.cz/pub/olsak/ofs/}. + +\bye + + diff --git a/Master/texmf-dist/doc/cstex/jemny.errata b/Master/texmf-dist/doc/cstex/jemny.errata new file mode 100644 index 00000000000..44d393bc47e --- /dev/null +++ b/Master/texmf-dist/doc/cstex/jemny.errata @@ -0,0 +1,15 @@ + + ERRATA dokumentu "Jemny uvod do TeXu" (cesky preklad) + ===================================================== + +Protoze vystavovany dokument zatim nechavame v podobe, jak byl +publikovan v roce 1993, nejsou v nem opraveny nektere nasledujici +veci. + +Znaceni: strana_pocet-radku-zdola nebo strana^pocet-radku-shora. + +v_17: Cestina a slovenstina v CSTeXu -> Preplnene a nenaplnene ramecky +38_10: 1 pica (cc) -> 1 cicero (cc) + + + diff --git a/Master/texmf-dist/doc/cstex/jemny.pdf b/Master/texmf-dist/doc/cstex/jemny.pdf new file mode 100644 index 00000000000..6cea9b34024 Binary files /dev/null and b/Master/texmf-dist/doc/cstex/jemny.pdf differ diff --git a/Master/texmf-dist/doc/cstex/jemny.tar.gz b/Master/texmf-dist/doc/cstex/jemny.tar.gz new file mode 100644 index 00000000000..bdd1ff8f812 Binary files /dev/null and b/Master/texmf-dist/doc/cstex/jemny.tar.gz differ diff --git a/Master/texmf-dist/doc/cstex/lic-gpl.eng b/Master/texmf-dist/doc/cstex/lic-gpl.eng new file mode 100644 index 00000000000..60549be514a --- /dev/null +++ b/Master/texmf-dist/doc/cstex/lic-gpl.eng @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Master/texmf-dist/doc/cstex/opmac-d.pdf b/Master/texmf-dist/doc/cstex/opmac-d.pdf new file mode 100644 index 00000000000..3c591cee1fa Binary files /dev/null and b/Master/texmf-dist/doc/cstex/opmac-d.pdf differ diff --git a/Master/texmf-dist/doc/cstex/opmac-d.tex b/Master/texmf-dist/doc/cstex/opmac-d.tex new file mode 100644 index 00000000000..95d241e0f0a --- /dev/null +++ b/Master/texmf-dist/doc/cstex/opmac-d.tex @@ -0,0 +1,2170 @@ +%% OPmac -- Olsak's PlainTeX macros +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Tech-documentation, Petr Olsak, 2012 + +\input utf8off \clearmubyte + +% This file is encoded in ISO-8859-2 because +% UTF-8 encTeX has a conflict with DocByTeX + +\def\projectversion{Dec. 2012} +\def\headtitle{OPmac} + +\widowpenalty=10000 +\clubpenalty=10000 + +\emergencystretch=2em +\hbadness=2200 + +\showboxbreadth=1500 \showboxdepth=2 + +\def\csplain{\CS plain} +\def\CS{CS} + +\input docby.tex + +\setlinecomment{\percent} \noactive{\nb\percent} \noactive{\percent\cbrace} +\noactive{\nb fontdimen} + +\title OPmac -- roziujc makra plain\TeX{}u + +\author Petr Olk + +\centerline{\ulink[http://www.olsak.net/opmac.html]% + {www.olsak.net/opmac.html}} + +\def\db{\dg\nb} +\def\du#1{\api{\nb#1}} +\let\quotehook=\langleactive +\def\insdef#1 {\ifirst{docby.tex}{def\nb#1 }{^^B\cbrace}{++}} +\def\inssdef#1 {\ifirst{docby.tex}{def\nb#1}{\empty}{+-}} +\bgroup + \catcode`\[=1 \catcode`]=2 \catcode`\{=12 \catcode`\}=12 + \gdef\obrace[{] \gdef\cbrace[}] +\egroup +\def\indexhook{% +% Kontroln sekvence oznaen ipkou ($\succ$) jsou +% uivatelskmi pkazy. Ostatn kontroln sekvence jsou +% v~OPmac intern. + Tun je oznaena strana, kde je slovo + dokumentovno, pak nsleduje seznam vech stran, na kterch se slovo + vyskytuje. +% Uivatelsk pkazy maj v seznamu strnek podtren slo, +% co je strnka, kde je pkaz vyloen na uivatelsk rovni. + \medskip} +\def\nn#1 {\noactive{\nb#1}} \nn insert \nn undefined + +\def\cnvbookmark#1{\lowercase{\lowercase{#1}}} +\def\bookmarkshook{\lo e \lo s \lo c \lo r \lo z \lo y + \lo a \lo i \lo e \lo u \lo u \lo o \lo n } +\def\lo #1#2{\lccode`#1=`#2} + + +\dotoc \bookmarks + +\sec vod +%%%%%%%%% + +OPmac je balk jednoduchch doplujcch maker k plain\TeX{}u umoujc +uivatelm zkladn La\TeX{}ovou funkcionalitu: zmny velikosti psma, +automatickou tvorbu obsahu a rejstku, prci s {\tt bib} databzemi, +referencemi, monost proloen referenc hyperlinkovmi odkazy atd. + + +\sec Uivatelsk dokumentace +%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Uivatelsk dokumentace je zatm v souboru "opmac-u.tex" a "opmac-u.pdf". +Do tohoto msta ji zahrnu pozdji a prolinkuji ji s technickou dokumentac. + + +\sec Technick dokumentace +%%%%%%%%%%%%%%%%%%%%%%%%%% + +Tato st dokumentace je urena pro tvrce maker, kte se chtj zde +uvedenmi makry inspirovat a ppadn je pizpsobit svmu poadavku. +Pedpokld se znalost \TeX{}u, tj. napklad aspo zbn orientace +v~\TeX{}booku naruby. Na tuto knihu je na mnoha mstech odkazovno pod +zkratkou TBN. + + +\subsec Zkladn makra +%%%%%%%%%%%%%%%%%%%%%% + +Na zatku souboru "opmac.tex" zjistme, zda nen soubor ten podruh. V +takovm ppad ten odmtneme. Ptme se na to, zda je definovno makro \db +OPmacversion, kter vzpt definujeme. Je-li nkdo pekvapen, pro jsem +nepouil "\expandafter\endpinput\fi", me si prostudovat TBN, stranu~358, +heslo "\endinput". + +\ifirst {opmac.tex}{OPmacversion}{\empty}{+-} + +Dva pracovn registry: +\dgn \nb tmpnum +\dgn \nb tmpdim + +\inext {newcount}{\empty}{+-} + +OPmac nebude nikdy hlsit chyby. asto ale bude pst pomoc \db opwarning +na terminl varovn. + +\inext {warning}{\empty}{+-} + +Makro \db addto "{}" pid na konec "" dan "". + +\inext {addto}{\empty}{+-} + +V OPmac budeme pracovat se seznamem \db protectlist, kter bude obsahovat +makra, je chceme mt tzv. robustn, tj. chceme, aby se pi "\write" v output +rutin neexpandovala. Kadmu makru v~seznamu pedchz "\doprotect", take +seznam "\protectlist" vypad takto: + +\def\begtthook{\langleactive} +\begtt +\doprotect \doprotect ... +\endtt + +\def\begtthook{} +Seznam budeme spoutt v output rutin s tm, e "\doprotect" tam bude mt +vznam makra, kter zad, aby jeho parametr zskal vznam "\relax". +Tm bude zabrnno jeho expanzi. +Naprogramujeme \db addprotect "", kter zad vloen "" do seznamu. + +\inext {protectlist}{\empty}{+-} + +Nkter makra budou fungovat jen v pdf\TeX{}u pi nastavenm "\pdfoutput=1". +Pipravme si tedy test \db ifpdftex, kter pak pouijeme pi ten souboru +"opmac.tex". Test nikdy nebudeme vkldat do maker, take pi ten souboru +"opmac.tex" u mus bt jasn, zda bude vstup smrovn do DVI nebo PDF. +Pozdj zmna "\pdfoutput" me zpsobit pote. + +\inext {ifpdftex}{\empty}{+-} + +Makra \db sdef a \db sxdef umouj pohodln definovat kontroln sekvence +ohranien pomoc "\csname...\endcsname". + +\inext {sdef}{\empty}{+-} + +Makro \db adef umon nastavit znak na aktivn a rovnou ho definovat, co +normln uvnit maker nen jednoduch (TBN str. 25 a 26). +Vyuijeme toho, e "~" je aktivn znak a pomoc +"\lccode" a "\lowercase" jej pepeme na poadovan znak. Dostaneme tm +aktivn token s poadovanou ASCII hodnotou a tento token definujeme. +Pomoc \db lccodetiezero vrtme po piazen (tj. po proveden definice) +"\lccode" vlnky na pvodn hodnotu. + +\inext {adef}{\empty}{+-} + +Makrem \db isdefined "{}\iftrue" se ptme, zda je definovan +"\csname\endcsname". To zvren pipojen "\iftrue" makro seere, +ale uivatel ho pe zejmna z toho dvodu, aby mu tato konstrukce fungovala +uvnit vnoench "\if..\fi" + +\inext {isdefined}{^^B\cbrace}{++} + +Makro \db isinlist "{}\iftrue" zjist, zda "" jsou +(jako string) obsaeny v~makru "". Pitom seere "\iftrue" ze stejnch +dvod, jak je uvedeno ped chvl. + +\inext {isinlist}{^^B\cbrace}{++} + +Makro \db isnextchar "{}{}" +pracuje ponkud odlin od pedchozch maker. Zjist, zda nsledujc znak +je "" a pokud ano, vykon vnitek prvn zvorky, jinak vykon vnitek +druh zvorky. Pomoc "\futurelet" ulo zkouman znak do "\next" a spust +\db isnextcharA. + +\inext {isnextchar}{\empty}{+-} + +Pedefinujeme makro \db uv z \csplain{}u. Tam je toto makro navreno tak, aby +mohlo mt za svj parametr verbatim text. Dsledkem toho nefunguje sprvn +kerning. Povauji za lep mt sprvn kerning a ppadn uvozovn verbatim +text eit teba pomoc "\clqq...\crqq". + +\inext {def\nb uv}{}{+-} + +Knuth v souboru "plain.tex" zanechal dic sekvenci "\\" v provizornm stavu +(cvien: podvejte se v jakm). Domnvm se, e je lep ji dt jednoznan +vznam "\undefined". Nkterm uivatelm toti me OPmac pipomnat +La\TeX{} a nen tedy vyloueno, e je napadne pst "\\". Mli by na to +dostat jednoznanou odpov: {\tt undefined control sequence}. + +\inext {undefined}{}{+-} + +Do pracovnho souboru urenho k novmu naten budeme chtt vloit +komente za znakem procento. K tomu potebujeme mt procento jako obyejn +znak kategorie 12. Na tento znak se v naem kdu peklop otaznk, Take +\db percent expanduje na znak procento s kategori 12. + +\inext {percent}{}{+-} + +Makro plain\TeX{}u "\," +funguje jen v matematick sazb. Uivatel bude chtt makro asto +pout napklad mezi slem a jednotkou v textovm mdu: "5\,mm", take +makro pedefinujeme. + +\inext {kern}{}{+-} + + +\subsec Globln parametry +%%%%%%%%%%%%%%%%%%%%%%%%%% + +Zakeme vdovy a sirotky a dle nastavme registry pro listingy tiskovho +materilu na smysluplnj hodnoty, ne jsou implicitn. + +\inext {widowpenalty}{\empty}{+-} + +Nsledujc makra a registry ovlivn chovn klovch maker OPmac zpsobem, +jak je popsno v~komentch. Mnoh z tchto maker a registr byly zmnny v +uivatelsk dokumentaci. +\dgn \nb iindent +\dgn \nb ttindent +\dgn \nb ttskip +\dgn \nb ttpenalty +\dgn \nb tthook +\dgn \nb intthook +\dgn \nb iiskip +\dgn \nb bibskip +\dgn \nb tabstrut +\dgn \nb tabiteml +\dgn \nb tabitemr +\dgn \nb vvkern +\dgn \nb hhkern +\dgn \nb multiskip +\dgn \nb colsep +\dgn \nb mnoteindent +\dgn \nb mnotesize +\dgn \nb picdir +\dgn \nb bibtexhook +\dgn \nb chaphook +\dgn \nb sechook +\dgn \nb secchook +\dgn \nb cnvhook +\dgn \nb pghook + +\inext {newdimen}{\count=7 \empty}{+-} + + + +\subsec Loga +%%%%%%%%%%%% + +V logu \db OPmac je pomoc "\thefontscale" zvteno psmeno O. Logo \db CS je +pepsno beze zmny z CS\TeX{}u. Tm snadno vytvome i logo \db csplain. + +\inext {def\nb OPmac}{\empty}{+-} + +Troufm si tvrdit, e logo \db LaTeX (akoli je plain\TeX{}ist asi moc +nebudou potebovat) je v~nsledujcm kdu daleko lpe eeno, ne v +samotnm La\TeX{}u. Pot toti ve spoluprci s makrem \db slantcorr +i se sklonem psma pi usazovn zmenenho A. + +\inext {LaTeX}{\empty}{+-} + +Loga se obas mohou vyskytnout v nadpisech. Zabezpeme je tedy proti +rozboen pi zpisu do REF souboru. + +\inext {addprotect}{\empty}{+-} + + +\subsec Velikosti font, dkovn +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\csplain{} od verze "" definuje makro +\db resizefont "", kter zmn +velikost fontu danho svm pepnaem a tento zmnn font si ponech +stejn pepna. Zmna velikosti je dna obsahem makra \db sizespec. +Tam me bt napklad napsno "at13pt" nebo "scaled800". +Dle CSplain definuje makro +\db resizeall, kter zmn velikost +font s registrovanmi pepnai. Registrovn se provd makrem +\db regfont. Implicitn jsou registrovny pepnae + "\tenrm", "\tenit", "\tenbf", "\tenbi", a "\tentt". +Do novch velikost tedy pjdeme se starmi nzvy pepna +"\ten" a to slovo "ten" budeme chpat jen jako historick relikt, +kter nm ovem napov, e kontroln sekvence je fontovm pepnaem. + +OPmac si zjist, zda je definovan "\regfont". Pokud ne, upozorn na starou +verzi \csplain{}u na terminlu a potebn makra si definuje. Je to kopie +kdu ze souboru "csfontsm.tex" z balku \csplain{}. + +\inext {regfont}{\empty}{+-} + +Implicitn jsou zavedeny \CS{}fonty, take k nim pidme AMS fonty z +"ams-math.tex", kter vizuln odpovdaj. Pozdji si me uivatel zavst +jin makro (nap. "tx-math.tex") a zavede si teba i jin textov fonty. To nezmn +vlastnosti maker v OPmac, pokud nov soubory maker sprvn pedefinuj +makra "\setmathsizes[/