PB029 Elektronická příprava dokumentů Anyone who would letterspace the lowercase would steal sheep. Frederick Goudy (1865 1947), when looking on a prize winner certificate You cannot not communicate. Paul Watzlawick (1921 2007), in Pragmatics of Human Communication Lidé komunikují prostřednictvím dokumentů připravovaných elektronicky. Petr Sojka (FI MU Brno) podzim 2016 1 / 192
PB029 Elektronická příprava dokumentů PB029 Elektronická příprava dokumentů Petr Sojka Fakulta informatiky MU, Brno podzim 2016 Petr Sojka (FI MU Brno) podzim 2016 2 / 192
Agenda Vypsány zkušební termíny předmětu. Blížící se odevzdávání zápočtových příkladů. Nadpočetné neúčasti kompenzace prémiovými úkoly jako účast na mimořádných přenáškách: 17. 12. v 12:45 na Mendelu, Zemědělská 1, viz www.cstug.cz. Nový článek o čitelnosti fontů. Petr Sojka (FI MU Brno) Sazba: digitální písma podzim 2016 151 / 192
Osnova dnešní přednášky Zlom. Tradice a historický vývoj. Box-glue-penalty model. Algoritmy řádkového zlomu. HZ-algoritmus. Stránkový zlom. Umisťování obrázků. Dělení slov. Vše, co jste chtěli vědět o TEXu, ale báli jste se zeptat. Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 152 / 192
Sazba algoritmy Terminologie a modely (box-glue-penalty). Algoritmy zlomu: first fit, best fit, optimum fit. Rozšíření HZ Hermanna Zapfa. Algoritmy v jiných systémech (InDesign). Stránkový zlom. Umísťování obrázků. Dělení slov. Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 153 / 192
Zlom terminologie a modely Znak reprezentace jako ohraničující obdélník (bounding box) mající referenční bod, výšku, šířku a hloubku. Slitky, ligatury, mezipísmenný proklad (kerning). Mezera: pevná a proměnná, nedělitelná. \,, ~ Dle fontu: \fontdimen 1: italická korekce (slant per pt, italic correction), 2: základní velikost, 3: roztažitelnost (interword stretch, stretchability), 4: stažitelnost (interword shrink, shrinkability), 5: střední výška (x-height, 1ex). 6: čtverčíková mezera (quad width), \quad, Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 154 / 192
Zlom terminologie a modely (cont.) 7: mezera za interpunkcí (extra space) \nonfrenchspacing. Další pro sazbu matematiky. Box: ohraničující obdélník (krabice) sady znaků, textu. Horizontální \hbox, vertikální \vbox. Lepidlo (glue): přirozená šířka a vlastnosti jako mezera. \hskip 1em plus 0.5em minus 0.2em Penalta (penalty), míra škaredosti. \penalty 10000 Box-glue-penalty model (TEX), Skyline model. Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 155 / 192
Algoritmus First fit Horizontální seznam, šířka w, roztažitelnost w +, stažitelnost w, požadovaná šířka L. Poměr roztažení r (adjustment ratio) (L w)/w +. Výběr prvního možného zlomu takového, že r < 1. r > 1, pak řádek přetečený (overfull), nebo podtečený (underfull). Nenáročné na výpočetní kapacitu. Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 156 / 192
Algoritmus Best fit Zlom po řádcích, výběr nejlepšího zlomu na řádku bez přihlédnutí k předchozím řádkům a možnostem. Míra optimality řádku je měřena mírou odchylky b od ideální velikosti mezislovní mezery a penalty na místě zlomu p, tedy b + p. V TEXu je míra škaredosti resp. špatnosti (badness) b = 100 r 3, kde r je poměr rozdílu požadované a přirozené délky řádku ku součtu roztažitelných resp. stlačitelných složek lepidla (glue). Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 157 / 192
Algoritmus Optimum fit Optimalizace zlomu v rámci celého odstavce naráz s využitím modelu box, glue a penalty. Zvažovat úplně všechny kombinace zlomu slov na řádcích má exponenciální složitost. Naštěstí netřeba zvažovat úplně všechny mkombinace, jen ty, které mají škaredost menší než \pretolerance resp. \tolerance. Úloha podobná hledání nejkratší cesty v grafu metodou dynamického programování: každé cestě odpovídá škaredost, která se minimalizuje. Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 158 / 192
Algoritmus stránkového zlomu Podobné či stejné algoritmy jako u řádkového zlomu, při optimalizaci na celou kapitolu optimum fit, na jedné stránce stačí best fit, případně u dvoustrany. TEX optimalizuje jen jednu stranu. Plovoucí objekty: obrázky, poznámky pod čarou. Stačí zvažovat pouze možnosti hezčí než zadaná tolerance, při nedodržení se použije první (nekonečně) škaredý zlom. Kombinace algoritmu stránkového a řádkového zlomu. Možné experimenty v NTS, Even,... Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 159 / 192
Parametry algoritmů zlomu v TEXu Až tři průchody: první bez dělení slov, limit škaredosti je \pretolerance. Pak jsou rozdělena všechna slova v odstavci a proveden druhý pokus s limitem škaredosti \tolerance. Pokud je nastaven registr \emergencystretch na kladnou délku (zvětšení roztažitelnosti mezislovní mezery) a jde o TEX3.0 či vyšší, provede se třetí pokus o zlom s těmito limity roztažitelností. Další parametry ovlivňující algoritmy zlomu: řádkového: vada řádku demerits d \adjdemerits, \finalhyphendemerits l \linepenalty, \hyphenpenalty, \exhyphenpenalty, \looseness a stránkového: \interlinepenalty, \clubpenalty, \widowpenalty, \brokenpenalty,... Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 160 / 192
Parametry algoritmů zlomu v TEXu (cont.) d = (l + b) 2 + p 2 pro 0 p 10000, (l + b) 2 p 2 pro 10000 p 0 Ladění parametrů zlomu pro daný projekt (Diderot). Detailní český popis variant algoritmů zlomu je k nalezení v DP FI MU Jana Pazdziory (v materiálech předmětu v ISu). Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 161 / 192
hz-algoritmus Motivace: Gutenbergova 42řádková Bible. Principy: kerning, scaling, composing. URW, Karrow, Zapf, neúspěch (fonty). Implementace v pdftexu (Thành). Implementace v InDesignu (Karrow). Detailní český popis modifikací zlomového algoritmu písem je k nalezení v DP Mirky Misákové a v dizertaci Hàn Th ê Thànha. \usepackage[protrusion,expansion]{microtype} v L A TEXu. Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 162 / 192
InDesign Komerční program firmy Adobe pro WYSIWYG počítačovou sazbu. Zlomový algoritmus (převzat z TEXu) s pomocí Davida Karrowa (URW). Škálování znaků. Optický proklad (David Kindersley: Optical letter spacing for new printing systems, 1976). Příklady zlomu a chyb na stránce cvičení o mikrotypografii. Petr Sojka (FI MU Brno) Sazba: řádkový zlom podzim 2016 163 / 192
Implementace algoritmu dělení slov Dizertace a program PatGen Franka Lianga. Princip soutěživých vzorů, nezávislost na jazyce. Vytváření a generování vzorů. OPatGen, knihovna PatLib, upatgen. Detailní popis algoritmu dělení slov je k nalezení v DP FI MU Davida Antoše. Petr Sojka (FI MU Brno) Sazba dělení slov podzim 2016 164 / 192
TEXové okénko: výstup do alternativních formátů PDF, E-book,... Formát pro elektronické knihy firmy od Adobe. Otevřenost TEXu: pdftex Hàn Th ê Thành. Kalkulačka v PDF (+JavaScript): dříve než Adobe. AcroTEX. PDF není až tak portabilní jak říká název místo pro DVI3? Petr Sojka (FI MU Brno) Sazba dělení slov podzim 2016 165 / 192
TEX dnes II: Internet (HTML/XML/MathML) TEX4ht, konverze přes \special do DVI a [X]HTML. LaTeXML: konvertor do XML/HTML/MathML. TTH: konvertor TEXu do HTML. MathType pro psaní matematiky ve Windows. MathFlow sada komponent a programů pro práci s matematikou. Texi2html: konverze Texinfo formátu do html. Word2TeX: konfigurovatelný konvertor z rozšířeného měnícího se formátu do stabilního. ASTER systém pro čtení L A TEXového zápisu a dokumentů pro nevidomé a mnoho dalších... Petr Sojka (FI MU Brno) Sazba dělení slov podzim 2016 166 / 192
TEX dnes III: Java, Unicode, OpenType NTS: reimplementace TEXu bez optimalizací v Javě (Karel Skoupý, FI MU), a následný výzkum. Omega: mnohem více než šestnáctibitový TEX; konverze L A TEXu do MathML. XeTEX, LuaTEX. texlive.js A L A TEX Compiler for Javascript Petr Sojka (FI MU Brno) Sazba dělení slov podzim 2016 167 / 192
Perspektivy TEXu a jeho následníků v tomto tisíciletí TEX pevný bod v chaosu postmoderního světa? Interaktivní dokumenty: otevřenost umožňuje rychle reagovat na nové formáty a standardy. Rozšiřování požadavků na autorské systémy. Bude se opakovat historie s tím, že v TEXové komunitě navržené a vyzkoumané postupy, algoritmy a přístupy se stanou základem většiny komerčních aplikací v oblasti DTP? embedded systémy [části] TEXu součástí větších projektů. Petr Sojka (FI MU Brno) Sazba dělení slov podzim 2016 168 / 192
Jak se na to připravit? Instalovat si TEX a učit se ho: učit se, učit se, učit se. Stát se členem sdružení CSTUG a účastnit se aktivně jeho akcí a projektů. Petr Sojka (FI MU Brno) Sazba dělení slov podzim 2016 169 / 192
Závěr Úcta k tradicím, osvěta. We are all apprentices in a craft where no-one ever becomes a master. Ernest Hemingway Další studium: www.sazba.cz (Kapr: Sto a jedna věta o knižní úpravě), časopis Typo, Beranův Typografický manuál. A man who would letterspace lower case would steal sheep. Frederick Goudy (1865 1947) If this wisdom needs updating, it is chiefly to add that A woman who would letterspace... Robert Bringhurst (1946 ) Petr Sojka (FI MU Brno) Sazba dělení slov podzim 2016 170 / 192