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:
- mezi číslem a jednotkami:
10 kg
- mezi iniciálou a jménem:
P. Satrapa
- v datu:
1. ledna 2000
- 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:
- k vyznačení rozdělení slova na konci řádku (tento případ ve Webu odpadá, protože klienti nedělí slova)
- k oddělení zvratné částice li (budeme-li)
- k oddělení částí složenin (česko-slovenský)
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:
- k oddělení částí věty – asi takto; s mezerami kolem sebe
- k vyznačení číselného intervalu (0–9); bez mezer
- jelikož HTML nenabízí žádnou konstrukci pro matematický symbol "mínus", je vhodné použít pomlčku i v těchto případech; pokud představuje mínus odečítání, dělají se kolem něj mezery (y = x – 1); jestliže slouží jako negace, připojuje se těsně k hodnotě, kterou neguje (–6)
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. Chceteli 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 skb
PID (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 - skoba
a skoba.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.bat
a souskoba.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
–
. 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
<
a>
. Zapneteli 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
Při instalaci v prostředí operačního systému Unix k němu přidejte
Pro MS-DOS a jeho potomky budete potřebovat