1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Contents: Customising LaTeX output
% $Id: viritys.tex,v 1.1.1.1 2002/12/01 08:05:09 hellgren Exp $
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{\LaTeX:n virittely}
\begin{intro}
Tähän asti opetuilla käskyillä tehdyt dokumentit ovat järjellisen
näköisiä suurimmalle osalle. Vaikka ne eivät ole mitenkään erikoisen
näköisiä, ne noudattavat korkealaatuisen typografian vakiintuneita
sääntöjä, jotka tekevät dokumenteista helppolukuisia ja silmää
miellyttäviä.
On kuitenkin tilanteita, joissa \LaTeX{} ei tarjoa tarpeisiin
sopivia käskyjä tai ympäristöjä tai sitten käytössä olleilla
käskyillä tuotettu ulkoasu ei täytä sille asetettuja vaatimuksia.
Tässä luvussa annetaan joitakin vinkkejä siitä, miten
\LaTeX:lle opetetaan uusia temppuja ja miten sen tulostama
ulkoasu saadaan näyttämään erilaiselta.
\end{intro}
\section{Uudet käskyt, ympäristöt ja makropakkaukset}
Lukija on varmaankin huomannut, että kaikki tässä kirjasessa
esitetyt komennot on ladottu laatikon sisään ja ne esiintyvät
kirjasen lopussa olevassa hakemistossa. Tätä varten kirjoittaja
on luonut makropaketin \index{makropaketti}, jossa on
määritelty uusia komentoja ja ympäristöjä tätä tarkoitusta varten.
Nyt voidaan kirjoittaa yksinkertaisesti:
\begin{example}
\begin{lscommand}
\ci{esim}
\end{lscommand}
\end{example}
Tässä esimerkissä käytetään sekä uutta \ei{lscommand}-ympäristöä,
joka vastaa laatikon piirtämisestä komennon ympärille, että
uutta \ci{ci}-komentoa, joka latoo komennon nimen ja lisää
vastaavan hakusanan hakemistoon. Tämän voi tarkistaa etsimällä
\ci{esim}-komentoa tämän kirjasen hakemistosta, josta löytyy
hakusana \ci{esim}, joka viittaa joka sivulle, jossa esim-komento
on mainittu.
Jos tekijä päättää, ettei halua enää komentoja ladottavan laatikon
sisään, voidaan \texttt{command}-ympäristön määrittelyjä muuttaa.
Tämä on helpompaa kuin etsiä dokumentista kaikki ne kohdat, joissa
sanojen ympärille on piirretty laatikko \LaTeX:n
peruskäskyillä.
\subsection{Uudet käskyt}
Omien käskyjen lisäämiseen käytetään
\begin{lscommand}
\ci{newcommand}\verb|{|%
\emph{nimi}\verb|}[|\emph{numero}\verb|]{|\emph{määritelmä}\verb|}|
\end{lscommand}
\noindent "=komentoa.
Komento tarvitsee vähintään kaksi argumenttia: uuden komennon \emph{nimen}
ja komennon \emph{määritelmän}. Hakasulkeissa oleva \emph{numero} on
vaihtoehtoinen. Sitä voidaan käyttää määrittelemään komentoja, jotka
saavat maksimissaan 9 argumenttia. Jos se puuttuu, argumenttien määräksi
oletataan 0 eli ei lainkaan argumentteja.
Asia pitäisi selvitä seuraavasta kahdesta esimerkistä. Ensimmäinen
esimerkki määrittelee uuden \ci{pjlk}-komennon. Se on lyhenne
sanoista ''Pitkänpuoleinen johdanto \LaTeX2e:n käyttöön''. Kyseinen
komento voi olla tarpeen, jos tämän kirjasen nimi pitäisi latoa
yhä uudelleen ja uudelleen.
\begin{example}
\newcommand{\pjlk}{Pitkänpuoleinen
johdanto \LaTeX2e:n
käyttöön}
Tämä on ''\pjlk'' \ldots{}
''\pjlk''
\end{example}
Seuraava esimerkki esittää \emph{numero}-argumentin käyttöä.
\verb|#1|:n tilalle tulee käyttäjän antama argumentti. Jos halutaan
käyttää useampia argumentteja, jatketaan numerointia \verb|#2| jne.
\begin{example}
\newcommand{\txsit}[1]
{Tämä on \emph{#1} johdanto
\LaTeX2e:n käyttöön}
% varsinaisessa dokumentissa:
\begin{itemize}
\item \txsit{pitkänpuoleinen}
\item \txsit{hyvin lyhyt}
\end{itemize}
\end{example}
\LaTeX{} ei anna määritellä uutta komentoa, jolla on sama nimi
kuin jollain jo määritellyllä. Tätä varten on kuitenkin olemassa
erityinen komento: \ci{renewcommand}.
Sen syntaksi on sama kuin \verb|\newcommand|-komennon.
Tietyissä tilanteissa halutaan ehkä käyttää
\ci{providecommand}-komentoa. Se toimii kuten \ci{newcommand},
mutta jos samanniminen komento on jo määritelty \LaTeX{}
jättää uuden määrittelyn huomiotta.
\LaTeX:n komentoja seuraavissa välilyönneissä on tiettyjä seikkoja,
jotka tulee ottaa huomioon. Katso sivulta \pageref{whitespace} lisätietoja.
\subsection{Uudet ympäristöt}
Ympäristöjen määrittelemiseksi on samantapainen komento kuin
\verb|\newcommand|. \ci{newenvironment}-komennon syntaksi on seuraava:
\begin{lscommand}
\ci{newenvironment}\verb|{|%
\emph{nimi}\verb|}[|\emph{numero}\verb|]{|%
\emph{ennen}\verb|}{|\emph{jälkeen}\verb|}|
\end{lscommand}
Myös \ci{newenvironment}-komentoa voidaan käyttää vaihtoehtoisen
argumentin kanssa tai ilman. \emph{ennen}-argumentin materiaali
käsitellään ennen kuin ympäristössä olevaa tekstiä käsitellään.
\emph{jälkeen}-argumentin materiaali käsitellään sen jälkeen
kun vastaan on tullut \verb|\end{|\emph{nimi}\verb|}|-komento.
Alla oleva esimerkki kuvaa \ci{newenvironment}-komennon käyttöä.
\begin{example}
\newenvironment{kuningas}
{\rule{1ex}{1ex}%
\hspace{\stretch{1}}}
{\hspace{\stretch{1}}%
\rule{1ex}{1ex}}
\begin{kuningas}
Uskolliset alamaiseni \ldots
\end{kuningas}
\end{example}
Argumenttia \emph{numero} käytetään samalla tavoin kuin
\verb|\newcommand|"-komennossa. \LaTeX{} varmistaa, ettei jo
olemassa olevaa ympäristöä aleta määritellä. Jos olemassa olevaa
ympäristöä pitää muuttaa, siihen voidaan käyttää komentoa \ci{renewenvironment}.
Se käyttää samaa syntaksia kuin komento \ci{newenvironment}.
Esimerkissä käytetyt komennot selitetään myöhemmin: katso komentoa
\ci{rule} sivulta \pageref{sec:rule}, \ci{stretch} sivulta \pageref{cmd:stretch}
ja lisätietoa \ci{hspace}:sta saa sivulta \pageref{sec:hspace}.
\subsection{Ylimääräiset välit}
Uuteen ympäristöön tulee helposti mukaan ylimääräisiä tyhjiä välejä, joilla
voi olla kohtalokkaat vaikutukset. Otetaan esimerkiksi
otsikkoympäristö, jossa ei käytetään sisennystä eikä myöskään sitä
seuraavassa kappaleessa. Komento \ci{ignorespaces} ymäpäristön aloituksen
määrittelyissä estää rivinvaihtoja tekemästä tyhjiä välejä.
Ympäristön lopetuksen määrittely on hankalampi tapaus. Komennolla
\ci{ignorespacesafterend} panee {\LaTeX}:n lisäämään komennon
\ci{ignorespaces} kun ympäristö on päättynyt.
\begin{example}
\newenvironment{simple}%
{\noindent}%
{\par\noindent}
\begin{simple}
Huomaa välilyönti\\vasemmalla.
\end{simple}
Tässä\\myös.
\end{example}
\begin{example}
\newenvironment{correct}%
{\noindent\ignorespaces}%
{\par\noindent\ignorespacesafterend}
\begin{correct}
Vasemmalla ei ole\\välilyöntiä.
\end{correct}
Sama\\tässä.
\end{example}
\subsection{\LaTeX{} komentorivillä}
Unixin tapaisissa käyttöjärjestelmissä voidaan {\LaTeX}-projektien
koostamiseen käyttää Makefile-tiedostoja. Tähän liittyen voisi olla
mielenkiintoista tuottaa erilaisia versioita samasta dokumentista
kutsumalla {\LaTeX}:ia erilaisilla komentorivin parametreilla. Mikäli
dokumenttiin lisätään seuraava rakenne:
\begin{verbatim}
\usepackage{ifthen}
\ifthenelse{\equal{\blackandwhite}{true}}{
% mustavalkotila; jotain tehdään..
}{
% väritila; jotain muuta tehdään..
}
\end{verbatim}
Nyt {\LaTeX}:ia voidaan kutsua näin:
\begin{verbatim}
latex '\newcommand{\blackandwhite}{true}\input{test.tex}'
\end{verbatim}
Ensin määritellään komento \verb|\blackandwhite| ja sitten luetaan varsinainen tiedosto.
Mikäli \verb|\blackandwhite| saa arvon \texttt{false}, dokumentista tehdään väriversio.
\subsection{Omat makropakkaukset}
Jos dokumentissa määritellään paljon uusia ympäristöjä ja komentoja, tulee
esittelyosasta pitkän puoleinen. Silloin on parempi tehdä makropakkaus,
joka sisältää kaikki uudet määrittelyt. Makropakkaus saadaan käyttöön
komennolla \ci{usepackage}.
\begin{figure}[!htbp]
\begin{lined}{\textwidth}
\begin{verbatim}
% Tobias Oetikerin demopaketti
\ProvidesPackage{demopack}
\newcommand{\pjlk}{Pitkänpuoleinen johdanto \LaTeXe:n käyttöön}
\newcommand{\txsit}[1]{The \emph{#1} Johdanto
\LaTeXe:n käyttöön}
\newenvironment{king}{\begin{quote}}{\end{quote}}
\end{verbatim}
\end{lined}
\caption{Esimerkkipakkaus} \label{package}
\end{figure}
Makropaketin kirjoittaminen vastaa oikeastaan dokumentin johdanto-osan
sisällön kopioimista erilliseen tiedostoon, jolla on \texttt{.sty}-pääte.
Makropakettitiedoston alussa annetaan erityinen
\begin{lscommand}
\ci{ProvidesPackage}\verb|{|\emph{makropaketin nimi}\verb|}|
\end{lscommand}
\noindent komento. \verb|\ProvidesPackage| kertoo \LaTeX:lle paketin
nimen. LaTeX{} antaa virheilmoituksen, mikäli makropaketti yritetään
ottaa käyttöön toistamiseen. Kuvassa \ref{package} on pieni esimerkkimakropakkaus,
joka sisältää edellisissä esimerkeissä esitetyt komennot.
\section{Kirjasinmalli ja "=koko}
\subsection{Kirjasimen vaihtokomennot}
\index{kirjasin}\index{kirjasimen koko} \LaTeX{} valitsee kirjasimen leikkauksen
ja koon dokumentin loogisen rakenteen (otsikot, alaviitteet \ldots) perusteella.
Joissain tapauksissa kirjasinleikkaus ja "=koko halutaan ehkä muuttaa käsin.
Se voidaan tehdä taulukoissa~\ref{fonts} ja \ref{sizes} listatuilla komennoilla.
Jokaisen kirjasimen varsinainen koko riippuu dokumentin luokasta ja sen optioista.
Taulukossa~\ref{tab:pointsizes} esitetään näitä komentoja vastaavat absoluuttiset
pistekoot, sellaisina kuin ne on määritelty dokumenttien standardiluokissa.
\begin{example}
{\small Pienet ja
\textbf{lihavat} latinot}
{\Large isottelivat käyttäen
\textit{kursiivia}.}
\end{example}
\LaTeXe:n eräs tärkeä ominaisuus on se, että kirjasinten määreet ovat
toisistaan riippumattomia. Tämä tarkoittaa sitä, että kirjasimen kokoa
ja jopa leikkausta voidaan muuttaa ja samalla säilyttää aikaisemmin
määritellyt lihavoinnin tai vinouden määreet.
\emph{Matematiikkatilassa} voidaan kirjasimen vaihtokomentoja käyttää
poistumiseen \emph{matematiikkatilasta} normaaliin tekstitilaan. Jos
kirjasinta halutaan vaihtaa matematiikkaa ladottaessa, on sitä varten
toinen kokoelma komentoja. Katso talukosta~\ref{mathfonts}.
\begin{table}[!bp]
\caption{Kirjasimet} \label{fonts}
\begin{lined}{12cm}
%
% Alan suggested not to tell about the other form of the command
% eg \verb|\sffamily| or \verb|\bfseries|. This seems a good thing to me.
%
\begin{tabular}{@{}rl@{\qquad}rl@{}}
\ci{textrm}\verb|{...}| & \textrm{\wi{antiikva}}&
\ci{textsf}\verb|{...}| & \textsf{\wi{groteski}}\\
\ci{texttt}\verb|{...}| & \texttt{kirjoituskone}\\[6pt]
\ci{textmd}\verb|{...}| & \textmd{keskivahva}&
\ci{textbf}\verb|{...}| & \textbf{\wi{lihavoitu}}\\[6pt]
\ci{textup}\verb|{...}| & \textup{\wi{pysty}}&
\ci{textit}\verb|{...}| & \textit{\wi{kursiivi}}\\
\ci{textsl}\verb|{...}| & \textsl{\wi{vino}}&
\ci{textsc}\verb|{...}| & \textsc{\wi{kapiteelit}}\\[6pt]
\ci{emph}\verb|{...}| & \emph{korostettu} &
\ci{textnormal}\verb|{...}| & \textnormal{dokumentin} kirjasin
\end{tabular}
\bigskip
\end{lined}
\end{table}
\begin{table}[!bp]
\index{kirjasinkoot}
\caption{Kirjasinkoot} \label{sizes}
\begin{lined}{12cm}
\begin{tabular}{@{}ll}
\ci{tiny} & \tiny pikkuruinen kirjasin \\
\ci{scriptsize} & \scriptsize hyvin pieni kirjasin\\
\ci{footnotesize} & \footnotesize melko pieni kirjasin\\
\ci{small} & \small pieni kirjasin \\
\ci{normalsize} & \normalsize normaali kirjasin \\
\ci{large} & \large iso kirjasin
\end{tabular}%
\qquad\begin{tabular}{ll@{}}
\ci{Large} & \Large isompi kirjasin \\[5pt]
\ci{LARGE} & \LARGE hyvin iso kirjasin \\[5pt]
\ci{huge} & \huge valtava \\[5pt]
\ci{Huge} & \Huge suurin
\end{tabular}
\bigskip
\end{lined}
\end{table}
\begin{table}[!tbp]
\caption{Absoluuttiset pistekoot standardiluokissa}\label{tab:pointsizes}
\label{tab:sizes}
\begin{lined}{12cm}
\begin{tabular}{lrrr}
\multicolumn{1}{c}{koko} &
\multicolumn{1}{c}{10pt (oletusarvo) } &
\multicolumn{1}{c}{11pt optio} &
\multicolumn{1}{c}{12pt optio}\\
\verb|\tiny| & 5pt & 6pt & 6pt\\
\verb|\scriptsize| & 7pt & 8pt & 8pt\\
\verb|\footnotesize| & 8pt & 9pt & 10pt \\
\verb|\small| & 9pt & 10pt & 11pt \\
\verb|\normalsize| & 10pt & 11pt & 12pt \\
\verb|\large| & 12pt & 12pt & 14pt \\
\verb|\Large| & 14pt & 14pt & 17pt \\
\verb|\LARGE| & 17pt & 17pt & 20pt\\
\verb|\huge| & 20pt & 20pt & 25pt\\
\verb|\Huge| & 25pt & 25pt & 25pt\\
\end{tabular}
\bigskip
\end{lined}
\end{table}
\begin{table}[!bp]
\caption{Matemaattiset kirjasimet} \label{mathfonts}
\begin{lined}{0.7\textwidth}
\begin{tabular}{@{}ll@{}}
\fni{mathrm}\verb|{...}|& $\mathrm{Antiikva\ kirjasin}$\\
\fni{mathbf}\verb|{...}|& $\mathbf{Lihavoitu\ kirjasin}$\\
\fni{mathsf}\verb|{...}|& $\mathsf{Groteski\ kirjasin}$\\
\fni{mathtt}\verb|{...}|& $\mathtt{Konekirjoituskirjasin}$\\
\fni{mathit}\verb|{...}|& $\mathit{Kursiivi\ kirjasin}$\\
\fni{mathcal}\verb|{...}|& $\mathcal{KALLIGRAFINEN\ KIRJASIN}$\\
\fni{mathnormal}\verb|{...}|& $\mathnormal{Normaali\ kirjasin}$\\
\end{tabular}
%\begin{tabular}{@{}lll@{}}
%\textit{Komento}&\textit{Esimerkki}& \textit{Tulos}\\[6pt]
%\ci{mathcal}\verb|{...}|& \verb|$\mathcal{B}=c$|& $\mathcal{B}=c$\\
%\ci{mathrm}\verb|{...}|& \verb|$\mathrm{K}_2$|& $\mathrm{K}_2$\\
%\ci{mathbf}\verb|{...}|& \verb|$\sum x=\mathbf{v}$|& $\sum x=\mathbf{v}$\\
%\ci{mathsf}\verb|{...}|& \verb|$\mathsf{G\times R}$|& $\mathsf{G\times R}$\\
%\ci{mathtt}\verb|{...}|& \verb|$\mathtt{L}(b,c)$|& $\mathtt{L}(b,c)$\\
%\ci{mathnormal}\verb|{...}|& \verb|$\mathnormal{R_{19}}\neq R_{19}$|&
%$\mathnormal{R_{19}}\neq R_{19}$\\
%\ci{mathit}\verb|{...}|& \verb|$\mathit{ffi}\neq ffi$|& $\mathit{ffi}\neq ffi$
%\end{tabular}
\bigskip
\end{lined}
\end{table}
Kirjasinkokojen yhteydessä aaltosulkeilla \index{aaltosulkeet} on
merkittävä rooli. Niitä käytetään \emph{ryhmittelyyn}. Ryhmittely rajoittaa
useimpien \LaTeX:n komentojen vaikutusaluetta. \index{ryhmittely}
\begin{example}
Hän pitää {\LARGE Suurista ja
{\small pienistä} kirjaimista}.
\end{example}
Kirjasinkoon muutos vaikuttaa myös riviväleihin, mutta vain jos
kappale päättyy ennen kuin kirjasinkokoa vaihtavan komennon vaikutus
päättyy. Lopettavaa suljetta \verb|}| ei pitäisi siis käyttää liian
aikaisin. Huomaa seuraavissa kahdessa esimerkissä \verb|\par|-komennon
sijainti.\footnote{\texttt{\bs{}par}
vastaa kappaleiden välissä olevaa tyhjää riviä.}
\begin{example}
{\Large Älä lue tätä! Se ei ole
totta. Usko huviksesi!\par}
\end{example}
\begin{example}
{\Large Tämäkään ei ole totta.
Mutta minä olenkin valehtelija.}\par
\end{example}
Jos kirjasinkokoa halutaan vaihtaa koko kappaleessa tai vielä suuremmassa
osassa tekstiä, halutaan ehkä käyttää ympäristöä kirjasinkoon vaihtamiseksi.
\begin{example}
\begin{Large}
Tämä ei ole totta.
Mutta mikä nykyään
on \ldots
\end{Large}
\end{example}
\noindent Tämä säästää sulkeiden laskemiselta.
\subsection{Vaaksa väärään voi olla virsta vaaraan}
Kuten tämän luvun alussa todettiin, voi olla vaarallista sorkkia
dokumenttia tällaisilla komennoilla, sillä ne toimivat vastoin
\LaTeX:n perusajatusta, joka on dokumentin loogisen ja visuaalisen
muotoilun erottaminen toisistaan. Tämä tarkoittaa sitä, että
kun samaa kirjasinta vaihtavaa komentoa käytetään useammassa paikassa
tietyn tyyppistä tietoa ladottaessa, pitäisi käyttää
\verb|\newcommand|-määritystä määrittelemään ''looginen peitekomento'',
joka käyttää kyseistä kirjasinkomentoa.
\begin{example}
\newcommand{\hups}[1]{\textbf{#1}}
Älä \hups{tule} tähän huoneeseen,
siinä on tuntematonta alkuperää
oleva \hups{kone}.
\end{example}
Tällä tavalla on se etu, että myöhemmin voidaan päättää, halutaanko
vaaraa ilmaisemaan jokin muu visuaalinen keino kuin \verb|\textbf|
ilman, että täytyisi etsiä dokumentista kaikki kohdat, joissa
on \verb|\textbf| ja joissa sitä on käytetty nimenomaan ilmaisemaan
vaaraa.
\subsection{Neuvo}
Tämän matkan kirjasinten ja kirjasinkokojen maailmaan päättää
muutama neuvon sananen:\nopagebreak
\begin{quote}
\underline{\textbf{Muista\Huge!}} \textit{Mitä}
\textsf{EN\textbf{\LARGE EM} \texttt{M}\textsl{ÄN}} kirjasimia \Huge
dokumentissa \tiny käytetään \footnotesize \textbf{sitä} \small \texttt{luettavampi},
\large \textit{ja} \normalsize \textsc{kauniimpi}
\textsl{\textsf{siitä} t\large u\Large l\LARGE e\huge e}.
\end{quote}
\section{Välistys}
\subsection{Rivivälit}
\index{riviväli} Mikäli dokumentissa halutaan käyttää isompaa riviväliä,
voidaan sitä muuttaa panemalla
\begin{lscommand}
\ci{linespread}\verb|{|\emph{kerroin}\verb|}|
\end{lscommand}
\noindent "=komento dokumentin esittelyosaan. \verb|\linespread{1.3}|
käytetään ''yhden ja puolen'' riviväliin ja \verb|\linespread{1.6}| ''kakkosen''
riviväliin. Normaalisti riviväliä ei levitetä, joten kerroin on silloin 1.
\index{kakkosen riviväli}
Komennon \ci{linespread} huomattavat vaikutukset eivät sovi julkaistaviin töihin.
Mikäli rivivälin muuttamiseen on hyvät syyt, on ehkä syytä käyttää
komentoa:
\begin{lscommand}
\verb|\setlength{\baselineskip}{1.5\baselineskip}|
\end{lscommand}
\begin{example}
{\setlength{\baselineskip}%
{1.5\baselineskip}
Tämä kappale on ladottu 1,5 kertaa
leveämmällä rivivälillä. Huomaa
par-komento kappaleen lopussa.\par}
Tämän kappaleen tarkoitus on esittää,
että sulkeen jälkeen riviväli on
taas normaali.
\end{example}
\subsection{Kappaleen muotoilu}\label{parsp}
\LaTeX:ssa on kaksi kappaleen ulkoasuun vaikuttavaa parametria.
Panemalla käsikirjoitustiedoston esittelyosaan määrittelyn
\begin{code}
\ci{setlength}\verb|{|\ci{parindent}\verb|}{0pt}| \\
\verb|\setlength{|\ci{parskip}\verb|}{1ex plus 0.5ex minus 0.2ex}|
\end{code}
voidaan kappaleiden ulkoasua muuttaa. Nämä kaksi komentoa kasvattavat
kappaleiden väliä ja samalla asettavat ensimmäisen rivin sisennyksen
nollaksi.
Yllä olevan esimerkin \texttt{plus} ja \texttt{minus} kertovat
\TeX:lle, että kappaleiden väliä voidaan kasvattaa tai kutistaa
kerrottu määrä, jos näin kappaleet sopivat sivulle paremmin.
Mannereurooppalaisessa typografiassa (myös Suomessa) kappaleiden
väliin tulee usein tyhjä rivi eikä ensimmäistä riviä sisennetä. Tämä
vaikuttaa myös sisällysluetteloon. Sen rivit ladotaan myös väljemmin.
Tämän välttämiseksi voi olla parempi siirtää nämä kaksi komentoa
esittelyosasta johonkin kohtaan \verb|\tableofcontents|-käskyn jälkeen
tai sitten jättää käyttämästä niitä, sillä useimmissa ammattilaisen
tekemissä kirjoissa ensimmäinen rivi on sisennetty eikä kappaleiden
välissä ole tyhjää riviä.
Jos halutaan sisentää sellaisen kappaleen ensimmäinen rivi, jossa se
ei ole sisennetty voidaan käyttää
\begin{lscommand}
\ci{indent}
\end{lscommand}
\noindent "=komentoa kappaleen alussa.\footnote{Jos halutaan sisentää otsikon jälkeinen
ensimmäinen kappale, kannattaa käyttää 'tools'-kokoelman \pai{indentfirst}-makropakkausta.}
Tämä toimii luonnollisesti vain silloin kuin \verb|\parindent| ei ole saanut
arvoa nolla.
Jos halutaan luoda sisentämätön kappale, voidaan käyttää
\begin{lscommand}
\ci{noindent}
\end{lscommand}
\noindent "=käskyä kappaleen alussa. Tästä voi olla hyötyä silloin kun
dokumentti alkaa suoraan leipätekstillä eikä jollain otsikolla.
\subsection{Vaakasuora välistys}
\label{sec:hspace}
\LaTeX{} määrittelee sanojen ja lauseiden välit automaattisesti.
Vaakavälistyksen lisäämiseksi käytetään komentoa\index{vaakavälistys}
\begin{lscommand}
\ci{hspace}\verb|{|\emph{mitta}\verb|}|
\end{lscommand}
Jos tämä välistys tulee säilyttää vaikka se osuisi rivin loppuun tai
alkuun, käytetään \verb|\hspace*|"=komentoa \verb|\hspace|"=komennon
sijasta. \emph{Mitta} on yksinkertaisimmillaan vain numero ja mittayksikkö.
Tärkeimmät mittayksiköt on listattu taulukossa~\ref{units}.
\index{mittayksiköt}
\begin{example}
Tämä\hspace{1.5cm} on 1,5 cm:n
mittainen väli.
\end{example}
\suppressfloats
\begin{table}[tbp]
\caption{\TeX:n mittayksiköt} \label{units}
\begin{lined}{9.5cm}
\begin{tabular}{@{}ll@{}}
\texttt{mm} & millimetri $\approx 1/25$~tuumaa \quad \demowidth{1mm} \\
\texttt{cm} & senttimetri = 10~mm \quad \demowidth{1cm} \\
\texttt{in} & tuuma $=$ 25.4~mm \quad \demowidth{1in} \\
\texttt{pt} & piste $\approx 1/72$~tuumaa $\approx \frac{1}{3}$~mm \quad\demowidth{1pt}\\
\texttt{em} & käytössä olevan kirjasimen 'M':n leveys \quad \demowidth{1em}\\
\texttt{ex} & käytössä olevan kirjasimen 'x':n korkeus \quad \demowidth{1ex}
\end{tabular}
\bigskip
\end{lined}
\end{table}
\label{cmd:stretch}
Komento
\begin{lscommand}
\ci{stretch}\verb|{|\emph{n}\verb|}|
\end{lscommand}
\noindent luo erityisen kumisen välin. Se venyy niin pitkälle, että
rivillä jäljellä oleva tila tulee täyteen. Jos samalla rivillä
annetaan kaksi \verb|\hspace{\stretch{|\emph{n}\verb|}}|"-komentoa,
kasvavat välit venymiskertoimen mukaisesti.
\begin{example}
x\hspace{\stretch{1}}
x\hspace{\stretch{3}}x
\end{example}
Tekstiä välistettäessä voi olla järkevää, että välit riippuvat
käytetyn kirjasimen koosta. Tätä varten on olemessa suhteelliset
mittayksiköt \texttt{em} ja \texttt{ex}.:
\begin{example}
{\Large{}iso\hspace{1em}y}\\
{\tiny{}pieni\hspace{1em}y}
\end{example}
\subsection{Pystysuora välistys}
Kappaleiden, otsikoiden \ldots\ välit \LaTeX{} määrittää automaattisesti.
Tarvittaessa \emph{kahden kappaleen väliin} voidaan lisätä ylimääräinen
väli komennolla
\begin{lscommand}
\ci{vspace}\verb|{|\emph{mitta}\verb|}|
\end{lscommand}
Tätä komentoa pitäisi normaalisti käyttää kahden tyhjän rivin välissä.
Jos tämä väli pitäisi säilyttää myös sivun ylä"- tai alareunassa, käytetään
komennon tähtiversiota \verb|\vspace*|.
\index{pystysuora välistys}
Komentoa \verb|\stretch| voidaan käyttää \verb|\pagebreak|:n yhteydessä
latomaan sivun viimeinen rivi tai keskittämään teksti sivulla pystysuunnassa.
\begin{code}
\begin{verbatim}
Vähän tekstiä \ldots
\vspace{\stretch{1}}
Tämä menee sivun viimeiselle riville.\pagebreak
\end{verbatim}
\end{code}
Ylimääräistä väliä lisätään \emph{saman} kappaleen kahden rivin väliin
\begin{lscommand}
\ci{\bs}\verb|[|\emph{mitta}\verb|]|
\end{lscommand}
\noindent "=komennolla.
Mikäli väliä ei haluta määritellä tarkkaan, voidaan käyttää komentoja
\ci{bigskip} (isoon väliin) ja \ci{smallskip} (pieneen väliin).
\section{Sivun ulkoasu}
\begin{figure}[!hp]
\begin{center}
\makeatletter\@layout\makeatother
\end{center}
\vspace*{1.8cm}
\caption{Sivun ulkoasun asetukset.}
\label{fig:layout}
\cih{footskip}
\cih{headheight}
\cih{headsep}
\cih{marginparpush}
\cih{marginparsep}
\cih{marginparwidth}
\cih{oddsidemargin}
\cih{paperheight}
\cih{paperwidth}
\cih{textheight}
\cih{textwidth}
\cih{topmargin}
\end{figure}
\index{page layout}
\index{sivun ulkoasu}
\LaTeXe{} antaa mahdollisuuden määritellä arkkikoon \index{arkin koko}
\verb|\documentclass|"-komennossa. \LaTeXe{} valitsee sitten automaattisesti
\wi{marginaalit}. Joskus kuitenkin ennalta määrätyt arvot eivät tyydytä.
Niitä voidaan luonnollisesti muuttaa.
%no idea why this is needed here ...
\thispagestyle{fancyplain}
Kuvassa~\ref{fig:layout} näytetään kaikki muutettavissa olevat parametrit.
Kuva on tehty 'tools' kokoelman \pai{layout}-makropakkauksella.%
\footnote{\CTANref|tex-archive/macros/latex/required/tools|}.
\textbf{SEIS!} \ldots ennenkuin syöksytään ''kapeat sivut leveämmäksi kiihkoon''
kannattaa asiaa miettiä ensin muutama sekunti. Kuten muillakin asioissa \LaTeX:ssa,
on sivun ulkoasulla tarkoituksensa.
Niinpä, MS Wordilla tehtyihin sivuihin verrattuna ne näyttävät hyvinkin kapeilta.
Katsotaanpa kuitenkin lukijan mielikirjaa\footnote{Nyt on kyse vakavaraisen kustantajan
julkaisemasta oikeasta painetusta kirjasta.} ja lasketaan rivillä keskimäärin
olevien merkkien määrä. Huomataan, että rivillä on vain noin 66 merkkiä.
Tehdäänpä sama myös \LaTeX:n sivulla. Huomataan, että myös siinä on 66 merkkiä
rivillä. Kokemus osoittaa, että lukeminen vaikeutuu heti kun rivillä on
enemmän merkkejä. Tämä johtuu siitä, että silmiä on vaikea siirtää
rivin lopusta seuraavan rivin alkuun. Samasta syystä sanomalehdet ladotaan
useammalla palstalla.
Eli jos leipätekstin leveyttä lisätään on muistettava, että lukijoiden
elämä tehdään vaikeammaksi. Riittäköön tämä kuitenkin varoituksista,
lupasinhan kertoa miten se tehdään \ldots
\LaTeX{} tarjoaa näiden parametrien muuttamiseksi kaksi komentoa. Niitä
käytetään tavallisesti dokumentin johdanto-osassa.
Ensimmäinen komento liittää johonkin parametreista tietyn arvon:
\begin{lscommand}
\ci{setlength}\verb|{|\emph{parametri}\verb|}{|\emph{mitta}\verb|}|
\end{lscommand}
Seuraava komento lisää pituutta johonkin parametreista.
\begin{lscommand}
\ci{addtolength}\verb|{|\emph{parametri}\verb|}{|\emph{mitta}\verb|}|
\end{lscommand}
Tämä toinen komento on oikeastaan hyödyllisempi kuin \ci{setlength}-komento,
sillä nyt tullaan työskentelemään yksinomaan aikaisemmin määritellyillä
asetuksilla. Koko tekstin levyden kasvattamiseksi yhden senttimetrin verran,
dokumentin johdanto-osaan pannaan:
\begin{code}
\verb|\addtolength{\hoffset}{-0.5cm}|\\
\verb|\addtolength{\textwidth}{1cm}|
\end{code}
Tässä yhteydessä voitaisiin tutustua \pai{calc}-makropakettiin,
joka antaa mahdollisuuden käyttää aritmeettisia operaatioita aina
kun funktioiden argumenteille annetaan jotain arvoja.
\section{Lisää hupia mitoista}
Aina kuin vain mahdollista on \LaTeX"-dokumenteissa parasta välttää
absoluuttisia mittoja. On parempi perustaa asiat muiden elementtien
leveydelle tai korkeudelle. Kuvan leveys voisi olla \verb|\textwidth|,
jotta se täyttäisi sivun.
Seuraavat kolme komentoa mahdollistavat tekstijonon leveyden, korkeuden
ja syvyyden määrittämisen.
\begin{lscommand}
\ci{settoheight}\verb|{|\emph{komento}\verb|}{|\emph{teksti}\verb|}|\\
\ci{settodepth}\verb|{|\emph{komento}\verb|}{|\emph{teksti}\verb|}|\\
\ci{settowidth}\verb|{|\emph{komento}\verb|}{|\emph{teksti}\verb|}|
\end{lscommand}
\noindent Seuraava esimerkki esittää tavan käyttää näitä komentoja.
\begin{example}
\flushleft
\newenvironment{vardesc}[1]{%
\settowidth{\parindent}{#1:\ }
\makebox[0pt][r]{#1:\ }}{}
\begin{displaymath}
a^2+b^2=c^2
\end{displaymath}
\begin{vardesc}{Jossa}$a$,
$b$ -- ovat suorakulmaisen kolmion
suoran kulman adjunkteja.
$c$ -- on kolmion
yksinäinen hypotenuusa.
$d$ -- ei lopulta esiinny tässä
lainkaan. Eiko olekin hämäävää?
\end{vardesc}
\end{example}
\section{Laatikot}
\LaTeX{} rakentaa sivuja työntelemällä laatikoita sinne tänne. Ensinnäkin
jokainen kirjain on pieni laatikko, joka sitten liimataan muihin kirjaimiin
muodostamaan sanoja. Nämä liimataan edelleen muihin sanoihin, mutta erityisellä
elastisella liimalla, jotta joukko sanoja voidaan ahtaa tai levittää täyttämään
sivun yksi rivi.
Myönnettäköön, että tämä oli yksinkertaistettu kuvaus siitä, mitä todella
tapahtuu, mutta ajatus on se, että \TeX{} operoi liimalla ja laatikoilla.
Eikä ainoastaan kirjain ole laatikko. Mitä tahansa voidaan panna laatikkoon,
myös muita laatikoita. \LaTeX{} käsittelee sitten jokaista laatikkoa aivan
kuin yksittäistä kirjainta.
Menneissä luvuissa olemme jo törmänneet joihinkin laatikoihin, vaikka
niitä ei erikseen mainittu. Esimerkiksi \ei{tabular}"-ympäristö ja komento
\ci{includegraphics} saa aikaan laatikon. Tämä tarkoittaa sitä, että kaksi
taulukkoa tai kuvaa voidaan helposti asemoida vierekkäin. On vain varmistettava,
että niiden yhteisleveys ei ylitä tekstin leveyttä.
Tietty kappale voidaan myös pakata laatikkoon joko
\begin{lscommand}
\ci{parbox}\verb|[|\emph{sijainti}\verb|]{|\emph{leveys}\verb|}{|\emph{teksti}\verb|}|
\end{lscommand}
\noindent "=komennolla tai
\begin{lscommand}
\verb|\begin{|\ei{minipage}\verb|}[|\emph{sijainti}\verb|]{|\emph{leveys}\verb|}| teksti
\verb|\end{|\ei{minipage}\verb|}|
\end{lscommand}
\noindent "=ympäristöllä. \texttt{Sijainti} voi olla jokin kirjaimista
\texttt{c, t} tai \texttt{b}, jolla määritellään laatikon pystysuora sijainti
suhteessa ympäröivän tekstin peruslinjaan. \texttt{leveys} ilmaisee
laatikon leveyden. Pääero on siinä, että parboxin sisällä ei voida käyttää
kaikkia komentoja, kun taas minipagessa kaikki on mahdollista.
Vaikka \ci{parbox} pakkaa koko kappaleen rivinvaihtoineen kaikkineen,
on olemassa myös laatikointikomentoja, jotka toimivat vaakasuoralla
asemoidulla materiaalilla. Yksi niistä onkin jo tuttu eli \ci{mbox}.
Se yksinkertaisesti pakkaa joukon laatikoita toiseen laatikkoon, ja
sitä voidaan käyttää estämään \LaTeX:ia panemasta rivinvaihtoa tiettyjen
sanojen väliin. Koska kerran laatikoiden sisään voidaan panna laatikoita,
ovat nämä vaakasuorat laatikonpakkaajat äärimmäisen joustavia käyttää.
\begin{lscommand}
\ci{makebox}\verb|[|\emph{leveys}\verb|][|\emph{sijainti}\verb|]{|\emph{teksti}\verb|}|
\end{lscommand}
\noindent \emph{leveys} määrittää tuloksena saatavan laatikon leveyden ulkoa
nähtynä.\footnote{Tämä tarkoittaa sitä, että se voi olla pienempi kuin
laatikon sisällä oleva materiaali. Leveydeksi voidaan antaa jopa 0 pt, jolloin
laatikon sisällä oleva teksti ladotaan niin, ettei se vaikuta ympäröiviin
laatikoihin.} Mittayksiköiden lisäksi leveytenä voidaan antaa \ci{width},
\ci{height}, \ci{depth} ja \ci{totalheight}. Ne saavat arvon ladotun
\emph{tekstin} mitoista. \emph{sijainti}"-parametri saa yksikirjaimisen arvon:
\textbf{c} keskitetty, \textbf{l} vasemmalle tasattu, \textbf{r} oikealle tasattu
tai \textbf{s}, joka tasaa tekstin laatikon koko alalle.
\ci{framebox} toimii samalla tavoin kuin \ci{makebox}, mutta se piirtää
tekstin ympärille kehyksen.
Seuraavat esimerkit näyttävät mitä \ci{makebox}:lla ja \ci{framebox}:lla
voidaan muun muassa tehdä.
\begin{example}
\makebox[\textwidth]{%
k e s k i n e n}\par
\makebox[\textwidth][s]{%
l e v i t e t t y}\par
\framebox[1.1\width]{Näin sitä
ollaan kehyksissä!} \par
\framebox[0.8\width][r]{Hitto,
tuli liian leveä} \par
\framebox[1cm][l]{Hällä
väliä, eiks je?}
Pystytkö lukemaan tämän?
\end{example}
Nyt kun vaakasuorat asiat ovat hallinassa, voidaan siirtyä
pystysuoriin.\footnote{Täydellinen kontrolli saavutetaan vain hallitsemalla
sekä vaakasuoraa että pystysuoraa materiaalia \ldots} Se ei ole ongelma
\LaTeX:lle.
\begin{lscommand}
\ci{raisebox}\verb|{|\emph{nosto}\verb|}[|\emph{syvyys}\verb|][|\emph{korkeus}\verb|]{|\emph{teksti}\verb|}|
\end{lscommand}
\noindent "=komennolla voidaan määritellä laatikon ominaisuuksia pystysuoralla akselilla.
Kolmessa ensimmäisessä parametrissa voidaan käyttää muuttujia \ci{width}, \ci{height},
\ci{depth} ja \ci{totalheight}, jolloin laatikon kokoon vaikuttaa \emph{teksti}-argumentti.
\begin{example}
\raisebox{0pt}[0pt][0pt]{\Large%
\textbf{Aaaa\raisebox{-0.3ex}{a}%
\raisebox{-0.7ex}{aa}%
\raisebox{-1.2ex}{r}%
\raisebox{-2.2ex}{g}%
\raisebox{-4.5ex}{h}}}
hän huusi, mutta ei edes seuraava
rivissä huomannut, että jotain
kauheaa oli tapahtunut hänelle.
\end{example}
\section{Linjat ja välikkeet}
\label{sec:rule}
Muutama sivu sitten nähtiin komento
\begin{lscommand}
\ci{rule}\verb|[|\emph{noste}\verb|]{|\emph{leveys}\verb|}{|\emph{korkeus}\verb|}|
\end{lscommand}
\noindent Normaalikäytössä se tekee mustan laatikon.
\begin{example}
\rule{3mm}{.1pt}%
\rule[-1mm]{5mm}{1cm}%
\rule{3mm}{.1pt}%
\rule[1mm]{1cm}{5mm}%
\rule{3mm}{.1pt}
\end{example}
\noindent Siitä on hyötyä piirrettäessä pysty"- ja vaakasuoria viivoja.
Kansisivulla oleva viiva on esimerkiksi tehty \ci{rule}-komennolla.
Erityistapaus on linja, jolla ei ole leveyttä, mutta kylläkin tietty korkeus.
Painoalalla tätä kutsutaan välikkeeksi. \index{välike} Sitä käytetään
varmistamaan, että sivulla olevalla elementillä on tietty minimikorkeus.
Sitä voidaan käyttää \texttt{tabular}-ympäristössä varmistamaan, että
rivillä on tietty minimikorkeus.
\begin{example}
\begin{tabular}{|c|}
\hline
\rule{1pt}{4ex}Tukipalkki \ldots\\
\hline
\rule{0pt}{4ex}Välike\\
\hline
\end{tabular}
\end{example}
\bigskip
{\flushright Loppu.\par}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "lyhyt2e"
%%% End:
|