> 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/struktura-dokumenta/04-indices.md).

# Покажчики

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

## Вступ

Давайте подивимося на простий робочий приклад.

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex

\begin{document}
\section{Introduction}
У цьому прикладі буде використано кілька ключових слів\index{keywords}
які є важливими і заслуговують на те, щоб з’явитися в Index\index{Index}.

Також з’являться терміни на кшталт generate\index{generate} та some\index{others}
.

\printindex
\end{document}
```

[Відкрити цей приклад в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%0A%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+used+%0Awhich+are+important+and+deserve+to+appear+in+the+Index%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+will+%0Aalso+show+up.+%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

Наступне зображення показує результат, отриманий у прикладі вище:

![Index1OLV2.png](/files/9843645a2571bb452ff9e175a0b6409f96f1a55a)

Спочатку пакет додається в преамбулу рядком

```latex
\usepackage{imakeidx}
```

Потім команда `\makeindex` є обов’язковою для роботи індексу й може приймати деякі параметри для налаштування його вигляду; у наступних розділах це стане зрозуміло.

Щоб додати запис до індексу, команда `\index{}` використовується, де слово, яке потрібно додати, вставляється як параметр. Будьте уважні: це не надрукує слово в поточному місці, а лише в індексі.

Нарешті, команда `\printindex` справді виведе індекс. Якщо ви використовуєте спеціальну локалізацію за допомогою `babel` пакета, заголовок буде перекладено відповідно.

Примітка: замість `imakeidx`, пакет `makeidx` може бути імпортований, але пропонує менше можливостей налаштування.

## Індекси в Overleaf

Під час додавання індексу до проєкту в Overleaf важливо **зазначити** що для коректної компіляції індексу головний `.tex` файл має бути в кореневому каталозі проєкту, *поза будь-якими папками*. Це гарантує, що допоміжні файли, потрібні для створення індексу, кешуються так, щоб компілятор мав до них доступ.

## Записи та підзаписи

Як уже згадувалося в попередньому розділі, команда `\index` додасть слово, передане їй, до індексу, але це не єдиний спосіб її використання.

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex

\begin{document}
\section{Introduction}
У цьому прикладі буде використано кілька ключових слів\index{keywords}
які є важливими і заслуговують на те, щоб з’явитися в Index\index{Index}.

Терміни на кшталт generate\index{generate} та some\index{others} також
з’являться. Терміни в індексі також можуть бути вкладеними \index{Index!nested}

\clearpage

\section{Second section}
Цей другий розділ\index{section} може містити якесь особливе слово,
і розширювати вже використані\index{keywords!used}.

\printindex
\end{document}
```

[Відкрити цей приклад в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%0A%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+used+%0Awhich+are+important+and+deserve+to+appear+in+the+Index%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+will+also+%0Ashow+up.+Terms+in+the+index+can+also+be+nested+%5Cindex%7BIndex%21nested%7D%0A%0A%5Cclearpage%0A%0A%5Csection%7BSecond+section%7D%0AThis+second+section%5Cindex%7Bsection%7D+may+include+some+special+word%2C+%0Aand+expand+the+ones+already+used%5Cindex%7Bkeywords%21used%7D.%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

Наступне зображення показує результат, отриманий у прикладі вище:

![Index2OLV2.png](/files/8534e3ab60efcce5080e6f9e033c0a7a3c1354bd)

Поширеною практикою є розширення термінів в індексі, щоб включати особливі прикметники. Наприклад, слово *Field* може мати особливе значення, якщо перед ним стоїть прикметник *скінченне* або після нього йде *характеристики 0*, і може бути трохи незручно додавати різні типи *Field*як окремі записи в індексі. Для таких випадків можна додати знак оклику "!", який додасть терміни після цього знака як підзаписи до основного слова *Field*.

У прикладі слово "Index" має слово "nested" як підзапис.

## Форматування індексу

Просте форматування індексу, таке як зміна заголовка індексу, додавання кількох стовпців і зміна ширини стовпця, можна легко виконати, передаючи необов’язкові значення до `\makeindex`:

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex[columns=3, title=Alphabetical Index]

\begin{document}
\section{Introduction}
У цьому прикладі буде використано кілька ключових слів\index{keywords}, які
є важливими і заслуговують на те, щоб з’явитися в Index\index{Index}.

Терміни на кшталт generate\index{generate} та some\index{others} також
з’являться. Терміни в індексі також можуть бути вкладеними \index{Index!nested}

\clearpage

\section{Second section}
Цей другий розділ\index{section} може містити якесь особливе слово,
і розширювати вже використані\index{keywords!used}.

\printindex
\end{document}
```

[Відкрити цей приклад в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%5Bcolumns%3D3%2C+title%3DAlphabetical+Index%5D%0A%0A%5Cbegin%7Bdocument%7D%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+used+which+%0Aare+important+and+deserve+to+appear+in+the+Index%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+will+also+%0Ashow+up.+Terms+in+the+index+can+also+be+nested+%5Cindex%7BIndex%21nested%7D%0A%0A%5Cclearpage%0A%0A%5Csection%7BSecond+section%7D%0AThis+second+section%5Cindex%7Bsection%7D+may+include+some+special+word%2C+%0Aand+expand+the+ones+already+used%5Cindex%7Bkeywords%21used%7D.%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

Наступне зображення показує результат, отриманий у прикладі вище:

![Index3OLV2.png](/files/1888f8266c9101cb37b802f8056e203f4fa05c28)

У цьому прикладі індекс подано у форматі з трьома стовпцями за допомогою параметра `columns=3`, а заголовок змінено на "Alphabetical Index" за допомогою `title=Alphabetical Index`; ці параметри передаються до `\makeindex` у преамбулі. Дивіться [довідкове керівництво](#reference-guide) для списку доступних параметрів та їх опису.

### Використання файлів стилів

Для подальшого налаштування індексу можна використовувати файл стилю. Файли стилю повідомляють `makeindex` про запланований формат кінцевого виводу. Файли стилю містять список `<key, value>` пар. Наприклад, якщо потрібно згрупувати терміни в індексі за їхньою початковою літерою та вирівняти номери сторінок праворуч, наступний файл стилю впорається з цим завданням:

```latex
headings_flag 1

heading_prefix "\n\\centering\\large\\sffamily\\bfseries%
\\noindent\\textbf{"heading_suffix "}\\par\\nopagebreak\n"

item_0 "\n \\item \\small "

delim_0 " \\hfill "
delim_1 " \\hfill "
delim_2 " \\hfill "
```

Ключі змінюють різні елементи у виводі індексу:

* `headings_flag 1` вмикає групування, вставляючи заголовок групи (символи, числа або літери) перед новою групою.
* `heading_prefix` форматує заголовок, який вставляється перед початком нової літери. Використовуються звичайні команди форматування для сімейства шрифту, висоти шрифту та вирівнювання, але зворотні скісні риски потрібно екранувати подвійним зворотним скісним риском замість одного.
* `item_0` це те, що буде вставлено між двома основними елементами.
* `delim_*` є роздільником, який вставляється між ключем і першим номером сторінки.

Повний список ключів і значень для використання у файлі .ist див. [Таблиця, включена в довідкове керівництво](#keys-to-create-styles-files).

Припустімо, що попередній файл збережено як "example\_style.ist". Щоб використати його в документі, ми додаємо параметр `options= -s example_style.ist` до `\makeindex` команди.

```latex
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex[columns=3, title=Alphabetical Index,
           options= -s example_style.ist]

\begin{document}

\tableofcontents

\section{Introduction}
У цьому прикладі буде використано кілька ключових слів\index{keywords}, які є важливими і заслуговують на те, щоб з’явитися в Index\index{Index}.

Терміни на кшталт generate\index{generate}, чудовий\index{great} список і деякі інші\index{others} терміни, які можуть бути важливими\index{important}
також з’являться. Терміни в індексі також можуть бути вкладеними \index{Index!nested}

\clearpage

\section{Second section}
Цей другий розділ\index{section} може містити якесь особливе слово і розширювати вже використані\index{keywords!used}.

\printindex
\end{document}
```

[Відкрити приклад використання файла стилю індексу в Overleaf](https://www.overleaf.com/project/new/template/20614?id=70756423\&templateName=Using+an+index+style+file\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

Наступне зображення показує результат, отриманий у прикладі вище:

![Index4OLV2.png](/files/a1b9b2857ab32bd97751b96a581abcb3e7edba40)

## Включення індексу до змісту

За замовчуванням індекс не включається до змісту, це можна легко змінити.

```latex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{imakeidx}
\makeindex[columns=3, title=Alphabetical Index, intoc]

\begin{document}
\tableofcontents

\section{Introduction}
У цьому прикладі буде використано кілька ключових слів\index{keywords}, які будуть
використані, є важливими і заслуговують на те, щоб з’явитися в
Index\index{Index}.

Терміни на кшталт generate\index{generate} та some\index{others}
також з’являться. Терміни в індексі також можуть бути
вкладеними \index{Index!nested}

\clearpage

\section{Second section}
Цей другий розділ\index{section} може містити якесь особливе
слово і розширювати вже використані\index{keywords!used}.

\printindex
\end{document}
```

[Відкрити цей приклад в Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Index+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5BT1%5D%7Bfontenc%7D%0A%5Cusepackage%7Bimakeidx%7D%0A%5Cmakeindex%5Bcolumns%3D3%2C+title%3DAlphabetical+Index%2C+intoc%5D%0A%0A%5Cbegin%7Bdocument%7D%0A%5Ctableofcontents%0A%0A%5Csection%7BIntroduction%7D%0AIn+this+example%2C+several+keywords%5Cindex%7Bkeywords%7D+will+be+%0Aused+which+are+important+and+deserve+to+appear+in+the+%0AIndex%5Cindex%7BIndex%7D.%0A%0ATerms+like+generate%5Cindex%7Bgenerate%7D+and+some%5Cindex%7Bothers%7D+%0Awill+also+show+up.+Terms+in+the+index+can+also+be+%0Anested+%5Cindex%7BIndex%21nested%7D%0A%0A%5Cclearpage%0A%0A%5Csection%7BSecond+section%7D%0AThis+second+section%5Cindex%7Bsection%7D+may+include+some+special+%0Aword%2C+and+expand+the+ones+already+used%5Cindex%7Bkeywords%21used%7D.%0A%0A%5Cprintindex%0A%5Cend%7Bdocument%7D)

Наступне зображення показує результат, отриманий у прикладі вище:

![Index5OLV2.png](/files/1bff02e8519abf8ac5d4f0b0f4c61cdb1f3c58bd)

Додавши параметр `intoc` до команди `\makeindex` увімкнено включення заголовка індексу до змісту.

## Довідкове керівництво

### Параметри команди \makeindex

**title**

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

**intoc**

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

**columns**

Використовує синтаксис key=value; значення має бути цілим числом, що позначає кількість стовпців. Значення за замовчуванням — 2.

**columnsep**

Вказує одиниці, які позначають відстань між стовпцями. Синтаксис має бути key=value, наприклад columnsep=2em.

**columnseprule**

Якщо передано цю опцію, між стовпцями буде відображено вертикальну лінійку.

### Ключі для створення файлів стилів

Наступна таблиця показує ключі, значення за замовчуванням і описи для створення файлів стилів .ist.

| ключ                        | Опис                                                                                                                                                                                                                                                                                                                    |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `actual <char>`             | '@' Символ, що вказує, що наступний запис має з’явитися у вихідному файлі.                                                                                                                                                                                                                                              |
| `arg_close <char>`          | '}' Закривальний роздільник для аргументу запису індексу.                                                                                                                                                                                                                                                               |
| `arg_open <char>`           | '{' Відкривальний роздільник для аргументу запису індексу.                                                                                                                                                                                                                                                              |
| `encap <char>`              | ' Символ, що вказує, що решта списку аргументів має використовуватися як команда-обгортка для номера сторінки.                                                                                                                                                                                                          |
| `escape <char>`             | '\\\\' Символ, який екранує наступну літеру, якщо перед ним не стоїть сам символ екранування. Примітка: quote використовується для екранування літери, яка безпосередньо йде після нього, але якщо перед ним стоїть символ екранування, він розглядається як звичайний символ. Ці два символи мають бути різними.       |
| `keyword <string>`          | "\\\indexentry" Команда, яка повідомляє makeindex, що її аргумент є записом індексу.                                                                                                                                                                                                                                    |
| `level <char>`              | '!' Роздільник, що позначає новий рівень підпункту.                                                                                                                                                                                                                                                                     |
| `quote <char>`              | '"' Примітка: quote використовується для екранування літери, яка безпосередньо йде після нього, але якщо перед ним стоїть символ екранування, він розглядається як звичайний символ. Ці два символи мають бути різними.                                                                                                 |
| `range_close <char>`        | ')' Закривальний роздільник, що позначає кінець явного діапазону сторінок.                                                                                                                                                                                                                                              |
| `range_open <char>`         | '(' Відкривальний роздільник, що позначає початок явного діапазону сторінок.                                                                                                                                                                                                                                            |
| `preamble <string>`         | "\\\begin{theindex}\n" Преамбула вихідного файла.                                                                                                                                                                                                                                                                       |
| `postamble <string>`        | "\n\n\\\end{theindex}\n" Постамбула вихідного файла.                                                                                                                                                                                                                                                                    |
| `setpage_prefix <string>`   | "\n \\\setcounter{page}{" Префікс команди, яка задає початковий номер сторінки.                                                                                                                                                                                                                                         |
| `setpage_suffix <string>`   | "}\n" Суфікс команди, яка задає початковий номер сторінки.                                                                                                                                                                                                                                                              |
| `group_skip <string>`       | "\n\n \\\indexspace\n" Вертикальний проміжок, який вставляється перед початком нової групи.                                                                                                                                                                                                                             |
| `headings_flag <string>`    | 0 Прапорець, що визначає обробку нових заголовків груп, які вставляються перед новою групою (символи, числа та 26 літер): додатні значення призводять до вставлення великої літери між префіксом і суфіксом, а від’ємні значення — до вставлення малої літери (значення за замовчуванням — 0, що не створює заголовка). |
| `heading_prefix <string>`   | "" Префікс заголовка, який вставляється перед початком нової літери.                                                                                                                                                                                                                                                    |
| `symhead_positive <string>` | "Symbols" Заголовок для символів, який вставляється, якщо headings\_flag додатний.                                                                                                                                                                                                                                      |
| `symhead_negative <string>` | "symbols" Заголовок для символів, який вставляється, якщо headings\_flag від’ємний.                                                                                                                                                                                                                                     |
| `numhead_positive <string>` | "Numbers" Заголовок для чисел, який вставляється, якщо headings\_flag додатний.                                                                                                                                                                                                                                         |
| `numhead_negative <string>` | "numbers" Заголовок для чисел, який вставляється, якщо headings\_flag від’ємний.                                                                                                                                                                                                                                        |
| `item_0 <string>`           | "\n \\\item " Команда, яка вставляється між двома основними (рівня 0) елементами.                                                                                                                                                                                                                                       |
| `item_1 <string>`           | "\n \\\subitem " Команда, яка вставляється між двома другорядними (рівня 1) елементами.                                                                                                                                                                                                                                 |
| `item_2 <string>`           | "\n \\\subsubitem " Команда, яка вставляється між двома елементами рівня 2.                                                                                                                                                                                                                                             |
| `item_01 <string>`          | "\n \\\subitem " Команда, яка вставляється між елементом рівня 0 та елементом рівня 1.                                                                                                                                                                                                                                  |
| `item_x1 <string>`          | "\n \\\subitem " Команда, яка вставляється між елементом рівня 0 та елементом рівня 1, де елемент рівня 0 не має пов’язаних номерів сторінок.                                                                                                                                                                           |
| `item_12 <string>`          | "\n \\\subsubitem " Команда, яка вставляється між елементом рівня 1 та елементом рівня 2.                                                                                                                                                                                                                               |
| `item_x2 <string>`          | "\n \\\subsubitem " Команда, яка вставляється між елементом рівня 1 та елементом рівня 2, де елемент рівня 1 не має пов’язаних номерів сторінок.                                                                                                                                                                        |
| `delim_0 <string>`          | ", " Роздільник, який вставляється між ключем рівня 0 та його першим номером сторінки (за замовчуванням: кома, за якою йде пробіл).                                                                                                                                                                                     |
| `delim_1 <string>`          | ", " Роздільник, який вставляється між ключем рівня 1 та його першим номером сторінки (за замовчуванням: кома, за якою йде пробіл).                                                                                                                                                                                     |
| `delim_2 <string>`          | ", " Роздільник, який вставляється між ключем рівня 2 та його першим номером сторінки (за замовчуванням: кома, за якою йде пробіл).                                                                                                                                                                                     |
| `delim_n <string>`          | ", " Роздільник, який вставляється між двома номерами сторінок для одного й того самого ключа на будь-якому рівні (за замовчуванням: кома, за якою йде пробіл).                                                                                                                                                         |
| `delim_r <string>`          | "--" Роздільник, який вставляється між початковим і кінцевим номерами сторінок діапазону.                                                                                                                                                                                                                               |
| `delim_t <string>`          | "" Роздільник, який вставляється в кінці списку сторінок. Цей роздільник не впливає на записи, які не мають пов’язаного списку сторінок.                                                                                                                                                                                |
| `encap_prefix <string>`     | "\\\\" Перша частина префікса для команди, яка обгортає номер сторінки.                                                                                                                                                                                                                                                 |
| `encap_infix <string>`      | "{" Друга частина префікса для команди, яка обгортає номер сторінки.                                                                                                                                                                                                                                                    |
| `encap_suffix <string>`     | "}" Суфікс для команди, яка обгортає номер сторінки.                                                                                                                                                                                                                                                                    |
| `line_max <number>`         | 72 Максимальна довжина рядка у виводі, після якої відбувається перенесення.                                                                                                                                                                                                                                             |
| `indent_space <string>`     | "\t\t" Пробіл, який вставляється перед перенесеним рядком (за замовчуванням: два табулятори).                                                                                                                                                                                                                           |
| `indent_length <number>`    | 16 Довжина indent\_space (за замовчуванням: 16, що еквівалентно 2 табуляторам).                                                                                                                                                                                                                                         |

## Додаткове читання

Для отримання додаткової інформації дивіться:

* [Глосарії](/latex/uk/struktura-dokumenta/05-glossaries.md)
* [Списки таблиць і рисунків](/latex/uk/risunki-ta-tablici/03-lists-of-tables-and-figures.md)
* [Зміст](/latex/uk/struktura-dokumenta/02-table-of-contents.md)
* [Розділи та глави](/latex/uk/struktura-dokumenta/01-sections-and-chapters.md)
* [Гіперпосилання](/latex/uk/struktura-dokumenta/09-hyperlinks.md)
* [Підтримка міжнародних мов](/latex/uk/movi/03-international-language-support.md)
* [Перехресні посилання на розділи та рівняння](/latex/uk/struktura-dokumenta/03-cross-referencing-sections-equations-and-floats.md)
* [Керування у великому проєкті](/latex/uk/struktura-dokumenta/07-management-in-a-large-project.md)
* [Багатофайлові проєкти LaTeX](/latex/uk/struktura-dokumenta/08-multi-file-latex-projects.md)
* [Документація пакета imakeidx](http://mirror.math.ku.edu/tex-archive/macros/latex/contrib/imakeidx/imakeidx.pdf)


---

# 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/struktura-dokumenta/04-indices.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.
