\documentclass[a4paper]{article}

% Ta datoteka vsebuje naslednje primere:
% - definicija makroja
% - uporaba raznih načinov poravnave enačb iz paketa amsmath

\usepackage[utf8]{inputenc}

\usepackage{amsmath}
\usepackage{amssymb} % Vsebuje font \mathbb in veliko dadatnih simbolov
\usepackage{theorem} % Da lahko definiramo nova okolja za izreke.

% Makro definiramo z ukazom \newcommand.

\newcommand{\tg}{\operatorname{tg}}
\newcommand{\ctg}{\operatorname{ctg}}

% Makro, ki sprejme argumente
\newcommand{\C}[2]{\mathcal{C}^{(#1)}(#2)}

% Makro za končne nabore
\newcommand{\tuple}[2]{({#1}_1, \ldots, {#1}_{#2})}
\newcommand{\tuplen}[1]{\tuple{#1}{n}}

%%%%%%% Vse v zvezi s paketom theorem:

{
  % Nastavimo stil, v katerem se bo izpisal izrek.
  \theorembodyfont{\itshape} % Ta določa pisavo v besedilu
  %\theoremheaderfont{\scshape} % Ta določa pisavo v glavi

  \newtheorem{izrek}{Izrekec}[section]
  \newtheorem{posledica}[izrek]{Posledica}
  \newtheorem{vaja}{Vaja}[section]

{
  % Definicije so v drugačnem stilu pisave:
  \theorembodyfont{\rmfamily}
  \newtheorem{definicija}[izrek]{Definicija}
}

%%% Takole definiramo novo okolje:

\newenvironment{dokaz}{
  \goodbreak\par
  \textit{Dokaz.}%
}{%
  \nopagebreak
  \hfill{\vrule width 1ex height 1ex depth 0ex}
  \medskip
  \goodbreak
}



%%%%%%% GLAVNI DOKUMENT


\begin{document}

\title{Uporaba paketov \texttt{amsmath}, \texttt{theorem} in makroji}
\author{Andrej Bauer}
\maketitle


\section{Makroji}

{\LaTeX} ima vgrajene operatorje kot so $\sin$, $\cos$, $\log$ ipd. S
paketom \texttt{amsmath} lahko definiramo nove operatorje z ukazom
\verb|\operatorname|:
%
$$
\operatorname{tg} (2 x) =
\frac{2 \operatorname{tg} x}{1 - \operatorname{tg}^2 x}.
$$
%
Ker je zoprno vedno tipkati isto zaporedje ukazov, lahko definiramo
\emph{makro}. V tem dokumentu\footnote{Ni mišljeno, da boste ta
  dokument brali v obliki PDF, raje glejte izvorno datoteko
  \texttt{matematika.tex}.} smo definirali makro \verb|\tg|, zato
lahko pišemo kar:
%
$$
\tg (2 x) = \frac{2 \tg x}{1 - \tg^2 x}.
$$
Makroji so torej uporabni kot okrajšave za daljše ukaze. Imajo pa vsaj
še eno dodatno prednost: če spremenimo definicijo makroja, je
sprememba uveljavljena povsod v besedilu. Tako ni treba popravljati
besedila na mnogih mestih, ampak samo v definiciji makroja.

Makro lahko sprejme tudi argumente. Na primer, da v članku potrebujemo
oznako za $k$-krat zvezno odvedljive funkcije na dani množici $\Omega
\subseteq \mathbb{R}^n$. Brez makroja bi to zapisali kot
\verb|\mathcal{C}^{(k)}(\Omega)| in dobili $\mathcal{C}^{(k)}(\Omega)$.
Ker smo definirali makro \verb|\C|, ki sprejme dva argumenta, lahko
pišemo kar \verb|\C{k}{\Omega}| in prav tako dobimo $\C{k}{\Omega}$.

Tu je še primer makroja za urejene $n$-terice. Naj bo $x =
\tuple{x}{k}$ in $y = \tuplen{y}$. Brez uporabe makroja \verb|tuple|
bi morali pisati $z = (z_1, \ldots, z_n)$.


\section{Poravnavanje enačb}

Paket \texttt{amsmath} vsebuje okolja za poravnavanje enačb in ostalih
matematičnih izrazov. Vsako okolje ima dve različici, \verb|okolje| in
\verb|okolje*|. Prva različica enačbe ali izraze tudi oštevilči, druga
pa ne. Naslednji primeri ponazarjajo njihovo uporabo.

\subsection*{Okolje \texttt{equation}}

To okolje lahko uporabljamo kot \verb|$$...$$|, ki izraz tudi oštevilči:
%
\begin{equation}
  \label{pitagora}
  a^2 + b^2 = c^2.
\end{equation}
%
Potem se lahko sklicujemo na enačbo z \verb|eqref|. Tako na primer
enačba~\eqref{pitagora} pove, kakšna je zveza med katetama $a$ in $b$
ter hipotenuzo $c$. Mimogrede, \verb|ref| deluje tako kot \verb|eqref|
brez oklepajev, se pravi enačba~\ref{pitagora}. Nekateri pišejo
enačba~(\ref{pitagora}). Če uporabimo okolje \verb|equation*|, dobimo
neoštevilčeno enačbo:
%
\begin{equation*}
  a^2 + b^2 = c^2.
\end{equation*}

\subsection*{Okolje \texttt{align}}

Okolje \verb|align| uporabimo, kadar želimo poravnati en znak,
običajno enakost:
%
\begin{align}
  (x+y)^2 &= (x+y) (x+y) \\
          &= x (x + y) + y (x + y) \\
          &= x^2 + x y + y x + y^2 \\
          &= x^2 + x y + x y + y^2 \\
          &= x^2 + (x y + x y) + y^2 \\
          &= x^2 + 2 x y + y^2.
\end{align}
%
Lahko brez oštevilčenja:
%
\begin{align*}
  (x+y)^2 &= (x+y) (x+y) \\
          &= x (x + y) + y (x + y) \\
          &= x^2 + x y + y x + y^2 \\
          &= x^2 + x y + x y + y^2 \\
          &= x^2 + (x y + x y) + y^2 \\
          &= x^2 + 2 x y + y^2.
\end{align*}
%
Obstaja tudi okolje \verb|aligned|, ki ga uporabimo znotraj
matematičnega okolja:
%
\begin{equation}
  \label{eq:primer-1}
  \begin{aligned}
    (x+y)^2 &= (x+y) (x+y) \\
            &= x (x + y) + y (x + y) \\
            &= x^2 + x y + y x + y^2 \\
            &= x^2 + x y + x y + y^2 \\
            &= x^2 + (x y + x y) + y^2 \\
            &= x^2 + 2 x y + y^2.
  \end{aligned}
\end{equation}
%
Včasih želimo v poravnane vrstice vriniti besedilo:
%
\begin{align*}
  (x+y)^2 &= (x+y) (x+y) \\
          &= x (x + y) + y (x + y) \\
          &= x^2 + x y + y x + y^2 \\
\intertext{in po krajšem premisleku:}
  &= x^2 + x y + x y + y^2 \\
  &= x^2 + (x y + x y) + y^2 \\
  &= x^2 + 2 x y + y^2.
\end{align*}

Lahko poravnamo tudi na kakem drugem znaku:
%
\begin{align*}
  \lnot (\lnot A \lor B)
  &\iff (\lnot \lnot A) \land \lnot B \\
  &\iff A \land \lnot B \\
  &\iff \lnot (\lnot A \lor B) \\
  & \iff \lnot (A \Rightarrow B).
\end{align*}

\subsection*{Okolje \texttt{multline}}

Okolje \verb|multline| uporabimo za daljši račun, ki se razteza čez
več vrstic. Prva vrstica je poravnana levo, zadnja desno, vse ostalo
sredinsko:
%
\begin{multline*}
  (x+y)^2
  = (x+y) (x+y) = \\
  = x (x + y) + y (x + y)
  = x^2 + x y + y x + y^2
  = x^2 + x y + x y + y^2 = \\
  = x^2 + (x y + x y) + y^2
  = x^2 + 2 x y + y^2.
\end{multline*}

\subsection*{Okolje \texttt{gather}}
\label{sec:okolje-textttgather}

Okolje \verb|gather| uporabimo, kadar želimo zapisati več izrazov,
enega pod drugega, in nimamo poravnave. Obravnavajmo naslednje izraze:
%
\begin{gather*}
  A + B + C \\
  (f(x) - g(y))^2 \\
  1 - 2 + 3 - 4 + 5 - \cdots + 101.
\end{gather*}

\subsection*{Okolje \texttt{xalignat}}

Okolje \verb|xalignat| uporabimo, če želimo poravnati več stolpcev:
%
\begin{xalignat*}{2}
      A &= 3 + 5 + 6  &   X &= 7 \\
  B + C &= 5          &   Y &= 6 + 7 + 8.
\end{xalignat*}
%
Lahko je več stolpcev:
%
%
\begin{xalignat*}{3}
      A &= 3 + 5 + 6  &  X &= 7           &   a &= 5\\
  B + C &= 5          &  Y &= 6 + 7 + 8   &   b &= 7.
\end{xalignat*}
%
Opomba: študenti so na predavanjih povedali, da v bistvu \verb|align|
to dela samo od sebe, pa še števila stolpcev ni treba podati.
Predavatelj je iz pamtiveka.

\section{Kako deluje \texttt{verb}}
\label{sec:kako-deluje-textttv}

Ukaz \verb|\verb| uporabimo, kadar želimo pokazati kako besedilo, ki
vsebuje veliko posebnih znakov, kot so \verb|\|, \verb|&|, \verb|{|,
  \verb|}| ipd.

Argument ukaza \verb@\verb@ označimo spredaj in zadaj z enakim znakom.
Na primer \verb_la la la_.

\section{Ostale matematične formule}

Z okoljem \verb|cases| stavimo definicijo funkcije po primerih:
%
\begin{equation*}
  f(x) =
  \begin{cases}
    x^2 + 1 & x < 0, \\
    1       & 0 \leq x \leq 1, \\
    x^2     & 1 < x.
  \end{cases}
\end{equation*}
%
Pogoje na desni lahko vstavimo v \verb|\text| in pišemo besedilo:
%
\begin{equation*}
  f(x) =
  \begin{cases}
    x^2 + 1 & \text{če $x < 0$,} \\
    1       & \text{če $0 \leq x \leq 1$,} \\
    x^2     & \text{sicer}
  \end{cases}
\end{equation*}
%
Tretja varianta:
%
\begin{equation*}
  f(x) =
  \begin{cases}
    x^2 + 1, & x < 0, \\
    1,       & 0 \leq x \leq 1, \\
    x^2,     & 1 < x.
  \end{cases}
\end{equation*}
%

Marike stavimo z okoljem \verb|matrix|:
%
\begin{equation*}
  A =
  \left(
  \begin{matrix}
    x_1       & 0       & \cdots & 0       \\
    0         & x_2     &        & \vdots  \\
    \vdots    &         & \ddots & 0       \\
    0         &  \cdots &    0   & x_n     \\ 
  \end{matrix}
  \right)
\end{equation*}
%
Drugačni oklepaji:
%
%
\begin{equation*}
  A =
  \left\{
  \begin{matrix}
    x_1       & 0       & \cdots & 0       \\
    0         & x_2     &        & \vdots  \\
    \vdots    &         & \ddots & 0       \\
    0         &  \cdots &    0   & x_n
  \end{matrix}
  \right\}
\end{equation*}
%
Še en primer:
%
\begin{equation*}
  X \sim
  \left(
    \begin{matrix}
      1   & 2   & 3   \\
      0{,}4 & 0{,}2 & 0{,}4 \\
    \end{matrix}
  \right)
\end{equation*}

\section{Kako definiramo svoje okolje za izreke}
\label{sec:kako-defin-svoje}

Paket \verb|theorem| omogoča definicijo novih okolij za izreke, leme,
definicije itn.

\begin{definicija}
  Prostor $X$ je \emph{kompakten}, če ima vsako njegovo odprto
  pokritje končno podpokritje.
\end{definicija}

\begin{izrek}
  Če je $f : X \to Y$ zvezna bijekcija iz kompaktnega prostora $X$ v
  Hausdorffov prostor $Y$, potem je homeomorfizem.
\end{izrek}

\begin{dokaz}
  Treba je nekaj komplicirati s pokritji prostora $X$.
\end{dokaz}

\begin{vaja}
  Koliko je en vrabec?
\end{vaja}

\begin{posledica}[Fundamentalni izrek algebre]
  To je ena posledica.
\end{posledica}

\begin{vaja}
  Koliko je $4 + 5$?
\end{vaja}

\begin{posledica}[Bauer]
  To je ena boljša posledica.
\end{posledica}

\end{document}
