Hlavní navigace

ConTeXt: psaní TeXnických textů

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

Sdílet

V dnešním článku o systému ConTeXt se budeme zabývat psaním technických textů, tedy různými způsoby zápisu programového kódu a zvýrazňování jeho syntaxe. Povíme si také, jaké znaky TeX nerad vidí použité samostatně a co dělat s tím, abychom je vůbec v běžném textu mohli používat a zobrazovat.

Prostředí verbatim

V ConTeXtu se toto prostředí nejmenuje verbatim, jak je již poměrně zažité zejména z LaTeXu, ale typing. Poněvadž je to prostředí, je třeba kód umístit mezi \starttyping\stoptyping.

V tomto prostředí je každý znak zpracován v námi zapsané podobě, tedy zpětné lomítko je pouhým zpětným lomítkem, nikoliv znakem uvozujícím příkaz. Takto to platí na všechny znaky včetně znaků konce řádku a tabulátorů. Co se tabulátorů týče, osobně si myslím, že je zde rozumnější místo nich používat mezery, tabulátory mi zde přijdou zbytečně velké.

Kromě zmíněného prostředí typing máme k dispozici příkaz \type. Ten slouží k témuž, s tím rozdílem, že je určen k použití v textu. Jinými slovy chcete-li zapsat větší kus kódu, použijete prostředí typing, kdežto na jednotlivý příkaz umístěný přímo v odstavci příkaz použijte  \type.

Snadno se vám může stát, že obsahem příkazu \type bude kód obsahující složené závorky. Budou-li navíc nespárované, tedy počet levých závorek nebude odpovídat závorkám pravým, pak nebude možno použít \type{text se závorkou {}, nýbrž bude třeba jako oddělovač použít jiný znak, třeba znak roury: \type|text se závorkou {|. Nebo místo znaku roury můžete použít klidně lomítko, je to jedno.

Dalším požadavkem na toto prostředí bývá zvýrazňování syntaxe. To jsme si již předvedli v prvním díle, dnes si podrobněji vysvětlíme, co se to tam vlastně dělo. Kód vypadal takto:

\definetyping[TEX][option=TEX] 

Vezmeme-li to obecně, lze to přepsat jednoduše takto:

\definetyping[jakékoliv jméno][option=jazyk, jehož syntaxi chceme zvýrazňovat] 

Toto je jeden z příkazů, které mají za cíl něco definovat, tedy vytvořit novou instanci prvku s námi zadanými parametry. Jste-li programátory, možná vám ke snazšímu pochopení může pomoci informace, že v základě je naprosto stejné jako je v objektovém programování vytvoření nového objektu. Všechny takové příkazy začínají řetězcem \define, za nímž následuje, co že to vlastně chceme vůbec definovat.

Zde definujeme nové prostředí s vlastnostmi podobnými prostředí typing, ale s některými námi upravenými parametry. Protože definujeme něco nového, musíme to také nějak pojmenovat. A samozřejmě tím jménem to pak budeme volat. Protože jsme definovali nové prostředí, a protože víme, že příkazy prostředí se sází mezi \start prostředí a \stop prostředí, je nasnadě, že prostředí definované v ukázce výše se bude volat \startTEX  – \stopTEX. Stejně tak ale můžete použít třeba „mysackovokras­neprostredi” či jakýkoliv jiný název, je to jedno.

Jazyky, jejichž syntaxi umí ConTeXt zvýrazňovat, jsou MetaPost, TeX, Perl a JavaScript, respektive nepodařilo se mi nikde najít, že by uměl něco dalšího, ovšem vzhledem k jeho rychlému vývoji to nemohu vyloučit. Víte-li o nějakých dalších, budu potěšen, podělíte-li se o znalosti v diskusi. MetaPost zapíšeme jako MP, TeX jako TEX, Perl jako PL a JavaScript jako  JS.

Co třeba podívat se do minulého dílu seriálu o MetaPostu a zkusit si vysázet ukázku? Pokud vám to nepůjde, doporučuji zkontrolovat, zda máte v dokumentu \setupcolors[state=start], jak jsem ostatně již upozorňoval v minulém díle.

Další moc milý příkaz je \typefile{soubor}. Ten jako verbatim text vloží zadaný soubor.

Chování verbatim režimu můžeme ještě v mnohém změnit, ale o tom si řekneme, až budeme vědět něco o setupech.

Psaní speciálních znaků v běžném textu

TeX využívá některé znaky jako speciální, které nelze zapsat přímo. S několika z nich jsme se již seznámili – v prvé řadě je to zpětné lomítko uvozující kterýkoliv TeXový příkaz, dále je to komentář značící znak procenta a konečně závorky. Složené závorky tvoří skupinu, příkazy v ní obsažené mají význam pouze v ní (vzpomeňte na minulý díl a příklad s řezy).

Nicméně to není vše, existují ještě další speciální znaky. Pro vstup do matematického módu se používá znak dolaru, tilda značí nezlomitelnou mezeru, při definici maker se setkáváme se znakem mřížky a do toho všeho ještě znak ampersandu, kterým nebudu plést, v ConTeXtu je to s ním totiž trochu jinak než třeba v plainu. Tedy alespoň na první pohled, interně je to totéž.

CS24_early

Co tedy s tím? Obecná rada je lupnout před to zpětné lomítko a již by vše mělo fungovat v pořádku. Není to však zcela stoprocentní, problém dělají totiž závorky. Složenou závorku je třeba psát v matematickém módu a ještě k tomu escapovanou, tedy $\{$, a špičatou tagovou závorku taktéž v matematickém módu, ale neescapovanou, tedy pouze  $<$.

S problémem se dále můžete setkat u znaku stříšky a tildy. Jak již víte z minula, Knuth si o unicode mohl nechat tak leda zdát, a tedy všechno je vymyšleno tak, abyste si vystačili s ASCII. No a tak \^u vám vyplivne û a podobně \~O zase Õ. Řešení je prosté, stejně jako minule, prostě za příkaz dáme prázdnou skupinu a máme vystaráno: \~{}u už normálně vytiskne  ~u.

Seriál: ConTeXt

Byl pro vás článek přínosný?

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.