\input ctustyle3
\slides
\csquotes

\addto\TeX{\noslash}
\addto\LaTeX{\noslash}
\def\noslash{\futurelet\next\noslashA}
\def\noslashA{\ifx\next/\expandafter\noslashB\fi}
\def\noslashB/{}
\localcolor
\def\CS{{\it CS}}

\worktype[O/CZ]
\faculty{F8}
\department{Katedra matematiky, katedra teoretické informatiky}

\def\fontsel #1 {\font\test=[#1-regular] \test\resizethefont}

\slideshow

\tit Typografie a \TeX

\subtit\bf Petr Olšák (FEL+FIT ČVUT)\nl petr@olsak.net

\subtit\rm \url{http://petr.olsak.net/typotex.html}

\pg; %---------------------------------------------------

\sec Povinnosti k zápočtu a zkoušce

* Během čtvrtého až sedmého týdne předvést v krátké
  pětiminutové prezentaci práci s \TeX/em na jednoduchém dokumentu.
* Do pátého týdne odevzdat domácí úkol (zpracovat stránku v \TeX/u dle
  předloženého vzoru). Zadání zveřejním v druhém týdnu semestru.
* Do 8. týdnu semestru na konzultacích s vyučujícím 
  dohodnout téma semestrální práce.
* Do konce semestru odevzdat a obhájit semestrální práci.
* Aspoň týden před termínem obhajoby práce spojené se zkouškou je třeba
  práci odevzdat. 

\pg; %----------------------------------------------------

\sec Dostupná literatura

* Petr Olšák: \ulink[http://petr.olsak.net/tat/aprvni.pdf]{první setkání s \TeX/em}
* Petr Olšák: \ulink[http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf]{\TeX/ in a Nutshell} \hfill ("texdoc nutshell")
* Petr Olšák: \TeX/ pro pragmatiky (CSTUG)
* Petr Olšák: \TeX/book naruby (Konvoj, Brno)
* Petr Olšák: Typografický sytém \TeX/ (Konvoj, Brno)

\sec Dále

* Michael Doob: Gentle introduction to \TeX/ \hfill ("texdoc gentle")
* Victor Eijkhout: \TeX/ by topic \hfill ("texdoc texbytopic")
* Donald Knuth: The \TeX/book (vol. 1 of Computers \& Typesetting).
* Dokumentace k použitým balíčkům. \hfill (např. "texdoc optex")

\sec Seriál o TeXu

* \url{http://www.abclinuxu.cz/serialy/tex}

\pg; %---------------------------------------------------

\sec Společenství \TeX{}istů

* \CS TUG \url{http://www.cstug.cz}
* TUG \url{http://www.tug.org}
* Otázky a odpovědi \url{http://tex.stackexchange.com}

%\pg; %----------------------------------------------------

\sec \TeX{}ové distribuce

* \TeX{}live \url{http://www.tug.org/texlive}
* mik\TeX{} \url{http://www.miktex.org}

\sec Overleaf

* Online \LaTeX: \url{https://www.overleaf.com/}

\pg; %-----------------------------------------------------

\sec Ukázka zpracování dokumentu

* Zdrojový text $\to$ výsledný dokument
* Oddělení obsahu od formy
* Možnost rozdělení práce: tvůrce obsahu, typograf (sazeč)
* Svobodné značkování

\sec Minimální dokument

\begtt
  Helo world! \bye
\endtt

Zpracujte příkazem "pdftex" nebo "tex" nebo "optex".
Příkaz "latex" oznámí chybu: chybějící \code{\\documentclass}. 

* Chcete-li mít v minimálním dokumentu \"Ahoj světe", je třeba zajistit
  správné zpracování akcentů.
  Napříkad  pro "optex" je takový minimální dokument ve tvaru dokument:

\begtt
  \fontfam[lm]
  Ahoj světe! \bye
\endtt


\pg; %-----------------------------------------------------

\sec Historie

Distribuce \TeX/u obsahují bohužel nános hiostorie. 

* 1978: první verze \TeX/u Donalda Knutha (sabbatical year)
* 1982: kompletně přepsaný \TeX/ a Metafont v systému web. Obsahuje
  Turingovsky úplný makrojazyk. Základní sada maker: plain.tex.
* 1985: první verze Lamportova \LaTeX{}u (sady maker k \TeX/u).
* 1986: Computer and Typesettings (pětidílná dokumentace k systému \TeX/ a
         Metafont a Computer Modern fontů).
* 1989: Knuthův \TeX/tament: zmrazení vývoje \TeX/u --- \TeX/ 3.0 (8bit).
* 1992: \CS plain --- sada maker a fontů pro českou, slovenskou sazbu.
* 1993: pdf\TeX/ --- připojen backend s pdf výstupem (stále 8bit).
* 1994: \LaTeX2e, nástupce Lamportova \LaTeX/u (Frank Mittelbach + team).
* 2004: Xe\TeX/ --- ICU + možnost unicode fontů (Jonathan Kew). 
* 2007: Lua\TeX/ --- navíc jazyk Lua (Taco Hoekwater, Hans Hagen).
* 2013: OPmac --- makro sada pro plain\TeX/ s možnostmi \LaTeX/u.
* 2020: Op\TeX/ --- plain\TeX/ový formát nad \LuaTeX/em. 

\pg; %-----------------------------------------------------

\sec Základní terminologie

* \TeX/ové distribuce: {\Red \TeX/live} --- různé architektury (Karl Berry + team), 
  {\Red Mik\TeX/} pro MS Windows (Christian Schenk).
* \TeX/ové enginy: {\Red\TeX/}, {\Red pdf\TeX/}, {\Red Xe\TeX}, 
  {\Red Lua\TeX}, {\Red LuaHB\TeX}, {\Red LuaMeta\TeX}. \nl
  Napíšeme-li na příkazovém řádku {\Red tex}, {\Red pdftex}, {\Red xetex}, {\Red luatex} ---
  spustí se příslušný engine s načtenou základní sadou maker {\Red plain}
* Sadu opakovaně používaných maker ({\Red formát}) je třeba nejprve inicializovat
  (generovat), tj. načíst jednou a uložit binárně do souboru. Například
  enginem Lua\TeX/ načteme sadu maker \OpTeX:
\pg=\begtt
  luatex -ini optex.ini
\endtt
  a poté ji lze stejným enginem používat:
\pg=\begtt
  luatex -fmt optex dokument   
\endtt
* Distribuce při instalaci většinou automaticky generují výchozí sady maker
  (formáty) {\Red plain}, {\Red csplain}, {\Red\LaTeX}, {\Red Context},
  {\Red OpTeX} 
  a mnohé další pro většinu enginů. Pro jejich použití jsou připraveny
  zkratky, např:
\pg=\begtt
   pdflatex dokument ... je (zhruba) totéž jako:   pdftex -fmt latex dokument
\endtt

\pg; %---------------------------------------------------------

\sec Nejběžnější formáty

* {\Red DEK's Plain\TeX/} -- Základní sada maker od Donalda Knutha. Zavádí 
  implicitně {\Red Computer Modern fonty} a jediné vzory dělení pro
  angličtinu. Příkaz: "tex". Výstup: dvi. Je základem pro všechny ostatní.
* {\Red Plain\TeX/ generovaný z etex.src} -- jako plain\TeX/, ale používaný
  v~enginech pdftex, xetex, luatex. Umožňuje navíc přepínání vzorů dělení různých
  jazyků a využívá rozšířeni {\Red e\TeX}. Příkazy: "pdftex", "xetex", "luatex".
* {\Red csplain} -- jako plain\TeX/ s drobnými rozšířeními umožňující snadno českou
  a slovenskou sazbu. Příkazy: "csplain", "pdfcsplain", "luacsplain".
* {\Red\LaTeX/} -- asi nejpoužívanější sada maker. Původní koncept:
  uživatel \LaTeX/u je jen autor obsahu dodržující dané značkování, o
  typografii se stará \LaTeX/ sám. Příkazy: "latex", "pdflatex", "lualatex", "xelatex".
* {\Red Context} -- kromě pořizování obsahu lze na uživatelské úrovni 
  i~nastavování typografických parametrů. Příkaz: "context".
* {\Red OpTeX} -- Rozšířený plain\TeX/ nad \LuaTeX/em. Příkaz: "optex".

\pg; %--------------------------------------------------------------


\sec Koncept generování formátu

* Každý engine může pracovat ve dvou režimech:
\begitems
  * v režimu -ini ({\Red ini\TeX}), kdy je připraven načíst sadu
  maker, fontů a vzorů dělení slov. Výsledek činnosti ukládá příkazem
  \code{\\dump} do binárního formátu (soubor s příponou .fmt).  
  * v produkčním režimu ({\Red vir\TeX}) načítá předgenerovaný formát,
  čte případná další makra a fonty a zpracovává dokument.
\enditems

* Důvod tohoto rozdělení: čas (dnes méně podstatné). 
* Do formátu se ukládají binární paměťové struktury, které se \TeX/ naučil
  během čtení maker, fontů a vzorů dělení slov. Soubor ".fmt" musí být
  tedy použit stejným enginem, jakým byl vytvořen, jinak dojde ke zmatení
  (I am stymied).
* Vše kromě vzorů dělení \code{\\patterns} lze načíst nejen ve formátu, ale
  i v produkční verzi. Engine "luatex" dokáže načíst v produkční verzi i
  \code{\\patterns}.
* Unicodové enginy neumějí do formátu načíst Unicode fonty. Ty lze číst jen
  v produkční verzi. 

\pg; %-----------------------------------------------------------

\sec Příklady příkazů:

\begtt
 základní koncept:
 luatex -ini optex.ini       ... vygenerování formátu optex
 luatex -fmt optex dokument  ... použití formátu optex na dokument
 optex dokument              ... použití formátu optex na dokument

 obvyklé zkratky:
 tex -ini plain.tex    ... vygenerování formátu plain
 tex dokument          ... totéž jako tex -fmt plain dokument
 pdftex -ini latex.ini ... vygenerování formátu latex
 latex dokument        ... jako pdftex -fmt latex dokument
 pdflatex dokument     ... jako pdftex -fmt pdflatex dokument
 luatex dokument       ... jako luatex -fmt eplain dokument
 luacsplain dokument   ... jako luatex -fmt csplain dokument
 pdfcsplain dokument   ... jako pdftex -fmt csplain dokument

 pdftex -jobname pdfcsplain -ini -etex -enc csplain-utf8.ini
                       ... generování formátu csplain pro pdftex
\endtt

\pg; %-------------------------------------------------------------

\sec Různá rozšíření enginů \TeX/u

* {\Red e\TeX/} -- (cca 1992) rozšiřuje základní sadu \TeX/ových příkazů o další\nl
  (viz texdoc etex nebo TPP dodatek B.1). Autor: Peter Breitenlohner. \nl
  Je součástí pdftexu a xetexu 
  (aktivuje se přepínačem -etex při generování formátu)
  a také je součástí lua\TeX/u (aktivuje se v ini souborech).
  Používají ho všechny běžné makro sady s výjimkou klasického DEK's plain\TeX/u.

* {\Red enc\TeX/} -- (cca 2000) rozšiřuje pdftex o možnost číst utf8 kodované vstupní
  soubory a také nabízí jednoduchý preprocesor. \nl
  Je součástí pdftexu (aktivuje se přepínačem -enc při generování formátu).
  V Xe\TeX/u a lua\TeX/u zařazen není, protože tyto enginy čtou utf8 vstup
  přirozeně.\nl
  Je defaultně iniciován v csplainu, proto v něm funguje minimální dokument
  bez dalšího nastavení.

* {\Red Sync\TeX/} -- (od 2008) prolinkovává místa 
  v \TeX/ovém výstupu s řádky
  \TeX/ového vstupu pro snadnější provázanost vstupu s výstupem. 
  Některé textové editory toto podporují.

\pg; %-------------------------------------------------------------

\sec Spolupracující programy

* {\Red Bib\TeX/} (1985), {\Red biber} (2008) -- Nástroj na zpracovávání bibliografických odkazů.
* {\Red Makeindex} (1986), {\Red csindex} (1992), {\Red xindy} (2004) -- Nástroj na zpracování rejstříků.

\sec Další sady maker pro \TeX/

* {\Red MusiX\TeX/} (1997) -- Sazba notových partitur.
* {\Red Tikz} (2007) -- Programování obrázků, napsal Till Tantau.
* Stovky (nebo tisíce?) dalších balíčků maker většinou použitelných pro
  \LaTeX.

\pg; %--------------------------------------------------------------

\sec Fontová období

* 1978--1989: Bitmapové fonty rastrované pro různá zařízení různě programem
  Metafont. 128 znaků v jednom fontu (7bit).
* 1989--1994: Bitmapové fonty rastrované programem Metafont, 256 znaků v
  jednom fontu (8bit). V obou případech \TeX/ generuje DVI a následně DVI
  ovladač (pro každé zařízení jiný) využije rastrové fonty.
* 1994--2004: PostScriptové období: Type1 formát fontů rastrovaný 
  v~PostScriptovém RIPu. Font může obsahovat libovolné množství znaků, ale v
  systému na přípravu sazby se interně pracuje s 256 znaky, k fontům se
  přistupuje prostřednictvím 256 znakových encoding vektorů,
  mezi kterými lze v jednom dokumentu přepínat. \TeX/ generuje DVI,
  následně ovladač dvips vytvoří PostScript a ten se pošle na zařízení s
  PostSriptovým RIPem. Nebo pdf\TeX/ vytvoří přímo PDF, ve kterém jsou Type1
  fonty zahrnuty. 
* Od roku 2004: Xe\TeX/ (a později Lua\TeX/) umožil přímé použití 
  unicode fontů formátu OpenType. Interně pracuje v Unicode.
  Lua\TeX/ i Xe\TeX/ generují přímo PDF, rastrování probíhá v PDF
  rasterizéru (je součástí PDF prohlížeče nebo zařízení pro tisk).

\pg; %-------------------------------------------------------------

\sec Fonty projektu \TeX/-Gyre

* \code{lmfonts} -- {\fontsel lmroman10
  Rodina Latin Modern fontů tvarově
  odvozená od Knuthovy rodiny Computer Modern fontů 
  (implicitní v \TeX/u).}
* \code{termes} -- {\fontsel texgyretermes
  Rodina Termes tvarově odvozena od Times.}
* \code{heros} -- {\fontsel texgyreheros
  Rodina Heros tvarově odvozena od Helvetica.}
* \code{adventor} -- {\fontsel texgyreadventor
  Rodina Adventor odvozena od Avantgarde Book.}
* \code{bonum} -- {\fontsel texgyrebonum
  Rodina Bonum tvarově odvozena od Bookman.}
* \code{schola} -- {\fontsel texgyreschola
  Rodina Schola tvarově odvozena od New Century.}
* \code{pagella} -- {\fontsel texgyrepagella
  Rodina Pagella tvarově odvozena od Palatino.}
* \code{cursor} -- {\fontsel texgyrecursor
  Cursor tvarově odvozena od Courier.}

\bigskip
Více o rodinách fontů v \TeX/ové distribuci lze zjistit pomocí

\begtt
\fontfam[catalog] 
\bye
\endtt

v OpTeXu.


\pg.
