Předchozí | Další | Dolů | Obsah |
O) Boxy
Práce s boxy umožňuje uživateli LaTeXu vytvořit prakticky cokoliv (např. tabulku, uvnitř které jsou některé položky pootočené o např. 90 stupňů a umístěny i nějaké obrázky)!
TeX funguje tak, že si vytvoří "notovou osnovu" - linky (tzv. účaří) pod
sebou a na ně pak umisťuje tzv. boxy (obdélníky). Vlastně i každý jednotlivý
znak je takový malý box. Ve fázi umisťování boxu na linky (na účaří) se
TeX nezajímá o vnitřní strukturu boxu - zajímají ho jen rozměry, aby mohl
boxy správně umisťovat - rozteče mezi linkami "notové osnovy", rozteče mezi
boxy v horizontálním směru. Obsahem boxu (s výjimkou tzv. rule boxu) může být
cokoliv - např. obrázek. TeX automaticky umisťuje boxy horizontálně za sebou,
nenastává-li zlom řádku nebo není-li explicitně požádán, aby tak nečinil.
Každý box má svůj tzv. referenční bod, jeho umístění vzhledem k hranicím
boxu je dáno typem boxu a někdy je také uživatelsky ovlivnitelné. TeX
umisťuje box tak, aby referenční bod ležel na účaří (lince "notové osnovy").
LaTeX obsahuje uživatelské příkazy dovolující vytvářet větší a složitější boxy
z jednodusších a menších (typicky např. ze znaků) - tvořit boxy (ruleboxy,
LR boxy nebo parboxy).
\framebox je příkaz se stejnými parametry a stejným významem jako příkaz
\makebox až na to, že obsah boxu je navíc orámován. Síla orámování je
ovlivnitelná registrem \fboxrule (implicitně je 0.4 pt). Registr
\fboxsep určuje minimální vzdálennost okrajů boxu od jeho obsahu.
Poznámka: tyto příkazy - \makebox a \framebox se jmenují stejně jako
obdobné příkazy z prostředí picture. Parametry se však trochu liší.
Dále jsou pro práci s boxy užitečné příkazy:
\savebox{\jménoboxu}[šířka][pozice]{obsah} - vytváří box z obsahu a
ukládá ho do \jménoboxu, pozice může být buď r nebo l nebo s (existuje ještě
velmi podobný příkaz stejného jména, který je určen hlavně pro prostředí
picture - je popsán v kapitole Prostředí picture). Jméno boxu musí být před
tím deklarováno příkazem:
\newsavebox{\jménoboxu} (např. \newsavebox{\krabicka}).
\usebox{\jménoboxu} - funguje jako \makebox pro posloupnost příkazů vytvořených
pomocí příkazu \savebox a odkazovaných pomocí jménoboxu.
\raisebox{posun}[výška][hloubka]{objekt} - posune polohu referenčního bodu objektu (a tím i celý objekt) o posun nad účaří (posun může být i záporný). Normálně leží referenční bod na účaří - tento příkaz dovoluje toto pravidlo porušit. Je možné zadat ještě výšku a hloubku. LaTeX pak pro rozhodování o rozteči mezi řádky nebude přihlížet ke skutečným rozměrům boxu, ale k těmto fiktivnim - tím můžeme dosáhnout překryvu boxů.
Následující příklad je makro umisťující na levý okraj libovolný objekt (text,
tabulku nebo obrázek) a napravo od něj popis vzdálený o velikost udanou
druhým parametrem. Popis je umístěn do takové výšky, aby jeho spodní okraj
ležel ve výšce spodního okraje objektu.
Předpokládá se, že jsou zavedeny délkové registry \sirkaobj, \zbytek a
\ucari - pomocí příkazu \newlength a že je použit balík czech a graphics.
\newcommand{\objspopisem}[3]{ % definice příkazu \settowidth{\sirkaobj}{\makebox{#1}} % získání šířky objektu \noindent\makebox{#1}\hspace*{\fill} \zbytek=\linewidth \addtolength{\zbytek}{-\sirkaobj} \addtolength{\zbytek}{-#2}% výpočet volného místa \settodepth{\ucari}{\makebox{#1}} \raisebox{-\ucari}{\parbox[b]{\zbytek}{\footnotesize #3}} }Příklad použití příkazu:
\newsavebox{\obrazek} % vytvoření boxu \savebox{\obrazek}{ % uložení obrázku do boxu \scalebox{0.2}{ \includegraphics*[0mm,30mm][220mm,250mm]{obrpr.ps} } } \objspopisem{\usebox{\obrazek}}{2em}{\textbf{Obr. 1.} Tento popis se týká obrázku nalevo a ilustruje, jak lze snadno vytvořit vhodně umístěný popis napravo.}Jiný častý uzitečný případ je použití tabulky vytvořené pomocí prostředí tabular místo obrázku.
Předchozí | Další | Nahoru | Obsah |