☰ menu
Pavel Satrapa

SKoBA
Satrapův Korektor Běžných Ašíbok

SKoBA je jednoduchý program, který se snaží odstraňovat z HTML souborů nejběžnější typografické chyby. Jeho činnost spočívá ve vkládání mezer se zakázaným zlomem řádku na vhodná místa a nahrazování některých pomlček spojovníky. Aktuální verzi hledejte na adrese http://www.nti.tul.cz/~satrapa/sw/skoba/.

Proč

Klasická typografie, která se poklidně vyvíjela několik staletí, prodělala ve druhé polovině dvacátého století dva velké šoky. Nejprve byla digitalizována a posléze virtualizována. Počítače, vybavené vhodnými (a často i nepříliš vhodnými) programy se ocitly v roli sazečovy pravé ruky, v řadě případů jej však zcela nahradily. Virtualizace spočívá v tom, že poslední dobou se stále větší a větší množství dokumentů začíná šířit nepapírovými cestami - v podobě CD-ROM disků a WWW stránek.

Oba zmíněné šoky představují tak trochu vpád barbarů do Říma. Díky digitalizaci se výroba různých letáčků, časopisů či knih stala masovou záležitostí. Účastní se jí mnohdy lidé, kteří o typografii v životě neslyšeli. Vedeni dobrým úmyslem a oslněni možnostmi technologie, kterou mají k dispozici, páchají neskutečné kýče. WWW jim pak poskytlo možnost tyto své výdobytky vystavit celému světu na odiv.

Program SKoBA vznikl především proto, abych připomněl, že typografie existuje a že texty ve Webu by se měly řídit alespoň jejími nejzákladnějšími pravidly. Realizace některých z nich je poměrně nudná a naštěstí mechanizovatelná. Právě o tuto mechanizaci SKoBA usiluje a podává tak pomocnou ruku všem, kteří mají dobrou vůli dodržovat staletá pravidla.

Nevhodné řádkové zlomy

Jedno z těchto pravidel říká, že není hezké, když se jednopísmenná předložka (jako je třeba "s", "k" nebo "v") ocitne na konci řádku. Ani typografové nejsou jednotní v tom, která konkrétní jednopísmenná slova vlastně mohou či nemohou ukončovat řádek. Za všeobecně přípustnou se například považuje spojka "a", ale zpravidla už ne "A". Ovšem typografové jsou vystaveni silnému tlaku pravého okraje. Ten zpravidla musí udržovat zarovnaný, takže každé dostupné místo pro zlom řádku je pro ně přínosem.

Ve Webu nemusíme škudlit. Klienti pravý okraj nezarovnávají, takže klidně můžeme vyhlásit pravidlo: na konec řádku nesmí přijít žádná z jednopísmenných spojek či předložek. V praxi to znamená, že mezeru za tímto slovem musíte učinit nezlomitelnou - tedy vytvořit ji symbolem  .

Ovšem dělat něco takového ručně je pracné, nepříliš zábavné a náchylné k chybám. Program SKoBA to naštěstí udělá za vás. Můžete svůj text napsat tak, jak jste zvyklí. Ve fázi závěrečných úprav na něj vypusťte SKoBU a ona nahradí obyčejné mezery za jednopísmennými slovy mezerami nezlomitelnými.

Další specialitu z hlediska řádkového zlomu představuje pomlčka. Podle zákonů typografie smí ukončovat řádek, nikoli však zahajovat. V případě pomlček tedy je třeba učinit nezlomitelnou mezeru před nimi. Také tohle dělá SKoBA automaticky.

Ne každá pomlčka však tvoří součást věty. Někdy slouží například k vyznačení položky v seznamu či k podobným účelům. Proto se SKoBA zajímá jen o pomlčky, které jsou z obou stran obklopeny mezerami a nacházejí se uvnitř řádku. Bez povšimnutí nechává ty, jimiž řádek začíná.

Existují i další místa, která nejsou vhodná pro řádkový zlom. Patří mezi ně následující mezery:

  1. mezi číslem a jednotkami: 10 kg
  2. mezi iniciálou a jménem: P. Satrapa
  3. v datu: 1. ledna 2000
  4. v čísle, pokud oddělujete trojice řádů mezerami (což byste podle tuzemských typografických pravidel měli dělat): 12 345

Tato místa však v podstatě nelze vyhledávat automaticky a o nezlomitelnost zdejších mezer se musíte postarat sami. Přesněji řečeno by bylo možné mechanizovat alespoň některá z pravidel. Nepodařilo by se však ošetřit všechny případy a frekvence chyb by obávám se byla natolik vysoká, že kontrola výsledků programu by zabrala více času, než ruční vkládání nezlomitelných mezer.

Pomlčka versus spojovník

Málo lidí bohužel ví, že existuje několik druhů pomlček. Těmi nejzákladnějšími je běžná pomlčka (–) a spojovník (-). Jak vidíte (alespoň doufám :-), spojovník je o poznání kratší a baculatější. V klasické typografii se používá ve třech případech:

Kolem spojovníku se nikdy nedělají mezery. Na stránku jej vložíte znakem pomlčka, což je poměrně matoucí.

Naproti tomu běžná pomlčka se zapisuje symbolem –. Používá se v těchto situacích:

Neustále pamatovat na to, kdy použít pomlčku a kdy spojovník, je poměrně nepříjemná záležitost. Většina z nás proto oba dotyčné znaky zapisuje v podobě pomlčky. Naštěstí je v takovém případě poměrně snadno určitelné, která pomlčka má být ve skutečnosti spojovníkem. Bude to ta, která je z obou stran bez mezery obklopena písmeny. U ostatních konstrukcí SKoBA nahradí pomlčku symbolem –.

Jelikož práce s pomočkami v klientech nemusí být vždy konzistentní (zejména u starších exmplářů), je nahrazování pomlček spojovníky v programu SKoBA volitelné. Vypnete jej, pokud v přiřazovacím příkazu

$pomlcky = 1;

na začátku zdrojového textu nahradíte jedničku nulou.

Použití programu

Program je vytvořen v jazyce Perl. Chcete-li jej používat, musíte si nejprve zprovoznit interpret tohoto jazyka. Pokud jej ještě nemáte, doufám, že na serveru www.perl.org najdete verzi pro svůj operační systém.

Jádrem SKoBY je soubor skoba.pl. Prožeňte jej interpretem (Unix se o to postará automaticky díky prvnímu řádku, jinde použijte příkaz perl skoba.pl) a dostanete filtr. HTML kód načítá ze standardního vstupu a na výstup odesílá tentýž kód, ovšem s provedenými úpravami. Chcete­li tedy zpracovat soubor dopis.html a výsledek uložit do souboru finale.html, použijte v Unixu příkaz

skoba.pl <dopis.html >finale.html

a v MS DOSu

perl skoba.pl <dopis.htm >finale.htm

Ve většině případů by se však spíše hodilo měnit soubory "na místě". Tedy ve stávajícím kódu nahradit na patřičných místech mezery obyčejné nezlomitelnými a mezery spojovníky. O to se stará obalující dávkový soubor pod názvem skoba (resp. skoba.bat). Všechny soubory, které mu zadáte jako parametry, nechá zpracovat výše zmíněným filtrem. Pokud například chcete, aby doplnil nezlomitelné mezery do všech HTML souborů v aktuálním adresáři, použijte příkaz

skoba *.html

Program pro svou činnost používá pracovní soubor. V operačním systému Unix má jméno skbPID (kde PID je číslo procesu, které dostal přiděleno od operačního systému) a je uložen v adresáři /tmp. Pro MS DOS je jméno souboru pevné: skb???.tmp a ukládá se do aktuálního adresáře. Po ukončení činnosti je soubor smazán. SKoBA nemění text ve značkách (mezi znaky < a >)! Znaky uvnitř značek považuji za příliš choulostivé a nerad bych riskoval, že SKoBA změní nežádoucím způsobem např. lokátor souboru.

Instalace programu

Operační systém Unix

Zde je instalace prostinká. Stačí umístit oba soubory - skobaskoba.pl - do adresáře, kde se hledají programy (např. /usr/local/bin). Pak již jen nastavte požadované chování (viz níže).

Operační systém MS DOS

Zde je instalace poněkud složitější. Přesuňte soubor skoba.pl do vhodného adresáře. Nejlépe někam, kde jej interpret Perlu bude automaticky hledat a nemusí se mu zadávat celá cesta k souboru, v principu však postačí libovolný adresář. V souboru souskoba.bat upravte ve volání interpretu perl tak, aby obsahovalo skutečnou cestu k souboru skoba.pl. Poté uložte soubory skoba.batsouskoba.bat do adresáře, kde se vyhledávají programy (je uveden v proměnné prostředí PATH). Na závěr také upravte parametry v souboru skoba.pl podle svého přání.

Ovlivnění činnosti skoba.pl

Pro zasahování do funkčních vlastností SKoBY máte k dispozici tři proměnné, které najdete na začátku zdrojového textu skoba.pl.

pomlcky
Určuje, zda má SKoBA nahrazovat pomlčky, které nemají funkci spojovníku, symbolem &ndash;.
errreport
Když už se SKoBA zajímá o značky (aby dokázala vynechávat text v nich), dokáže provádět i velmi jednoduché testy správnosti. Spočívají v kontrole, zda ve zdrojovém textu správně párují znaky <>. Zapnete­li tuto vlastnost (hodnotou 1), ohlásí nalezené nesrovnalosti. Vypíše vždy číslo řádku a zprávu u tom, co nalezla. Tyto zprávy zapisuje do standardního chybového výstupu (stderr).
Nezapínejte tuto vlastnost v prostředí MD DOSu! Jelikož tento systém neodděluje standardní výstup od chybového, promíchala by se chybová hlášení s výsledky programu a byla by "zabudována" do stránky.
hledane
Tato proměnná obsahuje regulární výraz, identifikující jednopísmenná slova. Implicitně je nastaven tak, aby SKoBA rozpoznala všechny jednopísmenné spojky a předložky češtiny. Pokud tedy program nalezne samotné písmeno "g", nepovažuje je za jednopísmenné slovo a nebude si jej všímat.

Distribuce

V každém případě budete potřebovat soubor

skoba.pl

Při instalaci v prostředí operačního systému Unix k němu přidejte

skoba

Pro MS-DOS a jeho potomky budete potřebovat

souskoba.bat
skoba.bat