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

# Środowiska

Środowiska LaTeX służą do zastosowania określonego efektu składu typograficznego do fragmentu treści dokumentu. Ten artykuł wyjaśnia, jak korzystać z istniejących środowisk i definiować nowe.

## Wstęp

Środowisko zaczyna się od `\begin{name}` i kończy się na `\end{name}`:

```
\begin{name}
Twoja treść tutaj...
...trafi tutaj...
\end{name}
```

gdzie „`nazwa`” to nazwa używanego środowiska — na przykład w poniższym przykładzie z „`center`” do formatowania akapitu tekstu (wyśrodkowanego):

```latex
\documentclass{article}
\begin{document}
\begin{center}
To jest demonstracja środowiska \texttt{center}.
Ten akapit tekstu będzie \textit{wyśrodkowany}, ponieważ znajduje się
w obrębie specjalnego środowiska. Środowiska zapewniają
wydajny sposób modyfikowania bloków tekstu w dokumencie.
\end{center}
\end{document}
```

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

Ten przykład generuje następujący wynik:

![Obraz przedstawiający wyrównanie do środka](/files/25b8d5f36361f448838af3522ebb6d6f441f8bcd)

## Środowiska

Poniższy przykład wykorzystuje `tabular` środowiska do składu małej tabeli. `tabular` wymaga dodatkowego argumentu `{ c c c }` który definiuje wyrównanie komórek — zobacz [Tabele](/latex/pl/rysunki-i-tabele/01-tables.md) artykuł po więcej informacji.

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

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

Ten przykład generuje następujący wynik:

![Przykład środowiska tabular](/files/354c3ce6f3fe55ec854b50cbdb822c9a850d1018)

Niektóre środowiska przyjmują opcjonalne argumenty, które zwykle przekazuje się w nawiasach (`[...]`).

## Definiowanie nowego środowiska

Aby zdefiniować nowe środowisko, użyj `\newenvironment` polecenia, które ma ogólną postać:

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

gdzie:

* `nazwa` to nazwa tego argumentu zdefiniowanego przez użytkownika;
* `numarg` to liczba argumentów, od 1 do 9, które akceptuje to środowisko. Jeśli `[numarg]` zostanie pominięte, środowisko nie przyjmuje żadnych argumentów — tak jak [`boxed` środowisko zdefiniowane w następnym przykładzie](#defining-simple-environments);
* `optarg_default` sprawia, że pierwszy argument jest opcjonalny i podaje wartość domyślną — tzn. jest to wartość używana, jeśli nie podano wartości argumentu opcjonalnego;
* `begin_def` to kod LaTeX wykonywany, gdy środowisko się zaczyna (otwiera), tzn. gdy wpiszesz `\begin{name}`. W tym kodzie możesz używać argumentów akceptowanych przez środowisko — zauważ, że argument opcjonalny to #1, a pozostałe argumenty są dostępne jako #2 do #numarg;
* `end_def` to kod LaTeX wykonywany, gdy środowisko się kończy (zamyka); tzn. gdy wpiszesz `\end{name}`. Nie możesz używać żadnego z argumentów w tej sekcji kodu.

### Definiowanie prostych środowisk

W tym pierwszym przykładzie definiujemy `boxed` środowisko, które nie przyjmuje żadnych argumentów. Rysuje ono ramkę wokół tekstu zawartego w środowisku:

```latex
\documentclass{article}
%Możemy zdefiniować środowisko we wstępie
\newenvironment{boxed}
    {\begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    }
    {
    \\\\\hline
    \end{tabular}
    \end{center}
    }
%
\begin{document}
Teraz możemy użyć środowiska \texttt{boxed} w naszym dokumencie:

\begin{boxed}
Ten tekst jest formatowany wewnątrz środowiska \texttt{boxed}.
\end{boxed}

Ten tekst jest składuowany poza środowiskiem \texttt{boxed}.
\end{document}
```

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

Ten przykład generuje następujący wynik:

![Demonstracja niestandardowego środowiska LaTeX](/files/80e458f9ad708d376478440336af9c96eae2a768)

Jeśli porównamy naszą definicję `boxed` z ogólną postacią `\newenvironment` możemy zauważyć:

* `nazwa` to `boxed`;
* ani `[numarg]` lub `[optarg_default]` są podane, ponieważ to środowisko nie przyjmuje żadnych argumentów;
* `begin_def` to kod LaTeX — podany między parą nawiasów klamrowych `{...}`— który jest wykonywany, gdy środowisko *zaczyna się* (otwiera):

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

* `end_def` to kod LaTeX — podany między parą nawiasów klamrowych `{...}`— który jest wykonywany, gdy środowisko *zatrzymuje się* (zamyka):

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

W przykładzie, `begin_def` otwiera `center` środowisko, a wewnątrz niego `tabular` środowisko jest otwierane, aby narysować pionowe linie i poziomą linię wokół tekstu umieszczonego w środowisku. `end_def` rysuje kolejną poziomą linię, a następnie zamyka `tabular` i `center` środowiska.

### Definiowanie środowisk przyjmujących argumenty

Rozszerzmy poprzedni przykład, aby zrobić następujące rzeczy:

* użyć opcjonalnego argumentu do składu tytułu. Jeśli tytuł nie zostanie podany, użyj wartości domyślnej `To jest pudełko`;
* użyć drugiego argumentu, który zawiera materiał do składu przed tekstem, który podajemy w samym środowisku.

Zatem mamy 2 argumenty:

* pierwszy (argument 1) jest opcjonalny;
* drugi (argument 2) nie jest.

To oznacza `numarg`=2.

Możemy użyć następującej definicji naszego zaktualizowanego `boxed` środowiska:

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

Ten ulepszony wariant różni się od oryginału w następujący sposób:

* \[numarg] występuje i ma wartość 2;
* \[optarg\_default] również występuje, czyniąc pierwszy argument opcjonalnym z wartością domyślną `To jest pudełko`.

Poniższy przykład pokazuje kilka zastosowań naszego ulepszonego `boxed` środowiska:

```latex
\documentclass{article}
% Zwróć uwagę, że wartość domyślna dla pierwszego
% argumentu jest podana przez [This is a box]
\newenvironment{boxed}[2][This is a box]
    {\begin{center}
    Argument 1 (\#1)=#1\\[1ex]
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    Argument 2 (\#2)=#2\\[2ex]
    }
    {
    \\\\\hline
    \end{tabular}
    \end{center}
    }
\begin{document}
\textbf{Przykład 1}: Użyj wartości domyślnej dla pierwszego argumentu:

\begin{boxed}{Some preliminary text}
Ten tekst znajduje się \textit{wewnątrz} środowiska.
\end{boxed}

Ten tekst znajduje się \textit{poza} środowiskiem.

\vskip12pt

\textbf{Przykład 2}: Podaj wartość dla pierwszego argumentu:

\begin{boxed}[This is not the default value]{Some more preliminary text}
Ten tekst nadal znajduje się \textit{wewnątrz} środowiska.
\end{boxed}

Ten tekst jest również \textit{poza} środowiskiem.
\end{document}
```

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

Ten przykład generuje następujący wynik:

![Środowisko z opcjonalnym parametrem](/files/fdcb6ddca594102b5fa158629364734a77482375)

### Numerowane środowiska

Numerowane środowiska można tworzyć ręcznie albo bezpośrednio za pomocą polecenia `\newtheorem`, jak pokazano w poniższym przykładzie:

```latex
\documentclass{article}
% Zdefiniuj nasze numerowane środowisko we wstępie
\newcounter{example}[section]
\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
   \noindent \textbf{Przykład~\theexample. #1} \rmfamily}{\medskip}

% Inne numerowane środowisko zdefiniowane za pomocą \newtheorem
\usepackage{amsmath} % Dla polecenia \newtheorem
\newtheorem{SampleEnv}{Środowisko przykładowe}[section]
\begin{document}

\section{Środowiska numerowane zdefiniowane przez użytkownika}

\begin{example}
Pierwsze numerowane środowisko zdefiniowane przez użytkownika (numer \theexample).
\end{example}

\begin{example}
Drugie numerowane środowisko zdefiniowane przez użytkownika (numer \theexample).
\end{example}

\section{Więcej numerowanych środowisk zdefiniowanych przez użytkownika}
Zauważ, że numeracja przykładów rozpoczęła się ponownie od 1:

\begin{example}
Pierwsze numerowane środowisko zdefiniowane przez użytkownika (numer \theexample).
\end{example}

\begin{SampleEnv}
Środowisko zdefiniowane przez użytkownika utworzone za pomocą polecenia \verb|\newtheorem|.
\end{SampleEnv}
\end{document}
```

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

Ten przykład generuje następujący wynik:

![Przykład pokazujący numerowane środowiska zdefiniowane przez użytkownika](/files/ed54bb122fc7a66dddfd8395f6d13a0f606778d9)

#### Kilka uwag

* W ręcznie zdefiniowanym `przykładzie` środowiska polecenie `\newcounter{example}[section]` tworzy licznik, zwany również `przykładzie`. Pakiet `przykładzie` licznik ma wartość:
  * zwiększany o 1 za pomocą `\refstepcounter{example}` wewnątrz definicji środowiska;
  * resetowany za każdym razem, gdy rozpoczyna się nowa `\section{...}` ;
  * zmienna, której bieżącą wartość można składać za pomocą `\theexample`. Zobacz [artykuł o licznikach](/latex/pl/formatowanie/10-counters.md) aby dowiedzieć się więcej.
* Polecenie `\newtheorem` bezpośrednio tworzy numerowane środowisko i przyjmuje trzy parametry:
  * nazwa nowego środowiska: `SampleEnv` w naszym przykładzie;
  * tekst, który ma zostać wydrukowany pogrubioną czcionką na początku wiersza: `Środowisko przykładowe` w naszym przykładzie;
  * opcjonalny parametr, który określa, kiedy licznik jest resetowany; a jeśli jest używany, przed licznikiem pojawia się wartość tego licznika resetującego: `section` w naszym przykładzie.

Ta [`amsthm` pakietu](https://ctan.org/pkg/amsthm?lang=en), wraz z `amsmath`, dostarczają przydatnych dodatkowych definicji obok `\newtheorem`; zobacz [Twierdzenia i dowody](/latex/pl/specyficzne-dla-dziedziny/01-theorems-and-proofs.md) aby uzyskać więcej szczegółów.

## Ponowne definiowanie istniejących środowisk

Środowiska można redefiniować za pomocą `\renewenvironment` którego składnia jest taka sama jak `\newenvironment`— zobacz sekcję [Definiowanie nowego środowiska](#defining-a-new-environment) po wyjaśnienie różnych parametrów:

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

Następny przykład redefiniuje `itemize` środowisko — to tylko przykład ilustrujący proces; nie należy go traktować jako użytecznego w prawdziwym dokumencie. Nowe `itemize` środowisko nie tworzy już listy wypunktowanej; zamiast tego wyśrodkowuje i wyróżnia (kursywą) tekst w nim zawarty (używając `\em` polecenia).

```latex
\documentclass{article}
% Zdefiniuj ponownie środowisko we wstępie
\renewenvironment{itemize}
{\begin{center}\em}
{\end{center}}
\begin{document}

\begin{itemize}
Zdefiniowaliśmy na nowo środowisko \texttt{itemize}, tak aby każdy tekst
wewnątrz niego był wyśrodkowany i wyróżniony (kursywą). Nie tworzy już
listy wypunktowanej --- to tylko przykład i nie jest przeznaczony do użycia
w prawdziwych dokumentach!
\end{itemize}
\end{document}
```

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

Ten przykład generuje następujący wynik:

![Przykład ze zdefiniowanym na nowo środowiskiem itemize](/files/ba6594a8e5348c51c68a311088554970a4a65f35)

## Dalsza lektura

Więcej informacji znajdziesz w:

* [Polecenia](/latex/pl/polecenia/01-commands.md)
* [Zrozumienie pakietów i plików klas](/latex/pl/pliki-klas/01-understanding-packages-and-class-files.md)
* [Pisanie własnego pakietu](/latex/pl/pliki-klas/03-writing-your-own-package.md)
* [Pisanie własnej klasy](/latex/pl/pliki-klas/04-writing-your-own-class.md)
* [Długości w LaTeX-u](/latex/pl/formatowanie/01-lengths-in-latex.md)
* [Używanie kolorów w LaTeX](/latex/pl/formatowanie/13-using-colors-in-latex.md)
* [Rozmiar strony i marginesy](/latex/pl/formatowanie/07-page-size-and-margins.md)
* [Lista pakietów i plików klas](/latex/pl/pliki-klas/02-overleaf-and-tex-live.md)
* [Niezbyt krótki wstęp do LaTeX2ε](http://www.ctan.org/tex-archive/info/lshort/)
* [LaTeX/Tworzenie\_Pakietów w 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/pl/polecenia/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.
