Předchozí   Další   Dolů   Obsah 

M) Plovoucí prostředí

Umisťování kompaktních tabulek a obrázků do textu je obecně problémem. Tyto objekty nemohou být na rozdíl od obyčejných textových odstavců rozděleny na rozhraní stránek. Při práci s LaTeXem nemáme tak rychlou kontrolu, co se stane s okolím obrázku při jeho přemísťení, jakou máme u WYSIWYG editorů. LaTeX však nabízí jinou filozofii práce při umisťování těchto objektů - objekt se umístí do tzv. plovoucího prostředí. Pomocí tohoto nástroje lze relativně snadno a pohodlně umisťovat obrázky a tabulky do textu. Uživatel nemusí specifikovat umístění objektu detailně.

Syntaxe:
\begin{figure}[loc] nebo \begin{figure*}[loc] - pro obrázky
\begin{table}[loc] nebo \begin{table*}[loc] - pro tabulky
Ve dvousloupcovém režimu verze s hvězdičkou způsobuje, že se objekt umisťuje přes oba sloupce najednou, verze bez hvězdičky způsobuje umístění objektu uvnitř jednoho sloupce. V jednosloupcovem režimu jsou obě verze ekvivalentní.

Do prostředí table je často vnořeno prostředí tabular. Jako nepovinný parametr prostředí figure a table mohou být uvedena některá (1 až 4) z písmen h, t, b, p specifikující umístění objektu, které je do prostředí vnořeno. Význam:

h - umístění v místě uvedení ve zdrojovém textu (nefunguje pro dvousloupcové tabulky a obrázky ve dvousloupcovém režimu stránky)
t - umístění na začátku stránky, na které je prostředí uvedeno ve zdrojovém textu; Pozn: může se umístit i na stránce následující
b - umístění na konci stránky, na které je prostředí uvedeno ve zdrojovém textu (nefunguje pro dvousloupcové tabulky a obrázky ve dvousloupcovém režimu stránky); Pozn: moc mi to nefunguje
p - umístění na stránce, na které není text a která není příliš fyzicky a logicky (v jiné sekci) vzdálena od místa uvedení ve zdrojovém textu; může se umístit i na stránku, kde jsou i jiné (jen) plovoucí objekty.
V případě více písmen se LaTeX pokouší splnit požadavky zleva do prava. Požadavek považuje za splněný, pokud stránka nepřeteče ani příliš nepodteče. Implicitní hodnota loc je tbp - nejdříve se tedy LaTeX pokusí splnit t, když se mu to nepodaří, pokusí se o b, když ani to ne, pokusí se o p. Pokud se LaTeXu nepodaří vhodné umístění, umístí objekt na konci dokumentu na stánce, na které není obyčejný text. Platí přitom důležitá zásada: LaTeX nikdy nepřehodí objekty stejného druhu (nezamíchá obrázky a nezamíchá tabulky). Když se tedy např. nějaký obrázek nemůže vhodně umístit a umístí se tedy až na konci dokumentu, umístí se na konci dokumentu i všechny následující obrázky. Vyjímkou je pouze možnost prohození jednosloupcového a dvousloupcového obrázku ve dvousloupcovém dokumentu.

Ještě se může hodit následující příkaz ovlivňující umístění:
\suppressfloats[t nebo b] - zabrání umístění obrázků a tabulek uvedených za tímto příkazem na horní nebo dolní části stránky, na které je tento příkaz uveden, které by se jinak takto umístily. Pokud volitelný parametr chybí, znamená to zabránění umístění nahoře i dole.

V prostředí figure a table se může umístit tento příkaz:
\caption[případně jiný text v seznamu obrázků nebo tabulek]{text}. Tím se vygeneruje označení tabulky nebo obrázku - číslování (i detaily v označování) je automatické. Případné \label se musí vyskytovat až za \caption nebo musí být uvnitř argumentu příkazu caption. Pokud nejsme spokojeni s uvedením označení obrázku (při použití balíku czech je to Obrázek.), můžeme toto označení předefinovat pomocí \renewcommand v preambuli (za \usepackage{czech}) na např. Obr.:
\renewcommand{\figurename}{Obr.}. U tabulek se jedná o příkaz \tablename.
Mimochodem v plovoucím prostředí může být umístěno vlastně v podstatě cokoliv - třeba i několik obrázků s několika příkazy \caption nebo normální text.

Pozn. Obrázek nebo tabulku do plovoucího prostředí samozřejmě nemusíme umisťovat a dokoce jej (ji) můžeme umístit do poznámky na okraji (pak ale můžeme potřebovat příkaz \raisebox pro posunutí referenčního bodu - viz. boxy, protože objekt třeba nebude umístěn přesně tak, jak chceme).

Pro umisťování plovoucích objektů existuje řada pravidel a parametrů. Hodnoty parametrů lze uživatelsky ovlivňovat. Zmiňme jen dva:

totalnumber - čítač, jehož hodnota znamená maximální počet plovoucích objektů, které se mohou objevit na stránce s obyčejným textem (implicitní hodnota je myslím 3). Můžeme ho ovlivnit pomocí \setcounter (např. \setcounter{totalnumber}{2}).

\textfraction - příkaz definující minimální část stránky zabranou obyč. textem, na které jsou plovoucí objekty (implicitně definuje tuto velikost myslím jako 0.2 - tedy na takové stránce může být maximálně 80% plochy zabráno plovoucími objekty). Příkaz lze předefinovat pomocí renewcommand (např. \renewcommand{\textfraction}{0.15}). Pozn.: moc mi to nefunguje.

Pozn. Pokud se jedná o jednosloupcové plovoucí objekty ve dvousloupcovém stylu, mají tyto parametry stejný význam - jen místo stránky je nyní sloupec.

Pokud do hranatých závorek před loc dáme vykřičník, nebude LaTeX při umisťování plovoucího objektu přihlížet k omezením plynoucích z parametrů totalnumber, textfraction a podobných omezení - bude se maximálně snažit splnit loc (např. \begin{figure}[!ht]).

Lidé, kteří neumí s LaTeXem zacházet si často stěžují na velké problémy při umisťování obrázků a tabulek. Pravda je, že LaTeX má poměrně přísná kritéria na vzhled dokumentu a pokud se mu plovoucí objekty nepodaří umístit podle instrukcí uživatele tak, aby splnil svá kritéria na estetičnost, umístí je na konec dokumentu, čímž dá najevo, že se mu nepodařilo splnit požadavky uživatele. Pro pohodlnou práci je velmi důležité zachovat zhruba následující postup:

  1. Přednostně se snažit využívat plovoucí prostředí pro umisťování obrázků a tabulek. Pokud nám nevyhovuje tvar popisu plovoucího objektu vygenerovaného příkazem caption, nemusíme příkaz caption používat a popis umístit do plovoucího prostředí ve tvaru a na místo, které nám vyhovuje - pak se ovšem vzdáme automatického číslování plovoucího objektu (pokud ovšem automatické číslování nezařídíme jinak - viz. poznámka na konci této kapitoly). Často můžeme potřebovat vygenerovat ručně asi následující popis:
    OBR 1.: Na tomto obrázku je znázorněno ....... .... ... .. .. ..,
      což ukazuje na ........ ..... ... ... ... .. ..
    Tento tvar pohodlně vyrobíme pomocí parboxu:

    OBR 1.: \parbox[t]{.7\textwidth}{Na tomto obrázku ..... .... ... ..}
    (šířka 0.7\textwidth je jen příklad).

    Pokud má LaTeX problémy se splněním našich požadavků, snažit se nejdříve změkčit jeho tvrdé normy použitím vykřičníku a pokud toto nepomůže, ulehčit mu práci změkčením našich požadavků (např. umístěním obrázku trochu na jiné místo) - toto ovšem případně dělat až v závěrečné fázi výroby dokumentu.

  2. Pokud se to stále nepovedlo a naše požadavky na umístění obrázku nebo tabulky jsou dost nekompromisní (typicky proto, že máme poslat příspěvek na konferenci a musíme se bezpodmínečně vejít na velmi omezený prostor, kdy estetičnost dokumentu jde hodně stranou), pak sáhnout k "ručnímu řízení" - neumisťovat obrázek nebo tabulku do plovoucího prostředí. Velmi důležité však je toto případně udělat až v samotném závěru přípravy dokumentu (kdy už nebudeme dále dokument příliš měnit)!
Poznámka k bodu 1):
Pokud chceme, aby se číslo u OBR generovalo automaticky, můžeme to zařídit tím, že těsně před tento řádek přidáme dva řádky:

\refstepcounter{figure}
\label{nejakylabel}

(kde nejakylabel je námi zvolený řetězec znaků) a OBR s číslem vytvoříme třeba následujícím způsobem: OBR~\ref{nejakylabel}. Tím se zajístí automatické číslování a správná hodnota čítače obrázků figure. Nezajistí se tím ovšem přidání obrázku do seznamu obrázků (pokud ho chceme mít). Zjistil jsem však, že to lze snadno dosáhnout přidáním následujícího řádku za text s označením obrázku: \addcontentsline{lof}{figure}{\numberline{\ref{nejakylabel}}\ignorespaces Text_který_chceme_mít_v_seznamu}

Pro tabulky je postup analogický - místo lof je lot a místo figure je table. Tento postup je aplikován v souboru rep.tex u tabulky 1.1.


 Předchozí   Další   Nahoru   Obsah