Obsah
Definice balíčku nebo třídy
Aby náš kód byl modulární a dal se snadno používat v mnoha různých dokumentech, chtěli bychom ho rozdělit do různých souborů. Ty pak stačí přiložit (nemusíme pořád copy-pastovat kód), nebo při vhodném uspořádání (např. máme složku na řešení M&M nebo MO, v ní pak podsložky na jednotlivá čísla/kola a podsložku právě s těmito soubory obsahující pouze definice maker) máme dané soubory pouze jednou.1)
Pokud jen chcete rozdělit jeden dokument do více částí, tak je pro vás \input{nazevsouborubezpripony} (případně má ohackovaná varianta \Input (TODO odkaz)). Obdobně pokud máte jen nějaký „jednorázový“ kód (např. v M&M jsou \inputovaná makra a \usepackage specifická pro témátka).
Naopak pokud máte nějaká makra, která vypadají na to, že by se dala použít v nějakém dalším dokumentu znovu, můžete zvolit více fancy metodu a to balíček nebo třídu. Navíc pak můžete relativně snadno přidat nějakou konfiguraci (např. trochu jiné chování pro jinou velikost papíru nebo papír na šířku).
Pokud si píšete něco pro sebe, nic nezkazíte, pokud použijete balíček. Zvažte však, jestli váš kód nějakým způsobem necharakterizuje dokument (např. mění rozměry papíru a nastavuje záhlaví a zápatí stránek) a není vhodnější (z hlediska sémantiky) zvolit třídu.
Tato stránka předpokládá, že už víte, že [] značí nepovinný parametr (tedy všechny […] na této stránce lze vynechat).
Balíček
TODO
Třída
Třída je v podstatě balíček s tím rozdílem, že dokument může používat pouze jednnu třídu (i když lze třídy rozšiřovat na jiné třídy). Tedy je to vhodné místo, kde definovat/nastavit takové ty věci, které jsou úzce specifické pro konkrétní „typ“ („třídu“) dokumentů. Například nastavit konkrétní rozměry stránky, definovat vzhled záhlaví / zápatí / obsahu / nadpisů / titulní strany / …
Hezkým příkladem (všimněte si, jak každá třída vytváří dokument úplně jiného typu) jsou třídy
article: základní dokument,book(resp.memoirneboreport): desítky stránek dlouhý dokument, případně se sudými stránkami jinak nastavenými než lichými,minimal: třída nastavující úplné minimum věcí, využití výhradně pro testování a tzv. MWE – minimální ukázku kódu, např. pokud se někoho ptáte (pokud vám něco nefunguje nebo nedělá, co byste chtěli) nebo naopak odpovídáte (případně ukazujete, jak něco udělat),beamer: prezentace (jiný styl psaní než ostatní, ale pořád LaTeX)tikzposter: poster=plakát (o dost jiný styl psaní než ostatní, ale pořád LaTeX)
Třída je uložena v souboru s příponou .cls. Začíná \NeedsTeXFormat{LaTeX2e} a \ProvidesClas{nazevtridy}[YYYY/MM/DD Popis třídy]. Potom může rozšiřovat (nejvýše jednu!) jinou třídu pomocí \LoadClass[nastavítka]{nazevjinetridy}[datumMinimalniVerze]. Následně pokračuje kód stejně jako v balíčku.
Jak už víme, třída se použije pomocí \documentclass[nastavítka]{nazevtridy}[datumMinimalniVerze], čímž začíná každý dokument. (Třeba \documentclass{article}.)
Specifika kódu v balíčku nebo třídě
Jiné balíčky se přidají pomocí \RequirePackage[nastavítka]{nazevjinehobalicku}[datumminimalniverze] místo \usepackage.
Lze používat přímo makra s @ v názvu. Například užitečná makra pro autory balíčků2). (V dokumentu musí předcházet \makeatletter a následovat \makeatother.)
Chyby a varování
\PackageError{názevbalíčku}{text chyby}{obsáhlejší informace o chybě}
\PackageWarning{názevbalíčku}{text varování}
\ClassError{názevtřídy}{text chyby}{obsáhlejší informace o chybě}
\ClassWarning{názevtřídy}{text varování}
(Chyby zastaví kompilaci, v Overleafu se zobrazují červeně, varování se pouze vypíší, v Overleafu oranžově.)
Parametry (nastavítka)
TODO
Triviální příklady
TODO
Kde TeX hledá balíčky
TODO (až to budu vědět, tak to sem přidám, protože by to mohlo pomoci proti nutnosti kopírovat soubory).
Prozatím funguje zadat relativní cestu vůči dokumentu. (Například \documentclass{../makra/mo} pro třídu mo.cls ve složce makra v nadsložce; nebo \usepackage{mamakra} pro soubor mamakra.sty ve stejné složce.)
