
%% The cstrip manual
%% (C) 1998, Petr Ol\v s\'ak

%% WARNING: do not process this file by csplain until you know
%%          that your csplain is correctly installed.
%%          The cstripm.dvi or cstripm.ps may be destroed!
%%          Use the *original* cstripm.dvi or cstripm.ps for
%%          information how to valiadte the csplain format.

\chyph  % use format: csplain
\exhyphenpenalty=10000
\newcount\num
{\obeyspaces \gdef\activespace{\obeyspaces\let =\ }}
\def\setverb{\def\do##1{\catcode`##1=12}\dospecials}
\def\ttinput #1 {\bigskip \begingroup
   \par \setverb \activespace \def\par{\endgraf\indent}\obeylines\tt
   \input #1 \endgroup \vfill\break}

\def\b #1.{\medskip\noindent\hbox to\parindent{\bf{#1.}\hfil}\ignorespaces}
\def\ttshow #1\par{\par\nobreak\medskip\indent{\tt #1}\medskip}

\def\CS{$\cal C\kern-.1667em\lower.5ex\hbox{$\cal S$}\kern-.075em $}
\chardef\\=`\\

\def\titul#1\par{\bigskip\noindent{\bf#1}\medskip}
\def\sub#1\par{\par\bigskip\noindent{\bf#1}\par\nobreak\medskip}



\titul Test CSTRIP -- testování správnosti implementace formátu csplain
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Cílem tohoto testu je ověřit správnou funkci generovaného formátu
{\tt csplain} a v~souvislosti s~tím i vhodnost implementace binárního
programu \TeX{}. Tento formát musí na {\it každém\/} systému, kde je
nějakým způsobem implementována česká nebo slovenská abeceda, dávat
{\it naprosto stejné\/} výsledky. Jedině tak je zaručeno, že přenos
dokumentů v~{\tt csplain}u mezi různými operačními systémy bude bez
komplikací.

Protože nezávislost samotného \TeX{}u na systému je zabezpečena jinými
prostředky, zaměřuje se tento test na jedinou záležitost, která je ovšem
pro práci s~českým nebo slovenským jazykem klíčová. Jde o~test správné
funkce formátu {\tt csplain} v~souvislosti s~volbou kódování vstupních
dokumentů v~daném operačním systému. Existence tohoto testu vyplývá
z~nepříjemné skutečnosti, že v~různých operačních systémech mohou být
(a také jsou) přijaty různé kódovací standardy pro implementaci české a
slovenské abecedy.

Předpokládá se, že přenos dokumentů v~textových souborech (například
{\tt*.tex}) mezi různými operačními systémy je vždy spojen s~konverzí
tohoto dokumentu do kódování použitého v~hostitelském systému. Zda se o~to
postará klient e-mailu automaticky, nebo se provede automatická konverze na
úrovni WWW přenosu mezi serverem a klientem nebo uživatel sám po přijetí
dokumentu provede překódování (v~editoru nebo externím programem)
není podstatné. Podstatné je, aby v~situaci, kdy uživatel vidí
ve svém textovém editoru v~souboru {\tt *.tex} písmeno ž, tak aby stejné
písmeno viděl v~{\tt dvi} prohlížeči a při výstupu {\tt dvi} na různé
tiskárny. Také je potřebné, aby toto písmeno ž uživatel viděl nezkresleně
v~případě potřeby v~souborech {\tt *.log} produkovaných \TeX{}em. Stejně je
důležité, aby toto písmeno viděl v~pracovních souborech, které jsou
generovány \TeX{}em prostřednictvím primitivu {\tt\\write}.

Výstup \TeX{}u do {\tt dvi} musí být nezávislý na operačním systému. Fonty,
se kterými pracují {\tt dvi} ovladače, jsou rovněž implementovány jako
nezávislé na systému. Je tedy přirozené, že o~konverzi mezi vstupním
kódováním a výstupem do {\tt dvi} se musí postarat \TeX. Je to nezbytné
zvláště tehdy, když je v~operačním systému zvolen jiný standard kódování,
než jaký je přijat ve formátu {\tt csplain}. Tam jsou akcentované znaky
české a slovenské abecedy uspořádány podle normy ISO-8859-2.


\sub Jak provést test
%%%%%%%%%%%%%%%%%%%%%

V~distribuci {\tt csplain}u naleznete soubory {\tt cstrip.tex},
{\tt cstripl.vrf} a {\tt cstripd.vrf}. Jsou distribuovány jako textové
soubory pro UNIX (UNIXové konce řádků) v~kódování ISO-8859-2.

\b 1. Soubory {\tt cstrip.tex} a {\tt cstripl.vrf} prohlédněte ve svém
editoru, který implementuje nějaké kódování, jež budete ve svém systému
používat. Pokud uvedené soubory v~editoru nezobrazují správně všechna
akcentovaná písmena české a slovenské abecedy, konvertujte tyto soubory do
kódování, které je v~souladu s~implementací národní abecedy na vašem
operačním systému. Pak tyto soubory znovu prohlédněte editorem a uložte na
disk. Soubor {\tt cstripd.vrf} nemusíte konvertovat, protože obsahuje pouze
znaky z~ASCII tabulky. Kromě konverze kódování se postarejte o~správné
převedení konců řádků, aby byly v~souladu se standardem používaným ve vašem
operačním systému.

\b 2. Pokud nemáte generovaný formát {\tt csplain}, vygenerujte jej podle návodu
v~{\tt csplain.doc}.

\b 3. Spusťte \TeX{} s~formátem {\tt csplain} na soubor {\tt cstrip.tex}.
Způsob spuštění je závislý na implementaci \TeX{}u. Obvykle to provedete
příkazovým řádkem:

\ttshow csplain cstrip

\TeX{} vygeneruje soubory {\tt cstrip.log} a {\tt cstrip.dvi}. Pomocí
programu {\tt dvitype} konvertujte výstup {\tt cstrip.dvi} do souboru
{\tt cstrip.txt}. Například použijte povel:

\ttshow dvitype cstrip.dvi cstrip.txt

\b 4. Překontrolujte, zda se soubor {\tt cstrip.log} neliší od souboru
{\tt cstripl.vrf}. Rovněž překontrolujte, zda se soubor
{\tt cstrip.txt} neliší od souboru {\tt cstripd.vrf}.

\b 5. Pokud nemáte k~dispozici program {\tt dvitype}, pak stačí, abyste na
obrazovce po spuštění {\tt dvi} prohlížeče na soubor {\tt cstrip.dvi}
viděli text, uvedený v~dodatku~D tohoto dokumentu.


\sub Rozdílnosti testovaných souborů, které jsou v~normě
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\b 1. První (resp. další) řádky obsahují tzv.~banner, ve kterém je napsán
název programu, verze, název implementace \TeX{}u a datum zpracování. Tyto
řádky se mohou v~různých systémech lišit. Rovněž verze formátu za slovy

\ttshow The format: csplain

\noindent může být ve vaší instalaci odlišná.
Konečně ve vašem logu může být navíc řádek podobný tomuto:

\ttshow The CP1250->ISO-8859-2 re-encoding is activated by encTeX

\b 2. Některé rozměry uvedené v~{\tt cstrip.txt} mohou být nepatrně odlišné,
protože \TeX{} používá pro umístění znaků při vyhodnocování pružných
mezer aritmetiku plovoucí čárky, která je závislá na architektuře počítače.
Nikdy se ale nemůže stát, že by rozmístění textu do řádků dopadlo jinak, než
podle vzorového {\tt cstripd.vrf} nebo ukázky v~dodatku~D.

\b 3. Některé implementace \TeX{}u definují jinou délku řádků v~{\tt log}u,
než obvyklých 80 znaků. V~takovém případě vidíte řádky v~souboru
{\tt cstrip.log} roztrhané v~jiných místech, než ve vzorovém
{\tt cstripl.vrf}.


\sub Rozdílnosti, které nejsou v~normě
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Obecně lze říci, že jakákoli odlišnost, která není uvedena v~předchozím
odstavci, znamená, že formát {\tt csplain} {\it není korektně instalován}.
Uveďme dva nejčastější problémy.

\b 1. Ve výstupu v~{\tt cstrip.log} nejsou všechny rovnosti kódů
typu {\tt 193=193} splněny. To je fatální chyba, protože pak dochází
k~destrukci písmen české nebo slovenské abecedy ve výstupu do {\tt dvi}

\b 2. Soubor {\tt cstrip.log} obsahuje místo akcentovaných znaků znaky
typu {\tt\char`\^\char`\^ae}. To je rovněž fatální chyba, protože
nebude možno pracovat s~akcentovanými znaky v~{\tt csplain}u při práci
s~textovými soubory generovanými primitivem {\tt\\write}. Argument, že tyto
soubory jsou při {\tt\\catcode`\\\char`\^=7} \TeX{}em opětovně správně
načteny, neobstojí, protože {\tt csplain} by mělo být možné používat pro
generování textových souborů primitivem {\tt\\write} i pro jiné účely.

\medskip

Náprava: upravte zdrojový kód \TeX{}u prostřednictvím souboru {\tt tex.ch}
v~sekcích označených jako \uv{system dependencies} (sekce 21 a 23) a
kompilujte \TeX{} znova do binární podoby spustitelného programu.
V~uvedených sekcích máte možnost deklarovat kódování vstupních textů a
tisknutelnost znaků zpátky do {\tt log}u a {\tt\\write} souborů.
Vnitřní kódování akcentovaných znaků v~\TeX{}u se předpokládá v~případě
formátu {\tt csplain} podle ISO-8859-2.

Výše uvedené doporučení je v~souladu s~Knuthovou koncepcí použití \TeX{}u
v~různých operačních systémech. Bohužel, kódování akcentovaných
znaků v~\TeX{}u je v~různých formátech stanoveno různě a rovněž je různě
standardizováno toto kódování v~různých systémech. Pro každý případ byste
museli mít speciální binární program \TeX, což je neúnosné. Doporučuji tedy
použít úpravu \TeX{}u zvanou enc\TeX{} a kompilovat program s~touto
úpravou. Budete mít možnost až v~době generování formátu určovat,
které znaky budou v~logu čitelné a jakým způsobem budou tam i zpět
překódovány.

Druhou možností je použít em\TeX{} (volná implementace \TeX{}u pro DOS a
OS/2). em\TeX{} při volbě {\tt -8} umožní čitelný výstup do {\tt log}u a
volbou tzv. {\tt tcp} tabulky lze nastavit překódování z~prostředí
systému do vnitřního kódování \TeX{}u a zpět do {\tt log}u.

Nemáte-li možnost kompilovat \TeX{} ze zdrojových textů a přitom nemůžete
nebo nechcete použít už kompilovaný em\TeX{} či enc\TeX{} či \TeX{}
s~analogickou úpravou, máte smůlu.


\sub Poznámka o~pasívním použití formátu {\tt csplain}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Předpokládejme, že vaše implementace formátu {\tt csplain} není korektní.
Pokud ale {\tt cstrip.dvi} odpovídá vzoru v~případě, kdy vstupní soubor
{\tt cstrip.tex} ponecháte v~kódování ISO-8859-2 (ačkoli ve vašem systému
je použito třeba jiné kódování), můžete formát {\tt csplain} používat
pasívně. Tím se rozumí toto: každý dokument před zpracováním formátem
{\tt csplain} budete muset konvertovat do kódování ISO-8859-2. Většinu
dokumentů ve formátu {\tt csplain} získaných ze sítě (které nevytvářejí
speciální soubory primitivem {\tt\\write}) můžete tedy zpracovat.

Nekorektní implementace formátu {\tt csplain} (vyhovující například pouze
pasívnímu použití) {\it se nesmí dále distribuovat pod názvem\/}
{\tt csplain}.

\bigskip

Říjen 1998 \hfill Petr Olšák

\vfill\break

\sub Dodatek A~-- obsah souboru {\tt cstrip.tex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Soubor {\tt cstrip.tex} musíte vidět ve svém editoru takto:

\ttinput cstrip.tex


\sub Dodatek B -- obsah souboru {\tt cstrip.log}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Soubor {\tt cstrip.log} musí po zpracování {\tt csplain}em vypadat
následovně:

\ttinput cstripl.vrf


\sub Dodatek C -- obsah souboru {\tt cstrip.txt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Po zpracování souboru {\tt cstrip.dvi} programem {\tt dvitype} musíte
dostat následující výsledek:

\ttinput cstripd.vrf


\sub Dodatek D -- jak má vypadat {\tt cstrip.dvi} v~prohlížeči
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pokud nemáte možnost použít program {\tt dvitype} k~ověření správnosti
souboru {\tt cstrip.dvi}, můžete aspoň spustit prohlížeč na tento soubor.
Na obrazovce byste měli vidět následující skupinu znaků:

\bigskip
\begingroup
\let\bye=\relax
\input cstrip
\endgroup

\end
