diff options
author | Norbert Preining <norbert@preining.info> | 2021-12-28 03:01:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-12-28 03:01:00 +0000 |
commit | ecdf859b6ce481abfd530425dcf6f0f764bd0001 (patch) | |
tree | 13bc161dc046876ac6c92fce5f9f5034ba9aa573 /info/kaytannollista-latexia | |
parent | 790995b7e79697514364450bf9c04f1b8d500838 (diff) |
CTAN sync 202112280300
Diffstat (limited to 'info/kaytannollista-latexia')
-rw-r--r-- | info/kaytannollista-latexia/README.md | 153 | ||||
-rw-r--r-- | info/kaytannollista-latexia/kaytannollista-latexia.pdf | bin | 0 -> 875011 bytes | |||
-rw-r--r-- | info/kaytannollista-latexia/kaytannollista-latexia.tex | 504 | ||||
-rw-r--r-- | info/kaytannollista-latexia/kirjallisuutta.bib | 78 | ||||
-rw-r--r-- | info/kaytannollista-latexia/luku-asetukset.tex | 2952 | ||||
-rw-r--r-- | info/kaytannollista-latexia/luku-erikoiset.tex | 589 | ||||
-rw-r--r-- | info/kaytannollista-latexia/luku-esipuhe.tex | 47 | ||||
-rw-r--r-- | info/kaytannollista-latexia/luku-merkintakieli.tex | 2235 | ||||
-rw-r--r-- | info/kaytannollista-latexia/luku-rakenne.tex | 7903 | ||||
-rw-r--r-- | info/kaytannollista-latexia/luku-valmistautuminen.tex | 430 | ||||
-rw-r--r-- | info/kaytannollista-latexia/tavutusvihjeet.tex | 796 | ||||
-rw-r--r-- | info/kaytannollista-latexia/versio.tex | 1 |
12 files changed, 15688 insertions, 0 deletions
diff --git a/info/kaytannollista-latexia/README.md b/info/kaytannollista-latexia/README.md new file mode 100644 index 0000000000..37a7b60035 --- /dev/null +++ b/info/kaytannollista-latexia/README.md @@ -0,0 +1,153 @@ +Käytännöllistä Latexia +====================== + +**Latex-ladontajärjestelmän opas** + +English summary: *Käytännöllistä Latexia* is a Finnish practical manual +for [Latex](https://en.wikipedia.org/wiki/LaTeX) typesetting system. The +manual covers most of the topics that a typical document author needs. +So it can be useful guide for beginners as well as reference manual for +advanced users. + + +Esittely +-------- + +*Käytännöllistä Latexia* on nykyaikainen suomenkielinen opas +[Latex](https://fi.wikipedia.org/wiki/LaTeX)-ladontajärjestelmän +käyttäjälle. Se auttaa alkuun pääsyssä ja esittelee merkintäkielen +perusasiat. Opas sisältää käytännönläheiset ohjeet esimerkiksi +dokumentin sivu-, fontti- ja kieliasetusten tekemiseen. Se sisältää +teknisiä ohjeita ja typografisia vinkkejä tavallisimpiin +tekstidokumentin kirjoittamisen tarpeisiin. Oppaan avulla pitäisi +pärjätä niin hyvin, että makropakettien ohjeita tarvitsee lukea vain +harvoin. + +Edellisessä kappaleessa mainostettu nykyaikaisuus tarkoittaa esimerkiksi +sitä, että tässä oppaassa keskitytään Open Type -fontteihin, +Unicode-merkistöön ja PDF-tiedostoihin. Latexin vanha fonttitekniikka +sivuutetaan, eikä merkistörajoitusten kanssa enää kamppailla. Oppaan +ohjeet siis sopivat nykyaikaiselle tietokoneen käyttäjälle. + + +Saatavuus +--------- + +Oppaasta on saatavilla valmiiksi ladottu PDF-tiedosto Githubissa +[julkaisusivulla](https://github.com/tlikonen/latex-opas/releases). Myös +Latex-lähdetiedostot ovat saatavilla Githubissa osoitteessa +<<https://github.com/tlikonen/latex-opas>>. + + +Versionumerointi +---------------- + +Oppaan versionumerot tulevat julkaisuajan vuosiluvusta sekä +mahdollisesti kuukaudesta ja päivästä. Vuoden ensimmäinen tai ainoa +julkaisu saa versionumeronsa pelkästä vuosiluvusta, esimerkiksi versio +”2022”. Jos samana vuonna julkaistaan oppaasta uusi versio, lisätään +versionumeroon kyseisen kuukauden numero, esimerkiksi versio ”2022.4” +(huhtikuu 2022). Saman kuun aikana toinen julkaisu saa versionumeroonsa +vielä päivänkin numeron, esimerkiksi ”2022.4.15” (15. huhtikuuta 2022). + + +Tekijänoikeus ja lisenssi +------------------------- + +Tekijä: Teemu Likonen <<tlikonen@iki.fi>> + +OpenPGP-avain: [6965F03973F0D4CA22B9410F0F2CAE0E07608462][PGP] + +[PGP]: http://www.iki.fi/tlikonen/pgp-key.asc + +Lisenssi: *Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen* (CC +BY-SA 4.0). Lisenssi antaa sinulle luvan kopioida ja levittää tätä +teosta tai sen osia missä tahansa välineessä ja muodossa. Sisältöä saa +muokata, ja sen pohjalta saa luoda uusia teoksia mihin tahansa +tarkoitukseen, myös kaupallisesti. Ehdot ovat seuraavat: + + - Sinun on mainittava tekijä(t) asianmukaisesti, tarjottava linkki + [lisenssin koko tekstiin][CC] sekä mainittava, mikäli olet tehnyt + muutoksia. + - Jos muokkaat teosta tai luot sen pohjalta uuden teoksen, sinun on + jaettava muutoksiasi samalla lisenssillä kuin alkuperäistä teosta. + - Et saa asettaa sellaisia oikeudellisia ehtoja tai teknisiä estoja, + jotka estävät muita tekemästä asioita, jotka tämä lisenssi sallii. + +[CC]: https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + + +Kääntäminen ja asentaminen +-------------------------- + +Oppaan Latex-lähdetiedostojen kääntäminen eli latominen PDF-dokumentiksi +vaatii useita Latexin makropaketteja ja pari fonttia. Latexin +jakelukokonaisuus [Texlive](https://tug.org/texlive/) sisältää kaiken +tarvittavan. Esimerkiksi [Debian](https://www.debian.org) Linux +-käyttöjärjestelmässä asennuspaketti `texlive-full` asentaa koko +Texliven. + +Oppaan voi latoa julkaisupaketin ja asennettujen tiedostojen avulla tai +versionhallinnan tiedostojen pohjalta. + + +### Julkaisupaketti + +Oppaan julkaisupaketin lähdetiedostot voi latoa PDF-tiedostoksi +komennoilla `lualatex` ja `biber`. Komennot täytyy suorittaa seuraavassa +järjestyksessä: + + lualatex -shell-escape kaytannollista-latexia + biber kaytannollista-latexia + lualatex -shell-escape kaytannollista-latexia + lualatex -shell-escape kaytannollista-latexia + + +### Versionhallinta (Git) + +Git-versionhallintajärjestelmässä säilytettävä opas sisältää tiedoston +`Makefile`, joka puolestaan sisältää kääntämisohjeet `make`-komennolle. +PDF-tiedoston saa ladottua yhdellä komennolla: + + make + +Kääntämisessä syntyneen PDF-tiedoston voi siirtää haluamaansa paikkaan +käyttöä varten. Oppaan voi myös asentaa Texin standardiin +hakemistorakenteeseen, josta muut ohjelmat voivat sen löytää. Se tehdään +seuraavalla komennolla: + + make install + +Edellisen asennuskomennon voi suorittaa ilman erillistä +kääntämisvaihettakin, koska ennen asentamista se varmistaa, että +tarvittavat tiedostot on käännetty. Asennuskohde on käyttäjän +kotihakemistossa eli polussa `$HOME/texmf`. Kohteeseen asentuu paitsi +oppaan PDF-tiedosto myös Latexin lähdetiedostot ja tämä käsillä oleva +`README.md`. Asentamisen jälkeen esimerkiksi Texliveen sisältyvä komento +`texdoc` osaa löytää ja avata oppaan, kun komennolle antaa argumentiksi +joitakin oppaan nimen kirjaimia, esimerkiksi `texdoc kaytannoll`. + +Asennus poistetaan komennolla `make uninstall`. Komento tosin säilyttää +polun `$HOME/texmf`, koska siellä voi edelleen sijaita muita Texiin ja +Latexiin liittyviä tiedostoja. + +Kääntämishakemiston voi siivota alla olevilla komennoilla. Ensin +mainittu komento poistaa useimmat väliaikaistiedostot mutta säilyttää +oppaan PDF:n ja muut julkaisuun vaadittavat tiedostot. Jälkimmäinen +poistaa kaikki syntyneet tiedostot. + + make clean + make distclean + + +Puutteita ja suunnitelmia +------------------------- + + - Lisätään Muuta tekniikkaa -luku, jonka sisällöksi esimerkiksi: + päiväykset ja kellonajat (datetime2), textpos-paketti, omien + makropakettien ja dokumenttiluokkien tekeminen. + - Marginaalihuomautusluvussa voisi mainita `\marginpar`-komennon + puutteet ja vaihtoehdon `marginnote`. + - Mahdollisesti käsitellään wrapfig-paketti. + - Uusi `fi-x-school`-tavutuskaava. + - Mittojen käsittelyn yhteydessä voisi käsitellä calc-paketin. diff --git a/info/kaytannollista-latexia/kaytannollista-latexia.pdf b/info/kaytannollista-latexia/kaytannollista-latexia.pdf Binary files differnew file mode 100644 index 0000000000..aa204101a9 --- /dev/null +++ b/info/kaytannollista-latexia/kaytannollista-latexia.pdf diff --git a/info/kaytannollista-latexia/kaytannollista-latexia.tex b/info/kaytannollista-latexia/kaytannollista-latexia.tex new file mode 100644 index 0000000000..f983d70bd0 --- /dev/null +++ b/info/kaytannollista-latexia/kaytannollista-latexia.tex @@ -0,0 +1,504 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\documentclass[fleqn]{book} +\usepackage{geometry} +\usepackage{fontspec} +\usepackage{polyglossia} +\usepackage{amsmath} +\usepackage[math-style=ISO]{unicode-math} +\usepackage[finnish,showseconds=false]{datetime2} +\usepackage{ragged2e} +\usepackage[hang,bottom,norule]{footmisc} +\usepackage[clearempty]{titlesec} +\usepackage{titletoc} +\usepackage{graphicx} +\usepackage{xcolor} +\usepackage{floatrow} +\usepackage{caption} +\usepackage{fancyvrb} +\usepackage{tabularx} +\usepackage{booktabs} +\usepackage{multirow} +\usepackage[normalem]{ulem} +\usepackage[makeindex, splitindex]{indextools} +% \usepackage{ifthen} +\usepackage{chngcntr} +\usepackage{realscripts} +\usepackage{csquotes} +\usepackage[style=authoryear, dashed=false, maxbibnames=99]{biblatex} +\usepackage{tikz} +\usepackage{totcount} +\usepackage{nowidow} \setnowidow \setnoclub +%\usepackage{showhyphens} +\usepackage{hanging} +\usepackage{lettrine} +\usepackage{multicol} +\usepackage{textpos} +\usepackage[unicode,hyperfootnotes=false]{hyperref} +\usepackage[shortcuts]{extdash} + +\geometry{ a5paper, twoside, hscale=.72, vscale=.77, hmarginratio=17:28, + vmarginratio=20:32, footskip=12mm, footnotesep=13bp, + marginparwidth=50bp, marginparsep=10bp } + +% \geometry{ papersize={158mm, 220mm}, layout=a5paper, layoutoffset={5mm, +% 5mm}, showcrop } + +\urlstyle{sf} +\newcommand{\kulmaurl}[1] +{\href{#1}{\guilsinglleft\nolinkurl{#1}\guilsinglright}} +\newcommand{\kulmasp}[1] +{\href{mailto:#1}{\guilsinglleft\nolinkurl{#1}\guilsinglright}} + +\input{versio} + +\newcommand{\otsikko}{Käytännöllistä Latexia} +\newcommand{\alaotsikko}{Latex-ladontajärjestelmän opas} +\newcommand{\tekija}{Teemu Likonen} +\newcommand{\tekijat}{Teemu Likonen \kulmasp{tlikonen@iki.fi}} + +\hypersetup{ hidelinks, bookmarksnumbered, + pdfinfo={ + Title={\otsikko}, + Subject={\alaotsikko, versio \versio}, + Author={\tekija}, + Keywords={Latex, tekstinvalmistus, ladonta, tekstinkäsittely, + oppaat, atk-ohjelmat, kirjoittaminen, typografia} + } +} + +\setdefaultlanguage{finnish} +\setotherlanguage{english} +\newcommand{\englishfont}{} +\newcommand{\englanti}[1]{\textenglish{#1}} +\newcommand{\englantik}[1]{\textenglish{\emph{#1}}} + +\defaultfontfeatures[\ttfamily]{Ligatures={TeXReset, NoCommon}} +\usepackage[oldstyle,semibold,ScaleSF=MatchLowercase,StretchTT=.8] +{libertinus-otf} +\newcommand{\erikoisfontti}{\rmfamily} +\newcommand{\viivastofontti}{\rmfamily} + +\renewcommand{\scriptsize}{\fontsize{7bp}{7bp}\selectfont} +\renewcommand{\footnotesize}{\fontsize{8bp}{9bp}\selectfont} +\renewcommand{\small}{\fontsize{9bp}{10bp}\selectfont} +\renewcommand{\normalsize}{\fontsize{10.5bp}{13bp}\selectfont} +\renewcommand{\large}{\fontsize{13bp}{15bp}\selectfont} +\renewcommand{\Large}{\fontsize{16bp}{18bp}\selectfont} +\renewcommand{\LARGE}{\fontsize{20bp}{22bp}\selectfont} +\renewcommand{\huge}{\fontsize{24bp}{26bp}\selectfont} +\linespread{1} +\normalsize + +\newcommand{\gemenanum}{\addfontfeatures{Numbers=Lowercase}} +\newcommand{\versaalinum}{\addfontfeatures{Numbers=Uppercase}} +\newcommand{\murtoluku}[2]{{\addfontfeatures{Fractions=On}#1/#2}} + +\setlength{\emergencystretch}{1em} + +\setlength{\parindent}{1em} +\setlength{\bibhang}{\parindent} +\setlength{\bibitemsep}{.5ex plus .1ex minus .1ex} +\newlength{\sisennys}\setlength{\sisennys}{1.8em} +\setlength{\parskip}{0em} +\setlength{\footnotemargin}{.8em} +\setlength{\floatsep}{2ex plus 1ex minus .5ex} +\setlength{\textfloatsep}{4ex plus 1ex minus .5ex} +\setlength{\multicolsep}{0bp} + +\renewcommand{\topfraction}{.75} +\renewcommand{\floatpagefraction}{.7} + +\addbibresource{kirjallisuutta.bib} +\nocite{*} +\renewcommand{\bibfont}{\RaggedRight} + +\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space} +\DeclareDelimFormat[bib]{multinamedelim}{\space--\space} +\DeclareDelimFormat[bib]{finalnamedelim}{\space--\space} +\DeclareDelimFormat[textcite,parencite]{finalnamedelim}{\space\&\space} +\DeclareFieldFormat{url}{Saatavissa: \kulmaurl{#1}} +\DeclareNameAlias{sortname}{family-given} +\DeclareNameAlias{default}{family-given} +\DefineBibliographyStrings{finnish}{andothers = {ym.}} + +\DeclareNewFloatType{esimerkki}{name=Esimerkki, within=chapter} + +\indexsetup{level=\section*, toclevel=section, noclearpage} + +\makeindex[name=paketit, title={Paketit}, columns=2, columnsep=1em] +\makeindex[name=komennot, title={Komennot}, columns=2, columnsep=1em] +\makeindex[name=ymparistot, title={Ympäristöt}, columns=2, columnsep=1em] +\makeindex[name=mitat, title={Mitat}, columns=2, columnsep=1em] +\makeindex[name=laskurit, title={Laskurit}, columns=2, columnsep=1em] +\makeindex[name=dokumenttiluokat, title={Dokumenttiluokat}, columns=2, +columnsep=1em] + +\renewcommand{\theFancyVerbLine} +{\sffamily\versaalinum\fontsize{6bp}{7bp}\selectfont\arabic{FancyVerbLine}} + +\DefineVerbatimEnvironment{koodilohko}{Verbatim}{ fontsize=\small, + gobble=0, frame=single, framesep=.4em, numbers=left, numbersep=.3em, + xleftmargin=0em, xrightmargin=0mm, baselinestretch=1 } + +\DefineVerbatimEnvironment{koodilohkosis}{Verbatim}{ + fontsize=\small, gobble=0, frame=none, numbers=none, + numbersep=0em, xleftmargin=\sisennys, xrightmargin=0mm, + baselinestretch=1, samepage=true } + +\newcommand{\seurausnuoli}{\textcolor[gray]{.5}{⇒}} + +\newenvironment{tulos}{% + \begin{textblock*}{1cm}(-2em,3bp) + \small\seurausnuoli + \end{textblock*} + \begin{minipage}{\linewidth} + \linespread{1}\erikoisfontti\small + }{% + \end{minipage} + \par\addvspace{\baselineskip} +} + +\newenvironment{tulossis}{% + \begin{list}{}{ + \setlength{\leftmargin}{\sisennys} + \erikoisfontti\small + }\item[\seurausnuoli]}{% + \end{list}} + +\floatsetup{ style=plain, font={small}, justification=raggedright, + margins=raggedright, captionskip=0ex, capposition=bottom } + +\floatsetup[table]{ style=plain, captionskip=2ex } +\floatsetup[figure]{ style=plain, captionskip=2ex } + +\captionsetup{ font={small, sf}, labelfont={bf}, textfont={}, + textformat=period, margin=.5em, justification=RaggedRight, + singlelinecheck=off } + +\newcommand{\leijutlk}[2]{% + \begin{table*} + \floatbox{table}{\versaalinum #1}{#2} + \end{table*}} + +\newcommand{\leijukuva}[2]{% + \begin{figure*} + \floatbox{figure}{#1}{#2} + \end{figure*}} + +\newenvironment{nluetelma}{% + \begin{list}{\arabic{enumi}.}{ + \usecounter{enumi} + \setlength{\leftmargin}{1.3em} + \setlength{\labelsep}{.3em} + \setlength{\itemsep}{.2ex plus .2ex} + \setlength{\parsep}{0em} + \setlength{\topsep}{.2ex plus .2ex} + \RaggedRight + }}{\end{list}} + +\newenvironment{maaritelma}[1]{% + \begin{list}{}{ + \setlength{\leftmargin}{\parindent} + \setlength{\labelwidth}{\parindent} + \setlength{\listparindent}{\parindent} + \setlength{\labelsep}{1em} + \setlength{\itemindent}{1em} + \setlength{\itemsep}{.2ex plus .2ex} + \setlength{\parsep}{0em} + \setlength{\topsep}{.2ex plus .2ex} + \renewcommand{\makelabel}[1]{#1} + }}{\end{list}} + +\newcolumntype{L}{>{\RaggedRight\arraybackslash}X} + +\definecolor{tavu}{rgb}{1,0,0} +\definecolor{apuviiva}{gray}{.4} +\definecolor{mittanuoli}{rgb}{1,0,0} + +\definecolor{luokka}{rgb}{0,.3,.3} +\definecolor{komento}{rgb}{0,0,.5} +\definecolor{mkomento}{rgb}{.4,0,.4} +\definecolor{ymparisto}{rgb}{0,.3,0} +\definecolor{mymparisto}{rgb}{.4,0,.4} +\definecolor{mitta}{rgb}{.4,0,0} +\definecolor{laskuri}{rgb}{.4,0,.4} +\definecolor{paketti}{rgb}{.35,.35,0} + +\newcommand{\keno}{\textbackslash} +\newcommand{\marginaali}[1]{\marginpar{\RaggedRight\footnotesize #1}} + +\newcommand{\koodi}[1]{\texttt{#1}} +% \newcommand{\koodimargin}[1]{\marginaali{\koodi{#1}}} +\newcommand{\koodimargin}[1]{} +\newcommand{\koodim}[1]{\koodi{#1}\koodimargin{#1}} +\newcommand{\koodil}[1]{\enquote{\texttt{#1}}} + +\newcommand{\luokkax}[1]{\textcolor{luokka}{\textsf{#1}}} +\newcommand{\luokkai}[1]{\index[dokumenttiluokat]{#1@\luokkax{#1}}} +\newcommand{\luokka}[1]{\luokkax{#1}\luokkai{#1}} +% \newcommand{\luokkamargin}[1]{\marginaali{\luokkax{#1}}} +\newcommand{\luokkamargin}[1]{} +\newcommand{\luokkam}[1]{\luokka{#1}\luokkamargin{#1}} +\newcommand{\luokkactan}[1]{\luokka{#1}\avctan{#1}} + +\newcommand{\komentox}[1]{\textcolor{komento}{\koodi{\keno #1}}} +\newcommand{\komentoi}[1]{\index[komennot]{#1@\komentox{#1}}} +\newcommand{\komento}[1]{\komentox{#1}\komentoi{#1}} +\newcommand{\komentojatko}[1]{\katk\textcolor{komento}{\koodi{#1}}} +\newcommand{\komentoarg}[1]{\komentojatko{\{#1\}}} +\newcommand{\komentoargv}[1]{\komentojatko{[#1]}} +% \newcommand{\komentomargin}[1]{\marginaali{\komentox{#1}}} +\newcommand{\komentomargin}[1]{} +\newcommand{\komentom}[1]{\komento{#1}\komentomargin{#1}} + +\newcommand{\mkomentox}[1]{\textcolor{mkomento}{\koodi{\keno #1}}} +\newcommand{\mkomentoi}[1]{\index[komennot]{#1@\mkomentox{#1}}} +\newcommand{\mkomento}[1]{\mkomentox{#1}\mkomentoi{#1}} +\newcommand{\mkomentojatko}[1]{\katk\textcolor{mkomento}{\koodi{#1}}} +\newcommand{\mkomentoarg}[1]{\mkomentojatko{\{#1\}}} +\newcommand{\mkomentoargv}[1]{\mkomentojatko{[#1]}} + +\newcommand{\ymparistox}[1]{\textcolor{ymparisto}{\koodi{#1}}} +\newcommand{\ymparistoi}[1]{\index[ymparistot]{#1@\ymparistox{#1}}} +\newcommand{\ymparisto}[1]{\ymparistox{#1}\ymparistoi{#1}} +% \newcommand{\ymparistomargin}[1]{\marginaali{\ymparistox{#1}}} +\newcommand{\ymparistomargin}[1]{} +\newcommand{\ymparistom}[1]{\ymparisto{#1}\ymparistomargin{#1}} + +\newcommand{\mymparistox}[1]{\textcolor{mymparisto}{\koodi{#1}}} +\newcommand{\mymparistoi}[1]{\index[ymparistot]{#1@\mymparistox{#1}}} +\newcommand{\mymparisto}[1]{\mymparistox{#1}\mymparistoi{#1}} + +\newcommand{\mittax}[1]{\textcolor{mitta}{\koodi{\keno #1}}} +\newcommand{\mittai}[1]{\index[mitat]{#1@\mittax{#1}}} +\newcommand{\mitta}[1]{\mittax{#1}\mittai{#1}} +% \newcommand{\mittamargin}[1]{\marginaali{\mittax{#1}}} +\newcommand{\mittamargin}[1]{} +\newcommand{\mittam}[1]{\mitta{#1}\mittamargin{#1}} + +\newcommand{\laskurix}[1]{\textcolor{laskuri}{\koodi{#1}}} +\newcommand{\laskurii}[1]{\index[laskurit]{#1@\laskurix{#1}}} +\newcommand{\laskuri}[1]{\laskurix{#1}\laskurii{#1}} +% \newcommand{\laskurimargin}[1]{\marginaali{\laskurix{#1}}} +\newcommand{\laskurimargin}[1]{} +\newcommand{\laskurim}[1]{\laskuri{#1}\laskurimargin{#1}} + +\newcommand{\pakettix}[1]{\textcolor{paketti}{\textsf{#1}}} +\newcommand{\pakettii}[1]{\index[paketit]{#1@\pakettix{#1}}} +\newcommand{\paketti}[1]{\pakettix{#1}\pakettii{#1}} +% \newcommand{\pakettimargin}[1]{\marginaali{\pakettix{#1}}} +\newcommand{\pakettimargin}[1]{} +\newcommand{\pakettim}[1]{\paketti{#1}\pakettimargin{#1}} +\newcommand{\pakettictan}[1]{\paketti{#1}\avctan{#1}} + +\newcommand{\tavukohta}{\textcolor{tavu}{\raisebox{-.2ex}{\rule{.6bp}{2ex}}}} +\newcommand{\uctunnus}[1]{\textsc{\englanti{#1}}} +\newcommand{\avctan}[1]{\footnote{\url{https://www.ctan.org/pkg/#1}}} + +\newcommand{\ots}[1]{{\sffamily\bfseries #1}} +\newcommand{\otsrivi}[1]{{\sffamily #1}} +\newcommand{\katk}{\discretionary{}{}{}} + +\addto{\captionsfinnish}{ + \renewcommand{\contentsname}{Sisällys} +} + +\newcommand{\otsikkotyyli}{ \raggedright \sffamily \bfseries } + +\titleformat{\chapter} +[display] +{\Large\bfseries} +{\chaptertitlename\hspace{.3em}\thechapter} +{1.5ex} +{\otsikkotyyli\huge}[] +\titlespacing*{\chapter}{0em}{*13}{*8} + +\titleformat{\section} +{\otsikkotyyli\large} +{\thesection} +{.8em} +{}[] +\titlespacing*{\section}{0pt}{*4}{*2} + +\titleformat{\subsection} +{\otsikkotyyli\normalsize} +{\thesubsection} +{.8em} +{}[] +\titlespacing*{\subsection}{0bp}{*2}{*1} + +\titleformat{\subsubsection} +{\otsikkotyyli\mdseries\scshape\normalsize} +{\thesubsubsection} +{.8em} +{}[] +\titlespacing*{\subsubsection}{0bp}{*2}{*1} + +\titlecontents{chapter} +[8mm] +{\addvspace{1.5ex}\rmfamily\bfseries\large} +{\contentslabel{8mm}} +{\hspace{-8mm}} +{\small\titlerule[0bp]\contentspage} +[\addvspace{.5ex}] + +\titlecontents{section} +[8mm] +{\addvspace{.5ex}\rmfamily\normalsize} +{\contentslabel{8mm}} +{} +{~\small\titlerule*[3mm]{.}\contentspage} +[\addvspace{.2ex}] + +\titlecontents{subsection} +[18mm] +{\rmfamily\small} +{\contentslabel{10mm}} +{} +{~\small\titlerule*[3mm]{.}\contentspage} +[] + +\titlecontents*{subsubsection} +[18mm] +{\rmfamily\footnotesize} +{\thecontentslabel. } +{} +{ (\thecontentspage)} +[ -- ][.] + +\regtotcounter{chapter} + +\begin{document} +\rmfamily % Pienversaali ei toimi leipätekstissä ilman tätä. + +\input{tavutusvihjeet} + +\pagestyle{empty} + +\newgeometry{top=1cm, bottom=1.8cm, hmargin=1.3cm} + +% \newgeometry{ top=1cm, bottom=1.8cm, hmargin=1.3cm, papersize={158mm, +% 220mm}, layout=a5paper, layoutoffset={5mm, 5mm}, showcrop } + +\pdfbookmark[0]{Nimiö}{sivu/nimiö} +\DTMsetstyle{finnish-numeric} + +\vspace*{.2\textheight} + +{ + + \setlength{\parindent}{0pt} + + \fontsize{16bp}{16bp}\rmfamily \tekija + + \fontsize{52bp}{52bp}\sffamily\bfseries% + \hspace{-3bp}% + {\addfontfeatures{LetterSpace=-4} Käytännöllistä} + + \fontsize{65bp}{65bp}\selectfont% + \hspace{-5bp}% + \LaTeX{}ia + +} + +\vfill + +{ + + \raggedleft + \alaotsikko \\ + Versio \versio + +} + +\clearpage +\restoregeometry +\pdfbookmark[0]{Tekijänoikeus}{sivu/tekijänoikeus} + +\null\vfill + +{ + \setlength{\parindent}{0em} + \setlength{\parskip}{1.2ex plus .1ex} + + \section*{\otsikko} + + \textsc{Tekijä:} \tekijat + + \textsc{Versio:} \versio + + \textsc{Päiväys:} \DTMtoday{} kello \DTMcurrenttime{} (ensijulkaisu: + 26.12.2021) + + \textsc{Saatavissa:} \url{https://github.com/tlikonen/latex-opas} + + \textsc{Lisenssi:} \emph{Creative Commons Nimeä-Jaa\-Samoin 4.0 + Kansainvälinen} (\textsc{cc by-sa} 4.0). Lisenssi antaa sinulle + luvan kopioida ja levittää tätä teosta tai sen osia missä tahansa + välineessä ja muodossa. Sisältöä saa muokata, ja sen pohjalta saa + luoda uusia teoksia mihin tahansa tarkoitukseen, myös kaupallisesti. + Ehdot ovat seuraavat: + + \begin{list}{\textbullet}{ + \setlength{\leftmargin}{1em} + \setlength{\topsep}{0ex} + \setlength{\partopsep}{0ex} + \setlength{\itemsep}{0ex} + } + \item Sinun on mainittava tekijä(t) asianmukaisesti, tarjottava linkki + lisenssin koko tekstiin (ks. alla) sekä mainittava, mikäli olet + tehnyt muutoksia. + \item Jos muokkaat teosta tai luot sen pohjalta uuden teoksen, sinun on + jaettava muutoksiasi samalla lisenssillä kuin alkuperäistä teosta. + \item Et saa asettaa sellaisia oikeudellisia ehtoja tai teknisiä + estoja, jotka estävät muita tekemästä asioita, jotka tämä lisenssi + sallii. + \end{list} + + Lisenssin koko teksti: \\ + \url{https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi} + +} + +\cleardoublepage + +\pagestyle{plain} +\pdfbookmark[0]{Sisällys}{sivu/sisällys} +\setcounter{tocdepth}{3} +\tableofcontents + +\setcounter{secnumdepth}{-1} +\input{luku-esipuhe} +\setcounter{secnumdepth}{2} +\input{luku-valmistautuminen} +\input{luku-merkintakieli} +\input{luku-asetukset} +\input{luku-rakenne} +\input{luku-erikoiset} +\setcounter{secnumdepth}{-1} + +\chapter{Kirjallisuutta} +\label{luku/kirjallisuutta} + +\printbibliography[heading=none] + +\chapter{Asiahakemistot} +\label{luku/asiahakemisto} + +\printindex[dokumenttiluokat] +\indexprologue{\noindent Tekstitilan ja matematiikkatilan komennot on + ladottu eri väreillä: \komentox{teksti} ja \mkomentox{matematiikka}.} +\printindex[komennot] +\printindex[laskurit] +\printindex[mitat] +\printindex[paketit] +\newpage +\indexprologue{\noindent Tekstitilan ja matematiikkatilan ympäristöt on + ladottu eri väreillä: \ymparistox{teksti} ja + \mymparistox{matematiikka}.} +\printindex[ymparistot] + +\end{document} diff --git a/info/kaytannollista-latexia/kirjallisuutta.bib b/info/kaytannollista-latexia/kirjallisuutta.bib new file mode 100644 index 0000000000..0b193a5841 --- /dev/null +++ b/info/kaytannollista-latexia/kirjallisuutta.bib @@ -0,0 +1,78 @@ +@book{unoffref, + author = {Berry, Karl and Gilmore, Stephen and Martinsen, Torsten}, + title = {Latex 2e: An unofficial reference manual}, + note = {October 2018}, + date = 2018, + url = {https://latexref.xyz/}, + langid = {british} +} + +@book{kirjtyypit, + author = {Itkonen, Markus}, + title = {Kirjaintyypit ja tyyli}, + date = 2015, + publisher = {\textsc{rps}-yhtiöt} +} + +@book{typokk, + author = {Itkonen, Markus}, + title = {Typo\-grafian käsikirja}, + edition = 5, + date = 2019, + origdate = 2003, + publisher = {Typoteekki. Graafinen suunnittelu Markus Itkonen Oy} +} + +@book{lyhyt2e, + author = {Oetiker, Tobias and Partl, Hubert and Hyna, Irene and + Schlegl, Elisabeth and Hell\-gren, Timo}, + title = {Pitkänpuoleinen johdanto Latex 2ε:n käyttöön}, + subtitle = {Eli opi Latex 2ε 133 minuutissa}, + note = {Versio 4.17fi}, + date = 2005, + url = {https://www.ctan.org/pkg/lshort-finnish}, + langid = {finnish} +} + +@book{lshort, + author = {Oetiker, Tobias and Partl, Hubert and Hyna, Irene and + Schlegl, Elisabeth}, + title = {The Not So Short Introduction to Latex 2ε}, + subtitle = {Or Latex 2ε in 139 minutes}, + note = {Version 6.2}, + date = 2018, + url = {https://www.ctan.org/pkg/lshort-english}, + langid = {british} +} + +@book{kt_oik, + author = {Kankaanpää, Salli and Heikkilä, Elina and Korhonen, Riitta + and Maamies, Sari and Piehl, Aino and Eronen, Riitta and + Hyvärinen, Riitta and Kolehmainen, Taru and Mikkonen, Pirjo + and Moilanen, Raija and Pyhälahti, Minna and Räsänen, Matti + and Vaula, Sari and Vihonen, Inkaliisa and Wihuri, Elina}, + title = {Kielitoimiston oikein\-kir\-joi\-tus\-opas}, + edition = 13, + date = 2017, + series = {Kotimaisten kielten keskuksen julkaisuja 177}, + publisher = {Kotimaisten kielten keskus} +} + +@online{ctan, + title = {Comprehensive TeX Archive Network}, + shorttitle = {\textsc{ctan}}, + url = {https://www.ctan.org/}, + date = {1992/}, +} + +@article{tuhoajana, + author = {Korpela, Jukka K.}, + title = {Tietokone typografian tuhoajana}, + journaltitle = {Skrolli}, + journalsubtitle ={Tietokonekulttuurin erikoislehti}, + date = 2015, + volume = 2015, + number = 3, + pages = {10-14}, + url = {https://www.skrolli.fi/numerot/2015-3/} +} diff --git a/info/kaytannollista-latexia/luku-asetukset.tex b/info/kaytannollista-latexia/luku-asetukset.tex new file mode 100644 index 0000000000..0f136267c2 --- /dev/null +++ b/info/kaytannollista-latexia/luku-asetukset.tex @@ -0,0 +1,2952 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\chapter{Asetukset} + +Dokumentin yleiset asetukset koostuvat Latexissa dokumenttiluokan +valinnasta, sivun koon ja marginaalien määrittelystä, fonttien +määrittelystä sekä kieliasetuksista. Näitä kaikkia käsitellään tässä +luvussa. + +Kirjoittajan ei tarvitse tehdä kaikkia dokumentin asetuksia kerralla. On +ehkä jopa suotavaakin keskittyä aluksi lähinnä dokumentin sisällön ja +rakenteen suunnitteluun ja tuottamiseen. Ulkoasuun kyllä ehtii tulla +kirjoittamisen aikana monenlaisia ajatuksia, joita ei olisi välttämättä +alussa osannut huomioida. Kirjoittamaan pääsee hyvinkin yksinkertaisen +dokumenttirungon avulla (esimerkki \ref{esim/ensimmäinen}, +s.~\pageref{esim/ensimmäinen}), mutta tässä luvussa käsitellään +asetusten määrittelyä ja mahdollisuuksia melko perusteellisesti. + +\section{Dokumenttiluokat} +\label{luku/dokumenttiluokat} + +Latexin lähdedokumenttien alussa on aina samankaltainen rivi, joka +määrittelee käytettävän dokumenttiluokan ja mahdollisesti dokumentin +perusasetuksia. Dokumenttiluokka määritellään komennolla +\komento{documentclass} ja sen argumentiksi annetaan dokumenttiluokan +nimi. Valinnaisilla argumenteilla vaikutetaan asetuksiin. + +\komentoi{documentclass} +\luokkai{article} +\begin{koodilohkosis} +\documentclass[a4paper, 12pt]{article} +\end{koodilohkosis} + +\noindent +Dokumenttiluokka on eräänlainen pohjadokumentti eli ominaisuuksien ja +asetusten kokoelma, jonka varaan oma dokumentti kirjoitetaan. Eri +dokumenttiluokat sisältävät erilaisia ominaisuuksia ja erilaiset +oletusasetukset. Edellä olevassa esimerkissä käytettiin +\luokka{article}\-/ luokkaa, joka on yleiskäyttöinen luokka monenlaisten +dokumenttien kirjoittamiseen. Seuraavissa alaluvuissa käsitellään +tavallisimpia dokumenttiluokkia ja niiden asetuksia. + +% Dokumenttiluokkia voi tehdä itsekin, ja sitä aihetta käsitellään +% luvussa X.Y. + +\subsection{Perusdokumenttiluokat} +\label{luku/perusdokumenttiluokat} + +Muutama dokumenttiluokka kuuluu Latexin perusvalikoimaan, eli ne ovat +aina saatavilla ja asennettuna, kun itse Latexkin on. Niitä kutsutaan +välillä standardeiksi dokumenttiluokiksi, ja ne ovat ikään kuin +muuttumattomia perusluokkia, joiden varaan on turvallista rakentaa omia +dokumentteja tai muita dokumenttiluokkia. Muita dokumenttiluokkia +kehitetään Latexin perusosien ulkopuolella, ja niiden ominaisuudet +voivat muuttua ja kehittyä nopeammin ajan myötä. + +Normaalit paperisivuihin perustuvat dokumentit tehdään luokkien +\luokkam{article}, \luokkam{report} tai \luokkam{book} avulla. Ne ovat +keskenään hyvin samanlaisia, mutta niiden oletusasetukset poikkeavat +toisistaan. Karkeasti jaoteltuna \luokka{article}\-/ luokka on +tarkoitettu lyhyehköille artikkeleille ja yleiseksi perustaksi +monenlaisille dokumenteille. Sen sijaan \luokka{report} ja \luokka{book} +on tarkoitettu laajoihin dokumentteihin, ja niissä on kirjatypografian +piirteitä. + +Suurin edellä mainittujen perusluokkien ero on otsikoinnissa ja +dokumentin jäsentämisessä: \luokka{report} ja \luokka{book} sisältävät +suuret pääluvut (\komento{chapter}) eli otsikot, jotka alkavat tyhjältä +sivulta; \luokka{article} ei sisällä samanlaisia päälukuja vaan +ainoastaan tavalliset leipätekstin mukana kulkevat väliotsikot +(\komento{section}, \komento{subsection} jne.). Tekstin jäsentämistä +käsitellään luvussa \ref{luku/jäsennys} ja otsikointia tarkemmin luvussa +\ref{luku/otsikot}. + +Toinen ero perusluokkien välillä on se, että vain \luokka{book}\-/ +luokka sisältää komennot \komento{frontmatter}, \komento{mainmatter} ja +\komento{backmatter}, joita voi käyttää ilmaisemaan tietokirjan +erityyppiset osat: esittely\-/, sisältö\-/{} ja liitesivut. Näitä +käsitellään luvussa \ref{luku/frontmainbackmatter}. Lisäksi +\luokka{report}\-/ luokka sisältää ympäristön \ymparisto{abstract}, joka +on tarkoitettu tekstin tiivistelmäosan tekemiseen; \luokka{book}\-/ +luokassa sitä ei ole. + +Muut erot koskevat lähinnä oletusasetuksia, mutta asetukset ovat +tietenkin muutettavissa, eivätkä ne siten ole määräävä tekijä +valittaessa luokkien \luokka{article}, \luokka{report} ja \luokka{book} +välillä. Dokumenttiluokkien asetuksia käsitellään seuraavassa +alaluvussa. + +Muita perusdokumenttiluokkia ovat \luokkam{letter} ja \luokka{slides}. +Nimensä mukaisesti \luokka{letter} on kirjeiden kirjoittamista varten. +Se sisältää kirjeen tyypilliseen rakenteeseen liittyviä komentoja ja +soveltuu varsinkin tarpeisiin, joissa täytyy automaattisesti tuottaa +samanmuotoisia kirjeitä usealle vastaanottajalle. Sama +Latex\-/dokumentti voi sisältää useita kirjeitä, ja sivunumerointi ja +alaviitteiden numerointi alkaa joka kirjeessä alusta -- kuten on +tietysti toivottavaa. \luokka{letter}\-/ luokkaa käsitellään tarkemmin +luvussa \ref{luku/kirjeet}. + +Piirtoheittimien läpinäkyvien kalvojen ja sen kaltaisten dokumenttien +tekemiseen on dokumenttiluokka \luokkam{slides}. Piirtoheittimet ovat +jääneet menneisyyteen, ja nykyään jokseenkin vastaavanlainen rooli on +esitysgrafiikkaohjelmilla, joilla tehdään diaesityksiä esimerkiksi +esitelmien havaintomateriaaliksi. \luokka{slides}\-/ luokkaa ei varmaan +tarvita enää mihinkään, mutta esitysgrafiikkaan on olemassa erittäin +monipuolinen luokka \luokka{beamer}, jonka perusasioita käsitellään +luvussa \ref{luku/esitysgrafiikka}. + +\subsection{Perusdokumenttiluokkien asetukset} +\label{luku/perusdokumenttiluokat-asetukset} + +Taulukkoon \ref{tlk/luokkavalitsimet} on koottu perusdokumenttiluokkien +valitsimet. Sivun koko asetetaan valitsimilla \koodi{a4\-paper} (210 × +297 mm), \koodimargin{*paper} \koodi{a5\-paper} (148 × 210 mm), +\koodi{b5\-paper} (176 × 250 mm), \koodi{execu\-tive\-paper} (7,25 × +10,5 tuumaa), \koodi{legal\-paper} (8,5 × 14 tuumaa) tai +\koodi{letter\-paper} (8,5 × 11 tuumaa). Latexin oletuksena on +\koodi{letterpaper}, mutta oletusta voi olla muutettu Latexin +jakelupaketissa. Varminta on aina itse kirjoittaa haluttu sivukoko +dokumentin asetuksiin. + +\leijutlk{ + \ttfamily + \begin{tabular}{llll} + \toprule + a4paper & landscape & openright & 10pt \\ + a5paper & final & openany & 11pt \\ + b5paper & draft & onecolumn & 12pt \\ + executivepaper & oneside & twocolumn & titlepage \\ + legalpaper & twoside & fleqn & notitlepage \\ + letterpaper & openbib & leqno & clock \\ + \bottomrule + \end{tabular} +}{ + \caption{Perusdokumenttiluokkien valitsimet} + \label{tlk/luokkavalitsimet} +} + +Sivu on oletuksena pystyasennossa, mutta valitsin \koodim{landscape} +asettaa sen vaaka\-/asentoon. Tämä asetus koskee dokumentin kaikkia +sivuja, mutta jos haluaa asettaa vain yksittäisiä sivuja +vaaka\-/asentoon, täytyy käyttää \pakettictan{pdflscape}\-/ pakettia ja +sen tarjoamaa ympäristöä. + +Sivun koon ja muitakin mittoja voi määritellä monipuolisemmin +\paketti{geometry}\-/paketin toimintojen avulla (luku +\ref{luku/sivuasetukset}). Jos sitä pakettia käyttää, ei näitä +dokumenttiluokan sivukokoasetuksia tarvita välttämättä lainkaan. + +Leipätekstin fontin koon voi määrittää valitsimilla \koodim{10pt}, +\koodim{11pt} ja \koodim{12pt}, joista ensin mainittu on oletus. Lyhenne +pt tarkoittaa typografista pistemittaa, joita käsitellään luvussa +\ref{luku/mitat}. Nämä asetukset vaikuttavat myös sivun marginaaleihin, +koska fontin koko vaikuttaa tekstiriville mahtuvien merkkien määrään ja +Latex pyrkii pitämään rivit sopivan mittaisina lukemisen kannalta. + +Vain kolme eri fonttikokoa leipätekstille on kovin vähän ja peräisin +ajalta, jolloin Latexin fontit olivat pikseligrafiikkaa eli muodostuivat +erillisistä kuvapisteistä. Nykyaikana fontit ovat vektorigrafiikkaa eli +matemaattisten kaavojen avulla muodostettavia kuvia, ja ne voi venyttää +mihin kokoon tahansa. Sen vuoksi nämä dokumenttiluokkien +fonttikokovalitsimet eivät ole kovin tarpeellisia eivätkä riitä kaikkiin +tarpeisiin nykyaikana. Voi niitä silti käyttää, jos niiden avulla saa +halutun lopputuloksen. Fontteja käsitellään tarkemmin luvussa +\ref{luku/kirjaintyypit}. + +Dokumentista voi latoa luonnosversion käyttämällä dokumenttiluokan +valitsinta \koodim{draft}. Luonnoksena ladottuun dokumenttiin tulevat +merkityksi (musta suorakulmio) ainakin tekstipalstan yli pursuavat +rivit, mikä voi auttaa tekstikappaleiden ulkoasun korjailussa (luku +\ref{luku/kappale}). Eri paketit voivat hyödyntää \koodi{draft}\-/ +valitsinta omalla tavallaan eli muuttaa toimintaansa sen perusteella. +Esimerkiksi grafiikkaan liittyvä paketti \paketti{graphicx} (luku +\ref{luku/grafiikka}) jättää luonnosversiosta kuvat pois, ja niiden +paikalla on vain suorakulmio. Pdf\-/tiedoston ristiviitteistä huolehtiva +\paketti{hyperref}\-/paketti jättää pdf:n sisäiset ristiviitteet ja +sisällysluettelon tekemättä (luku \ref{luku/ristiviitteet}). Latominen +voi nopeutua huomattavasti. + +Lopullinen ladontatila on \koodim{final}, joka tarkoittaa, että +dokumenttiin ladotaan kaikki sisältö ja ominaisuudet niin kuin se on +tarkoitettu julkaistavaksi. Tätä valitsinta ei tarvitse käyttää, koska +se on oletustila. + +Sivujen yksipuolisuus (\koodim{oneside}) ja kaksipuolisuus +(\koodim{twoside}) ovat asetuksia, jotka vaikuttavat sivun marginaalien +asetuksiin ja mahdollisesti uuden pääluvun (\komento{chapter}) +aloitukseen. Oletus on yksipuolinen dokumentti kaikissa muissa +perusdokumenttiluokissa paitsi \luokka{book}\-/ luokassa, jonka oletus +on kaksipuolinen. + +Yksipuolisessa dokumentissa kaikkien sivujen marginaalit ovat +lähtökohtaisesti samanlaisia ja asetuksissa puhutaan esimerkiksi +vasemmasta (\englanti{left}) ja oikeasta (\englanti{right}) +marginaalista. Kaksipuolisessa dokumentissa sivut ajatellaan pareittain: +kaksi sivua muodostaa kirjan aukeaman, jonka vasemmalla puolella on +parillinen sivunumero ja oikealla pariton. Marginaalien asetuksissa +puhutaan sisämarginaaleista (\englanti{inner}) ja ulkomarginaaleista +(\englanti{outer}). Sisämarginaalit ovat oletuksena pienemmät, koska +niitä on aukeamalla aina kaksi vierekkäin. Ulkomarginaaleissa on tilaa +marginaalihuomautuksille (luku \ref{luku/marginaalihuomautukset}). +Marginaaleja ja muita sivun asetuksia käsitellään tarkemmin luvussa +\ref{luku/sivuasetukset}. + +Jos dokumentti on määritetty kaksipuoliseksi (\koodi{twoside}), voidaan +\koodim{open\-right}\-/ valitsimella määrittää pääluvut +(\komento{chapter}) alkamaan aina oikeanpuoleiselta sivulta. Se onkin +oletus dokumenttiluokassa \luokka{book}. Valitsin \koodim{open\-any} +asettaa pääluvut alkamaan miltä tahansa seuraavalta sivulta. + +Valitsin \koodim{open\-bib} liittyy automaattiseen lähdeluettelon +muotoiluun. Jos tämä valitsin on mukana, automaattisessa lähdeluettelon +muotoilussa lisätään rivinvaihtoja lähdemerkinnän eri osien kuten +teoksen tekijöiden ja teoksen nimen jälkeen. Lähdemerkintöjä ja +lähdeluettelon laatimista käsitellään luvussa \ref{luku/lähteet}. + +Matemaattisten kaavojen ladontaan liittyvässä \ymparisto{equation}\-/ +ympäristössä kaavat ladotaan normaalisti vaakasuunnassa sivun keskelle. +Dokumenttiluokan valitsinta \koodim{fleqn} käyttämällä kaavat ladotaan +kuitenkin sivun vasempaan reunaan. Kaavojen numerot sijoitetaan +oletuksena sivun oikeaan reunaan, mutta valitsimella \koodim{leqno} ne +saa ladottua sivun vasempaan reunaan. Matematiikkatilaa käsitellään +luvussa \ref{luku/matematiikka}. + +Kansisivun tai dokumentin perustietojen esitystapaan vaikutetaan +valitsimilla \koodim{title\-page} ja \koodim{no\-title\-page}. Latexissa +on yksinkertaiset komennot dokumentin perustietojen eli pääotsikon, +tekijöiden nimien ja päiväyksen latomiseen (luku +\ref{luku/dokumentin-perustiedot}), ja näillä valitsimilla vaikutetaan +siihen, ladotaanko perustiedot omalle sivulleen (\koodi{title\-page}) +vaiko ensimmäisen sisältösivun alkuun (\koodi{no\-title\-page}). +Oletus\-asetus vaihtelee eri dokumenttiluokissa. + +Oletuksena sivun tekstit ladotaan yhdelle palstalle +(\koodim{onecolumn}), mutta valitsimella \koodim{twocolumn} teksti +ladotaan kahdelle palstalle. Nämä valitsimet vaikuttavat myös sivun +marginaaleihin. Latexin perusosat eivät hallitse useampaa kuin kaksi +palstaa, mutta \paketti{multicol}\-/paketin avulla saa enemmänkin. +Palstoja käsitellään luvussa \ref{luku/palstat}. + +Dokumenttiluokassa \luokka{slides} toimii \koodim{clock}\-/ valitsin, +joka latoo kellonajan piirtoheitinkalvon loppuun \komento{note}\-/ +komennon yhteydessä. Tämä valitsin kuulunee samaan paikkaan kuin +piirtoheittimet ja \luokka{slides}\-/luokkakin: kierrätykseen tai +kaatopaikalle. + +\subsection{Muita dokumenttiluokkia} + +Kuka tahansa voi tehdä ja julkaista omia dokumenttiluokkia, ja niinpä +perusdokumenttiluokkien lisäksi onkin saatavilla monenlaisia luokkia. +Tässä käsitellään vain joitakin. + +Luokka \luokka{memoir} on Latexin \luokka{book}\-/luokkaan perustuva, +ominaisuuksiltaan laajennettu luokka, joka sopii yleiskäyttöön. Tähän +luokkaan on sisällytetty monia dokumentin rakenteeseen ja ulkoasuun +liittyviä toimintoja, joihin yleensä tarvitaan erillisiä paketteja +tai muuten lisäkoodia. Sen sijaan, että ratkoisi dokumentin rakenteen ja +asettelun kysymyksiä erillisten pakettien avulla, saattaisi olla +helpompaa lukea (lähes) pelkästään vain \luokka{memoir}\-/ luokan +ohjekirjaa ja toteuttaa asiat yhtenäisen järjestelmän avulla. + +\luokka{beamer}\-/luokka on monipuolinen ja huippuunsa viritetty luokka +esitysgrafiikan eli diaesitysten tekemiseen. Se on eräänlainen Latexin +vastine esimerkiksi \englanti{Libreoffice Impress}\-/{} ja +\englanti{Microsoft Powerpoint} \=/ohjelmille. + +Pienempiin, rajattuihin erityistarpeisiin on olemassa useita luokkia. +Esimerkiksi yksisivuisten taitettavien lehtisten kuten tapahtuman +käsiohjelmien tekemiseen soveltuu \luokka{leaflet}\-/luokka. +\textsc{cd}\-/levyjen kansia voi tehdä \luokka{cd}\-/luokan avulla. +Kuvitettuja seinäkalentereita vartenkin on tehty oma luokkansa, +\luokka{wallcalendar}. Kitaran tablatuureja eli otelautakuvaan +perustuvia nuotteja voi tehdä \luokka{guitartabs}\-/ luokan avulla. + +Kaikenlaista on siis olemassa. Saatavilla oleviin dokumenttiluokkiin voi +tutustua esimerkiksi \englanti{Comprehensive Tex Archive Network} +(\textsc{ctan}) \=/verkkosivun avulla.% +\footnote{\url{https://www.ctan.org/topic/class}} + +\section{Sivu} +\label{luku/sivuasetukset} + +Latex\-/dokumentit muodostuvat aina peräkkäisistä sivuista, eli +taustalla kummittelee paperiarkkeihin perustuva julkaisumuoto, vaikka +dokumenttia ei varsinaisesti tulostettaisi tai painettaisi paperille. +Tämän vuoksi melkein aina täytyy määrittää sivun asetukset kuten +paperikoko ja marginaalit. Ne tehdään \pakettim{geometry}\-/ paketin +avulla, jota käsitellään luvussa \ref{luku/sivun-mitat}. Joskus halutaan +muokata sivun ylä- tai alatunnistetta eli verrattain pysyviä +tunnistetietoja, jotka toistuvat joka sivulla ylä- tai alareunassa. +Niiden muokkaamiseen käytetään \paketti{fancyhdr}\-/ pakettia, jonka +ohjeita on luvussa \ref{luku/ylä-ala-tunnisteet}. + +\subsection{Sivun koko ja marginaalit} +\label{luku/sivun-mitat} + +Paperin eli sivun kokoon ja marginaaleihin pääsee vaikuttamaan +\pakettictan{geometry}\-/ paketin avulla. Halutut asetukset voi kertoa +paketin lataamisen yhteydessä. Seuraavassa esimerkissä asetetaan +paperikoko (\koodi{a4\-paper} eli \textsc{a4}-koko), ylä- ja +alamarginaalin pituus (\koodi{top}, \koodi{bottom}) sekä vasemman ja +oikean marginaalin pituus (\koodi{left}, \koodi{right}). + +\komentoi{usepackage} +\begin{koodilohkosis} +\usepackage[a4paper, top=20mm, bottom=30mm, + left=20mm, right=20mm]{geometry} +\end{koodilohkosis} + +\noindent +Vaihtoehtoisesti asetukset voi ilmaista erikseen \komentom{geometry}\-/ +komennon avulla seuraavalla tavalla: + +\komentoi{usepackage} +\komentoi{geometry} +\begin{koodilohkosis} +\usepackage{geometry} +\geometry{a4paper, top=20mm, bottom=30mm, left=20mm, right=20mm} +\end{koodilohkosis} + +\noindent +Mikäli myöhemmin dokumentissa täytyy vaihtaa sivun asettelua, käytetään +komentoa \komentom{newgeometry}. Alkuperäiset asetukset palautetaan +komennolla \komentom{restoregeometry}. + +\komentoi{newgeometry} +\komentoi{restoregeometry} +\begin{koodilohkosis} +\newgeometry{top=…, bottom=…, …} % Uudet asetukset. +\restoregeometry % Palautetaan alkuperäiset asetukset. +\end{koodilohkosis} + +\noindent +Valmiiksi määriteltyjä standardipaperikokoja on useita. +\textsc{iso}\-/standardin mukaiset koot \textsc{a0}--\textsc{a6} +valitaan valitsimilla kuten \koodimargin{*paper} \koodi{a3paper}, +\koodi{a4paper} tai \koodi{a5paper}. Samoin käytetään myös kokoja +\textsc{b0}--\textsc{b6} ja \textsc{c0}--\textsc{c6}, esimerkiksi +\koodi{b2paper} tai \koodi{c6paper}. Lisäksi on valittavissa useita +japanilaisia ja yhdysvaltalaisia standardeja käyttämällä valitsimia +kuten \koodi{b0j}--\koodi{b6j}, \koodi{ansi\-a\-paper} tai +\koodi{letter\-paper}. + +Mikäli standardit koot eivät riitä, voi sivun mitat määrittää vapaasti +\koodim{paper\-size}\-/ valitsimella, jolle annetaan arvoksi leveys- ja +korkeusmitta. + +\komentoi{geometry} +\begin{koodilohkosis} +\geometry{papersize={10cm, 16cm}} +\end{koodilohkosis} + +\noindent +Sivu on oletuksena pystyasennossa (\koodim{portrait}), mutta sen voi +asettaa vaaka\-/asentoon valitsimella \koodim{landscape}. Tämä asetus on +voimassa koko dokumentin ajan. Jos haluaa asettaa vain yksittäisiä +sivuja vaaka\-/asentoon, täytyy käyttää \pakettictan{pdflscape}\-/ +pakettia ja sen tarjoamaa ympäristöä. + +Sivun asetusten suunnittelussa voi olla avuksi valitsin +\koodim{show\-frame}, joka piirtää viivat marginaalien kohdalle ja +merkitsee myös ylä- ja alatunnisteiden sekä marginaalihuomautusten +rajoja. + +Taulukkoon \ref{tlk/sivun-marginaalit} on koottu tärkeimpiä valitsimia +marginaalien mittojen asettamiseksi. Valitsimille annetaan arvoksi Texin +mittayksikkö, jotka ovat taulukossa \ref{tlk/mittayksiköt} +(s.~\pageref{tlk/mittayksiköt}). Kaksipuolisessa +\koodimargin{twoside=\katk true} \koodimargin{twoside=\katk false} +asettelussa (\koodi{twoside=\katk true}) sivut muodostavat aukeaman eli +on erikseen vasemmanpuoleinen ja oikeanpuoleinen sivu. Tällöin vasen ja +oikea marginaali vuorottelevat, ja niitä on havainnollisempaa kutsua +sisä- ja ulkomarginaaliksi. Marginaalien määrittelyssä voi käyttää +valitsimen \koodi{left} sijasta valitsinta \koodi{inner}, ja vastaavasti +\koodi{right}\-/ valitsin voidaan korvata \koodi{outer}\-/ valitsimella. +Teknisesti näillä ei ole mitään eroa, mutta nimet ovat ihmisille +havainnollisempia. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\koodi{#1} & \koodi{#2} & #3 \\} + \begin{tabular}{lll} + \toprule + \multicolumn{2}{l}{\ots{Valitsin}} & \ots{Merkitys} \\ + \midrule + \rivi{left}{inner}{vasen marginaali tai sisämarginaali} + \rivi{right}{outer}{oikea marginaali tai ulkomarginaali} + \rivi{top}{}{ylämarginaali} + \rivi{bottom}{}{alamarginaali} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{geometry}\-/paketin valitsimia sivun marginaalien + määrittelemiseen} + \label{tlk/sivun-marginaalit} +} + +Sivun tekstialueen koon ja marginaalit voi määrittää myös +suhteellisesti. Voisi esimerkiksi määrittää, että leveyssuunnassa +tekstialue täyttää 0,7\=/kertaisesti (70\,\%) sivun leveyden ja loput +jää marginaaleille. Marginaalien keskinäiset suhteetkin voi ilmaista +suhdelukuna: esimerkiksi vasemman (sisä) ja oikean (ulko) marginaalin +suhde voisi olla 2:3. Suhteellisessa tavassa ei tarvitse ottaa kantaa +sivun kokoon eikä muihinkaan varsinaisiin mittoihin, vaan samat +tekstialueen ja marginaalien suhteet säilyvät, vaikka sivukokoa +muuttaisikin. Suhteellisia mittoja koskevia valitsimia on koottu +taulukkoon \ref{tlk/sivun-marginaalit-suhd}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{hscale}{tekstialueen osuus sivun leveydestä} + \rivi{vscale}{tekstialueen osuus sivun korkeudesta} + \rivi{hmarginratio}{vasemman (sisä) ja oikean (ulko) marginaalin suhde} + \rivi{vmarginratio}{ylä- ja alamarginaalin suhde} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{geometry}\-/paketin valitsimia sivun tekstitilan ja + marginaalien suhteiden määrittämiseen. Osuudet (\koodi{*scale}) + ilmaistaan prosenttikertoimella (esim. \koodi{0.7}). Suhteet + (\koodi{*marginratio}) ilmaistaan suhdelukuna (esim. \koodi{2:3})} + \label{tlk/sivun-marginaalit-suhd} +} + +Klassisessa kirjatypografiassa, jossa teksti ladotaan yhdelle palstalle, +marginaalien suuruusjärjestys on suurimmasta pienimpään seuraavanlainen: +ala-, ulko-, ylä- ja sisämarginaali. Suhdeluvut samassa järjestyksessä: +32, 28, 20, 17. \paketti{geometry}\-/paketin valitsimilla tämä +ilmaistaan seuraavasti: + +\komentoi{geometry} +\begin{koodilohkosis} +\geometry{hmarginratio=17:28, vmarginratio=20:32} +\end{koodilohkosis} + +\noindent +Klassisia suhteita ei nykyaikana yleensä noudateta kovin tarkasti, mutta +niistä kannattaa ymmärtää yleinen ajatus. Alamarginaalin pitäisi olla +hieman suurempi kuin ylämarginaali, koska muuten tekstialue tuntuu +pudonneen sivulla alas. Alamarginaalissa (alatunnisteessa) on yleensä +sivunumero. Kirjan sivuja katsotaan pareittain eli aukeamina, joten +sisämarginaaleja on kaksi vierekkäin. Siksi sisämarginaalit yksittäin +ajateltuna ovat pienemmät kuin ulkomarginaalit. Lisäksi ulkomarginaaleja +voidaan käyttää huomautusten kirjoittamiseen, mikä on melko yleinen +käytäntö tietokirjoissa. + +Marginaalihuomautukset (luku \ref{luku/marginaalihuomautukset}) +sijaitsevat oletuksena sivujen ulkomarginaalissa tai oikeanpuoleisessa +marginaalissa. Huomautuspalstan leveys asetetaan valitsimella +\koodim{marginparwidth}, ja palstan etäisyys sivun varsinaisesta +tekstialueesta määritellään valitsimella \koodim{marginparsep}. Kumpikin +valitsin tarvitsee argumentiksi mitan. Jos haluaa vaihtaa huomautukset +sivun vastakkaiseen marginaaliin, lisätään mukaan valitsin +\koodi{reversemarginpar}. + +Perus Latex osaa latoa tekstin yhdelle tai kahdelle palstalle, ja +\paketti{geometry}\-/ paketin valitsimella \koodim{onecolumn} tai +\koodim{twocolumn} asetetaan, kumpi tila on oletuksena päällä. +Useampikin palsta on mahdollista paketin avulla. Valitsimen +\koodim{columnsep} avulla asetetaan palstojen välinen etäisyys. +Käytännössä tämä valitsin on asettaa mitan \mitta{columnsep}, jota voi +muokata myös komennolla \komento{setlength}, kuten muitakin mittoja +(luku \ref{luku/mitat}). Tarkempaa tietoa palstoista on luvussa +\ref{luku/palstat}. + +\subsection{Sivun mittoja} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\mitta{#1} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Mitta} & \ots {Merkitys} \\ + \midrule + \rivi{paperwidth}{paperin eli sivun leveys} + \rivi{paperheight}{paperin eli sivun korkeus} + \rivi{textwidth}{tekstialueen leveys} + \rivi{columnwidth}{nykyisen palstan leveys} + \rivi{linewidth}{nykyisen rivin leveys} + \rivi{textheight}{tekstialueen korkeus} + \bottomrule + \end{tabular} +}{ + \caption{Sivun mittoja} + \label{tlk/sivun-mittoja} +} + +Sivun kokoasetusten määrittämisen jälkeenkin voi olla tarpeen viitata +joihinkin sivun mittoihin. Usein esimerkiksi halutaan piirtää sivun +tekstialueen levyinen tai siihen suhteutettu taulukko tai kuva. Silloin +on kätevää käyttää mittaa, jonka arvona on juuri tekstialueen leveys. +Tärkeimmät sivun mitat on koottu taulukkoon \ref{tlk/sivun-mittoja}, +mutta perusteellisemmin niitä käsitellään \pakettictan{geometry}\-/ +paketin ohjekirjassa. + +Taulukossa \ref{tlk/sivun-mittoja} mainittu mitta \mitta{linewidth} +eroaa tekstialueen (\mitta{textwidth}) tai palstan (\mitta{columnwidth}) +leveysmitasta esimerkiksi silloin, kun tekstikappaletta on sisennetty. +Kappaleiden ensimmäinen rivi voi olla sisennetty, ja sen vuoksi rivi ei +ole täysilevyinen. Muutkin sisennykset kuten lohkolainaukset tai +luetelmat vaikuttavat rivin leveysmittaan. Sisennysasiat liittyvät +tekstikappaleiden muotoiluun, jota käsitellään +luvussa~\ref{luku/kappale}. Luetelmia puolestaan käsitellään +luvussa~\ref{luku/luetelmat}. + +\subsection{Leikkuuvarat} + +Sivu voi olla ulkoisesti erikokoinen kuin sisäisesti. On siis +mahdollista asettaa sivu esimerkiksi \textsc{a4}\-/kokoiseksi ja +käsitellä marginaalit ja muut sivun mitat \textsc{a4}-koon mukaan, mutta +ulkoisesti tai fyysisesti sivu onkin osana suurempaa sivua tai +paperiarkkia. Tällaista tarvitaan ainakin silloin, kun halutaan +merkitä leikkuuvarat dokumentin painamista varten. + +Painokoneen paperiarkkien leikkauskohta ei välttämättä osu täsmälleen +samaan kohtaan pdf\-/tiedoston sivun reunan kanssa, ja siksi +dokumentissa reunaan saakka yltävät kuvat asetetaan varmuuden vuoksi +hieman ylikokoiseksi. Sivun reunaan saakka aiotut kuvat siis yltävät +lähde-pdf:ssä pari millimetriä varsinaisen sivualueen ulkopuolelle eli +leikkuuvaran puolelle. Tällä varmistetaan, että painamisen jälkeen +leikatuissa paperiarkeissa kuva varmasti yltää reunaan saakka. + +Jos dokumenttiin tarvitaan sivun ulkopuoliset leikkuuvarat, määritellään +dokumentin ulommaiset mitat edelleen samalla tavalla kuin +tavallisestikin eli esimerkiksi valitsimella \koodi{paper\-size} (luku +\ref{luku/sivun-mitat}). \koodimargin{layout} \koodimargin{layout\-size} +Sen sijaan sivun sisäiset mitat täytyy määritellä toisella tavalla, +käyttämällä valitsinta \koodi{lay\-out} tai \koodi{layout\-size}. + +\begin{esimerkki*} + \komentoi{geometry} +\begin{koodilohko} +\geometry{ + papersize={220mm, 307mm}, + layout=a4paper, % tai: layoutsize={210mm, 297mm} + layoutoffset={5mm, 5mm}, + showcrop +} +\end{koodilohko} + \caption{Sivun ulkoisten ja sisäisten mittojen sekä leikkuvaarojen + määrittäminen} + \label{esim/leikkuuvarat} +\end{esimerkki*} + +Esimerkissä \ref{esim/leikkuuvarat} käytetään sisäisesti \textsc{a4}\-/ +kokoista (210 × 297~mm) sivua, mutta sivulle on määritetty joka puolelle +5\,mm:n leikkuuvarat. Niinpä ulkoisesti sivu on 10\,mm leveämpi ja +korkeampi, eli ulkoiset mitat ovat 220 × 307~mm. Valitsimella +\koodi{layout\-offset} asetetaan sisäisen sivun etäisyys ulkoisen sivun +vasemmasta ylänurkasta. Esimerkissä on mukana myös valitsin +\koodi{show\-crop}, joka merkitsee sisäisen ja ulkoisen sivun rajakohdan +eli leikkuuvaran rajan. Merkinnät näkyvät vain sivun nurkissa +leikkuuvaran puolella, joten ne eivät päädy lopulliseen +painotuotteeseen. + +\subsection{Ylä- ja alatunnisteet} +\label{luku/ylä-ala-tunnisteet} + +\paketti{geometry}\-/paketin asetuksiin kuuluu pari valitsinta, joilla +vaikutetaan ylä- ja alatunnisteiden mittoihin. Valitsimella \koodi{head} +ilmaistaan ylätunnisteen korkeus ja valitsimella \koodi{headsep} sen +etäisyys sivun tekstipalstasta. Alatunnisteen peruslinjan etäisyys +tekstipalstasta säädetään valitsimella \koodi{footskip}. Taulukkoon +\ref{tlk/ylä-ala-tunnistemitat} on koottu näiden valitsimien merkitys, +ja seuraavassa on niiden käyttämisestä esimerkki. Mukana on myös +valitsin \koodi{show\-frame}, joka piirtää sivulle apuviivoja. Se auttaa +sivun mittojen suunnittelussa. + +\komentoi{geometry} +\begin{koodilohkosis} +\geometry{head=24bp, headsep=8bp, footskip=12mm, showframe} +\end{koodilohkosis} + +\leijutlk{ + \begin{tabular}{ll} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \koodi{head} & ylätunnisteen korkeusmitta \\ + \koodi{headsep} & ylätunnisteen etäisyys tekstipalstasta \\ + \koodi{footskip} & alatunnisteen peruslinjan etäisyys tekstipalstasta \\ + \bottomrule + \end{tabular} +}{ + \caption{\paketti{geometry}\-/paketin valitsimet ylä- ja + alatunnisteiden mittojen asettamiseen} + \label{tlk/ylä-ala-tunnistemitat} +} + +\noindent +Latexin perusosat eivät sisällä kovin kummoista keinovalikoimaa ylä- ja +alatunnisteiden muokkaamiseen, mutta pari hyödyllistä sivutyyliä on +kuitenkin mukana. Ylä- ja alatunnisteet määräytyvät sivutyylin +perusteella, ja haluttu tyyli asetetaan voimaan komennolla +\komentom{pagestyle}: + +\komentoi{pagestyle} +\begin{koodilohkosis} +\pagestyle{plain} +\end{koodilohkosis} + +\noindent +Edellä mainittu sivutyyli \koodim{plain} latoo alatunnisteeseen +sivunumeron. Se on yleensä oletustyyli. Sivunumero on peräisin +laskurista \laskuri{page} ja sen arvon tulostavasta komennosta +\komento{thepage} (luku \ref{luku/laskurit}). Toinen hyödyllinen tyyli +on \koodim{empty}, joka nimensä mukaisesti tarkoittaa tyhjää, eli ylä- +eikä alatunnisteeseen ei ladota mitään. + +Yksittäiselle sivulle voi asettaa muusta dokumentista poikkeavan +sivutyylin komennolla \komentom{thispagestyle}. Komento siis vaikuttaa +vain sillä hetkellä ladottavan sivun tyyliin, ja sen jälkeen palataan +taas voimassa olevaan tyyliin, joka on aiemmin määritelty komennolla +\komento{pagestyle}. + +\komentoi{thispagestyle} +\begin{koodilohkosis} +\thispagestyle{empty} +\end{koodilohkosis} + +\noindent +Sivutyyli \koodim{headings} latoo ylätunnisteeseen aukeaman +vasemmanpuoleisille sivuille esimerkiksi kirjan pääluvun nimen ja +oikeanpuoleisille sivuille meneillään olevan alaluvun nimen. Mainitut +lukujen nimet tulevat sivun sisäreunaan; ulkoreunaan ladotaan +sivunumero. + +Teknisesti ja sisäisesti tämä on toteutettu siten, että pääluvun +aloittava otsikkokomento (esim. \komento{chapter}) automaattisesti +määrittelee joka kerta uudelleen komennon \komento{leftmark}, niin että +se sisältää pääluvun nimen. Sivuja ladottaessa Latex sitten latoo +ylätunnisteeseen sen, mitä \komento{leftmark}\-/komento sattuu +tulostamaan. Vastaavasti alaluvun otsikkokomento (esim. +\komento{section}) määrittelee uudelleen komennon \komento{rightmark}, +niin että se sisältää alaluvun nimen. Tämän komennon tulostama teksti +ladotaan aukeaman oikeanpuoleisille sivuille. + +Jos haluaa itse vaikuttaa ylätunnisteen tekstiin, voi käyttää sivutyyliä +\koodim{myheadings} sekä komentoa \komento{markboth}, jolla määritellään +aukeaman vasemmanpuoleisen ja oikeanpuoleisen sivun ylätunnisteen +teksti. Tämä komento on tarkoitettu suoritettavaksi päälukujen +yhteydessä. Komennolla \komento{markright} määritellään pelkästään +oikeanpuoleisen sivun teksti, ja komento on tarkoitettu suoritettavaksi +aina alalukujen yhteydessä. + +\komentoi{markboth} +\komentoi{markright} +\begin{koodilohkosis} +\markboth{vasen}{oikea} % määrittelee: \leftmark ja \rightmark +\markright{oikea} % määrittelee: \rightmark +\end{koodilohkosis} + +\noindent +Sivunumeroinnin tyyliin voi vaikuttaa esimerkiksi komennolla +\komento{pagenumbering}, jonka argumentiksi annetaan numerointityylin +nimi. Ne on koottu taulukkoon \ref{tlk/sivu-numerointityylit}. + +\komentoi{pagenumbering} +\begin{koodilohkosis} +\pagenumbering{roman} +\end{koodilohkosis} + +\noindent +Edellä mainittu komento määrittelee käytännössä uudelleen komennon +\komento{thepage}, joka on tarkoitettu juuri sivunumerolaskurin +latomiseen. Lisätietoa sivunumeroista ja muista laskureista on luvussa +\ref{luku/laskurit}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Tyyli} & \ots{Merkitys} \\ + \midrule + \rivi{arabic}{arabialaiset luvut: 1, 2, 3\dots} + \rivi{roman}{roomalaiset luvut: i, ii, iii\dots} + \rivi{Roman}{roomalaiset luvut: I, II, III\dots} + \rivi{alph}{kirjaimet: a, b, c\dots\ (vain 1--26)} + \rivi{Alph}{kirjaimet: A, B, C\dots\ (vain 1--26)} + \bottomrule + \end{tabular} +}{ + \caption{Sivunumerointityylit \komento{pagenumbering}\-/ komennon + argumentiksi} + \label{tlk/sivu-numerointityylit} +} + +Monipuolisemmin ylä- ja alatunnisteita voi muokata paketin +\pakettictan{fancyhdr} toimintojen avulla. Silloin sivutyylinä voi olla +myös \koodim{fancy}: + +\komentoi{usepackage} +\komentoi{pagestyle} +\begin{koodilohkosis} +\usepackage{fancyhdr} +\pagestyle{fancy} +\end{koodilohkosis} + +\noindent +Kun käytössä on sivutyyli \koodi{fancy}, voi ylä- ja alatunnisteiden +sisällön asettaa vapaasti komennolla \komentom{fancyhf}. Komennon +argumenttien merkitys on seuraavanlainen: + +\komentoi{fancyhf} +\begin{koodilohkosis} +\fancyhf[paikka]{sisältö} +\end{koodilohkosis} + +\noindent +Valinnainen argumentti \koodi{paikka} kertoo, mihin paikkaan tai +paikkoihin \koodi{sisältö} sijoitetaan. Vaihtoehtoina on ylä- tai +alatunniste, pariton tai parillinen sivu, sivun vasen reuna, keskiosa +tai oikea reuna. Nämä vaihtoehdot ja niitä vastaavat valitsimet on +koottu taulukkoon \ref{tlk/fancyhf-paikat}. Saman komennon avulla voi +määrittää useitakin paikkoja, kun ne erottaa pilkulla, esimerkiksi +seuraavalla tavalla: + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{cl} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{H}{ylätunniste (header)} + \rivi{F}{alatunniste (footer)} + \rivi{E}{parillinen sivu, vasen (even)} + \rivi{O}{pariton sivu, oikea (odd)} + \rivi{L}{sivun vasen reuna (left)} + \rivi{C}{sivun keskelle (center)} + \rivi{R}{sivun oikea reuna (right)} + \bottomrule + \end{tabular} +}{ + \caption{\komento{fancyhf}\-/ komennon valitsimia ylä- tai + alatunnisteen paikan määrittämiseen} + \label{tlk/fancyhf-paikat} +} + +\komentoi{fancyhf} +\begin{koodilohkosis} +\fancyhf{} % Tyhjennetään ylä- ja alatunnisteet. +\fancyhf[HEL,HOR]{\thepage} +\end{koodilohkosis} + +\noindent +Edellä mainittu komento sijoittaa sivunumeron (\komento{thepage}) +ylätunnisteeseen (\koodi{H}) parillisten sivujen (\koodi{E}) vasempaan +reunaan (\koodi{L}) ja parittomien sivujen (\koodi{O}) oikeaan reunaan +(\koodi{R}). Käytännössä siis aukeaman ulkoreunoihin ladotaan +sivunumerot. Seuraava esimerkki sijoittaa ajatusviivoilla (\==) +reunustetun sivunumeron kaikille sivuille alatunnisteeseen (\koodi{F}) +sivun keskelle (\koodi{C}): + +\komentoi{fancyhf} +\komentoi{thepage} +\begin{koodilohkosis} +\fancyhf[FC]{-- \thepage\ --} +\end{koodilohkosis} + +\noindent +Paketin \paketti{fancyhdr} avulla voi myös määritellä Latexin +sivutyylejä toisenlaiseksi tai luoda kokonaan omia sivutyylejä. Nämä +tehdään komennolla \komentom{fancypagestyle}, jonka ensimmäinen +argumentti on sivutyylin nimi ja toinen argumentti on sivutyylin +määritelmä. Määritelmä sisältää tarvittavat \komento{fancyhf}\-/ +komennot, joilla ylä- ja alatunnisteet määritellään. + +Seuraava esimerkki tekee Latexin \koodi{plain}\-/ sivutyylistä saman +kuin \koodi{fancy}\-/tyylin, eli sekin noudattaa \komento{fancyhf}\-/ +komennolla määriteltyjä ylä- ja alatunnisteita: + +\komentoi{fancypagestyle} +\begin{koodilohkosis} +\fancypagestyle{plain}{} +\end{koodilohkosis} + +\noindent +Seuraava esimerkki määrittelee kokonaan oman sivutyylin: + +\komentoi{fancypagestyle} +\komentoi{fancyhf} +\begin{koodilohkosis} +\fancypagestyle{omatyyli}{ + \fancyhf{} + \fancyhf[FEL,FOR]{\thepage} +} +\end{koodilohkosis} + +\noindent +Ylä- ja alatunniste voidaan erottaa tekstipalstasta vaakasuuntaisella +viivalla, jonka leveyttä on mahdollista muuttaa määrittelemällä +uudelleen komennot \komentom{headrulewidth} ja \komentom{footrulewidth}. +Komennon määritelmäksi kirjoitetaan Texin mitta. Seuraavassa esimerkissä +asetetaan yhden typografisen pisteen (1\,bp) levyiset viivat. Mitan +voisi asettaa myös nollaksi (0\,bp), jolloin erotinviiva katoaa kokonaan +näkyvistä. + +\komentoi{renewcommand} +\komentoi{headrulewidth} +\komentoi{footrulewidth} +\begin{koodilohkosis} +\renewcommand{\headrulewidth}{1bp} % ylätunnisteen erotinviiva +\renewcommand{\footrulewidth}{1bp} % alatunnisteen erotinviiva +\end{koodilohkosis} + +\noindent +Mikäli haluaa omiin ylätunnisteisiin esimerkiksi päälukujen ja +alalukujen nimiä, täytyy tunnisteisiin sisällyttää aiemmin kuvatut +\komentom{leftmark}- ja \komentom{rightmark}\-/komennot. Ensin mainittu +sisältää pääluvun nimen ja jälkimmäinen alaluvun nimen. + +\komentoi{fancyhf} +\komentoi{leftmark} +\komentoi{rightmark} +\begin{koodilohkosis} +\fancyhf[HEL]{\leftmark} +\fancyhf[HOR]{\rightmark} +\end{koodilohkosis} + +\noindent +Latex latoo pää- ja alalukujen nimet oletuksena versaalikirjaimilla eli +isoilla kirjaimilla. Jos ne haluaa johonkin toiseen muotoon, täytyy itse +määritellä uudelleen komennot \komentom{chaptermark}, +\komentom{sectionmark} tai \komentom{subsectionmark} (vain kaksi näistä) +ja käyttää määritelmässä komentoja \komento{markboth} ja +\komento{markright}. Esimerkkiin \ref{esim/fancyhdr-koko} on koottu +varsin kokonaisvaltainen koodi omien ylä- ja alatunnisteiden +toteutukseen. + +\begin{esimerkki*} + \komentoi{documentclass} + \luokkai{book} + \komentoi{usepackage} + \pakettii{fancyhdr} + \komentoi{fancypagestyle} + \komentoi{fancyhf} + \komentoi{renewcommand} + \komentoi{headrulewidth} + \komentoi{footrulewidth} + \komentoi{leftmark} + \komentoi{rightmark} + \komentoi{thepage} + \komentoi{pagestyle} + \komentoi{chaptermark} + \komentoi{markboth} + \komentoi{chaptername} + \komentoi{thechapter} + \komentoi{sectionmark} + \komentoi{thesection} + +\begin{koodilohko} +\documentclass{book} +\usepackage{fancyhdr} + +% Päälukujen (\chapter) aloitussivu käyttää plain-sivutyyliä. +% Tässä määritellään se uudestaan. +\fancypagestyle{plain}{ + \fancyhf{} + \fancyhf[FC]{-- \thepage\ --} + \renewcommand{\headrulewidth}{0bp} + \renewcommand{\footrulewidth}{0bp} +} + +% fancy-sivutyylin asetukset: +\fancyhf{} +\fancyhf[HEL]{\leftmark} +\fancyhf[HOR]{\rightmark} +\fancyhf[FC]{-- \thepage\ --} +\renewcommand{\headrulewidth}{1bp} +\renewcommand{\footrulewidth}{0bp} + +\begin{document} + +\pagestyle{fancy} + +% Päälukujen (\chapter) yhteydessä komento \markboth{…}{…} määrittää +% sekä \leftmark- että \rightmark-komennot. Tässä jälkimmäinen +% määritellään tyhjäksi. +\renewcommand{\chaptermark}[1]{% + \markboth{\chaptername\ \thechapter: #1}{}} + +% Alalukujen (\section) yhteydessä komento \markright{…} määrittää +% vain \rightmark-komennon. +\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +\end{koodilohko} + \caption{Omien ylä- ja alatunnisteiden toteuttaminen} + \label{esim/fancyhdr-koko} +\end{esimerkki*} + +\section{Pdf-tiedosto} +\label{luku/pdf-asetukset} + +Pdf-tiedostot voivat sisältää metatietoja kuten dokumentin nimen, +aiheen, tekijän ja päiväyksen. Tiedostoille voi määrittää myös erilaisia +asetuksia kuten ristiviitteiden ja linkkien ulkoasun tai sisäisen +sisällysluettelon ominaisuuksia. Pdf\-/tiedoston asetukset toteutetaan +\pakettictan{hyperref}\-/ paketin avulla. Paketti neuvotaan lataamaan +muiden pakettien jälkeen, koska se lisää ominaisuuksia muihin +komentoihin. Paketin voisi ladata esimerkiksi seuraavalla tavalla: + +\komentoi{usepackage} +\pakettii{hyperref} +\begin{koodilohkosis} +% Muiden \usepackage-komentojen jälkeen. +\usepackage[unicode]{hyperref} +\end{koodilohkosis} + +\noindent +Esimerkissä käytetty valitsin \koodi{unicode} aiheuttaa sen, että pdf\-/ +tiedoston sisäisissä merkkijonoissa käytetään Unicode\-/ merkistöä ja +sen \textsc{utf\=/8}\-/ koodausta. Ilman tätä valitsinta Lualatex\-/ +kääntäjän kanssa pdf\-/ tiedoston sisäinen sisällysluettelon merkistö ei +näy välttämättä oikein. + +\paketti{hyperref}\-/ paketin asetuksia voi määritellä valitsimien +avulla \komento{usepackage}\-/ komennon yhteydessä mutta myös +erillisellä \komentom{hypersetup}\-/ komennolla. Komennolle annetaan +yksi argumentti, joka sisältää pilkuilla erotettuna erilaisia valitsimia +ja niiden arvoja. + +\begin{esimerkki*} +\begin{koodilohko} +\hypersetup{ + hidelinks, bookmarksopen, bookmarksnumbered, + pdfinfo={ + Title={Laatikollinen lateksia}, + Subject={Opas lateksiin ja liisteriin}, + Author={Lauri Liisteri} + } +} +\end{koodilohko} + \caption{\komento{hypersetup}\-/ komennolla asetetaan + \paketti{hyperref}\-/ paketin asetuksia, esimerkiksi pdf:n + metatietoja} + \label{esim/hypersetup} +\end{esimerkki*} + +Esimerkissä \ref{esim/hypersetup} valitsin \koodi{hidelinks} saa aikaan +sen, että pdf:ssä olevia linkkejä ja ristiviitteitä ei merkitä millään +tavalla. Oletuksena linkit kehystetään eri väreillä riippuen linkin +tyypistä. Valitsin \koodi{bookmarksopen} näyttää pdf:n sisällysluettelon +kokonaan avattuna. Oletuksena alaluvut on piilotettuna, ja ne joutuu +avaamaan napsauttamalla hiirellä ylemmäntasoisen otsikon +avauspainiketta. Valitsin \koodi{bookmarksnumbered} näyttää pdf:n +sisällysluettelossa lukujen numeroinnin (kuten 1.1, 1.2, 2.1 tms.). +Valitsimella \koodi{pdfinfo} määritellään pdf:n metatietoja kuten +otsikko, aihe ja tekijä mutta omiakin metatietoja voi lisätä. Paljon +muitakin asetuksia on olemassa, ja niistä voi lukea lisää +\paketti{hyperref}\-/ paketin ohjekirjasta. + +Pdf\-/ tiedoston sisäiseen sisällysluetteloon tulevat automaattisesti +mukaan samat otsikot (luku \ref{luku/otsikot}) kuin ladottavaan +sisällysluetteloonkin (luku \ref{luku/sisällysluettelo}). Pdf\-/ +tiedoston luetteloon voi kuitenkin itse lisäillä omia otsikoita, jotka +eivät näy missään muualla. Se tehdään \paketti{hyperref}\-/ paketin +komennolla \komentom{pdfbookmark}: + +\komentoi{pdfbookmark} +\begin{koodilohkosis} +\pdfbookmark[taso]{Teksti}{tunniste} +\end{koodilohkosis} + +\noindent +Komennon valinnainen argumentti \koodi{taso} on kokonaisluku, joka +tarkoittaa otsikon tasoa. Se on samankaltainen tasonumero kuin +otsikkotasojen taulukossa \ref{tlk/otsikkotasot} +(s.~\pageref{tlk/otsikkotasot}). Argumentti \koodi{Teksti} on pdf:n +sisällysluettelomerkinnän teksti, ja \koodi{tunniste} on mikä tahansa +yksilöllinen tekstimuotoinen tunniste kyseiselle luettelomerkinnälle. +Tunniste ei näy missään, mutta pdf tarvitsee sisäiseen toimintaansa +jonkin yksilöllisen tunnisteen. + +\section{Fontit} +\label{luku/kirjaintyypit} + +Fontit ja niiden asettaminen on Latexissa melko monimutkainen +kokonaisuus, koska fonteilla on paljon ominaisuuksia ja niihin +vaikutetaan monilla eri asetuksilla ja abstraktiotasoilla. Aika monta +asiaa pitää ymmärtää, jotta voi tehokkaasti työskennellä Latexin +fonttien kanssa. + +Fontti jo itsessään on moniselitteinen käsite, joka vaatii typografiassa +usein täsmentäviä ilmauksia. Sana \emph{fontti} voi tarkoittaa +kokonaista kirjainperhettä eli yhteensopivien kirjainleikkausten +muodostamaa kokonaisuutta. Samaan kirjainperheeseen kuuluu yleensä +ainakin neljä eri leikkausta: tavallinen, \textit{kursiivi}, +\textbf{lihavoitu} ja \textbf{\textit{lihavoitu kursiivi}}. Joihinkin +perheisiin kuuluu leikkauksia paljon enemmänkin, kuten useita eri +vahvuuksia. Joissakin puheissa sana \emph{fontti} tarkoittaa vain yhtä +kirjainleikkausta, ja silloin koko perheeseen viitataan ehkä sanalla +fonttiperhe. + +Tässä oppaassa käytetään \emph{fontti}\-/sanaa yleisnimityksenä Latexin +kirjaintyyppeihin liittyville asetuksille. Se tarkoittaa kirjainperhettä +tai siihen kuuluvaa yksittäistä leikkausta sekä asetuksia, jotka +liittyvät niihin. Silloin kun merkitystä pitää täsmentää, käytetään +suomenkielisiä nimiä kirjainperhe ja kirjainleikkaus. Sen sijaan sana +\emph{kirjasin} on jätetty kokonaan pois. Se tarkoittaa vanhassa +metalliladonnassa ja mekaanisissa kirjoituskoneissa metallisen +ladontakappaleen eli kirjakkeen päähän valettua kirjaimen tai muun +merkin kohokuviota, joka painaa mustejäljen paperille. + +Kuten Latexissa yleensäkin myös fonttien kanssa kannattaa käyttää +korkean abstraktiotason komentoja, jotka piilottavat yksityiskohdat ja +teknisen toteutuksen. Latexin fonttitoiminnot on suunniteltu juuri +siihen: matalan tason fonttiasetukset määritellään mieluiten vain kerran +dokumentin esittelyosassa, ja sen jälkeen käytetään pelkästään korkean +tason komentoja. + +Latexin fonttitekniikka rakentuu eri\-/ikäisistä kerroksista ja +tekniikoista. Fontteja on aikoinaan tehty +\englanti{Metafont}\avctan{metafont}\-/ nimisellä kielellä, jolla +kuvataan merkkien muodot. \englanti{Metafont} on myös tietokoneohjelma, +joka tuottaa kuvauskielen perusteella bittikarttafontteja eli +pikseleistä koostuvia fontteja. On käytetty myös kehittyneempää +\englanti{Metapost}\avctan{metapost}\-/ kuvauskieltä ja \=/ohjelmaa, +joilla on tuotettu vektorigrafiikkafontteja \textsc{eps}- eli +\englanti{Encapsulated Post Script} \=/muodossa ja muutettu niitä +edelleen \englanti{Post Script Type~1} \=/fonteiksi. Myöhemmin mukaan +ovat tulleet nykyaikaiset \englanti{True Type}- ja \englanti{Open Type} +\=/fontit, ja niihin tämä opas keskittyy. + +\subsection{Fonttien määrittäminen} +\label{luku/fontin-valinta} + +Latexin fonttien perustoiminnot rakentuvat kolmen erityyppisen +kirjainperheen varaan: + +\begin{nluetelma} +\item peruskirjainperhe eli dokumentin pääasiallinen kirjainperhe, joka + on kirjatypografiassa usein antiikva eli pääteviivallinen + (\englanti{serif, roman})% + \footnote{Antiikva (lat. \emph{antiquus} 'vanha') perustuu antiikin + Roomassa käytettyihin kirjainmuotoihin. Niissä on pääteviivat, ja + viivojen vahvuus vaihtelee.} +\item groteski eli pääteviivaton (\englanti{sans serif, gothic})% + \footnote{Groteskiin (ransk. \emph{grotesque} 'kummallinen') kuuluu + pääteviivojen puuttumisen lisäksi lähes tasavahvuiset kirjainten + viivat. Tämän oppaan groteskifontissa on kuitenkin selvästi + antiikvamaiset kaksivahvuiset viivat, joten se on eräänlainen + antiikvan ja groteskin välimuoto.} +\item tasalevyinen kirjoituskoneen kaltainen perhe + (\englanti{type\-writer, mono\-spaced, tele\-type}). +\end{nluetelma} + +\noindent +Kuvassa \ref{kuva/kirjainperhetyypit} ovat tässä oppaassa käytetyt kolme +eri kirjainperhettä. Leipätekstissä käytetään antiikvaa, otsikoissa ja +kuvateksteissä groteskia ja koodiesimerkeissä tasalevyistä. +Kirjoituskoneen kaltainen tasalevyinen kirjainperhe on tässä tapauksessa +tyypiltään antiikva eli pääteviivallinen, mutta se voisi olla muutakin. +Tasalevyisyys on sen kirjainperheen tärkein määrittävä tekijä Latexin +asetusten näkökulmasta. + +\leijukuva{ + {\rmfamily\addfontfeatures{ScaleAgain=5}Amf} + \hfill + {\sffamily\addfontfeatures{Scale=5}Amf} + \hfill + {\ttfamily\addfontfeatures{FakeStretch=1, Scale=4.5}Amf} +}{ + \caption{Vasemmalla pääteviivallinen, keskellä pääteviivaton ja + oikealla tasalevyinen pääteviivallinen kirjainperhe} + \label{kuva/kirjainperhetyypit} +} + +Joidenkin fonttien käyttöönottoon on tehty oma pakettinsa, joten +sellaiset fontit voi ladata dokumentin esittelyosassa komennolla +\komento{usepackage}. Fonttikohtaisia paketteja on olemassa +varsinkin vanhalle fonttitekniikalle (\englanti{Metafont, Post Script + Type~1}) mutta myös matematiikkatilan fonttiasetuksille (luku +\ref{luku/matematiikka-fontit}) ja joillekin +kir\-jain\-perhe\-koko\-nai\-suuk\-sille. + +Latexissa pisimmälle ''tuotteistettu'' kokonaisuus taitaa olla +Libertinus\-/ kirjainperhe, joka sisältää antiikvan, groteskin ja +tasalevyisen kirjainperheen sekä matematiikkatilan symboleita. +Libertinus\-/ kirjainperheet saa käyttöön lataamalla paketti +\pakettictan{libertinus}: + +\komentoi{usepackage} +\pakettii{libertinus} +\begin{koodilohkosis} +\usepackage{libertinus} +\end{koodilohkosis} + +\noindent +Valmiita paketteja on kuitenkin vain harvoille fonteille, ja +käytännössä lähes aina \englanti{True Type}- ja \englanti{Open Type} +\=/muodossa olevat fontit otetaan käyttöön \paketti{fontspec}\-/paketin +komennoilla seuraavan esimerkin mukaisesti: + +\komentoi{setmainfont} +\komentoi{setsansfont} +\komentoi{setmonofont} +\begin{koodilohkosis} +\setmainfont{TeX Gyre Termes}[Scale=1] +\setsansfont{TeX Gyre Heros} [Scale=MatchLowercase] +\setmonofont{TeX Gyre Cursor}[Scale=MatchLowercase] +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä \englanti{TeX Gyre Termes, Heros} ja +\englanti{Cursor} ovat kirjainperheiden nimiä. Fonttitiedostojen +tulee olla asennettuna käyttöjärjestelmän normaalien käytäntöjen +mukaisesti tai Latex\-/jakelun käytäntöjen mukaisesti. + +Kirjainperheiden käyttöönoton yhteydessä voi määritellä lukuisia +asetuksia kuten ligatuureja, gemenanumeroita, optisia kokoja ja muita +fontin ominaisuuksia. Edellisessä esimerkissä käytetään vain +\koodi{Scale}\-/ valitsinta, jolla fontin voi skaalata haluttuun kokoon. + +Peruskirjainperheen (\komentom{setmainfont}) skaalaukseksi asetetaan +\koodi{Scale=1}, eli sille ei tehdä mitään, ja koko valitsimen voisi +jättää pois. Sen sijaan kahdella muulla kirjainperheellä +(\komentom{setsansfont}, \komentom{setmonofont}) käytetään +kerroinasetusta \koodi{MatchLowercase}, joka skaalaa fontin siten, että +gemenakirjaimet eli pienet kirjaimet ovat yhtä korkeita kuin +peruskirjainperheessä. Mikäli skaalausasetus \koodi{MatchLowercase} ei +tuota ihan toivottua tulosta, voi kirjainperheen skaalausta hienosäätää +vielä \koodi{Scale\-Again}\-/ valitsimella seuraavalla tavalla: + +\komentoi{setmonofont} +\begin{koodilohkosis} +\setmonofont{TeX Gyre Cursor} +[Scale=MatchLowercase, ScaleAgain=.97] +\end{koodilohkosis} + +\noindent +Kirjainperheen määrittelyn yhteydessä ei yleensä tarvitse antaa kuin +kirjainperheen nimi, sillä \paketti{fontspec}\-/paketti ja kääntäjät +osaavat automaattisesti ladata perheeseen sisältyviä eri +fonttitiedostoja kuten pystyasentoisen leikkauksen, kursiivin ja +lihavoinnin. On kuitenkin mahdollista määritellä kirjainperheeseen +kuuluvia leikkausten nimiä tai fonttitiedostoja erikseen. Tällainen on +tarpeen esimerkiksi silloin, kun kirjainperhe sisältää useita eri +vahvuuksia ja halutaan itse määritellä, mikä niistä tulee +perusvahvuudeksi ja mikä lihavoiduksi. + +Esimerkki \ref{esim/fontit-leik-omin} selventää, kuinka kirjainperheen +eri leikkausten nimet tai fonttitiedostot määritellään. Kullekin +leikkaukselle voi määrittää myös omat asetuksensa \koodi{Fea\-tures}\-/ +loppuisella valitsimella. Samaa asiaa havainnollistetaan myös +konkreettisemmin esimerkissä \ref{esim/fontit-leik-omin-käyt}. +Leikkauksen nimessä voi käyttää tähteä (\koodi{*}), joka korvautuu +kirjainperheen nimellä (\englanti{Macklin Text}). + +\begin{esimerkki*} + \komentoi{setmainfont} +\begin{koodilohko} +\setmainfont{…}[ + UprightFont={…}, UprightFeatures={…}, + ItalicFont={…}, ItalicFeatures={…}, + BoldFont={…}, BoldFeatures={…}, + BoldItalicFont={…}, BoldItalicFeatures={…}, + SlantedFont={…}, SlantedFeatures={…}, + BoldSlantedFont={…}, BoldSlantedFeatures={…}, + SmallCapsFont={…}, SmallCapsFeatures={…}] +\end{koodilohko} + \caption{Kirjainperheeseen sisältyvien leikkausten nimien ja + kirjainleikkauskohtaisten ominaisuuksien määrittely} + \label{esim/fontit-leik-omin} +\end{esimerkki*} + +\begin{esimerkki*} + \komentoi{setmainfont} +\begin{koodilohko} +\setmainfont{Macklin Text}[ + UprightFont = {* Light}, + ItalicFont = {* Light Italic}, + BoldFont = {* Medium}, + BoldItalicFont = {* Medium Italic}] +\end{koodilohko} + \caption{Eri leikkausten nimien määrittely \englanti{Macklin Text} + \=/kirjainperheelle. Leikkauksen nimessä tähti (\koodi{*}) korvautuu + automaattisesti koko perheen nimellä} + \label{esim/fontit-leik-omin-käyt} +\end{esimerkki*} + +Jos edellä kuvatut kolme kirjainperhettä (\komento{setmainfont}, +\komento{setsansfont} ja \komento{setmonofont}) eivät riitä, on +\paketti{fontspec}\-/paketissa komennot lisäperheiden ja \=/leikkausten +määrittämiseen. Uusi perhe määritellään seu\-raa\-vasti: + +\komentoi{newfontfamily} +\begin{koodilohkosis} +\newfontfamily{\hienoperhe}{TeX Gyre Schola}[…] +\end{koodilohkosis} + +\noindent +Komento \komento{newfontfamily} toimii samalla tavalla kuin aiemmin +esitellyt \komento{setmainfont} ym. komennot, mutta lisäksi +ensimmäisellä argumentilla nimetään komento, jolla kirjainperhe otetaan +käyttöön. Edellisessä esimerkissä luodaan komento +\komentox{hieno\-perhe}, joka kytkee päälle \englanti{TeX Gyre Schola} +\=/nimisen kirjainperheen. + +Jos ei tarvita kokonaista perhettä vaan yksi leikkaus riittää, käytetään +komentoa \komento{newfontface}. Seuraavassa esimerkissä määriteltävä +komento \komentox{hieno\-leikkaus} ottaa käyttöön lihavoidun (bold) +kirjainleikkauksen perheestä \englanti{TeX Gyre Schola}. + +\komentoi{newfontface} +\begin{koodilohkosis} +\newfontface{\hienoleikkaus}{TeX Gyre Schola Bold}[…] +\end{koodilohkosis} + +\subsection{Fontin koko ja rivikorkeus} + +Fonttien koot on tapana valita ja ilmaista typografisen pistemitan +avulla. Esimerkiksi 10--12 pistettä on tyypillinen leipätekstin +oletuskoko tekstinkäsittelyohjelmissa. Piste on typografiassa +mittayksikkö, jonka pituus on määritelty eri tavoin eri aikoina ja eri +kulttuureissa. + +Myös Latexissa fonttien koot voi määritellä pistemittojen avulla. Niitä +ja muitakin Latexin mittayksiköitä käsitellään tarkemmin luvussa +\ref{luku/mitat}. Fonteissa oletusmittayksikkönä on vanha +pica\-/järjestelmän piste, jonka pituus on noin 0,3515 millimetriä. Sen +lyhenne Latexissa on~\emph{pt}. Tämän oppaan esimerkeissä käytetään +kuitenkin Post Script \=/standardin mukaista, julkaisuohjelmiin +vakiintunutta uudempaa pica\-/pistettä, joka on hieman edellistä +pidempi: noin 0,3528 millimetriä. Latexissa sen lyhenne on~\emph{bp}. +Ero näiden kahden pistemitan välillä on hyvin pieni, tavallisilla +fonttiko'oilla käytännössä merkityksetön. + +Kirjainleikkauksen koko mitataan merkistön ylimmän ja alimman kohdan +välillä, esimerkiksi k\=/kirjaimen ylimmän pisteen ja y\=/kirjaimen +alimman pisteen välillä. Lisäksi mittaan luetaan mukaan merkistön ylä- +ja alapuolella oleva pieni tyhjä tila, jonka fontin suunnittelija on +määritellyt. + +Matalalla tasolla fonttien kokoon vaikuttaa Latexissa eräs yllättävä +asia. Nimittäin dokumenttiluokalle (luku \ref{luku/dokumenttiluokat}) +voi antaa valitsimen, jolla fontin koko asetetaan. Vaihtoehtoja on +Latexin normaaleissa dokumenttiluokissa vain kolme: \koodi{10pt} +(oletus), \koodi{11pt} ja \koodi{12pt}. Dokumenttiluokan kokoasetus +vaikuttaa myös sivun marginaaleihin, koska Latex pyrkii pitämään rivin +merkkimäärän lukijalle sopivana: yhdelle riville ei kannata latoa ihan +mahdottomasti merkkejä, koska rivin seuraaminen vaatii enemmän +keskittymistä. + +Fontin koon määrittäminen dokumenttiluokan valitsimella ehkä kuuluu jo +vähän menneisyyteen, mutta voi sitä edelleen käyttää, jos se riittää ja +sillä saa halutun lopputuloksen. Yleensä lienee järkevää jättää +dokumenttiluokan fonttiasetus oletukseksi (\koodi{10pt}) ja käyttää koon +asettamiseen luvuissa \ref{luku/fontti-suhteellinen} ja +\ref{luku/fontti-absoluuttinen} kerrottuja tapoja. Sivun marginaalien ja +muiden mittojen määrittämiseen on ohjeita luvussa +\ref{luku/sivuasetukset}. + +Fonttiasetuksiin kuuluu fontin koon lisäksi toinenkin mitta: rivikorkeus +(\mitta{baselineskip}). Se on peräkkäisten rivien peruslinjojen välinen +etäisyys. Fontin koko ja rivikorkeus määritellään samanaikaisesti, koska +ne ovat saman \komentom{fontsize}\-/ komennon argumentteja. Esimerkki: + +\komentoi{fontsize} +\komentoi{selectfont} +\begin{koodilohkosis} +\fontsize{10bp}{12bp} \selectfont +\end{koodilohkosis} + +\noindent +Ensimmäinen argumentti on fontin kokomitta ja toinen on rivikorkeus. +Mittayksiköt voivat olla mitä tahansa Texin mittoja, ja oletuksena +käytetään pt\-/pistemittaa, jos yksikköä ei ole mainittu. Komento +\komentom{selectfont} on mukana, koska vasta sen myötä matalan tason +fonttikomennot tulevat voimaan. Korkean tason fonttikomennot (luku +\ref{luku/fontit-korkea}) suorittavat sen automaattisesti. + +Rivikorkeus on vähintään sama kuin fontin koko, mutta yleensä se +asetetaan pari pistettä suuremmaksi, jotta rivit eivät olisi liian +lähellä toisiaan. Esimerkissä \ref{esim/rivikorkeus} on kaksi erilaista +\komento{fontsize}\-/komentoa ja ladottu lopputulos. + +\begin{esimerkki*} + \komentoi{fontsize} + \komentoi{selectfont} + +\begin{koodilohko} +\fontsize{8bp}{11bp}\selectfont Tässä on pienehkö leipätekstin +fonttikoko ja suhteellisen suuri rivikorkeus. Pitkät rivit vaativat +suuremman rivikorkeuden kuin lyhyet rivit. + +\fontsize{16bp}{17bp}\selectfont Tässä on melko suuri fontti ja +suhteellisen pieni rivikorkeus. Suuri fontti ja lyhyet rivit eivät +tarvitse kovin suurta rivikorkeutta. +\end{koodilohko} + \begin{tulos} + \fontsize{8bp}{11bp}\selectfont Tässä on pienehkö leipätekstin + fonttikoko ja suhteellisen suuri rivikorkeus. Pitkät rivit vaativat + suuremman rivikorkeuden kuin lyhyet rivit. + + \fontsize{16bp}{17bp}\selectfont Tässä on melko suuri fontti ja + suhteellisen pieni rivikorkeus. Suuri fontti ja lyhyet rivit eivät + tarvitse kovin suurta rivikorkeutta. + \end{tulos} + \caption{Fontin koon ja rivikorkeuden asettaminen ja vaikutus} + \label{esim/rivikorkeus} +\end{esimerkki*} + +Toinen tekstirivien peruslinjojen väliseen etäisyyteen vaikuttava asetus +on \komento{baselinestretch}. Se on desimaalilukukerroin, jolla nykyinen +rivikorkeus kerrotaan. Kerroin asetetaan helpoimmin komennolla +\komento{linespread}.\footnote{Toinen tapa: \koodi{\keno + renewcommand\{\keno baselinestretch\}\{kerroin\}}} + +\komentoi{fontsize} +\komentoi{linespread} +\komentoi{selectfont} +\begin{koodilohkosis} +\fontsize{10bp}{12bp} \linespread{1.3} \selectfont +\end{koodilohkosis} + +\noindent +Edellä oleva esimerkki asettaa fontin kooksi 10 pistettä ja +rivikorkeudeksi 12 pistettä. \komento{linespread}\-/ komennolla asetetun +kertoimen vuoksi rivien peruslinjojen väliseksi etäisyydeksi tulee +lopulta 1,3 kertaa 12 pistettä eli 15,6 pistettä. Ei ole väliä, kummassa +järjestyksessä \komento{fontsize}- ja \komento{linespread}\-/ komennot +annetaan. Asetukset tulevat voimaan vasta \komento{selectfont}\-/ +komennon jälkeen. + +Käytännössä \komento{linespread} sopii rivikorkeuden yleistason +hienosäätöön esimerkiksi dokumentin esittelyosassa. Tilannekohtainen +rivikorkeus on parasta asettaa \komento{fontsize}\-/komennolla. + +\subsection{Kirjainperheen ja -leikkauksen valitseminen} +\label{luku/fontit-korkea} + +Latexissa on joukko korkean tason fonttikomentoja, jotka on tarkoitettu +käytettäväksi sen jälkeen, kun matalan tason asetukset on kerran +määritetty. Taulukossa \ref{tlk/fonttimallikomennot} on komennot +kirjainperheen ja kirjainleikkauksen valintaan. Joka rivillä ensin +mainittu komento (esim. \komento{rmfamily}) vaikuttaa tekstiin, joka +tulee komennon jälkeen. Vaikutusalue rajoittuu nykyisen ympäristön (luku +\ref{luku/ympäristöt}) sisään tai aaltosulkeilla (luku +\ref{luku/aaltosulkeet}) rajatun alueen sisään. Rivillä toisena olevalle +komennolle (esim. \komentox{textrm}) annetaan yksi argumentti, ja +komennon vaikutus koskee vain argumenttina olevaa tekstiä. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4]{% + \komento{#1} & \komento{#2}\komentoarg{\dots} & #3 & #4 \\} + \begin{tabular}{llll} + \toprule + \multicolumn{2}{l}{\ots{Komento}} + & \multicolumn{2}{l}{\ots{Merkitys}} \\ + + \midrule + \rivi {rmfamily} {textrm} {\rmfamily perhe} + {perus, yl. antiikva, serif, roman} + \rivi {sffamily} {textsf} {\sffamily perhe} + {groteski, sans serif, gothic} + \rivi {ttfamily} {texttt} {\ttfamily perhe} + {tasalevyinen, typewriter} + + \midrule + \rivi {mdseries} {textmd} {\mdseries leikkaus} + {tavallinen vahvuus, medium} + \rivi {bfseries} {textbf} {\bfseries leikkaus} + {lihavoitu, bold} + + \midrule + \rivi {upshape} {textup} {\upshape leikkaus} + {pystyasento, tavallinen} + \rivi {itshape} {textit} {\itshape leikkaus} + {kursiivi, italic} + \rivi {slshape} {textsl} {\slshape leikkaus} + {kalteva, slanted, oblique} + \rivi {scshape} {textsc} {\scshape leikkaus} + {pienversaali, kapiteeli, small caps} + \bottomrule + \end{tabular} +}{ + \caption{Komennot kirjainperheen ja kirjainleikkauksen valintaan. + Perustila on \komento{rmfamily}, \komento{mdseries} ja + \komento{upshape}} + \label{tlk/fonttimallikomennot} +} + +Taulukossa on ensimmäisillä riveillä kirjainperhekomennot (3\,kpl), +jotka vaihtavat koko perheen kaikkine leikkauksineen. Niiden jälkeen +tulevat kirjainleikkauskomennot, jotka valitsevat toisen leikkauksen +samasta perheestä. Kirjainleikkauksen asetukset jaetaan kahteen ryhmään: +\englantik{series} 'sarja' ja \englantik{shape} 'muoto'. Kummastakin +ryhmästä on valittuna aina yksi ominaisuus, eli samanaikaisesti voi olla +voimassa esimerkiksi \komento{bfseries} (\textbf{lihavoitu}) ja +\komento{itshape} (\textit{kursiivi}), ja tuloksena on \textbf{\itshape + lihavoitua kursiivia}. + +Useimmissa fonteissa kursiivileikkaus (\komento{itshape}) ja kalteva +leikkaus (\komento{slshape}) tuottavat saman lopputuloksen, mutta +käsitteellisesti ne ovat eri asia. Kursiivi on aina muodoltaan erilainen +leikkaus, joka hieman mukailee käsialakirjoitusta, joskaan kirjaimia ei +ole sidottu toisiinsa. Sen sijaan kalteva leikkaus on tavallisen eli +pystyasentoisen leikkauksen kallistettu versio. Kallistus voi olla +kirjainmuotoilijan piirtämä leikkaus, tai kallistus on voitu toteuttaa +mekaanisesti. Kallistuksen voi tehdä myös Latexissa (luku +\ref{luku/fontit-venytys}). + +Komennot fontin koon valintaan ovat taulukossa +\ref{tlk/fonttikokokomennot}. Taulukko kertoo myös, mitä fontin +pistekokoa (pt) mikäkin komento tarkoittaa oletuksena. Oletus riippuu +Latexin dokumenttiluokkien (luku \ref{luku/perusdokumenttiluokat}) +fonttikokovalitsimista \koodi{10pt}, \koodi{11pt} ja \koodi{12pt}. + +\leijutlk{ + \begin{tabular}{lr@{}lr@{}lr@{}l} + \toprule + \ots{Komento} + & \multicolumn{2}{c}{\ots{10pt}} + & \multicolumn{2}{c}{\ots{11pt}} + & \multicolumn{2}{c}{\ots{12pt}} \\ + \midrule + \komento{tiny} & 5 && 6 && 6 \\ + \komento{scriptsize} & 7 && 8 && 8 \\ + \komento{footnotesize} & 8 && 9 && 10 \\ + \komento{small} & 9 && 10 && 10&,95 \\ + \komento{normalsize} & 10 && 10&,95 & 12 \\ + \komento{large} & 12 && 12 && 14&,4 \\ + \komento{Large} & 14&,4 & 14&,4 & 17&,28 \\ + \komento{LARGE} & 17&,28 & 17&,28 & 20&,74 \\ + \komento{huge} & 20&,74 & 20&,74 & 24&,88 \\ + \komento{Huge} & 24&,88 & 24&,88 & 24&,88 \\ + \bottomrule + \end{tabular} +}{ + \caption{Fonttien oletuspistekoot dokumenttiluokkien valitsimilla + \koodi{10pt}, \koodi{11pt} ja \koodi{12pt}} + \label{tlk/fonttikokokomennot} +} + +\ymparistoi{rmfamily} +\ymparistoi{sffamily} +\ymparistoi{ttfamily} +\ymparistoi{mdseries} +\ymparistoi{bfseries} +\ymparistoi{upshape} +\ymparistoi{itshape} +\ymparistoi{slshape} +\ymparistoi{scshape} +\ymparistoi{tiny} +\ymparistoi{scriptsize} +\ymparistoi{footnotesize} +\ymparistoi{small} +\ymparistoi{normalsize} +\ymparistoi{large} +\ymparistoi{Large} +\ymparistoi{LARGE} +\ymparistoi{huge} +\ymparistoi{Huge}% + +Kaikille korkean tason fonttikomennoille on olemassa myös samanniminen +ympäristönsä, esimerkiksi \ymparisto{rmfamily}, \ymparisto{bfseries}, +\ymparisto{itshape} tai \ymparisto{small}. Seuraavassa esimerkissä on +kaksi fontteihin vaikuttavaa ympäristöä sisäkkäin. + +\ymparistoi{footnotesize} +\ymparistoi{scshape} +\begin{koodilohkosis} +\begin{footnotesize} + \begin{scshape} + Tämä teksti on pientä pienversaalia. + \end{scshape} +\end{footnotesize} +\end{koodilohkosis} + +\begin{tulossis} + \begin{footnotesize} + \begin{scshape} + Tämä teksti on pientä pienversaalia. + \end{scshape} + \end{footnotesize} +\end{tulossis} + +\subsection{Fonttikoon määrittely suhteellisesti} +\label{luku/fontti-suhteellinen} + +Dokumentin fonttien koot on helpointa määrittää siten, että asettaa +ensin peruskirjainperheen koon ja antaa muiden fonttien määräytyä +suhteessa siihen. Esimerkki \ref{esim/fontti-suhteellinen} selventää, +kuinka se tapahtuu. Alussa otetaan käyttöön dokumenttiluokka +\luokka{article} ja annetaan sille valitsin \koodi{10pt}, joka määrittää +fonttikooksi 10 pistettä. Se on dokumenttiluokan oletusasetus, jota ei +tarvitsisi edes kirjoittaa näkyviin. Esimerkin toisella rivillä otetaan +\paketti{fontspec}\-/paketti käyttöön. + +Peruskirjainperheen (rivi~4) koko skaalataan 1,4\-/kertaiseksi, eli +pistekooksi tulee 1,4 kertaa 10 pistettä eli 14 pistettä (pt). +Normaalikokoinen peruskirjainperhe on ainoa, jonka pistekoko tiedetään. +Kaikkien muiden koot täytyisi selvittää laskemalla. + +Groteski eli pääteviivaton kirjainperhe (rivi~5) ja tasalevyinen perhe +(rivi~6) skaalataan samankorkuiseksi kuin perusperhe. Vertailukohtana +ovat gemenat eli pienaakkoset (\koodi{MatchLowercase}). Näiden kahden +kirjainperheen pistekokoa ei tiedetä. Se ei välttämättä ole sama kuin +perusfontissa, koska fonttien pistekoko mitataan ylimmän ja alimman +kohdan välillä ja koska fonttien mittasuhteet ovat erilaisia. + +\begin{esimerkki*} + \komentoi{documentclass} + \komentoi{usepackage} + \pakettii{fontspec} + \komentoi{setmainfont} + \komentoi{setsansfont} + \komentoi{setmonofont} + \komentoi{linespread} + \luokkai{article} + +\begin{koodilohko} +\documentclass[10pt]{article} % 10pt on oletus +\usepackage{fontspec} + +\setmainfont{TeX Gyre Termes}[Scale=1.4] +\setsansfont{TeX Gyre Heros} [Scale=MatchLowercase] +\setmonofont{TeX Gyre Cursor}[Scale=MatchLowercase] +\linespread{1.45} +\end{koodilohko} + \caption{Fonttikokojen määrittäminen suhteessa peruskirjainperheeseen} + \label{esim/fontti-suhteellinen} +\end{esimerkki*} + +Viimeisellä rivillä oleva \komento{linespread}\-/ komento on tärkeä. Se +asettaa rivikorkeuden kertoimeksi 1,45. Kertoimen täytyy olla vähintään +yhtä suuri kuin peruskirjainperheen skaalauskerroin (1,4), jotta +rivivälit ovat riittävän suuret. Näiden asetusten jälkeen dokumentissa +käytetään korkeamman tason komentoja fonttien valintaan, esimerkiksi +fonttikoon valintakomentoja \komento{small}, \komento{normalsize}, +\komento{large} (taulukko \ref{tlk/fonttikokokomennot}). + +Edellä kuvatussa suhteellisessa kirjainperheiden koon määrittelyssä on +sellainen ongelma tai kummallisuus, että Latex koko ajan luulee, että +peruskirjainperhe on normaalikokoisena 10 pistettä (pt). Latexin matalan +tason fonttikomennot eivät tiedä kirjainperheen skaalauskertoimesta, ja +siksi esimerkiksi komentojen + +\komentoi{fontsize} +\komentoi{selectfont} +\begin{koodilohkosis} +\fontsize{10bp}{12bp} \selectfont +\end{koodilohkosis} + +\noindent +tuloksena ei todellisuudessa ole 10 pisteen (bp) fontti, vaan mukaan +lasketaan myös kirjainperheen skaalauskerroin. Tämän vuoksi +\komento{fontsize}\-/ komennon käyttö menee aika oudoksi. Argumenttina +annettu kokomitta ei pidä paikkaansa. + +Jos korkean tason fonttikokokomentojen (taulukko +\ref{tlk/fonttikokokomennot}) lisäksi tarvitaan jotakin muuta kokoa, +voisi mahdollisesti \komento{fontsize}\-/ komennon sijasta käyttää +\paketti{fontspec}\-/paketin tarjoamaa komentoa ja tilanteeseen sopivaa +skaalauskerrointa esimerkiksi seuraavalla tavalla: + +\komentomargin{addfontfeatures} +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\addfontfeatures{Scale=3.2} Poikkeuksellisen isoa tekstiä} +\end{koodilohkosis} + +\noindent +Jos edellä mainitut kummallisuudet eivät häiritse eikä ole tarvetta +määritellä fontteja tarkasti tietyn pistekoon mukaiseksi, on +suhteellinen määrittelytapa todella helppo. Kaikki dokumentin fontit +määräytyvät perusfontin skaalauskertoimen kautta. Tämä tapa sopii hyvin +varsinkin dokumentin sisällön kirjoittamisvaiheeseen, jossa ehkä +halutaan vain nopeasti asettaa dokumentti suurin piirtein järkevän +näköiseksi. Myöhemmin voi määrittää koot tarkemmin niin sanotun +absoluuttisen menetelmän avulla, jota käsitellään seuraavassa +alaluvussa. + +\subsection{Fonttikoon määrittely absoluuttisesti} +\label{luku/fontti-absoluuttinen} + +Absoluuttinen fonttien koonmääritystapa tarkoittaa sitä, että koot +asetetaan tietyn kokoiseksi käyttämällä esimerkiksi pistemittoja ja että +kirjaimet myös päätyvät lopulliseen dokumenttiin juuri sen kokoisena. +Tämä tapa on myös teknisesti eheä, eli Latexin eri osat ovat samaa +mieltä siitä, minkäkokoisesta fontista on kyse. Näin ei ollut +suhteellisen tavan kanssa (luku \ref{luku/fontti-suhteellinen}). + +Joskus oppilaitoksen, yhtiön tai muun julkaisijan ohjeissa määritellään +tarkasti, mitä fontteja käytetään ja mikä on leipätekstin ja otsikoiden +fonttikoko. Silloin tarvitaan tässä luvussa kuvattua tapaa fonttien +asettamiseen. + +\begin{esimerkki*} + \komentoi{documentclass} + \komentoi{usepackage} + \pakettii{fontspec} + \komentoi{setmainfont} + \komentoi{setsansfont} + \komentoi{setmonofont} + \komentoi{newfontfamily} + \komentoi{linespread} + \komentoi{renewcommand} + \komentoi{footnotesize} + \komentoi{small} + \komentoi{normalsize} + \komentoi{large} + \komentoi{Large} + +\begin{koodilohko} +\documentclass{article} +\usepackage{fontspec} + +% Leipätekstiin samankokoiset fontit +\setmainfont{TeX Gyre Termes} +\setsansfont{TeX Gyre Heros} [Scale=MatchLowercase] +\setmonofont{TeX Gyre Cursor}[Scale=MatchLowercase] + +% Muualle sans ja mono ilman skaalausta +\newfontfamily{\sffamilyabs}{TeX Gyre Heros} +\newfontfamily{\ttfamilyabs}{TeX Gyre Cursor} + +\linespread{1} % ei välttämättä tarvita + +% Kaikki tarvittavat fonttikoot ja komennot +\renewcommand{\footnotesize}{\fontsize{10bp}{12bp}\selectfont} +\renewcommand{\small} {\fontsize{12bp}{14bp}\selectfont} +\renewcommand{\normalsize} {\fontsize{14bp}{17bp}\selectfont} +\renewcommand{\large} {\fontsize{17bp}{19bp}\selectfont} +\renewcommand{\Large} {\fontsize{20bp}{22bp}\selectfont} + +\normalsize % jotta tulee heti voimaan eikä vasta tekstiosassa +\end{koodilohko} + \caption{Fonttikokojen määrittäminen pistekoon avulla} + \label{esim/fontti-absoluuttinen} +\end{esimerkki*} + +Esimerkistä \ref{esim/fontti-absoluuttinen} selviää perusajatus. +Peruskirjainperhe (rivi~5) otetaan käyttöön ilman skaalausta +(\koodi{Scale=1}), minkä vuoksi koon voi jatkossa asettaa täsmälleen +kohdalleen \komento{fontsize}\-/komennolla. Samaa ei tehdä groteskin +eikä tasalevyisen fontin kanssa (rivit 6--7), vaan käytetään skaalausta +\koodi{MatchLowercase}, jotta tekstikappaleessa kaikki kirjainperheet +näyttävät samankokoisilta. Tässä menetetään mahdollisuus määrittää +näiden kirjainperheiden koko täsmällisesti pistemitan avulla. Jos siihen +on tarvetta esimerkiksi otsikoissa, voidaan käyttää rivien 10--11 +komentoja. Niillä luodaan uudet kirjainperheet, jotka ovat käytännössä +samoja mutta ilman skaalausta. + +Uusien skaalaamattomien kirjainperheiden komentojen nimiksi on valittu +\komentox{sf\-fam\-i\-ly\-abs} ja \komentox{tt\-fam\-i\-ly\-abs} (vrt. +\komento{sffamily} ja \komento{ttfamily}, taulukko +\ref{tlk/fonttimallikomennot}), ja näillä komennoilla kirjainperheet +kytketään päälle. Jos esimerkiksi jonkin julkaisun vaatimuksiin kuuluu, +että otsikossa täytyy olla 20 pisteen lihavoitu TeX Gyre Heros +\=/kirjainleikkaus, voi esimerkissä \ref{esim/fontti-absoluuttinen} +olevien asetusten pohjalta antaa otsikon ulkoasun (luku +\ref{luku/otsikot-ulkoasu}) määrittelyn yhteydessä seuraavat komennot: + +\komentoi{Large} +\komentoi{bfseries} +\begin{koodilohkosis} +\sffamilyabs\Large\bfseries +\end{koodilohkosis} + +\noindent +Esimerkin \ref{esim/fontti-absoluuttinen} riveillä 16--20 määritellään +uudelleen Latexin korkean tason komennot, joilla fonttikoot asetetaan. +Oletusarvot tulevat dokumenttiluokasta (luku +\ref{luku/dokumenttiluokat}), mutta jos ne eivät ole sopivia, täytyy +vähintäänkin määritellä komento \komento{normalsize} mutta sen lisäksi +kaikki ne koot, joita omassa dokumentissa tarvitaan. Tässä esimerkissä +normaali koko asetetaan 14 pisteen kokoiseksi. + +Jokaiselle fonttikoolle määritetään riveillä 16--20 myös oma +rivikorkeus, ja se on tarkoitus asettaa sopivaksi juuri kyseiselle +koolle. Rivikorkeuteen vaikuttaa myös kerroin \komento{baselinestretch}, +joka asetetaan komennolla \komento{linespread}. Sitä ei välttämättä +tarvitse käyttää, koska kirjainperheitä ei ole skaalattu ja koska +rivikorkeus asetetaan aina \komento{fontsize}\-/komennolla. +\komento{linespread} on kuitenkin kätevä komento rivikorkeuden +säätämiseen yleisesti kaikkialla. + +Fonttikokojen määrittelyn lopuksi rivillä 22 suoritetaan komento +\komento{normalsize}, jotta se tulee heti voimaan. Dokumentin +esittelyosassa voidaan käyttää fonttikokoon viittaavia mittayksiköitä +\emph{em} ja \emph{ex}, ja ne viittaavat nyt tähän kokoon. +\komento{normalsize}\-/ komento suoritetaan kyllä myöhemmin +automaattisesti dokumentin tekstiosan eli \ymparistox{document}\-/ +ympäristön alussa. + +Edellä kuvatun absoluuttisen koonmääritystavan etuna on se, että +kirjoittaja hallitsee fonttien kokoa ja rivikorkeuksia tarkasti ja että +julkaisuun saadaan juuri ne mitat, jotka halutaan tai vaaditaan. Tapa on +myös teknisesti eheä eli toimii Latexin sisäisen logiikan näkökulmasta +oikein. Haittana voi pitää sitä, että kaikki koot täytyy määritellä +erikseen. + +\subsection{Fonttien oletusasetuksia} +\label{luku/fontit-oletusasetukset} + +Oletuksena Latex\-/dokumentin peruskirjainperheessä +(\komentom{setmainfont}) ja pääteviivattomassa kirjainperheessä +(\komentom{setsansfont}) ovat päällä muun muassa seuraavat asetukset:% + +\begin{koodilohkosis} +Ligatures={TeX, Common} +HyphenChar=- +\end{koodilohkosis} + +\noindent +\koodi{TeX}\-/ligatuurit tarkoittavat lainausmerkkien ja ajatusviivojen +tuottamiseen tarkoitettuja Texin merkintätapoja kuten \koodi{''} ja +\koodi{\==}, joita käsitellään luvuissa \ref{luku/lainausmerkit} ja +\ref{luku/yhdys-ajatus-miinus}. Ne eivät ole varsinaisia luonnollisen +kielen eivätkä typografisia ligatuureja vaan kuuluvat ainoastaan +Tex\-/kielen merkintätapoihin. \koodi{Common}\-/ ligatuurit sen sijaan +ovat oikeita typografisia ligatuureja kuten fi, ff ja fl, ja niitä +käsitellään tarkemmin luvussa \ref{luku/typo-liga}. Molemmat edellä +mainitut ligatuurityypit saa pois päältä seuraavalla asetuksella: + +\begin{koodilohkosis} +Ligatures={TeXReset, NoCommon} +\end{koodilohkosis} + +\noindent +Valitsin \koodi{Hyphen\-Char} asettaa tavutusmerkin kyseiselle +kirjainperheelle. Oletuksena se on yhdysmerkki (\=/), mutta merkin +vaihtaminen toimii vain Xelatex\-/kääntäjän kanssa, ei esimerkiksi +Lualatexilla. Sen sijaan kaikilla kääntäjillä tavutuksen voi kytkeä +kirjainperheeltä pois, kun antaa arvoksi \koodi{None}. Tavutusta +käsitellään perusteellisemmin luvussa \ref{luku/tavutus}. + +Tasalevyinen kirjainperhe (\komentom{setmonofont}) toimii oletuksena +hieman eri tavalla. Niissä muun muassa ei ole lainausmerkkien ja +ajatusviivojen kirjoittamiseen tarkoitetut Tex\-/ligatuurit päällä. +Oletusasetuksia ovat muun muassa seuraavat: + +\begin{koodilohkosis} +Ligatures=Common +HyphenChar=None +\end{koodilohkosis} + +\noindent +Yleensä tasalevyisestä kirjainperheestä kannattaa kytkeä typografiset +ligatuurit pois päältä asetuksella \koodi{Liga\-tures=\katk No\-Common}. +Tasalevyisen fontin ajatukseen nimenomaan kuuluu, että merkit ovat +samanlevyisiä eikä yhden merkin tilaan sovi sulloa useampaa kirjainta. + +Oletuksena tavutus on kytketty pois päältä tasalevyiseltä +kirjainperheeltä, koska sitä käytetään tavallisesti tietokoneisiin +liittyvien koodien tai vastaavien ilmausten latomiseen, eikä niitä +haluta yleensä tavuttaa. Tavutuksen saa kuitenkin päälle Xelatexissa +määrittämällä tavutusmerkiksi esimerkiksi yhdysmerkin +(\koodi{Hyphen\-Char=-}) tai kaikilla kääntäjillä poistamalla +tasalevyisen kirjainperheen oletusasetukset ennen sen määrittelyä +seuraavasti: + +\komentoi{defaultfontfeatures} +\komentoi{ttfamily} +\komentoi{setmonofont} +\begin{koodilohkosis} +\defaultfontfeatures[\ttfamily]{} +\setmonofont{…}[…] +\end{koodilohkosis} + +\noindent +Komennolla \komentom{defaultfontfeatures} voi asettaa (joidenkin) +kirjainperheiden oletusasetukset, kun komennon suorittaa ennen +kirjainperheiden määrittelyä. + +\komentoi{defaultfontfeatures} +\komentoi{rmfamily} +\komentoi{sffamily} +\begin{koodilohkosis} +\defaultfontfeatures[\rmfamily,\sffamily]{Ligatures={TeX, Common}, + Numbers=Lowercase} +\end{koodilohkosis} + +\noindent +Komennon valinnaisella argumentilla voi rajata, mitä kirjainperheitä +oletusasetukset koskevat. Valinnaiseen argumenttiin kirjoitetaan yksi +tai useampia pilkulla erotettuja komentoja, joilla kirjainperheet +kytketään päälle: \komento{rmfamily}, \komento{sffamily}, +\komento{ttfamily} (taulukko \ref{tlk/fonttimallikomennot}, +s.~\pageref{tlk/fonttimallikomennot}) tai komennolla +\komento{newfontfamily} määritelty fonttikomento (luku +\ref{luku/fontin-valinta}). + +\subsection{Typografiset ligatuurit} +\label{luku/typo-liga} + +Typografiset ligatuurit ovat fontissa olevia yhdistelmämerkkejä, joissa +on typografisista syistä yhdistetty kaksi tai useampia kirjaimia yhteen +merkkiin.% +\footnote{Typografisten ligatuurien lisäksi on olemassa myös + luonnollisten kielten ligatuureja, jotka muodostavat kieleen kuuluvan + kirjaimen, kuten æ norjan kielessä. Niillä on jokin luonnolliseen + kieleen liittyvä merkitys, eikä eri merkkejä ei ole yhdistetty + typografisista syistä.} Tällaisia ligatuureja käytettiin jo +metalliladonnassa, eli samassa metallikirjakkeessa saattoi olla enemmän +kuin yksi kirjain. + +Typografisten ligatuurien tarkoituksena on tuottaa tyylikkäämpi +lopputulos kuin saataisiin erillisten kirjainten avulla. Syynä on +esimerkiksi se, että erilliset peräkkäiset kirjaimet eivät ole aina +keskenään yhteensopivia. Kirjainten välistys voi olla ongelmallista: +sopivalle etäisyydelle asetettaessa kirjainten osat voivat mennä +rumannäköisesti päällekkäin. Riippuu fontista, mitkä ligatuurit ovat +tarpeellisia ja mitkä ligatuurimerkit on ylipäätään toteutettu fontin +merkistöön. Tavallisia antiikvojen ligatuureja ovat fi, ff, ffi, fl, +ffl, fj ja ffj, mutta jotkin fontit sisältävät muitakin. Kuvaan +\ref{kuva/ligatuurit} on koottu esimerkkejä. + +\leijukuva{ + \erikoisfontti + \addfontfeatures{Scale=3.4, Ligatures={Common, Historic, + Discretionary}} + fi ff ffi fl ffl fj ffj Th st ct +}{ + \caption{Tavalliset f\=/alkuiset typografiset ligatuurit, vähän + harvinaisempi Th sekä historialliset ligatuurit st ja ct} + \label{kuva/ligatuurit} +} + +Latex hoitaa tavallisten typografisten ligatuurien latomisen +automaattisesti, eli lähdedokumenttiin ei kannata kirjoittaa +Unicode\-/merkistön typografisia ligatuurimerkkejä (esimerkiksi +\uctunnus{u+fb01 latin small ligature fi}) vaan ihan tavallisia +erillisiä kirjaimia. \englanti{Open Type} \=/fontin suunnittelija on +päättänyt meidän puolestamme, mitkä kirjainyhdistelmät on parasta latoa +ligatuurin avulla, ja oletusasetuksilla Latex noudattaa niitä ohjeita. + +Jos kuitenkin yksittäisen ligatuurin muodostumisen haluaa estää, voi +kirjainten väliin kirjoittaa komennon \komentom{textcompwordmark}, joka +tekee näkymättömän, juuri tähän tarkoitukseen olevan merkin +\uctunnus{u+200c zero width non-joiner}. + +\komentoi{textcompwordmark} +\begin{koodilohkosis} +fi f\textcompwordmark i +\end{koodilohkosis} + +\begin{tulossis} + fi f\textcompwordmark i +\end{tulossis} + +\noindent +Mikäli tavallisia ligatuureja ei halua käyttöön lainkaan, on parasta +valita jo kirjainperheen tai \=/leikkauksen käyttöönotossa asetus +\koodi{Liga\-tures=\katk No\-Com\-mon}. Väliaikaisesti fontin asetuksiin +voi vaikuttaa komennolla \komentom{addfontfeatures}, joka sekin on +\paketti{fontspec}\-/pakettiin sisältyvä komento. + +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\addfontfeatures{Ligatures=NoCommon} fi fl} +\end{koodilohkosis} + +\noindent +Tavallisten ligatuurien lisäksi \englanti{Open Type} \=/fontit voivat +sisältää myös harvinaisempia ligatuureja, jotka täytyy erikseen kytkeä +päälle. Niiden tarkoituksena on esimerkiksi erityinen koristeellisuus +tai historiallisen kirjoitustavan jäljittely. Harvinaisia ligatuureja ei +ole tarkoitus käyttää joka tilanteessa vaan ainoastaan erityisestä +syystä. Kuvassa \ref{kuva/ligatuurit} ja tässäkin tekstikappaleessa +olevat {% + \newcommand{\hlig}[1]{{\erikoisfontti + \addfontfeatures{Ligatures=Historic}#1}}% + \hlig{st}- ja \hlig{ct}\-/ligatuurit% +} on saatu fontin asetuksella \koodi{Liga\-tures=\katk His\-toric}. +Joissakin fonteissa sama tehdään asetuksella \koodi{Liga\-tures=\katk + Discretionary}. Useitakin ligatuurityyppejä voi kytkeä päälle +samanaikaisesti: + +\begin{koodilohkosis} +Ligatures={TeX, Required, Common, Historic, Discretionary, + Contextual} +\end{koodilohkosis} + +\noindent +Tuskin mikään fontti sisältää kaikkia ligatuurityyppejä, eikä se ole +tarkoituskaan. Jotkin ligatuurit kuuluvat vain tiettyyn typografian +aikakauteen tai kirjaintyyliin. Open Type \=/fontin ominaisuuksia voi +selvittää käyttöjärjestelmän komentotulkissa komennolla \koodi{otfinfo}. +Komennon argumentiksi annetaan muun muassa fonttitiedoston nimi. + +\subsection{Numeroiden muoto} +\label{luku/fontit-numerot} + +Varsinkin kirjatypografiassa on tavallista käyttää pääasiassa +gemenanumeroita ({\gemenanum 1967}) eikä versaalinumeroita +({\versaalinum 1967}), koska gemenanumerot sopivat leipätekstin +gemenakirjainten kanssa paremmin yhteen. Versaalinumerot puolestaan +erottuvat paremmin ja sopivat esimerkiksi taulukoihin, joissa on paljon +lukuja. Näihin asetuksiin vaikutetaan fontin asetuksella +\koodi{Numbers}. Tosin kaikissa fonteissa ei gemenanumeroita edes ole. + +\begin{koodilohkosis} +Numbers=Lowercase % gemenanumerot +Numbers=Uppercase % versaalinumerot (oletus) +\end{koodilohkosis} + +\noindent +Jotkin koodi\-/ilmaukset sisältävät versaalikirjaimia ja numeroita +sekaisin. Gemenanumerot eivät kuitenkaan sovi yhteen versaalikirjainten +kanssa, koska merkkien kokoero on häiritsevän suuri. Ei siis näin: +RJ45, R2D2. Gemenanumeroiden kanssa täytyy käyttää pienversaalia eli +kapiteelia: \textsc{rj45}, \textsc{r2d2}. Toinen vaihtoehto on käyttää +pelkästään versaaleja: {\versaalinum RJ45, R2D2}. + +Silloin kun käytetään numeroita teknisten koodien ilmaisemiseen, voi +olla tarpeen merkitä numero nolla poikkiviivalla +({\addfontfeatures{Numbers={Uppercase, SlashedZero}} 0}), jottei se +sekoitu O\=/kirjaimeen. Nollaan saadaan poikkiviiva seuraavalla +asetuksella, jos vain fontissa on tämä ominaisuus: + +\begin{koodilohkosis} +Numbers=SlashedZero +\end{koodilohkosis} + +\noindent +Kun numeroita ladotaan taulukkoon, voidaan haluta käyttää tasalevyisiä +numeroita, jotta ne sijoittuvat allekkain samalle linjalle. Joissakin +fonteissa on tarjolla tavallisten vaihtelevan levyisten numeroiden +lisäksi myös tasalevyiset. Numeroiden leveyteen vaikutetaan seuraavilla +asetuksilla: + +\begin{koodilohkosis} +Numbers=Monospaced % tasalevyiset numerot +Numbers=Proportional % vaihtelevan levyiset numerot (oletus) +\end{koodilohkosis} + +\subsection{Välistykset: harvennus ja tiivistys} +\label{luku/fontit-välistys} + +Fontin kanssa käytettäviä sanavälejä voi säätää \koodim{Word\-Space}\-/ +valitsimella, jonka arvoksi annetaan desimaalilukukerroin eli suhdeluku +normaaliin verrattuna. Arvona voi olla myös kolme eri kerrointa, jolloin +mukana on lisäksi sanavälin venymisen rajat. Tämä asetus on tehtävä +kirjainperheen tai \=/leikkauksen määrittelyn yhteydessä, eli se ei +toimi esimerkiksi \komento{addfontfeatures}\-/ komennon kanssa. Katso +tietoa sanaväleistä myös luvusta \ref{luku/sanaväli} tai +tekstikappaleiden latomista käsittelevästä luvusta \ref{luku/kappale}. +\noclub[2] + +Fonttiasetusten valitsimella \koodim{Letter\-Space} säädetään merkkien +välistystä eli niiden välistä tyhjää tilaa. Arvoksi annetaan +positiivinen tai negatiivinen prosenttiluku, joka ilmaisee alkuperäiseen +lisättävän osuuden. Asetus \koodi{Letter\-Space=\katk 6} tuottaa siis +kuusi prosenttia leveämmät merkkien välit. Välistyksen tiivistäminen ja +harvennuksen typografiaa käsitellään luvussa +\ref{luku/korostus-harvennus}, mutta seuraavassa on esimerkki, kuinka ne +teknisesti toteutetaan: + +\komentoi{scshape} +\komentoi{addfontfeatures} +\begin{koodilohkosis} +\scshape {\addfontfeatures{LetterSpace=-2} tiivistys} \\ +normaali \\ {\addfontfeatures{LetterSpace=6} harvennus} +\end{koodilohkosis} + +\begin{tulossis} + \scshape {\addfontfeatures{LetterSpace=-2} tiivistys} \\ + normaali \\ {\addfontfeatures{LetterSpace=6} harvennus} +\end{tulossis} + +\noindent +Jos esimerkiksi harvennuksen haluaa automaattisesti mukaan +kirjainperheeseen kuuluvaan pienversaaliin, käytetään valitsinta +\koodi{Small\-Caps\-Features}: + +\komentoi{setmainfont} +\begin{koodilohkosis} +\setmainfont{…}[SmallCapsFeatures={LetterSpace=6}] +\end{koodilohkosis} + +\subsection{Keinotekoinen venytys, lihavointi ja kallistus} +\label{luku/fontit-venytys} + +Valitsimella \koodim{Fake\-Stretch} voi venyttää tai kutistaa merkkejä +leveyssuunnassa. Arvoksi annetaan desimaalilukukerroin, joka on +suhdeluku alkuperäiseen leveyteen nähden. Seuraavassa havainnollistava +esimerkki: + +\komentoi{addfontfeatures} +\begin{koodilohkosis} +esimerkki \\ +{\addfontfeatures{FakeStretch=1.3} esimerkki} +\end{koodilohkosis} + +\begin{tulossis} + esimerkki \\ + {\addfontfeatures{FakeStretch=1.3} esimerkki} +\end{tulossis} + +\noindent +Kirjainleikkauksen leventäminen tekee tekstistä samalla lihavampaa, +koska kirjainten viivat tulevat vahvemmiksi leveyssuunnassa. +Korkeussuunnassa vahvuus säilyy ennallaan, joten kirjainten +viivakontrasti muuttuu. Kirjainleikkauksen kutistaminen vaikuttaa +lihavuuteen päinvastaisesti. Tällainen mekaaninen fontin +''korjaileminen'' ei välttämättä tuota typografisesti kovin hyvää jälkeä +mutta voi sopia lievästi käytettynä esimerkiksi otsikoihin. Tämän oppaan +tasalevyistä kirjainperhettä on hieman kutistettu, koska alkuperäinen on +kohtuuttoman leveä ({\ttfamily\addfontfeatures{FakeStretch=1} + esimerkki}) verrattuna muiden kirjainperheiden leveyteen. + +Jos kirjainperheeseen ei sisälly sopivaa lihavoitua tai kaltevaa +leikkausta, voi sellaiset koettaa tehdä myös keinotekoisesti +\koodim{Fake\-Bold}- ja \koodim{Fake\-Slant}\-/ valitsimien avulla. +Niille annetaan arvoksi desimaalilukukerroin. Valitettavasti +\koodi{Fake\-Bold} toimii vain Xelatex\-/kääntäjän kanssa. + +\komentoi{addfontfeatures} +\begin{koodilohkosis} +pysty {\addfontfeatures{FakeSlant=.2} kalteva} +\end{koodilohkosis} + +\begin{tulossis} + pysty {\addfontfeatures{FakeSlant=.2} kalteva} +\end{tulossis} + +\noindent +Mekaanisen lihavoinnin tai kallistuksen saa osaksi kirjainperhettä, kun +asettaa kirjainperheen määrittelyn yhteydessä halutun kirjainleikkauksen +valitsimella \koodi{Bold\-Font} tai \koodi{Slanted\-Font} ja määrittää +niille erityisiä ominaisuuksia valitsimella \koodi{Bold\-Fea\-tures} tai +\koodi{Slanted\-Fea\-tures}. Seuraava esimerkki asettaa dokumentin +perusfontille kaltevan leikkauksen. Tämän jälkeen komento +\komento{slshape} valitsee \textsl{kaltevan} leikkauksen, joka on siis +eri asia kuin \textit{kursiivi} (\komento{itshape}). + +\komentoi{setmainfont} +\begin{koodilohkosis} +\setmainfont{…}[ + SlantedFont={…}, % tähän pystyasentoinen leikkaus + SlantedFeatures={FakeSlant=.2}] +\end{koodilohkosis} + +\subsection{Keinotekoinen pienversaali} +\label{luku/fontit-keinopienversaali} + +Moniin fontteihin ei sisälly lainkaan pienversaalia. Jos sellaisen silti +haluaa omaan korostusvalikoimaan, voi yrittää pienentää +versaalikirjaimet sopivaan kokoon. Seuraavassa esimerkissä versaaleja +ensin pienennetään ja sitten venytetään hieman leveyssuunnassa. Lisäksi +merkkivälejä harvennetaan lievästi. Käytännössä versaaleja pienentämällä +ei saada tyylikästä pienversaalia aikaan, koska merkkien viivoista tulee +liian ohuita. + +\komentoi{textsc} +\komentoi{addfontfeatures} +\begin{koodilohkosis} +\textsc{pienversaali} oikea \\ +{\addfontfeatures{ScaleAgain=.68, FakeStretch=1.17, LetterSpace=4} + PIENVERSAALI} keinotekoinen +\end{koodilohkosis} + +\begin{tulossis} + \textsc{pienversaali} oikea \\ + {\addfontfeatures{ScaleAgain=.68, FakeStretch=1.17, LetterSpace=4} + PIENVERSAALI} keinotekoinen +\end{tulossis} + +\subsection{Matematiikkatilan fontti} +\label{luku/matematiikka-fontit} + +Latexin matematiikkatilan (luku \ref{luku/matematiikka}) fontti +asetetaan eri tavalla kuin normaalin tilan eli tekstitilan fontit. +Matematiikkatilaa varten tarvitaan paketti \pakettictan{unicode-math}, +joka täytyy ladata muiden matematiikkaan tai fontteihin liittyvien +pakettien jälkeen. Paketti tuo komennon \komento{setmathfont}, joka on +matematiikkatilan vastine luvussa \ref{luku/fontin-valinta} esitellyille +fontinmäärittelykomennoille \komento{setmainfont}, \komento{setsansfont} +ja \komento{setmonofont}. + +\pakettii{fontspec} +\pakettii{unicode-math} +\komentoi{setmainfont} +\komentoi{setmathfont} +\begin{koodilohkosis} +\usepackage{fontspec} +\usepackage{unicode-math} +\setmainfont{TeX Gyre Pagella} % tekstitilan perusfontti +\setmathfont{TeX Gyre Pagella Math} % matematiikkatilan fontti +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\koodi{#1} & \koodi{#2} & \koodi{#3} \\} + + \begin{tabular}{lll} + \toprule + \ots{Yleistyyli} & \ots{Lihavointi} & \ots{Pääteviivaton} \\ + \midrule + \rivi{math-style=ISO} {bold-style=ISO} {sans-style=upright} + \rivi{math-style=TeX} {bold-style=TeX} {sans-style=italic} + \rivi{math-style=french} {bold-style=upright}{sans-style=literal} + \rivi{math-style=upright}{}{} + \rivi{math-style=literal}{}{} + \bottomrule + \end{tabular} +}{ + \caption{Matematiikkatilan tyyliasetuksia (\paketti{unicode-math}\-/ + paketti)} + \label{tlk/unicode-math-style} +} + +\noindent +Paketin \paketti{unicode-math} lataamisen yhteydessä voi +\komento{usepackage}\-/ komennon valinnaisen argumentin avulla vaikuttaa +matematiikkatilassa käytettyihin kirjainleikkauksiin. Argumenttiin +sopivia valitsimia ovat \koodi{math-style}, \koodi{bold-style} ja +\koodi{sans-style}, ja niille sopivia arvoja on koottu taulukkoon +\ref{tlk/unicode-math-style}. Asetukset vaikuttavat esimerkiksi siihen, +mitä kirjainleikkausta käytetään, kun ladotaan matematiikkatilan +latinalaisia tai kreikkalaisia kirjaimia. + +\begin{koodilohkosis} +\usepackage[math-style=ISO]{unicode-math} +\end{koodilohkosis} + +\noindent +Matematiikkatilan fontiksi ei kelpaa mikä tahansa, koska tarvittavien +matemaattisten symbolien täytyy sisältyä \englanti{Open Type} \=/fontin +merkkivalikoimaan. Tukea ei ehkä ole, jos sitä ei fontille erikseen +mainosteta. Fonttitiedoston ominaisuuksia voi tutkia esimerkiksi +käyttöjärjestelmän komentotulkissa \koodi{otfinfo}\-/ komennolla: + +\begin{koodilohkosis} +otfinfo -s texgyrepagella-math.otf +\end{koodilohkosis} + +\noindent +Tex Live \=/jakelun mukana tulee muutama \englanti{Open Type} +\=/kirjainperhe, joihin kuuluvat myös matematiikan symbolit. Tällaisia +kirjainperheitä ovat ainakin Libertinus sekä eri TeX Gyre \-/perheet. +Koko Libertinus\-/ perheen voi ottaa käyttöön hyvin yksinkertaisesti: +ladataan vain paketti \paketti{libertinus}, joka määrittää kerralla +antiikvan, groteskin, tasalevyisen ja matematiikkafontin. Myös +tavallisten fontinmäärityskomentojen käyttö on mahdollista. + +\begin{esimerkki*} + \komentoi{setmathfont} + +\begin{koodilohko} +\setmathfont{Libertinus Math Regular} +\setmathfont{TeX Gyre Bonum Math} +\setmathfont{TeX Gyre Dejavu Math} +\setmathfont{TeX Gyre Pagella Math} +\setmathfont{TeX Gyre Schola Math} +\setmathfont{TeX Gyre Termes Math} +\end{koodilohko} + + \caption{Matematiikan symboleja sisältäviä vapaita fontteja. Komento + \komento{setmathfont} sisältyy pakettiin \paketti{unicode-math}} + \label{esim/matematiikka-fontteja} +\end{esimerkki*} + +Esimerkissä \ref{esim/matematiikka-fontteja} on komentoja joidenkin +matematiikkafonttien lataamiseen. Lähes aina on järkevää käyttää +asetusta \koodi{Scale=\katk MatchLowercase}, joka asettaa fontin +samankokoiseksi kuin vastaava peruskirjainperhe. + +\begin{koodilohkosis} +\setmathfont{TeX Gyre Pagella Math}[Scale=MatchLowercase] +\end{koodilohkosis} + +\section{Kieli} +\label{luku/kieliasetukset} + +Melkein aina Latex\-/dokumenttiin täytyy ladata kielipaketti ja sen +mukana asetukset tiettyjä kieliä varten. Kieliasetukset sisältävät +ainakin tavutussäännöt (luku \ref{luku/tavutus}) sekä kielelle +mukautettuja nimiä dokumentin eri osille. Esimerkiksi sisällysluettelon +ja kirjallisuusluettelon otsikot tulevat kieliasetuksista, samoin +leijuvien taulukoiden ja kuvien nimet ''\tablename'' ja ''\figurename''. +Myös muita asetuksia tai komentoja saattaa tulla kieliasetusten mukana, +mutta ne vaihtelevat eri kielissä. + +Kielipaketteja on kaksi -- \pakettictan{babel} ja +\pakettictan{polyglossia} \==, ja kirjoittajan täytyy valita niistä +jompikumpi. Pakettien historia ja kehitys on suunnilleen +seuraavanlainen: \paketti{babel} on paljon vanhempi, ja monet vanhat +oppaat ja esimerkit käsittelevät pelkästään sitä. Kun Latex siirtyi +Unicode\-/aikaan Xelatex\-/kääntäjän ja \paketti{fontspec}\-/paketin +myötä, \paketti{babel} ei pysynyt kehityksessä mukana. Syntyi +\paketti{polyglossia}, joka hallitsee Unicoden sekä muitakin kuin +latinalaiseen kirjaimistoon perustuvia kieliä ja kirjoitusjärjestelmiä. +\paketti{babel}\-/paketin kehitys ei kuitenkaan pysähtynyt, ja nykyään +myös se toimii Unicode\-/merkistön kanssa ainakin latinalaiseen +kirjaimistoon perustuvien kielten osalta. + +Suomen kielen kannalta on aika lailla sama, kumpaa kielipakettia +käyttää. Meidän näkökulmastamme ''erikoisemmat'' kielet ja +kirjoitusjärjestelmät voivat vaatia \paketti{polyglossia}\-/paketin sekä +Lualatex\-/{} tai Xelatex\-/kääntäjän käyttöä. \paketti{babel} sisältää +enemmän ominaisuuksia, esimerkiksi omien komentojen ja muiden viritysten +tekemiseen; \paketti{polyglossia} on yksinkertaisempi paketti, jonka +kehitys tuntuisi keskittyvän vain ydintehtävään. + +Seuraavissa alaluvuissa käsitellään kummankin kielipaketin tärkeimmät +toiminnot eli kielen valintaan liittyvät asiat. Yleinen ajatus on se, +että Latex\-/dokumentin esittelyosassa ladataan kielipaketti ja +määritellään dokumentin pääasiallinen kieli ja mahdolliset muut kielet. +Jos dokumentin tekstiosa sisältää muita kuin pääasiallista kieltä, +täytyy käyttää erityisiä komentoja tai ympäristöjä, joilla kerrotaan +Latexille, mistä kielestä on kyse. + +\subsection{Polyglossia} + +Kielipaketti \paketti{polyglossia} on tyypillinen valinta, jos halutaan +varmistaa, että Unicode\-/merkistöä (\textsc{utf\=/8}\-/merkistökoodaus) +voi käyttää vapaasti. Samalla se tarkoittaa, että kääntäjän on oltava +Lualatex tai Xelatex. Kielipaketin käyttöönotto dokumentin +esittelyosassa näyttää seuraavanlaiselta: + +\komentoi{usepackage} +\komentoi{setdefaultlanguage} +\komentoi{setotherlanguage} +\pakettii{polyglossia} +\begin{koodilohkosis} +\usepackage{polyglossia} +\setdefaultlanguage{finnish} +\setotherlanguage{english} +\setotherlanguage{greek} +\end{koodilohkosis} + +\noindent +Eri kielillä on erilaisia valinnaisia asetuksia, jotka täytyy selvittää +\paketti{polyglossia}\-/paketin ohjekirjasta. Asetukset liittyvät +esimerkiksi kielen kirjoitusjärjestelmän alueelliseen tai +historialliseen vaihteluun. Yleinen moniin kieliin sopiva valitsin on +\koodi{babel\-short\-hands}, joka lisää erilaisia, lähinnä tavutukseen +liittyviä komentoja (luku \ref{luku/tavutus}). Suomen kielen voisi siis +ottaa käyttöön myös seuraavalla tavalla: + +\komentoi{setdefaultlanguage} +\begin{koodilohkosis} +\setdefaultlanguage[babelshorthands]{finnish} +\end{koodilohkosis} + +\noindent +Dokumentin tekstiosa käyttää kieltä, joka määriteltiin komennolla +\komento{setdefaultlanguage}. Muita dokumentin esittelyosassa +määriteltyjä kieliä voi käyttää väliaikaisesti komennolla, joka alkaa +kirjaimilla \komentox{text} ja jatkuu kielen nimellä, esimerkiksi +\komento{textenglish} tai \komento{textgreek}. + +\komentoi{textenglish} +\begin{koodilohkosis} +Englannin sana \textenglish{shorthand} tarkoittaa 'pikakirjoitusta'. +\end{koodilohkosis} + +\noindent +Toinen vaihtoehto on käyttää kielen nimen mukaista ympäristöä: + +\begin{koodilohkosis} +\begin{greek} + ... +\end{greek} +\end{koodilohkosis} + +\noindent +Tietynkieliseksi merkitty teksti voi näyttää ladotussa dokumentissa ihan +samalta kuin muukin teksti. Tavutuksessa kuitenkin käytetään eri +kielissä eri asetuksia, ja joissakin kielissä voi olla myös pieniä +typografisia yksityiskohtia eri tavalla. + +Kirjoittaja voi määritellä eri kielille eri fontin. Oletuksena käytetään +peruskirjainperhettä, mikä samalla tarkoittaa, että kielen vaihtuessa +pois oletuskielestä suoritetaan \komento{rmfamily}\-/komento (taulukko +\ref{tlk/fonttimallikomennot}, s.~\pageref{tlk/fonttimallikomennot}). +Tätä havainnollistaa seuraava esimerkki, jossa \komento{textenglish}\-/ +komennon vaikutuksen ajaksi tulee käyttöön perusfontti +\komento{rmfamily} eikä ympärillä oleva pääteviivaton +\komento{sffamily}. + +\komentoi{sffamily} +\komentoi{textenglish} +\begin{koodilohkosis} +\sffamily +pääteviivaton \textenglish{main font} pääteviivaton +\end{koodilohkosis} + +\begin{tulossis} + \sffamily pääteviivaton {\rmfamily main font} pääteviivaton +\end{tulossis} + +\noindent +Erikielisten tekstikatkelmien fonttiin voi vaikuttaa määrittelemällä +komennon, jonka nimessä on ensin kielen nimi ja lopuksi sana +\koodi{font}, esimerkiksi \komento{englishfont} tai \komento{greekfont}. +Komennon määritelmään kirjoitetaan yleensä kirjainperheeseen tai +\=/leikkaukseen vaikuttavia komentoja. + +Seuraavassa esimerkissä \komento{englishfont}\-/ komento määritellään +tyhjäksi, mikä saa aikaan sen, että englanninkieliseksi merkitty teksti +ei muuta fonttia millään tavalla vaan käytetään samaa kirjainperhettä +kuin muutenkin siinä kohdassa dokumenttia. + +\begin{koodilohkosis} +\newcommand{\englishfont}{} +\end{koodilohkosis} + +\noindent +Mikäli haluaa jollekin kielelle kokonaan eri kirjainperheen, kannattaa +käyttää \paketti{fontspec}\-/paketin komentoa \komento{newfontfamily} +(luku \ref{luku/fontin-valinta}) ja määritellä kielen fonttikomennot +sillä. Tällainen on tarpeen ainakin silloin, kun dokumentin +peruskirjainperhe ei sisällä kyseisen kielen kirjaimia. + +\komentoi{newfontfamily} +\begin{koodilohkosis} +\newfontfamily{\greekfont}{GFS Artemisia}[Scale=MatchLowercase] +\end{koodilohkosis} + +% Seuraat eivät tunnu toimivan: + +% \newfontfamily{\greekfontsf}{GFS Neohellenic} [Scale=MatchLowercase] +% \newfontfamily{\greekfonttt}{DejaVu Sans Mono}[Scale=MatchLowercase] +% +% Edellisen esimerkin \koodi{fontsf}\-/loppuinen komento tarkoittaa +% pääteviivatonta kirjainperhettä ja \koodi{fonttt}\-/loppuinen +% tasalevyistä perhettä. + +% \textenglish{englantia \textsf{englantia} englantia} + +\subsection{Babel} + +Vanha kunnon \paketti{babel} toimii useiden eri Latex\-/kääntäjien +kanssa. Dokumentit kirjoitettiin ennen kahdeksanbittisillä merkistöillä +(kuten \textsc{iso-8859\=/1}), jotka sisältävät vain reilut kaksisataa +merkkiä% +\footnote{Teknisesti kahdeksanbittiset merkistöt sisältävät + 2\textsuperscript8 eli 256 merkkipaikkaa, mutta osa merkeistä on + teknisiä ohjauskoodeja, jotka eivät liity ihmiskieliin.} % +ja soveltuvat rajallisen kielijoukon kirjoittamiseen. Nykyään +\paketti{babel} toimii myös Unicode\-/merkistön ja \textsc{utf\=/8}\-/ +merkistökoodauksen kanssa ainakin latinalaiseen kirjaimistoon +perustuvien kielten osalta. + +Kieliasetukset otetaan käyttöön \paketti{babel}\-/paketissa seuraavan +esimerkin tavoin. Paketin valinnaiseen argumenttiin kirjoitetaan +ladattavien kielten nimet ja viimeisenä mainitaan se kieli, joka +halutaan pääasialliseksi kieleksi. + +\komentoi{usepackage} +\pakettii{babel} +\begin{koodilohkosis} +\usepackage[english,greek,finnish]{babel} +\end{koodilohkosis} + +\noindent +Pääasiallisen kielen voi valita myös \koodi{main}\-/valitsimella: + +\komentoi{usepackage} +\pakettii{babel} +\begin{koodilohkosis} +\usepackage[main=finnish,english,greek]{babel} +\end{koodilohkosis} + +\noindent +Dokumentin tekstissä yksittäiset vieraskieliset sanat tai ilmaukset +merkitään komennolla \komento{foreignlanguage}. Komennon ensimmäinen +argumentti on kielen nimi ja toinen on sillä kielellä ladottava teksti. + +\komentoi{foreignlanguage} +\begin{koodilohkosis} +Englannin sana \foreignlanguage{english}{shorthand} tarkoittaa +'pikakirjoitusta'. +\end{koodilohkosis} + +\noindent +Komennon sijasta voi käyttää ympäristöä \ymparisto{otherlanguage}, joka +vaihtaa kieltä ympäristön ajaksi. + +\ymparistoi{otherlanguage} +\begin{koodilohkosis} +\begin{otherlanguage}{greek} + ... +\end{otherlanguage} +\end{koodilohkosis} + +\noindent +Kielen vaihtamista voi helpottaa \komento{babeltags}\-/ komennolla, joka +määrittelee lyhempiä komentoja ja ympäristöjä kielen vaihtamiseen. +Komentoa käytetään seuraavan esimerkin tavoin. Sen jälkeen voi käyttää +englanninkielisen tekstin merkitsemiseen komentoa \komentox{text\-eng} +tai ympäristöä \ymparistox{eng}. + +\komentoi{babeltags} +\begin{koodilohkosis} +\babeltags{eng = english} +\end{koodilohkosis} + +\noindent +Oletuskieli voidaan vaihtaa kesken dokumentin komennolla +\komento{selectlanguage}. Komennon argumentiksi annetaan kielen nimi, +esimerkiksi seuraavalla tavalla: + +\komentoi{selectlanguage} +\begin{koodilohkosis} +\selectlanguage{english} +\end{koodilohkosis} + +\noindent +Eri kielille on mahdollista asettaa eri kirjainperheet +\komento{babelfont}\-/ komennolla. Tämä komento korvaa +\paketti{fontspec}\-/ paketin fontinvalintakomennot (luku +\ref{luku/fontin-valinta}) ja muodostaa uuden korkeamman tason komennon, +joka sisältää myös kielen. Jos siis käyttää komentoa +\komento{babelfont}, ei saa samanaikaisesti käyttää komentoja +\komento{setmainfont}, \komento{setsansfont} eikä \komento{setmonofont}. + +Oman dokumentin kirjainperheet voitaisiin määrittää +\komento{babelfont}\-/ komennolla esimerkin \ref{esim/babelfont} tavoin. +Ensin esimerkissä määritellään peruskirjainperhe (\koodi{rm}), +pääteviivaton perhe (\koodi{sf}) ja tasalevyinen perhe (\koodi{tt}). Sen +jälkeen määritellään kreikan kielessä (\koodi{greek}) käytettävä +peruskirjainperhe ja pääteviivaton perhe. + +\begin{esimerkki*} + \komentoi{babelfont} + +\begin{koodilohko} +\babelfont{rm}{TeX Gyre Termes} +\babelfont{sf}[Scale=MatchLowercase]{TeX Gyre Heros} +\babelfont{tt}[Scale=MatchLowercase]{TeX Gyre Cursor} + +\babelfont[greek]{rm}[Scale=MatchLowercase]{GFS Artemisia} +\babelfont[greek]{sf}[Scale=MatchLowercase]{GFS Neohellenic} +\end{koodilohko} + \caption{\komento{babelfont}\-/komennon käyttö dokumentin + kirjainperheiden valintaan ja kielikohtaisten kirjainperheiden + valintaan} + \label{esim/babelfont} +\end{esimerkki*} + +Esimerkissä ennen fontin nimeä (esim. TeX Gyre Heros) oleva valinnainen +argumentti on sama kuin \paketti{fontspec}\-/paketin +fontinvalintakomennoissa. Sen avulla määritellään kyseisen +kirjainperheen asetuksia. Lisätietoa voi lukea fontteja käsittelevästä +luvusta \ref{luku/kirjaintyypit} ja \pakettictan{fontspec}\-/ paketin +ohjekirjasta. + +\section{Tavutus} +\label{luku/tavutus} + +Tex tavuttaa eli katkaisee sanoja automaattisesti rivien lopussa, jotta +se saa tekstikappaleet näyttämään tasapainoisilta. Lähtökohtaisesti +tavutus määräytyy kielikohtaisten tavutussääntöjen ja \=/asetusten +perusteella, mutta kirjoittaja voi tehdä poikkeuksia kirjoittamalla +tavutusvihjeitä. Käytännössä tavutusvihjeitä tarvitaan välillä. + +Kielen valintaa ja yleisiä kieliasetuksia käsitellään tarkemmin luvussa +\ref{luku/kieliasetukset}, mutta mainitaan tässäkin, että suomen kieli +ja sen mukainen tavutus saadaan päälle, kun dokumentin esittelyosaan +kirjoittaa seuraavat komennot: + +\komentoi{usepackage} +\komentoi{setdefaultlanguage} +\pakettii{polyglossia} +\begin{koodilohkosis} +\usepackage{polyglossia} +\setdefaultlanguage{finnish} +\end{koodilohkosis} + +\noindent +Tavutusta käsitellään tässä yhteydessä lähinnä +\paketti{polyglossia}\-/kielipaketin näkökulmasta. Toinen kielipaketti +\paketti{babel} toimii joissakin tavutukseen liittyvissä asioissa eri +tavalla, ja pakettien eroja mainitaan tekstin lomassa. + +\subsection{Yleiset tavutussäännöt} + +Texin automaattinen tavutus ei perustu varsinaiseen sanojen eikä +taivutusmuotojen tunnistamiseen vaan yksinkertaisiin kirjainpohjaisiin +sääntöihin. Säännöt pyrkivät kuvaamaan kielen tavujen rakenteen ja +huomioimaan myös typografiaan liittyviä suosituksia. + +Automaattinen tavutus auttaa paljon, mutta se ei yksinään riitä, koska +se tekee välillä virheitä tai tuottaa muuten suositusten vastaista +jälkeä. Kirjoittajan täytyy auttaa välillä eli kirjoittaa +tavutusvihjeitä. Yksi tapa tavutusvihjeiden kirjoittamiseen on +\komento{hyphenation}\-/ komento, jolla määritellään yksittäisten +sanojen tavutuskohdat kaikkialla dokumentissa. Seuraava esimerkki +selventää komennon käyttöä: + +\komentoi{hyphenation} +\begin{koodilohkosis} +\hyphenation{ + ala-indek-si alku-osa + nimen-omaan + typo-gra-fi-nen +} +\end{koodilohkosis} + +\noindent +Komennon perään aaltosulkeiden sisään kirjoitetaan sanoja, jotka +erotetaan toisistaan sanaväleillä. Sanoihin kirjoitetaan yhdysmerkki +niihin kohtiin, joista sanan katkaiseminen on sallittua. Jos sanassa +itsessään on yhdysmerkki, sen tavutusta ei voi käsitellä tällä +komennolla. Luvussa \ref{luku/tavutuksen-merkit} kerrotaan muita tapoja. + +\komento{hyphenation}\-/komennon voi sijoittaa dokumentin esittelyosaan +tai tekstiosaan, mutta sijainti vaikuttaa sen toimintaan. Jos komennon +sijoittaa dokumentin esittelyosaan ennen kuin mitään kieltä on ladattu +tai valittu, se vaikuttaa kaikkien sanojen tavutukseen kielestä +riippumatta. Jos komennon sijoittaa dokumentin tekstiosaan eli kielen +valitsemisen jälkeen, se vaikuttaa vain kyseisen kielen eli yleensä +dokumentin pääasiallisen kielen tavutukseen. + +\subsection{Yksittäisten sanojen tavutus} +\label{luku/tavutuksen-merkit} + +Tietyt sanassa mukana olevat merkit kytkevät muut tavutussäännöt pois +päältä ja muuttavat sanan tavutuksen yksilölliseksi. Jos sanassa on +mukana yksikin tavutusvihje (\komento{-}), yhdysmerkki (\koodi{\=/}), +lyhyt ajatusviiva (\mbox{\koodi{--}}) tai pitkä ajatusviiva +(\mbox{\koodi{---}}), sana katkaistaan vain näiden kohdalta +(\koodi{\keno\=/}) tai jälkeen.% +\footnote{\paketti{polyglossia}\-/kielipaketti ja Tex toimivat tekstissä + kuvatulla tavalla. Sen sijaan \paketti{babel}\-/paketti määrittelee + ainakin suomen kielelle tavutusvihjeen (\komento{-}) siten, että se + sallii sanan tavutuksen muistakin kohdista kuin tavutusvihjeen + kohdalta. Tavutusvihjeen molemmin puolin sanan osat tavutetaan + yleisten sääntöjen mukaisesti, ellei tavutuksen estäviä merkkejä kuten + yhdysmerkkejä tai ajatusviivoja ole. \paketti{babel}\-/paketissa on + myös tavutusvihje \koodi{\textquotedbl\textbar}, joka estää tavutuksen + muualta.} + +Myös Unicoden ajatusviivamerkit \uctunnus{u+2013 en dash} ja +\uctunnus{u+2014 em dash} toimivat, mutta ne käyttäytyvät tavutuksen +kannalta eri tavalla Lualatex\-/{} ja Xelatex\-/kääntäjillä. +Yhteensopivuussyistä kannattanee välttää Unicoden ajatusviivoja +Latex\-/lähdetiedostossa. + +\leijutlk{ + \begin{tabular}{lll} + \toprule + \ots{Lähde} + & \ots{Tavutus} + & \ots{Merkitys} \\ + \midrule + \koodi{matkustaa} + & mat\tavukohta kus\tavukohta taa + & tavutus kaikista kohdista \\ + \koodi{matkus\komento{-}taa} + & matkus\tavukohta taa + & vain tavutusvihjeen kohdalta \\ + \koodi{matka-aika} + & matka-\tavukohta aika + & vain yhdysmerkin jälkeen \\ + \koodi{matka-ai\komento{-}ka} + & matka-\tavukohta ai\tavukohta ka + & vain yhdysmerkki ja tavutusvihje \\ + \koodi{Oulu--Rovaniemi} + & Oulu--\tavukohta Rovaniemi + & vain ajatusviivan jälkeen \\ + \koodi{Oulu--Rova\komento{-}niemi} + & Oulu--\tavukohta Rova\tavukohta niemi + & vain ajatusviiva ja tavutusvihje \\ + \koodi{matka-} + & matka- + & ei tavutuskohtia \\ + \koodi{-aika} + & -\tavukohta aika + & vain yhdysmerkin jälkeen \\ + \bottomrule + \end{tabular} +}{ + \caption{Tavutusvihjeen, yhdysmerkin ja ajatusviivan vaikutus + tavutukseen} + \label{tlk/tex-tavutus} +} + +Taulukossa \ref{tlk/tex-tavutus} on esimerkkejä tavutusvihjeiden, +yhdysmerkin ja ajatusviivan vaikutuksesta. Ensimmäisessä sarakkeessa on +esimerkkisana siinä muodossa kuin se kirjoitetaan lähdetiedostoon. +Toisessa sarakkeessa on ladottu sana, johon on pystyviivalla merkittynä +mahdolliset tavutuskohdat. + +Taulukon viimeinen rivi paljastaa suomen kielen kannalta ongelmallisen +tilanteen. Esimerkiksi ilmauksessa \emph{matkasuunnitelma ja + \mbox{-aika}} ei riviä saa katkaista sanassa \emph{\mbox{-aika}} +olevan yhdysmerkin jälkeen, koska rivin loppuun jäisi yksinäinen +yhdysmerkki. Latexin peruskeinoilla sana täytyy laittaa näkymättömään +laatikkoon, joka pitää merkit yhdessä: \komento{mbox}\komentoarg{-aika}. +Toinen vaihtoehto on sitovan yhdysmerkin käyttö, jota käsitellään +seuraavassa alaluvussa. + +\subsection{Tavutuksen sallivia ja sitovia merkkejä} +\label{luku/tavutus-sallivat-sitovat} + +Unicode\-/merkistön sitova yhdysmerkki \uctunnus{u+2011 non\-/breaking + hyphen} näkyy tavallisena yhdysmerkkinä, mutta se estää sanan +katkaisemisen yhdysmerkin vierestä. \uctunnus{u+2011}\-/merkkiä voi siis +käyttää, mutta se ei ole aina toiminut luotettavasti ja yhdenmukaisesti +eri kääntäjissä. Yhteensopivuussyistä voi olla järkevää käyttää muita +vaihtoehtoja sitovalle yhdysmerkille. + +Paketti \pakettictan{extdash} tuo uusia komentoja ja mahdollisuuksia +tavutuksen hallintaan. Komennot ovat sellaisia kuin \komento{Hyphdash} +ja \komento{Endash}, mutta niille on saatavilla myös lyhemmät muodot, +jos paketin lataa käyttämällä \koodi{short\-cuts}\-/ valitsinta. + +\komentoi{usepackage} +\pakettii{extdash} +\begin{koodilohkosis} +\usepackage[shortcuts]{extdash} +\end{koodilohkosis} + +\noindent +Paketti sisältää kaksi lisävaihtoehtoa kolmelle viivavälimerkille +eli yhdysmerkille, lyhyelle ajatusviivalle ja pitkälle ajatusviivalle. +Kun Texin viivavälimerkit (luku \ref{luku/tavutuksen-merkit}) aina +estävät tavutuksen muualta kuin välimerkin jälkeen, +\paketti{extdash}\-/paketin perusvaihtoehdot sallivat tavutuksen +muualtakin. Lisäksi kaikille kolmelle viivavälimerkille on sitova +versio, joka estää tavutuksen välimerkin jälkeen (mutta sallii muualta). + +Taulukossa \ref{tlk/extdash} ovat \paketti{extdash}\-/paketin tärkeimmät +komennot ja niiden merkitykset. Taulukossa \ref{tlk/extdash-vertailu} +vertaillaan \paketti{extdash}\-/paketin komentoja Texin vastaaviin. + +\leijutlk{ + \begin{tabular}{ll} + \toprule + \ots{Komento} & \ots{Merkitys} \\ + \midrule + \komento{-/} & tavutuksen salliva yhdysmerkki \\ + \komento{=/} & sitova, tavutuksen salliva yhdysmerkki \\ + \komento{--} & tavutuksen salliva lyhyt ajatusviiva \\ + \komento{==} & sitova, tavutuksen salliva lyhyt ajatusviiva \\ + \komento{---} & tavutuksen salliva pitkä ajatusviiva \\ + \komento{===} & sitova, tavutuksen salliva pitkä ajatusviiva \\ + \bottomrule + \end{tabular} +}{ + \caption{\paketti{extdash}-paketin komentoja} + \label{tlk/extdash} +} + +\leijutlk{ + \begin{tabular}{llll} + \toprule + \ots{Lähde} & \ots{Tavutus} + & \ots{Lähde} & \ots{Tavutus} \\ + \cmidrule(r){1-2} + \cmidrule(l){3-4} + \koodi{matka-aika} + & matka-\tavukohta aika + & \koodi{Oulu--Rovaniemi} + & Oulu--\tavukohta Rovaniemi \\ + \koodi{matka\komento{-/}aika} + & mat\tavukohta ka-\tavukohta ai\tavukohta ka + & \koodi{Oulu\komento{--}Rovaniemi} + & Ou\tavukohta lu--\tavukohta Ro\tavukohta va\tavukohta + nie\tavukohta mi \\ + \koodi{matka\komento{=/}aika} + & mat\tavukohta ka-ai\tavukohta ka + & \koodi{Oulu\komento{==}Rovaniemi} + & Ou\tavukohta lu--Ro\tavukohta va\tavukohta + nie\tavukohta mi \\ + \koodi{matka-} + & matka- + & \koodi{-aika} + & -\tavukohta aika \\ + \koodi{matka\komento{-/}} + & mat\tavukohta ka- + & \koodi{\komento{=/}aika} + & -ai\tavukohta ka \\ + \bottomrule + \end{tabular} +}{ + \caption{Texin ja \paketti{extdash}-paketin komentojen vertailua} + \label{tlk/extdash-vertailu} +} + +On tärkeää huomioida, että \paketti{extdash}\-/paketin komennot ovat +todellakin normaaleja komentoja. Se tarkoittaa, että komennon jälkeiset +sanavälit syödään pois. Tämä asia saattaa unohtua seuraavanlaisessa +tilanteessa, jossa käytetään tavutuksen sallivaa yhdysmerkkikomentoa: + +\komentoi{-/} +\begin{koodilohkosis} +matka\-/ ja aika\-/arvio +\end{koodilohkosis} + +\begin{tulossis} + matka\-/ ja aika\-/arvio +\end{tulossis} + +\noindent +Ensimmäisen yhdysmerkkikomennon jälkeinen sanaväli hävisi, ja syntyi +virheellinen sana \emph{matka-ja}. Sanavälin saa säilymään, kun +kirjoittaa komennon perään aaltosuljeparin tai kenoviivan ja sanavälin. + +\komentoi{-/} +\begin{koodilohkosis} +matka\-/{} ja aika\-/arvio \\ +matka\-/\ ja aika\-/arvio +\end{koodilohkosis} + +\begin{tulossis} + matka\-/{} ja aika\-/arvio \\ + matka\-/\ ja aika\-/arvio +\end{tulossis} + +\subsection{Tavutus sanan reunasta} + +Asetukset \komento{lefthyphenmin}\komentojatko{~N} ja +\komento{righthyphenmin}\komentojatko{~N} vaikuttavat tavutukseen sanan +reunoissa. Argumentti \koodi{N} on positiivinen kokonaisluku, ja se +määrittelee, kuinka monta merkkiä vähintään sanan vasemmasta tai +oikeasta reunasta pidetään yhdessä. Oletusarvot ovat kielikohtaisia ja +määritellään \paketti{polyglossia}\-/{} ja \paketti{babel}\-/paketeissa. +Suomen kielessä kumpikin asetus on kaksi (2) merkkiä. + +Nämä asetukset alustetaan kielikohtaisiin oletusarvoihin aina, kun +kieliasetukset tulevat voimaan. Näin on esimerkiksi dokumentin +aloittavan \ymparistox{document}\-/ ympäristön alussa ja aina kielen +vaihtuessa. Jos asetuksia haluaa muuttaa, täytyy omat muutokset tehdä +aina edellä mainittujen asioiden jälkeen. Toisaalta vielä kätevämpää on +sisällyttää omat asetukset kielikohtaisiin alustuskomentoihin. Sillä +tavoin omat asetukset tulevat voimaan automaattisesti kielen vaihtuessa. + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{lefthyphenmin} +\komentoi{righthyphenmin} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \lefthyphenmin 3 + \righthyphenmin 3 +} +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä oleva komento \komento{addto} on +\paketti{polyglossia}\-/{} ja \paketti{babel}\-/ paketin ominaisuus, +jolla lisätään omia komentoja kielikohtaisiin asetuksiin. Tässä +esimerkissä käsitellään suomen kielen asetuksia +(\komento{captionsfinnish}). Komento täytyy suorittaa lähdedokumentin +esittelyosassa. + +\subsection{Muita tavutusasetuksia ja -vinkkejä} +\label{luku/tavutus-muut} + +Aiemmin mainittu \paketti{extdash}\-/paketti sisältää tavutuksen +hallintaan liittyviä välimerkkejä, mutta sellaisia on myös +kielipaketeissa \paketti{polyglossia} ja \paketti{babel}. Kielipakettien +englanninkielisissä ohjekirjoissa niitä kutsutaan nimellä +\englantik{short\-hands}. + +\paketti{babel}\-/paketti tuo suomen kieleen sitovan, tavutuksen +sallivan yhdysmerkin \koodi{\textquotedbl\=/}, joka toimii samoin kuin +\paketti{extdash}\-/paketin komento \komento{=/}. Lisäksi on +tavutusvihje (\koodi{\textquotedbl\textquotedbl}), joka ei tee +yhdysmerkkiä tavutuskohtaan. Sitä voi käyttää joidenkin teknisten +ilmausten tavutusvihjeenä, jotta ilmaus säilyy täsmälleen samanlaisena +myös rivien katkaisemisessa. \paketti{babel}\-/paketin toiminnot +vaihtelevat eri kielten välillä. + +\paketti{polyglossia}\-/pakettiin saa samat lisätoiminnot ja eräitä +muitakin, kun paketin lataa käyttämällä valitsinta +\koodi{babel\-short\-hands}. Edellä mainittujen ''Baabelin lyhenteiden'' +lisäksi tulee yhdysmerkki \koodi{\textquotedbl\textasciitilde}, joka on +sitova ja samalla kaiken tavutuksen estävä yhdysmerkki. Tälle merkille +ei ole vastinetta \paketti{extdash}\-/paketissa. Pari muutakin +lainausmerkillä alkavaa, tavutukseen liittyvää merkkiä on mukana. + +Varsinainen tavutuksen peruskomento on \komentom{discretionary}, joka +mahdollistaa omanlaisten tavutuskohtien määrittelyn. Komento +kirjoitetaan sanassa juuri siihen kohtaan, johon tavutuskohta halutaan. +Komennolle annetaan kolme argumenttia järjestyksessä seuraavasti: + +\begin{nluetelma} +\item katkaisutilanteessa rivin loppuun ladottavat merkit +\item katkaisutilanteessa seuraavan rivin alkuun ladottavat merkit +\item katkaisemattomaan sanaan ladottavat merkit. +\end{nluetelma} + +\noindent +Normaali tavutuskohta sanaan \emph{tavu} määriteltäisiin alla olevan +esimerkin tavoin: + +\komentoi{discretionary} +\begin{koodilohkosis} +ta\discretionary{-}{}{}vu +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä komennon ensimmäinen argumentti on yhdysmerkki, +koska rivin loppuun tietenkin halutaan yhdysmerkki silloin, kun sana +katkaistaan tästä kohdasta. Toinen argumentti on tyhjä, koska seuraavan +rivin alkuun ei kirjoiteta suomen kielessä mitään ylimääräistä. Myös +kolmas argumentti on tyhjä, koska katkaisemattomaan sanaan ei haluta +mitään merkkiä tavujen väliin. + +\komento{discretionary}\-/komennolla voi luoda myös tavutuskohtia, +joihin ei ilmesty yhdysmerkkiä eikä mitään muutakaan merkkiä +katkaisutilanteessa. Se saadaan aikaan jättämällä kaikki argumentit +tyhjäksi. Tällainen sopii tavutusvihjeeksi teknisiin ilmauksiin, joihin +ei selvyyden vuoksi haluta mitään ylimääräisiä merkkejä edes sanan +katkaisutilanteessa. + +\komentoi{discretionary} +\begin{koodilohkosis} +\discretionary{}{}{} +\end{koodilohkosis} + +\noindent +Joissakin kielissä sanan katkaiseminen yhdysmerkin kohdalta vaatii, että +rivin loppuun kirjoitetaan yksi yhdysmerkki ja seuraavan rivin alkuun +toinen. Näin ilmaistaan, että sanassa on pysyvä yhdysmerkki eikä vain +väliaikaisesti katkaisun merkkinä. Tällaisia kieliä varten saattaa +kielipaketissa (tai muualla) olla omat yhdysmerkkitoiminnot, mutta +edellä kuvatun tavutuskohdan saa myös seuraavalla tavalla: + +\komentoi{discretionary} +\begin{koodilohkosis} +\discretionary{-}{-}{-} +\end{koodilohkosis} + +\noindent +Tavutuksen suunnittelussa ja tutkimisessa voi auttaa +\pakettictan{showhyphens}\-/ paketti, jonka lataamalla kaikki +tavutuskohdat tulevat näkyviin. Dokumentin kaikkien sanojen +tavutuskohtiin piirretään ohut punainen pystyviiva. Tämä paketti +hyödyntää Lualatex\-/kääntäjän ominaisuuksia, eikä se siis toimi muiden +kääntäjien kanssa. + +\subsection{Suomen kielen tavutus} + +Texin kirjainyhdistelmiin perustuvat säännöt eivät yksinään riitä suomen +kieleen, ja esimerkiksi yhdyssanojen rajakohdat tuottavat usein +ongelmia. Sana \emph{alku\-osa} katkaistaan sääntöjen mukaan kohdista +\emph{al-kuo-sa}. Se on kyllä oikein tavurakenteen kannalta mutta +käytännössä ongelmallinen. Tässä ei ole kyse \emph{uo}\-/diftongista, +vaan yhdyssanan rajalla on myös tavutuskohta (\emph{al-ku-o-sa}). +Lisäksi sanaa ei saa katkaista siten, että siitä jää yksittäinen kirjain +eri riville (\emph{o-sa}). + +Parasta olisi katkaista suomen kielen yhdyssanat vain yhdysosien välistä +(\emph{alku-osa}). Muualtakin voi katkaista (\emph{al-ku-osa}), kunhan +sanasta eikä sen yhdysosasta ei jää yksittäinen kirjain eri riville. +Mielellään ei katkaista myöskään kahden vokaalin välistä, jos ne +kuuluvat samaan sanaan (\emph{kau-emmin}). Joskus halutaan välttää myös +niin sanottuja orpotavuja eli sitä, että tekstikappaleen viimeiselle +riville jää vain yksi tavu. + +Käytännössä siis suomenkielinen teksti ja hyvä typografia vaativat +välillä tavutusvihjeiden kirjoittamista. Yhdyssanojen osien väliin +tarvitaan tavutusvihje silloin, kun jälkimmäinen osa alkaa vokaalilla +tai useammalla kuin yhdellä konsonantilla. Joitakin tällaisia tapauksia +Tex osaa tavuttaa oikein ilman tavutusvihjeitäkin, mutta etukäteen sitä +ei tiedä, ellei ole kokemusta. + +\komentoi{-} +\begin{koodilohkosis} +alku\-osa pusku\-traktori +\end{koodilohkosis} + +\noindent +Yhdysmerkin tai ajatusviivan sisältävät pitkät yhdyssanat voivat vaatia +tavutuskohtien lisäämistä, koska Texin yhdysmerkki ja ajatusviivat +estävät tavutuksen muualta kuin näiden merkkien jälkeen. Ilman +tavutuskohtien lisäämistä Texillä ei ehkä ole riittävästi vaihtoehtoja +tekstikappaleen rivittämiseen. Voi syntyä liian suuria sanavälejä, tai +joistakin riveistä tulee ylipitkiä, eli ne yltävät marginaalin puolelle. + +Tavutuskohtia voi lisätä sopiviin kohtiin omilla tavutusvihjeillä +(\komento{-}). Vaihtoehtoisesti kaikki yleisten tavutussääntöjen +mukaiset tavutuskohdat saa käyttöön \paketti{extdash}\-/paketin +komennoilla (taulukko \ref{tlk/extdash}). Seuraavassa esimerkissä on +tavutuksen hallintaa sanalle \emph{Molo\-tov--Ribben\-trop-sopi\-mus}: + +\komentoi{-} +\komentoi{--} +\komentoi{-/} +\begin{koodilohkosis} +Molo\-tov--Ribben\-trop-sopi\-mus % tavutusvihjeet +Molotov\--Ribben\-trop\-/sopimus % tavutuksen sallivat välimerkit +\end{koodilohkosis} + +\noindent +\komento{discretionary}\-/komentoa (luku \ref{luku/tavutus-muut}) voi +hyödyntää suomen kielen sanoissa silloin, kun niissä on heittomerkki +erottamassa kahta tavurajan molemmin puolin olevaa samaa vokaalia, +esimerkiksi sanoissa \emph{vaa'an} ja \emph{liu'uttaa}. Normaalisti Tex +ei katkaise heittomerkin kohdalta lainkaan, eikä se olisi suomen +kielessä suositeltavaakaan, koska vokaalien välistä ei mielellään +katkaista sanaa. Jos tavutuksen kuitenkin haluaa myös heittomerkin +kohdalle, täytyy huolehtia, että tavutustilanteessa heittomerkki poistuu +ja sen paikalle tulee yhdysmerkki rivin loppuun. Sanan \emph{vaa'an} +voisi siis kirjoittaa seuraavalla tavalla: + +\komentoi{discretionary} +\begin{koodilohkosis} +vaa\discretionary{-}{}{'}an +\end{koodilohkosis} + +\noindent +Komennon kolmas argumentti on heittomerkki, koska se pitää latoa +tavurajalle silloin, kun sanaa ei katkaista tästä kohdasta. Mikäli +tällaisia tarvitsee paljon, on järkevää määritellä sitä varten +yksinkertaisempi komento, jota sitten käytetään sanoissa heittomerkin +sijasta. + +\komentoi{discretionary} +\begin{koodilohkosis} +\newcommand{\hm}{\discretionary{-}{}{'}} +vaa\hm an +\end{koodilohkosis} + +\noindent +Suomen kielessä käytetään heittomerkkiä myös taivutuspäätteen, liitteen +tai johtimen edellä silloin, kun sanavartalon kirjoitusasu päättyy +konsonanttiin mutta ääntöasu vokaaliin, esimerkiksi \emph{show'ssa}. +Näissä tilanteissa ei ole kyse tavurajasta vaan morfeemirajasta eli +merkityksellisten osien rajakohdasta. Tavurajakin voi sattua samaan +paikkaan, mutta tavutettaessa heittomerkki säilyy: \emph{show'-hun}.% +\footnote{Asiaa ei yleensä mainita kielenhuolto\-/oppaissa. Tieto + perustuu Kielikello\-/lehden 2/2006 artikkeliin: + \kulmaurl{https://www.kielikello.fi/-/lainausmerkit-}. Viittauspäivä + 6.7.2020.} Mikäli tällainen tavutuskohta halutaan mukaan, käytetään +sanassa tavallista tavutusvihjettä: \koodi{show'}\komento{-}\koodi{hun}. +Mieluummin ei kuitenkaan katkaista sanoja heittomerkin kohdalta. + +\subsection{Tavutus pois päältä} + +Tavutuksen voi kytkeä kokonaan pois päältä \paketti{polyglossia}\-/ +kielipaketin komennolla \komentom{disablehyphenation}. Tavutuksen saa +takaisin päälle komennolla \komento{enablehyphenation}. + +Toinen vaihtoehto on käyttää fontin asetusta \koodi{Hyphen\-Char=\katk + None} kirjainperheen määrittelyn yhteydessä. Oletuksena tavutus on +pois päältä tasalevyisestä fontista, eli esimerkiksi \komento{texttt}\-/ +komennon argumenttina olevaa tekstiä ei tavuteta. Fontteja ja niiden +asetuksia käsitellään luvussa \ref{luku/kirjaintyypit}. + +Käytännössä tavutus menee pois päältä myös silloin, kun tekstikappaleet +tasaa vain vasempaan reunaan eli tekee oikealle liehureunan komennolla +\komento{raggedright}. Tekstikappaleiden tasaamista ja palstan muotoa +käsitellään luvussa \ref{luku/kappaleen-tasaus}. diff --git a/info/kaytannollista-latexia/luku-erikoiset.tex b/info/kaytannollista-latexia/luku-erikoiset.tex new file mode 100644 index 0000000000..5807e21d8f --- /dev/null +++ b/info/kaytannollista-latexia/luku-erikoiset.tex @@ -0,0 +1,589 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\chapter{Erikoisdokumentit} + +Kaikki dokumentit ja painotuotteet eivät ole samanlaista tekstivirtaa, +joka koostuu jäsennellystä rakenteesta, väliotsikoista ynnä muusta +sellaisesta. Tässä luvussa käsitellään dokumentteja, jotka vaativat +osittain toisenlaista tekniikkaa kuin luvussa \ref{luku/rakenne} on +käsitelty. + +\section{Esitysgrafiikka} +\label{luku/esitysgrafiikka} + +Esitelmien ja muiden puhe\-/ esitysten tukena käytetään usein +esitysgrafiikkaohjelmia kuten \englanti{Microsoft Powerpointia} tai +\englanti{Libreoffice Impressiä}. Myös Latex sopii esitysgrafiikan +tekemiseen, ja se voi olla osaavissa käsissä jopa kaikkein nopein ja +typografisesti tyylikkäin työkalu esitysdiojen tuottamiseen. + +Latexin tunnetuin ja monipuolisin esitysgrafiikkajärjestelmä on +\luokkactan{beamer}, joka on oma dokumenttiluokkansa. Sen ohjekirjassa +on reilu kaksisataa sivua, joten tässä oppaassa voidaan esitellä vain +perusasioita, joilla pääsee alkuun. + +\begin{esimerkki*} + \komentoi{author} + \komentoi{date} + \komentoi{documentclass} + \komentoi{institute} + \komentoi{item} + \komentoi{maketitle} + \komentoi{pause} + \komentoi{section} + \komentoi{setdefaultlanguage} + \komentoi{title} + \komentoi{usepackage} + \luokkai{beamer} + \pakettii{hyperref} + \pakettii{polyglossia} + \ymparistoi{enumerate} + \ymparistoi{frame} + +\begin{koodilohko} +\documentclass[aspectratio=169,t]{beamer} +\usepackage{polyglossia} \setdefaultlanguage{finnish} +\usepackage{hyperref} + +\title{Esitysgrafiikkaa Latexilla} +\author{Teppo Tekijä} +\institute{Ladontatieteiden tiedekunta} +\date{13.9.2021} + +\begin{document} + +\section{Otsikkodia} + +\begin{frame} + \maketitle +\end{frame} + +\section{Ensimmäinen väliotsikko} + +\begin{frame}{Pääotsikko}{Alaotsikko} + + \pause Seuraavassa luetellaan jotakin: \pause + + \begin{enumerate} + \item ensimmäinen \pause + \item toinen \pause + \item kolmas + \end{enumerate} + +\end{frame} + +\section{Toinen väliotsikko} + +\begin{frame}[c] + + Sisältö on keskitetty pystysuunnassa. + +\end{frame} + +\end{document} +\end{koodilohko} + + \caption{\luokka{beamer}\-/ dokumenttiluokan avulla tehdyn + diaesityksen runko} + \label{esim/beamer-runko} +\end{esimerkki*} + +\subsection{Diaesityksen rakentaminen} + +Esimerkissä \ref{esim/beamer-runko} on kokonainen Latexin lähdetiedosto +ja diaesityksen runko. Dokumenttiluokan \luokka{beamer} lataamisen +yhteydessä (rivi~1) määritellään valitsimella \koodi{aspectratio}, mitkä +ovat diojen mittasuhteet. Tässä esimerkissä arvoksi annetaan +\koodi{169}, joka tarkoittaa leveyden ja korkeuden suhdetta 16:9. +Oletusarvo on \koodi{43} eli kuvasuhde 4:3. Muita mahdollisia arvoja +ovat esimerkiksi \koodi{1610} (16:10) ja \koodi{54} (5:4). + +Esimerkin ensimmäisellä rivillä oleva toinen valitsin \koodi{t} tulee +englannin kielen sanasta \englantik{top}, ja tässä se tarkoittaa, että +diojen sisältö sijoitetaan dian yläreunaan. Oletusasetus on \koodi{c} +(\englanti{center}), joka keskittää dian sisällön pystysuunnassa. Tämän +asetuksen voi muuttaa kuhunkin diaan käyttämällä \ymparisto{frame}\-/ +ympäristön valinnaista argumenttia, kuten esimerkin rivillä 34 on tehty. + +Riveillä 5--8 määritellään dokumentin perustiedot normaaliin tapaan +(\ref{luku/dokumentin-perustiedot}), mutta lisänä perus Latexiin on +\komento{institute}\-/ komento, jolla voi määritellä tekijän edustaman +laitoksen. Nämä perustiedot ladotaan näkyviin vasta +\komento{maketitle}\-/ komennolla, joka on esimerkin rivillä~15. + +Jokainen yksittäinen sivu eli dia täytyy kirjoittaa \ymparisto{frame}\-/ +ympäristön sisään. Ympäristö siis aloittaa aina puhtaan sivun. +Ympäristön alussa voi olla aaltosulkeissa sivun pääotsikko ja toisissa +aaltosulkeissa alaotsikko. Esimerkin rivillä 20 on tehty juuri näin. +Toisen tai molemmat otsikot voi jättää poiskin. + +Sivun eli \ymparisto{frame}\-/ ympäristön sisällä voi olla tavallista +tekstiä ja käyttää suunnilleen normaaleja Latexin komentoja. Esimerkissä +\ref{esim/beamer-runko} on käytetty muutaman kerran \komento{pause}\-/ +komentoa, joka tekee esitykseen tauon. Käytännössä se jakaa sivun +sisällön erillisiksi pdf\-/ sivuiksi, ja siten sisällön voi paljastaa +yleisölle vaihe vaiheelta. Esimerkin riveillä 24--28 käytetään luetelmaa +eli \ymparisto{enumerate}. Se toimii suunnilleen samoin kuin perus +Latexin vastaava ympäristö (luku \ref{luku/luetelma-perus}), mutta +\luokka{beamer}\-/ versiossa on hieman enemmän ominaisuuksia. + +Tästä esimerkistä puuttuu hyödyllinen \ymparisto{block}\-/ ympäristö, +jolla saa dian sisälle pienen väliotsikon ja siihen kuuluvan +tekstikokonaisuuden. Otsikon teksti annetaan ympäristön argumentissa: + +\ymparistoi{block} +\begin{koodilohkosis} +\begin{block}{Väliotsikko} + ... +\end{block} +\end{koodilohkosis} + +\noindent +Otsikkokomennot \komento{chapter}, \komento{section}, +\komento{subsection} ym. täytyy kirjoittaa \ymparisto{frame}\-/ +ympäristöjen ulkopuolelle. \luokka{beamer}\-/ luokassa otsikkokomennot +eivät lado mitään itse dokumenttiin, vaan ne ainoastaan muodostavat +pdf\-/ tiedoston sisällysluettelon. Tosin sisällysluettelon kaltaista +rakennetietoa on mahdollista saada näkyviin itse diojen reunoillekin. +Niiden tarkoituksena on helpottaa esimerkiksi pitkän diaesityksen +seuraamista ja jäsentämistä. Näistä ominaisuuksista voi lukea lisää +\luokka{beamer}\-/ luokan ohjekirjasta. + +Tämän luvun ohjeilla saa rakennettua selkeitä perussisältöisiä +diaesityksiä. Dioihin voi lisätä kuvatiedostoja tai vektorigrafiikkaa +normaalin Latexin tavoin eli luvun \ref{luku/grafiikka} ohjeilla. +Palstoja ei kuitenkaan kannata toteuttaa luvun \ref{luku/palstat} +keinoilla vaan \luokka{beamer}\-/ luokan oman \ymparisto{columns}\-/ +ympäristön avulla. Siihen ja kaikkeen muuhunkin saa apua +dokumenttiluokan omasta ohjekirjasta. + +\subsection{Ulkoasuteemat} + +\luokka{beamer}\-/ dokumenttiluokka sisältää valmiita ulkoasuteemoja eli +ulkoasuun vaikuttavia asetusten kokonaisuuksia. Käyttämällä valmista +teemaa saa helposti käyttöönsä jonkun henkilön suunnitteleman tyylikkään +kokonaisuuden. + +Korkeimman tason teemojen valintakomento on \komento{usetheme}. Sillä +valitaan teema, joka voi määritellä vähän kaikkea diaesityksen ulkoasuun +liittyvää: fontit, värit, sisällön asettelua ja dian reunoille +ladottavaa lisätietoa. Alemmantasoisilla teemakomennoilla valitaan vain +vain jonkin pienemmän osa\-/alueen teema. Esimerkiksi komennoilla +\komento{usecolortheme} ja \komento{usefonttheme} valitaan vain väri- +tai fonttiteema. + +Fontit tai kirjainperheet sinänsä määritellään ja otetaan käyttöön +samalla tavalla kuin Latexissa muutenkin (luku +\ref{luku/kirjaintyypit}), mutta teema voi määritellä, mitä +kirjainperhettä tai \=/leikkausta käytetään esimerkiksi diojen +otsikoissa tai muissa tilanteisssa. Näiden asetusten muuttaminen voi +vaatia \luokka{beamer}\-/ luokan omia komentoja, joista annetaan tietoa +luvussa \ref{luku/beamer-asetuksia}. + +Alemmantasoisia teemakomentoja ovat myös \komento{useinnertheme} ja +\komento{useoutertheme}. Niillä vaikutetaan erilaisiin diojen +sisältöelementtien (\englanti{inner}) ulkoasuun ja dian reunoille +(\englanti{outer}) ladottavaan lisätietoon. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\midrule \komento{#1} & #2 \\} + \providecommand{\teema}{} + \renewcommand{\teema}[2][,]{\mbox{\koodi{#2}#1}} + + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Komento} & \ots{Valmiita teemoja} \\ + \rivi{usetheme}{ + \teema{default} + \teema{boxes} + \teema{Bergen} + \teema{Boadilla} + \teema{Madrid} + \teema{AnnArbor} + \teema{CambridgeUS} + \teema{EastLansing} + \teema{Pittsburgh} + \teema{Rochester} + \teema{Antibes} + \teema{JuanLesPins} + \teema{Montpellier} + \teema{Berkeley} + \teema{PaloAlto} + \teema{Goettingen} + \teema{Marburg} + \teema{Hannover} + \teema{Berlin} + \teema{Ilmenau} + \teema{Dresden} + \teema{Darmstadt} + \teema{Frankfurt} + \teema{Singapore} + \teema{Szeged} + \teema{Copenhagen} + \teema{Luebeck} + \teema{Malmoe} + \teema[]{Warsaw} + } + + \rivi{usecolortheme}{ + \teema{default} + \teema{structure} + \teema{sidebartab} + \teema{albatross} + \teema{beetle} + \teema{crane} + \teema{dove} + \teema{fly} + \teema{monarca} + \teema{seagull} + \teema{wolverine} + \teema{beaver} + \teema{spruce} + \teema{lily} + \teema{orchid} + \teema{rose} + \teema{whale} + \teema{seahorse} + \teema{dolphin} + \teema[]{seahorse} + } + + \rivi{usefonttheme}{ + \teema{default} + \teema{serif} + \teema{structurebold} + \teema{structureitalicserif} + \teema[]{structuresmallcapsserif} + } + + \rivi{useinnertheme}{ + \teema{default} + \teema{circles} + \teema{rectangles} + \teema{rounded} + \teema[]{inmargin} + } + + \rivi{useoutertheme}{ + \teema{default} + \teema{infolines} + \teema{miniframes} + \teema{smoothbars} + \teema{sidebar} + \teema{split} + \teema{shadow} + \teema{tree} + \teema[]{smoothtree} + } + \bottomrule + \end{tabularx} +}{ + \caption{\luokka{beamer}\-/ luokan teemanvalintakomennot ja valmiita + teemoja} + \label{tlk/usetheme} +} + +Taulukkoon \ref{tlk/usetheme} on koottu \luokka{beamer}\-/ luokan +teemakomennot ja valmiita teemoja. Taulukon ensimmäisessä sarakkeessa +ovat teeman valintakomennot ja toisessa sarakkeessa teemojen nimiä, +joita voi antaa komennolle argumentiksi. Ensimmäisenä mainittu +\koodi{default}\-/ teema on käytössä oletuksena. Teemat otetaan käyttöön +kirjoittamalla lähdedokumentin esittelyosaan teemakomentoja, esimerkiksi +seuraavalla tavalla: + +\komentoi{usetheme} +\komentoi{usecolortheme} +\komentoi{usefonttheme} +\begin{koodilohkosis} +\usetheme{Bergen} +\usecolortheme{albatross} +\usefonttheme{serif} +\end{koodilohkosis} + +\noindent +Teemanvalintakomennoille voi antaa hakasulkeissa valinnaisen argumentin, +joka sijoitetaan ensimmäiseksi eli ennen pakollista teeman nimeä. +Valinnaisen argumentin avulla määritetään kyseisen teeman asetuksia, jos +teema sellaisia tukee. Asetukset ovat täysin teemakohtaisia, ja niistä +voi lukea lisää dokumenttiluokan ohjekirjasta. Seuraavassa on +yleisluontoinen esimerkki: + +\komentoi{usetheme} +\komentoi{useoutertheme} +\begin{koodilohkosis} +\usetheme[valitsin]{teeman nimi} +\useoutertheme[valitsin=arvo]{teeman nimi} +\end{koodilohkosis} + +\noindent +Fonttiteema \koodi{serif} vaihtaa koko diaesityksen kirjainperheeksi +antiikvan. Oletuksena olevaa groteskia (\englanti{sans serif}) ei siis +käytetä enää missään. \koodi{serif}\-/ teema sisältää kuitenkin muutaman +valitsimen, jolla tähän voi tehdä pieniä hyödyllisiä poikkeuksia. +Valitsimia on koottu taulukkoon \ref{tlk/beamer-serif-teema}, ja niitä +voi antaa useampia kerralla. Seuraava esimerkki asettaa groteskin +suuriin elementteihin eli otsikoihin ja pieniin elementteihin eli dian +reunojen mahdollisiin lisätietoihin. Muualla käytetään antiikvaa. + +\komentoi{usefonttheme} +\begin{koodilohkosis} +\usefonttheme[stillsansseriflarge, stillsansserifsmall]{serif} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{stillsansseriflarge}{suuret elementit eli otsikot käyttävät + groteskifonttia} + \rivi{stillsansserifsmall}{pienet elementit kuten dian reuna\-/ + alueiden lisätiedot käyttävät groteskia} + \rivi{stillsansseriftext}{normaali teksti groteskilla} + \rivi{stillsansserifmath}{matematiikkatilassa groteski} + \bottomrule + \end{tabularx} +}{ + \caption{\luokka{beamer}\-/ luokan \koodi{serif}\-/ fonttiteeman + asetusvalitsimia} + \label{tlk/beamer-serif-teema} +} + +\subsection{Muita asetuksia} +\label{luku/beamer-asetuksia} + +Jos haluaa vaikuttaa \luokka{beamer}\-/ dokumenttien otsikoiden tai +muiden rakenteellisten osien fontteihin ja väreihin, täytyy käyttää +dokumenttiluokan omia komentoja. Niiden käyttöä neuvotaan tässä +alaluvussa. Sen sijaan diojen sisällä väliaikaiset kirjaintyypin tai +\=/leikkauksen muutokset tehdään samalla tavalla kuin Latexissa +muutenkin. Fonttien tekniikkaa käsitellään luvussa +\ref{luku/kirjaintyypit} ja tekstin korostamisen typografiaa luvussa +\ref{luku/korostus}. + +\luokka{beamer}\-/ luokan erityisten tekstielementtien kuten otsikoiden +fonttiin voi vaikuttaa komennolla \komento{setbeamerfont}. Sen +ensimmäinen argumentti on tekstielementin nimi ja toinen argumentti +sisältää fonttiasetukset. Esimerkiksi seuraava komento muuttaa +aloitusdian (\komento{maketitle}) otsikon kirjainperheen ja +\=/leikkauksen: + +\komentoi{setbeamerfont} +\begin{koodilohkosis} +\setbeamerfont{title}{family=\rmfamily, series=\bfseries, + shape=\itshape, size=\Huge} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + + \begin{tabular}{ll} + \toprule + \ots{Tekstielementti} & \ots{Merkitys} \\ + \midrule + \rivi{title}{aloitusdian otsikko (\komento{maketitle})} + \rivi{frametitle}{diojen otsikot} + \rivi{framesubtitle}{diojen alaotsikot} + \rivi{blocktitle}{\ymparisto{block}\-/ ympäristön otsikot} + \rivi{normal text}{normaali teksti diojen sisällä} + \rivi{footnote}{alaviitteet} + \rivi{item}{luetelmien luetelmamerkit} + \bottomrule + \end{tabular} +}{ + \caption{\luokka{beamer}\-/ luokan tekstielementtejä. Elementtien + nimiä käytetään esimerkiksi komentojen \komento{setbeamerfont} ja + \komento{setbeamercolor} kanssa} + \label{tlk/beamer-tekstielementtejä} +} + +\noindent +Aloitusdian otsikko on tekstielementti nimeltä \koodi{title}, ja siksi +se oli edellisen komennon ensimmäisenä argumenttina. Muita oleellisia +tekstielementtejä on koottu taulukkoon +\ref{tlk/beamer-tekstielementtejä}. + +Tekstielementtien väreihin vaikutetaan komennolla +\komento{setbeamerfont}, joka toimii lähes samalla tavalla kuin edellä +esitelty \komento{setbeamerfont}. Värin asettamisessa käytetään +valitsimia \koodi{fg} ja \koodi{bg}, joista ensin mainittu vaihtaa +varsinaisen värin (\englanti{foreground}) ja jälkimmäinen taustavärin +(\englanti{background}). Seuraavassa esimerkissä vaihdetaan diojen +otsikon teksti valkeaksi ja tausta siniseksi: + +\komentoi{setbeamercolor} +\begin{koodilohkosis} +\setbeamercolor{frametitle}{fg=white, bg=blue} +\end{koodilohkosis} + +\noindent +Värien nimien täytyy olla ennalta määriteltyjä. Perusvärit on määritelty +valmiiksi, mutta lisää värejä voi määritellä ohjeilla, joita kerrotaan +luvussa \ref{luku/korostus-värit}. + +Oletuksena luetelmaympäristöt \ymparisto{itemize} ja +\ymparisto{enumerate} latovat luetelmamerkit eri värillä kuin normaalin +tekstin. Väri riippuu käytetystä väriteemasta (\komento{usecolortheme}). +Jos haluaa, että luetelmamerkit ovat samalla värillä kuin normaali +teksti, kannattaa käyttää seuraavan esimerkin komentoa: + +\komentoi{setbeamercolor} +\begin{koodilohkosis} +\setbeamercolor{item}{parent={normal text}} +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä viitataan \koodi{item}\-/ nimiseen +tekstielementtiin, joka tarkoittaa luetelmamerkkejä. Valitsin +\koodi{parent} tarkoittaa, että väri peritään toiselta +tekstielementiltä, tässä tapauksessa normaalilta tekstiltä +(\koodi{\englanti{normal text}}). Toki tässäkin voi käyttää valitsimia +\koodi{fg} ja~\koodi{bg}. + +Normaalin tekstin (\koodi{normal text}) taustaväri tarkoittaa koko dian +tekstialueen taustaväriä. Seuraavassa on käytännön esimerkki, joka +muuttaa diojen otsikon taustan kirkkaan vihreäksi (70\,\%) ja +tekstialueen taustan vaalean vihreäksi (30\,\%). + +\komentoi{setbeamercolor} +\begin{koodilohkosis} +\setbeamercolor{frametitle} {fg=black, bg=green!90} +\setbeamercolor{normal text}{fg=black, bg=green!30} +\end{koodilohkosis} + +\noindent +Numeroimattomien luetelmien eli \ymparisto{itemize}\-/ ympäristön +luetelmamerkki on \luokka{beamer}\-/ dokumenttiluokassa oletuksena +kolmionmuotoinen, mutta asetusta voi muuttaa komennolla +\komento{setbeamertemplate}. Tällä komennolla tehdään sekalaisia diojen +asetuksia, joista annetaan tässä yhteydessä vain pari esimerkkiä. +Luetelmamerkki vaihdetaan seuraavan esimerkin komennoilla. + +\komentoi{setbeamertemplate} +\begin{koodilohkosis} +\setbeamertemplate{itemize item}[circle] % perustaso +\setbeamertemplate{itemize subitem}[square] % toinen taso +\setbeamertemplate{itemize subsubitem}[triangle] % kolmas taso +\end{koodilohkosis} + +\noindent +Vielä monipuolisemmin voi luetelmamerkkeihin vaikuttaa, kun vaihtaa +hakasulkeissa olevan argumentin tilalle aaltosulkeet. Tällaiseen +argumenttiin voi kirjoittaa suunnilleen mitä hyvänsä Latex\-/ komentoja, +joilla luetelmamerkki tuotetaan. Seuraavassa esimerkissä tätä voimakasta +komentomuotoa käytetään maltillisesti pelkästään ajatusviivan +tuottamiseen. + +\komentoi{setbeamertemplate} +\begin{koodilohkosis} +\setbeamertemplate{itemize item}{--} +\end{koodilohkosis} + +\noindent +Samalla \komento{setbeamertemplate}\-/ komennolla voi asettaa myös +diojen oikeaan alareunaan ladottaviin navigointisymboleihin. Tässä +yhteydessä ei käsitellä niitä sen syvällisemmin, mutta +navigointisymbolien poistaminen onnistuu helposti seuraavalla +komennolla: + +\komentoi{setbeamertemplate} +\begin{koodilohkosis} +\setbeamertemplate{navigation symbols}{} +\end{koodilohkosis} + +\section{Kirjeet} +\label{luku/kirjeet} + +Latexin \luokka{letter}\-/ dokumenttiluokka on tarkoitettu kirjeiden +latomiseen. Tyylillisesti se soveltuu ehkä paremmin virallisiin +kirjeisiin kuin henkilökohtaisiin. Myös joukkojakelukirjeiden tekemiseen +se voi olla käytännöllinen, koska tietokoneohjelman avulla voi helposti +tuottaa Latex\-/ koodia eli lähes samanlaisia kirjeitä eri +vastaanottajille. + +\begin{esimerkki*} + \komentoi{address} + \komentoi{cc} + \komentoi{closing} + \komentoi{documentclass} + \komentoi{encl} + \komentoi{makelabels} + \komentoi{opening} + \komentoi{ps} + \komentoi{signature} + \komentoi{usepackage} + \luokkai{letter} + \ymparistoi{letter} + +\begin{koodilohko} +\documentclass{letter} +\usepackage[a4paper]{geometry} +\usepackage{polyglossia} +\setdefaultlanguage{finnish} + +\address{Liisa Lähettäjä \\ Katuosoite 1 \\ 00000 Kaupunki} +\signature{Liisa Lähettäjä} + +\makelabels + +\begin{document} + +\begin{letter}{Virpi Vastaanottaja \\ Tiennimi 3 \\ 99999 Kunta} + + \opening{Hei!} + + Tässä kirjeessä ei ole kovin mielenkiintoista sisältöä, mutta tähän + kohtaan se kirjoitettaisiin. + + \closing{Terveisin} + + \ps{Jk. Tässä on kirjeen jälkikirjoitus.} + + \cc{Mauno Muuhenkilö} + \encl{lippu, lappu, paperi} + +\end{letter} + +\end{document} +\end{koodilohko} + + \caption{Latexin \luokka{letter}\-/ dokumenttiluokka on tarkoitettu + kirjeiden latomiseen} + \label{esim/letter} +\end{esimerkki*} + +Esimerkissä \ref{esim/letter} on yhden kirjeen runko ja oleelliset +komennot. Dokumentin esittelyosassa olevalla \komento{address}\-/ +komennolla määritellään lähettäjän nimi ja osoitetiedot. Ne ladotaan +jokaisen kirjeen alkuun. Myös komennolla \komento{signature} ilmaistaan +lähettäjän nimi, tarkemmin allekirjoitus, joka ladotaan kirjeen loppuun. +Komento \komento{makelabels} aiheuttaa sen, että kaikkien kirjeiden +jälkeen ladotaan sivu (tai useampia), jossa ovat kaikkien +vastaanottajien osoitetiedot. Tämä on tarkoitettu osoitetarrojen +tulostamiseen. + +Varsinainen kirjeen sisältö toteutetaan \ymparisto{letter}\-/ ympäristön +avulla. Ympäristölle annetaan yksi argumentti, jossa on kyseisen kirjeen +vastaanottajan nimi ja osoitetiedot. Itse kirje alkaa +\komento{opening}\-/ komennolla, jolla ilmaistaan tervehdys tai muu +kirjeen aloitussanat. + +Kirjeen lopussa \komento{closing}\-/ komennolla on sopivaa ilmaista +lopputoivotus tai muu vastaava. Lähettäjän nimi ladotaan sen jälkeen +automaattisesti, jos lähettäjä on ilmaistu aiemmin +\komento{signature}\-/ komennolla. Mahdollisen jälkikirjoituksen voi +ilmaista komennolla \komento{ps}, kirjeen jakelutietoja komennolla +\komento{cc} ja liitteet komennolla \komento{encl}. + +Yksi Latex\-/ lähdedokumentti voi sisältää useita \ymparisto{letter}\-/ +ympäristöjä, ja jokainen niistä muodostaa erillisen, uudelta sivulta +alkavan kirjeen. Kaikkiin kirjeisiin ladotaan sama lähettäjä, ellei +lähettäjätietoja välillä vaihda \komento{address}\-/\ ja +\komento{signature}\-/ komennoilla. diff --git a/info/kaytannollista-latexia/luku-esipuhe.tex b/info/kaytannollista-latexia/luku-esipuhe.tex new file mode 100644 index 0000000000..f21b8cd4d8 --- /dev/null +++ b/info/kaytannollista-latexia/luku-esipuhe.tex @@ -0,0 +1,47 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\chapter{Esipuhe} + +Tex ja Latex kehitettiin alun perin parantamaan tietokoneavusteista +tekstin latomista. Ohjelmat syntyivät 1970\-/ luvun lopulla ja 1980\-/ +luvun alkupuolella eli ajalla, jolloin tietokoneilla ei vielä kovin +hyvin osattu tuottaa laadukasta typografiaa ja painotuotteita. Texin +alkuperäinen luoja on Donald Knuth, ja Latexin kehitti Leslie Lamport. + +Texin ja Latexin myötä tietokonetypografia parani: tekstieditorin ja +merkintäkielen avulla kirjoittaja pystyi varsin helposti tuottamaan +hyvää jälkeä niin kuin typografian ja ladonnan ammattilaiset aikoinaan. +Varsinkin akateemisten tekstien tuottamisessa Latex sai vankan +jalansijan. Kirjoittaja keskittyy lähinnä sisältöön, ja +tietokoneohjelmat hoitavat taittamisen eli ulkoasun suunnittelun (Latex) +ja lopullisen dokumentin latomisen (Tex). Typografinen ammattitaito on +ohjelmoitu sisään näihin tietokoneohjelmiin. + +Sitten tulivat tekstinkäsittelyohjelmat, taitto\-/ ohjelmat ja uusi +käsite \textsc{wy\-si\-wyg} eli \englantik{what you see is what you + get}. Suoraan tietokoneen ruudulta eli graafisesta tietokoneohjelmasta +näki lopullisen painotuotteen sellaisenaan. Mikä sen helpompaa? Jokainen +kirjoittaja oli nyt samassa hetkessä myös latoja, joka heittelee +kirjakkeita tietokoneen ruudulle peräkkäin: sanoiksi, riveiksi, +palstoiksi ja lopulta valmiiksi dokumentiksi. Tekstien parissa +työskentely helpottui, mutta typografiaa tämä kehitys ei parantanut, +koska yhä useammat kirjoittajat saivat vastuulleen myös ulkoasun +suunnittelun ja lopullisten dokumenttien valmistuksen. Vuosisatojen +aikana kehittynyt typografinen osaaminen ei enää sisältynyt +tietokoneohjelmaan. + +Tässä tilanteessa olemme edelleenkin: lähes jokainen kirjoittaja vastaa +itse niin sisällöstä kuin typografiastakin eli lopullisesta ulkoasusta. +Jokainen voi olla tekstinsä julkaisija. Visuaalisten +tekstinkäsittely\-/\ ja taitto\-/ ohjelmien yleistyminen ei kuitenkaan +lopettanut Latexin tarinaa. Latexin kehitys ei jäänyt 1980\-/ luvulle, +vaan sen ympärillä tapahtuu jatkuvasti edelleenkin. Esimerkiksi +nykyaikainen fonttitekniikka ja tietokoneiden laajat merkistöt ovat myös +Latexin käyttäjän arkipäivää. + +Jos siis typografia, laadukkaat julkaisut ja niihin liittyvä tekniikka +kiinnostavat, on Latexilla varmasti paljon annettavaa nykyajan +kirjoittajalle. Toivottavasti tästä oppaasta on apua tutustumismatkassa +-- ja sen jälkeenkin. Tervetuloa mukaan! diff --git a/info/kaytannollista-latexia/luku-merkintakieli.tex b/info/kaytannollista-latexia/luku-merkintakieli.tex new file mode 100644 index 0000000000..faebb7087b --- /dev/null +++ b/info/kaytannollista-latexia/luku-merkintakieli.tex @@ -0,0 +1,2235 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\chapter{Merkintäkieli ja perustekniikka} + +Latex on merkintäkieli, mikä tarkoittaa, että se sisältää omat tapansa +dokumentin rakenteen ja sisällön kuvaamiseen. Kaikkea ei kirjoiteta +lähdedokumenttiin sellaisenaan, vaan täytyy käyttää tiettyjä kielen +sääntöjen mukaisia merkintätapoja tai komentoja. Tässä luvussa +käsitellään merkintäkielen perusasioita, joita on tarpeen ymmärtää ennen +kuin tehokkaasti toimia Latexin parissa. Kaikkea ei tarvitse päntätä +kerralla muistiin, mutta tänne on hyvä palata välillä kertaamaan +perustekniikkaa. + +\section{Merkistö} + +Latex\-/dokumenttiin voi kirjoittaa tekstiä Unicode\-/merkistöllä ja sen +\textsc{utf}\=/8\-/koodauksella, jos kääntäjänä on Unicoden osaava +ohjelma kuten Lualatex tai Xelatex. Pääasiassa siis merkit kirjoitetaan +sellaisenaan lähdedokumenttiin, mutta on kuitenkin kaikenlaisia +poikkeuksia, ja niitä käsitellään tässä alaluvussa. + +\subsection{Varatut erikoismerkit} + +Muutamalla merkillä on perus Latexissa erikoismerkitys, eikä niitä voi +käyttää normaalilla tavalla. Merkit ovat seuraavat: + +\begin{koodilohkosis} +% $ ^ _ # & { } ~ \ +\end{koodilohkosis} + +\noindent +Useimmat näistä merkeistä voi suojata erikoismerkitykseltään +kirjoittamalla niiden eteen kenoviivan (\koodi{\keno}). Tildeä +(\textasciitilde), sirkumfleksia (\textasciicircum) eikä kenoviivaa +itseään ei voi suojata pelkän kenoviivan avulla, koska kenoviivan kanssa +ne muodostavat eräitä muita komentoja. Taulukossa +\ref{tlk/merkkien-suojaus} on koottuna, kuinka edellä mainitut +erikoismerkit suojataan eli saadaan ladottua dokumenttiin sellaisenaan. + +\leijutlk{ + \begin{tabular}{cll} + \toprule + \ots{Merkki} & \multicolumn{2}{l}{\ots{Kirjoittaminen}} \\ + \midrule + \koodi{\%} & \komento{\%} \\ + \koodi{\$} & \komento{\$} & \komento{textdollar} \\ + \koodi{\^{}} & \komento{\^{}}\komentoarg{} & \komento{textasciicircum} \\ + \koodi{\_} & \komento{\_} & \komento{textunderscore} \\ + \koodi{\#} & \komento{\#} \\ + \koodi{\&} & \komento{\&} \\ + \koodi{\{} & \komento{\{} & \komento{textbraceleft} \\ + \koodi{\}} & \komento{\}} & \komento{textbraceright} \\ + \koodi{\~{}} & \komento{\~{}}\komentoarg{} & \komento{textasciitilde} \\ + \koodi{\keno} && \komento{textbackslash} \\ + \bottomrule + \end{tabular} +}{ + \caption{Varattujen erikoismerkkien kirjoittaminen} + \label{tlk/merkkien-suojaus} +} + +Jotkin paketit määrittelevät muitakin erikoismerkkejä. Esimerkiksi +kieliasetuksiin (luku \ref{luku/kieliasetukset}) liittyvät +\paketti{polyglossia}\-/{} ja \paketti{babel}\-/paketit voivat +määritellä pari lainausmerkillä (\koodi{\textquotedbl}) alkavaa, +tavutuksen hallintaan liittyvää komentoa tai erikoismerkkiä. + +\subsection{Sanaväli} +\label{luku/sanaväli} + +Välilyönti, sarkainmerkki ja yksi rivinvaihto ovat kaikki tavallisia +sanavälejä Latex\-/dokumentissa, ja näillä kolmella on sama merkitys. +Esimerkiksi rivin lopussa oleva rivinvaihto tarkoittaa samaa kuin +sanojen välissä oleva välilyönti. Välilyöntejä ja sarkainmerkkejä voi +kirjoittaa useita peräkkäin, mutta ne ovat sama asia kuin yksi väli. + +\begin{koodilohkosis} +Nämä kaikki + ovat vain +sanoja peräkkäin ja kuuluvat + samaan kappaleeseen. +\end{koodilohkosis} + +\begin{tulossis} + Nämä kaikki ovat vain sanoja peräkkäin ja kuuluvat samaan + kappaleeseen. +\end{tulossis} + +\noindent +Sanavälien leveys ei ole vakio. Silloin kun tekstipalsta tasataan +molemmista reunoista -- kuten tämänkin oppaan leipätekstissä \==, +rivillä olevia sanavälejä venytetään sopivasti, jotta tekstipalstan +molemmat reunat saadaan tasaiseksi. + +Sanavälit eivät kuitenkaan veny loputtomasti, ainakaan +oletusasetuksilla, koska kovin suuret sanavälit olisivat +tekstikappaleessa rumia. Jos sanaväleille haluaa antaa +''hätätilanteissa'' lisää venymisvaraa, täytyy käyttää mittaa +\mittam{emergencystretch}, jota käsitellään tarkemmin tekstikappaleiden +yhteydessä luvussa \ref{luku/kappale}. Mittoihin liittyvää tekniikkaa +käsitellään puolestaan luvussa \ref{luku/mitat}. + +Matalatasoinen sanavälejä ja niiden venymistä säätelevä mitta on +\mittam{spaceskip}, johon voi asettaa haluamansa leveyden ja mahdolliset +venymisen rajat. Tätä mittaa ei ole suositeltavaa käyttää tavallisen +tekstin kanssa, mutta se sopii tilanteisiin, joihin tarvitaan hyvin +poikkeukselliset sanavälit. + +\komentoi{setlength} +\mittai{spaceskip} +\begin{koodilohkosis} +\setlength{\spaceskip}{0.8em plus 0.3em minus 0.2em} +\end{koodilohkosis} + +\noindent +Myös kirjainperheelle voi asettaa oman sanavälikertoimensa fontin +asetusten \koodi{Word\-Space}\-/valitsimella. Tätä asetusta käsitellään +fonttien yhteydessä luvussa \ref{luku/fontit-välistys}. + +\subsection{Rivinvaihto lähdedokumentissa} +\label{luku/rivinvaihtomerkit} + +Kuten edellä todettiin, lähdedokumentissa olevat rivinvaihdot tulkitaan +vain sanaväleiksi eivätkä ne vaihda riviä lopullisessa dokumentissa. Jos +ladottuun dokumenttiin tarvitaan rivinvaihto, kirjoitetaan +lähdedokumenttiin kaksi kenoviivaa (\komentom{\keno}). Tätä komentoa +käsitellään tarkemmin tekstikappaleiden yhteydessä luvussa +\ref{luku/rivinvaihtokomennot}. + +On kuitenkin mahdollista saada myös lähdedokumentin rivinvaihdot +toteutumaan automaattisesti ladotussa tekstissä. Sellainen tila +kytketään päälle komennolla \komentom{obeycr}; normaaliin tilaan +palataan taas komennolla \komentom{restorecr}. Näistä komennoista voi +olla hyötyä väliaikaisesti ja erityistilanteissa, mutta pysyväksi koko +dokumentin tilaksi \komento{obeycr} ei yleensä sovi. + +\subsection{Kappaleen vaihtuminen} +\label{luku/kappaleen-vaihtuminen} + +Tyhjä rivi tarkoittaa kappaleen vaihtumista. Rivi on tyhjä silloin, kun +se ei sisällä mitään muuta kuin rivinvaihdon tai kun se sisältää vain +välilyöntejä tai sarkainmerkkejä ja lopuksi rivinvaihdon. Tyhjiä rivejä +voi olla useita peräkkäin, mutta ne tarkoittavat samaa kuin yksi tyhjä +rivi. Uuden tekstikappaleen voi aloittaa myös komennolla \komento{par}. + +\begin{koodilohkosis} +Nämä rivit kuuluvat +samaan kappaleeseen. + +Tässä on toinen tekstikappale. +Nyt ei oteta kantaa siihen, miten +rivit ja kappaleet muotoillaan. +\end{koodilohkosis} + +\noindent +Ladotuissa teksteissä uuden tekstikappaleen alkaminen ilmaistaan usein +sisennetyllä rivillä, mutta sisennyksiä eikä muitakaan muotoiluja ei +tehdä tekstieditorissa välien avulla. Kappaleiden muotoiluun on omat +keinonsa, ja niistä käsitellään luvussa \ref{luku/kappale}. + +\subsection{Kommentit ja muistiinpanot} + +Latex\-/dokumentissa prosentin merkki (\koodi{\%}) on kommenttimerkki, +jonka jälkeisen rivinosan kääntäjä jättää huomioimatta. Merkki on +tarkoitettu kirjoittajan omien kommenttien ja muistiinpanojen +kirjoittamiseen. + +\begin{koodilohkosis} +% Nyt ei tosin ole +% mitään kommentoitavaa. +\end{koodilohkosis} + +\noindent +Kommenttimerkki vaikuttaa kääntäjään myös siten, että se syö kaikki +välilyönnit ja sarkainmerkit, jotka tulevat kyseisen kommentin jälkeen. +Tämän vuoksi kommenttimerkin avulla voi yhdistää eri riveillä olevan +tekstin. Seuraava esimerkki tuottaa ladottuna ehjän sanan \emph{Latex}: + +\begin{koodilohkosis} +La% Nämä rivit + t% yhdistyvät. + ex +\end{koodilohkosis} + +\begin{tulossis} + La% Nämä rivit + t% yhdistyvät. + ex +\end{tulossis} + +\subsection{Aaltosulkeet} +\label{luku/aaltosulkeet} + +Aaltosulkeet \mbox{\koodi{\{\}}} muodostavat eräänlaisen näkymättömän +ympäristön, jonka sisällä voi olla väliaikaisesti voimassa erilaiset +asetukset kuin ulkopuolella. Aaltosulkeiden sisällä suoritetut komennot, +uusien komentojen määrittelyt (luku \ref{luku/komennot}) tai asetetut +mittojen arvot (luku \ref{luku/mitat}) ovat voimassa vain kyseisen +ympäristön sisäpuolella. Seuraavassa esimerkissä aaltosulkeilla rajataan +kursivointikomennon \komento{itshape} vaikutusaluetta. + +\begin{koodilohkosis} +tavallinen {\itshape kursiivi} tavallinen +\end{koodilohkosis} + +\begin{tulossis} + tavallinen {\itshape kursiivi} tavallinen +\end{tulossis} + +\subsection{Sitova välilyönti} + +Sitova välilyönti on samanlainen tyhjä merkki kuin tavallinenkin +välilyönti, mutta rivinvaihtoa ei sallita sen kohdalta. Sitovalla +välilyönnillä kannattaa estää esimerkiksi pienistä osista koostuvan +ilmauksen hajoaminen eri riveille (esimerkki: \emph{osa~5}). Latexissa +sitova välilyönti saadaan joko tildemerkillä (\koodi{\textasciitilde}) +tai nimenomaan siihen tarkoitetulla merkillä, jonka Unicode\-/tunnus on +\uctunnus{u+00a0 no-break space}. + +Nämä kaksi eri merkkiä, tilde ja \uctunnus{u+00a0}, toimivat hieman eri +tavoin. Molemmat estävät rivinvaihdon, mutta tildemerkki sallii välin +venymisen samalla tavalla kuin tavallinenkin sanaväli sallii (luku +\ref{luku/sanaväli}). Sen sijaan merkki \uctunnus{u+00a0} on +vakiolevyinen eikä siis veny muiden sanavälien tapaan. Merkkiä +\uctunnus{u+00a0} täytyy käyttää ainakin vuorosanaviivan (\==) ja sitä +seuraavan sanan välissä, koska se väli ei saa venyä. + +\subsection{Ohuke} +\label{luku/ohuke} + +Ohuke on tavallista sanaväliä kapeampi väli, ja se tehdään +komennolla~\komentom{,} (kenoviiva ja pilkku). Ohukkeen leveys Latexissa +on \murtoluku{1}{6} typografisen neliön leveydestä eli em-mitasta (luku +\ref{luku/mitat}). Ohuke on tasalevyinen ja sitova, eli se ei veny +muiden sanavälien tapaan, ja se estää rivinvaihdon. Siksi ohuke sopii +esimerkiksi pitkien lukujen ja puhelinnumeroiden ryhmittelyyn paremmin +kun sanaväli. + +\komentoi{,} +\begin{koodilohkosis} +12\,750\,000 +J.\,R.\,R. Tolkien +\end{koodilohkosis} + +\noindent +Myös henkilön etunimen alkukirjainten välissä voi käyttää ohuketta, jos +tavallinen sanaväli vie kirjaimet turhan kauas toisistaan. Sukunimi +erotetaan kuitenkin aina sanavälillä. Joskus myös päiväyksissä käytetään +ohuketta järjestysluvun pisteiden jälkeen. Taulukossa \ref{tlk/ohuke} +vertaillaan sanaväliä, ohuketta ja yhteen kirjoittamista. + +\leijutlk{ + \komentoi{,} + \begin{tabular}{lrll} + \toprule + & \ots{Luku} & \ots{Päiväys} & \ots{Nimi} \\ + \midrule + \otsrivi{Sanaväli} & 12 750 000 & \sout{9. 5. 2020} & J. R. R. Tolkien \\ + \otsrivi{Ohuke} & 12\,750\,000 & 9.\,5.\,2020 & J.\,R.\,R. Tolkien \\ + \otsrivi{Yhteen} & 12750000 & 9.5.2020 & \sout{J.R.R. Tolkien} \\ + \bottomrule + \end{tabular} +}{ + \caption{Sanavälin, ohukkeen ja yhteen kirjoittamisen vertailu. Suomen + kielen vastaiset kirjoitusasut on viivattu yli} + \label{tlk/ohuke} +} + +\subsection{Lainausmerkit ja heittomerkki} +\label{luku/lainausmerkit} + +Suomalaisessa näppäinasettelussa \textsc{shift} eli vaihtonäppäin ja 2 +tuottaa yleislainausmerkin eli niin sanotun \textsc{ascii}\-/ +lainausmerkin (\textquotedbl), mutta se ei taida olla minkään kielen +varsinainen lainausmerkki. On siis syytä käyttää oikeita +lainausmerkkejä, ja se käy Latexissa varsin helposti. + +Eri kielissä lainausmerkkikäytännöt ovat erilaiset. Suomen kielessä +käytetään ''tällaisia'' lainausmerkkejä ja joskus >>tällaisia>> +kulmalainausmerkkejä. Jos lainauksen sisään tarvitaan lainaus, täytyy +sisempi lainaus kirjoittaa 'tällaisten' puolilainausmerkkien avulla. +Yksittäin käytettynä se on nimeltään heittomerkki. Englannin kielessä +lainauksen alussa ja lopussa on erilainen merkki, ja ``tässä'' siitä +esimerkki. Samoin on puolilainausmerkin kohdalla: `näin'. + +Latexissa voi käyttää Unicode\-/merkistöä ja lähdedokumenttiin voi +kirjoittaa suoraan ne lainausmerkit, jotka halutaan ladottavaksi, mutta +edellä mainituille merkeille on myös omat merkintätapansa. +Näppäimistöltä kirjoitettava yleisheittomerkki (\koodim{'}) tuottaa +ladottuna automaattisesti oikean kaarevan heittomerkin ('). Kun +kirjoittaa kaksi heittomerkkiä peräkkäin (\koodim{''}), on +lopputuloksena yksi kaareva lainausmerkki (''). Kahdella suurempi kuin +\=/merkillä (\koodim{>>}) saadaan kulmalainausmerkki~(>>). + +\begin{koodilohkosis} +''Lainaus, jonka 'sisällä' on lainaus.'' \\ +>>Lainaus, jonka 'sisällä' on lainaus.>> +\end{koodilohkosis} + +\begin{tulossis} + ''Lainaus, jonka 'sisällä' on lainaus.'' \\ + >>Lainaus, jonka 'sisällä' on lainaus.>> +\end{tulossis} + +\noindent +Yllä mainitut riittävät suomen kieleen, mutta englantia ja muita kieliä +varten tarvitaan myös toisinpäin oleva merkki (``), joka tehdään +kahdella gravisaksentilla (\koodim{``}). Vastaava puolilainausmerkki (`) +tehdään yhdellä aksentilla (\koodim{`}). Joissakin kielissä käytetään +erilaisia kulmalainausmerkkejä lainauksen alussa ja lopussa. Vasemmalle +osoittava merkki (<<) tehdään kahdella pienempi kuin \=/merkillä +(\koodim{<<}). + +Joskus todella halutaan latoa yleislainausmerkki (\textquotedbl) tai +yleisheittomerkki (\textquotesingle). Ne saadaan komennoilla +\komentom{textquotedbl} ja \komentom{textquotesingle}. Yksittäinen +gravisaksentti (\`{}) tehdään komennolla \komento{`}\komentoarg{}. +Lainausmerkkien merkintätapoja ja komentoja on koottu taulukkoon +\ref{tlk/erikoismerkit-lainaus} +(s.~\pageref{tlk/erikoismerkit-lainaus}). Toisaalta kielikohtaiset +asetukset (luku \ref{luku/kieliasetukset}) voivat tuoda mukanaan myös +kielikohtaisia keinoja lainausmerkkien kirjoittamiseen. + +Edellä kuvatut Latexin omat lainausmerkkien merkintätavat (\koodi{''}, +\koodi{>>} ym.) eli niin sanotut Tex\-/ligatuurit voi kytkeä päälle ja +pois päältä \paketti{fontspec}\-/pakettiin kuuluvien asetusten avulla. +Fonteissa on yleensä oletuksena päällä Tex\-/ligatuurit eli asetus +\koodi{Liga\-tures=\katk TeX}, mutta sen saa poistettua asetuksella +\koodi{Liga\-tures=\katk TeX\-Reset}. Asetusta muutetaan kirjainperheen +määrittelyn yhteydessä tai väliaikaisesti komennolla +\komento{addfontfeatures}. + +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\addfontfeatures{Ligatures=TeXReset} `` '' >> '} +\end{koodilohkosis} + +\begin{tulossis} + {\addfontfeatures{Ligatures=TeXReset} `` '' >> '} +\end{tulossis} + +\noindent +Tasalevyisessä fontissa Tex\-/ligatuurit eivät ole päällä oletuksena, +joten yksittäisissä sanoissa tai lyhyissä ilmauksissa voi estää +Tex\-/ligatuurit esimerkiksi komennolla \komento{texttt}. Samalla +tietysti fonttikin vaihtuu. Fontteja käsitellään tarkemmin luvussa +\ref{luku/kirjaintyypit}. + +\komentoi{texttt} +\begin{koodilohkosis} +\texttt{`` '' >> '} +\end{koodilohkosis} + +\begin{tulossis} + \texttt{`` '' >> '} +\end{tulossis} + +\noindent +Paketti \pakettictan{csquotes} sisältää lainausmerkkeihin liittyviä +komentoja ja kielikohtaista logiikkaa. Paketissa olevan +\komentom{enquote}\-/ komennon avulla voi jättää paketin huoleksi, miten +aloittava ja lopettava lainausmerkki tai ulommat ja sisemmät +lainausmerkit kirjoitetaan missäkin kielessä. Kielipaketti +\paketti{polyglossia} tai \paketti{babel} täytyy olla ladattuna. + +\komentoi{usepackage} +\pakettii{polyglossia} +\pakettii{csquotes} +\komentoi{setdefaultlanguage} +\komentoi{enquote} +\begin{koodilohkosis} +\usepackage{polyglossia} \setdefaultlanguage{finnish} +\usepackage[autostyle=true]{csquotes} +% ... +\enquote{Lainauksen \enquote{sisällä} lainaus.} +\end{koodilohkosis} + +\begin{tulossis} + \enquote{Lainauksen \enquote{sisällä} lainaus.} +\end{tulossis} + +\subsection{Yhdysmerkki, ajatusviiva ja miinusmerkki} +\label{luku/yhdys-ajatus-miinus} + +Yhdyssanan osien välissä käytettävä yhdysmerkki on Latexissa tavallinen +näppäimistöltä saatava yleisyhdysmerkki (\=/). Merkillä on vaikutusta +myös sanan tavutukseen, josta on tarkempaa tietoa luvussa +\ref{luku/tavutus}. + +Ajatusviivaa tarvitaan esimerkiksi äärikohtien (27--29, +Oulu--Rova\-niemi), luetelmien, vuorosanojen ja virkkeen irrallisen +lisäysten merkitseminen. Suomen kielessä käytetään yleensä vain lyhyttä +ajatusviivaa \mbox{(--)}, joka tehdään Latexissa kahdella peräkkäisellä +yhdysmerkillä (\koodim{--}). Pitkä ajatusviiva \mbox{(---)} tehdään +kolmella yhdysmerkillä (\koodim{---}). Ajatusviivat vaikuttavat sanan +tavutukseen samoin kuin yhdysmerkki. + +\begin{koodilohkosis} +Oulu--Rovaniemi-yhteys +\end{koodilohkosis} + +\begin{tulossis} + Oulu--Rovaniemi-yhteys +\end{tulossis} + +\noindent +Myös Unicoden ajatusviivamerkit \uctunnus{u+2013 en dash} ja +\uctunnus{u+2014 em dash} toimivat, mutta tavutuksen kannalta ne +käyttäytyvät eri tavoin Lualatex\-/\ ja Xelatex\-/kääntäjillä. +Yhteensopivuussyistä on parasta tehdä ajatusviivat Latexin omilla +merkintätavoilla eikä Unicode\-/merkeillä. + +Silloin kun todella täytyy latoa kaksi tai kolme peräkkäistä +yhdysmerkkiä, voi käyttää tasalevyistä fonttia +(\komento{texttt}\komentoarg{--}), joka oletuksena kytkee pois Latexin +ajatusviivatoiminnon. Saman asetuksen saa kyllä mihin tahansa fonttiin, +kun poistaa fontista niin sanotut Tex\-/ligatuurit asetuksella +\koodi{Liga\-tures=\katk TeX\-Reset}. Väliaikaisesti asetus tehdään +seuraavasti: + +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\addfontfeatures{Ligatures=TeXReset} -- ---} +\end{koodilohkosis} + +\begin{tulossis} + {\addfontfeatures{Ligatures=TeXReset} -- ---} +\end{tulossis} + +\noindent +Miinusmerkille (−) ei Latexissa ole erityistä merkintätapaa muuten kuin +matematiikkatilassa (luku \ref{luku/matematiikka}). Tavallisessa +tekstitilassa lyhyttä ajatusviivaa voi ja saa käyttää myös +miinusmerkkinä, mutta vielä parempi olisi käyttää varsinaista Unicoden +miinusmerkkiä \uctunnus{u+2212 minus sign}, koska se on fonteissa +suunniteltu typografisesti yhteensopivaksi muiden matemaattisten +merkkien kanssa. + +\subsection{Kolme pistettä eli ellipsi} + +Ajatuksen katkeamista ja muuta sellaista ilmaisevalle kolmelle pisteelle +eli ellipsille (\ldots) on oma merkkinsä, ja fontissa se saattaa näyttää +hieman erilaiselta kuin kolme peräkkäistä pistemerkkiä. Tyypillisesti +ellipsimerkissä pisteet ovat hieman harvemmassa ja erottuvat toisistaan +paremmin kuin kolmena erillisenä merkkinä ladotut pisteet. Ellipsi +tehdään Latexissa komennoilla \komentom{dots}, \komento{ldots}, +\komento{textellipsis} tai Unicode\-/merkillä \uctunnus{u+2026 + horizontal ellipsis}. + +\subsection{Ylä- ja alaindeksi} +\label{luku/ylä-alaindeksit} + +Yläindeksit (a\textsuperscript{2}) tehdään komennolla +\komentom{textsuperscript} ja alaindeksit (a\textsubscript{2}) +komennolla \komentom{textsubscript}. Oletusasetuksilla Latex toteuttaa +indeksit mekaanisesti pienentämällä fonttia ja sijoittamalla pienennetyn +tekstin alas peruslinjan tuntumaan tai ylös gemenalinjan yläpuolelle.% +\footnote{Katso typografinen viivasto, kuva \ref{kuva/kirjainmitat} + sivulla \pageref{kuva/kirjainmitat}.} Lopputulos ei ole typografisesti +välttämättä kovin hyvä, koska fontin pienentäminen ohentaa samalla +merkkien viivoja ja ohuimmat hiusviivat voivat lähes kadota. + +\englanti{Open Type} \=/fontit sisältävät usein tuen oikeille ylä- ja +alaindekseille, jotka fontin suunnittelija on toteuttanut. Niitä +kannattaa käyttää, koska suunnittelija tuntee oman fonttinsa ja saa +todennäköisesti parempaa jälkeä kuin Latex mekaanisesti. \englanti{Open + Type} \=/fonttien indeksit on kätevintä ottaa käyttöön +\pakettictan{realscripts}\-/ paketin avulla. + +Paketti \paketti{realscripts} määrittelee uudelleen Latexin ylä- ja +alaindeksikomennot, niin että ne ensisijaisesti pyrkivät käyttämään +\englanti{Open Type} \=/fontin ominaisuutta. Jos käytössä oleva fontti +ei sisällä haluttujen merkkien ylä- tai alaindeksiä, +\paketti{realscripts}\-/ paketin komennot käyttävät automaattisesti +Latexin mekaanista keinoa. Paketti määrittelee pari muutakin hyödyllistä +komentoa, muun muassa tähdelliset versiot edellä mainituista: +\komento{textsuperscript*} ja \komento{textsubscript*}. Nämä komennot +toteuttavat aina mekaanisen ylä- tai alaindeksin eli toimivat kuten +Latexin alkuperäiset komennot. + +\leijutlk{ + \gemenanum + \begin{tabular}{lll} + \toprule + \ots{Komento} + & \ots{\englanti{Open Type}} + & \ots{Mekaaninen} \\ + \midrule + \komento{textsuperscript} + & \Large x\textsuperscript{ab36} + & \Large x\textsuperscript*{ab36} \\ + \midrule + \komento{textsubscript} + & \Large H\textsubscript{2}SO\textsubscript{4} + & \Large H\textsubscript*{2}SO\textsubscript*{4} \\ + \bottomrule + \end{tabular} +}{ + \caption{Ylä- ja alaindeksien vertailua. Oikeat Open Type \=/fonttien + indeksit saadaan \paketti{realscripts}\-/ paketin avulla. Mekaaninen + toteutus perustuu fontin pienentämiseen} + \label{tlk/indeksien-vertailu} +} + +Taulukossa \ref{tlk/indeksien-vertailu} vertaillaan oikeita ja +mekaanisia ylä- ja alaindeksejä. Taulukon esimerkit paljastavat, että +lopputuloksessa on eroa. Mekaaninen ylä- ja alaindeksitoiminto jättää +merkit turhan suurikoisiksi mutta saattaa silti ohentaa merkkien viivoja +liian paljon. Se ei myöskään ymmärrä poistaa gemenanumeroita (3624) +käytöstä vaan latoo ne sellaisenaan suunnilleen oikeaan paikkaan. + +Ylä- ja alaindeksejä käytettäessä on siis syytä ladata +\paketti{realscripts}\-/ paketti ja käyttää indeksit hallitsevaa +\englanti{Open Type} \=/fonttia. Fonttien ominaisuuksia voi tutkia +käyttöjärjestelmän komentotulkissa komennolla \koodi{otfinfo}. Toisaalta +fonttiin sisältyviä ylä- ja alaindeksejä voi myös kirjoittaa +Unicode\-/merkistön avulla sellaisenaan. Lopputulos on sama. + +\subsection{Tavutusvihje} + +Komento \komentom{-} on tavutusvihje, joka neuvoo tavutusalgoritmia +katkaisemaan sanan tästä kohdasta. Samalla se voi estää sanan +katkaisemisen muista kohdista. + +\begin{koodilohkosis} +tavutus\-algo\-ritmi +\end{koodilohkosis} + +\noindent +Myös sanassa olevat yhdysmerkit ja ajatusviivat vaikuttavat sanan +tavuttamiseen. Perusteellisemmin tavutusta ja sen asetuksia käsitellään +luvussa \ref{luku/tavutus}. + +\subsection{Tarkkeet ja erikoismerkit} +\label{luku/tarkkeet} + +Latexissa on useita komentoja tarkkeellisten kirjainten +(\'a\,\v{s}\,\c{c}\,\~o) kirjoittamiseen sekä muille merkeille, joita ei +ehkä ihan helposti saa suoraan näppäimistöltä. Komentoja on koottu +taulukoihin \ref{tlk/tarkkeet}, \ref{tlk/erikoismerkit-lainaus} ja +\ref{tlk/erikoismerkit-muut}. Taulukon tarkekomennoissa on käytetty +a\=/kirjainta esimerkkinä, mutta tarke voi liittyä muihinkin kirjaimiin. +Merkit voi kirjoittaa Latex\-/lähdedokumenttiin myös sellaisenaan, eli +näiden komentojen käyttö ei ole välttämätöntä. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4][]{{\erikoisfontti #3} + & \komento{#2}\komentojatko{#1} & #4} + \begin{tabular}{*{2}{cll}} + \toprule + \multicolumn{2}{l}{\ots{Merkki}} + & \ots{Merkitys} + & \multicolumn{2}{l}{\ots{Merkki}} + & \ots{Merkitys} \\ + \cmidrule(r){1-3} + \cmidrule(l){4-6} + \rivi[a]{`}{\`a}{gravis} + & \rivi{O}{\O}{poikkiviiva-O} \\ + \rivi[a]{'}{\'a}{akuutti} + & \rivi{o}{\o}{poikkiviiva-o} \\ + \rivi[a]{\^{}}{\^a}{sirkumfleksi} + & \rivi{DJ}{\DJ}{poikkiviiva-D} \\ + \rivi[a]{\~{}}{\~a}{tilde} + & \rivi{dj}{\dj}{poikkiviiva-d} \\ + \rivi[a]{\textquotedbl}{\"a}{treema} + & \rivi{DH}{\DH}{versaali-eth} \\ + \rivi[ a]{H}{\H a}{kaksoisakuutti} + & \rivi{dh}{\dh}{gemena-eth} \\ + \rivi[ a]{r}{\r a}{yläympyrä} + & \rivi{NG}{\NG}{versaali-äng} \\ + \rivi[ a]{v}{\v a}{hattu} + & \rivi{ng}{\ng}{gemena-äng} \\ + \rivi[ a]{u}{\u a}{lyhyysmerkki} + & \rivi{SS}{\SS}{versaali kaksois-s} \\ + \rivi[a]{=}{\=a}{pituusmerkki} + & \rivi{ss}{\ss}{gemena kaksois-s} \\ + \rivi[ a]{b}{\b a}{alaviiva} + & \rivi{TH}{\TH}{versaali thorn} \\ + \rivi[ a]{c}{\c a}{sedilji} + & \rivi{th}{\th}{gemena thorn} \\ + \rivi[a]{.}{\.a}{yläpiste} + & \rivi{i}{\i}{pisteetön i} \\ + \rivi[ a]{d}{\d a}{alapiste} + & \rivi{j}{\j}{pisteetön j} \\ + \rivi[ a]{k}{\k a}{ogonek} + & \rivi{AE}{\AE}{AE-ligatuuri} \\ + % \rivi{t\{ae\}}{\t{ae}}{sidontakaari} + &&& \rivi{ae}{\ae}{ae-ligatuuri} \\ + \rivi{L}{\L}{poikkiviiva-L} + & \rivi{OE}{\OE}{OE-ligatuuri} \\ + \rivi{l}{\l}{poikkiviiva-l} + & \rivi{oe}{\oe}{oe-ligatuuri} \\ + \bottomrule + \end{tabular} +}{ + \caption{Komentoja tarkkeellisten ja muiden kirjainten + kirjoittamiseen} + \label{tlk/tarkkeet} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4][]{{\erikoisfontti #2} & \komento{#3} #1 & #4 \\} + \begin{tabular}{cll} + \toprule + \multicolumn{2}{l}{\ots{Merkki ja komennot}} & \ots{Merkitys} \\ + \midrule + \rivi[\koodi{`{}`}]{\textquotedblleft}{textquotedblleft} + {vasen lainausmerkki} + \rivi[\koodi{'{}'}]{\textquotedblright}{textquotedblright} + {oikea lainausmerkki} + \rivi{\textquotedbl}{textquotedbl}{yleislainausmerkki (\textsc{ascii})} + \rivi[\komento{lq} \koodi{`}]{\textquoteleft}{textquoteleft} + {vasen puolilainausmerkki} + \rivi[\komento{rq} \koodi{'}]{\textquoteright}{textquoteright} + {oikea puolilainausmerkki, heittomerkki} + \rivi{\textquotesingle}{textquotesingle} + {yleispuolilainausmerkki ja -heittomerkki (\textsc{ascii})} + \rivi[\koodi{<{}<}]{\guillemotleft}{guillemotleft} + {vasen kulmalainausmerkki} + \rivi[\koodi{>{}>}]{\guillemotright}{guillemotright} + {oikea kulmalainausmerkki} + \rivi{\guilsinglleft}{guilsinglleft}{vasen kulmapuolilainausmerkki} + \rivi{\guilsinglright}{guilsinglright} + {oikea kulmapuolilainausmerkki} + \rivi{\quotedblbase}{quotedblbase}{rivinalinen lainausmerkki} + \rivi{\quotesinglbase}{quotesinglbase}{rivinalinen puolilainausmerkki} + \bottomrule + \end{tabular} +}{ + \caption{Komentoja lainausmerkkien kirjoittamiseen} + \label{tlk/erikoismerkit-lainaus} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4][]{{\erikoisfontti #2} & \komento{#3} #1 & #4 \\} + \providecommand{\textbigcirclekorvike}{} + \renewcommand{\textbigcirclekorvike}{% + \begin{tikzpicture} + \draw (0,0) circle [radius=.65ex]; + \end{tikzpicture}} + + \begin{tabular}{cll} + \toprule + \multicolumn{2}{l}{\ots{Merkki ja komennot}} & \ots{Merkitys} \\ + \midrule + \rivi[\koodi{--}]{\textendash}{textendash}{lyhyt ajatusviiva} + \rivi[\koodi{---}]{\textemdash}{textemdash}{pitkä ajatusviiva} + \rivi[\koodi{!`}]{\textexclamdown}{textexclamdown}{yläsalainen huutomerkki} + \rivi[\koodi{?`}]{\textquestiondown}{textquestiondown} + {ylösalainen kysymysmerkki} + \rivi{\textgreater}{textgreater}{suurempi kuin -merkki} + \rivi{\textless}{textless}{pienempi kuin -merkki} + \rivi[\komento{ldots} \komento{dots}]{\ldots}{textellipsis} + {kolme pistettä, ellipsi} + \rivi{\texteuro}{texteuro}{euron merkki} + \rivi[\komento{pounds}]{\pounds}{textsterling}{punnan merkki} + \rivi[\komento{\$}]{\textdollar}{textdollar}{dollarin merkki} + \rivi[\komento{S}]{\S}{textsection}{pykälän merkki} + \rivi[\komento{P}]{\P}{textparagraph}{kappaleen merkki} + \rivi[\komento{copyright}]{\copyright}{textcopyright}{tekijänoikeusmerkki} + \rivi{\textregistered}{textregistered}{rekisteröity tavaramerkki} + \rivi{\texttrademark}{texttrademark}{tavaramerkki} + \rivi[\komento{dag}]{\dag}{textdagger}{risti} + \rivi[\komento{ddag}]{\ddag}{textdaggerdbl}{kaksoisristi} + \rivi[\komento{\^{}}\komentoarg{}] + {\textasciicircum}{textasciicircum}{sirkumfleksi} + \rivi[\komento{\~{}}\komentoarg{}] + {\textasciitilde}{textasciitilde}{tilde} + \rivi{\textasteriskcentered}{textasteriskcentered} + {rivinkeskinen asteriski, tähti} + \rivi{\textbackslash}{textbackslash}{kenoviiva} + \rivi{\textbar}{textbar}{pystyviiva} + \rivi{\textbardbl}{textbardbl}{kaksoispystyviiva} + \rivi[\komento{\{}]{\textbraceleft}{textbraceleft}{vasen aaltosulje} + \rivi[\komento{\}}]{\textbraceright}{textbraceright}{oikea aaltosulje} + \rivi{\textbullet}{textbullet}{luetelmaympyrä} + \rivi{\textbigcirclekorvike}{textbigcircle}{suuri ympyrä} + % \rivi{\textcircled{a}}{textcircled\{\ldots\}}{ympyröity merkki} + \rivi{\textleftarrow}{textleftarrow}{nuoli vasemmalle} + \rivi{\textrightarrow}{textrightarrow}{nuoli oikealle} + \rivi{\textordfeminine}{textordfeminine} + {feminiininen järjestysluvun merkki} + \rivi{\textordmasculine}{textordmasculine} + {maskuliininen järjestysluvun merkki} + \rivi{\textperiodcentered}{textperiodcentered}{rivinkeskinen piste} + \rivi[\komento{\_}]{\textunderscore}{textunderscore}{alaviiva} + \rivi{\textvisiblespace}{textvisiblespace}{näkyvä välilyönti} + \bottomrule + \end{tabular} +}{ + \caption{Komentoja erikoismerkkien kirjoittamiseen} + \label{tlk/erikoismerkit-muut} +} + +Tarke- ja erikoismerkkikomentojen lisäksi on olemassa sekalaisia muita +komentoja erikoisempien asioiden latomiseen. \marginaali{\TeX} +\marginaali{\LaTeX} Ladontajärjestelmän logojen kirjoittamiseen on +komennot \komento{TeX} ja \komento{LaTeX}. Suorakulmioita voi tehdä +\komento{rule}\-/ komennolla, jolle annetaan argumenteiksi ainakin kaksi +mittaa: leveys ja korkeus. Myös yksi hakasulkeissa annettu valinnainen +argumentti on mahdollinen. Sekin on mitta ja ilmaisee, kuinka paljon +suorakulmiota nostetaan tekstin peruslinjasta. Negatiivinen mitta laskee +suorakulmiota alaspäin. Latexin mittoja ja mittayksiköitä käsitellään +luvussa \ref{luku/mitat}. + +\komentoi{rule} +\begin{koodilohkosis} +\rule{1ex}{1ex} abc \rule{3em}{.5bp} abc \rule[1ex]{3em}{.5bp} +\end{koodilohkosis} + +\begin{tulossis} + \rule{1ex}{1ex} abc \rule{3em}{.5bp} abc \rule[1ex]{3em}{.5bp} +\end{tulossis} + +\noindent +Komento \komento{strut} latoo näkymättömän, leveydettömän merkin, jonka +korkeus on rivikorkeuden eli mitan \mitta{baselineskip} mukainen. +Komentoa voi tarvita joskus esimerkiksi laatikoiden sisällä (luku +\ref{luku/laatikot}). + +Käytännössä \komento{strut}\-/ komento hyödyntää sisäisesti +\komento{rule}\-/ komentoa ja latoo sen avulla leveydettömän +suorakulmion. Tarkemmin sanottuna korkeus eli tekstin peruslinjan +yläpuolinen osa on 0,7 kertaa \mitta{baselineskip}\-/ mitta ja syvyys +eli peruslinjan alapuolinen osa on 0,3 kertaa \mitta{baselineskip}. + +\komentoi{rule} +\mittai{baselineskip} +\begin{koodilohkosis} +\rule[-0.3\baselineskip]{0bp}{\baselineskip} +\end{koodilohkosis} + +\section{Komennot} +\label{luku/komennot} + +Latexin komennot alkavat kenoviivalla (\koodi{\textbackslash}), jonka +jälkeen tulee komennon nimi. Nimi koostuu yleensä pienistä tai isoista +kirjaimista, mutta komento voi koostua myös muista merkeistä. + +Komennot voivat ottaa vastaan argumentteja eli lisätietoa, jota komento +käsittelee ja tarvitsee toimintaansa. Jotkin argumentit voivat olla +pakollisia ja jotkin valinnaisia. Pakolliset kirjoitetaan +aaltosulkeisiin \koodi{\{}\ldots\koodi{\}} ja valinnaiset hakasulkeisiin +\koodi{[}\ldots\koodi{]}. + +\begin{koodilohkosis} +\komento +\komento{argu}{mentteja} +\komento[valinnainen]{argu}{mentteja} +\end{koodilohkosis} + +\noindent +Jos pakolliseen argumenttiin haluaa sisällyttää aaltosulkeen, täytyy sen +eteen kirjoittaa kenoviiva \komento{\{}~\komento{\}}, tai voi myös +käyttää taulukossa \ref{tlk/erikoismerkit-muut} mainittuja komentoja +aaltosulkeiden tuottamiseen. Sama pätee aaltosulkeiden latomiseen +muutenkin. + +Hakasulkeet sen sijaan ladotaan tekstiin normaalisti, eikä niiden kanssa +käytetä kenoviivaa. Poikkeustilanne on komennon valinnaisen argumentin +sisällä, koska valinnainen argumentti jo sinänsä kirjoitetaan +hakasulkeiden sisään. Hakasulkeita ei voi suojata kenoviivalla, koska +\komento{[} ja \komento{]} ovat jo muuhun tarkoitettuja komentoja: +niillä luodaan matematiikkatilassa (luku \ref{luku/matematiikka}) oleva +tekstilohko. Valinnaisen argumentin sisään saa hakasulkeen, kun sen +kirjoittaa aaltosulkeiden sisään. Esimerkiksi komennon +\komentox{komento}\komentoargv{\{]\}} valinnaiseksi argumentiksi tulee +lopulta yksi \koodi{]}-merkki. + +Komennon yhteydessä sanavälejä käsitellään hieman poikkeuksellisesti. +Esimerkiksi komennon nimen perässä olevat sanavälit syödään pois, jos +komennolle ei anneta yhtään argumenttia. Seuraavassa esimerkissä sana +\emph{Latex} ladotaan ehjänä, jos vain \komentox{komento} itsessään ei +kirjoita mitään eikä vaikuta tekstin latomiseen. + +\begin{koodilohkosis} +La\komento tex +\end{koodilohkosis} + +\begin{tulossis} + Latex +\end{tulossis} + +\noindent +Jos täytyy saada komennon nimen jälkeinen sanaväli näkyviin, täytyy +kirjoittaa komennon nimen perään aaltosulkeet +(\komentox{komento}\komentoarg{}) tai kenoviiva +(\komentox{komento}\komentojatko{\keno}). + +Komennon nimen ja argumenttien välissä voi olla sanavälejä, ja ne kaikki +syödään pois. Komennon ja sen argumentit voi siis kirjoittaa vaikka +seuraavalla tavalla: + +\begin{koodilohkosis} +\komento [valinnainen] + {argu-} {mentteja} +\end{koodilohkosis} + +\subsection{Omat komennot ja abstrahointi} +\label{luku/komennot-abst} + +Omien komentojen tärkein tarkoitus on merkintätapojen abstrahointi eli +teknisen toteutuksen ja yksityiskohtien piilottaminen. Sopiva +abstrahointi helpottaa lähdedokumentin käsittelemistä. + +Esimerkiksi jos kirjoittaa Latexia käsittelevää kirjaa, kannattaa heti +aluksi luoda komento, jolla merkitään kaikki Latexin komennot. Komennon +nimi voisi olla vaikka \komentox{komento}, ja sen voisi määritellä +siten, että se lisää automaattisesti komennon nimen alkuun kenoviivan +(\keno) ja latoo koko ilmauksen tasalevyisellä kirjainperheellä. +Seuraavassa on esimerkki tällaisen komennon määrittelemisestä ja +käytöstä: + +\komentoi{newcommand} +\komentoi{texttt} +\komentoi{textbackslash} +\begin{koodilohkosis} +\newcommand{\komento}[1]{\texttt{\textbackslash #1}} + +Komennolla \komento{section} tehdään otsikoita. +\end{koodilohkosis} + +\begin{tulossis} + Komennolla \texttt{\textbackslash section} tehdään otsikoita. +\end{tulossis} + +\noindent +Edellä mainitun komennon määritelmään voi olla tarpeen lisätä myöhemmin +muitakin asioita. Latexin komentojen nimet ovat suunnilleen englantia, +ja jos nimen tavuttaa, täytyisi se tehdä englannin sääntöjen mukaisesti. +Esimerkkinä olleen \komentox{komento}\-/ komennon määritelmässä voisi +siis vaihtaa myös kielen komennolla \komento{textenglish}.% +\footnote{Lisätietoa kieliasetuksista voi lukea luvusta + \ref{luku/kieliasetukset}.} + +Jos ollaan kirjoittamassa laajaa tietoteosta, Latex\-/ komennot halutaan +ehkä lisätä automaattisesti kirjan lopussa olevaan asiahakemistoon (ks. +s.~\pageref{luku/asiahakemisto}). Niinpä komennon määritelmään lisätään +vielä sitäkin varten komento \komento{index}.% +\footnote{Asiahakemistoja käsitellään luvussa \ref{luku/asiasanat}.} +Lopulta Latex\-/ komentojen merkitsemiseen tarkoitettu +\komentox{komento} määriteltäisiin seuraavalla tavalla: + +\komentoi{newcommand} +\komentoi{textbackslash} +\komentoi{texttt} +\komentoi{textenglish} +\komentoi{index} +\begin{koodilohkosis} +\newcommand{\komento}[1]{% + \texttt{\textbackslash\textenglish{#1}}% + \index[komennot]{#1@\texttt{\textbackslash #1}}} +\end{koodilohkosis} + +% Asiahakemistot-luvussa on viittaus tähän lukuun ja maininta +% \index-komennon sisällyttämisestä toisen komennon määritelmään. + +\noindent +Näin oma \komentox{komento} ilmaisee tiiviisti ja havainnollisesti +tarkoituksen eli sen, että kyseessä on Latex\-/ komento. Se piilottaa +monimutkaisen teknisen toteutuksen eli fontin ja kielen vaihtamiseen +sekä asiahakemistoon liittyvät toiminnot. Lisäksi komennon teknistä +toteutusta on helppoa muuttaa myöhemmin, koska komennon määrittely on +vain yhdessä paikassa lähdedokumentin alussa. + +\subsection{Komentojen määrittely} +\label{luku/komennot-määrittely} + +Komentojen määrittelyyn on kolme erilaista komentoa, ja niille kaikille +annetaan samanlaiset argumentit. Komennot ovat seuraavat: + +\komentoi{newcommand} +\komentoi{renewcommand} +\komentoi{providecommand} +\begin{koodilohkosis} +\newcommand {\nimi}[n][oletus]{määritelmä} +\renewcommand {\nimi}[n][oletus]{määritelmä} +\providecommand {\nimi}[n][oletus]{määritelmä} +\end{koodilohkosis} + +\noindent +Ensimmäinen pakollinen argumentti on komennon nimi (\komentox{nimi}), ja +se voi koostua vain kirjaimista. Komento \komentom{newcommand} +määrittelee uuden komennon. Mikäli komento on jo olemassa, annetaan +virheilmoitus. Toinen komento \komentom{renewcommand} määrittelee +olemassa olevan komennon uudelleen. Se antaa virheilmoituksen, jos +komentoa ei ollut olemassa. Kolmas komento \komentom{providecommand} +puolestaan määrittelee uuden komennon vain siinä tapauksessa, että +sellaista ei ollut ennen olemassa. Se ei anna virheilmoitusta. + +Komentojen toinen pakollinen argumentti \koodi{määritelmä} sisältää +komennon määritelmän eli mitä tahansa tekstiä tai komentoja. +Suoritusvaiheessa komento ikään kuin vaihdetaan sen määritelmäksi. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\komento}{Minua komennettiin!} +\komento +\end{koodilohkosis} + +\begin{tulossis} + Minua komennettiin! +\end{tulossis} + +\noindent +Komentojen ensimmäinen valinnainen argumentti \koodi{n} on luku, joka +kertoo, kuinka monta argumenttia määriteltävä komento käsittelee. +Määritelmässä voi käyttää parametreja \koodi{\#1}, \koodi{\#2}, +\koodi{\#3} jne., ja ne korvautuvat komennon suoritusvaiheessa +ensimmäisellä, toisella, kolmannella jne. argumentilla. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\komento}[2]{Sanoit #1 ja #2!} +\komento{hip}{hei} +\end{koodilohkosis} + +\begin{tulossis} + Sanoit hip ja hei! +\end{tulossis} + +\noindent +Toinen valinnainen argumentti \koodi{oletus} -- jos se on mukana -- +kertoo, että määriteltävän komennon ensimmäinen argumentti on +valinnainen ja että tämä on sen oletusarvo. Oletusarvoa käytetään +silloin, kun valinnaista argumenttia ei ole annettu. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\komento}[3][tyyppi]{Hei #1, sanoit #2 ja #3!} +\komento{hip}{hei} \\ +\komento[Leslie]{hip}{hei} +\end{koodilohkosis} + +\begin{tulossis} + Hei tyyppi, sanoit hip ja hei! \\ + Hei Leslie, sanoit hip ja hei! +\end{tulossis} + +\noindent +Joskus yhden komennon määritelmä sisältää komennon +\komento{renewcommand}, joka sitten määrittelee uudelleen jonkin toisen +komennon. Silloin parametrit \koodi{\#1}, \koodi{\#2} jne. on +tarkoitettu ensimmäisen eli uloimman kerroksen käsiteltäväksi. Sisempi +kerros käyttää parametreja \koodi{\#\#1}, \koodi{\#\#2} jne. + +Kaikista kolmesta komentojen määrittelykomennosta on olemassa +tähdellinen versio eli sellainen, jonka komennon nimen lopussa on tähti +(\koodi{*}). Latexin komennoissa on tapana, että tähdellinen versio -- +jos sellainen on olemassa -- tarjoaa samaan asiaan jonkin toisenlaisen +näkökulman. + +\komentoi{newcommand*} +\komentoi{renewcommand*} +\komentoi{providecommand*} +\begin{koodilohkosis} +\newcommand* {\nimi}[n][oletus]{määritelmä} +\renewcommand* {\nimi}[n][oletus]{määritelmä} +\providecommand* {\nimi}[n][oletus]{määritelmä} +\end{koodilohkosis} + +\noindent +Komentojen määrittelyssä tähdelliset versiot toimivat muuten samalla +tavalla, mutta ne antavat virheilmoituksen, jos komennolle annetut +argumentit sisältävät enemmän kuin yhden tekstikappaleen. Niinpä +esimerkin \ref{esim/newcommand} koodi tuottaa käännettäessä virheen. + +\begin{esimerkki*} + \komentoi{newcommand*} +\begin{koodilohko} +\newcommand*{\komento}[1]{Teksti: #1} + +\komento{ + Ensimmäinen tekstikappale. + + Toinen tekstikappale. +} +\end{koodilohko} + \caption{\komento{newcommand*}\-/ komennolla määritelty komento ei + salli argumentteja, joissa on useita tekstikappaleita. Tämä + esimerkki tuottaa käännettäessä virheilmoituksen} + \label{esim/newcommand} +\end{esimerkki*} + +\komento{newcommand*}\-/komennolla määritelty \komentox{komento} ei siis +suostu ottamaan vastaan argumentteja, jotka sisältävät kappaleen +vaihtumisen eli enemmän kuin yhden tekstikappaleen. Tämä voi olla +hyödyllinen suojausominaisuus. + +\subsection{Kestävät ja hauraat komennot} +\label{luku/komennot-hauraat} + +Kaikki Latex\-/ komennot ovat joko kestäviä (\englanti{robust}) tai +hauraita (\englanti{fragile}). Tällä ei ole yleensä käytännön +merkitystä, mutta hauraat komennot eivät välttämättä toimi toisen +komennon argumentissa. + +Hauraita komentoja ovat sellaiset, jotka sisältävät tietoa, jota Latex +kirjoittaa väliaikaistiedostoon ja lukee sieltä takaisin. Kyse on +esimerkiksi sisällysluetteloon tai muihin automaattisiin luetteloihin +kirjoitettavasta tiedosta. Hauraita ovat myös rivinvaihdot ja +valinnaisia argumentteja eli hakasulkeissa annettavia argumentteja +sisältävät komennot. + +Käytännössä ongelmia aiheuttavat esimerkiksi otsikkokomennot +(\komento{section} ym.) sekä kuvatekstikomento \komento{caption}. Näiden +argumenttina oleva teksti (ja mahdolliset komennot) kirjoitetaan +tiedostoon ja ladataan sieltä myöhemmin takaisin. Hauraat komennot eivät +toimi edellä mainittujen komentojen argumentissa, ja lähdetiedoston +kääntäminen johtaa virheilmoitukseen. Ongelman voi ainakin joskus +korjata kirjoittamalla hauraan komennon eteen komennon +\komento{protect}. + +\subsection{Muita vinkkejä} + +Komennon viimeistä argumenttia ei välttämättä tarvitse kirjoittaa +aaltosulkeisiin, jos argumentiksi halutaan vain yksi merkki. Tällaisessa +tilanteessa komento poimii argumentiksi seuraavan merkin, joka ei ole +sanaväli. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\x}[1]{Argumentti: <#1>} +\x abc \\ +\x.abc +\end{koodilohkosis} + +\begin{tulossis} + Argumentti: <a>bc \\ + Argumentti: <.>abc +\end{tulossis} + +\noindent +Mikäli argumenttina on kenoviivalla alkava komento, sitäkään ei tarvitse +kirjoittaa aaltosulkeisiin. Latex\-/koodin lukemisen kannalta tällainen +ei välttämättä ole hyvä käytäntö, koska joskus voi hämärtyä, onko kyse +kahdesta peräkkäisestä komennosta vai onko toinen komento vain +argumenttina toiselle. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand{\x}[1]{Argumentti: <#1>} +\newcommand{\yyy}{abc} +\x\yyy +\end{koodilohkosis} + +\begin{tulossis} + Argumentti: <abc> +\end{tulossis} + +\noindent +Tätä merkintätapaa esiintyy jokin verran komentojen määrittelyssä, niin +että jätetään \komento{newcommand}\-/komennon ensimmäisenä argumenttina +oleva komennon nimi ilman aaltosulkeita. + +\komentoi{newcommand} +\begin{koodilohkosis} +\newcommand\yyy{abc} +\end{koodilohkosis} + +\noindent +Komennon määrittelyssä on välillä hyötyä \komentom{ignorespaces}\-/ +komennosta, joka jättää sanavälit huomioimatta komennon jälkeen. Ilman +tätä komentoa tulisi seuraavassa esimerkissä sanojen väliin yksi +välilyönti. + +\komentoi{newcommand} +\komentoi{ignorespaces} +\begin{koodilohkosis} +\newcommand{\komento}[1]{#1\ignorespaces} +\komento{yhdys} sana +\end{koodilohkosis} + +\begin{tulossis} + yhdyssana +\end{tulossis} + +\begin{esimerkki*} + \komentoi{newcommand} + \komentoi{renewcommand} +\begin{koodilohko} +\newcommand{\komento}{alkuperäinen} +\komento +{% + \renewcommand{\komento}{\textit{muutettu}} + \komento +} +\komento +\end{koodilohko} +\begin{tulos} + alkuperäinen \textit{muutettu} alkuperäinen +\end{tulos} +\caption{Aaltosulkeilla voi rajata komennon määrittelyn + vaikutusaluetta} +\label{esim/aaltosulkeet-rajaaminen} +\end{esimerkki*} + +\noindent +Aaltosulkeilla (luku \ref{luku/aaltosulkeet}) voi rajata +komentomäärittelyn vaikutusaluetta. Esimerkin +\ref{esim/aaltosulkeet-rajaaminen} alussa asetetaan \komentox{komento} +tiettyyn alkuperäismääritelmään. Aaltosulkeiden sisällä se määritellään +väliaikaisesti uudestaan. Aaltosulkeilla rajatun ympäristön jälkeen +komennon uusi määritelmä lakkaa ja komento palautuu alkuperäiseksi. + +Monimutkaisiin komentoihin voidaan tarvita ehtorakenteita. Ne saa +toteutettua \pakettictan{ifthen}\-/ paketin tarjoaman +\komentom{ifthenelse}\-/ komennon avulla. Se on ohjelmointikielistä +tuttu ehtorakenne: jos annettu ehtolauseke on tosi, käsitellään +then\-/haara; muussa tapauksessa käsitellään else-haara. + +\section{Ympäristöt} +\label{luku/ympäristöt} + +Ympäristöt ovat rakenteita, joilla on aloittava \komentom{begin}\-/ +komento ja lopettava \komentom{end}\-/ komento sekä nimi. Ympäristöjen +ajatuksena on, että jokin ominaisuus tai jotkin toiminnot ovat voimassa +vain ympäristön sisällä ja asiat palautuvat ennalleen ympäristön +jälkeen. Tässä mielessä ne toimivat samalla tavalla kuin aaltosulkeet +(luku \ref{luku/aaltosulkeet}). Jos esimerkiksi fonttiasetusta (luku +\ref{luku/kirjaintyypit}) muuttaa ympäristön sisäpuolella, asetus +palautuu ympäristön jälkeen samaksi kuin se oli ennen ympäristön alkua. +Samoin ympäristön sisällä määritellyt komennot ovat voimassa vain +kyseisessä ympäristössä. + +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\begin{nimi} + % ympäristön + % vaikutusalue +\end{nimi} +\end{koodilohkosis} + +\noindent +Yleisin ympäristö on nimeltään \ymparistom{document}, jonka sisään koko +dokumentin sisältö kirjoitetaan. Muita ympäristöjä käytetään +tavallisesta leipätekstistä poikkeavien rakenteiden ilmaisemiseen, +esimerkiksi luetelmiin ja taulukoihin (luvut \ref{luku/luetelmat} ja +\ref{luku/taulukot}). Ympäristöjä voi tehdä itsekin mihin hyvänsä +tarkoitukseen. Niitä määritellään seuraavilla komennoilla: + +\komentoi{newenvironment} +\komentoi{renewenvironment} +\begin{koodilohkosis} +\newenvironment {nimi}[n][oletus]{aloitus}{lopetus} +\renewenvironment {nimi}[n][oletus]{aloitus}{lopetus} +\end{koodilohkosis} + +\noindent +Komento \komentom{newenvironment} määrittelee uuden ympäristön. Se antaa +virheilmoituksen, jos samanniminen ympäristö on jo olemassa. Komento +\komentom{renewenvironment} puolestaan määrittelee uudelleen ympäristön, +joka on jo olemassa. Se antaa virheilmoituksen, jos ympäristöä ei +ollutkaan olemassa. + +Argumentit ovat lähes samanlaiset kuin komentojen määrittelyssä (luku +\ref{luku/komennot-määrittely}). Ympäristöjen määrittelykomennoilla on +kolme pakollista argumenttia: ensimmäinen on ympäristön nimi, toinen on +ympäristön aloitusmääritelmä (\koodi{aloitus}) ja kolmas on +lopetusmääritelmä (\koodi{lopetus}). + +\komentoi{newenvironment} +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\newenvironment{ymp}{Tästä se alkaa.}{Tähän se päättyy.} + +\begin{ymp} + Ympäristön sisältöä. +\end{ymp} +\end{koodilohkosis} + +\begin{tulossis} + Tästä se alkaa. Ympäristön sisältöä. Tähän se päättyy. +\end{tulossis} + +\noindent +Tavallisesti ympäristön aloitusmääritelmään kirjoitetaan jonkin toisen +ympäristön aloituskomento sekä mahdollisesti suoritetaan joitakin +asetuskomentoja. Vastaavasti lopetusmääritelmässä lopetetaan ympäristö +eli palataan normaaliin tilaan. Tarkoituksena on abstrahoida jokin +monimutkaisempi kokonaisuus eli tehdä uusi helppokäyttöinen ympäristö, joka +piilottaa teknisen toteutuksen. + +\komentoi{newenvironment} +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\newenvironment{ymp} +{\begin{mahtavuus} + \omia\hienoja\asetuksia} + {\end{mahtavuus}} +\end{koodilohkosis} + +\noindent +Omille ympäristölle voi määritellä argumentteja samalla tavalla kuin +komennoillekin. Ensimmäinen valinnainen argumentti \koodi{n} on luku +joka kertoo, kuinka monta argumenttia määriteltävä ympäristö käsittelee. +Ympäristön aloitusmääritelmässä voi argumentteihin viitata parametreilla +\koodi{\#1}, \koodi{\#2}, \koodi{\#3} jne. + +Jos toinen valinnainen argumentti \koodi{oletus} on mukana, se +ilmaisee, että määriteltävän ympäristön ensimmäinen argumentti on +valinnainen ja että tämä on sen oletusarvo. Oletusta käytetään silloin, +kun valinnaista argumenttia ei ole annettu. Argumentit annetaan +ympäristön aloittavan \komento{begin}\-/ komennon yhteydessä. + +\komentoi{begin} +\komentoi{end} +\begin{koodilohkosis} +\begin{ymp}[valinnainen]{argu}{mentteja} + % ympäristön + % vaikutusalue +\end{ymp} +\end{koodilohkosis} + +\noindent +Ympäristön määrittelykomennoille on myös tähdelliset versiot +\komentom{newenvironment*} ja \komentom{renewenvironment*}. Ne toimivat +samoin kuin edellä kuvatut tavallisetkin komentoversiot, mutta ne eivät +salli, että määritellylle ympäristölle annetut argumentit sisältävät +enemmän kuin yhden tekstikappaleen. Toiminta on siis sama kuin +komentojenkin määrittelyn tähdellisissä versioissa (luku +\ref{luku/komennot-määrittely}). + +\komentoi{newenvironment*} +\komentoi{renewenvironment*} +\begin{koodilohkosis} +\newenvironment* {nimi}[n][oletus]{aloitus}{lopetus} +\renewenvironment* {nimi}[n][oletus]{aloitus}{lopetus} +\end{koodilohkosis} + +\begin{esimerkki*} + \komentoi{newenvironment} + \komentoi{ignorespaces} + \komentoi{ignorespacesafterend} + \komentoi{begin} + \komentoi{end} + +\begin{koodilohko} +\newenvironment{ymp} +{Yhdys\ignorespaces} +{esi\ignorespacesafterend} + +\begin{ymp} + sana% Kommentti poistaa seuraavan sanavälin. +\end{ymp} merkki. +\end{koodilohko} +\begin{tulos} + Yhdyssanaesimerkki. +\end{tulos} +\caption{Sanavälien käyttäytyminen ympäristöjen yhteydessä. Komennoilla + \komento{ignorespaces} ja \komento{ignorespacesafterend} voi poistaa + seuraavat sanavälit} +\label{esim/ignorespacesafterend} +\end{esimerkki*} + +\noindent +Joskus ympäristöjen määrittelyyn on hyödyllistä sisällyttää komento +\komentom{ignorespaces}, joka jättää huomioimatta tämän komennon +jälkeiset sanavälit. Toinen hyödyllinen on +\komentom{ignorespacesafterend}, joka jättää huomioimatta ympäristön +lopettavan \komento{end}\-/ komennon jälkeiset sanavälit. Esimerkki +\ref{esim/ignorespacesafterend} selventää näiden toimintaa. + +\section{Mitat} +\label{luku/mitat} + +\subsection{Mittayksiköt} + +Koska typografia on pitkälti teksti- ja muiden elementtien sijoittelua, +tarvitaan sitä varten mittavälineitä. Niinpä Texissäkin on pituusmittoja +(engl. \emph{length}) ja useita pituuden mittayksiköitä. Taulukkoon +\ref{tlk/mittayksiköt} on koottu mittayksiköiden lyhenteet ja +merkitykset. Teknisesti on samantekevää, mitä yksiköitä käyttää, sillä +ne ovat vain välineitä pituuden ilmaisemiseen. Sisäisesti Tex käyttää +sp-yksikköä, joka ilmaisee samalla mittojen tarkkuuden: pienin jakamaton +mitta on 1\,sp (5,36\,nm). + +\leijutlk{ + \begin{tabular}{ll} + \toprule + \ots{Lyh.} & \ots{Merkitys} \\ + \midrule + bp & piste uudessa pica-järjestelmässä, 1/72 tuumaa, 0,3528 mm \\ + pt & piste vanhassa pica-järjestelmässä, 1/72,27 tuumaa, 0,3515 mm \\ + pc & pica eli 12 pt-pistettä \\ + sp & 1/65536 pt-pistettä (5,36\,nm), Texin sisäisesti käyttämä yksikkö \\ + dd & piste Didot-järjestelmässä, 0,376 mm \\ + cc & cicero eli 12 dd-pistettä \\ + mm & millimetri \\ + cm & senttimetri \\ + in & tuuma, 25,4 mm \\ + ex & nykyisen fontin x-korkeus, perus- ja gemenalinjan etäisyys \\ + em & typografisen neliön sivun pituus, sama kuin fontin koko \\ + \bottomrule + \end{tabular} +}{ + \caption{Texin mittayksiköiden lyhenteet ja merkitykset} + \label{tlk/mittayksiköt} +} + +Usein tietyt yksiköt ovat vakiintuneet tiettyihin tilanteisiin. +Esimerkiksi fonttien kokoja ja rivikorkeuksia on tapana mitata +pistemittojen avulla. Nykyään käytetään lähinnä bp\-/yksikön mukaista +pistettä, joka tuli käyttöön Post Script \=/standardin myötä vuonna 1984 +ja jota käytetään julkaisuohjelmissa. Sivun mittoja kuten leveyttä, +korkeutta ja marginaaleja ilmaistaan tavallisesti metrijärjestelmän +avulla eli senttimetreissä tai millimetreissä. + +Latexin mittojen mittaluvuissa desimaalierottimena on piste, ja +mittayksikön lyhenne kirjoitetaan kiinni mittalukuun. Seuraavassa +esimerkissä tehdään vaakasuuntaisia ja pystysuuntaisia välejä +komennoilla \komentom{hspace} ja \komentom{vspace}: + +\komentoi{hspace} +\komentoi{vspace} +\begin{koodilohkosis} +Sanat\hspace{1.2cm}hassusti +\vspace{2mm} + +\hspace{1.75em}erillään. +\end{koodilohkosis} + +\begin{tulossis} + Sanat\hspace{1.2cm}hassusti \nopagebreak + \vspace{2mm} + + \hspace{1.75em}erillään. +\end{tulossis} + +\subsection{Mittakomennot ja typografinen viivasto} + +Mittoja tallennetaan eräänlaisiin muuttujiin, jotka näyttävät päällepäin +komennoilta eli niiden alussa on kenoviiva (\koodi{\keno}) ja sitten +kirjaimista koostuva nimi. Esimerkiksi mitta \mitta{textwidth} on +tekstialueen leveys nykyisellä sivulla. Komentomaisesta ulkoasustaan +huolimatta mittoja ei voi suorittaa komentoina; ne sopivat vain komennon +argumentiksi, silloin kun tarvitaan mitta. + +Uusia mittoja luodaan komennolla \komentom{newlength} ja olemassa olevia +mittoja asetetaan esimerkiksi komennoilla \komentom{setlength} ja +\komentom{addtolength}. Omien mittoja on tarpeen luoda silloin, kun +halutaan määritellä tietynsuuruinen mitta, jota käytetään Latex\-/ +koodissa useita kertoja. + +\komentoi{newlength} +\komentoi{setlength} +\komentoi{addtolength} +\begin{koodilohkosis} +\newlength{\omamitta} % Luodaan mitta. +\setlength{\omamitta}{2.3em} % Asetetaan mitta. +\addtolength{\omamitta}{1em} % Lisätään mittaan. +\addtolength{\omamitta}{-1em} % Vähennetään mitasta. +\end{koodilohkosis} + +\noindent +Näin luotuja mittoja voi käyttää mittayksiköiden tavoin, eli niille voi +asettaa eteen kertoimen. Esimerkiksi seuraava \komento{hspace}\-/ +komento luo vaakasuuntaisen välin, jonka pituus on 0,7 kertaa +\mittax{omamitta}: + +\komentoi{hspace} +\begin{koodilohkosis} +\hspace{0.7\omamitta} +\end{koodilohkosis} + +\noindent +Koska vaakasuuntaisten välien tekeminen on typografiassa varsin +tavallista, on niitä varten olemassa omia komentoja. Typografisen neliön +levyisen (1\,em) välin voi tehdä komennolla \komentom{quad}. Sen +puolikkaan (\murtoluku{1}{2}\,em) saa komennolla \komentom{enspace}. +Ohuke eli \murtoluku{1}{6}\,em-väli tehdään \komentom{,}\-/ komennolla, +josta on tarkempaa tietoa luvussa \ref{luku/ohuke}. + +\leijukuva{ + \begin{tikzpicture} + [viiva/.style={line width=.7bp, densely dotted, color=apuviiva}, + nuoli/.style={<->, line width=1bp, color=mittanuoli}, xscale=1.1, + yscale=1.9, baseline=0pt] + + \node at (.04,.25) {\fontsize{120bp}{120bp}\viivastofontti p}; + + \draw [viiva] (-1,.98) rectangle (1,-.5); + \draw [viiva] (1,.98) -- (2.25,.98); + \draw [viiva] (-1,.02) -- (2.25,.02); + \draw [viiva] (1,-.5) -- (2.25,-.5); + + \draw [nuoli] (1.2,.02) -- (1.2,.98); + \node at (1.9,.5) [color=mittanuoli] {korkeus}; + + \draw [nuoli] (1.2,.02) -- (1.2,-.5); + \node at (1.9,-.25) [color=mittanuoli] {syvyys}; + + \draw [nuoli] (-1,1.1) -- (1,1.1); + \node at (0,1.25) [color=mittanuoli] {leveys}; + + \node at (3.13,1.64) {ylälinja}; + \node at (3.13,1.44) {versaalilinja}; + \node at (3.13,.98) {gemenalinja}; + \node at (3.13,.02) {peruslinja}; + \node at (3.13,-.5) {alalinja}; + + \node at (6.52,.74) {\fontsize{120bp}{120bp}\viivastofontti H}; + + \draw [viiva] (5.05,1.47) rectangle (7.95,.02); + \draw [viiva] (5.05,.02) -- (4,.02); + \draw [viiva] (5.05,1.47) -- (4,1.47); + \draw [viiva] (7.95,1.62) -- (4,1.62); + \draw [viiva] (7.95,.98) -- (4,.98); + + \draw [nuoli] (4.86,.02) -- (4.86,1.47); + \node at (4.1,.5) [color=mittanuoli] {korkeus}; + + \draw [nuoli] (5.05,-.1) -- (7.95,-.1); + \node at (6.5,-.3) [color=mittanuoli] {leveys}; + \end{tikzpicture} +}{ + \caption{Kirjainten mitat ja typografinen viivasto} + \label{kuva/kirjainmitat} +} + +Latex sisältää myös komennot mittojen poimimiseen kirjaimista tai muista +merkeistä. Mittoja on kolme: leveys (\englanti{width}), korkeus +(\englanti{height}) ja syvyys (\englanti{depth}). Leveys on merkin +viemä tila leveyssuunnassa. Korkeus tarkoittaa merkin korkeutta +peruslinjan yläpuolella, ja syvyys on merkin korkeus peruslinjan +alapuolella. Kuva \ref{kuva/kirjainmitat} havainnollistaa näitä kolmea +mittaa sekä typografista viivastoa. + +Gemenalinja sijaitsee gemenakirjainten eli pienaakkosten korkeudella. +Peruslinjan ja gemenalinjan etäisyys on fontin x\=/korkeus (1\,ex). +Optisen vaikutelman vuoksi gemenalinja ei tarkoita ehdotonta +gemenakirjainten ylintä kohtaa. Esimerkiksi p\=/kirjaimen yläpääte ja +silmukan yläkaari voivat yltää hieman gemenalinjan yläpuolelle ja +silmukan alakaari peruslinjan alapuolelle. Fonttien suunnittelijat +tekevät tällaisia optisia korjauksia, jotta kirjainten hahmot näyttävät +yhtä korkeilta ja tasapainoisilta yhdessä. + +Versaalilinja sijaitsee versaalikirjainten eli suuraakkosten +korkeudella. Jotkin kirjaimet voivat yltää hieman versaalilinjan +yläpuolellekin. Esimerkiksi joidenkin fonttien Hk\=/kirjaimia +vertailemalla näkee, että k\=/kirjaimen yläpääte yltää H\=/kirjaimen eli +versaalilinjan yläpuolelle, ylälinjan tuntumaan. Myös tarkemerkit (luku +\ref{luku/tarkkeet}) voivat sijaita versaalilinjan yläpuolella. + +Merkkien leveyden, korkeuden ja syvyyden voi mitata seuraavan esimerkin +komennoilla. Esimerkin ensimmäisellä rivillä luodaan uudet mitat +\mittax{leveys}, \mittax{korkeus} ja \mittax{syvyys}, joihin sitten +tallennetaan merkkien mitat. + +\komentoi{newlength} +\komentoi{settowidth} +\komentoi{settoheight} +\komentoi{settodepth} +\begin{koodilohkosis} +\newlength{\leveys} \newlength{\korkeus} \newlength{\syvyys} +\settowidth{\leveys}{abc} % merkkien ”abc” leveys +\settoheight{\korkeus}{H} % merkin ”H” korkeus +\settodepth{\syvyys}{p} % merkin ”p” syvyys +\end{koodilohkosis} + +\noindent +Mitat saa näkyviin kirjoittamalla mitan eteen komennon \komentom{the}. +Näin mitan pituus ladotaan dokumenttiin. Yksikkönä on typografinen piste +(pt). + +\komentoi{the} +\begin{koodilohkosis} +Leveys: \the\leveys, korkeus: \the\korkeus, syvyys: \the\syvyys. +\end{koodilohkosis} + +\begin{tulossis} + Leveys: 14.62865pt, korkeus: 6.81897pt, syvyys: 2.4662pt. +\end{tulossis} + +\noindent +Aiemmin mainituista optisista korjauksista johtuu, että gemenakirjaimet +eivät ole välttämättä täsmälleen samankorkuisia. Gemena\=/x asettuu +perus- ja gemenalinjojen väliin, mutta gemena\=/o voi yltää aavistuksen +verran linjojen ylä- ja alapuolelle. Ihmisen silmään ne näyttävät yhtä +korkeilta. + +\subsection{Venyvät mitat ja välit} +\label{luku/venyvät-mitat} + +Edellä on puhuttu vain kiinteistä mitoista, mutta Latex tuntee myös +venyvät mitat. Niiden ajatuksena on, että Latexille voi antaa luvan +kutistaa tai venyttää mittaa tietyissä rajoissa. Venyviä mittoja +käytettään usein pystysuuntaisissa väleissä, esimerkiksi väliotsikon +edellä ja jälkeen tai tekstikappaleiden välissä. Latex pystyy latomaan +sivut yleensä paremman näköiseksi, kun sille antaa venyvien mittojen +avulla hieman säätövaraa. Alla on esimerkki venyvän kappalevälin +(\mitta{parskip}) määrittämisestä. Samalla asetetaan kappaleen +ensimmäisen rivin sisennys (\mitta{parindent}) nollaan (\koodi{0em}). + +\komentoi{setlength} +\mittai{parskip} +\mittai{parindent} +\begin{koodilohkosis} +\setlength{\parskip}{2ex plus 0.2ex minus 0.1ex} +\setlength{\parindent}{0em} +\end{koodilohkosis} + +\noindent +Venyvissä mitoissa mainitaan ensin normaali pituus ja sitten sanoilla +\koodi{plus} ja \koodi{minus} ilmaistaan, kuinka paljon mitta voi venyä +tai kutistua. Molempia ei välttämättä tarvitse antaa. + +Venyvät mitat voivat sisältää ''äärettömän'' mittayksikön \koodi{fill}, +joka antaa luvan venyttää mittaa niin, että kaikki käytettävissä oleva +tila täyttyy. Äärettömän mittayksikön kanssa mittaluku ilmaisee +suhdeluvun muihin äärettömiin mittoihin. Seuraava esimerkki +havainnollistaa asiaa: + +\komentoi{hspace} +\begin{koodilohkosis} +x\hspace{0mm plus 1fill}x\hspace{0mm plus 2fill}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{0mm plus 1fill}x\hspace{0mm plus 2fill}x +\end{tulossis} + +\noindent +Edellisen esimerkin mittojen luonnollinen pituus on nolla (\koodi{0mm}), +mutta \koodi{plus} ja \koodi{fill} \=/mitan vuoksi ne voivat venyä ja +täyttää koko käytettävissä olevan tilan. Ensin mainitulla on suhdeluku 1 +(\koodi{1fill}) ja jälkimmäisellä suhdeluku 2 (\koodi{2fill}), joten +jälkimmäinen väli on kaksinkertainen ensimmäiseen verrattuna. Saman +äärettömästi venyvän mitan ja suhdeluvut voi ilmaista myös +\komento{stretch}\-/ mittakomennon avulla seuraavasti: + +\komentoi{hspace} +\komentoi{stretch} +\begin{koodilohkosis} +x\hspace{\stretch{1}}x\hspace{\stretch{2}}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{\stretch{1}}x\hspace{\stretch{2}}x +\end{tulossis} + +\noindent +Äärettömästi venyvälle, koko tilan täyttävälle mittayksikölle on itse +asiassa kolme eri versiota: \koodi{fil}, \koodi{fill} ja \koodi{filll}. +Niiden erona on tärkeysjärjestys. Ensin mainittu \koodi{fil} on vähiten +tärkeä, ja viimeinen eli \koodi{filll} on tärkein. Jos samassa +yhteydessä käytetään eri tärkeysasteisia yksiköitä, ylemmäntasoiset +mitätöivät alemmantasoiset. + +\komentoi{hspace} +\begin{koodilohkosis} +x\hspace{0mm plus 1filll}x\hspace{0mm plus 1fill}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{0mm plus 1filll}x\hspace{0mm plus 1fill}x +\end{tulossis} + +\noindent +Edellisessä esimerkissä ensimmäinen venyvä mitta \koodi{1filll} mitätöi +jälkimmäisen \koodi{1fill} kokonaan. Yleensä lienee parasta käyttää +keskimmäistä (\koodi{fill}), mutta eri tärkeysasteille voi olla käyttöä +esimerkiksi paketin koodissa: \koodi{fil} sallii, että kirjoittaja +tai muu koodi syrjäyttää asetuksen; \koodi{filll} on ehdoton sääntö, +joka syrjäyttää muut. + +Käytännöllisyyssyistä äärettömästi venyvä pituus \koodi{0mm plus 1fill} +on jo valmiiksi asetettu mittaan \mittam{fill}. Sitä on kätevää käyttää +esimerkiksi vaaka- ja pystysuuntaisia välejä latovien komentojen +\komento{hspace} ja \komento{vspace} kanssa: + +\komentoi{hspace} +\komentoi{vspace} +\mittai{fill} +\begin{koodilohkosis} +\hspace{\fill} % ääretön vaakasuuntainen väli +\vspace{\fill} % ääretön pystysuuntainen väli +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komennoista on olemassa vieläkin lyhemmät versiot. +Vaakasuuntainen ääretön väli syntyy myös komennolla \komento{hfill} ja +pystysuuntainen väli komennolla \komento{vfill}. Seuraavassa toistetaan +eräs aiempi esimerkki yksinkertaisemmalla tavalla: + +\komentoi{hfill} +\begin{koodilohkosis} +x\hfill x\hfill\hfill x +\end{koodilohkosis} + +\begin{tulossis} + x\hfill x\hfill\hfill x +\end{tulossis} + +\section{Laskurit} +\label{luku/laskurit} + +Laskureiden avulla Latex pitää kirjaa esimerkiksi sivunumeroista, +lukujen ja alalukujen sekä kuvien ja muiden elementtien numeroinnista. +Esimerkiksi nyt olemme pääluvun~\arabic{chapter} +alaluvussa~\arabic{section}, ja mainitut luvut tulevat Latexin +laskureista automaattisesti. + +\leijutlk{ + \laskurii{part} + \laskurii{paragraph} + \laskurii{figure} + \laskurii{enumi} + \laskurii{chapter} + \laskurii{subparagraph} + \laskurii{table} + \laskurii{enumii} + \laskurii{section} + \laskurii{page} + \laskurii{footnote} + \laskurii{enumiii} + \laskurii{subsection} + \laskurii{equation} + \laskurii{mpfootnote} + \laskurii{enumiv} + \laskurii{subsubsection} + + \begin{tabular}{llll} + \toprule + \laskuri{part} & \laskuri{paragraph} + & \laskuri{figure} & \laskuri{enumi} \\ + \laskuri{chapter} & \laskuri{subparagraph} + & \laskuri{table} & \laskuri{enumii} \\ + \laskuri{section} & \laskuri{page} + & \laskuri{footnote} & \laskuri{enumiii} \\ + \laskuri{subsection} & \laskuri{equation} + & \laskuri{mpfootnote} & \laskuri{enumiv} \\ + \laskuri{subsubsection} \\ + \bottomrule + \end{tabular} +}{ + \caption{Latexin laskurit} + \label{tlk/latexin-laskurit} +} + +Taulukossa \ref{tlk/latexin-laskurit} ovat Latexin perus laskurit. Monet +niistä ovat otsikoiden numerointia varten (\englanti{\laskuri{part}, + \laskuri{chapter}, \laskuri{section}, \laskuri{paragraph}}). +Sivunumeroita varten on \laskuri{page}\-/laskuri ja matemaattisten +kaavojen numerointiin \laskuri{equation}\-/laskuri. Leijuvista kuvista +ja taulukoista (luku \ref{luku/leijuosat}) pidetään kirjaa laskureissa +\laskuri{figure} ja \laskuri{table}, ja alaviitteiden (luku +\ref{luku/alaviitteet}) numerointi on laskureissa \laskuri{footnote} ja +\laskuri{mpfootnote}. Numeroidut luetelmat (luku \ref{luku/luetelmat}) +käsitellään \laskurix{enum}\-/alkuisten laskureiden avulla siten, että +perustasolla käytetään laskuria \laskuri{enumi}, ja jos sen +luetelmakohta sisältää toisen numeroidun luetelman, käytetään siinä +laskuria \laskuri{enumii}, sen sisällä laskuria \laskuri{enumiii} jne. + +Edellä mainituista laskureista ei tarvitse yleensä itse huolehtia, sillä +ne ovat vain tekniikkaa, joka toimii korkeamman tason toimintojen +taustalla. Joskus on kuitenkin käyttöä myös omille laskureille. Seuraava +esimerkki esittelee laskureiden käsittelyn peruskomennot. Niissä +käytetään laskuria nimeltä \laskurix{oma}. Laskurien nimet koostuvat +pelkistä kirjaimista, eikä niiden alussa ole kenoviivaa niin kuin +komentojen ja mittojen alussa. + +\komentoi{newcounter} +\komentoi{setcounter} +\komentoi{addtocounter} +\begin{koodilohkosis} +\newcounter{oma} % Luodaan uusi laskuri ”oma”. +\setcounter{oma}{3} % Asetetaan laskurin arvoksi 3. +\addtocounter{oma}{1} % Lisätään laskurin arvoon 1. +\addtocounter{oma}{-1} % Vähennetään laskurin arvosta 1. +\end{koodilohkosis} + +\noindent +Laskuri on sisäisesti kokonaisluku, mutta sen arvon voi latoa eri +muodoissa: arabialaisena tai roomalaisena lukuna, kirjaimena tai +symbolien sarjana. Taulukossa \ref{tlk/laskurien-latominen} ovat komennot +laskurin arvon latomiseen. Komennon argumentiksi annetaan laskurin nimi. +Laskurin voi latoa kirjainmuodossa, jos sen arvo on 1--26; symbolit +toimivat vain lukualueella 1--9. + +\leijutlk{ + \begin{tabular}{ll} + \toprule + \ots{Komento} & \ots{Merkitys} \\ + \midrule + \komento{arabic} & arabialainen luku: 1, 2, 3\ldots \\ + \komento{roman} & roomalainen luku: i, ii, iii\ldots \\ + \komento{Roman} & roomalainen luku: I, II, III\ldots \\ + \komento{alph} & kirjain: a, b, c\ldots\ (vain 1--26) \\ + \komento{Alph} & kirjain: A, B, C\ldots\ (vain 1--26) \\ + \komento{fnsymbol} & symboli: + \textasteriskcentered + \textdagger + \textdaggerdbl\S\P\ldots\ (vain 1--9) \\ + \bottomrule + \end{tabular} +}{ + \caption{Komennot laskurien arvon latomiseen} + \label{tlk/laskurien-latominen} +} + +Taulukon \ref{tlk/laskurien-latominen} komentojen lisäksi laskuriin +liittyvän arvon voi latoa komennolla, joka alkaa kirjaimilla +\komentox{the} ja jatkuu laskurin nimellä. Esimerkiksi komento +\komento{thepage} latoo sivunumeron eli tekee käytännössä saman asian +kuin komento \komento{arabic}\komentoarg{page}. Aina nämä eivät +kuitenkaan ole sama asia, ja \komentox{the}\-/alkuinen komento voi olla +määritelty toisellakin tavalla. Esimerkiksi tämän oppaan leijuvat +taulukot numeroidaan laskurilla \laskuri{table}, mutta komento +\komento{thetable} latoo ensin pääluvun ja sen perään pisteen ja +taulukon numeron. Viimeisin taulukko on numeroltaan \thetable{} eli +pääluvun~\arabic{chapter} taulukko~\arabic{table}. + +Jos laskurin arvoa tarvitaan Latexin teknisessä tilanteessa eikä +tarkoituksena ole latoa sitä näkyviin itse dokumenttiin, täytyy käyttää +komentoa \komento{value}. Seuraava esimerkki luo laskurin nimeltä +\laskurix{mitta}, jonka arvoa (3) käytetään \komento{hspace}\-/ komennon +argumenttina mitan ilmaisemiseen (3\,em). + +\komentoi{newcounter} +\komentoi{setcounter} +\komentoi{hspace} +\komentoi{value} +\begin{koodilohkosis} +\newcounter{mitta} +\setcounter{mitta}{3} +x\hspace{\value{mitta}em}x +\end{koodilohkosis} + +\begin{tulossis} + x\hspace{3em}x +\end{tulossis} + +\subsection{Hierarkkiset laskurit} +\label{luku/hierarkkiset-laskurit} + +Laskurit voivat olla hierarkkisia ja riippuvaisia toisista laskureista: +kun yhden laskurin arvo kasvaa, nollautuu jokin toinen laskuri +automaattisesti. Tällaista toimintoa käytetään dokumentin lukujen eli +otsikoiden numeroinnissa. Kirjan pääluvun~1 alaluvut ovat esimerkiksi +1.1, 1.2, 1.3 jne. Kun alkaa seuraava pääluku~2, nollautuu alaluvun +laskuri, jotta saadaan oikein numeroidut alaluvut 2.1, 2.2, 2.3 jne. +Latex huolehtii lukujen numeroinnista automaattisesti, mutta omille +laskureille täytyy määritellä riippuvuussuhteet itse. Seuraavassa +esimerkissä luodaan oma laskuri, joka nollautuu automaattisesti aina, +kun sivu vaihtuu eli laskurin \laskuri{page} arvo kasvaa. + +\komentoi{newcounter} +\begin{koodilohkosis} +\newcounter{oma}[page] +\end{koodilohkosis} + +\noindent +Ylemmän tason laskureita ei kannata kasvattaa komennolla +\komento{addtocounter}, koska se vain muuttaa laskurin arvoa mutta ei +huolehdi alemman tason laskurien nollaamisesta. Hierarkkisten laskurien +kasvattamiseen on seuraavat kaksi komentoa: + +\komentoi{stepcounter} +\komentoi{refstepcounter} +\begin{koodilohkosis} +\stepcounter{laskuri} +\refstepcounter{laskuri} +\end{koodilohkosis} + +\noindent +Edellä mainitut komennot kasvattavat argumenttina annetun laskurin arvoa +yhdellä ja nollaavat siitä riippuvaiset alemman tason laskurit. +Jälkimmäinen komento \komento{refstepcounter} asettaa lisäksi +ristiviitteen numeron, joten tämän komennon jälkeen mahdollisesti tuleva +\komento{label}\-/ komento luo ristiviitekohteen. Kun tähän kohtaan +viitataan muualta käyttämällä \komento{ref}\-/ komentoa, viitteessä +näkyy laskurin numero tai oikeastaan \komentox{thelaskuri}\-/ komennon +latoma teksti. Ristiviitteitä käsitellään tarkemmin luvussa +\ref{luku/ristiviitteet}. + +Paketti \pakettictan{chngcntr} helpottaa hierarkkisten laskurien +muuttamista jälkikäteen. Paketin komentojen avulla voi jälkikäteen +asettaa jonkin laskurin riippuvaiseksi toisesta laskurista tai poistaa +riippuvuuden. + +\komentoi{newcounter} +\komentoi{counterwithin} +\komentoi{counterwithout} +\begin{koodilohkosis} +\newcounter{oma} % Luodaan laskuri ”oma”. +\counterwithin {oma}{page} % Asetetaan riippuvuus page-laskurista. +\counterwithout{oma}{page} % Poistetaan riippuvuus. +\end{koodilohkosis} + +\noindent +Edellä mainitut \paketti{chngcntr}\-/paketin komennot määrittelevät +uudelleen myös \komentox{the\-oma}\-/ komennon, jolla \laskurix{oma}\-/ +laskurin arvon voi latoa. Se latoo mukaan myös ylemmäntasoisen laskurin +arvon. Jos tätä \komentox{the}\-/ alkuista komentoa ei halua määritellä +uudelleen, täytyy käyttää tähdellisiä komennon versioita: +\komento{counterwithin*} ja \komento{counterwithout*}. Laskuriin +liittyvän \komentox{the}\-/ komennon voi aina itsekin määritellä +haluamansa laiseksi komennolla \komento{renewcommand} (luku +\ref{luku/komennot-määrittely}), esimerkiksi seuraavalla tavalla: + +\komentoi{renewcommand} +\komentoi{arabic} +\komentoi{alph} +\laskurii{page} +\begin{koodilohkosis} +\renewcommand{\theoma}{\arabic{page}/\alph{oma}} +\end{koodilohkosis} + +\subsection{Kokonaislaskurit} + +Latex ei tiedä etukäteen, mihin arvoon laskurit lopulta yltävät. Se vain +latoo sivuja peräkkäin eikä tiedä mitään tulevasta. Sen vuoksi +esimerkiksi dokumentin sivumäärää ei voi ihan yksinkertaisella +komennolla latoa dokumentin alkusivuille. + +Tekninen vastaus tämäntyyppisiin ongelmiin löytyy ristiviitteistä (luku +\ref{luku/ristiviitteet}). Ne toimivat sisäisesti niin, että dokumentin +ensimmäisellä kääntökerralla kirjoitetaan väliaikaistiedostoon muistiin +tarpeellisia asioita ja seuraavalla kääntökerralla hyödynnetään +väliaikaistiedostoa. Dokumentin sivumäärän ja viimeisen sivunumeron +tallentamiseen on olemassa paketti \pakettictan{totpages}, joka lisää +viimeiselle sivulle automaattisesti ristiviitteen nimeltä +\koodi{Tot\-Pages}. Sivumäärän ja viimeisen sivun numeron voi latoa +komennoilla \komento{ref} ja \komento{pageref}. Esimerkki +\ref{esim/totpages} havainnollistaa niiden käyttöä. + +\begin{esimerkki*} + \luokkai{article} + \komentoi{documentclass} + \komentoi{usepackage} + \pakettii{totpages} + \komentoi{ref} + \komentoi{pageref} + \komentoi{addtocounter} + \laskurii{page} + \komentoi{newpage} + +\begin{koodilohko} +\documentclass{article} +\usepackage{totpages} + +\begin{document} +Sivumäärä: \ref{TotPages}. Viimeinen sivu: \pageref{TotPages}. + +\addtocounter{page}{10} % Sivunumerot 11, 12, 13... +\newpage Jotain... \newpage ...sisältöä. +\end{document} +\end{koodilohko} + \caption{Dokumentin sivumäärän ja viimeisen sivun numeron latominen} + \label{esim/totpages} +\end{esimerkki*} + +Muunlaisten kokonaislaskurien toteuttamiseen voi käyttää +\pakettictan{totcount}\-/ pakettia. Se tarjoaa komennon, jolla +rekisteröidään olemassa oleva laskuri kokonaislaskuriksi. Lisäksi on +komento, jolla ladotaan tai palautetaan laskurin lopullinen arvo. + +\komentoi{newcounter} +\komentoi{regtotcounter} +\komentoi{addtocounter} +\komentoi{total} +\komentoi{totvalue} +\begin{koodilohkosis} +\newcounter{oma} % Luodaan laskuri ”oma”. +\regtotcounter{oma} % Rekisteröidään ”oma” kokonaislaskuriksi. +\addtocounter{oma}{1} % Kasvatetaan laskurin arvoa. +\total{oma} % Ladotaan laskurin lopullinen arvo. +\totvalue{oma} % Palautetaan laskurin lopullinen arvo. +\end{koodilohkosis} + +\noindent +Edellä olevan esimerkin viimeistä komentoa \komento{totvalue} ei käytetä +laskurin arvon latomiseen itse dokumenttiin vaan sitä käytetään +teknisissä yhteyksissä kuten toisen Latex\-/komennon argumenttina. + +Myös Latexin valmiita laskureita voi rekisteröidä kokonaislaskureiksi. +Tässä oppaassa on yhteensä \total{chapter} numeroitua päälukua, ja +mainittu lukumäärä saatiin laskettua seuraavasti: + +\komentoi{regtotcounter} +\komentoi{total} +\laskurii{chapter} +\begin{koodilohkosis} +\regtotcounter{chapter} % Sijoitetaan dokumentin esittelyosaan. +\total{chapter} % Latoo päälukujen (chapter) lukumäärän. +\end{koodilohkosis} + +\section{Laatikot} +\label{luku/laatikot} + +Tex ajattelee ladottavan tekstin ja muun sisällön laatikoina eli +suorakulmioina, joilla on leveys ja korkeus. Esimerkiksi kirjaimet ovat +teknisesti laatikoita, joita ladotaan peräkkäin. Samoin monet valmiit +ympäristöt luovat laatikon, joka sisältää jotakin ja vie tietyn verran +tilaa sivulta. + +Dokumentin kirjoittajalle on välillä hyötyä luoda omia laatikoita, koska +laatikko toimii yhtenä kokonaisuutena, jonka reunoja muut elementit ja +latomiskoneisto kunnioittavat. + +\subsection{Pienet laatikot} +\label{luku/laatikot-pienet} + +Yksinkertainen peruslaatikko tehdään \komento{mbox}\-/ komennolla, joka +latoo argumenttina annetun tekstin näkymättömän laatikon sisään. Näin +luotu laatikko pysyy koossa, eli sen sisältämiä sanoja ei esimerkiksi +tavuteta. Komento sopiikin hyvin tavutuksen estämiseen yksittäisessä +tilanteessa. + +Toinen laatikkokomento \komento{makebox} toimii samalla tavalla kuin +\komento{mbox} mutta hyväksyy yhden tai kaksi valinnaista argumenttia. +Komentojen muoto on seuraava: + +\komentoi{makebox} +\begin{koodilohkosis} +\makebox[leveys]{teksti} +\makebox[leveys][sijainti]{teksti} +\end{koodilohkosis} + +\noindent +Argumentti \koodi{leveys} on laatikon leveysmitta ja \koodi{sijainti} on +kirjainkoodi, joka ilmaisee laatikon sisällön vaakasuuntaisen +sijoittelun. Kirjain \koodi{c} (\englanti{center}) keskittää sisällön, +\koodi{l} (\englanti{left}) tasaa sisällön vasemmalle, \koodi{r} +(\englanti{right}) tasaa sisällön oikealle ja \koodi{s} +(\englanti{stretch}) tasaa sisällön molemmista reunoista eli venyttää +laatikon sisäisiä sanavälejä sopivasti. + +\komentoi{makebox} +\begin{koodilohkosis} +\makebox[12em][s]{Laatikossa on tilaa.} +\end{koodilohkosis} + +\begin{tulossis} + \makebox[12em][s]{Laatikossa on tilaa.} +\end{tulossis} + +\noindent +\komento{makebox}\-/ komennon \koodi{leveys}\-/ argumentissa voi käyttää +apuna mittoja \mitta{width} (leveys), \mitta{height} (korkeus), +\mitta{depth} (syvyys) ja \mitta{totalheight} (kokonaiskorkeus: +\mitta{height} + \mitta{depth}), jotka määräytyvät laatikon sisällön +luontaisten mittojen perusteella. Kuvassa \ref{kuva/kirjainmitat} +(s.~\pageref{kuva/kirjainmitat}) oleva typografinen viivasto +havainnollistaa näitä mittoja. + +Seuraava esimerkki latoo laatikon, jonka leveys on 1,5\-/ kertainen +sisällön luontaiseen leveyteen nähden, ja keskittää tekstin. Pystyviivat +ovat mukana rajojen hahmottamisen vuoksi. + +\komentoi{makebox} +\mittai{width} +\begin{koodilohkosis} +|\makebox[1.5\width][c]{Keskitetty}| +\end{koodilohkosis} + +\begin{tulossis} + |\makebox[1.5\width][c]{Keskitetty}| +\end{tulossis} + +\noindent +Laatikkokomento \komento{fbox} toimii kuten \komento{mbox} mutta piirtää +laatikolle myös näkyvät kehykset. Komento \komento{framebox} on +puolestaan kehyksellinen versio \komento{makebox}\-/ komennosta. +Kehysviivan leveyden voi asettaa mitan \mitta{fboxrule} avulla, ja +kehysviivan etäisyys sisällöstä määritellään mitassa \mitta{fboxsep}. + +\komentoi{fbox} +\komentoi{framebox} +\komentoi{setlength} +\mittai{fboxrule} +\mittai{fboxsep} +\mittai{width} +\begin{koodilohkosis} +\setlength{\fboxsep}{3bp} +\setlength{\fboxrule}{.5bp} +\framebox[1.2\width][c]{Laatikossa \fbox{laatikko}} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\fboxsep}{3bp} + \setlength{\fboxrule}{.5bp} + \framebox[1.2\width][c]{Laatikossa \fbox{laatikko}} +\end{tulossis} + +\noindent +Värillisten laatikoiden ja kehysten tekemistä neuvotaan luvussa +\ref{luku/korostus-värit}, joka käsittelee väriasioita muutenkin. + +Tekstiä sisältävien laatikoiden korkeus vaihtelee kirjainten ja muiden +merkkien muodon mukaan. Esimerkiksi kirjainten ala- ja yläpidennykset +kasvattavat laatikon kokoa gemenalinjan yläpuolelle tai peruslinjan +alapuolelle. Seuraavasta esimerkistä voi vertailla tekstilaatikoiden +muodostumista: + +\komentoi{setlength} +\komentoi{fbox} +\mittai{fboxsep} +\begin{koodilohkosis} +\setlength{\fboxsep}{0bp} +\fbox{sana} \fbox{kirja} \fbox{×} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\fboxsep}{0bp} + \fbox{sana} \fbox{kirja} \fbox{×} +\end{tulossis} + +\noindent +Edellisen esimerkin kaltaisissa tilanteissa voi olla tarpeen käyttää +laatikon sisällä komentoa \komento{strut}. Se latoo näkymättömän, +leveydettömän merkin, jonka korkeus on rivikorkeuden mukainen (mitta +\mitta{baselineskip}). + +\komentoi{setlength} +\komentoi{fbox} +\komentoi{strut} +\mittai{fboxsep} +\begin{koodilohkosis} +\setlength{\fboxsep}{0bp} +\fbox{\strut sana} \fbox{\strut kirja} \fbox{\strut ×} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\fboxsep}{0bp} + \fbox{\strut sana} \fbox{\strut kirja} \fbox{\strut ×} +\end{tulossis} + +\subsection{Suuret laatikot} +\label{luku/laatikot-isot} + +Jos laatikon täytyy sisältää useita tekstikappaleita tai muuta +pystysuuntaista sisältöä, tarvitaan esimerkiksi \komento{parbox}\-/ +komentoa. Se tarvitsee ainakin kaksi argumenttia: laatikon leveyden ja +sisällön. + +\komentoi{parbox} +\begin{koodilohkosis} +\parbox{leveys}{sisältö} +\end{koodilohkosis} + +\noindent +\komento{parbox}\-/ laatikon sisällä teksti ladotaan samoin kuin teksti +normaalistikin eli rivit katkaistaan sanavälien kohdalta ja +mahdollisesti tavutuskohdista. Muutkin tekstikappaleen asetukset +pätevät, ja asetukset voi määrittää haluamikseen laatikon sisällä. +Lisätietoa tekstikappaleista on luvussa \ref{luku/kappale}. + +Komento \komento{parbox} hyväksyy myös yhden, kaksi tai kolme +valinnaista argumenttia. Niillä määritellään laatikon pystysuuntainen +sijoittelu ympäristöönsä nähden, laatikon korkeus ja laatikon sisällön +pystysuuntainen sijoittelu. Valinnaiset argumentit toimivat seuraavasti: + +\komentoi{parbox} +\begin{koodilohkosis} +\parbox[sijainti]{leveys}{sisältö} +\parbox[sijainti][korkeus]{leveys}{sisältö} +\parbox[sijainti][korkeus][sisäsijainti]{leveys}{sisältö} +\end{koodilohkosis} + +\noindent +Argumentti \koodi{sijainti} on kirjain \koodi{c} (\englanti{center}, +keskilinja), \koodi{t} (\englanti{top}, ylälinja) tai \koodi{b} +(\englanti{bottom}, alalinja). Näillä määritetään, miten laatikko +sijoitetaan pystysuunnassa suhteessa tekstiin. Seuraava esimerkki +havainnollistaa ensimmäisen valinnaisen argumentin toimintaa. Laatikon +sisällä on rivinvaihtokomentoja (\komento{\keno}) ja kolme tekstiriviä. + +\komentoi{parbox} +\begin{koodilohkosis} +abc \parbox[c]{1em}{1 \\ 2 \\ 3} +abc \parbox[t]{1em}{1 \\ 2 \\ 3} +abc \parbox[b]{1em}{1 \\ 2 \\ 3} abc +\end{koodilohkosis} + +\begin{tulossis} + abc \parbox[c]{1em}{1 \\ 2 \\ 3} + abc \parbox[t]{1em}{1 \\ 2 \\ 3} + abc \parbox[b]{1em}{1 \\ 2 \\ 3} abc +\end{tulossis} + +\noindent +Komennon toinen valinnainen argumentti \koodi{korkeus} määrittää +laatikon korkeuden. Oletuksena korkeus määräytyy sisällön korkeuden +mukaan, mutta tällä argumentilla korkeus asetetaan kiinteästi. Se voi +olla hyödyllistä varsinkin silloin, kun sisältö halutaan tasata laatikon +sisällä ylös, keskelle tai alas. + +Kolmas valinnainen argumentti \koodi{sisäsijainti} nimittäin asettaa +laatikon sisällön pystysuuntaisen tasauksen. Argumentiksi annetaan +kirjain \koodi{c} (\englanti{center}, keskelle), \koodi{t} +(\englanti{top}, ylös), \koodi{b} (\englanti{bottom}, alas) tai +\koodi{s} (\englanti{stretch}, ylös ja alas). Viimeksi mainittu eli ylös +ja alas tasaaminen vaatii, että laatikon sisällä on venyviä +pystysuuntaisia välejä. Niitä käsitellään luvussa +\ref{luku/venyvät-mitat}. + +Ympäristö \ymparisto{minipage} vastaa toiminnallisesti +\komento{parbox}\-/ komentoa. Se hyväksyy täsmälleen samat argumentit. +Erona on se, että \ymparisto{minipage}\-/ ympäristön sisällä voi käyttää +laatikon omia alaviitteitä (luku \ref{luku/alaviitteet}), jotka ladotaan +laatikon alaosaan. + +\ymparistoi{minipage} +\begin{koodilohkosis} +\begin{minipage}[sijainti][korkeus][sisäsijainti]{leveys} + ... +\end{minipage} +\end{koodilohkosis} + +\subsection{Laatikoiden siirtely} + +Komennolla \komento{raisebox} voi latoa laatikon tekstin ylemmäs tai +alemmas kuin se normaalisti sijoittuisi. Komennon ensimmäinen argumentti +on etäisyysmitta, kuinka paljon ylemmäs teksti ladotaan. Negatiivinen +mitta vie tekstin alemmas. Toinen argumentti on laatikon teksti. + +\komentoi{raisebox} +\begin{koodilohkosis} +\raisebox{etäisyysmitta}{teksti} +\end{koodilohkosis} + +\noindent +Argumentissa \koodi{etäisyysmitta} voi käyttää apuna mittoja +\mitta{width}, \mitta{height}, \mitta{depth} ja \mitta{totalheight}, +joiden merkitys on sama kuin \komento{makebox}\-/ komennolla (luku +\ref{luku/laatikot-pienet}). \komento{raisebox}\-/ komennolle voi antaa +yhden tai kaksi valinnaista argumenttia, joilla määritellään laatikolle +uusi korkeus ja syvyys. Molemmat ovat mittoja, ja ne korvaavat siirretyn +laatikon tekstin luonnollisen korkeuden ja syvyyden. Komennon argumentit +annetaan seuraavasti: + +\komentoi{raisebox} +\begin{koodilohkosis} +\raisebox{etäisyysmitta}[korkeus]{teksti} +\raisebox{etäisyysmitta}[korkeus][syvyys]{teksti} +\end{koodilohkosis} + +\noindent +Grafiikkaan kuten kuviin ja väreihin erikoistunut paketti +\paketti{graphicx} sisältää hyödyllisiä laatikkokomentoja: +\komento{scalebox}, \komento{resizebox} ja \komento{rotatebox}. Komento +\komento{scalebox} skaalaa tekstin eri kokoiseksi vaaka- tai +pystysuunnassa. + +\komentoi{scalebox} +\begin{koodilohkosis} +\scalebox{vaakaskaalaus}[pystyskaalaus]{teksti} +\end{koodilohkosis} + +\noindent +Argumentit \koodi{vaakaskaalaus} ja \koodi{pystyskaalaus} ovat +kertoimia. Pystysuuntainen skaalausargumentti on valinnainen: jos sen +jättää pois, pystysuuntainen skaalaus on samansuuruinen kuin +vaakasuuntainen. Negatiivisella kertoimella voi kääntää tekstin +toisinpäin. + +\komentoi{scalebox} +\begin{koodilohkosis} +\scalebox{2}[1]{leveä} \scalebox{-1}[1]{käännetty} +\end{koodilohkosis} + +\begin{tulossis} + \scalebox{2}[1]{leveä} \scalebox{-1}[1]{käännetty} +\end{tulossis} + +\noindent +Samantapainen skaalaustoiminto saadaan myös komennolla +\komento{resizebox}. Sen argumentiksi ei anneta kertoimia vaan mittoja, +eli teksti skaalataan annettuihin mittoihin. + +\komentoi{resizebox} +\komentoi{resizebox*} +\begin{koodilohkosis} +\resizebox {vaakamitta}{pystymitta}{teksti} +\resizebox*{vaakamitta}{pystymitta}{teksti} +\end{koodilohkosis} + +\noindent +Komennon \komentoi{resizebox} normaali versio käsittelee +\koodi{pystymitta}\-/ argumentin siten, että se tulee olemaan tekstin +korkeus eli kirjainten peruslinjan yläpuolinen osa. Komennon +\komentoi{resizebox*} tähdellinen versio puolestaan toimii siten, että +pystymitta on tekstin kokonaiskorkeus eli peruslinjan yläpuolinen osa +(korkeus) ja alapuolinen osa (syvyys) yhdessä. Kuva +\ref{kuva/kirjainmitat} (s.~\pageref{kuva/kirjainmitat}) havainnollistaa +asiaa. \komento{resizebox}\-/ komennon argumenteissa voi käyttää apuna +mittoja \mitta{width}, \mitta{height}, \mitta{depth} ja +\mitta{totalheight} samoin kuin \komento{makebox}\-/ komennossa (luku +\ref{luku/laatikot-pienet}). + +Laatikoiden pyörittely käy \komento{rotatebox}\-/ komennolla. Sen +argumentiksi täytyy antaa ainakin kääntökulma asteina ja käännettävä +teksti. + +\komentoi{rotatebox} +\begin{koodilohkosis} +\rotatebox[asetuksia]{kääntökulma}{teksti} +\end{koodilohkosis} + +\noindent +Valinnainen argumentti \koodi{asetuksia} voi sisältää asetusvalitsimia +ja niiden arvoja. Tärkein valitsin on \koodi{origin}, jolla määritetään +käännettävän tekstin kääntöpiste. Valitsimen arvoksi annetaan yksi tai +kaksi seuraavista kirjaimista: \koodi{c} (\englanti{center}, keski), +\koodi{l} (\englanti{left}, vasen), \koodi{r} (\englanti{right}, oikea), +\koodi{t} (\englanti{top}, ylä), \koodi{b} (\englanti{bottom}, ala) tai +\koodi{B} (\englanti{baseline}, peruslinja). + +\komentoi{rotatebox} +\begin{koodilohkosis} +\rotatebox[origin=l] {25}{ylämäki} +\rotatebox[origin=r]{-25}{alamäki} +\end{koodilohkosis} + +\begin{tulossis} + \rotatebox[origin=l] {25}{ylämäki} + \rotatebox[origin=r]{-25}{alamäki} +\end{tulossis} + +\noindent +\komento{rotatebox}\-/ komennon valinnaisen argumentin valitsin +\koodi{units} määrittelee käytetyn kulmayksikön. Valitsimelle annetaan +arvoksi täysympyrän yksikkömäärä, ja oletusasetus on \koodi{units=\katk + 360}. Jos haluaa käyttää radiaaneja, sopiva asetus on +\koodi{units=\katk 6.283185} (2π\,rad). diff --git a/info/kaytannollista-latexia/luku-rakenne.tex b/info/kaytannollista-latexia/luku-rakenne.tex new file mode 100644 index 0000000000..3d55ec708f --- /dev/null +++ b/info/kaytannollista-latexia/luku-rakenne.tex @@ -0,0 +1,7903 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\chapter{Rakenne ja sisältö} +\label{luku/rakenne} + +Tämä luku on oppaan kaikista luvuista kenties käytännönläheisin. Luku +keskittyy asioihin, joita kirjoittaja miettii erityisesti dokumentin +sisällön kirjoitusvaiheessa. Kirjoittaja tekee esimerkiksi valintoja +otsikoinnin ja muun jäsentämisen osalta. Hän miettii tiedon esittämistä +paitsi tekstin avulla myös esimerkiksi luetelmien, kuvien ja taulukoiden +avulla. Kirjoittaja tekee myös typografisia valintoja tekstin muotoilun +ja korostuskeinojen näkökulmasta. Edellä mainittuja ja muitakin +dokumentin rakenteen ja sisällön asioita käsitellään niin tekniikan kuin +typografiankin näkökulmasta. + +\section{Tekstikappaleet} +\label{luku/kappale} + +Tekstikappale on tekstin osa, jonka pitäisi käsitellä suunnilleen yhtä +asiakokonaisuutta. Se voi olla esimerkiksi yksi aihe, näkökulma, +ajankohta tai henkilö. Tekstin seuraava kappale käsittelee jotakin +toista aihetta, näkökulmaa tms. Kappaleen vaihtuminen on lukijalle +merkki siitä, että tekstin sisällössäkin jokin muuttuu. + +Latexin lähdetiedostoissa kappaleen vaihtuminen ilmaistaan +kirjoittamalla kappaleiden väliin vähintään yksi tyhjä rivi. Tätä +merkintäkielen piirrettä käsitellään myös luvussa +\ref{luku/kappaleen-vaihtuminen}. Kappale vaihtuu myös komennolla +\komentom{par}, joka sopii käytettäväksi esimerkiksi komentojen +määrittelyssä (luku \ref{luku/komennot}), kun halutaan varmistaa +kappaleen vaihtuminen tietyssä kohdassa. + +Ladotuissa teksteissä kuten kirjoissa ja lehdissä kappaleen vaihtuminen +ilmaistaan melkein aina siten, että uuden kappaleen ensimmäinen rivi +sisennetään hieman. Niin on tässäkin oppaassa. Toisinaan tekstikappaleet +erotetaan pystysuuntaisella välillä, ja silloin kappaleiden ensimmäistä +riviä ei sisennetä. Kappaleiden välejä, sisennyksiä, rivien tasaamista +ja muita asetuksia käsitellään seuraavissa alaluvuissa. + +Monissa kappaleisiin liittyvissä asetuksissa tarvitaan Texin mittoja ja +mittayksiköitä. Mittoihin liittyvää tekniikkaa käsitellään tarkemmin +luvussa \ref{luku/mitat}, joka on syytä tuntea ennen tämän alaluvun +lukemista. + +\subsection{Tasaaminen ja palstan muoto} +\label{luku/kappaleen-tasaus} + +Perusdokumenttiluokissa (luku \ref{luku/perusdokumenttiluokat}) +tekstikappaleet tasataan oletuksena palstan molempiin reunoihin, ja tätä +palstan muotoa kutsutaan tasapalstaksi. Se tarkoittaa samalla sitä, että +rivillä olevia sanavälejä venytetään sopivasti, jotta jokainen rivi +näyttäisi yhtä pitkältä ja palstan molemmat reunat tasaiselta. + +Käytännössä sanavälien venymiselle on määritelty yläraja, jonka yli +niitä ei venytetä. Ylärajan tarkoituksena on estää liian suuret ja rumat +sanavälit. Rajoitus on sinänsä järkevä, mutta se voi myös johtaa siihen, +että Tex ei saa tasattua kaikkia tekstikappaleita palstan oikeasta +reunasta: jotkin rivit yltävät palstan reunan yli; jotkin rivit jäävät +vajaaksi. Näin käy usein varsinkin suomen kielessä, jonka sanat ovat +usein pitkiä ja riveillä on vähänlaisesti sanavälejä. Suomen kielessä +sanavälien venymisen yläraja on usein tarpeellista asettaa oletusarvoa +suuremmaksi. Se tehdään mitan \mittam{emergencystretch} avulla, +esimerkiksi seuraavasti: + +\komentoi{setlength} +\mittai{emergencystretch} +\begin{koodilohkosis} +\setlength{\emergencystretch}{1em} +\end{koodilohkosis} + +\noindent +Kaikenlaiset kappaleiden latomiseen liittyvät tekniset rajoitukset voi +poistaa tai asettaa hyvin suuriksi komennolla \komentom{sloppy}. Komento +asettaa muun muassa sanavälien venymisen ylärajaksi 3\,em. Tämän +komennon käyttö ei ole kovin suositeltavaa, koska sillä on muitakin +seurauksia ja se voi vaikuttaa myös sellaisiin kappaleisiin, jotka +muuten saataisiin ladottua nätisti. Parempi on asettaa vain mitta +\mitta{emergencystretch} riittävän suureksi. Sanavälien venymiseen ja +kappaleiden tasaiseen latomiseen liittyvät asetukset voi palauttaa +oletusarvoihin komennolla \komentom{fussy}. + +Hyvin tavallista on tasata teksti pelkästään vasempaan reunaan, jolloin +rivien pituudet vaihtelevat ja oikealla on niin sanottu liehureuna. +Oikea liehureuna sopii pitkiin teksteihin yhtä hyvin kuin tasapalstakin, +mutta se on parempi valinta erityisesti silloin, kun palsta on kapea. +Nimittäin kapealla palstalla venyviä sanavälejä on käytettävissä hyvin +vähän ja oikean reunan tasaaminen vaatii sanavälien venyttämistä joskus +kohtuuttoman paljon. Tekstiin jää rumia aukkoja. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\komento{#1} & \ymparisto{#2} & #3 \\} + \begin{tabular}{lll} + \toprule + \ots{Komento} & \ots{Ympäristö} & \ots{Merkitys} \\ + \midrule + \rivi{raggedright}{flushleft}{vasen tasaus, oikea liehu} + \rivi{raggedleft}{flushright}{oikea tasaus, vasen liehu} + \rivi{centering}{center}{keskitetty} + \midrule + \rivi{RaggedRight}{FlushLeft} + {vasen tasaus, oikea liehu, tavutus (\paketti{ragged2e})} + \rivi{RaggedLeft}{FlushRight} + {oikea tasaus, vasen liehu, tavutus (\paketti{ragged2e})} + \rivi{Centering}{Center}{keskitetty, tavutus (\paketti{ragged2e})} + \rivi{justifying}{justify}{tasapalsta, tavutus (\paketti{ragged2e})} + \bottomrule + \end{tabular} +}{ + \caption{Tekstikappaleen tasaamiseen ja palstan muotoon vaikuttavat + komennot ja ympäristöt. Osa sisältyy \paketti{ragged2e}\-/pakettiin} + \label{tlk/kappaleen-tasauskomennot} +} + +Kappaleiden tasaamiseen ja palstan muotoon vaikuttavia komentoja ja +ympäristöjä on koottu taulukkoon \ref{tlk/kappaleen-tasauskomennot}. +Taulukossa on mainittu ensin Latexin omat komennot ja sitten +\pakettictan{ragged2e}\-/ paketin vastaavat. Latexin omat komennot +estävät sanojen tavuttamisen, kun taas \paketti{ragged2e}\-/ paketin +komennot sallivat tavutuksen normaalisti. + +\subsection{Pystysuuntaiset välit} +\label{luku/pystysuuntaiset-välit} + +Kappaleiden väliin ladottava pystysuuntainen tyhjä tila asetetaan mitan +\mittam{parskip} avulla. Se on oletuksena nolla, mutta pientä venymistä +kuitenkin sallitaan, eli joissakin tilanteissa kappaleiden väliin +voidaan latoa pieni tyhjä tila. Jos tyhjää tilaa ei haluta missään +tilanteessa, asetetaan mitta vain nollaksi: + +\komentoi{setlength} +\mittai{parskip} +\begin{koodilohkosis} +\setlength{\parskip}{0ex} +\end{koodilohkosis} + +\noindent +Seuraava esimerkkikomento asettaa kappaleväliksi 1,3\,ex. Lisäksi se +sallii kappalevälin venyä 0,2\,ex:n verran tai kutistua 0,1\,ex:n +verran. + +\komentoi{setlength} +\mittai{parskip} +\begin{koodilohkosis} +\setlength{\parskip}{1.3ex plus .2ex minus .1ex} +\end{koodilohkosis} + +\noindent +Silloin kun kappaleet ladotaan erilleen toisistaan, on yleensä hyvä +sallia kappalevälin venyä tai kutistua hieman, koska venyvät +pystysuuntaiset välit antavat Texille paremmat mahdollisuudet latoa +hyvännäköisiä sivuja. Venyvien välien avulla esimerkiksi sivun +tekstialueen ylä- ja alareunat saadaan aina samalle kohdalle. Toisaalta +myös liian suuret ja toisistaan liiaksi poikkeavat kappalevälit voivat +olla rumannäköisiä. + +Tavallista kappaleväliä suurempien pystysuuntaisten välien tekemiseen on +olemassa kolme valmista komentoa: suurimmasta pienimpään ne ovat +\komentom{bigskip}, \komentom{medskip} ja \komentom{smallskip}. Ne +sopivat käytettäväksi yksittäisiin tilainteisiin, joissa normaali +kappaleväli on liian vähän. Jos sivunvaihto osuu näiden komentojen +kohdalle, mitään väliä ei ladota sivun loppuun eikä seuraavan alkuun. + +Edellä mainittujen komentojen latoman välin suuruuteen voi vaikuttaa +mittojen \mitta{bigskipamount}, \mitta{medskipamount} ja +\mitta{smallskipamount} avulla. Seuraavassa on esimerkkikomennot +mittojen määrittelemiseen ja samalla niiden oletusarvot: + +\komentoi{setlength} +\mittai{bigskipamount} +\mittai{medskipamount} +\mittai{smallskipamount} +\begin{koodilohkosis} +\setlength{\bigskipamount} {12pt plus 4pt minus 4pt} +\setlength{\medskipamount} {6pt plus 2pt minus 2pt} +\setlength{\smallskipamount}{3pt plus 1pt minus 1pt} +\end{koodilohkosis} + +\noindent +Komentojen \komento{bigskip}, \komento{medskip} ja \komento{smallskip} +sijasta voi käyttää myös komentoja \komentom{bigbreak}, +\komentom{medbreak} tai \komentom{smallbreak}. Nämä toimivat lähes +samalla tavalla, mutta niihin sisältyy myös sivunvaihtovihje. Toisin +sanoen ne vaikuttavat ladonta\-/algoritmiin siten, että komennon +kohdalla todennäköisyys sivun vaihtumiselle kasvaa suhteessa muihin +kohtiin. Sivu voi edelleen vaihtua muustakin kohdasta, jos algoritmi +löytää omasta mielestään vielä paremman paikan. + +Pystysuuntaisten välien yleiskomento on \komentom{vspace}, jolle +annetaan argumentiksi välin suuruus ja mahdolliset venymisen rajat. +Tämäkin komento jättää välin latomatta, jos se sattuu sivunvaihdon +kohdalle. Sen sijaan tähdellinen versio \komentom{vspace*} latoo välin +joka tapauksessa, vaikka se olisi sivun lopussa tai alussa. + +\komentoi{vspace} +\begin{koodilohkosis} +Tekstikappale. +\vspace{5ex plus 1ex minus .5ex} + +Toinen tekstikappale. +\end{koodilohkosis} + +\noindent +Komento \komentom{addvspace} toimii lähes samoin kuin \komento{vspace}, +mutta se huomioi mahdolliset peräkkäiset \komento{addvspace}\-/ komennot +ja varmistaa, että vain suurin väli toteutuu. Jos siis useita +\komento{addvspace}\-/ komentoja sattuu peräkkäin, niiden määrittämiä +välejä ei ladota peräkkäin vaan ainoastaan suurin niistä ladotaan. +Seuraava esimerkki latoo kappaleiden väliin 2\,ex:n suuruisen +pystysuuntaisen välin: + +\komentoi{addvspace} +\begin{koodilohkosis} +Tekstikappale. + +\addvspace{1ex} \addvspace{2ex} \addvspace{.5ex} +Toinen tekstikappale. +\end{koodilohkosis} + +\noindent +Jos edellisessä esimerkissä olisi käytetty \komento{vspace}\-/ komentoa, +pystysuuntaisen välin suuruus olisi 3,5\,ex, joka on välien +yhteenlaskettu suuruus. + +\komento{addvspace}\-/komento soveltuu hyvin komentojen ja ympäristöjen +määrittelyyn (luvut \ref{luku/komennot} ja \ref{luku/ympäristöt}). +Esimerkiksi itse määritellyn ympäristön alussa ja lopussa voi +\komento{addvspace}\-/ komennolla varmistaa tietynsuuruisen välin, mutta +jos sama tai muu vastaava ympäristö on dokumentissa kahdesti peräkkäin, +huomioidaan pystysuuntainen väli vain kerran eli suurimman välin mukaan. +Jotkin Latexin valmiit ympäristöt tekevät juuri näin eli käyttävät +\komento{addvspace}\-/komentoa välien asettamiseen. + +Sivun alueella äärettömästi venyvän pystysuuntaisen välin saa komennolla +\komentom{vfill}. Mitan luonnollinen arvo on nolla, mutta se voi venyä +niin, että se täyttää kaiken tyhjän tilan sivulla. \komento{vfill}\-/ +komento tarkoittaa käytännössä samaa kuin +\komento{vspace}\komentoarg{0mm plus 1fill} \=/komento. Texin venyviä +mittoja ja välejä käsitellään tarkemmin luvussa +\ref{luku/venyvät-mitat}. + +\subsection{Ensimmäisen rivin sisennys} +\label{luku/ensimmäisen-rivin-sisennys} + +Kirjojen ja lehtien typografiassa kappaleen ensimmäinen rivi on tapana +sisentää merkiksi siitä, että alkaa uusi kappale. Sisennys on lukijalle +merkki siitä, että tekstin sisällössä siirrytään seuraavaan asiaan. +Oletusasetuksilla Latex latoo sisennyksen automaattisesti kappaleen +alkuun mutta ei kuitenkaan otsikoiden jälkeen. + +Ensimmäisen rivin sisennyksen suuruus asetetaan mitan \mittam{parindent} +avulla, esimerkiksi seuraavan esimerkin mukaisesti. Sopiva mittayksikkö +tähän tarkoitukseen on \emph{em}, koska se viittaa suoraan nykyisen +fontin kokoon. + +\komentoi{setlength} +\mittai{parindent} +\begin{koodilohkosis} +\setlength{\parindent}{1em} +\end{koodilohkosis} + +\noindent +Edellä mainittu mitta pitäisi asettaa nollaan silloin, kun kappaleiden +välissä on tyhjää tilaa. Pystysuuntainen välihän jo sinänsä ilmaisee, +että kappale vaihtuu. + +\komentoi{setlength} +\mittai{parskip} +\mittai{parindent} +\begin{koodilohkosis} +\setlength{\parskip}{1.3ex plus .2ex minus .1ex} +\setlength{\parindent}{0em} % Ei sisennystä. +\end{koodilohkosis} + +\noindent +\mitta{parindent}\-/ mitan levyisen välin voi tehdä mihin tahansa +komennolla \komentom{indent}. Tätä komentoa ei tavallisesti tarvita, +koska kappaleet alkavat automaattisesti sen suuruisella sisennyksellä. +Tarpeellisempi komento on sen vastakohta \komentom{noindent}, joka +voidaan kirjoittaa kappaleen alkuun estämään kyseisen kappaleen +ensimmäisen rivin sisentäminen. + +\komentoi{noindent} +\begin{koodilohkosis} +\noindent +Tämän tekstikappaleen ensimmäistä riviä ei sisennetä. +\end{koodilohkosis} + +\noindent +Suomenkielisissä julkaisuissa on tavallista, että leipätekstin +kappaleessa ei ole sisennystä, jos sitä ennen on pystysuuntainen väli. +Tällainen tilanne on aina otsikoiden jälkeen mutta myös kokonaan +sisennetyn tekstikappaleen jälkeen tai kuvan, taulukon, luetelman tai +muun vastaavan osan jälkeen, jos nämä ovat osa tekstivirtaa eivätkä +leijuvia osia (luku \ref{luku/leijuosat}). Käytäntöön on joskus +poikkeuksia suomenkielisessäkin typografiassa, mutta eri kielten välillä +käytäntö voi vaihdella enemmänkin. + +Latex estää sisennyksen automaattisesti otsikoiden jälkeen mutta latoo +sisennyksen kuitenkin kaikkien muiden elementtien ja pystysuuntaisen +välin jälkeen. Jos sisennys halutaan estää, pitäisi kyseiset kappaleet +aloittaa aina \komento{noindent}\-/komennolla. + +Toinen vaihtoehto on käyttää \pakettictan{noindentafter}\-/ pakettia ja +määritellä sen tarjoaman komennon avulla, minkä ympäristöjen jälkeen ei +haluta sisennystä. Seuraava esimerkki poistaa sisennyksen aina +\ymparisto{list}- ja \ymparisto{tabular}\-/ ympäristöjen jälkeen (luvut +\ref{luku/list-ympäristö} ja \ref{luku/taulukot}). + +\komentoi{NoIndentAfterEnv} +\ymparistoi{list} +\ymparistoi{tabular} +\begin{koodilohkosis} +\NoIndentAfterEnv{list} +\NoIndentAfterEnv{tabular} +\end{koodilohkosis} + +\noindent +Tosin \paketti{noindentafter}\-/ paketti ei ole aina toiminut +luotettavasti yhdessä \paketti{polyglossia}\-/ kielipaketin kanssa. Jos +sisennyksen poistaminen ei tahdo toimia, kyse voi olla juuri tästä. + +Kolmas keino kappaleen ensimmäisen rivin sisennyksen estämiseksi jonkin +ympäristön jälkeen on se, että aloittaa tekstikappaleen heti ympäristön +lopettavan \komento{end}\-/ komennon jälkeen -- ilman tyhjää riviä. + +\subsection{Riippuva sisennys} +\label{luku/riippuva-sisennys} + +Riippuva sisennys tarkoittaa tekstikappaleen muotoa, jossa sisennetään +kappaleen muita rivejä mutta ei ensimmäistä. Riippuvaa sisennystä +käytetään esimerkiksi kirjallisuus\-/{} ja lähdeluetteloissa, joissa on +tarpeellista saada henkilön nimi tai muu lähdemerkinnän hakusana +erottumaan selvästi vasemmassa reunassa. Tämän oppaan lopussa sivulla +\pageref{luku/kirjallisuutta} on esimerkki lähdemerkinnöistä. + +Myös virallisten asiakirjojen muotoilussa käytetään riippuvaa +sisennystä. Niissä kappaleen ensimmäinen rivi voi sisältää otsikon, joka +on tasattu vasempaan marginaaliin. Otsikon perässä on sarkainhyppy +tekstikappaleen sisennyksen tasalle, ja kappaleen muut rivit on +sisennettynä samalla tasolle. + +\begin{esimerkki*} + \komentoi{hangpara} + \pakettii{hanging} + \komentoi{,} + +\begin{koodilohko} +\hangpara{2cm}{1}Tässä tekstikappaleessa on riippuva sisennys. Kappale +alkaa yhdellä sisentämättömällä rivillä, ja kappaleen seuraavat rivit +on sisennetty 2\,cm. Ei ole kovin vaikeaa. +\end{koodilohko} + \begin{tulos} + \hangpara{2cm}{1}Tässä tekstikappaleessa on riippuva sisennys. Kappale + alkaa yhdellä sisentämättömällä rivillä, ja kappaleen seuraavat rivit + on sisennetty 2\,cm. Ei ole kovin vaikeaa. + \end{tulos} + \caption{Riippuva sisennys \paketti{hanging}\-/ paketin ja sen + \komento{hangpara}\-/ komennon avulla} + \label{esim/riippuva-sis-hangpara} +\end{esimerkki*} + +Helpoin tapa riippuvien sisennysten toteuttamiseen lienee +\pakettictan{hanging}\-/ paketin käyttö. Paketti tuo uuden komennon +\komentom{hangpara}, jonka käyttöä esimerkki +\ref{esim/riippuva-sis-hangpara} selventää. Komennon ensimmäinen +argumentti on sisennyksen mitta ja toinen argumentti (positiivinen +kokonaisluku) määrittää, kuinka monta riviä kappaleen alusta jätetään +sisentämättä. Jos taas toinen argumentti on negatiivinen luku, luvun +itseisarvo määrittää, kuinka monta riviä kappaleen alusta sisennetään. + +Komennon \komento{hangpara} vaihtoehtona on ympäristö +\ymparistom{hangparas}, jonka sisällä kaikki kappaleet sisennetään +riippuvalla tyylillä samojen asetusten mukaisesti. Ympäristön +aloituskomennolle annetaan samat argumentit kuin \komento{hangpara}\-/ +komennollekin. + +\ymparistoi{hangparas} +\begin{koodilohkosis} +\begin{hangparas}{2cm}{1} + ... +\end{hangparas} +\end{koodilohkosis} + +\begin{esimerkki*} + \komentoi{hangpara} + \komentoi{makebox} + \komentoi{,} + +\begin{koodilohko} +\hangpara{2cm}{1}\makebox[2cm][l]{Otsikko}Tässä tekstikappaleessa on +riippuva sisennys. Kappale alkaa yhdellä sisentämättömällä rivillä, +joka sisältää näkymättömässä 2\,cm leveässä laatikossa olevan otsikon. +Kappaleen muut rivit on sisennetty 2\,cm. +\end{koodilohko} + \begin{tulos} + \hangpara{2cm}{1}\makebox[2cm][l]{Otsikko}Tässä tekstikappaleessa on + riippuva sisennys. Kappale alkaa yhdellä sisentämättömällä rivillä, + joka sisältää näkymättömässä 2\,cm leveässä laatikossa olevan otsikon. + Kappaleen muut rivit on sisennetty 2\,cm. + \end{tulos} + \caption{Asiakirjan tyylisten tekstikappaleiden toteutus} + \label{esim/riippuva-sis-asiakirja} +\end{esimerkki*} + +\noindent +Asiakirjan tyylisen otsikon saa toteutettua \komento{makebox}\-/ +komennon avulla esimerkin \ref{esim/riippuva-sis-asiakirja} tavoin. +Komento latoo näkymättömän laatikon, jonka leveys määritellään +sisennyksen levyiseksi ja jonka sisään kirjoitetaan otsikko. Jos +asiakirjatyylisiä tekstikappaleita tarvitaan useita, kannattaa +määritellä sarkainleveyttä ja sisennystä varten oma mitta ja +tekstikappaleen kirjoittamista varten oma komento. Seuraavassa on siitä +esimerkki: + +\komentoi{newlength} +\komentoi{setlength} +\komentoi{newcommand} +\komentoi{makebox} +\komentoi{par} +\komentoi{hangpara} +\komentoi{ignorespaces} +\begin{koodilohkosis} +\newlength{\sarkain} +\setlength{\sarkain}{2.3cm} +\newcommand{\kappale}[1][]{\par\hangpara{2\sarkain}{1}% + \makebox[2\sarkain][l]{\ignorespaces #1}\ignorespaces} +\end{koodilohkosis} + +\noindent +Tämän jälkeen voi komennolla \komentox{kappale} aloittaa asiakirjan +sisennetyn tekstikappaleen. Komennolle voi antaa hakasulkeissa +valinnaisen argumentin, joka on kappaleen otsikko. \komento{makebox}\-/ +komentoa ja muita laatikoita käsitellään tarkemmin luvussa +\ref{luku/laatikot}. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{setlength} + \mittai{leftmargin} + \mittai{itemindent} + \komentoi{item} + \komentoi{,} + +\begin{koodilohko} +\begin{list}{}{ + \setlength{\leftmargin}{2cm} + \setlength{\itemindent}{-2cm} + } +\item Tässä tekstikappaleessa on riippuva sisennys. Kappale alkaa + yhdellä sisentämättömällä rivillä, ja kappaleen muut rivit on + sisennetty 2\,cm. +\end{list} +\end{koodilohko} + \caption{Riippuvan sisennyksen toteuttaminen \ymparisto{list}\-/ + ympäristön avulla} + \label{esim/riippuva-sis-list} +\end{esimerkki*} + +Riippuvan sisennyksen voi toteuttaa myös \ymparisto{list}\-/ ympäristön +avulla. Se on tarkoitettu luetelmien tekemiseen, mutta sopivilla +asetuksilla yksi ''luetelman'' kohta on riippuvasti sisennetty kappale. +Tarkemmin \ymparisto{list}\-/ ympäristöä käsitellään luetelmien +yhteydessä luvussa \ref{luku/list-ympäristö}, mutta oheisessa +esimerkissä \ref{esim/riippuva-sis-list} on sopivat asetukset riippuvan +sisennyksen toteuttamiseen. Kappale alkaa \komento{item}\-/ komennolla, +koska kyseessä on ikään kuin luetelman kohta. + +\subsection{Vasen ja oikea sisennys sekä lohkolainaukset} +\label{luku/lohkolainaukset} + +Dokumentteihin tarvitaan välillä kokonaisia sisennettyjä +tekstikappaleita, koska leipätekstin ohessa halutaan näyttää +muuntyyppistä sisältöä. Kyse voi olla teksti- tai kuvaesimerkeistä, +esimerkiksi muualta lainatusta tekstistä. Tässä oppaassa käytetään +paljon sisennettyjä tekstikappaleita Latex\-/koodien esimerkkeihin. + +Kokonaan sisennettyjä tekstikappaleita kutsutaan lohkolainauksiksi, +koska ne ovat lainauksia, jotka käsittävät kokonaisen tekstilohkon. +Lainausmerkkejä ei tarvitse käyttää, koska lainaus ilmaistaan +typografisin keinoin. Sisennyksen lisäksi varsin yleistä on käyttää +hieman pienempää kirjainleikkausta ja riviväliä kuin leipätekstissä. +Joskus vasemman reunan sisennyksen lisäksi sisennetään myös oikeasta +reunasta. + +Latexissa on tavallisille lohkolainauksille kolme erilaista ympäristöä: +\ymparisto{quotation}, \ymparisto{quote} ja \ymparisto{verse}. Kaksi +ensin mainittua on tarkoitettu normaalilla tavalla juoksevalle +tekstille, kun taas kolmas on tarkoitettu runon säkeiden ja säkeistöjen +latomiseen. + +\ymparistom{quotation}\-/ ympäristö sisentää tekstikappaleiden +ensimmäisen rivin 1,5\,em:n verran, eikä kappaleiden välissä ole +pystysuuntaista tilaa. \ymparistom{quote}\-/ ympäristö ei sisennä +kappaleiden ensimmäistä riviä, ja se puolestaan erottaa kappaleet +toisistaan pystysuuntaisen tilan avulla. \ymparisto{verse}\-/ ympäristöä +käytetään siten, että lähdedokumentissa runon säkeet lopetetaan +rivinvaihtokomentoon (\komento{\keno}), lukuun ottamatta säkeistön +viimeistä säettä. Säkeistöt erotetaan toisistaan tyhjällä rivillä, kuten +Latexissa tekstikappaleet muutenkin. Lopputuloksena on useimpiin +runoihin sopiva ladontatapa, jossa säkeistöjen vasen reuna on samalla +tasolla, oikealla on liehureuna ja säkeistöjen välissä on +pystysuuntaista tilaa. + +Jos Latexin valmiit lohkolainausympäristöt eivät tuota haluttua +lopputulosta, voi sisennetyt tekstikappaleet toteuttaa myös luetelmien +tekemiseen tarkoitetun \ymparisto{list}\-/ ympäristön avulla (luku +\ref{luku/list-ympäristö}). Sopivilla asetuksilla ''luetelma'' sisältää +ihan tavallisen näköisiä tekstikappaleita, jotka vain on sisennetty +vasemmalta tai oikealta tai molemmista reunoista. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{setlength} + \mittai{leftmargin} + \mittai{rightmargin} + \mittai{itemindent} + \mittai{listparindent} + \mittai{parindent} + \mittai{parsep} + \mittai{topsep} + \mittai{partopsep} + \komentoi{item} + \komentoi{linespread} + \komentoi{small} + +\begin{koodilohko} +\newenvironment{lohkolainaus}{% + \begin{list}{}{ + \setlength{\leftmargin}{1cm} + \setlength{\rightmargin}{1cm} + \setlength{\itemindent}{0bp} + \setlength{\listparindent}{\parindent} + \setlength{\parsep}{\parskip} + \setlength{\topsep}{1em} + \setlength{\partopsep}{0bp} + } + \item\linespread{1}\small + }{\end{list}} +\end{koodilohko} + \caption{Lohkolainausten eli tekstikappaleen vasemman ja oikean + sisennyksen toteutus \ymparisto{list}\-/ ympäristön avulla. + Esimerkkikoodi määrittelee uuden ympäristön nimeltä + \ymparistox{lohkolainaus}} + \label{esim/vasen-oikea-sisennys} +\end{esimerkki*} + +Esimerkistä \ref{esim/vasen-oikea-sisennys} selviää, kuinka +\ymparisto{list}\-/ ympäristöä voi käyttää sisennyksen toteuttamiseen. +Esimerkki määrittelee uuden ympäristön nimeltä +\ymparistox{lohkolainaus}, jota voi hyödyntää myöhemmin dokumentissa. + +\begin{koodilohkosis} +\begin{lohkolainaus} + Tämä tekstikappale on sisennetty vasemmalta ja oikealta. Lisäksi + kirjainleikkaus on hieman pienempi (\small) kuin leipätekstissä. +\end{lohkolainaus} +\end{koodilohkosis} + +\noindent +Omien ympäristöjen määrittelyä käsitellään tarkemmin luvussa +\ref{luku/ympäristöt}. Esimerkin \ref{esim/vasen-oikea-sisennys} rivillä +11 oleva \komento{item}\-/ komento on pakollinen, koska se aloittaa +\ymparisto{list}\-/ ympäristöön kuuluvan luetelman kohdan. Sen perässä +olevat komennot \komento{linespread} ja \komento{small} sen sijaan ovat +vapaaehtoisia. Ne ovat mukana siksi, että on varsin tavallista latoa +lohkolainaukset pienemmällä rivivälillä (rivikorkeudella) ja pienemmällä +kirjainleikkauksella kuin leipäteksti. + +\subsection{Rivinvaihtokomennot} +\label{luku/rivinvaihtokomennot} + +Latex\-/lähdedokumentissa olevat rivinvaihdot tulkitaan sanaväleiksi +siinä missä välilyönnitkin, eli ne rivinvaihdot eivät päädy ladottuun +dokumenttiin (luvut \ref{luku/sanaväli} ja +\ref{luku/rivinvaihtomerkit}). Sen sijaan ladottuun dokumenttiin saadaan +rivinvaihto käyttämällä komentoa \komentom{\keno} eli kaksi kenoviivaa. +Komennon ei tarvitse sijaita lähdedokumentissa rivin lopussa. + +\komentoi{\keno} +\begin{koodilohkosis} +ensimmäinen \\ toinen \\ +kolmas +\end{koodilohkosis} + +\begin{tulossis} + ensimmäinen \\* toinen \\* kolmas +\end{tulossis} + +\noindent +Rivinvaihtokomennolle voi antaa hakasulkeissa valinnaisen argumentin, +joka ilmaisee rivien väliin ladottavan ylimääräisen pystysuuntaisen +tilan. Argumentin on siis oltava mitta (luku \ref{luku/mitat}). + +\komentoi{\keno} +\begin{koodilohkosis} +ensimmäinen \\ toinen \\[1.3ex] kolmas +\end{koodilohkosis} + +\begin{tulossis} + ensimmäinen \\* toinen \\*[1.3ex] kolmas +\end{tulossis} + +\noindent +Komennosta on olemassa tähtiversio \komentom{\keno *}, joka edellisten +ominaisuuksien lisäksi estää sivun vaihtumisen tämän rivinvaihdon +kohdalla. Myös tähtiversiolle voi antaa valinnaiseksi argumentiksi +mitan. Sen merkitys on sama kuin komennon normaalilla versiollakin. + +Rivin voi vaihtaa myös komennolla \komentom{newline}, mutta tämä komento +ei hyväksy valinnaista argumenttia eikä siitä ole tähdellistä versiota. +Komennot \komento{newline} ja \komento{\keno} käyttäytyvät eri tavoin +taulukoissa, joita käsitellään luvussa \ref{luku/taulukot}. + +\subsection{Lesket ja orvot} + +Leski- ja orporivit tarkoittavat typografiassa rumannäköisiä yksinäisiä +rivejä. Leskirivi (\englanti{widow}) on tekstikappaleen viimeinen rivi, +joka on yksinään sivun tai palstan yläreunassa. Orporivi +(\englanti{orphan}) puolestaan on tekstikappaleen ensimmäinen rivi, joka +on yksin sivun tai palstan alareunassa. Molemmat voivat näyttää +ikävältä, mutta yleensä orporivejä ei pidetä kovin vakavana virheenä; +leskien välttämisessä ollaan enemmän tosissaan. + +Ulkoasun lisäksi lesket ja orvot voivat olla ikäviä myös lukemisen +kannalta. Kun tekstikappale vaihtuu, lukija pitää pienen tauon ja +valmistautuu uuteen kappaleeseen. Sivun tai palstan olisi sopivaa +vaihtua samassa kohdassa eli tekstikappaleiden välissä, mutta leski- ja +orporivit aiheuttavat kaksi taukoa melkein peräkkäin: sekä kappaleiden +välissä että sivun tai palstan vaihtumisen kohdalla. + +Latexissa leski- tai orporivit lienee käytännöllisintä estää +\pakettictan{nowidow}\-/ paketin avulla. Paketin lataamisen jälkeen +käytetään komentoa \komentom{setnowidow}, joka estää leskirivit eli +pitää tekstikappaleen lopusta vähintään kaksi riviä yhdessä sivun tai +palstan yläreunassa. Komennolle voi antaa hakasulkeissa valinnaisen +argumentin (kokonaisluvun), joka ilmaisee, kuinka monta riviä täytyy +vähintään pysyä yhdessä. Vastaavasti orporivit estetään komennolla +\komentom{setnoclub}, joka toimii samalla tavalla. Molemmat komennot +vaikuttavat koko dokumenttiin eli kaikkiin tekstikappaleisiin. + +\komentoi{usepackage} +\pakettii{nowidow} +\komentoi{setnowidow} +\komentoi{setnoclub} +\begin{koodilohkosis} +\usepackage{nowidow} +\setnowidow % leskirivien esto +\setnoclub % orporivien esto +\end{koodilohkosis} + +\noindent +Paketti \paketti{nowidow} määrittelee myös komennot \komentom{nowidow} +ja \komentom{noclub}, joilla voi vaikuttaa yksittäisen tekstikappaleen +leski- ja orporiveihin. Nämä komennot täytyy sijoittaa tekstikappaleen +loppuun, ja myös niille voi antaa hakasulkeissa valinnaiseksi +argumentiksi luvun, joka kertoo yhdessä pidettävien rivien määrän. + +Jos ei halua tai voi käyttää \paketti{nowidow}\-/pakettia, voi leski- ja +orporivit estää myös Texin matalan tason toimintojen avulla. +Ladonta\-/algoritmi käyttää leski- ja orporiveissä sisäisesti +haitallisuusarvoa tai sakkoarvoa (\englanti{penalty}), ja jos lesket ja +orvot halutaan estää, määritellään niiden haitallisuusarvo +mahdollisimman korkeaksi. Käytännössä arvo 10\,000 tarkoittaa samaa kuin +ääretön, eli silloin lesken tai orvon haitallisuus on niin suuri, että +sellaisia ei sallita. + +\komentoi{widowpenalty} +\komentoi{clubpenalty} +\begin{koodilohkosis} +\widowpenalty 10000 % leskirivien esto +\clubpenalty 10000 % orporivien esto +\end{koodilohkosis} + +\noindent +Leskien ja orpojen haitallisuusarvoiksi voi kokeilla hieman pienempiäkin +lukuja. Silloin leski- tai orporivit voidaan sallia joissakin +tilanteissa, jos ladonta\-/algoritmi ei löydä parempaakaan ratkaisua. + +Orvoksi kutsutaan myös tavua, joka jää yksin kappaleen viimeiselle +riville. Se on häiritsevän näköinen ainakin silloin, kun tavu on +kapeampi kuin seuraavan kappaleen ensimmäisen rivin sisennys. +Orpotavujen estämiseen ei taida olla automaattisia keinoja, mutta +kappaleen sanamäärää ja sanajärjestystä muuttamalla voi tietenkin +vaikuttaa rivien latomiseen. Kappaleen viimeiseen sanaan voi kirjoittaa +myös tavutusvihjeitä (\komento{-}) mutta jättää vihje pois ennen +viimeistä tavua. Näin estetään lyhyen orpotavun muodostuminen. +Tavutusvihjeitä ja muita tavutuksen asetuksia käsitellään +luvussa~\ref{luku/tavutus}. + +\subsection{Marginaalihuomautukset} +\label{luku/marginaalihuomautukset} + +Klassisessa kirjatypografiassa -- jota tämäkin opas suunnilleen +noudattaa -- on aukeaman ulkoreunoissa melko suuret marginaalit. Niitä +voidaan käyttää eräänlaisina apupalstoina, joihin voi kirjoittaa +lyhyehköjä huomautuksia ja lisätietoa. + +Marginaalihuomautukset tehdään komennolla \komentom{marginpar}, jonka +argumentiksi annetaan marginaaliin tuleva teksti. Marginaalin teksti +ladotaan vasempaan tai oikeaan marginaaliin riippuen siitä, kumpi on +aukeaman ulkoreunassa. Yksipuolisilla sivuilla teksti ladotaan +oletuksena oikeaan marginaaliin. Mikäli sivu on kaksipalstaisessa +tilassa (luku \ref{luku/palstat}), marginaalihuomautus ladotaan +lähempänä olevaan marginaaliin. + +\komentoi{marginpar} +\begin{koodilohkosis} +Tämä on leipätekstin tekstikappale, +\marginpar{Tämä ladotaan marginaaliin.} +joka ladotaan sivun normaalille tekstialueelle. +\end{koodilohkosis} + +% Miten valinnainen argumentti toimii? \marginpar[left]{right} + +\noindent +Yleensä marginaalihuomautukset ladotaan erilaisella kirjainleikkauksella +kuin leipäteksti, jotta ne erottuvat toisistaan. Jos leipätekstissä +käytetään antiikvaa, voisi marginaalissa käyttää esimerkiksi pienempää +groteskia. Tämän toteutusta varten kannattaa määritellä uusi komento, +vaikkapa nimellä \komentox{huomautus}, jota käyttämällä +marginaalihuomautukset saa helposti yhdenmukaiseksi. Seuraavassa on +esimerkki tällaisen komennon määrittelystä: + +\komentoi{newcommand} +\komentoi{marginpar} +\komentoi{sffamily} +\komentoi{scriptsize} +\komentoi{RaggedRight} +\begin{koodilohkosis} +\newcommand{\huomautus}[1]{% + \marginpar{\sffamily\scriptsize\RaggedRight #1}} +\end{koodilohkosis} + +\noindent +Omien komentojen määrittelyä käsitellään tarkemmin luvussa +\ref{luku/komennot} ja fonttiasetuksia luvussa~\ref{luku/kirjaintyypit}. +Edellä olevassa komennon määrittelyssä on mukana myös palstan muotoon +vaikuttava komento \komento{RaggedRight}, josta on lisätietoa luvussa +\ref{luku/kappaleen-tasaus}. + +Tämän \marginpar{\sffamily \linespread{1} \scriptsize \RaggedRight Tässä + on pienellä groteskilla ladottu huomautus.} tekstikappaleen vieressä +on esimerkki edellä mainitun tyylisestä marginaalihuomautuksesta. +Kirjainleikkauksen on syytä olla selvästi pienempi ja riittävän +erilainen kuin leipätekstissä, jotta huomautus ei häiritse liikaa +leipätekstin lukemista. \noclub[3] + +Sivun marginaalissa olevan huomautuspalstan leveys voidaan määrittää +sivun asetusten yhteydessä. Asetuksia hoitavan \paketti{geometry}\-/ +paketin valitsimella \koodi{marginparwidth} asetetaan palstan leveys ja +valitsimella \koodi{marginparsep} palstan etäisyys leipätekstistä. +Valitsimella \koodi{reversemarginpar} siirretään marginaalihuomautukset +päinvastaiseen marginaaliin. Näitä ja muitakin sivun asetuksia +käsitellään luvussa~\ref{luku/sivuasetukset}. + +Asetuksia voi muuttaa myös kesken dokumentin. Mitta +\mitta{marginparwidth} määrittää marginaalihuomautuspalstan leveyden ja +mitta \mitta{marginparsep} sen etäisyyden leipätekstistä. Lisäksi on +mitta \mitta{marginparpush}, jolla asetetaan peräkkäisten +marginaalihuomautusten vähimmäisetäisyys toisistaan. Seuraavassa on +esimerkki näiden mittojen asettamisesta: + +\komentoi{setlength} +\mittai{marginparwidth} +\mittai{marginparsep} +\mittai{marginparpush} +\begin{koodilohkosis} +\setlength{\marginparwidth}{50bp} +\setlength{\marginparsep}{10bp} +\setlength{\marginparpush}{6bp} +\end{koodilohkosis} + +\noindent +Kesken dokumentin komennolla \komentom{reversemarginpar} voidaan vaihtaa +marginaalihuomautukset vastakkaiseen marginaaliin ja komennolla +\komentom{normalmarginpar} palautetaan oletusasetukset. + +\subsection{Anfangit eli suurikokoiset alkukirjaimet} + +\lettrine[lines=3, loversize=.06, lhang=.02, findent=-5bp, nindent=4bp, +slope=4bp]{A}{nfangit} ovat suurikokoisia tekstin alkukirjaimia. +Tyypillisesti kirjaimen korkeus on kahdesta viiteen riviä ja se +upotetaan kappaleen sisään, mutta joskus se sijoitetaan kokonaan +marginaalin puolelle tai yltää normaalin tekstirivin yläpuolelle. +Anfangikirjain voidaan latoa erilaisella kirjainleikkauksella kuin +leipäteksti. Esimerkiksi vanhassa ja vanhantyylisessä typografiassa +anfangiin voi sopia erityisen koristeellinen kirjain. + +\smallskip + +\lettrine[lines=2, lhang=1, nindent=0bp]{E\hspace{1.5bp}}{dellä + olevaan}, tähän ja seuraavaan tekstikappaleeseen anfangit sopivat +huonosti, eikä niitä tavallisesti käytetä kirjan alalukujen alussa eikä +väliotsikon jälkeen. Tässä ne ovatkin vain esimerkin vuoksi. Anfangien +käytön varsinainen tarkoitus on osoittaa tekstin alkamiskohta +esimerkiksi artikkelin alussa tai kirjan päälukujen alussa. Varsinkin +aikakauslehden artikkelit sisältävät monenlaisia visuaalisia elementtejä +kuten pää- ja alaotsikon, erillisen johdantokappaleen eli ingressin, +kuvia ja tietolaatikoita. Anfangin avulla katse löytää artikkelin alun +helposti. + +\lettrine[lines=1, loversize=.1, lhang=.02, findent=1.5bp]{K}{appaleen + aloittava sana} tai pidempikin ilmaus ladotaan joskus lihavoidulla +kirjainleikkauksella tai pienversaalilla, kuten näissä esimerkeissä on +tehty. Tällainen kappaleen aloitus voi toimia hieman otsikon tavoin tai +sitten muuten vain ilmaisee uuden luvun alkamista. + +Latexissa anfangien tekemistä varten on paketti \pakettictan{lettrine}, +joka tarjoaa käyttöön samannimisen komennon. Jokainen anfangi on +erilainen, ja siksi \komentom{lettrine}\-/ komentokin sisältää useita +asetuksia anfangin ulkoasun hienosäätöön. Komentoa käytetään seuraavalla +tavalla: + +\komentoi{lettrine} +\begin{koodilohkosis} +\lettrine[lines=3, loversize=.06, lhang=.02, findent=-5bp, + nindent=4bp, slope=4bp]{A}{nfangi} aloittaa tämän tekstikappaleen. +\end{koodilohkosis} + +\noindent +Edellä oleva esimerkki tekee kolmerivisen upotetun A\-/anfangin, jonka +perässä oleva sanan osa ''nfangi'' ladotaan pienversaalilla. +Valitsimella \koodi{lover\-size} kasvatetaan hieman anfangikirjaimen +kokoa, ja \koodi{lhang}\-/ valitsimella siirretään kirjainta hieman +vasemmalle marginaalin puolelle. Valitsin \koodi{findent} määrittää +anfangikirjaimen rinnalla olevien rivien sisennyksen määrän suhteessa +kirjaimeen. \koodi{nindent} määrittää toisen ja sitä seuraavien rivien +sisennyksen suhteessa ensimmäiseen riviin, ja \koodi{slope} määrittää +sisennysportaan, joka kertautuu joka rivillä kolmannesta rivistä alkaen. +Näillä asetuksilla saadaan A\-/kirjaimen viistoa reunaa mukailevat +rivien alut. + +Ennen \paketti{lettrine}\-/paketin käyttämistä kannattaa lukea paketin +ohjekirjasta tietoa \komento{lettrine}\-/ komennon valitsimista ja myös +teknisistä rajoituksista. Anfangit eivät toimi Latexissa teknisesti joka +paikassa -- ja typografisesti vielä harvemmassa. + +\section{Tekstin korostaminen} +\label{luku/korostus} + +Tekstin yksittäisten sanojen korostukset toteutetaan tavallisimmin +siten, että käytetään leipätekstin kirjainperheestä jotakin poikkeavaa +kirjainleikkausta, esimerkiksi \textit{kursiivia}, +\textsl{kallistettua}, \textbf{lihavoitua} tai \textsc{pienversaalia}. +Joskus vaihdetaan koko kirjainperhe toiseksi, esimerkiksi ladotaan +\textrm{antiikvan} sekaan \textsf{groteskia} tai \texttt{tasalevyistä}. + +Korostukset siis liittyvät läheisesti fonttien valintaan ja asetuksiin, +ja siksi korostusten teknistä toteuttamista ja Latex\-/komentoja +käsitellään pääasiassa fonttien yhteydessä luvussa +\ref{luku/fontit-korkea}. Siellä muun muassa neuvotaan, kuinka +kirjainperheet ja niiden eri kirjainleikkaukset valitaan. Sen sijaan nyt +käsillä olevassa luvussa keskitytään tekstin korostamisen typografisiin +käytäntöihin ja suosituksiin. Joitakin uusia komentojakin esitellään. + +Tekstissä sanoja korostetaan siksi, että halutaan niiden erottuvan +ympäristöstään. Tärkeän avainsanan pitää ehkä erottua tekstipalstasta +niin, että sen huomaa nopeasti tekstiä silmäilemällä. Se voi helpottaa +tiedon löytämistä. + +Sanoja tai ilmauksia korostetaan toisinaan myös siksi, että ne eivät ole +kielen sanoja tavallisessa merkityksessään vaan lainauksia kielestä tai +toisesta tekstityypistä. Ihmiskieltä käsittelevissä teksteissä on +tavallista kursivoida sanat silloin, kun viitataan itse sanoihin eikä +varsinaisesti käytetä kyseisiä sanoja. Sanoihin ja muuhun kieliainekseen +viitatessa voi tosin käyttää myös lainausmerkkejä. Tietotekniikan +koodikielen esimerkit ladotaan usein leipätekstistä poikkeavalla +fontilla, jotta käy selväksi, että kyse on koodikielisestä lainauksesta. +Tällöin hyvin tavallista on tasalevyisen fontin käyttö, koska se +jäljittelee tekstieditorien ja komentotulkkia suorittavien +pääteohjelmien fonttia. + +Sopivan korostustavan valinnassa on olennaista saavuttaa riittävä +kontrasti ympäröivään tekstiin. Liian lievä muutos ei erotu; toisaalta +liian räikeä muutos voi olla häiritsevä. Yhteensopivat korostuskeinot +saadaankin lähes aina saman kirjainperheen sisältä, eri leikkauksia +käyttämällä. + +\subsection{Kursiivi, kallistus ja lihavointi} +\label{luku/peruskorostukset} + +Antiikvatyyppisen kirjainleikkauksen korostamiseen sopii yleensä +parhaiten saman perheen \textit{kursiivi} (\komentom{textit}). +Lihavointi toimii huonommin antiikvan kanssa, koska pelkkä merkkien +viivojen vahvistaminen ei tuo riittävää kontrastia. + +\begin{tulossis} + \rmfamily Antiikvaperheen \textit{kursiivileikkaus} tuo yleensä + voimakkaan muotokontrastin ja on tyylillisesti yhteensopiva + korostuskeino. Sen sijaan \textbf{lihavointi} erottuu antiikvassa + huonommin. +\end{tulossis} + +\noindent +\textbf{Lihavointi} (\komentom{textbf}) toimii huomattavasti paremmin +groteskityyppisen kirjainperheen kanssa, koska lihavoitu leikkaus on +usein selvästi vahvempi normaaliin verrattuna. Groteskin kursiivi sen +sijaan ei monesti edes ole varsinainen kursiivileikkaus vaan pelkkä +lievä kallistus (\komentom{textsl}). Sellainen ei välttämättä tuo +riittävää muotokontrastia.\footnote{Joissakin niin sanotuissa + humanistisissa groteskiperheissä on mukana ihan käyttökelpoinen ja + selvästi erottuva kursiivileikkaus.} + +\begin{tulossis} + \sffamily Groteskia on tavallista korostaa \textbf{lihavoinnilla} eli + leikkauksella, joka on selvästi tavallista vahvempi. Sen sijaan + \textit{kursiivi} tai \textsl{kallistus} ei kaikissa groteskiperheissä + erotu riittävästi. +\end{tulossis} + +\noindent +Joissakin kirjainperheissä on mukana useita erivahvuisia leikkauksia. +Silloin täytyy valita käyttöön riittävästi toisistaan poikkeavat +vahvuudet. Esimerkiksi kaksi vierekkäistä vahvuutta eivät välttämättä +poikkea toisistaan riittävästi, eikä selvää vahvuuskontrastia synny. + +Mikäli leipätekstissä käytetään sulkeita ja niiden sisällä kursivoitua +ilmausta (\textit{kuten tässä}), ei itse suljemerkkejä pidä kursivoida, +koska ne kuuluvat ulompaan tekstiin. Jos sulkeiden ulkopuolellakin on +voimassa kursivointi, voi itse sulkeetkin kursivoida. + +Latexissa kursiivin voi toteuttaa myös komennolla \komentom{emph}, joka +huomioi ympärillä olevan korostustilan. Tavallisesti komento kursivoi +argumentiksi annetun tekstin, mutta jos kursivointi on jo päällä +komennon ympärillä, se latookin argumentiksi annetun tekstin +tavallisella pystyasentoisella kirjainleikkauksella. Komennon ajatuksena +on, että voidaan samalla komennolla korostaa sekä pystyasentoisen +tekstin että kursiivin keskellä, eikä tarvitse välittää tai tietää, +kumpi leikkaus on voimassa. + +\komentoi{emph} +\begin{koodilohkosis} +tavallinen \emph{korostettu} tavallinen \\ +\emph{korostettu \emph{kaksoiskorostettu} korostettu} +\end{koodilohkosis} + +\begin{tulossis} + tavallinen \emph{korostettu} tavallinen \\ + \emph{korostettu \emph{kaksoiskorostettu} korostettu} +\end{tulossis} + +\subsection{Pienversaali eli kapiteeli} +\label{luku/korostus-pienversaali} + +Melko rauhallinen typografinen keino on \textsc{pienversaali} eli +kapiteeli (\komentom{textsc}), jonka kirjaimet näyttävät +versaalikirjaimilta mutta ovat suunnilleen gemenakirjainten eli pienten +kirjainten korkuisia. Pienversaali on fonttiin sisältyvä erillinen +kirjainmuotoilijan piirtämä leikkaus, eli se ei ole tietokoneen +mekaanisesti pienentämä versio versaalikirjaimista. Jos fonttiin ei +sisälly pienversaalia ja sellaisen silti haluaa omaan +keinovalikoimaansa, voi yrittää vähemmän tyylikästä mekaanista +toteutusta luvussa \ref{luku/fontit-keinopienversaali} kerrotuilla +asetuksilla. Luvuissa \ref{luku/fontit-välistys} ja +\ref{luku/korostus-harvennus} puolestaan käsitellään merkkivälien +{\scshape\addfontfeatures{LetterSpace=6} harvennusta}, joka voi +maltillisesti käytettynä sopia pienversaaleihin. + +Korostustarkoituksessa pienversaalia käytetään esimerkiksi pienissä +väliotsikoissa, koska sen avulla syntyy selvä muotokontrasti +leipätekstin kanssa. Toisinaan tekstikappaleen ensimmäisiä sanoja +ladotaan pienversaalilla, jolloin se toimii otsikon kaltaisessa +tehtävässä. Myös kirjallisuus\-/{} ja lähdeluetteloissa käytetään +välillä pienversaalia tekijöiden nimissä, koska se helpottaa nimen +mukaan aakkostetun luettelon silmäilyä. + +Pienversaalia käytetään toisinaan versaalikirjainten sijasta. Silloin +tarkoituksena ei ole tekstin korostamiseen vaan päinvastoin häiritsevän +korostuksen välttäminen. Esimerkiksi versaalikirjaimiset lyhenteet (SPR, +HTML) voivat paljon käytettynä erottua leipätekstistä ikävän selvästi, +eikä tekstipalsta näytä tasaiselta. Pienversaalit sulautuvat muuhun +tekstiin paremmin (\textsc{spr}, \textsc{html}). + +Typografisesta estetiikasta juontuu sekin, että pienversaali on sopiva +pari gemenanumeroiden kanssa erilaisiin teknisiin koodeihin ja muihin +ilmauksiin, jotka koostuvat kirjaimista ja numeroista. Sen sijaan +versaalikirjaimia ja gemenanumeroita ei sovi käyttää yhdessä, koska +merkkien kokoero on häiritsevän suuri. Kuten seuraavista esimerkeistä +näkyy, versaalit ovat joskus miltei kaksinkertaisia gemenanumeroihin +verrattuna, ja muutenkin gemenanumerot asettuvat keskimäärin eri +korkeustasolle. + +\begin{tulossis} + \begin{tabular}[t]{@{}lll} + Väärin: + & {\gemenanum ISO-8859-1} + & {\gemenanum 2012 a.D.} \\[1ex] + Oikein: + & {\gemenanum\scshape iso-8859-1} + & {\gemenanum\scshape 2012 a.d.} \\[1ex] + Oikein: + & {\versaalinum ISO-8859-1} + & {\versaalinum 2012 A.D.} \\ + \end{tabular} +\end{tulossis} + +\noindent +Fontin näkökulmasta gemenanumerot ovat erillinen ominaisuus, jonka +fontin suunnittelija on toteuttanut. Ominaisuuden käyttöönottoa ja muita +numeroihin liittyviä fonttiasetuksia käsitellään luvussa +\ref{luku/fontit-numerot}. + +\subsection{Alleviivaus ja yliviivaus} + +Alleviivaus on käsin kirjoitetun tekstin ja mekaanisten +kirjoituskoneiden korostuskeino, mutta nykyajan typografiaan se ei +oikeastaan sovi. Alleviivaus nimittäin vaikeuttaa kirjainhahmojen +tunnistamista ja hidastaa lukemista. Parempia korostuskeinoja ovat +esimerkiksi kursiivi ja lihavointi. Alleviivaus voi kuitenkin joskus +olla kätevä keino ohjata lukijan huomio tiettyyn kohtaan esimerkiksi +pidemmässä esimerkkitekstissä. + +Latexin oma alleviivauskomento \komentom{underline} piirtää viivan +tekstin tai muun argumentiksi annetun sisällön alapuolelle. Komennon +huono puoli on, että erilliset alleviivaukset eivät välttämättä osu +samalle korkeudelle. Seuraavassa esimerkissä toisen sanan alleviivaus on +alempana j- ja y\=/kirjainten alapidennyksen vuoksi. + +\komentoi{underline} +\begin{koodilohkosis} +\underline{kone}, \underline{öljy} +\end{koodilohkosis} + +\begin{tulossis} + \underline{kone}, \underline{öljy} +\end{tulossis} + +\noindent +Toinen \komento{underline}\-/ komennon ongelma on, että se estää sanojen +tavuttamisen ja muutenkin tekstin katkaisemisen rivin lopussa. Komennon +argumentiksi annettua tekstiä ei katkaista edes sanavälien kohdalta. +Komennon hyvä puoli on, että se toimii myös matematiikkatilassa +(luku~\ref{luku/matematiikka}). + +Käytännössä alleviivaukset on parempi toteuttaa esimerkiksi paketin +\pakettictan{ulem} avulla. Tavallisen alleviivauksen lisäksi se sisältää +kaksoisalleviivauksen, aaltoviivat, pisteviivat ja erilaisia +ylikirjoitusmerkintöjä. Taulukkoon \ref{tlk/ulem} on koottu paketin +sisältämiä komentoja. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\komento{#1} & #2} + % \setlength{\ULdepth}{.2ex} + \begin{tabular}{llll} + \toprule + \ots{Komento} + & \ots{Merkitys} & \ots{Komento} & \ots{Merkitys} \\ + \cmidrule(r){1-2} + \cmidrule(l){3-4} + \rivi{uline}{\uline{alleviivaus}} + & \rivi{uuline}{\uuline{kaksoisalleviivaus}} \\ + \rivi{uwave}{\uwave{aaltoviiva}} + & \rivi{sout}{\sout{yliviivaus}} \\ + \rivi{dashuline}{\dashuline{katkoviiva}} + & \rivi{xout}{\xout{poisto}} \\ + \rivi{dotuline}{\dotuline{pisteviiva}} \\ + \bottomrule + \end{tabular} +}{ + \caption{Alleviivaus- ja ylikirjoitusmerkintöjä \paketti{ulem}\-/ + paketin komentojen avulla} + \label{tlk/ulem} +} + +Oletuksena \paketti{ulem}\-/ paketti määrittelee Latexin +\komento{emph}\-/ korostuskomennon (luku \ref{luku/peruskorostukset}) +uudelleen siten, että komento tuottaa kursiivin sijasta alleviivattua +tekstiä. Ajatuksena lienee se, että paketin avulla voi helposti muuttaa +typografisen peruskorostusten eli kursiivin tilalle kirjoituskoneen +korostustavan eli alleviivauksen. Käytännössä tällaista tuskin halutaan +koskaan, ja onneksi paketin lataamisen yhteydessä voi käyttää valitsinta +\koodi{nor\-mal\-em}, joka estää Latexin komentojen uudelleen +määrittelyn. + +\pakettii{ulem} +\komentoi{usepackage} +\begin{koodilohkosis} +\usepackage[normalem]{ulem} +\end{koodilohkosis} + +\noindent +Paketin \paketti{ulem} myötä on käytettävissä mitta \mitta{ULdepth}, +joka on alleviivauksen etäisyys tekstin peruslinjasta. Mitta asetetaan +\komento{setlength}\-/ komennolla (luku \ref{luku/mitat}). Viivan +paksuus puolestaan sisältyy komennon \komento{ULthickness} määritelmään, +ja komennon voi halutessaan määritellä uudestaan. Seuraavassa on näistä +esimerkki: + +\komentoi{setlength} +\mittai{ULdepth} +\komentoi{renewcommand} +\komentoi{ULthickness} +\komentoi{uline} +\begin{koodilohkosis} +\setlength{\ULdepth}{.2ex} % viivan etäisyys +\renewcommand{\ULthickness}{.1ex} % viivan paksuus +\uline{kone}, \uline{öljy} +\end{koodilohkosis} + +\begin{tulossis} + \setlength{\ULdepth}{.2ex} + \renewcommand{\ULthickness}{.1ex} + \uline{kone}, \uline{öljy} +\end{tulossis} + +\noindent +Toinen paketti alleviivausten ja yliviivausten tekemiseen on +\pakettictan{soul}. Se ei sisällä erikoisempia korostustapoja kuten +aalto- ja katkoviivoja, mutta viivan etäisyyden ja paksuuden +määrittämiseen on hieman kätevämmät komennot. + +Tekstin alleviivauksen lisäksi on olemassa pari komentoa, joilla saa +ladottua pelkän viivan ilman tekstiä. Komento \komento{hrulefill} latoo +kaiken tilan täyttävän alaviivan ja komento \komento{dotfill} kaiken +tilan täyttävän pisteviivan. Myös \komento{rule}\-/ komento voi soveltua +alaviivojen toteuttamiseen. Komentoa käsitellään erikoismerkkien +yhteydessä luvussa \ref{luku/tarkkeet}. + +\komentoi{hrulefill} +\komentoi{dotfill} +\komentoi{rule} +\begin{koodilohkosis} +abc \hrulefill\ abc \dotfill\ abc \rule[-.3ex]{5em}{.4bp} abc +\end{koodilohkosis} + +\begin{tulossis} + abc \hrulefill\ abc \dotfill\ abc \rule[-.3ex]{5em}{.4bp} abc +\end{tulossis} + +\subsection{Harvennus ja tiivistys} +\label{luku/korostus-harvennus} + +Merkkivälien harventaminen on tyyli- tai korostuskeino, joka juontuu +antiikin roomalaisten kiveen hakatuista teksteistä. Historiansa vuoksi +harvennus sopii luontevimmin antiikvan eli pääteviivallisen +kirjainperheen versaali\-/\ tai pienversaalikirjainten (luku +\ref{luku/korostus-pienversaali}) kanssa. Antiikin aikana +gemenakirjaimet eivät olleet vielä käytössä. Tässä alaluvussa +keskitytään harventamisen ja tiivistämisen typografiaan; teknisiä +ohjeita on luvussa \ref{luku/fontit-välistys}. + +\komentoi{large} +\komentoi{addfontfeatures} +\begin{koodilohkosis} +\large TAVALLINEN \\ +{\addfontfeatures{LetterSpace=10} KLASSINEN HARVENNUS} +\end{koodilohkosis} + +\begin{tulossis} + \large + TAVALLINEN \\ + {\addfontfeatures{LetterSpace=10} KLASSINEN HARVENNUS} +\end{tulossis} + +\noindent +Klassisesti eli antiikin tyyliin harvennetut (n.~10\,\%) +versaalikirjaimet voivat sopia joihinkin otsikoihin. Sen sijaan +pienversaalit lievästi {\addfontfeatures{LetterSpace=6} + \textsc{harvennettuna}} (esim.~6\,\%) voivat olla tyylikäs +tehostuskeino leipätekstiin. + +Edellisiä esimerkkejä suurempi harvennus on huomiota herättävä +korostus\-/\ tai tehokeino, joka voi sopia yksittäisiin sanoihin +leipätekstin ulkopuolella. Jos kirjaimet ovat hyvinkin kaukana +toisistaan, täytyy sanan ympärillä olla runsaasti tyhjää tilaa, jotta +sanahahmo pysyy visuaalisesti koossa. + +\komentoi{sffamily} +\komentoi{bfseries} +\komentoi{addfontfeatures} +\begin{koodilohkosis} +{\sffamily\bfseries\addfontfeatures{LetterSpace=40} SEIS!} +\end{koodilohkosis} + +\begin{tulossis} + {\sffamily\bfseries\addfontfeatures{LetterSpace=40} SEIS!} +\end{tulossis} + +\noindent +Merkkivälien tiivistäminen on joskus tarpeen suurikokoisissa otsikoissa. +Fontin merkkivälit on ehkä suunniteltu ensisijaisesti pienten kokojen +ehdoilla, ja siksi reilusti suuremmilla fonttiko'oilla välit voivat olla +häiritsevän suuria. Erityisesti tämä pätee groteskiin eli +pääteviivattomaan kirjainperheeseen, kuten kuva +\ref{kuva/otsikon-tiivistys} osoittaa. Antiikvat eivät yleensä siedä +tiivistämistä, koska kirjainten pääteviivat asettuvat helposti +päällekkäin. + +\leijukuva{ + \sffamily\fontsize{50bp}{50bp}\selectfont + Tavallinen \\ + \addfontfeatures{LetterSpace=-5} Tiivistetty +}{ + \caption{Otsikoiden merkkivälien tiivistäminen voi olla tarpeen + suurikokoisen groteskin kanssa -- varsinkin jos lihavointi ei ole + käytössä} + \label{kuva/otsikon-tiivistys} +} + +\subsection{Tietokonekoodi ja tasalevyinen kirjainperhe} + +Tietokonekoodi tai muu vastaava tekninen, koneelle syötettävä tai koneen +tulostama koodi on tapana esittää \texttt{tasalevyisellä} fontilla. +Kyseessä on ikään kuin lainaus toisenlaisesta tekstityypistä, joka ei +ole luonnollista kieltä lainkaan. + +Tasalevyinen kirjainperhe määritellään fonttiasetusten yhteydessä (luku +\ref{luku/fontin-valinta}) ja valitaan käyttöön esimerkiksi komennolla +\komentom{texttt}. Tasalevyisellä fontilla ladottava teksti on +tavallisesti tietokonekoodia, joten sille on asetettu hieman +toisenlaiset oletusasetukset kuin muille kirjainperheille. Oletuksena +tekstiä ei tavuteta, ja esimerkiksi \komento{texttt}\-/ komennon +argumentiksi annettu teksti katkaistaan vain sanavälien ja yhdysmerkkien +kohdalta. Myös niin sanotut Tex\-/ligatuurit (esim. \koodi{''} +ja~\koodi{--}) on kytketty pois päältä. Fonttien oletusasetuksia ja +niiden muuttamista käsitellään luvussa +\ref{luku/fontit-oletusasetukset}. Tex\-/ligatuureja eli Texin +merkintätapoja lainausmerkeille ja ajatusviivoille käsitellään luvuissa +\ref{luku/lainausmerkit} ja \ref{luku/yhdys-ajatus-miinus}. + +Toinen vaihtoehto tasalevyisen tekstin tuottamiseen on +\komentom{verb}\-/ komento. Komennon nimi on lyhennetty englannin kielen +sanasta \englantik{verbatim}, joka tarkoittaa 'kirjaimellisesti' tai +'sananmukaisesti'. Niin se juuri toimiikin, eli \keno{verb}\-/ +komennolle annettu argumentti tulkitaan kirjaimellisesti. +Tex\-/järjestelmän omat merkintätavat kuten kenoviivalla (\koodi{\keno}) +alkavat komennot eivät toimi tämän komennon argumentissa. + +\komento{verb}\-/ komennon argumentti täytyy ilmaista tavallisesta +poikkeavalla tavalla. Välittömästi komennon nimen jälkeen tuleva merkki +on oleva argumentin aloitus- ja lopetusmerkki. Niiden välissä oleva +teksti tulkitaan kirjaimellisesti ja ladotaan tasalevyisellä +kirjainperheellä. Seuraavassa on tästä kaksi esimerkkiä: + +\komentoi{verb} +\begin{koodilohkosis} +\verb.tasalevyinen. % aloitus- ja lopetusmerkkinä piste +\verb|tasalevyinen| % aloitus- ja lopetusmerkkinä pystyviiva +\end{koodilohkosis} + +\begin{tulossis} + \verb.tasalevyinen. + \verb|tasalevyinen| +\end{tulossis} + +\noindent +Yksittäisiä sanoja pidempien tietokonekoodien latomiseen on olemassa +\ymparistom{verbatim}\-/ ympäristö, jonka sisällä kaikki teksti +tulkitaan kirjaimellisesti -- myös välilyönnit ja rivinvaihdot. + +\ymparistoi{verbatim} +\begin{koodilohkosis} +\begin{verbatim} +tieto- kone- + koodia +\end{verbatim} +\end{koodilohkosis} + +\begin{tulossis} +\begin{verbatim} +tieto- kone- + koodia +\end{verbatim} +\end{tulossis} + +\noindent +Paljon monipuolisemman ympäristön tarjoaa paketti +\pakettictan{fancyvrb}. Sen mukana tuleva \ymparistom{Verbatim}\-/ +ympäristö ymmärtää monenlaisia asetuksia, joilla vaikutetaan +tietokonekoodin latomiseen. Koodiin saa mukaan esimerkiksi rivinumerot, +tai sen voi latoa kehyksen sisään. Myös koodin sisennykseen, fontin +kokoon ja väreihin voi vaikuttaa. + +\subsection{Verkko-osoitteet} + +Verkko\-/osoitteiden eli internetin linkkien latominen voi olla +pienoinen typografinen ongelma: osoitteet ovat pitkiä, eivätkä ne +sisällä välilyöntejä, joista ne voisi luontevasti katkaista rivin +vaihtumisen kohdalla. Tavuviivojen lisääminen rivin loppuun voi olla +ongelmallista, koska kyse on teknisestä merkkijonosta, joka pitäisi +tulkita kirjaimellisesti. + +Parasta olisi latoa verkko\-/osoitteet leipäteksti ulkopuolelle, +esimerkiksi sivun alareunaan alaviitteeksi (luku +\ref{luku/alaviitteet}). Tällä tavoin pitkät ja joskus rumat osoitteet +eivät häiritse leipätekstin lukemista mutta ovat silti lukijan +saatavilla. + +Latexissa verkko\-/osoitteet kannattaa toteuttaa siihen tarkoitetun +paketin avulla. Paketti \pakettictan{hyperref} sisältää toimintoja +paitsi verkko\-/ osoitteiden latomiseen mutta myös pdf\-/tiedoston +asetusten ja ristiviitteiden hallintaan (luku \ref{luku/pdf-asetukset}). +Paketin avulla valmiin pdf\-/ tiedoston verkkolinkit toimivat, eli +pdf\-/lukijassa linkkiä napsauttamalla pitäisi avautua verkkoselain ja +linkin osoittama sivu. + +Paketin käyttämisen typografinen hyöty on se, että rivin vaihdon +kohdalle sattuvat verkko\-/ osoitteet katkaistaan automaattisesti +luontevista kohdista eli vain tiettyjen välimerkkien jälkeen. +Tavuviivoja ei lisätä rivin loppuun. Myös typografiset ligatuurit (luku +\ref{luku/typo-liga}) kytketään pois päältä. + +\paketti{hyperref}\-/paketin ohjekirja neuvoo lataamaan paketin +viimeisenä eli muiden pakettien lataamisen jälkeen, koska se +muokkaa joidenkin muualla määriteltyjen komentojen ominaisuuksia. + +\komentoi{usepackage} +\pakettii{hyperref} +\komentoi{hypersetup} +\komentoi{urlstyle} +\begin{koodilohkosis} +\usepackage{hyperref} % paketin lataaminen +\hypersetup{hidelinks} % linkeistä pois kehykset +\urlstyle{same} % linkkien fontti +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komennolla \komentom{hypersetup} vaikutetaan +paketin asetuksiin. Oletuksena esimerkiksi linkkien ympärille +ladotaan värilliset kehykset, mutta valitsin \koodi{hide\-links} poistaa +ne. Valitsimella \koodi{url\-color} voisi vaihtaa verkko\-/osoitteiden +kehyksen väriä. + +Esimerkin seuraava komento \komentom{urlstyle} määrittää, mitä +kirjainperhettä käytetään verkko\-/ osoitteiden latomiseen. Komennon +argumentti \koodi{same} tarkoittaa, että käytetään samaa kirjainperhettä +kuin ympärillä olevassa tekstissä. Tietty kiinteä kirjainperhe valitaan +\komento{urlstyle}\-/ komennon argumentilla \koodi{rm} (antiikva, +roman), \koodi{sf} (groteski, sans serif) tai \koodi{tt} (tasalevyinen). +Oletusasetus on tasalevyinen kirjainperhe. + +Verkko\-/ osoitteiden ilmaisemisen peruskomento on \komentom{href}, +jolle annetaan kaksi pakollista argumenttia: ensimmäinen on varsinainen +osoite ja toinen on dokumenttiin ladottava teksti. Linkin teksti voi +siis olla mitä hyvänsä tekstiä, ja pdf\-/ lukijassa tekstiä +napsauttamalla linkin osoittama sivusto avautuu. + +\komentoi{href} +\begin{koodilohkosis} +\href{https://www.ctan.org/}{CTAN-sivusto} +\end{koodilohkosis} + +\begin{tulossis} + \href{https://www.ctan.org/}{CTAN-sivusto} +\end{tulossis} + +\noindent +Kun halutaan latoa dokumenttiin itse verkko\-/osoite, käytetään komentoa +\komento{url}, \komentomargin{url} joka osaa katkaista osoitteet +järkevällä tavalla rivin lopussa. Komennolle annetaan vain yksi +argumentti, verkko\-/osoite. + +\komentoi{url} +\begin{koodilohkosis} +\url{https://www.ctan.org/} +\end{koodilohkosis} + +\begin{tulossis} + \url{https://www.ctan.org/} +\end{tulossis} + +\noindent +Joskus dokumenttiin voidaan tarvita verkko\-/osoite, joka ei ole +pdf\-/dokumentissa napsautettava linkki. Silloin käytetään komentoa +\komentom{nolinkurl}. Tämän komennon argumenttina oleva verkko\-/osoite +ainoastaan ladotaan osoitteiden tavoin. + +Linkkinä toimivien sähköpostiosoitteiden latominen vaatii +\komento{href}- ja \komento{nolinkurl}\-/ komentojen yhdistämistä. +Linkin alkuun täytyy lisätä sana \koodi{mailto:}, mutta tuota sanaa +tuskin halutaan näkyviin itse dokumenttiin. Niinpä sähköpostiosoite +kannattaa kirjoittaa seuraavalla tavalla: + +\komentoi{href} +\komentoi{nolinkurl} +\begin{koodilohkosis} +\href{mailto:tunnus@osoite.net}{\nolinkurl{tunnus@osoite.net}} +\end{koodilohkosis} + +\noindent +Osoite pitää siis kirjoittaa kaksi kertaa: itse linkkiä varten ja +dokumenttiin ladottavaa tekstiä varten. Omaa työtä kannattaa helpottaa +määrittelemällä sähköpostiosoitteita varten oma komento, esimerkiksi +seuraavalla tavalla: + +\komentoi{newcommand} +\komentoi{href} +\komentoi{nolinkurl} +\begin{koodilohkosis} +\newcommand{\sposti}[1]{\href{mailto:#1}{\nolinkurl{#1}}} +\end{koodilohkosis} + +\subsection{Värit} +\label{luku/korostus-värit} + +Eri värien käyttö voi sopia tekstin erilaisten osien korostamiseen. +Esimerkiksi otsikot, taulukot tai leijuvat osat saa erottumaan +selvemmin, kun niiden toteutuksessa käyttää värejä. Sen sijaan +leipätekstin sisällä värejä täytynee käyttää hillitysti, sillä värikäs +tekstipalsta näyttää rauhattomalta ja voi hidastaa lukemista. + +Latexiin saa värit \pakettictan{xcolor}\-/ paketin +avulla.\footnote{Toinen vaihtoehto on yksinkertaisempi väripaketti + \paketti{color}, joka sisältää värien käsittelyn perustoiminnot.} Se +tarjoaa muun muassa komentoja, joilla tekstin väriä, tekstin taustaväriä +tai sivun taustaväriä voi muuttaa. Lisäksi se sisältää värien +sekoittamiseen ja muuntamiseen liittyvää tekniikkaa. Paketin komentojen +avulla voi myös värittää taulukoiden (luku \ref{luku/taulukot}) rivit +vuorottelevin värein. + +Omassa dokumentissa käytettävät värit on hyvä määritellä alussa. +Määrittely tarkoittaa sitä, että annetaan väreille nimet -- esimerkiksi +käyttötarkoituksen mukaan -- ja myöhemmin lähdedokumentissa viitataan +väreihin käyttämällä alussa määriteltyjä nimiä. Näin väri on määritelty +yhdessä paikassa ja sen muuttaminen on myöhemmin helppoa. On kyllä +mahdollista käyttää värejä ilman etukäteismäärittelyäkin. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\koodi{#1} & #2 & \koodi{#3} + & \textcolor[#1]{#3}{\rule{.9em}{.9em}} \\} + \begin{tabular}{llll} + \toprule + \ots{Malli} + & \ots{Parametrit} + & \multicolumn{2}{l}{\ots{Esimerkki}} \\ + \midrule + \rivi{rgb}{punainen, vihreä, sininen}{1,.7,.3} + \rivi{HTML}{punainen, vihreä, sininen}{33aaf3} + \rivi{cmyk}{syaani, magenta, keltainen, musta}{.1,1,.5,0} + \rivi{hsb}{sävy, kylläisyys, kirkkaus}{.2,1,.6} + \rivi{gray}{harmaa}{.55} + \bottomrule + \end{tabular} +}{ + \caption{Erilaisia värimalleja ja niiden parametreja + \paketti{xcolor}\-/ paketissa} + \label{tlk/värimalleja} +} + +Omat värit määritellään komennolla \komentom{definecolor}. Se tarvitsee +kolme argumenttia: värin nimen, värimallin ja värikoodin. Komennon +argumenttien rakenteesta on seuraavassa esimerkki: + +\komentoi{definecolor} +\begin{koodilohkosis} +\definecolor{nimi}{välimalli}{parametrit} +\end{koodilohkosis} + +\noindent +Komennon argumentti \koodi{nimi} on kirjoittajan itse valitsema nimi, +ja se voi liittyä esimerkiksi värin käyttötarkoitukseen (''nuoli'') tai +värin yleiseen nimeen (''keltainen''). Argumentti \koodi{väri\-malli} +tarkoittaa värin ilmaisemisen tapaa. Niitä on useita erilaisia, mutta +yleisimmät on koottu taulukkoon \ref{tlk/värimalleja}. Eri malleilla on +eri määrä parametreja, joilla ilmaistaan värin ominaisuuksia. Kunkin +parametrin arvo on yleensä desimaaliluku 0\==1, mutta \koodi{HTML}\-/ +värimallissa parametrit ilmaistaan yhtenä kolmen kaksinumeroisen +heksadesimaaliluvun sarjana \textsc{html}\-/ merkintäkielen tavoin. +Värin parametrit kirjoitetaan komennon argumenttiin +\koodi{para\-metrit} ja ne erotetaan toisistaan pilkulla. Taulukon +\ref{tlk/värimalleja} Esimerkki\-/sarakkeessa on parametrien antamisesta +esimerkki. Muista värimalleista voi lukea \paketti{xcolor}\-/ paketin +ohjekirjasta. + +Kun värit on määritelty, niitä voi käyttää eri komentojen yhteydessä. +Tekstin väri vaihdetaan toiseksi komennolla \komentom{color}, josta on +kaksi erilaista versiota. Komento vaihtaa värin pysyvästi nykyisen +ympäristön (luku \ref{luku/ympäristöt}) tai aaltosulkeilla (luku +\ref{luku/aaltosulkeet}) rajatun alueen sisällä. + +\komentoi{color} +\begin{koodilohkosis} +\color{nimi} % väriksi ennalta määritelty ”nimi” +\color[värimalli]{parametrit} % värimallin ja parametrien avulla +\end{koodilohkosis} + +\noindent +Toinen vaihtoehto on käyttää komentoa \komentom{textcolor}, jolle +annetaan edelliseen verrattuna vielä yksi argumentti lisää. Argumenttina +on teksti, johon värin halutaan vaikuttavan. Vaikutusalueena on siis +vain kyseinen teksti. + +\komentoi{textcolor} +\begin{koodilohkosis} +\textcolor{nimi}{teksti} +\textcolor[värimalli]{parametrit}{teksti} +\end{koodilohkosis} + +\noindent +Tekstin taustaväri vaihdetaan komennoilla \komentom{colorbox} ja +\komentom{fcolorbox}. Komennot luovat ikään kuin laatikon, jonka sisällä +taustaväri on voimassa. Ensin mainittu komento vahtaa vain taustavärin, +ja jälkimäinen sisältää lisäksi värillisen kehyksen, eli sille +määritellään kaksi väriä. + +\begin{koodilohkosis} +\colorbox{nimi}{teksti} % taustaväriksi ennalta määritelty ”nimi” +\colorbox[värimalli]{parametrit}{teksti} +\fcolorbox{nimi(kehys)}{nimi(tausta)}{teksti} +\fcolorbox[värimalli]{parametrit(kehys)}{parametrit(tausta)}{teksti} +\end{koodilohkosis} + +\noindent +Kehystetyn laatikon kehysviivan leveys on mitassa \mittam{fboxrule} ja +kehyksen etäisyys sisällöstä mitassa \mitta{fboxsep}. Seuraavassa on +esimerkki useiden edellä mainittujen komentojen käytöstä. Tästä tuskin +kannattaa ottaa mallia vakavaan typografiseen työhön. + +\komentoi{colorbox} +\komentoi{color} +\komentoi{definecolor} +\komentoi{fcolorbox} +\komentoi{setlength} +\komentoi{textcolor} +\mittai{fboxrule} +\mittai{fboxsep} +\begin{koodilohkosis} +\definecolor{pun}{rgb}{1,.2,.2} +\setlength{\fboxrule}{2bp} \setlength{\fboxsep}{1bp} +\fcolorbox[gray]{.4}{.2}{\color[gray]{1}Tekstiä} +\textcolor{pun}{voi korostaa} \colorbox{pun}{väreillä}. +\end{koodilohkosis} + +\begin{tulossis} + \definecolor{pun}{rgb}{1,.2,.2} + \setlength{\fboxrule}{2bp} \setlength{\fboxsep}{1bp} + \fcolorbox[gray]{.4}{.2}{\color[gray]{1}Tekstiä} + \textcolor{pun}{voi korostaa} \colorbox{pun}{väreillä}. +\end{tulossis} + +\noindent +Sivulle voi määrittää taustavärin komennolla \komentom{pagecolor}. +Taustäväri vaihtuu nykyiselle ja seuraaville sivuille, kunnes väri +vaihdetaan toiseksi tai poistetaan. Komennolle annetaan samanlaiset +argumentit kuin muillekin värikomennoille. Komento +\komentom{nopagecolor} poistaa taustavärin kokonaan eli palauttaa +taustan oletustilaan. + +\komentoi{pagecolor} +\komentoi{nopagecolor} +\begin{koodilohkosis} +\pagecolor{nimi} % sivun taustaväriksi ennalta määritelty ”nimi” +\pagecolor[värimalli]{parametrit} +\nopagecolor +\end{koodilohkosis} + +\section{Sivunvaihdot ja sivujen tasaaminen} +\label{luku/sivunvaihdot} + +Kirjoittajan ei normaalisti tarvitse huolehtia sivun vaihtumisesta +lainkaan, vaan järjestelmä pyrkii latomaan hyvännäköisiä sivuja +automaattisesti. Välillä tietenkin halutaan aloittaa jokin uusi aihe +puhtaalta sivulta, ja sitä varten Latexissa on muutama komento. +Mainittakoon kuitenkin heti aluksi, että otsikoiden yhteyteen saa +sivunvaihdon kätevimmin keinoilla, jotka neuvotaan otsikoiden yhteydessä +luvussa \ref{luku/otsikot-ulkoasu}. + +Komento \komentom{clearpage} vaihtaa sivua, eli komennon jälkeinen +dokumentin osa alkaa aina puhtaalta sivulta. Lähes samanlainen komento +on \komentom{cleardoublepage}, joka kaksipuolisessa dokumentissa +aloittaa uuden sisällön aina parittomilta sivuilta. Jos seuraavana ei +satu olemaan pariton sivu, komento tekee väliin tyhjän sivun. Tätä +ominaisuutta on käytetty tässä oppaassa: pääluvut alkavat aina +oikeanpuoleiselta eli parittomalta sivulta. + +\komento{cleardoublepage}\-/komennon aiheuttamalle tyhjälle sivulle +saatetaan kuitenkin latoa ylä- ja alatunnisteet, jos sellaiset on +määritelty (luku \ref{luku/ylä-ala-tunnisteet}). Täysin tyhjän sivun saa +käyttämällä apuna pakettia \pakettictan{titlesec} ja sen valitsinta +\koodi{clear\-empty}: + +\komentoi{usepackage} +\pakettii{titlesec} +\begin{koodilohkosis} +\usepackage[clearempty]{titlesec} +\end{koodilohkosis} + +\noindent +Edellä mainittu \paketti{titlesec}\-/ paketti sisältää monenlaisia +toimintoja otsikoiden muotoiluun, joten sitä käsitellään tarkemmin +otsikoiden yhteydessä luvussa \ref{luku/otsikot-ulkoasu}. + +Komennoilla \komento{clearpage} ja \komento{cleardoublepage} on lisäksi +sellainen ominaisuus, että ne pakottavat aiemmin määritellyt leijuvat +osat (luku \ref{luku/leijuosat}) ladottavaksi ennen uutta puhdasta +sivua. + +Hieman toisenlainen sivunvaihtokomento on \komentom{newpage}. Se sallii +aiempien leijuvien osien latomisen myös sivunvaihdon jälkeen. +\komento{newpage} eroaa edellisistä sivuvaihtokomennoista myös siten, +että kaksipalstaisessa tilassa (luku \ref{luku/palstat}) se aloittaa +vain uuden palstan, ei välttämättä uutta sivua. + +Sivunvaihdon todennäköisyyteen tietyssä kohdassa voi vaikuttaa +komennoilla \komentom{pagebreak} ja \komentom{nopagebreak}. Kummallekin +voi antaa hakasulkeissa valinnaisen argumentin, joka on luku 0\==4. +Nolla tarkoittaa pienintä todennäköisyyttä sivunvaihdolle +(\komento{pagebreak}\komentoargv{0}) tai sen välttämiselle +(\komento{nopagebreak}\komentoargv{0}). Luku neljä (joka on oletusarvo) +tarkoittaa, että sivunvaihto pakotetaan tai estetään siinä kohdassa. +Näiden komentojen tarkoitus on kertoa ladonta\-/ algoritmille vihje, +kuinka toivottavaa sivunvaihto on tietyssä kohdassa. Jos ei käytä +suurinta arvoa neljä~(4), algoritmi voi löytää omasta mielestään +paremmankin sivunvaihtokohdan. + +\komentoi{pagebreak} +\komentoi{nopagebreak} +\begin{koodilohkosis} +\pagebreak[3] % Lisätään sivunvaihdon todennäköisyyttä. +\nopagebreak % Estetään sivunvaihto (oletusarvo 4). +\end{koodilohkosis} + +\noindent +Jos \komento{pagebreak}\-/ komentoa käyttää tekstikappaleen sisällä, +sivunvaihto ei välttämättä satu juuri komennon kohdalle. Sivu vaihdetaan +kohdalle osuvan rivin lopussa. + +Oletuksena Latex pyrkii latomaan kaikkien sivujen ylä- ja alareunan +tasaiseksi. Toisin sanoen se saattaa venyttää tai kutistaa sivulla +olevia pystysuuntaisia välejä niin, että kaikki sivut näyttävät yhtä +korkeilta. Tämä tila voidaan asettaa päälle komennolla +\komentom{flushbottom}, mutta se on jo oletuksena päällä ainakin Latexin +perusdokumenttiluokissa. + +Vaihtoehtoinen tila asetetaan komennolla \komentom{raggedbottom}. +Komennon seurauksena sivujen alareunoja ei tasata. Toisin sanoen sivun +pystysuuntaisiin väleihin ei kosketa, joten eri sivujen alareunat voivat +sattua eri korkeudelle. + +Dokumentin viimeistelyvaiheessa sivujen hienosäätöön sopinee komento +\komentom{enlargethispage}, jolla voi muuttaa käsillä olevan sivun +korkeutta, käytännössä \mitta{textheight}\-/mittaa. Komennolle annetaan +argumentiksi positiivinen tai negatiivinen mitta. Seuraavassa on +esimerkkejä: + +\komentoi{enlargethispage} +\mittai{baselineskip} +\begin{koodilohkosis} +\enlargethispage{12bp} % 12 pistettä korkemmaksi +\enlargethispage{-4bp} % 4 pistettä matalammaksi +\enlargethispage{\baselineskip} % yksi tekstirivi lisää +\end{koodilohkosis} + +\noindent +Komennon tähtiversio \komentom{enlargethispage*} pyrkii lisäksi +tiivistämään sivun sisältöä pystysuunnassa niin paljon kuin mahdollista. +Sen tyypillisin käyttötarkoitus lienee se, että sivulle pyritään +mahduttamaan yksi ylimääräinen rivi. Tämäntyyppinen sivujen hienosäätö +kannattaa tehdä vasta viimeisenä eli siinä vaiheessa, kun kaikki sisältö +on valmiina ja muu typografinen asettelu tehty. + +\section{Jäsennys} +\label{luku/jäsennys} + +Tekstin jäsentäminen tarkoittaa sisällön järjestystä ja sen jakamista +sopiviin kokonaisuuksiin. Esimerkiksi laaja teos voi koostua osista, +osien sisäisistä pääluvuista ja niiden alaluvuista. Eri luvut ilmaistaan +eritasoisilla otsikoilla. Varsinaisten sisältölukujen jälkeen teoksessa +voi olla erilaisia liite- tai luettelosivuja, esimerkiksi lähdeluettelo +ja asiahakemisto. Toisaalta lyhyempi artikkeli sisältää ehkä vain yhden- +tai kahdentasoisia otsikoita -- muuta ei tarvita. Tässä alaluvussa +käsitellään juuri tämäntyyppisiä asioita eli tekstikappaletta suurempien +kokonaisuuksien jäsentämistä. + +\subsection{Perustiedot, kansisivu ja tiivistelmä} +\label{luku/dokumentin-perustiedot} + +Latexissa on yksinkertainen toiminto dokumentin perustietojen latomiseen +dokumentin alkuun, mahdollisesti erilliselle kansisivulle. Perustietoja +ovat teoksen nimi, tekijä ja päiväys. Lähdedokumentin alussa perustiedot +ilmaistaan seuraavilla komennoilla: + +\komentoi{title} +\komentoi{author} +\komentoi{date} +\komentoi{and} +\komentoi{today} +\begin{koodilohkosis} +\title{Tieteellistä tiedettä} % teoksen nimi +\author{Timo Tiedemies \and Tuija Tutkija} % tekijöiden nimet +\date{\today} % päiväys +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komentojen argumentissa voi käyttää komentoa +\komento{thanks}, joka on tarkoitettu kiitosten osoittamiseen. +Komennolle annetaan argumentiksi lyhyehkö teksti eli kiitosviesti, joka +tulisi näkymään sivulla alaviitteessä. + +Komennot eivät itse vielä lado mitään tekstiä dokumenttiin. Ne vain +tallentavat perustiedot muistiin mahdollista myöhempää käyttöä varten. +Komennolla \komentom{maketitle} voi latoa kaikki edellä mainitut tiedot. +Ne voivat näkyä ensimmäisen sisältösivun alussa tai erillisellä +kansisivulla; se riippuu dokumenttiluokan asetuksista ja valitsimista +\koodi{titlepage} ja \koodi{notitlepage}. Se, kumpi asetus on oletuksena +päällä, vaihtelee eri dokumenttiluokissa. Dokumenttiluokkia ja niiden +asetuksia käsitellään tarkemmin luvussa \ref{luku/dokumenttiluokat}. +Yksittäiset perustiedot saa ladottua seuraavilla komennoilla: +\komento{thetitle}, \komento{theauthor} ja \komento{thedate}. + +Perustietokomentoihin \komento{title}, \komento{author} ja +\komento{date} ei ole tarkoitus sisällyttää kovin monimutkaisia +muotoilukomentoja. Jos haluaa vaikuttaa perustietojen ulkoasuun, +kannattaa käyttää siihen tarkoitettua pakettia \pakettictan{titling}. +Toisaalta mikään ei estä muotoilemasta oman dokumentin perustietoja +ilman Latexin valmiita keinoja. + +Hyödyllisiä ympäristöjä dokumentin alussa käytettäväksi voivat olla +\ymparistom{titlepage} ja \ymparistom{abstract}. Ensin mainittu luo +tyhjän sivun kansisivun toteuttamiseen. Se myös aloittaa sivunumeroinnin +alusta eli asettaa uudelleen \laskuri{page}\-/ laskurin arvon. +\ymparisto{abstract}\-/ ympäristö on tarkoitettu tieteellisen artikkelin +tiivistelmän kirjoittamiseen. Molempien edellä mainittujen ympäristöjen +käyttö on vapaaehtoista. Kansisivun ja artikkelin tiivistelmän voi aivan +hyvin toteuttaa ilman näitäkin. + +Teoksen kansisivu -- jos sellainen on -- kannattanee lisätä pdf\-/ +tiedoston sisäiseen sisällysluetteloon, jotta lukija voi helposti palata +alkuun myös luettelon kautta. Normaaliin ladottavaan sisällysluetteloon +tuskin koskaan merkitään kansisivua. Pdf:n sisällysluetteloon saa oman +merkinnän esimerkiksi seuraavalla komennolla: + +\komentoi{pdfbookmark} +\begin{koodilohkosis} +\pdfbookmark[0]{Kansi}{sivu/kansi} +\end{koodilohkosis} + +\noindent +Edellä mainittu komento \komento{pdfbookmark} täytyy sijoittaa Latex\-/ +lähdedokumentissa nimenomaan kansisivulle, koska +sisällysluettelomerkintä on samalla linkki kyseiseen kohtaan +dokumentissa. Komento kuuluu \paketti{hyperref}\-/ pakettiin, ja sitä +käsitellään tarkemmin pdf:n asetusten yhteydessä luvussa +\ref{luku/pdf-asetukset}. + +\subsection{Otsikointi} +\label{luku/otsikot} + +Otsikoiden tehtävänä on tietenkin jakaa sisältö mielekkäisiin osiin ja +ilmaista tekstikokonaisuuksien aihe. Ne auttavat lukijaa ennakoimaan, +mitä on tulossa. Otsikot havainnollistavat myös asioiden +hierarkkisuutta: ylemmäntasoiset otsikot nimeävät yläkäsitteitä tai +laajempia kokonaisuuksia, alemmantasoiset otsikot alakäsitteitä ja +pienempiä kokonaisuuksia. + +Jos kirjoittaa Latexilla vähänkään otsikoita, kannattaa ladata mukaan +paketti \paketti{hyperref}. Se huolehtii, että Latexiin merkityt otsikot +tuodaan mukaan pdf\-/ tiedoston sisäiseen sisällysluetteloon ja että +dokumenttiin mahdollisesti ladottavassa sisällysluettelossa otsikot ovat +automaattisesti myös linkkejä, joilla voi hypätä kyseiseen lukuun. +Pdf\-/ tiedoston selailu on näin mukavampaa. \paketti{hyperref}\-/ +pakettia ja pdf\-/ tiedoston ominaisuuksia käsitellään tarkemmin luvussa +\ref{luku/pdf-asetukset}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[4]{\komento{#1} & #2 & #3 & #4 \\} + \begin{tabular}{lccl} + \toprule + \multirow{2}{*}{\ots{Komento}} + & \ots{Taso} + & \ots{Taso} + & \multirow{2}{*}{\ots{Merkitys}} \\ + & (\luokka{article}) & (\luokka{book}, \luokka{report}) \\ + \midrule + \rivi{part}{0}{-1}{teoksen osa} + \rivi{chapter}{}{0}{pääluku} + \rivi{section}{1}{1}{otsikko 1, luku} + \rivi{subsection}{2}{2}{otsikko 2, alaluku} + \rivi{subsubsection}{3}{3}{otsikko 3, alaluvun alaluku} + \rivi{paragraph}{4}{4}{kappaleotsikko 1} + \rivi{subparagraph}{5}{5}{kappaleotsikko 2} + \bottomrule + \end{tabular} +}{ + \caption{Otsikointikomennot ja niitä vastaavat tasot Latexin + otsikkohierarkiassa. Dokumenttiluokassa \luokka{article} ei ole + päälukuja (\komento{chapter})} + \label{tlk/otsikkotasot} +} + +Latexissa eri otsikoiden tasoille on omat komentonsa, jotka on koottu +taulukkoon \ref{tlk/otsikkotasot} -- suurimmasta otsikosta pienimpään. +Ylin otsikkotaso on teoksen osa, ja sitä merkitään komennolla +\komentom{part}. Tämän komennon käyttö on vapaaehtoista, mutta sillä on +voi osoittaa laajan teoksen osia. Osat numeroidaan oletuksena +roomalaisilla järjestysluvuilla: ''\partname~I'', ''\partname~II'', +''\partname~III'' jne. Ne eivät vaikuta alemmantasoisten otsikoiden +numerointiin, eli osan vaihtuminen ei oletusasetuksilla nollaa +alemmantasoisten lukujen laskuria. + +Otsikkotaso \komentom{chapter} tarkoittaa kirjan päälukua, joka alkaa +oletuksena puhtaalta sivulta. Otsikkoa ennen siis suoritetaan +automaattisesti sivunvaihtokomento \komento{clearpage} tai +\komento{cleardoublepage} (luku \ref{luku/sivunvaihdot}). +\komento{chapter}\-/ tasoiset otsikot saavat oletuksena numeroinnin +''\chaptername~1'', ''\chaptername~2'', ''\chaptername~3'' jne. +Dokumenttiluokassa \luokka{article} ei tätä otsikkotasoa ole lainkaan. + +Seuraavat otsikkotasot \komentom{section}, \komentom{subsection} ja +\komentom{subsubsection} ovat tavallisimpia tekstin väliotsikoita. Nekin +saavat oletuksena numeroinnin, jossa pisteellä erotetaan mahdolliset +alaluvut: 1.1, 1.2, 1.2.1, 1.2.2 yms. + +Otsikoinnissa on tärkeää säilyttää suora hierarkkinen suhde +otsikkotasojen välillä: alemmantasoista otsikkoa ei saa käyttää ennen +kuin on ensin ollut yhtä astetta ylempi otsikkotaso. Täytyy siis olla +ensin \komento{section} ennen kuin voi olla \komento{subsection}. Muuten +otsikoiden numerointi ei toimi oikein. Poikkeus on \komento{part}, jota +ei välttämättä tarvitse käyttää. + +Otsikkotasot \komentom{paragraph} ja \komentom{subparagraph} eivät ole +ihan perinteisiä otsikoita, vaan ne ladotaan tekstikappaleen alkuun. +Nekin kyllä erottuvat leipätekstistä ja voivat toimia otsikon +kaltaisessa tehtävässä. Oletuksena kappaleotsikoita ei numeroida eivätkä +ne tule mukaan sisällysluetteloon. Oletusasetuksia on kuitenkin +mahdollista muuttaa, ja tarvittaessa \komento{paragraph} ja +\komento{subparagraph} voivat toimia normaaleina otsikoina tason +\komento{subsubsection} jälkeen. Kovin syvää otsikkorakennetta ei +yleensä suositeta, koska lukijan voi olla vaikeaa hahmottaa monitasoisia +kokonaisuuksia. + +Otsikkokomennoille annetaan tyypillisesti vain yksi argumentti, joka on +kyseisen otsikon teksti. Otsikkoon ei ole tarkoitus kirjoittaa kovin +monimutkaisia fontti- eikä muotoilukomentoja, vaan mieluiten ainoastaan +otsikon teksti. Typografinen muotoilu tehdään muilla keinoilla, joita +esitellään alaluvussa \ref{luku/otsikot-ulkoasu}. Yksinkertaiset +korostuskomennot ja tavutusvihjeet (\komento{-}) kuitenkin toimivat +yleensä. Hauraiden komentojen (luku \ref{luku/komennot-hauraat}) eteen +täytyy kirjoitaa komento \komento{protect}. + +\komentoi{section} +\begin{koodilohkosis} +\section{Tämä teksti on otsikko} +\end{koodilohkosis} + +\noindent +Otsikko tulee automaattisesti mukaan teoksen sisällysluetteloon, jos +sellainen on olemassa (luku \ref{luku/sisällysluettelo}). Otsikko näkyy +myös pdf\-/ tiedoston sisällysluettelossa, jos vain +\paketti{hyperref}\-/ paketti on käytössä (luku +\ref{luku/pdf-asetukset}). Lisäksi otsikon tekstiä voi käyttää +ristiviittauksissa (luku~\ref{luku/ristiviitteet}). + +Otsikkokomennoille voi antaa yhden valinnaisen argumentin, jolla +ilmaistaan otsikosta lyhempi tai yksinkertaisempi versio. Tällöin +sisällysluettelossa ja ristiviitteissä näytetään lyhempi otsikko ja +tekstiin ladotaan varsinainen otsikko. Tätä ominaisuutta on syytä +hyödyntää myös silloin, kun varsinainen otsikko sisältää otsikkotekstin +lisäksi muotoilukomentoja. Silloin valinnaiseen argumenttiin +kirjoitetaan vain puhdasta tekstiä sisältävä versio otsikosta. + +\komentoi{section} +\begin{koodilohkosis} +\section[Lyhyt otsikko]{Tämä tässä on pitkä otsikko} +\end{koodilohkosis} + +\noindent +Kaikille otsikkokomennoille on olemassa myös niin sanottu tähtiversio +eli komentovaihtoehto, jonka nimen lopussa on tähti: \komento{part*}, +\komento{chapter*}, \komento{section*}, \komento{subsection*}, +\komento{subsubsection*}, \komento{paragraph*}, \komento{subparagraph*}. +Nämä vaihtoehdot latovat otsikon, jolla ei ole numerointia ja jota ei +lisätä sisällysluetteloon. + +Pelkän otsikon numeroinnin poistamiseen ei ehkä kannata käyttää näitä +tähtiversioita, koska yleensä otsikko kuitenkin halutaan +sisällysluetteloon. Otsikoiden numeroinnin saa pois muilla keinoilla, +jotka neuvotaan luvussa \ref{luku/otsikot-numerointi}. + +Jos kuitenkin jostain syystä haluaa käyttää tähdellistä otsikkokomentoa +ja haluaa otsikon myös sisällysluetteloon, täytyy se tehdä seuraavalla +tavalla: + +\komentoi{section*} +\komentoi{addcontentsline} +\komentoi{phantomsection} +\begin{koodilohkosis} +\section*{Tässäpä numeroimaton otsikko} +\phantomsection +\addcontentsline{toc}{section}{Tässäpä numeroimaton otsikko} +\end{koodilohkosis} + +\noindent +Edellä olevan esimerkin komento \komentom{addcontentsline} lisää +merkinnän sisällysluetteloon. Komennon ensimmäinen argumentti on +\koodi{toc} (\englanti{table of contents}), joka on sisällysluetteloiden +tekemisessä tarvittavan väliaikaistiedoston pääte. Esimerkissä lisättävä +sisällysluettelon merkintä on tasoltaan \koodi{section} eli vastaa muita +\komento{section}\-/ komennolla syntyviä sisällysluettelon kohtia. +Komento \komentom{phantomsection} kuuluu \paketti{hyperref}\-/ +pakettiin, ja se lisää pdf\-/ tiedostoon näkymättömän ankkurin tähän +kohtaan dokumentissa. Sitä tarvitaan, jotta sisällysluettelon merkintä +viittaisi oikealle sivulle ja toimisi myös linkkinä, joka tuo juuri +tähän kohtaan. + +\subsection{Otsikoiden numerointi} +\label{luku/otsikot-numerointi} + +Oletusasetuksilla Latex numeroi otsikot (\komento{chapter}, +\komento{section} jne.) automaattisesti, mutta kirjoittaja voi vaikuttaa +numerointiin monella tavalla, kuten siihen, mihin otsikkotasoon saakka +numerointi yltää ja millä tyylillä otsikoiden numerot ylipäätään +ladotaan. + +Laskuri \laskurim{secnumdepth} on tarkoitettu kirjoittajan +asetettavaksi, ja sillä määritetään, mihin otsikkotasoon saakka otsikot +numeroidaan. Tasonumerot ovat taulukossa \ref{tlk/otsikkotasot}. +Seuraava esimerkki määrittelee, että vain tasoon~1 (\komento{section}) +saakka otsikot numeroidaan. Alemmantasoiset otsikot +(\komento{subsection} ym.) eivät saa numeroa. + +\komentoi{setcounter} +\laskurii{secnumdepth} +\begin{koodilohkosis} +\setcounter{secnumdepth}{1} +\end{koodilohkosis} + +\noindent +Asetusta voi muuttaa kesken dokumentin. Muuttaminen voi olla mielekästä +esimerkiksi laajan teoksen lopussa, jossa on mahdollisesti +lähdeluettelo, asiahakemistoja tai liitteitä, joille ei ehkä haluta +samanlaista otsikkonumerointia kuin varsinaisille sisältöluvuille. + +Latexin otsikoiden numerointi noudattaa yleistä tietokirjallisuuden +käytäntöä, eli numeroinnissa käytetään arabialaisia numeroita ja eri +tasoja ilmaisevat numerot erotetaan toisistaan pisteellä: 1.1, 1.2, +1.2.1, 1.2.2 jne. Sisäisesti Latex käyttää laskureita, joilla on sama +nimi kuin vastaavalla otsikointikomennolla: \laskuri{part}, +\laskuri{chapter}, \laskuri{section}, \laskuri{subsection}, +\laskuri{subsubsection}, \laskuri{paragraph}, \laskuri{subparagraph}. + +Laskureiden toimintaan voi perehtyä tarkemmin luvun \ref{luku/laskurit} +avulla, mutta kerrataan tässä yhteydessä yksi asia. Laskurin arvon voi +latoa dokumenttiin käyttämällä komentoa, joka alkaa kirjaimilla +\komentox{the} ja jatkuu laskurin nimellä. Niin otsikkokomennot juuri +tekevät: esimerkiksi \komento{section}\-/ otsikon kohdalla suoritetaan +automaattisesti \komento{thesection}, joka tuottaa otsikon numeron. +Vastaavasti \komento{subsection}\-/ komento latoo numeron käyttämällä +komentoa \komento{thesubsection} jne. + +Kirjoittaja voi halutessaan määritellä nämä laskurin latomiskomennot +uudelleen. Jos esimerkiksi teoksen osat (\komento{part}) halutaan +ilmaista arabialaisin numeroin eikä roomalaisin (kuten on oletus), +tehdään se seuraavan esimerkin mukaisesti. Esimerkissä käytettävä +komento \komento{arabic} latoo laskurin arvon arabialaisilla numeroilla. + +\komentoi{renewcommand} +\komentoi{thepart} +\laskurii{part} +\komentoi{arabic} +\begin{koodilohkosis} +\renewcommand{\thepart}{\arabic{part}} +\end{koodilohkosis} + +\noindent +Joskus ehkä halutaan, että otsikoissa eri tasojen numeroita ei eroteta +toisistaan pisteellä (2.1) vaan yhdysmerkillä tai ajatusviivalla +(2\==1). Tällainen asetus saadaan määrittelemällä alemmantasoisten +laskurien latomiskomennot uudelleen, esimerkiksi seuraavasti:% +\footnote{Parempi olisi ehkä käyttää sitovaa ajatusviivaa, jonka saa + \paketti{extdash}\-/ paketin \komento{==}\-/ komennolla. Katso + lisätietoa luvusta \ref{luku/tavutus-sallivat-sitovat}.} + +\komentoi{renewcommand} +\komentoi{thesection} +\komentoi{thesubsection} +\komentoi{thesubsubsection} +\laskurii{subsection} +\laskurii{subsubsection} +\komentoi{arabic} +\begin{koodilohkosis} +\renewcommand{\thesubsection}{\thesection--\arabic{subsection}} +\renewcommand{\thesubsubsection}{% + \thesubsection--\arabic{subsubsection}} +\end{koodilohkosis} + +\noindent +Otsikkonumeroinnin poistamista ei pidä toteuttaa siten, että määrittelee +edellä mainitut \komentox{the}\-/ alkuiset komennot tyhjäksi. Numerointi +poistetaan laskurin \laskuri{secnumdepth} avulla määrittämällä sen arvo +tarpeeksi pieneksi. Sekin on syytä muistaa, että nämä \komentox{the}\-/ +alkuiset komennot on tarkoitettu vain laskurien arvon latomiseen. +Komennon määritelmään ei pidä kirjoittaa typografiseen muotoiluun +liittyviä komentoja. Otsikoiden ulkoasuun vaikutetaan muilla keinoilla. + +\subsection{Otsikoiden ulkoasu} +\label{luku/otsikot-ulkoasu} + +Otsikoiden typografiaan eli esimerkiksi kirjainperheen ja \=/leikkauksen +valintaan ja välistyksiin on kätevintä käyttää \pakettictan{titlesec}\-/ +pakettia. Perus Latexissakin on kyllä otsikoiden muotoiluun tarkoitettu +komento \komentox{@startsection}, mutta sen käyttö on hankalampaa eikä +se toimi kaikilla otsikkotasoilla. Perus Latexin keinoihin voi tutustua +esimerkiksi epävirallisen Latex\-/ hakuteoksen \textcite{unoffref} +avulla. Tässä oppaassa sen sijaan keskitytään \paketti{titlesec}\-/ +pakettiin. + +Otsikoiden perusmuotoilu on helpointa toteuttaa +\komentom{titleformat*}\-/ komennon avulla. Sille annetaan argumentiksi +otsikkokomennon nimi ja sitä vastaavat muotoilukomennot. Seuraava +esimerkki vaihtaa otsikoihin groteskin kirjainperheen +(\komento{sffamily}) ja hieman toisistaan poikkeavan kirjainleikkauksen. + +\komentoi{titleformat*} +\komentoi{section} +\komentoi{subsection} +\komentoi{subsubsection} +\komentoi{sffamily} +\komentoi{large} +\komentoi{Large} +\komentoi{normalsize} +\komentoi{bfseries} +\komentoi{itshape} +\begin{koodilohkosis} +\titleformat*{\section} {\sffamily\bfseries\Large} +\titleformat*{\subsection} {\sffamily\bfseries\itshape\large} +\titleformat*{\subsubsection}{\sffamily\bfseries\normalsize} +\end{koodilohkosis} + +\noindent +Monipuolisemmat muotoiluasetukset saa toteutettua komennon tähdettömällä +versiolla \komentom{titleformat}. Tämän komentoversion monista +argumenteista ja ominaisuuksista kannattaa lukea \paketti{titlesec}\-/ +paketin ohjekirjasta, mutta esimerkistä \ref{esim/titleformat} +selvinnevät perustoiminnot. + +\begin{esimerkki*} + \komentoi{titleformat} + \komentoi{section} + \komentoi{sffamily} + \komentoi{bfseries} + \komentoi{Large} + \komentoi{raggedright} + \komentoi{thesection} + +\begin{koodilohko} +\titleformat{\section} % otsikkotaso: \section +[hang] % muoto: riippuva sisennys +{\sffamily\bfseries\Large % ulkoasukomentoja + \raggedright} +{\thesection} % numerointi +{.8em} % numeroinnin ja otsikkotekstin väli (mitta) +{} % koodia ennen otsikkotekstiä +[] % koodia otsikon jälkeen +\end{koodilohko} + \caption{Otsikoiden ulkoasuun voi vaikuttaa monipuolisesti + \komento{titleformat}\-/ komennolla, joka kuuluu \paketti{titlesec}\-/ + pakettiin} + \label{esim/titleformat} +\end{esimerkki*} + +Luvun numeroinnin (1.1, 1.2 jne.) tyyliin voi vaikuttaa komennolla +\komentom{titlelabel}. Komento suoritetaan yleensä vain kerran, ja se +vaikuttaa kaikentasoisiin otsikoihin. Tätä komentoa ei tarvita, jos +käyttää edellä mainittua ''tähdetöntä'' \komento{titleformat}\-/ +komentoa, koska se sisältää jo toiminnot myös lukujen numeroinnin +asetuksiin. + +\komentoi{titlelabel} +\komentoi{hspace} +\begin{koodilohkosis} +\titlelabel{\thetitle\hspace{1em}} +\end{koodilohkosis} + +\noindent +Edellä olevan komennon argumentissa käytetty komento \komentox{thetitle} +on tarkoitettu vain tämän komennon ja \paketti{titlesec}\-/ paketin +sisäiseen käyttöön. Se latoo kyseisen luvun numeron, olipa otsikkotaso +mikä hyvänsä. Sen perään esimerkissä asetetaan 1\,em:n suuruinen väli +\komento{hspace}\-/ komennolla. + +Otsikoiden yhteydessä ladottavaan sisennykseen ja pystysuuntaiseen +väliin vaikutetaan komennolla \komentom{titlespacing*}. Sille annetaan +argumentiksi otsikkokomennon nimi ja halutut mitat järjestyksessä vasen +sisennys, yläpuolinen väli ja alapuolinen väli. + +\komentoi{titlespacing*} +\komentoi{section} +\begin{koodilohkosis} +\titlespacing*{\section}{0mm}{3ex plus 2bp minus 1bp}{2ex plus 1bp} +\end{koodilohkosis} + +\noindent +Pystysuuntaiset mitat on yleensä hyvä asettaa venyviksi (luku +\ref{luku/venyvät-mitat}), jotta Tex saa pelivaraa sivujen latomiseen. +Otsikon yläpuolella pitäisi olla isompi väli kuin alapuolella, koska +otsikko kuuluu kiinteämmin sitä seuraavaan tekstiin. Pystysuuntaisten +välien määrittämisessä voi käyttää *\=/lyhennettä, joka tarkoittaa +oletuksena ex\-/mittayksikköä ja sallii hieman venymistä. + +\komentoi{titlespacing*} +\komentoi{section} +\begin{koodilohkosis} +\titlespacing*{\section}{0mm}{*3}{*2} +\end{koodilohkosis} + +\noindent +Tähdellinen \komento{titlespacing*}\-/ komento poistaa otsikon jälkeen +tulevasta tekstikappaleesta ensimmäisen rivin sisennyksen (luku +\ref{luku/ensimmäisen-rivin-sisennys}). Tähdetön komentoversio +\komentom{titlespacing} sen sijaan säilyttää kappaleen sisennyksen. Sitä +ei liene tarvetta käyttää koskaan, sillä otsikoiden jälkeen tulevaa +tekstikappaletta ei kuulu sisentää. + +Teoksen osien (\komento{part}) vaihtuessa sivulle ladotaan oletuksena +teksti kuten ''\partname~I'', ''\partname~II'' jne. Mainittu sana +''\partname'' tulee suomen kieliasetuksista ja komennosta +\komentom{partname}. Kaikkien kielten asetukset nimittäin määrittelevät +komennon \komento{partname} siten, että se sisältää ja latoo kyseiseen +kieleen sopivan ilmauksen. Vastaavasti päälukujen (\komento{chapter}) +yhteydessä ladotaan suomen kieliasetuksilla ilmaus ''\chaptername~1'', +''\chaptername~2'' jne. Sana ''\chaptername'' tulee komennosta +\komentom{chaptername}. + +Jos omassa dokumentissa haluaa kutsua teoksen osia tai päälukuja +joksikin muuksi, voi määritellä edellä mainitut komennot uudelleen. +Seuraavassa esimerkissä voisi olla jokin romaani, jossa teoksen osat +ovat ''kausia'' ja pääluvut ovat ''päiviä''. + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{partname} +\komentoi{chaptername} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\partname}{Kausi} + \renewcommand{\chaptername}{Päivä} +} +\end{koodilohkosis} + +\noindent +Tässä \komento{renewcommand}\-/ komennot sijoitettiin \komento{addto}\-/ +komennon sisään, sen toiseen argumenttiin. Komento \komento{addto} +täytyy suorittaa lähdedokumentin esittelyosassa, ja tässä se lisää uusia +komentoja suomen kielen asetuksiin (\komento{captionsfinnish}), niin +että ne tulevat voimaan samalla kun suomen kieliasetuksetkin. +\komento{addto} kuuluu \paketti{polyglossia}\-/\ ja \paketti{babel}\-/ +paketteihin, joita käsitellään tarkemmin kieliasetusten yhteydessä +luvussa \ref{luku/kieliasetukset}. + +Otsikoiden yhteyteen saa automaattisen sivunvaihdon määrittämällä +komennon, jonka nimen alussa on otsikkokomennon nimi ja lopussa sana +\koodi{break}. Tavallisin lienee \komentom{sectionbreak}. Komennon +määritelmään kirjoitetaan jokin sivuvaihtokomento kuten +\komento{clearpage}. Sivunvaihtokomentoja käsitellään tarkemmin luvussa +\ref{luku/sivunvaihdot}. + +\komentoi{newcommand} +\komentoi{sectionbreak} +\komentoi{clearpage} +\begin{koodilohkosis} +\newcommand{\sectionbreak}{\clearpage} +\end{koodilohkosis} + +\subsection{Esittely, pääluvut, liitteet ja luettelot} +\label{luku/frontmainbackmatter} + +Dokumenttiluokassa \luokka{book} (luku \ref{luku/perusdokumenttiluokat}) +on käytettävissä kolme lisäkomentoa dokumentin erilaisten osien +ilmaisemiseen: \komento{frontmatter}, \komento{mainmatter} ja +\komento{backmatter}. Niillä jaetaan laaja teos esittelysivuihin, +varsinaisiin sisältölukuihin ja loppuosaan kuten liitesivuihin ja +erilaisiin luetteloihin. Lisäksi muissakin dokumenttiluokissa on komento +\komento{appendix}, jolla voi aloittaa liitesivuja sisältävän osan +dokumentissa. Näiden komentojen käyttö on vapaaehtoista. Luvussa +\ref{luku/tyypillinen-tietokirja} käsitellään tyypillisen suomalaisen +tietokirjan rakennetta ja teknistä toteuttamista. + +Dokumentin alkuun voi kirjoittaa komennon \komentom{frontmatter}, joka +asettaa sivunumeroiden tyyliksi roomalaiset numerot (i, ii, iii jne.) ja +poistaa pääluvuilta (\komento{chapter}) numeroinnin. Tässä osassa ovat +teoksen kansi ja perustiedot, sisällysluettelo, tietokirjan tai +tutkimuksen tiivistelmä ja mahdollisesti teoksen esipuhe tai muu +vastaava esittelyteksti, joka ei ole vielä varsinaista sisältöä. + +Jos dokumentissa käytetään \komento{frontmatter}\-/ komentoa, täytynee +varsinaisten sisältölukujen alkuun kirjoittaa komento +\komentom{mainmatter}, joka nollaa sivunumerolaskurin, asettaa +numeroinnin tyyliksi arabialaiset numerot (1, 2, 3 jne.) ja kytkee +päälle lukujen numeroinnin. Sen jälkeen ensimmäinen \komento{chapter}\-/ +komennolla tehty luku on siis ''\chaptername~1''. + +Sisältösivujen lopussa voi olla komento \komentom{appendix}. Se +ensinnäkin nollaa \luokka{book}- ja \luokka{report}\-/ luokissa +päälukujen laskurin \laskuri{chapter}. Sen sijaan \luokka{article}\-/ +luokassa se nollaa \laskuri{section}\-/ laskurin. Sen lisäksi +\komento{appendix}\-/ komento muuttaa lukujen numerointityyliksi +kirjaimet (A, B, C jne.) ja päälukujen nimeksi ''\appendixname'', joka +tulee komennosta \komento{appendixname}. Näin teoksen lopussa +\komento{appendix}\-/ komennon jälkeen pääluvut tulevat nimetyksi +uudella tavalla: ''\appendixname~A'', ''\appendixname~B'' jne. + +Sisältösivujen ja mahdollisten liitteiden jälkeen voi olla hyödyllistä +käyttää komentoa \komentom{backmatter}, joka lopettaa päälukujen +numeroinnin kokonaan. Tähän osaan voisi sijoittaa ainakin asiahakemistot +sekä kirjallisuus\-/\ tai lähdeluettelon. + +\subsection{Tyypillinen tietokirjan rakenne} +\label{luku/tyypillinen-tietokirja} + +Latexin komennot \komento{frontmatter} ja \komento{mainmatter} (luku +\ref{luku/frontmainbackmatter}) eivät ihan vastaa suomalaista +tietokirjojen käytäntöä. Suomessa teoksen alun sivunumeroita ei ole +tapana ilmaista roomalaisilla numeroilla eikä sivunumerointia nollata +sisältölukujen alkaessa. Esimerkkiin \ref{esim/tietokirjojen-rakenne} on +koottu varsin tyypillinen suomalainen tietokirjojen rakenne. Esimerkissä +ei käytetä lainkaan komentoja \komento{frontmatter}, +\komento{mainmatter} eikä \komento{backmatter}, vaan lukujen +numerointiin vaikutetaan suoraan asettamalla laskuriin +\laskuri{secnumdepth} sopiva arvo. Tätä laskuria käsitellään otsikoiden +yhteydessä luvussa \ref{luku/otsikot-numerointi}. + +\begin{esimerkki*} + \komentoi{documentclass} + \luokkai{book} + \komentoi{pagestyle} + \komentoi{cleardoublepage} + \komentoi{setcounter} + \laskurii{tocdepth} + \laskurii{secnumdepth} + \komentoi{tableofcontents} + \komentoi{chapter} + \komentoi{appendix} + \komentoi{printbibliography} + \komentoi{printindex} + \ymparistoi{document} + +\begin{koodilohko} +\documentclass{book} + +\begin{document} + +\pagestyle{empty} % sivunumerot pois näkyvistä +% nimiösivu yms. + +\cleardoublepage +\setcounter{tocdepth}{2} % sisällysluettelon syvyys +\pagestyle{plain} % sivunumerot näkyviin +\tableofcontents % sisällysluettelo + +\setcounter{secnumdepth}{-1} % lukujen numerointi pois + +\chapter{Esipuhe} +% esipuheen teksti + +\setcounter{secnumdepth}{2} % aloitetaan lukujen numerointi + +\chapter{Ensimmäinen pääluku} +% ... +\chapter{Toinen pääluku} +% ... + +% mahdollisesti liitteet +\appendix +\chapter{Tärkeä liite} +% ... +\chapter{Tosi tärkeä liite} +% ... + +% Kirjallisuusluettelot, asiahakemistot yms. +\setcounter{secnumdepth}{-1} % lukujen numerointi pois + +\chapter{Kirjallisuutta} +\printbibliography + +\chapter{Asiahakemisto} +\printindex + +\end{document} +\end{koodilohko} + \caption{Tyypillinen suomalainen tietokirjojen rakenne sekä sivujen ja + lukujen numerointikäytännöt} + \label{esim/tietokirjojen-rakenne} +\end{esimerkki*} + +Suomalaisissa kirjoissa sivunumeroinnin laskuri alkaa ensimmäiseltä +sivulta, johon on painettu jotakin, yleensä pelkkä teoksen nimi tai +kirjailijan nimi. Sivu~1 ei ole vielä kirjan kansi, koska kirjapainossa +kannet lisätään ikään kuin tekijöiden työn ympärille. Aikakauslehdissä +kansi on kuitenkin sivu~1. + +Sivunumerot tulevat näkyviin hieman vaihtelevasti: joskus sivunumerot +näytetään sisällysluettelon alusta saakka; joskus ne näytetään vasta +sisällysluettelon jälkeen esipuheessa; joskus esipuhe on ennen +sisällysluetteloa ja sivunumerot näkyvät esipuheen alusta saakka. +Esimerkissä \ref{esim/tietokirjojen-rakenne} sivutyyli \koodi{plain} +kytketään päälle sisällysluettelon alkaessa, eli sivunumerotkin alkavat +sen myötä näkyä. Sivutyylejä ja muita ylä- ja alatunnisteisiin liittyviä +asioita käsitellään tarkemmin luvussa \ref{luku/ylä-ala-tunnisteet}. + +Mikäli haluaa, että sisällysluettelossa ei vielä näytetä sivunumeroita, +joutuu dokumenttiluokissa \luokka{book} ja \luokka{report} käyttämään +vähän epätavallista keinoa halutun lopputuloksen saavuttamiseksi. +Sellainen neuvotaan sisällysluettelon käsittelyn yhteydessä esimerkissä +\ref{esim/sisällysluettelo-empty}. + +\section{Sisällysluettelo} +\label{luku/sisällysluettelo} + +Dokumentin sisällysluettelo syntyy helposti yhdellä komennolla: +\komentom{tableofcontents}. Otsikkokomennoilla (luku \ref{luku/otsikot}) +tehdyt otsikot tulevat automaattisesti sisällysluetteloon. Jos käytössä +on paketti \paketti{hyperref} (luku \ref{luku/pdf-asetukset}), +sisällysluettelon otsikot ovat myös linkkejä, jotka vievät kyseiseen +kohtaan dokumentissa. Oletuksena syntyvä sisällysluettelo on tyyliltään +neutraali, ja se sopinee sellaisenaan useimpiin töihin. Ulkoasua voi +kyllä muokatakin varsin helposti. + +\komentoi{tableofcontents} +\begin{koodilohkosis} +% Ladotaan sisällysluettelo tähän kohtaan. +\tableofcontents +\end{koodilohkosis} + +\noindent +Laskurin \laskurim{tocdepth} avulla kirjoittaja voi määritellä, mihin +tasoon saakka sisällysluettelossa näytetään otsikoita. Esimerkiksi +jonkin kuvitteellisen romaanin (dokumenttiluokka \luokka{book}) +sisällysluettelossa voisi näyttää ainoastaan osat (\komento{part}) ja +pääluvut (\komento{chapter}) asettamalla laskurin arvoksi nolla. Arvo +nolla viittaa nimenomaan \komento{chapter}\-/ tasoisiin otsikoihin. +Otsikoiden tasonumerot voi tarkistaa taulukosta \ref{tlk/otsikkotasot} +(s.~\pageref{tlk/otsikkotasot}). + +\komentoi{setcounter} +\laskurii{tocdepth} +\begin{koodilohkosis} +\setcounter{tocdepth}{0} +\end{koodilohkosis} + +\noindent +Sisällysluettelolle ladotaan automaattisesti otsikko, joka tulee +komennosta \komentom{contentsname}. Komento on määritelty +kieliasetuksissa, ja se latoo suomen kielessä sanan ''Sisältö'' tai +''Sisällys''.% +\footnote{Se, kumpi otsikko on käytössä, riippuu kielipakettien + \paketti{polyglossia} ja \paketti{babel} versiosta. Vuonna 2020 + kumpaankin kielipakettiin on muutettu otsikoksi ''Sisällys'', joka on + selvästi yleisin sisällysluettelon otsikko.} Jos otsikkoon ei ole +tyytyväinen, voi lähdedokumentin esittelyosassa \komento{addto}\-/ +komennon avulla muuttaa kieliasetuksia. Seuraavassa esimerkissä +muutetaan sisällysluettelon otsikko suomen kielen osalta: + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{contentsname} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\contentsname}{Sisällysluettelo} +} +\end{koodilohkosis} + +\noindent +Dokumenttiluokissa \luokka{book} ja \luokka{report} (luku +\ref{luku/perusdokumenttiluokat}) on sellainen ominaisuus tai +kummallisuus, että sisällysluettelon alkusivulla suoritetaan +automaattisesti komento \komento{thispagestyle}\komentoarg{plain}. Tämän +vuoksi sisällysluettelon ensimmäinen sivu on aina \koodi{plain}\-/ +tyylinen eli alatunnisteessa näkyy sivunumero, vaikka ennen +sisällysluetteloa olisikin asettanut sivutyyliksi jonkin muun. +Monisivuisen sisällysluettelon seuraavilla sivuilla sen sijaan +noudatetaan aiemmin \komento{pagestyle}\-/ komennolla asetettua +sivutyyliä. + +\begin{esimerkki*} + \komentoi{pagestyle} + \komentoi{renewcommand} + \komentoi{thispagestyle} + \komentoi{tableofcontents} + +\begin{koodilohko} +\pagestyle{empty} +{ + \renewcommand{\thispagestyle}[1]{} % tyhjä määritelmä + \tableofcontents +} +\end{koodilohko} + \caption{Sisällysluettelon sivutyylin muuttaminen kokonaan + \koodi{empty}\-/ tyyliseksi. Komento \komento{thispagestyle} pitää + määritellä väliaikaisesti uudestaan dokumenttiluokissa \luokka{report} + ja \luokka{book}} + \label{esim/sisällysluettelo-empty} +\end{esimerkki*} + +Jotta edellä mainitusta kummallisuudesta pääsisi eroon, täytyy +määritellä väliaikaisesti \komento{thispagestyle}\-/ komento +toisenlaiseksi. Väliaikainen komennon määrittely saadaan aikaan +aaltosulkeilla (luku \ref{luku/aaltosulkeet}), joiden sisään komennon +uudelleen määrittely ja sisällysluettelon latomiskomento sijoitetaan. +Esimerkistä \ref{esim/sisällysluettelo-empty} selviää, miten se tehdään. +Tässä esimerkissä komennon määritelmä jätettiin tyhjäksi, koska sen ei +haluta tekevän mitään. Näin ollen aiemmin annettu \komento{pagestyle}\-/ +komento vaikuttaa koko sisällysluetteloon. + +Normaalit otsikot tulevat mukaan sisällysluetteloon itsestään, mutta +joskus voi joutua lisäämään luetteloon kohtia myös keinotekoisesti. Se +tehdään komennolla \komentom{addcontentsline}, jonka käytöstä on +esimerkki luvussa \ref{luku/otsikot}. Pelkkään pdf\-/ tiedoston +sisäiseen sisällysluetteloon voi lisätä kohtia komennolla +\komentom{pdfbookmark}, joka kuuluu \paketti{hyperref}\-/ pakettiin. +Tätä komentoa käsitellään luvussa \ref{luku/pdf-asetukset}. + +\begin{esimerkki*} + \komentoi{addvspace} + \komentoi{bfseries} + \komentoi{contentslabel} + \komentoi{contentspage} + \komentoi{hspace} + \komentoi{large} + \komentoi{normalsize} + \komentoi{rmfamily} + \komentoi{small} + \komentoi{titlecontents} + \komentoi{titlerule*} + \komentoi{titlerule} + +\begin{koodilohko} +\titlecontents{chapter} % otsikon taso: chapter +[8mm] % vasen sisennys (mitta) +{\addvspace{1.5ex}\rmfamily\bfseries\large} % yläpuolinen koodi +{\contentslabel{8mm}} % numeroitu kohta +{\hspace{-8mm}} % numeroimaton kohta +{\small\titlerule[0bp]\contentspage} % pisteviiva (pois) ja sivunumero +[\addvspace{.5ex}] % alapuolinen koodi + +\titlecontents{section} % otsikon taso: section +[8mm] % vasen sisennys (mitta) +{\addvspace{.5ex}\rmfamily\normalsize} % yläpuolinen koodi +{\contentslabel{8mm}} % numeroitu kohta +{} % numeroimaton kohta +{~\small\titlerule*[3mm]{.}\contentspage} % pisteviiva ja sivunumero +[\addvspace{.2ex}] % alapuolinen koodi + +\titlecontents{subsection} % otsikon taso: subsection +[18mm] % vasen sisennys (mitta) +{\rmfamily\small} % yläpuolinen koodi +{\contentslabel{10mm}} % numeroitu kohta +{} % numeroimaton kohta +{~\small\titlerule*[3mm]{.}\contentspage} % pisteviiva ja sivunumero +[] % alapuolinen koodi +\end{koodilohko} + \caption{Sisällysluettelon ulkoasua muokataan \komento{titlecontents}\-/ + komennolla, joka on peräisin \paketti{titletoc}\-/ paketista} + \label{esim/titlecontents} +\end{esimerkki*} + +Sisällysluettelon ulkoasun muokkaamista varten on paketti +\pakettictan{titletoc}, jonka tärkeimmän komennon +(\komentom{titlecontents}) käyttöä esitellään esimerkissä +\ref{esim/titlecontents}. Komennolla voi muokata paitsi +sisällysluettelon kohtia mutta myös leijuvien osien (luku +\ref{luku/leijuosat}) kuten kuvien ja taulukoiden luetteloita. + +Esimerkistä selviää, miten \komento{titlecontents}\-/ komennolla +määritellään luettelokohdan vasemman sisennyksen mitta, yläpuolinen ja +alapuolinen väli (\komento{addvspace}, luku +\ref{luku/pystysuuntaiset-välit}), mahdolliset kirjainperheeseen ja +\=/leikkaukseen vaikuttavat komennot kuten \komento{rmfamily}, +\komento{bfseries} ja \komento{large} (luku \ref{luku/fontit-korkea}). + +\komento{titlecontents}\-/ komennon argumenteissa käytetään jonkin +verran muita komentoja, jotka on tarkoitettu nimenomaan tämän komennon +argumentteihin. Komento \komento{contentslabel} latoo kyseisen otsikon +numeron (1.2, 1.3 tms.) tietynlevyiseen tilaan ja sisennystason +vasemmalle puolelle (ns. riippuva sisennys). Komento +\komento{contentspage} latoo sivunumeron. Komennolla \komento{titlerule} +voi tehdä katsetta ohjaavan viivan tai pisteviivan otsikkotekstin ja +sivunumeron väliin. + +Paketin \paketti{titletoc} ohjekirjassa on paljon muitakin +toimintoja ja esimerkkejä sisällysluetteloiden ehostamiseen. Ohjeisiin +kannattaa tutustua, mikäli kaipaa erikoisempia sisällysluettelomalleja. + +\section{Luetelmat} +\label{luku/luetelmat} + +Latexissa on helppokäyttöiset ympäristöt kolmelle erilaiselle luetelman +perustyypille: numeroimaton (\ymparisto{itemize}), numeroitu +(\ymparisto{enumerate}) ja määritelmäluetelma (\ymparisto{description}). +Ne riittänevät perustarpeisiin ja ovat hieman myös muokattavissa +typografisesti. Luetelmien perusympäristöjä käsitellään luvussa +\ref{luku/luetelma-perus}. + +Perusluetelmien lisäksi on olemassa yleinen luetelmien rakenteluun +tarkoitettu ympäristö \ymparisto{list}, jolla voi toteuttaa suunnilleen +mitä tahansa luetelmiin tai tekstikappaleisiin liittyviä rakenteita. +Teknisesti \ymparisto{list}\-/ ympäristö sisältää kaikki tarvittavat +luetelmiin liittyvät ominaisuudet, joten kirjoittaja voi aivan hyvin +käyttää pelkästään sitä. Ympäristöä käsitellään luvussa +\ref{luku/list-ympäristö}. + +\subsection{Perusympäristöt} +\label{luku/luetelma-perus} + +Ympäristö \ymparistom{itemize} tekee numeroimattoman luetelman, jonka +jokainen kohta merkitään samanlaisella merkillä, esimerkiksi +luetelmaympyrällä~(\textbullet). \ymparistom{enumerate} puolestaan on +numeroitu luetelma, eli luetelman kohdat saavat järjestysnumeron tai +muun järjestystä ilmaisevan merkinnän kuten kirjaimen tai roomalaisen +numeron. Ympäristö \ymparistom{description} luo määritelmäluetelman, +jossa luetellaan käsitteitä ja niiden määritelmiä. Tämä on käytännössä +sama kuin tekstikappaleen riippuva sisennys (luku +\ref{luku/riippuva-sisennys}), jossa kappale alkaa määriteltävällä +ilmauksella. + +Luetelmien perusrakenne on samanlainen: luetelmaympäristön sisällä +käytetään \komentom{item}\-/ komentoa, joka aloittaa uuden +luetelmakohdan. Komennolle ei tarvitse antaa argumenttia: se vain +aloittaa uuden luetelmakohdan. Seuraavassa on esimerkki +\ymparisto{itemize}\-/ ympäristöstä, mutta \ymparisto{enumerate}\-/ +ympäristöäkin käytetään samalla tavalla: + +\ymparistoi{itemize} +\komentoi{item} +\begin{koodilohkosis} +\begin{itemize} +\item Luetelman ensimmäinen kohta. +\item Toinen kohta heti perään. +\item Kolmaskin kohta on tarpeen. +\end{itemize} +\end{koodilohkosis} + +\noindent +\komento{item}\-/ komennolle voi antaa hakasulkeissa valinnaisen +argumentin. Silloin ei ladota tavanomaista luetelmamerkkiä vaan +argumentin sisältämä teksti tai koodi. + +\komentoi{item} +\begin{koodilohkosis} +\item[--] Tässä kohdassa onkin ajatusviiva (--). +\end{koodilohkosis} + +\begin{esimerkki*} + \ymparistoi{description} + \komentoi{item} + +\begin{koodilohko} +\begin{description} +\item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. +\item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. +\item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimisen ohjelmointikielen. +\end{description} +\end{koodilohko} + + \begin{tulos} + \begin{description} + \item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. + \item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. + \item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimi\-sen ohjelmointikielen. + \end{description} + \end{tulos} + \caption{Käsitteiden määritelmiä ja sen kaltaisia luetelmia voi + toteuttaa \ymparisto{description}\-/ ympäristön avulla. Käsitteet + kirjoitetaan \komento{item}\-/ komennon valinnaiseen argumenttiin} + \label{esim/description} +\end{esimerkki*} + +\noindent +Komennon valinnaista argumenttia hyödynnetään varsinkin +\ymparisto{description}\-/ ympäristössä, jossa luetellaan sanoja tai +käsitteitä ja niiden määritelmiä. Esimerkistä \ref{esim/description} +selviää, kuinka määriteltävät käsitteet ilmaistaan \komento{item}\-/ +komennon valinnaisessa argumentissa. + +Edellä mainittuja luetelmaympäristöjä voi kirjoittaa sisäkkäin: yksi +luetelman kohta (\komento{item}) voi siis aloittaa uuden +luetelmaympäristön. Latex osaa käsitellä neljä sisäkkäistä luetelmaa. + +Latex sisentää sisäkkäiset luetelmat automaattisesti loogisella tavalla +ja vaihtaa eri tasoilla luetelmakohtien merkkiä tai numerointitapaa. +Esimerkiksi ulommaisin \ymparisto{itemize}\-/ ympäristö käyttää +luetelmaympyrää~(\textbullet), mutta sen sisällä oleva käyttää +ajatusviivaa~(\==). Ulommaisin \ymparisto{enumerate}\-/ ympäristö +käyttää arabialaisia numeroita (1, 2, 3 jne.) mutta sen sisällä oleva +kirjaimia (a, b, c jne.). + +\begin{esimerkki*} + \komentoi{renewcommand} + \komentoi{labelitemi} + \komentoi{labelitemii} + \komentoi{labelitemiii} + \komentoi{labelitemiv} + \komentoi{textbullet} + \komentoi{normalfont} + \komentoi{bfseries} + \komentoi{textendash} + \komentoi{textasteriskcentered} + \komentoi{textperiodcentered} + \komentoi{labelenumi} + \komentoi{labelenumii} + \komentoi{labelenumiii} + \komentoi{labelenumiv} + \komentoi{arabic} + \komentoi{alph} + \komentoi{Alph} + \komentoi{roman} + \laskurii{enumi} + \laskurii{enumii} + \laskurii{enumiii} + \laskurii{enumiv} + +\begin{koodilohko} +% itemize-ympäristön luetelmamerkki +\renewcommand{\labelitemi} {\textbullet} % ulommainen luetelma +\renewcommand{\labelitemii} {\normalfont\bfseries\textendash} +\renewcommand{\labelitemiii}{\textasteriskcentered} +\renewcommand{\labelitemiv} {\textperiodcentered} + +% enumerate-ympäristön numerointitapa +\renewcommand{\labelenumi} {\arabic{enumi}.} % ulommainen luetelma +\renewcommand{\labelenumii} {(\alph{enumii})} +\renewcommand{\labelenumiii}{\roman{enumiii}.} +\renewcommand{\labelenumiv} {\Alph{enumiv}.} +\end{koodilohko} + \caption{Luetelmamerkkien ja numerointitapojen muuttaminen + \ymparisto{itemize}\-/\ ja \ymparisto{enumerate}\-/ ympäristöissä. + Esimerkissä näkyvät oletusarvot} + \label{esim/labelitem-labelenum} +\end{esimerkki*} + +Luetelmamerkit ja luetelmien numerointitavat ovat kirjoittajan +muutettavissa. Ympäristössä \ymparisto{itemize} luetelmamerkit tulevat +komennosta, joka alkaa sanoilla \komentox{label\-item} ja jatkuu +luetelman tasoa ilmaisevalla roomalaisella numerolla +\koodi{i}\==\koodi{iv}. Komennot voi määritellä uudelleen haluamallaan +tavalla, kuten esimerkki \ref{esim/labelitem-labelenum} osoittaa. + +\ymparisto{enumerate}\-/ ympäristössä numeroidut kohdat tulevat +komennosta, joka alkaa sanoilla \komentox{label\-enum} ja jatkuu +luetelman tasoa ilmaisevalla roomalaisella numerolla +\koodi{i}\==\koodi{iv}. Numeroidussa luetelmassa käytetään laskureita +\laskuri{enumi}, \laskuri{enumii}, \laskuri{enumiii} ja +\laskuri{enumiv}, joten luetelmakohtien täytyy latoa näiden laskurien +arvo jossakin muodossa. Esimerkki \ref{esim/labelitem-labelenum} +selventää asiaa. + +Numeroiduista luetelmakohdista huolehtivat laskurit nollataan +automaattisesti aina ympäristön alussa. Joskus voi kuitenkin olla +tarpeen aloittaa luetelmakohdat jostain muusta kuin luvusta~1, +kirjaimesta~\textit{a} tms. Silloin kirjoittajan täytyy asettaa laskuri +haluamaansa arvoon \ymparisto{enumerate}\-/ ympäristön sisällä. Seuraava +esimerkki asettaa uloimman luetelman \laskuri{enumi}\-/ laskurin +arvoon~3, joten ensimmäiseksi luetelmakohdaksi tulee~4. + +\ymparistoi{enumerate} +\komentoi{setcounter} +\komentoi{item} +\laskurii{enumi} +\begin{koodilohkosis} +\begin{enumerate} + \setcounter{enumi}{3} +\item Tämä on luetelmakohta numero 4. +\end{enumerate} +\end{koodilohkosis} + +\noindent +Kirjoittaja voi vaikuttaa myös luetelmakohtien sisennykseen ja +pystysuuntaisiin väleihin. Sisennykseen vaikuttavat mitat alkavat +sanoilla \mittax{leftmargin} ja jatkuvat roomalaisella numerolla +\koodi{i}\==\koodi{iv}, joka ilmaisee luetelman tasoa. Ulommaisen +luetelman sisennys ilmaistaan suhteessa sivun tekstialueen reunaan; +sisempien luetelmien sisennys ilmaistaan suhteessa edellisen tason +sisennykseen. Oletuksena Latexin sisennykset ovat melko suuria, joten +niitä on usein tarpeen pienentää, esimerkiksi seuraavan esimerkin +mukaisesti: + +\komentoi{setlength} +\mittai{leftmargini} +\mittai{leftmarginii} +\mittai{leftmarginiii} +\mittai{leftmarginiv} +\begin{koodilohkosis} +\setlength{\leftmargini} {1.5em} % ulommainen luetelma +\setlength{\leftmarginii} {1.5em} +\setlength{\leftmarginiii}{1.5em} +\setlength{\leftmarginiv} {1.5em} +\end{koodilohkosis} + +\noindent +Edellä olevat sisennysasetukset toimivat ympäristöissä +\ymparisto{itemize}, \ymparisto{enumerate} ja \ymparisto{description}. +Mainituissa ympäristöissä voi säätää pystysuuntaisia välejä kolmen +seuraavassa esimerkissä mainitun mitan avulla. Mittojen sijainti +luetelmassa on nähtävissä kuvassa \ref{kuva/list-mitat} +(s.~\pageref{kuva/list-mitat}). Seuraavat komennot on syytä sijoittaa +luetelmaympäristön sisään heti \komento{begin}\-/ komennon jälkeen. + +\komentoi{setlength} +\mittai{parsep} +\mittai{itemsep} +\mittai{parskip} +\begin{koodilohkosis} +\setlength{\parsep} {0bp} % kappaleiden väli +\setlength{\itemsep}{3bp} % luetelmakohtien väli +\setlength{\parskip}{1.2ex} % väli luetelman alussa ja lopussa +\end{koodilohkosis} + +\subsection{Omat luetelmat (list)} +\label{luku/list-ympäristö} + +Ympäristö \ymparistom{list} on yleistyökalu, joka soveltuu moniin +asioihin: se on tarkoitettu erilaisten luetelmien rakentamiseen, mutta +sen avulla muotoilla mitä tahansa tekstikappaleita. Esimerkiksi luvussa +\ref{luku/luetelma-perus} käsitellyt luetelmat voi toteuttaa myös +\ymparisto{list}\-/ ympäristön avulla -- samoin luvuissa +\ref{luku/riippuva-sisennys} ja \ref{luku/lohkolainaukset} käsitellyt +riippuvat sisennykset ja lohkolainaukset. + +Tyypillisesti \ymparisto{list}\-/ ympäristöä ei käytetä dokumentin +kirjoittamisessa sellaisenaan, vaan kirjoittaja määrittelee oman +helppokäyttöisen luetelma\-/\ tai muun ympäristön, ja +\ymparisto{list}\-/ ympäristöä hyödynnetään ympäristön +määrittelemisessä. Omien ympäristöjen tekemistä käsitellään tarkemmin +luvussa \ref{luku/ympäristöt}, mutta tämänkin alaluvun loppupuolella on +esimerkki, joka liittyy nimenomaan \ymparisto{list}\-/ ympäristöön. + +Seuraavassa on esimerkki \ymparisto{list}\-/ ympäristön rakenteesta. Se +muistuttaa luvussa \ref{luku/luetelma-perus} käsiteltyjä perusluetelmia, +mutta lisäksi sille täytyy antaa kaksi argumenttia. Niiden avulla +vaikutetaan luetelman asetuksiin. + +\begin{koodilohkosis} +\begin{list}{merkki}{asetukset} +\item ... +\end{list} +\end{koodilohkosis} + +\noindent +Edellisen esimerkin argumentti \koodi{merk\-ki} sisältää tekstiä tai +koodia, jonka muodostaa luetelmakohdan merkin. Numeroimattomassa +luetelmassa siihen voi laittaa esimerkiksi luetelmaympyrän eli komennon +\komento{textbullet} tai ajatusviivan (\koodi{--}). Numeroidussa +luetelmassa siihen kirjoitetaan komento, joka latoo jonkin laskurin +arvon. + +\ymparisto{list}\-/ ympäristön toinen argumentti \koodi{ase\-tuk\-set} +sisältää mitä hyvänsä koodia, jolla vaikutetaan ympäristön asetuksiin. +Tyypillisesti siinä määritellään käytettävä luetelmalaskuri sekä +asetetaan luetelman ulkoasuun vaikuttavat mitat sopivaksi. Mahdollisesti +siinä myös määritellään luetelmamerkkien latomiseen vaikuttava komento +\komento{makelabel}. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{arabic} + \komentoi{setlength} + \komentoi{usecounter} + \mittai{leftmargin} + \mittai{itemsep} + \mittai{parsep} + \laskurii{enumi} + +\begin{koodilohko} +\begin{list}{\arabic{enumi})}{ + \usecounter{enumi} % käytetään enumi-laskuria + \setlength{\leftmargin}{1.5em} % vasen sisennys + \setlength{\itemsep}{.2ex} % luetelmakohtien väli + \setlength{\parsep}{0ex} % luetelmakappaleiden väli + } +\item Luetelman ensimmäinen kohta. +\item Tässä on vielä toinen +\item ja kolmas kohta. +\end{list} +\end{koodilohko} + \begin{tulos} + \begin{list}{\arabic{enumi})}{ + \usecounter{enumi} % käytetään enumi-laskuria + \setlength{\leftmargin}{1.5em} % vasen sisennys + \setlength{\itemsep}{.2ex} % luetelmakohtien väli + \setlength{\parsep}{0ex} % luetelmakappaleiden väli + } + \item Luetelman ensimmäinen kohta. + \item Tässä on vielä toinen + \item ja kolmas kohta. + \end{list} + \end{tulos} + \caption{\ymparisto{list}\-/ ympäristön argumenttien avulla vaikutetaan + luetelmakohtien merkintätapaan ja mittoihin} + \label{esim/list-perus} +\end{esimerkki*} + +Esimerkissä \ref{esim/list-perus} on yksinkertainen numeroitu luetelma, +joka hyödyntää olemassa olevaa \laskuri{enumi}\-/ laskuria (luku +\ref{luku/luetelma-perus}). Laskurin arvo ladotaan arabialaisilla +numeroilla (\komento{arabic}). Laskurin \laskuri{enumi} sijasta voi +käyttää mitä tahansa omaakin laskuria, kunhan luo sen etukäteen +komennolla \komento{newcounter} (luku \ref{luku/laskurit}). Esimerkissä +asetetaan myös eräitä luetelman sisäisiä mittoja, joista on lisätietoa +myöhemmin tässä alaluvussa sekä kuvassa \ref{kuva/list-mitat}. + +\begin{esimerkki*} + \ymparistoi{list} + \komentoi{renewcommand} + \komentoi{makelabel} + \komentoi{textsc} + \komentoi{setlength} + \komentoi{item} + \mittai{leftmargin} + \mittai{labelwidth} + \mittai{labelsep} + \mittai{itemindent} + \mittai{itemsep} + +\begin{koodilohko} +\begin{list}{}{ + \renewcommand{\makelabel}[1]{\textsc{#1:}} + \setlength{\leftmargin}{1.5em} + \setlength{\labelwidth}{1.5em} + \setlength{\itemindent}{1em} + \setlength{\labelsep}{1em} + \setlength{\itemsep}{.2ex} + } +\item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. +\item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. +\item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimi\-sen ohjelmointikielen. +\end{list} +\end{koodilohko} + \begin{tulos} + \begin{list}{}{ + \renewcommand{\makelabel}[1]{\textsc{#1:}} + \setlength{\leftmargin}{1.5em} + \setlength{\labelwidth}{1.5em} + \setlength{\itemindent}{1em} + \setlength{\labelsep}{1em} + \setlength{\itemsep}{.2ex} + } + \item[Tex] Tekstidokumenttien ladontaan erikoistunut ohjelmointikieli. + \item[Latex] Dokumenttien kirjoittajille tarkoitettu merkintäkieli. + \item[Lualatex] Latex-muotoisten lähdedokumenttien kääntäjäohjelma. + Sisältää Lua-nimi\-sen ohjelmointikielen. + \end{list} + \end{tulos} + \caption{Määritelmäluetelmien tekeminen \ymparisto{list}\-/ ympäristön + avulla. Sisäisesti komento \komento{makelabel} huolehtii + luetelmamerkkien eli tässä käsitteiden nimien latomisesta} + \label{esim/list-makelabel} +\end{esimerkki*} + +Luetelmamerkit \ymparisto{list}\-/ ympäristö latoo siten, että se +suorittaa aina komennon \komento{makelabel} ja antaa sille argumentiksi +kulloisenkin luetelmamerkin eli \ymparisto{list}\-/ ympäristön +ensimmäisenä argumenttina annetun tekstin tai \komento{item}\-/ komennon +valinnaisena argumenttina olevan tekstin. Luetelmamerkki ladotaan sille +varatun alueen oikeaan reunaan. Oletuksena \komento{makelabel}\-/ +komento toimii ikään kuin se olisi määritelty seuraavalla tavalla: + +\komentoi{renewcommand} +\komentoi{makelabel} +\komentoi{hfill} +\begin{koodilohkosis} +\renewcommand{\makelabel}[1]{\hfill #1} +\end{koodilohkosis} + +\noindent +Kirjoittaja voi määritellä \komento{makelabel}\-/ komennon uudelleen +sellaiseksi kuin haluaa. Se on tarpeen esimerkiksi silloin, kun täytyy +latoa kaikki luetelmamerkit eri fontilla kuin muu teksti. Varsinkin +määritelmäluetelmissa (luku \ref{luku/luetelma-perus}), joissa +luetellaan käsitteitä ja niiden määritelmiä, on usein hyödyllistä, että +käsitteet erottuvat muusta tekstistä selvästi. Esimerkki +\ref{esim/list-makelabel} selventää tätä asiaa. + +\leijukuva{ + \begin{tikzpicture} + [x=.01\textwidth, y=.01\textwidth, line width=1bp, rounded corners=2bp] + + \newcommand{\kpl}[1]{\draw (15,#1) -- ++(70,0) -- ++(0,15) + -- ++(-60,0) -- ++(0,-5) -- ++(-10,0) -- cycle} + \newcommand{\nuoli}[2]{\draw [color=mittanuoli, <->] (#1) -- (#2)} + \newcommand{\kyltti}[2]{\draw (#1) node [anchor=west] {#2}} + + \newcommand{\katko}[2]{\draw [color=apuviiva, densely dotted, line + width=.7bp] (#1) -- (#2)} + + \katko{0,10}{0,110}; + \katko{100,10}{100,110}; + + \kpl{80}; + \kpl{55}; + \kpl{25}; + + \draw (0,10) rectangle ++(100,-7); + \node at (50,6) {alapuolinen teksti}; + + \draw (0,110) rectangle ++(100,7); + \node at (50,113) {yläpuolinen teksti}; + + \nuoli{50,110}{50,95}; + \kyltti{51,102.5}{\mitta{topsep} + \mitta{parskip} (+ \mitta{partopsep})}; + + % Ylin kappale + \node at (50,87) {luetelmakohta 1}; + \draw (5,91) rectangle ++(15,4); + \katko{5,98}{5,95}; + \katko{20,98}{20,95}; + \katko{25,98}{25,95}; + \nuoli{5,98}{20,98}; \kyltti{2,102}{\mitta{labelwidth}}; + \nuoli{20,98}{25,98}; \kyltti{20,102}{\mitta{labelsep}}; + \katko{25,90}{25,87}; + \nuoli{15,87}{25,87}; \kyltti{15,84}{\mitta{itemindent}}; + + \nuoli{50,70}{50,80}; + \kyltti{51,75}{\mitta{parsep}}; + + % Keskimmäinen kappale + \node at (50,62) {toinen tekstikappale}; + \nuoli{0,57}{15,57}; + \kyltti{0,52}{\mitta{leftmargin}}; + \nuoli{85,57}{100,57}; + \kyltti{82,52}{\mitta{rightmargin}}; + \katko{15,70}{15,65}; + \nuoli{15,70}{25,70}; + \kyltti{13,74}{\mitta{listparindent}}; + + \nuoli{50,40}{50,55}; + \kyltti{51,47}{\mitta{itemsep} + \mitta{parsep}}; + + % Alin kappale + \node at (50,32) {luetelmakohta 2}; + \draw (5,36) rectangle ++(15,4); + + \nuoli{50,25}{50,10}; + \kyltti{51,17.5}{\mitta{topsep} + \mitta{parskip} (+ \mitta{partopsep})}; + \end{tikzpicture} +}{ + \caption{Luetelmien tekemiseen tarkoitetun \ymparisto{list}\-/ + ympäristön mitat} + \label{kuva/list-mitat} +} + +Luetelmiin liittyviä mittoja on useita, ja ne voi asettaa sopiviin +arvoihin \ymparisto{list}\-/ ympäristön toisen argumentin sisällä. +Mittojen sijainnit on koottu kuvaan \ref{kuva/list-mitat}, ja +seuraavassa on lisätietoa niiden merkityksestä. + +\begin{maaritelma}{\mitta{#1}} +\item [parskip] Pystysuuntainen mitta ja väli, joka ei liity pelkästään + \ymparisto{list}\-/ ympäristöön vaan on yleinen tekstikappaleiden + välinen etäisyysmitta (luku \ref{luku/pystysuuntaiset-välit}). Mitta + on vaikuttaa kuitenkin myös \ymparisto{list}\-/ ympäristöön, ja sen + voi määritellä väliaikaisesti uudelleen ympäristön yhteydessä. +\item [topsep] Pystysuuntainen väli, joka ladotaan ennen ja jälkeen + \ymparisto{list}\-/ ympäristön, yhdessä mittojen \mitta{parskip} ja + \mitta{partopsep} kanssa. +\item [partopsep] Pystysuuntainen väli, joka lisätään + \ymparisto{list}\-/ ympäristöä ennen ja sen jälkeen silloin, kun + ympäristö aloittaa uuden tekstikappaleen eli sitä ennen on tyhjä rivi. +\item [parsep] Pystysuuntainen väli, joka tulee luetelman sisällä + kaikkien luetelmakohtien väliin sekä saman luetelmakohdan eri + tekstikappaleiden väliin. +\item [itemsep] Pystysuuntainen väli, joka tulee luetelman sisällä + luetelmakohtien väliin. +\item [leftmargin] Luetelman kappaleiden vasen sisennys. +\item [rightmargin] Luetelman kappaleiden oikea sisennys. Oletusarvo on + nolla. +\item [labelwidth] Luetelmamerkin leveys. Merkki ladotaan oletuksena + tämän alueen oikeaan reunaan, mutta se riippuu \komento{makelabel}\-/ + komennon on määrittelystä. Jos luetelmamerkki on leveämpi kuin + \mitta{labelwidth}\-/ mitta, luetelman teksti siirtyy oikealle siten, + että merkki mahtuu kokonaan. Luetelmamerkin alueen vasen reuna + sijaitsee kohdassa, jonka voi laskea seuraavasta kaavasta: + \mitta{leftmargin} − \mitta{labelwidth} + \mitta{itemindent} − + \mitta{labelsep}. Mikäli haluaa, että luetelmamerkin vasen reuna on + sisennyksen nollakohdassa, täytyy edellä mainitut mitat asettaa siten, + että mittojen yhteistulos on nolla. Esimerkissä + \ref{esim/list-makelabel} on tehty juuri näin. +\item [labelsep] Vaakasuuntainen väli luetelmamerkin jälkeen, ennen + luetelman sisältötekstiä. Oletusarvo on 0,5\,em. +\item [itemindent] Ylimääräinen luetelmakohtien ensimmäisen rivin + sisennys. Tätä voi tarvita, kun haluaa säätää luetelmamerkin vasemman + reunan tiettyyn kohtaa. Katso mitta \mitta{labelwidth} edellä. + Oletusarvo on nolla. +\item [listparindent] Luetelmakohtien toisen ja sitä seuraavien + tekstikappaleiden ensimmäisen rivin sisennys. Oletusarvo on nolla. +\end{maaritelma} + +\noindent +Kun on lopulta saanut \ymparisto{list}\-/ ympäristön asetukset +kohdalleen ja luetelmat ovat sellaisia kuin pitääkin, on varmaankin hyvä +aika luoda oma ympäristö, joka piilottaa asetukset yhden +ympäristömäärittelyn sisään. Omaa ympäristöä on sitten helppoa käyttää +useitakin kertoja omassa lähdedokumentissa. + +\begin{esimerkki*} + \komentoi{newenvironment} + \komentoi{setlength} + \komentoi{textbullet} + \mittai{itemsep} + \mittai{labelsep} + \mittai{leftmargin} + \mittai{parsep} + \ymparistoi{list} + +\begin{koodilohko} +\newenvironment{numeroimaton}[1][\textbullet]{% + \begin{list}{#1}{ + \setlength{\leftmargin}{1.1em} + \setlength{\labelsep}{.2em} + \setlength{\itemsep}{.4ex plus .1ex} + \setlength{\parsep}{.2ex} + } + }{\end{list}} +\end{koodilohko} + \caption{Oman numeroimattoman luetelman tekeminen \ymparisto{list}\-/ + ympäristön avulla} + \label{esim/list-oma-numeroimaton} +\end{esimerkki*} + +\begin{esimerkki*} + \komentoi{arabic} + \komentoi{bfseries} + \komentoi{hfill} + \komentoi{large} + \komentoi{makelabel} + \komentoi{newenvironment} + \komentoi{renewcommand} + \komentoi{setcounter} + \komentoi{setlength} + \komentoi{usecounter} + \laskurii{enumi} + \mittai{itemsep} + \mittai{labelsep} + \mittai{leftmargin} + \mittai{parsep} + \ymparistoi{list} + +\begin{koodilohko} +\newenvironment{numeroitu}[1][0]{% + \begin{list}{\arabic{enumi}.}{ + \usecounter{enumi} + \setcounter{enumi}{#1} + \renewcommand{\makelabel}[1]{\hfill\bfseries\large ##1} + \setlength{\leftmargin}{2em} + \setlength{\labelsep}{.5em} + \setlength{\itemsep}{.4ex plus .1ex} + \setlength{\parsep}{.2ex} + } + }{\end{list}} +\end{koodilohko} + \caption{Oman numeroidun luetelman tekeminen \ymparisto{list}\-/ + ympäristön avulla} + \label{esim/list-oma-numeroitu} +\end{esimerkki*} + +Esimerkissä \ref{esim/list-oma-numeroimaton} on vinkkejä oman +numeroimattoman luetelman tekemiseen. Luetelma on nimeltään +\ymparistox{numeroimaton}, ja sille voi antaa hakasulkeissa valinnaisen +argumentin, jolla valitaan luetelmamerkki. Oletuksena se on +luetelmaympyrä (\komento{textbullet}). + +Esimerkki \ref{esim/list-oma-numeroitu} tekee numeroidun ympäristön +nimeltä \ymparistox{numeroitu}. Tälle ympäristölle voi antaa valinnaisen +argumentin, jolla ilmaistaan numerointilaskurin alkukohta. Oletuksena se +on nolla, eli luetelmakohtien numerointi alkaa luvusta~1. Tämä ympäristö +määrittelee myös \komento{makelabel}\-/ komennon siten, että +luetelmanumerot ladotaan lihavoituna (\komento{bfseries}) ja suuremmalla +fontilla (\komento{large}). Numerot myös tasataan luetelmamerkille +varatun tilan oikeaan reunaan (\komento{hfill}). Huomaa, että parametri +\koodi{\#1} kuuluu \ymparistox{numeroitu}\-/ ympäristön määritelmään ja +parametri \koodi{\#\#1} kuuluu sisempään, \komento{renewcommand}\-/ +komennolla tehtävään määritelmään. Katso lisätietoa komentojen +määrittelyä käsittelevästä luvusta \ref{luku/komennot-määrittely}. + +\section{Taulukot} +\label{luku/taulukot} + +Taulukoiden tekemiseen on perus Latexissa kaksi ympäristöä +\ymparisto{tabular} ja \ymparisto{tabular*}, joskin jälkimmäisen tilalle +sopii yleensä paremmin \paketti{tabularx}\-/ paketin ympäristö +\ymparisto{tabularx}. Ennen varsinaista taulukoiden tekniikkaa +käsitellään kuitenkin niiden sijoittamista ja typografiaa. + +Taulukon voi sijoittaa dokumenttiin eri tavoin. Yksi mahdollisuus on +sijoittaa taulukot normaalin tekstivirran mukaan omiksi +tekstikappaleikseen. Pieni pystysuuntainen väli on silloin tarpeen ennen +ja jälkeen taulukon. Jos tekstikappaleiden välissä ei ole normaalisti +ole väliä (\mitta{parskip}\-/ mitta), täytyy sellainen lisätä käsin. +Pystysuuntaisia välejä käsitellään luvussa +\ref{luku/pystysuuntaiset-välit}. Taulukolle tulee oletuksena sama +sisennys kuin tekstikappaleiden ensimmäisellä rivillä on eli mitta +\mitta{parindent} (luku \ref{luku/ensimmäisen-rivin-sisennys}). Jos +sisennyksen haluaa pois, täytyy käyttää komentoa \komento{noindent}. + +Toinen tyypillinen vaihtoehto on sijoittaa taulukko vaakasuunnassa sivun +keskelle, jolloin se erottuu muusta tekstistä vielä selvemmin. Tämän voi +toteuttaa kirjoittamalla taulukkoympäristö \ymparisto{center}\-/ +ympäristön sisään (\ref{luku/kappaleen-tasaus}). + +Kolmas vaihtoehto on tehdä taulukosta leijuva eli antaa Latexin +sijoittaa se sopivaan paikkaan. Samalla taulukolle annetaan kuvateksti +ja yksilöllinen tunniste, niin että siihen voi viitata tekstistä. +Leijuvia osia ja ristiviitteitä käsitellään luvuissa +\ref{luku/leijuosat} ja \ref{luku/ristiviitteet}. + +Taulukkojen ulkoasua ja helppolukuisuutta käsittelevät ohjeet yleensä +neuvovat, että pystyviivoja ei pitäisi juuri käyttää. Ne häiritsevät +vasemmalta oikealle lukemista ja vaikeuttavat katseen tarkentamista +solujen sisältöön. Tavallinen sarakkeiden välinen tyhjä tila on yleensä +riittävä erottamaan solut toisistaan. + +Se on hyvä yleisohje, mutta sitä tuskin kannattaa pitää ihan ehdottomana +sääntönä. Joskus on tarpeen jakaa sarakkeet mielekkäisiin ryhmiin ja +nimenomaan ohjata katsetta pystysuunnassa tiettyjä sarakkeita pitkin. +Katseen ei välttämättä haluta lipsuvan tietyn kohdan yli, ja pystyviiva +sopii hyvin siihen tarkoitukseen. Tämän luvun esimerkeissä käytetään +paljon vaaka- ja pystyviivoja, jotta lukija hahmottaa helposti, miten +esimerkkikoodin solut ovat yhteydessä ladottuun taulukkoon. Käytännössä +viivoja ei kannata käyttää niin paljon, vaan pari vaakaviivaa yleensä +riittää. + +\subsection{Perustoiminnot} + +Taulukoiden perusympäristö on \ymparisto{tabular}, jonka rakenne on +seuraava: + +\komentoi{\keno} +\ymparistoi{tabular} +\begin{koodilohkosis} +\begin{tabular}[sijainti]{sarakkeet} + solu 1 & solu 2 \\ + solu 3 & solu 4 \\ +\end{tabular} +\end{koodilohkosis} + +\noindent +Ympäristön valinnainen argumentti \koodi{sijainti} määrittelee +taulukkoympäristön sijainnin pystysuunnassa, jos se on samassa +kappaleessa muun tekstin kanssa. Oletusarvo on \koodi{c} +(\englanti{center}), joka tarkoittaa, että pystysuunnassa taulukon +peruslinja on sen keskellä. Muut vaihtoehdot ovat \koodi{t} +(\englanti{top}), eli taulukon peruslinja on yläreunassa, ja \koodi{b} +(\englanti{bottom}), eli taulukon peruslinja on sen alareunassa. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Tyyppi} & \ots{Merkitys} \\ + \midrule + \rivi{l}{vasemmalle tasattu sarake (\englanti{left})} + \rivi{c}{keskitetty sarake (\englanti{center})} + \rivi{r}{oikealle tasattu sarake (\englanti{right})} + \rivi{p\{m\}}{sarake, jonka leveys on mitta \koodi{m}} + \midrule + \rivi{|}{sarakkeiden välissä pystyviiva} + \rivi{@\{…\}}{sarakkeiden välissä olevaa tekstiä tai komentoja} + \rivi{*\{n\}\{s\}}{toistetaan \koodi{n} kertaa sarakkeet \koodi{s}} + \bottomrule + \end{tabular} +}{ + \caption{Taulukoiden saraketyyppien ja sarakkeiden välien määrittely} + \label{tlk/taulukko-sarakemerkit} +} + +Ensimmäinen pakollinen argumentti \koodi{sarakkeet} määrittelee +taulukon sarakkeiden määrän ja tyypin. Ne ilmaistaan tietyillä +kirjaimilla tai muilla merkeillä, jotka on koottu taulukkoon +\ref{tlk/taulukko-sarakemerkit}. Taulukon neljä ensimmäistä tyyppiä +\koodi{lcrp} määrittelevät, millaisesta sarakkeesta on kyse. Syntyvässä +taulukossa tulee olemaan niin monta saraketta kuin näitä on ympäristön +\koodi{sarakkeet}\-/ argumentissa. Kolme ensin mainittua luovat +sarakkeen, jonka leveys määräytyy sarakkeen leveimmän solun perusteella. +Neljäs eli saraketyyppi \koodi{p} tarvitsee aaltosulkeissa argumentiksi +mitan (luku \ref{luku/mitat}), ja sillä ilmaistaan sarakkeen kiinteä +leveys. Tässä saraketyypissä teksti tasataan solun molemmista reunoista +eli sanavälit voivat venyä. + +Merkit \koodi{|} ja \koodi{@} voi sijoittaa edellä mainittujen +saraketyyppien väliin tai ennen ensimmäistä saraketta tai viimeisen +sarakkeen jälkeen. Ensin mainittu tekee sarakkeiden väliin pystyviivan. +Viiva yltää taulukon kaikille riveille, mutta komennolla +\komento{multicolumn} voi tehdä rivikohtaisia poikkeuksia. Tätä komentoa +käsitellään myöhemmin. Merkki \koodi{@} tarvitsee argumentin +aaltosulkeissa. Se voi olla mitä hyvänsä tekstiä tai komentoja, jotka +halutaan suorittaa joka rivillä sarakkeiden välissä. + +Sarakemerkki \koodi{*} on vain keino toistaa tiettyjä sarakemäärityksiä +useamman kerran. Se tarvitsee aaltosulkeissa kaksi argumenttia: +ensimmäinen on luku, ja toinen sisältää mitä hyvänsä edellä mainittuja +saraketyyppejä. Nämä sarakkeet toistuvat luvun ilmaiseman määrän. +Esimerkiksi \koodi{*\{3\}\{rl|\}} tarkoittaa samaa kuin +\koodi{rl|rl|rl|}. + +\begin{esimerkki*} + \komentoi{\keno} + \komentoi{arraystretch} + \komentoi{cline} + \komentoi{hline} + \komentoi{hspace} + \komentoi{renewcommand} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{tabular}{|l@{\hspace{4em}}r|c|} + \hline + Vasen & Oikea & Keskitetty \\[.5ex] + \hline + 16 & 32 & 11732 \\ + \cline{1-2} + 71 & 87235 & 2 \\ + \cline{3-3} + 1235 & 238 & 982 \\ + \hline +\end{tabular} +\end{koodilohko} + + \begin{tulos} + \versaalinum + \renewcommand{\arraystretch}{1.3} + \begin{tabular}{|l@{\hspace{4em}}r|c|} + \hline + Vasen & Oikea & Keskitetty \\[.5ex] + \hline + 16 & 32 & 11732 \\ + \cline{1-2} + 71 & 87235 & 2 \\ + \cline{3-3} + 1235 & 238 & 982 \\ + \hline + \end{tabular} + \end{tulos} + + \caption{Taulukoiden erilaisia saraketyyppejä ja viivoja} + \label{esim/taulukkomäärityksiä} +\end{esimerkki*} + +Esimerkki \ref{esim/taulukkomäärityksiä} havainnollistaa taulukon +ominaisuuksia ja eri saraketyyppejä. Sitä tuskin kannattaa pitää +typografisena esimerkkinä, mutta tarkoituksena on osoittaa eri +saraketyyppien toiminta käytännössä. Sarakkeiden välissä on yleensä +pystyviiva, mutta yhdessä välissä on \koodi{@\{\dots\}}\=/ merkeillä +määritelty komento \komento{hspace}, jolla tehdään poikkeuksellisen +leveä (4\,em) tyhjä tila sarakkeiden väliin. + +Rivillä olevat peräkkäiset solut erotetaan toisistaan \koodi{\&}\=/ +merkillä, ja taulukon rivi täytyy päättää aina \komento{\keno}\=/ +komentoon. Tälle rivinvaihtokomennolle voi antaa hakasulkeissa yhden +argumentin. Se on mitta ja tarkoittaa, kuinka paljon ylimääräistä +pystysuuntaista tyhjää tilaa halutaan rivin jälkeen, esimerkiksi +\komento{\keno}\komentoargv{.5ex}. + +Vaakasuuntainen, koko taulukon levyinen viiva tehdään komennolla +\komento{hline} ja määrämittaisia viivoja komennolla \komento{cline}. +Tälle komennolle täytyy antaa yksi argumentti, joka sisältää kaksi +yhdysmerkillä erotettua lukua. Luvuilla ilmaistaan, mistä sarakkeesta +mihin sarakkeeseen viiva yltää. + +\subsection{Asetuksia} + +Taulukon rivit saatetaan latoa oletuksena vähän liian lähelle toisiaan +-- varsinkin jos käytetään vaakaviivoja. Sen korjaamiseksi on +taulukoille olemassa oma rivivälikerroin, joka on komennossa +\komentom{arraystretch}. Kerroin on desimaaliluku, jolla normaali +rivikorkeus kerrotaan taulukoiden sisällä. Sopiva kerroin lienee yleensä +1\==1,3. Oletusarvo on~1. Kerroinkomennon voi määritellä milloin hyvänsä +uudelleen, ja se tehdään seuraavan esimerkin mukaisesti: + +\komentoi{renewcommand} +\komentoi{arraystretch} +\begin{koodilohkosis} +\renewcommand{\arraystretch}{1.3} +\end{koodilohkosis} + +\noindent +Sarakkeiden määrittelyssä voi kirjoittaa useita pystyviivoja eli +\koodi{|}\=/ merkkejä peräkkäin. Silloin pystyviivoja ladotaan +taulukkoon useita vierekkäin. Viivojen väliseen etäisyyteen voi +vaikuttaa mitan \mittam{doublerulesep} avulla. Sen oletusarvo on 2\,pt. +Kaikkien viivoja paksuus puolestaan on mitassa \mittam{arrayrulewidth}, +jonka oletusarvo on 0,4\,pt. + +Jos sarakkeiden välissä ei ole \koodi{@}\=/ merkillä tehtyjä +poikkeuksia, ladotaan joka solun vasempaan ja oikeaan reunaan väli, joka +on määritelty mitassa \mittam{tabcolsep}. Tämän mitan suuruinen väli +siis ladotaan kerran taulukon vasempaan ja oikeaan reunaan ja kaksi +kertaa jokaisen sarakkeen väliin. Oletusarvo on 6\,pt. Seuraavassa on +koonti edellä mainittujen mittojen asettamisesta ja niiden oletusarvot. + +\komentoi{setlength} +\mittai{doublerulesep} +\mittai{arrayrulewidth} +\mittai{tabcolsep} +\begin{koodilohkosis} +\setlength{\doublerulesep}{2pt} +\setlength{\arrayrulewidth}{.4pt} +\setlength{\tabcolsep}{6pt} +\end{koodilohkosis} + +\noindent +Sarakemääritelmässä voi \koodi{@}\=/ merkillä säätää sarakkeiden välit +täysin haluamansa laiseksi. Esimerkiksi merkeillä \koodi{@\{\}} +sarakeväli poistetaan kokonaan. Jos \koodi{@\{\dots\}}\=/ määrittelyyn +halutaan mukaan normaali sarakkeiden pystyviiva, täytyy käyttää komentoa +\komento{vline}, esimerkiksi seuraavasti: + +\komentoi{\keno} +\komentoi{hspace} +\komentoi{vline} +\ymparistoi{tabular} +\begin{koodilohkosis} +\begin{tabular}{|l@{\hspace{1em}\vline\hspace{1em}}l|} + ensimmäinen & toinen \\ +\end{tabular} +\end{koodilohkosis} + +\subsection{Poikkeuksellisia sarakkeita ja rivejä} + +Taulukkoympäristön argumenteissa määritellään taulukon sarakkeiden määrä +tyypit, mutta siihen on mahdollista tehdä yksittäisiä poikkeuksia +taulukon sisällä. Sarakekohtaiset poikkeukset tehdään komennolla +\komentom{multicolumn} ja rivikohtaiset poikkeukset komennolla +\komentom{multirow}, joka kuuluu pakettiin \pakettictan{multirow}. + +\begin{esimerkki*} + \komentoi{\keno} + \komentoi{multicolumn} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{tabular}{|r@{}l|} + \multicolumn{2}{l}{Tulokset} \\ + \hline + 425 & ,34 \\ + 4 & ,021 \\ + 32 & \\ + 0 & ,75 \\ + \hline +\end{tabular} +\end{koodilohko} + + \begin{tulos} + \renewcommand{\arraystretch}{1.2} + \versaalinum + \begin{tabular}{|r@{}l|} + \multicolumn{2}{l}{Tulokset} \\ + \hline + 425 & ,34 \\ + 4 & ,021 \\ + 32 & \\ + 0 & ,75 \\ + \hline + \end{tabular} + \end{tulos} + + \caption{Desimaalilukujen tasaaminen pilkun kohdalta, ja + poikkeuksellisten sarakkeiden tekeminen \komento{multicolumn}\-/ + komennolla} + \label{esim/taulukko-desimaalipilkku} +\end{esimerkki*} + +Esimerkissä \ref{esim/taulukko-desimaalipilkku} on taulukoitu lukuja, +jotka halutaan latoa samaan linjaan desimaalipilkun kohdalta. +Tasaamisessa hyödynnetään kahden sarakkeen rajakohtaa: luvun +kokonaislukuosa ja desimaaliosa tasataan tätä rajakohtaa vasten -- +toinen oikealle~(\koodi{r}), toinen vasemmalle~(\koodi{l}). Sarakeväli +on poistettu tästä kohdasta kokonaan \koodi{@\{\}}\=/ merkeillä. + +Esimerkkitaulukon otsikko ''Tulokset'' halutaan kuitenkin sijoittaa +desimaalilukujen koko leveydelle eli kahden sarakkeen päälle. Lisäksi +otsikkoriviltä halutaan poistaa pystyviivat, jotka muutoin ladotaan +taulukon reunoille. Näihin asioihin tarvitaan komentoa +\komento{multicolumn}, joka on tarkoitettu poikkeuksellisten +sarakemääritysten tekemiseen. Komentoa käytetään seuraavasti: + +\komentoi{multicolumn} +\begin{koodilohkosis} +\multicolumn{n}{sarakkeet}{teksti} +\end{koodilohkosis} + +\noindent +Komennon \komento{multicolumn} voi sijoittaa mihin hyvänsä taulukon +soluun. Komennon ensimmäinen argumentti \koodi{n} on luku ja ilmaisee, +kuinka monen sarakkeen alueeseen vaikutetaan. Toinen argumentti +\koodi{sarak\-keet} sisältää uuden sarakemäärittelyn tälle alueelle, ja +se tehdään taulukon \ref{tlk/taulukko-sarakemerkit} merkkien avulla. +Kolmas argumentti on teksti, joka ladotaan tähän uudella tavalla +määriteltyyn alueeseen. + +Edellä on käsitelty vain soluja, joissa on yksirivinen teksti, mutta +tietyissä tilanteissa yhteen soluun voidaan latoa useampia rivejä. +Saraketyyppi~\koodi{p} (taulukko \ref{tlk/taulukko-sarakemerkit}) on +leveydeltään kiinteä, ja jos solun sisältö ei mahdu kyseiseen tilaan, se +pyritään jakamaan useammalle riville. Sanoja mahdollisesti katkaistaan +tavurajojen kohdalta. Myös \komentom{newline}\-/ komennolla voi vaihtaa +riviä yksittäisen solun sisällä. Sekin toimii vain kiinteäleveyksisillä +\koodi{p}\-/ tyypin sarakkeilla. + +Seuraavassa on esimerkki, kuinka yhden solun sisältö voi jakautua +kahdelle riville. Teknisessä mielessä taulukkorivien määrä ei kuitenkaan +kasva, vaan muihin saman taulukkorivin soluihin tulee tyhjää tilaa. + +\komentoi{\keno} +\komentoi{hline} +\ymparistoi{tabular} +\begin{koodilohkosis} +\begin{tabular}{|l|p{6.5em}|l|} + \hline solu & Tämä ei mahdu yhdelle riville. & solu \\ \hline +\end{tabular} +\end{koodilohkosis} + +\begin{tulossis} + \renewcommand{\arraystretch}{1.2} + \begin{tabular}{|l|p{6.5em}|l|} + \hline solu & Tämä ei mahdu yhdelle riville. & solu \\ \hline + \end{tabular} +\end{tulossis} + +\noindent +Joskus puolestaan halutaan, että yksi solu levittäytyy useamman rivin +alueelle verrattuna taulukon muihin riveihin. Tämän toteutukseen +tarvitaan \pakettim{multirow}\-/ pakettia ja sen \komentom{multirow}\-/ +komentoa. Komennon pakolliset argumentit ovat seuraavat: + +\komentoi{multirow} +\begin{koodilohkosis} +\multirow{n}{leveys}{teksti} +\end{koodilohkosis} + +\noindent +Ensimmäinen argumentti \koodi{n} on luku, joka ilmaisee, kuinka monen +rivin alueelle solu levitetään. Toinen argumentti \koodi{leveys} on +tekstin leveyttä ilmaiseva mitta. Argumentiksi voi kirjoittaa pelkän +tähden (\koodi{*}), jolloin käytetään tekstin luonnollista leveyttä. +Kolmas argumentti on teksti, joka ladotaan tähän pystysuunnassa +laajennettuun soluun. + +Komennolla on myös valinnaisia argumentteja, jotka ilmaistaan +hakasulkeiden avulla. Tässä niistä tärkeimmät: + +\komentoi{multirow} +\begin{koodilohkosis} +\multirow[sijainti]{n}{leveys}[pysty]{teksti} +\end{koodilohkosis} + +\noindent +Edellisen esimerkin valinnainen argumentti \koodi{sijainti} on kirjain, +jolla ilmaistaan solun sisällön pystysuuntainen asemointi ylös, keskelle +tai alas: \koodi{t} (\englanti{top}), \koodi{c} (\englanti{center}, +oletus) tai \koodi{b} (\englanti{bottom}). Valinnainen argumentti +\koodi{pysty} on mitta, jolla hienosäädetään solun sisällön sijaintia +pystysuunnassa. Positiivinen mitta siirtää sisältöä ylöspäin, +negatiivinen alaspäin. + +Komennon muista mahdollisuuksista kannattaa lukea \paketti{multirow}\-/ +paketin ohjekirjasta. Esimerkki \ref{esim/taulukko-multirow} +havainnollistaa komennon peruskäyttöä. \komento{multirow}\-/ komento +kirjoitetaan siihen soluun, josta monirivinen solu alkaa. Sen +alapuolelta täytyy jättää riittävä määrä soluja tyhjäksi. + +\begin{esimerkki*} + \komentoi{\keno} + \komentoi{cline} + \komentoi{hline} + \komentoi{multirow} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{tabular}{|l|l|l|} + \hline + \multirow{2}{*}{kaksirivinen solu} & tavallisia & soluja \\ + \cline{2-3} + & kahdella & rivillä \\ + \hline +\end{tabular} +\end{koodilohko} + + \begin{tulos} + \renewcommand{\arraystretch}{1.3} + \begin{tabular}{|l|l|l|} + \hline + \multirow{2}{*}[-1bp]{kaksirivinen solu} & tavallisia & soluja \\ + \cline{2-3} + & kahdella & rivillä \\ + \hline + \end{tabular} + \end{tulos} + + \caption{\paketti{multirow}\-/ paketin \komento{multirow}\-/ + komennolla voi levittää yhden solun useamman rivin alueelle} + \label{esim/taulukko-multirow} +\end{esimerkki*} + +\subsection{Kiinteälevyiset taulukot} + +Latexin toinen taulukkoympäristö \ymparistom{tabular*} toimii muuten +samalla tavalla kuin \ymparisto{tabular}, mutta se tarvitsee yhden +argumentin lisää, taulukon leveysmitan: + +\ymparistoi{tabular*} +\begin{koodilohkosis} +\begin{tabular*}{leveys}[sijainti]{sarakkeet} + ... +\end{tabular*} +\end{koodilohkosis} + +\noindent +Valitettavasti taulukon leveysmittaa voi hyödyntää vain rajallisesti. Se +vaikuttaa taulukon leveyteen silloin, kun sarakkeiden välit on +määritelty venyviksi käyttämällä seuraavaa sarakevälin määritystä: + +\komentoi{extracolsep} +\mittai{fill} +\begin{koodilohkosis} +@{\extracolsep{\fill}} +\end{koodilohkosis} + +\noindent +Edellisestä on tärkeää huomata, että sarakkeiden leveydet eivät veny +vaan ainoastaan niiden välissä oleva tyhjä tila. Usein olisi kuitenkin +hyödyllisempää, että joidenkin sarakkeiden leveys olisi venyvä ja ne +mukautuisivat koko taulukon leveyteen. Tämä ominaisuus saadaan +\pakettictan{tabularx}\-/ paketin avulla. Se määrittelee uuden +taulukkoympäristön \ymparistom{tabularx}, joka on käytännössä parempi +versio \ymparisto{tabular*}\-/ ympäristöstä. Sen käyttö on samanlaista: + +\ymparistoi{tabularx} +\begin{koodilohkosis} +\begin{tabularx}{leveys}[sijainti]{sarakkeet} + ... +\end{tabularx} +\end{koodilohkosis} + +\noindent +Ympäristö \ymparisto{tabularx} sisältää yhden uuden +saraketyypin:~\koodi{X} (vrt. taulukko +\ref{tlk/taulukko-sarakemerkit}). Tämä saraketyyppi toimii kuten +tyyppi~\koodi{p}, mutta sille ei anneta argumentiksi mittaa, vaan sen +leveys on äärettömästi venyvä. Tämäntyyppiset sarakkeet täyttävät siis +kaiken vapaana olevan tilan, ja jos niitä on useita, ne ovat oletuksena +keskenään yhtä leveitä. Tämä ilmenee seuraavasta esimerkistä: + +\komentoi{hline} +\mittai{linewidth} +\ymparistoi{tabularx} +\begin{koodilohkosis} +\begin{tabularx}{\linewidth}{|l|X|X|} + \hline luonnollinen & venyvä & venyvä \\ \hline +\end{tabularx} +\end{koodilohkosis} + +\begin{tulossis} + \renewcommand{\arraystretch}{1.2} + \begin{tabularx}{\linewidth}{|l|X|X|} + \hline luonnollinen & venyvä & venyvä \\ \hline + \end{tabularx} +\end{tulossis} + +\noindent +Saraketyypissä \koodi{X} teksti tasataan oletuksena solujen +molemmista reunoista, mutta siihen on mahdollista vaikuttaa +sijoittamalla sarakemäärittelyssä \koodi{>}\=/ merkki ja sen +aaltosulkeissa olevat argumentit ennen \koodi{X}\=/ merkkiä. +Argumentiksi kirjoitetaan sopivia asetuskomentoja. Seuraava +sarakemäärittely tekee vasemmalle tasatun \koodi{X}\=/ sarakkeen: + +\komentoi{raggedright} +\komentoi{arraybackslash} +\begin{koodilohkosis} +>{\raggedright\arraybackslash}X +\end{koodilohkosis} + +\noindent +Sarakkeen solujen tasaaminen vasemmalle tulee komennon +\komento{raggedright} vaikutuksesta (luku \ref{luku/kappaleen-tasaus}). +Sen perään tarvitaan myös komento \komento{arraybackslash}, koska +\komento{raggedright} määrittelee \komento{\keno}\=/ rivinvaihtokomennon +uudelleen tavalla, joka on ristiriidassa taulukon rivien lopussa +tarvittavan vastaavan komennon kanssa. \komento{arraybackslash} +palauttaa määritelmän sellaiseksi, että se toimii taulukossa. + +\paketti{tabularx}\-/ paketin myötä voi määritellä omiakin +saraketyyppejä. Hyödyllisiä tyyppejä voisivat olla esimerkiksi +\koodi{LCR}, jotka toimisivat lähes samoin kuin perus Latexin +saraketyypit \koodi{lcr} (taulukko \ref{tlk/taulukko-sarakemerkit}) +mutta olisivat kuitenkin leveydeltään venyviä. Omia saraketyyppejä +tehdään komennolla \komentom{newcolumntype}, ja edellä mainitut tyypit +voisi määritellä seuraavasti: + +\komentoi{arraybackslash} +\komentoi{centering} +\komentoi{newcolumntype} +\komentoi{raggedleft} +\komentoi{raggedright} +\begin{koodilohkosis} +\newcolumntype{L}{>{\raggedright\arraybackslash}X} +\newcolumntype{C}{>{\centering\arraybackslash}X} +\newcolumntype{R}{>{\raggedleft\arraybackslash}X} +\end{koodilohkosis} + +\noindent +Mitä hyvänsä saraketyyppejä voi tehdä vastaavalla tavalla. Esimerkiksi +taulukon ensimmäiseen, otsikoita ilmaisevaan saraketyyppiin \koodi{O} +voitaisiin laittaa fonttikomento, jotta koko sarake ladotaan +automaattisesti eri kirjainleikkauksella kuin muu taulukko. + +\komentoi{newcolumntype} +\komentoi{bfseries} +\begin{koodilohkosis} +\newcolumntype{O}{>{\bfseries}l} % lihavoitu otsikkosarake +\end{koodilohkosis} + +\noindent +Ympäristön \ymparisto{tabularx} käyttöön liittyy tiettyjä rajoituksia: +sitä ei voi käyttää normaalisti omien ympäristöjen määrittelyssä (luku +\ref{luku/ympäristöt}). Esimerkiksi seuraava ympäristön määrittely ei +käytännössä toimi: + +\komentoi{newenvironment} +\ymparistoi{tabularx} +\mittai{linewidth} +\begin{koodilohkosis} +\newenvironment{omataulukko}[1] +{\begin{tabularx}{\linewidth}{#1}} +{\end{tabularx}} +\end{koodilohkosis} + +\noindent +Edellä mainitun puutteen saa korjattua käyttämällä oman ympäristön +määrittelyssä \ymparisto{tabularx}\-/ ympäristön aloitukseen komentoa +\komentom{tabularx} ja lopetukseen komentoa \komentom{endtabularx}. Ei +siis käytetä normaaleja aloitus\-/\ ja lopetuskomentoja \komento{begin} +ja \komento{end}. + +\komentoi{newenvironment} +\komentoi{tabularx} +\komentoi{endtabularx} +\mittai{linewidth} +\begin{koodilohkosis} +\newenvironment{omataulukko}[1] +{\tabularx{\linewidth}{#1}} +{\endtabularx} +\end{koodilohkosis} + +\subsection{Muita paketteja} + +\paketti{tabularx}\-/ paketin kanssa samankaltainen on paketti +\pakettictan{tabulary}, jossa on joitakin erilaisia ominaisuuksia. Se +muun muassa sisältää valmiiksi uudet saraketyypit \koodi{LCRJ}. + +Edellä esitellyt taulukkoympäristöt ladotaan aina kokonaisena eli vain +yhden sivun alueelle. Useammalle sivulle jakautuvia taulukoita voi tehdä +\pakettictan{longtable}\-/ paketin taulukkoympäristön +\ymparistom{longtable} avulla. Sitä voi käyttää kuten +\ymparisto{tabular}\-/ ympäristöä, mutta lisäksi se sisältää komentoja, +joiden avulla saa joka sivulla toistumaan automaattisesti tietyt +otsikkorivit tai yhteenvetorivit. Toinen mahdollisuus yli sivurajan +yltävien taulukon kaltaisten rakenteiden tekemiseen ovat sarkaimet, +joita käsitellään luvussa \ref{luku/sarkaimet}. + +Hyödyllinen taulukoiden apupaketti on \pakettictan{booktabs}, jonka +avulla saa tyylikkäämpiä ja erilaisia vaakaviivoja. Paketin komennot +\komento{toprule}, \komento{midrule}, \komento{bottomrule} ja +\komento{cmidrule} piirtävät rivien väliin erilaisia viivoja ja +huolehtivat myös niiden ylä- ja alapuolisesta välistä paremmin kuin +Latexin omat viivakomennot. + +Taulukon rivien taustan voi värittää \pakettictan{xcolor}\-/ paketin +(luku \ref{luku/korostus-värit}) komentojen avulla. Varsinkin leveiden +taulukoiden lukemista voi helpottaa, jos rivien eri taustavärit +vuorottelevat. Tarkemmat tiedot selviävät paketin ohjekirjasta, mutta +seuraavan esimerkin avulla ominaisuutta pääsee kokeilemaan: + +\komentoi{rowcolors} +\komentoi{usepackage} +\pakettii{xcolor} +\begin{koodilohkosis} +\usepackage[table]{xcolor} % lähdedokumentin esittelyosaan +\rowcolors{1}{blue!10}{red!10} % ennen taulukkoympäristöjä +\end{koodilohkosis} + +\section{Sarkaimet} +\label{luku/sarkaimet} + +Sarkaimet ovat ennalta määritettyjä vaakasuuntaisia sisennys\-/\ tai +tasauskohtia. Niitä voi hyödyntää tekstin tasaamisessa tiettyihin +kohtiin rivillä. Suomenkielisissä asiakirjoissa sarkainkohdat ovat 23 +millimetrin välein, mutta jos ei ole kirjoittamassa virallista +asiakirjaa, voi kirjoittaja määrittää sarkainkohdat niin kuin haluaa. + +Ajatus sarkaimista on vanha, sillä mekaanisissa kirjoituskoneissakin oli +sarkainnäppäin (\englanti{tab, tabular}), joka siirsi telaa eteenpäin +seuraavaan sarkainkohtaan. Se helpotti tekstirivien tasaamista tiettyyn +kohtaan ja sen myötä taulukoiden kirjoittamista. + +Latexissa on taulukoita varten omatkin ympäristönsä (luku +\ref{luku/taulukot}), mutta jos ei tarvitse varsinaista taulukkoa vaan +ainoastaan yksittäisiä tasauskohtia, voi olla kätevämpää käyttää +\ymparisto{tabbing}\-/ sarkainympäristöä tai rakentaa sisennykset +näkymättömien laatikoiden avulla. Näitä käsitellään seuraavissa +alaluvuissa. + +\subsection{Sarkainympäristö} + +Sarkaimet voi toteuttaa niitä varten tehdyn ympäristön eli +\ymparisto{tabbing}\-/ ympäristön avulla. Esimerkki +\ref{esim/tabbing-perus} havainnollistaa ympäristön peruskäyttöä. +Rivillä~2 asetetaan kaikki sarkainkohdat eli tehdään vaakasuuntaisia +välejä \komento{hspace}\-/ komennolla ja merkitään sarkainkohdat +\komento{=}\=/ komennoilla. Tämän rivin lopussa on komento +\komento{kill}, joka hylkää rivin eli jättää sen latomatta. Seuraavien +rivien lopussa on aina \komento{\keno}\-/ komento -- paitsi viimeisellä +rivillä ennen ympäristön lopetuskomentoa. Rivin sisällä seuraavaan +sarkainkohtaan hypätään \komento{>}\-/ komennolla. + +\begin{esimerkki*} + \ymparistoi{tabbing} + \komentoi{hspace} + \komentoi{kill} + \komentoi{=} + \komentoi{>} + +\begin{koodilohko} +\begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + Tässä \> on \\ + \> eri \> tavoin \\ + \>\> sisennettyä \\ + \>\>\> tekstiä. +\end{tabbing} +\end{koodilohko} + + \begin{tulos} + \begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + Tässä \> on \\ + \> eri \> tavoin \\ + \>\> sisennettyä \\ + \>\>\> tekstiä. + \end{tabbing} + \end{tulos} + \caption{Sarkainkohtien määrittely ja käyttö \ymparisto{tabbing}\-/ + ympäristössä} + \label{esim/tabbing-perus} +\end{esimerkki*} + +\ymparisto{tabbing}\-/ ympäristön sisällä on käytettävissä muutama +muukin erikoiskomento, joilla vaikutetaan sarkainten käsittelyyn. +Seuraavassa kerrotaan ympäristön kaikkien erityiskomentojen merkitys, ja +esimerkissä \ref{esim/tabbing-erikois} havainnollistetaan joidenkin +komentojen käyttöä. + +\begin{maaritelma}{\komento{#1}} +\item [\keno] Rivinvaihto, joka täytyy kirjoittaa jokaisen rivin + loppuun, lukuun ottamatta viimeistä riviä ennen ympäristön + lopetuskomentoa (\komento{end}). +\item [kill] Rivinvaihto, joka hylkää kyseisen rivin. Tämä on + käyttökelpoinen sarkainkohtien määrittelyrivillä, jota itsessään ei + ehkä haluta latoa näkyviin. +\item [=] Sarkainkohdan määrittäminen komennon kohdalle. +\item [>] Hyppää seuraavaan sarkainkohtaan nykyisellä rivillä. +\item [+] Siirtää seuraavan rivin aloituskohtaa yhden sarkaimen verran + oikealle siitä, missä se oli ennestään. +\item [-] Siirtää seuraavan rivin aloituskohtaa yhden sarkaimen verran + vasemmalle siitä, missä se oli ennestään. +\item [<] Siirtää nykyisen rivin aloituskohdan yhden sarkaimen verran + vasemmalla. Tätä komentoa voi käyttää vain rivin alussa ja vain + silloin, kun rivin aloituskohtaa on sisennetty aiemmin \komento{+}\-/ + komennolla. Tämä komento ei muuta pysyvästi rivin aloituskohdan + asetusta, joka on tehty komennolla \komento{+} tai \komento{-}. +\item ['] Latoo komentoa edeltävän tekstin nykyisen sarkainkohdan + vasemmalle puolelle ja tasaa tekstin oikeasta reunasta. Tekstin oikean + reunan ja sarkainkohdan väliin tulee mitan \mitta{tabbingsep} + suuruinen väli. +\item [`] Tasaa komennon jälkeisen tekstin sivun oikeaan reunaan. +\item [pushtabs] Tallentaa nykyiset sarkainkohdat muistiin. Tämän + jälkeen sarkainasetuksia voi muuttaa ja alkuperäiset asetukset + palauttaa \komento{poptabs}\-/ komennolla. +\item [poptabs] Palauttaa aiemmin \komento{pushtabs}\-/ komennolla + tallennetut sarkainkohdat käyttöön. +\item [a'] Latoo akuuttiaksentin (\'a) seuraavaan kirjaimeen. Vastaa + \komento{'}\-/ komentoa \ymparisto{tabbing}\-/ ympäristön ulkopuolella + (taulukko \ref{tlk/tarkkeet}, s.~\pageref{tlk/tarkkeet}). +\item [a`] Latoo gravisaksentin (\`a) seuraavaan kirjaimeen. Vastaa + \komento{`}\-/ komentoa \ymparisto{tabbing}\-/ ympäristön + ulkopuolella. +\item [a=] Latoo pituusmerkin (\=a) seuraavaan kirjaimeen. Vastaa + \komento{=}\-/ komentoa \ymparisto{tabbing}\-/ ympäristön + ulkopuolella. +\end{maaritelma} + +\begin{esimerkki*} + \komentoi{'} + \komentoi{+} + \komentoi{-} + \komentoi{<} + \komentoi{=} + \komentoi{>} + \komentoi{`} + \komentoi{a'} + \komentoi{a`} + \komentoi{a=} + \komentoi{hspace} + \komentoi{kill} + \komentoi{setlength} + \mittai{tabbingsep} + \ymparistoi{tabbing} + +\begin{koodilohko} +\setlength{\tabbingsep}{0mm} +\begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + tässäpä \> kaikki \> eri \> sarkainkohdat \+ \\ + valmiiksi sisennetty \+ \\ + vielä enemmän sisennetty \- \\ + vähemmän sisennetty \>\> oikealle\' \\ + \< poikkeuksellisesti sisennetty vähemmän \` täysin oikealla \\ + paluu aiempaan sisennystasoon ja tarkkeita: \a'{a}\a`{a}\a={a} +\end{tabbing} +\end{koodilohko} + + \begin{tulos} + \setlength{\tabbingsep}{0mm} + \begin{tabbing} + \hspace{23mm} \= \hspace{23mm} \= \hspace{23mm} \= \kill + tässäpä \> kaikki \> eri \> sarkainkohdat \+ \\ + valmiiksi sisennetty \+ \\ + vielä enemmän sisennetty \- \\ + vähemmän sisennetty \>\> oikealle\' \\ + \< poikkeuksellisesti sisennetty vähemmän \` täysin oikealla \\ + paluu aiempaan sisennystasoon ja tarkkeita: \a'{a}\a`{a}\a={a} + \end{tabbing} + \end{tulos} + + \caption{Erikoisempia sarkaintoimintoja \ymparisto{tabbing}\-/ + ympäristössä} + \label{esim/tabbing-erikois} +\end{esimerkki*} + +\subsection{Laatikkototeutus} + +Sarkainkohtia sisältävän rivin voi varsin helposti toteuttaa laatikoiden +(luku \ref{luku/laatikot}) avulla. Varsinkin \komento{makebox}\-/ +komento soveltuu hyvin, koska laatikolla ei ole reunaviivoja ja laatikon +leveyden ja sisällön tasauksen voi asettaa. Seuraavassa esimerkissä +määritetään sarkainten leveysmitta \mittax{sarkainleveys} ja komento +\komentox{sarkain}, jolla tekstiä voi kirjoittaa tietyn levyiseen +laatikkoon. + +\komentoi{newlength} +\komentoi{setlength} +\komentoi{newcommand} +\komentoi{makebox} +\komentoi{ignorespaces} +\begin{koodilohkosis} + \newlength{\sarkainleveys} + \setlength{\sarkainleveys}{23mm} + \newcommand{\sarkain}[3][l]{% + \makebox[#2\sarkainleveys][#1]{#3}\ignorespaces} +\end{koodilohkosis} + +\noindent +Näin määritelty \komentox{sarkain}\-/ komento tarvitsee ainakin kaksi +argumenttia: ensimmäinen argumentti on kerroin, kuinka monen sarkaimen +levyinen laatikko tehdään; toinen argumentti on teksti, joka ladotaan +tähän laatikkoon. Ennen pakollisia argumentteja voi antaa myös +valinnaisen argumentin hakasulkeissa: se on laatikon sisällön tasaus, ja +oletus on vasempaan reunaan. Katso lisätietoa \komento{makebox}\-/ +komennon argumenteista luvusta \ref{luku/laatikot-pienet}. Esimerkki +\ref{esim/sarkain-laatikot} havainnollistaa sarkainten toteuttamista +laatikoiden avulla. + +\begin{esimerkki*} + \komentoi{newlength} + \komentoi{setlength} + \komentoi{newcommand} + \komentoi{makebox} + \komentoi{ignorespaces} + \komentoi{noindent} + +\begin{koodilohko} +\newlength{\sarkainleveys} +\setlength{\sarkainleveys}{23mm} +\newcommand{\sarkain}[3][l]{% + \makebox[#2\sarkainleveys][#1]{#3}\ignorespaces} + +\noindent +\sarkain{1}{ensin} \sarkain{1}{kaikki} \sarkain{1}{eri} sarkainkohdat \\ +\sarkain{1}{} sarkaimen verran sisennetty rivi \\ +\sarkain{2}{jotain tekstiä} \sarkain[r]{1}{oikealle} \\ +\sarkain{1}{} \sarkain[c]{2}{keskitetty} +\end{koodilohko} + + \begin{tulos} + \newlength{\sarkainleveys} + \setlength{\sarkainleveys}{23mm} + \newcommand{\sarkain}[3][l]{% + \makebox[#2\sarkainleveys][#1]{#3}\ignorespaces} + + \noindent + \sarkain{1}{ensin} \sarkain{1}{kaikki} \sarkain{1}{eri} sarkainkohdat \\ + \sarkain{1}{} sarkaimen verran sisennetty rivi \\ + \sarkain{2}{jotain tekstiä} \sarkain[r]{1}{oikealle} \\ + \sarkain{1}{} \sarkain[c]{2}{keskitetty} + \end{tulos} + + \caption{Sarkainten toteutus laatikoiden avulla} + \label{esim/sarkain-laatikot} +\end{esimerkki*} + +\section{Leijuvat osat} +\label{luku/leijuosat} + +Leijuvat osat ovat sellaisia dokumentin osia -- käytännössä +ympäristöjä~--, joita ei ladota normaalin leipätekstin sekaan tiettyyn +kohtaan. Ne ''leijuvat'' irrallaan muusta tekstivirrasta, ja Latex +huolehtii niiden sijoittelusta. Leijuvilla osilla on yleensä kuvateksti, +jonka alussa on sen tyyppi ja numero, esimerkiksi ''\figurename~1'' tai +''\tablename\ 4.2''. Näiden perässä on varsinainen kuvateksti, joka +kertoo kyseisen leijuvan osan sisällöstä tai merkityksestä. +Leipätekstistä usein viitataan leijuviin osiin käyttämällä ilmauksia +kuten ''kuvassa~1''. Näissä hyödynnetään Latexin ristiviittaustoimintoja +(luku \ref{luku/ristiviitteet}). + +Perus Latex sisältää kaksi erityyppistä leijuvaa osaa, kuvat ja taulukot +(luku \ref{luku/leijuosat-latex}), mutta \pakettim{floatrow}\-/ paketin +avulla niitä voi tehdä muitakin (luku \ref{luku/leijuosat-omat}). +Esimerkiksi tässä oppaassa on käytössä myös tyyppi ''Esimerkki'', jota +käytetään leijuvien Latex\-/ koodiesimerkkien toteuttamiseen. + +Koska Latex huolehtii leijuvien osien sijoittamisesta, niiden lopullinen +järjestyskin voi hieman poiketa siitä, miten ne ovat Latex\-/ +lähdedokumentissa. Tosin samantyyppiset leijuvat osat, esimerkiksi +kuvat, ladotaan aina siinä järjestyksessä kuin ne ovat +lähdedokumentissa. Sen sijaan erityyppiset leijuvat osat saatetaan latoa +eri järjestyksessä: esimerkiksi jokin taulukko saatetaan latoa ennen +tiettyä kuvaa, vaikka ne olisivat lähdedokumentissa päinvastaisessa +järjestyksessä. Latex pyrkii latomaan hyvännäköisiä sivuja, ja leijuvien +osien sijoittelulla se voi vaikuttaa asiaan. + +\subsection{Leijuvat taulukot ja kuvat} +\label{luku/leijuosat-latex} + +Käytännössä leijuvat osat ovat ympäristöjä, joiden sijoittelusta vastaa +Latex eikä kirjoittaja. Tosin kirjoittajakin voi hieman vaikuttaa +asiaan, ja tätä käsitellään luvussa \ref{luku/leijuosat-sijoittelu}. +Ympäristö \ymparistom{table} on tarkoitettu taulukoille, ja ympäristö +\ymparistom{figure} on kuville. Esimerkistä \ref{esim/leijuosat-perus} +ilmenee leijuvan taulukon toteuttamisen perusasiat. Muuntyyppiset +leijuvat osat tehdään samalla tavalla, ympäristö on vain eri. + +\begin{esimerkki*} + \komentoi{arraystretch} + \komentoi{caption} + \komentoi{hline} + \komentoi{renewcommand} + \ymparistoi{center} + \ymparistoi{table} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{table} + \begin{center} + \renewcommand{\arraystretch}{1.3} + \begin{tabular}{ll} + Upeita & Lukuja \\ + \hline + 324 & 33 \\ + 2 & 49 \\ + \hline + \end{tabular} + \end{center} + \caption{Upea kuvateksti.} +\end{table} +\end{koodilohko} + + \caption{Leijuvan taulukon toteuttaminen \ymparisto{table}\-/ + ympäristön avulla. Varsinainen taulukko syntyy ympäristön + \ymparisto{tabular} avulla} + \label{esim/leijuosat-perus} +\end{esimerkki*} + +Latex sinänsä ei ota kantaa siihen, mitä leijuva ympäristö sisältää, eli +\ymparisto{table}\-/ ympäristön sisällä ei tarvitse olla +taulukkoympäristöä (luku \ref{luku/taulukot}), eikä +\ymparisto{figure}\-/ ympäristön sisällä ole pakko olla kuvaa (luku +\ref{luku/grafiikka}). Valitut ympäristöt vaikuttavat kuitenkin +kuvatekstiin: \ymparisto{table}\-/ ympäristön kuvatekstiin tulee suomen +kieliasetuksilla sana ''\tablename'', ja \ymparisto{figure}\-/ +ympäristössä se on ''\figurename''. Nimet tulevat komennoista +\komento{tablename} ja \komento{figurename}, jotka kirjoittaja voi +määrittää uudelleen. Se kannattaa tehdä dokumentin esittelyosassa +seuraavalla tavalla: + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{figurename} +\komentoi{tablename} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\tablename}{Taulukko} + \renewcommand{\figurename}{Kuva} +} +\end{koodilohkosis} + +\noindent +Edellä käytettiin \komento{addto}\-/ komentoa, joka kuuluu +kielipaketteihin \paketti{polyglossia} ja \paketti{babel}. Sillä +lisätään omia komentoja tietyn kielen asetuksiin, tässä suomen +kieliasetuksiin (\komento{captionsfinnish}). Kieliasetuksia käsitellään +tarkemmin luvussa \ref{luku/kieliasetukset}. + +Kuvatekstit tehdään komennolla \komentom{caption}, joka sijoitetaan +leijuvan ympäristön sisälle, kuten esimerkissä +\ref{esim/leijuosat-perus} on tehty. Komennolle annetaan yksi argumentti +eli haluttu kuvateksti. Siihen ei pidä kirjoittaa leijuvan osan tyyppiä +eikä numeroa (esim. ''\tablename~3''), sillä nämä Latex tekee +automaattisesti. \komento{caption}\-/ komennolle voi antaa myös +valinnaisen argumentin, jolla ilmaistaan kuvatekstistä lyhempi versio: + +\komentoi{caption} +\begin{koodilohkosis} +\caption[lyhyt kuvateksti]{varsinainen pitkä kuvateksti} +\end{koodilohkosis} + +\noindent +Varsinainen (pitkä) kuvateksti ladotaan aina leijuvan osan yhteyteen ja +lyhempää versiota käytetään mahdollisesti luettelossa (luku +\ref{luku/leijuosat-luettelot}) ja ristiviitteissä. Kuvatekstin eli +\komento{caption}\-/ komennon jälkeen leijuvaan ympäristöön lisätään +usein yksilöllinen tunniste ristiviittausta varten. Se tehdään +\komento{label}\-/ komennolla, jota käsitellään ristiviitteiden +yhteydessä luvussa \ref{luku/ristiviitteet}. + +Leijuvista ympäristöistä on olemassa myös tähdelliset versiot, +\ymparistom{table*} ja \ymparistom{figure*}. Ympäristöjen eri versioilla +on merkitystä vain kaksipalstaisessa tilassa (luku \ref{luku/palstat}), +jossa normaaliversio (esim. \ymparisto{table}) ladotaan yhden palstan +sisään ja tähdellinen versio (esim. \ymparisto{table*}) sijoitetaan +palstojen ulkopuolelle, koko sivun tilaan. + +\subsection{Muut leijuvat osat} +\label{luku/leijuosat-omat} + +Omia, itse nimettyjä leijuvia osia tehdään \pakettictan{floatrow}\-/ +paketin avustuksella. Se sisältää komennon on +\komentom{DeclareNewFloatType}, jonka argumentit ovat seuraavanlaiset: + +\komentoi{DeclareNewFloatType} +\begin{koodilohkosis} +\DeclareNewFloatType{tyyppi}{valitsimet} +\end{koodilohkosis} + +\noindent +Komennon ensimmäinen argumentti \koodi{tyyppi} on leijuvan osan tyyppi +ja käytännössä myös ympäristön nimi. Jos tyypiksi antaa sanan +\koodi{esimerkki}, syntyy leijuvat ympäristöt \ymparistox{esimerkki} ja +\ymparistox{esimerkki*}. Argumentin \koodi{valitsimet} avulla voi +vaikuttaa tarkemmin leijuvan osan ominaisuuksiin. Mahdolliset valitsimet +on koottu taulukkoon \ref{tlk/declarenewfloat}. Eri valitsimet erotetaan +toisistaan pilkulla, eli komentoa käytetään esimerkin +\ref{esim/declarenewfloat} tavoin. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{\englanti{#1}} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{name}{kuvateksteissä näkyvä tyyppi} + \rivi{placement}{sijoitteluasetukset} + \rivi{fileext}{väliaikaistiedoston pääte} + \rivi{within}{ylemmäntasoinen laskuri} + % \rivi{relatedcapstyle}{??} + \bottomrule + \end{tabular} +}{ + \caption{\komento{DeclareNewFloatType}\-/ komennon valitsimia, joilla + vaikutetaan leijuvan osan ominaisuuksiin. Komento kuuluu + \paketti{floatrow}\-/ pakettiin} + \label{tlk/declarenewfloat} +} + +\begin{esimerkki*} +\komentoi{DeclareNewFloatType} + +\begin{koodilohko} +\DeclareNewFloatType{esimerkki}{ + name=Esimerkki, + placement=tbp, + fileext=loesim, + within=chapter +} +\end{koodilohko} + +\caption{\komento{DeclareNewFloatType}\-/ komennon käyttö. Komento + kuuluu \paketti{floatrow}\-/ pakettiin} +\label{esim/declarenewfloat} +\end{esimerkki*} + +Valitsimen \koodi{name} arvo näkyy kuvateksteissä leijuvan osan +tyyppinä. Valitsimella \koodi{placement} tehdään sijoitteluasetuksia, +joita käsitellään luvussa \ref{luku/leijuosat-sijoittelu}. Käytännössä +ne ovat tiettyjä kirjaimia, joilla vaikutetaan leijuvan osan +sijoitteluun. Oletusarvo on \koodi{tbp}. + +Valitsin \koodi{file\-ext} on tiedoston pääte. Leijuvien osien +luetteloita tehtäessä Latex käyttää väliaikaistiedostoa, ja sen päätteen +voi valita tällä valitsimella. Luetteloissa on tapana käyttää +tiedostopäätettä, joka alkaa kirjaimilla \koodi{lo} (\englanti{list + of}). Latexin omissa leijuvissa osissa päätteet ovat \koodi{lot} +(\englanti{list of tables}) ja \koodi{lof} (\englanti{list of figures}). +Oletuksena omille leijuville osille tulee päätteeksi \koodi{lo}, jonka +perässä on osan tyyppi. + +Valitsimen \koodi{within} avulla vaikutetaan leijuvien osien numeroinnin +riippuvuuteen muista laskureista. Oletuksena leijuvan osan laskuri ei +ole riippuvainen muista laskureista eli osat numeroidaan dokumentin +alusta saakka yhdellä luvulla. Arvoksi voi antaa myös Latexin laskurin +nimen: mielekkäitä arvoja ovat esimerkiksi \laskuri{chapter} ja +\laskuri{section}. Vaikutus on se, että leijuvan osan laskuri on +riippuvainen näistä laskureista ja nollautuu aina, kun toisen laskurin +arvo kasvaa. Lisäksi kuvateksteissä näkyy kaksiosainen numerointi (4.1, +4.2, 4.3 jne.), jossa ensimmäinen luku on ylemmäntasoisen laskurin arvo +-- esimerkiksi kirjan pääluvun numero -- ja toinen on leijuvan osan +laskurin arvo. Tällaisia hierarkkisia laskureita käsitellään tarkemmin +luvussa \ref{luku/hierarkkiset-laskurit}. Leijuvan osan numeroinnin +ulkoasun muokkaamista käsitellään luvussa \ref{luku/leijuosat-ulkoasu}. + +\subsection{Leijuvien osien luettelot} +\label{luku/leijuosat-luettelot} + +Dokumentin leijuvista osista voi latoa automaattisesti luetteloita: +komennolla \komentom{listoftables} syntyy taulukkoluettelo ja komennolla +\komentom{listoffigures} kuvaluettelo. Omien leijuvien osien (luku +\ref{luku/leijuosat-omat}) luettelo tehdään \paketti{floatrow}\-/ +paketin komennolla \komento{listof}, jolle annetaan argumentiksi +leijuvan osan tyyppi sekä luettelon otsikko. + +\komentoi{listoftables} +\komentoi{listoffigures} +\komentoi{listof} +\begin{koodilohkosis} +\listoftables % taulukkoluettelo (table) +\listoffigures % kuvaluettelo (figure) +\listof{esimerkki}{Esimerkit} % luettelo esimerkki-tyyppisistä osista +\end{koodilohkosis} + +\noindent +Leijuvien osien luettelot muistuttavat sisällysluetteloita (luku +\ref{luku/sisällysluettelo}), eli niille tulee automaattisesti otsikko +kuten ''\listtablename'' tai ''\listfigurename'' ja automaattisesti +sisältö eli kaikki \komento{caption}\-/ komennolla ilmaistut (lyhyet) +kuvatekstit sekä tietysti sivunumerot. + +\begin{esimerkki*} + \komentoi{addvspace} + \komentoi{contentslabel} + \komentoi{contentspage} + \komentoi{rmfamily} + \komentoi{small} + \komentoi{titlecontents} + \komentoi{titlerule*} + +\begin{koodilohko} +\titlecontents{table} % tyyppi: table +[8mm] % vasen sisennys (mitta) +{\addvspace{3bp}\rmfamily\small} % yläpuolinen koodi +{\contentslabel{8mm}} % numeroitu kohta +{} % numeroimaton kohta +{~\small\titlerule*[3mm]{.}\contentspage} % pisteviiva ja sivunumero +[] % alapuolinen koodi +\end{koodilohko} + \caption{Leijuvien osien ulkoasua muokataan \komento{titlecontents}\-/ + komennolla, joka on peräisin \paketti{titletoc}\-/ paketista} + \label{esim/leijuosat-titlecontents} +\end{esimerkki*} + +Leijuvien osien luettelojen ulkoasua voi muokata samalla tavalla kuin +sisällysluetteloidenkin: käytetään pakettia \pakettictan{titletoc} ja +määritellään sen \komento{titlecontents}\-/ komennolla luettelokohtien +ulkoasu. Esimerkistä \ref{esim/leijuosat-titlecontents} selvinnee +perusajatus, ja lisätietoa on sisällysluetteloita käsittelevässä luvussa +\ref{luku/sisällysluettelo} sekä tietysti paketin ohjekirjassa. + +Latexin omien leijuvien osien luetteloiden otsikot tulevat +kieliasetuksista ja komennoista \komento{listtablename} ja +\komento{listfigurename}, jotka kirjoittaja voi määritellä uudestaan. +Järkevää on tehdä se lähdedokumentin esittelyosassa ja käyttää +\komento{addto}\-/ komentoa, jolla asetukset lisätään tietyn kielen +asetuksiin. + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{listfigurename} +\komentoi{listtablename} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\listtablename}{Omat taulukot} + \renewcommand{\listfigurename}{Omat kuvat} +} +\end{koodilohkosis} + +\noindent +Luetteloihin saa lisättyä omia rivejä samoilla keinoilla kuin +sisällysluetteloihinkin eli komennolla \komento{addcontentsline}. +Komennon ensimmäinen argumentti on luettelon tyyppiä vastaavan tiedoston +pääte. Tyyppi \koodi{lot} (\englanti{list of tables}) on taulukoille ja +tyyppi \koodi{lof} (\englanti{list of figures}) on kuville. Omilla +leijuvilla osilla (luku \ref{luku/leijuosat-omat}) se on jotakin muuta +ja valitaan osan määrittelyn yhteydessä. + +\komentoi{addcontentsline} +\begin{koodilohkosis} +\addcontentsline{lot}{table}{Ylimääräinen taulukko} +\addcontentsline{lof}{figure}{Ylimääräinen kuva} +\end{koodilohkosis} + +\noindent +Komennon toinen argumentti tarkoittaa luettelomerkinnän tasoa (vrt. +otsikkotasot). Leijuvien osien luetteloissa on vain yksi taso, ja siihen +kirjoitetaan kyseisen leijuvan osan tyyppi eli ympäristön nimi, +esimerkiksi \ymparisto{table} tai \ymparisto{figure}. Komennon kolmas +argumentti on luetteloon lisättävä merkintä. + +\subsection{Sijoittelu sivulle} +\label{luku/leijuosat-sijoittelu} + +Latex sijoittaa leijuvat osat yleensä sivun yläosaan, joskus alaosaan +tai omalle sivulleen, jossa ei ole leipätekstiä lainkaan. Yksittäisen +ympäristön sijoitteluun voi vaikuttaa valinnaisen argumentin avulla: + +\ymparistoi{figure} +\begin{koodilohkosis} +\begin{figure}[sijainti] + ... +\end{figure} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{cl} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{t}{sivun yläosaan (\englanti{top})} + \rivi{b}{sivun alaosaan (\englanti{bottom})} + \rivi{p}{leijuvien osien sivulle (\englanti{page})} + \rivi{h}{mieluiten tähän kohtaan (\englanti{here})} + \rivi{H}{ehdottomasti tähän kohtaan (\englanti{here}, + \paketti{floatrow})} + \rivi{!}{ei huomioida tiettyjä sijoittelurajoituksia} + \bottomrule + \end{tabular} +}{ + \caption{Leijuvien osien sijoitteluun voi vaikuttaa ympäristön + valinnaisen argumentin avulla. Valitsin \koodi{H} on + \paketti{floatrow}\-/ paketin ominaisuus} + \label{tlk/leijuosat-sijoittelukirjaimet} +} + +\noindent +Valinnainen argumentti \koodi{sijainti} on tietty merkki tai merkkien +yhdistelmä, jolla vaikutetaan leijuvan osan sijoitteluun. Taulukossa +\ref{tlk/leijuosat-sijoittelukirjaimet} ovat mahdolliset vaihtoehdot. +Oletusarvo on \koodi{tbp}, eli sen mukaan leijuva osa pyritään +sijoittamaan ensisijaisesti sivun yläosaan (\koodi{t}) mutta +mahdollisesti myös alaosaan (\koodi{b}) tai omalle sivulleen (\koodi{p}) +muiden leijuvien osien kanssa. + +Vaihtoehto \koodi{h} pyrkii latomaan leijuvan osan siihen kohtaan kuin +se on lähdetiedostossa. Se on kuitenkin vain ehdotus eikä useinkaan +toteudu: Latex lisää automaattisesti aina \koodi{h}\=/ valitsimen perään +\koodi{t}:n eli sivun yläosaan sijoittamisen. Latex käyttää sitä, jos se +saa sillä tavoin omasta mielestään paremman lopputuloksen. Lataamalla +paketin \pakettictan{floatrow} voi käyttää myös myös valitsinta +\koodi{H}. Se tarkoittaa ehdotonta vaatimusta, että juuri tähän kohtaan +leijuva osa pitää sijoittaa. Tätä valitsinta ei voi yhdistää muiden +valitsimien kanssa. + +Valitsinta \koodi{!} käytetään yhdessä edellä mainittujen valitsimien +\koodi{tbp} kanssa. Se poistaa tietyt sijoitteluun vaikuttavat säännöt +tai rajoitukset. Niitä käsitellään seuraavaksi. + +Leijuvien osien automaattisessa sijoittelussa vaikuttaa kymmenen +erilaista parametria, joihin kirjoittaja voi vaikuttaa: kolme laskuria, +kolme mittaa ja neljä komentoa. Joillekin asetuksille on olemassa +rinnakkainen versio, jota käytetään kahden palstan tilassa (luku +\ref{luku/palstat}). Ne koskevat leijuvien ympäristöjen tähdellisiä +versiota, kuten \ymparisto{table*} ja \ymparisto{figure*}, eli +tilannetta, jossa leijuva osa ei ole palstojen sisällä, vaan koko sivun +leveys on käytettävissä. + +Seuraavat kolme laskuria vaikuttavat sivulle ladottavien leijuvien osien +enimmäismäärään. Ne koskevat tilannetta, jossa sivulla on myös +tavallista leipätekstiä tai muuta sisältöä. Laskureille asetetaan uusi +arvo komennolla \komento{setcounter} (luku \ref{luku/laskurit}). Näiden +laskurien vaikutuksen voi poistaa kokonaan käyttämällä leijuvan +ympäristön valitsinta \koodi{!} (taulukko +\ref{tlk/leijuosat-sijoittelukirjaimet}). + +\begin{maaritelma}{\laskuri{#1}} +\item [topnumber] Sivun yläosaan sijoitettavien leijuvien osien + enimmäismäärä. Oletusarvo on~2. Kahden palstan tilassa käytetään + laskuria \laskuri{dbltopnumber}. +\item [bottomnumber] Sivun alaosaan sijoitettavien leijuvien osien + enimmäismäärä. Oletusarvo on~1. Kahden palstan tilassa leijuvia osia + ei sijoiteta sivun alaosaan täysilevyisenä. +\item [totalnumber] Samalla sivulla olevien leijuvien osien + enimmäismäärä, kun sivulla on myös tavallista leipätekstiä. Oletusarvo + on~3. +\end{maaritelma} + +\noindent +Seuraavat kolme mittaa vaikuttavat leijuvien osien pystysuuntaisiin +väleihin. Mitat asetetaan komennolla \komento{setlength} (luku +\ref{luku/mitat}). + +\begin{maaritelma}{\mitta{#1}} +\item [floatsep] Samalla sivulla kahden peräkkäisen leijuvan osan + pystysuuntainen väli. Oletusarvo on venyvä mitta \koodi{12pt plus 2pt + minus 2pt}. Kahden palstan tilassa käytetään mittaa + \mitta{dblfloatsep}. +\item [textfloatsep] Leijuvan osan ja leipätekstin välinen + pystysuuntainen väli. Oletusarvo on venyvä mitta \koodi{20pt plus 2pt + minus 4pt}. Kahden palstan tilassa käytetään mittaa + \mitta{dbltextfloatsep}. +\item [intextsep] Pystysuuntainen väli leipätekstin ja leijuvan osan + välissä silloin, kun leijuva osa sijoitetaan tekstivirran sekaan. Tämä + koskee sijoitteluasetuksia \koodi{h} ja \koodi{H} (taulukko + \ref{tlk/leijuosat-sijoittelukirjaimet}). Oletusarvo vaihtelee + dokumenttiluokan fonttikokoasetusten (luku + \ref{luku/perusdokumenttiluokat-asetukset}) perusteella. Jos + dokumenttiluokan valitsin on \koodi{10pt} (oletus) tai \koodi{11pt}, + oletusmitta on \koodi{12pt plus 2pt minus 2pt}. Dokumenttiluokan + valitsimella \koodi{12pt} oletus on \koodi{14pt plus 4pt minus 4pt}. +\end{maaritelma} + +\noindent +Seuraavat neljä komentoa sisältävät pelkän desimaaliluvun 0\==1. Luku +kertoo leijuvien osien tai leipätekstin viemän suhteellisen tilan +samalla sivulla. Komennot määritellään uudelleen komennolla +\komento{renewcommand} (luku \ref{luku/komennot-määrittely}). Näiden +vaikutuksen voi poistaa kokonaan leijuvan ympäristön valitsimella +\koodi{!} (taulukko \ref{tlk/leijuosat-sijoittelukirjaimet}). + +\begin{maaritelma}{\komento{#1}} +\item [topfraction] Sivun yläosaan sijoitettavien leijuvien osien viemä + enimmäistila suhteessa sivun tekstialueen korkeuteen. Oletusarvo + on~\koodi{0.7}, mikä tarkoittaa, että leijuvat osat voivat viedä + korkeintaan 0,7\=/ kertaisesti (70\,\%) sivulla olevan pystysuuntaisen + tilan. Kahden palstan tilassa käytetään komentoa + \komento{dbltopfraction}. +\item [bottomfraction] Sivun alaosaan sijoitettavien leijuvien osien + viemä enimmäistila suhteessa sivun tekstialueen korkeuteen. Oletusarvo + on~\koodi{0.3} (30\,\%). Kahden palstan tilassa leijuvia osia ei + koskaan sijoiteta sivun alaosaan. +\item [textfraction] Leipätekstin vähimmäistila sivulla, kun samalla + sivulla on myös leijuvia osia. Oletusarvo on \koodi{0.2} (20\,\%). +\item [floatpagefraction] Omalle sivulleen sijoitettavien leijuvien + osien vähimmäistila sivun tekstialueen korkeudesta. Toisin sanoen + leijuvien osien täytyy viedä vähintään tämän verran tilaa sivulta, + ennen kuin ne sijoitetaan omalle sivulleen, jossa ei ole leipätekstiä + lainkaan. Oletusarvo on~\koodi{0.5} (50\,\%). Kahden palstan tilassa + käytetään komentoa \komento{dblfloatpagefraction}. +\end{maaritelma} + +\noindent +Sivunvaihtokomennot \komento{clearpage} ja \komento{cleardoublepage} +(luku \ref{luku/sivunvaihdot}) pakottavat kaikki aiemmin +lähdetiedostossa olleet leijuvat osat ladottavaksi. Osanvaihtokomento +\komento{part} ja otsikkokomento \komento{chapter} (luku +\ref{luku/otsikot}) tekevät saman automaattisesti joissakin +dokumenttiluokissa. + +Paketin \pakettictan{placeins} avulla voi tehdä omiakin rajakohtia, +jonka yli leijuvat osat eivät voi siirtyä. Paketin komennolla +\komento{FloatBarrier} tehdään raja kyseiseen kohtaan lähdedokumentissa. +Jos paketin lataamisessa antaa argumentin \koodi{section}, asetetaan +tällainen raja automaattisesti \komento{section}\-/ tasoisille +otsikoille. + +\komentoi{usepackage} +\pakettii{placeins} +\begin{koodilohkosis} +\usepackage[section]{placeins} +\end{koodilohkosis} + +\subsection{Ulkoasu} +\label{luku/leijuosat-ulkoasu} + +Leijuvan osan sisäisen asettelun, ulkoasun ja muun typografian +hallintaan ja muokkaamiseen tarvitaan yleensä paketteja +\pakettictan{floatrow} ja \pakettictan{caption}. Jälkimmäisen avulla +muokataan kuvatekstin fonttia ja rivitystä, ja sitä käsitellään +myöhemmin tässä alaluvussa. + +Paketti \paketti{floatrow} tarjoaa runsaasti mahdollisuuksia leijuvien +osien sijoitteluun: osat voi kehystää laatikolla, kuvatekstin voi +sijoittaa ylös, alas tai sivulle, useita leijuvia osia voi sijoittaa +vierekkäin ym. Tässä oppaassa käsitellään ainoastaan peruskäyttöä. + +Jotta \paketti{floatrow}\-/ paketin ominaisuudet saisi käyttöönsä, +täytyy leijuvat osat toteuttaa sen oman \komento{floatbox}\-/ komennon +avulla. Komento sijoitetaan leijuvan ympäristön sisään. Sen +argumenteiksi annetaan ainakin leijuvan osan tyyppi, kuvatekstikomento +ja varsinainen leijuva sisältö. Seuraavassa esimerkissä käytetään +\ymparisto{table}\-/ ympäristöä, mutta muut tyypit toimivat samalla +tavalla. + +\komentoi{floatbox} +\ymparistoi{table} +\begin{koodilohkosis} +\begin{table} + \floatbox{table}[leveys]{kuvatekstit}{sisältö} +\end{table} +\end{koodilohkosis} + +\begin{esimerkki*} + \komentoi{caption} + \komentoi{floatbox} + \komentoi{label} + \mittai{FBwidth} + \ymparistoi{table} + \ymparistoi{tabular} + +\begin{koodilohko} +\begin{table} + \floatbox{table}[\FBwidth]{ + \caption{Upea taulukko} % kuvateksti + \label{tlk/upea-taulukko} % tunniste ristiviittausta varten + }{ + \begin{tabular}{ll} + jotain & soluja \\ + esimerkin & vuoksi \\ + \end{tabular} + } +\end{table} +\end{koodilohko} + \caption{\komento{floatbox}\-/ komennon peruskäyttö} + \label{esim/floatbox-perus} +\end{esimerkki*} + +\noindent +Valinnaisen argumentin \koodi{leveys} voi jättää poiskin, jolloin +leijuva osa varaa itselleen sivun leveyden verran tilaan. Argumentiksi +on joskus hyödyllistä antaa mitta \mitta{FBwidth}, joka on leijuvan osan +sisällön levyinen. Käyttämällä tätä mittaa kuvatekstit rivitetään vain +sisällön levyiseksi. Esimerkki \ref{esim/floatbox-perus} selventää, +miten \komento{floatbox}\-/ komento toimii käytännössä. + +Yksi leijuva ympäristö voi sisältää rinnakkain useampia taulukoita, +kuvia tms., joilla jokaisella on oma kuvatekstinstä. Se tehdään +ympäristöllä \ymparisto{floatrow}, jonka valinnainen argumentti +ilmaisee, kuinka monta kuvaa tms. ladotaan rinnakkain. Oletusarvo on~2. +Ympäristön sisällä täytyy olla yhtä monta \komento{floatbox}\-/ +komentoa. Seuraavasta esimerkistä selviää perusajatus kahden taulukon +latomiseksi rinnakkain: + +\komentoi{caption} +\komentoi{floatbox} +\mittai{FBwidth} +\ymparistoi{floatrow} +\ymparistoi{table} +\begin{koodilohkosis} +\begin{table} + \begin{floatrow}[2] % kaksi rinnakkain + \floatbox{table}[\FBwidth]{\caption{Vasen}}{…} + \floatbox{table}[\FBwidth]{\caption{Oikea}}{…} + \end{floatrow} +\end{table} +\end{koodilohkosis} + +\noindent +Kun leijuvat osat on toteutettu \komento{floatbox}\-/ komennon avulla, +voi niiden ulkoasuun vaikuttaa komennolla \komento{floatsetup}. Sille +annetaan ainakin yksi argumentti, joka voi sisältää useita pilkulla +toisistaan erotettuja valitsimia ja niiden arvoja. + +\komentoi{floatsetup} +\begin{koodilohkosis} +\floatsetup[tyyppi]{valitsimet} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys ja vaihtoehtoja} \\ + \midrule + + \rivi{style}{tyyli: \koodi{plain}, \koodi{ruled}, \koodi{boxed} ym.} + + \rivi{capposition}{kuvatekstin sijainti: \koodi{top}, \koodi{bottom} + ym.} + + \rivi{captionskip}{kuvatekstin etäisyys sisällöstä (mitta)} + + \rivi{font}{fonttiasetukset: \koodi{rm}, \koodi{sf}, \koodi{tt}, + \koodi{md}, \koodi{bf}, \koodi{up}, \koodi{it}, \koodi{sl}, + \koodi{sc}, \koodi{scriptsize}, \koodi{footnotesize}, + \koodi{small}, \koodi{normalsize}, \koodi{large}, \koodi{Large}} + + \rivi{margins}{leijuvan osan sijainti: \koodi{centering}, + \koodi{raggedright}, \koodi{raggedleft} ym.} + + \rivi{justification}{sisällön tasaus: \koodi{justified}, + \koodi{centering}, \koodi{raggedright}, \koodi{raggedleft}, + \koodi{RaggedRight} (\paketti{ragged2e}), \koodi{RaggedLeft} + (\paketti{ragged2e})} + + \bottomrule + \end{tabularx} +}{ + \caption{Muutama \komento{floatsetup}\-/ komennon valitsin, joilla + vaikutetaan leijuvien osien ulkoasuun. Osa tarvitsee paketin + \paketti{ragged2e}} + \label{tlk/floatsetup-valitsimia} +} + +\noindent +Valinnainen argumentti \koodi{tyyppi} on leijuvan osan tyyppi, +esimerkiksi \ymparisto{table} tai \ymparisto{figure}. Jos se on annettu, +asetukset vaikuttavat vain kyseiseen tyyppiin; muuten asetukset koskevat +kaikentyyppisiä leijuvia osia. Asetukset tehdään erilaisten valitsimien +avulla, joista muutama on koottu taulukkoon +\ref{tlk/floatsetup-valitsimia}. + +Valitsin \koodi{font} asettaa leijuvan ympäristön fontin mutta ei +vaikuta kuvatekstiin. Fonttiasetukset ovat käytännössä avainsanoja, +jotka vastaavat lähes samannimisiä fonttikomentoja. Niitä käsitellään +luvussa \ref{luku/fontit-korkea}. Omiakin fonttien avainsanoja voi luoda +komennolla \komento{DeclareFloatFont}. Valitsimen \koodi{justification} +arvoksi annetaan myös tietty sana, joka vastaava samannimisiä palstan +tasauskomentoja (luku \ref{luku/kappaleen-tasaus}). Käytännössä leijuvan +osan asetukset voisivat näyttää vaikka seuraavanlaiselta: + +\komentoi{floatsetup} +\begin{koodilohkosis} +\floatsetup{ style=plain, capposition=bottom, font={sf, small}, + justification=centering, captionskip=2ex } +\floatsetup[figure]{ style=boxed } +\end{koodilohkosis} + +\noindent +Kuvatekstien fonttia ja rivittämistä hallitaan \pakettictan{caption}\-/ +paketin avulla. Tärkein komento on \komento{captionsetup}, joka yleensä +sijoitetaan dokumentin esittelyosaan tai muuten alkuun, koska silloin se +vaikuttaa koko dokumentissa. Komennon voi sijoittaa myös esimerkiksi +yksittäisen leijuvan ympäristön sisään, jolloin se vaikuttaa vain +kyseisessä ympäristössä. + +\komentoi{captionsetup} +\begin{koodilohkosis} +\captionsetup[tyyppi]{valitsimet} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys ja vaihtoehtoja} \\ + \midrule + + \rivi{font}{kuvatekstin fontti: \koodi{normalfont}, \koodi{rm}, + \koodi{sf}, \koodi{tt}, \koodi{md}, \koodi{bf}, \koodi{up}, + \koodi{it}, \koodi{sl}, \koodi{sc}, \koodi{scriptsize}, + \koodi{footnotesize}, \koodi{small}, \koodi{normalsize}, + \koodi{large}, \koodi{Large}} + + \rivi{labelfont}{leijuvan osan tyypin ja numeroinnin fontti} + + \rivi{textfont}{varsinaisen kuvatekstin fontti} + + \rivi{format}{kappaleen tyyppi, tavallinen \koodi{plain} vai + riippuva \koodi{hang}} + + \rivi{indentation}{sisennysmitta kuvatekstin toisesta rivistä + alkaen} + + \rivi{labelformat}{leijuvan osan tyypin muoto: \koodi{default}, + \koodi{empty}, \koodi{simple}, \koodi{brace}, \koodi{parens}} + + \rivi{labelsep}{leijuvan osan tyypin erotinmerkki: \koodi{none}, + \koodi{colon}, \koodi{period}, \koodi{space}, \koodi{quad}, + \koodi{newline}, \koodi{endash}} + + \rivi{textformat}{kuvatekstin lopetusmerkki: \koodi{simple}, + \koodi{period}} + + \rivi{justification}{kuvatekstin tasaus: \koodi{justified}, + \koodi{centering}, \koodi{centerlast}, \koodi{centerfirst}, + \koodi{raggedright}, \koodi{RaggedRight} (\paketti{ragged2e}), + \koodi{raggedleft}} + + \rivi{singlelinecheck}{yksirivisten kuvatekstien poikkeuksellinen + tasaus: \koodi{true} (oletus), \koodi{false}} + + \rivi{margin}{kuvatekstin marginaalit: yksi mitta tai kaksi pilkulla + erotettua mittaa (vasen ja oikea marginaali)} + + \rivi{width}{kuvatekstikappaleen leveys (mitta)} + + \bottomrule + \end{tabularx} +}{ + \caption{Tärkeimpiä \komento{captionsetup}\-/ komennon valitsimia} + \label{tlk/captionsetup-valitsimia} +} + +\noindent +Komennon valinnainen argumentti \koodi{tyyppi} on leijuvan osan tyyppi, +esimerkiksi \ymparisto{table} tai \ymparisto{figure}, johon halutaan +vaikuttaa. Jos sen jättää pois, asetukset vaikuttavat kaikkien leijuvien +osien kuvateksteihin. Pakollinen argumentti on \koodi{valitsimet}, +johon kirjoitetaan valitsimia eli avainsanoja ja niiden arvoja. +Tärkeimpiä valitsimia on koottu taulukkoon +\ref{tlk/captionsetup-valitsimia}. Käytännössä komento voisi näyttää +esimerkiksi seuraavanlaiselta: + +\komentoi{captionsetup} +\begin{koodilohkosis} +\captionsetup{ font={small, sf}, labelfont={bf}, textfont={}, + textformat=period, margin={.5em,0em}, justification=raggedright, + singlelinecheck=false } +\end{koodilohkosis} + +\noindent +Oletuksena Latex käsittelee yksiriviset kuvatekstit poikkeuksellisella +tavalla eli keskittää ne. Sen vuoksi tasausvalitsin +\koodi{justification} ei vaikuta yksirivisiin kuvateksteihin. Tämän +poikkeuksen saa pois päältä käyttämällä asetusta +\koodi{singlelinecheck=\katk false}, jolloin sama +\koodi{justification} pätee yhtä lailla niin yksi- kuin monirivisiinkin +kuvateksteihin. + +\begin{esimerkki*} + \ymparistoi{table} + \komentoi{caption} + \komentoi{ContinuedFloat} + +\begin{koodilohko} +\begin{table} % kokonaisuuden 1. leijuva ympäristö + \caption{Hieno taulukko} + ... +\end{table} +... +\begin{table} % kokonaisuuden 2. leijuva ympäristö + \ContinuedFloat % sama numerointi kuin edelliselle + \caption{Hieno taulukko (jatkuu)} + ... +\end{table} +\end{koodilohko} + + \caption{Usealle leijuvalle osalle saa saman numeroinin käyttämällä + komentoa \komento{ContinuedFloat}} + \label{esim/continuedfloat} +\end{esimerkki*} + +Joskus halutaan, että useampi taulukko, kuva tai muu leijuva osa +muodostavat kokonaisuuden, jolla on sama numero, esimerkiksi +''\tablename~3''. Ajatuksena on, että sama sisältö on jakautunut +useampaan osaan. Se onnistuu sijoittamalla \paketti{caption}\-/ paketin +komento \komento{ContinuedFloat} ensimmäisen jälkeisiin leijuviin +ympäristöihin. Komento pitäisi sijoittaa heti ympäristön alkuun. +Esimerkki \ref{esim/continuedfloat} havainnollistaa sen käyttöä. + +Kuvatekstissä oleva leijuvan osan numero tulee laskurista, ja +erityyppisellä osilla on oma laskurinsa. Laskurin nimi on sama kuin +vastaavan leijuvan ympäristön nimi, eli esimerkiksi \ymparisto{table}\-/ +ympäristöt numeroidaan laskurin \laskuri{table} avulla. + +Käytännössä laskurien arvo ladotaan \komentox{the}\-/ alkuisella +komennolla, jonka perässä on laskurin nimi, esimerkiksi +\komento{thetable}. Oletuksena nämä komennot latovat laskurin +arabialaisilla numeroilla. Jos laskuri on riippuvainen teoksen +pääluvuista (\komento{chapter}), ladotaan ensin pääluvun numero, +erotinpiste ja leijuvan osan numero: 2.1, 2.2, 2.3 jne. + +Kirjoittaja voi määritellä laskurien latomiskomennon haluamallaan +tavalla. Seuraavassa esimerkissä leijuville kuville (\ymparisto{figure}) +määritellään numerointitapa, jossa on pääluvun numero, ajatusviiva (\==) +ja leijuvan kuvan numero: + +\komentoi{arabic} +\komentoi{renewcommand} +\komentoi{thechapter} +\komentoi{thefigure} +\laskurii{figure} +\begin{koodilohkosis} +\renewcommand{\thefigure}{\thechapter--\arabic{figure}} +\end{koodilohkosis} + +\section{Ristiviittaukset} +\label{luku/ristiviitteet} + +Ristiviittaukset tarkoittavat dokumentin sisäisiä viittauksia eli +viittauksia toisiin kohtiin samassa dokumentissa. Lukijalle ne ilmenevät +ilmauksina kuten ''luvussa 4.2'' tai ''kuvassa~5''. Kirjoittajan ei +kuitenkaan kannata naputella luvun numeroa (esim. ''4.2'') käsin +lähdedokumenttiin, koska lukujen järjestys ja numerointi voi muuttua +kirjoittamisen edetessä. Joutuisi korjaamaan muuttuneet numerot +mahdollisesti useitakin kertoja ennen kuin työ on valmis. + +Latex osaa numeroida dokumentin otsikot (luvut) ja leijuvat osat +automaattisesti, eli se tietää, minkä numeron mikäkin dokumentin osa +saa. Niinpä Latex osaa myös -- kirjoittajan pienellä avustuksella -- +ylläpitää ajantasaisia ristiviittauksia dokumentin eri osiin. Teknisesti +tämä toteutetaan siten, että otsikoille ja leijuville osille annetaan +yksilöllinen tunniste ja viittaamisessa käytetään samoja tunnisteita. +Tunnisteet annetaan \komento{label}\-/ komennolla, joka sijoitetaan heti +otsikkokomennon (\komento{section}, \komento{subsection} ym.) tai +leijuvan osan kuvatekstikomennon (\komento{caption}) jälkeen: + +\komentoi{section} +\komentoi{label} +\begin{koodilohkosis} +\section{Jokin otsikko} +\label{tunniste} +\end{koodilohkosis} + +\noindent +\komento{label}\-/ komennon argumentti \koodi{tunniste} voi olla +suunnilleen mitä tahansa tekstiä. Sen täytyy olla yksilöllinen, eli sama +tunniste ei saa olla käytössä missään toisessa \komento{label}\-/ +komennossa. Jos sama tunniste sattuu olemaan useassa paikassa, vain +viimeinen jää käytännössä voimaan. + +Järkevää on kirjoittaa tunnisteeseen sana tai sanoja, jotka kertovat +jotakin kyseisen osan sisällöstä. Hyödyllistä voi olla myös kirjoittaa +tunnisteen tieto, onko kyse luvusta, taulukosta, kuvasta vai muusta +leijuvasta osasta, koska erityyppiset osat voivat käsitellä samaa +aihetta. Seuraavassa on esimerkkejä \komento{label}\-/ komennoista: + +\komentoi{label} +\begin{koodilohkosis} +\label{luku/fonttien-valinta} % otsikkokomennon jälkeen +\label{taulukko/fonttikomentoja} % taulukon \caption-komennon jälkeen +\label{kuva/kirjainleikkauksia} % kuvan \caption-komennon jälkeen +\end{koodilohkosis} + +\noindent +Ristiviittauksissa vähimmällä vaivalla selviää, kun muistaa kaksi asiaa: +1)~kirjoittaa \komento{label}\-/ komentoja vain niihin kohtiin, joihin +täytyy viitata muualta, 2)~valitsee tunnisteet siten, ettei niitä +tarvitse muuttaa enää sen jälkeen, kun ne on kerran valinnut. + +Tavallisimmat ristiviittaukset tehdään \komento{ref}\-/ komennolla, +jonka argumentiksi annetaan sama tunniste kuin jossakin dokumentin +\komento{label}\-/ komennossa. Latex latoo \komento{ref}\-/ komentojen +kohdalle kyseisen luvun tai leijuvan osan numeron. Toinen tarpeellinen +ristiviittauskomento on \komento{pageref}, joka kääntämisvaiheessa +korvautuu kyseisen kohteen sivunumerolla. Näitä voi hyödyntää +lähdedokumentissa esimerkiksi seuraavasti: + +\komentoi{ref} +\komentoi{pageref} +\begin{koodilohkosis} +Katso taulukko \ref{taulukko/fonttimallikomennot} sivulla +\pageref{taulukko/fonttimallikomennot}. +\end{koodilohkosis} + +\begin{tulossis} + Katso taulukko \ref{tlk/fonttimallikomennot} sivulla + \pageref{tlk/fonttimallikomennot}. +\end{tulossis} + +\noindent +Jos ladattuna on paketti \paketti{hyperref} (luku +\ref{luku/pdf-asetukset}), on ristiviittauksiin käytettävissä myös +komento \komento{nameref}. Sillekin annetaan argumentiksi jokin +\komento{label}\-/ komennolla määritetty tunniste, ja kääntämisvaiheessa +komennon tilalle ladotaan kyseisen kohteen teksti eli otsikko tai +kuvateksti. Ristiviittauksissa ladotaan otsikon tai kuvatekstin lyhempi +versio, jos sellainen on annettu. Otsikkokomentojen ja +kuvatekstikomennon argumentteja käsitellään luvuissa \ref{luku/otsikot} +(\nameref{luku/otsikot}) ja \ref{luku/leijuosat-latex} +(\nameref{luku/leijuosat-latex}). + +Ristiviittaukset vaativat, että Latex\-/ lähdedokumentti käännetään +kahdesti. Ensimmäisellä kääntämiskerralla \komento{label}\-/ komennolla +mainittujen kohteiden tiedot kirjoitetaan muistiin väliaikaistiedostoon. +Toisella kääntämiskerralla hyödynnetään väliaikaistiedostoa ja +\komento{ref}-, \komento{pageref}\-/\ ja \komento{nameref}\-/ komentojen +tilalle ladotaan viittauskohteen oikeat tiedot. + +\section{Alaviitteet} +\label{luku/alaviitteet} + +Alaviitteet ovat sivun alareunassa olevia numeroituja tai muulla tavalla +merkittyjä huomautuksia. Niihin viitataan sanojen tai virkkeiden perässä +olevalla yläindeksinumerolla, \=/kirjaimella tai +\=/symbolilla.\footnote{Tässä on esimerkki alaviitteestä.} Alaviitteiden +tarkoituksena on lisätä tekstiin lähes huomaamaton lisätieto, joka ei +häiritse lukemista. Se sopii esimerkiksi lisätietoihin, joilla ei ole +kovin suurta merkitystä tai jotka sopivat huonosti ladottavaksi +leipätekstiin. Joskus myös tiedonlähteet ilmaistaan alaviitteiden +avulla.\footcites[162]{kt_oik}[127--128]{typokk} + +Alaviite tehdään komennolla \komento{footnote}, jonka argumentiksi +kirjoitetaan alaviitteeseen tuleva teksti. Oletuksena Latex latoo +komennon paikalle yläindeksinumeron, joka tulee automaattisesti +kasvavasta laskurista \laskuri{footnote}. Komennolle voi antaa myös +valinnaisen argumentin, joka on kyseisen alaviitteen numero. Tässä +tapauksessa komento ei kasvata \laskuri{footnote}\-/ laskuria. + +\komentoi{footnote} +\begin{koodilohkosis} +\footnote{Alaviitteen teksti.} +\footnote[numero]{Alaviitteen teksti.} +\end{koodilohkosis} + +\noindent +Itse alaviite ladotaan samalla kirjaintyypillä kuin leipätekstikin mutta +pienempänä: sen koko tulee komennosta \komento{footnotesize} (luku +\ref{luku/fontit-korkea}). Samalle sivulle voi sattua useampikin +alaviite, ja ne erotetaan leipätekstistä pienellä pystysuuntaisella +välillä sekä oletuksena myös lyhyellä vaakaviivalla. Jos alaviitteen +tekee leijuvaan osaan (luku \ref{luku/leijuosat}) tai +\ymparisto{minipage}\-/ ympäristöön (luku \ref{luku/laatikot-isot}), se +merkitään oletuksena kirjaimen avulla, ja alaviitteen teksti ladotaan +kyseisen osan alapuolelle. + +\komento{footnote}\-/ komennon toiminnan voi jakaa kahteen erilliseen +osaan komentojen \komento{footnotemark} ja \komento{footnotetext} +avulla. Ensin mainittu komento latoo pelkän yläindeksinumeron, joka +tulee alaviitelaskurista. Komento ei lado varsinaista alaviitettä. +Jälkimmäinen komento puolestaan latoo pelkän alaviitteen. Kummallekin +komennolle voi antaa valinnaisen argumentin, jolla ilmaistaan kyseisen +alaviitteen numero. + +\komentoi{footnotemark} +\komentoi{footnotetext} +\begin{koodilohkosis} +\footnotemark[numero] % yläindeksinumero +\footnotetext[numero]{Alaviitteen teksti.} % alaviite +\end{koodilohkosis} + +\noindent +Alaviitteiden numerointi on laskurissa \laskuri{footnote}, mutta sen +arvo ladotaan komennon \komento{thefootnote} avulla. Tämän komennon +määritelmässä on oletuksena komento +\komento{arabic}\komentoarg{footnote}, eli laskuri ladotaan +arabialaisilla numeroilla. Kirjoittaja voi kuitenkin määritellä komennon +uudestaan. Seuraavassa esimerkissä määritellään komento siten, että +alaviitteet ilmaistaan symbolien avulla: + +\komentoi{renewcommand} +\komentoi{thefootnote} +\komentoi{fnsymbol} +\laskurii{footnote} +\begin{koodilohkosis} +\renewcommand{\thefootnote}{\fnsymbol{footnote}} +\end{koodilohkosis} + +\noindent +Laskurien symboliesitys toimii vain lukualueella 1\==9, joten samaan +dokumenttiin ei mahdu kovin monta alaviitettä, ellei laskuria nollaa +välillä. Laskurin voi määritellä riippuvaiseksi toisesta laskurista, +jolloin se nollautuu itsestään, kun toisen laskurin arvo kasvaa. +Esimerkiksi dokumenttiluokassa \luokka{book} alaviitteiden laskuri +nollautuu oletuksena aina päälukujen (\komento{chapter}) vaihtuessa. +Joskus voi olla tarpeen tehdä alaviitteiden laskuri sivukohtaiseksi eli +riippuvaiseksi \laskuri{page}\-/ laskurista. Sen voi toteuttaa +\paketti{chngcntr}\-/ paketin ja \komento{counterwithin*}\-/ komennon +(luku \ref{luku/hierarkkiset-laskurit}) avulla seuraavan esimerkin +mukaisesti. Toinen vaihtoehto on paketti \paketti{footmisc} ja valitsin +\koodi{perpage}, jota käsitellään myöhemmin tässä luvussa. + +\komentoi{counterwithin} +\laskurii{footnote} +\laskurii{page} +\begin{koodilohkosis} +\counterwithin*{footnote}{page} +\end{koodilohkosis} + +\noindent +Edellisissä esimerkeissä on käsitelty koko dokumentin alaviitelaskuria +\laskuri{footnote}, mutta leijuvissa osissa ja \ymparisto{minipage}\-/ +ympäristöissä (luku \ref{luku/laatikot-isot}) alaviitteet numeroidaan +laskurin \laskuri{mpfootnote} avulla. Tämän laskurin arvo ladotaan +käytännössä komennolla \komento{thempfootnote}, jonka kirjoittaja voi +määritellä uudelleen tarpeen mukaan. Laskureihin liittyvää tekniikkaa +käsitellään tarkemmin luvussa \ref{luku/laskurit}. + +Leipäteksti ja alaviitteet erotetaan pystysuuntaisella välillä, jonka +voi asettaa sivun asetusten yhteydessä (luku \ref{luku/sivuasetukset}). +Asetus on \paketti{geometry}\-/ paketin valitsin \koodi{footnotesep}, +jota käytetään esimerkiksi \komento{geometry}\-/ komennon kanssa: + +\komentoi{geometry} +\begin{koodilohkosis} +\geometry{ footnotesep=14bp } +\end{koodilohkosis} + +\noindent +Välin täytyy olla ainakin niin suuri, ettei lukija sekoita alaviitteitä +leipätekstin kappaleeseen. Ehkä riittävä väli on noin yhden +rivikorkeuden verran tai vähän enemmän. Sopivan välin suuruus voi +riippua siitäkin, erotetaanko leipäteksti ja alaviitteet toisistaan myös +vaakaviivalla. + +Muunlaiset alaviitteisiin vaikuttavat asetukset täytyy tehdä paketin +\pakettictan{footmisc} avustuksella. Sen avulla voi esimerkiksi poistaa +alaviitteiden erotinviivan ja muotoilla alaviitekappaleita. Paketin +lataamisen yhteydessä voi antaa useita pilkulla erotettuja valitsimia, +joita on koottu taulukkoon \ref{tlk/footmisc-valitsimet}. Erotinviiva +poistetaan paketin valitsimella \koodi{norule}. Samalla pystysuuntainen +väli hieman kasvaa. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{norule}{vaakasuuntainen erotinviiva pois} + \rivi{perpage}{numerointi sivukohtaiseksi} + \rivi{bottom}{alaviite aina sivun alareunaan} + \rivi{hang}{luetelmatyyppiset alaviitteet, riippuva sisennys} + \rivi{multiple}{useat peräkkäiset yläindeksinumerot} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{footmisc}\-/ paketin asetusten avulla muotoillaan + alaviitteitä} + \label{tlk/footmisc-valitsimet} +} + +\pakettii{footmisc} +\komentoi{usepackage} +\begin{koodilohkosis} +\usepackage[norule]{footmisc} +\end{koodilohkosis} + +\noindent +Valitsin \koodi{perpage} numeroi alaviitteet sivukohtaisesti, eli niiden +laskuri nollautuu aina sivun vaihtuessa. Valitsin \koodi{bottom} +pakottaa alaviitteen aina sivun alareunaan. Oletusasetuksilla alaviite +voi sijoittua joskus ylemmäksi, jos sivun alaosaan ladotaan leijuva osa +tai jos sivun alareunan tasaaminen on pois päältä +(\komento{raggedbottom}, luku \ref{luku/sivunvaihdot}). + +Oletuksena alaviitekappaleet ladotaan samalla tavalla kuin +tekstikappaleet oletuksena muutenkin: alaviitteen ensimmäinen rivi on +sisennetty ja sen alussa on alaviitteen numero. Seuraavia rivejä ei +sisennetä. Tällainen asetus sopii hyvin pitkien alaviitetekstien +latomiseen. Usein ne ovat kuitenkin lyhyitä, ja silloin voi sopia +paremmin luetelmatyyppiset alaviitekappaleet (riippuva sisennys), joissa +alaviitteen numero on omalla alueellaan ja varsinainen alaviiteteksti on +sisennetty. Tällainen asetus tehdään \paketti{footmisc}\-/ paketin +valitsimella \koodi{hang}. Sisennyksen suuruuteen voi vaikuttaa mitan +\mitta{footnotemargin} avulla: + +\komentoi{setlength} +\komentoi{usepackage} +\mittai{footnotemargin} +\pakettii{footmisc} +\begin{koodilohkosis} +\usepackage[hang]{footmisc} +\setlength{\footnotemargin}{1.5em} +\end{koodilohkosis} + +\noindent +Valitsin \koodi{multiple} mahdollistaa peräkkäisten +\komento{footnote}\-/ komentojen kirjoittamisen helposti. Peräkkäin +olevien yläindeksinumeroiden väliin ladotaan automaattisesti pilkku, +kuten seuraava esimerkki osoittaa: + +\komentoi{footnote} +\begin{koodilohkosis} +sana\footnote{…}\footnote{…} +\end{koodilohkosis} + +\begin{tulossis} + sana\textsuperscript{7}% + \textsuperscript*{,}% + \textsuperscript{8} +\end{tulossis} + +\noindent +Toisaalta yläindeksiin voi sijoittaa pilkun tai muuta tekstiä käsinkin +komennolla \komento{textsuperscript} (luku \ref{luku/ylä-alaindeksit}). +\koodi{multiple}\-/ valitsin vaatii toimiakseen tietyn +\paketti{hyperref}\-/ paketin valitsimen, joka käsitellään seuraavaksi. + +Jos ladattuna on \paketti{hyperref}\-/ paketti (luku +\ref{luku/pdf-asetukset}), alaviitteisiin liittyvistä +yläindeksinumeroista tulee myös hiirellä napsautettavia linkkejä. Tästä +ominaisuudesta on harvoin mitään hyötyä, koska alaviite on melkein aina +samalla sivulla. Linkkitoiminto myös häiritsee \paketti{footmisc}\-/ +paketin \koodi{multiple}\-/ valitsimen toimintaa. Alaviitteiden linkit +voi kytkeä pois \paketti{hyperref}\-/ paketin lataamisen yhteydessä +seuraavalla asetuksella: + +\komentoi{usepackage} +\pakettii{hyperref} +\begin{koodilohkosis} +\usepackage[hyperfootnotes=false]{hyperref} +\end{koodilohkosis} + +\noindent +\paketti{footmisc}\-/ paketti sisältää muitakin toimintoja alaviitteiden +ulkoasun säätämiseen. Lisätietoa saa paketin ohjekirjasta. + +\section{Palstat} +\label{luku/palstat} + +Latexissa on perustoiminnot usean palstan käsittelyyn, mutta mihinkään +sanoma- tai aikakauslehden kaltaiseen monipuoliseen tekstin, kuvien ja +muiden osien sommitteluun se ei kykene. Verrattain yksinkertaiset +monipalstaiset tekstit kuitenkin onnistuvat Latexissakin varsin +mukavasti. + +Perus Latexissa on kaksi palstoihin liittyvää tilaa: normaali eli yhden +palstan tila sekä kahden palstan tila, joka täytyy erikseen kytkeä +päälle. Tätä tilaa käsitellään luvussa \ref{luku/kahden-palstan-tila}. +Toinen palstojen toteuttamisen vaihtoehto on paketti +\paketti{multicol}. Sen kanssa käytetään Latexin yhden palstan tilaa ja +erityistä palstaympäristöä \ymparisto{multicols}. Ympäristön sisällä +teksti rivitetään kahdelle tai useammalle palstalle. Tätä vaihtoehtoa +käsitellään luvussa \ref{luku/multicol}. + +\subsection{Kahden palstan tila} +\label{luku/kahden-palstan-tila} + +Perus Latexin yhden tai kahden palstan tilan voi valita jo +dokumenttiluokan (luku \ref{luku/perusdokumenttiluokat-asetukset}) +lataamisen yhteydessä tai sivun asetuksissa (luku +\ref{luku/sivuasetukset}) käyttämällä valitsinta \koodi{onecolumn} +(oletus) tai \koodi{twocolumn}. Dokumentin keskellä tilaa voi vaihtaa +komennoilla \komento{onecolumn} ja \komento{twocolumn}. Kumpikin komento +aloittaa uuden sivun, jossa valittu tila on voimassa. Komennolle +\komento{twocolumn} voi antaa hakasulkeissa valinnaisen argumentin, +jolla ilmaistaan sivun alkuun ladottava koko sivun levyinen sisältö: + +\komentoi{twocolumn} +\begin{koodilohkosis} +\twocolumn[yksipalstaista sisältöä] +\end{koodilohkosis} + +\noindent +\komento{twocolumn}\-/ komennon valinnainen argumentti mahdollistaa sen, +että sivun alkuun voi sijoittaa esimerkiksi koko sivun levyisen otsikon, +kuvan tai muun osan. Sen jälkeen lähes kaikki sisältö on ladotaan +kahdelle palstalle, eli teksti täyttää ensin vasemmanpuoleisen palstan +ja sen jälkeen oikeanpuoleisen. + +Leijuvat osat (luku \ref{luku/leijuosat}) ja ympäristöt kuten +\ymparisto{table} ja \ymparisto{figure} sijoitetaan palstan sisään, eli +niiden sisältö täytyy suunnitella yhden palstan levyiseksi. Ympäristöjen +tähdelliset versiot kuten \ymparisto{table*} ja \ymparisto{figure*} +ladotaan koko sivun levyisenä sivun yläosaan tai kokonaan omalle +sivulleen, jossa on vain leijuvia osia. Leijuvien osien sijoitteluun +kahden palstan tilassa voi vaikuttaa tiettyjen laskurien, mittojen ja +komentojen avulla. Näitä käsitellään luvussa +\ref{luku/leijuosat-sijoittelu}. + +Palstojen välissä olevan tyhjän tilan leveys on mitassa +\mitta{columnsep}, ja sen voi asettaa haluamakseen +\komento{setlength}\-/ komennolla tai \paketti{geometry}\-/ paketin +asetuksista (luku \ref{luku/sivun-mitat}). Oletusasetus on 35\,pt. +Palstojen väliin saa myös pystyviivan, jonka leveys on mitassa +\mitta{columnseprule}. Sen oletusarvo on nolla, eli pystyviivaa ei +ladota. + +\komentoi{setlength} +\mittai{columnsep} +\mittai{columnseprule} +\begin{koodilohkosis} +\setlength{\columnsep}{6mm} % palstojen väli +\setlength{\columnseprule}{.2mm} % pystyviivan leveys +\end{koodilohkosis} + +\noindent +Latex laskee automaattisesti palstan leveyden ja asettaa sen mittaan +\mitta{columnwidth}. Tätä mittaa ei siis tarvitse eikä pidä itse +asettaa, mutta sitä voi hyödyntää esimerkiksi taulukoiden tai kuvien +sovittamisessa koko palstan levyiseksi. Käytännössä kahden palstan +tilassa palstan leveys on mittojen \mitta{textwidth} ja +\mitta{columnsep} erotus jaettuna kahdella. Tilannekohtainen rivin +pituus on mitassa \mitta{linewidth}. + +\subsection{Palstaympäristö} +\label{luku/multicol} + +Perus Latex osaa vain yhden ja kahden palstan tilan, ja ne ovat voimassa +koko sivulla. Paketti \pakettictan{multicol} tuo käyttöön myös +ympäristön \ymparisto{multicols}, jonka sisällä tietty palstamäärä on +voimassa. Ympäristön avulla samallakin sivulla voi olla eri tavoin +palstoitettua sisältöä. Esimerkki \ref{esim/multicols} havainnollistaa +ympäristön käyttöä ja ladottua lopputulosta. Oleelliset tiedot ovat +seuraavat: + +\ymparistoi{multicols} +\begin{koodilohkosis} +\begin{multicols}{palstamäärä} + ... +\end{multicols} +\end{koodilohkosis} + +\noindent +Argumentti \koodi{palstamäärä} on kokonaisluku, joka ilmaisee, kuinka +monelle palstalle ympäristön sisältö ladotaan. Palstojen korkeus +pyritään tasaamaan automaattisesti, niin että kaikki palstat ovat yhtä +korkeita. Käytännössä palstaympäristön viimeisen sivun viimeinen palsta +jää hieman vajaaksi, mutta se on normaalia muutenkin. Jos käyttää +ympäristön tähtiversiota \ymparisto{multicols*}, ei viimeisen sivun +palstojen korkeuksia tasata, vaan ensin täytetään vasemmanpuoleinen +palsta kokonaan, sitten seuraava jne. + +\begin{esimerkki*} + \ymparistoi{multicols} + \komentoi{noindent} + +\begin{koodilohko} +\begin{multicols}{3} % kolme palstaa + \noindent Jukolan talo, eteläisessä Hämeessä, seisoo erään mäen + pohjoisella rinteellä, liki Toukolan kylää. Sen läheisin ympäristö on + kivinen tanner, mutta alempana alkaa pellot, joissa, ennenkuin talo + oli häviöön mennyt, aaltoili teräinen vilja. Peltojen alla on niittu, + apilaäyräinen, halkileikkaama monipolvisen ojan; ja runsaasti antoi se + heiniä, ennenkuin joutui laitumeksi kylän karjalle. Muutoin on talolla + avaria metsiä, soita ja erämaita, jotka, tämän tilustan ensimmäisen + perustajan oivallisen toiminnan kautta, olivat langenneet sille osaksi + jo ison jaon käydessä entisinä aikoina. +\end{multicols} +\end{koodilohko} + \begin{tulos} + \footnotesize + \setlength{\columnsep}{1em} + \setlength{\multicolsep}{0bp} + \begin{multicols}{3} + \noindent Jukolan talo, eteläisessä Hämeessä, seisoo erään mäen + pohjoisella rinteellä, liki Toukolan kylää. Sen läheisin ympäristö + on kivinen tanner, mutta alempana alkaa pellot, joissa, ennenkuin + talo oli häviöön mennyt, aaltoili teräinen vilja. Peltojen alla on + niittu, api\-la\-äyräi\-nen, halkileikkaama monipolvisen ojan; ja + runsaasti antoi se heiniä, ennenkuin joutui laitumeksi kylän + karjalle. Muutoin on talolla avaria metsiä, soita ja erämaita, + jotka, tämän tilustan ensimmäisen perustajan oivallisen toiminnan + kautta, olivat langenneet sille osaksi jo ison jaon käydessä + entisinä aikoina. + \end{multicols} + \end{tulos} + + \caption{Palstojen toteutus \paketti{multicol}\-/ paketin + \ymparisto{multicols}\-/ ympäristön avulla. Teksti on Aleksis Kiven + \emph{Seitsemän veljestä} \=/romaanin alusta} + \label{esim/multicols} +\end{esimerkki*} + +Ympäristölle voi antaa hakasulkeissa valinnaisen argumentin, joka voi +sisältää mitä tahansa tekstiä tai koodia. Se on tarkoitettu otsikolle +(\komento{section} ym.) tai muulle sisällölle, joka ladotaan ennen +palstoja ja jonka täytyy päätyä samalle sivulle kuin palstasisällön +alku. + +\ymparistoi{multicols} +\begin{koodilohkosis} +\begin{multicols}{palstamäärä} + [tekstiä tai koodia ennen palstoja] + ... +\end{multicols} +\end{koodilohkosis} + +\noindent +Ennen palstaympäristöä ja sen jälkeen ladotaan mitan \mitta{multicolsep} +suuruinen pystysuuntainen väli. Väliä ei kuitenkaan ladota, jos se +sattuu sivunvaihdon kohdalle. Palstojen välissä oleva tyhjä tila +asetetaan mitan \mitta{columnsep} avulla, ja väliin mahdollisesti +ladottavan pystyviivan leveys on mitassa \mitta{columnseprule}. Tämän +mitan oletusarvo on nolla, eli pystyviivaa ei ladota. + +\komentoi{setlength} +\mittai{multicolsep} +\mittai{columnsep} +\mittai{columnseprule} +\begin{koodilohkosis} +\setlength{\multicolsep}{.5ex plus .2ex} % väli ennen ja jälkeen +\setlength{\columnsep}{6mm} % palstojen väli +\setlength{\columnseprule}{.2mm} % pystyviivan leveys +\end{koodilohkosis} + +\noindent +Oletuksena palstojen alareuna pyritään joka sivulla pitämään tarkasti +samalla tasolla. Tämä toteutuu siten, että palstoilla olevia +pystysuuntaisia välejä voidaan venyttää, jotta niiden viimeiset rivit +saataisiin samalle tasolle. Tämä on yhdenmukainen sivujen +tasaamiskäytännön kanssa, jota käsitellään luvussa +\ref{luku/sivunvaihdot}. Palstojen alareunan tasaamisen ja +pystysuuntaisten välien venyttämisen saa pois komennolla +\komento{raggedcolumns}. Oletustilaan palataan komennolla +\komento{flushcolumns}. Palstanvaihdon voi pakottaa tiettyyn kohtaan +komennolla \komento{columnbreak}. Jos komento sijaitsee tekstikappaleen +sisällä, palsta vaihtuu nykyisen rivin lopussa. + +Leijuvat osat (luku \ref{luku/leijuosat}) toimivat +\ymparisto{multicols}\-/ ympäristössä hieman toisin kuin muualla. +Leijuvien ympäristöjen tähdellisiä versioita kuten \ymparisto{table*} ja +\ymparisto{figure*} ei koskaan ladota samalle sivulle kuin missä ne +esiintyvät. Ensimmäinen mahdollinen paikka on seuraavan sivun yläosassa. + +Leijuvien osien sijoitteluun vaikuttavat tavalliset yhden palstan tilan +asetukset kuten laskuri \laskuri{topnumber}, mitta \mitta{floatsep} ja +komento \komento{topfraction}. \ymparisto{multicols}\-/ ympäristössä ei +käytetä \koodi{dbl}\-/ alkuisia kahden palstan tilan laskureita, mittoja +eikä komentoja, kuten \laskuri{dbltopnumber}, \mitta{dblfloatsep} ja +\komento{dbltopfraction}. Lisätietoa leijuvien osien sijoittelusta on +luvussa \ref{luku/leijuosat-sijoittelu}. + +\section{Lähdeluettelo ja lähdeviitteet} +\label{luku/lähteet} + +Lähdeluettelossa mainittuihin teoksiin on tapana viitata muualta +tekstistä, ja Latex osaa auttaa viittausten hallinnassa. Ajatus on se, +että lähdeluettelo laaditaan tiettyjen komentojen avulla niin, että +jokainen lähdeteos saa yksilöllisen tunnisteen. Muualta tekstistä +viitataan lähdeteoksiin käyttämällä samoja tunnisteita, ja Latex osaa +automaattisesti poimia lähdeluettelosta esimerkiksi teoksen tekijöiden +nimet ja vuosiluvun. + +Lähdeviittauksiin ja lähdemerkintöihin on useita käytäntöjä, jotka +vaihtelevat eri ammatti\-/\ ja tieteenaloilla, oppilaitoksilla tai +julkaisijoilla. Tässä yhteydessä käsitellään melko vakiintuneita +suomalaisia käytäntöjä, jotka kuvataan \emph{Kielitoimiston + oikeinkirjoitusoppaassa} \parencite{kt_oik}. Samalla käsitellään +joitakin asetuksia, joilla kukin voi muokata viittausten ulkoasua omiin +tarpeisiin sopivaksi. + +Latex sisältää lähdeluetteloiden ja \=/viittausten perustoiminnot, mutta +niiden avulla ei saa yleisen suomalaisen käytännön mukaisia +lähdeviittauksia. Siksi usein tarvitaan avuksi paketti, jolla +viittausten ja lähdeluettelon ulkoasuun voi vaikuttaa. Ensin käsiteltävä +paketti \paketti{natbib} (luku \ref{luku/natbib}) soveltuu +perustarpeisiin ja lienee sopivin valinta useimmille kirjoittajille. +Laajoja tieteellisiä teoksia kirjoittavan kannattanee opetella +käyttämään monipuolista \paketti{biblatex}\-/pakettia (luku +\ref{luku/biblatex}) ja ylläpitää yhteistä lähdeteosten tietokantaa, +josta tarvittavat teokset poimitaan kunkin dokumentin lähdeluetteloon +automaattisesti. + +\subsection{Peruskäyttöön (natbib)} +\label{luku/natbib} + +Paketti \pakettictan{natbib} laajentaa Latexin lähdeviittausten +perustoimintoja sen verran, että lähteisiin voidaan viitata teoksen +tekijöiden nimen ja vuosiluvun avulla. Seuraava esimerkki +havainnollistaa paketin käyttöönottoa ja asetuksia. + +\komentoi{usepackage} +\pakettii{natbib} +\komentoi{setcitestyle} +\begin{koodilohkosis} +\usepackage{natbib} +\setcitestyle{authoryear,aysep={},notesep={: }} +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä viittaustyyli valitaan \komento{setcitestyle}\-/ +komennon argumentissa valitsimella \koodi{author\-year} +(tekijä\--vuosi). Valitsimella \koodi{aysep} määritetään, mikä +välimerkki ladotaan tekijän nimen ja vuosiluvun väliin. Tässä se +jätetään tyhjäksi \koodi{\{\}}. \koodi{note\-sep}\-/ valitsimella +asetetaan merkit, jotka ladotaan vuosiluvun ja sitä seuraavan +huomautuksen kuten sivunumeroiden väliin; tässä tapauksessa määritettiin +kaksoispiste ja väli \koodi{\{:~\}}, mutta pilkkukin on yleinen +käytäntö. \komento{setcitestyle}\-/ komennon valitsimet erotetaan +toisistaan pilkulla, eikä erotinpilkkujen ympärillä saa olla +välilyöntejä. Lopputuloksena lähdemerkinnät näyttävät esimerkiksi +seuraavanlaisilta: + +\komentoi{citet*} +\begin{koodilohkosis} +\citet*[27--29]{johdatus} % Viittaus teokseen ”johdatus”. +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen \& Teikäläinen (2020: 27--29) +\end{tulossis} + +\noindent +Lähdeluettelo kirjoitetaan \ymparistom{thebibliography}\-/ ympäristön ja +\komentom{bibitem}\-/ komentojen avulla esimerkin +\ref{esim/thebibliography} tavoin. Ympäristön aloittavan komennon +(rivi~1) yhteydessä on argumentti \koodi{00}, jolla ei ole tässä +yhteydessä merkitystä. Jos lähdeviittauksen tyylinä olisi +\koodi{numbers} (eikä \koodi{author\-year}), lähdeluettelon teokset +numeroitaisiin, ja silloin \ymparisto{thebibliography}\-/ ympäristön +argumentti ilmaisee, kuinka leveän sisennyksen numeroidut teokset +tarvitsevat. Argumentiksi voi kirjoittaa mitä tahansa merkkejä, ja Latex +mittaa niiden leveyden. Kannattaa kirjoittaa leveitä numeroita kuten +nollia (\koodi{0}) niin monta kappaletta kuin on numeroita suurimmassa +lähdemerkinnän luvussa. Yksi nolla riittää, jos lähteitä on 1\==9 +kappaletta, kaksi jos lähteitä on kaksinumeroinen määrä eli 10\==99 +kappaletta jne. + +\begin{esimerkki*} + \ymparistoi{thebibliography} + \komentoi{bibitem} + +\begin{koodilohko} +\begin{thebibliography}{00} + +\bibitem[Meikäläinen ym.(2020)Meikäläinen \& Teikäläinen]{johdatus} + Meikäläinen, Matti \& Teikäläinen, Teija (2020): Johdatus alkeiden + perusteisiin. Toinen painos. Kustantaja Oy. + +\bibitem[Itkonen(2019)]{typografia} Itkonen, Markus (2019): Typografian + käsikirja. Viides, tarkistettu painos. Typoteekki. Graafinen + suunnittelu Markus Itkonen Oy. + +\end{thebibliography} +\end{koodilohko} + \caption{Lähdeluettelon kirjoittaminen \ymparisto{thebibliography}\-/ + ympäristön ja \komento{bibitem}\-/ komentojen avulla.} + \label{esim/thebibliography} +\end{esimerkki*} + +Komennolla \komento{bibitem} tehdään varsinaiset teosmerkinnät. Samalla +määritetään teoksen yksilöllinen tunniste ja mitä tietoja +lähdeviittauksissa näytetään. Yleinen muoto on seuraavanlainen: + +\komentoi{bibitem} +\begin{koodilohkosis} +\bibitem[lyhyt(vuosi)pitkä]{tunniste} Lähdeluettelon tekstit. +\end{koodilohkosis} + +\noindent +Valinnaisen argumentin aluksi kirjoitetaan lähdeviittauksen lyhyt +merkintä, joka tulisi näkymään lähdeviittauksissa esimerkiksi muodossa +''Meikäläinen ym.''. Heti sen perään kirjoitetaan sulkeissa teoksen +vuosiluku ja sen perään vapaavalintainen lähdeviittauksen pitkä +merkintä, joka näkyisi esimerkiksi tekstinä ''Meikäläinen \& +Teikäläinen''. Vuosiluvun sulkeiden ympärillä ei saa olla välilyöntejä. + +Komennon pakollinen argumentti on kyseisen lähdeteoksen yksilöllinen +tunniste, jonka avulla kyseiseen teokseen viitataan. Komennon +argumenttien jälkeen kirjoitetaan samaan tekstikappaleeseen teksti, joka +tulee näkymään lähdeluettelossa. + +Lähdeteoksiin viittaamiseen on useita eri komentoja, jotka eroavat +toisistaan siinä, mitä tietoa lähdeviittauksessa näytetään ja onko +lähdeviittaus tai sen osa sulkeissa vai ei. Taulukossa +\ref{tlk/natbib-cite} on joitakin \paketti{natbib}\-/paketin +viittauskomentoja sekä esimerkki viittauksen ulkoasusta. Kuviteltu +esimerkkiteos on peräisin esimerkistä \ref{esim/thebibliography}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\komento{#1}\komentoarg{\dots} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Komento} & \ots{Esimerkki} \\ + \midrule + \rivi{citet}{Meikäläinen ym. (2020)} + \rivi{citet*}{Meikäläinen \& Teikäläinen (2020)} + \rivi{citep}{(Meikäläinen ym. 2020)} + \rivi{citep*}{(Meikäläinen \& Teikäläinen 2020)} + \rivi{citealt}{Meikäläinen ym. 2020} + \rivi{citealt*}{Meikäläinen \& Teikäläinen 2020} + \rivi{citeauthor}{Meikäläinen ym.} + \rivi{citeauthor*}{Meikäläinen \& Teikäläinen} + \rivi{citeyear}{2020} + \rivi{citeyearpar}{(2020)} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{natbib}\-/paketin lähdeviittauskomentoja} + \label{tlk/natbib-cite} +} + +Lähdeluettelon ulkoasuun voi vaikuttaa mittojen \mittam{bibhang} ja +\mittam{bibsep} avulla. Ensin mainittu on lähdemerkinnän vaakasuuntaisen +riippuvan sisennyksen suuruus, ja jälkimmäinen on lähdemerkintöjen +välinen pystysuuntainen tila. Mitat asetetaan \komento{setlength}\-/ +komennolla (luku \ref{luku/mitat}): + +\komentoi{setlength} +\mittai{parindent} +\mittai{bibhang} +\mittai{bibsep} +\begin{koodilohkosis} +\setlength{\parindent}{1.1em} % tekstikappaleiden 1. rivin sisennys +\setlength{\bibhang}{\parindent} +\setlength{\bibsep}{.5ex plus .1ex minus .1ex} +\end{koodilohkosis} + +\noindent +Lähdemerkintöjen fonttiin voi vaikuttaa määrittelemällä uudelleen +komennon \komentom{bibfont} ja sijoittamalla halutut fontti- tai muut +komennot kyseisen komennon määritelmään. + +\komentoi{renewcommand} +\komentoi{bibfont} +\begin{koodilohkosis} +\renewcommand{\bibfont}{\sffamily\small} +\end{koodilohkosis} + +\noindent +Oletuksena \ymparisto{thebibliography}\-/ ympäristö latoo +lähdeluettelolle otsikon, ja otsikon teksti määräytyy kieliasetusten +(luku \ref{luku/kieliasetukset}) ja dokumenttiluokan perusteella (luku +\ref{luku/dokumenttiluokat}). Suomenkielisen lähdeluettelon otsikon voi +määrittää dokumentin esittelyosassa seuraavan esimerkin tavoin. +Esimerkissä hyödynnetään \komento{addto}\-/ komentoa, joka sisältyy +\paketti{polyglossia}\-/{} ja \paketti{babel}\-/ paketteihin. + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{refname} +\komentoi{bibname} +\luokkai{article} +\luokkai{book} +\luokkai{report} +\begin{koodilohkosis} +\addto{\captionsfinnish}{% + \renewcommand{\refname}{Lähteet} % article-dokumenttiluokka + \renewcommand{\bibname}{Lähteet} % report- ja book-luokat +} +\end{koodilohkosis} + +\noindent +On myös mahdollista määritellä koko komentosarja, joka suoritetaan +lähdeluettelon otsikoinnin yhteydessä. Se tehdään määrittelemällä +uudelleen komento \komentom{bibsection}. + +\komentoi{renewcommand} +\komentoi{bibsection} +\komentoi{setcounter} +\laskurii{secnumdepth} +\komentoi{section} +\begin{koodilohkosis} +\renewcommand{\bibsection}{% + \setcounter{secnumdepth}{-1} + \section{Lähteet} +} +\end{koodilohkosis} + +\noindent +Edellisessä esimerkissä komennolla \komento{setcounter} määritetään, +mille otsikkotasolle dokumentin otsikoiden eli lukujen numerointi yltää. +Pieni arvo \mbox{(\koodi{-1})} käytännössä tarkoittaa, että seuraaviin +otsikoihin ei tule numerointia; lähdeluettelon otsikkoon ei numerointia +välttämättä haluta. Komento \komento{section} tekee itse otsikon. + +Jos ei halua, että \ymparisto{thebibliography}\-/ ympäristö tekee +otsikon automaattisesti, voi \komento{bibsection}\-/ komennon määrittää +tyhjäksi. + +\komentoi{renewcommand} +\komentoi{bibsection} +\begin{koodilohkosis} +\renewcommand{\bibsection}{} +\end{koodilohkosis} + +\noindent +Tässä alaluvussa on käsitelty lähdeluettelon ja lähdeviitteiden +tekemistä \paketti{natbib}\-/paketin toimintojen avulla. Paketti +sisältää muitakin ominaisuuksia, joihin kannattaa tutustua paketin +ohjekirjan avulla. On muun muassa mahdollista tehdä lähdeteoksista +tietokanta Bibtex\-/järjestelmän avulla. Jos kuitenkin siihen suuntaan +haluaa edetä, ei kannata käyttää \paketti{natbib}\-/pakettia eikä +Bibtexiä vaan monipuolisempaa pakettia \paketti{biblatex}, jota +käsitellään seuraavassa alaluvussa. + +\subsection{Vaativaan käyttöön (biblatex)} +\label{luku/biblatex} + +Suurten lähde- ja kirjallisuusluetteloiden ylläpito voi olla aika +työlästä: pitää jatkuvasti varmistaa, että kaikki viitatut teokset ovat +luettelossa ja että luettelo on pilkulleen yhdenmukainen. Paketti +\pakettictan{biblatex} on vastaus sellaisiin tarpeisiin. + +Ajatuksena on, että kaikki tiedonlähteet ja kirjallisuus kirjoitetaan +tietokantaan, josta \paketti{biblatex}\-/paketin komennot hakevat tiedot +automaattisesti. Kirjoittaja tai työryhmä voi ylläpitää yhtä +kirjallisuustietokantaa, joka voi olla saatavilla oman laitoksen +verkkopalvelimella tai julkisella verkkosivullakin. Dokumentin tekstissä +viitataan teoksiin yksilöllisen tunnisteen avulla, ja pelkän viittauksen +perusteella oikeat teokset ilmestyvät lähdeluetteloon automaattisesti +aakkosjärjestyksessä ja yhdenmukaisessa muodossa. Yhtään tiedonlähdettä +ei tarvitse kirjoittaa lopulliseen lähdeluetteloon käsin. + +\paketti{biblatex}\-/paketin käyttö vaatii hieman opettelua -- varsinkin +jos on tarve muokata lähdeluettelon ja lähdeviittausten ulkoasua. +Muutaman tiedonlähteen ylläpito on todennäköisesti paljon helpompaa ja +nopeampaa niillä keinoilla, jotka on kuvattu luvussa \ref{luku/natbib} +(\paketti{natbib}). Sen sijaan laajoja tieteellisiä artikkeleita +kirjoittaville \paketti{biblatex} voi olla suuri apu, koska +artikkeleissa on yleensä paljon lähteitä ja useissakin artikkeleissa +viitataan yleensä samoihin lähteisiin. + +\subsubsection{Teostietokanta} + +Lähdeteosten tietokanta on erillinen tekstitiedosto, joka tavallisesti +nimetään \koodi{bib}\-/päätteiseksi, esimerkiksi \koodi{teokset.bib}. +Tiedosto koostuu \koodi{@}\=/merkillä ja teostyypin nimellä alkavista +tietueista, joiden yleinen muoto on seuraavanlainen: + +\begin{koodilohkosis} +@teostyyppi{tunniste, + author = {...}, + title = "..." +} +\end{koodilohkosis} + +\noindent +Teostyypin nimen jälkeen aaltosulkeiden sisään kirjoitetaan teoksen +kaikki tiedot. Ne alkavat teoksen yksilöllisellä tunnisteella, jota +käytetään lähdeviittauksissa. Tunnisteen jälkeen tulevat muut kentät. +Eri kentät kuten \koodi{author} ja \koodi{title} erotetaan toisistaan +pilkulla. Kentän nimi ja sen sisältö erotetaan toisistaan +yhtäsuuruusmerkillä (\koodi{=}), ja kentän sisältö kirjoitetaan +aaltosulkeiden tai lainausmerkkien sisään, kuten edellinen esimerkki +näyttää. + +\begin{esimerkki*} +\begin{koodilohko} +@book{itkonen_typogr, + author = {Itkonen, Markus}, + title = {Typografian käsikirja}, + date = {2019}, + edition = {5}, + publisher = {Typoteekki. Graafinen suunnittelu Markus Itkonen Oy} +} + +@incollection{likonen_teams, + author = {Likonen, Teemu and Riskilä, Kaisa}, + title = {Verkkoyhteistyö Teams-ympäristössä}, + editor = {Tammi, Tuomo and Horila, Mikko}, + booktitle = {Oppimis- ja toimintaympäristöjen kehittäminen + harjoittelukouluissa II}, + booksubtitle = {Tilat ja tekniikka pedagogisen kehittämisen tukena}, + publisher = {E-norssi. Opettajankouluttajien yhteistyöverkosto}, + date = {2020}, + pages = {85-92}, + url = {http://www.enorssi.fi/oppimisymparistojulkaisu2020/} +} + +@article{likonen_tietokanta, + author = {Likonen, Teemu}, + title = {Tietoa kantaan ja takaisin}, + journaltitle = {Skrolli}, + journalsubtitle = {Tietokonekulttuurin erikoislehti}, + date = {2015}, + volume = {2015}, + number = {4}, + pages = {52-55}, + url = {https://skrolli.fi/numerot/2015-4/} +} + +@online{ctan, + title = {Comprehensive TeX Archive Network}, + shorttitle = {CTAN}, + date = {1992/}, + url = {https://www.ctan.org/} +} +\end{koodilohko} + \caption{Lähdeteosten tietokantatiedosto} + \label{esim/bib-tiedosto} +\end{esimerkki*} + +Todellista käyttöä vastaava tietokanta tai sen osa on esimerkissä +\ref{esim/bib-tiedosto}, jossa on neljä erityyppistä teostietuetta: +\koodim{book}, \koodi{incollection}, \koodi{article} ja \koodi{online}. +Ensin mainittu teostyyppi \koodi{book} sopii tavallisille kirjoille, +joissa tietyt tekijät (\koodi{author}) vastaavat suunnilleen koko +teoksen sisällöstä ja teoksella on jokin julkaisijataho +(\koodi{publisher}). + +Teostyyppi \koodim{incollection} tarkoittaa esimerkiksi +artikkelikokoelmaa, jonka yksittäiseen artikkeliin (\koodi{title}) ja +sen kirjoittajaan (\koodi{author}) on tarkoitus viitata. Voidaan mainita +myös artikkelin alku- ja loppusivut (\koodi{pages}). Kokoelmalla on +toimittaja (\koodi{editor}) ja yhteinen nimi (\koodi{book\-title}). + +Tyyppi \koodim{article} sopii säännöllisesti julkaistavan aikakaus- tai +muun lehden artikkeleihin. Viittauskohteena on yksittäinen artikkeli ja +sen kirjoittaja. Julkaisutiedoissa mainitaan lehden nimi +(\koodi{jour\-nal\-title}), julkaisukausi (\koodi{vol\-ume}), kauteen +kuuluvan julkaisun järjestysnumero (\koodi{num\-ber}) sekä mahdollisesti +artikkelin sivut (\koodi{pages}). + +Verkkolähteiden merkitsemiseen sopii \koodim{online}\-/ teostyyppi, +joissa on tavanomaisten kenttien lisäksi ainakin verkko\-/osoite eli +\koodi{url}\-/kenttä ja mahdollisesti viittauspäivä (\koodi{url\-date}) +osoittamassa, milloin viitatut tiedot olivat saatavilla. + +Teostyyppejä ja teoksiin liittyviä tietokenttiä on olemassa paljon +muitakin. Niiden merkitystä ja käyttöä neuvotaan tarkemmin +\paketti{biblatex}\-/paketin ohjeissa. Seuraavassa on kuitenkin pari +huomiota tietokannan ja kenttien kieliopillisista asioista. + +Tietueissa joidenkin kenttien sisältö voi koostua useasta osasta kuten +saman teoksen eri tekijöistä. Eri tekijöiden nimet erotetaan +\koodi{author}- ja \koodi{editor}\-/kentissä toisistaan +\koodi{and}\-/sanalla. Oletuksena \paketti{biblatex} katsoo, että +tekijät ovat henkilöitä, ja käsittelee esimerkiksi etu- ja sukunimet +tietyllä tavalla: jos mukana on pilkku, sitä ennen on sukunimi, ja +etunimet tulevat pilkun jälkeen; jos pilkkua ei ole, etunimet ovat +ensin, ja sukunimi on lopussa. + +Jos kuitenkin teoksen tekijänä on yritys tai yhteisö, täytyy sen nimi +kirjoittaa kokonaan aaltosulkeisiin, jottei sitä tulkittaisi +henkilönnimeksi. Tällaisten aaltosulkeiden sisällä voi käyttää +\koodi{and}\-/ sanaa normaalisti, eikä sitä tulkita eri tekijöiden +erottimeksi. Seuraavassa on näistä esimerkit: + +\begin{koodilohkosis} +author = {Meikäläinen, Matti and Teikäläinen, Teija} +author = {{Org. of Latex and Typography} and Meikäläinen, Matti} +\end{koodilohkosis} + +\noindent +Muunkinlaisia useasta osasta koostuvia kenttiä on olemassa. +Asiasanakentän (\koodi{keywords}) eri sanat erotetaan toisistaan +pilkulla, ja sivunumeroissa (\koodi{pages}) voi olla myös lukualueita, +jotka ilmaistaan yhdysmerkillä~\mbox{(\koodi{-})}. + +\begin{koodilohkosis} +keywords = {eri, sanoja, peräkkäin} +pages = {15-19} +\end{koodilohkosis} + +\noindent +Teostietokantaan voi määrittää vakiosisältöisiä muuttujia käyttämällä +\koodi{@string}\-/ rakennetta. Vakioihin voi sitten viitata +teostietueiden kentistä esimerkin \ref{esim/bib-muuttujat} tavoin. +Vakiot ovat hyödyllisiä silloin, kun sama kentän sisältö toistuu useissa +teoksissa, kuten tässä esimerkissä sama tekijä (\koodi{author}) ja +aikakauslehden nimi (\koodi{jour\-nal\-title}). Vakioita voi yhdistää +saman kentän muuhun sisältöön käyttämällä \koodi{\#}\=/merkkiä, kuten +esimerkin rivillä 13 on tehty. + +\begin{esimerkki*} +\begin{koodilohko} +@string{ + oma = {Meikäläinen, Matti}, + lehti = {Hienon hieno aikakauslehti} +} + +@article{hieno_artikkeli, + author = oma, + journaltitle = lehti, + ... +} + +@article{toinen_artikkeli, + author = oma # { and Teikäläinen, Teija}, + journaltitle = lehti, + ... +} +\end{koodilohko} + \caption{Muuttujien käyttö ja \koodi{@string}\-/rakenne} + \label{esim/bib-muuttujat} +\end{esimerkki*} + +\subsubsection{Käyttöönotto} + +\paketti{biblatex}\-/paketti otetaan käyttöön esimerkin +\ref{esim/biblatex-käyttöönotto} rivien avulla. Mukana ovat myös paketit +\paketti{polyglossia} ja \paketti{csquotes}. Jälkimmäinen sisältää +lainausmerkkien käyttöön liittyvää logiikkaa (luku +\ref{luku/lainausmerkit}), jota ilman \paketti{biblatex} ei saa eri +kielten erilaisia lainausmerkkejä oikein vaan käyttää pelkästään +amerikkalaisia (``~''). + +\begin{esimerkki*} + \komentoi{usepackage} + \pakettii{polyglossia} + \pakettii{csquotes} + \pakettii{biblatex} + +\begin{koodilohko} +% Polyglossia tai babel on ladattava ennen biblatexia. +\usepackage{polyglossia} + +% Kielikohtaiset lainausmerkit oikein csquoten avulla. +\usepackage{csquotes} + +\usepackage[style=authoryear]{biblatex} +\end{koodilohko} + \caption{\paketti{biblatex}\-/ paketin käyttöönotto ja asetuksia} + \label{esim/biblatex-käyttöönotto} +\end{esimerkki*} + +Paketin asetuksissa käytetään valitsinta \koodi{style} ja sen asetusta +\koodi{author\-year}, joka asettaa lähdeviittausten ja lähdeluettelon +tyyliksi tekijän ja vuosiluvun. Se on yleinen käytäntö suomenkielisissä +teksteissä. Vastaavia tyylejä ovat myös \koodi{author\-year-comp}, +\koodi{author\-year-ibid} ja \koodi{author\-year-icomp}, jotka lisäksi +tiivistävät peräkkäisiä lähdeviittauksia, jos teoksen tekijä on sama. + +Numerointiin tai kirjainlyhenteisiin perustuvat lähdeluettelo\-/{} ja +viittaustyylit ovat nimeltään \koodi{nu\-mer\-ic} ja +\koodi{al\-pha\-bet\-ic}. Muitakin tyylejä on olemassa, mutta tämän +oppaan esimerkeissä käsitellään tekijä--vuosi-tyyliä. + +Paketin omien lähdeluettelo\-/{} ja viittaustyylien lisäksi +Latex\-/jakelupaketissa on todennäköisesti mukana myös ulkopuolisten +tahojen tekemiä tyylejä. Tyylikokonaisuus nimeltä +\pakettictan{biblatex-ext} laajentaa \paketti{biblatex}\-/ paketin +tavallisten tyylien ominaisuuksia. Laajennettujen tyylien käyttäminen ei +vaadi erillisen paketin lataamista, vaan tyylin saa käyttöön +yksinkertaisesti vain kirjoittamalla sen nimen +\paketti{biblatex}\-/paketin lataamisen yhteydessä. Laajennetut tyylit +alkavat kirjaimilla \mbox{\koodi{ext-},} esimerkiksi +\koodi{ext-author\-year} tai \koodi{ext-author\-year-comp}. + +Esimerkin \ref{esim/biblatex-käyttöönotto} komentojen lisäksi täytyy +komennolla \komento{addbibresource} nimetä kaikki käyttöön otettavat +teostietokantatiedostot. Komentoja ja tiedostoja voi olla useampiakin, +ja tietokanta voi olla myös verkko\-/osoitteen takana oleva tiedosto. +\komento{addbibresource}\-/ komennot täytyy kirjoittaa Latex\-/ +dokumentin esittelyosaan. + +\komentoi{addbibresource} +\begin{koodilohkosis} +\addbibresource{teokset.bib} +\addbibresource{~/texmf/omat_kirjoitukset.bib} +\addbibresource[location=remote]{http://osoite.netissä/yhteiset.bib} +\end{koodilohkosis} + +\noindent +Lähdeluettelo ladotaan dokumenttiin komennolla +\komento{printbibliography}. Komennolle voi antaa valinnaisen +argumentin, jonka valitsimilla vaikutetaan esimerkiksi lähdeluettelon +otsikon tekstiin tai poistetaan automaattinen otsikointi kokonaan. On +myös olemassa erilaisia lähdeteosten rajaamisvalitsimia, joiden avulla +voi määrittää, mitä teoksia kyseiseen luetteloon halutaan. Näin voidaan +esimerkiksi rajata painetut lähteet yhteen luetteloon, julkaisemattomat +toiseen ja verkkolähteet kolmanteen. + +\komentoi{printbibliography} +\begin{koodilohkosis} +\printbibliography +\printbibliography[title={Lähteet}] +\printbibliography[heading=none, % Ei automaattista otsikkoa, + type=online] % ja rajataan vain online-tyyppisiin. +\end{koodilohkosis} + +\noindent +Lähdeluetteloon tulevat mukaan vain ne teokset, joihin on viitattu. +Mitään ei siis näy, jos ei ole lähdeviittauksia. Seuraavassa alaluvussa +käsitellään lähdeviittauskomentoja ja myös ''näkymätöntä'' +viittauskomentoa, jolla teoksia saadaan mukaan luetteloon ilman näkyvää +viittausta. + +\subsubsection{Lähdeviittaukset} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\komento{#1}\komentoarg{\dots} & #2 \\} + \begin{tabular}{ll} + \toprule + \ots{Komento} & \ots{Esimerkki} \\ + \midrule + \rivi{cite}{Meikäläinen 2020} + \rivi{textcite}{Meikäläinen (2020)} + \rivi{parencite}{(Meikäläinen 2020)} + \rivi{citeauthor}{Meikäläinen} + \rivi{citeyear}{2020} + \rivi{citetitle}{[teoksen nimi]} + \rivi{footcite}{Meikäläinen 2020 [alaviitteessä]} + \rivi{nocite}{[näkymätön viittaus]} + \bottomrule + \end{tabular} +}{ + \caption{\paketti{biblatex}\-/paketin lähdeviittauskomentoja} + \label{tlk/biblatex-cite} +} + +Taulukkoon \ref{tlk/biblatex-cite} on koottu tavallisimpia +\paketti{biblatex}\-/paketin viittauskomentoja. Komennoille voi antaa +valinnaisen argumentin, jolla kerrotaan täsmentävää tietoa +lähdeviittauksesta. Yleensä se on viitattavan teoksen sivunumero. +Viittaus näkyy dokumentissa esimerkiksi seuraavalla tavalla: + +\komentoi{textcite} +\begin{koodilohkosis} +\textcite[27--29]{johdatus} % Viittaus teokseen ”johdatus”. +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen ja Teikäläinen (2020, s. 27--29) +\end{tulossis} + +\noindent +Jos halutaan sisällyttää lähdeluetteloon teoksia, joihin ei ole +välttämättä viitattu, käytetään dokumentissa kerran ''näkymätöntä'' +viittauskomentoa \komento{nocite}. Sille annetaan argumentiksi +tunnisteet niistä teoksista, jotka halutaan mukaan luetteloon. +Argumentti~\koodi{*} (tähti) valitsee kaikki teokset. + +\komentoi{nocite} +\begin{koodilohkosis} +\nocite{meikäläinen, teikäläinen} % Nämä teokset mukaan. +\nocite{*} % Kaikki mukaan. +\end{koodilohkosis} + +\subsubsection{Lähdetiedostojen kääntäminen} + +Latexin kääntäjäohjelmat Lualatex tai Xelatex eivät yksinään riitä, +sillä teostietokanta ei ole tavallinen Latex\-/muotoinen tiedosto. +Tarvitaan myös Latex\-/jakelun mukana tulevaa komentoa \koodi{biber}, +joka käsittelee teostietokantaan liittyviä tiedostoja. Lopulta +Latex\-/kääntäjääkin täytyy kutsua kaksi kolme kertaa, jotta kaikki +ristiviitteet saadaan kuntoon. Komentojen suoritusjärjestys on +seuraavanlainen: + +\begin{koodilohkosis} +lualatex teksti.tex +biber teksti.bcf +lualatex teksti.tex +lualatex teksti.tex +\end{koodilohkosis} + +\noindent +Edellisen esimerkin komennoissa voi tiedoston nimistä jättää päätteet +pois (\koodi{.tex}, \koodi{.bcf}). \koodi{lualatex}\-/ ohjelman paikalla +voi olla myös \koodi{xelatex}. Kääntäminen on vielä helpompaa, kun +käyttää \koodi{latexmk}\-/ ohjelmaa (luku \ref{luku/latexmk}), joka osaa +automaattisesti suorittaa myös \koodi{biber}\-/ ohjelman ja tarvittavat +uudelleen kääntämiset. Yksi komento riittää: + +\begin{koodilohkosis} +latexmk -lualatex teksti.tex % tai: -xelatex +\end{koodilohkosis} + +\subsubsection{Lähdeluettelon mittoja} + +Lähdeluettelon ulkoasuun voi vaikuttaa muutaman eri mitan avulla, joista +esitellään tässä yhteydessä vain osa. Lähdemerkinnän riippuvan +sisennyksen suuruus määräytyy mitan \mittam{bibhang} avulla. Yleensä +lienee sopivaa asettaa se samaksi kuin tekstikappaleiden ensimmäisen +rivin sisennys \mitta{parindent}. + +\komentoi{setlength} +\mittai{parindent} +\mittai{bibhang} +\begin{koodilohkosis} +\setlength{\parindent}{1.1em} % tekstikappaleiden 1. rivin sisennys +\setlength{\bibhang}{\parindent} +\end{koodilohkosis} + +\noindent +Mitta \mitta{bibitemsep} on lähdemerkintöjen välinen pystysuuntainen +tila. \mittamargin{bibitemsep} Sen avulla voi harventaa lähdeluetteloa, +jolloin lähdemerkinnät erottuvat paremmin toisistaan. Mitan +\mittam{bibnamesep} avulla voi tehdä suuremman pystysuuntaisen välin +lähdemerkintöjen väliin silloin, kun teoksen tekijä vaihtuu +(\koodi{author} tai \koodi{editor}). Toisin sanoen tämän mitan avulla +voi ryhmitellä saman tekijän teokset tiiviimmin yhteen ja jättää väliä +seuraavan tekijän teoksiin. Vastaavanlainen mitta on +\mittam{bibinitsep}, jota käytetään silloin, kun lähdemerkinnän +aloittava kirjain vaihtuu. Tämän avulla voi ryhmitellä lähdemerkinnät +aakkosittain eli tehdä suuremman välin aina lähdemerkinnän alkukirjaimen +vaihtuessa. + +\komentoi{setlength} +\mittai{bibitemsep} +\mittai{bibnamesep} +\mittai{bibinitsep} +\begin{koodilohkosis} +\setlength{\bibitemsep}{.5ex plus .1ex minus .1ex} +\setlength{\bibnamesep}{1em plus .2ex minus .1ex} +\setlength{\bibinitsep}{2em plus .2ex minus .1ex} +\end{koodilohkosis} + +\subsubsection{Muita asetuksia} + +Lähdemerkintöjen fonttiin voi vaikuttaa määrittelemällä uudelleen +komennon \komentom{bibfont} ja sijoittamalla halutut fontti- tai muut +komennot kyseisen komennon määritelmään. + +\komentoi{renewcommand} +\komentoi{bibfont} +\begin{koodilohkosis} +\renewcommand{\bibfont}{\sffamily\small} +\end{koodilohkosis} + +\noindent +Lähdemerkinnät itsessään muodostetaan automaattisesti tiettyjen +tyyliasetusten perusteella. Omiakin tyylejä voi tehdä, mutta yleensä +riittää vain yksittäisen asetusten muuttaminen. Niistä käsitellään tässä +yhteydessä muutama. Asetusten muuttamiseen tarvitaan yleensä +\paketti{biblatex}\-/ paketin omia asetuskomentoja. + +Lähdeluettelon nimet näkyvät oletusasetuksilla siten, että teoksen +ensimmäisen tekijän sukunimi mainitaan ensin (luettelon +aakkosjärjestyksen vuoksi) mutta saman teoksen muiden tekijöiden etunimi +mainitaan ensin. Tekijöiden nimet näkyvät siis seuraavalla tavalla: +''Meikäläinen, Matti ja Teija Teikäläinen''. Suomessa on kuitenkin +tapana kirjoittaa kaikki nimet samalla tavalla ja mainita sukunimi aina +ensin. Tämä saadaan toteutettua seuraavilla komennolla: + +\komentoi{DeclareNameAlias} +\begin{koodilohkosis} +\DeclareNameAlias{default} {family-given} +\DeclareNameAlias{sortname}{family-given} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti ja Teikäläinen, Teija (2020). --~-- +\end{tulossis} + +\noindent +Saman teoksen eri tekijöiden nimet erotetaan oletuksena toisistaan +pilkuilla paitsi kahden viimeisen nimen välissä on \textit{ja}-sana. +Usein on kuitenkin tapana käyttää \&\=/merkkiä ainakin lähdeluettelossa. +Seuraavat esimerkkikomennot asettavat lähdeluettelon kaikkien nimien +erottimeksi \&\=/merkin. + +\komentoi{DeclareDelimFormat} +\begin{koodilohkosis} +\DeclareDelimFormat[bib]{multinamedelim}{\space\&\space} +\DeclareDelimFormat[bib]{finalnamedelim}{\space\&\space} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti \& Teikäläinen, Teija \& Tutkija, Tuija (2020). + --~-- +\end{tulossis} + +\noindent +Erotinmerkkiasetuksen nimi \koodi{multi\-name\-delim} tarkoittaa muiden +kuin kahden viimeisen tekijän nimen välissä olevaa erotinta. Kahden +viimeisen nimen erotin määritellään asetuksella +\koodi{final\-name\-delim}. + +Edellisten esimerkkikomentojen valinnainen argumentti \koodi{bib} +tarkoittaa, että vaikutetaan vain lähdeluetteloon. Argumentti voi olla +myös esimerkiksi \koodi{cite}, \koodi{textcite} tai \koodi{parencite}, +jolloin vaikutetaan samannimisillä komennoilla tehtyihin +lähdeviittauksiin: \komento{cite}, \komento{textcite} ja +\komento{parencite}. Katso lähdeviittauskomennot taulukosta +\ref{tlk/biblatex-cite}. Seuraava esimerkki vaihtaa +\komento{parencite}\-/ komentoon asetuksen, niin että kahden viimeisen +henkilön nimen väliin ladotaan \&\=/merkki. Oletuksena viittauksissa +käytetään \textit{ja}\-/sanaa. + +\komentoi{DeclareDelimFormat} +\begin{koodilohkosis} +\DeclareDelimFormat[parencite]{finalnamedelim}{\space\&\space} +\end{koodilohkosis} + +\begin{tulossis} + (Meikäläinen, Teikäläinen \& Tutkija 2020) +\end{tulossis} + +\noindent +Useiden saman teoksen tekijöiden luettelot lyhennetään automaattisesti +esimerkiksi muotoon ''Meikäläinen et~al.'', ja lyhentämisen säännöt +määritellään tiettyjen \koodi{max}- ja \koodi{min}\-/alkuisten paketin +valitsimien avulla. Lähdeluettelossa teoksen tekijäluetteloon +vaikutetaan valitsimilla \koodi{max\-bib\-names} ja +\koodi{min\-bib\-names}, kun taas lähdeviittausten tekijäluetteloon +vaikutetaan valitsimilla \koodi{max\-cite\-names} ja +\koodi{min\-cite\-names}. Asetukset toimivat siten, että jos +enimmäismäärä (max) ylittyy, typistetään tekijäluettelo vähimmäismäärään +(min) ja lisätään ilmaus ''et al.'' tms. + +Tekijäluetteloa ei kuitenkaan välttämättä lyhennetä, jos luettelosta +tulisi täsmälleen samanlainen kuin jollakin toisella teoksella. Tähän +asiaan puolestaan vaikutetaan valitsimella \koodi{unique\-list}, joka on +oletuksena päällä viittaustyylissä \koodi{author\-year}. + +\komentoi{usepackage} +\pakettii{biblatex} +\begin{koodilohkosis} +\usepackage[style=authoryear, maxbibnames=99, minbibnames=3, + maxcitenames=3, mincitenames=1, uniquelist=true]{biblatex} +\end{koodilohkosis} + +\noindent +Kun halutaan näyttää lähdeluettelossa vain tekijän etunimen alkukirjain +eikä koko etunimeä, käytetään paketin valitsinta \koodi{given\-inits}. + +\komentoi{usepackage} +\pakettii{biblatex} +\begin{koodilohkosis} +\usepackage[…, giveninits]{biblatex} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, M. (2020). -- -- +\end{tulossis} + +\noindent +Lähdeluettelossa näytetään teoksen tekijän nimen kohdalla ajatusviiva, +jos tekijä on sama kuin luettelon edelliselläkin teoksella. Mikäli tätä +(sinänsä yleistä) käytäntöä ei haluta, täytyy käyttää paketin asetusta +\koodi{dash\-ed=\katk false}. + +\komentoi{usepackage} +\pakettii{biblatex} +\begin{koodilohkosis} +\usepackage[…, dashed=false]{biblatex} +\end{koodilohkosis} + +\noindent +Joskus on tapana latoa lähdeluettelossa tekijöiden nimet esimerkiksi +pienversaalilla, jotta ne erottuvat luettelosta paremmin. Tällainen +muutos vaatii, että lähdeluettelon latomisen yhteydessä määritellään +uudelleen henkilön nimiin liittyvät latomiskomennot +\komento{mkbibnamefamily}, \komento{mkbibnamegiven}, +\komento{mkbibnameprefix} ja \komento{mkbibnamesuffix}. Se saadaan +automaattiseksi seuraavilla komennoilla: + +\komentoi{AtBeginBibliography} +\komentoi{mkbibnamefamily} +\komentoi{mkbibnamegiven} +\komentoi{mkbibnameprefix} +\komentoi{mkbibnamesuffix} +\begin{koodilohkosis} +\AtBeginBibliography{% + \renewcommand{\mkbibnamefamily}[1]{\textsc{#1}} + \renewcommand{\mkbibnamegiven} [1]{\textsc{#1}} + \renewcommand{\mkbibnameprefix}[1]{\textsc{#1}} + \renewcommand{\mkbibnamesuffix}[1]{\textsc{#1}} +} +\end{koodilohkosis} + +\begin{tulossis} + \textsc{Meikäläinen}, \textsc{Matti} \& \textsc{Teikäläinen}, + \textsc{Teija} (2020). -- -- +\end{tulossis} + +\noindent +Lähdeluettelon eri osien erottimena on yleensä piste. Joskus kuitenkin +tekijöiden nimien ja vuosiluvun jälkeen halutaan kaksoispiste. Se +saadaan toteutettua seuraavalla komennolla: + +\komentoi{DeclareDelimFormat} +\begin{koodilohkosis} +\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti (2020): -- -- +\end{tulossis} + +\noindent +Oletuksena \paketti{biblatex} kursivoi \koodi{book}\-/ tyyppisten +teosten nimen (\koodi{title}). Sen sijaan artikkelikokoelmissa +(\koodi{incollection}) ja aikakauslehdissä (\koodi{article}) +kursivoidaan julkaistun kokoelman nimi (\koodi{book\-title}) ja +aikakauslehden nimi (\koodi{jour\-nal\-title}). Näissä teostyypeissä +viitatun artikkelin nimi (\koodi{title}) kirjoitetaan lainausmerkkeihin. +Käytäntö tuntuu järkevältä, sillä kursivoituna on aina julkaistu +kokonainen teos eikä sen osa. Käytännössähän tiedonlähde joudutaan +hakemaan teoksen nimen perusteella. Joku voi silti haluta muuttaa näiden +ulkoasua ja esimerkiksi kursivoida aina viittauksen kohteena olevan +artikkelin. Seuraavassa on esimerkkikomennot edellä mainittujen +lähdeluettelon kenttien muuttamiseen. + +\komentoi{DeclareFieldFormat} +\begin{koodilohkosis} +\DeclareFieldFormat[article,incollection]{title}{\emph{#1}} +\DeclareFieldFormat[article]{journaltitle}{#1} +\DeclareFieldFormat[incollection]{booktitle}{#1} +\end{koodilohkosis} + +\noindent +Edellä olevissa esimerkkikomennoissa on valinnaisena argumenttina ne +teostyypit, joihin halutaan vaikuttaa. Jos valinnaisen argumentin jättää +pois, vaikutetaan kaikkiin teostyyppeihin, ellei tarkempaa +teostyyppikohtaista määritelmää ole olemassa. Ensimmäinen pakollinen +argumentti on kentän nimi teostietokannassa, ja toinen pakollinen +argumentti on sisältö, joka ladotaan lähdemerkintään kyseisen tiedon +kohdalle. Teostietokannasta tulevan kentän sisältö on parametrissa +\koodi{\#1}. + +Mikäli haluaa jonkin teoksen tiedon lainausmerkkeihin tai sulkeisiin, +kannattaa käyttää komentoa \komento{mkbibquote} tai +\komento{mkbibparens}. Ne ymmärtävät ottaa huomioon eri kielten +lainausmerkkikäytännöt ja mahdolliset sisäkkäiset sulkeet. + +\komentoi{DeclareFieldFormat} +\komentoi{mkbibquote} +\begin{koodilohkosis} +\DeclareFieldFormat[incollection]{booktitle}{\mkbibquote{#1}} +\end{koodilohkosis} + +\noindent +Oletuksena teoksen vuosiluku tai muu päiväys ladotaan lähdeluetteloon +sulkeissa. Joissakin lähdeluettelokäytännöissä sulkeita ei kuitenkaan +ole, joten seuraavaksi käsitellään keino sulkeiden poistamiseen. +Tavallisessa \paketti{biblatex}\-/paketin lähdeluettelotyylissä +\koodi{author\-year} ei ole omaa asetusta teoksen päiväyksen ulkoasun +muuttamiseen, mutta jos käyttää tyyliä \koodi{ext-author\-year} (tms.), +sekin puute korjaantuu, ja voi käyttää \koodi{bib\-label\-date}\-/ +asetusta. + +\komentoi{usepackage} +\pakettii{biblatex} +\komentoi{DeclareFieldFormat} +\begin{koodilohkosis} +\usepackage[style=ext-authoryear]{biblatex} + +\DeclareFieldFormat{biblabeldate}{#1} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen, Matti 2020. -- -- +\end{tulossis} + +\noindent +Artikkelikokoelmissa (teostyyppi \koodi{incollection}) mainitaan +oletuksena kokoelman nimi ja toimittajat seuraavassa muodossa: +''Teoksessa: \textit{Hieno artikkelikokoelma.} Toim. Kirjailija, +Kaisa''. Ensin siis mainitaan julkaisun nimi ja sen jälkeen toimittajien +nimet. Suomessa on tapana kirjoittaa nämä tiedot toisinpäin ja laittaa +toimittajarooli sulkeisiin. Tällaiset asetukset saa käyttämällä tyyliä +\koodi{ext-author\-year} (tms.), paketin asetusta +\koodi{in\-name\-before\-title=\katk true} ja seuraavia komentoja: + +\komentoi{usepackage} +\pakettii{biblatex} +\komentoi{DeclareFieldFormat} +\komentoi{DeclareDelimFormat} +\komentoi{mkbibparens} +\begin{koodilohkosis} +\usepackage[style=ext-authoryear, innamebeforetitle=true]{biblatex} + +\DeclareFieldFormat{editortype}{\mkbibparens{#1}} +\DeclareDelimFormat{editortypedelim}{\addspace} +\end{koodilohkosis} + +\begin{tulossis} + -- -- Teoksessa: Kirjailija, Kaisa (toim.). \textit{Hieno + artikkelikokoelma}. -- -- +\end{tulossis} + +\noindent +Lähdeviittauksissa vuosiluvun ja sivunumeroiden välissä käytetään +toisinaan pilkkua ja toisinaan kaksoispistettä. Sivunumeroiden +yhteydessä voi olla lyhenne ''s.'' tai se voidaan jättää pois. +Seuraavilla komennoilla vaikutetaan näihin asetuksiin: + +\komentoi{DeclareFieldFormat} +\komentoi{DeclareDelimFormat} +\komentoi{textcite} +\begin{koodilohkosis} +\DeclareFieldFormat{postnote}{#1} % Lyhenne ”s.” pois. +\DeclareDelimFormat{postnotedelim}{\addcolon\space} % Kaksoispiste. + +\textcite[15--16]{tunniste} toteaa artikkelissaan -- -- +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen (2020: 15--16) toteaa artikkelissaan -- -- +\end{tulossis} + +\noindent +Kun saman teoksen usean tekijän luettelo lyhennetään, käytetään +oletuksena latinankielistä ilmausta pois jäävien nimien tilalla: +''Meikäläinen et al.''. Ilmauksen voi muuttaa suomenkieliseksi +seuraavalla komennolla: + +\komentoi{DefineBibliographyStrings} +\begin{koodilohkosis} +\DefineBibliographyStrings{finnish}{ + andothers = {ym.}, +} +\end{koodilohkosis} + +\begin{tulossis} + Meikäläinen ym. (2020) +\end{tulossis} + +\noindent +\pakettictan{biblatex}\-/ paketti sisältää valtavan paljon asetuksia ja +mahdollisuuksia lähdeluettelon ja \=/viitteiden ulkoasun säätämiseen. +Esimerkiksi komennolla \komento{DeclareBibliographyDriver} voi ottaa +täysin haltuun, miten tietty teostyyppi ladotaan lähdeluetteloon. +Komennolla \komento{DeclareSortingTemplate} voi määritellä omia +aakkostustapoja. Lisätietoa saa paketin ohjekirjasta. + +\section{Asiahakemistot} +\label{luku/asiasanat} + +Asiahakemistot ovat asiasanojen eli tärkeiden käsitteiden tai +henkilöiden luetteloita, ja ne ovat yleensä tietokirjan viimeisillä +sivuilla. Kunkin hakemiston asiasanat ovat aakkosjärjestyksessä, ja +jokaisen sanan perässä luetellaan sivunumerot, joilla kyseistä asiaa +käsitellään. Asiahakemistojen tarkoituksena on helpottaa tiedon +löytämistä. Tämän oppaan luku \enquote{\nameref{luku/asiahakemisto}} +alkaa sivulta \pageref{luku/asiahakemisto}. + +Latex tarvitsee asiahakemistojen tekemiseen paketin. Niitä tehty +useampia, mutta parhaita taitavat olla \pakettictan{indextools} ja +\pakettictan{imakeidx}. Ne ovat käytännössä lähes sama paketti: +\paketti{indextools} perustuu \paketti{imakeidx}\-/ pakettiin ja korjaa +joitakin sen puutteita. + +\begin{esimerkki*} + \komentoi{documentclass} + \komentoi{index} + \komentoi{makeindex} + \komentoi{printindex} + \komentoi{usepackage} + \luokkai{article} + \pakettii{indextools} + \ymparistoi{document} + +\begin{koodilohko} +\documentclass{article} +\usepackage{indextools} +\makeindex + +\begin{document} + +\index{erilaisia} \index{asiasanoja} + +... + +\printindex + +\end{document} +\end{koodilohko} + \caption{Asiahakemistojen toteutuksen perusteet} + \label{esim/asiasanat-perus} +\end{esimerkki*} + +Asiahakemiston toteutuksen perusajatus on yksinkertainen: Lähdetiedoston +alussa komennolla \komento{makeindex} määritellään asiahakemistot. +Dokumentin sisältösivuilla \komento{index}\-/ komennolla lisätään +haluttuja asiasanoja hakemistoihin. Dokumentin lopussa komennolla +\komento{printindex} ladotaan varsinaiset hakemistot. Näitä komentoja +käsitellään tarkemmin erillisissä alaluvuissa, mutta esimerkissä +\ref{esim/asiasanat-perus} ovat perusasiat tiiviisti. + +\subsection{Asiahakemistojen määrittely} +\label{luku/asiasanat-määrittely} + +Ennen asiasanojen ja \=/hakemistojen käyttöä täytyy hakemistot +määritellä. Yksinkertaisimmillaan määrittelyksi riittää pelkkä yksi +\komento{makeindex}\-/ komento lähdedokumentin esittelyosassa, kuten +esimerkissä \ref{esim/asiasanat-perus} on tehty. Jos haluaa vaikuttaa +asetuksiin tai jos dokumenttiin tarvitaan useampia asiahakemistoja, +täytyy tietää \komento{makeindex}\-/ komennosta enemmän. Tässä luvussa +käsitellään \komento{makeindex}\-/ komennon muita ominaisuuksia +pakettien \paketti{indextools} ja \paketti{imakeidx} näkökulmasta. +Komennolla vaikutetaan yksittäisen hakemiston ominaisuuksiin. Yleisiä, +kaikkien hakemistojen latomiseen liittyviä asetuksia käsitellään luvussa +\ref{luku/asiasanat-asetukset}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{name}{asiahakemiston tekninen nimi} + \rivi{title}{asiahakemistolle ladottava otsikko} + \rivi{intoc}{sisällysluetteloon lisääminen} + \rivi{columns}{asiahakemiston sarakkeiden lukumäärä} + \rivi{columnsep}{asiahakemiston sarakkeiden väli (mitta)} + \rivi{columnseprule}{pystyviiva sarakkeiden väliin} + \rivi{program}{asiahakemiston tekemisestä vastaava ohjelma: + \koodi{makeindex} (oletus), \koodi{xindy} ym.} + \rivi{options}{ohjelman komentorivin valitsimia} + \bottomrule + \end{tabularx} +}{ + \caption{\komento{makeindex}\-/ komennon valitsimia} + \label{tlk/makeindex-valitsimia} +} + +\komento{makeindex}\-/ komennolle voi antaa yhden valinnaisen +argumentin, joka voi sisältää useita pilkulla toisistaan erotettuja +valitsimia ja niiden arvoja. Valitsimia on koottu taulukkoon +\ref{tlk/makeindex-valitsimia}. + +Valitsin \koodi{name} on asiahakemiston tekninen nimi, jota käytetään +Latexissa sisäisesti. Valitsinta ei tarvitse käyttää, jos tarvitaan vain +yksi asiahakemisto. Tällöin nimeksi tulee sama kuin Latex\-/ +lähdedokumentin eli tiedoston nimi. Jos asiahakemistoja tarvitaan +useita, on järkevää nimetä jokainen erikseen \koodi{name}\-/ valitsimen +avulla. Seuraavassa esimerkissä määritellään kolme eri hakemistoa, jotka +voisivat olla Latexin komennoille, mitoille ja laskureille: + +\komentoi{makeindex} +\begin{koodilohkosis} +\makeindex[name=komennot, title=Komennot, columns=2, intoc] +\makeindex[name=mitat, title=Mitat, columns=2, intoc] +\makeindex[name=laskurit, title=Laskurit, columns=2, intoc] +\end{koodilohkosis} + +\noindent +\komento{makeindex}\-/ komennon valitsin \koodi{title} antaa otsikon +hakemistolle, joka ladotaan \komento{printindex}\-/ komennolla (luku +\ref{luku/asiasanat-asetukset}). Jos \koodi{title}\-/ valitsinta ei ole +annettu, otsikko tulee komennosta \komento{indexname}, joka puolestaan +määräytyy kieliasetusten perusteella (luku \ref{luku/kieliasetukset}). +Se on \paketti{polyglossia}\-/ kielipaketissa suomen kieliasetuksilla +''\indexname''. + +Jos valitsin \koodi{intoc} on mukana, kyseinen asiahakemisto eli sen +otsikko lisätään myös sisällysluetteloon. Valitsimella \koodi{columns} +asetetaan hakemiston sarakkeiden lukumäärää ja valitsimella +\koodi{columnsep} mitta, joka on sarakkeiden välinen tyhjä tila. +Sarakkeiden väliin saa pystyviivan antamalla valitsimen +\koodi{columnseprule}. Teknisesti sarakkeet toteutetaan +\paketti{multicol}\-/ paketin avulla, joten sen paketin mitat ovat +käytettävissä myös asiahakemistojen latomisessa. Katso lisätietoa +sarakkeista ja \paketti{multicol}\-/ paketista luvusta +\ref{luku/multicol}. + +Asiahakemiston järjestelystä vastaa erillinen tietokoneohjelma, joka +suoritetaan automaattisesti lähdedokumentin kääntämisen yhteydessä. +Ohjelmalle on olemassa pari vaihtoehtoa, ja sen voi valita valitsimella +\koodi{program}. Tärkeimmät vaihtoehdot ovat +\koodi{makeindex}\footnote{\koodi{program=\katk makeindex} on + oletusasetus, mutta yleisen oletusasetuksen voi vaihtaa paketin + lataamisen yhteydessä. Katso luku \ref{luku/asiasanat-asetukset}.} ja +\koodi{xindy}, joka käytännössä suorittaa \koodi{texindy}\-/ nimisen +ohjelman. Näillä ohjelmilla on omat ohjekirjansa, joita pääsee lukemaan +GNU/\katk Linux\-/ järjestelmissä \koodi{man}\-/ komennolla. Jos käyttää +vaihtoehtoa \koodi{program=\katk xindy}, täytyy Latexin kääntäjälle +(\koodi{lualatex} tai \koodi{xelatex}) antaa komentorivivalitsin +\koodi{\=/shell-escape}, joka kytkee päälle erään +lisäominaisuuden.\footnote{Lisätietoa \koodi{tex}\-/ komennon + ohjekirjasta, komennolla \koodi{man tex}.} + +Valitsimella \koodi{options} annetaan edellä mainitulle ohjelmalle +komentorivivalitsimet. Tätä tarvitaan lähinnä silloin, kun kirjoittaja +on tehnyt oman tyylitiedoston tai muita erikoisempia asetuksia +asiahakemistolle. Varsinkin \koodi{xindy} on monipuolinen ohjelma, jonka +toimintaan voi vaikuttaa monella tavalla. Lisätietoa saa +\koodi{makeindex}\-/{} ja \koodi{xindy}\-/ ohjelmien ohjekirjoista. + +\subsection{Asiasanojen lisääminen} +\label{luku/asiasanat-lisääminen} + +Asiasanat lisätään komennolla \komento{index}, joka sijoitetaan +lähdedokumentissa juuri siihen kohtaan, jossa kyseistä asiaa +käsitellään. Komento itsessään ei lado mitään; se vain kirjaa asiasanan +ja sivunumeron muistiin. Komentoa käytetään esimerkiksi seuraavalla +tavalla: + +\komentoi{index} +\begin{koodilohkosis} +Yhteen \index{kirjainperhe} kirjainperheeseen kuuluu tavallisesti +useita \index{kirjainleikkaus} leikkauksia. +\end{koodilohkosis} + +\noindent +\komento{index}\-/ komennolle voi antaa yhden valinnaisen argumentin. +Sitä tarvitaan silloin, kun asiasana halutaan lisätä tiettyyn, +määrittelyn yhteydessä \koodi{name}\-/ valitsimella nimettyyn +hakemistoon (luku \ref{luku/asiasanat-määrittely}). Jos esimerkiksi +dokumentissa on määritelty asiahakemisto +\komento{makeindex}\komentoargv{name=\katk henkilöt}, lisättäisiin +asiasana kyseiseen hakemistoon seuraavasti: + +\begin{koodilohkosis} +\index[henkilöt]{Waltari, Mika} +\end{koodilohkosis} + +\noindent +Tämän luvun muissa esimerkeissä ei yleensä käytetä \komento{index}\-/ +komennon valinnaista argumenttia. Argumentti on kuitenkin tarpeen aina, +kun halutaan lisätä asiasanoja tiettyyn, määrittelyn yhteydessä +nimettyyn hakemistoon. + +Asiahakemistot aakkostetaan automaattisesti, mutta yksittäisten sanojen +aakkostustapaan voi vaikuttaa käyttämällä \koodi{@}\=/ merkkiä +\komento{index}\-/ komennon argumentissa. Ennen \koodi{@}\=/ merkkiä on +asiasana siinä muodossa kuin se aakkostetaan; \koodi{@}\=/ merkin +jälkeen annetaan asiasana siinä muodossa kuin se ladotaan +asiahakemistoon. + +Seuraavassa esimerkissä asiahakemistoon lisätään kolme eri henkilöä, +joiden sukunimet ovat joko Vuori tai Wuori. Kaikki nimet aakkostetaan +nimen Vuori mukaisesti, eli \emph{v} ja \emph{w} katsotaan aakkostuksen +kannalta samaksi kirjaimeksi. Tämä on tavallinen käytäntö suomalaisten +sanojen ja nimien aakkostuksessa. + +\komentoi{index} +\begin{koodilohkosis} +\index{Vuori, Lauri} +\index{Vuori, Anita@Wuori, Anita} +\index{Vuori, Yrjö@Wuori, Yrjö} +\end{koodilohkosis} + +\begin{tulossis} + Wuori, Anita, \arabic{page} \\* + Vuori, Lauri, \arabic{page} \\* + Wuori, Yrjö, \arabic{page} +\end{tulossis} + +\noindent +Edellä mainittua aakkostustoimintoa tarvitaan myös silloin, kun +hakemiston sanojen latomisessa käytetään Latex\-/ komentoja eli asiasana +ei ole pelkkää tekstiä. Seuraavassa esimerkissä asiahakemistoon lisätään +Latex\-/ komento \komento{textbullet}. Se aakkostetaan sanan +''\englanti{textbullet}'' mukaan mutta hakemistoon se ladotaan +tasalevyisellä fontilla (\komento{texttt}) ja alkuun lisätään kenoviiva +(\komento{textbackslash}). + +\komentoi{index} +\komentoi{texttt} +\komentoi{textbackslash} +\begin{koodilohkosis} +\index{textbullet@\texttt{\textbackslash textbullet}} +\end{koodilohkosis} + +\noindent +Käytännössä \komento{index}\-/ komentoja ei kannata aina kirjoittaa +lähdedokumenttiin sellaisenaan, vaan komennon voi sisällyttää jonkin +toisen komennon määritelmään. Tästä on esimerkki luvussa +\ref{luku/komennot-abst}. + +Asiasanat voi järjestää hakemistoon hierarkkisesti eli aihepiirien +mukaisesti. Se toteutetaan \komento{index}\-/ komennon argumentissa +\koodi{!}\=/ merkin avulla, jolla erotetaan ylemmäntasoiset käsitteet +alemmantasoisista. Seuraava esimerkki lisää asiahakemistoon sanan +''fontit'' ja sen alle kaksi asiasanaa sivunumeroineen: + +\komentoi{index} +\begin{koodilohkosis} +\index{fontit!kirjainperhe} +\index{fontit!kirjainleikkaus} +\end{koodilohkosis} + +\begin{tulossis} + fontit \\* + \makebox[\sisennys]{}kirjainleikkaus, \arabic{page} \\* + \makebox[\sisennys]{}kirjainperhe, \arabic{page} +\end{tulossis} + +\noindent +Asiasanahierarkiassa voi olla korkeintaan kolme tasoa, ja tasot +erotetaan toisistaan \koodi{!}\=/ merkillä. Jokainen \koodi{!}\=/ +merkillä erotettu osa voi sisältää \koodi{@}\=/ merkin, jolla voi +vaikuttaa sanan aakkostamiseen: ensin mainitaan hakusanasta +aakkostamisessa käytetty versio ja \koodi{@}\=/ merkin jälkeen annetaan +hakemistoon ladottava versio. + +Kirjoittaja voi vaikuttaa asiasanojen sivunumeroiden latomiseen +käyttämällä \komento{index}\-/ komennon argumentissa asiasanan perässä +\koodi{|}\=/ merkkiä ja antamalla sen jälkeen komennon nimen. +Seuraavassa esimerkissä asiasanan sivunumero ladotaan kursiivilla: + +\komentoi{index} +\begin{koodilohkosis} +\index{asiasana|textit} +\end{koodilohkosis} + +\begin{tulossis} + asiasana, \textit{\arabic{page}} +\end{tulossis} + +\noindent +\komento{index}\-/ komennon argumenttiin ei kirjoiteta varsinaista +komentoa (\komento{textit}) vaan ainoastaan komennon nimi \koodi{|}\=/ +merkin jälkeen. Komento voi olla mikä hyvänsä ja sen pitäisi hyväksyä +ainakin yksi argumentti: sivunumero. Asiahakemistoissa on joskus tapana +merkitä asiasanan pääasiallinen käsittelysivu eri tavalla, esimerkiksi +kursiivilla tai lihavoinnilla, ja tämä \koodi{|}\=/ ominaisuus sopii +siihen. + +Yksi hyödyllinen käyttökohde \koodi{|}\=/ ominaisuudelle on viittaus +toiseen asiasanaan. On määritelty jo valmiiksi komennot \komento{see} ja +\komento{seealso}, joita voi käyttää \komento{index}\-/ komennossa +seuraavasti: + +\komentoi{index} +\begin{koodilohkosis} +\index{fontit} +\index{kirjainleikkaus|see{fontit}} +\index{kirjainperhe|seealso{fontit}} +\end{koodilohkosis} + +\begin{tulossis} + fontit, \arabic{page} \\* + kirjainleikkaus, \textit{\seename} fontit \\* + kirjainperhe, \textit{\alsoname} fontit +\end{tulossis} + +\noindent +Molemmat komennot hyväksyvät kaksi argumenttia, mutta edellisessä +esimerkissä annettiin vain yksi: \koodi{fontit}. Viimeiseksi +argumentiksi tulee automaattisesti aina sivunumero, mutta nämä komennot +jättävät sen huomioimatta. Sivunumeroa ei haluta näkyviin, koska +tarkoitus on vain lisätä asiahakemistoon viittaus toiseen +asiasanaan. + +Suomen kieliasetuksilla edellä mainitut komennot latovat kursivoidun +ilmauksen \textit{\seename} tai \textit{\alsoname}. Kielikohtaisen +määritelmän voi muuttaa kielipaketteihin \paketti{polyglossia} ja +\paketti{babel} kuuluvan \komento{addto}\-/ komennon avulla. Seuraavassa +esimerkissä vaikutetaan suomen kieliasetuksiin +(\komento{captionsfinnish}). Komennot täytyy sijoittaa dokumentin +esittelyosaan: + +\komentoi{addto} +\komentoi{captionsfinnish} +\komentoi{renewcommand} +\komentoi{seename} +\komentoi{alsoname} +\begin{koodilohkosis} +\addto{\captionsfinnish}{ + \renewcommand{\seename}{katso} + \renewcommand{\alsoname}{katso myös} +} +\end{koodilohkosis} + +\noindent +Toisaalta kirjoittaja voi määritellä ihan oman komentonsa +asiasanaviittausten tekemiseen. Oman komennon avulla lopputulokseen voi +vaikuttaa enemmän. Esimerkissä \ref{esim/see-katso-komento} määritellään +komento \komentox{katso}, jolla voi toteuttaa viittauksia toisiin +asiasanoihin. Komento hyväksyy kaksi argumenttia mutta jälkimmäinen eli +sivunumero jätetään käsittelemättä. + +\begin{esimerkki*} + \komentoi{newcommand} + \komentoi{textrightarrow} + \komentoi{index} + +\begin{koodilohko} +\newcommand{\katso}[2]{\textrightarrow{} #1} + +% Seuraavat komennot tarvitaan vain kerran dokumentissa, koska ne vain +% viittaavat toisiin asiasanoihin. +\index{kirjainleikkaus|katso{fontit}} +\index{kirjainperhe|katso{fontit}} + +% Seuraavassa on esimerkki varsinaisista asiasanoista. Komennot +% sijoitetaan paikkoihin, joissa aihetta käsitellään. +\index{fontit!kirjainleikkaus} +\index{fontit!kirjainperhe} +\end{koodilohko} + +\begin{tulos} + fontit \\* + \makebox[\sisennys]{}kirjainleikkaus, \arabic{page} \\* + \makebox[\sisennys]{}kirjainperhe, \arabic{page} \\* + kirjainleikkaus, \textrightarrow{} fontit \\* + kirjainperhe, \textrightarrow{} fontit +\end{tulos} + +\caption{Oman \komentox{katso}\-/ komennon määrittely. Komennon nimeä + käytetään \komento{index}\-/ komennon argumentissa ja sillä viitataan + toisiin asiasanoihin} +\label{esim/see-katso-komento} +\end{esimerkki*} + +Tavallisesti \komento{index} kirjaa muistiin vain sen sivun, jolla +komento esiintyy. Jos komento esiintyy usealla peräkkäisellä sivulla, +hakemistoon ladotaan automaattisesti sivualue, esimerkiksi 53--55. + +Aina ei kuitenkaan ole mielekästä ilmaista aiheen käsittelyä +yksittäisten \komento{index}\-/ komentojen avulla. Toisinaan voi olla +sopivampaa määrittää aiheen käsittelyn alku- ja loppukohta. Alkukohta +ilmaistaan \komento{index}\-/ komennon argumentissa merkkien \koodi{|(} +avulla ja loppukohta merkkien \koodi{|)} avulla. Jos aloitus ja lopetus +sattuvat samalle sivulle, hakemistoon ladotaan vain yksi sivunumero. +Muussa tapauksessa ladotaan sivualue. Seuraavassa on esimerkki aiheen +käsittelyn alun ja lopun merkitsemiseen: + +\komentoi{index} +\begin{koodilohkosis} +\index{asiasana|(} % aiheen käsittely alkaa +... +\index{asiasana|)} % aiheen käsittely loppuu +\end{koodilohkosis} + +\begin{tulossis} + asiasana, 53--55 +\end{tulossis} + +\noindent +Edellä mainittujen aloitusmerkkien \koodi{|(} perään voi kirjoittaa +komennon nimen, jos haluaa vaikuttaa sivunumeroiden latomiseen. Tätä +käsiteltiin jo edellä, mutta seuraavassa on käytännön esimerkki: + +\komentoi{index} +\begin{koodilohkosis} +\index{asiasana|(textit} % aiheen käsittely alkaa +... +\index{asiasana|)} % aiheen käsittely loppuu +\end{koodilohkosis} + +\begin{tulossis} + asiasana, \textit{53--55} +\end{tulossis} + +\noindent +Jos itse asiasanaan täytyy sisällyttää edellä mainittuja +\komento{index}\-/ komennon erikoismerkkejä (\koodi{@!|}), pitää niiden +eteen kirjoittaa yleislainausmerkki (\koodi{\textquotedbl}). Se estää +seuraavan merkin tulkitsemisen \komento{index}\-/ komennon +erikoismerkiksi. + +\subsection{Hakemiston latominen ja asetukset} +\label{luku/asiasanat-asetukset} + +Hakemistot ladotaan komennolla \komento{printindex}. Tyypillisesti +komento sijaitsee dokumentin lopussa eli lähinnä artikkelin tai +tietokirjan viimeisillä sivuilla. Jos komennon suorittaa ilman +argumentteja, se latoo oletushakemiston eli sen, jolle ei ole annettu +teknistä nimeä \komento{makeindex}\-/ komennon \koodi{name}\-/ +valitsimella (luku \ref{luku/asiasanat-määrittely}). Komennolle voi +antaa hakasulkeissa yhden valinnaisen argumentin, joka ilmaisee +ladottavan hakemiston teknisen nimen, esimerkiksi: + +\komentoi{printindex} +\begin{koodilohkosis} +\printindex % Latoo nimeämättömän hakemiston. +\printindex[henkilöt] % Latoo hakemiston nimeltä ”henkilöt”. +\end{koodilohkosis} + +\noindent +Luvussa luku \ref{luku/asiasanat-määrittely} käsitellään yksittäisten +hakemistojen asetuksia, mutta \komento{indexsetup}\-/ komennolla voi +määrittää kaikkia hakemistoja koskevia yleisempiä asetuksia. Komennolle +annetaan yksi argumentti, joka voi sisältää useita pilkuilla erotettuja +valitsimia ja niiden arvoja. Valitsimia on koottu taulukkoon +\ref{tlk/indexsetup-valitsimia}, ja seuraavassa on käytännön esimerkki: + +\begin{koodilohkosis} +\indexsetup{level=\section*, noclearpage} +\end{koodilohkosis} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys ja vaihtoehtoja} \\ + \midrule + \rivi{level}{Hakemistojen otsikkokomento: \komento{chapter*}, + \komento{chapter}, \komento{section*}, \komento{section} ym.} + \rivi{toclevel}{Hakemiston taso sisällysluettelossa: + \koodi{chapter}, \koodi{section} ym.} + \rivi{noclearpage}{Ei automaattista sivunvaihtoa hakemistojen + alussa.} + \rivi{firstpagestyle}{Hakemiston ensimmäisen sivun sivutyyli: + \koodi{plain}, \koodi{empty} ym.} + \bottomrule + \end{tabularx} +}{ + \caption{\komento{indexsetup}\-/ komennon valitsimia, joilla + vaikutetaan kaikkien asiahakemistojen latomiseen} + \label{tlk/indexsetup-valitsimia} +} + +\noindent +Valitsimen \koodi{level} arvoksi annetaan tyypillisesti otsikkokomento, +joka suoritetaan kunkin hakemiston alussa. Itse otsikon tekstin voi +määritellä \komento{makeindex}\-/ komennon \koodi{title}\-/ valitsimella +kullekin hakemistolle erikseen. \koodi{level}\-/ valitsimelle oletusarvo +on dokumenttiluokkakohtainen korkein otsikkotaso eli \komento{chapter*} +tai \komento{section*}. Jos arvoksi antaa tähdettömän otsikkokomennon +kuten \komento{chapter}, se luo automaattisesti merkinnän +sisällysluetteloon. Silloin ei kannata käyttää \komento{makeindex}\-/ +komennon \koodi{intoc}\-/ valitsinta. + +Käytännössä \koodi{level}\-/ valitsimen arvoksi voi antaa minkä hyvänsä +komennon, joka hyväksyy yhden argumentin eli kyseisen hakemiston +otsikkotekstin. Kirjoittaja voi siis asettaa tähän oman komentonsa, +jonka määritelmässä mahdollisesti suoritetaan muutakin kuin pelkkä +otsikkokomento. \koodi{toclevel}\-/ valitsimella ilmaistaan hakemistojen +taso sisällysluettelossa. Valitsimen arvoksi annetaan otsikkokomentojen +nimi kuten \koodi{section} tai \koodi{subsection}. + +Oletuksena jokaisen asiahakemiston alussa suoritetaan sivunvaihtokomento +\komento{clearpage}. Käyttämällä valitsinta \koodi{noclearpage} estetään +automaattinen sivunvaihto. Valitsimella \koodi{firstpagestyle} asetetaan +kunkin asiahakemiston ensimmäisen sivun sivutyyli (luku +\ref{luku/ylä-ala-tunnisteet}). Oletusarvo on \koodi{plain} eli +tavallinen, oletuksena pelkän sivunumeron sisältävä sivutyyli. Tämä +valitsin ei ole käytössä, jos ladattuna on paketti \paketti{fancyhdr}. + +Ennen \komento{printindex}\-/ komentoa voi käyttää komentoa +\komento{indexprologue}, jolla määritetään johdantoteksti asiahakemiston +alkuun. Komento vaikuttaa seuraavaksi ladottavaan asiahakemistoon, eli +se kannattaa sijoittaa juuri ennen \komento{printindex}\-/ komentoa. +Komentoa käytetään seuraavasti: + +\komentoi{indexprologue} +\begin{koodilohkosis} +\indexprologue[väli]{teksti} +\end{koodilohkosis} + +\noindent +Pakollinen argumentti \koodi{teksti} on hakemiston johdannoksi +tarkoitettu teksti. Valinnainen argumentti \koodi{väli} on tarkoitettu +komennolle, joka latoo pystysuuntaisen välin johdantotekstin jälkeen, +ennen asiasanojen luetteloa. Oletuksena väliksi tulee komennon +\komento{bigskip} latoma väli, mutta muunlaisen välin saa kirjoittamalla +valinnaiseen argumenttiin esimerkiksi \komento{vspace}\-/ komennon ja +sen argumentiksi halutun mitan. + +Asiahakemistopaketin -- \paketti{indextools} tai \paketti{imakeidx} -- +lataamisen yhteydessä voi määrittää asetuksia tiettyjen valitsimien +avulla. \komento{usepackage}\-/ komennon valinnaiseen argumenttiin +kirjoittaa useita valitsimia, ja ne erotetaan toisistaan pilkulla. +Mahdollisia valitsimia on useita, mutta tässä oppaassa käsitellään vain +pari tärkeintä. + +Esimerkiksi valitsin \koodi{xindy}, aiheuttaa sen, että +\komento{makeindex}\-/ komennoilla määritetyille asiahakemistoille tulee +oletuksena asetus \koodi{program=\katk xindy}. Muutoin oletus on +\koodi{program=\katk makeindex} (luku \ref{luku/asiasanat-määrittely}). + +\komentoi{usepackage} +\pakettii{indextools} +\begin{koodilohkosis} +\usepackage[xindy]{indextools} +\end{koodilohkosis} + +\noindent +Jos omassa dokumentissa tarvitaan useita asiahakemistoja, saatetaan +joskus tarvita valitsinta \koodi{splitindex}. Se kiertää erästä Latexin +tiedostojen käsittelyn puutetta. Nimittäin Latex ei voi kääntämisen +yhteydessä kirjoittaa kovin moneen tiedostoon, ja jokainen asiahakemisto +tarvitsisi omansa. Rajoitukset saattavat tulla vastaan useiden +asiahakemistojen käsittelyssä. + +Käyttämällä valitsinta \koodi{splitindex} kierretään edellä mainittua +rajoitusta siten, että ensin kaikki asiahakemistot kirjoitetaan yhteen +väliaikaistiedostoon ja myöhemmin ne erotetaan automaattisesti +toisistaan suorittamalla \koodi{splitindex}\-/ niminen ohjelma. Tämän +valitsimen käyttö vaatii, että Latexin kääntäjäohjelmalle +(\koodi{lualatex} tai \koodi{xelatex}) annetaan komentorivivalitsin +\koodi{\=/shell-escape}. + +\section{Kuvat} +\label{luku/grafiikka} + +Perus Latex ei pysty juuri minkäänlaiseen kuvien eli tietokonegrafiikan +käsittelyyn, mutta avuksi on tehty monipuolisia paketteja. Niiden +voidaan esimerkiksi ladata ja latoa kuvatiedostoja sekä piirtää +vektorigrafiikkakuvia Latex\-/ komentojen avulla. + +\subsection{Kuvatiedostot} + +Paketti \pakettictan{graphicx} sisältää toiminnot kuvatiedostojen +käsittelyyn sekä tekstin tai muun sisällön kääntelyyn ja skaalaamisen. +Kuvatiedostojen peruskäyttö sujuu komennolla \komento{includegraphics} +seuraavasti: + +\komentoi{includegraphics} +\begin{koodilohkosis} +\includegraphics[width=6cm]{kuvatiedosto.jpg} +\end{koodilohkosis} + +\noindent +Tällä tavoin lisätty kuvatiedosto käyttäytyy tekstikappaleessa kuin mikä +tahansa kirjain. Edellisen esimerkin pakollisessa argumentissa oleva +\koodi{kuvatiedosto.\katk jpg} on tiedoston nimi. Se voi sisältää myös +hakemistopolun, jos tiedosto ei sijaitse samassa hakemistossa Latex\-/ +lähdetiedostojen kanssa. Kaikki käyttöjärjestelmän hyväksymät +tiedostonnimet eivät Latexissa toimi, vaan kannattaa jättää välilyönnit +pois ja pitäytyä suppeassa latinalaisessa merkkivalikoimassa. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{\koodi{#1} & #2 \\} + \begin{tabularx}{\linewidth}{lL} + \toprule + \ots{Valitsin} & \ots{Merkitys} \\ + \midrule + \rivi{width}{leveysmitta} + \rivi{height}{korkeusmitta} + \rivi{angle}{kääntökulma asteina} + \rivi{origin}{kääntämisen keskipiste: + \koodi{c} (keskikohta), + \koodi{l} (vasen), + \koodi{r} (oikea), + \koodi{t} (ylä), + \koodi{b} (ala), + \koodi{B} (rivin peruslinja) + } + + \rivi{trim}{reunojen siirto: vasen, ala, oikea, ylä} + \rivi{clip}{leikkaminen reunojen ulkopuolelta} + \bottomrule + \end{tabularx} +}{ + \caption{\komento{includegraphics}\-/ komennon valinnaiseen + argumenttiin sopivia valitsimia} + \label{tlk/includegraphics-valitsimia} +} + +\komento{includegraphics}\-/ komennon valinnaiseen argumenttiin voi +kirjoittaa monenlaisia pilkulla toisistaan erotettuja valitsimia ja +niiden arvoja. Joitakin valitsimia on koottu taulukkoon +\ref{tlk/includegraphics-valitsimia}. Tavallisimpia ovat varmaankin +\koodi{width} ja \koodi{height}, joilla määritetään, minkä levyisenä tai +korkuisena kuva halutaan latoa. Näistä voi asettaa vain jommankumman, ja +toinen mitta määräytyy alkuperäiskuvan mittasuhteiden perusteella. +Asettamalla sekä leveyden että korkeuden kuva skaalataan juuri kyseisiin +mittoihin. + +Kuvan kääntämisessä käytetään \koodi{angle}\-/ valitsinta ja astelukua. +Kuva kääntyy \koodi{origin}\-/ valitsimella määritetyn pisteen kautta, +ja valitsimen arvoksi annetaan taulukossa +\ref{tlk/includegraphics-valitsimia} mainittuja kirjaimia tai niiden +yhdistelmiä. Esimerkiksi \koodi{origin=\katk lt} tarkoittaa vasenta +(\koodi{l}) ylänurkkaa (\koodi{t}). + +Kuvaa voi rajata sivuilta käyttämällä yhdessä valitsimia \koodi{trim} ja +\koodi{clip}. \koodi{trim}\-/ valitsimen arvoksi annetaan neljä +välilyönnillä erotettua mittaa, joiden järjestys on seuraava: vasen, +ala, oikea, ylä. Tämä valitsin vain siirtää kuvan reunojen sijaintia, +mutta kun mukaan ottaa valitsimen \koodi{clip}, kuvasta myös leikataan +reunojen ulkopuolinen alue pois. Seuraavassa esimerkissä kuvaa leikataan +vasemmalta 1\,mm, alhaalta 2\,mm, oikealta 3\,mm ja ylhäältä 4\,mm. +Kuvan lopulliseksi leveydeksi tulee 40\,mm. + +\komentoi{includegraphics} +\begin{koodilohkosis} +\includegraphics[width=40mm, + clip, trim={1mm 2mm 3mm 4mm}]{kuvatiedosto.jpg} +\end{koodilohkosis} + +\subsection{Vektorigrafiikka} + +Paketti \pakettictan{tikz} tuo Latexiin monipuolisen apukielen, jolla +kirjoittaja voi piirtää vektorigrafiikkaa. Paketin taustalla toimii +toinen paketti ja grafiikkajärjestelmä \paketti{pgf} eli +\englantik{portable graphics format}, mutta kirjoittajan ei yleensä +tarvitse välittää taustalla olevasta matalan tason tekniikasta. + +Tässä oppaassa käsitellään vain joitakin \paketti{tikz}\-/ paketin +perustoimintoja. Paketin omassa ohjekirjassa on yli 1\,300 sivua, eli +valtavan paljon hienoja ominaisuuksia jää lukijan itse selvitettäväksi. +Runsasta sivumäärää ei kannata säikähtää: ei opasta tarvitse kokonaan +lukea, ja alkupuolella teksti johdattelee lukijaa eteenpäin helppojen ja +käytännöllisten esimerkkien avulla. + +Vektorigrafiikkaan erikoistunut kieli ja komennot toimivat ympäristön +\ymparisto{tikzpicture} sisällä. Se ei ole mikä tahansa Latexin tekstiä +ja merkintätapoja sisältävä ympäristö, vaan se on tarkoitettu vain +piirtokomennoille, joilla on oma, muusta Latexista hieman poikkeava +kielioppinsa. Seuraavassa on pieni esimerkki: + +\ymparistoi{tikzpicture} +\komentoi{draw} +\begin{koodilohkosis} +\begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- (25,5) -- (50,0) -- cycle; + \draw (25,0) -- (25,5); +\end{tikzpicture} +\end{koodilohkosis} + +\begin{tulossis} + \begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- (25,5) -- (50,0) -- cycle; + \draw (25,0) -- (25,5); + \end{tikzpicture} +\end{tulossis} + +\noindent +Edellisessä esimerkissä ympäristön alussa määritellään hakasulkeissa +perusasetuksia. Tässä asetetaan x- ja y\=/ akselien suuntaiset +yksikkömitat 1\,mm:n pituiseksi. Piirtokomentojen koordinaatit käyttävät +sen jälkeen näitä yksiköitä. Jos yksiköitä ei määritellä, käytetään +oletusyksikköä, joka on 10\,mm. On myös mahdollista antaa +piirtokomentojen koordinaateissa suoraan Latexin mittayksiköt, +esimerkiksi \koodi{(25mm,5mm)} tai \koodi{(10bp,20bp)}, jolloin +koordinaatit tulevat juuri näiden mittojen mukaiseksi. Piirustusalustan +origo eli koordinaatti (0,~0) sijaitsee vasemmassa alanurkassa, ja +koordinaatisto kasvaa ylös ja oikealle. + +Edellä olleessa esimerkissä piirretään komennolla \komento{draw} +viivakuvio, jonka välipisteiden kordinaatit ilmaistaan sulkeissa. +Lopussa oleva \koodi{cycle} piirtää viivan takaisin saman +\komento{draw}\-/ komennon alkupisteeseen. Tätä kokonaisuutta kutsutaan +poluksi, ja sen lopussa täytyy olla puolipiste +(\koodi{;}).\footnote{Polkujen luomisen peruskomento on \komento{path}, + joka ei piirrä mitään, ellei sille anna valinnaista argumenttia + \koodi{draw}. Komento \komento{draw} on itse asiassa sama kuin + \komento{path}\komentoargv{draw}.} Esimerkissä on toinenkin polku eli +toinen \komento{draw}\-/ komento piirtää pystyviivan suuren kolmion +keskelle ja jakaa sen kahdeksi pienemmäksi kolmioksi. + +Koordinaatit voi ilmaista suhteessa polun edelliseen pisteeseen +lisäämällä koordinaatin eteen kaksi plusmerkkiä. Seuraavassa esimerkissä +havainnollistetaan sitä. Kuvion (polun) neljä ensimmäistä pistettä +ilmaistaan x- ja y\=/ koordinaateilla mutta viimeinen piste ilmaistaan +kulman (25°) ja pituuden (8) avulla. + +\ymparistoi{tikzpicture} +\komentoi{draw} +\begin{koodilohkosis} +\begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- ++(0,5) -- ++(10,0) -- ++(0,-5) -- ++(25:8); +\end{tikzpicture} +\end{koodilohkosis} + +\begin{tulossis} + \begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) -- ++(0,5) -- ++(10,0) -- ++(0,-5) -- ++(25:8); + \end{tikzpicture} +\end{tulossis} + +\noindent +Viivojen lisäksi on olemassa komentoja muillekin geometrisille +peruskuvioille. Esimerkissä \ref{esim/tikz-kuvioita} piirretään +suorakulmio, ympyrä, ellipsi, sektorin kaari (0--90°) ja taivutettu +viiva. Viimeksi mainittu (rivi~6) sisältää alkupisteen, kaksi +näkymätöntä ohjauspistettä (\koodi{controls}, \koodi{and}), joiden +suuntaan viivaa taivutetaan, sekä loppupisteen. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{draw} + +\begin{koodilohko} +\begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) rectangle (10,5); + \draw (20,2.5) circle [radius=2.5]; + \draw (35,2.5) ellipse [x radius=4, y radius=2, rotate=30]; + \draw (55,0) arc [start angle=0, end angle=90, radius=5]; + \draw (65,0) .. controls (75,7) and (80,7) .. (80,0); +\end{tikzpicture} +\end{koodilohko} + + \begin{tulos} + \begin{tikzpicture}[x=1mm, y=1mm] + \draw (0,0) rectangle (10,5); + \draw (20,2.5) circle [radius=2.5]; + \draw (35,2.5) ellipse [x radius=4, y radius=2, rotate=30]; + \draw (55,0) arc [start angle=0, end angle=90, radius=5]; + \draw (65,0) .. controls (75,7) and (80,7) .. (80,0); + \end{tikzpicture} + \end{tulos} + + \caption{Erilaisia geometrisia kuvioita: suorakulmio, ympyrä, ellipsi, + ympyrän kaari ja taivutettu viiva} + \label{esim/tikz-kuvioita} +\end{esimerkki*} + +Kuten esimerkki \ref{esim/tikz-kuvioita} osoittaa, piirtokomennoille voi +antaa hakasulkeissa lisätietoja. Mahdollisuuksia on valtavan paljon: +esimerkiksi värit, viivojen paksuus, nuolenkärjet ja kulmien pyöristys +ilmaistaan tällaisten listätietojen avulla. Esimerkki +\ref{esim/tikz-asetuksia} havainnollistaa tavallisimpia valinnaisia +argumentteja. Värivalitsimien \koodi{draw} ja \koodi{fill} arvoksi voi +antaa mitä hyvänsä nimettyjä värejä, joita käsitellään tarkemmin luvussa +\ref{luku/korostus-värit}. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{draw} + +\begin{koodilohko} +\begin{tikzpicture}[x=1mm, y=1mm, + nuoli/.style={line width=1bp, draw=red}] + + % Nuolia + \draw [nuoli, ->] (0,0) -- (10,5); + \draw [nuoli, <<-, draw=blue] (10,0) -- (20,5); + \draw [nuoli, <->] (20,0) -- (30,5); + + % Täytetty nelikulmio, viivan paksuus ja kulmien pyöristys + \draw [draw=black, fill=yellow, line width=1.5bp, rounded + corners=3bp] (40,0) -- ++(3,5) -- ++(20,0) -- ++(3,-5) -- cycle; +\end{tikzpicture} +\end{koodilohko} + + \begin{tulos} + \begin{tikzpicture}[x=1mm, y=1mm, + nuoli/.style={line width=1bp, draw=red}] + + % Nuolia + \draw [nuoli, ->] (0,0) -- (10,5); + \draw [nuoli, <<-, draw=blue] (10,0) -- (20,5); + \draw [nuoli, <->] (20,0) -- (30,5); + + % Täytetty nelikulmio, viivan paksuus ja kulmien pyöristys + \draw [draw=black, fill=yellow, line width=1.5bp, rounded + corners=3bp] (40,0) -- ++(3,5) -- ++(20,0) -- ++(3,-5) -- cycle; + \end{tikzpicture} + \end{tulos} + +\caption{Erilaisia piirtokomentojen argumentteja: nuolenkärjet, värit, + viivan paksuus ja kulmien pyöristys} +\label{esim/tikz-asetuksia} +\end{esimerkki*} + +Esimerkissä \ref{esim/tikz-asetuksia} olevan \ymparisto{tikzpicture}\-/ +ympäristön valinnaisessa argumentissa määritellään rivillä~2 oma +tyyliasetus nimeltä \koodi{nuoli}. Asetukseen kuuluu viivan leveys +(\koodi{line width}) ja väri (\koodi{draw}). Näin määriteltyä +\koodi{nuoli}\-/ tyyliä käytetään rivien 5\==7 \komento{draw}\-/ +komennoissa. Tällä tavoin omia tyylejä määrittelemällä säästää +todennäköisesti aikaa ja vaivaa, koska tyyliasetuksia voi sen jälkeen +muuttaa yhdestä paikasta. + +Usein tarvittavat \komento{draw}\-/ polut ja komentosarjat kannattanee +piilottaa omien komentojen sisään. Kirjoittaja voi siis tehdä +\komento{newcommand}\-/komennolla (luku \ref{luku/komennot}) ja muilla +vastaavilla omia, mahdollisesti kokeamman tason piirtokomentoja, jotka +piirtävät usein tarvittavia kuvan osia. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{node} + +\begin{koodilohko} +\begin{tikzpicture}[x=1mm, y=1mm] + \node at (0,0) [draw=red, rectangle, rounded corners=3bp] {vasen}; + \node [color=blue] at (20,0) {keski}; + \node at (40,0) [draw, circle, inner sep=0bp, fill=yellow] {oikea}; +\end{tikzpicture} +\end{koodilohko} + + \begin{tulos} + \begin{tikzpicture}[x=1mm, y=1mm] + \node at (0,0) [draw=red, rectangle, rounded corners=3bp] {vasen}; + \node [color=blue] at (20,0) {keski}; + \node at (40,0) [draw, circle, inner sep=0bp, fill=yellow] {oikea}; + \end{tikzpicture} + \end{tulos} + + \caption{Tekstiä tai muuta sisältäviä solmuja tehdään + \komento{node}\-/ komennolla} + \label{esim/tikz-solmut} +\end{esimerkki*} + +Kuvaan voi sisällyttää myös tekstiä tai muuta Latexin sisältöä. Se +tapahtuu helpoimmin komennolla \komento{node}, joka tekee niin sanottuja +solmuja. Komento tarvitsee ainakin solmun sijaintikoordinaatit ja +ladottavan sisällön. Esimerkissä \ref{esim/tikz-solmut} on kolme +erityyppistä solmua. + +Kuten esimerkistä näkyy, laatikolle voi määrittää kehykset ja niiden +värin, (\koodi{draw}), täyttövärin (\koodi{fill}), sisällön värin +(\koodi{color}), kehyksen kulmien pyöristyksen (\koodi{\englanti{rounded + corners}}) ja sisäisen tyhjän tilan suuruuden (\koodi{inner sep}). +Kaikenlaista muutakin voi tehdä valinnaiseen argumenttiin +sisällytettävien valitsimien avulla, mutta niistä täytyy lukea lisää +paketin omasta ohjekirjasta. + +\begin{esimerkki*} + \ymparistoi{tikzpicture} + \komentoi{node} + \komentoi{draw} + +\begin{koodilohkosis} +\begin{tikzpicture}[x=1mm, y=1mm] + \node (ympyrä) at (0,0) [draw, circle] {vasen}; + \node (suorakulmio) at (20,0) [draw, rectangle] {oikea}; + \draw [->, shorten >=1mm] (ympyrä) to [out=45, in=135] (suorakulmio); +\end{tikzpicture} +\end{koodilohkosis} + + \begin{tulossis} + \begin{tikzpicture}[x=1mm, y=1mm] + \node (ympyrä) at (0,0) [draw, circle] {vasen}; + \node (suorakulmio) at (20,0) [draw, rectangle] {oikea}; + \draw [->, shorten >=1mm] (ympyrä) to [out=45, in=135] (suorakulmio); + \end{tikzpicture} + \end{tulossis} + + \caption{Solmujen nimeäminen ja kytkeminen viivan avulla} + \label{esim/tikz-solmujen-yhdistäminen} +\end{esimerkki*} + +Solmulle voi määrittää yksilöllisen nimen, jota voi sitten käyttää +esimerkiksi viivojen piirtämiseen solmujen välille. Viivojen +piirtämisessä \komento{draw}\-/ komennon koordinaattien sijasta +käytetäänkin solmulle annettua nimeä. Tätä havainnollistetaan +esimerkissä \ref{esim/tikz-solmujen-yhdistäminen}, jossa esitellään myös +\komento{draw}\-/ komennon \koodi{to}\-/ operaatio. Se mahdollistaa +solmujen välisen viivan lähtö- ja tulokulman valinnan valitsimilla +\koodi{out} ja \koodi{in}. Esimerkissä myös lyhennetään nuolta +loppupäästä käyttämällä valitsinta \koodil{shorten~>}. + +Tämän alaluvun ohjeiden avulla pääsee aika mukavasti alkuun +\paketti{tikz}\-/ paketin käytössä ja saa toteutettua tavallisimmat +vektorigrafiikkakuviot. Paketin omaan ohjekirjaan kannattaa silti +tutustua, sillä \ymparisto{tikzpicture}\-/ ympäristön mahdollisuudet +ovat valtavat. + +\section{Matematiikka} +\label{luku/matematiikka} + +Latexin matematiikkatila on suunniteltu matemaattisten kaavojen +latomiseen eli matematiikan syntaksia varten. Matematiikkatila on aivan +oma todellisuutensa, joka ei pintapuolisesti tarkastellessa tunnu +noudattavan samoja sääntöjä kuin tekstitila. + +Matematiikkatilassa ovat voimassa eri komennot, eri fontit, erilainen +merkkien käyttäytyminen ja erilaiset välistykset. Tässä luvussa +käsitellään matematiikkatilan käyttöä ja matemaattisen syntaksin +kirjoittamista. Fonttiasetuksia käsitellään luvussa +\ref{luku/matematiikka-fontit}. + +\subsection{Matematiikkatilan käyttö} +\label{luku/matematiikka-käyttö} + +Matematiikkatila voidaan kytkeä päälle joko tavallisen tekstitilassa +toimivan rivin sisällä tai omassa tekstikappaleessaan. Tekstirivillä +matemaattinen teksti lisätään komentojen \komento{(} ja \komento{)} +väliin, kahden \koodi{\$}\-/ merkin väliin tai ympäristön +\ymparisto{math} sisälle. Seuraavassa on esimerkki kaikista kolmesta: + +\begin{koodilohkosis} +Kaava \( y = 2x + 3 \) on suoran yhtälö. +Kaava $ y = 2x + 3 $ on suoran yhtälö. +Kaava \begin{math} y = 2x + 3 \end{math} on suoran yhtälö. +\end{koodilohkosis} + +\begin{tulossis} +Kaava \( y = 2x + 3 \) on suoran yhtälö. +Kaava $ y = 2x + 3 $ on suoran yhtälö. +Kaava \begin{math} y = 2x + 3 \end{math} on suoran yhtälö. +\end{tulossis} + +\noindent +Kuten edellä olevasta esimerkistä näkyy, matematiikkatilassa kirjaimet +ladotaan kursiivilla. Tavalliset lähdetiedostoon kirjoitetut kirjaimet +on tarkoitettu muuttujiksi kuten tässä esimerkissä $x$ ja $y$. + +Jos matemaattiset kaavat ovat pitkiä tai vievät pystysuuntaista tilaa +enemmän kuin tavallisen rivikorkeuden verran, on parasta latoa ne omaksi +kappaleekseen. Se toteutetaan esimerkiksi kirjoittamalla kaavat +ympäristön \ymparisto{displaymath} sisään tai komentojen \komento{[} ja +\komento{]} väliin. Molemmat toimivat samalla tavalla. + +\komentoi{[} +\komentoi{]} +\mkomentoi{left} +\mkomentoi{right} +\mkomentoi{frac} +\begin{koodilohkosis} +\[ \left(\frac{1}{x}\right)^2 = \frac{1}{x^2} \] +\end{koodilohkosis} +\[ \left(\frac{1}{x}\right)^2 = \frac{1}{x^2} \] + +\noindent +Ympäristö \ymparisto{equation} toimii muuten samalla tavalla, mutta se +latoo kaavan viereen myös järjestysnumeron ristiviittauksia varten. +Ympäristön sisälle voi kirjoittaa \komento{label}\-/ komennon, jonka +argumentissa annetaan kaavalle yksilöllinen tunniste. Tekstistä voi +viitata kaavaan \komento{ref}\-/ komennolla, jonka argumenttina on +kaavan tunniste. Ristiviittauksista on tarkempaa tietoa luvussa +\ref{luku/ristiviitteet}. + +Kaavojen numerot tulevat laskurista \laskuri{equation}, ja numeron +latomiseen voi vaikuttaa määrittelemällä uudelleen komennon +\komento{theequation}. Seuraavassa esimerkissä kaavan numeroon asetetaan +ensiksi \komento{section}\-/ tasoisen otsikon numero, piste erottimeksi +ja lopuksi kyseisen kaavan numero. + +\komentoi{renewcommand} +\komentoi{theequation} +\komentoi{thesection} +\komentoi{arabic} +\laskurii{equation} +\begin{koodilohkosis} +\renewcommand{\theequation}{\thesection.\arabic{equation}} +\end{koodilohkosis} + +\noindent +Latexin lähdedokumentissa matematiikkatilassa kaiken täytyy sisältyä +yhteen kappaleeseen eli tyhjiä rivejä ei sallita. Matemaattiset kaavat +ladotaan oletuksena sivun keskelle, mutta jos asettaa Latexin +dokumenttiluokalle (luku \ref{luku/perusdokumenttiluokat}) valitsimen +\koodi{fleqn}, ne ladotaan sivun vasempaan reunaan. Kaavojen numerot +ladotaan oletuksena sivun oikeaan reunaan, mutta vasemmalle ne saa +käyttämällä dokumenttiluokan valitsinta \koodi{leqno}. + +Matematiikkaympäristössä on käytettävissä taulukkoympäristö +\mymparisto{array}, joka toimii pitkälti samalla tavalla kuin +tekstitilan taulukotkin (luku \ref{luku/taulukot}). Pelkästään +matematiikkatilassa toimiva \mymparisto{array}\-/ ympäristö mahdollistaa +useiden kaavarivien latomisen ja kohdistamisen vaakasuunnassa tietylle +kohdalle. Esimerkiksi yhtälöt on mielekästä sijoittaa samalle tasalle +yhtäsuuruusmerkin kohdalta. + +\mymparistoi{array} +\begin{koodilohkosis} +\[ \begin{array}{r@{~}l} + 4x - 2 &= 6 \\ + x &= 2 \\ + \end{array} \] +\end{koodilohkosis} +\[ \begin{array}{r@{~}l} + 4x - 2 &= 6 \\ + x &= 2 \\ + \end{array} \] + +\noindent +Pidemmälle kehitettyjä matematiikkaympäristöjä on paketissa +\pakettictan{amsmath}. Esimerkiksi \mymparisto{align}\-/\ ja +\mymparisto{align*}\-/ ympäristöt pystyvät tasaamaan allekkaiset kaavat +tietystä kohdasta, eikä taulukon sarakkeita tarvitse erikseen +määritellä. Tasauskohta ilmaistaan lähdedokumentissa \koodi{\&}\-/ +merkillä normaalien taulukoiden tavoin. Ympäristön tähtiversio +\mymparisto{align*} ei lado kaavan numeroa mukaan. Edellä olleen +yhtälöesimerkin voi toteuttaa yksinkertaisemmin seuraavasti: + +\mymparistoi{align*} +\begin{koodilohkosis} +\begin{align*} + 4x - 2 &= 6 \\ + x &= 2 +\end{align*} +\end{koodilohkosis} + +\noindent +Paketti \paketti{amsmath} sisältää paljon muitakin hyödyllisiä +ympäristöjä ja komentoja matematiikan latomiseen. Paketin ohjekirjaan on +erittäin suositeltavaa tutustua. + +\subsection{Matematiikkatilan kielioppia} + +Matematiikan kirjoittaminen Latexissa on tehty varsin luonnolliseksi. +Esimerkiksi tavalliset operaattorit ja kokonaisluvut kirjoitetaan +näppäimistöltä sellaisenaan, ja jos desimaalierottimena on piste, sekin +syötetään näppäimistöltä suoraan. Suomessa käytetään desimaalierottimena +kuitenkin pilkkua, joka toimii Latexin matematiikkatilassa välimerkkinä: +sen jälkeen ladotaan pieni väli. Suomalaisen desimaalierottimen saa +kirjoittamalla pilkun ympärille aaltosulkeet. + +\mkomentoi{pi} +\mkomentoi{approx} +\begin{koodilohkosis} +\[ \pi \approx 3{,}142 \] +\end{koodilohkosis} +\[ \pi \approx 3{,}142 \] + +\noindent +Toinen vaihtoehto pilkun käyttämiseen desimaalierottimana on ladata +paketti \pakettictan{icomma}. Paketti määrittelee matematiikkatilan +pilkun toimimaan jokseenkin älykkäästi: jos lähdetiedostossa on pilkun +jälkeen väli, pilkku ladotaan välimerkkinä; jos väliä ei ole, pilkku +katsotaan desimaalierottimeksi. + +Plus-, jako- ja yhtäsuuruusmerkki sekä pienempi kuin ja suurempi kuin +\=/merkit ($+ : / = \; < \; >$) kirjoitetaan näppäimistöltä +sellaisenaan. Miinusmerkki ($-$) kirjoitetaan yhdysmerkin (\koodi{-}) +avulla, eli se ladotaan dokumenttiin Unicode\-/ merkistön miinusmerkkinä +\uctunnus{u+2212 minus sign}. Kertomerkit voi kirjoittaa +lähdedokumenttiin sellaisenaan mutta myös komennolla \mkomento{cdot} +($\cdot$) tai \mkomento{times} ($\times$). + +Pienet sulkeetkin voi kirjoittaa näppäimistöltä suoraan, mutta +matematiikassa tarvitaan usein erikokoisia, tilanteeseen mukautuvia +sulkeita. Ne tehdään komentojen \mkomento{left} (vasen) ja +\mkomento{right} (oikea) avulla. Komentojen jälkeen kirjoitetaan haluttu +suljemerkki, esimerkiksi \mkomento{left}\mkomentojatko{(} ja +\mkomento{right}\mkomentojatko{)}. Itseisarvoa merkitsevät pystyviivat +tehdään samoilla komennoilla, mutta suljemerkkien tilalle kirjoitetaan +pystyviiva~(\koodi{|}). + +\mkomentoi{left} +\mkomentoi{right} +\mkomentoi{frac} +\begin{koodilohkosis} +\[ \left| a + \left( \frac{b}{c \left( d-1 \right)} \right) \right| \] +\end{koodilohkosis} +\[ \left| a + \left( \frac{b}{c \left( d-1 \right)} \right) \right| \] + +\noindent +Komentoja \mkomento{left} ja \mkomento{right} täytyy käyttää pareittain, +jotta Latex osaa latoa oikeankokoiset sulkeet. Jos ei halua +suljemerkille paria, kirjoitetaan toisen suljekomennon ''sulkeeksi'' +piste. Seuraavassa esimerkissä ladotaan vasemmalle aaltosulje +(\mkomento{left}\mkomentojatko{\keno\{}) mutta oikealle ei mitään +(\mkomento{right}\mkomentojatko{.}). + +\mkomentoi{left} +\mkomentoi{right} +\mymparistoi{array} +\begin{koodilohkosis} +\[ \left\{ \begin{array}{r@{~}l} + x &= 4 \\ + y &= -2 \\ + \end{array} \right. \] +\end{koodilohkosis} +\[ \left\{ \begin{array}{l@{~}l} + x &= 4 \\ + y &= -2 \\ + \end{array} \right. \] + +\noindent +Matematiikkatilan ylä- ja alaindeksit toteutetaan sirkumfleksin +(\koodi{\^{}}) ja alaviivan (\koodi{\_}) avulla. Välittömästä merkin +jälkeen oleva merkki ladotaan ylä- tai alaindeksiksi, ja jos indeksi +sisältää enemmän kuin yhden merkin, kirjoitetaan kokonaisuus +aaltosulkeisiin. Joidenkin matemaattisten operaattorikomentojen +yhteydessä indeksit ladotaan poikkeuksellisella tavalla, esimerkiksi +kokonaan operaattorin ylä- tai alapuolelle. + +\mkomentoi{sum} +\mkomentoi{int} +\mkomentoi{lim} +\mkomentoi{to} +\mkomentoi{infty} +\mkomentoi{qquad} +\begin{koodilohkosis} +\[ x^{n-1} \qquad x_i \qquad \sum_{i=1}^n \qquad + \int_0^\infty \qquad \lim_{n \to \infty} \] +\end{koodilohkosis} +\[ x^{n-1} \qquad x_i \qquad \sum_{i=1}^n \qquad + \int_0^\infty \qquad \lim_{n \to \infty} \] + +\noindent +Lausekkeen osia voi ryhmitellä ylä- tai alapuolisella aaltosulkeella, +jotka tehdään komennoilla \mkomento{overbrace} ja \mkomento{underbrace}. +Jos näiden komentojen jälkeen käyttää ylä- tai alaindeksiä, se ladotaan +sulkeen keskelle. Seuraavassa on esimerkki: + +\mkomentoi{overbrace} +\mkomentoi{underbrace} +\begin{koodilohkosis} +\[ \overbrace{3x + x}^{4x} - \underbrace{5y - 2y}_{3y} = 4x - 3y \] +\end{koodilohkosis} +\[ \overbrace{3x + x}^{4x} - \underbrace{5y - 2y}_{3y} = 4x - 3y \] + +\noindent +Muuttujien, funktion nimien tai muiden symbolien jäljessä oleva +$'$\=/merkki tehdään yleisheittomerkin (\koodi{'}) avulla. +Matematiikassa se voi tarkoittaa esimerkiksi funktion +derivaattafunktiota, ja Unicode\-/ merkistössä merkin tunnus +\uctunnus{u+2032 prime}. + +\mkomentoi{quad} +\begin{koodilohkosis} +\[ f(x) = 3x^2 - 2x \quad f'(x) = 6x - 2 \] +\end{koodilohkosis} +\[ f(x) = 3x^2 - 2x \quad f'(x) = 6x - 2 \] + +\noindent +Murtoluvuille ja murtoviivan latomiseen on komento \mkomento{frac}, +jolle annetaan kaksi argumenttia: osoittaja ja nimittäjä. Neliö- ja muut +juuret tehdään \mkomento{sqrt}\-/ komennolla, jolle annetaan ainakin +yksi argumentti. Komennolle voi antaa hakasulkeissa toisenkin +argumentin, joka ilmaisee juuriluvun. Seuraavassa on esimerkki +murtoluvun, neliöjuuren ja kuutiojuuren toteuttamisesta: + +\mkomentoi{frac} +\mkomentoi{sqrt} +\mkomentoi{quad} +\begin{koodilohkosis} +\[ \frac{1}{3x + 1} \quad \sqrt{9} = \sqrt[3]{27} \] +\end{koodilohkosis} +\[ \frac{1}{3x + 1} \quad \sqrt{9} = \sqrt[3]{27} \] + +\noindent +Vektorien nimien latomiseen eli merkkien yläpuoliselle nuolelle on oma +komento \mkomento{vec}, joka toimii yhden kirjaimen kanssa. Kahden +merkin mittaiseen nuoleen tarvitaan komentoa \mkomento{overrightarrow} +(tai \mkomento{overleftarrow}). + +\mkomentoi{vec} +\mkomentoi{overrightarrow} +\mkomentoi{quad} +\begin{koodilohkosis} +\[ \vec{a} \quad \overrightarrow{AB} \] +\end{koodilohkosis} +\[ \vec{a} \quad \overrightarrow{AB} \] + +\noindent +Matriisit voi toteuttaa luvussa \ref{luku/matematiikka-käyttö} esitellyn +\mymparisto{array}\-/ ympäristön avulla, mutta kätevämpää on käyttää +\paketti{amsmath}\-/ paketin ympäristöjä. Kullekin erilaiselle +suljetyypille on oma ympäristönsä: \mymparisto{matrix}, +\mymparisto{pmatrix}~$(\,)$, \mymparisto{bmatrix}~$[\,]$, +\mymparisto{Bmatrix}~$\{\,\}$, \mymparisto{vmatrix}~$|$ ja +\mymparisto{Vmatrix}~$\|$. Ympäristön sisällä matriisin rivin solut +erotetaan toisistaan samoin kuin taulukoissakin eli \koodi{\&}\=/ +merkillä ja rivinvaihto tehdään \mkomento{\keno}\=/ komennolla. +Seuraavassa on esimerkki kahdesta eri ympäristöstä: + +\mymparistoi{matrix} +\mymparistoi{bmatrix} +\mkomentoi{qquad} +\begin{koodilohkosis} +\[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ \end{matrix} \qquad + \begin{bmatrix} + 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ + \end{bmatrix} \] +\end{koodilohkosis} +\[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ \end{matrix} \qquad + \begin{bmatrix} + 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ + \end{bmatrix} \] + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3]{\mkomento{#1} & $#2$ & #3 \\} + + \begin{tabular}{lll} + \toprule + \ots{Komento} + & \ots{Esimerkki} + & \ots{Merkitys} \\ + \midrule + \rivi{mathrm}{\mathrm{ABC~abc}}{antiikva, serif, roman} + \rivi{mathsf}{\mathsf{ABC~abc}}{groteski, sans serif, gothic} + \rivi{mathtt}{\mathtt{ABC~abc}}{tasalevyinen, typewriter} + \rivi{mathcal}{\mathcal{ABC}}{kalligrafinen} + \midrule + \rivi{mathbf}{\mathbf{ABC~abc}}{lihavoitu, bold} + \rivi{mathit}{\mathit{ABC~abc}}{kursiivi, italic} + \bottomrule + \end{tabular} +}{ + \caption{Tekstin latominen matematiikkatilassa vaatii erityisen + komennon} + \label{tlk/matem-teksti} +} + +\noindent +Kuten on jo todettu, tavalliset kirjaimet on matematiikkatilassa +tarkoitettu muuttujien nimiksi. Kun täytyy latoa varsinaista tekstiä -- +tekstitilan tavoin -- täytyy käyttää erityisiä komentoja. Taulukkoon +\ref{tlk/matem-teksti} on koottu matematiikkatilan +tekstinlatomiskomentoja. Komentojen argumenttina oleva teksti ladotaan +kuin tekstitilassa. + +Vaakasuuntaisten välien tekemiseen on matematiikkatilassa muutama +komento. Komento \mkomento{quad} latoo typografisen neliön (1\,em) +levyisen välin. Se on sama kuin nykyisen fontin koko. Komento +\mkomento{qquad} latoo 2\,em:n levyisen välin. Pienempiä välejä saa +komennoilla \mkomento{,} (\murtoluku{3}{18}\,em), \mkomento{:} +(\murtoluku{4}{18}\,em) ja \mkomento{;} (\murtoluku{5}{18}\,em). Komento +\mkomento{!} puolestaan tuottaa negatiivisen välin, jonka mitta on +−\murtoluku{3}{18}\,em. Negatiivista väliä voi käyttää liian suuren +välin pienentämiseen. + +\subsection{Erikoismerkkejä} + +Matematiikkatilassa voi käyttää Unicode\-/ merkistöä, eli monet +matemaattiset symbolit voi kirjoittaa lähdedokumenttiin sellaisenaan. +Voi silti olla helpompaa käyttää erityisiä komentoja sellaisten +kirjainten ja symbolien kirjoittamiseen, joita ei ihan helposti pysty +tuottamaan näppäimistöltä tai tekstieditorin toimintojen avulla. +Matematiikkatilan erikoismerkkejä on koottu oheisiin taulukoihin +(\ref{tlk/matem-kreikk}--). Lisää symboleja on paketeissa +\pakettictan{latexsym} ja \pakettictan{amsmath}. + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{4}{cl}} + \toprule + + \rivi{\alpha}{alpha} + & \rivi{\Alpha}{Alpha} + & \rivi{\beta}{beta} + & \rivi{\Beta}{Beta} \\ + + \rivi{\gamma}{gamma} + & \rivi{\Gamma}{Gamma} + & \rivi{\delta}{delta} + & \rivi{\Delta}{Delta} \\ + + \rivi{\epsilon}{epsilon} + & \rivi{\varepsilon}{varepsilon} + & \rivi{\Epsilon}{Epsilon} + & \rivi{\zeta}{zeta} \\ + + \rivi{\Zeta}{Zeta} + & \rivi{\eta}{eta} + & \rivi{\Eta}{Eta} + & \rivi{\theta}{theta} \\ + + \rivi{\vartheta}{vartheta} + & \rivi{\Theta}{Theta} + & \rivi{\iota}{iota} + & \rivi{\Iota}{Iota} \\ + + \rivi{\kappa}{kappa} + & \rivi{\Kappa}{Kappa} + & \rivi{\lambda}{lambda} + & \rivi{\Lambda}{Lambda} \\ + + \rivi{\mu}{mu} + & \rivi{\Mu}{Mu} + & \rivi{\nu}{nu} + & \rivi{\Nu}{Nu} \\ + + \rivi{\xi}{xi} + & \rivi{\Xi}{Xi} + & \rivi{\pi}{pi} + & \rivi{\varpi}{varpi} \\ + + \rivi{\Pi}{Pi} + & \rivi{\rho}{rho} + & \rivi{\varrho}{varrho} + & \rivi{\Rho}{Rho} \\ + + \rivi{\sigma}{sigma} + & \rivi{\varsigma}{varsigma} + & \rivi{\Sigma}{Sigma} + & \rivi{\tau}{tau} \\ + + \rivi{\Tau}{Tau} + & \rivi{\upsilon}{upsilon} + & \rivi{\Upsilon}{Upsilon} + & \rivi{\phi}{phi} \\ + + \rivi{\varphi}{varphi} + & \rivi{\Phi}{Phi} + & \rivi{\chi}{chi} + & \rivi{\Chi}{Chi} \\ + + \rivi{\psi}{psi} + & \rivi{\Psi}{Psi} + & \rivi{\omega}{omega} + & \rivi{\Omega}{Omega} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Kreikkalaisten kirjainten latominen matematiikkatilassa} + \label{tlk/matem-kreikk} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3][a]{$#2{#1}$ & \mkomento{#3}\mkomentoarg{#1}} + + \begin{tabular}{*{3}{cl}} + \toprule + + \rivi{\grave}{grave} + & \rivi{\ddot}{ddot} + & \rivi{\hat}{hat} \\ + + \rivi{\acute}{acute} + & \rivi{\check}{check} + & \rivi[aaa]{\widehat}{widehat} \\ + + \rivi{\breve}{breve} + & \rivi{\dot}{dot} + & \rivi{\tilde}{tilde} \\ + + \rivi{\bar}{bar} + & \rivi{\mathring}{mathring} + & \rivi[aaa]{\widetilde}{widetilde} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Matematiikkatilan tarkekomentoja} + \label{tlk/matem-tarkkeita} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[3][AB]{$#2{#1}$ & \mkomento{#3}\mkomentoarg{#1}} + \renewcommand{\arraystretch}{1.5} + + \begin{tabular}{*{2}{cl}} + \toprule + + \rivi{\overrightarrow}{overrightarrow} + & \rivi{\overleftarrow}{overleftarrow} \\ + + \rivi{\underrightarrow}{underrightarrow} + & \rivi{\underleftarrow}{underleftarrow} \\ + + \rivi{\overleftrightarrow}{overleftrightarrow} + & \rivi{\underleftrightarrow}{underleftrightarrow} \\ + + \rivi{\overline}{overline} + & \rivi{\underline}{underline} \\ + + \rivi[abc]{\overbrace}{overbrace} + & \rivi[abc]{\underbrace}{underbrace} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Ylä- ja alamerkintöjä} + \label{tlk/matem-yla-ala-merk} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{4}{cl}} + \toprule + + $<$ + & \koodi{<} + & $>$ + & \koodi{>} + & $=$ + & \koodi{=} + & $:$ + & \koodi{:} \\ + + $\leq$ + & \mkomento{leq} \mkomento{le} + & $\geq$ + & \mkomento{geq} \mkomento{ge} + & \rivi{\ll}{ll} + & \rivi{\gg}{gg} \\ + + \rivi{\equiv}{equiv} + & \rivi{\doteq}{doteq} + & \rivi{\prec}{prec} + & \rivi{\preceq}{preceq} \\ + + \rivi{\succ}{succ} + & \rivi{\succeq}{succeq} + & \rivi{\sim}{sim} + & \rivi{\simeq}{simeq} \\ + + \rivi{\subset}{subset} + & \rivi{\subseteq}{subseteq} + & \rivi{\supset}{supset} + & \rivi{\supseteq}{supseteq} \\ + + \rivi{\approx}{approx} + & \rivi{\cong}{cong} + & \rivi{\sqsubset}{sqsubset} + & \rivi{\sqsubseteq}{sqsubseteq} \\ + + \rivi{\sqsupset}{sqsupset} + & \rivi{\sqsupseteq}{sqsupseteq} + & \rivi{\bowtie}{bowtie} + & \rivi{\in}{in} \\ + + \rivi{\ni}{ni} + & \rivi{\propto}{propto} + & \rivi{\vdash}{vdash} + & \rivi{\dashv}{dashv} \\ + + \rivi{\models}{models} + & \rivi{\mid}{mid} + & \rivi{\parallel}{parallel} + & \rivi{\perp}{perp} \\ + + \rivi{\smile}{smile} + & \rivi{\frown}{frown} + & \rivi{\asymp}{asymp} + & \rivi{\notin}{notin} \\ + + $\neq$ + & \mkomento{neq} \mkomento{ne} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Relaatioita. Negaation saa kirjoittamalla komennon eteen + \mkomento{not}} + \label{tlk/matem-relaatioita} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + \renewcommand{\arraystretch}{1.1} + + \begin{tabular}{*{4}{cl}} + \toprule + + $+$ + & \koodi{+} + & $-$ + & \koodi{-} + & \rivi{\pm}{pm} + & \rivi{\mp}{mp} \\ + + \rivi{\cdot}{cdot} + & \rivi{\div}{div} + & \rivi{\times}{times} + & \rivi{\setminus}{setminus} \\ + + \rivi{\cup}{cup} + & \rivi{\cap}{cap} + & \rivi{\sqcup}{sqcup} + & \rivi{\sqcap}{sqcap} \\ + + \rivi{\vee}{vee} + & \rivi{\wedge}{wedge} + & \rivi{\oplus}{oplus} + & \rivi{\ominus}{ominus} \\ + + \rivi{\odot}{odot} + & \rivi{\oslash}{oslash} + & \rivi{\uplus}{uplus} + & \rivi{\otimes}{otimes} \\ + + \rivi{\sum}{sum} + & \rivi{\prod}{prod} + & \rivi{\coprod}{coprod} + & \rivi{\int}{int} \\ + + \rivi{\oint}{oint} + & \rivi{\bigoplus}{bigoplus} + & \rivi{\bigotimes}{bigotimes} + & \rivi{\bigodot}{bigodot} \\ + + \rivi{\bigvee}{bigvee} + & \rivi{\bigwedge}{bigwedge} + & \rivi{\bigcup}{bigcup} + & \rivi{\bigcap}{bigcap} \\ + + \rivi{\biguplus}{biguplus} + & \rivi{\bigsqcup}{bigsqcup} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Operaattoreita} + \label{tlk/matem-operaattoreita} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{2}{cl}} + \toprule + + \rivi{\leftarrow}{leftarrow} + & \rivi{\rightarrow}{rightarrow} \\ + + \rivi{\longleftarrow}{longleftarrow} + & \rivi{\longrightarrow}{longrightarrow} \\ + + \rivi{\leftrightarrow}{leftrightarrow} + & \rivi{\longleftrightarrow}{longleftrightarrow} \\ + + \rivi{\Leftarrow}{Leftarrow} + & \rivi{\Rightarrow}{Rightarrow} \\ + + \rivi{\Longleftarrow}{Longleftarrow} + & \rivi{\Longrightarrow}{Longrightarrow} \\ + + \rivi{\Leftrightarrow}{Leftrightarrow} + & \rivi{\Longleftrightarrow}{Longleftrightarrow} \\ + + \rivi{\mapsto}{mapsto} + & \rivi{\longmapsto}{longmapsto} \\ + + \rivi{\hookleftarrow}{hookleftarrow} + & \rivi{\hookrightarrow}{hookrightarrow} \\ + + \rivi{\leftharpoonup}{leftharpoonup} + & \rivi{\rightharpoonup}{rightharpoonup} \\ + + \rivi{\leftharpoondown}{leftharpoondown} + & \rivi{\rightharpoondown}{rightharpoondown} \\ + + \rivi{\rightleftharpoons}{rightleftharpoons} + & \rivi{\iff}{iff} \\ + + \rivi{\uparrow}{uparrow} + & \rivi{\downarrow}{downarrow} \\ + + \rivi{\updownarrow}{updownarrow} + & \rivi{\Updownarrow}{Updownarrow} \\ + + \rivi{\Uparrow}{Uparrow} + & \rivi{\Downarrow}{Downarrow} \\ + + \rivi{\nearrow}{nearrow} + & \rivi{\searrow}{searrow} \\ + + \rivi{\swarrow}{swarrow} + & \rivi{\nwarrow}{nwarrow} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Nuolia} + \label{tlk/matem-nuolia} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{4}{cl}} + \toprule + + \rivi{\langle}{langle} + & \rivi{\rangle}{rangle} + & \rivi{\lfloor}{lfloor} + & \rivi{\rfloor}{rfloor} \\ + + \rivi{\rceil}{rceil} + & \rivi{\lceil}{lceil} + & $|$ + & \koodi{|} \mkomento{vert} + & $\|$ + & \mkomentox{|} \mkomento{Vert} \\ + + \rivi{\lgroup}{lgroup} + & \rivi{\rgroup}{rgroup} + & \rivi{\lmoustache}{lmoustache} + & \rivi{\rmoustache}{rmoustache} \\ + + $/$ + & \koodi{/} + & \rivi{\backslash}{backslash} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Sulkeita ja erotinmerkkejä} + \label{tlk/matem-erottimia} +} + +\leijutlk{ + \providecommand{\rivi}{} + \renewcommand{\rivi}[2]{$#1$ & \mkomento{#2}} + + \begin{tabular}{*{3}{cl}} + \toprule + + $\neg$ + & \mkomento{neg} \mkomento{lnot} + & \rivi{\angle}{angle} + & \rivi{\emptyset}{emptyset} \\ + + \rivi{\infty}{infty} + & $'$ + & \koodi{'} + & \rivi{\prime}{prime} \\ + + \rivi{\forall}{forall} + & \rivi{\exists}{exists} + & \rivi{\wr}{wr} \\ + + \rivi{\bot}{bot} + & \rivi{\top}{top} + & \rivi{\surd}{surd} \\ + + \rivi{\dots}{dots} + & \rivi{\cdots}{cdots} + & \rivi{\vdots}{vdots} \\ + + \rivi{\ddots}{ddots} + & \rivi{\triangle}{triangle} + & \rivi{\triangleleft}{triangleleft} \\ + + \rivi{\triangleright}{triangleright} + & \rivi{\nabla}{nabla} + & \rivi{\star}{star} \\ + + \rivi{\ast}{ast} + & \rivi{\circ}{circ} + & \rivi{\bigcirc}{bigcirc} \\ + + \rivi{\bullet}{bullet} + & \begin{tikzpicture} % \diamond puuttuu fontista + \draw [rotate=45] (0,0) rectangle (.5ex,.5ex); + \end{tikzpicture} + & \mkomento{diamond} + & \rivi{\amalg}{amalg} \\ + + \rivi{\bigtriangleup}{bigtriangleup} + & \rivi{\bigtriangledown}{bigtriangledown} + & \rivi{\dagger}{dagger} \\ + + \rivi{\ddagger}{ddagger} + & \rivi{\diamondsuit}{diamondsuit} + & \rivi{\heartsuit}{heartsuit} \\ + + \rivi{\clubsuit}{clubsuit} + & \rivi{\spadesuit}{spadesuit} + & \rivi{\flat}{flat} \\ + + \rivi{\natural}{natural} + & \rivi{\sharp}{sharp} + & \rivi{\hbar}{hbar} \\ + + \rivi{\imath}{imath} + & \rivi{\jmath}{jmath} + & \rivi{\ell}{ell} \\ + + \rivi{\Re}{Re} + & \rivi{\Im}{Im} + & \rivi{\aleph}{aleph} \\ + + \rivi{\wp}{wp} \\ + + \bottomrule + \end{tabular} +}{ + \caption{Sekalaisia symboleja} + \label{tlk/matem-sekalaisia} +} diff --git a/info/kaytannollista-latexia/luku-valmistautuminen.tex b/info/kaytannollista-latexia/luku-valmistautuminen.tex new file mode 100644 index 0000000000..5913cf0c88 --- /dev/null +++ b/info/kaytannollista-latexia/luku-valmistautuminen.tex @@ -0,0 +1,430 @@ +% Tekijä: Teemu Likonen <tlikonen@iki.fi> +% Lisenssi: Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen (CC BY-SA 4.0) +% https://creativecommons.org/licenses/by-sa/4.0/legalcode.fi + +\chapter{Valmistautuminen} + +Tämän pääluvun tarkoituksena on johdatella uudet ihmiset Latexin pariin. +Tämän luettuasi sinun pitäisi olla valmis aloittamaan Latexin käyttö ja +opiskelemaan sen tekniikkaa eteenpäin. Jos taas olet jo tottunut +kääntämään Latex\-/ lähdetiedostoja, voit aivan hyvin hypätä tämän luvun +yli tai ehkä vain silmäillä tekstiä lisävinkkien toivossa. + +\section{Käsitteet ja nimet} + +Latex ja sen ympärille rakentuneet ohjelmistot ovat aika monimutkainen +kokonaisuus, johon kuuluu eri\-/ikäisiä ja abstraktiotasoltaan erilaisia +osia. Mukaan kuuluu tietenkin konkreettisia tietokoneohjelmia, jotka +tekevät konkreettisia, ennalta määriteltyjä asioita. Mukaan kuuluu +kuitenkin myös ihmisten luomia abstrakteja käsitteitä, jotka ovat +vaikeammin määriteltävissä. + +Internetissä näkyy silloin tällöin termi- ja käsitekeskusteluja, jossa +ihmetellään, mihin mikäkin Latexiin liittyvä palikka kuuluu +käsitteellisesti. Millainen suhde joillakin uudemmilla osilla on +vanhempiin? Oikeiden termien ja käsitteiden osaamisesta on hyötyä +ainakin silloin, kun pyytää verkossa apua suurelta yleisöltä. +Viestintähän aina vaatii, että puhutaan suunnilleen samaa kieltä, joten +seuraavaksi selvennetään hieman Latexiin liittyviä peruskäsitteitä. + +\subsection{Tex ja Latex} + +Tex on tekstin ladontaan erikoistunut ohjelmointikieli. Kielen avulla +voidaan antaa ladontaohjeita ja ilmaista muuta siihen liittyvää +logiikkaa. Ohjelmointikielellä kirjoitettujen ohjeiden perusteella +tietokoneohjelma osaa latoa tekstidokumentin ihmisten luettavaksi. +Niinpä Tex on myös tietokoneohjelma (\koodi{tex}), joka osaa lukea +Tex\-/ ohjelmointikieltä sisältävän tekstitiedoston ja tuottaa sen +perusteella valmiin julkaistavan dokumentin. Yleensä Tex\-/ +ohjelmointikieltä ei kuitenkaan käytetä suoraan tekstidokumenttien +toteuttamiseen. Ohjelmointikieltä kirjoittavat tavallisimmin vain ne, +jotka haluavat kehittää itse ladontajärjestelmää paremmaksi muita +ihmisiä varten. + +Latex toimii korkeammalla abstraktiotasolla kuin Tex. Se on laaja +kokoelma toimintoja, jotka piilottavat monimutkaiset tekniset +yksityiskohdat ja tarjoavat ihmisille varsin helppokäyttöisen +merkintäkielen, jolla omat tekstidokumentit voi toteuttaa. Latex\-/ +merkintäkielen kirjoittaminen ei ole ohjelmointia, vaan se on oman +dokumentin sisällön, rakenteen ja ulkoasun kuvailua tietynlaisten +merkintätapojen avulla. + +Latex\-/ merkintäkielellä kuvatut dokumentit välitetään +tietokoneohjelmalle jatkokäsiteltäväksi. Niinpä Latex on myös +tietokoneohjelma (\koodi{latex}, \koodi{pdflatex}), jolla +merkintäkielinen lähdetiedosto käännetään julkaistavaksi dvi- tai pdf\-/ +dokumentiksi.% +\footnote{\textsc{dvi} = device independent file format; \textsc{pdf} = + portable document format.} + +Latex\-/ järjestelmästä käytetään tällä hetkellä versiota Latex~2ε, joka +julkaistiin jo vuonna 1994 ja johon ilmestyy pieniä parannuksia +vuosittain. Perusosat ovat kuitenkin varsin muuttumattomia. Varsinainen +kiinnostava kehitys tapahtuukin esimerkiksi Latexin kääntäjissä +(Lualatex ja Xelatex) sekä eri tekijöiden dokumenttiluokissa (luku +\ref{luku/dokumenttiluokat}) ja laajennuspaketeissa. Viimeksi mainitut +laajentavat perus\-/ Latexia tuomalla niihin lisää helppokäyttöisiä +toimintoja. + +\subsection{Lualatex ja Xelatex} + +Nykyaikana Latex\-/ dokumentteja ei juuri käännetä alkuperäisillä +kääntäjillä (\koodi{latex}, \koodi{pdflatex}, \koodi{tex}) vaan +kehittyneemmillä kääntäjäohjelmilla.% +\footnote{Englannin kielellä Latexin kääntäjiä on tapana kutsua + yleisnimellä \englantik{engine} 'kone, moottori'.} Niistä tärkeimmät +ovat Lualatex ja Xelatex.% +\footnote{Tietokoneohjelmat \koodi{lualatex} ja \koodi{luatex} sekä + \koodi{xelatex} ja \koodi{xetex}.} Ne muun muassa osaavat lukea +Unicode\-/ merkistöllä kirjoitettuja lähdedokumentteja ja käyttää +nykyaikaisia \englanti{True Type}- ja \englanti{Open Type} \=/fontteja, +mitä alkuperäinen Latex ja Tex eivät osaa. + +Lualatexilla ja Xelatexilla ei ole ohjelmien käyttäjän kannalta +suurtakaan eroa -- ei välttämättä mitään näkyvää eroa. Miksi sitten on +olemassa kaksi, ulkoisesti lähes samanlaista kääntäjää? Tärkein syy +taitaa olla se, että Xelatex tehtiin ensin. Tarkoituksena oli saada +Unicode\-/ merkistön tuki ja fonttiasiat ajan tasalle. Myöhemmin jotkut +ajattelivat, että Lua\-/ ohjelmointikieli täytyy saada mukaan. Sillä on +merkitystä joillekuille laajennuspakettien tekijöille. Lua\-/ kielen +sisällyttäminen oikeastaan pakotti kirjoittamaan koko homman uusiksi. +Toteutuksissa on muitakin sisäisiä eroja. Xelatex oli pitkään suositumpi +ja paremmin tuettu eri laajennuspaketeissa, mutta erot ovat sittemmin +tasoittuneet. + +Latex\-/ kokeilun alkutaipaleella voi vaikka arpoa kolikon avulla, +kumpaa kääntäjää käyttää, sillä niiden erot eivät ihan helposti tule +esiin. Jotkin harvat laajennuspaketit eivät toimi Lualatexissa, kun taas +toiset eivät toimi Xelatexissa. Joskus saattaa jopa tulla vastaan +yksittäinen, kehityksestä ehkä jälkeen jäänyt paketti, joka ei toimi +kummassakaan vaan ainoastaan perinteisillä kääntäjillä (\koodi{latex}, +\koodi{pdflatex}). + +Joissakin tilanteissa eri kääntäjien tekemissä pdf\-/ dokumenteissa +näkyy pieniä eroja. Ainakin yksittäisissä fonttien asetuksissa ja +joidenkin Unicode\-/ merkkien käsittelyssä on eroja. Tämänkin oppaan +tekstissä mainitaan pari pientä ominaisuutta, jotka toimivat vain +toisella kääntäjällä: toiset Lualatexilla, toiset Xelatexilla. Itse +oppaan lähdetiedostot kääntyvät ja toimivat yhtä lailla molemmilla. + +\subsection{Latex yläkäsitteenä} + +Jotta kaikki olisi mahdollisimman sekavaa, ''Latex'' toimii myös +yleisnimityksenä tälle kaikelle. Se esiintyy ilmauksissa kuten +''Toteutin dokumentin Latexilla'' tai ''Tämä artikkeli on tehty +Latexilla''. Ilmaukset sitten tarkoittavat suunnilleen seuraavanlaista: +Henkilöllä on asennettuna tietokoneelle Latex\-/ jakelukokonaisuus +(kuten Tex Live). Hän on kirjoittanut tekstieditorilla (kuten +\textsc{gnu} Emacsilla) tekstitiedoston, jossa on dokumentin sisältö ja +Latex\-/ merkintäkielisiä komentoja mutta ehkä myös joitakin Tex\-/ +komentoja. Sitten hän on kääntänyt eli ladotuttanut tekstitiedostonsa +pdf\-/ tiedostoksi Latex\-/ ladontaohjelman jollakin toteutuksella kuten +Lualatexilla tai Xelatexilla. + +Meille taitaa riittää vain Latexista puhuminen, mutta siitäkin on +mainittava vielä yksi asia. Latexin harrastajat tykkäävät käyttää +dokumenttiensa leipätekstissä ladontajärjestelmän logoja kuten \TeX{} ja +\LaTeX{}. Usein teksteissä näkyy myös logojen pohjalta mukailtuja +kirjoitusasuja TeX ja LaTeX. + +Kielenhuoltajien suositusten mukaan logojen eikä erikoisten +kIRjoiTusAsuJen paikka ei ole asiatyylisten tekstilajien leipätekstissä. +Nimet ovat osa kielen järjestelmää ja käyttäytyvät normaalissa tekstissä +sen mukaisesti. Niinpä tässä oppaassa käytetään erisnimiä kielenhuollon +normien mukaisesti, esimerkiksi Tex ja Latex. Koodi ja komennot ovat +siinä muodossa kuin ne tietokoneelle annetaan, esimerkiksi +\koodi{lualatex}. Tasalevyinen, kirjoituskonetyylinen fontti on merkkinä +siitä, että kyse on tietokonekoodista. + +\section{Asentaminen tietokoneelle} +\label{luku/asentaminen} + +Latex pitää tietysti asentaa tietokoneelle, jotta sitä voisi käyttää. +Miten edellisessä luvussa kuvattu sekava kokonaisuus saadaan ehjänä +omalle tietokoneelle? Onneksi muut ovat jo ratkaisseet sen ongelman. + +Tavallisin tapa Latexin käyttöönottoon on jonkin Latexin jakelupaketin +asentaminen. Jakelupaketti sisältää Latexin perusosien lisäksi paljon +laajennuspaketteja ja niiden ohjekirjoja. Kaikkea ei koskaan tarvitse, +mutta kun yllättävä tarve tulee tai lukee vinkkejä verkkokeskusteluista, +on mukavaa huomata, että paketti olikin itsellä jo valmiina. Siksi +suosittelen kokonaisen jakelupaketin asentamista. + +\textsc{gnu}/Linuxissa ja muissa Unix\-/ tyyppisissä +käyttöjärjestelmissä käytetään yleensä Tex Live \=/nimistä jakelua. Se +on todennäköisesti saatavilla käyttöjärjestelmäjakelun +pakettivarastoista. Esimerkiksi Debianiin% +\footnote{\url{https://www.debian.org/}} ja sen kaltaisiin järjestelmiin +on asennuspaketti ''texlive-full'', joka asentaa kaiken helposti ja +kerralla. + +Windows\-/ käyttöjärjestelmälle on saatavilla Tex Liven lisäksi Miktex +ja Protext. Mac \textsc{os} \=/käyttöjärjestelmän kanssa käytettäneen +yleensä Mactex\-/ nimistä jakelua. + +\section{Apuohjelmia} + +\subsection{Tekstieditori} + +Omien dokumenttien ja Latex\-/ merkintäkielen kirjoittamiseen kannattaa +käyttää kunnollista tekstieditoria, koska se on tärkein työkalu ja sen +kanssa ollaan eniten tekemisissä. Pyri löytämään sellainen editori, joka +osaa värjätä tekstiä Latexin tai Texin tekstipiirteiden mukaisesti. +Väreillä ei sinänsä ole merkitystä, mutta editorin laadusta se yleensä +kertoo paljon. Jos editori tuntee erilaisten ohjelmointi\-/{} ja +merkintäkielten luonnetta ja osaa merkitä kielen avainsanoja +havainnollisilla väreillä, se todennäköisesti on tehty tehokkaaseen +ohjelmointiin ja muuhun vastaavaan työskentelyyn. Ihan yksinkertaisiin +editoreihin ei tuollaisia ominaisuuksia yleensä tehdä. + +\subsection{Pdf-katselin} + +Latex\-/ kääntäjät eli \=/moottorit kuten Lualatex ja Xelatex tuottavat +pdf\-/ tiedoston, ja niiden katselemiseen tarvitaan tietenkin oma +ohjelmansa. Sellaisia on saatavilla paljon erilaisia, ja melkein mikä +tahansa kelpaa, mutta yksi tietty ominaisuus olisi toivottavaa olla: +muuttuneen pdf\-/ tiedoston automaattinen lataaminen. + +Välillä työskentely on sitä, että tehdään Latex\-/ dokumenttiin pieni +muutos, käännetään se ja katsotaan pdf:ää. Lopputulos ei ehkä ihan +miellytä. Muokataan tekstiä tai asetuksia vähän, käännetään ja +katsotaan, miltä ladottu pdf nyt näyttää. + +On suuri apu, jos pdf\-/ katselimessa ei tarvitse joka kerta valikoiden +kautta avata samaa tiedostoa uudelleen, vaan ohjelma itse huomaa, että +jo avattu tiedosto muuttui tiedostojärjestelmässä, ja lataa sen +automaattisesti uudelleen. Jotkin pdf\-/ ohjelmat osaavat tämän. Jotkin +ohjelmat eivät ihan osaa mutta osaavat sentään yhdellä +näppäinpainalluksella avata saman pdf:n uudelleen +tiedostojärjestelmästä. + +Hyvän tekstieditorin ja pdf\-/ katselimen kanssa työskentely on sujuvaa. +Parhaimmillaan editorissa tietty näppäinkomento tallentaa ja kääntää +dokumentin, ja pian pdf\-/ katselin lataa muuttuneen pdf:n +automaattisesti näkyviin. Sekä editorin että pdf\-/ katselimen voi pitää +samanaikaisesti esillä. + +\subsection{Latexmk} +\label{luku/latexmk} + +Erinomaisen hyödyllinen apuohjelma on Latexmk, koska se helpottaa +dokumenttien kääntämistä ja muutakin työskentelyä. Varsin usein Latex\-/ +dokumentit täytyy kääntää useita kertoja ennen kuin pdf\-/ tiedosto on +valmis. Tämä johtuu siitä, että dokumentit sisältävät usein +ristiviitteitä eli viittauksia dokumentin toisiin osiin. Latex ei saa +ristiviitteitä kohdalleen yhdellä kääntämisellä, vaan ensin se +kirjoittaa viittausten kohteet muistiin väliaikaistiedostoon ja +seuraavilla kääntökerroilla käyttää väliaikaistiedostoa apunaan. + +Tavallinenkin Latexin kääntäjä kyllä huomauttaa tietokoneen käyttäjää, +kun uusintakäännös on tarpeen, mutta Latexmk\-/ ohjelma käynnistää +uusintakäännöksen itse, aina kun se on tarpeellista. Alla ovat +esimerkkikomennot Latex\-/ dokumentin kääntämiseen Lualatexilla ja +Xelatexilla. + +\begin{koodilohkosis} +latexmk -lualatex teksti.tex +latexmk -xelatex teksti.tex +\end{koodilohkosis} + +\noindent +Työskentelyä erityisen paljon helpottava valitsin on \koodi{\=/pvc}. Kun +tuo valitsin on mukana komennossa, Latexmk jää tarkkailemaan annettua +Latex\-/ tiedostoa, ja kun se huomaa tiedoston muuttuneen, se kääntää +tiedoston automaattisesti uudelleen. Kirjoittajan ei siis tarvitse muuta +kuin tallentaa tiedosto tekstieditorista, ja tarkkailutilassa oleva +Latexmk kääntää sen aina itsestään. + +Muitakin hyödyllisiä toimintoja on mukana. Seuraavista esimerkeistä +ensimmäinen komento poistaa kääntämisen aikana luodut +väliaikaistiedostot,% +\footnote{Kääntäjän luomien väliaikaistiedostojen nimien päätteitä: + \koodi{log}, \koodi{aux}, \koodi{out} ym.} ja jälkimmäinen komento +poistaa kaikki luodut tiedostot eli väliaikaistiedostojen lisäksi myös +valmiin pdf\-/ tiedoston. + +\begin{koodilohkosis} +latexmk -c teksti.tex +latexmk -C teksti.tex +\end{koodilohkosis} + +\noindent +Edellisissä esimerkeissä käsitellään lähdetiedostoa nimeltä +\koodi{teksti.\katk tex}, mutta jos lähdetiedostoa ei anna komennolle +lainkaan, käännetään kaikki nykyisessä hakemistossa olevat +\koodi{tex}\-/ päätteiset tiedostot. + +Latexmk\-/ ohjelmalle voi tehdä asetustiedoston, johon voi kirjoittaa +omaan käyttöön sopivat asetukset. Asetustiedosto sijoitetaan +tiedostojärjestelmässä käyttäjän kotihakemistoon. Esimerkki +\ref{esim/latexmkrc} näyttää, mitä se voisi ehkä sisältää. + +\begin{esimerkki*} +\begin{koodilohko} +$pdf_mode = 4; # 4=lualatex, 5=xelatex +$lualatex = 'lualatex -interaction=nonstopmode -shell-escape %O %S'; +$xelatex = 'xelatex -interaction=nonstopmode -shell-escape %O %S'; +$clean_ext = 'snm nav xdv bbl run.xml'; +$pdf_previewer = 'okular %S'; +\end{koodilohko} + \caption{Latexmk\-/ ohjelman asetustiedosto (\koodi{\textasciitilde + /.config/\katk latexmk/\katk latexmkrc})} + \label{esim/latexmkrc} +\end{esimerkki*} + +Esimerkin ensimmäisen rivin asetus määrittää, miten pdf\-/ tiedostot +tuotetaan tai mitä kääntäjää käytetään oletuksena. Toisella ja +kolmannella rivillä määritellään, millä tavoin Lualatex ja Xelatex +suoritetaan. Tässä esimerkissä oletusasetuksiin on lisätty +\koodi{-inter\-action=\katk non\-stop\-mode}, joka estää kaiken +vuorovaikutteisen toiminnan. Asetus on tarpeen ainakin silloin, kun +kääntäjä käynnistetään toisesta ohjelmasta kuten tekstieditorista eikä +vuorovaikutus kääntäjän kanssa ole mahdollista. Valitsin +\koodi{-shell-escape} kytkee päälle ominaisuuden, jota tarvitaan +joidenkin laajennuspakettien toimintaan.\footnote{Ainakin + asiahakemistopaketit \paketti{indextools} ja \paketti{imakeidx} + tarvitsevat \koodi{-shell-escape}\-/ toiminnon (luku + \ref{luku/asiasanat}).} + +Esimerkin \ref{esim/latexmkrc} neljännellä rivillä luetellaan +kääntämisen aikana syntyvien väliaikaistiedostojen päätteitä. Latexmk\-/ +ohjelma tuntee yleisimmät väliaikaistiedostot (\koodi{log}, \koodi{aux}, +\koodi{out} ym.), mutta tällä asetuksella mukaan voi lisätä +harvinaisempia, joita se ei tunne. Viides rivi määrittää pdf\-/ +katseluohjelman, joka käynnistetään, kun käytetään valitsimia +\koodi{\=/pv} tai \koodi{\=/pvc}. + +\subsection{Texdoc} + +Latexin kirjoittajan täytyy silloin tällöin lukea ohjekirjoja. Vaikka +Latexin perusosat joskus oppisikin ulkoa, ei voi koskaan muistaa +kaikkien hyödyllisten laajennuspakettien kaikkia ominaisuuksia. + +Tex Live \=/jakelun (luku \ref{luku/asentaminen}) mukana tulee mainio +komentotulkissa toimiva komento \koodi{texdoc}, jolla voi hakea ja avata +omaan järjestelmään asennettuja Latex\-/ aiheisia ohjeita. Jos vaikka +haluaa tutustua esimerkissä \ref{esim/ensimmäinen} +(s.~\pageref{esim/ensimmäinen}) mainittavaan \paketti{fontspec}\-/ +pakettiin syvällisemmin, tarvitsee vain komentaa \koodi{texdoc + fontspec}, ja paketin pdf\-/ muotoinen ohjekirja avautuu. + +\section{Lähdetiedostot} + +Seuraavassa ovat ohjeet alkuun pääsemiseksi. Luodaan yksinkertainen +Latex\-/ lähdetiedosto, jota voi käyttää harjoitteluun ja pohjana omille +töille. Tallenna esimerkin \ref{esim/ensimmäinen} sisältö tekstieditorin +avulla tiedostoon vaikkapa nimellä \koodi{teksti.\katk tex}. Käännä eli +lado se pdf\-/ tiedostoksi käyttämällä jotakin seuraavista komennoista +(valitse yksi): + +\begin{koodilohkosis} +lualatex teksti.tex +xelatex teksti.tex +latexmk -lualatex teksti.tex +latexmk -xelatex teksti.tex +\end{koodilohkosis} + +\noindent +Tuloksena pitäisi olla tiedosto \koodi{teksti.\katk pdf}, jota voi +ihailla jollakin pdf\-/ tiedostojen katseluun tarkoitetulla ohjelmalla. + +Esimerkin \ref{esim/ensimmäinen} ensimmäisellä rivillä määritellään +dokumenttiluokka \luokka{article}, joka on tietynlainen sivupohja tai +asetusten kokoelma, jonka perustalle aletaan rakentaa omaa dokumenttia. +Luokka \luokka{article} on tyypillinen valinta lyhyehköille teksteille. +Lisätietoa dokumenttiluokista on luvussa \ref{luku/dokumenttiluokat}. + +Riveillä 2--4 käytetään komentoa \komentom{usepackage}, jonka avulla +otetaan käyttöön sivun asetuksista huolehtiva \paketti{geometry}\-/ +paketti, fonttiasetuksia hoitava \paketti{fontspec}\-/ paketti ja +kieliasetuksista vastaava \paketti{polyglossia}\-/ paketti. Näitä kolmea +tarvitaan melkein joka kerta dokumenteissa, ja niihin palataan tarkemmin +luvuissa \ref{luku/sivuasetukset}, \ref{luku/kirjaintyypit} ja +\ref{luku/kieliasetukset}. + +Seuraavilla riveillä asetetaan kieleksi suomi (\koodi{finnish}) ja +määritetään oletuksena käytettävä fontti tai oikeastaan kokonainen +kirjainperhe. \englanti{Latin Modern Roman} \=/kirjainperheen tilalle +voi toki asettaa jonkin muunkin. Fontin oletuskoko on 10 typografista +pistettä, mutta tässä esimerkissä se venytetään 1,3\-/ kertaiseksi eli +13 pisteeseen. Riviväliin liittyvä kerroin asetetaan rivillä 8. + +\begin{esimerkki*} + \komentoi{begin} + \komentoi{documentclass} + \komentoi{end} + \komentoi{linespread} + \komentoi{setdefaultlanguage} + \komentoi{setmainfont} + \komentoi{usepackage} + \luokkai{article} + \pakettii{fontspec} + \pakettii{geometry} + \pakettii{polyglossia} + \ymparistoi{document} + +\begin{koodilohko} +\documentclass{article} +\usepackage[a4paper,top=20mm,bottom=30mm,left=20mm,right=20mm]{geometry} +\usepackage{fontspec} +\usepackage{polyglossia} + +\setdefaultlanguage{finnish} +\setmainfont{Latin Modern Roman}[Scale=1.3] +\linespread{1.4} + +\begin{document} + +Minun Latex-dokumenttini! + +\end{document} +\end{koodilohko} + \caption{Latex\-/ lähdedokumentin runko ja perusasetukset} + \label{esim/ensimmäinen} +\end{esimerkki*} + +Dokumentin alkuosaa riville 9 saakka kutsutaan esittelyosaksi +(\englanti{preamble}). Tässä osassa ladataan tarvittavat paketit ja +määritetään dokumentin asetuksia ja taustatietoja. Riviltä 10 alkaa +varsinainen tekstiosa eli dokumentin sivuille ladottava sisältö. Se osa +kirjoitetaan \ymparistom{document}\-/ ympäristön sisään eli riveillä 10 +ja 14 olevien ympäristön aloitus\-/\ ja lopetuskomentojen väliin +(\komento{begin}, \komento{end}). + +Tällaisen merkintäkielen avulla dokumentit kirjoitetaan. Osa +merkintäkielen komennoista tulee Latexin perusosasta ja osa tulee +erikseen ladattavista paketeista (\paketti{geometry}, +\paketti{fontspec}, \paketti{polyglossia} ym.). Komentoja voi luoda +itsekin. + +Myöhempää käyttöä varten voisi olla hyödyllistä tallentaa tämänkaltainen +pohjadokumentti. Välttyy samojen perusjuttujen kirjoittamiselta, kun voi +aloittaa työt valmiista dokumenttipohjasta. + +Lähdetiedoston nimissä kannattaa pitäytyä melko suppeassa +merkkivalikoimassa, ja varsinkin välilyöntejä kannattaa välttää. +Nimittäin kääntämisen aikana Latex ja sen paketit luovat +väliaikaistiedostoja, joilla sama nimen osa kuin lähdetiedostossa, ja +näitä tiedostoja saattavat käsitellä monet erilaiset taustalla +vaikuttavat työkaluohjelmat. Tiedoston nimissä olevat välilyönnit ja +ehkä muutkin erikoisemmat merkit aiheuttavat ongelmia. + +Pitkä lähdedokumentti voi olla mielekästä jakaa useammaksi tiedostoksi. +Yhteen lähdetiedostoon voi sisällyttää toisen tiedoston käyttämällä +\komento{input}\-/ komentoa. Komennon argumentiksi annetaan ladattavan +lähdetiedoston nimi: + +\komentoi{input} +\begin{koodilohkosis} +\input{toinen.tex} +\end{koodilohkosis} + +\noindent +Hieman vastaava komento on \komento{include}, joka myös lisää +automaattisen sivunvaihdon (\komento{clearpage}, luku +\ref{luku/sivunvaihdot}) komennon kohdalle. + +Nyt lienee sopiva aika alkaa opiskella itse Latexia eli merkintäkieltä +ja kokeilla sen ominaisuuksia itse. Tätä opasta ei tarvitse lukea +järjestyksessä luku luvulta eteenpäin, vaan eri aiheita voi vapaasti +opiskella mielenkiinnon ja tarpeiden mukaan. Onnea matkaan! diff --git a/info/kaytannollista-latexia/tavutusvihjeet.tex b/info/kaytannollista-latexia/tavutusvihjeet.tex new file mode 100644 index 0000000000..1cd01665d7 --- /dev/null +++ b/info/kaytannollista-latexia/tavutusvihjeet.tex @@ -0,0 +1,796 @@ +\hyphenation{ +ab-stract +abst-ra-hoin-ti +abst-rak-te-ja +abst-rak-tio-ta-soil-la +abst-rak-tio-ta-sol-la +abst-rak-tio-ta-sol-taan +abst-rak-tio-ta-son +add-bib-re-source +add-con-tents-line +add-font-fea-tures +ad-dress +add-to +add-to-con-tents +add-to-counter +add-to-length +add-vspace +akuut-ti-ak-sen-tin +ala-in-dek-seil-le +ala-in-dek-se-jä +ala-in-dek-sien +ala-in-dek-si-ko-men-not +ala-in-dek-sik-si +ala-in-dek-sin +ala-in-dek-sit +ala-in-dek-si-toi-min-to +ala-in-dek-siä +ala-osaan +ala-ot-sik-ko +ala-otsi-kon +alku-osaa +angle +an-tiik-va +an-tiik-vaa +an-tiik-vaan +an-tiik-van +an-tiik-vas-sa +an-tiik-vat +an-tiik-vo-jen +ap-pendix +apu-ohjel-ma +array-back-slash +array-rule-width +array-stretch +ar-ti-cle +as-pect-ra-tio +author +babel +babel-font +babel-tags +back-ground +back-mat-ter +base-line-skip +beamer +bf-se-ries +biber +bib-font +bib-hang +bib-init-sep +bib-item +bib-item-sep +bib-latex +bib-name +bib-name-sep +bib-section +bib-sep +big-break +big-skip +big-skip-amount +bi-nää-ri-ope-raat-to-rit +book-marks-num-ber-ed +book-marks-open +book-tabs +bottom-frac-tion +bottom-number +bottom-rule +break +cap-tion +cap-tion-setup +cap-tions-finnish +cen-ter +chapter-lists-gaps +chapter-mark +chapter-name +chng-cntr +cite +clear-double-page +clear-page +cline +clos-ing +cmid-rule +color-box +column-break +column-sep +column-sep-rule +column-width +con-tents-label +con-tents-name +con-tents-page +Con-tin-ued-Float +con-trols +counter-with-in +counter-with-out +cs-quotes +cycle +dbl-float-page-frac-tion +dbl-float-sep +dbl-text-float-sep +dbl-top-frac-tion +dbl-top-number +De-clare-Bib-li-og-ra-phy-Driv-er +De-clare-Float-Font +De-clare-New-Float-Type +De-clare-Sort-ing-Tem-plate +de-fault +default-font-fea-tures +de-fine-col-or +de-scrip-tion +de-si-maa-li-erot-ti-mek-si +de-si-maa-li-erot-ti-me-na +de-si-maa-li-osa +dia-esi-tyk-siä +dia-esi-tys-ten +dis-able-hy-phen-ation +dis-cre-tionary +dis-play-math +doc-u-ment +doc-u-ment-class +dot-fill +double-rule-sep +ed-i-tor +emer-gen-cy-stretch +empty +en-able-hy-phen-ation +Endash +end-tab-u-larx +en-glish-font +en-large-this-page +en-space +enu-mer-ate +enumi +enumii +enumiii +enumiv +equa-tion +erin-omai-sen +ero-tin-merkki-ase-tuk-sen +esit-te-ly-osaan +esit-te-ly-osak-si +esit-te-ly-osas-sa +esi-tys-gra-fii-kan +esi-tys-gra-fiik-kaan +esi-tys-gra-fiik-ka-ohjel-mil-la +ext-dash +false +fancy-hdr +fancyhf +fancy-page-style +fancy-vrb +fbox-rule +fbox-sep +FB-width +fcolor-box +fig-ure +fig-ure-name +fig-ures +first-page-style +float +Float-Bar-rier +float-box +float-page-frac-tion +float-row +float-sep +float-setup +flush-bottom +flush-columns +font-size +font-spec +font-ti-ase-tuk-set +font-ti-ase-tuk-sia +font-ti-ase-tuk-siin +font-ti-ase-tuk-sil-la +font-ti-ase-tuk-sil-le +font-ti-ase-tus +font-ti-ase-tus-ta +font-ti-ase-tus-ten +font-ti-asiat +font-ti-koko-ase-tus-ten +font-ti-koko-komen-to-jen +font-ti-komen-to-ja +foot-misc +foot-note +foot-note-mark +foot-note-sep +foot-note-text +foot-rule-width +foot-skip +fore-ground +for-eign-lan-guage +frame-box +front-mat-ter +ge-om-e-try +graph-icx +gra-vis-ak-sen-til-la +gra-vis-ak-sen-tin +gra-vis-ak-sent-ti +greek-font +gro-tes-ki +gro-tes-kia +gro-tes-kiin +gro-tes-kin +hai-tal-li-suus-arvo +hai-tal-li-suus-arvoa +hai-tal-li-suus-ar-voik-si +ha-luaa +hang-ing +hang-para +hang-paras +head-ings +head-rule-width +head-sep +hide-links +hline +hrule-fill +hspace +hyper-ref +hyper-setup +Hyph-dash +hy-phen-ation +if-then-else +ig-nore-spaces +ig-nore-spaces-af-ter-end +imake-idx +in-clude +in-clude-graph-ics +in-col-lec-tion +in-dex +index-name +index-pro-logue +index-setup +index-tools +in-put +in-sti-tute +in-text-sep +in-toc +item-indent +item-ize +item-sep +it-seis-arvo +it-seis-ar-voa +it-shape +jul-kai-su-oh-jel-miin +jul-kai-su-oh-jel-mis-sa +jus-ti-fi-ca-tion +kak-si-osai-nen +kak-sois-alle-vii-vauk-sen +kap-pa-le-ot-sik-ko +kap-pa-le-ot-si-koi-ta +kel-lon-ajan +ker-roin-ase-tus-ta +keski-osa +kie-li-ai-nek-seen +kie-li-ase-tuk-set +kie-li-ase-tuk-set-kin +kie-li-ase-tuk-sia +kie-li-ase-tuk-siin +kie-li-ase-tuk-sil-la +kie-li-ase-tuk-sis-ta +kie-li-ase-tus-ten +kie-li-opil-li-sis-ta +kie-li-op-pin-sa +kir-jain-yh-dis-tel-mät +kir-ja-typo-gra-fian +kir-ja-typo-gra-fias-sa +kir-joi-tus-asu +kir-joi-tus-asu-ja +kir-joi-tus-asu-jen +kir-joi-tus-asus-sa +kir-joi-tus-asut +koko-ase-tus +koko-ase-tus-ten +koko-ero +koko-nais-luku-osa +ko-men-to-vaih-to-eh-to +konk-reet-ti-ses-ti +konk-reet-ti-sia +koodi-esi-mer-keis-sä +koodi-esi-merk-kien +kuva-esi-mer-keis-tä +käsi-ala-kir-joi-tus-ta +käsi-ohjel-mien +käyt-töön-oton +käyt-töön-otos-sa +käyt-töön-otto +käyt-töön-ottoa +käyt-töön-ot-toon +kään-täjä-ohjel-mat +kään-täjä-ohjel-milla +label +label-font +label-format +label-sep +label-width +la-don-ta-oh-jei-ta +la-don-ta-oh-jel-man +land-scape +large +La-tex-mk +La-tex-mk-rc +left-hy-phen-min +left-margin +left-mark +let-ter +lett-rine +level +line +line-spread +line-width +list +list-fig-ure-name +list-of +list-of-fig-ures +list-of-tables +list-par-indent +list-table-name +lisä-omi-nai-suu-den +lisä-vaih-to-eh-toa +lohko-lai-naus-ympä-ris-töt +long-table +Lua-latex +lue-tel-ma-ympy-rä +lue-tel-ma-ympy-räl-lä +luku-alueel-la +luku-aluei-ta +main-mat-ter +make-box +make-index +make-label +make-labels +make-title +margin-par +margin-par-push +margin-par-sep +margin-par-width +mark-both +mark-right +Match-Low-er-case +ma-te-ma-tiik-ka-ym-pä-ris-tö-jä +md-se-ries +med-break +med-skip +med-skip-amount +mem-oir +mid-rule +mini-page +mit-ta-yk-sik-kö +mit-ta-yk-si-köi-den +mit-ta-yk-si-köi-tä +mit-ta-yk-si-köl-le +mit-ta-yk-si-kön +mit-ta-yk-si-köt +mk-bib-name-fam-i-ly +mk-bib-name-giv-en +mk-bib-name-pre-fix +mk-bib-name-suf-fix +mk-bib-parens +mk-bib-quote +mp-foot-note +multi-col +multi-cols +multi-col-sep +mul-ti-ple +multi-row +muo-toi-lu-ase-tuk-set +my-head-ings +mää-rit-te-ly-omi-nai-suut-ta +name +name-ref +new-column-type +new-com-mand +new-counter +new-en-vi-ron-ment +new-float +new-font-face +new-font-fam-i-ly +new-ge-om-e-try +new-length +new-line +new-page +ni-men-omaan +no-cite +no-clear-page +no-club +node +no-in-dent +no-indent-after +no-link-url +no-new-page +no-page-break +no-page-color +nor-mal +normal-font +normal-margin-par +normal-size +no-rule +note +no-widow +nuo-li-ak-sen-tit +nyky-aikai-nen +nyky-aikai-set +nyky-aikai-sia +nyky-aika-na +nyky-ajan +näp-päin-aset-te-lus-sa +obey-cr +oikein-kir-joi-tus-oppaas-sa +ole-tus-ar-vo +ole-tus-ar-voa +ole-tus-ar-voi-hin +ole-tus-ar-vot +ole-tus-ase-tuk-set +ole-tus-ase-tuk-sia +ole-tus-ase-tuk-siin +ole-tus-ase-tuk-sil-la +ole-tus-ase-tus +ole-tus-mitta-yk-sik-kö-nä +ole-tus-yk-sik-kö +ole-tus-yk-sik-köä +one-column +one-side +on-line +open-ing +op-tions +origin +otf-info +other-lan-guage +over-left-ar-row +over-right-ar-row +page +page-break +page-color +page-number-ing +page-ref +pages +page-style +paper-height +pa-pe-ri-ar-keis-sa +pa-pe-ri-ark-kei-hin +pa-pe-ri-ark-kia +pa-pe-ri-ark-kien +paper-width +para-graph +par-box +paren-cite +par-ent +par-in-dent +par-sep +par-skip +part-name +par-top-sep +pause +pdf-book-mark +pdf-info +pdf-latex +pdf-lscape +per-page +pe-rus-aja-tus +pe-rus-ase-tuk-set +pe-rus-ase-tuk-sia +pe-rus-asiat +pe-rus-asioi-ta +pe-rus-osas-ta +pe-rus-osat +pe-rus-osien +pe-rus-osiin +pe-rus-vaih-to-eh-dot +pe-rus-ympä-ris-tö +phan-tom-sec-tion +pien-aak-ko-set +pien-aak-kos-ten +pii-rus-tus-alus-tan +pik-seli-gra-fiik-kaa +place-ins +poly-glos-sia +por-trait +print-bib-li-og-ra-phy +print-index +pro-gram +pro-tect +pro-vide-com-mand +pub-lish-er +pys-ty-asen-nos-sa +pys-ty-asen-toi-sel-la +pys-ty-asen-toi-sen +pää-asial-li-nen +pää-asial-li-sek-si +pää-asial-li-sen +pää-asias-sa +pää-ot-sik-ko +pääte-oh-jel-mien +quo-ta-tion +quote +ragged-bottom +ragged-columns +ragged-left +ragged-right +raise-box +real-scripts +ref-name +ref-step-counter +reg-tot-counter +re-new-com-mand +re-new-en-vi-ron-ment +re-size-box +re-store-cr +re-store-ge-om-e-try +reverse-margin-par +right-hy-phen-min +right-margin +right-mark +rivin-osan +rm-fam-i-ly +ro-tate-box +rule +sak-ko-ar-voa +sa-man-aikai-ses-ti +sar-kain-ase-tuk-sia +Scale +scale-box +sc-shape +sec-num-depth +sec-tion +sec-tion-break +sec-tion-mark +see-also +select-font +select-lan-guage +set-beamer-color +set-beamer-font +set-beamer-tem-plate +set-cite-style +set-counter +set-default-lan-guage +set-length +set-main-font +set-math-font +set-mono-font +set-no-club +set-no-widow +set-sans-font +set-to-depth +set-to-height +set-to-width +sf-fam-i-ly +short-en +show-hy-phens +sig-na-ture +si-joit-te-lu-ase-tuk-set +si-joit-te-lu-ase-tuk-sia +single-line-check +sir-kum-flek-si +sir-kum-flek-sia +sir-kum-flek-sin +si-sen-nys-ase-tuk-set +si-sen-nys-asiat +si-säl-tö-ele-ment-tien +sivu-alue +si-vu-alueel-le +si-vu-alueen +si-vu-aluei-den +sivu-koko-ase-tuk-sia +skaa-laus-ar-gu-ment-ti +skaa-laus-ase-tus +slides +slope +sl-shape +small +small-break +small-skip +small-skip-amount +space-skip +split-index +stable +step-counter +still-sans-serif-large +still-sans-serif-math +still-sans-serif-small +still-sans-serif-text +style +sub-para-graph +sub-sec-tion +sub-section-mark +sub-sub-sec-tion +suo-jaus-omi-nai-suus +suur-aak-kos-ten +sym-bo-li-esi-tys +säh-kö-pos-ti-osoi-te +säh-kö-pos-ti-osoit-tei-den +säh-kö-pos-ti-osoit-tei-ta +tab-bing +tab-bing-sep +tab-col-sep +table +table-name +table-of-con-tents +tables +tabu-lar +tabu-larx +tabu-lary +tau-luk-ko-ympä-ris-tö +tau-luk-ko-ympä-ris-tön +tau-luk-ko-ympä-ris-töt +tau-luk-ko-ympä-ris-töä +ta-van-omais-ten +tavu-tus-algo-rit-mia +teks-ti-alue +teks-ti-alueen +teks-ti-aluees-ta +teks-ti-edi-to-ria +teks-ti-edi-to-rien +teks-ti-edi-to-ril-la +teks-ti-edi-to-rin +teks-ti-edi-to-ris-sa +teks-ti-edi-to-ris-sa-kin +teks-ti-edi-to-ris-ta +teks-ti-ele-men-til-tä +teks-ti-ele-men-tin +teks-ti-ele-ment-te-jä +teks-ti-ele-ment-ti +teks-ti-ele-ment-tien +teks-ti-ele-ment-tiin +teks-tin-kä-sit-tely-ohjel-mat +teks-tin-kä-sit-tely-ohjel-mis-sa +teks-tin-osan +teks-ti-osa +teks-ti-osaan +teks-ti-osan +teks-ti-osas-sa +text-back-slash +text-bullet +text-cite +text-color +text-comp-word-mark +text-el-lip-sis +text-en-glish +text-float-sep +text-font +text-frac-tion +text-greek +text-height +text-quote-dbl +text-quote-single +text-sub-script +text-super-script +text-width +the-author +the-bib-li-og-ra-phy +the-chapter +the-date +the-equa-tion +the-foot-note +the-mp-foot-note +the-page +the-section +the-sub-section +the-table +the-title +this-page-style +tie-teen-aloil-la +tie-to-kone-avus-teis-ta +tie-to-kone-oh-jel-ma +tie-to-kone-oh-jel-mal-le +tie-to-kone-oh-jel-mas-ta +tie-to-kone-oh-jel-mat +tie-to-kone-oh-jel-mia +tii-vis-tel-mä-osan +tikz-pic-ture +title +title-con-tents +title-for-mat +title-label +title-rule +title-sec +title-spacing +title-toc +toc-depth +toc-level +top-frac-tion +top-number +top-rule +top-sep +total +total-height +total-number +tot-count +tot-pages +tot-value +tt-fam-i-ly +two-column +two-side +ty-po-gra-fia +ty-po-gra-fiaa +ty-po-gra-fiaan +ty-po-gra-fian +ty-po-gra-fias-sa +ty-po-gra-fi-seen +ty-po-gra-fi-sen +ty-po-gra-fi-se-na +ty-po-gra-fi-ses-ta +ty-po-gra-fi-ses-ti +ty-po-gra-fi-set +ty-po-gra-fi-sia +ty-po-gra-fi-sin +ty-po-gra-fi-sis-ta +ty-po-gra-fis-ten +tyy-li-ase-tus +tyy-li-ase-tus-ten +tär-keys-as-teil-le +tär-keys-as-tei-sia +täys-ym-py-rän +UL-depth +ulko-asu +ulko-asua +ulko-asun +ulko-asus-ta +ulko-asus-taan +ulko-asu-tee-mo-ja +ulko-asuun +UL-thick-ness +under-line +Uni-code +Uni-coden +url-style +use-color-theme +use-counter +use-font-theme +use-inner-theme +use-outer-theme +use-pack-age +use-theme +vaih-to-eh-don +vaih-to-eh-dot +vaih-to-eh-to +vaih-to-eh-toi-ses-ti +vaih-to-eh-to-ja +vaih-to-eh-to-na +vai-ku-tus-alue +vai-ku-tus-alueena +vai-ku-tus-aluet-ta +value +va-paa-eh-toi-sia +va-paa-eh-tois-ta +vas-taan-otta-jal-le +vas-taan-otta-jil-le +vek-tori-gra-fiik-kaa +vek-tori-gra-fiik-ka-font-te-ja +vek-tori-gra-fiik-ka-ku-viot +ver-ba-tim +verse +vir-he-il-moi-tuk-seen +vir-he-il-moi-tuk-sen +vir-he-il-moi-tus +vir-he-il-moi-tus-ta +vline +vol-ume +vspace +vä-him-mäis-etäi-syys +väli-ai-kai-ses-ti +väli-ai-kais-tie-dos-toa +väli-ai-kais-tie-dos-to-jen +väli-ai-kais-tie-dos-ton +väli-ai-kais-tie-dos-toon +väli-ai-kais-tie-dos-tot +väli-ot-si-kois-sa +väli-ot-si-kois-ta +väli-ot-si-kon +väli-ot-si-kot +vä-ri-asioi-ta +wall-cal-en-dar +with-in +Xe-latex +yh-dys-osas-ta +yh-dys-osien +yh-tä-lö-esi-mer-kin +yleis-ohje +yleis-yhdys-merk-ki +ylä-in-dek-si +ylä-in-dek-si-nume-roi-den +ylä-in-dek-si-nume-rois-ta +ylä-in-dek-si-nume-rol-la +ylä-in-dek-si-nume-ron +ylä-in-dek-sit +ylä-osaan +ylä-osas-sa +ään-tö-asu +} diff --git a/info/kaytannollista-latexia/versio.tex b/info/kaytannollista-latexia/versio.tex new file mode 100644 index 0000000000..1f9bae2ceb --- /dev/null +++ b/info/kaytannollista-latexia/versio.tex @@ -0,0 +1 @@ +\newcommand{\versio}{2021.12} |