Page MenuHomec4science

hyph.html
No OneTemporary

File Metadata

Created
Tue, Jul 22, 02:58

hyph.html

This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-language" content="pl">
<meta name="Author" content="W³odzimierz Macewicz">
<meta name="Keywords" content="tex, dzielenie wyrazów, Wirtualna Akademia">
<title>Tam gdzie minus oznacza dzielenie</title>
</head>
<body bgcolor=#a0F0f0>
<center>
<h2>Tam gdzie minus oznacza dzielenie</h2>
<i></i><p>
<i></i><p>
autor: <i>
Bogus³aw Jackowski,
Marek Ryæko
</i><p>
<i></i><p>
</center>
<hr>
<i></i><p>
<i></i><p>
<h3>Spis tre¶ci</h3>
<dd><b><a href=#r1>Regu³y dzielenia wyrazów w jêzyku polskim </a></b>
<dd><b><a href=#r2>Jak TeX dzieli wyrazy </a></b>
<dd><b><a href=#r3>Automatyczne tworzenie danych dla algorytmu dzielenia
wyrazów</a></b>
<dd><b><a href=#r4>Rêczne tworzenie danych dla algorytmu dzielenia
wyrazów</a></b>
<dd><b><a href=#r5>Inne aspekty automatycznego dzielenia wyrazów</a></b>
<dd><b><a href=#r6>Uwagi koñcowe</a></b>
<i></i><p>
<i></i><p>
<hr>
Ten nieco przewrotny tytu³ dotyczy oczywi¶cie przenoszenia, czyli inaczej
dzielenia wyrazów, zwyczajowo zaznaczanego w tekstach kresk± przypominaj±c±
minus.
<p>
Automatyczne dzielenie wyrazów nale¿y do podstawowych zadañ
wykonywanych przez programy komputerowe s³u¿±ce do sk³adania tekstów.
<p>
Jednym z najciekawszych algorytmów dzielenia wyrazów, a przy tym
dok³adnie opisanych i udokumentowanych, pos³uguje siê system TeX.
Jego ,,ciekawo¶æ'' polega na tym, ¿e jest to
algorytm uniwersalny, tzn. daj±cy siê przystosowaæ do dzielenia wyrazów
w ró¿nych jêzykach, a jednocze¶nie zdumiewaj±co prosty i efektywny
w implementacji. Warto siê temu algorytmowi przyjrzeæ.
<h3><a name=r1>Regu³y dzielenia wyrazów w jêzyku polskim</a></h3>
¯eby zrozumieæ, jak trudne zadanie postawi³ przed sob± Knuth, zajmijmy siê
przez chwilê regu³ami dzielenia wyrazów w jêzyku polskim. M. Szymczak
(,,S³ownik ortograficzny jêzyka polskiego'', PWN, Warszawa, 1986) pisze:
<p>
,,(...) Dzielenie wyrazów przy przenoszeniu wyrazów z jednego wiersza do
nastêpnego opiera siê w ortografii polskiej na dwóch kryteriach: fonetycznym
i morfologicznym. Kryterium fonetyczne nakazuje przenoszenie czê¶ci wyrazu
z jednego wiersza do drugiego zgodnie z podzielno¶ci± na sylaby,
np. "bu&nbsp;rza", "nie&nbsp;wy trzy&nbsp;ma&nbsp;nie", "li&nbsp;to¶æ",
"po&nbsp;na&nbsp;pi&nbsp;sy&nbsp;wa&nbsp;li&nbsp;by", "za&nbsp;nie&nbsp;po&nbsp;ko&nbsp;jo&nbsp;ny", "wy&nbsp;so&nbsp;ko", "le&nbsp;piej",
"te&nbsp;go", "prze&nbsp;ciw". Kryterium morfologiczne nakazuje przenoszenie
czê¶ci wyrazu z jednego wiersza do drugiego zgodnie z podzielno¶ci± na
przedrostek i rdzeñ, a w wyrazach z³o¿onych --- w miejscu z³o¿enia,
np. "przed&nbsp;murze", "pod&nbsp;punkt", "wy&nbsp;brze¿e", "roz&nbsp;³±ka",
"od&nbsp;d¼wiêk", "przy&nbsp;k³ad", "za&nbsp;p³ata", "na&nbsp;trafiæ", "wy&nbsp;¶cigi",
"o&nbsp;brona", "bez&nbsp;wstyd", "u&nbsp;k³adowy", "po&nbsp;dró¿", "pod&nbsp;oficer",
"pod&nbsp;oddzia³", "na&nbsp;przód", "pod&nbsp;o&nbsp;pieczny", "po&nbsp;dmuch", "noc&nbsp;leg",
"konio&nbsp;krad". (...)''
<p>
przy czym
<p>
,,(...) kryterium morfologiczne jest nadrzêdne w stosunku do kryterium
fonetycznego (...)''
<p>
Zasady ogólne wygl±daj± prosto i przejrzy¶cie. Omówienie zasad szczegó³owych
zajmuje Szymczakowi piêæ stron i o ile cz³owiekowi mog³oby to wystarczyæ,
to jednak zalecenia takie jak:
<p>
,,(...) Je¿eli przejrzysto¶æ podzia³u na przedrostek i rdzeñ jest w <i><b>
dzisiejszej ¶wiadomo¶ci jêzykowej zatarta</b></i> (podkr. aut.), grupy
spó³g³oskowe znajduj±ce siê na granicy cz±stek dzielimy dowolnie,
np. "o&nbsp;b³ok" a. "ob&nbsp;³ok", "o&nbsp;trêby" a. "ot&nbsp;rêby", (...)''
<p>
bardzo trudno zalgorytmizowaæ.
<p>
Spróbujmy siê zastanowiæ, czy nie ma takich zasad, od których nie
by³oby wyj±tków.
<p>
Dobrym kandydatem wydawaæ by siê mog³a regu³a niedzielenia g³osek "cz",
"dz", "rz" oraz "sz". Niestety, s± wyj±tki od tej regu³y:
"tysi±c&nbsp;z³otowy", "pod&nbsp;zwrotnikowy", "mar&nbsp;zn±æ" i "em&nbsp;es&nbsp;zet".
Podobnie miêkkie "ni" mo¿e ulec rozbiciu, na przyk³ad w s³owie
"in&nbsp;iekcja".
<p>
To mo¿e chocia¿ da siê ustaliæ, ¿e sylaba nie mo¿e sk³adaæ siê z samych
spó³g³osek? Jest to w zasadzie dobra regu³a, ale ma (co najmniej) jeden
wyj±tek: szkocki przedrostek "Mc" wolno oddzieliæ. Na przyk³ad nazwisko
"McMillan" wolno podzieliæ "Mc-Millan". Oczywi¶cie implikuje to k³opoty
z rzymskim zapisem liczb --- rok "MCMXCII" komputer móg³by uznaæ za
szkockie nazwisko.
<p>
W takim razie mo¿e istniej± nie zakazy, a nakazy dzielenia, od których nie ma
wyj±tków? Np. nakaz rozdzielania par identycznych spó³g³osek ("¶wiec&nbsp;cy",
"Jagie³&nbsp;³o", "³am&nbsp;my", "pan&nbsp;na", "ar&nbsp;ras", "las&nbsp;so", "get&nbsp;to" itp.).
Odpowied¼, jak ³atwo by³o przewidzieæ, brzmi: ,,nie''. Np. kryterium
morfologiczne nakazuje podzia³ "ode&nbsp;ssie", a nie "odes&nbsp;sie", chyba ¿e chodzi
o "Odessê". A je¶li siê zgodziæ, ¿e przedrostek rodzimy musi byæ oddzielony,
to bêdzie k³opot ze s³owem "zeppelin", bo jak komputer mia³by siê domy¶liæ,
¿e w tym przypadku nie chodzi o przedrostek "ze"? Móg³by wprawdzie
wiedzieæ, ¿e ¿adne s³owo w jêzyku polskim nie zaczyna siê od "pp" (chocia¿
jest s³owo zaczynaj±ce siê od trzech spó³g³osek, z czego dwie pierwsze to
"ww" --- proszê zgadn±æ jakie to s³owo). Ale je¶li jaki¶ autor chcia³by
oddaæ mowê j±kaj±cego siê bohatera pisz±c np. "zeppsuuty", to co wtedy?
<p>
Niejednoznaczno¶ci typu ,,"odessie"'' stanowi± dla komputera trudno¶æ
praktycznie nie do pokonania. Choæ jest ich niewiele, to jednak zdarzaj± siê
i utrudniaj± ¿ycie, np.: "podró¿owaæ" --- byæ w podró¿y lub pokryæ ró¿em
lica; "odziewaæ" --- ubieraæ lub odpowiedzieæ w taki sam sposób komu¶, kto
ziewn±³; "podrobiæ" --- np. karmê ptactwu lub podpis;
"Tarzanie" --- s³owo to mo¿e oznaczaæ wzywanie znanego bohatera komiksów
lub czynno¶æ tarzania siê; "narwali" --- to s³owo z kolei mo¿na rozumieæ
jako czas przesz³y dokonany albo dope³niacz liczby mnogiej.
<p>
W sytuacjach tego typu jedynie kontekst semantyczny decyduje o podziale
s³owa. Rozs±dnie jest nie ¿±daæ zbyt wiele od programów sk³adaj±cych teksty
i zostawiæ cz³owiekowi mo¿liwo¶æ ingerencji w bardziej skomplikowanych
przypadkach.
<p>
Sporo trudno¶ci nastrêcza dzielenie
nazwisk i nazw w³asnych. O nazwiskach
szkockich ju¿ by³a mowa. Ale i polskie nazwy potrafi± sprawiæ k³opot. Na
przyk³ad czy w nazwisku "Utnik" g³oskê "u" nale¿y traktowaæ jako
przedrostek, tak jak w s³owie "u&nbsp;tnie"? Szczególnie trudne do podzia³u s±
s³owa bêd±ce zbitk± dwóch lub wiêcej s³ów. Zalecany jest oczywi¶cie podzia³
w miejscu z³o¿enia: "noc&nbsp;leg", "trzech&nbsp;set&nbsp;letni" itp. Zdarzaj± siê jednak
czasem bardzo osobliwe nazwy w³asne, np. "Wierzch&nbsp;las". Chocia¿ taki w³a¶nie
podzia³ wydaje siê uzasadniony, to przecie¿ trudno daæ g³owê, ¿e nazwy tej
nie da siê wywie¶æ od "wierzenia" i "chlastania". Podobnie gdyby jaka¶
miejscowo¶æ nazywa³a siê "Szynkwas", to nazwa mog³aby siê wywodziæ
ostatecznie --- choæ jest to ma³o prawdopodobne --- od "szyn" i "kwasu".
<p>
"Zeppelin" i "szynkwas" to przyk³ady s³ów obcych b±d¼ obcego
pochodzenia, które zadomowi³y siê w naszym jêzyku. S³owa tej kategorii, takie
jak np. "er&nbsp;zac", "jazz&nbsp;man" czy "soft&nbsp;ware", to ¼ród³o nowych
utrapieñ dla kogo¶, kto chcia³by sformalizowaæ regu³y dzielenia wyrazów
w jêzyku polskim.
<p>
W tej sytuacji nie dziwi± wyniki testów porównawczych W. Puzy
(W. Puza, praca magisterska pt. ,,Analiza porównawcza wybranych programów
Desktop Publishing (DTP)'', Instytut Poligrafii Politechniki Warszawskiej),
który stwierdzi³, co nastêpuje:
<p>
,,(...) Test sprawdzaj±cy poprawno¶æ dzielenia polskich s³ów
wyodrêbni³ 3 ró¿ne poziomy skuteczno¶ci testowanych programów:
<ul>
<li>Cyfroset, TeX -- ok. 10% b³êdów
<li>Dywiz (dedykowany dla Quark'a) -- powy¿ej 20% b³êdów
<li>Bizon (dedykowany Calamusowi), VP Commander (dedykowany
Venturze) -- powy¿ej 50% b³êdów. (...)''
</ul>
Tak wiêc pozornie trywialny problem okazuje siê w praktyce trudnym
orzechem do zgryzienia.
<p>
Mo¿na oczywi¶cie polemizowaæ z wytycznymi jêzykoznawców. Zalecany przez
Szymczaka podzia³ "za&nbsp;jrzeæ" lub "po&nbsp;jmaæ" wydaje siê dzi¶ anachroniczny.
Pój¶cie dalej tym tropem, przy równoczesnym zas³anianiu siê ,,wymaganiami
komputerów'', powoduje, ¿e zbyt kusz±ce staje siê maksymalne upraszczanie
regu³, oczywi¶cie z uszczerbkiem dla jêzyka polskiego.
<p>
Autor TeX-a obra³ zupe³nie inn± drogê: szuka³ takiego algorytmu, który
by³by w zasadzie niezale¿ny od regu³ dzielenia wyrazów; regu³y dzielenia
mia³yby byæ okre¶lone za pomoc± danych do tego algorytmu. Algorytm
spe³niaj±cy te wymagania skonstruowa³ F. M. Liang (rozprawa doktorska
pt. ,,Word Hy-phen-a-tion by Com-put-er'', Uniwersytet Stanforda, USA,
1983). Uda³o mu siê nawet co¶ wiêcej: dane s± stosunkowo ³atwe do
utworzenia, nie jest do tego bynajmniej potrzebna wiedza informatyczna.
<h3><a name=r2>Jak TeX dzieli wyrazy</a></h3>
Algorytm dzielenia wyrazów jest niezwykle prosty. Oczywi¶cie przy za³o¿eniu,
¿e odpowiednie dane zosta³y utworzone. Za³ó¿my wiêc, ¿e te dane mamy.
Sk³ada siê na nie zbiór ci±gów utworzonych na przemian z liter
i cyfr, np.: <code>2s0z1z0</code>, <code>2s0z0l0n0</code>, <code>2t1æ0</code> itp. Zamiast cyfry skrajnej mo¿e
wyst±piæ kropka, np.: <code>.w0e3s2</code>, <code>.w0w8</code>, <code>8r0s0z.</code>, <code>8r0z0³.</code> itp. Ci±gi te
nazywaæ bêdziemy wzorcami.
<p>
Przypu¶æmy teraz, ¿e mamy dane jakie¶ s³owo, np. <code>odkaszln±æ</code>. Najpierw
zamieniamy je na postaæ tak±, jak± maj± wzorce, wstawiaj±c pomiêdzy literami
cyfrê <code>0</code>, a na brzegach kropki, otrzymuj±c <code>.o0d0k0a0s0z0l0n0±0æ.</code>
(kropka --- jak st±d widaæ --- oznacza skraj s³owa). Nastêpnie wyszukujemy
w naszym zbiorze danych wszystkie wzorce, które na to s³owo daj± siê na³o¿yæ
w taki sposób, ¿e zgadzaj± siê po³o¿enia liter i kropek, ale niekoniecznie
cyfr; w szczególno¶ci cyfra mo¿e siê nak³adaæ na kropkê, ale nie na literê.
Powiedzmy, ¿e znale¼li¶my nastêpuj±ce wzorce: <code>.o2d2</code>,
<code>.o0d3k2</code>, <code>0±1</code>,
<code>2d1k0</code>, <code>2l1n0</code>, <code>2s0z1l0</code>,
<code>2s0z0l0n0</code>, <code>8æ.</code>, <code>0a1</code>,
<code>0o1</code>, <code>0s4z0</code>. Je¶li
je na³o¿ymy na s³owo <code>.o0d0k0a0s0z0l0n0±0æ.</code> i spo¶ród cyfr
nak³adaj±cych siê
na siebie we¼miemy najwiêksze, to otrzymamy <code>.o2d3k2a2s4z2l1n0±8æ.</code> --- i to
ju¿ wszystko. Zgodnie z algorytmem Lianga s³owo wolno podzieliæ jedynie
w takim miejscu, w którym pojawia siê cyfra nieparzysta. Oznacza to, ¿e
algorytm dopuszcza w tym wypadku dwa punkty podzia³u: "od-kaszl-n±æ".
<p>
Wzorce przechowywane s± w pamiêci komputera jako struktura drzewiasta
(dok³adniej "trie"; p. D. E. Knuth, ,,The Art of
Computer Programming'', tom 3, ,,Sorting and Searching''). Pozwala to na
znaczne upakowanie danych przy zachowaniu szybkiego dostêpu do informacji,
a równocze¶nie struktura danych i algorytm s± stosunkowo ³atwo
implementowalne.
<p>
Warto podkre¶liæ, ¿e dziêki efektywno¶ci zastosowanej metody TeX mo¿e
przechowywaæ w pamiêci kilka ró¿nych zestawów wzorców i dzieliæ wyrazy
w kilku jêzykach w obrêbie jednego dokumentu (a nawet akapitu).
<p>
Problem jedynie w tym sk±d wzi±æ wzorce?
<h3><a name=r3>Automatyczne tworzenie danych dla algorytmu dzielenia
wyrazów</a></h3>
G³ówna czê¶æ pracy Lianga dotyczy³a metody tworzenia wzorców na podstawie
s³ownika zawieraj±cego s³owa poprawnie podzielone. Przygotowanie takiego
s³ownika jest oczywi¶cie czaso- i pracoch³onne, ale za to dalsza czê¶æ
zadania jest ju¿ wzglêdnie ³atwa. W najwiêkszym uproszczeniu algorytm Lianga
mo¿na zapisaæ nastêpuj±co:
<pre>
<i>m </i> := maksymalna d³ugo¶æ wzorca
<b>for</b> <i>c := 1</i> <b>to</b> <i>9</i> <b>do</b>
<b>begin</b>
ustal kryteria akceptowalno¶ci dla wzorców
<b>for</b> <i>l:=1</i> <b>to</b> <i>m</i> <b>do</b>
<b>begin</b>
dla ka¿dego s³owa w s³owniku sprawd¼, czy nie
dostarcza ono informacji o mo¿liwo¶ci wstawienia
cyfry <i>c</i> we wzorcach d³ugo¶ci <i>l</i> przy
zadanych kryteriach akceptowalno¶ci
<b>end</b>
<b>end</b>
</pre>
Innymi s³owy program uzupe³nia zestaw wzorców kolejno dla coraz
wiêkszych cyfr i coraz d³u¿szych wzorców, zostawiaj±c u¿ytkownikowi na ka¿dym
etapie mo¿liwo¶æ ingerencji. Kryteria akceptowalno¶ci okre¶la siê przez
podanie trzech liczb: wagi dla podzia³ów poprawnych <i>w<sub>p</sub></i>,
wagi dla podzia³ów niepoprawnych <i>w<sub>n</sub></i> i poziomu
akceptowalno¶ci <i>p</i>. Wzorzec jest akceptowany,
gdy <i>{k<sub>p</sub>w<sub>p</sub>-k<sub>n</sub>w<sub>n</sub>&gt;= p}</i>,
gdzie <i>k<sub>p</sub></i> i <i>k<sub>n</sub></i> oznaczaj± odpowiednio
liczbê poprawnych i niepoprawnych podzia³ów generowanych przez dany wzorzec.
<p>
W niektórych przypadkach mo¿e siê zdarzyæ, ¿e program nie znajdzie zestawu
wzorców dziel±cego poprawnie wszystkie s³owa. Powodem mog± byæ b³êdne dane
(np. w s³owniku mo¿e siê znale¼æ dwa razy to samo s³owo, ale inaczej
podzielone) b±d¼ niew³a¶ciwy dobór liczb <i>w<sub>p</sub></i>,
<i>w<sub>n</sub></i> oraz <i>p</i> w kolejnych
iteracjach. Ró¿ne strategie dobierania warto¶ci tych wspó³czynników wp³ywaj±
na objêto¶æ wynikowego zestawu wzorców. Minimalizacja liczby wzorców
w wygenerowanym automatycznie zestawie wymaga pewnej wprawy
i --- oczywi¶cie --- przestudiowania pracy doktorskiej Lianga, gdzie
zagadnienie to jest szczegó³owo omówione.
<p>
Jak widaæ ,,nauczenie'' TeX-a zasad dzielenia wyrazów w danym jêzyku jest
w³a¶ciwie kwesti± odpowiednio zasobnego s³ownika podzielonych poprawnie
wyrazów. Dostarczenie takiego s³ownika to zadanie dla jêzykoznawców.
Natomiast dalszy etap jest ideowo prosty, nie wymaga znajomo¶ci technik
programowania, ani ¿adnych innych specjalnych umiejêtno¶ci. Potrzebna jest
jedynie cierpliwo¶æ.
<h3><a name=r4>Rêczne tworzenie danych dla algorytmu dzielenia wyrazów</a></h3>
Mo¿liwo¶æ automatycznego tworzenia zestawu wzorców nie wyklucza mo¿liwo¶ci
stworzenia takiego zestawu rêcznie. Pocz±tkowo wydawa³o siê, ¿e jêzyk polski
ma na tyle regularne zasady dzielenia wyrazów, ¿e ³atwiej bêdzie utworzyæ
zestaw wzorców w ten w³a¶nie sposób.
<p>
W 1984 J. D&eacute;sarm&eacute;nienowi uda³o siê zamkn±æ regu³y dzielenia
wyrazów dla
jêzyka francuskiego w zestawie licz±cym 804 wzorce i dla jêzyka w³oskiego
w zestawie licz±cym zaledwie 88 wzorców, podczas gdy standardowy zestaw
wzorców dla amerykañskiego TeX-a zawiera ich 4447
(J. D&eacute;sarm&eacute;nien,
,,The use of TeX in French: hyphenation and
typography'', w: D. Lucarella (ed.), ,,TeX for Scientific Documentation,
Proc. of the First European Conference, Addison-Wesley, 1984). Sukces
podej¶cia D&eacute;sarm&eacute;niena zainspirowa³ H. Ko³odziejsk±, która
w roku 1987 opublikowa³a listê 2168 wzorców dla jêzyka polskiego
(H. Ko³odziejska, ,,Dzielenie wyrazów w systemie TeX'', Sprawozdania
Instytutu Informatyki Uniwersytetu Warszawskiego, nr 165, 1987).
Wynik Ko³odziejskiej zdawa³ siê potwierdzaæ wstêpne za³o¿enia. Niestety. Po
kilku latach intensywnego testowania (maczali w tym palce m.in. autorzy
niniejszej pracy) wzorców znacznie przyby³o. Po gruntownej przeróbce
liczebno¶æ zestawu wzorców wzros³a do 4053 i wolno przypuszczaæ, ¿e to
jeszcze nie koniec.
<p>
W tych warunkach zasadne staje siê pytanie, czy nie nale¿a³oby zrewidowaæ
za³o¿enia o regularno¶ci zasad podzia³u s³ów w jêzyku polskim. Jest
prawdopodobne, ¿e program Lianga móg³by wygenerowaæ mniej liczny zestaw
wzorców.
<p>
Tym niemniej, jak wynika³o z porównañ poczynionych przez Puzê (p. wy¿ej),
zestaw wzorców dla jêzyka polskiego w swojej obecnej postaci daje wyniki
zadowalaj±ce. Zwa¿ywszy, ¿e Puza w istocie dysponowa³ jedn± z wersji
po¶rednich zestawu i ¿e zestaw aktualny jest znacznie udoskonalony w stosunku
do tamtej wersji, mo¿na oczekiwaæ jeszcze lepszych rezultatów.
<p>
Najaktualniejsza wersja tego zestawu wchodzi w sk³ad pakietu MeX (polskiej
adaptacji TeX-a). Pakiet ten jest dystrubuowany w postaci ¼ród³owej jako
produkt "public domain" przez
GUST.
<h3><a name=r5>Inne aspekty automatycznego dzielenia wyrazów</a></h3>
Automatyczne znajdowanie miejsc podzia³u s³ów nie wyczerpuje spraw zwi±zanych
z dzieleniem wyrazów do celów sk³adu komputerowego. Jak zosta³o ju¿
wspomniane, czasami ingerencja cz³owieka staje siê niezbêdna. Poprawnie
zaprojektowany system sk³adu tak± ingerencjê powinien umo¿liwiaæ. U¿ytkownik
powinien mieæ w szczególno¶ci mo¿liwo¶æ wprowadzenia zakazu dzielenia
niektórych s³ów.
<p>
W przypadku TeX-a nierozs±dne by³oby manipulowanie za ka¿dym razem przy
zestawie wzorców. U¿ytkownik TeX-a mo¿e podzieliæ s³owo wed³ug w³asnego
uznania na dwa sposoby.
<p>
Pierwszy sposób to umieszczenie go na li¶cie wyj±tków, nadrzêdnej w stosunku
do wzorców. Jest to, niestety, metoda wygodna jedynie w jêzykach
niefleksyjnych. W jêzyku polskim umieszczenie jakiego¶ s³owa na li¶cie
wyj±tków wi±¿e siê (w przypadku TeX-a) z podaniem od razu wszystkich jego
odmian, co jest raczej nieporêczne. Na szczê¶cie problem taki nie pojawia siê
zbyt czêsto. G³ównym powodem tego typu zabiegów bywaj± s³owa z³o¿one lub
obcego pochodzenia (b±d¼ i jedno, i drugie).
<p>
Drugi sposób polega na wskazaniu w tek¶cie dodatkowych miejsc podzia³u
(ang. <em>discretionary hyphens</em>). Wiêkszo¶æ systemów DTP
oferuje tak± mo¿liwo¶æ u¿ytkownikom. W przypadku TeX-a nale¿y ostro¿nie
pos³ugiwaæ siê t± metod±, bo mo¿na przeszkodziæ TeX-owi w automatycznym
wstawianiu drobnych odstêpów miêdzy znakami (inaczej podciêæ, ang. <em>implicit
kerns</em>).
<p>
TeX oferuje u¿ytkownikowi jeszcze parê innych mo¿liwo¶ci, pozwalaj±cych
na panowanie nad algorytmem podzia³u wyrazów.
<p>
Zabronienie podzia³u wyrazu jest w TeX-u spraw± trywialn±, wystarczy wyraz
,,zamkn±æ'' w tzw. pude³ko (TeX-owa komenda <code>\hbox</code>).
<p>
U¿ytkownik mo¿e te¿ okre¶liæ minimaln± d³ugo¶æ oddzielonego pocz±tku
i koñca s³owa. Domy¶lnie TeX nie podzieli s³owa krótszego ni¿
piêcioliterowe: pocz±tek nie mo¿e byæ krótszy ni¿ dwie litery, koniec --- nie
krótszy ni¿ trzy litery. Przy sk³adaniu w w±skiej szpalcie mo¿e siê pojawiæ
konieczno¶æ z³agodzenia tych rygorów, zw³aszcza ¿e w jêzyku polskim za
dopuszczalne uznaje siê oddzielanie pojedynczej samog³oski na pocz±tku s³owa
i dwuliterowej sylaby na koñcu. Z drugiej strony w sk³adzie wysokiej jako¶ci
powinno siê unikaæ dzielenia wyrazów w ogóle, a tym bardziej na zbyt krótkie
fragmenty. Mo¿liwo¶æ sterowania wielko¶ci± dzielonego s³owa jest wiêc bardzo
przydatna w praktyce.
<p>
Zasady dobrego sk³adu wymagaj±, aby wyrazy dzielone nie pojawia³y siê
w s±siednich wierszach i by ostatni wiersz na prawej stronie nie zawiera³
s³owa dzielonego. Sk³ady nie spe³niaj±ce tych wymogów uwa¿a siê (i s³usznie)
za brzydkie. TeX dostarcza parametrów pozwalaj±cych skutecznie utrudniaæ
brzydkie sk³adanie. W szczególno¶ci mo¿na wrêcz zabroniæ umieszczania s³owa
dzielonego w ostatnim wierszu na stronie. Mo¿e to sprawiæ pewne k³opoty
algorytmowi ³ami±cemu wiersze na strony, ale to ju¿ zupe³nie inna historia.
<p>
Zostaje jeszcze problem s³ów zawieraj±cych ³±cznik, np. "bia³o-czerwony".
W jêzyku angielskim s³owa takie jak "machine-oriented" przenosi siê
<pre>
"machine-"
"oriented"
</pre>
podczas gdy w jêzyku polskim stanowczo zaleca siê dostawienie
dodatkowo ³±cznika na pocz±tku nastêpnego wiersza:
<pre>
"bia³o-"
"-czerwony"
</pre>
TeX pozwala do³±czyæ do zestawu komend standardowych komendy definiowane
przez u¿ytkownika. W MeX-u zosta³a zdefiniowana komenda <code>\=</code>,
któr± nale¿y podczas przygotowywania tekstu umie¶ciæ w miejscu ³±cznika.
Kontynuuj±c przyk³ad, "bia³o-czerwony" nale¿a³oby podaæ TeX-owi jako
<code>bia³o\=czerwony</code>. U¿ytkownik musi pamiêtaæ o konsekwentnym
przestrzeganiu tej zasady, a o resztê zadba ju¿ TeX. Pozostawienie zwyk³ego
³±cznika oznacza s³owo niepodzielne. Jest to przydatne w przypadku takich
s³ów jak np. "K-202", których oczywi¶cie dzieliæ nie nale¿y.
<h3><a name=r6>Uwagi koñcowe</a></h3>
Jak widaæ zagadnienie automatycznego dzielenia wyrazów to problem bardzo
obszerny. Wchodz± tu w grê zagadnienia jêzykoznawcze, typograficzne
i informatyczne.
<p>
Praktyka pokazuje, ¿e bardzo efektywny algorytm automatycznego podzia³u s³ów,
w po³±czeniu z niekoniecznie bardzo wygodnymi mo¿liwo¶ciami ingerowania
rêcznego, stwarza u¿ytkownikowi mo¿liwo¶æ panowania w pe³ni nad procesem
dzielenia s³ów przez system komputerowego sk³adu tekstów.
<p>
Wydaje siê nam, ¿e rozwi±zania zastosowane przez Knutha s± na tyle
uniwersalne (a do tego sprawdzone w praktyce), ¿e warto je szerzej
rozpropagowaæ. Mog± siê okazaæ szczególnie przydatne w Polsce, gdzie rynek
software'owy dopiero powstaje i dobre <i>nomen omen</i> wzorce s± rzecz± nie
do pogardzenia.
<hr>
<a href=../index.html><img src="../gify/lew-7vs.gif" hspace=10 border=0 align=left></a>
<a href=mailto:W.Macewicz@ia.pw.edu.pl><img src="../gify/mail.gif" hspace=10 align=left></a>
Zredagowa³</br>
<a href=http://www.ia.pw.edu.pl/~wujek/index.html>W³odzimierz Macewicz</a><br clear=all>
<hr>
</body>
</html>

Event Timeline