Documentverwerking P04 Paragraafverwerker & Woordsplitsing Prof.Dr.ir. Patrick P. Bergmans Faculteit IngenieursWetenschappen Universiteit Gent
ParagraafVerwerker (1) De ParagraafVerwerker (“typographic engine” of ook nog “text engine”) krijgt als input: Een rij karakters (tekens), bestaande uit woorden gescheiden door “wit” (= spaties) meervoudige spaties -> één spatie spaties in ‘t begin en op ‘t einde vervallen De breedtetafel van de gebruikte lettersoort in een bepaald eenhedenstelsel De breedte van de te produceren tekstregels Een aantal verwerkingsparameters (links, rechts, center of uitgevuld)
ParagraafVerwerker (2) De ParagraafVerwerker produceert als output: De tekst “versneden” in tekstregels Voor elke tekstregel, de positie van het eerste karakter Voor elke tekstregel, de waarde van het variabel wit (spatie) Deze tekstregels worden ofwel direct uitgebracht, ofwel opgeslagen voor verdere verwerking Het outputformaat van de PV is dikwijls enigszins gestandaardiseerd
ParagraafVerwerker (3) De ParagraafVerwerker werkt Regel per regel, of Globaal op de hele paragraaf (TeX) Wij zullen slechts de eerste vorm bestuderen Woordsplitsing is een inherente functie van de PV, maar is dikwijls uitgevoerd als een afzonderlijke module Vormt een onderwerp op zichzelf Is dikwijls heel complex
ParagraafVerwerker (4) Paragraafverwerking versnijdt een paragraaf in een aantal tekstregels Paragraafverwerking is één van de begrippen van algemene tekstverwerking Hierbij worden de volgende elementen aangewend Algemene gegevens, specifiek voor het document Verwerkingparameters, die de stijl bepalen Van het gehele document Paragraaf per paragraaf Of soms veranderlijk zijn binnen een paragraaf Lettersoorten (“fonts”) en lettersoorttabellen
ParagraafVerwerker (5) Algemene gegevens Verwerkingparameters Lettersoorten (fonts) Abc def ghi klm nop qrs x¶ Bac fed ghi kl wyz¶ Paragraafverwerker Abc def ghi klm nop qrs x¶Bac fed ghi kl wyz¶
ParagraafVerwerker (6) Een belangrijk inwendig begrip is de “geaccumuleerde zetbreedte” (GZ) Wordt op 0 gezet in het begin van elke nieuwe regel Bij elk nieuw input karakter wordt de GZ vermeerderd met de breedte van het karakter, afgeleid uit (behandeling van spaties, zie verder) De breedtetafel De korpsgrootte Wanneer de GZ in de buurt van de kolom-breedte komt, moeten bepaalde beslissingen genomen worden
ParagraafVerwerker (7) Behandeling van woordspaties bij de berekening van de GZ Woordspaties krijgen een nominaal aantal eenheden (NORGAP) Deze waarde wordt gebruikt bij de doorlopende berekening van de GZ, telkens een spatie voorkomt Daarnaast worden nog twee waarden opgegeven, de minimale waarde (MINGAP) en de maximale waarde (MAXGAP) Die waarden worden gebruikt bij einderegel- berekeningen
ParagraafVerwerker (8) Voor de gevallen L(inks), C(enter) en R(echts) Zodra op ‘t einde van een woord, de GZ groter is dan de kolombreedte Wordt het woord weggelaten Wordt het “overtollige wit” (OW) berekend, en Rechts gelaten, Links/Rechts verdeeld, Links geplaatst, naargelang de parameter (L, C of R) Hiermee wordt de positie van het eerste karakter bepaald Het weggelaten woord wordt naar de volgende regel overgebracht Zonder spatie
ParagraafVerwerker (9) Kolombreedte GZ Spatie=NORGAP OW L C R X
ParagraafVerwerker (10) Voor geval J (uitvullen of “Justifiëren”) Wordt eerst geprobeerd het woord in de beschikbare zetbreedte “samen te drukken” Hiervoor moet de spatie tussen woorden verkleind worden, door het “breedte tekort” (BT) gedeeld door het aantal spaties, van elke woordspatie af te trekken Indien deze woordspatie nog groter is dan MINGAP, wordt het woord op de regel gelaten Indien niet, wordt het woord naar de volgende regel overgebracht
ParagraafVerwerker (11) Dan wordt geprobeerd de regel “uit te rekken” Het overtollige wit (zoals bij L, C, R) wordt verdeeld over de woordspaties in de regel Opgelet: wel één spatie minder Indien deze nog kleiner is dan MAXGAP, wordt de regel zó uitgebracht Soms zijn beide “oplossingen” geldig, en de volgorde van de testen in het algoritme bepaalt welke weerhouden wordt Indien dit nog niet lukt, moet normaal woord-splitsing gebruikt worden Een routine/procedure wordt opgeroepen om de “toegelaten” splitsingpunten van het woord te bekomen Hot-ten-tot-ten-ten-ten-ten-toon-stel-ling
ParagraafVerwerker (12) Kolombreedte GZ BT OW J1 J2 X
Woordsplitsing (1) Er zijn twee criteria voor woordsplitsing Grammatica Esthetiek Woordsplitsingen die correct zijn volgens de grammatica, zijn niet noodzakelijk aanvaardbaar wegens een gebrekkige typografische esthetiek Mede-werker & Me-dewerker Ver-werken & Verwer-ken Appel-moes & Ap-pelmoes Driepunten-methode & Drie-puntenmethode
Woordsplitsing (2) Het is soms onmogelijk, zonder de tekst te “begrijpen”, correct te splitsen Buur-tje & Buurt-je (nl) Rec-ord & Re-cord (eng) Voor talen met samengestelde woorden (Germaanse talen) is het steeds aangewezen tussen de samengestelde woorden te splitsen Al dan niet met koppelteken Om zoveel mogelijk bij de betekenis te blijven Driepuntenmethode Merk wel: Engels is een taal met weinig samenstellingen
Woordsplitsing (3) Zelfs wanneer het correct is volgens de grammatica, splitst men nooit zodanig dat één of twee letters afgesplitst worden, met uitzondering van prefixen Be-werken, maar niet be-delaar Hoe splitst men bedelen? Bij het splitsen zal men dus als volgt te werk gaan: Bepalen van de splitsingpunten volgens de grammatica Met behulp van regels Met behulp van tabellen Met gemengde methodes (regels met tabellen en uitzonderingen)
Woordsplitsing (4) Een aantal splitsingpunten worden geëlimineerd, wegens gebrekkige esthetiek Men kent aan de verschillende splitsingpunten een gewichtscoëfficiënt toe Bijvoorbeeld hoogst tussen samengestelde woorden Men probeert ook te splitsen daar waar de spatie het dichtst bij NORGAP zal vallen Uiteindelijk wordt een compromis gemaakt in functie van soms tegengestelde eisen Geen enkel splitsingprogramma is perfect, en verschillende programma’s, zelfs met dezelfde PV geven doorgaans verschillende resultaten
Woordsplitsing (5) Kolombreedte GZ J gap berekeningen splitsing gewichten 1 2 3 2 1 J