diff options
Diffstat (limited to 'Master/texmf-dist/doc/cstex/cstexman.tex')
-rw-r--r-- | Master/texmf-dist/doc/cstex/cstexman.tex | 3265 |
1 files changed, 3265 insertions, 0 deletions
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 "<Feb 2000>". + 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ž +"<Feb. 2000>", 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 <přepínač>". Po použití +tohoto makra je "<přepínač>" 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 "<Feb. 2000>" 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 "<Nov. 2012>" 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 +"<zkratku jazyka>", 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{<zkratka jazyka>}". 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{<značka>}\frenchspacing + \lefthyphenmin=<lhm>\righthyphenmin=<rhm>% + \message{<text>} +\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:<značka>", 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 <přepínač>" Provede registraci fontového přepínače. Tedy přidá +do existujícího makra "\resizefontall" další dva tokeny: +"\resizefont <přepínač>". + +"\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 <přepínač>"\nobreak Argumentem musí být fontový "<přepínač>", tj. sekvence + dříve deklarovaná pomocí "\font". Tento "<přepínač>" 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<dimen>}}, nebo \uv{{\tt scaled<number>}}. 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 <Feb. 2000>} 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~"<Feb. 2000>" 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 + + |