> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/cs/dalsi-temata/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# Jak napsat třídu LaTeXu a navrhnout si vlastní životopis (Část 1)

Část 1 | [Část 2](/latex/cs/dalsi-temata/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**Autor: James Allen (březen 2011)**

Každý chce profesionálně vypadající CV a o šablony LaTeXu, které vám ho poskytnou, není nouze. Pokud jste ale jako já, budete chtít své CV vlastnit a udělat si z něj něco vlastního. To znamená, že musíte sami umět přizpůsobit vzhled a styl, což může být v LaTeXu notoricky obtížné. V této sérii blogových příspěvků doufám, že vás provedu vytvořením vlastního souboru třídy a ukážu vám, že formátování vašeho CV přesně podle vašich představ může být snadné. Zaměříme se na styl CV, ale postupy budou totožné pro jakýkoli druh dokumentu.

### Co je soubor třídy?

Když napíšete `\documentclass{article}` do svého souboru LaTeX, zahrnujete soubor třídy `article.cls`. To definuje všechny příkazy jako `\section` a `\title` které slouží ke strukturování vašeho dokumentu. Zároveň určuje, jak tyto příkazy ovlivňují formát a rozvržení stránky.

### Vytvoření vlastního souboru třídy

Nejčistší způsob, jak přizpůsobit formát dokumentu, je uchovávat všechny tyto informace v osobním souboru třídy. Tím se struktura vašeho dokumentu udržuje čistě oddělená od formátování a umožňuje snadné opakované použití. Je snadné to nastavit, takže si vytvořte dokument s názvem cv.tex s následujícím obsahem:

```latex
\documentclass{my_cv}
\begin{document}
\section{Vzdělání}
\subsection{Univerzita Nikde}
\section{Práce}
\subsection{ABC Limited.}
\end{document}
```

Toto se pokouší načíst váš vlastní soubor třídy `my_cv.cls`, který zatím neexistuje. Vytvořte `my_cv.cls` ve stejném adresáři jako `cv.tex` a napište do něj následující řádek:

```latex
\LoadClass{article}
```

Pokud nyní dokument zkompilujete, měli byste vidět nadpisy ve výchozím stylu článku.

Co se tedy stalo? Soubory třídy musí obsahovat spoustu formátovacích informací a interního nastavení, aby LaTeX fungoval správně, ale my to nechceme všechno zadávat ručně. Místo toho můžeme náš nový soubor třídy postavit na `article.cls`. Použijeme `\LoadClass` uvádět `article.cls` a načteme všechny příkazy a styly v něm definované. Všimněte si, že nepoužíváme obvyklý `\documentclass` příkaz pro zahrnutí `article.cls` protože `\documentclass` by měl být zavolán jen jednou, a to úplně na začátku vašeho dokumentu LaTeX.

### Jak LaTeXu sdělit vaši třídu

Všechny soubory tříd by měly začínat dvěma řádky podobnými následujícím, které byste měli přidat na začátek `my_cv.cls` nyní:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 My custom CV class]
```

Ta `\NeedsTeXFormat` příkazů říká překladači, pro jakou verzi LaTeXu je daný balíček určen. Aktuální verzí LaTeXu je LaTeX2e a používá ji téměř všechna distribuce.

Ta `\ProvidesClass` příkaz dává překladači určité informace o vašem balíčku. První argument by se měl shodovat s názvem souboru vaší třídy a říká LaTeXu, jak se váš balíček jmenuje. Druhý argument je volitelný a poskytuje popis vaší třídy, který se objeví v protokolu a na dalších místech. Popis musí začínat datem přesně ve výše uvedeném formátu a mělo by jít o datum poslední úpravy balíčku. To lze použít při zahrnutí třídy ke kontrole, zda máte její dostatečně novou verzi. Pokud ji například zahrnete pomocí `\documentclass{my_cv}[2012/01/01]` s datem novějším, než je datum v popisu třídy, zobrazí se varování, že je třída zastaralá.

### Úprava nadpisů sekcí

Standardní nadpisy sekcí v článku se pro CV příliš nehodí, takže bychom je rádi nahradili něčím elegantnějším. K tomu můžeme redefinovat `\section` příkaz tak, aby vypisoval vlastní nadpis.

Naštěstí už existuje vynikající balíček s názvem `titlesec` který poskytuje snadný způsob, jak přizpůsobit styly našich nadpisů. Do souboru třídy jej vložte takto:

```latex
\RequirePackage{titlesec}
```

Všimněte si, že bychom měli použít `\RequirePackage` místo obvyklého `\usepackage` příkazu, protože jsme v souboru třídy. Příkaz `\RequirePackage` zajistí, že každý balíček je načten pouze jednou, i když je zavolán vícekrát z různých souborů stylu a tříd.

Ta `titlesec` balíček poskytuje příkaz `\titleformat` který nám umožňuje přizpůsobit nadpisy sekcí. Na konec `my_cv.cls` přidejte následující, abyste upravili formát nadpisu:

```latex
\titleformat{\section}         % Přizpůsobení příkazu \section
  {\Large\scshape\raggedright} % Nastaví nadpisy sekcí na velké (\Large),
                               % kapitálky (\scshape) a zarovnání doleva (\raggedright)
  {}{0em}                      % Lze použít k přidání předpony ke všem sekcím, například 'Sekce ...'
  {}                           % Lze použít k vložení kódu před nadpis
  [\titlerule]                 % Vloží za nadpis vodorovnou čáru
```

Pokud zkompilujeme `cv.tex` nyní, uvidíme, že máme některé hlavní nadpisy vhodnější pro CV:

![Screenshot1.png](/files/8aeb767f3586788c8bed2ad4d8b41a1f1539a4e8)

Můžeme přizpůsobit i nadpisy \subsection:

```latex
\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
```

Podsekce mají nyní stejný styl:

![Screenshot2.png](/files/3b55bc3b11eb0743407207769fa9f5b983ea91af)

Měli byste vyzkoušet některé z dostupných možností formátování a zjistit, co se vám líbí:

* `\bfseries`, `\itshape`: udělat nadpis tučný nebo kurzívou;
* `\scshape`:kapitálky;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: nastavit velikost písma;
* `\rmfamily`, `\sffamily`, `\ttfamily`: nastavit typ písma na serifové, bezserifové nebo neproporcionální.

### Přidávání dat do nadpisů sekcí

Můžeme definovat několik nových příkazů, které nám umožní zahrnout do nadpisů sekcí data. Do souboru třídy vložte následující:

```latex
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

Tím jsou definovány dva nové příkazy `\datedsection` a `\datedsubsection` které přijímají dva argumenty: název sekce jako dříve a datum, které bude vysazeno na pravé straně stránky. Příkaz `\hfill` říká LaTeXu, aby vyplnil co nejvíce místa, a tím posune druhý argument (`#2`) doprava na stránku. Upravte `cv.tex` tak, aby používal tyto příkazy:

```latex
\documentclass{my_cv}

\begin{document}

\section{Vzdělání}
\datedsubsection{Univerzita Nikde}{2004--2008}
Navštěvoval jsem Univerzitu Nikde od roku 2004 do roku 2008.

\section{Práce}
\datedsubsection{ABC Limited.}{2008--Now}
Od roku 2008 pracuji v ABC Limited.

\end{document} ​
```

Náš CV nyní obsahuje data:

![Screenshot3.png](/files/8d813e821a92461a85bf4b7f533ed8bb35c18d84)

### Závěr

To je pro první část tohoto průvodce vše, ale doufám, že jsem pokryl dost, abyste mohli sami začít vytvářet užitečné soubory tříd. Ke vzniku šablony CV, která už vypadá docela rozumně, nebylo potřeba mnoho příkazů a sotva jsme začali zkoumat, co dalšího by šlo přizpůsobit. V několika příštích částech tohoto průvodce budu mluvit o předávání voleb vaší třídě za účelem její konfigurace, o vytvoření pěkného názvu a o tom, jak nastavit některé obecné možnosti rozvržení.

Díky za přečtení!

Upozorňuji, že sám jsem při vytváření souborů tříd stále relativně nový, takže pokud někdo dokáže ukázat lepší způsoby, jak dělat věci, které jsem zde zmínil, dejte mi prosím vědět.

Část 1 | [Část 2](/latex/cs/dalsi-temata/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/cs/dalsi-temata/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
