\chyph % použijte csplain

% Máte možnost to přeznačkovat do LaTeXu (např. \begtt -> \begin{verbatim}
% a \endtt -> \end{verbatim}, \kap text -> \section{text} atd.
% Za nejproblémovější v přeznačkování považuji: "text" -> \verb"text"
% Přimlovám se raději k tomu to ponechat tak. Mám podle mého názoru
% pěknější loga TeX, LaTeX a CSTeX. Můžete rozbalit metriky
% a virtuální fonty k Charteru (přiložený charter8z.zip) do 
% pracovního adresáře a zpracovat csplainem na instalaci TeXu, 
% která obsahuje OFS. Před spuštěním dvips je pak potřeba doplnit 
% do psfonts.map čtyři řádky uvedené v souboru mapfile. Můžete mě také
% informovat o tom, na kterých stránkách se dokument bude ve sborníku
% nacházet, já opravím údaj \firstpage, zplainuji to, zdvipsuji a
% pošlu obratem zpátky.

\newcount\firstpage   \firstpage=95
\newcount\numpages    \numpages=9

\input ofs [ffonts] \setfonts [Charter/10pt]

%\fontusage \showfonts \end
%\detailfontmessages

\fontdef\tt [CMTypewriter/]
\def\small {\setfonts[/9]\setmath[//]}

\hsize=12,2cm
\vsize=19,3cm
\hoffset=63pt
\voffset=43pt
\parindent=14pt

\lineskiplimit=-10pt
\raggedbottom

\exhyphenpenalty=10000
\widowpenalty=10000
\clubpenalty=10000

\showboxdepth=10 \showboxbreadth=50

\def\starthead{\global\headline=
     {\small \ifodd\pageno \hfil \thetitul \headspace \the\pageno 
     \else \the\pageno \headspace \theauthor \hfil \fi}}
\headline={\hfil\starthead}
\def\headspace{\hskip3em\relax}
\def\makeheadline{\vbox to0pt{\vskip-25pt
  \line{\vbox to8.5pt{}\the\headline}\vss}\nointerlineskip}
\footline={\setfonts[/7]\setmath[//]\baselineskip=9pt
     \vbox{\hbox{\copytext}\hbox{\copykonvoj}}\hfil
     \global\footline={}}
\def\lastpage{\advance\firstpage by\numpages \advance\firstpage by-1
     \the\firstpage}

\def\copytext{Jan Kasprzak, Petr Sojka (editoři): \SLT~2002 -- sborník
       semináře o~Linuxu a \TeX{}u, str. \the\firstpage--\lastpage, 2002.}
\def\copykonvoj{\copyright~Konvoj, CSTUG, CZLUG 2002}

\newcount\subnum

\def\kap #1\par{\advance\subnum by1
   \removelastskip
   \vskip17pt plus2pt minus1pt\noindent{\setfonts[/12]\bf
   \ifnum\subnum>1 \the\subnum\enspace\enspace\fi \let\CS=\bCS #1}%
   \par\nobreak\vskip11pt plus2pt minus1pt 
   \everypar{\setbox0=\lastbox \everypar={}}}
\def\reference {\subnum=-1 \kap Reference\par \small\baselineskip=11pt}
\def\bib{\par\advance\subnum by1 \leftskip=\parindent 
   \noindent\llap{\the\subnum.\enspace}\ignorespaces}

\def\titul #1 \par{\def\thetitul{#1}\pageno=\firstpage
   \centerline{\setfonts[/14.4]\bf 
   \let\CS=\bCS \let\boldsy=\bboldsy #1}\vskip20pt\relax}
\def\autor #1 \par{\def\theauthor{#1}
   \centerline{#1}\vskip10pt\relax}
\def\institut #1 \par{\centerline{\small #1}}
\def\email #1 \par{\centerline{\small Email: \tt #1}\vskip20pt\relax}
\def\abstrakt #1\par{\bgroup \small \baselineskip=11pt
   \leftskip=3em \rightskip=3em
   \noindent{\bf Abstrakt:}\enspace #1\par \egroup\bigskip}
\def\url#1{{\tt#1}}

\font\mflogo=logo10                       % METAFONT logo
\font\boldsy=cmbsy10 at12pt               % Tučné \CS, \AMS.
\font\bboldsy=cmbsy10 scaled\magstep2     % Tučné \CS v titulu

\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} \let\CSplain=\csplain
\def\mf{{\mflogo META}\-{\mflogo FONT}}
\def\mp{{\mflogo META}\-{\mflogo POST}}
\def\LaTeX{L\kern-.2em\raise.45ex\hbox{\setfonts[/mag.7] A}\kern-.05em\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\kern.05em\LaTeX} \let\CSLaTeX=\cslatex
\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}
\def\SLT{S\kern-0.025em\lower.5ex\hbox{L}\kern-.2emT}
\def\DOS{\hbox{DOS}}

%% 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
   \catcode`\"=12\catcode`\~=13 \obeylines
   \startverb}
{\catcode`\|=0 \catcode`\\=12
  |gdef|startverb#1\endtt{%
        |tt#1|nobreak|egroup|medskip|scannexttoken}}
{\obeyspaces\gdef {\ }}
\long\def\scannexttoken#1{\ifx#1\par\else\noindent#1\fi}

\def\citeref #1 #2 {\expandafter\def\csname cit:#1\endcsname{#2}}
\citeref cstexftp 1
\citeref parpozn  2
\citeref cstexman 3
\citeref t1accent 4
\citeref a2ac     5
\citeref lhotka   6
\citeref mnu      7
\def\cite#1{\expandafter\ifx \csname cit:#1\endcsname\relax
   \message{Warning: cite{#1} is not defined}[??]%
   \else [\csname cit:#1\endcsname]\fi}

%-------------------------------------------------------------------------

\titul  \CSTeX{} -- historie, současný stav a budoucnost
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\autor Petr Olšák

\institut Elektrotechnická fakulta ČVUT, Praha

\email olsak@math.feld.cvut.cz

\abstrakt 
  \CSTeX{} je podpora češtiny a slovenštiny v~\TeX{}u a sestává ze tří
   základních pilířů: \CSfont{}y, \CSplain{} a \CSLaTeX. V~přednášce bych se
   pozastavil podrobněji u~každého z~nich, zavzpomínal na to, co se
   kolem vývoje jednotlivých balíků odehrálo, upozornil na současné
   novinky a pokusil se odhadnout budoucí vývoj.


\kap Počátky \CSTeX{}u
%---------------------

Záznam o~počátcích počeštění \TeX{}u lze najít v~článku Ladislava
Lhotky~\cite{lhotka}. Autor zde píše, že se na podzim roku 1988 sešel
s~Petrem Novákem a dohodli se, že udělají české osmibitové fonty
(v~\mf{}u) a vzory dělení slov. Nejprve to vypadalo tak, že Láďa
Lhotka udělá fonty a Petr Novák vzory dělení, ale pak to dopadlo
přesně naopak.

Doslechl jsem se také, že v~době, kdy ještě neexistoval \TeX{} ve
verzi~3 (do roku 1989), Petr Novák vymyslel nějaké finty, při níž bylo
možno dosáhnout českých akcentovaných znaků pomocí ligatur 
v~\TeX{}ových metrikách.

Po vzniku \CSTUG{}u (konec roku 1990) se iniciativy nad rozšiřováním a
zvelebováním české a slovenské podpory pro \TeX{} ujal Olin
Ulrych. V~té době se tento projekt začal nazývat 
$\cal C\kern-.15em\lower.2ex\hbox{$\cal S$}$~\TeX, později
\CSTeX. Olin zapracoval Lhotkovy vzory dělení a Novákovy fonty, přidal
nějaká udělátka na úrovni preprocesoru a programy manipulující
s~"dvi". První distribuce byly postaveny na PC\TeX{}u, pak SB\TeX{}u.
V~roce 1992 přešel \CSTeX{} kopletně na em\TeX{}ovou distribuci pro
\DOS. Já jsem tehdy udělal program pro konfiguraci nabídek, který
spolupracoval s~\DOS{}ovými dávkami~\cite{mnu}. Členům sdružení jsme
v~letech 1993 a 1994 začali rozesílat disketové balíky s~em\TeX{}em a
s~českou a slovenskou podporou~-- \CSTeX.

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 textu přidržíme jen užšího významu
slova \CSTeX, definovaného takto:

{\it
\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.
}

V~roce 1996 jsem napsal {\it Pár poznámek k~novému
\CSTeX{}u\/}~\cite{parpozn}. Tento dokument má z~dnešního pohledu
poněkud zastaralý název, protože software z~roku~1996 dnes sotva
můžeme považovat za nový. Nicméně zde čtenář může najít podrobnou
historickou poznámku mapující léta 1992--1996. Už v~tomto textu z~roku
1996 se~snažím vymezit pojem \CSTeX{} poněkud šířeji, než jen em\TeX{}ová
distribuce obohacená o~podporu češtiny a slovenštiny.
Vymezil jsem ho ovšem až moc široko: pořád jsem za \CSTeX{}
považoval kompletní fungující distribuci \TeX{}u s~českou a slovenskou
podporou, i když pro blíže nespecifikovaný operační systém.

Na základě vymezení pojmu \CSTeX{} z~roku 1996 začaly vznikat ve ftp
adresáři \CSTeX{}u~\cite{cstexftp} podadresáře označené podle operačního 
systému či distribuce \TeX{}u (např. {\tt emtex}, {\tt web2c}), které
měly ambici nabídnout kompletní \TeX{}ovou distribuci včetně české a
slovenské podpory. Bohužel, udržovat všechny nabízené distribuce v~akuálním
stavu se nedalo při jednom muži zvládnout, a proto obsahy těchto
adresářů velmi rychle zastarávaly. 

V~roce 2002 jsem se při psaní nového 
{\it Manuálu k~\CSTeX{}u\/}~\cite{cstexman}
znovu zamyslel nad obsahem pojmu \CSTeX{} a pokusil jsem se jej
vymezit poněkud opatrněji -- stejně, jak je uvedeno zde.
Značná část textu v~tomto příspěvku pro konferenci \SLT~2002 
je převzata právě z~\cite{cstexman}.

Nově vymezený pojem \CSTeX{} se zhruba shoduje 
s~tzv.~{\it jádrem \CSTeX{}u}, což je slovní spojení použité 
už v~roce 1996 v~\cite{parpozn}. 
Jádro \CSTeX{}u (nově tedy \CSTeX{}) nabízím správcům jednotlivých
\TeX{}ových distribucí k~zařazení. Pro tyto účely jsem vytvořil nově
na ftp adresáři \CSTeX{}u adresář {\tt base}, který obsahuje tary
\CSTeX{}u k~zařazení do různých \TeX{}ových distribucí. Vzdávám se
tedy původní myšlenky udržovat kopie \TeX{}ových distribucí na ftp 
adresáři \CSTeX{}u v~akuálním stavu. 

\CSTeX{} i v~tomto užším smyslu dělím na část povinnou (required) 
a nepovinnou (recomended). Povinná část musí být kompletně instalovaná
v~\TeX{}ové distribuci, aby se o~ní mohlo říci, že 
\uv{obsahuje \CSTeX}. Při vzájemné výměně dokumentů \uv{psaných 
v~\CSTeX{}u} je totiž otázka, zda distribuce obsahuje \CSTeX{}, důležitá.
Povinná část obsahuje \TeX{}ová makra, vzory dělení a fonty,
které nejsou závislé na operačním systému ani na distribuci \TeX{}u.
Dají se tedy relativně snadno implementovat do jakékoli \TeX{}ové distribuce.
Nepovinná část obsahuje další doprovodný software, jako například 
{\tt csindex} (varianta programu {\tt makeindex}) nebo 
program~{\tt vlna} na doplňování vlnek za předložkami.

Povinná část \CSTeX{}u sestává ze tří základních pilířů: \CSfont{}y,
\csplain{} a \CSLaTeX. \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{} je jistou
modifikací běžně používaného formátu \LaTeX. Do povinné části
\CSTeX{}u je ještě zahrnuta podpora použití základních 35
PostScriptových fontů v~češtině a slovenštině prostřednictvím
virtuálních fontů.

O~historii, současném stavu a budoucnosti jednotlivých pilířů si
povíme podrobněji v~následujících kapitolách.

\kap \CSfont{}y
%-------------

Tvary akcentů \CSfont{}ů byly vytvořeny a implementovány v~jazyce
\mf{}u Petrem Novákem ve spolupráci s~českými výtvarníky 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.
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 obsahují distribuce odvozené z~te\TeX{}u implicitně 
kompletní \CSTeX.

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}~\cite{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 {\tt dvips} tak, aby program používal
léty osvědčený výstup z~\mf{}u, tedy bitmapy formátu {\tt pk}. 
Type1 \CSfont{}y byly původně konfigurovány výhradně pro pdf\TeX.

Rozhodnutí ponechat {\tt 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ě {\tt dvips}~-- {\tt ps2pdf} dostávají
roztřesená písmenka. Byl jsem uondán velmi častým odpovídáním na 
tuto otázku a vysvětlováním, jak použít {\tt dvips} s~jinou než 
výchozí konfigurací. Ani jsem se tedy nakonec nezlobil, když v~roce
2001 autor te\TeX{}u rozhodl, že bude \CSfont{}y pro {\tt dvips} implicitně
konfigurovat ve verzi Type1. Asi ty mikrotypografické kompromisy ani
tak moc nevadí, zatímco roztřesená písmenka v~PDF a neznalost použití
jiné než výchozí konfigurace {\tt dvips} způsobovala oheň na
střeše.

V~současné době existují volně dostupné nástroje, jako například
{\tt textrace} opírající se o~{\tt 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é a z~BaKoma fontů odvozené. Proto jsem zatím
alpha verzi Type1 formátu \CSfont{}ů z~roku 1988 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.


\kap Podpora základních 35 \ps{}ových fontů
%---------------------------------------

Tato podpora je zahrnuta do balíčku "cspsfonts.tar.gz" a
má méně bohatou historii než \CSfont{}y.
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řených pro český a slovenský
jazyk. Z~toho důvodu jsem si vytvořil program "a2ac"~\cite{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").  

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.
Česká a slovenská abeceda je v~těchto metrikách kódována stejně, jako
v~\CSfont{}ech, tj. podle ISO-8859-2. Právě tomuto kódování odpovídá 
koncovka~"8z".

Konečně 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. 

Do budoucna zvažuji rozšířit balíček "cspsfonts.tar" o~další metriky a
virtuální fonty~"*.8z" k~volně šířeným Type1 \ps{}ovým fontům. První
na řadě může být font Charter, kterým je vytvořen tento sborník.
Neuvědomil jsem si, že se tento font stal volně šířeným -- mám ho
totiž už léta kopuený. Takže metriky kódování "*8z" už mám dávno
hotové, jen zatím nebyly nikde zveřejněny.


\kap \csplain{}
%--------------

\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 "csplain.ini" a makro 
"csfonts.tex" umožňující při generování formátu číst přímo Knuthovo
makro "plain.tex", a přitom natáhnout místo CMfontů \CSfont{}y.

V~roce 1995 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 v~českém
dokumentu: tj. dokumenty vytvořené v~\csplain{}u před rokem 1995 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ů "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" nebo OFS). 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 a v~některých dokumentech by uvnitř "\uv" přestaly
fungovat verbatim konstrukce. 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. Tehdy jsem zařadil do \csplain{}u
alternativní kódování Cork, které samozřejmě není a nikdy nebude
v~\csplain{}u implicitní. Implicitní nadále zůstává kódování podle
ISO-8859-2, tedy podle \CSfont{}ů.
K~přidání podpory Corku 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.

Jsem si vědom problému s~touto změnou spojeném: do em\TeX{}u (binárky
"tex.exe" i "tex386.exe") se ani po změně paměťových parametrů pomocí
přepínačů nevejde pět vzorů dělení slov (angličtina, čeština 
v~ISO-8859-2 a v~Corku a slovenština v~ISO-8859-2 a v~Cokru).
V~této distribuci je možno formát vygenerovat jen binárkou
"htex386.exe". Proto zůstává podpora kódování podle Corku v~\csplain{}u
jako nepovinná, tj. nelze očekávat, že ji všichni uživatelé \CSTeX{}u
budou mít. Také se dá tato podpora vypnout pomocí "\let\Cork=\relax"
před zavedením souboru "csplain.ini".

Možná už tušíte, proč jsem čekal až do roku 2000 s~přidáním takového
rozšíření. Usoudil jsem, že na prahu nového tisíciletí už snad em\TeX{}ovou
distribuci moc lidí nepoužívá.

Pokud jde o~budoucnost \csplain{}u, pak nepředpokládám žádné výrazné
změny a vždy budu nekompromisně dodržovat zpětnou kompatibilitu. 
Jediná věc, která by mohla kompatibilitu ohrozit, je
zavedení kvalitnějších slovenských vzorů dělení slov. Věřím, že
slovenští kolegové raději přejdou na kvalitnější vzory dělení slov,
než aby lpěli na absolutní zpětné kompatibilitě s~ne příliš kvalitními
vzory dělení. Otázka pouze zůstává, kdo nové slovenské vzory dělení 
udělá\dots


\kap \cslatex{}
%--------------

\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í \LaTeX{}ového makra "\DeclareFontEncoding". Na své
soukromé 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 pravděpodobně také autorem
maker "\splithyphens" a "\standardhyphens", která zapínají a vypínají
inteligenci znaku~"-". 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 (balíček 
"cspsfonts.tar.gz"). V~té době byl ještě \cslatex{}u implementován
pro verzi \LaTeX{}u~2.09. V~em\TeX{}ové distribuci \CSTeX{}u je
stále tato implementace obsažena ("cslt209.zip" v~adresáři "emtex").
Součástí dnešního \CSTeX{}u ("cslatex.tar.gz" v~adresáři "base") 
už podpora této staré verze \LaTeX{}u není. 

Ačkoli možnost načíst vzory dělení jednoho jazyka ve více kódováních dal
\cslatex{}u už Jiří Zlatuška, byla tato možnost až do roku 1999
implicitně v~souboru "hyphen.cfg" vypnuta a \cslatex{}
bez editace tohoto souboru pracoval jen v~kódování \CSfont{}ů. Důvod
už jsem zmínil v~kapitole o~\csplain{}u: v~em\TeX{}ové distribuci se
pět vzorů dělení do paměti binárek "tex.exe" a "tex386.exe" prostě
nevešlo.

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~vyjímkou 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 
"docstrip"u.

Já osobně jsem o~\LaTeX{} a tím pádem \cslatex{} jevil od začátku
malý zájem, protože osobně používám \csplain.
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ž čtyři roky měli daleko
kvalitnější Ševečkovy vzory dělení. Tyto novější vzory dělení jsou
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". 

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 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 
schizofremií.

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 osobně. 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.

\kap Báječní muži na počítacích strojích
%---------------------------------------

Vzpomínám-li na přelom 80. a 90. let minulého století, pak z~hlediska
rychlosti rozvoje informačních technologií mluvím vlastně
o~počítačovém pravěku. Právě v~té době začal vznikat \CSTeX. Tak jako
\uv{báječní muži na létajících strojích} položili základy dnešní
letecké dopravy, stejně bychom o~lidech, kteří se v~té době motali
kolem počítačů mohli říkat \uv{báječní muži na počítacích
strojích}. Zvláště jsme pak vděčni těm, po kterých kromě nadšení a
okouzlení nad novou progresívní technikou zůstalo taky něco
užitečného. Podíváme-li se na historii \CSTeX{}u, můžeme směle
prohlásit, že tam najdeme takových báječných mužů celou řadu 
(ve svém článku jsem zmínil i jednu ženu).  Je možné, že jsem 
na někoho zapomněl, protože sám jsem se dostal k~\TeX{}u až relativně
pozdě: v~roce~1992. 


\reference

\bib Výchozí adresář \CSTeX{}u je na
     \url{http://petr.olsak.net/ftp/cstex}
     a kopie se nalézá na 
     \url{ftp://ftp.cstug.cz/pub/local/cstex}.
     V~dalších odkazech bude toto místo označováno jako 
     {\tt cstex:/}.

\bib Petr Olšák. {\it Pár poznámek k~novému \CSTeX{}u}. 
     Volně šířená dokumentace k~\CSTeX{}u, 
     viz~\url{cstex:/parpozn.tex} nebo \url{cstex:/parpozn.pdf}. 1996.

\bib Petr Olšák. {\it Manuál k~\CSTeX{}u}. 
     Dokumentace k~\CSTeX{}u,\url{cstex:/cstexman.tex} nebo 
     \url{cstex:/cstexman.pdf}. 2002.

\bib \url{http://petr.olsak.net/ftp/olsak/t1accent/}.

\bib \url{http://petr.olsak.net/ftp/olsak/a2ac/}.

\bib Ladislav Lhotka. {\it České dělení pro \TeX}. Zpravodaj
     Československého sdružení uživatelů \TeX{}u, 4/1991, 
     pp~8--9. 

\bib Petr Olšák. {\it Program MNU: Konfigurovatelné menu pro
     spouštění aplikací pod DOSem}. Zpravodaj
     Československého sdružení uživatelů \TeX{}u, 3/1992, pp~141--148.

\bye 

