diff --git a/unob-thesis/0.1.0/LICENSE b/unob-thesis/0.1.0/LICENSE
new file mode 100644
index 0000000000..e60fc1aa52
--- /dev/null
+++ b/unob-thesis/0.1.0/LICENSE
@@ -0,0 +1,7 @@
+Copyright (c) 2025 Univerzita obrany
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/unob-thesis/0.1.0/README.md b/unob-thesis/0.1.0/README.md
new file mode 100644
index 0000000000..c40b62aa66
--- /dev/null
+++ b/unob-thesis/0.1.0/README.md
@@ -0,0 +1,152 @@
+# Šablona Typst pro závěrečné práce (Univerzita obrany)
+
+Tato šablona závěrečné práce je navržena speciálně pro studenty Univerzity obrany (UO) a poskytuje komplexní, předformátovanou strukturu, která zajišťuje, že jejich závěrečné akademické práce přísně splňují oficiální metodické pokyny instituce, požadavky na strukturu a vizuální identitu. Zahrnuje všechny nezbytné části (jako je titulní list, abstrakt a bibliografie), aby zjednodušila proces psaní a zaručila dodržení standardů UO. Jelikož je tato šablona přizpůsobena výhradně tomuto účelu, je vysoce specializovaná, nabízí záměrně omezené možnosti přizpůsobení a není vhodná pro studenty jiných univerzit.
+
+# Thesis template for University of Defence (English Summary)
+
+This thesis template is specifically designed for students at the University of Defence (Univerzita obrany), providing a comprehensive, pre-formatted structure to ensure their final academic papers strictly comply with the institution's official formatting guidelines, structural requirements, and visual identity. As this template is tailored exclusively for this purpose, it is highly specialized, offers intentionally limited customizability, and is not suitable for students at other universities.
+
+---
+
+Tento dokument slouží jako komplexní manuál a průvodce pro používání šablony `unob-thesis` v prostředí Typst.
+
+## Část I: Jak šablonu používat
+
+Existují tři možnosti, jak s šablonou pracovat:
+
+- **Offline** – instalace programu Typst a VSCode s rozšířením *Tinymist*.
+- **Online (přes web Typst)** – Jednoduchý přístup odkudkoliv, není nutná instalace.
+- **Online (UNOB)** – plánované řešení integrované do univerzitního prostředí (v současné době nefunkční).
+
+### Offline varianta (Typst a VSCode + Tinymist)
+
+Tento způsob je doporučený, pokud chcete mít vše nainstalované a uložené přímo na svém počítači.
+
+1. **Instalace Typst**
+ - Postupujte dle svého operačního systému. Doporučení: Windows přes `winget`, macOS přes `homebrew`, linux dle distribuce.
+ - [Stáhnout zde](https://typst.app/open-source/)
+
+2. **Instalace VSCode**
+ - **Windows (s právy správce):** [Stáhnout zde](https://code.visualstudio.com/download)
+ - **Windows (bez práv správce):** [Microsoft Store](https://apps.microsoft.com/detail/xp9khm4bk9fz7q?hl=cs-CZ&gl=CZ)
+ - **Linux & macOS:** [Stáhnout zde](https://code.visualstudio.com/download) (zvolte variantu pro vaši distribuci nebo procesor).
+
+3. **Nastavení češtiny ve VSCode**
+ - Otevřete paletu příkazů (`Ctrl+Shift+P` nebo `Cmd+Shift+P`).
+ - Napište `Configure Display Language` a vyberte *Čeština*.
+ - Restartujte program.
+
+4. **Instalace rozšíření Tinymist Typst**
+ - V levém menu klikněte na ikonu rozšíření (puzzle).
+ - Vyhledejte `Tinymist Typst` a klikněte na *Instalovat*.
+
+5. **Instalace fontů TeXGyre**
+ - Ve složce `fonts` šablony najdete potřebné soubory:
+ - *TeX Gyre Termes Math* (pro matematiku)
+ - *TeX Gyre Termes* (pro text)
+ - *TeX Gyre Cursor* (pro kód)
+ - Nainstalujte je dle systému (Windows: pravé tlačítko -> Instalovat font; macOS: přetáhnout do Knihy písem, Linux: dle distribuce).
+ - Restartujte VSCode pro aktivaci fontu v programu.
+
+6. **Jak otevřít a spustit šablonu**
+ - Otevřete ve VSCode složku, kde chcete mít projekt.
+ - Otevřete nový terminál (`Terminál` > `Nový terminál`).
+ - Vložte příkaz: `typst init @preview/unob-thesis:0.1.0`. Vždy zkontrolujte [aktuální verzi šablony](https://typst.app/universe/package/unob-thesis).
+ - Otevřete nově vytvořenou složku a v ní podsložku `template`.
+ - Otevřete soubor `thesis.typ`.
+ - V horní liště zvolte *Typst Preview: Náhled otevřeného souboru* pro zobrazení náhledu.
+ - Každé uložení (`Ctrl+S` / `Cmd+S`) se okamžitě projeví v náhledu.
+
+### Online (web Typst)
+
+1. **Registrace a přihlášení**
+ - Registrace: [typst.app/signup](https://typst.app/signup)
+ - Přihlášení: [typst.app/signin](https://typst.app/signin)
+
+2. **Jak nahrát šablonu**
+ - Na hlavní stránce zvolte *Start from template* a vyhledejte šablonu `unob-thesis`.
+ - Pojmenujte projekt a můžete začít psát.
+ - Dokument se automaticky kompiluje a ukládá.
+
+---
+
+## Část II: Dokumentace šablony
+
+Tato část obsahuje kompletní popis všech parametrů a funkcí, které můžete v šabloně využít.
+
+### Hlavní funkce `template()`
+
+Základní funkce pro sazbu celé práce. Vkládá se do `#show` pravidla ve formátu `#show: template.with(parametry)`
+
+#### `university`
+- **Popis:** Informace o univerzitě a studijním programu.
+- **Parametry:**
+ - `faculty` (řetězec): Zkratka fakulty. Možnosti: `"fvl"`, `"fvt"`, `"vlf"`, `"uo"`.
+ - `programme` (řetězec): Název studijního programu.
+ - `specialisation` (řetězec): Název studijní specializace (nepovinné).
+
+#### `thesis`
+- **Popis:** Informace o závěrečné práci.
+- **Parametry:**
+ - `type` (řetězec): Druh práce. Možnosti: `"bc"`, `"ing"`, `"phd"`, `"teze"`.
+ - `title` (řetězec): Plný název práce.
+
+#### `author`, `supervisor`, `first_advisor`, `second_advisor`
+- **Popis:** Informace o osobách. Struktura je pro všechny stejná.
+- **Parametry:**
+ - `prefix` (řetězec): Hodnost a tituly před jménem.
+ - `name` (řetězec): Křestní jméno.
+ - `surname` (řetězec): Příjmení.
+ - `suffix` (řetězec | `none`): Tituly za jménem.
+ - `sex` (řetězec): Pohlaví (`"M"` nebo `"F"`) pro správné skloňování.
+
+#### `declaration`
+- **Popis:** Nastavení čestného prohlášení.
+- **Parametry:**
+ - `declaration` (boolean): Zobrazit čestné prohlášení (`true`/`false`).
+ - `ai_used` (boolean): Uvést použití nástrojů AI (`true`/`false`).
+
+#### `assignment`
+- **Popis:** Vložení naskenovaného zadání práce. Očekává soubory `/front.png` a `/back.png` ve vaší složce.
+- **Parametry:**
+ - `front` (boolean): Zobrazit přední stranu (`true`/`false`).
+ - `back` (boolean): Zobrazit zadní stranu (`true`/`false`).
+
+#### `acknowledgement`
+- **Popis:** Vložení poděkování.
+- **Hodnota:** Obsah poděkování `[...obsah...]` nebo `false` pro skrytí.
+
+#### `outlines`
+- **Popis:** Řízení generování obsahů a seznamů.
+- **Parametry:**
+ - `headings` (boolean): Obsah.
+ - `acronyms` (boolean): Seznam zkratek.
+ - `figures` (boolean): Seznam obrázků.
+ - `tables` (boolean): Seznam tabulek.
+ - `equations` (boolean): Seznam rovnic.
+ - `listings` (boolean): Seznam výpisů kódu.
+
+#### `acronyms`
+- **Popis:** Slovník zkratek pro automatický seznam.
+- **Hodnota:** Slovník ve formátu `"ZKRATKA": ("Vysvětlení")` nebo `false`.
+
+#### `abstract` a `keywords`
+- **Popis:** Abstrakty a klíčová slova.
+- **Parametry:**
+ - `czech` (obsah/řetězec): Česká verze.
+ - `english` (obsah/řetězec): Anglická verze.
+
+#### `introduction`
+- **Popis:** Obsah úvodu práce.
+- **Hodnota:** Vlastní obsah úvodu ve formátu `[...]`.
+
+#### `guide` a `docs`
+- **Popis:** Zobrazení nápovědy.
+- **Parametry:**
+ - `guide` (boolean): Zobrazí stručnou příručku.
+ - `docs` (boolean): Zobrazí tuto rozšířenou dokumentaci.
+
+### Funkce `annex()` pro přílohy
+
+- **Popis:** Funkce pro sazbu a správné číslování příloh.
+- **Použití:** `#show: annex` a poté pište obsah příloh, kde každá hlavní kapitola (`=`) je nová příloha.
diff --git a/unob-thesis/0.1.0/resources/logoFVL.svg b/unob-thesis/0.1.0/resources/logoFVL.svg
new file mode 100644
index 0000000000..fb083c7daf
--- /dev/null
+++ b/unob-thesis/0.1.0/resources/logoFVL.svg
@@ -0,0 +1,73 @@
+
+
+
diff --git a/unob-thesis/0.1.0/resources/logoFVT.svg b/unob-thesis/0.1.0/resources/logoFVT.svg
new file mode 100644
index 0000000000..a870e709ec
--- /dev/null
+++ b/unob-thesis/0.1.0/resources/logoFVT.svg
@@ -0,0 +1,1098 @@
+
diff --git a/unob-thesis/0.1.0/resources/logoUO.svg b/unob-thesis/0.1.0/resources/logoUO.svg
new file mode 100644
index 0000000000..c1f689cd47
--- /dev/null
+++ b/unob-thesis/0.1.0/resources/logoUO.svg
@@ -0,0 +1,116 @@
+
+
\ No newline at end of file
diff --git a/unob-thesis/0.1.0/resources/logoVLF.svg b/unob-thesis/0.1.0/resources/logoVLF.svg
new file mode 100644
index 0000000000..edb94d1959
--- /dev/null
+++ b/unob-thesis/0.1.0/resources/logoVLF.svg
@@ -0,0 +1,5904 @@
+
diff --git a/unob-thesis/0.1.0/src/csl/harvard.csl b/unob-thesis/0.1.0/src/csl/harvard.csl
new file mode 100644
index 0000000000..91f84fe6d3
--- /dev/null
+++ b/unob-thesis/0.1.0/src/csl/harvard.csl
@@ -0,0 +1,691 @@
+
+
diff --git a/unob-thesis/0.1.0/src/csl/numeric.csl b/unob-thesis/0.1.0/src/csl/numeric.csl
new file mode 100644
index 0000000000..5ebb8561a3
--- /dev/null
+++ b/unob-thesis/0.1.0/src/csl/numeric.csl
@@ -0,0 +1,662 @@
+
+
diff --git a/unob-thesis/0.1.0/src/docs.typ b/unob-thesis/0.1.0/src/docs.typ
new file mode 100644
index 0000000000..71de65bb5b
--- /dev/null
+++ b/unob-thesis/0.1.0/src/docs.typ
@@ -0,0 +1,887 @@
+#import "@preview/unob-thesis:0.1.0": *
+#set text(lang: "cs")
+#context if text.lang != "en" [
+ // =============================
+ // Globální nastavení dokumentu
+ // =============================
+ #set page(margin: 5%)
+ #show raw: set text(
+ font: "TeX Gyre Cursor",
+ fallback: true,
+ weight: "extrabold",
+ )
+ #show link: it => text(fill: blue, it)
+
+ // =============================
+ // Dokumentace šablon
+ // =============================
+ = Jak šablonu používat
+
+ Existují tři možnosti, jak s šablonou pracovat:
+ + *Offline* – instalace programu Typst a VSCode s rozšířením *Tinymist*
+ + *Online (přes web Typst)* – Jednoduchý přístup odkudkoliv, není nutná instalace
+ + *Online (UNOB)* – plánované řešení integrované do univerzitního prostředí (V současné době nefunkční)
+
+ == Offline varianta (Typst a VSCode + Tinymist)
+ Tento způsob doporučujeme, pokud chcete mít vše nainstalované a uložené přímo na svém počítači.
+ Potřebujete k tomu program *Typst* a *Visual Studio Code (VSCode)* s rozšířením *Tinymist Typst*.
+
+ #set enum(numbering: "(1.1)", body-indent: 1em, full: true)
+ + *Instalace Typst*
+ + Dle operačního systému. Doporučení: Windows přes winget, macOS přes homebrew, linux dle distribuce. → #link("https://typst.app/open-source/")[stáhnout zde]
+ + *Instalace VSCode*
+ + Windows (pokud máte práva správce) → #link("https://code.visualstudio.com/download")[stáhnout zde]
+ + Windows (bez práv správce, vhodné pro služební přístroje) → #link("https://apps.microsoft.com/detail/xp9khm4bk9fz7q?hl=cs-CZ&gl=CZ")[Microsoft Store]
+ + Linux → postupujte podle své distribuce → #link("https://code.visualstudio.com/download")[stáhnout zde]
+ + macOS → zvolte variantu podle procesoru (`Intel chip` nebo `Apple Silicon`) → #link("https://code.visualstudio.com/download")[stáhnout zde]
+
+ + *Nastavení češtiny ve VSCode*
+ + Zkratka `Ctrl+Shift+P` (Windows/Linux) nebo `Cmd+Shift+P` (Mac)
+ + Zadejte `Configure Display Language` a vyberte *Čeština*
+ + Program restartujte
+
+ + *Instalace rozšíření Tinymist Typst*
+ + V levém menu klikněte na ikonu „puzzle“ (*Rozšíření*)
+ + Do vyhledávání napište `Tinymist Typst` a klikněte na *Instalovat*
+
+ + *Instalace fontu TeXGyre (Moderní Times New Roman pro všechny systémy)*
+ + Ve složce fonts se nachází soubory s třemi fonty:
+ + *TeX Gyre Termes Math* pro sazbu matematiky.
+ + *TeX Gyre Termes* pro sazbu textu.
+ + *TeX Gyre Cursor* pro sazbu kódu.
+ + Soubory nainstalujte dle operačního systému (Windows – Pravé tlačítko a nainstalovat, Linux – dle distribuce, MacOS – Přetáhnout do Kniha písem)
+ + Fonty se projeví až po restartování *VSCode*.
+
+ + *Jak otevřít a spustit šablonu*
+ + Po zapnutí programu *VSCode* otevřete požadovanou složku (např. Dokumenty).
+ + V záložce Terminál zvolte nový terminál, který otevře příkazový řádek.
+ + Zde vložte příkaz `typst init @preview/unob-thesis-template:0.1.0`. (Významem "_Programe typst inicializuj šablonu se jménem unob-thesis-template ve verzi 0.1.0 z balíčku preview_". Vždy zkontrolujte aktuální verzi ze stránek šablony #link("https://typst.app/universe/package/unob-thesis-template")[unob-thesis-template])
+ + Po spuštění automaticky vytvoří složku unob-thesis-template, která bude obsahovat všechny soubory šablony, vč zdroje.
+ + Otevřete složku a v ní následně složku `template`, zbytek jsou zdrojové soubory, které v online verzi nejsou vidět a jsou pro běžného uživatele nepodstatné.
+ + Otevřete `thesis.typ` v programu *VSCode*.
+ + V horní liště zvolte *Typst Preview: Náhled otevřeného souboru* → zobrazí se náhled dokumentu
+ + Každá změna se ihned projeví v dokumentu, je důležité nezapomenout dokument ukládat. (`Ctrl+S` / `Cmd+S`) ihned promítne do náhledu
+ === Online (web Typst)
+ Pokud nechcete nic instalovat, můžete využít webovou aplikaci *Typst*.
+
+ + *Registrace a přihlášení*
+ + Registrace: #link("https://typst.app/signup")[Typst.app/signup]
+ + Přihlášení: #link("https://typst.app/signin")[Typst.app/signin]
+
+ + *Jak nahrát šablonu*
+ + Na hlavní stránce zvolte *Start from template* a pojmenujte projekt dle potřeby.
+ + Zvolte soubor `thesis.typ` a pokud tomu tak není, tak jej aktivujte ikonou oka v pravé části.
+ + Dokument se automaticky kompiluje a ukládá.
+
+ === Online (UNOB – plánované)
+ V budoucnu se plánuje spustit šablonu přímo přes univerzitní portál.
+ //Předpokládaný postup:
+ //+ Přihlášení do *Portálu osoby*
+ //+ Kliknutí na službu *Typst*
+ //+ Práce se šablonou stejná jako u webové verze
+
+ #pagebreak(weak: true)
+
+ // =============================
+ // Dokumentace závěrečné práce
+ // =============================
+ = DOKUMENTACE
+
+ Tento modul obsahuje popisy a nastavení šablony pro psaní bakalářských, diplomových i disertačních prací.
+
+ #set text(lang: "cs")
+ #import "@preview/tidy:0.4.3"
+
+ #let thesis-docs = tidy.parse-module(read("../src/lib.typ"))
+ #tidy.show-module(thesis-docs, style: tidy.styles.default)
+]
+
+// template
+#let cheatsheet(
+ title: [],
+ authors: (),
+ write-title: false,
+ font-size: 5.5pt,
+ line-skip: 5.5pt,
+ x-margin: 30pt,
+ y-margin: 0pt,
+ num-columns: 5,
+ column-gutter: 4pt,
+ numbered-units: false,
+ body,
+) = {
+ let color-index = (
+ rgb("#239dad")
+ )
+
+ set page(
+ paper: "a4",
+ flipped: true,
+ margin: (x: x-margin, y: y-margin),
+ )
+
+ set text(size: font-size)
+
+ set heading(numbering: "1.1")
+
+ show heading: it => {
+ let index = counter(heading).at(it.location()).first()
+ let color = color-index.darken(8% * (it.depth - 1))
+
+ set text(white, size: 14pt)
+ block(
+ radius: 2.0mm,
+ inset: 3.0mm,
+ width: 100%,
+ above: line-skip,
+ below: line-skip,
+ fill: color,
+ it,
+ )
+ }
+
+ let new-body = {
+ if write-title {
+ par[#title by #authors]
+ }
+ body
+ }
+
+ columns(
+ num-columns,
+ gutter: column-gutter,
+ new-body,
+ )
+}
+
+// ==========================================
+// Importy
+// ==========================================
+#import "@preview/codly:1.3.0": *
+#import "@preview/codly-languages:0.1.2": *
+
+// ==========================================
+// Základní nastavení
+// ==========================================
+#set text(lang: "cs")
+#show: codly-init.with()
+#codly(languages: codly-languages)
+
+// Písma (monospace pro `raw`, textové písmo pro běžný text)
+#show raw: set text(font: "TeX Gyre Cursor", fallback: true, weight: "regular")
+#set text(font: "TeX Gyre Termes")
+#set par(justify: true)
+
+// Odkazy: jen barevné zvýraznění (link zachová interaktivitu)
+#show link: set text(fill: blue)
+
+// Tabulky: nezarovnávat do bloku, ať se nevekslí „do šířky“
+#show table: set par(justify: false)
+
+
+// ==========================================
+// Šablona „cheatsheet“
+// ==========================================
+#show: cheatsheet.with(
+ title: "Návod na Typst",
+ font-size: 10pt,
+ line-skip: 5pt,
+ x-margin: 1cm,
+ y-margin: 1cm,
+ num-columns: 2,
+ column-gutter: 5mm,
+)
+
+= Základní syntaxe
+
+Typst je značkovací jazyk. Jednoduchou syntaxí umožňuje běžné úkoly sazby textu. Lehká syntaxe je doplněna pravidly *`set`* a *`show`*, která usnadňují automatickou stylizaci dokumentu. Vše je podpořeno integrovaným a intuitivním skriptovacím jazykem s vestavěnými a uživatelsky definovanými funkcemi. Jedná se o moderní alternativu k sazebnímu programu LaTeX.
+
+*Kapitola 'Základní syntaxe' slouží primárně jako tahák/pomůcka, není potřebné si její obsah pamatovat nazpaměť!*
+
+== Režimy Syntaxe
+Typst má tři syntaktické režimy:
++ *Značkování* (Markup), (podobné sytému markdown)
++ *Matematika* (Math)
++ *Kód* (Code).
+Výchozí je režim značkování. Pamatujte, že Typst vždy udělá přesně to, co nastavíte!
+
+#table(
+ stroke: none,
+ columns: (1fr, 1fr, 1fr),
+ table.hline(),
+ table.header([*Režim*], [*Syntaxe*], [*Příklad*]),
+ table.hline(),
+ [Kód], [Začněte znakem `#`], [Číslo:```typst #(1+2)```],
+ [Matematika],
+ [Obklopte vzorec ```typst $$```],
+ [```typst $-x$``` je opak ```typst $x$```],
+ [Značkování], [Obklopte kód `[]`], [```typst #let nazev = [*Typst!*]```],
+ table.hline(),
+)
+
+Po vstupu do režimu kódu pomocí `#` již další `#` není potřeba, pokud mezitím nepřepnete zpět do režimu značkování nebo matematiky.
+
+=== Režim značkování (Markup)
+Typst poskytuje vestavěné značení pro nejběžnější prvky dokumentu. Většina syntaktických prvků jsou pouze zkratky pro odpovídající funkci. V následující tabulce jsou uvedeny všechny dostupné značky a odkazy na dokumentaci, kde se dozvíte více.
+
+#table(
+ stroke: none,
+ columns: (1fr, 1fr, 1fr),
+ table.hline(),
+ table.header([*Název*], [*Příklad*], [*Odkaz*]),
+ [Zalomení odstavce],
+ [],
+ [#link("https://typst.app/docs/reference/model/parbreak/")[parbreak]],
+ [Silné zvýraznění],
+ [\**tučné*\*],
+ [#link("https://typst.app/docs/reference/model/strong/")[strong]],
+ [Zvýraznění],
+ [\__zvýrazněné_\_],
+ [#link("https://typst.app/docs/reference/model/emph/")[emph]],
+ [Nezformátovaný text],
+ [\`print("Ahoj")\`],
+ [#link("https://typst.app/docs/reference/text/raw/")[raw]],
+ [Odkaz (url)],
+ [https://typst.app/],
+ [#link("https://typst.app/docs/reference/model/link/")[link]],
+ [Štítek],
+ [\],
+ [#link("https://typst.app/docs/reference/foundations/label/")[label]],
+ [Reference],
+ [\@obr:nazev],
+ [#link("https://typst.app/docs/reference/model/ref/")[ref]],
+ [Nadpis 1. úroveň (1.)],
+ [\= Kapitola],
+ [#link("https://typst.app/docs/reference/model/heading/")[heading]],
+ [Nadpis 2. úroveň (1.1.)],
+ [\== Podkapitola],
+ [#link("https://typst.app/docs/reference/model/heading/")[heading]],
+ [Nadpis 3. úroveň (1.1.1)],
+ [\=== Oddíl],
+ [#link("https://typst.app/docs/reference/model/heading/")[heading]],
+ [Nadpis 4. (bez čísla)],
+ [\==== Pododdíl],
+ [#link("https://typst.app/docs/reference/model/heading/")[heading]],
+ [Výčet nečíslovaný],
+ [`- položka`],
+ [#link("https://typst.app/docs/reference/model/list/")[list]],
+ [Výčet číslovaný],
+ [`+ položka`],
+ [#link("https://typst.app/docs/reference/model/enum/")[enum]],
+ [Výčet definiční],
+ [\/ *Definice*: popis],
+ [#link("https://typst.app/docs/reference/model/terms/")[terms]],
+ [Matematika],
+ [```typst $x^2$ ```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Zalomení řádku],
+ [`\`],
+ [#link(
+ "https://typst.app/docs/reference/model/par/#parameters-linebreaks",
+ )[linebreak]],
+ [Chytré uvozovky],
+ ["jedna 'dva' tři"],
+ [#link("https://typst.app/docs/reference/text/smartquote/")[smartquote]],
+ [Zkratky symbolů],
+ [`~`, ---],
+ [#link("https://typst.app/docs/reference/foundations/symbol/")[Symbols]],
+ [Výraz kódu],
+ [```typst #rect(width: 1cm)```],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Zamezení formátování], [Číslo `#25`], [],
+ [Komentář],
+ [ \/\* blok od -- do \*\/, \// na řádku],
+ [#link("https://typst.app/docs/reference/syntax/#comments")[Comments]],
+ table.hline(),
+)
+=== Matematický režim (Math)
+Matematický režim je speciální značkovací režim, který se používá pro sazbu matematických vzorců a rovnic. Zadává se tak, že se rovnice obalí znaky `$` (dollarové znaménko). Funguje i ve značkovacím (markup) i kódovém (code) režimu.
+
+Rovnice se napíše do vlastního bloku, pokud začíná a končí alespoň jednou mezerou (např. ```typst $ x^2 $```). Inline matematiku (tzv. linkový zápis) lze vytvořit vynecháním mezer (např. ```typst $x^2$```). Následuje přehled syntaxe specifické pro matematický režim:
+
+#table(
+ stroke: none,
+ columns: (1fr, 1fr, 1fr),
+ table.hline(),
+ table.header([*Název*], [*Příklad*], [*Odkaz*]),
+ table.hline(),
+ [Matematika v řádku],
+ [```typst $x^2$ ```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Matematika v bloku],
+ [```typst $ x^2 $ ```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Dolní index],
+ [```typst$x_1$ ```],
+ [#link("https://typst.app/docs/reference/math/attach/")[attach]],
+ [Horní index],
+ [```typst $x^2$ ```],
+ [#link("https://typst.app/docs/reference/math/attach/")[attach]],
+ [Zlomek],
+ [```typst $1 + (a+b)/5$ ```],
+ [#link("https://typst.app/docs/reference/math/frac/")[frac]],
+ [Zalomení řádku],
+ [```typst $x y$ ```],
+ [#link(
+ "https://typst.app/docs/reference/model/par/#parameters-linebreaks",
+ )[linebreak]],
+ [Zarovnávací bod],
+ [```typst $x &= 2 \\ &= 3$ ```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Přístup k proměnné],
+ [```typst $#vlastni_prikaz $, $pi$```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Přístup k poli (objektu)],
+ [```typst $arrow.r.long$ ($arrow.r.long$)```],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Implicitní násobení],
+ [```typst$x y$```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Zkratky symbolů],
+ [```typst$->$, $!=$```],
+ [#link("https://typst.app/docs/reference/symbols/")[Symbols]],
+ [Text/řetězec],
+ [```typst $a "je písmeno" $```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Volání matematické funkce],
+ [```typst $floor(x)$```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Výraz kódu],
+ [```typst $#rect(width: 1cm)$```],
+ [#link("https://typst.app/docs/reference/model/scripting/")[Scripting]],
+ [Escapování znaku], [```typst \$```], [],
+ [Komentář],
+ [```typst /* komentář */ ```],
+ [#link("https://typst.app/docs/reference/syntax/#comments")[Comments]],
+ table.hline(),
+)
+
+=== Režim kódu (Code)
+V rámci bloků kódu a výrazů mohou nové výrazy začínat bez úvodního znaku \#. Mnoho syntaktických prvků je specifických pro výrazy. Níže je uvedena tabulka se seznamem všech syntaxí, které jsou k dispozici v režimu kódu:
+#table(
+ stroke: none,
+ columns: (1fr, 1fr, 1fr),
+ table.hline(),
+ table.header([*Název*], [*Příklad*], [*Odkaz*]),
+ table.hline(),
+ [`none` (typ)],
+ [`none`],
+ [#link("https://typst.app/docs/reference/types/none/")[none]],
+ [`auto` (typ)],
+ [`auto`],
+ [#link("https://typst.app/docs/reference/types/auto/")[auto]],
+ [Logická hodnota (`bool`)],
+ [`false, true`],
+ [#link("https://typst.app/docs/reference/types/boolean/")[bool]],
+ [Celé číslo (`int`)],
+ [`10, 0xff`],
+ [#link("https://typst.app/docs/reference/types/integer/")[int]],
+ [Desetinné číslo (`float`)],
+ [`3.14, 1e5`],
+ [#link("https://typst.app/docs/reference/types/float/")[float]],
+ [Délka (`length`)],
+ [`2pt, 3mm, 1em, ..`],
+ [#link("https://typst.app/docs/reference/types/length/")[length]],
+ [Úhel (`angle`)],
+ [`90deg, 1rad`],
+ [#link("https://typst.app/docs/reference/types/angle/")[angle]],
+ [Zlomek (`fraction`)],
+ [`2fr`],
+ [#link("https://typst.app/docs/reference/types/fraction/")[fraction]],
+ [Poměr (`ratio`)],
+ [`50%`],
+ [#link("https://typst.app/docs/reference/types/ratio/")[`ratio`]],
+ [Řetězec (`string`)],
+ ["ahoj"],
+ [#link("https://typst.app/docs/reference/types/string/")[`str`]],
+ [Odkaz (`label`)],
+ [``],
+ [#link("https://typst.app/docs/reference/types/label/")[label]],
+ [Matematika (`math`)],
+ [```typst $x^2$```],
+ [#link("https://typst.app/docs/reference/math/")[Math]],
+ [Nezformátovaný text (`raw`)],
+ [\`print(1)\`],
+ [#link("https://typst.app/docs/reference/text/raw")[raw]],
+ // --- Skriptování a Výrazy ---
+ [Přístup k proměnné],
+ [`x`],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Blok kódu],
+ [```typst {let x = 1; x + 2 }```],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Blok obsahu],
+ [```typst [*Ahoj*]```],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Výraz v závorkách],
+ [`(1 + 2)`],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Pole (`array`)],
+ [`(1, 2, 3)`],
+ [#link("https://typst.app/docs/reference/foundations/array/")[Array]],
+ [Slovník (`dictionary`)],
+ [`(a: "ahoj", b: 2)`],
+ [#link("https://typst.app/docs/reference/types/dictionary/")[Dictionary]],
+ [Unární operátor],
+ [`-x`],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Binární operátor],
+ [`x + y`],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Přiřazení],
+ [`x = 1`],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Přístup k poli (vlastnosti)],
+ [`x.y`],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ [Volání metody],
+ [`x.flatten()`],
+ [#link("https://typst.app/docs/reference/scripting/")[Scripting]],
+ // --- Funkce ---
+ [Volání funkce],
+ [`min(x, y)`],
+ [#link("https://typst.app/docs/reference/foundations/function/")[Function]],
+ [Rozbalení argumentů],
+ [`min(..nums)`],
+ [#link("https://typst.app/docs/reference/foundations/arguments/")[Arguments]],
+ [Anonymní funkce (lambda)],
+ [`(x, y) => x + y`],
+ [#link(
+ "https://typst.app/docs/reference/foundations/function/#closures",
+ )[Function]],
+ [Vazba `let`],
+ [`let x = 1`],
+ [#link("https://typst.app/docs/reference/scripting/#bindings")[Scripting]],
+ [Pojmenovaná funkce],
+ [`let f(x) = 2 * x`],
+ [#link("https://typst.app/docs/reference/foundations/function/")[Function]],
+ [Návrat z funkce (`return`)],
+ [`return x`],
+ [#link("https://typst.app/docs/reference/foundations/function/")[Function]],
+ // --- Stylování ---
+ [Pravidlo `set`],
+ [`set text(14pt)`],
+ [#link("https://typst.app/docs/reference/styling/#set-rules")[Styling]],
+ [Podmíněné pravidlo `set`],
+ [`set text(..) if .`.],
+ [#link("https://typst.app/docs/reference/styling/#set-rules")[Styling]],
+ [Pravidlo `show` (+ `set`)],
+ [`show heading: set block(..)`],
+ [#link("https://typst.app/docs/reference/styling/#show-rules")[Styling]],
+ [Pravidlo `show` (s funkcí)],
+ [`show raw: it => {...}`],
+ [#link("https://typst.app/docs/reference/styling/#show-rules")[Styling]],
+ [Pravidlo `show` (vše)],
+ [`show: template`],
+ [#link("https://typst.app/docs/reference/styling/#show-rules")[Styling]],
+ // --- Řízení Toku a Moduly ---
+ [Kontextový výraz (`context`)],
+ [`context text.lang`],
+ [#link("https://typst.app/docs/reference/scripting/#context")[Context]],
+ [Podmínka (`if`/`else`)],
+ [`if x == 1 {..} else {..}`],
+ [#link(
+ "https://typst.app/docs/reference/scripting/#conditionals",
+ )[Scripting]],
+ [Cyklus `for`],
+ [`for x in (1, 2, 3) {..}`],
+ [#link("https://typst.app/docs/reference/scripting/#loops")[Scripting]],
+ [Cyklus `while`],
+ [`while x < 10 {..}`],
+ [#link("https://typst.app/docs/reference/scripting/#loops")[Scripting]],
+ [Řízení cyklu (`break`/`cont.`)],
+ [`break, continue`],
+ [#link("https://typst.app/docs/reference/scripting/#loops")[Scripting]],
+ [Vložení modulu (`include`)],
+ [`include "soubor.typ"`],
+ [#link("https://typst.app/docs/reference/scripting/#modules")[Scripting]],
+ [Import modulu (`import`)],
+ [`import "soubor.typ"`],
+ [#link("https://typst.app/docs/reference/scripting/#modules")[Scripting]],
+ [Import položek (`import`)],
+ [`import "soubor.typ": a, b, c`],
+ [#link("https://typst.app/docs/reference/scripting/#modules")[Scripting]],
+ table.hline(),
+)
+
+== Komentáře
+Komentáře jsou programem Typst ignorovány a nebudou zahrnuty do výstupu (PDF). To je užitečné pro vyloučení starých verzí nebo pro přidání poznámek. Chcete-li zakomentovat jeden řádek, začněte jej znakem `//`:
+```typst
+// Hodnota $p > 0,05$ značí, že rozdíl není významný.
+// Opraveno dle nových dat!
+ Hodnota $p < 0,05$ značí, že rozdíl je významný.
+```
+*Výsledek:*
+#rect([Hodnota $p < 0,05$ značí, že rozdíl je významný.], radius: 2mm)
+
+Komentáře lze také zabalit mezi \/\* a \*\/. V tomto případě se komentář může rozprostírat přes více řádků:
+```typst
+/* Výsledek ještě ověřit!
+Doplnit odkaz na hypotézy v kap.3 */
+ Hodnota $p < 0,05$ značí, že rozdíl je významný.
+```
+Výsledek je stejný jako výše zmíněný.
+== Únikové sekvence (Escape)
+Escape sekvence slouží k vkládání speciálních znaků, které se v programu Typst obtížně píší nebo mají jiný zvláštní význam. Chcete-li znak "uniknout", předepište jej zpětným lomítkem. Chcete-li vložit libovolný kódový bod Unicode, můžete napsat hexadecimální escape sekvenci:
+```typst
+Koupil jsem zmrzlinu za \$1.50! \u{1f600}.
+```
+*Výsledek:*
+#rect([Koupil jsem zmrzlinu za \$1.50! \u{1f600}.], radius: 2mm)
+
+== Cesty k souborům
+Typst má různé funkce, které vyžadují cestu k souboru pro odkaz na externí zdroje, jako jsou obrázky, soubory Typst (`soubor.typ`) nebo datové soubory (soubory s příponou `.cbor/csv/json/read/toml/xml/yaml`). Cesty jsou reprezentovány jako řetězce. Existují dva druhy cest: *Relativní* a *Absolutní*.
+=== Relativní cesta
+Hledá od umístění souboru Typst, ve kterém je funkce vyvolána. Jedná se o výchozí nastavení:
+```typst
+#image("images/logo.png“)
+```
+=== Absolutní cesta
+Absolutní cesta vyhledává z kořene projektu. Začíná počátečním znakem /:
+```typst
+#image("/assets/logo.png“)
+```
+= Jak psát odbornou práci v Typst (Návod pro studenty)
+
+Již za sebou máte všechny potřebné základy! Dostali jste za úkol napsat diplomovou práci, seminárku nebo odbornou esej. Vaše práce bude potřebovat:
+
+- Odborný text,
+- Nadpisy pro strukturu,
+- Citáty (z předpisů, knih, ...),
+- Matematické a fyzikální rovnice,
+- Možná chemické vzorce,
+- Tabulky s daty,
+- Obrázky (schémata, grafy),
+- Citace zdrojů a seznam literatury.
+
+Tento návod vám ukáže, jak toho jednoduše dosáhnout právě v Typstu.
+
+== Založení projektu a první text
+
+V aplikaci Typst si vytvořte nový projekt nebo použijte šablonu. Následně se otevře se editor:
+- *Vlevo:* Panel se zdrojovým kódem (sem píšete vy).
+- *Vpravo:* Panel s náhledem (zde vidíte výsledek v reálném čase).
+
+Začněte psát úvod přímo do levého panelu. Text se okamžitě objeví vpravo.
+
+```typst
+Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
+```
+
+*Výsledek:*
+#rect([#lorem(10)], radius: 2mm)
+
+== Struktura: Nadpisy a odstavce
+
+Pro přehlednost použijte nadpisy. Úroveň nadpisu určíte počtem rovnítek `=`:
+- `=` Hlavní kapitola (úroveň 1),
+- `==` Podkapitola (úroveň 2),
+- `===` Oddíl (úroveň 3),
+- `====` Pododdíl (úroveň 4 [nezapisuje se do obsahu]).
+Nový odstavec vytvoříte jednoduše vložením *prázdného řádku*.
+
+// Příklad kódu pro strukturu:
+```typst
+#heading(numbering: none, level: 1, "Úvod") // Nadpis bez číslování
+Text text text Text text text Text text text Text text text Text text text
+= Teoretická část
+Text text text Text text text Text text text Text text text Text text text
+== Podkapitola
+Text text text Text text text Text text text Text text text Text text text
+```
+*Výsledek:*
+#{
+ rect(radius: 2mm, [
+ #text(size: 14pt, "Úvod", weight: "bold")\
+ Text text text Text text text Text text text Text text text Text text text\
+ #text(size: 14pt, "1 Teoretická část", weight: "bold")\
+ Text text text Text text text Text text text Text text text Text text text\
+ #text(size: 13pt, "1.1 Podkapitola", weight: "bold")\
+ Text text text Text text text Text text text Text text text Text text text])
+}
+
+== Základní formátování a seznamy
+- *Kurzíva:* Text uzavřete do `_podtržítek_`. Vhodné pro zvýraznění pojmů nebo cizích slov.
+- *Tučné písmo:* Text uzavřete do `*hvězdiček*`. Používejte střídmě pro silné zdůraznění.
+- *Číslovaný seznam:* Každou položku začněte znakem `+`.
+- *Seznam s odrážkami:* Každou položku začněte znakem `-`.
+- *Zanoření seznamu:* Další úroveň seznamu odsaďte (např. dvěma mezerami nebo tabulátorem).
+
+// Příklad kódu pro seznamy:
+```typst
+/ Balistika: Věda zabývající se pohybem a účinkem střely (projektilu, náboje).
+
+Hlavní faktory ovlivňující dráhu střely:
++ Gravitace Země
++ Odpor vzduchu
+ - _Hustota vzduchu_ (závislá na teplotě, tlaku, vlhkosti)
+ - Tvar a *rychlost* střely (balistický koeficient $C_D$)
++ Rotace střely
+ + Magnusův efekt
+ + Stabilizace
++ Vítr
+```
+
+*Výsledek :*
+
+#counter(heading).update(0)
+#rect[
+ / Balistika: Věda zabývající se pohybem a účinkem střely (projektilu, náboje).
+
+ Hlavní faktory ovlivňující dráhu střely:
+ 1. Gravitace Země
+ 2. Odpor vzduchu
+ - _Hustota vzduchu_ (závislá na teplotě, tlaku, vlhkosti)
+ - Tvar a *rychlost* střely (balistický koeficient $C_D$)
+ + Rotace střely
+ + Magnusův efekt
+ + Stabilizace
+ + Vítr
+]
+#counter(heading).update(2)
+#counter(heading).step(level: 2)
+#counter(heading).step(level: 2)
+#counter(heading).step(level: 2)
+
+== Obrázky
+
+Nejprve nahrajte obrázek (obrázek,jpg/png/svg/gif) do projektu přes panel souborů (ikona složky vlevo), nebo zkopírovaný obrázek vložit pomocí klávesové zkratky ctrl+v.
+
+=== Jednoduché vložení (Image)
+Funkce `#image` vloží obrázek. Argumentem je cesta k souboru v uvozovkách. Obrázek se přizpůsobí šířce textu.
+```typst
+#image("balisticka_krivka.jpg")
+```
+
+=== Obrázek s popiskem (Figure)
+
+Pro očíslovaný popisek, nastavení velikosti a možnost odkazování použijte funkci `#figure`.
+
+```typst
+#figure(
+ // Zde voláme funkci image() už bez #
+ image(
+ "balisticka_krivka.jpg", // Cesta k souboru
+ width: 70% // Nastaví šířku na 70 % šířky textu (lze nahradit hodnotami velikosti (fr, mm, cm))
+ ),
+ // Popisek je blok obsahu v hranatých závorkách []
+ caption: [
+ Základní schéma balistické křivky ve vakuu.
+ ]
+) // Štítek přidán pro následné odkazování
+Zdroj: Vlastní zpracování/citace // Vlastní příkaz, jenž přidá popisek "Zdroj: + text uvnitř hranatých závorek". Jedná se o příkaz vytvoření pro potřeby šablony, tudíž nebude fungovat.
+// POZOR: Nezapomeňte na čárku mezi image() a caption!
+// POZOR: Hlídejte si správné uzavření všech závorek () a [].
+```
+*Výsledek:*
+// Zde by byl skutečný výsledek, pokud by obrázek existoval a byl vložen.
+// Pro ukázku vložíme textový popis:
+#figure(
+ rect(
+ radius: 2mm,
+ width: 70%,
+ height: 2cm,
+ stroke: black,
+ inset: 0pt,
+ )[Obrázek],
+ caption: [
+ Základní schéma balistické křivky ve vakuu.
+ ],
+)
+Zdroj: Vlastní zpracování/citace
+
+*(Číslování obrázků je automatické.)*
+
+== Odkazování (Labels & References)
+
+Na očíslované prvky (obrázky, tabulky, rovnice, kapitoly) se můžete odkazovat v textu.
+
+1. *Přidejte štítek (label):* Hned za definici prvku (např. za `#figure(...)`) přidejte unikátní název do lomených závorek `< >`.
+ - *Doporučení:* Používejte prefixy pro přehlednost (např. `obr:`, `tab:`, `rov:`, `kap:`) a pište *bez mezer a diakritiky*.
+2. *Odkaz v textu:* V místě, kde chcete odkazovat, použijte znak `@` následovaný názvem návěští.
+
+// Příklad kódu pro odkazování:
+```typst
+Jak ukazuje @obr:balisticka-krivka-schema, trajektorie střely má parabolický tvar pouze ve vakuu. Vliv odporu vzduchu popisuje @kap:odpor-vzduchu.]
+```
+
+*Výsledek*
+#rect[
+ Jak ukazuje @obr:balisticka-krivka-schema, trajektorie střely má parabolický tvar pouze ve vakuu. Vliv odporu vzduchu popisuje @kap:odpor-vzduchu.]
+
+== Citáty
+Pro delší citace použijte funkci `#quote`. Pomocí ```typst #set quote(block: true)``` zajistíte, že citát bude jako samostatný blok. Argument `attribution` přidá zdroj/autora citátu.
+
+```typst
+// Nastavení pro blokové citace (obvykle se dává jednou na začátek dokumentu)
+#set quote(block: true)
+
+// Použití citátu
+#quote(
+ attribution: [Předpis Art-1–1, s. 15] // Zdroj citátu
+)[
+"_Přesnost střelby je základním předpokladem účinného boje. Znalost balistiky a pečlivá příprava střelby jsou nezbytné pro každého střelce._"
+]
+```
+*Výsledek:*
+#set quote(block: true)
+#quote(
+ attribution: [Předpis Art-1–1, s. 15],
+)[
+ _"Přesnost střelby je základním předpokladem účinného boje. Znalost balistiky a pečlivá příprava střelby jsou nezbytné pro každého střelce."_
+]
+#set quote(block: false) // Vrátíme nastavení pro inline citace
+
+== Matematické a fyzikální rovnice
+Matematiku sázejte mezi znaky dolaru `$`.
+- *Inline matematika:* `$ E = m c^2 $` se sází přímo v textu ($E = m c^2$).
+- *Bloková matematika (na samostatném řádku):* Použijte mezeru za/před dolary: `$ F_D = 1/2 rho v^2 C_D A $`.
+
+// Příklad kódu pro matematiku:
+```
+// Inline
+Newtonův druhý zákon $F = m a$ je základem.
+
+// Bloková rovnice
+Síla odporu vzduchu $ F_D $ je dána vztahem:
+$ F_D = 1/2 rho v^2 C_D A $
+// Můžeme přidat i návěští pro odkazování (@rov:sila-odporu)
+
+// Další příklady:
+Řecká písmena: $ alpha, beta, gamma, rho $
+Zlomky: $ a / b $
+Horní/dolní index: $ v_0^2 $
+Indexy s více znaky: $ x_(i+1) = x_i + v_i Delta t $
+Odmocnina: $ sqrt(b^2 - 4 a c) $
+Suma: $ sum_(i=1)^n i = n(n+1)/2 $
+Vektor: $ vec(a, b, c) $
+```
+
+*Výsledek v náhledu:*
+#set math.equation(numbering: "(1)")
+Newtonův druhý zákon $F = m a$ je základem.
+
+Síla odporu vzduchu $ F_D $ je dána vztahem:
+$ F_D = 1/2 rho v^2 C_D A $
+
+Další příklady:
+
+Řecká písmena: $ alpha, beta, gamma, rho $
+Zlomky: $ a / b $
+Horní/dolní index: $ v_0^2 $
+Indexy s více znaky: $ x_(i+1) = x_i + v_i delta t $
+Odmocnina: $ sqrt(b^2 - 4 a c) $
+Suma: $ sum_(i=1)^n i = n(n+1)/2 $
+Vektor: $ vec(a, b, c) $
+
+*(Číslování rovnic je obvykle automatické, pokud je nastaveno v šabloně.)*
+
+== Bibliografie a citace zdrojů
+
+Každá odborná práce potřebuje seznam literatury a citace v textu. Typst používá nativně formát Hayagriva (`.yml`) a BibLaTeX (`.bib`). Oba formáty velmi usnadňují práci s citacemi, protože po zapsání zdroje do souboru jej lze vyvolat jako odkaz (pomocí `@název`) a dle nastaveného citačního stylu automaticky zapsán v seznamu literatury.
+
+=== Vytvoření souboru s bibliografií (např. `literatura.yml`):
+
+Vytvořte v projektu nový soubor (např. `literatura.yml`) a vložte do něj záznamy o zdrojích. Každý záznam má unikátní *klíč* (např. `Novak2023`).
+
+// Příklad kódu pro soubor literatura.yml:
+```yml
+Novak2023: # Toto je klíč pro citování
+ type: book # Typ zdroje (book, article, report, ...)
+ author:
+ - Novák, Jan # Příjmení, Jméno
+ title: "Moderní balistika pro praxi" # Název díla
+ publisher: "Univerzita obrany" # Vydavatel
+ date: 2023 # Rok vydání
+ location: "Brno" # Místo vydání
+
+Art11:
+ type: report
+ author: "Ministerstvo obrany ČR"
+ title: "Art-1-1: Dělostřelecká příprava"
+ date: 2019
+ # ... další údaje dle potřeby
+```
+
+=== Vložení seznamu literatury do dokumentu:
+
+Na konec práce (obvykle do samostatné kapitoly) vložte funkci `#bibliography`. Argumentem je cesta k souboru a volitelně styl citování.
+
+// Příklad kódu pro vložení bibliografie:
+```
+= Seznam použité literatury
+
+#bibliography(
+ "literatura.yml", // Cesta k vašemu souboru
+ title: none, // Skryje nadpis "Bibliography" (pokud máte vlastní nadpis kapitoly)
+ style: "iso-690-numeric" // Příklad citačního stylu
+)
+```
+
+=== Citování v textu:
+
+V textu použijte znak `@` následovaný *klíčem* ze souboru `.yml`. Pro odkaz na konkrétní stranu přidejte číslo strany do hranatých závorek `[]`.
+
+// Příklad kódu pro citování v textu:
+```
+Jak uvádí Novák @Novak2023[s. 45-48], odpor vzduchu...
+Základní postupy definuje předpis @Art11.
+```
+
+*Výsledek v náhledu:*
+// Zde by byl skutečný výsledek, pokud by existoval soubor literatura.yml a byl správně načten.
+// Ukázka textu:
+Jak uvádí Novák (NOVÁK, s. 45-48), odpor vzduchu...
+Základní postupy definuje předpis Art11.
+
+// Ukázka seznamu literatury (musí být na konci dokumentu):
+// = Seznam použité literatury
+// #bibliography("literatura.yml", title: none, style: "iso-690-numeric")
+
+*(Formát citací a seznamu literatury závisí na zvoleném stylu a obsahu .yml souboru.)*
+
+== Tabulky
+
+Pro přehledné zobrazení dat použijte funkci `#table`. Definujte sloupce, záhlaví a data.
+
+// Příklad kódu pro tabulku:
+```
+#figure( // Vložíme do figure pro popisek a číslování
+ table(
+ columns: (auto, 1fr, 1fr), // Šířky sloupců (první auto, další dva stejné)
+ stroke: 0.5pt, // Ohraničení buněk
+ align: (center + horizon), // Zarovnání obsahu buněk (na střed horizontálně i vertikálně)
+
+ // Záhlaví tabulky (zvýrazněné)
+ [*Vzdálenost*], [*Pokles dráhy*], [*Energie*],
+
+ // Data tabulky
+ [100 m], [-0 cm], [3500 J],
+ [300 m], [-28.5 cm], [2800 J],
+ [500 m], [-125.2 cm], [2200 J],
+ ),
+ caption: [Orientační balistická data pro střelu 7.62x51mm NATO.]
+) // Návěští pro odkazování @tab:strelba-data
+```
+
+*Výsledek v náhledu:*
+#figure(
+ table(
+ columns: (auto, 1fr, 1fr),
+ stroke: 0.5pt,
+ align: (center + horizon),
+ [*Vzdálenost*], [*Pokles dráhy*], [*Energie*],
+ [100 m], [-0 cm], [3500 J],
+ [300 m], [-28.5 cm], [2800 J],
+ [500 m], [-125.2 cm], [2200 J],
+ ),
+ caption: [Orientační balistická data pro střelu 7.62x51mm NATO.],
+)
+
+*(Pro přidání číslovaného popisku k tabulce ji vložte do `#figure`, podobně jako obrázek.)*
+
+== Shrnutí
+
+Právě jste se naučili základy psaní odborné práce v Typstu: strukturování pomocí *nadpisů*, základní *formátování*, *seznamy*, vkládání *obrázků* a *tabulek* s popisky a *odkazováním*, sázení *matematiky*, správu *bibliografie* a *citací*.
+//#bibliography("bibliography.yml")
+Toto je jen začátek. Typst nabízí mnohem více možností pro pokročilé formátování, tvorbu vlastních šablon a automatizaci. Nebojte se experimentovat a prozkoumat oficiální dokumentaci Typstu: #link("https://typst.app/docs/")[https://typst.app/docs/]. Hodně štěstí při psaní!
diff --git a/unob-thesis/0.1.0/src/genitiv.typ b/unob-thesis/0.1.0/src/genitiv.typ
new file mode 100644
index 0000000000..af1da2f39e
--- /dev/null
+++ b/unob-thesis/0.1.0/src/genitiv.typ
@@ -0,0 +1,172 @@
+/*
+Autor kódu: davidmalasek (David Malášek)
+
+MIT License
+
+Copyright (c) 2024 David Malášek
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Zdroj: https://github.com/davidmalasek/sklonovani-jmen
+*/
+#import "@preview/pyrunner:0.3.0" as py
+#let genitiv-supervisor = py.compile(
+ ```python
+# Koho, čeho?
+
+
+def genitiv(input_jmena):
+ output = []
+ if " " in input_jmena:
+ jmena = input_jmena.split(" ")
+ else:
+ jmena = [input_jmena.lower()]
+
+ for jmeno in jmena:
+ jmeno = jmeno.lower()
+ if jmeno[-1] == "a":
+ if jmeno[-2] in ["d", "n"]: # Anna, Linda
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] in ["č", "j"]: # Ivča, Kája
+ output.append(jmeno[0:-1] + "i")
+ elif jmeno[-2] == "ď" or jmeno[-2] == "c": # Láďa, Danica
+ output.append(jmeno[0:-1] + "i")
+ elif jmeno[-2] == "g": # Olga
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "i": # Olivia
+ output.append(jmeno[0:-1] + "e")
+ elif jmeno[-2] == "k": # Eliška
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "l" and jmeno[-3] == "v": # Pavla
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "l": # Fiala, Nikola
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "o": # Figueroa
+ output.append(jmeno)
+ elif jmeno[-2] == "r": # Klára, Svoboda, Kučera
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "t": # Alžběta
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "v": # Eva
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "z": # Honza, Tereza
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] == "ň": # Soňa
+ output.append(jmeno[0:-2] + "ni")
+ elif jmeno[-3] == "c" or jmeno[-2] == "h": # Průcha
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-2] in ["e", "š"]: # Nataša, Andrea, Lea
+ if jmeno[-3] == "r":
+ output.append(jmeno[0:-1] + "ji")
+ else:
+ output.append(jmeno[0:-1] + "i")
+ else:
+ output.append(jmeno[0:-1] + "y")
+ elif jmeno[-1] == "á":
+ output.append(jmeno[0:-1] + "é")
+ elif jmeno[-1] == "e":
+ if jmeno[-2] == "g": # George
+ output.append(jmeno)
+ elif jmeno[-2] == "e" or jmeno[-2] == "o": # Lee, Zoe
+ output.append(jmeno)
+ elif (
+ jmeno[-2] == "i" or jmeno[-2] == "c" or jmeno[-2] == "š"
+ ): # Lucie, Alice, Danuše
+ output.append(jmeno)
+ else:
+ output.append(jmeno[0:-1] + "i")
+ elif jmeno[-1] == "h" or jmeno[-1] == "i":
+ if jmeno[-2] == "c": # Bedřich, Vojtěch
+ output.append(jmeno + "a")
+ else: # Sarah, Niki
+ output.append(jmeno)
+ elif jmeno[-1] == "k":
+ if jmeno[-2] == "e": # Malášek
+ output.append(jmeno[0:-2] + "ka")
+ elif jmeno[-2] == "ě":
+ if jmeno[-3] == "n": # Zbyněk
+ output.append(jmeno[0:-3] + "ňka")
+ elif jmeno[-3] == "d": # Luděk
+ output.append(jmeno[0:-3] + "ďka")
+ elif jmeno[-3] == "n": # Vaněk
+ output.append(jmeno[0:-3] + "ňka")
+ else: # Novák
+ output.append(jmeno + "a")
+ elif jmeno[-1] == "l":
+ if jmeno[-2] == "e":
+ if jmeno[-3] in ["c", "i", "u"]: # Marcel, Samuel, Gabriel
+ output.append(jmeno + "a")
+ else: # Karel
+ output.append(jmeno[0:-2] + "la")
+ elif jmeno[-2] == "o" and jmeno[-3] == "k": # Nikol
+ output.append(jmeno)
+ elif jmeno[-2] in ["a", "i", "o", "s"]: # Michal, Bohumil, Anatol, Přemysl
+ output.append(jmeno + "a")
+ else: # Král
+ output.append(jmeno + "e")
+ elif jmeno[-1] == "m":
+ if jmeno[-2] == "a": # Miriam
+ output.append(jmeno)
+ else: # Maxim
+ output.append(jmeno + "a")
+ elif jmeno[-1] == "o":
+ if jmeno[-2] == "t": # Oto
+ output.append(jmeno[0:-1] + "y")
+ else: # Ronaldo, Santiago
+ output.append(jmeno[0:-1] + "a")
+ elif jmeno[-1] == "r":
+ if jmeno[-2] == "a" or jmeno[-2] == "e": # Dagmar, Ester
+ if (
+ jmeno[-3] == "k"
+ or jmeno[-3] == "m"
+ or jmeno[-3] == "p"
+ or jmeno[-3] == "l"
+ ): # Otakar, Otmar, Kašpar
+ output.append(jmeno + "a")
+ else:
+ output.append(jmeno)
+ else:
+ output.append(jmeno + "a")
+ elif jmeno[-1] == "y" or jmeno[-1] == "í" or jmeno[-1] == "é":
+ if jmeno[-2] == "l": # Emily
+ output.append(jmeno)
+ else: # Harry, Jiří, René
+ output.append(jmeno + "ho")
+ elif jmeno[-1] == "ý":
+ output.append(jmeno[0:-1] + "ého")
+ elif jmeno[-1] == "d":
+ if jmeno[-2] == "n": # Zikmund
+ output.append(jmeno + "a")
+ else: # Ingrid
+ output.append(jmeno)
+ elif jmeno[-1] == "c":
+ if jmeno[-2] == "n": # Vincenc
+ output.append(jmeno[0:-1] + "e")
+ else:
+ if jmeno[-2] == "l": # Šolc
+ output.append(jmeno + "e")
+ else: # Vavřinec
+ output.append(jmeno[0:-2] + "ce")
+ elif jmeno[-1] == "ž":
+ output.append(jmeno + "e")
+ elif jmeno[-1] == "t":
+ if jmeno[-2] == "í": # Vít
+ output.append(jmeno + "a")
+ else: # Růt
+ output.append(jmeno)
+ elif jmeno[-1] == "ů": # Petrů
+ output.append(jmeno)
+ elif jmeno[-1] in ["c", "j", "ř", "š"]: # Tomáš, Ondřej, Kadlec
+ output.append(jmeno + "e")
+ elif jmeno[-1] == "x" or jmeno[-1] == "s": # Max, Nikolas
+ output.append(jmeno + "e")
+ else:
+ output.append(jmeno + "a")
+ output = [item.capitalize() for item in output]
+ return " ".join(output)
+ ```.text
+)
\ No newline at end of file
diff --git a/unob-thesis/0.1.0/src/lib.typ b/unob-thesis/0.1.0/src/lib.typ
new file mode 100644
index 0000000000..1f99dbe5b7
--- /dev/null
+++ b/unob-thesis/0.1.0/src/lib.typ
@@ -0,0 +1,1510 @@
+/*
+==========================================
+1. Importy a pomocné funkce
+2. Hlavní funkce `Template`
+3. Pomocné funkce (styly, bibliografie)
+4. Hlavní funkce `settings`
+5. Funkce `Annex` pro přílohy
+==========================================
+*/
+
+/* ==========================================
+ * 1. Importy
+ * ========================================== */
+#import "genitiv.typ": *
+#import "@preview/ez-today:1.1.0"
+#import "@preview/vlna:0.1.1": *
+#import "@preview/codly:1.3.0": *
+#import "@preview/codly-languages:0.1.8": *
+
+
+/* ==========================================
+ * 2. Pomocné funkce (snake-case)
+ * ========================================== */
+
+// Definice barev dle fakulty – vrací barvu podle zkratky fakulty
+#let get-faculty-color(faculty) = {
+ if faculty == "fvl" { rgb("#808205") } else if faculty == "fvt" {
+ rgb("#6188cd")
+ } else if faculty == "vlf" { rgb("#ea0738") } else if faculty == "uo" {
+ rgb("#fec820")
+ } else { rgb("#000000") }
+}
+
+// Definice názvu fakulty – podle zkratky a varianty (1: nominativ, 2: genitiv)
+#let get-faculty-name(faculty, variant: 1) = {
+ context if variant == 1 {
+ if faculty == "fvl" {
+ if text.lang != "en" { [Fakulta vojenského leadershipu] } else {
+ [Faculty of Military Leadership]
+ }
+ } else if faculty == "fvt" {
+ if text.lang != "en" { [Fakulta vojenských technologií] } else {
+ [Faculty of Military Technology]
+ }
+ } else if faculty == "vlf" {
+ if text.lang != "en" { [Vojenská lékařská fakulta] } else {
+ [Military Faculty of Medicine]
+ }
+ } else if faculty == "uo" { [] } else { "" }
+ } else {
+ if faculty == "fvl" {
+ if text.lang != "en" { [Fakulty vojenského leadershipu] } else {
+ [Faculty of Military Leadership]
+ }
+ } else if faculty == "fvt" {
+ if text.lang != "en" { [Fakulty vojenských technologií] } else {
+ [Faculty of Military Technology]
+ }
+ } else if faculty == "vlf" {
+ if text.lang != "en" { [Vojenské lékařské fakulty] } else {
+ [Military Faculty of Medicine]
+ }
+ } else if faculty == "uo" { [] } else {
+ if text.lang != "en" {
+ panic("Nepodporovaná fakulta! Zvolte: `fvl` | `fvt` | `vlf` | `uo`")
+ } else {
+ panic("Unsupported faculty! Try: `fvl` | `fvt` | `vlf` | `uo`")
+ }
+ }
+ }
+}
+
+
+// Definice města fakulty – vrací název města podle fakulty a varianty (nominativ/6. pád)
+#let get-city-name(faculty, variant: 1) = {
+ if variant == 1 {
+ if (faculty == "fvl") or (faculty == "fvt") or (faculty == "uo") {
+ [BRNO]
+ } else if faculty == "vlf" {
+ [HRADEC KRÁLOVÉ]
+ } else {
+ if text.lang != "en" {
+ panic("Nepodporovaná fakulta! Zvolte: `fvl` | `fvt` | `vlf` | `uo`")
+ } else {
+ panic("Unsupported faculty! Try: `fvl` | `fvt` | `vlf` | `uo`")
+ }
+ }
+ } else {
+ if (faculty == "fvl") or (faculty == "fvt") or (faculty == "uo") {
+ [Brně]
+ } else if faculty == "vlf" {
+ [Hradci Králové]
+ } else {
+ if text.lang != "en" {
+ panic("Nepodporovaná fakulta! Zvolte: `fvl` | `fvt` | `vlf` | `uo`")
+ } else {
+ panic("Unsupported faculty! Try: `fvl` | `fvt` | `vlf` | `uo`")
+ }
+ }
+ }
+}
+
+
+// Definice cesty k logu fakulty – vrací cestu k souboru loga ve formátu SVG
+#let get-logo-path(faculty) = {
+ "../resources/logo" + upper(faculty) + ".svg"
+}
+
+// Definice typu závěrečné práce – název podle kódu (bc, ing, phd, teze) a varianty
+#let get-thesis-type-name(thesis-type, variant: 1) = {
+ context if variant == 1 {
+ if thesis-type == "bc" {
+ if text.lang != "en" { [Bakalářská práce] } else { [Bachelor Thesis] }
+ } else if thesis-type == "ing" {
+ if text.lang != "en" { [Diplomová práce] } else { [Master Thesis] }
+ } else if thesis-type == "phd" {
+ if text.lang != "en" { [Disertační práce] } else { [Dissertation] }
+ } else if thesis-type == "teze" {
+ if text.lang != "en" { [Teze disertační práce] } else {
+ [Dissertation Proposal]
+ }
+ } else {
+ if text.lang != "en" {
+ panic("Nepodporovaný typ práce! Zvolte: `bc` | `ing` | `phd` | `teze`")
+ } else {
+ panic("Unsupported type of work! Try: `bc` | `ing` | `phd` | `teze`")
+ }
+ }
+ } else if variant == 2 {
+ if thesis-type == "bc" {
+ if text.lang != "en" { [bakalářské práce] } else { [bachelor thesis] }
+ } else if thesis-type == "ing" {
+ if text.lang != "en" { [diplomové práce] } else { [master thesis] }
+ } else if thesis-type == "phd" {
+ if text.lang != "en" { [disertační práce] } else { [dissertation] }
+ } else if thesis-type == "teze" {
+ if text.lang != "en" { [tezi disertační práce] } else {
+ [dissertation proposal]
+ }
+ } else {
+ if text.lang != "en" {
+ panic("Nepodporovaný typ práce! Zvolte: `bc` | `ing` | `phd` | `teze`")
+ } else {
+ panic("Unsupported type of work! Try: `bc` | `ing` | `phd` | `teze`")
+ }
+ }
+ } else if variant == 3 {
+ if thesis-type == "bc" {
+ if text.lang != "en" { [bakalářskou práci] } else { [bachelor thesis] }
+ } else if thesis-type == "ing" {
+ if text.lang != "en" { [diplomovou práci] } else { [master thesis] }
+ } else if thesis-type == "phd" {
+ if text.lang != "en" { [disertační práci] } else { [dissertation] }
+ } else if thesis-type == "teze" {
+ if text.lang != "en" { [tezi disertační práce] } else {
+ [dissertation proposal]
+ }
+ } else {
+ if text.lang != "en" {
+ panic("Nepodporovaný typ práce! Zvolte: `bc` | `ing` | `phd` | `teze`")
+ } else {
+ panic("Unsupported type of work! Try: `bc` | `ing` | `phd` | `teze`")
+ }
+ }
+ } else {
+ if text.lang != "en" {
+ panic("Nepodporovaný typ práce! Zvolte: `bc` | `ing` | `phd` | `teze`")
+ } else {
+ panic("Unsupported type of work! Try: `bc` | `ing` | `phd` | `teze`")
+ }
+ }
+}
+
+// Formátování jména osoby – vrací řetězec se jménem, příjmením, tituly
+#let format-name(person) = [
+ #person.prefix
+ #person.name
+ #if person.suffix != none {
+ [#person.surname, #person.suffix]
+ } else {
+ [#person.surname]
+ }
+]
+
+// Formátování jména vedoucího práce pro čestné prohlášení
+// - využívá externí python skript `genitiv-supervisor` pro skloňování do 2. pádu
+// - vrací prefix, jméno a příjmení ve správném pádě, případně i suffix
+#let format-supervisor-for-declaration(supervisor) = [
+ #supervisor.prefix
+ #py.call(genitiv-supervisor, "genitiv", supervisor.name)
+ #py.call(genitiv-supervisor, "genitiv", supervisor.surname),
+ #if supervisor.suffix != none {
+ [#supervisor.suffix,]
+ } else {
+ []
+ }
+]
+
+
+// Generování seznamu zkratek (akronymů)
+// - vstup: slovník {"ISO": ("International Organization...", "Mezinárodní organizace...")}
+// - výstup: tabulka se sloupci [akronym | vysvětlení]
+// - podporuje 1 i více významů pro jednu zkratku
+#let generate-acronyms-list(acronyms-dict) = {
+ if acronyms-dict != none and acronyms-dict.len() > 0 {
+ grid(
+ columns: (auto, 1fr),
+ inset: 3mm,
+ ..acronyms-dict
+ .pairs()
+ .sorted(key: ((short, _)) => short.normalize(form: "nfd"))
+ .map(((short, long)) => {
+ let cell-content = []
+ if type(long) == array {
+ if long.len() > 1 {
+ cell-content = [#long.at(0) #linebreak() #long.at(1)]
+ } else if long.len() == 1 {
+ cell-content = [#long.at(0)]
+ }
+ } else if type(long) == str {
+ cell-content = [#long]
+ }
+
+ ([#strong(short)], cell-content)
+ })
+ .flatten()
+ )
+ }
+}
+
+
+// Vložení bibliografie do práce
+// - volba typu zdroje: `yml` nebo `bib`
+// - volba citačního stylu: `numeric` nebo `harvard`
+// - kontroluje správnost vstupních hodnot (vyhazuje panic při chybě)
+// - vrací naformátovanou bibliografii dle CSL
+#let get-bibliography(type: "bib", style: "numeric") = {
+ // vyber správný soubor se zdroji
+ let get-file-path = if type == "yml" {
+ "../template/references.yml"
+ } else if type == "bib" {
+ "../template/references.bib"
+ } else {
+ if text.lang != "en" {
+ panic("Nepodporovaný typ souboru! Zvolte: `yml` | `bib`")
+ } else {
+ panic("Unsupported file type! Try: `yml` | `bib`")
+ }
+ }
+
+ context {
+ // vyber citační styl podle jazyka a parametru
+ let citation-style = if text.lang != "en" {
+ if style == "numeric" {
+ "./csl/numeric.csl"
+ } else if style == "harvard" {
+ "./csl/harvard.csl"
+ } else {
+ none
+ }
+ } else {
+ if style == "numeric" {
+ "iso-690-numeric"
+ } else if style == "harvard" {
+ "iso-690-author-date"
+ } else {
+ none
+ }
+ }
+
+ context bibliography(
+ title: {
+ if text.lang != "en" {
+ [SEZNAM POUŽITÝCH ZDROJŮ]
+ } else {
+ [BIBLIOGRAPHY]
+ }
+ },
+ style: citation-style,
+ get-file-path,
+ )
+ }
+}
+
+
+
+
+/* ==========================================
+ * 3. Hlavní funkce Template
+ * ========================================== */
+
+// Text následující za třemi lomítky (///) slouží pro automatickou tvorbu dokumentace.
+
+/// Hlavní vstupní funkce šablony pro sazbu akademické práce. Nastaví globální typografii, stránkování, titulní stranu, volitelné oddíly (zadání, poděkování, abstrakty, čestné prohlášení) a vygeneruje obsah a seznamy (zkratek, obrázků, tabulek, rovnic, výpisů).
+///
+/// *Příklad použití:*
+/// #block(width: 100%, breakable: true, stroke: 1pt, inset: 2pt,
+/// ```typ
+/// #set text(lang: "cs")
+/// #show: template(
+/// university: (
+/// faculty: "fvl",
+/// programme: "Řízení a použití ozbrojených sil",
+/// specialisation: "Management informačních zdrojů",
+/// ),
+/// thesis: (
+/// type: "ing",
+/// title: "Eliminace závislosti na aplikacích společnosti Microsoft v ozbrojených silách",
+/// ),
+/// author: (
+/// prefix: "rtm.",
+/// name: "Jan",
+/// surname: "Novák",
+/// suffix: none,
+/// sex: "M",
+/// ),
+/// supervisor: (
+/// prefix: "pplk. Ing.",
+/// name: "Jana",
+/// surname: "Nováková",
+/// suffix: "Ph.D.",
+/// sex: "F",
+/// ),
+/// first-advisor: (
+/// prefix: "Mgr.",
+/// name: "Jan",
+/// surname: "Novák",
+/// suffix: none,
+/// sex: "M",
+/// ),
+/// second-advisor: (
+/// prefix: "",
+/// name: "",
+/// surname: "",
+/// suffix: none,
+/// sex: none,
+/// ),
+/// assignment: (
+/// front: true,
+/// back: true,
+/// ),
+/// acknowledgement: [Chci poděkovat...],
+/// abstract: (
+/// czech: [V práci...],
+/// english: [In this thesis...],
+/// ),
+/// keywords: (
+/// czech: "Alfa, Bravo, ...",
+/// english: "Alpha, Bravo, ...",
+/// ),
+/// declaration: (
+/// declaration: true,
+/// ai-used: true,
+/// ),
+/// acronyms: (
+/// "ISO": ("International Organization for Standardization", "Mezinárodní organizace pro standardizaci"),
+/// "AČR": ("Armáda České republiky"),
+/// ),
+/// outlines: (
+/// headings: true,
+/// acronyms: true,
+/// figures: true,
+/// tables: true,
+/// equations: true,
+/// listings: true,
+/// ),
+/// introduction: [V současné vědecké komunitě se řeší...],
+/// guide: true,
+/// docs: false,
+/// )
+/// ```)
+/// *Funkcionality:*
+/// - Globální nastavení sazby, stránek a písem.
+/// - Titulní strana s logem fakulty/univerzity a metadaty.
+/// - Volitelné vložení zadání práce (obrázky PNG přes celou stranu).
+/// - Oddíl poděkování (nepovinný).
+/// - Abstrakty v češtině a angličtině + klíčová slova.
+/// - Čestné prohlášení s volbou deklarace použití AI.
+/// - Automatický obsah a seznamy (zkratky, obrázky, tabulky, rovnice, výpisy).
+/// - Číslování rovnic a figur s prefixem kapitoly.
+/// - Režim tisku s korektním stránkováním.
+///
+#let template(
+ university: (
+ /// /// Význam:
+ /// `faculty` — fakulta\
+ /// Podporované možnosti:
+ /// - `"fvl"` – Fakulta vojenského leadershipu / Faculty of Military Leadership
+ /// - `"fvt"` – Fakulta vojenských technologií / Faculty of Military Technology
+ /// - `"vlf"` – Vojenská lékařská fakulta / Military Faculty of Medicine
+ /// - `"uo"` – Univerzita obrany (bez uvedení konkrétní fakulty)
+ faculty: "uo",
+ /// `programme` – název studijního programu.\
+ /// Podporované možnosti:
+ /// - Vlastní text
+ programme: "",
+ /// `specialisation` – název studijní specializace.\
+ /// Podporované možnosti:
+ /// - Vlastní text
+ specialisation: "",
+ /// -> str
+ ),
+ thesis: (
+ type: "",
+ /// Význam:\
+ /// `type` – druh práce
+ /// - `"bc"` – Bakalářská práce / Bachelor Thesis
+ /// - `"ing"` – Diplomová práce / Master Thesis
+ /// - `"phd"` – Disertační práce / Dissertation
+ /// - `"teze"` – Teze disertační práce / Dissertation Proposal
+ /// `title` – název práce
+ /// - Vlastní text
+ title: "",
+ /// -> str
+ ),
+ /// Informace o osobě.\
+ /// Význam:
+ /// - `prefix` – hodnost a/nebo titul
+ /// - `name` – křestní jméno
+ /// - `surname` – příjmení
+ /// - `suffix` – titul za jménem
+ /// - `sex` – pohlaví ovlivňující skloňování v textu (`M` – Male nebo `F` – Female)
+ /// Stejný postup a logika platí i pro `supervisor`, `first-advisor`, `second-advisor`.
+ author: (
+ prefix: "",
+ name: "",
+ surname: "",
+ suffix: "",
+ sex: "",
+ /// -> str | none
+ ),
+ supervisor: (
+ /// Viz `author`.\
+ prefix: "",
+ name: "",
+ surname: "",
+ suffix: "",
+ sex: "",
+ /// -> str | none
+ ),
+ first-advisor: (
+ /// Viz `author`.\
+ prefix: "",
+ name: "",
+ surname: "",
+ suffix: "",
+ sex: "",
+ /// -> str | none
+ ),
+ second-advisor: (
+ /// Viz `author`.\
+ prefix: "",
+ name: "",
+ surname: "",
+ suffix: "",
+ sex: "",
+ /// -> str | none
+ ),
+ /// Nastavení čestného prohlášení.\
+ // Podporované možnosti:
+ /// - `true` – pravda/ano
+ /// - `false`– nepravda/ne
+ /// Význam:\
+ /// - `declaration` — čestné prohlášení.
+ /// - `ai-used` — použití nástrojů AI.
+ declaration: (
+ declaration: true,
+ ai-used: false,
+ /// -> bool
+ ),
+ /// Vložení naskenovaného zadání práce (PNG).\
+ // Podporované možnosti:
+ /// - `true` – pravda/ano
+ /// - `false`– nepravda/ne
+ /// Při `true` se očekává `/front.png` a `/back.png` v pracovní složce projektu.\
+ /// Obrázky jsou osazeny na stránku s negativním insetem (2.5cm) pro přesah.\
+ /// Význam:
+ /// - `front` – přední strana
+ /// - `back` – zadní strana
+ ///-> bool
+ assignment: (
+ front: true,
+ back: true,
+ ),
+ /// Poděkování (nepovinné).\
+ /// Podporované možnosti:
+ /// - `[...]` — Vlastní obsah poděkování\
+ /// - `false` — oddíl se nevloží
+ ///-> content | bool | none
+ acknowledgement: false,
+ outlines: (
+ /// Řízení generování obsahu a seznamů. Každá položka je `bool`.
+ // Podporované možnosti:
+ /// - `true` – pravda/ano
+ /// - `false`– nepravda/ne
+ /// Význam:
+ /// - `headings` — obsah
+ /// - `acronyms` — seznam zkratek
+ /// - `figures` — seznam obrázků
+ /// - `tables` — seznam tabulek
+ /// - `equations` — seznam rovnic
+ /// - `listings` — seznam výpisů kódu
+ headings: true,
+ acronyms: false,
+ figures: false,
+ tables: false,
+ equations: false,
+ listings: false,
+ /// -> bool
+ ),
+ /// Slovník zkratek (akronymy).\
+ /// Zápis:
+ /// - cizojazyčná zkratka:\ `"ISO": ("International Organization for Standardization", "Mezinárodní organizace pro standardizaci")`\
+ /// - česká zkratka:\ `"AČR": ("Armáda České republiky")`\
+ /// Při `false` se seznam negeneruje.
+ /// -> dictionary | bool
+ acronyms: false,
+ abstract: (
+ /// Abstrakt práce.\
+ /// Podporované možnosti:
+ /// - "" – vlastní text
+ /// Význam:
+ /// - `czech` — český abstrakt\
+ /// - `english` — anglický abstrakt\
+ /// - `[...]` — obsah abstraktu\
+ czech: [],
+ english: [],
+ /// -> content | bool
+ ),
+ keywords: (
+ /// Klíčová slova.\
+ /// Podporované možnosti:
+ /// - "" – vlastní text
+ /// Význam:
+ /// - `czech` — česká klíčová slova
+ /// - `english` — anglická klíčová slova
+ czech: "",
+ english: "",
+ /// -> str
+ ),
+ /// Úvod
+ /// Podporované možnosti:\
+ /// [ ] – vlastní obsah
+ /// -> content
+ introduction: [],
+ /// Stručná příručka pro seznámení s hlavními funkcemi.
+ // Podporované možnosti:
+ /// - `true` – pravda/ano
+ /// - `false`– nepravda/ne
+ /// -> bool
+ guide: true,
+ /// Rozšířená příručka včetně všech parametrů, hodnot a pomůcky.
+ // Podporované možnosti:
+ /// - `true` – pravda/ano
+ /// - `false`– nepravda/ne
+ /// -> bool
+ docs: false,
+ body,
+ ///
+) = {
+ // ==========================================
+ // 4.1. Základní nastavení
+ // ==========================================
+
+ // Barva odkazu url modrou barvou
+ show link: set text(fill: rgb("#0000FF"))
+
+ // Kódové prostředí
+ show: codly-init.with()
+ codly(languages: codly-languages)
+ show: apply-vlna
+
+ //Metadata
+ set document(
+ author: author.prefix
+ + " "
+ + author.name
+ + " "
+ + author.surname
+ + " "
+ + author.suffix,
+ title: thesis.title,
+ date: auto,
+ description: abstract.czech,
+ keywords: keywords.czech,
+ )
+
+ // Těsné vertikální lepení odstavců bez sirotků/vdov.
+ show par: it => {
+ let threshold = 10%
+ block(breakable: false, height: threshold)
+ v(-threshold, weak: true)
+ it
+ }
+
+ set text(
+ bottom-edge: "bounds",
+ size: 12pt,
+ overhang: true,
+ font: ("TeX Gyre Termes", "Times New Roman"),
+ fallback: true,
+ hyphenate: false,
+ costs: (runt: 1000%, hyphenation: 1000%, widow: 1000%, orphan: 1000%),
+ )
+
+ show math.equation: set text(font: ("TeX Gyre Termes Math", "Cambria Math", "STIX Two Math"), fallback: true)
+ show raw: set text(font: ("TeX Gyre Cursor", "Consolas", "SF NS Mono"), fallback: true)
+
+ set page(
+ margin: (inside: 35mm, outside: 25mm, y: 25mm),
+ numbering: "1",
+ footer: context {
+ set align(center)
+ counter(page).display(page.numbering)
+ },
+ paper: "a4",
+ binding: auto,
+ )
+
+ // ==========================================
+ // 3.2. Stylování podle fakulty
+ // ==========================================
+ let faculty-color = get-faculty-color(university.faculty)
+
+ set par(
+ first-line-indent: (amount: 7mm, all: true),
+ linebreaks: "optimized",
+ leading: 1.05em,
+ justify: true,
+ )
+
+ set enum(indent: 1em)
+ set list(indent: 1em)
+
+ set math.equation(numbering: (..nums) => {
+ let section = counter(heading).get().first()
+ numbering("(1.1)", section, ..nums)
+ })
+
+ // ==========================================
+ // MANUÁL
+ // ==========================================
+
+ if docs != false { include "docs.typ" } else {}
+
+ // ==========================================
+ // 3.3. Titulní strana
+ // ==========================================
+ {
+ show heading: none
+ context heading(
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ outlined: false,
+ )[
+ #if text.lang != "en" { [TITULNÍ LIST] } else { [TITLE PAGE] }
+ ]
+ }
+
+ {
+ set par(first-line-indent: 0mm)
+ set page(footer: none)
+ set align(center)
+
+ text(size: 16pt)[
+ #upper(
+ context if text.lang != "en" { [Univerzita obrany] } else {
+ [University of Defence]
+ },
+ )
+ ]
+ linebreak()
+
+ text(size: 14pt, weight: "bold")[
+ #if university.faculty != "uo" {
+ upper(get-faculty-name(university.faculty))
+ linebreak()
+ } else {}
+ ]
+
+ if university.programme != none {
+ text(size: 14pt, weight: "bold")[
+ #context if text.lang != "en" { [Studijní program: ] } else {
+ [Programme: ]
+ }
+ #university.programme
+ #linebreak()
+ ]
+ } else {}
+
+ if university.specialisation != none {
+ text(size: 14pt)[
+ #context if text.lang != "en" { [Studijní specializace: ] } else {
+ [Specialisation: ]
+ }
+ #university.specialisation
+ #linebreak()
+ ]
+ } else {}
+
+ v(1cm)
+ image(get-logo-path(university.faculty), height: 8cm)
+ linebreak()
+ v(.5cm)
+
+ text(size: 24pt, weight: "bold")[
+ #upper(get-thesis-type-name(thesis.type))
+ #linebreak()
+ ]
+ v(1cm)
+
+ text(size: 16pt, weight: "bold")[
+ #thesis.title
+ #linebreak()
+ ]
+ v(1fr)
+
+ set align(left)
+
+ text(size: 14pt)[
+ // Autor
+ #context if author.sex != "F" {
+ if text.lang != "en" { [Zpracoval:] } else { [Author:] }
+ } else {
+ if text.lang != "en" { [Zpracovala:] } else { [Author:] }
+ }
+ #format-name(author)
+ #linebreak()
+
+ // Vedoucí / Školitel
+ #if supervisor != none {
+ context if thesis.type == "bc" or thesis.type == "ing" {
+ if text.lang != "en" { [Vedoucí práce:] } else { [Supervisor:] }
+ } else {
+ if text.lang != "en" { [Školitel:] } else { [Supervisor:] }
+ }
+ format-name(supervisor)
+ linebreak()
+ }
+
+ // Odborný konzultant, nebo první školitel specialista
+ #if first-advisor != none {
+ context if thesis.type == "bc" or thesis.type == "ing" {
+ if text.lang != "en" { [Odborný konzultant:] } else { [Advisor:] }
+ } else {
+ if text.lang != "en" { [Školitel-specialista:] } else {
+ [Co-Supervisor:]
+ }
+ }
+ format-name(first-advisor)
+ linebreak()
+ }
+
+ // Druhý školitel specialista
+ #if (
+ second-advisor != none and thesis.type == "phd" or thesis.type == "teze"
+ ) {
+ context if text.lang != "en" { [Školitel-specialista:] } else {
+ [Co-Supervisor:]
+ }
+ format-name(second-advisor)
+ linebreak()
+ }
+ ]
+
+ // Město a datum
+ v(1fr)
+ set align(center)
+ text(
+ size: 16pt,
+ upper(get-city-name(university.faculty)) + ez-today.today(format: " Y"),
+ )
+ }
+
+
+ // ==========================================
+ // 3.4. Nastavení nadpisů
+ // ==========================================
+ set page(footer: none)
+ set heading(numbering: "1.1.1", supplement: [heading], depth: 3)
+
+ show heading.where(level: 1): it => {
+ pagebreak()
+ counter(figure.where(kind: table)).update(0)
+ counter(figure.where(kind: image)).update(0)
+ counter(math.equation).update(0)
+
+ block(width: 100%)[
+ #set text(size: 14pt, weight: "bold")
+ #set par(first-line-indent: 0mm)
+ #upper(it)
+ #v(1em)
+ ]
+ }
+
+ show heading.where(level: 2): it => block(width: 100%)[
+ #set text(size: 14pt, weight: "bold")
+ #v(.5em)
+ #it
+ #v(.5em)
+ ]
+
+ show heading.where(level: 3): it => block(width: 100%)[
+ #set text(size: 13pt, weight: "bold")
+ #v(.5em)
+ #it
+ #v(.5em)
+ ]
+
+ show heading.where(level: 4): it => block(width: 100%)[
+ #set text(size: 12pt, weight: "bold")
+ #v(.5em)
+ #it
+ #v(.5em)
+ ]
+ show heading.where(level: 4): set heading(numbering: none)
+
+ // ==========================================
+ // 3.5. Zadání práce
+ // ==========================================
+ context if assignment.front != false or assignment.back != false {
+ {
+ show heading: none
+ heading(numbering: none, bookmarked: true, outlined: false, level: 1)[
+ #if text.lang != "en" { [ZADÁNÍ PRÁCE] } else { [ASSIGNMENT] }
+ ]
+ pagebreak(to: "odd")
+ }
+ } else {}
+
+ if assignment.front != false {
+ box(image("../template/front.png", width: 100%), inset: -2.5cm)
+ } else {}
+ if assignment.back != false {
+ box(image("../template/back.png", width: 100%), inset: -2.5cm)
+ } else {}
+
+ // ==========================================
+ // 3.6. Poděkování
+ // ==========================================
+ context if acknowledgement != [] {
+ heading(
+ if text.lang != "en" { [PODĚKOVÁNÍ] } else { [ACKNOWLEDGEMENT] },
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ )
+ acknowledgement
+ } else {
+ heading(
+ if text.lang != "en" { [PODĚKOVÁNÍ] } else { [ACKNOWLEDGEMENT] },
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ )
+ [Text poděkování \ Poděkování není povinnou součástí závěrečné práce. Je vhodné vyjádřit poděkování rodičům, vedoucímu závěrečné práce, konzultantům či osobám, které Vám pomohly / byly nápomocny při zpracování závěrečné práce nebo v průběhu studia.]
+ }
+
+ // ==========================================
+ // 3.7. Čestné prohlášení
+ // ==========================================
+ context if declaration.declaration != false {
+ heading(
+ if text.lang != "en" { [ČESTNÉ PROHLÁŠENÍ] } else { [DECLARATION] },
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ )
+
+ [
+ Prohlašuji, že jsem zadanou #get-thesis-type-name(thesis.type, variant: 3)
+ na téma #emph[#thesis.title] #lower[vypracoval] samostatně, pod odborným vedením
+ #if thesis.type == "bc" or thesis.type == "ing" {
+ if supervisor.sex == "M" { [vedoucího práce] } else { [vedoucí práce] }
+ } else {
+ if supervisor.sex == "M" { [školitele] } else { [školitelky] }
+ }
+ #format-supervisor-for-declaration(supervisor) a
+ #context if author.sex == "M" { [použil] } else { [použila] } jsem pouze literární zdroje uvedené v práci.
+
+ #parbreak()
+
+ Dále prohlašuji, že při vytváření této práce jsem
+ #if declaration.ai-used != false {
+ context if author.sex == "M" { [použil] } else { [použila] }
+ [
+ nástroje umělé inteligence. Tyto nástroje byly využity v souladu s platnými obecně závaznými právními předpisy, vnitřními předpisy
+ Univerzity obrany a #get-faculty-name(university.faculty, variant: 2)
+ a etickými normami. Veškeré výsledky, které byly generovány nebo
+ ovlivněny nástroji umělé inteligence, jsou v této práci
+ identifikovány, popsány a podloženy relevantními informacemi o
+ použitých algoritmech, tréninkových datech a metodologii.
+ ]
+ } else {
+ context if author.sex == "M" { [nepoužil] } else { [nepoužila] }
+ [ nástroje umělé inteligence. ]
+ }
+
+ #parbreak()
+
+ Dále prohlašuji, že jsem
+ #context if author.sex == "M" { [seznámen] } else { [seznámena] }
+ s tím, že se na moji #text(lang: "cs")[#get-thesis-type-name(thesis.type, variant: 3)]
+ vztahují práva
+ a povinnosti vyplývající ze zákona č. 121/2000 Sb., o právu autorském,
+ o právech souvisejících s právem autorským a o změně některých zákonů
+ (autorský zákon), ve znění pozdějších předpisů, zejména skutečnosti,
+ že Univerzita obrany má právo na uzavření licenční smlouvy o užití
+ této #text(lang: "cs")[#get-thesis-type-name(thesis.type, variant: 2)]
+ jako školního díla
+ podle §~60~odst.~1 výše uvedeného zákona, a s tím, že pokud dojde k
+ užití této #text(lang: "cs")[#get-thesis-type-name(thesis.type, variant: 2)]
+ mnou nebo
+ bude poskytnuta licence o užití díla třetímu subjektu, je Univerzita
+ obrany oprávněna ode mne požadovat přiměřený příspěvek na úhradu
+ nákladů, které na vytvoření díla vynaložila, a to podle okolností až
+ do jejich skutečné výše.
+
+ #parbreak()
+
+ Souhlasím se zpřístupněním své
+ #text(lang: "cs")[#get-thesis-type-name(thesis.type, variant: 2)]
+ pro prezenční studium v prostorách knihovny Univerzity obrany.
+
+ #v(2cm)
+ #align(center, grid(
+ align: (left, center),
+ columns: (50%, 50%),
+ rows: 2,
+ [
+ V #get-city-name(university.faculty, variant: 2),
+ dne #lower[#ez-today.today(lang: "cs", format: "d. m. Y")]
+ ],
+ [#box(width: 1fr, repeat[.])],
+
+ v(.5cm), [],
+ [], [#format-name(author)],
+ ))
+ ]
+ }
+
+
+ // ==========================================
+ // 3.8. Abstrakty
+ // ==========================================
+
+ // Abstrakt česky
+ if abstract.czech != [] {
+ heading(
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ )[ABSTRAKT]
+ abstract.czech
+ parbreak()
+ h(-7mm) + [*Klíčová slova*: ] + keywords.czech
+ } else {
+ heading(
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ )[ABSTRAKT]
+ [Abstrakt představuje stručnou a přesnou charakteristiku obsahu závěrečné práce, poskytuje informace o problému, způsobu řešení a dosažených výsledcích práce. Rozsah abstraktu v českém jazyce do jedné #footnote[Jako pomocník pro vypracování možné využít: ČSN ISO 214 Dokumentace – abstrakty pro publikace a dokumentaci, případně: https://www.herout.net/blog/2013/12/jak-psat-abstrakt]strany.]
+ parbreak()
+ (
+ h(-7mm)
+ + [*Klíčová slova*: ]
+ + [ uvádí se 5–10 klíčových slov (= hesla, sousloví a fráze) v abecedním
+ pořadí, které charakterizují obsahovou podstatu závěrečné práce]
+ )
+ }
+
+ // Abstrakt anglicky
+ if abstract.english != [] {
+ heading(
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ )[ABSTRACT]
+ abstract.english
+ parbreak()
+ h(-7mm) + [*Keywords*: ] + keywords.english
+ } else {
+ heading(
+ numbering: none,
+ bookmarked: true,
+ level: 1,
+ )[ABSTRACT]
+ [Text abstraktu v anglickém jazyce.]
+ parbreak()
+ h(-7mm) + [*Keywords*: ]
+ }
+
+
+ // ==========================================
+ // 3.9. Seznamy (obsah, zkratky, obrázky, …)
+ // ==========================================
+ set page(footer: context {
+ set align(center)
+ counter(page).display(page.numbering)
+ })
+
+ // Obsah vzhled
+ if outlines.headings != false {
+ show outline.entry.where(level: 1): it => {
+ set text(size: 14pt, weight: "bold")
+ upper(it)
+ }
+ show outline.entry.where(level: 2): it => {
+ set text(size: 13pt)
+ it
+ }
+ show outline.entry.where(level: 3): it => {
+ set text(size: 12pt, style: "italic")
+ it
+ }
+
+ // Obsah
+ outline(
+ target: heading.where(supplement: [heading]),
+ indent: 1em,
+ depth: 3,
+ title: context if text.lang != "en" { [OBSAH] } else {
+ [TABLE OF CONTENTS]
+ },
+ )
+ }
+
+ // Seznam zkratek
+ context if outlines.acronyms != false {
+ heading(
+ bookmarked: true,
+ outlined: true,
+ numbering: none,
+ level: 1,
+ )[#if text.lang != "en" { [SEZNAM ZKRATEK] } else { [LIST OF ACRONYMS] }]
+ generate-acronyms-list(acronyms)
+ }
+
+ // Seznam obrázků
+ context if outlines.figures != false {
+ heading(
+ bookmarked: false,
+ outlined: true,
+ numbering: none,
+ level: 1,
+ )[#if text.lang != "en" { [SEZNAM OBRÁZKŮ] } else { [LIST OF FIGURES] }]
+ outline(title: none, target: figure.where(kind: image))
+ }
+
+ // Seznam tabulek
+ context if outlines.tables != false {
+ heading(
+ bookmarked: true,
+ outlined: true,
+ numbering: none,
+ level: 1,
+ )[#if text.lang != "en" { [SEZNAM TABULEK] } else { [LIST OF TABLES] }]
+ outline(title: none, target: figure.where(kind: table))
+ }
+
+ // Seznam rovnic
+ context if outlines.equations != false {
+ heading(
+ bookmarked: true,
+ outlined: true,
+ numbering: none,
+ level: 1,
+ )[#if text.lang != "en" { [SEZNAM ROVNIC] } else { [LIST OF EQUATIONS] }]
+ outline(title: none, target: math.equation)
+ }
+
+ // Seznam výpisů
+ context if outlines.listings != false {
+ heading(
+ bookmarked: true,
+ outlined: true,
+ numbering: none,
+ level: 1,
+ )[#if text.lang != "en" { [SEZNAM VÝPISŮ] } else { [LIST OF LISTINGS] }]
+ outline(title: none, target: figure.where(kind: raw))
+ }
+
+ // ==========================================
+ // 3.10. Úvod
+ // ==========================================
+
+ context if introduction != [] {
+ heading(level: 1, outlined: true, numbering: none)[#if text.lang != "en" {
+ [ÚVOD]
+ } else { [INTRODUCTION] }]
+ introduction
+ } else {
+ [#heading(level: 1, outlined: true, numbering: none)[#if text.lang != "en" {
+ [ÚVOD]
+ } else { [INTRODUCTION] }]
+ Úvod vyjadřuje aktuálnost, významnost a potřebnost řešeného problému z hlediska teorie či praxe. V úvodu se nepíše cíl práce, použité metody ani obsah práce. K tomuto účelu slouží samostatné kapitoly závěrečné práce. Doporučený rozsah úvodu je 1–2 normostrany.]
+ }
+
+ // ==========================================
+ // 3.11. Nastavení obrázků a tabulek
+ // ==========================================
+
+ // Popisky figur – číslo + text, vždy s mezerou nad
+ set figure.caption(separator: " ")
+ show figure.caption: it => [
+ #v(1em)
+ #it.supplement #context it.counter.display(it.numbering)~#it.body
+ #v(1em)
+ ]
+
+ // Základní styl figure
+ let figure-spacing = 1em
+ show figure: it => {
+ let content = block(width: 100%, inset: (y: figure-spacing), align(
+ center,
+ it,
+ ))
+ if it.placement == none {
+ block(it, inset: (y: figure-spacing))
+ } else {
+ place(it.placement, float: true, content)
+ }
+ }
+ show figure: set block(breakable: true, spacing: 1.2em)
+ show figure: align.with(center)
+
+ // Tabulky, kódy a rovnice – popisek nahoře
+ show table.cell.where(y: 0): strong
+ set table(stroke: 0.7pt)
+ show figure.where(kind: table): set figure.caption(
+ position: top,
+ separator: [],
+ )
+ show figure.where(kind: raw): set figure.caption(position: top, separator: [])
+ show figure.where(kind: math.equation): set figure.caption(
+ position: top,
+ separator: [],
+ )
+
+ // Rovnice – svislé mezery před a po
+ show math.equation.where(block: true): it => {
+ v(.5em)
+ it
+ v(.5em)
+ }
+
+ // Tabulky – menší font + zarovnání
+ show table: set text(size: 10pt, hyphenate: true)
+ show table: set par(justify: true)
+ set table.hline(stroke: .5pt)
+
+ // Číslování figur s prefixem kapitoly
+ set figure(numbering: n => numbering(
+ "1.1 ",
+ counter(heading).get().first(),
+ n,
+ ))
+
+ if guide != false [
+ #set text(fill: red)
+ = –ZÁKLADNÍ NÁVOD DLE OPATŘENÍ –
+ Červený text lze vypnout přepnutím z `guide: true` na `guide: false` v nastavení.
+ Základní rozdělení typů textu při formátování.
+ ```typ
+ Text (String) – "". Jednoduchý textový řetězec bez možnosti formátování.
+ Obsah (Content) – []. Blok pro vkládání formátovaného obsahu (odstavce, seznamy atd.).
+ Pole (Array) – (). Seznam nebo sada více položek (např. galerie, výčet vlastností).
+ Přepínač (Boolean) – true | false. Logická hodnota pro stavy ano/ne nebo zapnuto/vypnuto.
+ Číslo (Int) – 1. Číselná hodnota
+ ```
+ Příklad vyplnění základních parametrů šablony s vysvětlením.
+ ```typ
+ #show: template.with( // Zobrazí šablonu (`template`) s následujícími hodnotami:
+ university:( // Pole `university`, které nese informaci o typu fakulty (`faculty`), studijního programu (`programme`) a studijní specializaci (`specialisation`).
+ faculty: "fvl", // Studují na Fakultě vojenského leadershipu zvolím `fvl`. Možnosti: `fvl`, `fvt`, `vlf` a `uo`.
+ programme: [Řízení a použití ozbrojených sil], // Vlastními slovy níázev studijního programu.
+ specialisation: [Management informačních zdrojů], // Vlastními slovy název studijního oboru.
+ ),
+ thesis:( // Pole závěrečné práce (`thesis`), které nese informaci o typu závěrečné práce (`type`) a její název (`title`).
+ type: "ing", // Píši diplomovou práci zvolím `ing`. Možnosti `bc`, `ing`, `phd` a `teze`.
+ title: [Eliminace závislosti na aplikacích Microsoftu v ozbrojených silách], // Vlastními slovy název práce.
+ ),
+ author: ( // Pole s autorem (`author`). Struktura: `prefix`, `name`, `surname`, `suffix` a `sex` jsou pro osoby stejné.
+ prefix: "rtm.", // Před jménem ve formátu hodnost. titul.
+ name: "Jan", // Jméno
+ surname: "Novák", // Příjmení
+ suffix: none, // Titul za jménem. Pokud není píšeme `none`.
+ sex: "M", // Pohlaví. Možnosti: `M` nebo `F`.
+ ),
+ supervisor: ( // Vedoucí práce (`bc`, `ing`), nebo Školitel (`phd`, `teze`)
+ prefix: "pplk. Ing.",
+ name: "Jana",
+ surname: "Nováková",
+ suffix: "Ph.D.",
+ sex: "F",
+ ),
+ first-advisor: ( // Odborný konzultant (`bc` a `ing`), nebo První školitel-specialista (`phd`, `teze`)
+ prefix: "Mgr.",
+ name: "Jan",
+ surname: "Novák",
+ suffix: none,
+ ),
+ second-advisor: ( // Druhý školitel-specialista (`phd`, `teze`)
+ prefix: "",
+ name: "",
+ surname: "",
+ suffix: none,
+ ),
+ assignment: ( // Pole zadáná (`assignment`), které nese informaci o přítomnosti přední (`front`) a zadní (`back`) strany zadání.
+ front: true, // Přední strana
+ back: true, // Zadní strana
+ ),
+ acknowledgement: [Chci poděkovat, .....], // Vlastní obsah poděkování.
+ abstract:( // Pole s abstraktem (`abstract`), které obsahuje českou (`czech`) a anglickou (`english`) variantu.
+ czech: [V práci .....], // Vlastní obsah abstraktu v češtině.
+ english: [In this thesis ....], // Vlastní obsah abstraktu v angličtině.
+ ),
+ keywords:( // Pole s klíčovými slovy (`keywords`), které obsahuje českou (`czech`) a anglickou (`english`) variantu.
+ czech: "Alfa, Bravo, ...", // Vlastní text klíčových slov v češtině.
+ english: "Alfa, Brava,...", // Vlastní text klíčových slov v angličtině.
+ ),
+ declaration:( // Pole s Čestným prohlášením (`declaration`), které obsahuje přítomnost čestného prohlášení (`declaration`) a použití umělé inteligence (`ai-used`).
+ declaration: true, // Zobrazit čestné prohlášení. Možnosti: `true`nebo `false`.
+ ai-used: true, // Byla v práci použita generativní umělá inteligence? Možnosti: `true`nebo `false`.
+ ),
+ acronyms: ( // Pole s automaticky seřazovanými zkratkami (`acronyms`)
+ "CIZÍ ZKRATKA": ("CIZÍ VARIANTA", "ČESKÁ VARIANTA"),
+ "ČESKÁ ZKRATKA": ("ČESKÁ VARIANTA"),
+ "ISO": ("International Organization for Standardization","Mezinárodní organizace pro standardizaci"), // Příklad anglické zkratky
+ "AČR": ("Armáda České republiky"), // Příklad české zkratky
+ ),
+ outlines:( // Pole se seznamy. Možnosti: `true` nebo `false`
+ headings: true, // Obsah
+ acronyms: true, // Seznam zkratek
+ figures: true, // Seznam obrázků
+ tables: true, // Seznam tabulek
+ equations: true, // Seznam rovnic
+ listings: true, // Seznam výpisů/kódů
+ ),
+ introduction: [V současné vědecké komunitě se řeší ...], // Vlastní obsah úvodu
+ guide: true, // Stručný návod. Možnosti. `true` nebo `false`
+ docs: false, // Manuál. Možnosti: `true` nebo `false`
+ )
+ ```
+
+ *1. Kapitola – TEORETICKÁ ČÁST / ANALÝZA SOUČASNÉHO
+ STAVU*
+
+ Vyberte pouze jeden nadpis.
+
+ Úvod ke kapitole v rozsahu 3–5 řádků, který představuje náplň kapitoly. Každá kapitola začíná na nové stránce.
+
+ Text se člení na hlavní kapitoly, podkapitoly (např. 1.1) a oddíly (např. 1.1.1), další členění se nedoporučují.
+
+ Název kapitoly volíte pouze jeden v závislosti na obsahu práce.
+
+ Jednotlivé oddíly kapitoly by měly být z hlediska rozsahu vyvážené (přibližně stejně dlouhé).
+
+ Podle Pravidel českého pravopisu se nepíší neslabičné předložky v, s, z, k na konec řádku, podle typografické normy jednopísmenná slova (předložky a spojky a, i, o, u) a jakékoli jednoslabičné výrazy (např. ve, ke, ku, že, na, do, od, pod). Nepoužívejte automatické dělení slov. Spojení slov lze provést pomocí tzv. vlny #"~" (Windows: alt + 126, GNU/Linux Pravý Alt + 126, MacOS: option + 5) příklad Text a~spojený text.
+
+ V případě používání výčtu je možné položky výčtu označovat číslicemi, písmeny abecedy, pomlčkami, odrážkami nebo jinými grafickými prvky. Bližší úpravu a zásady psaní položek výčtu naleznete na http://prirucka.ujc.cas.cz/?id=870.
+
+ Doporučuje se, aby na tabulky a obrázky byly zařazeny poblíž jejich první citace v textu. Při citaci v textu, musí číslům tabulek nebo obrázků předcházet nebo po nich následovat slova obrázek nebo tabulka. Za obrázky je považována kresba, graf, fotografie, mapa. Tabulky a obrázky musí být čitelné.
+
+ U každého obrázku a tabulky musí být uveden krátký horizontální a neorámovaný popisný text. Popisný text tabulky musí být napsán nad tabulkou za arabskou číslicí přidělenou tabulce. Legenda k obrázku musí být umístěna pod obrázkem. Legenda
+ k obrázku musí být umístěna za arabskou číslici přidělenou obrázku. U nepůvodních obrázků a tabulek se uvádí pramen. Obrázky a tabulky se číslují odděleně a posloupně.
+
+ ==== Praktická ukázka nejčastějších zápisů:
+
+ ==== 1 NÁZEV KAPITOLY
+ ==== 1.1 Podkapitola
+ ==== 1.1.1 Oddíl
+ ==== Čtvrtý řád – pokud je potřeba, nemá číslování
+
+ ==== Zápis
+ ```typst
+ = NÁZEV KAPITOLY
+ == Podkapitola
+ === Oddíl
+ ==== Čtvrtý řád – pokud je potřeba, nemá číslování
+ ```
+ ==== Obrázek s titulkem
+ Pozn. Pokud se nevleze společně se zdrojem na jednu stranu můžeme jej odsadit s pomocí `#colbreak()` (column break).
+ #figure(
+ caption: [Název obrázku],
+ image(
+ "../thumbnail.png",
+ width: 5cm,
+ height: 5cm,
+ ),
+ )
+ Zdroj: @fvl[Rozsah stran]
+
+ Reference na @obr:Můj-obrázek, nebo také na @obr:Můj-obrázek[cokoliv co napišu]
+
+ ==== Zápis
+
+ ```typ
+ #figure(
+ caption: [Název obrázku], // Titulek
+ image(
+ "obrazek.png", // Cesta k obrázku
+ width: 5cm, // Šířka
+ height: 5cm, // Výška
+ ),
+ ) // Vytvoření štítku k odkazování
+ Zdroj: @fvl[Rozsah stran] // Zdroj
+ Reference na @obr:Můj-obrázek, nebo také na @obr:Můj-obrázek[cokoliv co napišu] // Odkázání na obrázek. Provázáno přes proklik. V hranatých závorkách lze upravit název.
+ ```
+
+ ==== *Tabulka s titulkem*
+ #figure(
+ caption: [Název tabulky],
+ table(
+ columns: 3,
+ rows: 3,
+ table.header([Záhlaví Jedna], [Záhlaví dva], [Záhlaví tři]),
+ [První buňka], [Druhá buňka], [Třetí buňka],
+ [Čtvrtá buňka], [Pátá buňka], [Šestá buňka],
+ table.footer([Zápatí jedna], [Zápatí dva], [Zápatí tři]),
+ ),
+ )
+ @tab:Moje-tabulka
+ ==== Zápis
+ ```typ
+ #figure(
+ caption: [Název tabulky], // Titulek
+ table(
+ columns: 3, // Počet sloupců
+ rows: 3, // Počet řádků
+ table.header([Záhlaví Jedna], [Záhlaví dva], [Záhlaví tři]), // Záhlaví
+ [První buňka], [Druhá buňka], [Třetí buňka], // Tělo tabulky
+ [Čtvrtá buňka], [Pátá buňka], [Šestá buňka],
+ table.footer([Zápatí jedna], [Zápatí dva], [Zápatí tři] // Zápatí
+ )
+ )
+ )
+ @tab:Moje-tabulka
+ ```
+
+ ==== Matematika – inline
+ Text $a+b=3$ Pokračování textu
+
+ ==== Zápis
+ ```typ
+ $a+b=3$
+ ```
+ ==== Bloková
+
+ Text
+ $
+ x = (-b plus.minus sqrt(b^2 - 4 a c)) / (2a)
+ $
+ Pokračování textu
+ ==== Zápis
+ ```typ
+ $
+ x = (-b plus.minus sqrt(b^2 - 4 a c)) / (2a)
+ $
+ ```
+ ==== Kód
+ #figure(
+ caption: [Název kódu/výpisu],
+ ```python
+ print("Hello, World!")
+ ```,
+ )
+ ==== Zápis
+ ````typ
+ #figure(
+ caption: [Název kódu/výpisu],
+ ```python
+ print("Hello, World!")
+ ```
+ )
+ ````
+
+
+
+ ]
+
+
+ // ==========================================
+ // 3.12. Hlavní obsah
+ // ==========================================
+ body
+}
+/* ==========================================
+ * 4. Funkce annex pro přílohy
+ * ========================================== */
+
+/// Funkce `annex` nastavuje sazbu a číslování příloh. \
+///— příloha začíná na liché straně; \
+///— stránky příloh se číslují ve tvaru `A–1`, `A–2`, … (písmeno dle pořadí přílohy); \
+///— samostatně se resetují čítače obrázků, tabulek a rovnic; \
+///— hlavní nadpis kapitoly je „PŘÍLOHA“ / „ANNEX“ a je označen písmenem.
+///
+/// *Příklad použití:*
+/// #block(width: 100%, breakable: true,
+/// ```typ
+/// #show: annex
+/// = Název přílohy
+/// Text přílohy
+/// ```)
+/// Pozn.: Pokud je v projektu povolen outline pro přílohy, vygeneruje se i „Seznam příloh“ s odkazy.
+#let annex(body) = {
+ // Pokud se má vytvářet outline
+ if outline != false {
+ show outline.entry: it => [
+ #upper(strong(it.indented(it.prefix(), it.body())))
+ ]
+ outline(
+ target: heading.where(supplement: context {}),
+ title: context if text.lang != "en" { [SEZNAM PŘÍLOH] } else {
+ [LIST OF ANNEXES]
+ },
+ depth: 1,
+ )
+ }
+ // Nadpis pro seznam příloh
+ show heading: none
+ context heading(numbering: none, level: 1)[
+ #if text.lang != "en" { [SEZNAM PŘÍLOH] } else { [LIST OF ANNEXES] }
+ ]
+
+ // Nadpisy 1. úrovně v přílohách
+ show heading.where(level: 1): set heading(
+ numbering: "A",
+ supplement: context {
+ if text.lang != "en" { [PŘÍLOHA] } else { [ANNEX] }
+ },
+ )
+
+ show heading.where(level: 1): it => [
+ #set text(size: 14pt, weight: "bold")
+ #set par(first-line-indent: 0mm)
+ #it.supplement
+ #{
+ if it.numbering != none {
+ numbering(it.numbering, ..counter(heading).at(it.location()))
+ }
+ }
+ #upper(it.body)
+ // reset čítačů
+ #counter(figure.where(kind: table)).update(0)
+ #counter(figure.where(kind: image)).update(0)
+ #counter(math.equation).update(0)
+ #counter(page).update(1)
+ ]
+
+ // Nová příloha vždy na nové straně + reset čítačů
+ show heading.where(level: 1): it => {
+ pagebreak()
+ counter(page).update(1)
+ counter(figure.where(kind: table)).update(0)
+ counter(figure.where(kind: image)).update(0)
+ it
+ }
+
+ // Číslování stránek v přílohách
+ set page(
+ numbering: n => numbering(
+ "A–1",
+ counter(heading).get().first(), // A/B/C podle přílohy
+ n, // číslo stránky
+ ),
+ footer: context {
+ set align(center)
+ counter(page).display(page.numbering)
+ },
+ )
+
+ // Reset hlavních čítačů
+ counter(page).update(1)
+ counter(heading).update(0)
+ set heading(numbering: "A")
+
+ // Nastavení číslování a popisků obrázků, tabulek, rovnic…
+ set figure(numbering: n => numbering(
+ "A–1",
+ counter(heading).get().first(),
+ n,
+ ))
+
+ show figure.where(kind: image): set figure(
+ outlined: false,
+ )
+
+ show figure.where(kind: table): set figure(
+ outlined: false,
+ )
+
+ show figure.where(kind: math.equation): set figure(
+ outlined: false,
+ )
+
+ show figure.where(kind: raw): set figure(
+ outlined: false,
+ )
+
+ // V přílohách zakážeme číslování hlubších nadpisů
+ show heading.where(level: 2): set heading(numbering: none, outlined: false)
+ show heading.where(level: 3): set heading(numbering: none, outlined: false)
+ show heading.where(level: 4): set heading(numbering: none, outlined: false)
+
+ // Obsah přílohy
+ body
+}
diff --git a/unob-thesis/0.1.0/template/back.png b/unob-thesis/0.1.0/template/back.png
new file mode 100644
index 0000000000..81658bd9cf
Binary files /dev/null and b/unob-thesis/0.1.0/template/back.png differ
diff --git a/unob-thesis/0.1.0/template/front.png b/unob-thesis/0.1.0/template/front.png
new file mode 100644
index 0000000000..2920f164d1
Binary files /dev/null and b/unob-thesis/0.1.0/template/front.png differ
diff --git a/unob-thesis/0.1.0/template/references.bib b/unob-thesis/0.1.0/template/references.bib
new file mode 100644
index 0000000000..688ea91d04
--- /dev/null
+++ b/unob-thesis/0.1.0/template/references.bib
@@ -0,0 +1,83 @@
+% Citační manažer pro BibLaTeX zdarma dostupná na url https://www.zotero.org
+% Vše níže můžete smazat, jedná se o ukázku.
+@online{fvl,
+ author = {UO},
+ title = {Logo Univerzity obrany},
+ year = {2025},
+ url = {https://fvl.unob.cz/fakulta/zamereni-fakulty/symboly/},
+ urldate = {2013-05-16}
+}
+@book{cslTestBook,
+ author = {Autor, první},
+ editor = {Editor, První},
+ title = {Hlavní název knihy},
+ subtitle = {Podtitul pro testování},
+ volume = {4},
+ part = {II},
+ edition = {3},
+ publisher = {Vydavatelství Test},
+ location = {Město vydání},
+ date = {2023-05-15},
+ year = {2023},
+ month = {5},
+ day = {15},
+ series = {Edice testovacích publikací},
+ number = {7},
+ pages = {123-145},
+ pagetotal = {300},
+ isbn = {978-3-16-148410-0},
+ issn = {1234-5678},
+ doi = {10.1000/123456},
+ url = {http://example.com},
+ urldate = {2024-01-01},
+ abstract = {Toto je krátký abstrakt pro testování zobrazení delších poznámek v bibliografii.},
+ note = {Důležitá poznámka k této položce.},
+ addendum = {Dodatek obsahující další informace.},
+ language = {czech},
+ origlanguage = {english},
+ translator = {Překladatel, Jméno},
+ annotation = {Anotace pro interní použití, která by se neměla zobrazovat.},
+ keywords = {test, csl, biblatex},
+}
+
+@article{cslTestArticle,
+ author = {Autor, Časopisecký},
+ title = {Název článku},
+ journal = {Vědecký časopis},
+ year = {2022},
+ volume = {15},
+ number = {3},
+ pages = {45-58},
+ issn = {0987-6543},
+ doi = {10.1007/s12345-021-01234-5},
+ month = {7},
+}
+
+@incollection{cslTestInCollection,
+ author = {Autor, Příspěvkový},
+ title = {Název kapitoly nebo příspěvku},
+ booktitle = {Sborník z konference},
+ editor = {Editor, Sborníkový},
+ publisher = {Vydavatel sborníků},
+ year = {2021},
+ pages = {210-235},
+ address = {Místo konání},
+}
+
+@online{cslTestOnline,
+ author = {Webový, Autor},
+ title = {Název online zdroje},
+ year = {2020},
+ url = {http://onlinetest.example.com},
+ urldate = {2024-02-10},
+ note = {Verze 2.1},
+}
+
+@thesis{cslTestThesis,
+ author = {Student, Diplomový},
+ title = {Název závěrečné práce},
+ type = {phdthesis},
+ institution = {Univerzita Testovací},
+ year = {2019},
+ location = {Místo univerzity},
+}
\ No newline at end of file
diff --git a/unob-thesis/0.1.0/template/references.yml b/unob-thesis/0.1.0/template/references.yml
new file mode 100644
index 0000000000..9a6ae5bc16
--- /dev/null
+++ b/unob-thesis/0.1.0/template/references.yml
@@ -0,0 +1 @@
+# Generátor bibliografických záznamů Hayagriva je dostupný zdarma na url https://shinoyumi.github.io/hayagen/cs
diff --git a/unob-thesis/0.1.0/template/thesis.typ b/unob-thesis/0.1.0/template/thesis.typ
new file mode 100644
index 0000000000..fbbfcb10a3
--- /dev/null
+++ b/unob-thesis/0.1.0/template/thesis.typ
@@ -0,0 +1,92 @@
+/* Šablona obsahuje také stručný návod a obsáhlý manuál. Jejich zobrazení ovlivňují parametry `guide` a `docs`, které mohou nabývat hodnoty `true` –> Pravda, nebo `false` -> Nepravda. */
+#set text(lang: "cs")
+#import "@preview/unob-thesis:0.1.0": *
+#show: template.with(
+ university: (
+ faculty: "fvl",
+ programme: [],
+ specialisation: [],
+ ),
+ thesis: (
+ type: "ing",
+ title: [Název práce],
+ ),
+ author: (
+ prefix: "rtm.",
+ name: "Jan",
+ surname: "Novák",
+ suffix: none,
+ sex: "M",
+ ),
+ supervisor: (
+ prefix: "pplk. Ing.",
+ name: "Jana",
+ surname: "Nováková",
+ suffix: "Ph.D.",
+ sex: "F",
+ ),
+ first-advisor: (
+ prefix: "Mgr.",
+ name: "Jan",
+ surname: "Novák",
+ suffix: none,
+ ),
+ second-advisor: (
+ prefix: "",
+ name: "",
+ surname: "",
+ suffix: none,
+ ),
+ assignment: (
+ front: true,
+ back: true,
+ ),
+ acknowledgement: [],
+ abstract: (
+ czech: [],
+ english: [],
+ ),
+ keywords: (
+ czech: "",
+ english: "",
+ ),
+ declaration: (
+ declaration: true,
+ ai-used: true,
+ ),
+ acronyms: (
+ "ISO": (
+ "International Organization for Standardization",
+ "Mezinárodní organizace pro standardizaci",
+ ),
+ "AČR": "Armáda České republiky",
+ ),
+ outlines: (
+ headings: true,
+ acronyms: false,
+ figures: true,
+ tables: true,
+ equations: false,
+ listings: false,
+ ),
+ introduction: [],
+ guide: true,
+ docs: false,
+)
+
+= TEORETICKÁ ČÁST / ANALÝZA SOUČASNÉHO STAVU
+= CÍL A OMEZENÍ ZÁVĚREČNÉ PRÁCE
+
+= POUŽITÉ METODY
+
+= PRAKTICKÁ ČÁST / VÝSLEDKY A DISKUSE
+
+#get-bibliography(
+ type: "bib", // `bib` – BibLaTeX, nebo `yml` – Hayagriva
+ style: "numeric", // `numeric` [1], nebo `harvard` (Novák 2025)
+)
+
+#show: annex
+= NÁZEV PRVNÍ PŘÍLOHY
+== a
+=== a
diff --git a/unob-thesis/0.1.0/template/thumbnail.png b/unob-thesis/0.1.0/template/thumbnail.png
new file mode 100644
index 0000000000..67ecdca879
Binary files /dev/null and b/unob-thesis/0.1.0/template/thumbnail.png differ
diff --git a/unob-thesis/0.1.0/typst.toml b/unob-thesis/0.1.0/typst.toml
new file mode 100644
index 0000000000..11563fb095
--- /dev/null
+++ b/unob-thesis/0.1.0/typst.toml
@@ -0,0 +1,21 @@
+[package]
+name = "unob-thesis"
+version = "0.1.0"
+entrypoint = "src/lib.typ"
+authors = [ "ShinoYumi " ]
+license = "MIT"
+description = "Official University of Defence thesis template."
+repository = "https://github.com/ShinoYumi/unob-thesis"
+keywords = [ "UNOB", "University of Defence", "Univerzita obrany" ]
+categories = [ "thesis" ]
+compiler = "0.14.0"
+exclude = [
+ ".github",
+ ".typstignore",
+]
+disciplines = [ ]
+
+[template]
+path = "template"
+entrypoint = "thesis.typ"
+thumbnail = "thumbnail.png"