> 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/comandi/02-environments.md).

# Ambienti

Gli ambienti LaTeX vengono usati per applicare specifici effetti di impaginazione a una sezione del contenuto del documento. Questo articolo spiega come usare gli ambienti esistenti e definirne di nuovi.

## Introduzione

Un ambiente inizia con `\begin{name}` e termina con `\end{name}`:

```
\begin{name}
Il tuo contenuto qui...
...va qui...
\end{name}
```

dove “`nome`” è il nome dell'ambiente in uso—come nel seguente esempio che usa “`center`” per formattare (centrare) un paragrafo di testo:

```latex
\documentclass{article}
\begin{document}
\begin{center}
Questa è una dimostrazione dell'ambiente \texttt{center}.
Questo paragrafo di testo sarà \textit{centrato} perché è
contenuto all'interno di un ambiente speciale. Gli ambienti forniscono
un modo efficiente per modificare blocchi di testo all'interno del documento.
\end{center}
\end{document}
```

[Apri questo esempio in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Simple+environment+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bcenter%7D%0AThis+is+a+demonstration+of+the+%5Ctexttt%7Bcenter%7D+environment.+%0AThis+paragraph+of+text+will+be+%5Ctextit%7Bcentred%7D+because+it+is+%0Acontained+within+a+special+environment.+Environments+provide+%0Aan+efficient+way+to+modify+blocks+of+text+within+your+document.%0A%5Cend%7Bcenter%7D%0A%5Cend%7Bdocument%7D)

Questo esempio produce il seguente output:

![Immagine che mostra l'allineamento al centro](/files/5de1af5dcf4c762cd82836db0eec52786a90d918)

## Ambienti

L'esempio seguente utilizza il `tabular` ambiente per comporre una piccola tabella. `tabular` richiede un argomento aggiuntivo `{ c c c }` che definisce l'allineamento delle celle—vedi l' [Tabelle](/latex/it/figure-e-tabelle/01-tables.md) articolo per maggiori informazioni.

```latex
\documentclass{article}
\begin{document}
\begin{tabular}{ c c c }
  cell1 & cell2 & cell3 \\
  cell4 & cell5 & cell6 \\
  cell7 & cell8 & cell9 \\
 \end{tabular}
\end{document}
```

[Apri questo esempio in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Simple+tabular+environment+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btabular%7D%7B+c+c+c+%7D+%0A++cell1+%26+cell2+%26+cell3+%5C%5C+%0A++cell4+%26+cell5+%26+cell6+%5C%5C+%0A++cell7+%26+cell8+%26+cell9+%5C%5C+%0A+%5Cend%7Btabular%7D%0A%5Cend%7Bdocument%7D)

Questo esempio produce il seguente output:

![Esempio dell'ambiente tabular](/files/77db109586c6742a177e2dd50af6b44cee503925)

Alcuni ambienti accettano argomenti opzionali che di solito vengono passati tra parentesi quadre (`[...]`).

## Definizione di un nuovo ambiente

Per definire un nuovo ambiente usa il `\newenvironment` comando, che ha la forma generale:

```
\newenvironment{name}[numarg][optarg_default]{begin_def}{end_def}
```

dove:

* `nome` è il nome di questo argomento definito dall'utente;
* `numarg` è il numero di argomenti, da 1 a 9, che questo ambiente accetta. Se `[numarg]` è omesso, allora l'ambiente non accetta alcun argomento—come l' [`boxed` ambiente definito nell'esempio seguente](#defining-simple-environments);
* `optarg_default` rende opzionale il primo argomento e fornisce un valore predefinito—ossia il valore usato se non viene fornito un valore per l'argomento opzionale;
* `begin_def` è il codice LaTeX eseguito quando l'ambiente inizia (si apre), cioè quando scrivi `\begin{name}`. In questo codice puoi usare gli argomenti accettati dall'ambiente—nota che l'argomento opzionale è #1 e i restanti argomenti si accedono usando #2 fino a #numarg;
* `end_def` è il codice LaTeX eseguito quando l'ambiente termina (si chiude); cioè quando scrivi `\end{name}`. Non puoi usare nessuno degli argomenti all'interno di questa sezione di codice.

### Definizione di ambienti semplici

In questo primo esempio, definiamo l' `boxed` ambiente che non accetta alcun argomento. Disegna una cornice attorno al testo contenuto all'interno dell'ambiente:

```latex
\documentclass{article}
%Possiamo definire l'ambiente nel preambolo
\newenvironment{boxed}
    {\begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    }
    {
    \\\\hline
    \end{tabular}
    \end{center}
    }
%
\begin{document}
Ora possiamo usare l'ambiente \texttt{boxed} nel nostro documento:

\begin{boxed}
Questo testo è formattato all'interno dell'ambiente \texttt{boxed}.
\end{boxed}

Questo testo è composto al di fuori dell'ambiente \texttt{boxed}.
\end{document}
```

[Apri questo esempio in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Creating+a+new+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%25We+can+define+the+environment+in+the+preamble%0A%5Cnewenvironment%7Bboxed%7D%0A++++%7B%5Cbegin%7Bcenter%7D%0A++++%5Cbegin%7Btabular%7D%7B%7Cp%7B0.9%5Ctextwidth%7D%7C%7D%0A++++%5Chline%5C%5C%0A++++%7D%0A++++%7B+%0A++++%5C%5C%5C%5C%5Chline%0A++++%5Cend%7Btabular%7D+%0A++++%5Cend%7Bcenter%7D%0A++++%7D%0A%25%0A%5Cbegin%7Bdocument%7D%0ANow+we+can+use+the+%5Ctexttt%7Bboxed%7D+environment+in+our+document%3A%0A%0A%5Cbegin%7Bboxed%7D%0AThis+text+is+formatted+within+the+%5Ctexttt%7Bboxed%7D+environment.%0A%5Cend%7Bboxed%7D%0A%0AThis+text+is+typeset+outside+the+%5Ctexttt%7Bboxed%7D+environment.%0A%5Cend%7Bdocument%7D)

Questo esempio produce il seguente output:

![Dimostrazione di un ambiente LaTeX personalizzato](/files/7419584a46b3c8268c69be6f830ac3b4a0591ec6)

Se confrontiamo la nostra definizione di `boxed` con la forma generale di `\newenvironment` possiamo vedere:

* `nome` è `boxed`;
* né `[numarg]` o `[optarg_default]` sono forniti perché questo ambiente non accetta alcun argomento;
* `begin_def` è il codice LaTeX—fornito tra una coppia di parentesi graffe `{...}`—che viene eseguito quando l'ambiente *inizia* (si apre):

```latex
\begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
```

* `end_def` è il codice LaTeX—fornito tra una coppia di parentesi graffe `{...}`—che viene eseguito quando l'ambiente *termina* (si chiude):

```latex
    \\\\hline
    \end{tabular}
    \end{center}
```

Nell'esempio, `begin_def` inizia un `center` ambiente e all'interno di esso viene aperto un `tabular` ambiente per tracciare linee verticali e una linea orizzontale attorno al testo che inseriamo nell'ambiente. `end_def` disegna un'altra linea orizzontale quindi chiude gli `tabular` e `center` ambienti.

### Definizione di ambienti che accettano argomenti

Estendiamo l'esempio precedente per fare quanto segue:

* usa un argomento opzionale per comporre un titolo. Se non viene fornito un titolo, usa il valore predefinito `Questa è una scatola`;
* usa un secondo argomento che contiene materiale da comporre prima del testo che forniamo all'interno dell'ambiente stesso.

Abbiamo quindi 2 argomenti:

* il primo (argomento 1) è opzionale;
* il secondo (argomento 2) non lo è.

Ciò significa `numarg`=2.

Possiamo usare la seguente definizione del nostro aggiornato `boxed` ambiente:

```latex
\newenvironment{boxed}[2][This is a box]
    {\begin{center}
    Argomento 1 (\#1)=#1\\[1ex]
    \begin{tabular}{{{!}}p{0.9\textwidth}{{!}}}
    \hline\\
    Argomento 2 (\#2)=#2\\[2ex]
    }
    {
    \\\\hline
    \end{tabular}
    \end{center}
    }
```

Questa versione migliorata differisce dall'originale nei seguenti modi:

* \[numarg] è presente e ha valore 2;
* \[optarg\_default] è presente anch'esso, rendendo il primo argomento opzionale con un valore predefinito `Questa è una scatola`.

L'esempio seguente mostra alcuni usi del nostro aggiornato `boxed` ambiente:

```latex
\documentclass{article}
% Nota il valore predefinito per il primo
% argomento è fornito da [This is a box]
\newenvironment{boxed}[2][This is a box]
    {\begin{center}
    Argomento 1 (\#1)=#1\\[1ex]
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    Argomento 2 (\#2)=#2\\[2ex]
    }
    {
    \\\\hline
    \end{tabular}
    \end{center}
    }
\begin{document}
\textbf{Esempio 1}: Usa il valore predefinito per il primo argomento:

\begin{boxed}{Testo preliminare}
Questo testo è \textit{all'interno} dell'ambiente.
\end{boxed}

Questo testo è \textit{all'esterno} dell'ambiente.

\vskip12pt

\textbf{Esempio 2}: Fornisci un valore per il primo argomento:

\begin{boxed}[Questo non è il valore predefinito]{Altro testo preliminare}
Questo testo è ancora \textit{all'interno} dell'ambiente.
\end{boxed}

Questo testo è anche \textit{all'esterno} dell'ambiente.
\end{document}
```

[Apri questo esempio in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Environment+with+an+optional+argument\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Note+the+default+value+for+the+first%0A%25+argument+is+provided+by+%5BThis+is+a+box%5D%0A%5Cnewenvironment%7Bboxed%7D%5B2%5D%5BThis+is+a+box%5D%0A++++%7B%5Cbegin%7Bcenter%7D%0A++++Argument+1+%28%5C%231%29%3D%231%5C%5C%5B1ex%5D%0A++++%5Cbegin%7Btabular%7D%7B%7Cp%7B0.9%5Ctextwidth%7D%7C%7D%0A++++%5Chline%5C%5C%0A++++Argument+2+%28%5C%232%29%3D%232%5C%5C%5B2ex%5D%0A++++%7D%0A++++%7B+%0A++++%5C%5C%5C%5C%5Chline%0A++++%5Cend%7Btabular%7D+%0A++++%5Cend%7Bcenter%7D%0A++++%7D%0A%5Cbegin%7Bdocument%7D%0A%5Ctextbf%7BExample+1%7D%3A+Use+the+default+value+for+the+first+argument%3A%0A+%0A%5Cbegin%7Bboxed%7D%7BSome+preliminary+text%7D%0AThis+text+is+%5Ctextit%7Binside%7D+the+environment.%0A%5Cend%7Bboxed%7D%0A%0AThis+text+is+%5Ctextit%7Boutside%7D+the+environment.%0A%0A%5Cvskip12pt%0A%0A%5Ctextbf%7BExample+2%7D%3A+Provide+a+value+for+the+first+argument%3A%0A+%0A%5Cbegin%7Bboxed%7D%5BThis+is+not+the+default+value%5D%7BSome+more+preliminary+text%7D%0AThis+text+is+still+%5Ctextit%7Binside%7D+the+environment.%0A%5Cend%7Bboxed%7D%0A%0AThis+text+is+also+%5Ctextit%7Boutside%7D+the+environment.%0A%5Cend%7Bdocument%7D)

Questo esempio produce il seguente output:

![Ambiente con un parametro opzionale](/files/e934f74742361af2667002ec45ae0a37114e5446)

### Ambienti numerati

Gli ambienti numerati possono essere creati sia manualmente sia direttamente con il comando `\newtheorem`, come dimostra il seguente esempio:

```latex
\documentclass{article}
% Definisci il nostro ambiente numerato nel preambolo
\newcounter{example}[section]
\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
   \noindent \textbf{Esempio~\theexample. #1} \rmfamily}{\medskip}

% Un altro ambiente numerato definito con \newtheorem
\usepackage{amsmath} % Per il comando \newtheorem
\newtheorem{SampleEnv}{Sample Environment}[section]
\begin{document}

\section{Ambienti numerati definiti dall'utente}

\begin{example}
Primo ambiente numerato definito dall'utente (numero \theexample).
\end{example}

\begin{example}
Secondo ambiente numerato definito dall'utente (numero \theexample).
\end{example}

\section{Altri ambienti numerati definiti dall'utente}
Nota come la numerazione degli esempi è ripartita da 1:

\begin{example}
Primo ambiente numerato definito dall'utente (numero \theexample).
\end{example}

\begin{SampleEnv}
Ambiente definito dall'utente creato con il comando \verb|\newtheorem|.
\end{SampleEnv}
\end{document}
```

[Apri questo esempio in Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Creating+a+numbered+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Define+our+numbered+environment+within+the+preamble%0A%5Cnewcounter%7Bexample%7D%5Bsection%5D%0A%5Cnewenvironment%7Bexample%7D%5B1%5D%5B%5D%7B%5Crefstepcounter%7Bexample%7D%5Cpar%5Cmedskip%0A+++%5Cnoindent+%5Ctextbf%7BExample%7E%5Ctheexample.+%231%7D+%5Crmfamily%7D%7B%5Cmedskip%7D%0A%0A%25+Another+numbered+environment+defined+with+%5Cnewtheorem%0A%5Cusepackage%7Bamsmath%7D+%25+For+the+%5Cnewtheorem+command%0A%5Cnewtheorem%7BSampleEnv%7D%7BSample+Environment%7D%5Bsection%5D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Csection%7BUser-defined+numbered+environments%7D%0A%0A%5Cbegin%7Bexample%7D%0AFirst+user-defined+numbered+environment+%28number+%5Ctheexample%29.%0A%5Cend%7Bexample%7D%0A%0A%5Cbegin%7Bexample%7D%0ASecond+user-defined+numbered+environment+%28number+%5Ctheexample%29.%0A%5Cend%7Bexample%7D%0A%0A%5Csection%7BMore+user-defined+numbered+environments%7D%0ANote+how+the+example+numbering+has+restarted+at+1%3A%0A%0A%5Cbegin%7Bexample%7D%0AFirst+user-defined+numbered+environment+%28number+%5Ctheexample%29.%0A%5Cend%7Bexample%7D%0A%0A%5Cbegin%7BSampleEnv%7D%0AUser-defined+environment+created+with+the+%5Cverb%7C%5Cnewtheorem%7C+command.%0A%5Cend%7BSampleEnv%7D%0A%5Cend%7Bdocument%7D)

Questo esempio produce il seguente output:

![Esempio che mostra ambienti numerati definiti dall'utente](/files/1d3ce5ac6a1d596156f11f1dc0e037b98da6675f)

#### Alcune note

* Nell'ambiente definito manualmente `esempio` il comando `\newcounter{example}[section]` crea un contatore, chiamato anch'esso `esempio`. Il `esempio` il contatore è:
  * incrementato di 1 usando `\refstepcounter{example}` all'interno della definizione dell'ambiente;
  * azzerato ogni volta che inizia una nuova `\section{...}` sezione;
  * una variabile il cui valore corrente può essere composto usando `\theexample`. Vedi [l'articolo sui contatori](/latex/it/formattazione/10-counters.md) per saperne di più.
* Il comando `\newtheorem` crea direttamente un ambiente numerato e accetta tre parametri:
  * il nome del nuovo ambiente: `SampleEnv` nel nostro esempio;
  * il testo da stampare in grassetto all'inizio della riga: `Sample Environment` nel nostro esempio;
  * un parametro opzionale che determina quando il contatore viene azzerato; e se viene usato il contatore è preceduto dal valore di quel contatore di azzeramento: `section` nel nostro esempio.

La [`amsthm` pacchetto](https://ctan.org/pkg/amsthm?lang=en), insieme a `amsmath`, forniscono utili definizioni aggiuntive insieme a `\newtheorem`; vedi [Teoremi e dimostrazioni](/latex/it/specifico-per-argomento/01-theorems-and-proofs.md) per ulteriori dettagli.

## Ridefinizione di ambienti esistenti

Gli ambienti possono essere ridefiniti usando `\renewenvironment` la cui sintassi è la stessa di `\newenvironment`—vedi la sezione [Definizione di un nuovo ambiente](#defining-a-new-environment) per una spiegazione dei vari parametri:

```
\newenvironment{name}[numarg][optarg_default]{begin_def}{end_def}
```

Il prossimo esempio ridefinisce l' `itemize` ambiente—questo è solo un esempio per illustrare il processo, non dovrebbe essere considerato all'interno di un documento reale. Il nuovo `itemize` ambiente non produce più un elenco puntato; invece centra ed enfatizza (in corsivo) il testo al suo interno (usando il `\em` comando).

```latex
\documentclass{article}
% Ridefinisci l'ambiente nel preambolo
\renewenvironment{itemize}
{\begin{center}\em}
{\end{center}}
\begin{document}

\begin{itemize}
Abbiamo ridefinito l'ambiente \texttt{itemize} in modo che qualsiasi testo
al suo interno sia centrato ed enfatizzato (in corsivo). Non crea più
un elenco puntato---questo è solo un esempio e non è destinato all'uso
in documenti reali!
\end{itemize}
\end{document}
```

[Apri questo esempio in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Redefining+an+existing+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Redefine+the+environment+in+the+preamble%0A%5Crenewenvironment%7Bitemize%7D%0A%7B%5Cbegin%7Bcenter%7D%5Cem%7D%0A%7B%5Cend%7Bcenter%7D%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Bitemize%7D%0AWe+have+redefined+the+%5Ctexttt%7Bitemize%7D+environment+so+that+any+text+%0Awithin+it+is+centred+and+emphasised+%28italicized%29.+It+no+longer+creates%0Aa+bulleted+list---this+is+only+an+example+and+not+intended+for+use+%0Ain+real+documents%21%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

Questo esempio produce il seguente output:

![Esempio con un ambiente itemize ridefinito](/files/954668b68a40cd8af81732b01ed4599e745bc481)

## Letture aggiuntive

Per ulteriori informazioni, vedi:

* [Comandi](/latex/it/comandi/01-commands.md)
* [Comprendere pacchetti e file di classe](/latex/it/file-di-classe/01-understanding-packages-and-class-files.md)
* [Scrivere un proprio pacchetto](/latex/it/file-di-classe/03-writing-your-own-package.md)
* [Scrivere una propria classe](/latex/it/file-di-classe/04-writing-your-own-class.md)
* [Lunghezze in LaTeX](/latex/it/formattazione/01-lengths-in-latex.md)
* [Uso dei colori in LaTeX](/latex/it/formattazione/13-using-colors-in-latex.md)
* [Dimensioni della pagina e margini](/latex/it/formattazione/07-page-size-and-margins.md)
* [Elenco di pacchetti e file di classe](/latex/it/file-di-classe/02-overleaf-and-tex-live.md)
* [La non così breve introduzione a LaTeX2ε](http://www.ctan.org/tex-archive/info/lshort/)
* [LaTeX/Creating\_Packages su WikiBooks](http://en.wikibooks.org/wiki/LaTeX/Creating_Packages)


---

# 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/comandi/02-environments.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.
