Hlavní navigace

ConTeXt: plovoucí prostředí

Jakub Šťastný 1. 5. 2007

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>‘.

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ě.

Našli jste v článku chybu?

30. 5. 2007 14:37

jik (neregistrovaný)
Děkuji za seriál, konečně něco z oblasti TeXu s čím se mi trochu začalo dařit, ale naboural jsem na obrázky. Nebude ještě další díl o nich? Ač to vypadá jednoduše, nejsem schopen vložit obrázek (ať už pdf, ps, png), maximálně mám jakýsi černý obdélník... Někde něco není nastaveno a běžná zpráva je:
systems : begin file viz at line 20
figures : figure ./ujp_dvojbarva.pdf has zero dimensions
figures : figure ./ujp_dvojbarva.pdf has zero dimensions
figures : fi…


Lupa.cz: E-shopy: jen sleva už nestačí

E-shopy: jen sleva už nestačí

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

DigiZone.cz: Další dva kanály nabídnou HbbTV

Další dva kanály nabídnou HbbTV

Vitalia.cz: Žloutenka v Brně: Nakaženo bylo 400 lidí

Žloutenka v Brně: Nakaženo bylo 400 lidí

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

Přehledná titulka, průvodci, responzivita

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

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

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

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: Na poslední chvíli šokuje vyjímkami v EET

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

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: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

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č?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu