> 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/it/struttura-del-documento/04-indices.md).

# Indici

In alcuni documenti di grandi dimensioni, per esempio i libri, è consuetudine creare un elenco alfabetico contenente i termini principali. Con LaTeX e il programma di supporto **imakeidx**, un indice può essere generato abbastanza facilmente.

## Introduzione

Vediamo un semplice esempio funzionante.

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

\begin{document}
\section{Introduction}
In questo esempio, verranno usate diverse parole chiave\index{keywords}
che sono importanti e meritano di comparire nell'Indice\index{Index}.

Termini come generate\index{generate} e alcuni\index{others} saranno
anch'essi visualizzati.

\printindex
\end{document}
```

[Apri questo esempio su 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)

L'immagine seguente mostra l'output prodotto dall'esempio sopra:

![Index1OLV2.png](/files/1bceaad9283be68a99edf501678752c3678953e6)

Anzitutto, il pacchetto viene incluso nel preambolo con la riga

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

Poi il comando `\makeindex` è obbligatorio affinché l'indice funzioni e può accettare alcuni parametri per personalizzarne l'aspetto; nelle sezioni seguenti questo sarà chiaro.

Per aggiungere una voce all'indice il comando `\index{}` viene usato, dove la parola da aggiungere viene inserita come parametro. Fai attenzione, non stamperà la parola nella posizione corrente ma solo nell'indice.

Infine, il comando `\printindex` produrrà effettivamente l'indice. Se stai usando una localizzazione speciale tramite il pacchetto `babel` il titolo verrà tradotto di conseguenza.

Nota: invece di `imakeidx`, il pacchetto `makeidx` può essere importato ma offre meno possibilità di personalizzazione.

## Indici su Overleaf

Quando si aggiunge un indice a un progetto su Overleaf, è **importante notare** che, affinché l'indice venga compilato correttamente, il file principale `.tex` deve trovarsi nella directory radice del progetto, *al di fuori di qualsiasi cartella*. Questo garantisce che i file ausiliari necessari per generare l'indice vengano memorizzati in modo da essere accessibili al compilatore.

## Voci e sotto-voci

Come menzionato nella sezione precedente, il comando `\index` aggiungerà all'indice la parola passata come argomento, ma non è l'unico modo in cui può essere usato.

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

\begin{document}
\section{Introduction}
In questo esempio, verranno usate diverse parole chiave\index{keywords}
che sono importanti e meritano di comparire nell'Indice\index{Index}.

Termini come generate\index{generate} e alcuni\index{others} saranno anche
visualizzati. I termini nell'indice possono anche essere annidati \index{Index!nested}

\clearpage

\section{Second section}
Questa seconda sezione\index{section} può includere qualche parola speciale,
e ampliare quelle già usate\index{keywords!used}.

\printindex
\end{document}
```

[Apri questo esempio su 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)

L'immagine seguente mostra l'output prodotto dall'esempio sopra:

![Index2OLV2.png](/files/518572c54a5f55c27cbd6e68ba944d2f24f6a1cc)

È prassi comune estendere i termini nell'indice per includere aggettivi speciali. Per esempio, la parola *Campo* può avere un significato speciale se è preceduta dall'aggettivo *finito* o seguita da *di caratteristica 0*, e può essere un po' scomodo aggiungere diversi tipi di *Campo*come voci separate nell'indice. In casi del genere, puoi aggiungere un punto esclamativo "!" che aggiungerà i termini dopo questo segno come sotto-voci della parola principale *Campo*.

Nell'esempio, la parola "Index" ha la parola "nested" come sotto-voce.

## Formattare l'indice

Una formattazione semplice dell'indice, come cambiare il titolo dell'indice, aggiungere più colonne e modificare la larghezza delle colonne, può essere eseguita facilmente passando valori opzionali a `\makeindex`:

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

\begin{document}
\section{Introduction}
In questo esempio, verranno usate diverse parole chiave\index{keywords} che
sono importanti e meritano di comparire nell'Indice\index{Index}.

Termini come generate\index{generate} e alcuni\index{others} saranno anche
visualizzati. I termini nell'indice possono anche essere annidati \index{Index!nested}

\clearpage

\section{Second section}
Questa seconda sezione\index{section} può includere qualche parola speciale,
e ampliare quelle già usate\index{keywords!used}.

\printindex
\end{document}
```

[Apri questo esempio su 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)

L'immagine seguente mostra l'output prodotto dall'esempio sopra:

![Index3OLV2.png](/files/dbf8e137615a703dcbeffd6952ccd4b82a789c13)

In questo esempio, l'indice è presentato in un formato a tre colonne con il parametro `columns=3`, e il titolo viene cambiato in "Alphabetical Index" tramite `title=Alphabetical Index`; questi parametri vengono passati a `\makeindex` nel preambolo. Consulta la [guida di riferimento](#reference-guide) per un elenco dei parametri disponibili e delle loro descrizioni.

### Usare file di stile

Per un'ulteriore personalizzazione dell'indice si può usare un file di stile. I file di stile informano `makeindex` sul formato previsto dell'output finale. I file di stile contengono un elenco di `<key, value>` coppie. Per esempio, se si desidera raggruppare i termini nell'indice in base alla loro lettera iniziale e allineare i numeri di pagina a destra, il seguente file di stile farà al caso giusto:

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

Le chiavi modificano diversi elementi nell'output dell'indice:

* `headings_flag 1` abilita il raggruppamento inserendo l'intestazione del gruppo (simboli, numeri o lettere) prima di un nuovo gruppo.
* `heading_prefix` formatta l'intestazione da inserire prima dell'inizio di una nuova lettera. Utilizza normali comandi di formattazione per il tipo di carattere, l'altezza del carattere e l'allineamento, ma i backslash devono essere escapati usando un doppio backslash invece di uno.
* `item_0` è ciò che verrà inserito tra due elementi principali.
* `delim_*` è il delimitatore da inserire tra la chiave e il primo numero di pagina.

Per un elenco completo delle chiavi e dei valori da usare in un file .ist, consultare [La tabella inclusa nella guida di riferimento](#keys-to-create-styles-files).

Supponiamo che il file precedente sia salvato come "example\_style.ist". Per usarlo nel documento aggiungiamo il parametro `options= -s example_style.ist` al `\makeindex` comando.

```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}
In questo esempio, verranno usate diverse parole chiave\index{keywords} che sono importanti e meritano di comparire nell'Indice\index{Index}.

Termini come generate\index{generate}, un ottimo\index{great} elenco e alcuni altri\index{others} termini che potrebbero essere importanti\index{important}
compariranno anch'essi. I termini nell'indice possono anche essere annidati \index{Index!nested}

\clearpage

\section{Second section}
Questa seconda sezione\index{section} può includere qualche parola speciale, e ampliare quelle già usate\index{keywords!used}.

\printindex
\end{document}
```

[Apri un esempio che utilizza un file di stile per l'indice su 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=)

L'immagine seguente mostra l'output prodotto dall'esempio sopra:

![Index4OLV2.png](/files/10d169d9de70c185a7402f198f2584235617c354)

## Includere l'indice nel sommario

Per impostazione predefinita, l'indice non è incluso nel sommario; questa impostazione può essere modificata facilmente.

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

\begin{document}
\tableofcontents

\section{Introduction}
In questo esempio, verranno usate diverse parole chiave\index{keywords} che
sono importanti e meritano di comparire nel
Indice\index{Index}.

Termini come generate\index{generate} e alcuni\index{others}
compariranno anch'essi. I termini nell'indice possono anche essere
annidati \index{Index!nested}

\clearpage

\section{Second section}
Questa seconda sezione\index{section} può includere qualche speciale
parola, e ampliare quelle già usate\index{keywords!used}.

\printindex
\end{document}
```

[Apri questo esempio su 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)

L'immagine seguente mostra l'output prodotto dall'esempio sopra:

![Index5OLV2.png](/files/39011043dabbdbaa66d6a34dfec8f8c669628926)

Aggiungendo il parametro `intoc` al comando `\makeindex` si abilita l'inserimento del titolo dell'indice nel sommario.

## Guida di riferimento

### Parametri per il comando \makeindex

**title**

Titolo da comporre all'inizio dell'indice specifico. Un esempio è presentato nella sezione sulla formattazione dell'indice.

**intoc**

Se questa opzione viene passata, il titolo dell'indice viene inserito nel sommario.

**columns**

Usa la sintassi chiave=valore, il valore deve essere un intero che rappresenta il numero di colonne. Il valore predefinito è 2.

**columnsep**

Specifica le unità che rappresentano la separazione tra le colonne. La sintassi deve essere chiave=valore; per esempio columnsep=2em.

**columnseprule**

Se l'opzione viene passata, tra le colonne verrà resa una linea verticale.

### Chiavi per creare file di stile

La tabella seguente mostra le chiavi, i valori predefiniti e le descrizioni per creare file di stile .ist.

| chiave                      | Descrizione                                                                                                                                                                                                                                                                                                                                                      |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `actual <char>`             | '@' Simbolo che indica che la voce successiva deve apparire nel file di output.                                                                                                                                                                                                                                                                                  |
| `arg_close <char>`          | '}' Delimitatore di chiusura per l'argomento della voce dell'indice.                                                                                                                                                                                                                                                                                             |
| `arg_open <char>`           | '{' Delimitatore di apertura per l'argomento della voce dell'indice.                                                                                                                                                                                                                                                                                             |
| `encap <char>`              | ' Simbolo che indica che il resto dell'elenco degli argomenti deve essere usato come comando di incapsulamento per il numero di pagina.                                                                                                                                                                                                                          |
| `escape <char>`             | '\\\\' Simbolo che esegue l'escape della lettera seguente, a meno che il simbolo precedente non sia esso stesso un simbolo di escape. Nota: quote viene usato per eseguire l'escape della lettera che lo segue immediatamente, ma se è preceduto da un simbolo di escape, viene trattato come un carattere ordinario. Questi due simboli devono essere distinti. |
| `keyword <string>`          | "\\\indexentry" Comando che indica a makeindex che il suo argomento è una voce dell'indice.                                                                                                                                                                                                                                                                      |
| `level <char>`              | '!' Delimitatore che denota un nuovo livello di sotto-elemento.                                                                                                                                                                                                                                                                                                  |
| `quote <char>`              | '"' Nota: quote viene usato per eseguire l'escape della lettera che segue immediatamente, ma se è preceduto da un simbolo di escape, viene trattato come un carattere ordinario. Questi due simboli devono essere distinti.                                                                                                                                      |
| `range_close <char>`        | ')' Delimitatore di chiusura che indica la fine di un intervallo di pagine esplicito.                                                                                                                                                                                                                                                                            |
| `range_open <char>`         | '(' Delimitatore di apertura che indica l'inizio di un intervallo di pagine esplicito.                                                                                                                                                                                                                                                                           |
| `preamble <string>`         | "\begin{theindex}\n" Preambolo del file di output.                                                                                                                                                                                                                                                                                                               |
| `postamble <string>`        | "\n\n\\\end{theindex}\n" Postambolo del file di output.                                                                                                                                                                                                                                                                                                          |
| `setpage_prefix <string>`   | "\n \\\setcounter{page}{" Prefisso del comando che imposta il numero di pagina iniziale.                                                                                                                                                                                                                                                                         |
| `setpage_suffix <string>`   | "}\n" Suffisso del comando che imposta il numero di pagina iniziale.                                                                                                                                                                                                                                                                                             |
| `group_skip <string>`       | "\n\n \\\indexspace\n" Spazio verticale da inserire prima dell'inizio di un nuovo gruppo.                                                                                                                                                                                                                                                                        |
| `headings_flag <string>`    | 0 Contrassegno che indica il trattamento delle intestazioni dei nuovi gruppi, inserite prima di un nuovo gruppo (simboli, numeri e le 26 lettere): valori positivi fanno inserire una lettera maiuscola tra prefisso e suffisso, mentre valori negativi fanno inserire una lettera minuscola (il valore predefinito è 0, che non produce alcuna intestazione).   |
| `heading_prefix <string>`   | "" Prefisso dell'intestazione da inserire prima dell'inizio di una nuova lettera.                                                                                                                                                                                                                                                                                |
| `symhead_positive <string>` | "Symbols" Intestazione per i simboli da inserire se headings\_flag è positivo.                                                                                                                                                                                                                                                                                   |
| `symhead_negative <string>` | "symbols" Intestazione per i simboli da inserire se headings\_flag è negativo.                                                                                                                                                                                                                                                                                   |
| `numhead_positive <string>` | "Numbers" Intestazione per i numeri da inserire se headings\_flag è positivo.                                                                                                                                                                                                                                                                                    |
| `numhead_negative <string>` | "numbers" Intestazione per i numeri da inserire se headings\_flag è negativo.                                                                                                                                                                                                                                                                                    |
| `item_0 <string>`           | "\n \\\item " Comando da inserire tra due elementi primari (livello 0).                                                                                                                                                                                                                                                                                          |
| `item_1 <string>`           | "\n \\\subitem " Comando da inserire tra due elementi secondari (livello 1).                                                                                                                                                                                                                                                                                     |
| `item_2 <string>`           | "\n \\\subsubitem " Comando da inserire tra due elementi di livello 2.                                                                                                                                                                                                                                                                                           |
| `item_01 <string>`          | "\n \\\subitem " Comando da inserire tra un elemento di livello 0 e un elemento di livello 1.                                                                                                                                                                                                                                                                    |
| `item_x1 <string>`          | "\n \\\subitem " Comando da inserire tra un elemento di livello 0 e un elemento di livello 1, dove l'elemento di livello 0 non ha numeri di pagina associati.                                                                                                                                                                                                    |
| `item_12 <string>`          | "\n \\\subsubitem " Comando da inserire tra un elemento di livello 1 e un elemento di livello 2.                                                                                                                                                                                                                                                                 |
| `item_x2 <string>`          | "\n \\\subsubitem " Comando da inserire tra un elemento di livello 1 e un elemento di livello 2, dove l'elemento di livello 1 non ha numeri di pagina associati.                                                                                                                                                                                                 |
| `delim_0 <string>`          | ", " Delimitatore da inserire tra una chiave di livello 0 e il suo primo numero di pagina (predefinito: virgola seguita da uno spazio).                                                                                                                                                                                                                          |
| `delim_1 <string>`          | ", " Delimitatore da inserire tra una chiave di livello 1 e il suo primo numero di pagina (predefinito: virgola seguita da uno spazio).                                                                                                                                                                                                                          |
| `delim_2 <string>`          | ", " Delimitatore da inserire tra una chiave di livello 2 e il suo primo numero di pagina (predefinito: virgola seguita da uno spazio).                                                                                                                                                                                                                          |
| `delim_n <string>`          | ", " Delimitatore da inserire tra due numeri di pagina per la stessa chiave a qualsiasi livello (predefinito: virgola seguita da uno spazio).                                                                                                                                                                                                                    |
| `delim_r <string>`          | "--" Delimitatore da inserire tra il numero di pagina iniziale e quello finale di un intervallo.                                                                                                                                                                                                                                                                 |
| `delim_t <string>`          | "" Delimitatore da inserire alla fine di un elenco di pagine. Questo delimitatore non influisce sulle voci che non hanno un elenco di pagine associato.                                                                                                                                                                                                          |
| `encap_prefix <string>`     | "\\\\" Prima parte del prefisso per il comando che incapsula il numero di pagina.                                                                                                                                                                                                                                                                                |
| `encap_infix <string>`      | "{" Seconda parte del prefisso per il comando che incapsula il numero di pagina.                                                                                                                                                                                                                                                                                 |
| `encap_suffix <string>`     | "}". Suffisso per il comando che incapsula il numero di pagina.                                                                                                                                                                                                                                                                                                  |
| `line_max <number>`         | 72 Lunghezza massima di una riga nell'output, oltre la quale la riga va a capo.                                                                                                                                                                                                                                                                                  |
| `indent_space <string>`     | "\t\t" Spazio da inserire all'inizio di una riga mandata a capo (predefinito: due tab).                                                                                                                                                                                                                                                                          |
| `indent_length <number>`    | 16 Lunghezza di indent\_space (predefinito: 16, equivalente a 2 tab).                                                                                                                                                                                                                                                                                            |

## Approfondimenti

Per ulteriori informazioni, vedi:

* [Glossari](/latex/it/struttura-del-documento/05-glossaries.md)
* [Elenchi di tabelle e figure](/latex/it/figure-e-tabelle/03-lists-of-tables-and-figures.md)
* [Sommario](/latex/it/struttura-del-documento/02-table-of-contents.md)
* [Sezioni e capitoli](/latex/it/struttura-del-documento/01-sections-and-chapters.md)
* [Collegamenti ipertestuali](/latex/it/struttura-del-documento/09-hyperlinks.md)
* [Supporto per le lingue internazionali](/latex/it/lingue/03-international-language-support.md)
* [Riferimenti incrociati tra sezioni ed equazioni](/latex/it/struttura-del-documento/03-cross-referencing-sections-equations-and-floats.md)
* [Gestione in un grande progetto](/latex/it/struttura-del-documento/07-management-in-a-large-project.md)
* [Progetti LaTeX multi-file](/latex/it/struttura-del-documento/08-multi-file-latex-projects.md)
* [Documentazione del pacchetto 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/it/struttura-del-documento/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.
