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

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

 

LaTeX 5. – Tabulky a boxy

Google, Google       Google       22. 6. 2015       10 679×

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.

Reklama
Reklama

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

Reklama
Reklama
Obrázek ke článku Blockchain & Bitcoin konference

Blockchain & Bitcoin konference

V pátek 19. 5. 2017 se v pražském konferenčním centru Andel’s konala Blockchain & Bitcoin konference. Řada odborníků a podnikatelů v oboru blockchainu a kryptoměn představila možnosti budoucího směřování tohoto oboru. Speakeři většinou rusky mluvící provenience prezentovali řešení svých firem založená na technologii blockchainu.

Obrázek ke článku Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Bezpečnostní tým Cisco Talos odhalil celkem 4 kampaně dosud neobjeveného malwaru, který dostal jméno KONNI. Ten se dokázal úspěšně maskovat od roku 2014. Zpočátku se malware zaměřoval pouze na krádeže citlivých dat. Za 3 roky se ale několikrát vyvinul, přičemž jeho současná verze umožňuje útočníkovi z infikovaného počítače nejenom krást data, ale i mapovat stisky na klávesnici, pořizovat screenshoty obrazovky či v zařízení spustit libovolný kód. Pro odvedení pozornosti oběti zasílali útočníci v příloze také obrázek, zprávu a výhružkách severokorejského režimu či kontakty na členy mezinárodních organizací.

Reklama autora

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý