Zastaw ciekawych makroinstrukcji
Author: Włodzimierz Macewicz
Keywords: tex, latex, makroinstrukcje, pakiety makroinstrukcji, Wirtualna Akademia

## theorem

Pakiet pozwala na definiowanie środowisk służących do opisu przykładów, zadań, definicji itp. podstawowym poleceniem jest:
`\newteorem{nazwa środowiska}{tekst nagłówka}`
lub
`\newteorem{nazwa środowiska drugiego}% [nazwa środowiska]{tekst nagłówka drugiego}`
licznikiem kolejnych pozycji będzie licznik określony przez nazwa środowiska
oraz
`\newteorem{nazwa środowiska drugiego}% {tekst nagłówka drugiego}[section]`
licznik zliczający kolejne użycie środowiska jest zerowany przy zmianie licznika `section` (`chapter`, `subsection` itp.), oraz w skład numeru wchodzi licznik nadrzędny.

Dostępne są polecenia zmieniające:

- sposób numerowania kolejnych pozycji:
  `\theoremstyle{style}`
  gdzie style może przyjmować następujące wartości:
  `plain`
    emuluje oryginalny styl LaTeX'a
  `break`
    tekst opisu pisany jest ,,od nowej linii''
  `marginbreak`
    numer umieszczany jest na marginesie, tekst opisu pisany jest ,,od nowej linii''
  `changebreak`
    numer umieszczany jest na początku nagłówka, tekst opisu pisany jest ,,od nowej linii''
  `change`
    numer umieszczany jest na początku nagłówka,
  `margin`
    numer umieszczany jest na marginesie,
- font nagłówka (wszystkie środowiska muszą mieć ten sam font nagłówka (ważna jest tylko pierwsza definicja!)
  `\theoremheaderfont{font}`
- font którym składana jest treść środowiska
  `\theorembodyfont{font}`
- odstęp przed środowiskiem
  `\theorempreskimamount`
- odstęp po zamknięciu środowiska
  `\theorempostskimamount`

Przykład
Poniższe polecenia definiujące nowe środowiska i ich cechy muszą znaleźć się w preambule dokumentu (między poleceniem `\documentclass...`, a `\begin{document}`).

Licznikiem środowiska Def jest licznik środowiska The, a licznik środowiska Lem jest zależny od licznika środowiska The.

    \theoremstyle{plain}               \newtheorem{Cor}{Corollary}

    \theoremheaderfont{\normalfont\bfseries}
    \theorembodyfont{\normalfont\slshape}

    \theoremstyle{break}               \newtheorem{Exa}{Example}
    \theoremstyle{changebreak}         \newtheorem{The}{Theorem}
    \theoremstyle{marginbreak}         \newtheorem{Lem}{Lemma}[The]
    \theoremstyle{change}              \newtheorem{Def}[The]{Definition}
    \theoremstyle{margin}              \newtheorem{Rem}{Remark}
    \theoremstyle{nonumber}            \newtheorem{uwaga}{Uwaga !}
    \begin{Cor}
    This is a sentence typeset in the theorem environment Cor.
    \end{Cor}
    \begin{Exa}
    This is a sentence typeset in the theorem environment Exa.
    \end{Exa}
    \begin{The}
    This is a sentence typeset in the theorem environment The.
    \end{The}
    \begin{Lem}
    This is a sentence typeset in the theorem environment Lem.
    \end{Lem}
    \begin{Def}[extra text]
    This is a sentence typeset in the theorem environment Def.
    \end{Def}
    \begin{Rem}
    This is a sentence typeset in the theorem environment Rem.
    \end{Rem}
    \begin{uwaga}
    This is a sentence typeset in the theorem environment uwaga.
    \end{uwaga}

Utworzenie nowego sposobu prezentacji środowiska nie zostało rozwiązane w sposób elegancki; wymaga dopisania następującej makroinstrukcji (przykład dla środowiska `uwaga`), gdzie nonumber jest nazwą nowego środowiska (uwaga na znak `@`)

    \gdef\th@nonumber{\normalfont\slshape
      \def\@begintheorem##1##2{\item[%
           \rlap{\vbox{\hbox{\hskip \labelsep\theorem@headerfont ##1}%
    \vskip 1ex%
                       \hbox{\strut}}}]}%
    \def\@opargbegintheorem##1##2##3{%
      \item[\rlap{\vbox{\hbox{\hskip \labelsep \theorem@headerfont
                         ##1\ ##2\ (##3)}%
                        \hbox{\strut}}}]}}

Włodzimierz Macewicz

Ostatnie zmiany: 05.05.2014.