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

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

 

LaTeX 5. – Tabulky a boxy

Google, Google       Google       22. 6. 2015       8 448×

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 NEWTON Media prohledá 200  milionů mediálních zpráv během sekund díky Cisco UCS

NEWTON Media prohledá 200 milionů mediálních zpráv během sekund díky Cisco UCS

Česká společnost NEWTON Media provozuje největší archiv mediálních zpráv ve střední a východní Evropě. Mezi její zákazníky patří například ministerstva, evropské instituce nebo komerční firmy z nejrůznějších oborů. NEWTON Media rozesílá svým zákazníkům každý den monitoring médií podle nastavených klíčových slov a nabízí online službu, kde lze vyhledat mediální výstupy v plném znění od roku 1996.

Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

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 © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý