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..., \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.