> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/latex/uk/inshi-temi/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# Як написати файл класу LaTeX і спроєктувати власне резюме (частина 1)

Частина 1 | [Частина 2](/latex/uk/inshi-temi/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**Автор: Джеймс Аллен (березень 2011)**

Кожен хоче мати резюме, яке виглядає професійно, і існує чимало шаблонів LaTeX, які це вам забезпечать. Однак, якщо ви схожі на мене, то захочете, щоб ваше резюме було вашим і відображало саме вас. Це означає, що ви маєте самі вміти налаштовувати його вигляд і оформлення, а в LaTeX це може бути відверто складно. У цій серії дописів я сподіваюся провести вас через створення власного файлу класу і показати, що форматувати резюме точно так, як ви хочете, може бути легко. Ми зосередимося на стилі резюме, але методи будуть однаковими для будь-якого типу документа.

### Що таке файл класу?

Коли ви пишете `\documentclass{article}` у своєму файлі LaTeX, ви підключаєте файл класу `article.cls`. Це визначає всі команди, як-от `\section` та `\title` які використовуються для структурування вашого документа. Також це налаштовує, як ці команди впливають на формат і макет сторінки.

### Налаштування власного файлу класу

Найзручніший спосіб налаштувати формат документа — зберегти всю цю інформацію в особистому файлі класу. Це чітко відокремлює структуру документа від його форматування і дає змогу легко повторно використовувати налаштування. Це легко зробити, тож створіть документ із назвою cv.tex з таким вмістом:

```latex
\documentclass{my_cv}
\begin{document}
\section{Education}
\subsection{University of Nowhere}
\section{Work}
\subsection{ABC Limited.}
\end{document}
```

Тут відбувається спроба завантажити ваш власний файл класу `my_cv.cls`, якого ще не існує. Створіть `my_cv.cls` у тій самій теці, що й `cv.tex` і запишіть у ньому такий рядок:

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

Якщо ви зараз скомпілюєте документ, то побачите заголовки в типовому стилі article.

То що ж тут сталося? Файли класів мають містити багато інформації про форматування та внутрішнє налаштування, щоб LaTeX працював належним чином, але ми не хочемо вводити все це вручну. Замість цього ми можемо побудувати наш новий файл класу на основі `article.cls`. `\LoadClass` включати `article.cls` і завантажуємо всі команди та стилі, визначені в ньому. Зверніть увагу, що ми не використовуємо звичайну `\documentclass` команду для підключення `article.cls` тому що `\documentclass` слід викликати лише один раз, на самому початку вашого документа LaTeX.

### Повідомляємо LaTeX про ваш клас

Усі файли класів мають починатися з двох рядків, подібних до наведених нижче, які слід додати на початку `my_cv.cls` тепер:

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

Функція `\NeedsTeXFormat` команди повідомляють компілятору, для якої версії LaTeX призначено пакет. Поточна версія LaTeX — це LaTeX2e, і майже всі дистрибутиви використовують саме її.

Функція `\ProvidesClass` Команда \ProvidesClass надає компілятору деяку інформацію про ваш пакет. Перший аргумент має відповідати імені файлу вашого файлу класу і повідомляє LaTeX, як називається ваш пакет. Другий аргумент є необов’язковим і містить опис вашого класу, який з’являтиметься у журналі та в інших місцях. Опис має починатися з дати точно у форматі, наведеному вище, і це має бути дата останньої зміни пакета. Це можна використати під час підключення класу, щоб перевірити, що у вас є достатньо нова його версія. Наприклад, якщо ви підключите його через `\documentclass{my_cv}[2012/01/01]` з датою, яка новіша за дату в описі класу, буде показано попередження, що клас застарів.

### Зміна заголовків розділів

Стандартні заголовки розділів article не дуже пасують резюме, тож ми хотіли б замінити їх чимось охайнішим. Для цього ми можемо перевизначити `\section` команду для виведення власного заголовка.

На щастя, уже існує чудовий пакет під назвою `titlesec` який надає простий спосіб налаштувати стилі наших заголовків. Додайте його до файлу класу так:

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

Зверніть увагу, що слід використовувати `\RequirePackage` замість звичайної `\usepackage` Ця `\RequirePackage` команда гарантує, що кожен пакет завантажується лише один раз, навіть якщо її викликають кілька разів із різних файлів стилів і класів.

Функція `titlesec` Пакет надає команду `\titleformat` яка дозволяє нам налаштовувати заголовки розділів. Додайте таке в кінці `my_cv.cls` щоб налаштувати формат заголовка:

```latex
\titleformat{\section}         % Налаштувати команду \section
  {\Large\scshape\raggedright} % Зробити заголовки \section великими (\Large),
                               % малими капітелями (\scshape) та вирівняними ліворуч (\raggedright)
  {}{0em}                      % Можна використати, щоб додати префікс до всіх розділів, наприклад «Розділ ...»
  {}                           % Можна використати для вставлення коду перед заголовком
  [\titlerule]                 % Вставляє горизонтальну лінію після заголовка
```

Якщо ми скомпілюємо `cv.tex` тепер, ми побачимо, що маємо кілька основних заголовків, більш доречних для резюме:

![Screenshot1.png](/files/18477f2b0927d6fcd5daf8db6091d39e892cac0a)

Ми також можемо налаштувати заголовки \subsection:

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

Підрозділи тепер у тому самому стилі:

![Screenshot2.png](/files/71aa67cfe7d2f68fe358cb530500323630ea04e6)

Вам варто спробувати деякі доступні параметри форматування, щоб побачити, що вам подобається:

* `\bfseries`, `\itshape`: зробіть заголовок напівжирним або курсивним;
* `\scshape`: малі капітелі;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: задайте розмір шрифту;
* `\rmfamily`, `\sffamily`, `\ttfamily`: установіть тип шрифту відповідно із засічками, без засічок або машинописний.

### Додавання дат до заголовків розділів

Ми можемо визначити кілька нових команд, які дозволять нам включати дати в заголовки розділів. Додайте таке до файлу класу:

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

Це визначає дві нові команди `\datedsection` та `\datedsubsection` які приймають два аргументи: назву розділу, як і раніше, та дату, яка буде надрукована праворуч на сторінці.  `\hfill` команда вказує LaTeX заповнити якомога більше простору, і тому`#2`) праворуч на сторінці. Змініть `cv.tex` щоб використовувати ці команди:

```latex
\documentclass{my_cv}

\begin{document}

\section{Education}
\datedsubsection{University of Nowhere}{2004--2008}
Я навчався в University of Nowhere з 2004 до 2008 року.

\section{Work}
\datedsubsection{ABC Limited.}{2008--Now}
Я працюю в ABC Limited з 2008 року і дотепер.

\end{document} ​
```

Наше резюме тепер містить дати:

![Screenshot3.png](/files/41696e83527becd52730f53b622a5298d6021d54)

### Висновки

На цьому перша частина цього посібника завершується, але, сподіваюся, я вже досить багато пояснив, щоб ви могли піти й почати створювати корисні файли класів. Щоб отримати вже доволі пристойний шаблон резюме, не знадобилося багато команд, і ми лише трохи торкнулися того, що ще можна налаштувати. У наступних частинах цього посібника я розповім про передавання параметрів до вашого класу для його налаштування, створення гарного заголовка та про те, як задати деякі загальні параметри макета.

Дякую за увагу!

Зауважте, що я сам поки що відносно нещодавно почав створювати файли класів, тож якщо хтось може вказати кращі способи робити речі, які я згадав тут, будь ласка, дайте мені знати.

Частина 1 | [Частина 2](/latex/uk/inshi-temi/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://ayakaleaf-pro.ayaka.space/latex/uk/inshi-temi/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.
