Cvičení 3

Kurs: Informatická propedeutika II
Téma cvičení: Sazba matematických výrazů.

Matematické režimy. Psaní výrazů a rovnic. Mezery, písma a textový vstup. Prvky výrazů. Indexy, exponenty, zlomky, odmocniny, elipsy. Speciální symboly. Typy symbolů. Speciální písma. Matice a oddělovače. Jednodušší sazba matic. Linky, svorky a akcenty. Umístění symbolů nad sebe.


1.  Ukázkový příklad

První příklad je ukázkový a demonstruje styl psaní matematických výrazů ve formátu LaTeX. Příklad není detailně komentován, jednotlivé výrazy jsou rozebrány v dalších paragrafech. Tvorba matematických vzorců je charakteristická především prací ve speciálním matematickém prostředí. V matematickém prostředí jsou definovány nové příkazy a některé stávající mají jiný význam. Například implicitně u textu nedochází ke kerningu.

Matematická sazba může probíhat v zásadě ve dvou režimech. Buďto uvnitř textového odstavce, tak jsou například sázeny definice a teorémy. Druhým režimem je vysazení výrazů do samostatných paragrafů. Následující příklad ukazuje obojí přístup. Předpokládejme, že uprostřed zdrojového dokumentu byl vložen následující blok

 Nechť $f(x)\!: \left<a,b\right>\rightarrow\mathbb{R}$ je funkce
 spojitá na intervalu $\left<a,b\right>$ a diferencovatelná
 na intervalu $(a,b)$. Pak existuje číslo \mbox{$\xi \in (a,b)$},
 pro nějž platí \[f(\xi)=\frac{f(b)-f(a)}{b-a}.\]

Po přeložení systémem TeX bude v dokumentu na adekvátním místě vložen příslušný matematický text. Pozor! V ukázce je použito makro \mathbb, jenž není standardní součástí LaTeXu. Na začátku dokumentu je nutné deklarovat použití dodatečného stylu pomocí \usepackage{amssymb}.

Obrázek 1. Lagrangeova věta.

V předchozí ukázce je zřetelně vidět rozdíl mezi oběma matematickými režimy. V úvodu byly matematické výrazy vkládány přímo do textového dokumentu. Výsledek tvrzení byl pro přehlednost vysazen. Zlomek by bylo jistě možné umístit do odstavce, ale výrazně by se tím snížila jeho čitelnost. Na ukázce je rovněž vidět způsob změny písma v matematickém režimu, psaní symbolů, řeckých písmen, zlomků a závorek.

Úkol 1. Vyzkoušejte ukázkový příklad.

2.  Jednoduché výrazy uvnitř odstavce

Matematickou sazbu uvnitř odstavce lze zapisovat do prostředí math. Jednodušším způsobem je používat dvojici symbolů \(, \) nebo na začátku a na konci výrazu napsat symbol $. Třetí možnost je zdaleka nejčastěji používaná.

V matematickém režimu jsou všechny mezery v textu ignorovány. Rovněž u jednotlivých znaků nedochází k podřezávání -- kerningu. Jednotlivé alfanumerické znaky mají význam čísel a symbolů implicitně sázených matematickou italikou. Mezi nejdůležitější příkazy matematických režimů patří sazba exponentů a indexů pomocí znaků ^_. Druhý argument značí exponent či index. Jeden znak může mít zároveň exponent i index. Pokud je exponent nebo index složen z víc jak jednoho příkazu, musí být explicitně uzávorkován.

Úkol 2. Vytvořte následující jednoduché texty.

Obrázek 2. Pythagoras a derivace polynomu.

Pro označování derivací se v systému LaTeX používá znak apostrof. Vícenásobné derivace lze značit několika apostrofy za sebou. V příkladu byla použita elipsa -- část výrazu byla vytečkována. Jelikož se tečky nacházejí mezí operacemi, jsou v jejich střední úrovni. K vytvoření teček ve střední úrovni slouží makro \cdots. Makro \dots vytvoří tečky na úrovni řádku a používá se pro výčtové elipsy.

Samostatnou kapitolou je používání fontů v matematickém režimu. Kromě matematické italiky je často používáno kaligrafické písmo, ztučněná matematická italika, tučné písmo a písmo blackboard bold. Poslední z nich se používá zejména pro označování číselných oborů. V systému LaTeX2e lze písma přepínat pomocí maker \mathbf, \mathcal\mathbb. Všechna makra berou jeden argument, který je vysázen příslušným písmem.

Úkol 3. Pokuste se vytvořit následující text. Při sazbě dbejte na správné vytvoření ostrých závorek. Například symbol < má v TeXu význam „menší než“. Nelze jej použít jako závorku, protože je příliš ostrý. Závorky musejí být zapisovány pomocí maker \left\right. Po zapsání příkladu zkuste měnit tvar řeckých písmen. Místo maker \phi\epsilon použijte \varphi\varepsilon. Všimněte si jejich změny tvaru.

Obrázek 3. Fonty v matematickém režimu.

Text mezi symboly v předchozím odstavci lze v krajní nouzi vložit i přímo do matematického prostředí. V odstavcovém režimu to není zvykem, ale ve vysazených vzorcích nic jiného nezbude. Makrem \textrm je zapnut textový font zachovávající mezery a podřezávání. Stejného efektu lze dosáhnout makrem \text z balíku amsmath.

3.  Vysazené výrazy, oddělovače a velké závorky

Vysazené výrazy se používají ve dvou případech. Jednak slouží ke zvýraznění podstatných pasáží textu, v některých případech je to jediné přehledné řešení zápisu složitých výrazů. Ve vysazených výrazech se často používají velké symboly pro sumy, produkty, integrál a podobně. Zároveň se objevuje přirozený požadavek dělit matematický text do více řádků. Tato problematika je procvičena v paragrafu o sazbě rovnic.

Pro sazbu jednoduchých vysazených výrazů se používá prostředí displaymath. Přepnutí do prostředí lze opět zjednodušit zapsáním výrazu mezi dva symboly \[, \]. Nejjednodušší je uzavřít výraz zleva i zprava dvojicí $$. Velké symboly mohou mít definovány intervaly. Intervaly se zapisují stejně jako exponent a index. Jejich umístění je ve vysazených výrazech jiné než u symbolů uvedených uvnitř odstavce.

Úkol 4. Pokuste se vytvořit následující výrazy. Symbol pro sumu byl vytvořen makrem \sum, symbol pro nekonečno je vytvořen makrem \infty. Limita a funkce sinus jsou vytvořeny makry \lim\sin.

Obrázek 4. Výrazy ve vysazeném prostředí.

Nyní proveďte sazbu stejného výrazu v odstavcovém matematickém režimu. Porovnejte výsledky. Mezera mezi oběma vzorci byla vytvořena speciálním makrem \quad. Větší mezeru lze vytvořit makrem \qquad. V matematickém režimu se ještě často používají i mezery \ , \,\! pro negativní malou mezeru. Mezera \quad má velikost jednoho čtverčíku, to jest velikosti stupně nastaveného písma.

Úkol 5. Vysázejte následující výrazy.

Obrázek 5. Složitější vysazené výrazy.

Mezi velké symboly patří rovněž symboly pro integrál a křivkový integrál. Při jejich použití je dobré upozornit na několik věcí. Integrál lze vytvořit makrem \int. Při zápisu několika znaků integrálu vedle sebe je dobré zmenšit jejich vzdálenost několika, typicky třemi, negativními mezerami. V opačném případě je výraz „roztažený“. Horní a dolní mez integrálu je implicitně sázena na posici exponentu a indexu, tedy nikoliv jako u sumy či produktu. Pokud si přejeme vysadit meze přesně nad a pod symbol, musíme za makro \int uvést i makro \limits. Viz následující obrázek.

Obrázek 6. Integrály.

V prvním případě bylo použito makro \limits, v ostatních dvou nikoliv. Ve třetím případě byly použity tři negativní mezery na zmenšení velikosti mezery mezi oběma symboly. Poznamenejme, že k makru \limits existuje duální makro \nolimits. Obě makra lze použít nejen u integrálů, ale i u všech velkých symbolů.

Speciálním symbolem je odmocnina. Je často používána v odstavcovém i ve vysazeném prostředí. Symbol odmocniny se automaticky zvětšuje podle potřeby. Makro \sqrt bere jako argument výraz, jenž bude pod odmocninou. Nepovinným argumentem makra je základ odmocniny a píše se tradičně do hranatých závorek. Základ odmocniny je zpravidla sázen velikostí indexu. To může zejména v odstavcovém režimu vést až k nečitelnosti. Tento nedostatek lze napravit zvětšením velikost argumentu například makrem \textstyle. Pokud chceme vysázet pouze symbol odmocniny, použijeme makro \surd.

Úkol 6. Vytvořte následující výrazy.

Obrázek 7. Odmocniny.

Nejen při psaní výrazů ve vysazeném prostředí, je potřeba používat větší závorky. Důvodem může být rovněž vnoření několika závorek do sebe. Závorky by měly být dostatečně velké, aby umožňovaly snadno číst logickou strukturu výrazu. Velké závorky lze psát několika způsoby. Jedním z nich je automatické určení velikosti makry \left, \right následovaných symbolem závorky. Makra jsou vždy párová. Pokud je potřeba jednu ze závorek potlačit, lze k tomu použít tečku zapsanou těsně za makrem. Další možností je použití maker \bigl, \bigr, \biggl, \biggr a variant začínajících velkými písmeny.

Úkol 7. Vysázejte následující výraz.

Obrázek 8. Velké závorky.

Velké závorky bývají často používány pro vytváření definic obsahujících alternativní větve. Následující příklad ukazuje právě takovou definici Fibonacci čísla. Toto je právě případ, kdy je nutné použít levou složenou závorku \left\{ a pravá závorka je vynechána, to jest je vytvořena prázdná závorka pomocí \right.. Jednotlivé alternativní výrazy jsou vytvořeny pomocí prostředí array. Viz kapitolu o sazbě matic.

Obrázek 9. Fibonacciho čísla.

4.  Akcenty a speciální umísťování výrazů

Systém TeX obsahuje mnoho speciálních matematických akcentů. Nejčastěji používané jsou čárky, vlnky, stříšky a šipky, které lze umístit nad jednotlivé symboly. Kromě akcentů určených pro samostatné symboly existují i jejich velké varianty. Akcentovat lze tedy i skupiny symbolů a znaků. Akcent se automaticky natáhne na požadovanou velikost. Nutné je ovšem podotknout, že míra natažení by neměla překročit únosnou mez. Symboly by potom nevypadaly hezky a snížila by se celková čitelnost textu.

Kromě akcentů je často používáno nadtržení a podtržení. Nadtržené symboly se používají například pro vyjádření komplementů. Nadtržení lze vytvořit makrem overline, podtržení makrem underline. Nejčastěji používané akcenty se vytvářejí makry \tilde, \hat\vec. Velké akcenty se vytváření makry \widetilde, \widehat\overrightarrow.

Úkol 8. Vytvořte následující výrazy.

Obrázek 10. Akcentované znaky.

Další skupinu tvoří makra umožňující speciální umísťování výrazů. Jedno makro již bylo v předchozích příkladech použito. Šlo o makro \frac vytvářející zlomek. Dva výrazy jsou ve zlomku umístěny nad sebe a odděleny zlomkovou čarou. Stejného efektu, ale bez zlomkové čáry, lze dosáhnout použitím makra \atop. Makro se používá ve tvaru horní výraz \atop dolní výraz, tedy nikoliv jako \frac. Pro sázení kombinačních čísel se používá makro \choose. Použití makra má stejný tvar jako v případě makra \atop.

Makro \stackrel se používá k umístění zmenšeného výrazu nad jiný výraz. Prakticky jej lze použít například při vytváření definičního rovnítka. Prvním argumentem makra je horní výraz, druhým makrem je dolní výraz. Horní výraz je zmenšen na indexovou velikost.

Třetí skupinou ovlivňující vzájemnou polohu dvou výrazů jsou makra underbraceoverbrace. Makru je předán výraz, který je zdola nebo shora ohraničen svorkou. Pod nebo nad svorkou může být uveden nápis. Ten se definuje pomocí indexu a exponentu podobně jako například meze u integrálu.

Úkol 9. Vyzkoušejte vytvořit následující výrazy.

Obrázek 11. Vzájemná poloha výrazů.

5.  Sazba rovnic

Až doposud byly všechny výrazy sázeny jako samostatné jednořádkové výrazy. Při sazbě delších výrazů nebo rovnic je potřeba umožnit přehledně sázet výrazy na víc řádků. Přirozeným požadavkem plynoucím z dělení výrazů je i možnost jejich systematického číslování. Pro sazbu rovnic slouží prostředí eqnarrayeqnarray*. První verse makra automaticky čísluje každý řádek, druhé makro řádky nečísluje vůbec. Vzdálenost mezi řádky matematické sazby je uložena v délkovém registru \jot.

Každý řádek zapsaný v prostředí eqnarray se dělí na tři části, levou, střední a pravou. Levá část je zarovnávána vpravo, střední část je centrována a pravá část je zarovnána vlevo. Jednotlivé části se oddělují znakem & jako u tabulek. Řádky jsou ukončeny znakem \\. LaTeX automaticky neděli řádky, o jejich dělení se musí starat autor textu. To je vzhledem k typografické náročnosti matematické sazby pochopitelné. Do prostřední části se dávají typicky rovnítka a podobně. Viz příklad použití prostředí eqnarray.

Obrázek 12. Zarovnané výrazy.

Z příkladu je jasně vidět styl zarovnání řádků. Jelikož bylo použito prostředí eqnarray, byly všechny řádky automaticky očíslovány. To ale není vždy žádoucí. Číslování řádku lze potlačit makrem \nonumber. Makro se používá rovněž v případě, kdy je jeden výraz rozdělen do více řádků, pak má smysl přidělit mu číslo pouze na jeho začátku.

Při dělení vztahů do více řádků se lze držet několika strategií. První možností je umístění rovnítka na prvním řádku do střední části. Každý další řádek je zahájen dvojicí znaků &&. Další řádky jsou tedy umístěny pouze do pravé části výrazu, což způsobuje celkové zarovnání. Následující příklad ukazuje takový způsob rozdělení.

Obrázek 13. První typ rozdělení výrazu.

Na příkladu si všimněte dvojího číslování. To vypadá silně nepřirozeně. Druhý způsob rozdělení výrazu nedefinuje rovnítko ve střední části, ale výraz na prvním řádku uzavírá do makra \lefteqn. Na začátku dalších řádků je uvedena dvojice symbolů && následovaná vhodnou mezerou. Viz příklad.

Obrázek 14. Druhý typ rozdělení výrazu.

V předchozím příkladu již bylo jedno číslo odstraněno makrem \nonumber. Způsob dělení výrazů pomocí makra eqnarray má své slabiny. Ty se projevují zejména při vytváření dlouhých a komplikovaných výrazů. Mnohem silnějším aparátem pro sazbu velkých výrazů disponuje styl amsmath. Jednoduchým prostředím pro vytváření větších výrazů je multline. Implicitně je první řádek sázen úplně vlevo a poslední úplně vpravo. Mezi ostatními řádky je plynulý přechod. Posici výrazu v rámci řádku lze měnit makry \shoveright\shoveleft. Viz zdrojový kód.

 \begin{multline}
 \sin x = x -\frac{x^{3}}{3!}
      +\frac{x^{5}}{5!}-{} \\
  -\frac{x^{7}}{7!}+{}\cdots
 \end{multline}

Prostředí split umožňuje zlomit dlouhý výraz do několika řádků. Nepoužívá se ale samostatně a ani neprovádí číslování rovnic. Používá se uprostřed jiných matematických prostředí. Znakem & je možné vyznačit posici navázání dalšího řádku. Následující příklad ukazuje použití dělení výrazu uprostřed prostředí displaymath.

 \begin{displaymath}
   \begin{split}
     \sin x &= x -\frac{x^{3}}{3!} +\frac{x^{5}}{5!}-{} \\
       & -\frac{x^{7}}{7!}+{}\cdots
   \end{split}
 \end{displaymath}

Speciální prostředí gather je určeno pro sazbu výrazů, které nemají vzájemnou hlubší souvislost. Každý řádek je samostatně centrovaný. Balík amsmath obsahuje ještě další makra umožňující jednoduše určovat polohu výrazů. V prostředí align je možné vytvářet rovnice zarovnané do několika sloupců. Například kód

 \begin{align*}
   \sin x &= x -\frac{x^{3}}{3!}
   +\frac{x^{5}}{5!}-{} &
   \cos x &= 1 -\frac{x^{2}}{2!} + \\
  & -\frac{x^{7}}{7!}+{}\cdots &
  & +\frac{x^{4}}{4!} -\frac{x^{6}}{6!}+{}\cdots
 \end{align*}

vyprodukuje výsledný tvar

Obrázek 15. Zarovnání dvou výrazů.

Úkol 10. Vyzkoušejte předchozí příklady.

6.  Sazba matic

Sazba matic je ve formátu LaTeX analogická k sazbě tabulek. K sazbě slouží prostředí array, jenž zarovnává řádky a sloupce matice podobně jako tabulka. V podstatě se array liší od tabulky jen v tom, že se používá uvnitř matematického prostředí a jednotlivé buňky jsou automaticky sázeny v matematickém režimu. Sloupce jsou oddělovány znakem &, řádky jsou ukončovány znakem \\. Matice se zpravidla obklopují kulatými, nebo hranatými závorkami. Ty se vytvářejí již používanými makry \left\right.

V některých případech, například při psaní obecných textů, je vhodné část matice „vytečkovat“. K tomu lze použít makra \ldots, \vdots\ddots. Makro \ldots se používá k vytečkování řádku, makro \vdots vytváří vertikální tečky vhodné pro vytečkování sloupců a nakonec \ddots se používá k diagonálnímu tečkování, například v pravém dolním rohu.

Úkol 11. Vysázejte následující matice.

Obrázek 16. Jednoduché matice.

Při použití prostředí array lze použít nepovinný argument, určující místo navázání matice. Argument může nabývat hodnot t pro připojení horním okrajem a b pro připojení dolním okrajem. Implicitně je matice připojena svým středem.

Úkol 12. Vytvořte následující výraz.

Obrázek 17. Napojování matic.

Styl amsmath obsahuje množství pomocných prostředí pro sazbu matic. Mezi nejpoužívanější patří matrix. V prostředí matrix lze jednoduše vytvářet matice. Není potřeba předem deklarovat počet sloupců, ani jejich zarovnávání. Jednotlivé sloupce jsou oddělovány symbolem &, řádky jsou ukončovány znakem \\. Podle počtu použitých sloupců je automaticky zvolen rozměr matice. V prostředí matrix nedochází k vytváření závorek kolem matice. K tomuto účelu slouží prostředí pmatrix, bmatrix, vmatrixVmatrix. Rozdíl v jednotlivých prostředích je vidět na následujícím obrázku.

Obrázek 18. Tvary matic.

Uprostřed předchozích prostředí lze efektivně vytečkovávat celé řádky pomocí makra \hdotsfor. Makro bere jako argument počet sloupců, které budou vytečkovány. Tečkování pomocí \hdotsfor. je možno kombinovat například s makry \ldots, \vdots\ddots. Následující obrázek ukazuje použití tečkování řádků tabulky.

Obrázek 19. Matice s vytečkovaným řádkem.

Posledním užitečným prostředím je smallmatrix. V tomto prostředí se vytvářejí matice podobně jako v prostředí matrix. Výsledná matice je ale menší a je vhodné použít ji v odstavcovém matematickém režimu.