1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476
|
<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="Wodzimierz Macewicz">
<meta name="Keywords" content="tex, dzielenie wyrazw, 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>
Bogusaw Jackowski,
Marek Ryko
</i><p>
<i></i><p>
</center>
<hr>
<i></i><p>
<i></i><p>
<h3>Spis treci</h3>
<dd><b><a href=#r1>Reguy dzielenia wyrazw w jzyku 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
wyrazw</a></b>
<dd><b><a href=#r4>Rczne tworzenie danych dla algorytmu dzielenia
wyrazw</a></b>
<dd><b><a href=#r5>Inne aspekty automatycznego dzielenia wyrazw</a></b>
<dd><b><a href=#r6>Uwagi kocowe</a></b>
<i></i><p>
<i></i><p>
<hr>
Ten nieco przewrotny tytu dotyczy oczywicie przenoszenia, czyli inaczej
dzielenia wyrazw, zwyczajowo zaznaczanego w tekstach kresk przypominajc
minus.
<p>
Automatyczne dzielenie wyrazw naley do podstawowych zada
wykonywanych przez programy komputerowe suce do skadania tekstw.
<p>
Jednym z najciekawszych algorytmw dzielenia wyrazw, a przy tym
dokadnie opisanych i udokumentowanych, posuguje si system TeX.
Jego ,,ciekawo'' polega na tym, e jest to
algorytm uniwersalny, tzn. dajcy si przystosowa do dzielenia wyrazw
w rnych jzykach, a jednoczenie zdumiewajco prosty i efektywny
w implementacji. Warto si temu algorytmowi przyjrze.
<h3><a name=r1>Reguy dzielenia wyrazw w jzyku polskim</a></h3>
eby zrozumie, jak trudne zadanie postawi przed sob Knuth, zajmijmy si
przez chwil reguami dzielenia wyrazw w jzyku polskim. M. Szymczak
(,,Sownik ortograficzny jzyka polskiego'', PWN, Warszawa, 1986) pisze:
<p>
,,(...) Dzielenie wyrazw przy przenoszeniu wyrazw z jednego wiersza do
nastpnego opiera si w ortografii polskiej na dwch kryteriach: fonetycznym
i morfologicznym. Kryterium fonetyczne nakazuje przenoszenie czci wyrazu
z jednego wiersza do drugiego zgodnie z podzielnoci na sylaby,
np. "bu rza", "nie wy trzy ma nie", "li to",
"po na pi sy wa li by", "za nie po ko jo ny", "wy so ko", "le piej",
"te go", "prze ciw". Kryterium morfologiczne nakazuje przenoszenie
czci wyrazu z jednego wiersza do drugiego zgodnie z podzielnoci na
przedrostek i rdze, a w wyrazach zoonych --- w miejscu zoenia,
np. "przed murze", "pod punkt", "wy brzee", "roz ka",
"od dwik", "przy kad", "za pata", "na trafi", "wy cigi",
"o brona", "bez wstyd", "u kadowy", "po dr", "pod oficer",
"pod oddzia", "na przd", "pod o pieczny", "po dmuch", "noc leg",
"konio krad". (...)''
<p>
przy czym
<p>
,,(...) kryterium morfologiczne jest nadrzdne w stosunku do kryterium
fonetycznego (...)''
<p>
Zasady oglne wygldaj prosto i przejrzycie. Omwienie zasad szczegowych
zajmuje Szymczakowi pi stron i o ile czowiekowi mogoby to wystarczy,
to jednak zalecenia takie jak:
<p>
,,(...) Jeeli przejrzysto podziau na przedrostek i rdze jest w <i><b>
dzisiejszej wiadomoci jzykowej zatarta</b></i> (podkr. aut.), grupy
spgoskowe znajdujce si na granicy czstek dzielimy dowolnie,
np. "o bok" a. "ob ok", "o trby" a. "ot rby", (...)''
<p>
bardzo trudno zalgorytmizowa.
<p>
Sprbujmy si zastanowi, czy nie ma takich zasad, od ktrych nie
byoby wyjtkw.
<p>
Dobrym kandydatem wydawa by si moga regua niedzielenia gosek "cz",
"dz", "rz" oraz "sz". Niestety, s wyjtki od tej reguy:
"tysic zotowy", "pod zwrotnikowy", "mar zn" i "em es zet".
Podobnie mikkie "ni" moe ulec rozbiciu, na przykad w sowie
"in iekcja".
<p>
To moe chocia da si ustali, e sylaba nie moe skada si z samych
spgosek? Jest to w zasadzie dobra regua, ale ma (co najmniej) jeden
wyjtek: szkocki przedrostek "Mc" wolno oddzieli. Na przykad nazwisko
"McMillan" wolno podzieli "Mc-Millan". Oczywicie implikuje to kopoty
z rzymskim zapisem liczb --- rok "MCMXCII" komputer mgby uzna za
szkockie nazwisko.
<p>
W takim razie moe istniej nie zakazy, a nakazy dzielenia, od ktrych nie ma
wyjtkw? Np. nakaz rozdzielania par identycznych spgosek ("wiec cy",
"Jagie o", "am my", "pan na", "ar ras", "las so", "get to" itp.).
Odpowied, jak atwo byo przewidzie, brzmi: ,,nie''. Np. kryterium
morfologiczne nakazuje podzia "ode ssie", a nie "odes sie", chyba e chodzi
o "Odess". A jeli si zgodzi, e przedrostek rodzimy musi by oddzielony,
to bdzie kopot ze sowem "zeppelin", bo jak komputer miaby si domyli,
e w tym przypadku nie chodzi o przedrostek "ze"? Mgby wprawdzie
wiedzie, e adne sowo w jzyku polskim nie zaczyna si od "pp" (chocia
jest sowo zaczynajce si od trzech spgosek, z czego dwie pierwsze to
"ww" --- prosz zgadn jakie to sowo). Ale jeli jaki autor chciaby
odda mow jkajcego si bohatera piszc np. "zeppsuuty", to co wtedy?
<p>
Niejednoznacznoci typu ,,"odessie"'' stanowi dla komputera trudno
praktycznie nie do pokonania. Cho jest ich niewiele, to jednak zdarzaj si
i utrudniaj ycie, np.: "podrowa" --- by w podry lub pokry rem
lica; "odziewa" --- ubiera lub odpowiedzie w taki sam sposb komu, kto
ziewn; "podrobi" --- np. karm ptactwu lub podpis;
"Tarzanie" --- sowo to moe oznacza wzywanie znanego bohatera komiksw
lub czynno tarzania si; "narwali" --- to sowo z kolei mona rozumie
jako czas przeszy dokonany albo dopeniacz liczby mnogiej.
<p>
W sytuacjach tego typu jedynie kontekst semantyczny decyduje o podziale
sowa. Rozsdnie jest nie da zbyt wiele od programw skadajcych teksty
i zostawi czowiekowi moliwo ingerencji w bardziej skomplikowanych
przypadkach.
<p>
Sporo trudnoci nastrcza dzielenie
nazwisk i nazw wasnych. O nazwiskach
szkockich ju bya mowa. Ale i polskie nazwy potrafi sprawi kopot. Na
przykad czy w nazwisku "Utnik" gosk "u" naley traktowa jako
przedrostek, tak jak w sowie "u tnie"? Szczeglnie trudne do podziau s
sowa bdce zbitk dwch lub wicej sw. Zalecany jest oczywicie podzia
w miejscu zoenia: "noc leg", "trzech set letni" itp. Zdarzaj si jednak
czasem bardzo osobliwe nazwy wasne, np. "Wierzch las". Chocia taki wanie
podzia wydaje si uzasadniony, to przecie trudno da gow, e nazwy tej
nie da si wywie od "wierzenia" i "chlastania". Podobnie gdyby jaka
miejscowo nazywaa si "Szynkwas", to nazwa mogaby si wywodzi
ostatecznie --- cho jest to mao prawdopodobne --- od "szyn" i "kwasu".
<p>
"Zeppelin" i "szynkwas" to przykady sw obcych bd obcego
pochodzenia, ktre zadomowiy si w naszym jzyku. Sowa tej kategorii, takie
jak np. "er zac", "jazz man" czy "soft ware", to rdo nowych
utrapie dla kogo, kto chciaby sformalizowa reguy dzielenia wyrazw
w jzyku polskim.
<p>
W tej sytuacji nie dziwi wyniki testw porwnawczych W. Puzy
(W. Puza, praca magisterska pt. ,,Analiza porwnawcza wybranych programw
Desktop Publishing (DTP)'', Instytut Poligrafii Politechniki Warszawskiej),
ktry stwierdzi, co nastpuje:
<p>
,,(...) Test sprawdzajcy poprawno dzielenia polskich sw
wyodrbni 3 rne poziomy skutecznoci testowanych programw:
<ul>
<li>Cyfroset, TeX -- ok. 10% bdw
<li>Dywiz (dedykowany dla Quark'a) -- powyej 20% bdw
<li>Bizon (dedykowany Calamusowi), VP Commander (dedykowany
Venturze) -- powyej 50% bdw. (...)''
</ul>
Tak wic pozornie trywialny problem okazuje si w praktyce trudnym
orzechem do zgryzienia.
<p>
Mona oczywicie polemizowa z wytycznymi jzykoznawcw. Zalecany przez
Szymczaka podzia "za jrze" lub "po jma" wydaje si dzi anachroniczny.
Pjcie dalej tym tropem, przy rwnoczesnym zasanianiu si ,,wymaganiami
komputerw'', powoduje, e zbyt kuszce staje si maksymalne upraszczanie
regu, oczywicie z uszczerbkiem dla jzyka polskiego.
<p>
Autor TeX-a obra zupenie inn drog: szuka takiego algorytmu, ktry
byby w zasadzie niezaleny od regu dzielenia wyrazw; reguy dzielenia
miayby by okrelone za pomoc danych do tego algorytmu. Algorytm
speniajcy te wymagania skonstruowa F. M. Liang (rozprawa doktorska
pt. ,,Word Hy-phen-a-tion by Com-put-er'', Uniwersytet Stanforda, USA,
1983). Udao mu si nawet co wicej: 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 wyrazw jest niezwykle prosty. Oczywicie przy zaoeniu,
e odpowiednie dane zostay utworzone. Zamy wic, e te dane mamy.
Skada si na nie zbir cigw utworzonych na przemian z liter
i cyfr, np.: <code>2s0z1z0</code>, <code>2s0z0l0n0</code>, <code>2t10</code> itp. Zamiast cyfry skrajnej moe
wystpi kropka, np.: <code>.w0e3s2</code>, <code>.w0w8</code>, <code>8r0s0z.</code>, <code>8r0z0.</code> itp. Cigi te
nazywa bdziemy wzorcami.
<p>
Przypumy teraz, e mamy dane jakie sowo, np. <code>odkaszln</code>. Najpierw
zamieniamy je na posta tak, jak maj wzorce, wstawiajc pomidzy literami
cyfr <code>0</code>, a na brzegach kropki, otrzymujc <code>.o0d0k0a0s0z0l0n00.</code>
(kropka --- jak std wida --- oznacza skraj sowa). Nastpnie wyszukujemy
w naszym zbiorze danych wszystkie wzorce, ktre na to sowo daj si naoy
w taki sposb, e zgadzaj si pooenia liter i kropek, ale niekoniecznie
cyfr; w szczeglnoci cyfra moe si nakada na kropk, ale nie na liter.
Powiedzmy, e znalelimy nastpujce wzorce: <code>.o2d2</code>,
<code>.o0d3k2</code>, <code>01</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>. Jeli
je naoymy na sowo <code>.o0d0k0a0s0z0l0n00.</code> i spord cyfr
nakadajcych si
na siebie wemiemy najwiksze, to otrzymamy <code>.o2d3k2a2s4z2l1n08.</code> --- i to
ju wszystko. Zgodnie z algorytmem Lianga sowo wolno podzieli jedynie
w takim miejscu, w ktrym pojawia si cyfra nieparzysta. Oznacza to, e
algorytm dopuszcza w tym wypadku dwa punkty podziau: "od-kaszl-n".
<p>
Wzorce przechowywane s w pamici komputera jako struktura drzewiasta
(dokadniej "trie"; p. D. E. Knuth, ,,The Art of
Computer Programming'', tom 3, ,,Sorting and Searching''). Pozwala to na
znaczne upakowanie danych przy zachowaniu szybkiego dostpu do informacji,
a rwnoczenie struktura danych i algorytm s stosunkowo atwo
implementowalne.
<p>
Warto podkreli, e dziki efektywnoci zastosowanej metody TeX moe
przechowywa w pamici kilka rnych zestaww wzorcw i dzieli wyrazy
w kilku jzykach w obrbie jednego dokumentu (a nawet akapitu).
<p>
Problem jedynie w tym skd wzi wzorce?
<h3><a name=r3>Automatyczne tworzenie danych dla algorytmu dzielenia
wyrazw</a></h3>
Gwna cz pracy Lianga dotyczya metody tworzenia wzorcw na podstawie
sownika zawierajcego sowa poprawnie podzielone. Przygotowanie takiego
sownika jest oczywicie czaso- i pracochonne, ale za to dalsza cz
zadania jest ju wzgldnie atwa. W najwikszym uproszczeniu algorytm Lianga
mona zapisa nastpujco:
<pre>
<i>m </i> := maksymalna dugo wzorca
<b>for</b> <i>c := 1</i> <b>to</b> <i>9</i> <b>do</b>
<b>begin</b>
ustal kryteria akceptowalnoci dla wzorcw
<b>for</b> <i>l:=1</i> <b>to</b> <i>m</i> <b>do</b>
<b>begin</b>
dla kadego sowa w sowniku sprawd, czy nie
dostarcza ono informacji o moliwoci wstawienia
cyfry <i>c</i> we wzorcach dugoci <i>l</i> przy
zadanych kryteriach akceptowalnoci
<b>end</b>
<b>end</b>
</pre>
Innymi sowy program uzupenia zestaw wzorcw kolejno dla coraz
wikszych cyfr i coraz duszych wzorcw, zostawiajc uytkownikowi na kadym
etapie moliwo ingerencji. Kryteria akceptowalnoci okrela si przez
podanie trzech liczb: wagi dla podziaw poprawnych <i>w<sub>p</sub></i>,
wagi dla podziaw niepoprawnych <i>w<sub>n</sub></i> i poziomu
akceptowalnoci <i>p</i>. Wzorzec jest akceptowany,
gdy <i>{k<sub>p</sub>w<sub>p</sub>-k<sub>n</sub>w<sub>n</sub>>= p}</i>,
gdzie <i>k<sub>p</sub></i> i <i>k<sub>n</sub></i> oznaczaj odpowiednio
liczb poprawnych i niepoprawnych podziaw generowanych przez dany wzorzec.
<p>
W niektrych przypadkach moe si zdarzy, e program nie znajdzie zestawu
wzorcw dzielcego poprawnie wszystkie sowa. Powodem mog by bdne dane
(np. w sowniku moe si znale dwa razy to samo sowo, ale inaczej
podzielone) bd niewaciwy dobr liczb <i>w<sub>p</sub></i>,
<i>w<sub>n</sub></i> oraz <i>p</i> w kolejnych
iteracjach. Rne strategie dobierania wartoci tych wspczynnikw wpywaj
na objto wynikowego zestawu wzorcw. Minimalizacja liczby wzorcw
w wygenerowanym automatycznie zestawie wymaga pewnej wprawy
i --- oczywicie --- przestudiowania pracy doktorskiej Lianga, gdzie
zagadnienie to jest szczegowo omwione.
<p>
Jak wida ,,nauczenie'' TeX-a zasad dzielenia wyrazw w danym jzyku jest
waciwie kwesti odpowiednio zasobnego sownika podzielonych poprawnie
wyrazw. Dostarczenie takiego sownika to zadanie dla jzykoznawcw.
Natomiast dalszy etap jest ideowo prosty, nie wymaga znajomoci technik
programowania, ani adnych innych specjalnych umiejtnoci. Potrzebna jest
jedynie cierpliwo.
<h3><a name=r4>Rczne tworzenie danych dla algorytmu dzielenia wyrazw</a></h3>
Moliwo automatycznego tworzenia zestawu wzorcw nie wyklucza moliwoci
stworzenia takiego zestawu rcznie. Pocztkowo wydawao si, e jzyk polski
ma na tyle regularne zasady dzielenia wyrazw, e atwiej bdzie utworzy
zestaw wzorcw w ten wanie sposb.
<p>
W 1984 J. Désarménienowi udao si zamkn reguy dzielenia
wyrazw dla
jzyka francuskiego w zestawie liczcym 804 wzorce i dla jzyka woskiego
w zestawie liczcym zaledwie 88 wzorcw, podczas gdy standardowy zestaw
wzorcw dla amerykaskiego TeX-a zawiera ich 4447
(J. Désarmé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
podejcia Désarméniena zainspirowa H. Koodziejsk, ktra
w roku 1987 opublikowaa list 2168 wzorcw dla jzyka polskiego
(H. Koodziejska, ,,Dzielenie wyrazw w systemie TeX'', Sprawozdania
Instytutu Informatyki Uniwersytetu Warszawskiego, nr 165, 1987).
Wynik Koodziejskiej zdawa si potwierdza wstpne zaoenia. Niestety. Po
kilku latach intensywnego testowania (maczali w tym palce m.in. autorzy
niniejszej pracy) wzorcw znacznie przybyo. Po gruntownej przerbce
liczebno zestawu wzorcw wzrosa do 4053 i wolno przypuszcza, e to
jeszcze nie koniec.
<p>
W tych warunkach zasadne staje si pytanie, czy nie naleaoby zrewidowa
zaoenia o regularnoci zasad podziau sw w jzyku polskim. Jest
prawdopodobne, e program Lianga mgby wygenerowa mniej liczny zestaw
wzorcw.
<p>
Tym niemniej, jak wynikao z porwna poczynionych przez Puz (p. wyej),
zestaw wzorcw dla jzyka polskiego w swojej obecnej postaci daje wyniki
zadowalajce. Zwaywszy, e Puza w istocie dysponowa jedn z wersji
porednich zestawu i e zestaw aktualny jest znacznie udoskonalony w stosunku
do tamtej wersji, mona oczekiwa jeszcze lepszych rezultatw.
<p>
Najaktualniejsza wersja tego zestawu wchodzi w skad pakietu MeX (polskiej
adaptacji TeX-a). Pakiet ten jest dystrubuowany w postaci rdowej jako
produkt "public domain" przez
GUST.
<h3><a name=r5>Inne aspekty automatycznego dzielenia wyrazw</a></h3>
Automatyczne znajdowanie miejsc podziau sw nie wyczerpuje spraw zwizanych
z dzieleniem wyrazw do celw skadu komputerowego. Jak zostao ju
wspomniane, czasami ingerencja czowieka staje si niezbdna. Poprawnie
zaprojektowany system skadu tak ingerencj powinien umoliwia. Uytkownik
powinien mie w szczeglnoci moliwo wprowadzenia zakazu dzielenia
niektrych sw.
<p>
W przypadku TeX-a nierozsdne byoby manipulowanie za kadym razem przy
zestawie wzorcw. Uytkownik TeX-a moe podzieli sowo wedug wasnego
uznania na dwa sposoby.
<p>
Pierwszy sposb to umieszczenie go na licie wyjtkw, nadrzdnej w stosunku
do wzorcw. Jest to, niestety, metoda wygodna jedynie w jzykach
niefleksyjnych. W jzyku polskim umieszczenie jakiego sowa na licie
wyjtkw wie si (w przypadku TeX-a) z podaniem od razu wszystkich jego
odmian, co jest raczej nieporczne. Na szczcie problem taki nie pojawia si
zbyt czsto. Gwnym powodem tego typu zabiegw bywaj sowa zoone lub
obcego pochodzenia (bd i jedno, i drugie).
<p>
Drugi sposb polega na wskazaniu w tekcie dodatkowych miejsc podziau
(ang. <em>discretionary hyphens</em>). Wikszo systemw DTP
oferuje tak moliwo uytkownikom. W przypadku TeX-a naley ostronie
posugiwa si t metod, bo mona przeszkodzi TeX-owi w automatycznym
wstawianiu drobnych odstpw midzy znakami (inaczej podci, ang. <em>implicit
kerns</em>).
<p>
TeX oferuje uytkownikowi jeszcze par innych moliwoci, pozwalajcych
na panowanie nad algorytmem podziau wyrazw.
<p>
Zabronienie podziau wyrazu jest w TeX-u spraw trywialn, wystarczy wyraz
,,zamkn'' w tzw. pudeko (TeX-owa komenda <code>\hbox</code>).
<p>
Uytkownik moe te okreli minimaln dugo oddzielonego pocztku
i koca sowa. Domylnie TeX nie podzieli sowa krtszego ni
picioliterowe: pocztek nie moe by krtszy ni dwie litery, koniec --- nie
krtszy ni trzy litery. Przy skadaniu w wskiej szpalcie moe si pojawi
konieczno zagodzenia tych rygorw, zwaszcza e w jzyku polskim za
dopuszczalne uznaje si oddzielanie pojedynczej samogoski na pocztku sowa
i dwuliterowej sylaby na kocu. Z drugiej strony w skadzie wysokiej jakoci
powinno si unika dzielenia wyrazw w ogle, a tym bardziej na zbyt krtkie
fragmenty. Moliwo sterowania wielkoci dzielonego sowa jest wic bardzo
przydatna w praktyce.
<p>
Zasady dobrego skadu wymagaj, aby wyrazy dzielone nie pojawiay si
w ssiednich wierszach i by ostatni wiersz na prawej stronie nie zawiera
sowa dzielonego. Skady nie speniajce tych wymogw uwaa si (i susznie)
za brzydkie. TeX dostarcza parametrw pozwalajcych skutecznie utrudnia
brzydkie skadanie. W szczeglnoci mona wrcz zabroni umieszczania sowa
dzielonego w ostatnim wierszu na stronie. Moe to sprawi pewne kopoty
algorytmowi amicemu wiersze na strony, ale to ju zupenie inna historia.
<p>
Zostaje jeszcze problem sw zawierajcych cznik, np. "biao-czerwony".
W jzyku angielskim sowa takie jak "machine-oriented" przenosi si
<pre>
"machine-"
"oriented"
</pre>
podczas gdy w jzyku polskim stanowczo zaleca si dostawienie
dodatkowo cznika na pocztku nastpnego wiersza:
<pre>
"biao-"
"-czerwony"
</pre>
TeX pozwala doczy do zestawu komend standardowych komendy definiowane
przez uytkownika. W MeX-u zostaa zdefiniowana komenda <code>\=</code>,
ktr naley podczas przygotowywania tekstu umieci w miejscu cznika.
Kontynuujc przykad, "biao-czerwony" naleaoby poda TeX-owi jako
<code>biao\=czerwony</code>. Uytkownik musi pamita o konsekwentnym
przestrzeganiu tej zasady, a o reszt zadba ju TeX. Pozostawienie zwykego
cznika oznacza sowo niepodzielne. Jest to przydatne w przypadku takich
sw jak np. "K-202", ktrych oczywicie dzieli nie naley.
<h3><a name=r6>Uwagi kocowe</a></h3>
Jak wida zagadnienie automatycznego dzielenia wyrazw to problem bardzo
obszerny. Wchodz tu w gr zagadnienia jzykoznawcze, typograficzne
i informatyczne.
<p>
Praktyka pokazuje, e bardzo efektywny algorytm automatycznego podziau sw,
w poczeniu z niekoniecznie bardzo wygodnymi moliwociami ingerowania
rcznego, stwarza uytkownikowi moliwo panowania w peni nad procesem
dzielenia sw przez system komputerowego skadu tekstw.
<p>
Wydaje si nam, e rozwizania zastosowane przez Knutha s na tyle
uniwersalne (a do tego sprawdzone w praktyce), e warto je szerzej
rozpropagowa. Mog si okaza szczeglnie przydatne w Polsce, gdzie rynek
software'owy dopiero powstaje i dobre <i>nomen omen</i> wzorce s rzecz nie
do pogardzenia.
<hr>
Zredagowa:
<em>Wodzimierz Macewicz</em>
<hr>
</body>
</html>
|