Uudet komennot

Julkaistu

Tähän sivuun liittyvät esimerkkitiedostot komennot.tex ja komennot.pdf.

Kuten Johdanto-sivulla mainittiin LaTeX on kokoelma makroja. Makro puolestaan on komentojono tai ohjelmanpätkä, joka voidaan suorittaa yhdellä yksinkertaisella komennolla. Komennot tässä tapauksessa ovat joko muita makroja tai TeXin primitiivikomentoja, joiden avulla kaikki LaTeXin makrot on pohjimmiltaan määritelty.

Uusia komentoja määritellään LaTeXissa komennolla \newcommand*:

\newcommand*{\komento}[n][oletusarvo]{määrittely}

Tässsä \komento on määriteltävä komento, n on määriteltävän komennon argumenttien lukumäärä (1–9), oletusarvo on mahdollisen valinnaisen argumentin oletusarvo ja määrittely sisältää komennon määrittelyn. Mikäli komennolla ei ole argumentteja, niin [n] ja [oletusarvo] jätetään pois. Komennon määrittelyssä argumentteihin viitataan muodossa #1,…,#9. Komennon nimessä saa käyttää vain englanninkielisen aakkoston kirjaimia a,…,z, A,…,Z, tai vaihtoehtoisesti komennon nimi voi koostua yhdestä mielivaltaisesta merkistä. Seuraavassa joitain esimerkkejä.

\newcommand*{\pvm}{\number\day.\number\month.\number\year}

Komento \pvm tulostaa nykyisen päivämäärän numeromuodossa, esimerkiksi 14.8.2022.

\newcommand*{\class}[1]{\ensuremath{\mathcal{#1}}}

Komento \class tulostaa argumenttinsa matematiikkatilan kalligrafisella fontilla, jollaista matematiikassa usein käytetään luokkien eli joukoista koostuvien joukkojen merkitsemiseen. On parempi määritellä tällaista tarkoitusta varten uusi komento kuin käyttää suoraan komentoa \mathcal, koska tällöin nähdään heti, minkä tyyppisestä objektista on kyse. Lisäksi komennon \class määrittelyä on tarvittaessa helppo muuttaa. Komento \ensuremath varmistaa, että sen argumentti käsitellään aina matematiikkatilassa. Täten komennon \class ympärille ei tarvitse lisätä matematiikkatilan edellyttämiä dollarin merkkejä: luokka~\class{A}.

\newcommand*{\xvec}[1][n]{\ensuremath{(x_1,\dots,x_{#1})}}

Komento \xvec ilman argumenttia tulostaa alkioittain esitetyn vektorin (x1,…,xn). Komento \xvec[m] tulostaa vektorin (x1,…,xm). LaTeXin komennoilla voi olla korkeintaan yksi valinnainen argumentti, ja valinnaisen argumentin on oltava komennon ensimmäinen argumentti (#1).

Komennolla \newcommand* määriteltyjen uusien komentojen argumentit eivät saa sisältää kappaleen vaihtoja eli tyhjiä rivejä tai \par-komentoja. Jos on tarvetta sellaiselle uudelle komennolle, jonka argumentit saavat sisältää useita kappaleita tekstiä, niin on käytettävä komentoa \newcommand, siis ilman tähteä.

\newcommand{\sffootnote}[1]{\footnote{\sffamily#1}}

Jos komennolla \newcommand* määriteltyä uutta komentoa käytettäessä unohdetaan joku loppusulku pois, niin LaTeXin ei tarvitse etsiä loppusulkua kuin kyseisen kappaleen loppuun. Jos taas uusi komento on määritelty komennolla \newcommand, niin sulkeiden tarkistus voi edetä pitkälle ohi varsinaisesta virheestä, koska näin määritellyn komennon argumentti saa sisältää kappaleen vaihtoja. Tämän vuoksi uudet komennot tulisi pääsääntöisesti määritellä komennolla \newcommand*.

Komennoilla \newcommand* ja \newcommand ei voi määritellä uudelleen jo olemassa olevia komentoja. Tähän tarkoitukseen on käytettävä komentoja \renewcommand* ja \renewcommand:

\renewcommand*{\bibname}{Lähdeluettelo}

Dokumenttiluokissa book ja report komento \bibname sisältää lähdeluettelon nimen, joka suomenkielisissä dokumenteissa on oletusarvoisesti Kirjallisuutta. Dokumenttiluokassa article lähdeluettelon nimi on komennossa \refname. Yllä oleva komento on annettava vasta komennon \begin{document} jälkeen, sillä babel-makropaketti estää näiden sisäisten nimien muuttamisen ennen dokumentin alkua.