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

# Indeksy

W niektórych dużych dokumentach, na przykład w książkach, zwyczajowo tworzy się alfabetyczną listę zawierającą główne terminy. Za pomocą LaTeX-a i programu pomocniczego **imakeidx**, indeks można dość łatwo wygenerować.

## Wprowadzenie

Zobaczmy prosty działający przykład.

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

\begin{document}
\section{Introduction}
W tym przykładzie użytych zostanie kilka słów kluczowych\index{keywords}
które są ważne i zasługują na pojawienie się w indeksie\index{Index}.

Terminy takie jak generate\index{generate} i niektóre\index{others} będą
także się pojawiać.

\printindex
\end{document}
```

[Otwórz ten przykład w 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)

Poniższy obraz przedstawia wynik uzyskany w powyższym przykładzie:

![Index1OLV2.png](/files/425e94efc0c60188165e68a802d3e65555bcb904)

Najpierw pakiet jest dołączany w preambule za pomocą linii

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

Następnie polecenie `\makeindex` jest niezbędne, aby indeks działał, i może przyjmować pewne parametry pozwalające dostosować jego wygląd; w kolejnych sekcjach będzie to jasne.

Aby dodać wpis do indeksu, używa się polecenia `\index{}` używa się, gdzie słowo do dodania wstawia się jako parametr. Uwaga: nie spowoduje to wypisania słowa w bieżącym miejscu, lecz tylko w indeksie.

Na koniec polecenie `\printindex` tak naprawdę wygeneruje indeks. Jeśli używasz specjalnej lokalizacji za pomocą pakietu `babel` pakietu, tytuł zostanie odpowiednio przetłumaczony.

Uwaga: zamiast `imakeidx`, pakiet `makeidx` może zostać zaimportowany, ale oferuje mniej możliwości dostosowania.

## Indeksy na Overleaf

Podczas dodawania indeksu do projektu na Overleaf warto **zwrócić uwagę** na to, że aby indeks skompilował się poprawnie, główny `.tex` plik musi znajdować się w głównym katalogu projektu, *poza wszelkimi folderami*. Zapewnia to, że pliki pomocnicze potrzebne do wygenerowania indeksu są buforowane w sposób umożliwiający dostęp kompilatorowi.

## Wpisy i podwpisy

Jak wspomniano w poprzedniej sekcji, polecenie `\index` doda przekazane mu słowo do indeksu, ale nie jest to jedyny sposób jego użycia.

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

\begin{document}
\section{Introduction}
W tym przykładzie użytych zostanie kilka słów kluczowych\index{keywords}
które są ważne i zasługują na pojawienie się w indeksie\index{Index}.

Terminy takie jak generate\index{generate} i niektóre\index{others} również
pojawią się. Hasła w indeksie mogą być też zagnieżdżone \index{Index!nested}

\clearpage

\section{Second section}
Ta druga sekcja\index{section} może zawierać jakieś specjalne słowo,
oraz rozszerzać już użyte\index{keywords!used}.

\printindex
\end{document}
```

[Otwórz ten przykład w 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)

Poniższy obraz przedstawia wynik uzyskany w powyższym przykładzie:

![Index2OLV2.png](/files/f8c6c115feb4d626a760e8320b44edc750132768)

Częstą praktyką jest rozszerzanie haseł w indeksie o specjalne przymiotniki. Na przykład słowo *Field* może mieć specjalne znaczenie, jeśli poprzedza je przymiotnik *finite* lub po nim występuje *of characteristic 0*, a dodawanie różnych typów *Field*jako osobnych wpisów w indeksie może być nieco uciążliwe. W takich przypadkach można dodać wykrzyknik "!", który doda terminy po tym znaku jako podhasła słowa głównego *Field*.

W przykładzie słowo "Index" ma słowo "nested" jako podhasło.

## Formatowanie indeksu

Proste formatowanie indeksu, takie jak zmiana tytułu indeksu, dodanie kilku kolumn i zmiana szerokości kolumn, można łatwo uzyskać, przekazując wartości opcjonalne do `\makeindex`:

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

\begin{document}
\section{Introduction}
W tym przykładzie zostanie użytych kilka słów kluczowych\index{keywords}, które
są ważne i zasługują na pojawienie się w indeksie\index{Index}.

Terminy takie jak generate\index{generate} i niektóre\index{others} również
pojawią się. Hasła w indeksie mogą być też zagnieżdżone \index{Index!nested}

\clearpage

\section{Second section}
Ta druga sekcja\index{section} może zawierać jakieś specjalne słowo,
oraz rozszerzać już użyte\index{keywords!used}.

\printindex
\end{document}
```

[Otwórz ten przykład w 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)

Poniższy obraz przedstawia wynik uzyskany w powyższym przykładzie:

![Index3OLV2.png](/files/8a66551555d91846dfd15e6d1e0fda87638bcd56)

W tym przykładzie indeks jest przedstawiony w formacie trzykolumnowym z parametrem `columns=3`, a tytuł zostaje zmieniony na "Alphabetical Index" przez `title=Alphabetical Index`; te parametry są przekazywane do `\makeindex` w preambule. Zobacz [przewodnik referencyjny](#reference-guide) aby zobaczyć listę dostępnych parametrów oraz ich opis.

### Korzystanie z plików stylu

Do dalszego dostosowywania indeksu można użyć pliku stylu. Pliki stylów informują `makeindex` o zamierzonym formacie wyniku końcowego. Pliki stylów zawierają listę `<key, value>` par. Na przykład, jeśli trzeba pogrupować terminy w indeksie według ich pierwszej litery i wyrównać numery stron do prawej, poniższy plik stylu spełni zadanie:

```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 "
```

Klucze zmieniają różne elementy w wyniku indeksu:

* `headings_flag 1` umożliwia grupowanie, wstawiając nagłówek grupy (symbole, liczby lub litery) przed nową grupą.
* `heading_prefix` formatuje nagłówek do wstawienia przed rozpoczęciem nowej litery. Używa zwykłych poleceń formatowania dla rodziny czcionki, jej rozmiaru i wyrównania, ale ukośniki odwrotne muszą być poprzedzone podwójnym ukośnikiem zamiast pojedynczego.
* `item_0` jest tym, co zostanie wstawione między dwoma elementami podstawowymi.
* `delim_*` jest separatorem wstawianym między kluczem a pierwszym numerem strony.

Pełną listę kluczy i wartości używanych w pliku .ist znajdziesz w [Tabela zawarta w przewodniku referencyjnym](#keys-to-create-styles-files).

Załóżmy, że poprzedni plik został zapisany jako "example\_style.ist". Aby użyć go w dokumencie, dodajemy parametr `options= -s example_style.ist` do `\makeindex` polecenia.

```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}
W tym przykładzie zostanie użytych kilka słów kluczowych\index{keywords}, które są ważne i zasługują na pojawienie się w indeksie\index{Index}.

Terminy takie jak generate\index{generate}, świetna\index{great} lista i jakieś inne\index{others} terminy, które mogą być ważne\index{important}
będą również się pojawiać. Hasła w indeksie mogą być też zagnieżdżone \index{Index!nested}

\clearpage

\section{Second section}
Ta druga sekcja\index{section} może zawierać jakieś specjalne słowo i rozszerzać już użyte\index{keywords!used}.

\printindex
\end{document}
```

[Otwórz przykład korzystający z pliku stylu indeksu na 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=)

Poniższy obraz przedstawia wynik uzyskany w powyższym przykładzie:

![Index4OLV2.png](/files/13027b1826d45d687407d9dc41dbc92618c10d25)

## Dołączanie indeksu do spisu treści

Domyślnie indeks nie jest uwzględniany w spisie treści, ale można to łatwo zmienić.

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

\begin{document}
\tableofcontents

\section{Introduction}
W tym przykładzie kilka słów kluczowych\index{keywords} będzie
użytych, które są ważne i zasługują na pojawienie się w
indeksie\index{Index}.

Terminy takie jak generate\index{generate} i some\index{others}
będą również się pojawiać. Hasła w indeksie mogą być także
zagnieżdżone \index{Index!nested}

\clearpage

\section{Second section}
Ta druga sekcja\index{section} może zawierać jakieś specjalne
słowo i rozszerzać już użyte\index{keywords!used}.

\printindex
\end{document}
```

[Otwórz ten przykład w 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)

Poniższy obraz przedstawia wynik uzyskany w powyższym przykładzie:

![Index5OLV2.png](/files/cf49238c78f7ee7f7b38a568d61c394b5b3484a7)

Dodając parametr `intoc` do polecenia `\makeindex` włącza się dołączenie tytułu indeksu do spisu treści.

## Przewodnik referencyjny

### Parametry polecenia \makeindex

**title**

Tytuł, który ma zostać składany na początku konkretnego indeksu. Przykład przedstawiono w sekcji formatowania indeksu.

**intoc**

Jeśli ta opcja zostanie przekazana, tytuł indeksu zostanie umieszczony w spisie treści.

**columns**

Używa składni key=value; wartość musi być liczbą całkowitą reprezentującą liczbę kolumn. Wartość domyślna to 2.

**columnsep**

Określa jednostki reprezentujące odstęp między kolumnami. Składnia musi mieć postać key=value, na przykład columnsep=2em.

**columnseprule**

Jeśli opcja zostanie przekazana, między kolumnami zostanie wyświetlona pionowa linia.

### Klucze do tworzenia plików stylu

Poniższa tabela pokazuje klucze, wartości domyślne i opisy potrzebne do tworzenia plików stylu .ist.

| klucz                       | Opis                                                                                                                                                                                                                                                                                                  |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `actual <char>`             | '@' Symbol wskazujący, że następny wpis ma pojawić się w pliku wyjściowym.                                                                                                                                                                                                                            |
| `arg_close <char>`          | '}' Zamykający separator argumentu wpisu indeksu.                                                                                                                                                                                                                                                     |
| `arg_open <char>`           | '{' Otwierający separator argumentu wpisu indeksu.                                                                                                                                                                                                                                                    |
| `encap <char>`              | ' Symbol wskazujący, że pozostała część listy argumentów ma zostać użyta jako polecenie otaczające numer strony.                                                                                                                                                                                      |
| `escape <char>`             | '\\\\' Symbol, który poprzedza następującą literę, chyba że jego poprzedzający symbol sam jest symbolem ucieczki. Uwaga: cudzysłów jest używany do poprzedzania litery bezpośrednio po nim, ale jeśli poprzedza go symbol ucieczki, jest traktowany jako zwykły znak. Te dwa symbole muszą być różne. |
| `keyword <string>`          | "\\\indexentry" Polecenie, które informuje makeindex, że jego argument jest wpisem indeksu.                                                                                                                                                                                                           |
| `level <char>`              | '!' Separator oznaczający nowy poziom podpozycji.                                                                                                                                                                                                                                                     |
| `quote <char>`              | '"' Uwaga: cudzysłów jest używany do poprzedzania litery bezpośrednio po nim, ale jeśli poprzedza go symbol ucieczki, jest traktowany jako zwykły znak. Te dwa symbole muszą być różne.                                                                                                               |
| `range_close <char>`        | ')' Zamykający separator oznaczający koniec jawnego zakresu stron.                                                                                                                                                                                                                                    |
| `range_open <char>`         | '(' Otwierający separator oznaczający początek jawnego zakresu stron.                                                                                                                                                                                                                                 |
| `preamble <string>`         | "\\\begin{theindex}\n" Preambuła pliku wyjściowego.                                                                                                                                                                                                                                                   |
| `postamble <string>`        | "\n\n\\\end{theindex}\n" Postambuła pliku wyjściowego.                                                                                                                                                                                                                                                |
| `setpage_prefix <string>`   | "\n \\\setcounter{page}{" Prefiks polecenia ustawiającego początkowy numer strony.                                                                                                                                                                                                                    |
| `setpage_suffix <string>`   | "}\n" Sufiks polecenia ustawiającego początkowy numer strony.                                                                                                                                                                                                                                         |
| `group_skip <string>`       | "\n\n \\\indexspace\n" Pionowa przestrzeń wstawiana przed rozpoczęciem nowej grupy.                                                                                                                                                                                                                   |
| `headings_flag <string>`    | 0 Flaga określająca sposób traktowania nagłówków nowych grup, wstawianych przed nową grupą (symbole, liczby i 26 liter): wartości dodatnie powodują wstawienie wielkiej litery między prefiksem a sufiksem, a wartości ujemne powodują wstawienie małej litery (domyślnie 0, co nie tworzy nagłówka). |
| `heading_prefix <string>`   | "" Prefiks nagłówka do wstawienia przed rozpoczęciem nowej litery.                                                                                                                                                                                                                                    |
| `symhead_positive <string>` | "Symbols" Nagłówek dla symboli wstawiany, jeśli headings\_flag ma wartość dodatnią.                                                                                                                                                                                                                   |
| `symhead_negative <string>` | "symbols" Nagłówek dla symboli wstawiany, jeśli headings\_flag ma wartość ujemną.                                                                                                                                                                                                                     |
| `numhead_positive <string>` | "Numbers" Nagłówek dla liczb wstawiany, jeśli headings\_flag ma wartość dodatnią.                                                                                                                                                                                                                     |
| `numhead_negative <string>` | "numbers" Nagłówek dla liczb wstawiany, jeśli headings\_flag ma wartość ujemną.                                                                                                                                                                                                                       |
| `item_0 <string>`           | "\n \\\item " Polecenie wstawiane między dwa elementy podstawowe (poziom 0).                                                                                                                                                                                                                          |
| `item_1 <string>`           | "\n \\\subitem " Polecenie wstawiane między dwa elementy drugorzędne (poziom 1).                                                                                                                                                                                                                      |
| `item_2 <string>`           | "\n \\\subsubitem " Polecenie wstawiane między dwa elementy poziomu 2.                                                                                                                                                                                                                                |
| `item_01 <string>`          | "\n \\\subitem " Polecenie wstawiane między elementem poziomu 0 a elementem poziomu 1.                                                                                                                                                                                                                |
| `item_x1 <string>`          | "\n \\\subitem " Polecenie wstawiane między elementem poziomu 0 a elementem poziomu 1, gdy element poziomu 0 nie ma powiązanych numerów stron.                                                                                                                                                        |
| `item_12 <string>`          | "\n \\\subsubitem " Polecenie wstawiane między elementem poziomu 1 a elementem poziomu 2.                                                                                                                                                                                                             |
| `item_x2 <string>`          | "\n \\\subsubitem " Polecenie wstawiane między elementem poziomu 1 a elementem poziomu 2, gdy element poziomu 1 nie ma powiązanych numerów stron.                                                                                                                                                     |
| `delim_0 <string>`          | ", " Separator wstawiany między kluczem poziomu 0 a jego pierwszym numerem strony (domyślnie: przecinek, po którym następuje spacja).                                                                                                                                                                 |
| `delim_1 <string>`          | ", " Separator wstawiany między kluczem poziomu 1 a jego pierwszym numerem strony (domyślnie: przecinek, po którym następuje spacja).                                                                                                                                                                 |
| `delim_2 <string>`          | ", " Separator wstawiany między kluczem poziomu 2 a jego pierwszym numerem strony (domyślnie: przecinek, po którym następuje spacja).                                                                                                                                                                 |
| `delim_n <string>`          | ", " Separator wstawiany między dwoma numerami stron dla tego samego klucza na dowolnym poziomie (domyślnie: przecinek, po którym następuje spacja).                                                                                                                                                  |
| `delim_r <string>`          | "--" Separator wstawiany między początkowym a końcowym numerem strony zakresu.                                                                                                                                                                                                                        |
| `delim_t <string>`          | "" Separator wstawiany na końcu listy stron. Ten separator nie wpływa na wpisy, które nie mają powiązanej listy stron.                                                                                                                                                                                |
| `encap_prefix <string>`     | "\\\\" Pierwsza część prefiksu polecenia otaczającego numer strony.                                                                                                                                                                                                                                   |
| `encap_infix <string>`      | "{" Druga część prefiksu polecenia otaczającego numer strony.                                                                                                                                                                                                                                         |
| `encap_suffix <string>`     | "}". Sufiks polecenia otaczającego numer strony.                                                                                                                                                                                                                                                      |
| `line_max <number>`         | 72 Maksymalna długość wiersza w wyjściu, po przekroczeniu której wiersz jest zawijany.                                                                                                                                                                                                                |
| `indent_space <string>`     | "\t\t" Odstęp wstawiany przed zawiniętym wierszem (domyślnie: dwa tabulatory).                                                                                                                                                                                                                        |
| `indent_length <number>`    | 16 Długość indent\_space (domyślnie: 16, równoważna 2 tabulatorom).                                                                                                                                                                                                                                   |

## Dalsza lektura

Więcej informacji znajdziesz w:

* [Glosariusze](/latex/pl/struktura-dokumentu/05-glossaries.md)
* [Spisy tabel i rysunków](/latex/pl/rysunki-i-tabele/03-lists-of-tables-and-figures.md)
* [Spis treści](/latex/pl/struktura-dokumentu/02-table-of-contents.md)
* [Sekcje i rozdziały](/latex/pl/struktura-dokumentu/01-sections-and-chapters.md)
* [Hiperłącza](/latex/pl/struktura-dokumentu/09-hyperlinks.md)
* [Wsparcie dla języków międzynarodowych](/latex/pl/jezyki/03-international-language-support.md)
* [Odwołania krzyżowe do sekcji i równań](/latex/pl/struktura-dokumentu/03-cross-referencing-sections-equations-and-floats.md)
* [Zarządzanie w dużym projekcie](/latex/pl/struktura-dokumentu/07-management-in-a-large-project.md)
* [Projekty LaTeX z wieloma plikami](/latex/pl/struktura-dokumentu/08-multi-file-latex-projects.md)
* [dokumentacja pakietu 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/pl/struktura-dokumentu/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.
