ConTeXt: seznámení s typografickým systémem

26. 1. 2007
Doba čtení: 4 minuty

Sdílet

Chtěli byste dělat kvalitní sazbu? Příjde vám LaTeX moc neohebný a plain moc složitý? Chtěli byste ovládat snadnou a zároveň kvalitní typografickou sazbu, která musí být zároveň moderní a graficky atraktivní? A zkoušeli jste už ConTeXt? Že jste to nikdy neslyšeli?

Komu je určen seriál

Seriál je určen i začátečníkům. Očekávám sice již znalost nějakého TeXovského balíku (zpravidla LaTeX nebo plain), nicméně rozhodně to není nutností. Co se rozsahu týče, záleží hlavně na vás, čtenářích. Rád bych aby z toho vzešel slušný a ucelený návod na „ConTeXtování”, protože co se dokumentace týká, tak je pořád co dohánět. A v té české zvlášť.

O co jde

ConTeXt je, stejně jako třeba LaTeX, balík maker pro typografický systém TeX. ConTeXt ovšem zachází mnohem dál – není to nadstavba pouze nad TeXem, ale i nad dalšími balíky software, jako je třeba MetaPost. MetaPost je jazyk k programování vektorové grafiky, což přináší do TeXové sazby schopnost atraktivní sazby.

Vyvíjí jej nizozemská firma Pragma ADE, konkrétněji Hans Hagen, již někdy od roku 1990. Po dlouhou doby byla k dispozici pouze holandská dokumentace, což přirozeně bránilo většímu rozšíření tohoto balíku maker. Co se licence týče, je situace podobná jako u TeXu – zdrojáky jsou volně k dispozici, ale po jejich úpravě se již nesmí šířit pod jménem ConTeXt.

Srovnání s LaTeXem

U LaTeXu je jeho omezením jeho primární určení – především vědecké publikace, u kterých až tak moc nezáleží na grafice, barvičkách a moderním vzhledu. Toto LaTeX nabízí, ale když chce člověk víc, může zažít poměrně krušné chvilky. Kdo to někdy zkoušel, ví o tom své.

Na rozdíl od LaTeXu, který je postaven „na zelené louce”, je ConTeXt postavený nad makry plainu. Prakticky se tam s nimi ale moc nesetkáte a většinou jejich používání není ani dobrý nápad.

ConTeXt je také „chytřejší” v tom ohledu, že nemusíte řešit, kolikrát všechno přeložit, aby byl správně vysázen obsah a podobné věci. Je to tím, že není volána přímo TeXová binárka, ale Perlovský skript TeXexec, který toto řeší automaticky. Ovšem není to jediná věc, co nám tento milý skriptík přináší, lze mu například předat parametr specifikující výsledný výstup (do Postskriptu, PDF nebo DVI), použité kódování, jaké strany si přejete zpracovat, zda se má sázet koncept nebo již dokument „na čisto” a podobně. Krom TeXexec se používá také pomocný program TeXutil.

Výhody a nevýhody

Za velikou výhodu ConTeXtu považuji propojení typografického světa TeXu s MetaPostovým světem grafiky. V jednom dokumentu můžeme využívat jak příkazů TeXových, tak MetaPostových, jejichž využívání je navíc zjednodušeno balíkem maker MetaFun. Pro psaní publikací TeXnického charakteru člověk určitě ocení zvýrazňování syntaxe pro některé jazyky (bohužel těch přímo podporovaných zatím moc není, pokud je mi známo).

ConTeXt hodně staví na PDFTeXu, což se projevuje nejen skvělou podporou práce s barvami, ale i schopností interaktivity. Hypertextové odkazy v TeXovských dokumentech tedy již nejsou díky ConTeXtu nic zvláštního. Ale tam to teprve začíná – pro interaktivitu lze používat JavaScript. Chcete si napsat v TeXu vědeckou kalkulačku? Není problém, vlastně jedna taková již byla pro demonstrování schopností ConTeXtu napsána.

V žádném případě nelze opomenout, že ConTeXt dnes již dokáže sázet i XML soubory. A také se v něm také velmi dobře sází chemické vzorce a rovnice (díky modulu PPCHTeX).

Co se nevýhod týče, je fakt, že ConTeXt je naprosto jednoznačně nejpomalejší z TeXových maker. Ale při dnešním výkonu HW, má to smysl řešit?

Zmíním ještě to, že ConTeXt má více národních rozhraní. Takže místo \chapter můžete klidně používat \kapitola (za předpokladu, že na to překladač upozorníte). Já osobně to nepovažuji za vhodné, kvůli tomu, že v Japonsku si s naší „kapitolou” zkrátka neporadí, ale je to na vás, ConTeXt umožňuje i toto.

Jdeme na věc!

Dost již bylo teorie, raději si ukážeme ConTeXt v praxi.

bitcoin_skoleni

\setupoutput[pdftex]         % Určuje výstup ConTeXtu.
\enableregime[utf]           % Kódování.
\mainlanguage[cz]            % Podle typografických pravidel
% jaké země se bude ConTeXt řídit.
\setuppapersize[A5][A5]      % Velikost papíru bude A5 a bude na stránce opět o téže velikosti.
% Samozřejmě lze mít dvě stránky A5 na stránce A4 (proto ta druhá volba).
\setupcolors[state=start]    % Zapne používání barev.
\setuppagenumber[state=stop] % Vypne číslování stránek.
\setupframed                 % Nastavujeme text v rámečcích.
    [corner=round,            % Rámeček bude mít oblý roh.
    framecolor=blue,          % Rámeček bude modrý.
    background=color,         % Pozadí bude barevné.
    backgroundcolor=green]    % Určujeme konkrétní barvu pozadí.
\definetyping                % Nadefinujeme jazyk, jehož syntaxi chceme zvýrazňovat.
    [TEX]                     % Název, na který se budeme odkazovat.
    [option=TEX]              % Jazyk.

% Informace o dokumentu, dostupné skrze "vlastnosti" v pdf prohlížeči.
\pdfinfo{
   /Title (Hello ConTeXt)
   /Author (Botanicus)
   /ModDate (\currentdate)
}

\starttext
% Je podobné LaTeXové konstrukci \begin{document},
% počátek dokumentu, ovšem není to úplný adekvát.

\framed{\bi Hello \ConTeXt!}
% \framed dělá rámeček
% \bi dělá tučnou kurzívu
% \ConTeXt sází logo

% Použijeme námi nadefinované zvýrazňování syntaxe.
\startTEX
\setupoutput[pdftex]         % Určuje výstup ConTeXtu.
\enableregime[utf]           % Kódování.
\mainlanguage[cz]            % Podle typografických pravidel

{\bi Toto je vlastní dokument.}
% Výčtový seznam pomocí odrážek.
\startitemize
    \item položka
    \item druhá
    \item ještě jedna
\stopitemize
\stopTEX

\stoptext
% Opět něco podobného LaTeXovskému \end{document},
% konec vlastního dokumentu. 

Teď stačí dokument přeložit příkazem texexec dokument. Můžete si všimnout, že vzniká poměrně dost různých pomocných souborů. Aby v tom byl pořádek, leckdy se hodí udělat si Makefile, kde si kromě „úklidu” můžete také další akce související třeba s prohlížením dokumentu a podobně. Fantazii se meze nekladou.

Příště

Toto byl jen takový rozehřívací díl, pořádně se do toho vrhneme příště. Budu se snažit seriál psát hodně prakticky, takže začneme tím, co je asi nejdůležitější – logická struktura dokumentu, výčtové seznamy, písma… nebo tak něco. To podle toho, na co budu mít právě chuť a co se do příštího dílu zrovna vejde. Rozhodně se nemusíte bát, že byste o to přišli.

Odkazy

Seriál: ConTeXt

Autor článku

Jakub Šťastný byl v letech 2007 až 2008 redaktorem serveru Root.cz. Mezi jeho zájmy patří Linux, programování a typografický systém TeX.