Hlavní navigace

ConTeXt: píšeme jednoduchý dokument I

Jakub Šťastný 19. 2. 2007

Dneska se do toho vrhneme konečně naostro a naučíme se poradit si se základními elementy dokumentů. Svou pozornost zaměříme na hierarchickou strukturu dokumentu a s ní souvisejícími obsahy, seznamy, řezy písma, no a místo takovéu třešničky na dortu se trochu namlsáme barvičkami.

Hierarchická struktura dokumentu

Základem každého slušného dokumentu je určitá hierarchická struktura. To je velmi důležité jak z hlediska snadného pochopení dokumentu, tak z hlediska zautomatizování práce s ním, ať již jde o společný styl nadpisů kapitol, výpis nadpisů kapitol v záhlaví či prostě automatická tvorba obsahu. Tuto filipiku proti psaní dokumentů složených ze změtí různě formátovaných elementů bez jejich jednoznačné návaznosti na hierarchickou úroveň nevedu jen tak bez příčiny – stačí se podívat do několika dokumentů, nejlépe poslaných od našich nepočítačově založených kamarádů či naší státní správy.

Hierarchické jednotky ConTeXtu

Nejvyšší hierarchická jednotka v ConTeXtu je \chapter, po ní následuje \section, \subsection a \subsubsection. Respektive existuje ještě vyšší jednotka než chapter a tou je \part. Ta se nezobrazuje v TeXtu, ale v obsahu ji uvidíte.

Souběžně s touto strukturou máme ještě jednu paralelní. Zde je nejvyšší jednotkou \title, po něm následuje \subject, \subsubject a aby těch sub nebylo málo, tak máme ještě \subsubsubject. V čem se liší od té předchozí? Nejsou číslované a nevkládají se do obsahu. No vidíte… málem bych zapomněl na obsah.

Obsahy

Pro psaní obsahů máme v zásadě dva základní příkazy. Častěji používaný z nich se volá \completecontent a způsobuje vysázení obsahu s nadpisem „Obsah” a tím druhým je \placecontent. Ten vysází pouze obsah bez onoho nadpisu.

Řezy písem

Pro snazší orientaci v TeXtu je vhodné používat více řezů písem, a tedy každý systém sloužící k psaní jen trochu složitějších TeXtů touto možností disponuje. Nejinak je tomu v případě ConTeXtu. Kurzívu vykouzlíte, stejně jako v XHTML, pomocí em. Jenom to pochopitelně nebude tag, ale TeXový příkaz \em. Vlastně je to trochu složitější, em je komplexní makro, které někdy přepíná na kurzívu a jindy na skloněné písmo, dostaneme se k tomu jindy. Důležité je vědět, že automaticky použije italickou korekci, což v ostatních případech musíme udělat ručně. Chceme-li explicitně volat skloněné písmo, můžeme tak učinit příkazem \sl, kdežto italiku zavoláme příkazem \it. Pro tučné písmo nám poslouží \bf, pro tučnou kurzívu zase \bi. Tučné skloněné písmo nám vykouzlí \bs. Strojopis nastavuje \tt a bezpatkové písmo \ss. Na standardní patkové písmo nás vrátí TeXový příkaz  \rm.

Když už jsem nakousl tu italickou korekci – sázíme-li TeXt skloněným písmem či kurzívou (italikou), tak v bodě, kdy přechází kurzíva zpět do normálního písma se poslední písmenko psané kurzívou nepěkně naklání příliš blízko následujícímu TeXtu. A to právě řeší italická korekce. Buď používejte makro em a vůbec si s tím nelámejte hlavu, nebo musíte vložit \/, což způsobí vložení větší mezery.

Skupiny

Teď je nejvyšší čas říct pár slov o skupinách. Skupina je do jisté míry autonomní jednotka, v tom smyslu, že když v ní nastavím tučné písmo, bude to platit pouze v ní. Skupinu můžete snadno kdekoliv v TeXtu vytvořit uzavřením do složených závorek.

Běžný \TeX{}t {\bf tučný \TeX{}t} opět běžný \TeX{}t 

Předpokládám, že vám není jasné, co má k čertu znamenat ten „\TeX{}t”. Ve skutečnosti je to velmi jednoduché – příkaz \TeX sází logo TeXu. Když chceme napsat TeXt, asi nemůžeme samozřejmě použít přímo \TeXt, protože TeX by si myslel, že je to jeden příkaz. Proto použijeme prázdnou skupinu k jejich oddělení. Abyste nebyli později překvapeni, lze to řešit ještě třeba takto: \TeX t. TeX totiž na mezery za příkazem kašle a sází až další nemezerový znak. To může občas dělat problém. Představte si třeba větu:

\ConTeXt je můj nejlepší kamarád 

Nevysází se jako „ConTeXt je můj nejlepší kamarád”, nýbrž jako „ConTeXtje můj nejlepší kamarád”. Proto opět použijeme prázdnou skupinu, abychom tomu zamezili:

\ConTeXt{} je můj nejlepší kamarád 

Už jen podotknu, že skupiny můžete do sebe vkládat, jak je libo, a pak vás s nimi přestanu trápit.

Výčtové seznamy

Narozdíl od LaTeXu si ConTeXt vystačí s jedním základním prostředím na seznamy. Tím základním prostředím je itemize. Prostředí je všechen TeXt mezi \start<jméno_prostředí> a \stop<jméno_prostředí>. Pro označování jednotlivých položek se používá \item. Takže základ vypadá takto:

\startitemize
   \item položka
   \item druhá
   \item ještě jedna
\stopitemize 

Možná bych sem neměl tahat svoji náklonnost k plainu, ne zdaleka vždy se v ConTeXtu vyplatí plainovské fígle používat, ale tohle je opravdu pěkný trik:

\catcode`\*=13
\def*{\item}

\startitemize
   * položka
   * druhá
   * třetí
\stopitemize 

Hned je to snazší, viďte? Samo o sobě velmi jednoduchý trik, ale k jeho pochopení je třeba mít už poměrně slušné základy TeXu, a proto zájemce odkazuji na skvělou knihu Petra Olšáka TeXbook naruby. Je k dostání jak v tištěné podobě, tak v podobě elektronické včetně zdrojových kódů, které jsou mimochodem velice poučné. Stáhnout si je můžete ze stránek autora.

Různé typy odrážek můžeme nastavit pomocí \startitemize[n] dělá číslovaný seznam a \startitemize[r] zase seznam číslovaný římskými čísly. K dalším typům se dostaneme, až se budeme tímto prostředím zabývat detailněji.

Barvičky

O barvičkách se toho dá napsat hodně, teď vezmu jen naprostý základ – chcete-li barvičky, je třeba aktivovat barevný výstup pomocí \setupcolors[state=start] a pak zkusit nějakou použít. V základních barvách je k dispozici poměrně dost barev, všechny si je můžete vypsat příkazem \showcolor. Ten udělá v dokumentu tabulku s barvičkami a jejich názvy a každý název lze použít jako TeXový příkaz. Kupříkladu vidím, že je tam barva middlecyan, tak zkusím {\middlecyan zkouška barviček} a je to. Nic nám nebrání nadefinovat si barvy svoje, ale o tom až někdy příště.

Příště

Příště budeme pokračovat v rozběhnutém odhalování základů ConTeXtu. Rozhodně se můžete těšit na delší souvislou ukázku. Ty znalejší z vás, kteří se možná budou rozčilovat, proč jsem důkladně nerozebral tak důležité nastavování, byť jsem to mohl sjet rovnou s nadpisy a podobně, mohu ubezpečit, že se k tomu dostanu. Ale nejdřív chci projít základy.

Našli jste v článku chybu?

21. 2. 2007 23:46

Je Vám ale snad jasné, že slovní spojení „být o něčem“ jakkoli kvalitní sazbu spolehlivě pošle do kytek? :-) Dneska už lidi neumějí ani česky, k čemu jim pak budou TeXnické znalosti, když obsah „bude o špatné češtině“? :-) (Slovní hříčka a rýpanec zde nejsou čistě náhodné. ;-))

21. 2. 2007 23:42

Text ve významu text toho má s TeXem (odvozeným od techné) v etymologii společného docela dost – jsou to příbuzná slova, vlastně totožná :-)
Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?