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

# Ympäristöt

LaTeX-ympäristöjä käytetään kohdistamaan tietynlaisia ladontaefektejä asiakirjasi sisällön osaan. Tässä artikkelissa selitetään, miten olemassa olevia ympäristöjä käytetään ja miten uusia määritellään.

## Johdanto

Ympäristö alkaa merkinnällä `\begin{name}` ja päättyy merkintään `\end{name}`:

```
\begin{name}
Sisältösi tähän...
...tulee tähän...
\end{name}
```

jossa “`nimi`” on käytetyn ympäristön nimi—kuten seuraavassa esimerkissä, jossa käytetään “`center`” tekstikappaleen muotoiluun (keskittämiseen):

```latex
\documentclass{article}
\begin{document}
\begin{center}
Tämä on demonstraatio \texttt{center}-ympäristöstä.
Tämä tekstikappale tulee olemaan \textit{keskitetty}, koska se on
sisällytetty erityiseen ympäristöön. Ympäristöt tarjoavat
tehokkaan tavan muokata tekstilohkoja asiakirjassasi.
\end{center}
\end{document}
```

[Avaa tämä esimerkki Overleafissa.](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Kuva, joka näyttää keskitetyn tasaamisen](/files/fe7c10d450aa52ba7136015a2293f3016769b6a9)

## Ympäristöt

Seuraava esimerkki käyttää `tabular` -ympäristöä pienen taulukon ladontaan. `tabular` ottaa lisäksi argumentin `{ c c c }` joka määrittää solujen tasaamisen—katso [Taulukot](/latex/fi/kuvat-ja-taulukot/01-tables.md) artikkeli lisätietoja varten.

```latex
\documentclass{article}
\begin{document}
\begin{tabular}{ c c c }
  solu1 & solu2 & solu3 \\
  solu4 & solu5 & solu6 \\
  solu7 & solu8 & solu9 \\
 \end{tabular}
\end{document}
```

[Avaa tämä esimerkki Overleafissa.](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Esimerkki tabular-ympäristöstä](/files/9b150d544be6e44a5584e8bcb6e4064269651970)

Jotkin ympäristöt hyväksyvät valinnaisia argumentteja, jotka annetaan yleensä hakasulkeissa (`[...]`).

## Uuden ympäristön määrittely

Määritelläksesi uuden ympäristön käytä `\newenvironment` -komentoa, jonka yleinen muoto on:

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

jossa:

* `nimi` on tämän käyttäjän määrittelemän argumentin nimi;
* `numarg` on argumenttien määrä, 1–9, jonka tämä ympäristö hyväksyy. Jos `[numarg]` jätetään pois, ympäristö ei hyväksy mitään argumentteja—kuten seuraavassa esimerkissä määritelty [`boxed` -ympäristö](#defining-simple-environments);
* `optarg_default` tekee ensimmäisestä argumentista valinnaisen ja antaa oletusarvon—eli se on arvo, jota käytetään, jos valinnaisen argumentin arvoa ei anneta;
* `begin_def` on LaTeX-koodia, joka suoritetaan, kun ympäristö alkaa (avautuu), eli kun kirjoitat `\begin{name}`. Tässä koodissa voit käyttää ympäristön hyväksymiä argumentteja—huomaa, että valinnainen argumentti on #1 ja loput argumentit saadaan käyttämällä #2–#numarg;
* `end_def` on LaTeX-koodia, joka suoritetaan, kun ympäristö päättyy (sulkeutuu); eli kun kirjoitat `\end{name}`. Et voi käyttää yhtäkään argumenteista tässä koodiosassa.

### Yksinkertaisten ympäristöjen määrittely

Tässä ensimmäisessä esimerkissä määrittelemme `boxed` -ympäristön, joka ei ota yhtään argumenttia. Se piirtää kehyksen ympäristöön sisällytetyn tekstin ympärille:

```latex
\documentclass{article}
%Voimme määritellä ympäristön johdannossa
\newenvironment{boxed}
    {\begin{center}
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    }
    {
    \\\\\hline
    \end{tabular}
    \end{center}
    }
%
\begin{document}
Nyt voimme käyttää \texttt{boxed}-ympäristöä asiakirjassamme:

\begin{boxed}
Tämä teksti on ladottu \texttt{boxed}-ympäristön sisällä.
\end{boxed}

Tämä teksti on ladottu \texttt{boxed}-ympäristön ulkopuolella.
\end{document}
```

[Avaa tämä esimerkki Overleafissa.](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Mukautetun LaTeX-ympäristön demonstrointi](/files/4f9e3bb73192f5f22a3acfb03a3d86107ee2bb4d)

Jos vertaamme määritelmäämme `boxed` muodon kanssa `\newenvironment` näemme:

* `nimi` on `boxed`;
* ei kumpikaan `[numarg]` tai `[optarg_default]` anneta, koska tämä ympäristö ei ota vastaan mitään argumentteja;
* `begin_def` on LaTeX-koodia—annettu aaltosulkeiden parin `{...}`välissä—which suoritetaan, kun ympäristö *alkaa* (avautuu):

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

* `end_def` on LaTeX-koodia—annettu aaltosulkeiden parin `{...}`välissä—which suoritetaan, kun ympäristö *päättyy* (sulkeutuu):

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

Esimerkissä `begin_def` aloittaa `center` -ympäristön ja sen sisällä avataan `tabular` -ympäristö piirtämään pystysuorat viivat ja vaakaviivan ympäristöön sijoittamamme tekstin ympärille. `end_def` piirtää toisen vaakaviivan ja sulkee sitten `tabular` ja `center` -ympäristöt.

### Argumentteja ottavien ympäristöjen määrittely

Parannetaan edellistä esimerkkiä tekemällä seuraavaa:

* käytetään valinnaista argumenttia otsikon ladontaan. Jos otsikkoa ei anneta, käytetään oletusarvoa `Tämä on laatikko`;
* käytetään toista argumenttia, joka sisältää aineistoa ladottavaksi ennen ympäristön sisällä tarjoamaamme tekstiä.

Eli meillä on 2 argumenttia:

* ensimmäinen (argumentti 1) on valinnainen;
* toinen (argumentti 2) ei ole.

Tämä tarkoittaa `numarg`=2.

Voimme käyttää seuraavaa määritelmää päivitetylle `boxed` ympäristöä:

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

Tämä parannettu versio eroaa alkuperäisestä seuraavilla tavoilla:

* \[numarg] on mukana ja sen arvo on 2;
* \[optarg\_default] on myös mukana, mikä tekee ensimmäisestä argumentista valinnaisen ja sille on oletusarvo `Tämä on laatikko`.

Seuraava esimerkki osoittaa joitakin käyttötapoja päivitetylle `boxed` ympäristöä:

```latex
\documentclass{article}
% Huomaa ensimmäisen
% argumentin oletusarvo on annettu muodossa [This is a box]
\newenvironment{boxed}[2][This is a box]
    {\begin{center}
    Argumentti 1 (\#1)=#1\\[1ex]
    \begin{tabular}{|p{0.9\textwidth}|}
    \hline\\
    Argumentti 2 (\#2)=#2\\[2ex]
    }
    {
    \\\\\hline
    \end{tabular}
    \end{center}
    }
\begin{document}
\textbf{Esimerkki 1}: Käytä ensimmäisen argumentin oletusarvoa:

\begin{boxed}{Some preliminary text}
Tämä teksti on \textit{ympäristön sisällä}.
\end{boxed}

Tämä teksti on \textit{ympäristön ulkopuolella}.

\vskip12pt

\textbf{Esimerkki 2}: Anna arvo ensimmäiselle argumentille:

\begin{boxed}[This is not the default value]{Some more preliminary text}
Tämä teksti on edelleen \textit{ympäristön sisällä}.
\end{boxed}

Tämä teksti on myös \textit{ympäristön ulkopuolella}.
\end{document}
```

[Avaa tämä esimerkki Overleafissa.](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Ympäristö valinnaisella parametrilla](/files/45579fe9db9e33b543c24612e37a53f814b27fb8)

### Numeroidut ympäristöt

Numeroituja ympäristöjä voidaan luoda joko käsin tai suoraan komennolla `\newtheorem`, kuten seuraava esimerkki osoittaa:

```latex
\documentclass{article}
% Määrittele numeroitu ympäristömme johdannossa
\newcounter{example}[section]
\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
   \noindent \textbf{Esimerkki~\theexample. #1} \rmfamily}{\medskip}

% Toinen numeroitu ympäristö, joka on määritelty komennolla \newtheorem
\usepackage{amsmath} % Komentoa \newtheorem varten
\newtheorem{SampleEnv}{Sample Environment}[section]
\begin{document}

\section{Käyttäjän määrittelemät numeroidut ympäristöt}

\begin{example}
Ensimmäinen käyttäjän määrittelemä numeroitu ympäristö (numero \theexample).
\end{example}

\begin{example}
Toinen käyttäjän määrittelemä numeroitu ympäristö (numero \theexample).
\end{example}

\section{Lisää käyttäjän määrittelemiä numeroituja ympäristöjä}
Huomaa, miten esimerkin numerointi on alkanut uudelleen arvosta 1:

\begin{example}
Ensimmäinen käyttäjän määrittelemä numeroitu ympäristö (numero \theexample).
\end{example}

\begin{SampleEnv}
Käyttäjän määrittelemä ympäristö, joka on luotu \verb|\newtheorem|-komennolla.
\end{SampleEnv}
\end{document}
```

[Avaa tämä esimerkki Overleafissa](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Esimerkki käyttäjän määrittelemistä numeroiduista ympäristöistä](/files/89866e525fa81d6cff179a10587e5eaa21ba76e0)

#### Muutamia huomioita

* Käsin määritellyssä `esimerkki` -ympäristössä komento `\newcounter{example}[section]` luo laskurin, jota kutsutaan myös `esimerkki`. Se `esimerkki` laskurin arvo on:
  * kasvatetaan yhdellä käyttämällä `\refstepcounter{example}` ympäristömääritelmän sisällä;
  * nollataan joka kerta, kun uusi `\section{...}` aloitetaan;
  * muuttuja, jonka nykyinen arvo voidaan latoa komennolla `\theexample`. Katso [artikkeli laskureista](/latex/fi/muotoilu/10-counters.md) oppiaaksesi lisää.
* Komento `\newtheorem` luo suoraan numeroidun ympäristön ja ottaa kolme parametria:
  * uuden ympäristön nimi: `SampleEnv` esimerkissämme;
  * rivin alussa lihavoituna tulostettava teksti: `Sample Environment` esimerkissämme;
  * valinnainen parametri, joka määrittää, milloin laskuri nollataan; ja jos sitä käytetään, laskurin eteen kirjoitetaan kyseisen nollauslaskurin arvo: `section` esimerkissämme.

Se [`amsthm` paketti](https://ctan.org/pkg/amsthm?lang=en), yhdessä `amsmath`, tarjoavat hyödyllisiä lisämääritelmiä yhdessä `\newtheorem`-komennon kanssa; katso [Lauseet ja todistukset](/latex/fi/alakohtaiset/01-theorems-and-proofs.md) lisätietoja varten.

## Olemassa olevien ympäristöjen uudelleenmäärittely

Ympäristöjä voidaan määritellä uudelleen käyttämällä `\renewenvironment` -komentoa, jonka syntaksi on sama kuin `\newenvironment`—katso osio [Uuden ympäristön määrittely](#defining-a-new-environment) selitystä varten eri parametreista:

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

Seuraava esimerkki määrittelee uudelleen `itemize` -ympäristön—tämä on vain esimerkki prosessin havainnollistamiseksi, eikä sitä pidä käyttää oikeassa asiakirjassa. Uusi `itemize` ympäristö ei enää tuota luettelomerkein varustettua listaa; sen sijaan se keskittää ja korostaa (kursivoi) siinä olevan tekstin (käyttäen `\em` -komentoa).

```latex
\documentclass{article}
% Määrittele ympäristö uudelleen johdannossa
\renewenvironment{itemize}
{\begin{center}\em}
{\end{center}}
\begin{document}

\begin{itemize}
Olemme määritelleet \texttt{itemize}-ympäristön uudelleen siten, että kaikki sen sisällä oleva teksti
on keskitetty ja korostettu (kursivoitu). Se ei enää luo
luettelomerkein varustettua listaa---tämä on vain esimerkki eikä sitä ole tarkoitettu käytettäväksi
oikeissa asiakirjoissa!
\end{itemize}
\end{document}
```

[Avaa tämä esimerkki Overleafissa.](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)

Tämä esimerkki tuottaa seuraavan tulosteen:

![Esimerkki uudelleenmääritellystä itemize-ympäristöstä](/files/7cc5049ecac34f2aba1f1b5ab7a91836efe544bd)

## Lisälukemista

Lisätietoja löydät:

* [Komennot](/latex/fi/komennot/01-commands.md)
* [Pakettien ja luokkatiedostojen ymmärtäminen](/latex/fi/luokkatiedostot/01-understanding-packages-and-class-files.md)
* [Oman paketin kirjoittaminen](/latex/fi/luokkatiedostot/03-writing-your-own-package.md)
* [Oman luokan kirjoittaminen](/latex/fi/luokkatiedostot/04-writing-your-own-class.md)
* [Pituudet LaTeXissa](/latex/fi/muotoilu/01-lengths-in-latex.md)
* [Värien käyttäminen LaTeXissa](/latex/fi/muotoilu/13-using-colors-in-latex.md)
* [Sivukoko ja marginaalit](/latex/fi/muotoilu/07-page-size-and-margins.md)
* [Luettelo paketeista ja luokkatiedostoista](/latex/fi/luokkatiedostot/02-overleaf-and-tex-live.md)
* [Ei-niin-lyhyt johdatus LaTeX2ε:ään](http://www.ctan.org/tex-archive/info/lshort/)
* [LaTeX/Creating\_Packages WikiBooksissa](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/fi/komennot/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.
