> 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/uk/osnovi-latex/04-lists.md).

# Списки

## Три способи вставлення списків в Overleaf

Overleaf надає 3 способи створення списків за допомогою LaTeX:

1. Використайте **Вставити маркований список** (![Image of the menu icon for insert a bulleted list in Overleaf](/files/93a98cf06cac55b09790aa68d5c87112866762dc)) або **Вставити нумерований список** (![Image of the menu icon for insert a numbered list in Overleaf](/files/a027a241bd736420d40a55c00554b510653bb60a)) на панелі інструментів редактора, щоб вставити списки в **Візуальний редактор** або **Редактор коду**.
2. [Вставте відформатований список у **Візуальний редактор**](/latex/uk/baza-znan/075-how-to-paste-formatted-content-into-overleaf.md#pasteformattedlist).
3. Напишіть власний код LaTeX, використовуючи **Редактор коду**.

Параметри 1 і 2 призначені для автоматичного генерування коду LaTeX, необхідного для верстки списків. Однак для тих, хто хоче писати власний код LaTeX, третій варіант може бути кращим вибором. Він забезпечує найбільшу гнучкість і є основним фокусом цієї статті.

## Вступ

Ця стаття містить вступ до верстки та налаштування різних типів списків у LaTeX:

* сайті `itemize` середовище для створення маркованого (ненумерованого) списку
* сайті `enumerate` середовище для створення нумерованого (упорядкованого) списку
* сайті `опис` середовище для створення списку описів

Верстка списків — велика тема, оскільки списки LaTeX є *надзвичайно* налаштовуваними, що дає змогу створювати величезну різноманітність типів і структур списків. Ми розглянемо й продемонструємо деякі способи, які можна використовувати, щоб [налаштовувати та кастомізувати ваші списки](#customizing-lists).

## Приклади базових списків

### Середовище itemize для маркованих (ненумерованих) списків

Ненумеровані (марковані) списки створюються за допомогою `itemize` середовища, де кожен елемент списку починається з використання `\item` команди, яка також генерує символ маркера.

```latex
Списки легко створювати:
\begin{itemize}
  \item Елементи списку починаються з команди \verb|\item|.
  \item Окремі елементи позначаються чорною крапкою, так званим маркером.
  \item Текст у елементах може бути будь-якої довжини.
\end{itemize}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+unordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0ALists+are+easy+to+create%3A%0A%5Cbegin%7Bitemize%7D%0A++%5Citem+List+entries+start+with+the+%5Cverb%7C%5Citem%7C+command.%0A++%5Citem+Individual+entries+are+indicated+with+a+black+dot%2C+a+so-called+bullet.%0A++%5Citem+The+text+in+the+entries+may+be+of+any+length.%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![List1bOLV2.png](/files/091ddb2ca361c6b64d9fbd7abee2799a2d70c994)

### Середовище enumerate для нумерованих (упорядкованих) списків

Нумеровані (упорядковані) списки мають такий самий синтаксис, але використовують `enumerate` середовище: перед кожним елементом має стояти керуюча послідовність `\item`, яка автоматично генеруватиме числа для позначення елемента. Ці числа починаються з 1 з кожним використанням `enumerate` середовища — зауважте, що цю поведінку нумерації LaTeX за замовчуванням можна змінювати/контролювати за допомогою [`enumitem` accents](https://ctan.org/pkg/enumitem).

```latex
Нумеровані (упорядковані) списки легко створювати:
\begin{enumerate}
  \item Елементи автоматично нумеруються.
  \item Номери починаються з 1 з кожним використанням середовища \texttt{enumerate}.
  \item Ще один елемент списку
\end{enumerate}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+ordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0ANumbered+%28ordered%29+lists+are+easy+to+create%3A%0A%5Cbegin%7Benumerate%7D%0A++%5Citem+Items+are+numbered+automatically.%0A++%5Citem+The+numbers+start+at+1+with+each+use+of+the+%5Ctexttt%7Benumerate%7D+environment.%0A++%5Citem+Another+entry+in+the+list%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![List2OLV2.png](/files/8d459b79894f819151b13279454b6b23aa088645)

### Середовище description

Наведений нижче приклад демонструє `опис` середовище. (Необов’язковий) підпис для кожного елемента береться в квадратні дужки після `\item` команди:

```latex
\item[label text] Текст вашого опису тут...
```

Також ми використовуємо `blindtext` пакет для генерації випадкового англійського тексту в третьому елементі. Щоб отримати англійську, потрібно використати `babel` пакет із параметром мови `[english]`:

```latex
\usepackage[english]{babel}
```

Ось приклад:

```latex
\documentclass{article}
\usepackage[english]{babel} % Щоб отримати англійський текст за допомогою пакета blindtext
\usepackage{blindtext}
\begin{document}

\begin{description}
   \item Це елемент \textit{без} підпису.
   \item[Коротко] Короткий опис в один рядок.
   \item[Довго] Набагато довший опис. \blindtext[1]
\end{description}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+description+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Benglish%5D%7Bbabel%7D+%25+To+obtain+English+text+with+the+blindtext+package%0A%5Cusepackage%7Bblindtext%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Bdescription%7D%0A+++%5Citem+This+is+an+entry+%5Ctextit%7Bwithout%7D+a+label.%0A+++%5Citem%5BSomething+short%5D+A+short+one-line+description.%0A+++%5Citem%5BSomething+long%5D+A+much+longer+description.+%5Cblindtext%5B1%5D%0A%5Cend%7Bdescription%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Descriptionlist2.png](/files/16d8dea19a32064f1fb4c81f27346f93b480c65f)

## Зміна підписів окремих елементів

Як показано в `опис` прикладі середовища, `\item` команда приймає необов’язковий параметр у квадратних дужках. Ви можете використовувати цю можливість у `itemize` та `enumerate` середовищах, щоб змінити підпис окремих елементів у вашому списку за замовчуванням:

```latex
\item[label text] Текст вашого елемента тут...
```

Функція `текст підпису` буде використано для створення підпису цього елемента.

```latex
Змінюйте підписи за допомогою \verb|\item[label text]| у середовищі \texttt{itemize}
\begin{itemize}
  \item Це моя перша точка
  \item Ще одна точка, яку я хочу висловити
  \item[!] Точка, щоб вигукнути щось!
  \item[$\blacksquare$] Зробіть пункт справедливим і чітким.
  \item[NOTE] У цього елемента немає маркера
  \item[] Порожній підпис?
\end{itemize}

\vspace{10pt}

Змінюйте підписи за допомогою \verb|\item[label text]| у середовищі \texttt{enumerate}
\begin{enumerate}
  \item Це моя перша точка
  \item Ще одна точка, яку я хочу висловити
  \item[!] Точка, щоб вигукнути щось!
  \item[$\blacksquare$] Зробіть пункт справедливим і чітким.
  \item[NOTE] У цього елемента немає маркера
  \item[] Порожній підпис?
\end{enumerate}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Changing+list+labels\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bamssymb%7D%25+to+access+%24%5Cblacksquare%24%0A%5Cbegin%7Bdocument%7D%0AChange+the+labels+using+%5Cverb%7C%5Citem%5Blabel+text%5D%7C+in+an+%5Ctexttt%7Bitemize%7D+environment%0A%5Cbegin%7Bitemize%7D%0A++%5Citem+This+is+my+first+point%0A++%5Citem+Another+point+I+want+to+make+%0A++%5Citem%5B%21%5D+A+point+to+exclaim+something%21%0A++%5Citem%5B%24%5Cblacksquare%24%5D+Make+the+point+fair+and+square.%0A++%5Citem%5BNOTE%5D+This+entry+has+no+bullet%0A++%5Citem%5B%5D+A+blank+label%3F%0A%5Cend%7Bitemize%7D%0A%0A%5Cvspace%7B10pt%7D%0A%0AChange+the+labels+using+%5Cverb%7C%5Citem%5Blabel+text%5D%7C+in+an+%5Ctexttt%7Benumerate%7D+environment%0A%5Cbegin%7Benumerate%7D%0A++%5Citem+This+is+my+first+point%0A++%5Citem+Another+point+I+want+to+make+%0A++%5Citem%5B%21%5D+A+point+to+exclaim+something%21%0A++%5Citem%5B%24%5Cblacksquare%24%5D+Make+the+point+fair+and+square.%0A++%5Citem%5BNOTE%5D+This+entry+has+no+bullet%0A++%5Citem%5B%5D+A+blank+label%3F%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![ChangeBullets.png](/files/6e25d82dcdd5a683ce9d5dee9f8b4c3db37fba70)

## Вкладені списки

У LaTeX ви можете вставити список всередину іншого списку. Наведені вище типи списків можуть міститися один в одному, змішано або одного типу, на глибину до 4 рівнів.

```latex
\begin{enumerate}
   \item Підписи складаються з послідовних чисел
   \begin{itemize}
     \item Окремі елементи позначаються чорною крапкою, так званим маркером
     \item Текст у елементах може бути будь-якої довжини
     \begin{description}
     \item[Примітка:] Я б хотів тут щось описати
     \item[Обережно!] І ось тут дати попередження
     \end{description}
   \end{itemize}
   \item Числа починаються з 1 з кожним використанням середовища \texttt{enumerate}
\end{enumerate}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+nested+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Benumerate%7D%0A+++%5Citem+The+labels+consists+of+sequential+numbers%0A+++%5Cbegin%7Bitemize%7D%0A+++++%5Citem+The+individual+entries+are+indicated+with+a+black+dot%2C+a+so-called+bullet%0A+++++%5Citem+The+text+in+the+entries+may+be+of+any+length%0A+++++%5Cbegin%7Bdescription%7D%0A+++++%5Citem%5BNote%3A%5D+I+would+like+to+describe+something+here%0A+++++%5Citem%5BCaveat%21%5D+And+give+a+warning+here%0A+++++%5Cend%7Bdescription%7D%0A+++%5Cend%7Bitemize%7D%0A+++%5Citem+The+numbers+starts+at+1+with+each+use+of+the+%5Ctexttt%7Benumerate%7D+environment%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![List3bOLV2.png](/files/032bc7faf8723aca516938ac27457c87510c44e2)

### Вкладені списки: стиль підписів

Стиль підписів елементів вкладеного списку змінюється залежно від його глибини у списку. Для вкладених `itemize` списків змінюється тип маркера; для `enumerate` списків формат нумерації змінюється зі збільшенням глибини елемента. Обидва обмежені глибиною в 4 рівні.

#### Вкладені списки enumerate: формат нумерації

```latex
\begin{enumerate}
   \item Елемент першого рівня
   \item Елемент першого рівня
   \begin{enumerate}
     \item Елемент другого рівня
     \item Елемент другого рівня
     \begin{enumerate}
       \item Елемент третього рівня
       \item Елемент третього рівня
       \begin{enumerate}
         \item Елемент четвертого рівня
         \item Елемент четвертого рівня
       \end{enumerate}
     \end{enumerate}
   \end{enumerate}
 \end{enumerate}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+nested+ordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Benumerate%7D%0A+++%5Citem+First+level+item%0A+++%5Citem+First+level+item%0A+++%5Cbegin%7Benumerate%7D%0A+++++%5Citem+Second+level+item%0A+++++%5Citem+Second+level+item%0A+++++%5Cbegin%7Benumerate%7D%0A+++++++%5Citem+Third+level+item%0A+++++++%5Citem+Third+level+item%0A+++++++%5Cbegin%7Benumerate%7D%0A+++++++++%5Citem+Fourth+level+item%0A+++++++++%5Citem+Fourth+level+item%0A+++++++%5Cend%7Benumerate%7D%0A+++++%5Cend%7Benumerate%7D%0A+++%5Cend%7Benumerate%7D%0A+%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![List4OLV2.png](/files/556737c34f135af5cb063a9044997e7c8623a5bf)

#### Вкладені списки itemize: стиль маркерів

Стиль маркерів змінюється залежно від глибини вкладених списків:

```latex
\begin{itemize}
   \item Елемент першого рівня
   \item Елемент першого рівня
   \begin{itemize}
     \item Елемент другого рівня
     \item Елемент другого рівня
     \begin{itemize}
       \item Елемент третього рівня
       \item Елемент третього рівня
       \begin{itemize}
         \item Елемент четвертого рівня
         \item Елемент четвертого рівня
       \end{itemize}
     \end{itemize}
   \end{itemize}
 \end{itemize}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+nested+ordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bitemize%7D%0A+++%5Citem+First+level+item%0A+++%5Citem+First+level+item%0A+++%5Cbegin%7Bitemize%7D%0A+++++%5Citem+Second+level+item%0A+++++%5Citem+Second+level+item%0A+++++%5Cbegin%7Bitemize%7D%0A+++++++%5Citem+Third+level+item%0A+++++++%5Citem+Third+level+item%0A+++++++%5Cbegin%7Bitemize%7D%0A+++++++++%5Citem+Fourth+level+item%0A+++++++++%5Citem+Fourth+level+item%0A+++++++%5Cend%7Bitemize%7D%0A+++++%5Cend%7Bitemize%7D%0A+++%5Cend%7Bitemize%7D%0A+%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![List5OLV2.png](/files/14316272c802945c9ecad39a011eedd7a8150f94)

## Налаштування списків

Списки LaTeX *дуже* налаштовувані, що дає великий простір для створення багатьох різних типів налаштованих списків. Ви можете або вносити прямі зміни до стандартних типів списків LaTeX, або, *краще*, використовувати надзвичайно універсальний [пакет enumitem](https://ctan.org/pkg/enumitem) щоб зробити це за вас.

CTAN містить низку [пов’язаних зі списками пакетів](https://ctan.org/topic/list) які варто дослідити, якщо у вас є особливі вимоги до налаштування. Крім того, tex.stackexchange надає багатство [запитань, пов’язаних зі списками](https://tex.stackexchange.com/questions/tagged/lists) з відповідями, які дають корисні поради та чудові приклади!

Спочатку ми розглянемо кілька прикладів, що змінюють підписи списків, а потім перейдемо до налаштування макетів списків.

### Налаштування списків: зміна підписів

Спочатку ми покажемо, як змінити підписи списків без використання [пакет enumitem](https://ctan.org/pkg/enumitem).

#### Стандартні команди генерації підписів

Користувацькі списки можна створювати за допомогою [enumitem](https://ctan.org/pkg/enumitem) пакета або прямого модифікування стандартних списків. Тут ми наведемо короткий огляд деяких стандартних команд LaTeX, змінних-лічильників і параметрів списків, про які вам може знадобитися знати.

У наступній таблиці показано команди LaTeX, що використовуються для генерації підписів на кожному рівні `itemize` та `enumerate` середовищ списків:

|            |                                  |                                |
| ---------- | -------------------------------- | ------------------------------ |
| **Рівень** | **`enumerate`** команди підписів | **`itemize`** команди підписів |
| Рівень 1   | `\labelenumi`                    | `\labelitemi`                  |
| Рівень 2   | `\labelenumii`                   | `\labelitemii`                 |
| Рівень 3   | `\labelenumiii`                  | `\labelitemiii`                |
| Рівень 4   | `\labelenumiv`                   | `\labelitemiv`                 |

#### Змінні-лічильники для enumerate

Функція `enumerate` середовище списку також використовує чотири *лічильник* змінні, які відстежують поточне значення підпису для кожного рівня:

|            |                                  |
| ---------- | -------------------------------- |
| **Рівень** | **`enumerate`** змінна-лічильник |
| Рівень 1   | `enumi`                          |
| Рівень 2   | `enumii`                         |
| Рівень 3   | `enumiii`                        |
| Рівень 4   | `enumiv`                         |

#### Приклади: налаштування підписів списків enumerate

Ви можете налаштувати стандартне маркування LaTeX, використовуючи `\renewcommand` щоб перевизначити команди, що генерують підписи, і для `enumerate` середовища, ви також можете використовувати відповідну змінну-лічильник.

Ось кілька прикладів, які роблять це без використання `enumitem` пакет.

**Практичний приклад**

```latex
\documentclass{article}
\begin{document}
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}
\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}}
\renewcommand{\labelenumiv}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.\arabic{enumiv}}

\begin{enumerate}
\item Один
\item Два
\item Три
\begin{enumerate}
    \item Три, пункт один
    \begin{enumerate}
    \item Три, пункт один, пункт один
        \begin{enumerate}
        \item Три, пункт один, пункт один, пункт один
        \item Три, пункт один, пункт один, пункт два
        \end{enumerate}
    \end{enumerate}
\end{enumerate}
\item Чотири
\item П’ять
\end{enumerate}

\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Configuring+list+layout\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Crenewcommand%7B%5Clabelenumii%7D%7B%5Carabic%7Benumi%7D.%5Carabic%7Benumii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiii%7D%7B%5Carabic%7Benumi%7D.%5Carabic%7Benumii%7D.%5Carabic%7Benumiii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiv%7D%7B%5Carabic%7Benumi%7D.%5Carabic%7Benumii%7D.%5Carabic%7Benumiii%7D.%5Carabic%7Benumiv%7D%7D%0A%0A%5Cbegin%7Benumerate%7D%0A%5Citem+One%0A%5Citem+Two%0A%5Citem+Three%0A%5Cbegin%7Benumerate%7D%0A++++%5Citem+Three+point+one%0A++++%5Cbegin%7Benumerate%7D%0A++++%5Citem+Three+point+one%2C+point+one%0A++++++++%5Cbegin%7Benumerate%7D%0A++++++++%5Citem+Three+point+one%2C+point+one%2C+point+one%0A++++++++%5Citem+Three+point+one%2C+point+one%2C+point+two%0A++++++++%5Cend%7Benumerate%7D%0A++++%5Cend%7Benumerate%7D%0A%5Cend%7Benumerate%7D%0A%5Citem+Four%0A%5Citem+Five%0A%5Cend%7Benumerate%7D%0A%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![List9OLV2.png](/files/ca65f2fc13cbf5f26d74e4932aa3867f97c5dab9)

**Виведення змінних-лічильників**

У попередньому прикладі команда `\arabic` використовувалася для набору поточного значення різних підписів *змінних-лічильників*. Зауважте, що «арабські цифри», а використання команди `\arabic`, стосується цифр від 0 до 9: див. цю [статтю про арабські цифри у Вікіпедії](https://en.wikipedia.org/wiki/Arabic_numerals) для додаткового контексту.

Загалом, *змінна-лічильник* змінну-лічильник

* `\arabic{*змінна-лічильник*}`
* `\roman{*змінна-лічильник*}`
* `\Roman{*змінна-лічильник*}`
* `\Alph{*змінна-лічильник*}`
* `\alph{*змінна-лічильник*}`

Наприклад:

```latex
\documentclass{article}
\begin{document}
\begin{verbatim}
\newcounter{foo}
\setcounter{foo}{5}
\end{verbatim}
\newcounter{foo}
\setcounter{foo}{5}

\begin{itemize}
\item \verb|\arabic{foo}| дає \arabic{foo}
\item \verb|\roman{foo}| дає \roman{foo}
\item \verb|\Roman{foo}| дає \Roman{foo}
\item \verb|\Alph{foo}| дає \Alph{foo}
\item \verb|\alph{foo}| дає \alph{foo}
\end{itemize}

\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Configuring+list+layout\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bverbatim%7D%0A%5Cnewcounter%7Bfoo%7D%0A%5Csetcounter%7Bfoo%7D%7B5%7D++++%0A%5Cend%7Bverbatim%7D%0A%5Cnewcounter%7Bfoo%7D%0A%5Csetcounter%7Bfoo%7D%7B5%7D+%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Cverb%7C%5Carabic%7Bfoo%7D%7C+produces+%5Carabic%7Bfoo%7D%0A%5Citem+%5Cverb%7C%5Croman%7Bfoo%7D%7C+produces+%5Croman%7Bfoo%7D+%0A%5Citem+%5Cverb%7C%5CRoman%7Bfoo%7D%7C+produces+%5CRoman%7Bfoo%7D%0A%5Citem+%5Cverb%7C%5CAlph%7Bfoo%7D%7C+produces+%5CAlph%7Bfoo%7D%0A%5Citem+%5Cverb%7C%5Calph%7Bfoo%7D%7C+produces+%5Calph%7Bfoo%7D%0A%5Cend%7Bitemize%7D%0A%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![List8OLV2.png](/files/5a0436a1f6401cdaa388f620ca43c60ea722c4a8)

**Непрактичний (веселий) приклад**

Цей приклад верстає емодзі за допомогою кольорового шрифту OpenType, тож він *працюватиме лише в LuaLaTeX*. Див. статтю Overleaf [Огляд технологій, що підтримують використання кольорових шрифтів емодзі в LaTeX](/latex/uk/dokladni-statti/10-an-overview-of-technologies-supporting-the-use-of-colour-emoji-fonts-in-latex.md) для докладнішої інформації про верстку емодзі.

Хоча це лише веселий приклад, що використовує LuaLaTeX, він демонструє налаштування всіх чотирьох команд генерації підписів і використання змінних лічильника підписів для створення дещо незвичайного маркування... Натисніть посилання «Open in Overleaf», щоб переглянути повний код.

```latex
\renewcommand{\labelenumi}{\duck{enumi}}
\renewcommand{\labelenumii}{\duck{enumi}.\duckegg{enumii}}
\renewcommand{\labelenumiii}{\duck{enumi}.\duckegg{enumii}.\duckegg{enumiii}}
\renewcommand{\labelenumiv}{\duck{enumi}.\duckegg{enumii}.\duckegg{enumiii}.\duckchick{enumiv}}

\begin{enumerate}
\item Качка
\item Ще качки
\item Доволі багато качок
\begin{enumerate}
    \item Качки та яйця
    \begin{enumerate}
    \item Чи я бачу...
    \item Качки та докачки
       \begin{enumerate}
       \item Ой...
       \item Така мила!
       \end{enumerate}
    \end{enumerate}
\end{enumerate}
\item Назад до качок
\item Знову
\end{enumerate}
```

[Щоб побачити ***повний код***, відкрийте цей приклад LuaLaTeX в Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Fun+example+of+configuring+a+list\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfontspec%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cnewfontfamily%5Cemojifont%5BRenderer%3DHarfbuzz%2CSizeFeatures%3D%7BSize%3D6%7D%5D%7BNotoColorEmoji.ttf%7D%0A%0A%5Cnewcount%5Cduckcount%0A%5Cnewcount%5Ceggcount%0A%5Cnewcount%5Cchickcount%0A%0A%5Cdef%5Cduck%231%7B%25%0A%5Cduckcount%3D%5Cvalue%7B%231%7D%25%0A%5Cloop%7B%5Cemojifont%5CUchar%221F986%7D%25%0A%5Cadvance%5Cduckcount+by+-1%0A%5Cunless%5Cifnum%5Cduckcount%3D0+%0A%5Crepeat%7D%0A%0A%5Cdef%5Cduckegg%231%7B%25%0A%5Ceggcount%3D%5Cvalue%7B%231%7D%25%0A%5Cloop%7B%5Cemojifont%5CUchar%221F95A%7D%25%0A%5Cadvance%5Ceggcount+by+-1%0A%5Cunless%5Cifnum%5Ceggcount%3D0+%0A%5Crepeat%7D%0A%0A%5Cdef%5Cduckchick%231%7B%25%0A%5Cchickcount%3D%5Cvalue%7B%231%7D%25%0A%5Cloop%7B%5Cemojifont%5CUchar%221F424%7D%25%0A%5Cadvance%5Cchickcount+by+-1%0A%5Cunless%5Cifnum%5Cchickcount%3D0+%0A%5Crepeat%7D%0A%5Crenewcommand%7B%5Clabelenumi%7D%7B%5Cduck%7Benumi%7D%7D%0A%5Crenewcommand%7B%5Clabelenumii%7D%7B%5Cduck%7Benumi%7D.%5Cduckegg%7Benumii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiii%7D%7B%5Cduck%7Benumi%7D.%5Cduckegg%7Benumii%7D.%5Cduckegg%7Benumiii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiv%7D%7B%5Cduck%7Benumi%7D.%5Cduckegg%7Benumii%7D.%5Cduckegg%7Benumiii%7D.%5Cduckchick%7Benumiv%7D%7D+%0A%0A%5Cbegin%7Benumerate%7D%0A%5Citem+A+duck%0A%5Citem+More+ducks%0A%5Citem+A+flurry+of+ducks%0A%5Cbegin%7Benumerate%7D%0A++++%5Citem+Ducks+and+eggs%0A++++%5Cbegin%7Benumerate%7D%0A++++%5Citem+Do+I+see...+%0A++++%5Citem+Ducks+and+pre-ducks+%0A+++++++%5Cbegin%7Benumerate%7D%0A+++++++%5Citem+Awww...%0A+++++++%5Citem+So+cute%21%0A+++++++%5Cend%7Benumerate%7D%0A++++%5Cend%7Benumerate%7D%0A%5Cend%7Benumerate%7D%0A%5Citem+Back+to+ducks%0A%5Citem+Again%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

Цей приклад виводить такий результат

![Ducklist.png](/files/fe61560d944f8f29b898a48fd1fa1a06060dcb4f)

### Налаштування списків: зміна макета

Окрім налаштування підписів, можна змінювати відступи та макет списків, але спочатку нам потрібно знати різні параметри LaTeX, які визначають верстку та макет списків.

#### Параметри списків LaTeX

Ви можете використовувати [пакет layouts](https://ctan.org/pkg/layouts?lang=en) щоб згенерувати діаграму, яка показує параметри списків LaTeX:

```latex
\documentclass{article}
\usepackage{layouts}
\begin{document}
\begin{figure}
\listdiagram
\caption{Параметри \LaTeX{}, що визначають верстку та макет списків.}
\end{figure}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+the+layout+package+to+view+list+structures\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Blayouts%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfigure%7D%0A%5Clistdiagram%0A%5Ccaption%7BThe+%5CLaTeX%7B%7D+parameters+which+define+typesetting+and+layout+of+lists.%7D+%0A%5Cend%7Bfigure%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![](/files/7509ea02e521b4667caf68168d451705fc5c645a)

Значення цих параметрів описано в [розділі про списки неофіційного довідника LaTeX2e](https://tug.org/texinfohtml/latex2e.html#list) тому ми не будемо відтворювати його тут.

#### Створення власного списку за допомогою середовища list

LaTeX надає загальне `список` середовище, яке забезпечує основу для створення власного типу(ів) списку. Використовуючи інформацію, що міститься на діаграмі вище, наступний приклад є дещо модифікованою версією одного з прикладів у [розділі про списки](https://tug.org/texinfohtml/latex2e.html#list) цього [Неофіційний довідник LaTeX2e](https://tug.org/texinfohtml/latex2e.html)

```latex
\documentclass{article}
\begin{document}
\newcounter{boxlblcounter}
\newcommand{\makeboxlabel}[1]{\fbox{#1.}\hfill}% \hfill заповнює поле підпису
\newenvironment{boxlabel}
  {\begin{list}
    {\arabic{boxlblcounter}}
    {\usecounter{boxlblcounter}
     \setlength{\labelwidth}{3em}
     \setlength{\labelsep}{0em}
     \setlength{\itemsep}{2pt}
     \setlength{\leftmargin}{1.5cm}
     \setlength{\rightmargin}{2cm}
     \setlength{\itemindent}{0em}
     \let\makelabel=\makeboxlabel
    }
  }
{\end{list}}

\newcommand{\randomtext}{Привіт, ось трохи тексту без змісту. Привіт, ось трохи тексту без змісту. Привіт, ось трохи тексту без змісту.}

\noindent\randomtext

\begin{boxlabel}
\item \randomtext
\item \randomtext
\item \randomtext
\end{boxlabel}
\end{document}
```

[Відкрийте цей приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+the+list+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cnewcounter%7Bboxlblcounter%7D++%0A%5Cnewcommand%7B%5Cmakeboxlabel%7D%5B1%5D%7B%5Cfbox%7B%231.%7D%5Chfill%7D%25+%5Chfill+fills+the+label+box%0A%5Cnewenvironment%7Bboxlabel%7D%0A++%7B%5Cbegin%7Blist%7D%0A++++%7B%5Carabic%7Bboxlblcounter%7D%7D%0A++++%7B%5Cusecounter%7Bboxlblcounter%7D%0A+++++%5Csetlength%7B%5Clabelwidth%7D%7B3em%7D%0A+++++%5Csetlength%7B%5Clabelsep%7D%7B0em%7D%0A+++++%5Csetlength%7B%5Citemsep%7D%7B2pt%7D%0A+++++%5Csetlength%7B%5Cleftmargin%7D%7B1.5cm%7D%0A+++++%5Csetlength%7B%5Crightmargin%7D%7B2cm%7D%0A+++++%5Csetlength%7B%5Citemindent%7D%7B0em%7D+%0A+++++%5Clet%5Cmakelabel%3D%5Cmakeboxlabel%0A++++%7D%0A++%7D%0A%7B%5Cend%7Blist%7D%7D%0A%0A%5Cnewcommand%7B%5Crandomtext%7D%7BHello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.%7D%0A%0A%5Cnoindent%5Crandomtext%0A%0A%5Cbegin%7Bboxlabel%7D%0A%5Citem+%5Crandomtext%0A%5Citem+%5Crandomtext%0A%5Citem+%5Crandomtext%0A%5Cend%7Bboxlabel%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Listenvironmemt2.png](/files/d51dcd25d52ad1c33a8d97c64c3c14c21e3590d7)

### Використання пакета enumitem для модифікації та створення списків

Функція [`enumitem` accents](https://ctan.org/pkg/enumitem?lang=en) є рекомендованим методом для зміни стандартних списків LaTeX або створення власних форматів списків. `enumitem` надає *багатство* можливостей, тож ми не можемо охопити всі, але можемо надати кілька базових прикладів, щоб допомогти вам почати. Усім, хто хоче глибше дослідити цей універсальний пакет, наполегливо *наполегливо* переглянути tex.stackexchange для [запитань, відповідей (і прикладів), що стосуються `enumitem` accents](https://tex.stackexchange.com/questions/tagged/enumitem), а також прочитати [документація пакета](http://mirrors.ctan.org/macros/latex/contrib/enumitem/enumitem.pdf).

#### опція shortlabels пакета enumitem

Функція `enumitem` надає необов’язковий параметр конфігурації під назвою `shortlabels` який ви використовуєте через

```latex
\usepackage[shortlabels]{enumitem}
```

Функція `shortlabels` опція імітує поведінку `enumerate` пакета, надаючи стислий спосіб визначення схеми нумерації середовищ enumerate. Див. [`enumerate` документація пакета](https://ctan.org/pkg/enumerate?lang=en) для додаткової інформації.

#### Модифікація стандартного списку

З посиланням на [діаграму параметрів LaTeX](#latex-list-parameters) ми можемо використати `enumitem` щоб легко налаштувати стандартний список LaTeX, наприклад `itemize`:

```latex
\documentclass{article}
\usepackage{enumitem}

\begin{document}

\newcommand{\randomtext}{Привіт, ось трохи тексту без змісту. Привіт, ось трохи тексту без змісту.}

\section*{Використання стандартних налаштувань LaTeX для \texttt{itemize}}

\randomtext

\begin{itemize}
\item \randomtext
   \begin{itemize}
      \item \randomtext
        \begin{itemize}
        \item \randomtext
        \end{itemize}
   \item \randomtext
   \end{itemize}
\item \randomtext
\end{itemize}

\section*{Використання власного \texttt{itemize} через \texttt{enumitem}}

\subsection*{Зверніть увагу на вплив налаштувань лівого та правого полів}

\randomtext

\begin{itemize}[leftmargin=30pt, rightmargin=2cm]
\item \randomtext
   \begin{itemize}
      \item \randomtext
        \begin{itemize}
        \item \randomtext
        \end{itemize}
   \item \randomtext
   \end{itemize}
\item \randomtext
\end{itemize}

\end{document}
```

[Відкрийте цей `enumitem` приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Modifying+a+LaTeX+list+with+enumitem\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewcommand%7B%5Crandomtext%7D%7BHello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.%7D%0A%0A%5Csection%2A%7BUsing+LaTeX%27s+default+settings+for+%5Ctexttt%7Bitemize%7D%7D%0A%0A%5Crandomtext%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Crandomtext%0A+++%5Cbegin%7Bitemize%7D%0A++++++%5Citem+%5Crandomtext%0A++++++++%5Cbegin%7Bitemize%7D%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Cend%7Bitemize%7D%0A+++%5Citem+%5Crandomtext%0A+++%5Cend%7Bitemize%7D%0A%5Citem+%5Crandomtext%0A%5Cend%7Bitemize%7D%0A%0A%5Csection%2A%7BUsing+a+custom+%5Ctexttt%7Bitemize%7D+via+%5Ctexttt%7Benumitem%7D%7D%0A%0A%5Csubsection%2A%7BNote+the+effect+of+left+and+right+margin+settings%7D%0A%0A%5Crandomtext%0A%0A%5Cbegin%7Bitemize%7D%5Bleftmargin%3D30pt%2C+rightmargin%3D2cm%5D%0A%5Citem+%5Crandomtext%0A+++%5Cbegin%7Bitemize%7D%0A++++++%5Citem+%5Crandomtext%0A++++++++%5Cbegin%7Bitemize%7D%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Cend%7Bitemize%7D%0A+++%5Citem+%5Crandomtext%0A+++%5Cend%7Bitemize%7D%0A%5Citem+%5Crandomtext%0A%5Cend%7Bitemize%7D%0A%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Tweakitemize2.png](/files/b2924bdfd730b159e4ee0413fe79c79092158206)

#### Створення нового списку за допомогою enumitem

Щоб створити новий тип списку за допомогою `enumitem` ви використовуєте `\newlist` команду, яка потребує 3 аргументи:

```latex
\newlist{name}{list-type}{max-depth}
```

* **`назва`**: назва вашого списку, яка використовуватиметься як середовище:

  ```
  \begin{name}
  ...
  \end{name}
  ```
* **`list-type`** це має бути один зі стандартних типів списків LaTeX:
* `enumerate`
* `itemize`
* `опис`
* **`max-depth`**: максимальна глибина, на яку буде вкладено цей список. **ПРИМІТКА** для списків, що перевищують стандартне обмеження LaTeX на вкладеність 4, вам також потрібно виконати команду `\setlistdepth{*integer*}` де `*ціле число*` це максимальна глибина вкладеності, яку ви плануєте використовувати. Див. приклад [Списки для юристів](#lists-for-lawyers-nesting-lists-to-an-arbitrary-depth) для демонстрації цього.

Після створення нового списку ви можете налаштувати його за допомогою `\setlist` команду.

**Використання \setlist для налаштування власного списку, створеного за допомогою enumitem**

У цьому прикладі ми створимо новий список під назвою `myitems` який базується на `enumerate`. Ми встановимо [`**max-depth**`](#maxdepth) до 3:

```latex
\newlist{myitems}{enumerate}{3}
```

Мінімальна вимога — використати `\setlist` команду для визначення підписів цього власного списку. Один зі способів зробити це для списків на основі enumerate — використовувати змінні-лічильники, створені `enumitem` пакетом — ці змінні-лічильники використовують `**назва**` вашого списку: `myitems` у нашому прикладі.

Ось як ми використовуємо відповідні змінні-лічильники в нашій конфігурації міток:

* `myitems**i**` для елементів рівня 1
* `myitems**ii**` для елементів рівня 2
* `myitems**iii**` для елементів рівня 3

Якби рівнів було більше ніж 3, відповідні змінні-лічильники називалися б `myitems**iv**` (рівень 4), `myitems**v**` (рівень 5) і так далі, продовжуючи використання малих римських цифр.

Окрім міток, ми також встановимо деякі значення для `leftmargin` та `rightmargin` (див. [діаграму параметрів LaTeX](#latex-list-parameters)).

```latex
\documentclass{article}
\usepackage{enumitem}
\begin{document}

\newcommand{\randomtext}{Привіт, ось трохи тексту без змісту. Привіт, ось трохи тексту без змісту.}

\newcommand{\shortrandomtext}{Привіт, ось трохи тексту.}
% Створюємо власний список на основі enumerate
% Він називається "myitems"
% Ми створимо список глибиною 3 рівні
\newlist{myitems}{enumerate}{3}

% Налаштовуємо поведінку елементів рівня 1
% ПРИМІТКА: ми використовуємо лічильник списку "myitemsi"
\setlist[myitems, 1]
{label=\arabic{myitemsi}., %1., 2., 3., ...
leftmargin=\parindent,
rightmargin=10pt
}

% Налаштовуємо поведінку елементів рівня 2
% ПРИМІТКА: ми використовуємо лічильник списку "myitemsii"
\setlist[myitems, 2]
{label=\arabic{myitemsi}.\arabic{myitemsii}, %1.1, 1.2, 1.3...
leftmargin=15pt,
rightmargin=15pt}

% Налаштовуємо поведінку елементів рівня 3
% ПРИМІТКА: ми використовуємо лічильник списку "myitemsiii"
\setlist[myitems, 3]
% Використовуємо мітку 1.1:<kern>(a), 1.1:<kern>(b) тощо
{label=\arabic{myitemsi}.\arabic{myitemsii}:\kern1.5pt(\alph{myitemsiii}),
leftmargin=30pt,
rightmargin=30pt}

\randomtext
\begin{myitems}
\item \randomtext
    \begin{myitems}
    \item \randomtext
        \begin{myitems}
        \item \randomtext
        \item \randomtext
        \end{myitems}
    \item \shortrandomtext
    \item \shortrandomtext
    \end{myitems}
\item \randomtext
\end{myitems}
\end{document}
```

[Відкрийте цей `enumitem` приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Create+a+custom+list+with+enumitem\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewcommand%7B%5Crandomtext%7D%7BHello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.%7D%0A%0A%5Cnewcommand%7B%5Cshortrandomtext%7D%7BHello%2C+here+is+some+text.%7D%0A%25+Create+a+custom+list+based+on+enumerate%0A%25+It+is+called+%22myitems%22%0A%25+We%27ll+create+a+list+that+is+3+levels+deep%0A%5Cnewlist%7Bmyitems%7D%7Benumerate%7D%7B3%7D%0A%0A%25+Configure+the+behaviour+of+level+1+entries%0A%25+NOTE%3A+we+use+the+list+counter+%22myitemsi%22%0A%5Csetlist%5Bmyitems%2C+1%5D%0A%7Blabel%3D%5Carabic%7Bmyitemsi%7D.%2C+%251.%2C+2.%2C+3.%2C+...%0Aleftmargin%3D%5Cparindent%2C%0Arightmargin%3D10pt%0A%7D%0A%0A%25+Configure+the+behaviour+of+level+2+entries%0A%25+NOTE%3A+we+use+the+list+counter+%22myitemsii%22%0A%5Csetlist%5Bmyitems%2C+2%5D%0A%7Blabel%3D%5Carabic%7Bmyitemsi%7D.%5Carabic%7Bmyitemsii%7D%2C+%251.1%2C+1.2%2C+1.3...%0Aleftmargin%3D15pt%2C%0Arightmargin%3D15pt%7D%0A%0A%25+Configure+the+behaviour+of+level+3+entries%0A%25+NOTE%3A+we+use+the+list+counter+%22myitemsiii%22%0A%5Csetlist%5Bmyitems%2C+3%5D%0A%25+Use+a+label+of+1.1%3A%3Ckern%3E%28a%29%2C+1.1%3A%3Ckern%3E%28b%29+etc++%0A%7Blabel%3D%5Carabic%7Bmyitemsi%7D.%5Carabic%7Bmyitemsii%7D%3A%5Ckern1.5pt%28%5Calph%7Bmyitemsiii%7D%29%2C%0Aleftmargin%3D30pt%2C%0Arightmargin%3D30pt%7D%0A%0A%5Crandomtext%0A%5Cbegin%7Bmyitems%7D%0A%5Citem+%5Crandomtext%0A++++%5Cbegin%7Bmyitems%7D%0A++++%5Citem+%5Crandomtext%0A++++++++%5Cbegin%7Bmyitems%7D%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Cend%7Bmyitems%7D%0A++++%5Citem+%5Cshortrandomtext%0A++++%5Citem+%5Cshortrandomtext%0A++++%5Cend%7Bmyitems%7D%0A%5Citem+%5Crandomtext%0A%5Cend%7Bmyitems%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![CustomItemizeList.png](/files/f4aa81be1bff74df2ddecb20e508cecec16ab447)

#### Списки для юристів: вкладені списки на довільну глибину

Функція `enumitem` Пакет дозволяє створювати списки, які можна вкладати на довільну глибину, усуваючи обмеження LaTeX у 4 рівні. Кожен, хто готує договори зі складною (глибоко вкладеною) структурою пунктів, може отримати від цього користь, хоча вкладений код і справді виглядає трохи лячно...

```latex
\documentclass{article}
\usepackage{enumitem}

\begin{document}

\newlist{contract}{enumerate}{10}
\setlist[contract]{label*=\arabic*.}
\setlistdepth{10}

\section*{Власний список, вкладений на 10 рівнів!}

\begin{contract}
\item Рівень 1
 \begin{contract}
 \item Рівень 2
   \begin{contract}
   \item Рівень 3
     \begin{contract}
     \item Рівень 4
       \begin{contract}
       \item Рівень 5
        \begin{contract}
        \item Рівень 6
         \begin{contract}
         \item Рівень 7
          \begin{contract}
          \item Рівень 8
           \begin{contract}
           \item Рівень 9
            \begin{contract}
            \item Рівень 10
          \end{contract}
         \end{contract}
        \end{contract}
       \end{contract}
      \end{contract}
     \end{contract}
    \end{contract}
   \end{contract}
  \end{contract}
 \end{contract}
\end{document}
```

[Відкрийте цей `enumitem` приклад в Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+the+enumitem+package+to+create+deeply+nested+lists\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewlist%7Bcontract%7D%7Benumerate%7D%7B10%7D%0A%5Csetlist%5Bcontract%5D%7Blabel%2A%3D%5Carabic%2A.%7D%0A%5Csetlistdepth%7B10%7D+%0A%0A%5Csection%2A%7BCustom+list+nested+to+10+levels+deep%21%7D%0A%0A%5Cbegin%7Bcontract%7D%0A%5Citem+Level+1%0A+%5Cbegin%7Bcontract%7D%0A+%5Citem+Level+2%0A+++%5Cbegin%7Bcontract%7D%0A+++%5Citem+Level+3%0A+++++%5Cbegin%7Bcontract%7D%0A+++++%5Citem+Level+4%0A+++++++%5Cbegin%7Bcontract%7D%0A+++++++%5Citem+Level+5%0A++++++++%5Cbegin%7Bcontract%7D%0A++++++++%5Citem+Level+6%0A+++++++++%5Cbegin%7Bcontract%7D%0A+++++++++%5Citem+Level+7%0A++++++++++%5Cbegin%7Bcontract%7D%0A++++++++++%5Citem+Level+8%0A+++++++++++%5Cbegin%7Bcontract%7D%0A+++++++++++%5Citem+Level+9%0A++++++++++++%5Cbegin%7Bcontract%7D%0A++++++++++++%5Citem+Level+10%0A++++++++++%5Cend%7Bcontract%7D%0A+++++++++%5Cend%7Bcontract%7D%0A++++++++%5Cend%7Bcontract%7D%0A+++++++%5Cend%7Bcontract%7D%0A++++++%5Cend%7Bcontract%7D%0A+++++%5Cend%7Bcontract%7D%0A++++%5Cend%7Bcontract%7D%0A+++%5Cend%7Bcontract%7D%0A++%5Cend%7Bcontract%7D%0A+%5Cend%7Bcontract%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![10levels.png](/files/ef9986ee5c0892d31c84c02aa887970c9e21283b)

#### Власні маркери списку за допомогою пакета enumitem і MetaPost

Наступні приклади працюють лише з LuaLaTeX і покликані дати уявлення про деякі можливості — звісно, замініть MetaPost на улюблений вами інструмент/програму для малювання!

У цих прикладах використовується `luamplib` пакет, а також демонструється, що команди, які розгортаються, такі як `\the` та `\directlua`, можуть використовуватися в коді MetaPost.

**Приклад 1: автоматичне масштабування маркерів списку**

Цей приклад створює маркери списку, які зменшуються в розмірі зі збільшенням глибини списку. Натисніть посилання «Open in Overleaf», щоб запустити приклад і переглянути повний код.

```latex
% Оголошуємо новий список на основі itemize через enumitem
\newlist{myEnumerate}{itemize}{6}

% Опція nosep прибирає весь вертикальний інтервал
% label=\protect\mpbullet призводить до того, що всі маркери
% малюються макросом, який використовує код MetaPost. \protect
% потрібен, як зазначено в посібнику enumitem

\setlist[myEnumerate]{nosep,label=\protect\mpbullet}
\setlistdepth{6}

\begin{myEnumerate}
\item Рівень 1
  \begin{myEnumerate}
   \item Рівень 2
    \begin{myEnumerate}
     \item Рівень 3
      \begin{myEnumerate}
       \item Рівень 4
        \begin{myEnumerate}
         \item Рівень 5
          \begin{myEnumerate}
           \item Рівень 6
           \end{myEnumerate}
        \end{myEnumerate}
       \end{myEnumerate}
    \end{myEnumerate}
   \end{myEnumerate}
\end{myEnumerate}
```

[Щоб побачити ***повний код***, відкрийте цей приклад LuaLaTeX в Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Using+MetaPost+with+the+enumitem+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bluamplib%7D%0A%5Cusepackage%7Benumitem%7D%0A%5Ceverymplib%7Bbeginfig%280%29%3B%7D%0A%5Ceveryendmplib%7Bendfig%3B%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0AThis+list+configuration+example+uses+MetaPost+code+that+contains+Lua+code+via+%5Cverb%7C%5Cdirectlua%7C.+Bullets+are+created+by+MetaPost+code%2C+size+is+calculated+from+the+depth+of+the+entry.%0A%0A%25+It+is+convenient+to+use+%5Clet%5Cmpdepth%5C%40listdepth%3A+makes+it+%0A%25+easier+to+use+in+MetaPost+code%0A%0A%5Ccatcode%60%40%3D11%0A%5Clet%5Cmpdepth%5C%40listdepth%0A%5Ccatcode%60%40%3D12%0A%0A%5Cnewcommand%7B%5Cmpbullet%7D%7B%25%0A%5Cbegin%7Bmplibcode%7D%25%0Adraw+%280%2C0%29..%280%2C-%5Cdirectlua%7Btex.print%28%5Cthe%5Cmpdepth%2F2%29%7D%29+withpen+pencircle+scaled+2pt+withcolor+white%3B%0Adrawdot%280%2C0%29+withpen+pencircle+scaled+%5Cdirectlua%7Btex.print%285%2Fmath.sqrt%28%5Cthe%5Cmpdepth%29%29%7Dbp%3B%0A%5Cend%7Bmplibcode%7D%7D%0A%25+Declare+a+new+itemize-based+list+via+enumitem%0A%5Cnewlist%7BmyEnumerate%7D%7Bitemize%7D%7B6%7D%0A%0A%25+The+nosep+option+removes+all+vertical+spacing%0A%25+the+label%3D%5Cprotect%5Cmpbullet+causes+all+bullets+to+be+%0A%25+drawn+by+a+macro+that+uses+MetaPost+code.+%5Cprotect%0A%25+is+required+as+noted+in+the+enumitem+manual+%0A%0A%5Csetlist%5BmyEnumerate%5D%7Bnosep%2Clabel%3D%5Cprotect%5Cmpbullet%7D%0A%5Csetlistdepth%7B6%7D%0A%0A%5Cbegin%7BmyEnumerate%7D%0A%5Citem+Level+1%0A++%5Cbegin%7BmyEnumerate%7D%0A+++%5Citem+Level+2%0A++++%5Cbegin%7BmyEnumerate%7D%0A+++++%5Citem+Level+3%0A++++++%5Cbegin%7BmyEnumerate%7D%0A+++++++%5Citem+Level+4%0A++++++++%5Cbegin%7BmyEnumerate%7D%0A+++++++++%5Citem+Level+5%0A++++++++++%5Cbegin%7BmyEnumerate%7D%0A+++++++++++%5Citem+Level+6%0A+++++++++++%5Cend%7BmyEnumerate%7D%0A++++++++%5Cend%7BmyEnumerate%7D%0A+++++++%5Cend%7BmyEnumerate%7D%0A++++%5Cend%7BmyEnumerate%7D%0A+++%5Cend%7BmyEnumerate%7D%0A%5Cend%7BmyEnumerate%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![Autosize.png](/files/7ea70dff16e38580259c1ead801be6f5acead3b2)

**Приклад 2: кумедні власні маркери**

Цей приклад був натхненний одним [приклад на tex.stackexchange](https://tex.stackexchange.com/a/313337) який Overleaf модифікував, щоб створювати власні маркери за допомогою коду MetaPost. Натисніть посилання «Open in Overleaf», щоб запустити приклад і переглянути повний код.

```latex
\newlist{todolist}{itemize}{2}

\begin{itemize}
  \item Почніть думати про те, чого ми сподіваємося досягти
  \begin{todolist}
  \item[\mpdot] Визначте цілі
  \item[\mpyingyang] Збалансуйте вплив на довкілля
  \item[\mpsquare{0}{5}{0}] Упровадьте плани
    \begin{todolist}
    \item[\mpsquare{-0.5}{4}{0}] Плани етапу 1
    \item[\mpsquare{-0.5}{4}{-20}] Плани етапу 2
    \item[\mpsquare{-0.5}{4}{-40}] Плани етапу 3
    \item[\mpsquare{-0.5}{4}{-60}] Плани етапу 4
    \end{todolist}
  \end{todolist}
\end{itemize}
```

[Щоб побачити ***повний код***, відкрийте цей приклад LuaLaTeX в Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Second+example+using+MetaPost+with+the+enumitem+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%5Cusepackage%7Bluamplib%7D%0A%5Ceverymplib%7Bbeginfig%280%29%3B%7D%0A%5Ceveryendmplib%7Bendfig%3B%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewcommand%7B%5Cmpyingyang%7D%7B%25%0A%5Clower1.5pt%5Chbox%7B%5Cbegin%7Bmplibcode%7D%25%0Apath+p%3B%0Ap%3A%3D%28-1%2C0%29..%280%2C-1%29..%281%2C0%29%3B%0Afill+%28p%7Bup%7D..%7Bdown%7D%280%2C0%29%7Bdown%7D..%7Bup%7Dcycle%29+scaled+0.15cm%3B%0Adraw+%28p..%280%2C1%29..cycle%29+scaled+0.15cm+%3B%0A%5Cend%7Bmplibcode%7D%7D%25%0A%7D%25%0A%5Cnewcommand%7B%5Cmpdot%7D%7B%25%0A%5Clower1.5pt%5Chbox%7B%5Cbegin%7Bmplibcode%7D%25%0Adrawdot%280%2C0%29+withpen+pencircle+scaled+2bp%3B%0Adraw+fullcircle+scaled+0.2cm%3B%0Adraw+fullcircle+scaled+0.3cm%3B%0A%5Cend%7Bmplibcode%7D%7D%25%0A%7D%25%0A%5Cnewcommand%7B%5Cmpsquare%7D%5B3%5D%7B%25%0A%5Clower%231pt%5Chbox%7B%5Cbegin%7Bmplibcode%7D%25%0Adraw+unitsquare+rotated+%233+scaled+%232pt%3B%0A%5Cend%7Bmplibcode%7D%25%0A%7D%7D%25%0A%5Cnewlist%7Btodolist%7D%7Bitemize%7D%7B2%7D%0A%0A%5Cbegin%7Bitemize%7D%0A++%5Citem+Start+thinking+about+what+we+hope+to+achieve%0A++%5Cbegin%7Btodolist%7D%0A++%5Citem%5B%5Cmpdot%5D+Identify+objectives%0A++%5Citem%5B%5Cmpyingyang%5D+Balance+environmental+impact+%0A++%5Citem%5B%5Cmpsquare%7B0%7D%7B5%7D%7B0%7D%5D+Implement+plans%0A++++%5Cbegin%7Btodolist%7D%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B0%7D%5D+Stage+1+plans%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B-20%7D%5D+Stage+2+plans%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B-40%7D%5D+Stage+3+plans%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B-60%7D%5D+Stage+4+plans%0A++++%5Cend%7Btodolist%7D%0A++%5Cend%7Btodolist%7D%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

Цей приклад дає такий результат:

![CustomBullets2.png](/files/4dc921d1476a429d114e83241b805e45c900d06d)

## Інші можливості пакета enumitem

Як зазначалося, `enumitem` пакет є надзвичайно універсальним і надає численні можливості для використання та налаштування списків. Наприклад, серед можливостей, які ми не розглядали, є:

* посилання на елементи списку: наприклад, дивіться це [питання та приклад на tex.stackexchane](https://tex.stackexchange.com/questions/524822/help-for-formatting-the-ref-of-nested-enumerate)
* керування `enumerate` нумерацією списку:
  * встановіть початковий номер першого елемента
  * продовжуйте нумерацію різних `enumerate` списків

І ще багато чого! Перегляньте [tex.stackexchange, щоб знайти багато чудових прикладів](https://tex.stackexchange.com/questions/tagged/enumitem) того, що ви можете зробити за допомогою `enumitem`— і, звісно, [прочитайте документацію пакета](https://ctan.org/pkg/enumitem).


---

# 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/uk/osnovi-latex/04-lists.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.
