> 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/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md).

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

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

**Автор: Cody Herring (червень 2013)**

Це продовження [Як написати файл класу LaTeX і створити власне резюме (Частина 1)](/latex/uk/inshi-temi/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md), розглядаючи більше варіантів створення резюме та використання для цього файлів класу.

У попередньому дописі ми створили 2 файли: `cv.tex` та `my_cv.cls`. Файл вмісту, `cv.tex`, містив таке:

```latex
\documentclass{my_cv}
\begin{document}
\section{Education}
\datedsubsection{Університет Нікуди}{2004-2008}
\section{Work}
\datedsubsection{ABC Limited}{2008-дотепер}
\end{document}
```

`my_cv.cls` містив деякі стандартні параметри форматування, а також деякі команди для використання:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[6/6/2013 custom CV class]
\LoadClass{article}
\RequirePackage{titlesec}
\titleformat{\section}       % Підлаштувати команду \section
{\Large\scshape\raggedright} % Зробити заголовки \section великими (\Large),
                             % малими капітелями (\scshape) та вирівняними ліворуч (\raggedright)
  {}{0em}            % Можна використати, щоб додати префікс до всіх розділів, наприклад «Розділ ...»
  {}                 % Можна використати, щоб вставити код перед заголовком
  [\titlerule]       % Вставляє горизонтальну лінію після заголовка
  \titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

Це генерує такий документ:

![Рисунок 1.png](/files/0b817a78e19822fdbca48e8ce177bbee9765ba6a)

Функція `#1` та `#2` позначають перший і другий аргумент або параметр, що передаються команді. У першому рядку `\newcommand`, розділ у дужках, наприклад `[2]` означає кількість параметрів, що передаються функції. Потім функція може звертатися до цих параметрів за допомогою `#1`, `#2`, і так далі, залежно від того, скільки параметрів було потрібно функції. Функції з більшою кількістю параметрів буде показано пізніше в статті.

Далі ми додамо розділ з ім'ям і контактами, а також продовжимо з розділом досвіду та іншими розділами.

### Ім'я та контактна інформація

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

```latex
\newcommand{\name}[1]{%
  \centerline{\Huge{#1}}
}
```

Це виводить ім'я по центру великим шрифтом у будь-якому місці використання. Це можна викликати так:

```latex
\name{John Smith}
```

Тепер щодо контактної інформації. Додайте таке до файла класу:

```latex
\newcommand\contact[5]{%
    \centerline{%
        \makebox[0pt][c]{%
            #1 {\large\textperiodcentered} #2 {\large\textperiodcentered} #3
            \ #4 \ \ #5%
        }%
    }%
}
```

Потім викличте функцію з документа:

```latex
\contact{123 Broadway}{London}{UK 12345}{john@smith.com}{(000)-111-1111}
```

Усе це добре відображається — ім'я та контактна інформація виглядають так:

![Рисунок 2.png](/files/60773a2b130697c1263fadc93dc9d3ae41e56d8a)

Це відображає контактну інформацію зручним форматуванням із маркером між елементами. За потреби це можна налаштувати для довших адрес, додавши другу функцію:

```latex
\newcommand{\longcontact}[5]{%
    \noindent
    #1\hfill {\large\textperiodcentered}\hfill #2\hfill
    {\large\textperiodcentered}\hfill #3\\
    #4\hfill #5%
}
```

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

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

```latex
\longcontact{123 Broadway}{London}{UK 12345}{john@smith.com}{(000)-111-1111}
```

У цьому й полягає головна перевага використання файлів класу. Мінімальні зміни у вмісті документа та зовнішнє керування оформленням (тим, як показується вміст).

### Розширення розділу досвіду

Резюме має містити не лише перелік місць роботи. Під кожним пунктом слід додати опис того, що було зроблено на роботі. Три марковані пункти на одну роботу — це хороший баланс між деталізацією та описом. Це легко налаштувати, додаючи або видаляючи елементи. Додайте таке до файла класу:

```latex
\newcommand{\workitems}[3]{%
    \begin{itemize}
    \item #1
    \item #2
    \item #3
    \end{itemize}%
}
```

Додайте таке до `.tex` файлу такий рядок:

```latex
\workitems
{Розроблено новий продукт}
{Підвищено продуктивність на 20\%}
{Зменшено витрати на \$10,000}
```

Тепер розділ досвіду виглядає трохи повнішим:

![Рисунок 4.png](/files/2741a75e3dc3c6e4b384c42d9a6ce03277fc88a3)

Додавання розділу навичок завершує резюме. Це було зроблено без функції класу, оскільки це не надто скорочувало код LaTeX:

```latex
\section{Навички}

\begin{tabular}{l l l l}
C\# & T-SQL & Javascript & HTML \\
XML & JSON & SOAP & REST
\end{tabular}
```

У результаті маємо таке:

![Рисунок 5.png](/files/d849c753093d9bf8443dcb76341804159724ee98)

### Висновок

Ця стаття у двох частинах мала залишити вам базовий шаблон резюме, готовий до розширення та додавання нових розділів.

Увесь файл класу має такий вигляд:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[6/6/2013 custom CV class]
\LoadClass{article}
\RequirePackage{titlesec}

\titleformat{\section}
  {\Large\scshape\raggedright}
  {}{0em}
  {}
  [\titlerule]

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

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

\newcommand{\name}[1]{%
  \centerline{\Huge{#1}}%
}

\newcommand\contact[5]{%
    \centerline{%
        \makebox[0pt][c]{%
            #1 {\large\textperiodcentered} #2 {\large\textperiodcentered} #3
            \ #4 \ \ #5%
        }%
    }%
}

\newcommand{\longcontact}[5]{%
    \noindent
    #1\hfill {\large\textperiodcentered}\hfill #2\hfill
    {\large\textperiodcentered}\hfill #3\\
    #4\hfill #5%
}

\newcommand{\workitems}[3]{%
    \begin{itemize}
    \item #1
    \item #2
    \item #3
    \end{itemize}%
}
```

Функція `.tex` файл має такий вигляд:

```latex
\documentclass{my_cv}
\begin{document}
\name{John Smith}
\contact{123 Broadway}{London}{UK 12345}{john@smith.com}{(000)-111-1111}
\section{Education}
\datedsubsection{Університет Нікуди}{2004-2008}
\section{Work}
\datedsubsection{ABC Limited}{2008-дотепер}
\workitems
{Розроблено новий продукт}
{Підвищено продуктивність на 20\%}
{Зменшено витрати на \$10,000}

\section{Навички}
\begin{tabular}{l l l l}
C\# & T-SQL & Javascript & HTML \\
XML & JSON & SOAP & REST
\end{tabular}

\end{document}
```

У результаті маємо такий документ:

![Рисунок 6.png](/files/0db443ab02523b1f1c61f50cbf0fbf6d60971c10)

Цей посібник має дати чудову відправну точку для резюме з простором для розширення.

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


---

# 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/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.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.
