> 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/ru/osnovy-latex/04-lists.md).

# Списки

## Три способа вставки списков в Overleaf

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

1. Используйте **Вставить маркированный список** (![Image of the menu icon for insert a bulleted list in Overleaf](/files/6f7dd0dd3ff6d2e39060d42362b38905a7352fb4)) или **Вставить нумерованный список** (![Image of the menu icon for insert a numbered list in Overleaf](/files/c34e58b165a725f274e88eec86c98f7f6e65b595)) на панели инструментов редактора, чтобы вставлять списки в **Визуальный редактор** или **Кодовый редактор**.
2. [Вставьте форматированный список в **Визуальный редактор**](/latex/ru/baza-znanii/075-how-to-paste-formatted-content-into-overleaf.md#pasteformattedlist).
3. Напишите свой собственный код LaTeX, используя **Кодовый редактор**.

Варианты 1 и 2 предназначены для автоматического создания кода LaTeX, необходимого для набора списков. Однако для тех, кто хочет писать собственный код LaTeX, вариант 3 может быть предпочтительным. Он обеспечивает наибольшую гибкость и является основным объектом внимания этой статьи.

## Введение

В этой статье даётся введение в набор и настройку различных типов списков в 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/e3c2097b4ae20663cfcf3132d965a64215aead89)

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

Нумерованные (упорядоченные) списки имеют тот же синтаксис, но используют `enumerate` среду: каждому элементу должен предшествовать управляющий символ `\item`, который будет автоматически создавать номера для обозначения элемента. Эти номера начинаются с 1 при каждом использовании `enumerate` среды — обратите внимание, что это поведение нумерации по умолчанию в LaTeX можно изменить/контролировать с помощью [`enumitem` пакет](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/97217138f31e980f7a6614e05a401174fa0d7409)

### Среда description

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

```latex
\item[текст метки] Текст вашего описания здесь...
```

Мы также используем пакет `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/b8ec159dc43235144f52d5ae54e8c026d86fb009)

## Изменение метки отдельных элементов

Как показано в `описание` примере среды, `\item` команда принимает необязательный параметр в квадратных скобках. Вы можете использовать эту возможность внутри `itemize` и `enumerate` сред, чтобы изменить метку по умолчанию для отдельных элементов в вашем списке:

```latex
\item[текст метки] Текст вашего элемента здесь...
```

Это `текст метки` будет использован для создания метки для этого элемента.

```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/6fa1feb47e26a9d6c50851dab90240b9d4516add)

## Вложенные списки

В 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/c2d8ac6dc54da8a2a40207fccaa29c08a6042daf)

### Вложенные списки: стиль меток

Стиль меток вложенных элементов списка меняется в зависимости от глубины вложенности. Для вложенных `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/1d991b9a139c404ad03f33836527400c0c2f2817)

#### Вложенные списки 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/52edd73b0624b8ad92689ebfa0370d23038cf18e)

## Настройка списков

Списки 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` среды 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 Три, пункт 1
    \begin{enumerate}
    \item Три, пункт 1, подпункт 1
        \begin{enumerate}
        \item Три, пункт 1, подпункт 1, подпункт 1
        \item Три, пункт 1, подпункт 1, подпункт 2
        \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/e2eb7ff6d31388e3d23b5d690d5f8196aef11205)

**Вывод переменных счётчика**

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

В общем случае, *переменная счётчика* можно выводить в различных форматах, используя одну из следующих 5 команд:

* `\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/1ac67ccd46d491b38c733243b9f32bfc88387fba)

**Непрактичный (забавный) пример**

В этом примере emoji набираются с помощью цветного шрифта OpenType, поэтому он *работает только в LuaLaTeX*. См. статью Overleaf [Обзор технологий, поддерживающих использование цветных шрифтов emoji в LaTeX](/latex/ru/podrobnye-stati/10-an-overview-of-technologies-supporting-the-use-of-colour-emoji-fonts-in-latex.md) для получения дополнительной информации о наборе emoji.

Хотя это всего лишь забавный пример, использующий 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/7ecc2ae959aa7ea6593d97e8042d3ebeeb45aa9e)

### Настройка списков: изменение расположения

Помимо настройки меток, можно изменить интервалы и расположение списка, но сначала нам нужно узнать различные параметры 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/43a4fbbf5261386485f0e3610edcae9cde302321)

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

#### Создание пользовательского списка с использованием среды list

LaTeX предоставляет универсальную `list` среду, которая предоставляет основу для создания собственных типов списков. Используя информацию, содержащуюся в схеме выше, следующий пример представляет собой слегка изменённую версию примера из [раздела о списках](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/cf0bd99cf75e3f7f3367ee55027d2a2997a9e626)

### Использование пакета enumitem для изменения и создания списков

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

#### вариант пакета enumitem shortlabels

Это `enumitem` предоставляет необязательный параметр настройки под названием `shortlabels` который вы используете через

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

Это `shortlabels` параметр имитирует поведение `enumerate` пакета, предоставляя краткий способ определения схемы нумерации для сред enumerate. См. [`enumerate` документация пакета](https://ctan.org/pkg/enumerate?lang=en) для получения дополнительной информации.

#### Изменение стандартного списка

Ссылаясь на схему параметров LaTeX [мы можем использовать](#latex-list-parameters) чтобы легко настраивать стандартный список LaTeX, такой как `enumitem` \usepackage{enumitem} `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/ae489a5c901dfdafe82e3665079e0bdfcda78517)

#### Создание нового списка с enumitem

Чтобы создать новый тип списка с `enumitem` вы используете `\newlist` команду, которая требует 3 аргумента:

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

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

  ```
  \begin{name}
  ...
  \end{name}
  ```
* **`list-type`** это должен быть один из стандартных типов списков LaTeX:
* `enumerate`
* `itemize`
* `описание`
* **`max-depth`**: максимальная глубина, на которую будет вложен этот список. **ПРИМЕЧАНИЕ** для списков, превышающих ограничение LaTeX по умолчанию в 4 уровня вложенности, вам также нужно использовать команду `\setlistdepth{*integer*}` где `*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-list-parameters)).

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

\newcommand{\randomtext}{Привет, вот немного текста без смысла. Привет, вот немного текста без смысла.}

\newcommand{\shortrandomtext}{Hello, here is some text.}
% Создать пользовательский список на основе 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/2e46d94a4e9b1b950dbafad0b664e1a8f9c0be4e)

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

Это `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/31dfeb4b744d5426685f1cdab8b0efdfa8f3000a)

#### Пользовательские маркеры с помощью пакета 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/d2a1a7b4fc2fe6d6be0558f93bdf963c414b9a17)

**Пример 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/95a2073655acfb55df6b774421936a32e5eb3adf)

## Другие возможности пакета 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/ru/osnovy-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.
