
                               Program VLNA
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    verze 1.4                  Petr Olšák

Program vlna přidává vlnky (místo původních mezer) za neslabičné předložky
ve vstupních souborech pro TeX. To zabrání zlomu řádku v nežádoucím místě.

Není použit název "vlnka", abychom odlišili původní program vlnka
(autoři O. Ulrych, Š. Kasal) od tohoto programu vlna. Jedná se o
vylepšenou a zcela nově napsanou verzi, která není důsledně zpětně
kompatibilní s původním programem vlnka.

POUŽITÍ:
--------

vlna [opt] [jména souborů]

[opt] jsou nepovinné přepínače, které musí být odděleny mezerou a uvozeny
znakem "-". Mohou být uvedeny v libovolném pořadí.

PŘEPÍNAČE:
----------

-f : Režim "filtr". V tomto režimu jsou jména souborů interpretována takto:
       vlna -f soubor1 soubor2   ... soubor1 -> soubor2 (musí: in!=out)
       vlna -f soubor1           ... soubor1 -> stdout
       vlna -f                   ... stdin   -> stdout
     Není-li program v režimu filtr, pak jsou jména souborů interpretována
     takto:
        vlna soubor1 [soubor2 [soubor3...]]
     Zde je každý soubor "ovlnkován" samostatně, tj. soubory jsou měněny.
     Není-li uveden parametr -r, jsou vytvářeny zálohy k souborům
     s vlnkou na konci jména.
-s : Tichý režim. Program nevypisuje úvodní zprávu, varovné zprávy a
     statistiky o změnách v souborech. Tyto texty se vypisují do stderr,
     takže v režimu filtr není nutné -s zapínat, pokud umíme oddělit stderr
     od stdout. V tichém režimu se vypíše jen chyba, která předčasně ukončí
     činnost programu.
-r : Nevytvářet (mazat) zálohy. Není-li program v režimu filtr, pak se ke
     každému souboru vytváří záloha s vlnkou na konci jména. Takové soubory
     se interně vytvářejí vždy při běhu programu v režimu ne-filtr. Je-li
     uveden parametr -r, jsou na konci zpracování tyto zálohy mazány.
     V režimu filtr nemá -r žádný vliv.
-v znaky : Definice znaků, které budeme považovat za neslabičné předložky,
     tj. k ovlnkování. Implicitní hodnota -v KkSsVvZzOoUuAI je použitím
     tohoto parametru přepsána. Mezi -v a skupinou znaků musí být mezera.
-x kód : Vyhledané  místo se implicitně nahrazuje vlnkou.  Místo toho jej
     můžete nechat nahrazovat libovolným stringem.  Kód za parametrem
     -x  je  hexadecimálně  vyjádřený  string,  nula  je  ve  stringu
     povoleným znakem.  Takže -x C2A0  vymezuje  dvouznakový  string:
     místo  každé  vlnky  budou  vloženy dva byty, první s kódem C2 a
     druhý s kódem A0. Podle unicodové  tabulky  tento  pžíklad  tedy
     způsobí  nahrazování  znakem  NO-BREAK  SPACE při kódování UTF8.
     Jine příklady: -x 00A0 nahrazování  znakem  NO-BREAK  SPACE  při
     kódování  UTF16, -x 41484F4A nahrazování textem AHOJ.  Mezi -x a
     kódem musí být mezera.
-m : Ignoruje přechody do matematického režimu ($...$ a $$...$$) a vlnkuje
     i v těchto prostředích. Imlicitně v matematických prostředích nevlnkuje.
-n : Ignoruje přechody do verbatim režimu (\verb<zn>...<zn>, \begtt...\endtt)
     a vlnkuje i v těchto prostředích.
-l : LaTeX mód. K výše uvedeným sekvencím ohraničující display math
     mód je přidáno \begin{display}...\end{display}  a 
     \begin{equation}...\end{equation}. K sekvencím ohraničující 
     verbatim mód je přidáno \begin{verbatim}...\end{verbatim}
-w : web mód. K sekvencím ohraničujícím verbatim mód je přidáno
     @< nebo @d ... @* nebo @mezera nebo @>| . To způsobí, že není
     provlnkovaný kód programu ve web souborech, ale jenom komentáře.

POZNÁMKY:
---------

* Před předložkou může být libovolné množství otevíracích závorek, 
  před kterými musí být mezera nebo začátek řádku. Před otevírací
  svorkou může také být místo mezery TeXova "\sekvence" (od verze 1.2).
  Např. ([{(V tomto případě bude vlnka za V. Stejně tak
  se vlnka objeví \boldfont{V tomto případě}.
* Veškeré aktivity programu je možné vypnout sekvencí %~- a zapnout
  sekvencí %~+ (mezi uvedenými znaky může být libovoné množství mezer)
* Program kontroluje konzistenci matematických režimů. Dá varování 
  v těchto případech:
  Vstup do display uvnitř t-math (např. $ ...$$... $). -- přejde do display.
  Prázdný řádek uvnitř t-math nebo display -- přejde do standardního režimu.
  Poznamenejme, že uvnitř display se ignorují výskyty jednoho dolaru
  naprosto bez varování, protože ty většinou mohou být součástí \hbox-u.
  Při -m není konzistence math. módů kontrolována.
* Program kontroluje konzistenci verbatim módů na konci souboru.
  Nebyl-li verbatim mód ukončen, objeví se varování. Tento test
  neprobíhá, pokud je nastaven přepínač -n nebo -w.
* Program nedoplňuje vlnky za písmena, která vypadají "jako"
  předložky, ale následují bezprostředně za sekvencemi \TeX nebo
  \LaTeX, tj. např. v textu "Vlastnosti \TeX u jsou" nepřidá vlnku
  mezi u a j. Sekvence \TeX a \LaTeX jsou zatím natvrdo implementovány
  do programu. Otázka čtení množiny takových sekvencí z konf. souboru
  (nebo odjinud) bude (možná) zahrnuta v další verzi.

TIPY K POUŽITÍ PROGRAMU:
------------------------

vlna -m -n -s -r soubor ... odpovídá zhruba volání původního vlnka.
Není to zcela přesné, protože program navíc nevlnkuje za slovy \TeX a
\LaTeX a to se nedá vypnout.

vlna *.tex ... provlnkuje všechny soubory s příponou .tex.
Pracuje pouze na UNIXu.

vlna -f soubor > /dev/null ... provede test konzistence math a
verbatim módů a neudělá žádnou změnu.

HISTORIE TOHOTO PRODUKTU:
-------------------------

Původní verzi programu vlnka vytvořil zhruba v roce 1990 Oldřich Ulrych 
v Pascalu. Další vylepšení v Pascalském programu udělal Štěpán Kasal.
Tento Pascalský program je šířen v balíku CSTeX. 

Zde uvedená varianta programu (vlna) byla napsána v únoru 1995 pro
použití v UNIXových prostředích, a proto v jazyce C. Přesněji byl
použit prostředek CWEB, který umožňuje snadno číst zdrojový text a
snadno jej modifikovat. Program byl zcela přepracován (z původního
Pascalského kódu nebylo použito vůbec nic) a byl do něj implementován
algoritmus rozpoznávání tzv. patternů (jednoduchých regulárních
výrazů).

Tato varianta programu byla testována na SUN OS a na MS DOS.

V únoru 1998 mi poslal pan Rudof Čejka Makefile a manuálovou stránku 
k programu a ve zdrojovém kódu poravil drobné chyby. 

23.2.1995    Petr Olšák.

