Hlavní navigace

ConTeXt: plovoucí prostředí

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

Sdílet

V moderní typografii se dnes již bez plovoucích prostředí neobejdeme. Proto si dnes řekneme, co jsou, čím nám mohou být užitečná a jak si s nimi poradí ConTeXt. A protože k plovoucím prostředím patří neoddělitelně křížové reference, bude řeč i o nich.

Co jsou plovoucí prostředí?

Název „plovoucí prostředí” je poměrně samovysvětlující. Jedná se o části dokumentu, které nemusí nutně být vysázeny v nějaké úzce definované části dokumentu, zato ale musí zpravidla splňovat požadavek na konkrétní umístění v rámci stránky. Uvedu-li příklad, tak dejme tomu obrázek v knize nemusí být nutně na straně 235, ale je třeba, aby se nevysázela jeho horní část na straně jedné a zbytek obrázku byl na straně následující.

Považuji za zajímavé, jakým způsobem jsou tyto struktury řešeny. Úloha TeXu zde je spíše symbolická – TeX má za úkol pouze rezervovat prázdné místo v dokumentu, ostatní se řeší pomocí jiného software. Tak například tabulky zmíněné v minulém díle ve skutečnosti vytváří skript Table.

Typy plovoucích prostředí

V defaultní situaci máme k dispozici „figure”, „table”, „graphic” a „intermezzo”. Prvé uvedené je určeno pro obrázky, druhé pro tabulky, třetí pro grafy a poslední jmenované pro intermezza. V příkladech v následujícím textu je budu nahrazovat slovem „float” a jejich plurály logicky slovem „floats”.

Základním příkazem pro práci s plovoucími objekty je příkaz \placefloat. Ten zajistí vysázení plovoucího objektu v zadané pozici, kterou můžeme definovat nepovinným parametrem, jemuž lze přiřadit například hodnoty left, right, here, top, bottom, inleft, inright, inmargin, margin, page, opposite, always, force nebo tall. Here je defaultní a zajišťuje vysázení objektu na místo, v němž se nachází příkaz pro vysázení. Hodnota page značí vysázení objektu na čistou stránku a force zase snahu o vynucení vysázení plovoucího objektu v dané pozici. Tento parametr je nepovinný, důležitější je popis objektu. Ten se však uvádí na rozdíl od předchozího v hranatých závorkách.

Nestačí-li vám zmíněné entity, není problém si vytvořit vlastní. Děje se tak pomocí příkazu \definefloat[jméno singuláru][jméno plurálu]. Tím se pro něj zpřístupní některé příkazy, které si za chvilku uvedeme, a je možno je používat stejně jako výše uvedené entity.

\definefloat[vsuvka][vsuvky]

Tím jsme vytvořili float prvek „vsuvka”. Volat jej budeme pomocí \placevsuvka, a stejně tak můžeme používat další příkazy, které nám dává ConTeXt pro práci s plovoucími objekty.

Rezervované místo pro plovoucí objekty

Někdy také můžete chtít prostě jenom nechat bílé místo pro plovoucí objekt, který tam doplníte později. Ani to ConTeXtu problémy nedělá, stačí vědět o příkazu \reservefloat. Je třeba mu zadat velikost rezervovaného místa, takže to bude zpravidla vypadat nějak takto:

\reserverfigure[height=5km,width=.3km,frame=on][umístění][reference]{Popis objektu.}

Pochopitelně podobným způsobem rezervujete místo pro graf ( \reservegraphic) nebo tabulku ( \reservetable) či další plovoucí objekty.

Seznamy plovoucích objektů

Aby toho nebylo málo, ConTeXt nám navíc umožňuje automaticky generovat seznamy plovoucích objektů. Děje se tak skrze příkazy \placelistoffloats ( \placelistoftables, \placelistofintermezzos, \placelistof,… ) a také pomocí příkazů \completelistoffloats, který generuje týž seznam, ale na vlastní stránce.

Když plovoucí objekt neexistuje…

Pokud ukazujeme na objekt, který ve skutečnosti neexistuje, v textu se místo odkazu na něj objeví dva otazníky. Je třeba na to dávat pozor, protože kompilace chybou neskončí.

Křížové reference

Křížové reference odkazují na plovoucí prostředí. Když takovouto část dokumentu vytvoříme, můžeme ji zpětně mnoha způsoby odkazovat. Je možno odkazovat třeba jméno objektu (Tabulka: Vývoj příjmů za rok 2007), číslo stránky objektu či kapitolu, kde se daný objekt nachází.

Křížové reference ovšem nemusí ukazovat pouze na plovoucí prostředí – stejně tak mohou odkazovat hierarchické jednotky dokumentu (kapitoly, sekce…) a podobně. Ostatně jak jistě tušíte, podobným způsobem se tvoří obsah.

Příkaz \in odkazuje příslušnou jednotku jejím číslem (číslo kapitoly, tabulky, grafu…), \about zase příslušný název. Pomocí příkazu \at lze pro změnu snadno odkázat stranu, na níž se objekt nachází. Všechny tyto příkazy vyžadují parametr specifikující referenci (do hranatých závorek) a lze jim zpravidla připojit parametr textu, který bude těsně předcházet vlastní referenci. Dejme tomu v kapitole \at[uvod] je totéž, co v \at{kapitole}[uvod]. Ale pozor! V interaktivních dokumentech již mezi těmito variantami rozdíl je, a to poměrně velký – asi jako mezi ‚kapitola <a href=„http://­www.kniha.cz“>1</a> a <a href=„http://­www.kniha.cz“>ka­pitola 1</a>‘.

root_podpora

Protože jsem to nezmiňoval v kapitole o hierarchických jednotkách dokumentu, krátce se k tomu vrátím dnes – chceme-li, aby byla kapitola odkazovatelná, je nutno ji zapsat ve tvaru \chapter[reference]{název kapitoly}.

Závěr

Ačkoliv jsme si toho o plovoucích prostředí řekli relativně hodně, možnosti ConTeXtu v tomto ohledu jsou mnohem širší. Po přečtení tohoto úvodního článku o nich si ale již dále poradíte sami. Předpokládám, že se k nim v budoucnu ještě vrátím, ale nyní je třeba vysvětlit důležitější věci. Jednou z nich jsou poznámky pod čarou, na které se mimo jiné podíváme příště.

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.