summaryrefslogtreecommitdiff
path: root/info/kaytannollista-latexia/luku-muuta.tex
blob: 3b616e4770593f19f147eb4b5ac39117fb0d9e97 (plain)
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
% 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{Muuta tekniikkaa}

Tähän päälukuun on koottu sekalaisia ohjeita, jotka eivät oikein sovi
mihinkään aiempaan päälukuun. Kyse on sellaisesta Latexin tekniikasta,
jota voi hyödyntää monenlaisissa dokumenteissa ja tilanteissa.

\section{Päiväykset ja kellonajat}

Latexissa on muutama komento, joilla voi latoa dokumenttiin
automaattisesti kääntämishetken päivämäärän. Sellaista voidaan tarvita
esimerkiksi dokumentin kansi- tai nimiösivulle ilmaisemaan
julkaisuajankohtaa. Yleisimmin käytetty komento lienee \komento{today},
joka latoo nykyisen kielivalinnan (luku \ref{luku/kieliasetukset})
mukaisen pitkän päivämäärän:

\komentoi{today}
\begin{koodilohkosis}
\today
\end{koodilohkosis}

\begin{tulossis}
  12. kesäkuuta 2023
\end{tulossis}

\noindent
Edellä on esimerkki suomen kielen kokonaisesta päiväysmerkinnästä.
Muilla kielillä komento tuottaa tietenkin jotain muuta. Päivämäärään
sisältyvät lukuarvot voi latoa kahden komennon yhdistelmillä: ensin
annetaan komento \komento{the} ja sen jälkeen päivää, kuukautta tai
vuotta ilmaiseva komento, kuten seuraavasta esimerkistä ilmenee.

\komentoi{the}
\komentoi{day}
\komentoi{month}
\komentoi{year}
\begin{koodilohkosis}
\the\day.\the\month.\the\year
\end{koodilohkosis}

\begin{tulossis}
  12.6.2023
\end{tulossis}

\noindent
Monipuolisempia ajanilmauksia voi latoa paketin \pakettictan{datetime2}
avulla. Se sisältää paljon komentoja ajanilmausten tuottamiseen eri
muodoissa ja eri kielillä. \paketti{datetime2}\-/ paketti pitäisi ladata
kieliasetusten (luku \ref{luku/kieliasetukset}) ja kielipaketin jälkeen,
ja lataamisen yhteydessä voi asettaa, minkä kielten mukaisesti
ajanilmaukset halutaan latoa. Seuraavassa esimerkissä ladataan suomen
(\koodi{finnish}) ja brittienglannin (\koodi{en-GB}) ajanilmaukset sekä
asetetaan, että kellonajoissa ei ole sekunteja mukana.

\pakettii{datetime2}
\begin{koodilohkosis}
% Ensin kielipaketti polyglossia tai babel. Sitten:
\usepackage[finnish, en-GB, showseconds=false]{datetime2}
\end{koodilohkosis}

\noindent
Ajanilmausten kielen tai muun tyylin voi muuttaa komennolla
\komento{DTMsetstyle}, kuten seuraava esimerkki osoittaa. Dokumentin
kääntämishetken päiväys ladotaan komennolla \komento{DTMtoday}, joka
vastaa perus Latexin \komento{today}\-/ komentoa. Nykyhetken kellonaika
saadaan komennolla \komento{DTMcurrenttime}.

\komentoi{DTMsetstyle}
\komentoi{DTMtoday}
\komentoi{DTMcurrenttime}
\begin{koodilohkosis}
\DTMsetstyle{finnish}
Tänään on \DTMtoday\ ja kello on \DTMcurrenttime. \\
\DTMsetstyle{en-GB}
Today is \DTMtoday\ and the time is \DTMcurrenttime.
\end{koodilohkosis}

\begin{tulossis}
  Tänään on 12. kesäkuuta 2023 ja kello on 10.46. \\
  Today is 12th June 2023 and the time is 10:46am.
\end{tulossis}

\noindent
Pitkän päivämäärän sijasta on mahdollista latoa myös pelkistä luvuista
koostuva päiväys. Tämä vaatii, että ajanilmausten tyyliä muutetaan
komennolla \komento{DTMsetstyle}. Esimerkiksi suomen kielelle on
olemassa tyyli \koodi{finnish-numeric} eli numeeristen päiväysten tyyli.

\komentoi{DTMsetstyle}
\komentoi{DTMtoday}
\begin{koodilohkosis}
\DTMsetstyle{finnish-numeric}
\DTMtoday
\end{koodilohkosis}

\begin{tulossis}
  12.6.2023
\end{tulossis}

\noindent
\paketti{datetime2}\-/ paketissa on myös komentoja minkä tahansa
päivämäärän tai kellonajan latomiseen, ei pelkästään nykyhetken.
Peruskomento päiväyksille on \komento{DTMdisplaydate}, jota käytetään
seuraavasti:

\komentoi{DTMdisplaydate}
\begin{koodilohkosis}
\DTMdisplaydate{vuosi}{kuukausi}{päivä}{viikonpäivä}
\end{koodilohkosis}

\noindent
Komennon kaikki argumentit ovat lukuja. Viimeinen argumentti on
viikonpäivän numero: \koodi{0}~on maanantai, \koodi{1}~on tiistai jne.
Kaikki ajanilmaustyylit tai \=/kielet eivät huomioi viikonpäivää
mitenkään. Esimerkiksi suomen kielellä sitä ei huomioida. Argumentiksi
voi asettaa \koodi{-1}, jolloin viikonpäivä jätetään aina huomioimatta.

\komentoi{DTMsetstyle}
\komentoi{DTMdisplaydate}
\begin{koodilohkosis}
\DTMsetstyle{finnish} Suomi julistautui itsenäiseksi
\DTMdisplaydate{1917}{12}{6}{-1}. \\
\DTMsetstyle{en-GB} Finland declared its independence on
\DTMdisplaydate{1917}{12}{6}{-1}.
\end{koodilohkosis}

\begin{tulossis}
  Suomi julistautui itsenäiseksi 6. joulukuuta 1917. \\
  Finland declared its independence on 6th December 1917.
\end{tulossis}

\noindent
Yleensä lienee kätevämpää kirjoittaa kiinteät päivämäärät ja muut
ajanilmaukset ihan normaalina tekstinä eikä minkään komennon avulla.
Komento \komento{DTMdisplaydate} voi kuitenkin olla hyödyllinen silloin,
kun saman Latex\-/ koodin avulla tuotetaan ajanilmauksia useiden
erikielisten dokumenttien osaksi. Tai ehkä kirjoittaja ei tunne
kohdekielen ajanilmausten merkintätapoja ja luottaa, että
\paketti{datetime2}\-/ paketin avulla ne saa oikeanlaiseksi~(?).

Mitä hyvänsä kellonaikoja saa ladottua komennolla
\komento{DTMdisplaytime}, joka huomioi voimassa olevat kieli- tai
tyyliasetukset. Komennolle annetaan kolme argumenttia: tunnit, minuutit
ja sekunnit. Sekunteja ei kuitenkaan näytetä, jos \paketti{datetime2}\-/
paketin lataamisen yhteydessä on käytetty asetusta
\koodi{showseconds=\katk false}.

\komentoi{DTMsetstyle}
\komentoi{DTMdisplaytime}
\begin{koodilohkosis}
\DTMsetstyle{finnish} \DTMdisplaytime{11}{43}{27}
\DTMsetstyle{en-GB}   \DTMdisplaytime{11}{43}{27}
\end{koodilohkosis}

\begin{tulossis}
   11.43 11:43am
\end{tulossis}

\noindent
Paketti \paketti{datetime2} sisältää paljon muitakin ominaisuuksia ja
komentoja ajanilmausten käsittelyyn ja latomiseen. Paketin hyödyt
korostuvat erityisesti silloin, kun tarvitaan automaattisia
ajanilmauksia eri kielillä. Tarkempaa tietoa on luettavissa paketin
ohjekirjasta, mutta seuraavassa on vielä yksi esimerkki tilanteesta,
jossa puhutaan jostakin kuukaudesta, ilman että kirjoitusvaiheessa
tiedetään, mistä kuukaudesta on kyse.

\komentoi{DTMsavenow}
\komentoi{DTMfinnishMonthname}
\komentoi{DTMfetchmonth}
\komentoi{DTMfetchyear}
\begin{koodilohkosis}
\DTMsavenow{nyt}
\DTMfinnishMonthname{\DTMfetchmonth{nyt}}ssa vuonna \DTMfetchyear{nyt}
eli tämän tekstin julkaisun aikaan -- --.
\end{koodilohkosis}

\begin{tulossis}
  \DTMsavenow{nyt}
  \DTMfinnishMonthname{\DTMfetchmonth{nyt}}ssa vuonna \DTMfetchyear{nyt}
  eli tämän tekstin julkaisun aikaan -- --.
\end{tulossis}

\section{Vapaasti sijoitettava sisältö}

Vapaasti sijoitettava sisältö tarkoittaa tässä sellaista tekstiä, kuvia
tai muuta sisältöä, joka ei ole osa normaalia tekstivirtaa.
Tavallisestihan Latex latoo kirjaimia peräkkäin riveiksi ja kappaleiksi
niin, että sisältö virtaa sujuvasti sivulta toiselle.

Paketin \pakettictan{textpos} avulla voi kuitenkin sijoittaa sivulle
sisältöä siten, että se on irrallaan normaalista tekstivirrasta.
Esimerkiksi tekstiä tai kuvia voi sommitella absoluuttisesti tiettyihin
kohtiin sivulle tai kuvan voi sijoittaa normaalin tekstin taakse.

Paketin lataamisen yhteydessä valitaan joko suhteellinen tai
absoluuttinen sisällön sijoittelu, eli käytetäänkö valitsinta
\koodi{absolute} vai ei. Myöhemmin selviää, mitä ne käytännössä
tarkoittavat.

\pakettii{textpos}
\begin{koodilohkosis}
\usepackage{textpos}            % oletus eli suhteellinen sijoittelu
\usepackage[absolute]{textpos}  % absoluuttinen sijoittelu
\end{koodilohkosis}

\noindent
\paketti{textpos}\-/ paketti määrittelee ympäristön nimeltä
\ymparisto{textblock}, jonka sisällä olevat asiat ovat kokonaan tai
osittain irrallaan tavallisesta tekstivirrasta. Ympäristö itse ei vie
sivulta tilaa lainkaan, eli normaalin tekstivirran näkökulmasta se on
näkymätön. Ympäristö vaatii tiettyjä argumentteja, joiden muoto on
seuraava:

\ymparistoi{textblock}
\begin{koodilohkosis}
\begin{textblock}{leveys}(x,y)
  ...
\end{textblock}
\end{koodilohkosis}

\noindent
Ympäristön ensimmäinen argumentti \koodi{leveys} on laatikon leveys, ja
ympäristön toinen argumentti \koodi{(x,y)} ilmaisee sisällön x- ja
y-koordinaatit. Nämä eivät ole mittoja vaan kertoimia eli mittalukuja,
joiden yksikkönä on mitta \mitta{TPHorizModule} (leveys ja
x-koordinaatti) ja \mitta{TPVertModule} (y-koordinaatti). Mitat voi
asettaa \komento{setlength}\-/ komennolla.

\komentoi{setlength}
\mittai{TPHorizModule}
\mittai{TPVertModule}
\begin{koodilohkosis}
\setlength{\TPHorizModule}{10mm}  % vaakasuuntainen yksikkö
\setlength{\TPVertModule} {10mm}  % pystysuuntainen yksikkö
\end{koodilohkosis}

\noindent
Edellä olevat komennot asettavat sekä vaaka- että pystysuuntaiseksi
yksiköksi 10\,mm, joten seuraavassa esimerkissä laatikon leveydeksi
tulee 50\,mm ja sen sijainti on 70\,mm oikealle ja 35\,mm alas.

\ymparistoi{textblock}
\begin{koodilohkosis}
\begin{textblock}{5}(7,3.5)
  Tämä teksti ei ole osa normaalia tekstivirtaa.
\end{textblock}
\end{koodilohkosis}

\noindent
Jos \paketti{textpos}\-/ paketti ladattiin suhteellisessa
sijoittelutilassa eli ilman \koodi{absolute}\-/ valitsinta,
\ymparisto{textblock}\-/ ympäristön x- ja y-koordinaattien origo on
juuri siinä kohdassa, missä ympäristö sijaitsee sivun normaalissa
tekstivirrassa. Niinpä esimerkiksi miinusmerkkinen y-koordinaatti
sijoittaa ympäristön sisältöä kyseisen kohdan yläpuolelle.

Jos paketti ladattiin absoluuttisessa tilassa eli käyttämällä
\koodi{absolute}\-/ valitsinta, on koordinaattien origo nykyisen sivun
vasemmassa ylänurkassa (oletuksena). Origon voi siirtää komennolla
\komento{textblockorigin}, ja sille argumentiksi annetut koordinaatit
siirtävät origon vasemmasta ylänurkasta oikealle ja alas. Seuraava
esimerkki siirtää origon leveyssuunnassa sivun keskelle ja
pystysuunnassa 5\,cm alas sivun yläreunasta.

\komentoi{textblockorigin}
\mittai{paperwidth}
\begin{koodilohkosis}
\textblockorigin{.5\paperwidth}{5cm}
\end{koodilohkosis}

\noindent
\ymparisto{textblock}\-/ ympäristön luoman laatikon rajat voi tarkistaa
antamalla paketin lataamisen yhteydessä valitsimen \koodi{showboxes}.
Näin laatikon reunaviivat piirretään näkyviin. Varsinkin sommittelutyön
alkuvaiheessa on usein hyödyllistä nähdä, missä laatikot tarkalleen
ovat.

\pakettii{textpos}
\begin{koodilohkosis}
\usepackage[showboxes]{textpos}
\end{koodilohkosis}

\noindent
Kuten edellä jo todettiin, ympäristö \ymparisto{textblock} ei käytä
argumenteissaan mittoja vaan kertoimia, jotka ovat suhteessa mittoihin
\mitta{TPHorizModule} ja \mitta{TPVertModule}. Ympäristöstä on kuitenkin
myös tähdellinen versio \ymparisto{textblock*}, jonka argumenteissa
käytetään nimenomaan mittoja.

\ymparistoi{textblock*}
\begin{koodilohkosis}
\begin{textblock*}{10cm}(3cm,2cm)
  Tämän laatikon leveys on 10 cm, ja se sijaitsee origosta 3 cm
  oikealle ja 2 cm alas.
\end{textblock*}
\end{koodilohkosis}

\noindent
Ympäristöt latovat sisältönsä sivulle kerroksittain siten, että sivulla
ensin oleva \ymparisto{textblock}\-/ sijaitsee alimpana ja seuraavat
ympäristöt ladotaan edellisten päälle -- mikäli niiden sisältö
ylipäätään sattuu päällekkäin.

Absoluuttisessa sijoittelutilassa (paketin \koodi{absolute}\-/ valitsin)
\ymparisto{textblock}\-/ ympäristöjen sisältö sijaitsee kaiken normaalin
tekstin alla. Tämän voi kuitenkin muuttaa käyttämällä paketin valitsinta
\koodi{overlay}, joka tuo ympäristöjen sisällön normaalin tekstin
päälle.

Paketin asetuksia voi muuttaa lataamisen jälkeen komennolla
\komento{TPoptions}. Komennon argumenttiin kirjoitetaan valitsimia, ja
niiden arvoksi annetaan joko \koodi{true} (kytke päälle) tai
\koodi{false} (kytke pois).

\komentoi{TPoptions}
\begin{koodilohkosis}
\TPoptions{absolute=false, showboxes=true}
\end{koodilohkosis}

\noindent
Tässä alaluvussa esiteltiin ehkä tärkeimmät \paketti{textpos}\-/ paketin
ominaisuudet ja niiden käyttäminen. Hieman muitakin ominaisuuksia on.
Esimerkiksi ympäristöjen sijoittelun kohdistusruudukon saa näkyviin ja
määriteltyä omalla komennollaan. Laatikoiden reunaviivojen leveyden ja
värin sekä sisällön marginaalin voi asettaa. Lisätietoa on luettavissa
paketin ohjekirjasta.