LaTeX 5. – Tabulky a boxy
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

LaTeX 5. – Tabulky a boxyLaTeX 5. – Tabulky a boxy

 

LaTeX 5. – Tabulky a boxy

Google, Google       Google       22. 6. 2015       32 153×

V tomto díle se podíváme na formátování textu pomocí tabulek a boxů. Obojí budeme využívat v dalších dílech, např. pro sazbu chemických vzorců a rovnic.

Boxy

Box je část dokumentu, ke které se LaTeX chová jako by šlo o jediný znak. Box je definován třemi rozměry - výškou, šířkou a hloubkou. Známe tři typy boxů: LR boxy, parboxy a ruleboxy.

LR boxy

Jejich obsahem může být cokoliv. Známe čtyři typy LR boxů:

  1. \mbox{text} - vytvoří box tak široký, aby odpovídal jeho obsahu
  2. \fbox{text} - stejně jako mbox, ale box je ohraničen rámečkem
  3. \makebox[šířka][pozice]{text} - šířka boxu je dána hodnotou prvního argumentu. Druhý volitelný argument určuje, jak bude text v boxu umístěn, pokud není definován, text bude v boxu vycentrován. Přípustné hodnoty jsou:
    • l - text bude zarovnán doleva
    • r - text bude zarovnán doprava
    • s - způsobí roztažení textu tak, aby vyplnil celý box
  4. \framebox[šířka][pozice]{text} - stejně jako makebox, ale box je ohraničen rámečkem

\framebox[3.5cm][l]{Framebox} - vytvoří orámovaný box, ve kterém bude text "Framebox" zarovnaný k levému okraji boxu. Pokud by byl text delší než je šířka boxu, dojde k jeho přetečení.

Podobného efektu jako s frameboxem můžeme dosáhnout pomocí prostředí framed (z balíčku framed).

K nastavení vertikálního posunu slouží \raisebox{vertikální-posun}[výška][hloubka]{text}. Pokud je hodnota vertikálního posunu kladná, box bude nad účařím, pro zápornou hodnotu bude pod účařím.

Parbox a minipage

LR boxy neumožňují vkládání celých odstavců a řádkových zlomů, k tomu musíme využít buď parbox nebo prostředí minipage.

Někdy je potřeba vložit na několik míst stejný text, k tomu lze použít savebox. Definuje se a používá tímto způsobem:

%inicializace
\newsavebox{\test}
%vložení textu do saveboxu
\sbox{\test}{Tento text se objeví všude, kde odkážeme na savebox.}
%použití
\usebox{\test}

Tabbing

Pro ty, kteří si ještě pamatují psací stroje, lze prostředí tabbing přirovnat k tabelačním zarážkám. Tímto způsobem lze jednoduše vytvořit zarovnané sloupce čísel nebo údajů. Zarážky se nastavují pomocí \= a řádek se ukončuje sekvencí \\. Po nastavení zarážek je můžeme používat pomocí \>.

Pokud potřebujeme změnit výšku řádku, napíšeme ji za konec řádku do hranatých závorek.

\begin{tabbing}
Látka\qquad \=Skupenství\qquad \=Popis\\[0.5em]
Voda\> kapalina \> bez chuti, bez zápachu\\
Brom \> kapalina \> červenohnědý, dýmavý, vysoce toxický\\
\end{tabbing}

Prostředí tabbing zvládá i složitější úkoly, lze například uložit pozici zarážek (\pushtabs), zrušit je a následně obnovit (\poptabs).

\begin{tabbing}
Látka\qquad \=Skupenství\qquad \=Popis\\
Voda\> kapalina \> bez chuti, bez zápachu\\
\pushtabs
Test textu v prostředí tabbing\\
\poptabs
Brom \> kapalina \> červenohnědý, dýmavý, vysoce toxický\\
\end{tabbing}

Tabulky

Složitější a také pěknější tabulky lze vytvořit pomocí dvou prostředí: tabular a tabular*.

Prostředí tabular je základem pro tvoření tabulek. Jeho povinným argumentem je specifikace sloupců, v nejjednodušším případě jde o jejich zarovnání, které zvolíme pomocí písmen l, r nebo c. obsah jednotlivých buněk oddělujeme pomocí symbolu & a konce řádků příkazem \\. Pokud chceme mít buňky oddělené svislou čarou, vložíme mezi typy sloupců znak |. Pro ohraničení řádku se používá \hline. Pokud chceme vložit čáru pouze pod některé buňky, použijeme příkaz \cline{a-b}, kde místo a a b vložíme rozsah buněk, které mají být ohraničeny. V případě, že potřebujeme do buňky vložit vertikální čáru (rozdělit buňku) použijeme příkaz \vline.

Někdy je užitečné mít možnost nadefinovat tloušťku horizontálních čar, to umožňuje balíček booktabs, který definuje tři nové příkazy: \toprule, \midrule a \bottomrule. K čemu slouží se dá odhadnout z názvu, nejdůležitějším přínosem těchto příkazů je možnost zadat přímo tloušťku dané čáry.

Pokud předpokládáme, že bude obsahem buněk delší text, nebude nám specifikace pomocí zarovnání stačit, v tomto případě totiž nedochází k zalomení textu a tabulka může přesáhnout okraj stránky. Vhodným type sloupce je v tomto případě p, u kterého musíme uvést požadovanou šířku. Pokud chceme deklarovat více sloupců stejného typu, můžeme použít zkrácený zápis, např. cccccc, zapíšeme jako *{c}{6}.

Každá buňka v tabulce se chová jako skupina, pokud změníme její styl, změna se aplikuje pouze na danou buňku a nešíří se dál v tabulce.

\documentclass{article}
\usepackage{booktabs}
...
\begin{document}
\begin{tabular}{crp{3cm}}
\toprule[1.5pt]
Látka & Skupenství & Popis\\
\midrule
Voda & \textbf{kapalina} & bez chuti, bez zápachu\\
Brom & kapalina & červenohnědý, dýmavý, vysoce toxický\\
\bottomrule[1.5pt]
\end{tabular}
\end{document}

Ohraničení tabulky je v našich příkladech velice blízko obsahu buňky. Vnitřní okraje buněk tabulky můžeme zvětšit pomocí proměnné \extrarowheight{výška}. Hodnota této proměnné bude přičtena k výšce každého řádku tabulky. Jeho hodnotu zadáváme v preambuli dokumentu.

\documentclass{article}
\setlength{\extrarowheight}{2pt}
\begin{document}
...
\end{document}

Častým úkolem je zarovnání čísel ve sloupci na desetinnou čárku. K tomu slouží zápis @{,}, tím vložíme desetinnou čárku mezi dané sloupce a zároveň dojde ke zrušení mezer mezi sloupci. Tímto způsobem lze i zrušit mezeru mezi buňkami, použijeme @{}.

\begin{tabular}{|l@{,}r|}
\hline
5 & 3\\
\hline
15 & 42\\
\hline
1 & 0\\
\hline
458 & 7\\
\hline
15 & 9\\
\hline
\end{tabular}

Pokud bychom chtěli předchozí tabulku doplnit o hlavičku, narazíme na problém, jak spojit tři sloupce do jednoho. K tomu slouží příkaz \multicolumn, který má tři argumenty. První je počet sloupců, který budeme slučovat, druhý zarovnání textu v buňce vzniklé slučováním a poslední, obsah buňky.

Slučování řádků se provádí pomocí balíčku multirow (je nutné ho zadefinovat v preambuli pomocí \usepackage). Jeho použití je velmi podobné příkazu \multicolumn. Má tři parametry: 1) počet řádků, 2) šířku sloupce (lze použít *, kterou přenecháme nastavení šířky sloupce na LaTeXu) a 3) obsah vytvořené buňky.

\usepackage{multirow}

...

\begin{tabular}{|l@{,}r|}
Items & \multicolumn{2}{|c|}{\textbf{Index}}\\
\hline
\multirow{2}{*}{Item 1} & 5 & 3\\
\cline{2-3}
& 15 & 42\\
\hline
\multirow{2}{*}{Item 2} & 1 & 0\\
\cline{2-3}
& 458 & 7\\
\hline
\end{tabular}

Prostředí tabular* je rozšířením tabular. Umožňuje tabulce nadefinovat šířku. Osobně doporučuji používat k tomuto účelu spíše prostředí tabularx nebo tabulary, na které se podíváme o kousek dál.

Plovoucí tabulky

Tabulky LaTeX vysází na tom místě, kde jsou ve zdrojovém kódu zapsána. Pokud chceme dosáhnout profesionálního vzhledu, můžeme využít pozicování tabulek. Toho dosáhneme umístěním prostředí tabular do prostředí table.

\begin{table}[pozice]
  \begin{tabular}{|l|}
...
  \end{tabular}
\end{table}

Popisek tabulky

Pokud je tabulka součástí většího textu, tak je nutné ji přiřadit číslo, popisek a mít možnost na ni z textu odkazovat. Jak toto provést si ukážeme v některém z dalších dílů, zde jen zmíním tvorbu klasického popisku pomocí příkazu \caption[krátký popisek]{dlouhý popisek}. Příkaz přiřadí tabulce její číslo podle pořadí v textu a pod tabulkou zobrazí obsah povinného argumentu. Pokud je zadán i nepovinný argument, bude zobrazen v seznamu tabulek (pokud jej budeme sázet). Tabulka musí být vytvořena pomocí prostředí table, pokud používáme např. tabular, musíme ho zabalit do table.

\begin{table}
%Tabulku vycentrujeme
\centering
\caption[Data]{Data vycucaná z palce}
\begin{tabular}{|c|r@{,}l|}
\hline
Items & \multicolumn{2}{|c|}{\textbf{Index}}\\
\hline
\multirow{2}{*}{Item 1} & 5 & 3\\
\cline{2-3}
& 15 & 42\\
\hline
\multirow{2}{*}{Item 2} & 1 & 0\\
\cline{2-3}
& 458 & 7\\
\hline
\end{tabular}
\end{table}

Tabularx

Pokud potřebujeme tabulce nastavit přesnou šířku, je možné využít balíček tabularx, jeho použití je snadné a výhodnější než využití velmi podobného prostředí tabular*. Zavádí další typ sloupce X, který převede na sloupec p{x}, kde šířka x bude vypočítána na základě požadované šířky tabulky. Tato vlastnost se dá ilustrovat těmito dvěma příklady.

\begin{tabularx}{250pt}{|c|X|c|X|}
\begin{tabularx}{350pt}{|c|X|c|X|}

Nevýhodou prostředí tabularx je možný konflikt s některým konstrukcemi TeXu a také je pomalejší než tabular*.

V článku jsme prošli základní možnosti vytváření a úpravy boxů a tabulek v LaTeXu.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Tagy:
Hlasování bylo ukončeno    
2 hlasy
Google
(fotka) Zdeněk MoravecAutor se pohybuje v oblasti vývoje nových materiálů. Mezi jeho koníčky patří tvorba webových aplikací, programování v jazycích Java, .NET (C#), Perl, elektronika a sport (běh). Hojně využívá sázecí systém LaTeX.
Web     Facebook    
 
Google
(fotka) Jimmy FoundJimmy studuje teoretickou fyziku a zajímá se o programování webových stránek, kosmologii a kvantovou fyziku.
Facebook    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Reklama autora

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý