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

# Entornos

Los entornos de LaTeX se utilizan para aplicar efectos de composición tipográfica específicos a una sección del contenido de su documento. Este artículo explica cómo usar entornos existentes y definir otros nuevos.

## Introducción

Un entorno comienza con `\begin{name}` y termina con `\end{name}`:

```
\begin{name}
Tu contenido aquí...
...va aquí...
\end{name}
```

donde “`nombre`” es el nombre del entorno que se está usando, como en el siguiente ejemplo que usa “`center`” para dar formato (centrar) a un párrafo de texto:

```latex
\documentclass{article}
\begin{document}
\begin{center}
Esta es una demostración del entorno \texttt{center}.
Este párrafo de texto estará \textit{centrado} porque está
contenido dentro de un entorno especial. Los entornos proporcionan
una forma eficaz de modificar bloques de texto dentro de su documento.
\end{center}
\end{document}
```

[Abra este ejemplo en 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 ejemplo produce la siguiente salida:

![Imagen que muestra la alineación centrada](/files/a8da9651de919224bb2ff0af808ba4372607098a)

## Entornos

El siguiente ejemplo utiliza el `tabular` entorno para componer una pequeña tabla. `tabular` toma un argumento adicional `{ c c c }` que define la alineación de las celdas; vea el [artículo sobre tablas](/latex/es/figuras-y-tablas/01-tables.md) para obtener más información.

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

[Abra este ejemplo en 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 ejemplo produce la siguiente salida:

![Ejemplo del entorno tabular](/files/fa4343659d48f9d52518c714d5bc443464724c82)

Algunos entornos aceptan argumentos opcionales que normalmente se pasan entre corchetes (`[...]`).

## Definición de un nuevo entorno

Para definir un nuevo entorno, use el `\newenvironment` comando, que tiene la forma general:

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

donde:

* `nombre` es el nombre de este argumento definido por el usuario;
* `numarg` es el número de argumentos, de 1 a 9, que acepta este entorno. Si `[numarg]` se omite, entonces el entorno no acepta ningún argumento, como el [`boxed` entorno definido en el siguiente ejemplo](#defining-simple-environments);
* `optarg_default` hace que el primer argumento sea opcional y proporciona un valor predeterminado; es decir, es el valor utilizado si no se proporciona un valor para el argumento opcional;
* `begin_def` es el código LaTeX que se ejecuta cuando el entorno comienza (se abre), es decir, cuando escribe `\begin{name}`. Dentro de este código puede usar los argumentos aceptados por el entorno; tenga en cuenta que el argumento opcional es #1 y los argumentos restantes se acceden usando #2 hasta #numarg;
* `end_def` es el código LaTeX que se ejecuta cuando el entorno termina (se cierra); es decir, cuando escribe `\end{name}`. No puede usar ninguno de los argumentos dentro de esta sección de código.

### Definición de entornos simples

En este primer ejemplo, definimos el `boxed` entorno que no toma ningún argumento. Dibuja un recuadro alrededor del texto contenido dentro del entorno:

```latex
\documentclass{article}
%Podemos definir el entorno en el preámbulo
\newenvironment{boxed}
    {\begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    }
    {
    \\\\hline
    \end{tabular}
    \end{center}
    }
%
\begin{document}
Ahora podemos usar el entorno \texttt{boxed} en nuestro documento:

\begin{boxed}
Este texto está formateado dentro del entorno \texttt{boxed}.
\end{boxed}

Este texto está compuesto fuera del entorno \texttt{boxed}.
\end{document}
```

[Abra este ejemplo en 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 ejemplo produce la siguiente salida:

![Demostración de un entorno de LaTeX personalizado](/files/ffd6b15731faf2784488220c53fa4d62c5fac622)

Si comparamos nuestra definición de `boxed` con la forma general de `\newenvironment` podemos ver:

* `nombre` es `boxed`;
* ni `[numarg]` o `[optarg_default]` se proporcionan porque este entorno no toma ningún argumento;
* `begin_def` es el código LaTeX—proporcionado entre un par de llaves `{...}`—que se ejecuta cuando el entorno *comienza* (se abre):

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

* `end_def` es el código LaTeX—proporcionado entre un par de llaves `{...}`—que se ejecuta cuando el entorno *se detiene* (se cierra):

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

En el ejemplo, `begin_def` comienza un `center` entorno y dentro de él se abre un `tabular` entorno para dibujar líneas verticales y una línea horizontal alrededor del texto que colocamos en el entorno. `end_def` dibuja otra línea horizontal y luego cierra los `tabular` y `center` entornos.

### Definición de entornos que toman argumentos

Mejoraremos el ejemplo anterior para hacer lo siguiente:

* usar un argumento opcional para componer un título. Si no se proporciona un título, use el valor predeterminado `Este es un recuadro`;
* usar un segundo argumento que contiene material para componer antes del texto que proporcionamos dentro del propio entorno.

Así que tenemos 2 argumentos:

* el primero (argumento 1) es opcional;
* el segundo (argumento 2) no lo es.

Esto significa `numarg`=2.

Podemos usar la siguiente definición de nuestro `boxed` entorno:

```latex
\newenvironment{boxed}[2][This is a box]
    {\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 versión mejorada difiere de la original en los siguientes aspectos:

* \[numarg] está presente y tiene el valor 2;
* \[optarg\_default] también está presente, lo que hace que el primer argumento sea opcional con un valor predeterminado `Este es un recuadro`.

El siguiente ejemplo demuestra algunos usos de nuestro `boxed` entorno:

```latex
\documentclass{article}
% Observe el valor predeterminado para el primer
% el argumento se proporciona mediante [This is a box]
\newenvironment{boxed}[2][This is a box]
    {\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{Ejemplo 1}: Use el valor predeterminado para el primer argumento:

\begin{boxed}{Texto preliminar}
Este texto está \textit{dentro} del entorno.
\end{boxed}

Este texto está \textit{fuera} del entorno.

\vskip12pt

\textbf{Ejemplo 2}: Proporcione un valor para el primer argumento:

\begin{boxed}[Este no es el valor predeterminado]{Algo más de texto preliminar}
Este texto sigue estando \textit{dentro} del entorno.
\end{boxed}

Este texto también está \textit{fuera} del entorno.
\end{document}
```

[Abra este ejemplo en 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 ejemplo produce la siguiente salida:

![Entorno con un parámetro opcional](/files/d3f2651aa77995e52d0340f1d6e389146054d706)

### Entornos numerados

Los entornos numerados pueden crearse manualmente o directamente con el comando `\newtheorem`, como demuestra el siguiente ejemplo:

```latex
\documentclass{article}
% Defina nuestro entorno numerado dentro del preámbulo
\newcounter{example}[section]
\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
   \noindent \textbf{Ejemplo~\theexample. #1} \rmfamily}{\medskip}

% Otro entorno numerado definido con \newtheorem
\usepackage{amsmath} % Para el comando \newtheorem
\newtheorem{SampleEnv}{Entorno de ejemplo}[section]
\begin{document}

\section{Entornos numerados definidos por el usuario}

\begin{example}
Primer entorno numerado definido por el usuario (número \theexample).
\end{example}

\begin{example}
Segundo entorno numerado definido por el usuario (número \theexample).
\end{example}

\section{Más entornos numerados definidos por el usuario}
Observe cómo la numeración del ejemplo ha reiniciado en 1:

\begin{example}
Primer entorno numerado definido por el usuario (número \theexample).
\end{example}

\begin{SampleEnv}
Entorno definido por el usuario creado con el comando \verb|\newtheorem|.
\end{SampleEnv}
\end{document}
```

[Abre este ejemplo en 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 ejemplo produce la siguiente salida:

![Ejemplo que muestra entornos numerados definidos por el usuario](/files/46385305541ee14a3a022ef34571cfb00f4b3a7f)

#### Algunas notas

* En el `ejemplo` definido manualmente, el comando `\newcounter{example}[section]` crea un contador, también llamado `ejemplo`. El `ejemplo` contador es:
  * incrementado en 1 usando `\refstepcounter{example}` dentro de la definición del entorno;
  * reiniciado cada vez que se inicia una nueva `\section{...}` ;
  * una variable cuyo valor actual puede componerse usando `\theexample`. Véase [el artículo sobre contadores](/latex/es/formato/10-counters.md) para obtener más información.
* El comando `\newtheorem` crea directamente un entorno numerado y toma tres parámetros:
  * el nombre del nuevo entorno: `SampleEnv` en nuestro ejemplo;
  * el texto que se imprimirá en negrita al comienzo de la línea: `Entorno de ejemplo` en nuestro ejemplo;
  * un parámetro opcional que determina cuándo se reinicia el contador; y si se usa, el contador va precedido por el valor de ese contador de reinicio: `section` en nuestro ejemplo.

El [`amsthm` paquete](https://ctan.org/pkg/amsthm?lang=en), junto con `amsmath`, proporcionan definiciones adicionales útiles junto a `\newtheorem`; véase [Teoremas y demostraciones](/latex/es/especifico-de-un-campo/01-theorems-and-proofs.md) para más detalles.

## Redefinición de entornos existentes

Los entornos pueden redefinirse usando `\renewenvironment` cuya sintaxis es la misma que la de `\newenvironment`—vea la sección [Definición de un nuevo entorno](#defining-a-new-environment) para una explicación de los diversos parámetros:

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

El siguiente ejemplo redefine el `itemize` entorno—este es solo un ejemplo para ilustrar el proceso; no debe considerarse dentro de un documento real. El nuevo `itemize` entorno ya no produce una lista con viñetas; en su lugar, centra y enfatiza (en cursiva) el texto dentro de él (usando el `\em` comando).

```latex
\documentclass{article}
% Redefina el entorno en el preámbulo
\renewenvironment{itemize}
{\begin{center}\em}
{\end{center}}
\begin{document}

\begin{itemize}
Hemos redefinido el entorno \texttt{itemize} de modo que cualquier texto
dentro de él se centre y se enfatice (en cursiva). Ya no crea
una lista con viñetas: esto es solo un ejemplo y no está destinado a usarse
en documentos reales!
\end{itemize}
\end{document}
```

[Abra este ejemplo en 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 ejemplo produce la siguiente salida:

![Ejemplo con un entorno itemize redefinido](/files/2325adf0401c3891c92a3ca8a8b834ead0c8752e)

## Lectura adicional

Para más información, consulte:

* [Comandos](/latex/es/comandos/01-commands.md)
* [Entender los paquetes y los archivos de clase](/latex/es/archivos-de-clase/01-understanding-packages-and-class-files.md)
* [Escribir su propio paquete](/latex/es/archivos-de-clase/03-writing-your-own-package.md)
* [Escribir su propia clase](/latex/es/archivos-de-clase/04-writing-your-own-class.md)
* [Longitudes en LaTeX](/latex/es/formato/01-lengths-in-latex.md)
* [Uso de colores en LaTeX](/latex/es/formato/13-using-colors-in-latex.md)
* [Tamaño de página y márgenes](/latex/es/formato/07-page-size-and-margins.md)
* [Lista de paquetes y archivos de clase](/latex/es/archivos-de-clase/02-overleaf-and-tex-live.md)
* [La introducción no tan breve a LaTeX2ε](http://www.ctan.org/tex-archive/info/lshort/)
* [LaTeX/Creating\_Packages en 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/es/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.
