LaTeX
A) ÚVOD
Latexovský dokument je obyčejný textový soubor - soubor příkazů pro překladač, které určují podobu výsledného dokumentu a vlastního textu. Text je tedy promíchán s příkazy (uitečné je pouívat syntax highlighting - klíčová slova mají jinou barvu nebo odstín ne okolní text, umí to např. editor vi). Výstupní soubor se dostane a překladem tohoto souboru. Mezery mezi slovy textu ve vstupním souboru jsou chápány pouze jako oddělovače slov - kdy jich je více za sebou, dopadne to stejně, jako by tam byla pouze jedna. Dokonce i jeden znak nový řádek je chápán stejně jako mezera - pouze jako oddělovač slov. Pokud za sebou následují alespoň dva znaky nový řádek (prázdný řádek mezi odstavci ve vstupním souboru) je to chápáno jako příkaz pro přechod na nový odstavec.
V historii byl nejdříve vytvořen systém TeX (tvůrce je pan Donald E. Knuth) - tento systém dovoluje vytvářet v maximální míře různé detaily - je to soubor "malých krabiček" - malých funkcí. Dá se s ním pracovat, ale ne dostatečně pohodlně. Pro vyřešení tohoto problému byl vytvořen LaTeX, který nabízí uivateli podstatně "větší krabičky" (přišel s ním pan Leslie Lamport). LaTeX je systém, který je postaven na systému TeX - je to vlastně preprocesor pro TeX rozbalující LaTeXovské sekvence na TeXovské na principu makrojazyka. Ve finále tedy funguje obyčejný TeX - LaTeX je systém postavený na TeXu. Vzhledem k principu, na kterém je LaTeX postaven, se v latexovském zdrojovém souboru dají dobře pouívat i některé čistě TeXovské příkazy. A u je to jakkoliv, v kadém případě se na LaTeX dá dívat jako na jazyk (píšeme něco v LaTeXu).
Pro LaTeX je typický dávkový způsob práce. Tento způsob práce má své výhody a nevýhody. LaTeX je ideální řešení v případě výroby normalizovaných (a jěště navíc sloitých) dokumentů jako jsou články, zprávy nebo knihy. Dovoluje tyto typy dokumentů vytvářet maximálně pohodlně a spolehlivě. Velkou výhodou LaTeXu je i lehkost (i větších) úprav dokumentu a malé problémy s kompatibilitou (úprava starého dokumentu napsaného např. v plainTeXu do současného LaTeXu je snadná záleitost). Nevýhodou je, e se ho uivatel musí naučit. Pro méně náročnou práci (kdy člověk nepouívá takové věci, které jsou obsahem např. zde uvedených kapitol Makra, Boxy a Prostředí picture) je však potřebné úsilí poměrně malé (avšak příkaz \renewcommand{}{} z kapitoly Makra se dost často nezbytně potřebuje). Typografický systém TeX spolu s nadstavbou LaTeX výrazně přispívají k jednotnému vzhledu dokumentů.
Dokument se přeloí např. asi následujícím způsobem: cslatex mujdokument.tex. Při překladu TeX (inicializovaný LaTeXem) postupuje zhruba řečeno ve dvou fázích:
zjistí si rozměry fontů (jsou uloeny v souborech s příponou tfm) případně dalších objektů a rozhodne o jejich rozmístění v dokumentu. Přitom se nezajímá o vnitřní strukturu fontu - vše chápe jen jako (vertikálně orientované) černé obdélníky - boxy, které je třeba správně rozmístit. Tato fáze představuje princip TeXu.
natáhne strukturu fontu (ze souboru s příponou pk) a vytvoří tak výsledný soubor mujdokument.dvi, co je příkazový soubor pro vytisknutí dokumentu. Na místě objektů, které nejsou fonty ponechá vhodné mezery.
Soubor mujdokument.dvi pak můeme poslat přes vhodný filtr na tiskárnu nebo si ho vhodným prohlíečem znázornit na monitoru. Častou příčinou chybových hlášek LaTeXu jsou chybějící backslashe v klíčových slovech nebo jménech registrů a nesprávné nebo nespárované závorky.
Struktura latexovského dokumentu je (LaTeX2epsilon):
\documentclass[]{}[] …
\begin{document} …
\end{document}
Část mezi \documentclass a \begin{document} se nazývá preambule, druhá část se nazývá textová čast a je hlavním místem, kde uivatel tvoří svůj dokument. Parametry se uvádějí v příslušných závorkách, přičem parametry ve sloených závorkách jsou povinné, kdeto parametry v hranatých závorkách nejsou povinné. Odstavce se ukončují prázdným řádkem (nebo příkazem \par - neznamená tedy začátek nového odstavce nýbr konec současného, přičem poslední odstavec je výjimkou - nemusí se explicitně ukončovat; příkaz \par nebo prázdný řádek je tedy stále součástí ukončovaného odstavce).
Text následující po znaku % a do konce řádku je povaován za komentář. Význam znaku jako speciálního (řídícího) se ruší zpětným lomítkem (např. \% způsobí, e ve výsledku bude znak %).
\documentclass[volby]{třída}[RRRR/MM/DD]
, kde třída je article nebo book nebo letter nebo report nebo slides. Podle toho o jakou se jedná třídu, některé příkazy fungují nebo nefungují. Volby musí být odděleny čárkami bez mezer (nebo znakem | pro alternativy). Třídy jsou uloeny v souborech s příponou .cls (jsou tam definice příkazů a prostředí) a pokud je tento vytvořen později ne je nepovinný parametr datum, tak na to LaTeX upozorní.
Pokud chceme vytvořit dokument bez nějakých kapitol atd. je zřejmě nejvhodnější pouít třídu article.
twoside - geometrie pro oboustraný tisk (implicitní pro styl book)
oneside (implicitní pro všechny ostatní styly)
openright - znamená, e kapitoly mohou začínat jen na pravých stránkách (implicitní pro book)
openany - kapitoly mohou začínat i na levých stránkách) (implicitní pro report)
a4paper, a5paper, b5paper, letterpaper, legalpaper, executivepaper, landscape
12pt (nebo 10 pt, 14 pt,17 pt atd.) nebo twocolumn (v textové části lze navíc pouít příkazy \twocolumn a \onecolumn s tím omezením, e změna sloupcování způsobí přechod na novou stránku), twocolumn se nedá pouít ve třídě letter a slides
leqno (čísla rovnic nalevo místo napravo)
fleqn (rovnice zarovnané na určitou vzdálenost od levého okraje).
V úseku nazvaném preambule se nacházejí příkazy, jejich platnost se vztahuje k celému textu (např. nastavení rozměrů stránky). Některé příkazy se nemají uvádět mimo preambuli.
\usepackage[volby]{balík}[datum vytvoření] - připojení doplňujícího balíku (definice dalších nestandartnich prostředí a příkazů případně i redefinice původních), kde balík je např. czech (pak se připojí soubor czech.sty) nebo multicol. Můe jich být více ne jeden. Uvádějí se v preambuli nejraději co nejblíe specifikaci \documentclass. Existuje velké mnoství různých specializovaných balíků obsahující definice speciálních příkazů a speciálních prostředí - např. balík pro tvorbu elektronických schémat. Balíky, které nejsou příliš specializované a často se pouívají (např. balík graphics umoňující manipulaci a obrázky) se nazývají standartní.
LaTeX byl navren tak, aby preferoval symbolickou práci. Tím se myslí to, e uivatel se při tvorbě dokumentu nemusí zabývat detaily a není jimi tedy zbytečně zatěován. Kdy píše abstrakt v článku, pak napíše něco jako \abstract{Tento článek ... atd. atd.} a nezabývá se tím pod jakým názvem, kde a v jakém tvaru se přesně abstrakt ve výsledném dokumentu objeví. Tyto detaily jsou u vyřešeny v balíku maker pro TeX s příponou sty nebo cls. Uivatel obvykle buď pouívá nějaký standartní balík nebo balík, který mu pošlou z nějakého odborného časopisu nebo organizátorů konference - kdy jim posílá příspěvek. Balík maker z časopisu obvykle obsahuje některá nová makra, která nejsou obsaena ve standartní třídě dokumentu (balíků s příponou cls) a mírné redefinice některých standartních příkazů a prostředí. Pod mírnou redefinicí je zde myšleno to, e např. předefinovaný příkaz \abstract se bude chovat velmi podobně jako standartní příkaz \abstract, avšak např. místo uvozujícího slova Abstract nad vlastním abstraktem napíše slovo ABSTRACT na začátku odstavce s abstraktem. Tento postup podporuje symbolickou práci a je velmi důleitý a uitečný - uivatel stále pouívá tento příkaz stejným způsobem, tento příkaz prostě zařídí vhodný tvar abstraktu, co je ten odstavec se shrnutím na začátku článku a detaily umístění a tvaru u za nás vyřešil tvůrce balíku maker a všichni, kdo tento balík pouívají, vygenerují proto velmi podobný tvar.
B) Nastavení rozměrů textu a nastavení písma v textovém reimu
Rozměry a umístění hlavních částí na stránce mají na počátku defaultní hodnoty, závislé mimo jiné na velikosti stránky určené volitelným parametrem v příkazu \documentclass. Tyto rozměry je však mono v preambuli ještě ovlivnit. Jedná se hlavně o délkové registry
\textheight |
- |
výška textového těla (nemá se nastavovat mimo preambuli) |
\textwidth |
- |
šířka textového těla (nemá se nastavovat mimo preambuli); \linewidth se vůbec nedá nastavit a je obecně něco jiného (šířka řádku se shoduje se šířkou textového těla jen v jednosloupcovém reimu) |
\headsep |
- |
vzdálennost spodního okraje hlavičky (head) a horního okraje textového těla |
\headheight |
- |
výška hlavičky |
\topmarging |
- |
vzdálennost mezi horním okrajem hlavičky a vnitřním horním okrajem stránky |
\footskip |
- |
vzdálennost spodního okraje paty (foot) a sp. okraje text. těla. Do paty se u některých stylu (např. article) umisuje číslo stránky - číslo se tedy posune. |
\oddsidemargin |
- |
vzdálennost mezi okrajem textového těla a vnitřním okrajem liché stránky po seříznutí |
\evensidemargin |
- |
--||-- sudé --||-- |
U \oddsidemargin a \topmarging je pouit výraz vnitřní okraj stránky po seříznutí. Má to tento význam - levý a horní okraj skutečné stránky jsou jakoby ustřieny o 1 palec + \hoffset (nebo \voffset) - tím vzniká jakoby menší stránka (pokud je \hoffset nebo \voffset větší ne minus jeden palec), na které se pohybujeme. \hoffset a \voffset se dá také nastavit v preambuli.
V případě volby oneside (která je implicitní u třídy article, report a slides) je uvedena vzdálennost stejná pro sudé i liché stránky a je určena parametrem \oddsidemarging.
Změnou \evensidemargin nebo \oddsidemargin dosáhneme posunu textu v horizontalním směru na stránce. Tého dosáhneme změnou \hoffset. Podobně změnou \voffset dosáhneme pohybu textu ve vertikálním směru.
Pokud chceme ovlivnit řádkování celého dokumentu, můeme tak učinit pomocí \renewcommand{\baselinestretch}{řádkování} v preambuli.
\baselineskip - vzdálennost účaří - dá se ovlivnit změnou chování příkazu \baselinestretch, který způsobuje změnu řádkování násobením normální vzdálennosti určitým koeficientem. Uivatelsky se to dá zařídit pomocí příkazu renewcommand. Např. pro řádkování 1.5 napíšeme: \renewcommand{\baselinestretch}{1.5}. Řádkování se tím zvětší v celém dokumentu - i v matematice a tabulkách. Hodnota délkového registru se nastaví např. takto: \textheight=20cm nebo \textheight 20cm (v obou případech tzv. TeX-ovský způsob naplnění).
Všechny tyto úpravy by se v preaumbuli měly zadávat a po všech příkazech \usepackage{}.
\parindent |
- |
velikost odstavcové zaráky (změna začíná platit od specifikovaného odstavce) |
\leftskip |
- |
odstavec bude zleva začínat o \leftskip později (odstavec bude uší), podobně \rightskip; změna začíná platit pro odstavec, v něm je tento registr změněn a platí a do nové změny i v následujících odstavcích. Nefunguje, pokud je odstavec uzavřen do skupiny. |
\parskip |
- |
znamená vzdálennost mezi odstavci běného textu (meziodstavcová mezera) |
\marginparsep |
- |
vzdálennost mezi okrajovou poznamkou a okrajem text. těla; změna začíná platit od odstavce, ve kterém je specifikována |
\marginparwidth |
- |
šířka okrajové poznámky; změna začíná platit od odstavce, ve kterém je specifikována; pokud však není uvedeno na začátku odstavce, platí a od následujícího |
V textové části lze měnit i \topmarging, \headheight, \headsep, \footskip, \oddsidemarging a \evensidemarging. Má to pak vliv na stránku, kde je to uvedeno a následující stránky. Nemá to prakticky ádný význam - nejlépe je dát je (pro přehlednosti) do preambule.
Nastavení písma:
Stupeň základního písma je 10 pt. Následující modifikátory ho pozmění následujícím způsobem:
předefinování velikosti písma:
\tiny (5pt), \scriptsize (7pt), \footnotesize (8pt), \small (9pt), \normalsize (10pt) large (12pt), \Large (14.4pt), \LARGE (17.28pt) \huge (20.74pt), \Huge (24.88pt)
Pro jinou základní velikost (specifikovanou v nepovinném parametru documentclass) zůstanou proporce zhruba zachovány (jsou to tedy multiplikátory).
Některé příkazy ovlivňující atributy písma (v nematematickém reimu):
\rmfamily nebo \textrm{} |
- |
antikva (nastavuje rodinu cmr) |
\sffamily nebo \textsf{} |
- |
grotesk (nastavuje rodinu cmss) |
\ttfamily nebo \texttt{} |
- |
strojopis (nastavuje rodinu cmtt) |
\itshape nebo \textit{} |
- |
kurzíva |
\slshape nebo \textsl{} |
- |
skloněné písmo |
\scshape nebo \textsc{} |
- |
kapitálky |
\mdseries nebo \textmd{} |
- |
netučné písmo |
\bfseries nebo \textbf{} |
- |
tučné písmo |
\upshape nebo \textup{} |
- |
vzpřímené písmo |
\normalfont nebo \textnormal{} |
- |
implicitní font |
cmr znamená Computer Modern Roman
cmss znamená Computer Modern Sans Serif
cmtt znamená Computer Modern Typewriter
Kromě ji uvedených rodin jsou běně dostupné i následující rodiny:
pcr |
- |
Adobe Courier |
pbk |
- |
Adobe Bookman |
phv |
- |
Adobe Helvetica |
ppl |
- |
Adobe Palatino |
ptm |
- |
Adobe Times |
Na tyto rodiny se dá přepnout následující sekvencí dvou příkazů:
\fontfamily{rodina}
\selectfont
Pro vytisknutí fontu, který není reprezentován ádnou klávesou, lze pouít příkaz \symbol{číslo}, kde číslo je pořadí fontu v tabulce fontů dané rodiny.
Je třeba psát např. \large\ttfamily a ne \ttfamily\large - příkaz pro nastavení velikosti (tedy stupně) písma toti automaticky přepíná na antikvu.
zvýraznění textu: \emph{}
Akcenty: LaTeX umoňuje přidat ke znaku akcent bez nutnosti přepínat na jinou znakovou sadu:
\`{znak} |
- |
obrácená čárka nad znakem |
\'{znak} |
- |
normální čárka nad znakem |
\^{znak} |
- |
stříška nad znakem |
\r{znak} |
- |
krouek nad znakem |
\"{znak} |
- |
dvě tečky nad znakem |
\H{znak} |
- |
dvě čárky nad znakem |
\~{znak} |
- |
vlnka nad znakem |
\={znak} |
- |
horizontální čárka nad znakem |
\b{znak} |
- |
horizontální čárka pod znakem |
\.{znak} |
- |
tečka nad znakem |
\u{znak} |
- |
kolébka nad znakem |
\v{znak} |
- |
obrácená stříška (háček) nad znakem |
\t{dva znaky} |
- |
oblouček nad dvěma znaky |
\c{znak} |
- |
ocásek pod znakem |
\d{znak} |
- |
tečka pod znakem |
C) Délkové registry, mezery a pomlčky v textovém reimu
Délkové registry se nemusí jen nastavovat - dají se i pouívat např. jako parametry maker. Některé registry se nedají vůbec nastavovat (např. \linewidth ).
Délkové registry:
(např. \parindent, \fill) jsou speciální parametry a dají se (řada z nich) modifikovat buď (např. pro \parindent a 3cm) takto \parindent=3cm nebo takto \parindent 3cm. Tyto modifikace mohou být i v textové části (a na výjimky, jako je např. \textwidth) a platí od a do místa případné další modifikace nebo do konce souboru.
Některé příkazy pro práci s délkovými registry:
\newlength{\nejakyreg} |
- |
definuje nový délkový registr \nejakyreg s počáteční délkou 0. |
\setlenght{\nejakyreg}{.9\parindent} |
- |
nastaví hodnotu \nejakyreg na 90% hodnoty \parindent. |
\addtolenght{\nejakyreg}{.9\parindent} |
- |
zvýší hodnotu \nejakyreg o 90% hodnoty \parindent. |
\settowidth{\nejakyreg}{\large\textbf{BFLMPSVZ}} |
- |
nastaví velikost délkového registru \nejakyreg na délku textu uvedeného ve 2. parametru (podobně \settoheight). |
\settodepth{\nejakyreg}{} |
- |
nastaví hodnotu registru \nejakyreg na vzdálennost spodního okraje objektu uvedeného ve druhém parametru od účaří. |
Délkové registry se dají pouít jako parametr v příkazech \vspace a \hspace. Délkové regisry mohou být i záporné. Jednotky délek:
pt (tiskařský bod), em (zhruba prostor případající na písmeno m v nastaveném písmu), ex (zhruba prostor připadající na malé x v nastaveném písmu), in, cm, mm, sp (nejmenší délka)
Mezery a pomlčky v textovém reimu:
normální: |
\ |
(za lomítkem je mezera) |
zůená: |
\, |
|
|
\quad |
|
|
\qquad |
|
nezlomitelná: |
~ |
(je vlastně nevididelným znakem, které se jinak chová stejně jako písmeno (ale vypadá jako mezera) - pokud tedy spojuje dvě slova, tak se vlastně jedná o jedno slovo). Tím lze zabránit rozdělení některých seskupení znaků na okraji stránky (např. F.~X.~Šalda nebo v~pondělí). Dá se vyuít také pro to, aby odstavec začínal "prázdným" řádkem - stačí napsat ~\\. Pokud chceme zabránit rozdělení libovolného seskupení znaků, můeme toto seskupení vloit do LR boxu |
|
\vspace{vel.) |
nebo \vspace*{velikost} (např. \vspace{.9cm} tvar s hvězdičkou vytvoří mezeru, i kdy připadne na začátek nebo konec stránky |
|
\hspace{vel.) |
nebo \hspace*{velikost} tvar s hvězdičkou vytvoří mezeru i tehdy, kdy připadne na uplný začátek nebo konec řádku |
velikost můe být i pruná délka, \fill - to je maximální mezera: např. \hspace{\fill} text \hspace{\fill} umístí text uprostřed řádku. Místo \hspace{\fill} lze pouívat zkrácení \hfill (podobně \vfill).
příkaz \hrulefill znamená maximální mezeru vyplněnou čarou
příkaz \dotfill znamená maximální mezeru vyplněnou tečkama
krátká pomlčka: |
- (tzv. spojovník) |
normální pomlčka: |
-- |
dlouhá pomlčka: |
--- |
oddělení klíčového slova od okolního textu (někdy klíčové slovo produkuje slovo, které splývá s dalším slovem): |
|
D) Různé běně potřebné příkazy
$^\circ$ |
- Stupeň |
\@. |
- zdůrazňuje LaTeXu, e za tečkou začíná nová věta - e má tedy volit větší mezeru. Pokud by věta nekončila malým písmenem nebo číslovkou, nezvolil by LaTeX větší mezeru. Pokud ovšem je zapnuto \frenchspacing, je za tečkou vdy pouhá mezislovní mezera (dá se vypnout pomocí \nonfrenchspacing). |
\dag resp. \dagdag |
- odkazovací jednoduchý nebo dvojitý kříek. |
\copyright |
- znak copyright. |
\S |
- znak paragraf |
\$ |
- znak dolar |
\pounds |
- znak libra |
\textbullet |
- kulička v nematematickém reimu. |
\uv{text} |
- uvozovky (při pouití balíku czech) |
\dotfill |
- roztaitelna čára z teček (velikost je maximální dovolená okolím) |
\hrulefill |
- jako dotfill, ale čára je plná |
explicitní určení rozdělování (uvádí se mimo preambuli):
\hyphenation{orga-ni-zace při-bli-ně vznik} - slovo vznik se tedy od tohoto místa nemá dělit vůbec (do případné další změny dalším příkazem \hyphenation). Mezi slovama mají být mezery nebo (jeden) znak nový řádek. Platnost není omezena hranicemi skupiny nebo prostředí - tzv. globální deklarace.
přechod na nový řádek bez nového odstavce a bez automatického zarovnání takto ukončeného řádku:
\\[vzdálennost]
\\*[vzdálennost]
parametr vzdálenost určuje oč bude vzdálenost následujícího řádku větší, ne je standartní meziřádková vzdálenost.
\parindent=1cm |
je nastavení odstavcové zaráky na 1cm |
\noindent |
znamená, e odstavec na jeho začátku je příkaz uveden bude mít nulovou zaráku (první řádek nebude odsazen) |
\indent |
znamená, e odstavec na jeho začátku je tento příkaz bude mít odsazení (pokud by třeba jinak neměl) |
\pagenumbering{arabic} |
znamená, e se stránky budou číslovat arabskými číslicemi |
\pagenumbering{roman} |
znamená, e se stránky budou číslovat římskými číslicemi |
\pagenumbering |
- nastaví číslo stránky na 1. |
\setcounter{page}{4} |
- nastaví číslo aktuální stránky (čítače stránek) na 4 |
\addtocounter{page}{1} |
- zvýší číslo aktuální stránky (a všech následujících) o 1 |
\refstepcounter{čítač} |
- zvýší čítač čítač o jedničku, přičem se postará i o správné fungování příkazů \label a \ref při této modifikaci. |
\pagestyle{styl}, |
kde styl je buď: |
\thispagestyle{style} |
- nastavení stylu aktuální stránky |
\footnote[číslo]{} |
- poznámka pod čarou (má-li se čísílko napsat těsně za slovo, musí se i příkaz uvést přesně za slovo). Nepovinný parametr číslo slouí ke vnucení vlastního čísla. Jinak se pouívá automaticky zvyšovaná hodnota čítače footnote. Poznámky se umisují do textového těla stránky. |
V boxech a prostředí tabular \footnote nevygeneruje poznámku pod čarou. V tomto případě však lze pouít dvojici příkazů:
\footnotemark[číslo] a \footnotetext[číslo]{text}. První příkaz se pouije v boxu nebo prostředí tabular (to je ovšem také box), čím se vygeneruje čísílko v místě uvedení a inkrementuje se čítač poznámek o jedničku (v případě bez volitelného parametru) tak jak má. Druhý příkaz umístěný za boxem pak generuje poznámku pod čarou s čísílkem podle aktuální hodnoty čítače poznámek nebo podle volitelného parametru. Protoe se však jedná o box jsou vlastní poznámky vygenerovány a po "výrobě boxu". V důsledku toho, pokud máme v boxu více poznámek, příkaz \footnotetext zná vdy jen číslo poslední poznámky a vygeneruje všechny takovéto poznámky se stejným číslem! Proto je v tomto případě potřeba kolem jednotlivých příkazů \footnotetext trochu manipulovat s čítačem poznámek pod čarou (footnote) - např. pomocí příkazu \addtocounter.
\footnotesep - velikost vertikální mezery mezi různými poznámkami pod čarou. Čára pro poznámky pod čarou je generována příkazem \footnoterule. Pokud uivatel chce něco na této čáře změnit nebo ji vynechat, musí pouít předefinování tohoto příkazu pomocí renewcommand.
Pozn.: Poznámky pod čarou nefungují v plovoucím prostředí.
\underline{} |
- podtrení objektu (v matematickém i textovém reimu) |
\today |
- produkuje aktuální datum |
\enlargethispage{velikost} |
zvětšení stránky o velikost |
\pagebreak[] |
- bez argumentu přikáe LaTeXu zlom stránky v tomto místě textu; pokud je argument uveden, jedná se jen o naši ádost - 0 je nejslabší poadavek, 4 je nejsilnější a je to ekvivalentní tvrdému příkazu. Stránka nebude geometricky kratší. |
\linebreak[] |
- analogie předchozího příkazu pro řádek |
Příkazy enlargethispage, pagebreak a linebreak by se měly uívat jen v závěrečné fázi úpravy dokumentu v situaci, kdy jsme v nouzi.
\newpage |
(nebo \clearpage nebo \cleardoublepage) - přechod na novou stránku; stránka bude i geometricky kratší |
\clearpage |
navíc způsobí, e všechy plovoucí objekty, které byly uvedeny před tímto příkazem, se za touto stranou umístí na samostatné stránce (nebo stránkách) |
\cleardoublepage |
funguje jako \clearpage s tím rozdílem, e při dvoustarnném reimu bude textová stránka následující za \cleardoublepage lichá (v případě potřeby se automaticky vloí prázdná stránka). |
\marginpar[poznámka nalevo]{poznámka} |
- vytvoří poznámku na vnějším okraji; poznámku lze vnořit dovnitř textového těla stránky zvolením záporné hodnoty marginparsep, překrytí s textem se zabrání posunutím okraje odstavce, vedle něj je poznámka - např. pomocí \leftskip nebo \rightskip. Volitelný parametr má ten význam, e je uit místo povinného parametru, pokud poznámka vychází na levém okraji stránky (to se můze stát při dvoustraném reimu). |
\reversemarginpar |
- způsobí umisování poznámek na okraji na opačné straně stránky ne normálně |
\normalmarginpar |
- návrat k normálnímu umisování poznámek na okraji |
\parshape n zvětšení_odsazení_prvního šířka_prvního ... zvětšení_odsazení_n-tého šířka_n-tého |
|
|
Toto je TeXovský příkaz (paramery nejsou uvedeny ve sloených závorkách). Platí pro odstavec, ve kterém je uveden a způsobí, e prvních n řádků bude mít zvětšené odsazení (posunutí levého okraje) a délku podle předpisu (skutečné odsazení bude součtem hodnoty předepsané v parametru a hodnoty platné před tímto příkazem). Lze jím tedy podrobněji specifikovat vzhled odstavce. Tímto příkazem lze zařídit "vkousnutí" poznámnky na okraji do textu (zprava i zleva). Řádky za n-tým řádkem mají parametry n-tého. Př.: \parshape 4 0cm 8cm 0cm 8cm 1cm 7cm 0cm 8cm - nastaví parametry odstavce tak, e první bude mít posunutí odsazení o 0cm (tedy nezměněné odsazení) a délku 8 cm, druhý to samé, třetí bude mít délku 7cm, ale bude o 1cm zleva odsazen (take bude končit ve stejné poloze, jako předchozí řádek), čtvrtý zase nebude mít zvětšené odsazení a další řádky to samé. |
Některé příkazy z balíku czech.sty:
\dateczech{}
\dateenglish{}
\dateUSenglish{}
\captionsczech{}
\captionsenglish{}
\label{balbla1} |
- nastavení značky v prostředí (funguje specificky v prostředí equation, eqnarray, enumerate, figure a table - v prostředí figure a table se \label musí vyskytovat a za \caption{popis} nebo musí být uvnitř argumentu příkazu caption). |
\ref{blablax} |
- vyprodukování odkazu (čísla) na label - vyprodukuje např. číslo rovnice, obrázku nebo tabulky (odkaz na label mimo výše uvedená prostředí vygeneruje hodnotu aktuálního čísla oddílu - pro vygenerování čísla stránky je nutno pouít příkaz \pageref{návěští}) |
Příkazy \label a \ref tvoří pár. Pokud je odkaz v dokumentu uveden dříve ne samotný odkazovaný objekt (tzv. kříový odkaz), je třeba překlad spustit dvakrát. |
|
\input{cesta} |
- vloení obsahu souboru v místě uvedení. Pokud je jméno uvedeno bez přípony, hledá se nejprve soubor s příponou tex. Pokud se takový nenalezne, hledá se přesně odpovídající jméno. |
\include{cesta} |
- a na výjimky funguje jako sekvenece \clearpage \input{cesta_bez_přípony_tex} \clearpage. Jméno souboru se musí uvést bez přípony tex (tímto příkazem je mono natáhnout jen soubor s příponou tex). |
\tolerance |
- registr udávající o kolik můe slovo přesahovat hranici textového těla. LaTeX se snaí slova umisovat tak, aby se okraj textu příliš nevlnil a mezery nebyly příliš velké. Parametr, který tyto věci ovlivňuje je \tolerance. Můe být předepsán v rozsahu 0 a 10000 a implicitně je roven 200. Pokud se LaTeXu nepodaří slovo umístit tak, aby příliš nepřesahovalo běnou šířku textu - slovo umístí jak to jde a oznámí nám to. Pokud je tento parametr příliš malý - tady LaTeX je v tomto velmi přísný, má zároveň menší manévrovací schopnosti a ve snaze umisovat slova co nejestetičněji můe narazit a některé slovo bude velmi přesahovat a LaTeX nám tedy prokáe medvědí slubu. V tom případě zdánlivě paradoxně můe pomoci zvětšení parameru tolerance (v preambuli) - např. \tolerance=1000. |
\columnsep |
- registr udávající mezeru mezi sloupci ve dvousloupcovém reimu (specifikuje se v preambuli) |
\columnseprule |
- registr udávající šířku vertikální čáry mezi sloupci ve dvousloupcovém reimu (implicitně je nula). Nastavení začíná platit od místa uvedení. |
Seznam jmen čítačů (pro příkazy jako je \setcounter, \addtocounter) nebo \refstepcounter):
enumi enumii enumiii enumiv figure table footnote mpfootnote page equation subparagraph paragraph subsubsection subsection section chapter part
E) Skupiny a prostředí
Práci při vytváření dokumentu značně usnadňuje pouívání tzv. skupin a prostředí. Skupina je prostě oblast textu ohraničená párem sloených závorek {} (pokud to není místo pro uvedení parametru). Podobně prostředí je oblast textu ohraničená řádky \begin{konkretní_prostředí} a \end{konkretní_prostředí}. Prostředí však musí být nejprve zkonstruováno (konstrukce řady prostředí je obsaena v souborech s příponou cls a sty - ty jsou součástí systému LaTeX). Řada nastavení uvnitř konkrétní skupiny nebo konkrétního prostředí po jejím opuštění přestává platit (např. nastavení velikosti písma). Např. pokud je písmo nastaveno na netučné a chceme, aby další věta byla tisknuta tučně, ale dále se opět tisklo netučně, stačí uvedenou větu uzavřít do skupiny a přepnout na tučné písmo uvnitř této skupiny - ... {\bfseries bla bla bla bla} ... . Toto je nejčastější vyuití skupiny. Pokud se jako argument nějakého příkazu zadává slovo nebo posloupnost slov, která se pak vytiskne a my nejsme spokojeni s tím jaké písmo příkaz nastaví, můeme na začátek tohoto argumentu vloit příkaz pro nastavení nějakého písma, které nám vyhovuje. Můe se však stát, e toto nastavení bude mít neblahé následky na druh písma po tomto příkazu. Tuto situaci lehce vyřešíme tak, e argument i se změnou písma vnoříme do skupiny, čím se zajistí pouze lokální platnost změny písma (píšeme tedy např.: \prikaz{{\LARGE blabla}} místo \nejakyprikaz{\LARGE bla}).
V prostředí mohou platit některé speciální nastavení a příkazy, které vně neplatí a naopak některé příkazy, které jsou dostupné vně, neplatí uvnitř. To které příkazy a nastavení je dáno konstrukcí prostředí. Prostředí je v podstatě jakási speciální skupina. Některá prostředí mají parametr: \begin{konkretní_prostředí}{parametr}. Některá prostředí se dají do sebe vnořovat.
Různá prostředí:
abstract, quote, quotation, flushleft, flushright, center, verse verbatim, itemize, enumerate, description, list, trivlist, math, displaymath, equation, eqnarray, tabbing, tabular, picture, letter, slide, overlay, figure a table (obě jsou tzv. plovoucí prostředí)
V prostředí verbatim se nic neformátuje - je to přeneseno na výstup tak jak je to napsáno
prostředí quote a quotation se často pouívá na citáty a šířka odstavce je zmenšena; v prostředí quote je mezi odstavci nenulová mezera a odstavce jsou bez zaráky, v prostředí quotation je tomu přesně naopak
Prostředí letter je mono pouít jen ve třídě letter. Prostředí slide a overlay je mono pouít jen ve třídě slides.
Prostředí picture umoňuje kreslit jednoduché geometrické objekty přímo prostředky LaTeXu a je velmi uitečné pro jednoduchá schémátka.
V případě balíku multicol je mono pouít ještě prostředí multicols (např. \begin{multicols}{3} ... )
F) Třídy article, report, book a slides
\maketitle je příkaz pro vytvoření titulní stránky - tam je název, autor atd.. V případě volby notitlepage v \documentclass (implicitní pro třídu article) je tato "strana" umístěna v dokumentu v horní části stránky na ní pak normálně pokračuje další text a pro tuto stránku je pouit styl plain (\thispagestyle{plain}). V případě volby titlepage v \documentclass (implicitní pro book, report a slides) je titulní strana vytvořena jako samostatná. Samostatná titulní strana má styl empty. V případě stylu book se titulní strana započítává do stránkování (do čítače stránek). V ostatních stylech číslování začíná bezprostředně za samostatnou titulní stranou nebo a za stránkou s abstraktem, pokud je tento na další samostatné straně (to nastává v případě volby titlepage). Samostatnou titulní stranu můeme vytvořit přímo i uvedením následujícího prostředí: \begin{titlepage} nějaký text \end{titlepage}. Číslování pak začíná a za touto stranou. Na titulní straně se umístí texty předepsané předtím (nejlépe v preambuli) příkazy \title{}, \author{}, \date{}. Pokud se \date nepouije, dá se tam \today, pokud se pouije, ale s prázdným argumentem, datum (ani příslušný řádek) se neuvede. Uvnitř argumentu příkazů \title, \author a \date se dá u tříd book, article a report pouít příkaz \footnote{}, který na titulní stranu umístí v místě svého uvedení značku a text k této značce umístí na této stránce pod čarou - na rozdíl od uvedení footnote v běném textu se tyto poznámky pod čarou nečíslují, nybr označují nějakými standartními znaky. V případě volby titlepage se abstrakt specifikovaný v prostředí abstract umístí na další samostatné stránce (prostředí abstract není dosaitelné ve stylu book a slides) - číslování začíná a za stránkou s abstraktem.
Oddílové příkazy dostupné ve třídách book, article a report:
\titulek[případně_odlišný_nadpis_v_obsahu_a_záhlaví]{nadpis} nebo \titulek*{nadpis}
Tyto příkazy zajistí umístění vhodné mezery a nadpisu nad oddílem a zajistí navíc vhodné číslování objektu uvnitř oddílu a v obsahu atd.. obecné označení titulek má tyto moné konkrétní podoby:
\part \section \subsubsection \subparagraph \chapter \subsection \paragraph
(ve třídě article není \chapter definováno) parametr nadpis je název oddílu, tvar bez hvězdičky produkuje číslované záhlaví a umoňuje předepsat jiný název v obsahu, tvar s hvězdičkou potlačuje číslování záhlaví oddílu a zamezí uvedení v obsahu. Přesněji řečeno tvar s hvězdičkou pouze vygeneruje vhodně odsazený nadpis vhodným písmem a zajistí zamezení nevhodnému zlomu stránky, kdy by pod nadpisem nebyly alespoň dva řádky. LaTeX však nevygeneruje novou sekci - nezmění hodnotu čítače sekcí; pokud nám toto nevyhovuje, můeme hodnotu čítače ovlivnit ručně pomocí příkazu \setcounter{název_čítače}{číslo} nebo \addtocounter{název_čítače}{číslo} (např. \addtocounter{chapter}{-1} a analogicky pro ostatní typy oddílů).
Tvar s hvězdičkou umoňuje ručně očíslovat sekci. V tomto případě je však velmi vhodné spravit ručně hodnotu čítače sekcí (těsně! před začátkem hvězdičkované sekce) - např. aby byly správně číslovány odkazy. Polohu celého názvu sekce můeme lehce ovlivnit vnořením do vhodného prostředí - např. \begin{center} \section* Úvod \end{center}.
V případě stylu book (na rozdíl od article a report) je pro stránky následující po titulní straně implicitně zvolen typ stran headings, přičem se ho headeru dává číslo strany a označení oddílu (pokud není hvězdičkový).
Obsah se vytváří příkazem \tableofcontents (je dokončen a po druhém překladu). Vytvoří se v místě uvedení tohoto příkazu. Někdy se mohou v průběhu práce při překladu objevovat trochu zmatené chybové hlášky týkající se vytváření obsahu - někdy pomůe vymazání pomocného souboru s příponou .toc (který slouíf pro vytvoření obsahu) a potíe zmizí (je to tehdy, kdy jsme v průběhu práce způsobili vytvoření "chybného" souboru s příponou .toc v důsledku chyby v našem zdrojovém souboru a ten nám pak překáí i v čase, kdy u jsme chybu napravili)
Příkaz \tableofcontents však sám o sobě nezařadí do obsahu nečíslované titulky. Pokud chceme i tyto do obsahu zařadit, musíme si pomoci příkazem, který přidá do obsahu předepsanou poloku: \addcontentsline.
Ten má tři povinné poloky:
1. přípona obsahového souboru (toc - pro obsah, lot - pro seznam tabulek, lof - pro seznam obrázků),
2. úroveň poloky,
3. text poloky. Například:
Nejlépe je uvést \addcontentsline hned za deklarací sekce.
Příklad:
\section*{Úvod}
\addcontentsline{toc}{section}{Úvod}
(pro obsah se toti obvykle pouívá pomocný soubor s příponou toc)
Pro umístění textu do obsahu, který vůbec není specifikován v oddílovém příkazu, slouí příkaz \addcontents{toc}{nějaký text}. Text se objeví v místě určeném podle polohy v dokumentu.
Další ovlivnění tvaru obsahu dosáhneme nastavením vhodných hodnot čítačů secnumdepth a tocdepth v preambuli (pomocí příkazu \setcounter - např. \setcounter{secnumdepth}{2}). Čítač secnumdepth říká, které úrovně "sekcí" budou v obsahu ještě číslovány. Čítač tocdepth říká, které úrovně "sekcí" se v obsahu ještě vůbec objeví. Přitom úrovně jsou definovány takto:
section: 1, subsection: 2, atd. - ve všech třídách
part: 0 - ve třídě article
chapter: 0, part: -1 - ve třídách book a report
Např. \setcounter{secnumdepth}{2} způsobí, e subsubsekce u nebudou v obsahu číslovány.
Pro vytvoření seznamu tabulek slouí příkaz \listoftables. Pro vytvoření seznamu obrázků slouí příkaz \listoffigures.
Příkazy \frontmatter, \mainmatter a \backmatter jsou určeny pro naše sdělení LaTeXu o tom, kde začíná úvodní část knihy, kde hlavní a kde závěrečná. LaTeX pak můe podle toho zvolit např. různé typy čísel stránek. Tyto příkazy jsou dostupné jen ve třídě book.
\appendix - tento příkaz říká LaTeXu, e následující části jsou u jenom dodatky - LaTeX podle toho změní styl titulku těchto částí.
Třída slides:
Ve třídě slides neplatí a nebo nemá smysl pouívat některé příkazy a prostředí, které zde nedávají smysl (např. prostředí figure a table). Ve třídě slides je předefinována velikost písma (take normalsize odpovídá zhruba LARGE) a parindent nejde předepsat. Také se nemá měnit textwidth a textheight. Konkrétní slide nebo jeho overlay se vytváří vytvořením prostředí \slide nebo \overlay. Toto prostředí jednoduše zařizuje v podstatě jen vhodné číslování slidu nebo jeho overlaye a varuje nás, pokud se slide nebo overlay nevejde na jednu stránku. Nemá smysl v něm přikazovat přechod na novou stránku.
Dále je zde k dispozici prostředí note (\begin{note} \end{note}), pomocí něho si můeme vytvořit poznámky ke slidu - chová se stejně jako prostředí overlay, pouze číslování má trochu jiný styl.
Pokud se text uvede mimo tato prostředí, jeho stránky se nečíslují, funguje dělení stránek (lze pouívat \pagebreak a \newpage)- LaTeX nic neříká o tom, e nějaká stránka takovéhoto textu přetekla - toto zde neexistuje.
Ještě je zde uitečný příkaz \onlyslides, který nařizuje tisk jen některých slidů (a jeho overlayů). Tento příkaz se umisuje do preambule a funguje např. toto: \onlyslides{10-13} - tisk slidů 10 a 13 (a jejich overlayů) nebo toto: \onlyslides{12,14-16,20} - význam je jasný. Argument příkazu \onlyslides můe obsahovat neexistující slidy - výsledek je takový, jako by tyto v argumentu příkazu uvedeny nebyly.
Analogicky se dá pouívat příkaz \onlynotes. Platí, e pokud je uveden právě jen příkaz \onlyslides, pak se poznámky vůbec nevytvářejí a podobně pokud je uveden právě jen příkaz \onlynotes, pak se slidy (a jejich overlaye) vůbec nevytvářejí.
Text uvedený mimo prostředí slide, overlay a note se překládá vdy.
S pouitím balíku color (je potřeba dvi převést na postscript) lze snadno vytvářet i (sloitě) barevné slidy.
\documentclass{slides}
\usepackage{graphics} % viz Grafika
\usepackage{color}
\onlyslides{1} % Tento příkaz (nebo třeba i \onlyslides{1-100})způsobí tisk
% pouze slidu. Tisk i poznámek dosáhneme zakomentováním tohoto
% řádku
\fboxsep 7mm
\definecolor{lightyellow}{rgb}{1,1,0.7} % definujeme si světlejší lutou.
\begin{document}
\pagecolor{lightyellow}
\begin{slide}
% Vytvoříme barevný rámeček po okraji stránky tou fintou, e do barevné
% stránky umístíme bílý box a a do něj vlastní text (v budoucnosti to snad
% půjde s balíkem color šikovněji - viz. další řádky).
% Avšak pozor - tato finta znemoní normální chování prostředí slide, kdy
% text, který se nevešel na slide je umístěn na další (nečíslovanou) stránku
% a LaTeX nám o tom dá hlášku. Nicméně i ve zde uvedené úpravě jsme LaTeXem
% v případě přetečení na tuto skutečnost upozorněni - ale můe se to chovat
% divně! Proto je lepší takovouto úpravu (vnoření do \colorbox{}{\parbox ...})
% provést a v závěrečné fázi! přípravy dokumentu, kdy u máme vše v pořádku
% rozmístěno. Odstranění této konstrukce dosáhneme jednoduše zakomentováním
% následujících tří řádků - příkazu \hspace{-1.5cm} a příkazů \colorbox a
% \parbox (a jejich ukončení těsně před \end{slide}).
\hspace{-1.5cm}
\colorbox{white}{
% Následující vnoření parboxu zajistí zalamování řádků v colorboxu - viz Boxy.
\parbox{\textwidth}{ % Vzhledem k tomu, e \fboxsep není nula a e
% vnitřní parbox má ji šířku textového těla,
% bude colorbox širší ne šířka stránky a LaTeX
% dá varovnou hlášku. V podstatě to ale v tomto
% případě nevadí.
\vspace{1cm}
\textbf{\colorbox{green}{What have been measured:}}
\vspace{1cm}
\begin{itemize}
\itemsep 3mm
\item
\textcolor{red}{heat transfer from the cusp region of the plasma plume to the
cooper plate situated perpendicularly to the flow}
\item
\textcolor{red}{exit average enthalpy of argon (from voltage, electrical
current and increase of temperature of the cooling water)}
\item
\textcolor{red}{voltage as a function of time $\Rightarrow$ voltage
fluctuation spectra}
\item
\textcolor{red}{acoustical noise as a function of time $\Rightarrow$
acoustical oscilations spectra}
\item
\textcolor{red}{light emission as a function of time by means of an photodiode
array $\Rightarrow$ light emission oscilation spectra}
\end{itemize}
} % konec parboxu
} % konec colorboxu
\end{slide}
\begin{note}
% Poznámka jedna k předešlému slidu.
djl dsljk dsjksd sdfkjsdf sdjsd dskjsdf sdfkjsd sdfkj
djl dsljk dsjksd sdfkjsdf sdjsd dskjsdf sdfkjsd sdfkj
\end{note}
\begin{note}
% Poznámka dvě k předešlému slidu.
djl dsljk dsjksd sdfkjsdf sdjsd dskjsdf sdfkjsd sdfkj
djl dsljk dsjksd sdfkjsdf sdjsd dskjsdf sdfkjsd sdfkj
\end{note}
\end{document}
G) Bibliografie
\cite[p.71]{symbnázev} - odkaz s poznámkou - vytvoří např. [6, p.71]
Poloka v seznamu literatury se vytvoří příkazem
\bibitem[název uvedený v seznamu literatury]{symbnázev pouitý v cite}
- tento příkaz přidá do seznamu literatury literaturu uvedenou za tímto příkazem. Volitelný parametr umoňuje, aby ve výsledném dokumentu byl zadaný tvar odkazu a ne prostý číselný odkaz (který se pouije pokud se tento parametr nevyuije).
(na řádky následující za jednotlivými příkazy \bibitem se umisuje popis konkretní literatury)
Tyto poloky je třeba uvést v prostředí thebibliography, které má jeden povinný parametr a tím je sekvence znaků, ze které se určí maximální šířka odkazu (např. \begin{thebibliography}{8798nnn} - tedy max. šířka je 7 znaku). Toto prostředí rovně zařídí přidání nadpisu. Nadpis je určen parametrem \refname - pokud s ním nejsme spokojeni, můeme ho předefinovat na např. Pouitá literatura pomocí renewcommand:
\renewcommand{\refname}{Pouitá literatura} (umístěné např. do preambule za \usepackage{czech}).
Symbolické odkazy (balbla1) latex nahradí čísly tak, aby znamenaly pořadí výskytu v textu - jak je obvyklé. Příkazy \label, \ref a \cite, \bibitem tvoří páry. V případě kříových referencí (kdy se v dokumentu odkazujeme buď pomocí \ref nebo \cite na objekt označený v textu pomocí \label nebo \bibitem později) je třeba překlad spustit dvakrát - a při druhém běhu se dosadí čísla odkazů do poloek \ref nebo \cite.
Tento způsob vytváření referencí je ale trochu nepohodlný a hlavně nezajíštuje jednotnost. Proto byl vyvinut program BibTeX, který celé prostředí thebibliography s polokami bibitem a konkrétními popisy literatury pro LaTeX generuje z pohodlné databáze literatury (které program BibTeX rozumí). LaTeX byl obohacen o příkaz \bibliography, který LaTeXu říká, e má při překladu natáhnout celé prostředí \thebibliography ze souboru soub.bbl (který si před tím vytvoříme za pomocí programu BibTeX ze souboru s příponou .bib). Při tomto způsobu uivatel tedy neuvádí literaturu do zdrojového latexovského souboru, ale pohodlně ji "vytáhne" z databáze (všemoné) literatury umístěné v jiném souboru (s příponou bib) ve speciálním formátu pomocí programu BibTeX. Postup je následující: uivatel přidá do svého latexovského zdrojového souboru na místo, kde chce seznam literatury uvést, po sobě následující příkazy \bibliography{} a \bibliographystyle{}. V parametru prvního příkazu jsou uvedena zkrácená jména souborů, ve kterých je databáze všemoné literatury ve formátu, které rozumí program BibTeX. Tyto soubory mají příponu .bib, ale v uvedeném příkazu se tato přípona vynechává. Tedy např. \bibliography{clanky1,knihy1} se týká souboru clanky1.bib a knihy1.bib. Formát těchto databázových souborů zajištuje jednotnost a je popsán dále. Parametr příkazu \bibliographystyle{} určuje styl, podle kterého se literatura naformátuje. Standartní monosti jsou:
alpha |
- |
odkazy jsou vytvořeny ze jména autora a roku publikace, uspořádání je podle abecedy |
plain |
- |
odkazy jsou číselné, uspořádání je podle abecedy |
unsrt |
- |
odkazy jsou číselné, uspořádání je podle pořadí citace |
abbrv |
- |
jako plain, ale odkazy jsou prý trochu kompaktnější |
Dále je potřeba dodret následující postup:
spustit LaTeX na soub.tex - tím se mimo jiné vytvoří soub.aux, ve kterém jsou poadavky na literaturu (\cite), které poslouí programu BibTeX
spustit BibTeX na jméno soub - tím se na základě souboru soub.aux a (např.) clanky.bib vytvoří soubor clanky.bbl, jeho obsahem je celé prostředí \thebibliography s příkazy \bibitem a s poadovanými literaturami
spustit opět LaTeX na soub.tex - tím se ve výstupu ji objeví rejstřík literatury, ale ještě nebudou vytvořeny odkazy uvnitř textu (jsou to kříové reference)
spustit ještě jednou LaTeX na soub.tex - tím se dají do pořádku i odkazy z textu.
Ačkoliv se to zdá trochu sloité, je aplikování tohoto postupu velmi snadné. Je jen třeba mít literaturu připravenou v databázi podle pravidel popsaných dále a pak ji stačí jen provést výše uvedené čtyři běhy.
Ještě se mohou hodit následující dva příkazy:
\nocite{symbnázev} - funguje jako \cite (přidá do soub.aux na místo, které je určeno umístěním tohoto příkazu v textu, poloku), ale nevytiskne odkaz v textu. Po zpracování BibTeXem pak tedy máme poloku v seznamu literatury, ale v textu na ni není odkaz. Místo jednoho symbolického názvu můeme uvést i seznam názvů - poloky jsou odděleny čárkama.
\nocite{*} - v souvislosti s BibTeXem funguje tak, e dá do seznamu literatury veškerou literaturu obsaenou v příslušném souboru .bib, ale v textu na ně neodkazuje
Pravidla pro tvorbu bib souboru:
Jedná se o vlastní jazyk. Soubor se skládá z odstavců, které obsahují vlastní informace o dané literatuře. Odstavec má asi následující tvar:
@ARTICLE(McCourt64,
AUTHOR = {McCourt, F. R. and Snider, R. F.},
TITLE = {Thermal conductivity of a gas with rotational states},
JOURNAL = JCP,
YEAR = {1964},
VOLUME = {41},
PAGES = {3185--3191},
Pozn. = {xerox})
První řádek udává typ odkazu (ARTICLE) a label pro odkazování pomocí \cite. Další řádky jsou tzv. pole, ve kterých se specifikuje vlastní literatura. Vlastní specifikace jednotlivých poloek jsou řetezce znaků uzavřené do závorek nebo do dvojitých uvozovek. Pro daný typ odkazu jsou některá pole povinná (zde např. AUTHOR), některá jsou volitelná (zde např. VOLUME) a některá jsou ignorovaná (zde např. Pozn.). Pokud chybí povinné pole, BibTeX ohlásí chybu. Pokud je uvedeno volitelné pole, BibTeX ho pouije (nejspíše) a kdy chybí, nic se neděje. Ignorované pole BibTeX vůbec nezajímá, ale je to dobré místo pro poznámky v bib souboru - můe mít jakýkoliv název, který se liší od standartních názvů.
Následuje seznam typů odkazů a jejich moných polí:
article: |
povinná: author, title journal, year |
book: |
povinná: author, editor, title, publisher, year |
booklet: |
povinná: title |
inbook: |
povinná: author nebo editor, title, chapter a/nebo pages, publisher, year |
incollection: |
povinná: author, title, booktitle, publisher, year |
inproceedings: |
povinná: author, title, booktitle, year |
manual: |
povinná: title |
mastersthesis: |
povinná: author, title, school, year |
misc: |
povinná: ádné |
phdthesis: |
povinná: author, title, school, year |
proceedings: |
povinná: title, year |
techreport: |
povinná: author, title, institution, year |
unpublished: |
povinná: author, title, note |
Dále soubor můe mimo tyto odstavce obsahovat řádky, které BibTeXu nic neříkají a ještě řádky, kde se definují tzv. zkratky. Zkratka je řetězec začínající písmenem a neobsahující mezeru nebo jakýkoliv z následujících znaků: "#%'(),={} Slouí ke snadnému odkazování na delší řetezce a způsob jejich definování je jasný z následujícího příkladu (zadávají se na samostatném řádku):
@string(JCP = {Journal of Chemical Physics})
nebo také třeba (ekvivalentně)
@string{JCP = "Journal of Chemical Physics"}
Aby zkratka v místě pouití platila, musí být umístěna v souboru před místem pouití. Existují i některé standartní předdefinované zkraty (závislé na předepsaném stylu). Uivatelské zadání zkratky tyto defaultní zkratky přebije. Při vytváření souboru bbl vyuije BibTeX informace v bib souboru. Způsob, jakým BibTeX přesně řádky v bbl vytvoří, závisí i na předepsaném stylu specifikovaném v LaTeXovském zdrojovém souboru příkazem \bibliographystyle{}. Jestlie některá písmena zadáme velká (např. ve jménech), BibTeX je můe ztransformovat na malá a naopak. Také slova nemusí uvést v tom samém pořadí, ve kterém je specifikujeme v souboru .bib. BibTeX prostě "ví lépe" jak se literatura má naformátovat. Pokud chceme přinutit BibTeX aby respektoval naši specifikaci, pouijeme uzavření do sloených závorek - např. {P}hysical pošle BibTeX na výstup vdy s velkým P, {Jan Novák} pošle BibTeX na výstup vdy jako Jan Novák a ne jako Novák Jan. Rozsah stránek se zadává způsobem zřejmým z příkladu (dvě pomlčky --).
H) Třída letter
LaTeX rozhodně nebyl vytvořen kvůli takovým věcem jako je psaní dopisů a není na to zrovna ideálním nástrojem. Nicméně kdy u ho máme, tak proč v něm nepsat i jednodušší dopisy ?
Příkazy v prostředí \letter{adresát}:
\address{adresa} - zpáteční adresa, má být před \opening,
\cc{osoby},
\closing{pozdrav},
\encl{seznam příloh},
\opening{pozdrav},
\ps,
\signature{jméno} - můe být v preambuli
Pozn.: letter je příklad třídy dokumentu, pro kterou se vyplatí mít předem připravený template (záleí na pořadí příkazů, které se těko pamatuje).
\documentclass{letter}
\usepackage{czech}
\signature{}
\begin{document}
\renewcommand{\today}{29. května 2000} % pokud chceme jiné datum
\begin{letter}{adresát}
\address{}
\cc{}
\opening{}
TO JE TEXT.
\closing{}
\ps{}
\encl{dok1,dok2}
\end{letter}
\end{document}
Případná uivatelsky předepsaná velikost písma v dopise má vliv na poloky uvedené za tímto předpisem (pokud není velikost dále ještě upravovaná) s jednou výjimkou - předpis třeba jen těsně před řádkem \opening ovlivní současně velikost písma datumu a poloek předepsaných příkazy \begin{letter}{...} a \address{...} (teprve \opening tyto poloky aktivuje). Navíc platí, e automaticky vygenerovaná slova (např. \cc generuje slova Na vědomí:) jsou polotučná. Chceme-li např. aby celý dopis byl napsán písmenem velikosti Large, stačí těsně za \begin{letter}{...} nebo dokonce i jen těsně před \cc{...} uvést \Large. Chceme-li navíc aby jen poloka adresát byla vytištěna polotučně, zařídíme to tímto: \begin{letter}{\bfseries ....}.
Automaticky vygenerovaná slova však můeme předefinovat pomocí příkazu \renewcommand{}{} např. \cc v české verzi vygeneruje polotučné Na vědomí, pokud na konec preambule umístíme \renewcommand{\cc}{\bfseries Na vědomí \mdseries}, bude polotučné heslo změněno na tučné).
Ve třídě letter nelze (samozřejmě) pouívat bibliografii.
Standartní třída letter nám nemusí vyhovovat, můeme chtít nějaký vhodný specializovaný balík. Na následujících řádcích je ale ukázka toho, e příkazy v balíku letter.cls můeme v preambuli předefinovat tak, e nám nejspíše budou vyhovovat.
Příklad na přizpůsobené chování prostředí letter:
\documentclass[11pt,a4paper]{letter}
\usepackage{czech}
% podpis je zarovnán na místo, které nám nevyhovuje, proto následující
% sloitost:
\signature{\vspace{-.5cm}~~~~~~~~~~~~~\parbox{5cm}{% parbox proto, aby
Jan Novák \\předseda % "podpis" mohl mít více řádků
}}
% příkazy \renewcommand, \newcommand a \parbox
\renewcommand{\encl}{{\bfseries \\ Příloha: }}
\renewcommand{\headtoname}{{\bfseries Komu:\\}}
\renewcommand{\ccname}{\bfseries Na vědomí}
\newcommand{\Ps}{\vspace{0.5cm}\ps} % přidáme mezeru
\newcommand{\Encl}{\vspace{0.5cm}\encl} % přidáme mezeru
\newcommand{\mojeadresa}{\address{Praha 8 Kobylisy\\ jlhfdjlh 23\\18200}}
\begin{document}
\renewcommand{\today}{Dne 29. května 2000} % chceme jiný datum ne ten,
% který právě udává počítač.
\begin{letter}{\headtoname \leftskip 0.04\textwidth pan XY\\ Ústav lakjdlkd\\
Nademlejnem 13}
\mojeadresa
%\cc{paní Y-ová}
\opening{Váený pane XY}
lksdfjj kůjds sdkjdf dfkjdf dfkjdf kdjf
dfkj dflkdf dflkjdf dfkjdf dfkjd fkdfj dfkdfj dfkjdf dkjb fgb
Tak to je asi tak všechno.
\closing{S pozdravem}
\Ps{PS. Doufám, e mě chápete.}
\Encl{dok1,dok2}
\end{letter}
\end{document}
I) Vytváření tabulek
Prostředí tabbing:
Příklad prostředí tabbing (tabulky bez linek):
% jednoduchá tabulka
\begin{tabbing}
město XYZ ~~~~\= datum ~~~~
\= 34 \kill
\bfseries Město \>
\bfseries Datum \>
\bfseries Max. tep. \\[2mm]
město M \> 15/7 \> 33$^\circ$ Celsia \\
město N \> 21/7 \> 35$^\circ$ Celsia\\
město XYZ \> 3/8 \> 34$^\circ$ Celsia
\end{tabbing}
v předchozím příkladu \= znamená nastavení zaráky, \> posunutí na dálší zaráku, \\ přechod na nový řádek, \kill znamená zrušení řádku (nebude vytisknut) avšak ponechání platnosti všech na něm definovaných zaráek - první řádek tedy slouí jen k nastavení poloh zaráek. V tomto prostředí změna nastavení atributu pisma uvnitř končí s přechodem na další zaráku nebo řádek - toté platí pro prostředí tabular. Nad a pod tabulkou se automaticky vytvoří mezera pro odsazení od okolního textu. Ještě je mono pouít např. příkaz \+ nebo \- těsně před příkazem přechodu na nový řádek \\. Příkaz \+ způsobí, e následující řádky budou automaticky začínat o tabulátor dále (přesně jako by na jejich začátku byl přidán příkaz \>). Příkaz \- ruší předchozí příkaz \+. Pokud je na řádku uveden příkaz \` (pozor na orientaci apostrofu!), je text následující na řádku za tímto příkazem umístěn na pravý okraj stránky - za tímto příkazem pak u nemůe na daném řádku být další poloka. Prostředí tabbing můe být rozprostřeno přes více stran a je vhodné na vytváření pasáí textu s komplikovaným odsazováním.
Poznámka: v prostředí tabbing dochází k některým shodám řídících znaků s některým - dalšími řídícími znaky prostředí tabbing jsou např. \' a \`. Aby nedošlo ke konfliktu, je třeba akcentování v tomto prostředí modifikovat následujícím způsobem: hned za obrácené lomítko se přidá písmeno a (např. \a={znak} místo \={znak}).
Prostředí tabular:
Toto prostředí slouí k umístění tabulky do textu (na řádek) jako jakéhokoliv jiného slova - neumisuje se automaticky odděleně od textu. Celá syntaxe prostředí tabular je následující:
\begin{tabular}[p]{sloupce}
řádek \\
.....
\end{tabular}
Písmeno p ve volitelném parametru určuje způsob připojení tabulky k okolnímu textu: t - připojení horním okrajem, b - připojení dolním okrajem. Implicitně se tabulka zařazuje do textu středem.
Sloupce mohou být sekupení následujících písmen: l, r, c, p; l resp. r resp. c znamená, e sloupec bude zarovnán na levý okraj resp. pravý okraj resp. střed, p znamená sazbu textu poloky do bloku o šířce, která je zadaná ve svorce následující za p (paragraph) - např.
\begin{tabular}{|p{.6\textwidth}|}) - v tomto případě se sloupec zarovnává podle levého okraje. Kdy se slova nevejdou na řádek, vytváří se na právém okraji sloupce automaticky zlom a přechází se na další řádek v rámci stále jednoho řádku tabulky v tomto sloupci. V přípádě l nebo r nebo c se šířka sloupce tabulky zvolí automaticky tak, aby se do něj vešla na jeden řádek i nejdelší poloka - přesnou polohu zaráek tedy není třeba specifikovat. Přechod o jednu zaráku se specifikuje znakem & (nikoliv tedy \>). Jednotlivá písmena mohou být oddělena znakem |, co znamená, e se sloupce oddělí čárou. Pokud se těchto znaků uvede více za sebou, udělá se tolik čar těsně vedle sebe. Horizontalní čáry se vyrobí příkazem \hline uvnitř konstrukce tabulky - umístění této čáry se řídí logicky podle umístění tohoto příkazu v konstrukci tabulky. Je také mono vytvořit horizontální čáru (ovšem jen jednoduchou) přes jen některé sloupce - pomocí příkazu \cline{a-b} místo \hline, kde a resp. b znamená pořadí prvního resp. posledního sloupce, přes který se udělá čára.
Příklad prostředí tabular (tabulky s moností linek):
\begin{tabular}{c||rp{3cm}}
\bfseries \bfseries Město & \bfseries Datum & \bfseries Max. tep. \\[2mm]
\hline \hline
město M & 15/7 & 33$^\circ$ Celsia \\
město N & 21/7 & 35$^\circ$ Celsia\\
město XYZ & 3/8 & 34$^\circ$ Celsia \\
\end{tabular}
Další příklad na prostředí tabular
\begin{tabular}{|c||r|p{3cm}|}
\hline
\bfseries \bfseries Město & \bfseries Datum & \bfseries Max. tep. \\[2mm]
\hline \hline
Čechy & & \\ \cline{1-1}
město M & 15/7 & 33$^\circ$ Celsia \\
město N & 21/7 & 35$^\circ$ Celsia\\
město XYZ & 3/8 & 34$^\circ$ Celsia \\ \hline
\end{tabular}
Další příklad na prostředí tabular (zarámovaný víceřádkový text o šířce stránky):
\noindent\begin{tabular}{|p{\textwidth}|}
\hline
text přes několik řádků text text text text text text text text text
text text text text text text text text text text text\\
\hline
\end{tabular}
V případě, e potřebujeme, aby některá poloka byla umístěna přes více sloupců, můeme pouít příkaz
\multicolumn{přes kolik sloupců}{zarovnání}{poloka}, kde zarovnání je jedno z písmen l nebo r nebo c. Tím se poloka v aktuálním řádku tabulky můe umístit přes několik sloupců.
\begin{tabular}{|c||r|c|}
\hline
& \multicolumn{2}{|c|}{\bfseries Max. teplota v daném dni} \\ % první řádek
\cline{2-3}
\bfseries \bfseries Město & \bfseries Datum & \bfseries Max. tep. \\[2mm]
\hline \hline
Ćechy & & \\ \cline{1-1}
město M & 15/7 & 33$^\circ$ Celsia \\
město N & 21/7 & 35$^\circ$ Celsia\\
město XYZ & 3/8 & 34$^\circ$ Celsia \\ \hline
\end{tabular}
V prostředí tabular lze předepsat i jiný tvar mezisloupcového oddělovače ne jen mezeru nebo vertikální čáru obklopenou tzv. mezisloupcovými mezerami. K tomu slouí @{oddělovač} umístěné mezi příslušnými písmeny v poloce sloupce hlavičky prostředí tabular. Oddělovač můe být znak, např. = nebo sekvence, např. \ \times \ (tedy např. c@{\ \times \ }c). Můe být pouito i @{} - pak mezi sloupci není ádná mezisloupcová výplň.
Celou tabulku lze v horizontálním směru prosvětlit zvětšením délkového registru \tabcolsep (velikost mezisloupcové mezery) - implicitně je 3pt. Ve vertikálním směru lze tabulku prosvětlit předefinováním příkazu \arraystretch v preambuli (implicitně je hodnota rovna jedné) např. \renewcommand{\arraystretch}{1.2}
Jinak lze ještě tabulku prosvětlit na vhodných místech vloením strutu. Do okénka tabulky můeme vloit třeba další tabulku. Pokud chceme, aby jednotlivé poloky obsahovaly nějakou sloitější strukturu, můeme toho dosahnout vloením této struktury jako boxu. S pouitím instrukce \rotatebox z balíku graphics pak dosáhneme i nehorizontální orientaci elementu.
Příklad s boxem:
\begin{tabular}{|c||r|p{3cm}|}
\hline
\bfseries \bfseries Město & \bfseries Datum & \bfseries Max. tep. \\[2mm]
\hline \hline
\rotatebox{90}{\parbox[b]{2cm}{\bfseries Česká \\ Republika \\ v roce 2000}} & & \\ \cline{1-1}
město M & 15/7 & 33$^\circ$ Celsia \\
město N & 21/7 & 35$^\circ$ Celsia\\
město XYZ & 3/8 & 34$^\circ$ Celsia \\ \hline
\end{tabular} % po překladu přetransformovat dvi na ps.
Pozn. v prostředí tabular je mono vytvořit také malou vertikální čáru jako obyčejný znak (ale o trochu větší) v dané poloce přes jeden řádek tabulky. Vytvoří se příkazem \vline.
J) Matematika
Matematický reim se nastaví vstupem do jednoho z dále uvedených prostředí. V těchto prostředích nesmí být ádný prázdný řádek. V matematickém reimu se pouívají fonty nezávislé na nastaveních vně matematického prostředí s výjimkou nastavení velikosti - to platí i po vstupu do matematického reimu.
Matematická prostředí:
\begin{math} \end{math} (ekvivalentně \( \) nebo $ $) ... vzorec v textu
\begin{displaymath} \end{displaymath} (ekvivalentně \[ \] ) ... vzorec mimo text bez čísla
$$ $$ ... TeXovské "prostředí" pro vzorec mimo text
\begin{equation} \end{equation} ... číslovaná rovnice (vzorec)
\begin{eqnarray} \end{eqnarray} ... zarovnané číslované rovnice (vzorce} podle zaráek
\begin{eqnarray*} \end{eqnarray*} ... zarovnané nečíslované rovnice (vzorce) podle zaráek
Některá prostředí zařizují automatické číslování rovnic. Číslo je odvozeno od pořadí rovnice a od čísla oddílu, ve kterém se nachází. Uivatel můe standartně číslování ovlivnit jen způsobem "tuto rovnici čísluj - nebo nečísluj" s jednou výjimkou - v TeXovském prostředí $$ $$ funguje TeXovský příkaz \eqno - a to tak, e na okraj stránky přidá řetězec, který následuje za \eqno (např. $$x^2+3=4 \eqno(2) $$).
Pozn. TeXovské prostředí $$ $$ nezvyšuje hodnotu čítače rovnic equation. Pokud tuto hodnotu chceme zvýšit o jedničku i v tomto případě, pak (nejlépe dovnitř $$ $$) umístíme příkaz \refstepcounter{equation}.
\begin{eqnarray}
x &= & 8(x-9) + y + 14 \nonumber \\
x &= & 8(x-9) - y + 15 \\
-3x &= & 0.5x + 0.1 y - 103
% příkaz \\ za posledním řádkem by LaTeX pochopil
% jako e má následovat ještě jedna rovnice a
% očísloval by prázdný řádek
\end{eqnarray}
Pokud se hned za rovnici přidá klíčové slovo \nonumber, nebude tato číslovaná. Velikost mezery mezi řádky v tomto prostředí je určena délkovým registrem \jot. Pozn.: vytváření sloupců v prostředí eqnarray funguje asi následujícím způsobem:
prohlédnou se všechny řádky v eqnarray a rozhodne se o počtu sloupců podle řádku s největším počtem tabulátorů &
pokud je na některém řádku méně ne tento největší počet tabulátorů, jakoby se doplní na konec tohoto řádku příslušný počet tabulátorů (před případné \\ a \nonumber)
šířka daného sloupce se nastaví podle poloky, která je ze všech řádků nejširší, přičem se nikdy nejde pod jistou minimální šířku
Pokud v prostředí eqnarray místo & text (kde text je nějaký text - kus vzorce) napíšeme \lefteqn{text}, pak se to chová jako & text a na to, e se šířka textu při nastavování zaráek chápe jako nulová a text se zarovnává podle levé zaráky. To se dá vyuívá pro sloitější rozdělování rovnic na více řádků: např.:
\begin{eqnarray*}
\lefteqn{y=a+b+c+d+e+f+g-} \\
& & -\sqrt{a+b+c+d+e+f+g}
\end{eqnarray*}
Matematickou obdobou (se všemi detaily) textového prostředí tabular je prostředí array (musí být vnořeno v prostředí displaymath nebo equation - v případě, kdy chceme, aby matice byla mimo text, a nebo mezi \( \) - pokud chceme, aby matice byla v textu).
\begin{equation}
\begin{array}{ccc@{\quad}r}
x & x-y+z & z & 31.27 \\
x-y & y+z & -z & 2.32 \\
x & y & 2 z & -4,36 \\
\end{array}
\end{equation}
$$\left( \begin{array}{ccc@{\ }r}
a & b & c & -10.15 \\
a & b & c & 3.1 \\
a & 0.3 b & 0.1c & -24 \\
\end{array} \right)$$
$$f(x) = \left\{ \begin{array}{r@{\quad}c}
y, & x > \pi \\
-y, & x \leq \pi \\ \end{array} \right.
$$
Nastavení písma v matematice:
\mathnormal{text}, \mathrm{text}, \mathbf{text}, \mathsf{text}, \mathit{text}, \mathtt{text}, \mathcal{text} Pokud potřebujeme v matematickém prostředí napsat kousek normálního textu (kdy písmena nebudou chápána např. jako jména proměnných), můeme pouít příkaz makebox{} (nebo zkráceně jen mbox{}) nebo nastavení jako např. \textrm{}. V případě \makebox{} (\mbox{}) je text v argumentu vysázen písmem, které platilo těsně ne jsme vstoupili do matematického prostředí.
Číslo rovnice je ve třídě article jednoduché arabské číslo uzavřené v kulatých závorkách. Ve třídách book a report je místo jednoho čísla dvojčíslí ze dvou arabských číslic oddělených tečkou, kde první poloka je číslo kapitoly a druhá je pořadí rovnice v dané kapitole (např. (2.3)).
Matematické symboly:
Šipky:
\leftarrow |
\Leftarrow |
\longleftarrow |
\Longleftarrow |
\leftrightarrow |
\Leftrightarrow |
\longleftrightarrow |
\Longleftrightarrow |
\hookleftarrow |
\leftharpoonup |
\leftharpoondown |
\rightleftharpoons |
\uparrow |
\Uparrow |
\downarrow |
\Downarrow |
\updownarrow |
\Updownarrow |
\nearrow |
\searrow |
\swarrow |
\nwarrow |
\mapsto |
\longmapsto |
\leadsto |
|
|
|
a ještě slova, kde je right místo left (kromě těch, kde je left i right)
Relace:
\leq |
\geq |
\prec |
\succ |
\preceq |
\succeq |
\ll |
\gg |
\subset |
\supset |
\subseteq |
\supseteq |
\sqsubset |
\sqsupset |
\sqsubseteq |
\sqsupseteq |
\in |
\ni |
\vdash |
\dashv |
\equiv |
\sim |
\simeq |
\asymp |
\approx |
\cong |
\neq |
\doteq |
\propto |
\models |
\perp |
\mid |
\parallel |
\bowtie |
\Join |
\smile |
\frown |
|
|
|
pozn: pro \Join je potřeba standartní balík latexsym
Binární operátory:
\pm |
\mp |
\times |
\div |
\ast |
\star |
\circ |
\bullet |
\cdot |
\cap |
\cup |
\uplus |
\sqcap |
\sqcup |
\vee |
\wedge |
\setminus |
\wr |
\diamond |
\bigtriangleup |
\bigtriangledown |
\triangleleft |
\triangleright |
\lhd |
\rhd |
\unlhd |
\unrhd |
\oplus |
\ominus |
\otimes |
\oslash |
\odot |
\bigcirc |
\dagger |
\ddagger |
\amalg |
|
|
|
|
pozn: pro \lhd, \rhd, \unlhd a \unrhd je potřeba standartní balík latexsym
Symboly ke kterým se obvykle přidávají indexy (které jsou často nad a pod):
\sum |
\prod |
\coprod |
\int |
\oint |
\bigcap |
\bigcup |
\bigsqcup |
\bigvee |
\bigwedge |
\bigdot |
\bigotimes |
\bigoplus |
\biguplus |
|
Příklad: $$\sum_{i=0}^\infty g_i$$ nebo $$\int_0^\infty f\,dx$$ V samostatném (vysázeném) vzorci se indexy k těmto symbolům umisují nad a pod na rozdíl od vzorce v textu. TeXovský příkaz \limits (napsaný těsně za symbolem) však umoňuje i v textu vnutit psaní indexu nad a pod, např: $\int\limits _0^1$. Pokud chceme, aby indexy nebyly nad a pod i ve vysázeném vzorci, můeme pouít analogický příkaz \nolimits.
Další různé symboly:
\aleph |
\hbar |
\imath |
\jmath |
\ell |
\wp |
\Re |
\Im |
\mho |
\prime |
\emptyset |
\nabla |
\surd |
\top |
\bot |
\| |
\angle |
\forall |
\exists |
\neg |
\flat |
\natural |
\sharp |
\backslash |
\partial |
\infty |
\Box |
\Diamond |
\triangle |
\clubsuit |
\diamondsuit |
\heartsuit |
|
|
|
pozn: pro \Box a \Diamond je potřeba standartní balík latexsym
Funkce:
\arccos |
\arcsin |
\arctan |
\arg |
\cos |
\cosh |
\cot |
\coth |
\csc |
\deg |
\det |
\dim |
\exp |
\gcd |
\hom |
\inf |
\ker |
\lg |
\lim |
\liminf |
\limsup |
\ln |
\log |
\max |
\min |
\Pr |
\sec |
\sin |
\sinh |
\sup |
\tan |
\tanh |
|
|
|
Řecká abeceda:
\Upsilon \upsilon
\alpha |
\betta |
\Gamma |
\gamma |
\Delta |
\delta |
\epsilon |
\varepsilon |
\zeta |
\eta |
\Theta |
\theta |
\vartheta |
\iota |
\kappa |
\Lambda |
\lambda |
\mu |
\nu |
\Xi |
\xi |
\o |
\Pi |
\pi |
\varpi |
\varrho |
\Sigma |
\sigma |
\varsigma |
\tau |
\Phi |
\phi |
\varphi |
\chi |
|
|
\Psi |
\psi |
\Omega |
\omega |
|
|
Závorky a příbuzné oddělovače: (je dobré je uvést příkazem \left nebo \right - pak se automaticky zvolí vhodná velikost)
( ) |
[ ] |
\{ \} |
\langle |
\rangle |
\lfloor |
\rfloor |
|
\lceil |
\rceil |
\uparrow |
\downarrow |
\updownarrow |
\Uparrow |
|
|
\Downarrow |
\Updownarrow |
| |
\| |
/ |
\backslash |
|
|
Pokud má na jedné straně závorka chybět, je třeba místo oddělovače pouít tečku. Příklad:
$$f(x) = \left\{ \begin{array}{r@{\quad}c}
y, & x > \pi \\
-y, & x \leq \pi \\ \end{array} \right.
$$
Některé akcenty nad znakem v matematice:
\hat{}, |
\tilde{}, |
\bar{}, |
\vec{}, |
\dot{}, |
\ddot{} (dvě tečky), |
\acute{} (čárka) |
|
|
|
|
Spodní index - vytváří se za pomocí podtrítka (např. a_1 nebo a_\infty nebo a_{23}, kdy je index předepsán jako více znaků, pomůeme si skupinou - např. a_{23}, funguje samozřejmě i např. toto a_\mathbf{23})
Horní index - naprostá analogie se spodním indexovánim, pouze místo podtrítka je nyní stříška (např. x^2).
Dají se samozřejmě vytvářet i indexy k indexům (např. x_{2_1}, ale musí se dát pozor na závorky - např. \int_0^1 je integrál od nuly do jedné;
Zlomky: vytváří se pomocí \frac{čitatel}{jmenovatel} (např. \frac{\sqrt{x}}{\pi}).
Některé další příkazy v matematickém reimu: \widehat{} \widetilde{} \imath a \jmath (i a j bez tečky) \stackrel{}{} (umístí první parametr v indexove velikosti nad druhý parametr Příklad: $U\stackrel{lim}{\rightarrow}V$)
\underbrace{} a \overbrace{} (vytvoření vodorovné svorky pod a nad objektem), ve vzorci mimo text lze \underbrace nebo \overbrace opatřit indexem - pak se tento index umístí pod nebo nad svorku (např. $$\underbrace{a_1+\overbrace{a_2+\cdots +a_9}^8+a_{10}}_{10}$$) \sqrt[]{} (např. $\sqrt[m]{1+x}$ nebo $\sqrt[{\textstyle m}]{1+x}$)
\not - přeškrtnutí vpravo - znak za \not bude škrtnut; příklad: \not>; funguje tak, e se překrývá tento znak přeškrtnutí s následujícím znakem; polohu přeškrnutí vzhledem k objektu lze tedy ovlivnit vloením vhodné mezery mezi \not a znak; Pokud je znak symbol, vše funguje jak bylo řečeno, jinak můe být potřeba uzavřít znak do sloených závorek.
Různé tečky:
\ldots (lze pouít i v textovém reimu), \cdots, \vdots, \ddots
Desetinné číslo v matematickém reimu - např. $1{,}345$.
Mezery v matematickém reimu:
\! záporná úzká mezera, \; široká mezera, \ mezislovní mezera,
\, úzká mezera, \: střední mezera, \quad čtverčík, \qquad dva čtverčíky
K) Grafika
např. je mono pouít balík graphics. Pak fungují příkazy:
\includegraphics*[x_1,y_1][x_2,y_2]{jméno souboru}. Tento příkaz provede následující: nech je v souboru nějaký obrázek. Obrázek má často ten tvar, e jeho okrajové části jsou bílé plochy - tedy "vlastní obrázek" je jakoby uprostřed umístěn na čistém listu. Často potřebujeme tuto bílou plochu oříznout. První pár volitelných parametrů jsou souřadnice levého dolního rohu oříznutého obrázku vzhledem k souřadné soustavě s počátkem v levém dolním rohu neoříznutého obrázku ( v tomto případě bude tedy celý obrázek v levém dolním rohu zkrácen - oříznut o x_1 a y_1 - "vlastní obrázek" bude nyní blíe k levému dolnímu rohu). Parametry x_2 a y_2 mají analogický význam pro pravý horní roh. Velikost umisovaného obrázku tedy bude (x_2-x_1) krát (y_2-y_1). Pokud první volitelné parametry chybí, pak jsou jejich hodnoty rovné 0. Pokud chybí i druhé volitelné parametry, neprovádí se ádné ořezávání.
Př.:
\includegraphics*[5mm,10mm][30mm,45mm]{jméno souboru} - vloení obrázku ve tvaru obdélníka o velikosti 25x35 mm, který byl vyňat z většího obrázku tak, e se obrázek nalevo ustřihl o 5 mm a dole o 10 mm.
\includegraphics[][]{jméno_souboru} - význam stejný jako u příkazu \includegraphics* a na to, e LaTeX v případě uvedení volitelných parametrů sice bude počítat s rozměry oříznutého obrázku, ale přesto ho vloí celý (pak se můe s nečím překrývat).
\scalebox{scale_factor}[scale_factor_y]{} - změna velikosti detailů v ose x a y
\resizebox{velikostx}{velikosty}{} - vyplnění do připraveného obdélníka
\rotatebox{úhel}{} - otočení o zadaný úhel (pouívá se také v tabulkách)
\reflectbox{} - zrcadlové převrácení
Pozn.: Pokud příkaz \includegraphics vloíme do \rotatebox s rotací o násobek 90 stupňů, pak můe být význam x_1, y_1, x_2, y_2 samozřejmě poněkud pomíchán. Příklad:
\scalebox{.2}{
\includegraphics*[0mm,30mm][200mm,230mm]{obr.eps}
}
Poznámka: samotný prohlíeč dvi souboru nemusí umět správně znázornit výsledky některých takových operací (např. \rotatebox) - pak je třeba provést konverzi dvi na ps (pomocí dvips).
Příklad uití balíku color:
Balík color:
Tento balík umoňuje vytvářet barevná pozadí a měnit barvu textu. Předdefinovány jsou následující identifikátory barev: red, green, blue, yellow, cyan, magenta, white, black. Pokud potřebujeme jinou barvu, máme k dispozici příkaz:
\definecolor{název barvy}{model}{h} - definuje novou barvu podle modelu (rgb nebo gray), h je stupen šedi (0 a 1) nebo hodnota barvy v rgb modelu (např. 0.5,0.5,0.3)
\pagecolor{barva} - přepnutí barvy pozadí aktuální a následujících stran.
\colorbox{barva}{objekt} - podloení objektu barevným obdélníkem (jeho velikost je o málo větší ne velikost objektu). Funguje vlastně stejně jako příkaz makebox - vytváří se box, a na to, e makebox navíc můe parametry nastavovat svoji velikost.
\fcolorbox{barva okraje}{barva vnitřku}{objekt} - funguje jako příkaz
\colorbox s tím, e kolem vnitřku udělá navíc okraj, jeho barva je specifikována prvním parametrem. Funguje vlastně stejně jako příkaz framebox - vytváří se box, a na to, e framebox navíc můe parametry nastavovat svoji velikost. Síla okraje je určena délkovým registrem \fboxrule. Minimální vzdálennost okrajů boxu od jeho obsahu je určena parametrem \fboxsep.
\color{barva} - přepíná barvu textu
\textcolor{barva}{text} - text je vytištěn zadanou barvou.
L) Výčtová prostředí
Nejčastěji pouívanými výčtovými prostředími jsou prostředí itemize, enumerate a description.
\item - uvození poloky v prostředích itemize, enumerate a description.
Příkaz \item můe mít nepovinný parametr, který způsobí, e poloka bude uvedena tímto parametrem. Pokud chceme mít v něm hranatou závorku, musíme celé heslo uzavřít do sloených závorek - např. \item [{Pole[i]}]. Příklad:
\begin{enumerate}
\item první poloka
\item druhá poloka
…
\item[9.] devátá poloka
\end{enumerate}
Výčtová prostředí lze do sebe vnořovat.
Pokud nám implicitní geometrie nevyhovuje, lze tvar výčtového prostředí ovlivnit následujícími registry (chtělo by to ale obrázek):
\leftmargini, \leftmarginii, \leftmarginiii, \leftmarginiv, \leftmarginv - vzdálennost levého okraje textového těla prostředí dané úrovně od levého okraje textového těla prostředí nadřazené úrovně (\leftmargini je vzdálennost okraje textového těla výčtového prostředí první úrovně od levého okraje textoveho těla normálního textu). Nastavení musí být vně výčtového prostředí, ke kterému se vztahuje.
\partopsep - odsazení výčtového prostředí první úrovně od normálního textu (mezera mezi výčtovým prostředím první úrovně a okolním textem tedy je \parskip + \partopsep)
\itemsep - odsazení jednotlivých poloek výčtového prostředí. Platí v té úrovni výčtového prostředí, ve které je uvedeno.
\labelsep - hýbe s polohou návěští (symbolem poloky). Je to vzdálennost konce prostoru rezervovaného pro návěští a prvního znaku v prvním řádku prvního odstavce dané poloky
\itemindent - velikost zaráky prvního řádku prvního odstavce poloek prostředí itemize a enumerate (hýbe i s polohou symbolu poloky). Platí v té úrovni výčtového prostředí, ve které je uvedeno. V prostředí description je velikost zaráky pruná (podle délky označení poloky) a parametr \itemindent má na ni vliv.
M) Plovoucí prostředí
Umisování kompaktních tabulek a obrázků do textu je obecně problémem. Tyto objekty nemohou být na rozdíl od obyčejných textových odstavců rozděleny na rozhraní stránek. Při práci s LaTeXem nemáme tak rychlou kontrolu, co se stane s okolím obrázku při jeho přemísení, jakou máme u WYSIWYG editorů. LaTeX však nabízí jinou filozofii práce při umisování těchto objektů - objekt se umístí do tzv. plovoucího prostředí. Pomocí tohoto nástroje lze relativně snadno a pohodlně umisovat obrázky a tabulky do textu. Uivatel nemusí specifikovat umístění objektu detailně.
Syntaxe:
\begin{figure}[loc] nebo \begin{figure*}[loc] - pro obrázky
\begin{table}[loc] nebo \begin{table*}[loc] - pro tabulky
Ve dvousloupcovém reimu verze s hvězdičkou způsobuje, e se objekt umisuje přes oba sloupce najednou, verze bez hvězdičky způsobuje umístění objektu uvnitř jednoho sloupce. V jednosloupcovem reimu jsou obě verze ekvivalentní.
Do prostředí table je často vnořeno prostředí tabular. Jako nepovinný parametr prostředí figure a table mohou být uvedena některá (1 a 4) z písmen h, t, b, p specifikující umístění objektu, které je do prostředí vnořeno. Význam:
h - umístění v místě uvedení ve zdrojovém textu (nefunguje pro dvousloupcové tabulky a obrázky ve dvousloupcovém reimu stránky)
t - umístění na začátku stránky, na které je prostředí uvedeno ve zdrojovém textu; Pozn: můe se umístit i na stránce následující
b - umístění na konci stránky, na které je prostředí uvedeno ve zdrojovém textu (nefunguje pro dvousloupcové tabulky a obrázky ve dvousloupcovém reimu stránky); Pozn: moc mi to nefunguje
p - umístění na stránce, na které není text a která není příliš fyzicky a logicky (v jiné sekci) vzdálena od místa uvedení ve zdrojovém textu; můe se umístit i na stránku, kde jsou i jiné (jen) plovoucí objekty.
V případě více písmen se LaTeX pokouší splnit poadavky zleva do prava. Poadavek povauje za splněný, pokud stránka nepřeteče ani příliš nepodteče. Implicitní hodnota loc je tbp - nejdříve se tedy LaTeX pokusí splnit t, kdy se mu to nepodaří, pokusí se o b, kdy ani to ne, pokusí se o p. Pokud se LaTeXu nepodaří vhodné umístění, umístí objekt na konci dokumentu na stánce, na které není obyčejný text. Platí přitom důleitá zásada: LaTeX nikdy nepřehodí objekty stejného druhu (nezamíchá obrázky a nezamíchá tabulky). Kdy se tedy např. nějaký obrázek nemůe vhodně umístit a umístí se tedy a na konci dokumentu, umístí se na konci dokumentu i všechny následující obrázky. Vyjímkou je pouze monost prohození jednosloupcového a dvousloupcového obrázku ve dvousloupcovém dokumentu.
Ještě se můe hodit následující příkaz ovlivňující umístění:
\suppressfloats[t nebo b] - zabrání umístění obrázků a tabulek uvedených za tímto příkazem na horní nebo dolní části stránky, na které je tento příkaz uveden, které by se jinak takto umístily. Pokud volitelný parametr chybí, znamená to zabránění umístění nahoře i dole.
V prostředí figure a table se můe umístit tento příkaz:
\caption[případně jiný text v seznamu obrázků nebo tabulek]{text}. Tím se vygeneruje označení tabulky nebo obrázku - číslování (i detaily v označování) je automatické. Případné \label se musí vyskytovat a za \caption nebo musí být uvnitř argumentu příkazu caption. Pokud nejsme spokojeni s uvedením označení obrázku (při pouití balíku czech je to Obrázek.), můeme toto označení předefinovat pomocí \renewcommand v preambuli (za \usepackage{czech}) na např. Obr.:
\renewcommand{\figurename}{Obr.}. U tabulek se jedná o příkaz \tablename.
Mimochodem v plovoucím prostředí můe být umístěno vlastně v podstatě cokoliv - třeba i několik obrázků s několika příkazy \caption nebo normální text.
Pozn. Obrázek nebo tabulku do plovoucího prostředí samozřejmě nemusíme umisovat a dokoce jej (ji) můeme umístit do poznámky na okraji (pak ale můeme potřebovat příkaz \raisebox pro posunutí referenčního bodu, protoe objekt třeba nebude umístěn přesně tak, jak chceme).
Pro umisování plovoucích objektů existuje řada pravidel a parametrů. Hodnoty parametrů lze uivatelsky ovlivňovat. Zmiňme jen dva:
totalnumber - čítač, jeho hodnota znamená maximální počet plovoucích objektů, které se mohou objevit na stránce s obyčejným textem (implicitní hodnota je myslím 3). Můeme ho ovlivnit pomocí \setcounter (např. \setcounter{totalnumber}{2}).
\textfraction - příkaz definující minimální část stránky zabranou obyč. textem, na které jsou plovoucí objekty (implicitně definuje tuto velikost myslím jako 0.2 - tedy na takové stránce můe být maximálně 80% plochy zabráno plovoucími objekty). Příkaz lze předefinovat pomocí renewcommand (např. \renewcommand{\textfraction}{0.15}). Pozn.: moc mi to nefunguje.
Pozn. Pokud se jedná o jednosloupcové plovoucí objekty ve dvousloupcovém stylu, mají tyto parametry stejný význam - jen místo stránky je nyní sloupec.
Pokud do hranatých závorek před loc dáme vykřičník, nebude LaTeX při umisování plovoucího objektu přihlíet k omezením plynoucích z parametrů totalnumber, textfraction a podobných omezení - bude se maximálně snait splnit loc (např. \begin{figure}[!ht]).
Lidé, kteří neumí s LaTeXem zacházet si často stěují na velké problémy při umisování obrázků a tabulek. Pravda je, e LaTeX má poměrně přísná kritéria na vzhled dokumentu a pokud se mu plovoucí objekty nepodaří umístit podle instrukcí uivatele tak, aby splnil svá kritéria na estetičnost, umístí je na konec dokumentu, čím dá najevo, e se mu nepodařilo splnit poadavky uivatele. Pro pohodlnou práci je velmi důleité zachovat zhruba následující postup:
Přednostně se snait vyuívat plovoucí prostředí pro umisování obrázků a tabulek. Pokud nám nevyhovuje tvar popisu plovoucího objektu vygenerovaného příkazem caption, nemusíme příkaz caption pouívat a popis umístit do plovoucího prostředí ve tvaru a na místo, které nám vyhovuje - pak se ovšem vzdáme automatického číslování plovoucího objektu (pokud ovšem automatické číslování nezařídíme jinak - viz. poznámka na konci této kapitoly). Často můeme potřebovat vygenerovat ručně asi následující popis:
OBR 1.: |
Na tomto obrázku je znázorněno ..., co ukazuje na ... |
Tento tvar pohodlně vyrobíme pomocí parboxu:
OBR 1.: \parbox[t]{.7\textwidth}{Na tomto obrázku ..... .... ... ..}
(šířka 0.7\textwidth je jen příklad).
Pokud má LaTeX problémy se splněním našich poadavků, snait se nejdříve změkčit jeho tvrdé normy pouitím vykřičníku a pokud toto nepomůe, ulehčit mu práci změkčením našich poadavků (např. umístěním obrázku trochu na jiné místo) - toto ovšem případně dělat a v závěrečné fázi výroby dokumentu.
Pokud se to stále nepovedlo a naše poadavky na umístění obrázku nebo tabulky jsou dost nekompromisní (typicky proto, e máme poslat příspěvek na konferenci a musíme se bezpodmínečně vejít na velmi omezený prostor, kdy estetičnost dokumentu jde hodně stranou), pak sáhnout k "ručnímu řízení" - neumisovat obrázek nebo tabulku do plovoucího prostředí. Velmi důleité však je toto případně udělat a v samotném závěru přípravy dokumentu (kdy u nebudeme dále dokument příliš měnit)!
Poznámka k bodu 1):
Pokud chceme, aby se číslo u OBR generovalo automaticky, můeme to zařídit tím, e těsně před tento řádek přidáme dva řádky:
\refstepcounter{figure}
\label{nejakylabel}
(kde nejakylabel je námi zvolený řetězec znaků) a OBR s číslem vytvoříme třeba následujícím způsobem: OBR~\ref{nejakylabel}. Tím se zajístí automatické číslování a správná hodnota čítače obrázků figure. Nezajistí se tím ovšem přidání obrázku do seznamu obrázků (pokud ho chceme mít). Zjistil jsem však, e to lze snadno dosáhnout přidáním následujícího řádku za text s označením obrázku: \addcontentsline{lof}{figure}{\numberline{\ref{nejakylabel}}\ignorespaces Text_který_chceme_mít_v_seznamu}
Pro tabulky je postup analogický - místo lof je lot a místo figure je table. Tento postup je aplikován v souboru rep.tex u tabulky 1.1.
N) Makra
Definice maker:
K definici maker slouí následující příkaz:
\newcommand{příkaz}[počet par.][implicitní]{tělo definice}
Pokud obsahuje definice makra nějaké parametry, musí se uvést volitelný parametr počet par. Tento příkaz definuje nový příkaz příkaz - jeho pouitím v textu s případnými parametry se příkaz nahradí tělem definice s případnými aplikovanými parametry. V konstrukci se na parametry odkazuje znakem # následovaným číslem, které znamená pořadí parametru (např. #3). Při pouití jsou pak parametry umístěny kadý zvlášt v jednom páru závorek. Pokud se v této konstrukci uvede parametr implicitní, znamená to, e první parametr z těla definice je při volání příkazu volitelný a má tuto implicitní hodnotu.
Příklad:
\newcommand{\operator}[2][\hat]{\ensuremath{\mathbf{#1{#2}}}} - definuje makro se dvěma parametry. První je volitelný a pokud se při volání makra nespecifikuje, bude automaticky \hat.
Příklady pouití: \operator{A} - napíše tučné matematické A a nad ním stříšku (\hat), \operator[]{A} - napíše jen tučné A v matematickém reimu,
\operator[\vec]{A} - napíše tučné A v matematickém reimu a nad ním šipku.
\ensuremath zajistí, e pokud ji nejsme v matematickém reimu, tak se do něj přepne.
Dokonce funguje i následující makro:
\newcommand{\operator}[2][]{\ensuremath{\mathbf{#1{#2}}}}
pouití: např. \operator{A} - napíše jen tučné A v matematickém reimu,
\operator[\hat]{A} - napíše tučné A v matematickém reimu a nad ním stříšku.
Příklad bez volitelného parametru:
\newcommand{\operator}[1]{\ensuremath{\mathbf{\hat{#1}}}} - pouití:
\operator{A} - napíše tučné A v matematickém reimu a nad ním stříšku.
Příklad na změnu šířky odstavce:
\newcommand{\souhrn}[2]{
\begin{center}\parbox{#1}{\bfseries\itshape\hrulefill \\ #2
\hrulefill}\end{center}
}
Pouití:
\souhrn{.8\textwidth}{Dá se říci, e se navrhovaná metoda ukázala jako perspektivní. Avšak pro jistotu navrhujeme provést ještě další ověřovací experimenty.}
Případná přítomnost číslovky v názvu makra činí problémy.
Příkazem \renewcommand se změní chování ji existujícího příkazu, příkaz \providecommand provede definici nového makra jen, pokud ji definice tého jména neexistuje (\newcommand LaTeX v tomto případě způsobil chybovou hlášku). Parametry u obou těchto příkazů jsou stejné jako u přikazu \newcommand. Mám tu zkušennost, e \renewcommand něčeho co je definováno v souborech .cls nebo .sty by se neměl uvádět v textové části nýbr v preambuli. V kadém případě je i z hlediska přehlednosti lepší uvádět příkazy jako newcommand v preambuli (případně v balíku).
Bezparametrický příkaz \renewcommand{}{} se často pouívá při modifikaci chování standartních příkazů. Zde je seznam příkazů, které generují uvedený řetězec (anglický nebo český) a které můeme často potřebovat předefinovat pomocí renewcommand (nejlépe na konci preambule). Tyto příkazy uivatel obvykle přímo nepouívá, ale jsou uity uvnitř jiných uivatelských příkazů - obsaeny v jejich definici. Jejich význam by měl být jasný.
Příkaz |
Anglická verze |
Česká verze |
|
\abstractname |
Abstract |
Abstrakt |
|
\alsoseename |
see also |
viz také |
|
\appendixname |
Appendix |
Příloha |
|
\bibname |
Bibliography |
Literatura |
|
\ccname |
cc |
Na vědomí |
(u dopisů) |
\chaptername |
Chapter |
Kapitola |
|
\contentsname |
Contents |
Obsah |
|
\enclname |
encl |
Příloha |
(u dopisů) |
\figurename |
Figure |
Obrázek |
|
\headtoname |
To |
Komu |
(u dopisů) |
\indexname |
Index |
Rejstřík |
|
\listfigurename |
List of Figures |
Seznam obrázků |
|
\listtablename |
List of Tables |
Seznam tabulek |
|
\partname |
Part |
Část |
|
\prefacename |
Preface |
Předmluva |
|
\refname |
References |
Reference |
|
\seename |
see |
viz |
|
\tablename |
Table |
Tabulka |
|
Př.: \renewcommand{\figurename}{FIGURE}
O) Boxy
Práce s boxy umoňuje uivateli LaTeXu vytvořit prakticky cokoliv (např. tabulku, uvnitř které jsou některé poloky pootočené o např. 90 stupňů a umístěny i nějaké obrázky)!
TeX funguje tak, e si vytvoří "notovou osnovu" - linky (tzv. účaří) pod sebou a na ně pak umisuje tzv. boxy (obdélníky). Vlastně i kadý jednotlivý znak je takový malý box. Ve fázi umisování boxu na linky (na účaří) se TeX nezajímá o vnitřní strukturu boxu - zajímají ho jen rozměry, aby mohl boxy správně umisovat - rozteče mezi linkami "notové osnovy", rozteče mezi boxy v horizontálním směru. Obsahem boxu (s výjimkou tzv. rule boxu) můe být cokoliv - např. obrázek. TeX automaticky umisuje boxy horizontálně za sebou, nenastává-li zlom řádku nebo není-li explicitně poádán, aby tak nečinil. Kadý box má svůj tzv. referenční bod, jeho umístění vzhledem k hranicím boxu je dáno typem boxu a někdy je také uivatelsky ovlivnitelné. TeX umisuje box tak, aby referenční bod leel na účaří (lince "notové osnovy"). LaTeX obsahuje uivatelské příkazy dovolující vytvářet větší a sloitější boxy z jednodusších a menších (typicky např. ze znaků) - tvořit boxy (ruleboxy, LR boxy nebo parboxy).
rule boxy: jsou černé obdélníčky a vytvoří se příkazem \rule[zvýšení]{šířka}{výška} - příkaz umístí do textu černý obdélník (kromě případu, kdy je pouit pouze jako parametr příkazu settowidth nebo settoheigth nebo settodepth), zvýšení je y-nová souřadnice dolního okraje boxu a referenčního bodu - kladná hodnota tedy způsobí posunutí boxu nad účaří. Šířka nebo výška můe být i nulová - vznikne tak neviditelná čára - tzv. strut. Čára sice není vidět, ale LaTeX s ní počítá - dá se to pouít např. na zvětšení buňky tabulky, pokud by jinak hranice buňky obklopovaly poloku příliš těsně.
LR boxy: obsahem můe být cokoliv a vytvoří se příkazem \makebox[velikost][umístění obsahu]{obsah} - příkaz umístí do textu box vytvořený ze "zřetězení" poloek obsahu obsah (kromě případu, kdy je pouit pouze jako parametr příkazu settowidth nebo settoheigth nebo settodepth). Pokud je obsah např. normální věta tvořená posloupností písmen a mezer, vytvoří příkaz jeden box v podobě oné věty. Přitom se neprovádí automatické zalamování, ani se nerespektují případné znaky nový řádek. Volitelný parametr velikost dovoluje ovlivnit velikost boxu, pokud není uveden volí se rozměry automaticky co nejmenší dostatečné na to, aby se obsah do nich vešel (defaultní rozměry). Při explicitním určení velikosti se dají vyuít symboly \height, \depth, \totalheight, \width znamenající defaultní rozměry. Parametr umístění obsahu můe být l nebo r nebo s (stretch - rozptýlení obsahu na celou šířku boxu). V případě, e volitelné parametry nepotřebujeme, můeme psát zkráceně \mbox{obsah}.
\framebox je příkaz se stejnými parametry a stejným významem jako příkaz \makebox a na to, e obsah boxu je navíc orámován. Síla orámování je ovlivnitelná registrem \fboxrule (implicitně je 0.4 pt). Registr \fboxsep určuje minimální vzdálennost okrajů boxu od jeho obsahu.
Poznámka: tyto příkazy - \makebox a \framebox se jmenují stejně jako obdobné příkazy z prostředí picture. Parametry se však trochu liší.
parboxy: obsahem můe být cokoliv jako u LR boxu, navíc však funguje automatické zalamování řádků na pravém okraji boxu. Vytvoří se příkazem: \parbox[vertikální umístění][výška][umístění obsahu]{šířka}{obsah} - to samé jako u LR boxu s výjímkou automatického zalamování řádků. Protoe funguje automatické zalamování řádků, musí se předepsat šířka. Parametr výška určuje prostě výšku boxu. Referenční bod je zhruba v jedné polovině boxu. Parametr vertikální umístění (můe být buď t nebo b nebo c - implicitně je c) ovlivňuje vertikální umístění obsahu boxu v jeho rámci a znamená buď to, e refereční bod prvního (t) nebo posledního (b) řádku vnitřních boxů ( myslí se ref. bod boxů, které řádek tvoří ) je ve stejné výšce jako referenční bod celého boxu (parboxu). Pokud je uvedeno c, pak jsou vnitřní boxy rozmístěny tak, aby střed soustavy řádků, které boxy tvoří, byl stejně vysoko jako referenční bod celého boxu. Dále je samozřejmě moné ovlivňovat vertikální umístění pomocí příkazu \vspace uvnitř obsahu boxu.
Dále jsou pro práci s boxy uitečné příkazy:
\savebox{\jménoboxu}[šířka][pozice]{obsah} - vytváří box z obsahu a ukládá ho do \jménoboxu, pozice můe být buď r nebo l nebo s (existuje ještě velmi podobný příkaz stejného jména, který je určen hlavně pro prostředí picture). Jméno boxu musí být před tím deklarováno příkazem:
\newsavebox{\jménoboxu} (např. \newsavebox{\krabicka}).
\usebox{\jménoboxu} - funguje jako \makebox pro posloupnost příkazů vytvořených pomocí příkazu \savebox a odkazovaných pomocí jménoboxu.
\raisebox{posun}[výška][hloubka]{objekt} - posune polohu referenčního bodu objektu (a tím i celý objekt) o posun nad účaří (posun můe být i záporný). Normálně leí referenční bod na účaří - tento příkaz dovoluje toto pravidlo porušit. Je moné zadat ještě výšku a hloubku. LaTeX pak pro rozhodování o rozteči mezi řádky nebude přihlíet ke skutečným rozměrům boxu, ale k těmto fiktivnim - tím můeme dosáhnout překryvu boxů.
Následující příklad je makro umisující na levý okraj libovolný objekt (text, tabulku nebo obrázek) a napravo od něj popis vzdálený o velikost udanou druhým parametrem. Popis je umístěn do takové výšky, aby jeho spodní okraj leel ve výšce spodního okraje objektu.
Předpokládá se, e jsou zavedeny délkové registry \sirkaobj, \zbytek a \ucari - pomocí příkazu \newlength a e je pouit balík czech a graphics.
\newcommand{\objspopisem}[3]{ % definice příkazu
\settowidth{\sirkaobj}{\makebox{#1}} % získání šířky objektu
\noindent\makebox{#1}\hspace*{\fill}
\zbytek=\linewidth
\addtolength{\zbytek}{-\sirkaobj}
\addtolength{\zbytek}{-#2}% výpočet volného místa
\settodepth{\ucari}{\makebox{#1}}
\raisebox{-\ucari}{\parbox[b]{\zbytek}{\footnotesize #3}}
}
Příklad pouití příkazu:
\newsavebox{\obrazek} % vytvoření boxu
\savebox{\obrazek}{ % uloení obrázku do boxu
\scalebox{0.2}{
\includegraphics*[0mm,30mm][220mm,250mm]{obrpr.ps}
}
}
\objspopisem{\usebox{\obrazek}}{2em}{\textbf{Obr. 1.} Tento popis se týká obrázku
nalevo a ilustruje, jak lze snadno vytvořit vhodně umístěný popis napravo.}
P) Prostředí picture
Prostředí picture dovoluje kreslit různé geometrické obrazce přímo prostředky LaTeXu - ten vytvoří obrázky jako seskupení různých speciálních fontů. V deklaraci prostředí se vymezí místo rezervované pro kreslení. Prostředí picture vlastně vytváří box, který se umisuje v okolním textu zrovna tak jako písmeno. V deklaraci je mono zadat i posunutí počátku souřadného systému vzhledem k levému dolnímu rohu boxu pro příkazy kreslení. V tomto prostředí platí jen příkazy, které mají souvislost s kreslením. Ještě před vlastní deklarací prostředí lze specifikovat jednotku. Učiní se tak modifikací délkového registru \unitlength (implicitní hodnota je 1pt).
Deklarace je \begin{picture}(šířka,výška)(x_0,y_0). x_0 a y_0 jsou souřadnice počátku souřadného systému pro kreslení vzhledem k levému dolnímu rohu vzniklého boxu. Druhé kulaté závorky mohou chybět - pak je x_0 i y_0 rovné nule. Monost posunout počátek souřadného systému umoňuje pohodlně hýbat s obrázkem. V prostředí picture lze specifikovat různé objekty. Pokud objekt vychází mimo vyhrazenou plochu, nic se neděje - skutečně se nakreslí (třeba i přes okolní text). To se dá vyuít. Objekty jsou většinou tvořeny čarami. Síla čáry se nastavuje následujícími příkazy:
\thicklines - přepíná sílu následujících čar na 0.8 pt
\thinlines - přepíná sílu následujících čar na 0.4 pt (implicitní hodnota)
\linethickness{tlouška_včetně_jednotky} - nastavuje sílu čar na hodnotu tlouška
Příkaz \linethickness má vliv jen na horizontální nebo vertikální čáry a bezierovy křivky (jiné čáry tedy mohou mít pouze dvě dříve uvedené tloušky). Objekty se umisují příkazem \put(x,y){objekt}, kde x a y jsou souřadnice umístění referenčního bodu. V nejjednodusším případě je objekt nějaký text (co je vlastně box). Objektem je vlastně vdy prostě nějaký box.
Objekty mohou být i boxy vytvořené následujícím způsobem:
\framebox(šířka,výška)[poloha]{objekt} - vytváří box ohraničený plnou čarou a umístí do něj objekt. Poloha objektu jsou dvě písmena vzniklá spojením jednoho z těchto: t,c,b a jednoho z těchto: l,c,r. Implicitní hodnota je cc. Poloha můe být také jedno písmeno - chová se to tak, jakoby druhé bylo automaticky c.
\makebox(šířka,výška)[poloha]{objekt} - jako framebox, ale bez orámování
\dashbox{element}(šířka,výška)[poloha]{objekt} - jako framebox, ale orámování je provedeno čárkovanou čarou; element je číslo, které vyjadřuje délku čárky a mezery v jednotkách \unitlength.
Dále je mono uvnitř prostředí picture pouít příkaz pro úschovu boxu:
\savebox{\jménoboxu}(šířka,výška)[poloha]{obsah} - vytváří box z obsahu a ukládá ho do \jménoboxu, poloha má význam jako u \framebox; \jménoboxu musí být dříve deklarováno pomocí \newsavebox{\jménoboxu}.
Pokud se kulaté závorky vynechají, zvolí se šířka s výška nejmenší moná taková, aby se obsah do boxu celý vešel.
Tento příkaz \savebox má stejné jméno jako velmi podobný příkaz bez specifikace - ten lze také pouít v prostředí picture.
Nicméně i zde popsaný příkaz \savebox se specifikací šířky i výšky lze pouít i mimo prostředí picture! Pro šířku a výšku pak platí jednotky naposledy nastavené v délkovém registru \unitlength. Vlastně lze oba dva příkazy \savebox pouívat ve stejných situacích - to je poněkud nelogické (stačil by jeden).
Příkaz \savebox umoňuje zaznamenat obrázek a pak ho pomocí \put opakovaně pouívat na různých místech.
Příklad: Pokud byl ji dříve v souboru uveden příkaz \newsavebox{\obrazek} (mimochodem lze ho uvést i v prostředí picture) a pokud se v nějakém prostředí picture uvede např. toto:
\savebox{\obrazek}{\begin{picture}(10,10)\put(8,8){\circle{10}}\end{picture}}, pak v tom samém prostředí můeme psát např:
\put(2,4){\usebox{\obrazek}}
Příkaz \savebox umoňuje zaznamenat obrázek a pak ho pomocí \put (viz. dále) opakovaně pouívat na různých místech (třeba i v jiných prostředích picture - pokud se uloí vně prostředí picture). To můe ušetřit spoustu práce.
Pozn. ke zde popsaným příkazům \framebox a \makebox se dá říci to samé jako ke zde popsanému příkazu \savebox, co se týče analogie se stejnojmennými příkazy popsanými v kapitole Boxy (zde uvedené příkazy jsou prostě mírným zobecněním stejnojmenných příkazů z kapitoly Boxy).
Další moné objekty:
\line(x,y){délka nebo průmět_délky_ve_směru_osy_x}, kde x a y jsou celá čísla v intervalu <-6,6>, která nemají společného dělitele většího ne 1. Toto představuje úsečku, kde y/x je tangens úhlu, který svírá úsečka s osou x. Pokud není úsečka svislá, platí pro povinný parametr druhá monost a naopak.
\vector(x,y){délka nebo průmět_délky_ve_směru_osy_x} - kreslení vektoru analogickým způsobem jako u úsečky. Šipka se nakreslí v koncovém bodě. x a y mohou být jen z intervalu <-4,4>.
\circle{pruměr} - kreslení prázdného krouku. Maximalní moný pruměr je asi 14 mm. Příklad pouití: \put(20,20){\circle{10}}
\circle*{pruměr} - kreslení plného krouku. Maximální moný pruměr je asi 6 mm.
\oval(šířka,výška)[část] - kreslí ovál. Parametr část umoňuje kreslit jen polovinu nebo čtvrtinu oválu - můe být t, b, rb, rt, lb nebo lt. V důsledku toho, e se nedá nakreslit krunice větší ne asi 14 mm, kreslí se v případě, šířky i výšky větší ne asi 14 mm čtverec se zaoblenými rohy.
\qbezier[N](krajníbod1_x,krajníbod1_y)(R_x,R_y)(krajníbod2_x,krajníbod2_y) - vytváří kvadratickou bezierovu křivku (parabolu) spojující dva krajní body podle řídícího bodu R (v řídícím bodu se protínají tečny ke křivce procházející krajními body). V případě, e není volitelný parametr zadán, bude čára plná, v případě s volitelným parametrem bude čára tečkovaná, přičem počet teček bude N.
Opakování motivu:
\multiput(x,y)(deltax,deltay){počet}{objekt}
Význam parametru je jasný z následujícího příkladu na vytvoření čtvercové mříky sloené s 5x5 čar s roztečí 10 mm:
\unitlength=1mm
\begin{picture}(40,40)
\thicklines
\multiput(0,0)(10,0){5}{\line(0,1){40}}
\multiput(0,0)(0,10){5}{\line(1,0){40}}
\end{picture}
Orámování objektu:
\frame{objekt} - orámování objektu.
Vkládání obrázku do obrázku:
\put(x,y){\begin{picture}(,).....\end{picture}}
Pozn. Sloené závorky v příkazu \put vlastně představují prostředí.
Ve sloených závorkách příkazu \put můe být samozřejmě i příkaz \input - tak je mono natáhnout obrázek z jiného souboru.
Vkládání obrázku do obrázku se změněným měřítkem obrázku:
\put(x,y){\setlength{\unitlength}{hodnota}\begin{picture}(,).....\end{picture}}
Při pouití balíku graphpap je mono v prostředí picture pouít příkaz:
\graphpaper[spacing](počátek_x,počátek_y)(šířka,výška)
Tento příkaz způsobí vykreslení mříky (s číselnými koordinátami) podobné milimetrovému papíru. Volitelný parametr spacing udává rozteč mezi čarami v jednotkách \unitlength. Implicitní hodnota je 10. Význam ostatních parametrů je jasný. Parametry příkazu \graphpaper mohou být pouze celá čísla. Tento příkaz je uitečný pro lepší kontrolu umisování objektů.
Repertoár funkcí prostředí picture je výrazně rozšířen pokud pouijeme balík epic. Jedná se zejména o následující funkce:
\drawline(x_1,y_1)(x_2,y_2)...(x_n,y_n) - příkaz pro kreslení úsečky nebo lomené plné čáry spojující zadané body (síla čáry není předepsána příkazem \linethickness). Tento příkaz se neuvádí v argumentu příkazu \put. Není třeba se starat o moný sklon - v případě potřeby balík epic sloí úsečku z několika menších s monými sklony (pak je ovšem úsečka trochu lomená).
\dashline{délka_čárky}(x_1,y_1)(x_2,y_2)...(x_n,y_n) - příkaz pro kreslení čárkované úsečky nebo čárkované lomené čáry - analogie s drawline.
> Pozn. zjistil jsem, e pokud se síla čáry pro \dashline specifikuje příkazem \linethickness, pak je \dashline poněkud zmateno.
\dottedline[symbol]{rozteč_teček}(x_1,y_1)(x_2,y_2)...(x_n,y_n) - příkaz pro kreslení tečkované úsečky nebo tečkované lomené čáry - analogie s drawline. Nepovinný parametr symbol umoňuje místo tečky pouít např. kolečko (\dottedline[\circle{2}]....)
Překonat omezení ve velikosti poloměru krunic a sklonů úseček vytvořených příkazem \line (vektorů bohuel ne) v současné době umoňuje např. balík eepic.sty. Balík eepic představuje podstatné rozšíření monosti prostředí picture. Jedná se např. o následující příkazy:
\Thicklines - tento příkaz umoňuje kreslit tlustší šikmé čáry
\arc{pruměr}{úhel1}{úhel2} - příkaz pro kreslení kruhového oblouku; zde úhel1 (startovací) a úhel2 (konečný) jsou uvedeny v radiánech a vedeny od osy x ve směru hodinových ručiček. Výplňový vzor kruhového oblouku (kruhové výseče) se dá nastavit příkazy \shade, \blacken a \whiten
\ellipse{vel_osy_ve_směru_x}{vel_osy_ve_směru_y} - příkaz pro kreslení elipsy
\path(x_1,y_1)(x_2,y_2)...(x_n,y_n) - příkaz pro kreslení úsečky nebo lomené čáry spojující zadané body (síla čáry není předepsána příkazem \linethickness). Tento příkaz se neuvádí v argumentu příkazu \put.
Pozn. Zdá se, e se \drawline z balíku epic chová úplně stejně jako \path z balíku eepic, pokud je \drawline vylepšen uvedením balíku eepic v preambuli (za epic).
Bohuel ani epic ani eepic nemá funkci pro kreslení čárkované krunice. U eepic však můeme takovou krunici vyrobit sloením z několika kruhových oblouků.
Při pouití balíku eepic se šikmé úsečky a krunice kreslí ne jako vhodné spojení speciálních fontů, ale je umoneno příkazy postscriptu vloenými do dvi souboru pomocí příkazu \special. Proto pro konečný výsledek bude asi nutné provést explicitní konverzi dvi na ps.
Sloitější manipulace s objekty (jako např. rotace) je mono uvnitř prostředí picture provádět za pomocí instrukcí balíku graphics.
Pozn. program gnuplot na kreslení grafů umí výstup do formátu příkazů prostředí picture při rozšíření eepic.
21