
% \iffalse
%%% From File: env.dtx
% \fi
%
%    \begin{macrocode}

%<*env>
%    \end{macrocode}
% \subsection{Окружения}
%
% \DescribeEnv{description}\index{Окружения!\verb*+description+}
% \subsubsection{Примечание}
%    \begin{macrocode}
\newenvironment{description}
  {\list{}{\labelwidth\z@ \itemindent-\leftmargin
    \let\makelabel\descriptionlabel}}
  {\endlist}

%    \end{macrocode}
% \DescribeMacro{\descriptionlabel}\index{Макросы!\verb*+\descriptionlabel+}
%    \begin{macrocode}
\newcommand*\descriptionlabel[1]{\hspace\labelsep\normalfont\bfseries #1}

%    \end{macrocode}
% \DescribeMacro{\abstractnamefont}\index{Макросы!\verb*+\abstractnamefont+}
% \DescribeMacro{\abstractfont}\index{Макросы!\verb*+\abstractfont+}
% \DescribeMacro{\postabstract}\index{Макросы!\verb*+\postabstract+}
%    \begin{macrocode}
\newcommand\abstractnamefont{\bfseries\small}
\newcommand\abstractfont{\small}
\newcommand\postabstract{\par\vfil\null}

%    \end{macrocode}
% \DescribeEnv{abstract}\index{Окружения!\verb*+abstract+}
% \subsubsection{Аннотация}
%    \begin{macrocode}
\if@titlepage
  \newenvironment{abstract}{
    \thispagestyle{empty}
    \@beginparpenalty\@lowpenalty
    \begin{center}%
      \abstractnamefont\abstractname
      \@endparpenalty\@M
    \end{center}\abstractfont
  }{\postabstract}
\else
  \newenvironment{abstract}{
    \if@twocolumn
      \section*{\abstractname}
    \else
      \begin{center}
        {\abstractnamefont\vspace{-.5em}\vspace{\z@}}%
      \end{center}\abstractfont
      \quotation
    \fi
  }{\if@twocolumn\else\endquotation\fi}
\fi

%    \end{macrocode}
% \DescribeEnv{quotation}\index{Окружения!\verb*+quotation+}
% \subsubsection{Цитирование}
%    \begin{macrocode}
\newenvironment{quotation}{
  \list{}{
    \listparindent 1.5em
    \itemindent\listparindent
    \rightmargin\leftmargin
    \parsep\z@ \@plus\p@
  }
  \item\relax
}{\endlist}

%    \end{macrocode}
% \DescribeEnv{quote}\index{Окружения!\verb*+quote+}
% \subsubsection{Выдержка}
%    \begin{macrocode}
\newenvironment{quote}{
  \list{}{\rightmargin\leftmargin}
  \item\relax
}{\endlist}

%    \end{macrocode}
% \DescribeEnv{titlepage}\index{Окружения!\verb*+titlepage+}
% \subsubsection{Титульный лист}
%    \begin{macrocode}
\newenvironment{titlepage}{
  \if@twocolumn
    \@restonecoltrue\onecolumn
  \else
    \@restonecolfalse\newpage
  \fi
  \thispagestyle{empty}
  \setcounter{page}\@ne
}{
  \if@restonecol\twocolumn\else\newpage\fi
  \if@twoside\else\setcounter{page}\@ne\fi
}

%    \end{macrocode}
%
% \DescribeEnv{figure}\index{Окружения!\verb*+figure+}
% \DescribeEnv{figure*}\index{Окружения!\verb*+figure*+}
% \subsubsection{Рисунок}
%    \begin{macrocode}
\newenvironment{figure}{\@float{figure}}{\end@float}
\newenvironment{figure*}{\@dblfloat{figure}}{\end@dblfloat}
%    \end{macrocode}
%
% \DescribeEnv{table}\index{Окружения!\verb*+table+}
% \DescribeEnv{table*}\index{Окружения!\verb*+table*+}
% \subsubsection{Таблица}
%    \begin{macrocode}
\newenvironment{table}{\@float{table}}{\end@float}
\newenvironment{table*}{\@dblfloat{table}}{\end@dblfloat}
%    \end{macrocode}
%
% \subsubsection{Генератор окружений типа <<теорема>>}
%
% \DescribeMacro{\newtheorem}\index{Макросы!\verb*+\newtheorem+}
% Переопределяем |\newtheorem|, так чтобы автоматически создавались
% параметры формата теорем.
%    \begin{macrocode}

\def\newtheorem#1{%
%    \end{macrocode}
% \DescribeMacro{\theoremstyle}\index{Макросы!\verb*+\theoremstyle+}
% \DescribeMacro{\thetheoremstyle}\index{Макросы!\verb*+\thetheoremstyle+}
% \DescribeMacro{\postthetheorem}\index{Макросы!\verb*+\postthetheorem+}
% \DescribeMacro{\opargtheorem}\index{Макросы!\verb*+\opargtheorem+}
% \DescribeMacro{\preopargtheorem}\index{Макросы!\verb*+\preopargtheorem+}
% \DescribeMacro{\postopargtheorem}\index{Макросы!\verb*+\postopargtheorem+}
%    \begin{macrocode}
  {
%    \end{macrocode}
% Стиль текста теоремы.
%    \begin{macrocode}
    \global\@namedef{#1style}{\itshape}
%    \end{macrocode}
% Стиль заголовка и номера теоремы.
%    \begin{macrocode}
    \global\@namedef{the#1style}{\bfseries}
%    \end{macrocode}
% Символ после номера.
%    \begin{macrocode}
    \global\@namedef{postthe#1}{.}
%    \end{macrocode}
% Стиль опционального аргумента (текста в скобках после заголовка и номера).
%    \begin{macrocode}
    \global\@namedef{oparg#1style}{\upshape}
%    \end{macrocode}
% Символы, окружающие опциональный аргумент (по умолчанию --- круглые скобки).
%    \begin{macrocode}
    \global\@namedef{preoparg#1}{(}
    \global\@namedef{postoparg#1}{)}
  }
  \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}%
}

%    \end{macrocode}
% У команд |\@begintheorem| и |\@opargbegintheorem| изменены аргументы,
% чтобы можно было использовать обобщенное форматирование.
% \DescribeMacro{\@xthm}\index{Макросы!\verb*+"\"@xthm+}
% \DescribeMacro{\@ythm}\index{Макросы!\verb*+"\"@ythm+}
% \DescribeMacro{\@begintheorem}\index{Макросы!\verb*+"\"@begintheorem+}
% \DescribeMacro{\@opargbegintheorem}\index{Макросы!\verb*+"\"@opargbegintheorem+}
% \DescribeMacro{\@endtheorem}\index{Макросы!\verb*+"\"@endtheorem+}
%    \begin{macrocode}
\def\@xthm#1#2{%
  \@begintheorem{#1}{#2}\ignorespaces}
\def\@ythm#1#2[#3]{%
  \@opargbegintheorem{#1}{#2}{#3}\ignorespaces}

\def\@begintheorem#1#2{\trivlist
  \item[\hskip\labelsep%
  {\csname the#1style\endcsname #2\ %
  \csname the#1\endcsname\unskip\csname postthe#1\endcsname}]%
  \csname #1style\endcsname%
}

\def\@opargbegintheorem#1#2#3{\trivlist
  \item[\hskip\labelsep%
  {\csname the#1style\endcsname #2\ \csname the#1\endcsname}\ %
  {\csname oparg#1style\endcsname%
  \csname preoparg#1\endcsname #3%
  \csname postoparg#1\endcsname}]%
  \csname #1style\endcsname%
}

\def\@endtheorem{\endtrivlist}

%</env>
%    \end{macrocode}
