Makrot ja ympäristöt

Käyttäjä voi omaa dokumenttiaan varten määritellä kirjoittamista helpottavia makroja ja ympäristöjä. Määrittelyt tehdään komennoilla \newcommand tai \newenvironment. Lähes kaikki LaTeXin kenoviivalla alkavat komennot ovat itse asiassa järjestelmään kuuluvia makroja.

Kirjoittamista voidaan helpottaa kätkemällä monimutkainen syöte makron tai ympäristön määritelmään, jolloin syötettä tarvittaessa riittää kirjoittaa kenoviivalla alkava makron kutsu mahdollisine parametreineen tai muotoa \begin{...} ... \end{...} olevat ympäristön alku- ja loppumerkit. Ympäristöönkin voi liittyä parametreja.

Paitsi kirjoittamisen helpottamiseen makroja ja ympäristöjä käytetään dokumentin rakenteellistamiseen. Pyrkimyksenä on tällöin erottaa toisistaan dokumentin sisältö ja esitysmuoto, jolloin esitysmuotoa voidaan muuttaa vaihtamalla makrojen tai ympäristöjen määrittelyä, mutta varsinaiseen sisältöön ei korjailuja tarvita.

Seuraavassa esimerkissä on määritelty muutama makro ja yksi ympäristö. Tarkemmat tiedot syntaksista löytyvät alkeisoppaista.

\documentclass[12pt]{article}
\usepackage[finnish]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\setlength{\parskip}{\medskipamount}
\setlength{\parindent}{0pt}
\setlength{\emergencystretch}{15pt}
\thispagestyle{empty}                   % ei sivunumeroa

\newcommand{\ee}[1]{e^{#1}}             % makromäärittely;
                                        % hakasuluissa parametrien lukumäärä

\newcommand{\viiva}{\mathop{\Bigg/}}
\newcommand{\sij}[3]{\viiva\limits_{\hspace*{-5mm}{#1}}^{\hspace*{5mm}{#2}}{#3}}
                                        % toinen makromäärittely

\newcommand{\otsake}[1]{\textbf{#1}}    % kolmas makromäärittely 

\newenvironment{teht}[1]{[#1]\quad}{}   % ympäristömäärittely

\begin{document}

\otsake{Esimerkki 1}

Eksponenttifunktio matemaatikoiden tapaan, ts. Neperin luku kursivoituna: 

Syöte \verb+\ee{2x}+, tulos $\ee{2x}$.

\otsake{Esimerkki 2}

Muissa maissa kuin Suomessa ei käytetä määrätyn integraalin
sijoitusmerkkinä isoa vinoviivaa eikä tätä ole {\LaTeX}issakaan
valmiina. Sen voi itse määritellä makroksi, jolloin käyttö on
helppoa:

Syöte \verb+\sij{0}{\infty}{\frac{\sin x}{\ee{x}}}+, tulos
\[
\sij{0}{\infty}{\frac{\sin x}{\ee{x}}}
\]

\otsake{Esimerkki 3}

Kahden harjoitustehtävän tulostus käyttäen ympäristön \verb+teht+
määrittelyä, jossa näytetään tehtävien koodinumero hakasuluissa:

\begin{teht}{int53}
Laske a)~osittaisintegroinnilla ja b)~sopivaa trigonometrian kaavaa
käyttämällä määrätty integraali $\int_0^{2\pi}\sin^2x\,dx$.
\end{teht}

\begin{teht}{dy12}
Määritä se kaikilla $x$:n arvoilla jatkuva funktio $y(x)$, joka
toteuttaa yhtälön
\[
2\int_0^x ty(t)\,dt = x^2 + y(x).
\]
\end{teht}

\end{document}

Tulos näyttää seuraavalta: esim2a.pdf. Lähdekoodi on tiedostossa esim2a.tex.

Lähdetiedoston alussa olevat määrittelyt voidaan korvata toisenlaisilla, jolloin tuloksen ulkoasu muuttuu, mutta varsinaiseen sisältöön ei ole tarvinnut tehdä muutoksia (lukuunottamatta selitystekstejä). Uudet määrittelyt:

\newcommand{\ee}[1]{\mathrm{e}^{#1}}                  % makromäärittely

\newcommand{\viiva}{\mathop{\Bigg|}}
\newcommand{\sij}[3]{\left(#3\right)\viiva\nolimits_{#1}^{#2}}
                                                      % toinen makromäärittely

\newcommand{\otsake}[1]{\begin{center}{\large\bfseries\textsc{#1}}\end{center}}
                                                      % kolmas makromäärittely 

\newcounter{htnro}                                    % tehtävänumerolaskuri

\newenvironment{teht}[1]%                             % ympäristömäärittely
{\addtocounter{htnro}{1}\makebox[10mm][r]{\bfseries\large\thehtnro.\quad}%
\begin{minipage}[t]{110mm}}%
{\end{minipage}}

Tulos on tiedostossa esim2b.pdf ja lähdekoodi tiedostossa esim2b.tex.

Huomaa myös seuraava:


SKK    4.11.2011