J. Přichystal, J. Rybička

Podobné dokumenty
Principy odstavcové sazby

. Seznámení se systémem TEX. Zpracování textů na počítači. Ing. Pavel Haluza, Ph.D. ústav informatiky PEF MENDELU v Brně haluza@mendelu.

Principy odstavcové sazby

ANALYTICKÁ GEOMETRIE V ROVINĚ

K OZA SE PASE NA POLOVINĚ ZAHRADY Zadání úlohy

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Typografické programy (1) WYSIWYG

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

CVIČNÝ TEST 41. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

Dijkstrův algoritmus

CVIČNÝ TEST 35. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Microsoft Office Word 2003

Lidé komunikují prostřednictvím dokumentů připravovaných elektronicky.

Aplikovaná matematika I

Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, IČO: Projekt: OP VK 1.5

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

CVIČNÝ TEST 36. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Klauzurní část školního kola kategorie A se koná

DTP v systému LATEX.

4EK213 LINEÁRNÍ MODELY

Šablona pro zadávání otázek pro přijímací řízení pro akademický rok 2009/2010

GRAFICKÉ ŘEŠENÍ ROVNIC A JEJICH SOUSTAV

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

SYLABUS 9. PŘEDNÁŠKY Z INŢENÝRSKÉ GEODÉZIE

Řešení 1b Máme najít body, v nichž má funkce (, ) vázané extrémy, případně vázané lokální extrémy s podmínkou (, )=0, je-li: (, )= +,

Využití tabulkového procesoru MS Excel

PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII

First Prev Next Last Go Back Full Screen Close Quit. Roman Plch katedra matematiky PřF MU. 3. května 2005

7.5.3 Hledání kružnic II

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Algoritmizace prostorových úloh

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

INFORMATIKA. Grafické studio ve škole

0.1 Úvod do lineární algebry

Obsah 1. Obsah. Sazba dokumentů v LATEXu 2 Úvod... 2 Vstupy... 3 Ceník... 6 Kontakt... 7 Ukázky Tvorba hudebnin v prostředí LilyPond 10

Základy počítačové sazby v systému

Geometrické vyhledávání

Typografické programy (1) WYSIWYG

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A

UPLATNĚNÍ ADITIVNÍHO INDEXOVÉHO ROZKLADU PŘI HODNOCENÍ FINANČNÍ VÝKONNOSTI ODVĚTVÍ ČESKÝCH STAVEBNÍCH SPOŘITELEN

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

Lingebraické kapitolky - Analytická geometrie

1.1 Napište středovou rovnici kružnice, která má střed v počátku soustavy souřadnic a prochází bodem

VE 2D A 3D. Radek Výrut. Abstrakt Tento článek obsahuje postupy pro výpočet Minkowského sumy dvou množin v rovině a pro výpočet Minkowského sumy

Kartografické stupnice. Přednáška z předmětu Tematická kartografie (KMA/TKA) Otakar Čerba Západočeská univerzita

CVIČNÝ TEST 5. OBSAH I. Cvičný test 2. Mgr. Václav Zemek. II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19

4.3. GONIOMETRICKÉ ROVNICE A NEROVNICE

Zpracování náhodného výběru. Ing. Michal Dorda, Ph.D.

1. července 2010

Datové struktury 2: Rozptylovací tabulky

Microsoft Word - Styly, obsah a další

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

Fergusnova kubika, která je definována pomocí bodu P1, vektoru P1P2, bodu P3 a vektoru P3P4

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

CVIČNÝ TEST 51. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Vzorce počítačové grafiky

(Nepříliš) stručně o systémech TEX a L A TEX

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - "uvažovat" jako počítač

MATURITNÍ TÉMATA Z MATEMATIKY

Znění otázky Odpověď a) Odpověď b) Odpověď c) Odpověď d) Správná odpověď C C B B C

3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY

17 Kuželosečky a přímky

ANALYTICKÁ GEOMETRIE HYPERBOLY

VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C)

Matematika I (KX001) Užití derivace v geometrii, ve fyzice 3. října f (x 0 ) (x x 0) Je-li f (x 0 ) = 0, tečna: x = 3, normála: y = 0

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/ TĚŽIŠTĚ

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Pokyny k hodnocení MATEMATIKA

Matematika I, část I. Rovnici (1) nazýváme vektorovou rovnicí roviny ABC. Rovina ABC prochází bodem A a říkáme, že má zaměření u, v. X=A+r.u+s.

Textové editory. Ing. Luděk Richter

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

ACTA UNIVERSITATIS AGRICULTURAE ET SILVICULTURAE MENDELIANAE BRUNENSIS SBORNÍK MENDELOVY ZEMĚDĚLSKÉ A LESNICKÉ UNIVERZITY V BRNĚ

CVIČNÝ TEST 37. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 5 III. Klíč 13 IV. Záznamový list 15

Pohyb tělesa po nakloněné rovině

Euklidovský prostor. Funkce dvou proměnných: základní pojmy, limita a spojitost.

13 Barvy a úpravy rastrového

4EK213 LINEÁRNÍ MODELY

Kontingenční tabulky v MS Excel 2010

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

CVIČNÝ TEST 22. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15

Křivky a plochy technické praxe

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi).

POKROČILÉ ZPRACOVÁNÍ TEXTU

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

7. Funkce jedné reálné proměnné, základní pojmy

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Úloha 1. Napište matici pro případ lineárního regresního spline vyjádřeného přes useknuté

Matematické modelování dopravního proudu

2. přednáška z předmětu GIS1 Data a datové modely

Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32

Vliv realizace, vliv přesnosti centrace a určení výšky přístroje a cíle na přesnost určovaných veličin

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU

Nelineární obvody. V nelineárních obvodech však platí Kirchhoffovy zákony.

Jana Dannhoferová Ústav informatiky, PEF MZLU

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Transkript:

ACTA UNIVERSITATIS AGRICULTURAE ET SILVICULTURAE MENDELIANAE BRUNENSIS SBORNÍK MENDELOVY ZEMĚDĚLSKÉ A LESNICKÉ UNIVERZITY V BRNĚ Ročník LV 11 Číslo 3, 2007 Rozšíření algoritmu odstavcového zlomu v inverzním paradigmatu sazby J. Přichystal, J. Rybička Došlo: 15. prosince 2006 Abstract Přichystal, J., Rybička, J.: Line-breaking algorithm enhancement in inverse typesetting paradigma. Acta univ. agric. et silvic. Mendel. Brun., 2007, LV, No. 3, pp. 117 122 High quality text preparing using computer desktop publishing systems usually uses line-breaking algorithm which cannot make provision for line heights and typeset paragraph accurately when composition width, page break, line index or other object appears. This article deals with enhancing of line-breaking algorithm based on optimum-fit algorithm. This algorithm is enhanced with calculation of immediate typesetting width and thus solves problem of forced change. Line-breaking algorithm enhancement causes expansion potentialities of high-quality typesetting in cases that have not been yet covered with present typesetting systems. typesetting, typesetting paradigma, inverse typesetting paradigma, line-breaking algorithm, TEX, Adobe InDesign, printing line grid Sazba jako proces vkládání proporcionálních symbolů do řádků je v současné době řešena prakticky ve všech případech počítačem. Programy pro počítačovou sazbu byly konstruovány při různých počátečních podmínkách a za různým účelem, z čehož automaticky plynou zcela rozdílné kvalitativní parametry. Profesionální programové systémy vycházejí částečně ze sazby kovovými literami. Ruční (i strojní) sazba kovovými literami byla realizována algoritmem, z něhož některé systémy počítačové sazby přebírají určité základní prvky. Principy práce počítačových systémů lze rozdělit na dvě kategorie: 1. Princip s prioritní funkcí textu prvotním materiálem jsou textové bloky, jejichž seskládáním vznikají stránky. Pracovně tento princip označíme pojmem přímé paradigma sazby. 2. Princip s prioritní funkcí sazební plochy prvotním materiálem jsou prázdné plochy a sestavené stránky, do nichž se vkládá textová masa. Pracovně označíme tento princip pojmem inverzní paradigma sazby. První princip představuje model procesu sazby kovovými písmeny (Pop, 1989). Jeho zásadní výhodou je zpracování samotného textu, na jehož typografickou bezchybnost a preciznost sazby je zde kladen největší důraz. Druhý princip více vychází z principu činnosti interaktivních grafických počítačových systémů a využívá především jejich grafických možností. Důraz je kladen na stránkové rozložení a na zpracování objektů představovaných jak textovými, tak i grafickými prvky. Příkladem implementace priority textu je typografický systém TEX a všechny jeho nadstavby. Příkladem implementace priority sazební plochy je systém interaktivního návrhu cílového stránkového designu Adobe InDesign. Jednoznačnou nevýhodou principu priority textu je obtížná definice stránkového designu, naopak priorita sazební plochy omezuje možnosti základní sazby. Z uvedeného vyplývá, že žádný princip nesplňuje všechny požadavky, které vycházejí z praktických potřeb. To se projevuje zejména časovou náročností při překonávání nevýhodných vlastností a snížením 117

118 J. Přichystal, J. Rybička kvality výsledného dokumentu. Vzhledem ke složitosti systémů tohoto typu a ke vzájemné datové nekompatibilitě je pro většinu uživatelů (tvůrců dokumentů) nepřijatelné pracovat s oběma systémy a vybírat vždy ten, který je pro danou aplikaci v dokumentu optimální. Zároveň je potřebné řešit i řadu běžných situací, které žádný z uvedených systémů beze zbytku nepodporuje. Jedná se především o kvalitní sazbu v situacích, kdy odstavec může být přerušen koncem strany (sloupce) a pokračuje v jiném horizontálním rozměru, dále situace, kdy odstavec obsahuje materiál měnící řádkový proklad a vyžadující sazbu na řádkový rejstřík. K těmto případům lze přidat i méně časté potřeby sazby do neobdélníkových tvarů použitých například při obtékání vložených objektů. Materiál a metody Používané algoritmy řádkového zlomu Pro sazbu proporcionálního textu se používají algoritmy různé složitosti a kvality. Produkty pro pořizování strojopisů nebo textů soukromého charakteru používají algoritmy postavené na principu best fit. Tyto algoritmy jsou schopny provádět separátní zarovnání pouze v jednotlivých řádcích odstavce. Nelze zde zabránit hrubým typografickým chybám (viz ON 88 2503, 1967), jako jsou posloupnosti stažených a světlých řádků, řeky apod. Těmito systémy, jejichž představitelem může být například Open Office Writer či Microsoft Word, se v tomto textu však nebudeme zabývat. V kvalitních systémech pro počítačovou sazbu se používají algoritmy vycházející z algoritmu optimum fit, zpracovávající materiál celého odstavce a realizující základní typografický požadavek na dosažení jednolité šedi sazby. Algoritmus zpracovává vstupní proud dat tvořených prvky tří typů, pro něž se užívají názvy box, glue a penalta. Prvek box představuje veškerý tisknoucí materiál, prvek glue označuje všechny výplňky. Prvek penalta je číselná hodnota ovlivňující hodnotu cenové funkce, sloužící pro výpočet vhodnosti řádkového zlomu v daném místě. Prvek box je charakterizován především šířkou, výškou a hloubkou (tyto hodnoty jsou důležité pro algoritmus zlomu) a dále pozicí referenčního bodu, kterým se umisťuje na účaří sazby. Atributem prvku glue je šířka, stažitelnost a roztažitelnost. V implementacích algoritmu optimum-fit lze navíc pracovat s roztažitelností a stažitelností boxů jedná se však o malé hodnoty, neboť tím dochází k deformaci znaků. Algoritmus zde má však větší možnosti pro výpočet optimálních bodů řádkového zlomu. Toto rozšíření je známo pod názvem hz-algoritmus (Zýka, 2004). Algoritmus pracuje s materiálem celého odstavce. Vypočítává možné body řádkového zlomu, které ohodnocuje cenovou funkcí. Možné body zlomu jsou skládány do orientovaného grafu, jehož hrany jsou ohodnoceny vhodností příslušného zlomu. Vyhledáním nejkratší cesty v tomto grafu (nejmenšího součtu ohodnocení hran) se získá seznam optimálních bodů řádkového zlomu. Matematický model sazby Pro proces řádkového zlomu je v systému TeX využita metoda optimum-fit. Princip jejího fungování a její matematický model popisuje Knuth a Plass (1981). Základní aspekty tohto algoritmu rovněž popisuje Olšák (2000). Při návrhu našeho rošíření budeme z tohoto modelu vycházet. Hodnocení vlastností algoritmu Vstupními hodnotami jsou požadované délky všech řádků odstavce, algoritmus nijak nezohledňuje výšky sestavených řádků. Tato skutečnost má následující důsledky: 1. V místě stránkového zlomu je zbylá část odstavce vysazena do předem stanovených délek řádků, avšak před začátkem sazby odstavce není známo, kde ke stránkovému zlomu dojde. 2. Není zohledněn požadavek na sazbu do řádkového rejstříku, algoritmus vůbec nepoužívá výšky řádků. 3. Při výskytu boxů s výškou přesahující hodnotu řádkování dojde k posunu účaří, který může mít vliv na požadované délky následujících řádků, to však algoritmus nezohledňuje. Návrh řešení Zásadním krokem řešení je změna algoritmu sazby spočívající především ve změně získávání vstupních požadovaných délek řádků. Délka i-tého řádku není dána ještě před zahájením činnosti algoritmu pro zlom daného odstavce, ale je dána v průběhu práce voláním speciální funkce R. Jedním z hlavních problému pri modifikaci paradigmatu algoritmu řádkového zlomu je určení délky jednotlivých řádků při sazbě do neobdélníkových tvarů odstavce. Představíme-li si běžnou sazbu do obdélníkového tvaru, má každý řádek odstavce stejnou délku. Určení této délky není samozřejmě velký problém. Ten ovšem nastává v případě sazby do tvarů odlišných. Jde především o to, že délka řádku v těchto podmínkách je závislá na konkrétní aktuálně vysazené výšce materiálu. Je tedy třeba určit ze znalosti výšky šířku tvaru, do kterého chceme text vsadit. Jak je patrné z příkladu

Rozšíření algoritmu odstavcového zlomu v inverzním paradigmatu sazby 119 na obr. 1, první řádky odstavce budou sázeny na šířku menší než řádky přibližně uprostřed odstavce a nakonec se šířka opět zužuje. Protože předpokládáme, že tvar jednotlivých prvků sazby na stránce (tvaru, do kterého se bude sázet text) je zadán vektorovou formou, lze poměrně jednoduše určit i šířku řádku. Jako nejvhodnejší formát pro uložení informací o vektorových objektech se jeví formát SVG. Podrobnější informace uvádí Eisenberg (2002). 1: Závislost šíře sazby na pozici v sázeném obrazci Údaje o objektech v SVG formátu jsou uloženy různým způsobem v závislosti na typu vkládaného objektu. Naším úkolem je tedy definovat funkci, která bude schopna na základě informací o vkládaných objektech určit jejich vodorovnou šířku v jakémkoliv bodě, abychom mohli vysadit řádek odstavce s touto zjištěnou šířkou. Tato funkce, kterou označíme R, určuje šířku objektu v dané výšce a bude se tedy lišit pro různé tvary objektu. Obecnou funkci by jistě nebylo obtížné definovat, avšak pro jednoduché útvary, jako je obdélník, by výpočet zabíral příliš mnoho strojového času, a přitom právě obdélník je patrně nejpoužívanější tvar odstavce v běžných dokumentech. Tvary, které budeme uvažovat jako nejčastější a nabízené možné tvary odstavce, jsou obdélník, polygon, kružnice a elipsa. Budeme-li v této kapitole mluvit o výšce řádku, máme na mysli výšku h nejvyššího boxu řádku. Mluvíme-li o výšce vysazeného materiálu, máme na mysli soucet výšek h a hloubek d boxů tvořících vysazené řádky. Pro obdélník je určení šířky sazby velmi snadné, neboť šířka řádku l j je rovna straně obdélníka, čili v definici SVG se jedná o hodnotu parametru width. Určení požadované šířky řádku l j odstavce vyplňujícího kružnici lze realizovat na základě vztahu l j = 2 (h (2r h)), kde h je výška aktuálně vysazeného materiálu zvýšená o výšku řádku a r je poloměr kružnice. U elipsy je určení šíře řádku poněkud obtížnější. Šířku řádku určíme ze znalosti parametru elipsy a její rovnice: kde r x a r y jsou délky poloos elipsy, c x je x-ová souřadnice středu elipsy a h je výška vysazeného materiálu zvýšená o výšku řádku. Polygon bývá definován množinou vrcholů, které jsou krajními body ohraničujících úseček. Díky tomu mužeme určovat šířku řádku jako vzdálenost dvou bodů A a B, které leží na těchto úsečkách a jejich kolmá výška od vrcholu tvaru odpovídá výšce sazby aktuálního řádku. Tyto body určíme jako průsečíky vodorovné přímky y = kx + q reprezentující účaří a vedené ve výšce h s hranicemi zadaného útvaru. Protože tato přímka protínající polygon je vždy rovnoběžná s osou x (uvažujeme pouze sazbu odstavců s vodorovnými řádky), bude směrnice přímky k = 0. Hodnota q odpovídá hodnotě y souřadnice nejvyššího vrcholu polynomu zvýšené o součet výšky již vysazeného materiálu a výšky řádku. Vzdálenost dvou nalezených průsečíků, bodů A a B, pak lze určit jako velikost vektoru u umístěného do bodu A = [a 0, a 1 ] a B = [b 0, b 1 ] (obr. 2): l j = d(a,b) = vector(u) = (q(b 0 a 0 ) 2 + (b 1 a 1 ) 2 ). 2: Určení aktuální šíře sazby z pozice v sázeném obrazci Modifikovaný algoritmus Modifikace algoritmu řádkového zlomu navrhovaného řešení je založena na algoritmu používaném v TEXu. Algoritmus, stejně jako jeho předloha, očekává na vstupu horizontální seznam (boxy, glue, penalty) a na výstup produkuje seznam pozic vhodných pro řádkový zlom. Výsledné řádky jsou získány provedením zlomu v těchto místech. Algoritmus vytváří z možných míst zlomu graf a v něm vyhledává nejkratší cestu. Tak získá optimální zalomení odstavce. Modifikace modelu Pokusme se nyní formulovat modifikovaný algoritmus řádkového zlomu za pomocí matematických

120 J. Přichystal, J. Rybička konstrukcí. Předpokládejme v souhlase s modelem (Knuth a Plass, 1981), že text odstavce je posloupnost m prvků x 1 x 2...x m, kde každé x i je buď box, glue nebo penalta. Box je specifikován hodnotami w i a h i, glue třemi hodnotami (w i, y i, z i ) a penalta hodnotami (w i, p i, f i ). Zjednodušeně tedy můžeme říci, že odstavec x 1... x m je specifikován sedmi posloupnostmi: t 1...t m, kde t i je typ prvku x i (box, glue, penalta), w 1...w m, kde w i je šířka prvku x i, h 1...h m, kde h i je výška prvku xi, y 1...y m, kde y i je roztažitelnost prvku x i, pokud jde o glue (t i = glue), jinak y i = 0, z 1...z m, kde z i je stažitelnost prvku x i, pokud jde o glue (t i = glue), jinak z i = 0, p 1...p m, kde p i je hodnota penalty prvku x i, pokud (t i = penalta), jinak p i = 0, f 1...f m, kde f i = 1, jestliže x i je označená penalta, jinak f i = 0. Poslední hodnotou, která vstupuje do algoritmu řádkového zlomu, je požadovaný tvar odstavce s, kde s je celé číslo z intervalu 1, 4. Tento parametr je důležitý pro výpočet délky řádku, avšak nespecifikuje konkrétní řádek. Hodnota s se v průběhu zlomu odstavce nemění. V závislosti na tvaru odstavce, definovaném pomocí grafického rozhraní, může nabývat hodnot: 1 obdélníkový tvar odstavce, 2 kruhový tvar odstavce, 3 elipsový tvar odstavce, 4 obecný, mnohoúhelný tvar odstavce (polygon). Použité tvary odstavce vycházejí ze základních tvarů definovaných ve formátu SVG používaném pro popis designu stránky. Mějme definován tvar odstavce získaný z grafického rozhraní. Z definovaného tvaru odstavce musíme určit délky jednotlivých řádků. Na první pohled je to velmi snadné. Jednoduché je to ovšem pouze pro odstavec, ve kterém se nevyskytují objekty narušující řádkový rejstřík, čili kde h 1 = h 2 =... = h i =... = h m. Pokud se však v odstavci objeví například matematické vzorce, může při jejich větší složitosti dojít k tomu, že některé řádky budou mít výšku odlišnou od řádků jiných, čili obecně h 1 h 2... h i... h m. V tuto chvíli je určení výšky jednotlivých řádků, a potažmo jejich šířky podstatně složitější. Mějme funkci R, která na základě znalosti požadovaného tvaru odstavce a výšce již vysazeného materiálu odvodí požadovanou šířku řádku j označenou jako l j. Funkce R získá hledanou šířku l j na základě vstupní informace o tvaru odstavce (hodnota s) a výšce již vysazeného materiálu (hodnota H vysaz ). Šířku řádku v daném bodě lze vypočítat jako šířku tvaru odstavce s použitím matematických vzorců uvedených v části Návrh řešení. Práce funkce R je v případě vyrovnaného řádkového rejstříku, čili odstavce bez vertikálně vyčnívajících prvků jednoduchá. Zde má každý řádek výšku h v. V případě opačném lze říci, že při četnosti výskytu c jednotlivých rušivých prvků s výškou h p1 h pm může být výška výsledného odstavce H v rozmezí (max(h pi )) + (n 1) h v H (h p1 + h p2 + + h pm ), kde max(h pi ) udává výšku nejvyššího prvku v odstavci. Výsledná výška tedy závisí na tvaru odstavce a v případě výskytu objektů narušujících řádkový rejstřík i na okolnosti, jaké bude jejich uspořádání na výsledných řádcích. Možné varianty jsou: 1. Jednotlivé rušivé objekty se podaří umístit na jeden řádek, výška odstavce bude nejmenší. 2. Objekty budou rozmístěny v odstavci na řádcích neuspořádaně, někdy jeden, někdy více na jednom řádku. 3. Rušivé objekty se uspořádají tak, že každý bude na jiném řádku a výška odstavce tak bude největší. Je potřebné rovněž uvažovat případ, kdy uživatel bez ohledu na objekty v odstavci zadá posloupnost h 1,, h m. Toho lze využít především při sazbě na řádkový rejstřík. Diskuse Modifikovaný algoritmus zohledňující aktuální pozici účaří pro výpočet požadované délky řádku poněkud zvyšuje koeficient výpočetní složitosti (kvadratický charakter původního algoritmu však zůstává zachován), kterou platíme za zvýšení možností kvalitní sazby. Pro usnadnění a zrychlení procesu výpočtu odstavcového zlomu lze vymezit některé zvláštní případy: 1. Sazba do běžného obdélníkového obrazce, se stránkovým (sloupcovým) zlomem neměnícím šíři sazby. 2. Sazba na řádkový rejstřík, kdy jsou pozice účaří známy dopředu a požadované délky řádků lze vypočítat před zahájením algoritmu odstavcového zlomu. V prvním z uvedených případů se algoritmus může chovat stejně jako v původní nemodifikované podobě. Ve druhém případě lze vstupní hodnoty délek řádků dodat podobným způsobem, jako to řeší například příkaz \parshape systému TEX, avšak požadované délky nejsou konstantami zapsanými ve zdrojovém textu, ale výsledky funkce R aplikované na požadovaná místa účaří uvažovaného odstavce. Implementaci modifikovaného algoritmu lze provést jako rozšíření funkce jádra sázecího stroje systému TEX. K tomuto procesu existují standardní nástroje jazyk WEB popisující a dokumentující samotný algoritmus, programy konvertující tento obecný zápis

Rozšíření algoritmu odstavcového zlomu v inverzním paradigmatu sazby 121 do implementačního jazyka (obvykle jazyk C) a také standardní testy umožňující objektivně zjistit úroveň zpětné kompatibility, která je pro správnou činnost sázecího algoritmu zcela nezbytná. Závěr Rozšíření možností kvalitní počítačové sazby vytváří základní předpoklady pro tvorbu dokumentů za podmínek, které nebyly doposud pokryty používanými typografickými systémy. Předpoklad kvalitní sazby, tj. vysoce kvalitní algoritmus odstavcového zlomu, je implementován tak, že neumožňuje uživateli využít sazbu v inverzním paradigmatu. Současné systémy je tedy potřebné doplnit o možnost implementace sazebního algoritmu obohaceného o vstup aktuálních vertikálních rozměrů sazby a o okamžitý výpočet potřebné řádkové šíře. Souhrn Kvalitní příprava textů pomocí počítačových publikačních systémů běžně používá algoritmus odstavcového zlomu, který neumožňuje plně zohlednit výšky jednotlivých řádků a přesně vysadit odstavec při změně šíře sazby vynucené předchozí sazbou, zlomem strany, řádkovým rejstříkem nebo objektem narušujícím řádkování. Článek se zabývá definicí rozšíření možností algoritmu odstavcového zlomu na principu optimum fit o výpočet okamžité požadované šíře sazby řešící problém vynucené změny z uvedených důvodů. Rozšíření algoritmu odstavcového zlomu má za následek rozšíření možností kvalitní sazby v případech, které současnými systémy nejsou zcela pokryty. sazba, paradigma, inverzní paradigma sazby, algoritmus odstavcového zlomu, TEX, InDesign, řádkový rejstřík Literatura ČSN 88 0100 Základní a společné názvy polygrafické názvosloví. 1977. Eisenberg, J. D.: SVG Essentials, O Reilly 2002, ISBN 0-596-00223-8. Fine, J.: Instant Preview and the TEX daemon, Euro- TEX 2001, Conference Proceedings, 49 58. Goosens, M., Rahtz, S., Mittelbach, F.: The LATEX Graphics Companion. Addison Wesley 1994, ISBN 0201854694. Jelínek, J.: Nadstavba typografického systému. Brno: MZLU, 2004, diplomová práce. Knuth, D.: Computer and Typesetting Series, Vol. A: The TEXBook. Addison Wesley 1984, ISBN 0-201-13448-9. Knuth, D.: Computer and Typesetting Series, Vol. B: TEX The Program. Addison Wesley 1986a, ISBN 0201-13437-3. Knuth, D.: Computer and Typesetting Series, Vol. C: The METAFONT Book. Addison Wesley 1986b, ISBN 0-201-13444-6. Knuth, Donald E., Plass, Michael F.: Breaking Paragraphs Into Lines. Software Practice and Experience. 11(11), pp. 1119 1184, November 1981. Olšák, P.: TEXbook naruby. Brno: Konvoj 2000. 468 s., ISBN 80-7302-007-6. ON 88 2503 Základní pravidla sazby. Praha: ČSÚN, 1969. Pazdziora, J.: Algoritmy řádkového a stránkového zlomu v počítačové sazbě. Brno: 1997. 56 s., diplomová práce. Pop, P., Fléger, P., Pop, J.: Sazba I Ruční sazba. Praha: SPN, 1989. Přichystal, J., Rybička, J.: Rozšíření možností typografického systému TEX. In Firma a konkurenční prostředí 2004. IS/IT a konkurenceschopnost podniku. Brno: Konvoj, 2004, s. 143 153 ISBN 80-7302-079-3. Přichystal, J., Rybička, J.: Moderní přístupy tvorby dokumentu obchodních podnikatelských subjektů. In Motyčka, A. Informatika XV /2004 Sborník příspevků. 1. vyd. Brno: Konvoj, 2005, s. 89 95. ISBN 80-7302-067-X. Skoupý, K.: Proposal for Text and Graphics Unification in a TEX-Based Framework. In Proceedings of EuroBachoTEX 2002. Zýka, V.: Používáme pdftex IV: mikrotypografické rozšíření. Zpravodaj CSTUG. Brno: Konvoj, 2004, 2, s. 47 53. ISSN 1211-6661.

122 J. Přichystal, J. Rybička Adresa Ing. Jan Přichystal, Ph.D., doc. Ing. Jiří Rybička, Dr., Ústav informatiky, Mendelova zemědělská a lesnická univerzita v Brně, Zemědělská 1, 613 00 Brno, Česká republika