> 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/overleaf-learn-latex-pt/comandos/02-environments.md).

# Ambientes

Ambientes LaTeX são usados para aplicar tipos específicos de efeito(s) de composição tipográfica a uma secção do conteúdo do seu documento. Este artigo explica como usar ambientes existentes e definir novos.

## Introdução

Um ambiente começa com `\begin{name}` e termina com `\end{name}`:

```
\begin{name}
O seu conteúdo aqui...
...vai aqui...
\end{name}
```

onde “`nome`” é o nome do ambiente que está a ser usado — como no exemplo seguinte, que usa “`center`” para formatar (centrar) um parágrafo de texto:

```latex
\documentclass{article}
\begin{document}
\begin{center}
Esta é uma demonstração do ambiente \texttt{center}.
Este parágrafo de texto será \textit{centrado} porque está
contido num ambiente especial. Os ambientes fornecem
uma forma eficiente de modificar blocos de texto dentro do seu documento.
\end{center}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Imagem que mostra o alinhamento ao centro](/files/12f84098d97df83d58b4f36bfb749a25df504585)

## Ambientes

O exemplo seguinte utiliza o `tabular` ambiente para compor uma pequena tabela. `tabular` aceita um argumento adicional `{ c c c }` que define o alinhamento das células — veja o [Tabelas](/latex/overleaf-learn-latex-pt/figuras-e-tabelas/01-tables.md) artigo para mais informações.

```latex
\documentclass{article}
\begin{document}
\begin{tabular}{ c c c }
  célula1 & célula2 & célula3 \\
  célula4 & célula5 & célula6 \\
  célula7 & célula8 & célula9 \\
 \end{tabular}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Exemplo do ambiente tabular](/files/ed18758d95d0373a6ced37097d938e65cb3373d3)

Alguns ambientes aceitam argumentos opcionais que normalmente são passados entre colchetes (`[...]`).

## Definir um novo ambiente

Para definir um novo ambiente, use o `\newenvironment` comando, que tem a forma geral:

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

onde:

* `nome` é o nome deste argumento definido pelo utilizador;
* `numarg` é o número de argumentos, de 1 a 9, que este ambiente aceita. Se `[numarg]` for omitido, então o ambiente não aceita quaisquer argumentos — como o ambiente [`boxed` definido no exemplo seguinte](#defining-simple-environments);
* `optarg_default` torna o primeiro argumento opcional e fornece um valor predefinido — isto é, o valor usado se um valor de argumento opcional não for fornecido;
* `begin_def` é código LaTeX executado quando o ambiente começa (abre), isto é, quando escreve `\begin{name}`. Dentro deste código pode usar os argumentos aceites pelo ambiente — note que o argumento opcional é #1 e os restantes argumentos são acedidos usando #2 até #numarg;
* `end_def` é código LaTeX executado quando o ambiente termina (fecha); isto é, quando escreve `\end{name}`. Não pode usar nenhum dos argumentos dentro desta secção de código.

### Definir ambientes simples

Neste primeiro exemplo, definimos o `boxed` ambiente que não recebe quaisquer argumentos. Ele desenha uma caixa à volta do texto contido dentro do ambiente:

```latex
\documentclass{article}
%Podemos definir o ambiente no preâmbulo
\newenvironment{boxed}
    {\begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    }
    {
    \\\\\hline
    \end{tabular}
    \end{center}
    }
%
\begin{document}
Agora podemos usar o ambiente \texttt{boxed} no nosso documento:

\begin{boxed}
Este texto está formatado dentro do ambiente \texttt{boxed}.
\end{boxed}

Este texto é composto fora do ambiente \texttt{boxed}.
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Demonstrando um ambiente LaTeX personalizado](/files/1a37292cff04ad1b456eba50b591bb5349bf8574)

Se compararmos a nossa definição de `boxed` com a forma geral de `\newenvironment` podemos ver:

* `nome` é `boxed`;
* nem `[numarg]` ou `[optarg_default]` são fornecidos porque este ambiente não recebe quaisquer argumentos;
* `begin_def` é o código LaTeX — fornecido entre um par de chavetas `{...}`— que é executado quando o ambiente *começa* (abre):

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

* `end_def` é o código LaTeX — fornecido entre um par de chavetas `{...}`— que é executado quando o ambiente *termina* (fecha):

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

No exemplo, `begin_def` começa um `center` ambiente e, dentro deste, um `tabular` ambiente é aberto para desenhar linhas verticais e uma linha horizontal à volta do texto que colocamos no ambiente. `end_def` desenha outra linha horizontal e depois fecha os `tabular` e `center` ambientes.

### Definir ambientes que aceitam argumentos

Vamos melhorar o exemplo anterior para fazer o seguinte:

* usar um argumento opcional para compor um título. Se não for fornecido um título, use o valor predefinido `Esta é uma caixa`;
* usar um segundo argumento que contém material a compor antes do texto que fornecemos dentro do próprio ambiente.

Portanto, temos 2 argumentos:

* o primeiro (argumento 1) é opcional;
* o segundo (argumento 2) não é.

Isto significa `numarg`=2.

Podemos usar a seguinte definição do nosso `boxed` ambiente:

```latex
\newenvironment{boxed}[2][Esta é uma caixa]
    {\begin{center}
    Argumento 1 (\#1)=#1\\[1ex]
    \begin{tabular}{{{!}}p{0.9\textwidth}{{!}}}
    \hline\\
    Argumento 2 (\#2)=#2\\[2ex]
    }
    {
    \\\\\hline
    \end{tabular}
    \end{center}
    }
```

Esta versão melhorada difere da original das seguintes formas:

* \[numarg] está presente e tem o valor 2;
* \[optarg\_default] também está presente, tornando o primeiro argumento opcional com um valor predefinido `Esta é uma caixa`.

O exemplo seguinte demonstra algumas utilizações do nosso `boxed` ambiente:

```latex
\documentclass{article}
% Note o valor predefinido para o primeiro
% argumento é fornecido por [Esta é uma caixa]
\newenvironment{boxed}[2][Esta é uma caixa]
    {\begin{center}
    Argumento 1 (\#1)=#1\\[1ex]
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    Argumento 2 (\#2)=#2\\[2ex]
    }
    {
    \\\\\hline
    \end{tabular}
    \end{center}
    }
\begin{document}
\textbf{Exemplo 1}: Use o valor predefinido para o primeiro argumento:

\begin{boxed}{Algum texto preliminar}
Este texto está \textit{dentro} do ambiente.
\end{boxed}

Este texto está \textit{fora} do ambiente.

\vskip12pt

\textbf{Exemplo 2}: Forneça um valor para o primeiro argumento:

\begin{boxed}[Este não é o valor predefinido]{Algum texto preliminar adicional}
Este texto ainda está \textit{dentro} do ambiente.
\end{boxed}

Este texto também está \textit{fora} do ambiente.
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Ambiente com um parâmetro opcional](/files/844f7187a7f22fcb6dca40ee9c92e4dd4caa62bb)

### Ambientes numerados

Os ambientes numerados podem ser criados manualmente ou diretamente com o comando `\newtheorem`, como demonstrado pelo exemplo seguinte:

```latex
\documentclass{article}
% Defina o nosso ambiente numerado no preâmbulo
\newcounter{example}[section]
\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
   \noindent \textbf{Example~\theexample. #1} \rmfamily}{\medskip}

% Outro ambiente numerado definido com \newtheorem
\usepackage{amsmath} % Para o comando \newtheorem
\newtheorem{SampleEnv}{Ambiente de Exemplo}[section]
\begin{document}

\section{Ambientes numerados definidos pelo utilizador}

\begin{example}
Primeiro ambiente numerado definido pelo utilizador (número \theexample).
\end{example}

\begin{example}
Segundo ambiente numerado definido pelo utilizador (número \theexample).
\end{example}

\section{Mais ambientes numerados definidos pelo utilizador}
Note como a numeração do exemplo recomeçou em 1:

\begin{example}
Primeiro ambiente numerado definido pelo utilizador (número \theexample).
\end{example}

\begin{SampleEnv}
Ambiente definido pelo utilizador criado com o comando \verb|\newtheorem|.
\end{SampleEnv}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Exemplo que mostra ambientes numerados definidos pelo utilizador](/files/161e3c19cd19b232c8ce0b10313303bc7892a31a)

#### Algumas notas

* No ambiente `exemplo` definido manualmente, o comando `\newcounter{example}[section]` cria um contador, também chamado `exemplo`. O `exemplo` contador é:
  * incrementado em 1 usando `\refstepcounter{example}` na definição do ambiente;
  * reposto sempre que uma nova `\section{...}` é iniciada;
  * uma variável cujo valor atual pode ser composto usando `\theexample`. Veja [o artigo sobre contadores](/latex/overleaf-learn-latex-pt/formatacao/10-counters.md) para saber mais.
* O comando `\newtheorem` cria diretamente um ambiente numerado e aceita três parâmetros:
  * o nome do novo ambiente: `SampleEnv` no nosso exemplo;
  * o texto a ser impresso a negrito no início da linha: `Ambiente de Exemplo` no nosso exemplo;
  * um parâmetro opcional que determina quando o contador é reposto; e, se for usado, o contador passa a ser precedido pelo valor desse contador de reposição: `section` no nosso exemplo.

O [`amsthm` pacote](https://ctan.org/pkg/amsthm?lang=en), juntamente com `amsmath`, fornecem definições extra úteis juntamente com `\newtheorem`; veja [Teoremas e demonstrações](/latex/overleaf-learn-latex-pt/especifico-da-area/01-theorems-and-proofs.md) para mais detalhes.

## Redefinir ambientes existentes

Os ambientes podem ser redefinidos usando `\renewenvironment` cuja sintaxe é a mesma de `\newenvironment`—veja a secção [Definir um novo ambiente](#defining-a-new-environment) para uma explicação dos vários parâmetros:

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

O exemplo seguinte redefine o `itemize` ambiente — este é apenas um exemplo para ilustrar o processo; não deve ser considerado num documento real. O novo `itemize` ambiente já não produz uma lista com marcadores; em vez disso, centra e enfatiza (coloca em itálico) o texto dentro dele (usando o `\em` comando).

```latex
\documentclass{article}
% Redefina o ambiente no preâmbulo
\renewenvironment{itemize}
{\begin{center}\em}
{\end{center}}
\begin{document}

\begin{itemize}
Redefinimos o ambiente \texttt{itemize} para que qualquer texto
dentro dele fique centrado e enfatizado (em itálico). Já não cria
uma lista com marcadores --- este é apenas um exemplo e não se destina a ser usado
em documentos reais!
\end{itemize}
\end{document}
```

[Abra este exemplo no 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)

Este exemplo produz a seguinte saída:

![Exemplo com um ambiente itemize redefinido](/files/2654a0751f10ba3d9cb8c4a4fd2f119c532ab932)

## Leitura adicional

Para mais informações, consulta:

* [Comandos](/latex/overleaf-learn-latex-pt/comandos/01-commands.md)
* [Compreender pacotes e ficheiros de classe](/latex/overleaf-learn-latex-pt/ficheiros-de-classe/01-understanding-packages-and-class-files.md)
* [Escrever o seu próprio pacote](/latex/overleaf-learn-latex-pt/ficheiros-de-classe/03-writing-your-own-package.md)
* [Escrever a sua própria classe](/latex/overleaf-learn-latex-pt/ficheiros-de-classe/04-writing-your-own-class.md)
* [Comprimentos em LaTeX](/latex/overleaf-learn-latex-pt/formatacao/01-lengths-in-latex.md)
* [Utilizar cores no LaTeX](/latex/overleaf-learn-latex-pt/formatacao/13-using-colors-in-latex.md)
* [Tamanho da página e margens](/latex/overleaf-learn-latex-pt/formatacao/07-page-size-and-margins.md)
* [Lista de pacotes e ficheiros de classe](/latex/overleaf-learn-latex-pt/ficheiros-de-classe/02-overleaf-and-tex-live.md)
* [A introdução não tão curta ao LaTeX2ε](http://www.ctan.org/tex-archive/info/lshort/)
* [LaTeX/Creating\_Packages no 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/overleaf-learn-latex-pt/comandos/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.
