Hlavní navigace

ConTeXt: sloupcová sazba a drobné grafické elementy

Jakub Šťastný

Protože sloupcová sazba je dnes nepostradatelná a používá se snad na každém kroku, v dnešním díle se budeme věnovat právě jí. Od sloupcové sazby se posléze přesuneme k drobným grafickým elementům, jako jsou rámečky, čáry a podobně. Nakonec to celé završíme dlouho očekávanou ukázkou.

Sazba do sloupců

Chceme-li dokument sázet ve více sloupcích, pomůže nám prostředí columns. Protože je to prostředí, připomínám, že požadovaný text je třeba sázet mezi \startcolumns a \stopcolumns. Má poměrně dost voleb. Parametrem n můžete specifikovat, kolikasloupcovou sazbu si to vlastně přejete. Není-li specifikováno jinak, defaultní hodnota jsou dva sloupce. Dalším důležitým parametrem je rule vykreslující oddělující čáru mezi sloupci. Může nabývat hodnot on nebo off. Defaultní je volba off, čili sloupce neoddělené čarou.

Protože jsme se v minulém díle naučili nastavovat vlastnosti elementů pomocí \setupcosi, dnes si to můžete vyzkoušet třeba právě na \setupcolumns. Rozhodně nejužitečnější bude globální nastavení voleb n a rule, které jsem již popsal výše. Existuje sice spoustu dalších voleb, nicméně protože zde není dostatek prostoru k tomu popisovat je všechny, odkáži tedy laskavého čtenáře na dokumentaci.

Potřebujete-li v sloupcové sazbě vynutit přechod do nového sloupce, zkuste použít  \column.

Rámečky

Rámečky můžete tvořit příkazem \framed. Jeho možné volby jsou velice pestré. Občas se třeba hodí direktivně určit rozměry rámečku, což se dělá pomocí width=n a height=n, tedy například rámeček pro lidi, co netroškaří: \framed[width=50cm,height=100cm]{Vztahovaný text.}. Volbou align zase můžete určit zarovnání. Nejdůležitějšími povolenými hodnotami jsou left, rightmiddle.

Mně osobně se rámečky s ostrými rohy nelíbí ani trochu, a tak ještě používám volbu corner=round, která vykresluje rámečky s oblými rohy. K tomu zpravidla přidávám barvu pomocí

background=color,backgroundcolor=<barva_pozadi>,foregroundcolor=<barva_textu>

Ještě bych chtěl upozornit na jednu věc – řádkové zlomy. Rámečky totiž nejsou dimenzované na větší texty. Tuto funkcionalitu lze naštěstí mnohem lépe suplovat třeba příkazy pro práci s pozadím nebo prostředím framedtext, ke kterému se dostaneme za chvilku. Nicméně pokud již musíte v rámečku řádkový zlom dělat, použijte  \\.

S příkazem \framed je velmi blízce spjat příkaz \inframed. Zásadní odlišnost spočívá v tom, kde začíná rámeček. V případě textu lokalizovaného uvnitř \framed, začíná rámeček na spodní lince, a tedy písmo se – za předpokladu, že jej umisťujete přímo do textu – „vznáší” nad ostatním textem. Oproti němu text, který se nalézá uvnitř \inframed, přesně navazuje na text okolní, a logicky tedy spodní okraj rámečku je o něco níže.

Chcete-li dávat do rámečku více textu, zkuste použít prostředí framedtext. Můžete mu předávat stejné parametry jako v případě framed, nicméně na změny v \setupframed  neslyší, je třeba použít \setupframedtexts. U rámečků, zvláště těch větších, se občas hodí nevykreslovat rám – to se dělá pomocí  frame=off.

Čáry máry

ConTeXt nám dává k dispozici spoustu druhů čar. Velmi užitečná je čára generovaná příkazem \textrule{text nadpisu}. To vygeneruje okolo nadpisu z obou stran čáru zhruba v polovině výšky textu, což vypadá moc pěkně a s oblibou to na nadpisy používám. Samozřejmě ale použít se to dá na ledacos, ne pouze na nadpisy.

„Normální” vodorovnou linku generuje příkaz \hairline. Podobně funguje také \thinrule, které ale narozdíl od předchozí neuzurpuje celou řádku pro sebe, nýbrž navazuje plynule na slova odstavce. Na generování více linek lze s úspěchem použít jeho mutaci \ thinrules[n=<cislo_radek>], kde cislo_radek samozřejmě znamená počet řádek, které chceme vyplnit čarou.

Vyloženě okrajově zmiňuji čáry generované příkazy vl a hl, které generují vertikální a horizontální čáru, ovšem jsou to – abych tak řekl – čáry „nižší úrovně”. Příliš často je využívat není třeba. Zato se občas hodí označit odstavec, který jsme třeba editovali či který je nějakým způsobem zajímavý. Lze tak učinit pomocí \startmarginrule odstavec \stopmarginrule, které vytvoří svislou čáru před textem odstavce.

Aby si všichni přišli na své, mám tu čáru pro blackmetalisty. \blackline. Jedná se o kraťoučkou, avšak velmi silnou čáru. Je sice z těch méně praktických čar, nicméně občas se hodit může. Poslední čára, kterou zmíním, je \fillinline. Pomocí ní lze vytvořit slovo zarovnané na levou stranu stránky následované čarou zarovnanou ku pravé straně. Dejme tomu \fillinline[width=5cm]{Podpis} vytvoří linku začínající slovem „Podpis” následovanou čarou dlouhou 5 centimetrů zarovnanou ku pravému okraji stránky.

Ukázka

Protože jste již mnozí volali, že by to chtělo taky nějakou komplexnější ukázku, a já sám jsem téhož názoru, máte ji mít: zdrojový kód, výsledné PDF. Jako text ideální délky jsem vybral článek o WeeChatu. Abyste jej mohli zkompilovat, musíte mít v adresáři se zdrojovým kódem soubor weechat.png, který můžete stáhnout ze zmiňovaného článku. A příště se těšte na tabulky.

Našli jste v článku chybu?

5. 4. 2007 8:25

Používám Debian Etch, nainstaloval tetex-bin, tetex-base a tetex-extra dle návodu v druhém dílu seriálu.
Přeložil ukázku a text v \type{...} se nezalamuje a vylézá ven ze sloupců.
Dále jsem si do ukázky vložil jiný český text některá slova se chovají podobně (dnešní, rozkolísanosti, vzkříšený, nemůžeme) a dokonce jsem našel i rozdělené slovo přesahující sloupec:
blouzniv-
ci
Kde je problém ?




2. 4. 2007 14:42

Dekuji za doplneni, neznal jsem to. Vypada to velmi uzitecne, diky :)
Podnikatel.cz: V restauraci bez cigaret? Sněmovna kývla

V restauraci bez cigaret? Sněmovna kývla

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí