> 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/lisaa-aiheita/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# Kuinka kirjoittaa LaTeX-luokkatiedosto ja suunnitella oma CV:si (osa 1)

Osa 1 | [Osa 2](/latex/fi/lisaa-aiheita/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**Tekijä: James Allen (maaliskuu 2011)**

Kaikki haluavat ammattimaisen näköisen CV:n, eikä LaTeX-malleista ole pulaa, jotka sellaisen tarjoavat. Jos olet kuitenkin kaltaiseni, haluat todennäköisesti omistaa CV:si ja tehdä siitä omannäköisesi. Se tarkoittaa, että sinun täytyy pystyä muokkaamaan ulkoasua itse, mikä voi olla LaTeXissa tunnetusti vaikeaa. Tässä blogikirjoitusten sarjassa toivon voivani opastaa sinua oman mukautetun luokkatiedoston luomisessa ja näyttää, että CV:n muotoilu täsmälleen haluamallasi tavalla voi olla helppoa. Keskitymme CV-tyyliin, mutta menetelmät ovat samat kaikenlaisille asiakirjoille.

### Mikä on luokkatiedosto?

Kun kirjoitat `\documentclass{article}` LaTeX-tiedostossasi, sisällytät luokkatiedoston `article.cls`. Tämä määrittää kaikki komennot, kuten `\section` ja `\title` jotka määrittelevät asiakirjasi rakennetta. Se myös määrittää, miten nämä komennot vaikuttavat sivun muotoiluun ja asetteluun.

### Oman luokkatiedoston asettaminen

Siistein tapa mukauttaa asiakirjan muotoa on pitää kaikki nämä tiedot henkilökohtaisessa luokkatiedostossa. Tämä pitää asiakirjasi rakenteen siististi erillään muotoilusta ja mahdollistaa helpon uudelleenkäytön. Tämä on helppo ottaa käyttöön, joten luo cv.tex-niminen tiedosto seuraavalla sisällöllä:

```latex
\documentclass{my_cv}
\begin{document}
\section{Education}
\subsection{University of Nowhere}
\section{Work}
\subsection{ABC Limited.}
\end{document}
```

Tämä yrittää ladata mukautettua luokkatiedostoasi `my_cv.cls`, jota ei vielä ole olemassa. Luo `my_cv.cls` samaan hakemistoon kuin `cv.tex` ja kirjoita siihen seuraava rivi:

```latex
\LoadClass{article}
```

Jos käännät asiakirjasi nyt, sinun pitäisi nähdä otsikot oletusarvoisessa article-tyylissä.

Mitä täällä siis tapahtui? Luokkatiedostojen täytyy sisältää paljon muotoilutietoa ja sisäisiä asetuksia, jotta LaTeX toimisi oikein, mutta emme halua syöttää kaikkea käsin. Sen sijaan voimme perustaa uuden luokkatiedostomme `article.cls`. Käytämme `\LoadClass` sisällyttää `article.cls` ja lataamme siitä kaikki siinä määritellyt komennot ja tyylit. Huomaa, että emme käytä tavallista `\documentclass` komentoa sisällyttää `article.cls` koska `\documentclass` sitä tulisi kutsua vain kerran aivan LaTeX-asiakirjasi alussa.

### Luokan ilmoittaminen LaTeXille

Kaikkien luokkatiedostojen tulisi alkaa kahdella seuraavanlaisella rivillä, jotka sinun tulisi lisätä `my_cv.cls` nyt:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 My custom CV class]
```

Se `\NeedsTeXFormat` komennot kertovat kääntäjälle, mitä LaTeX-versiota paketti käyttää. LaTeXin nykyinen versio on LaTeX2e, ja lähes kaikki jakelut käyttävät tätä.

Se `\ProvidesClass` komento antaa kääntäjälle joitakin tietoja paketistasi. Ensimmäisen argumentin tulisi vastata luokkatiedostosi tiedostonimeä ja kertoa LaTeXille, mitä pakettia se käyttää. Toinen argumentti on valinnainen ja antaa luokkasi kuvauksen, joka näkyy lokissa ja muualla. Kuvauksen on alettava päivämäärällä täsmälleen yllä olevan muotoisena, ja sen tulisi olla sen hetken päivämäärä, jolloin pakettia muutettiin viimeksi. Tätä voidaan käyttää luokkaa sisällytettäessä tarkistamaan, että käytössäsi on riittävän uusi versio. Esimerkiksi jos sisällytät sen muodossa `\documentclass{my_cv}[2012/01/01]` päivämäärällä, joka on uudempi kuin luokkakuvauksessa oleva päivämäärä, näytetään varoitus, jossa sanotaan, että luokka on vanhentunut.

### Osio-otsikoiden muokkaaminen

Tavalliset article-tyylin osio-otsikot eivät oikein sovi CV:hen, joten haluaisimme korvata ne siistimmällä vaihtoehdolla. Tätä varten voimme määritellä uudelleen `\section` komennon tuottamaan mukautetun otsikon.

Onneksi on jo olemassa erinomainen paketti nimeltä `titlesec` joka tarjoaa helpon tavan mukauttaa otsikkotyylejämme. Lisää tämä luokkatiedostoosi näin:

```latex
\RequirePackage{titlesec}
```

Huomaa, että meidän tulisi käyttää `\RequirePackage` tavallisen `\usepackage` komennon sijaan, koska olemme luokkatiedostossa. The `\RequirePackage` komento varmistaa, että kukin paketti ladataan vain kerran, vaikka sitä kutsuttaisiin useita kertoja eri style- ja class-tiedostoista.

Se `titlesec` paketti tarjoaa komennon `\titleformat` jonka avulla voimme mukauttaa osio-otsikoitamme. Lisää seuraava `my_cv.cls` otsikon muodon mukauttamiseksi:

```latex
\titleformat{\section}         % Muokkaa \section-komentoa
  {\Large\scshape\raggedright} % Tee \section-otsikoista suuret (\Large),
                               % pienaakkosilla (\scshape) ja vasemmalle tasatut (\raggedright)
  {}{0em}                      % Voidaan käyttää antamaan etuliite kaikille osioille, kuten 'Osa ...'
  {}                           % Voidaan käyttää koodin lisäämiseen ennen otsikkoa
  [\titlerule]                 % Lisää vaakaviivan otsikon jälkeen
```

Jos käännämme `cv.tex` nyt, näemme, että meillä on joitakin pääotsikoita, jotka sopivat paremmin CV:hen:

![Screenshot1.png](/files/e98af8d6bad9c7cf24782c6583a33e11cbe3feae)

Voimme mukauttaa myös \subsection-otsikoita:

```latex
\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
```

Alaosiot ovat nyt samassa tyylissä:

![Screenshot2.png](/files/41ba4e15ac1976ebc18545b23f0af777fc432848)

Kannattaa kokeilla joitakin käytettävissä olevia muotoiluasetuksia nähdäksesi, mistä pidät:

* `\bfseries`, `\itshape`: tee otsikosta lihavoitu tai kursivoitu;
* `\scshape`: pienaakkoset;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: aseta fonttikoko;
* `\rmfamily`, `\sffamily`, `\ttfamily`: aseta fonttityypiksi vastaavasti päätteellinen, päätteetön tai kirjoituskonekirjasin.

### Päivämäärien lisääminen osio-otsikoihin

Voimme määritellä uusia komentoja, joiden avulla voimme lisätä päivämäärät osio-otsikoihimme. Lisää seuraava luokkatiedostoosi:

```latex
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

Tämä määrittelee kaksi uutta komentoa `\datedsection` ja `\datedsubsection` jotka ottavat kaksi argumenttia: osion nimen kuten aiemmin, ja päivämäärän, joka ladotaan sivun oikeaan reunaan.  `\hfill` komento käskee LaTeXiä täyttämään mahdollisimman paljon tilaa ja siirtää siten toisen argumentin (`#2`) sivun oikealle puolelle. Muokkaa `cv.tex` käyttämään näitä komentoja:

```latex
\documentclass{my_cv}

\begin{document}

\section{Education}
\datedsubsection{University of Nowhere}{2004--2008}
Opiskelin University of Nowheressa vuosina 2004–2008.

\section{Work}
\datedsubsection{ABC Limited.}{2008--Now}
Olen työskennellyt ABC Limitedissä vuodesta 2008 lähtien.

\end{document} ​
```

CV:ssämme on nyt päivämäärät:

![Screenshot3.png](/files/48cc42b0a72d8f9d314cb227e748e08d4f95e27c)

### Johtopäätökset

Siinä kaikki tämän oppaan ensimmäisestä osasta, mutta toivottavasti käsittelin riittävästi, jotta voit jatkaa ja alkaa tehdä hyödyllisiä luokkatiedostoja. En ole tarvinnut montaa komentoa luodakseni jo nyt varsin kelvollisen CV-mallin, ja olemme vasta raapaisseet pintaa siitä, mitä muuta voisimme mukauttaa. Tämän oppaan seuraavissa osissa puhun siitä, miten luokallesi annetaan asetuksia vaihtoehtojen välityksellä, miten luodaan tyylikäs otsikko ja miten asetetaan joitakin yleisiä asetteluasetuksia.

Kiitos lukemisesta!

Huomaa, että olen itse suhteellisen uusi luokkatiedostojen luomisessa, joten jos joku osaa osoittaa parempia tapoja tehdä tässä mainitsemiani asioita, kertokaa minulle.

Osa 1 | [Osa 2](/latex/fi/lisaa-aiheita/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)


---

# 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/lisaa-aiheita/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.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.
