Jak vytvořit soubor RTF – tabulky

  1. Základy
  2. Dokument ve formátu RTF
  3. Hlavička
  4. Odstavce, písmo
  5. Tabulky

V této kapitole:

Základy tabulek – Hlavička řádku – Vlastnosti buněk – Slučování buněk – Obsah buněk – Příklad tabulky

Základy tabulek

Tabulky jsou docela komplikovaná záležitost. Pusťte se do nich až tehdy, kdy zvládnete formátování písma a odstavců.

Tabulka je tvořena posloupností řádků. Neexistuje nic jako označení „tady začíná/končí tabulka“, pouze „tady začíná nový řádek tabulky“. RTF se podívá, zda těsně před novým řádkem byl také řádek tabulky, a pokud ano, pokusí se je spojit do tabulky. To tedy znamená, že odpovědnost za správné zarovnání buněk do sloupců je na tvůrci RTF kódu. Na druhou stranu se tak velmi snadno dají horizontálně slučovat buňky.

Každý řádek tabulky má tuto strukturu:

hlavička řádku – definice vlastností jednotlivých buněk – obsah jednotlivých buněk s případným formátováním – ukončení řádku

Každá buňka se chápe jako odstavec, pouze je ukončena řídicím slovem \cell (ne \par) a má nastavenou vlastnost \intbl (tím se říká, že je součástí tabulky). Řádek se ukončuje speciálním odstavcem, který musí mít také \intabl a na konci má \row.

Hlavička řádku

Řádek začíná slovem \trowd, za kterým by mělo být povinně ještě \trgaphN, kde N je vnitřní vodorovný okraj buněk v twipech. Cosi jako cellpadding v HTML. Pak se dá nastavit ještě řada vlastností řádku tabulky, například jeho výška (\trrh) nebo zarovnání v dokumentu (\trqc, \trql, \trqr).

Vlastnosti buněk

Za hlavičkou řádku následují vlastnosti jednotlivých buněk. Těmito vlastnostmi jsou především pozice pravého okraje, ohraničení a stínování buňky. Musí se takto popsat každá buňka řádku, což je děsná otrava a mraky znaků, ale nedá se s tím nic dělat.

Povinný údaj pro každou buňku je \cellxN, kde N je pozice pravého okraje buňky od začátku řádku tabulky. Pozor, \cellx ukončuje definici vlastností buňky. Toto číslo se musí nastavit i tehdy, je-li šířka buňky automatická (\trautofit v hlavičce řádku), pak se ignoruje, nanejvýš se podle něho vážou buňky v posloupnosti řádků. Jinak se podle toho nastavuje pevná šířka buňky.

Před \cellx se může zadat např. ohraničení buňky. To má tři části: na které straně bude ohraničení, jakým stylem čáry a jak tlustou čarou. Buňka s jednobodovým jednoduchým okraje dole bude mít v definici toto zaklínadlo:

\clbrdrb \brdrs \brdrw20 ... \cellxN

Slučování buněk

Horizontální sloučení (v rámci jednoho řádku) je jednoduché, protože hranice buněk se zadávají pomocí \cellx pro každý řádek zvlášť. Takže se prostě nastaví větší hranice buňky a buněk se v řádku definuje méně.

Vertikální (sloupcové) sloučení se dělá pomocí klíčových slov \clvmgf a \clvmrg. Podle starší specifikace by mělo fungovat i \clmgf a \clmrg, nemám to vyzkoušené. Ta první dvojice ve Wordu i Wordpadu funguje. Buňky různých řádků se vertikálně sloučí tak, že se v definici nejhořejší buňky (kde má slučování začínat), uvede \clvmgf. V každé buňce, které se s tou nad sebou má sloučit, se v definici uvede \clvmrg. Podstatné je, že každá slučovaná buňka musí mít normálně uvedenou vlastní definici, i když ve výsledku je z několika buněk jenom jedna.

Obsah buněk

Ihned za definici buněk řádku se zapisuje obsah buněk. Každá buňka se chápe jako odstavec ukončený slovem \cell, v němž musí být zapnuta vlastnost \intbl. Tato vlastnost zůstává zapnutá, není-li zrušena, takže pokud v řádku nepoužijeme \pard, stačí zapnout \intbl jen u první buňky.

Doporučuji psát \intbl hned na začátek každé buňky, např, Wordpad má v některých případech potíže s \intbl na konci.

Jinak může být v buňce libovolné formátování, jak odstavce, tak písma. Buňka tak může mít například tento obsah:

\pard \intbl \qc \fs18 \b tucne pismo 9pt\cell

Příklad tabulky

Zde je příklad textu s tabulkou, ve které jsou dvě buňky spojené:

{\rtf1 \ansi \ansicpg1250 \deff0 \deflang1029
{\fonttbl{\f0 \froman \fcharset238{\*\fname Times;}Times New Roman CE;}}
{Priklad tabulky o 2 radcich se sloucenymi bunkami:\par
\trowd \trgaph0 \clbrdrb \brdrs \brdrw20 \clbrdrt \brdrdb \brdrw20 \cellx2268
\clbrdrb \brdrs \brdrw20 \clbrdrt \brdrdb \brdrw20 \cellx4536
\intbl prvni bunka\cell druha bunka\cell \row
\trowd \trgaph0 \clbrdrb \brdrdb \brdrw20 \cellx4536
\intbl \qc spojena bunka\cell \row
\pard Tento radek je jiz za tabulkou.\par
}}

Příklad si můžete stáhnout přímo ve formátu RTF.


Tento návod vznikl pro mou osobní potřebu. Je neúplný a může obsahovat chyby.

Vytvořil Honza Hučín 7. 2. 2005, poslední aktualizace 30. 5. 2005

Na úvodní stránku návodu

Na hlavní stránku Šuplíku