Portál AbcLinuxu, 5. duben 2020 12:49

TeX – 1 (seznamujeme se)

9. 10. 2013 | Petr Olšák
Články - TeX – 1 (seznamujeme se)  

V téměř každé linuxové distribuci je možné najít v nabídce balíčků program TeX. Je to letitý interpretr, který čte texty dokumentů, rozumí poměrně neobvyklému jazyku na řízení sazby a vytváří typografické výstupy ve formátu PDF (dříve byl používán formát DVI). Cílem tohoto seriálu je seznámit čtenáře s rozsáhlými možnostmi tohoto programu.

Jsem si vědom, že to je úkol nelehký. V dnešní době Google dokumentů, v době, kdy je klávesnice počítače stále více nahrazována gesty několika prstů na dotykové obrazovce (a zřejmě v nedaleké budoucnosti bude stačit dělat na počítač ksichty), je povídání o možnosti programování procesu elektronické sazby poněkud odvážné a může být i mimoběžné s dnešním obvyklým chápáním počítačů. Přesto věřím, že mezi linuxovými uživateli je mnoho těch, kterým klávesnice, programování a příkazový řádek stále říkají pane a budeme si snad rozumět.

Před více než třiceti lety Donald Knuth vytvořil TeX [tech] a dal ho světu zdarma k dispozici. Od té doby se bezezbytku vyplnilo, co říkal: dokumenty zpracované TeXem tehdy na naprosto rozličných a roztodivných počítačových systémech (od mainframů po první stolní počítače) jsou zpracovány stejně do posledního nanometru dnes jako před třiceti lety. Je zde absolutní nezávislost na systému i na čase. Ovšem chápu, že tím v současné době asi nikoho neohromím. Lidé se dnes oprávněně ptají, jaký TeX za těch 30 let prodělal vývoj. Knuth po deseti letech práce na TeXu jej v roce 1989 zmrazil. Své rozhodnutí zveřejnil v textu, který nazýváme TeXtament (viz např. Knuthovu stránku a odstavec označený Errata). Existují ale následníci TeXu, kteří jsou samozřejmou součástí každé moderní TeXové distribuce a mají poměrně pokročilé vlastnosti. I o nich budeme mluvit v dalších dílech seriálu.

Obsah

Obsah a forma dokumentu

link

TeX umožňuje při přípravě dokumentu oddělit jeho obsah od formy v míře, která je pro dosažení konkrétního cíle nejvýhodnější. Původní myšlenka předpokládala rozdělení uživatelů na autory a typografy-programátory. Typograf pomocí jazyka TeXu definuje design výstupního dokumentu a vymezí značky, které bude používat autor. Značek pro jednoduché dokumenty nemusí být mnoho: odstavce se oddělují prázdným řádkem a dále stačí používat značky pro zvýraznění textu (např. kurzívou), pro vymezení nadpisu a podnadpisu a pro řazení informací do výčtů. Autor textu pak tyto značky ve svém díle používá. Dá se to zhruba přirovnat k jazyku html, ale je to daleko přehlednější a při psaní pohodlnější. Dokument pak nechá autor zpracovat TeXem a vyleze mu PDF s typografií, kterou pro něj navrhl typograf a naprogramoval ji pomocí sady maker TeXu.

V roli typografa-programátora se jako první výrazněji uplatnil Leslie Lamport a vytvořil LaTeX. Je to sada maker pro TeX, která na jedné straně definuje skupinu značek pro autory textů a na druhé straně definuje vzhled výstupu. Tento vzhled se dá modifikovat různými doplňkovými sadami maker, tzv. styly, které rovněž připravují typografové-programátoři. LaTeX je určen pro psaní zejména odborných publikací. LaTeX pochopitelně není jediný způsob, jak použít TeX, takže jej v seriálu sice občas zmíním, ale jen okrajově.

Jiným příkladem takového oddělení obsahu od formy mohou být šablony pro závěrečné práce studentů vysokých škol. V případě šablon CTUstyle (pro ČVUT) a CUstyle (pro UK) jsem roli typografa-programátora přijal osobně a od studentů očekávám, že budou autory textu, kteří pouze využijí popsané značkování. Vzhledem k tomu, že jsem dokumentaci napsal v tomto značkování, mohou studenti také využít při pořizování svých textů metodu analogie.

Autoři matematických textů nemají příliš mnoho na výběr ani po třiceti letech. Dosud není znám software, který by v pohodlnosti pořizování matematických textů a v kvalitě výstupu překonal TeX.

Zajímáte-li se o typografii (nebo se dokonce živíte typografií), chcete vládnout nad automatickým sazečem a odmítáte situaci, kdy ten automat naopak ovládá vás, máte jedinečnou možnost použít TeX. Dostanete do rukou nástroj, kterým řídíte proces tvorby sazby do posledního detailu tak, jak chcete vy, a ne tak, jak naprogramoval někdo jiný. Rozmístění textu, obrázků a dalších grafických prvků je naprosto ve vašich rukou a jak již bylo řečeno, dáváte automatickému sazeči pokyny, které poslušně plní s nanometrovou přesností. Pochopitelně při takových ambicích je nutno zvládnout jazyk TeXu a zřejmě opustit roli uživatele LaTeXu, tedy pouhého autora textu, který používá již hotové značky.

Řešíte-li úlohu vyžadující dávkový způsob zpracování (vizitky, dopisy, hrací karty, jízdní řády, šachové diagramy, křížovky, rozvrhy), je TeX rozumnou volbou pro tvorbu požadovaného výstupu.

Chcete-li vytvořit třeba PDF dokument s rozličně automaticky sestavenými prvky sazby (křížové klikací reference, plovoucí záhlaví, automatické generování obsahů a rejstříků, netradiční pojetí strany, prolinkování vícejazyčné sazby, propojení textu s automatickým mluvítkem schopným přečíst i matematické rovnice, provázané odkazy do více různých PDF dokumentů atd.), je zde k dispozici TeX. Problém je jen jediný: musíte umět používat jazyk TeXu, který je dnešním programátorům bohužel velmi vzdálen od toho, na co jsou zvyklí.

Uvedeného problému jsem si vědom, a proto v tuto chvíli dokončuji novou knížku TeX pro pragmatiky, která by měla usnadnit také začátečníkům seznámit se s TeXem. Má předchozí knížka TeXbook naruby byla určena pro typografy-programátory a neměla před sebou odrazový můstek, který by mohl použít nejprve začátečník. Tímto můstkem by mohla tedy být má nová knížtička. Její text je už nyní v nehotovém stavu na internetu.

Minimální dokument

link

Zkuste na příkazový řádek napsat příkaz tex. Pokud se Vám představí:

This is TeX, Version 3.1415...

máte TeXovou distribuci nainstalovánu. Pokud ji nemáte, zkuste instalovat buď odpovídající balíček z Vaší linuxové distribuce nebo stáhněte přímo distribuci TeXlive podle návodu na webových stránkách. Předpokládám, že dnes vesměs všechny linuxové balíčkovací systémy přebírají TeXlive, ovšem patrně s nějakým zpožděním. Jak hluboké je toto zpoždění poznáte, až si vyzkoušíte následující minimální dokument.

Do souboru pokus.tex napište nějakým svým oblíbeným textovým editorem:

Ahoj světe!
\bye

a tento soubor zpracujte příkazem:

pdfcsplain pokus

Příkaz pdfcsplain (je součástí TeXové distribuce) spustí TeX s formátem csplain s výstupem do PDF. Co to přesně je, si povíme v některém z dalších dílů.

Může se stát, že nebude správně zpracováno písmeno ě ve slově světe. Podívejte se do výstupního PDF nějakým prohlížečem a zkontrolujte to. Je-li tam problém, pak zkontrolujte dvě věci. Za prvé: vstupní soubor pokus.tex musí být napsán v kódování UTF-8. Za druhé: je třeba mít dostatečně čerstvou verzi csplainu.

Problém z druhého důvodu může být způsben tím, že změna implicitního kódování vstupu v csplainu z původního ISO-8859-2 na UTF-8 proběhla poměrně nedávno, v prosinci 2012. V souvislosti s tím krátce odbočím a popíšu způsob šíření novinek v csplainu.

Jakmile na svých webových stránkách zveřejním novou verzi výchozího souboru csplain.tar.gz, přes noc se automaticky překopíruje na master server CTANu (archiv TeXového softwaru) a během dalších cca dvou dnů se odtud automaticky převezme do TeXových distribucí (TeXlive, MikTeX) a do mirrorů po celém světě. Provede-li uživatel TeXlive nebo MikTeXu obnovu balíčku csplain ze sítě, je zde jistota, že necelý týden po mém zveřejnění má novou verzi ve svém počítači.

Linuxové balíčkovací systémy typicky přebírají TeXlive jako celek a někdy s notným zpožděním. TeXlive je každoročně v květnu označen verzí podle roku (např. TeXlive 2013). Máte-li tedy v linuxové distribuci TeXlive ve verzi 2013, neměli byste mít problém. Máte-li starší, zřejmě budete mít problém s háčkovaným e. Upgrade csplainu uvnitř balíčku TeXlive nemusí být snadný. TeXlive má sice svůj vlastní balíčkovací nástroj tlmgr, ten je ale k dispozici jen tehdy, když TeXlive instalujete samostatně mimo balíčky své linuxové distribuce.

Věřím, že problém s háčkovaným e bude mít minimum uživatelů a můžeme se tedy vrátit k minimálnímu příkladu. Je zde vidět, že pro jednoduché věci (tisk jediného výkřiku) stačí jednoduché značkování: je zde jediná značka \bye, kterou dáváte najevo, že má TeX ukončit svou činnost. Konec souboru samotný totiž není pro TeX signálem k ukončení činnosti: místo toho přechází na čtení dalších informací z terminálu. Ačkoli je někdy příjemné si s TeXem popovídat na terminálu, začátečníky to spíše irituje. Ti pak musejí utnout takovou komunikaci například pomocí Ctrl-D.

Věřím, že čtenáři nebudou chtít utnout komunikaci o TeXu po přečtení prvního dílu seriálu a rádi si počkají na další díly. Budu se těšit.

Minimální dokument v LaTeXu

link

Už jsem se zmínil o LaTeXu, takže by nebylo fér zatajit, jak vypadá náš minimální dokument, rozhodnete-li se TeX používat jen jako autor textů s připraveným značkováním a typografickým řešením z LaTeXu. Toto značkování je poněkud ukecanější a stejný minimální dokument pokus.tex v něm vypadá takto:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
Ahoj světe!
\end{document}

Dokument můžete vyzkoušet zpracovat příkazem:

pdflatex pokus

Kolem vlastního výkřiku, který se má vysázet, nyní vidíme ve zdrojovém souboru několik povinných značek, které nutí uživatele LaTeXu k jisté disciplíně. Musejí například pomocí \documentclass specifikovat základní typ dokumentu a obskládat dokument pomocí \begin{document} a \end{document}.

Čtenáři, kteří již někdy TeX viděli, možná namítnou, že v ukázkách není zavedena čeština, tedy vzory dělení slov zůstávají nastaveny jen implicitní anglické. To je pravda. Ovšem minimální dokument obsahuje tak krátký výkřik, že jej TeX do více řádků lámat nebude a dělení slov nevyužije. Pokud byste ale chtěli napsat něco delšího, pak je třeba přepnout na české vzory dělení slov. V případě LaTeXového značkování je třeba vložit k řádkům \usepackage další \usepackage[czech]{babel} a v případě csplainu je třeba přidat na začátek značku \chyph.

Seriál TeX (dílů: 15)

První díl: TeX – 1 (seznamujeme se), poslední díl: TeX – 15 (mikrotypografie).
Následující díl: TeX – 2 (něcoTeX)

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.