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

%<*part>
%    \end{macrocode}
% \subsection{Часть}
%
% \subsubsection{Параметры формата записи в оглавлении}
%
% \DescribeMacro{\tocprethepart}\index{Макросы!\verb*+\tocprethepart+}
% Префикс номера.
%    \begin{macrocode}
\providecommand\tocprethepart{\partname~}
%    \end{macrocode}
% \DescribeMacro{\tocpostthepart}\index{Макросы!\verb*+\tocpostthepart+}
% Постфикс номера.
%    \begin{macrocode}
\providecommand\tocpostthepart{.\@postskip}
%    \end{macrocode}
% \DescribeMacro{\tocpartfill}\index{Макросы!\verb*+\tocpartfill+}
% Заполнитель между названием и номером страницы. Для части по умолчанию
% отсутствует. Чтобы заполнить какими-либо символами, нужно присвоить
% |\tocpartfill| значение |\tocfill{символ}|. Для примера см. далее
% определение |\tocsectionfill|.
%    \begin{macrocode}
\providecommand\tocpartfill{}
%    \end{macrocode}
% \DescribeMacro{\tocpartfont}\index{Макросы!\verb*+\tocpartfont+}
% Шрифт заголовка записи.
%    \begin{macrocode}
\providecommand\tocpartfont{\bfseries}
%    \end{macrocode}
% \DescribeMacro{\tocpartfillfont}\index{Макросы!\verb*+\tocpartfillfont+}
% Шрифт заполнителя в оглавлении.
%    \begin{macrocode}
\providecommand\tocpartfillfont{\normalfont}
%    \end{macrocode}
% \DescribeMacro{\tocpartnumfont}\index{Макросы!\verb*+\tocpartnumfont+}
% Шрифт номера в оглавлении.
%    \begin{macrocode}
\providecommand\tocpartnumfont{\normalfont}

%    \end{macrocode}
%
% \subsubsection{Параметры формата заголовка в тексте}
%
% Параметры номера и названия: выравнивание, шрифт, отступы, текст до и после.
% \DescribeMacro{\thepartalign}\index{Макросы!\verb*+\thepartalign+}
% \DescribeMacro{\thepartfont}\index{Макросы!\verb*+\thepartfont+}
% \DescribeMacro{\prethepart}\index{Макросы!\verb*+\prethepart+}
% \DescribeMacro{\postthepart}\index{Макросы!\verb*+\postthepart+}
% \DescribeMacro{\partalign}\index{Макросы!\verb*+\partalign+}
% \DescribeMacro{\partfont}\index{Макросы!\verb*+\partfont+}
% \DescribeMacro{\beforepart}\index{Макросы!\verb*+\beforepart+}
% \DescribeMacro{\afterpart}\index{Макросы!\verb*+\afterpart+}
%    \begin{macrocode}
\providecommand\thepartalign{\centering}
\providecommand\thepartfont{\huge}
\providecommand\prethepart{\tocprethepart}
\providecommand\postthepart{\par\vskip 20\p@}

\providecommand\partalign{\centering}
\providecommand\partfont{\huge\bfseries}
\providecommand\beforepart{}
\providecommand\afterpart{\par}

%    \end{macrocode}
% \DescribeMacro{\partpagestyle}\index{Макросы!\verb*+\partpagestyle+}
% Стиль страницы, на которой расположен заголовок части.
%    \begin{macrocode}
\def\partpagestyle#1{\gdef\@partpagestyle{#1}}
\partpagestyle{empty}
%    \end{macrocode}
%
% \subsubsection{Низкоуровневые команды}
%
% Описание структуры заголовков.
% \begin{itemize}
% \item в тексте,
% \DescribeMacro{\@seccntformat}\index{Макросы!\verb*+"\"@seccntformat+}
%    \begin{macrocode}
\def\@seccntformat#1{%
  \csname prethe#1\endcsname%
  \csname the#1\endcsname%
  \csname postthe#1\endcsname%
}

%    \end{macrocode}
% \item в Содержании.
% \DescribeMacro{\@tocseccntformat}\index{Макросы!\verb*+"\"@tocseccntformat+}
%    \begin{macrocode}
\def\@tocseccntformat#1{%
  \csname tocprethe#1\endcsname%
  \csname tocthe#1\endcsname%
  \csname tocpostthe#1\endcsname%
}

%    \end{macrocode}
% \end{itemize}
% \DescribeMacro{\part}\index{Макросы!\verb*+"\part+}
% Интерфейс.
%    \begin{macrocode}
\newcommand\part{
  \if@openright
    \cleardoublepage
  \else
    \clearpage
  \fi
  \thispagestyle{\@partpagestyle}%
  \if@twocolumn
    \onecolumn
    \@tempswatrue
  \else
    \@tempswafalse
  \fi
  \null\vfil\secdef\@part\@spart
}
%    \end{macrocode}
%
% \DescribeMacro{\@part}\index{Макросы!\verb+"\"@part+}
% Команда, формирующая нумеруемый заголовок части |\part|.
%    \begin{macrocode}
\def\@part[#1]#2{%
  \ifnum \c@secnumdepth >-2\relax
    \refstepcounter{part}%
%    \end{macrocode}
% Команда |\def\\{ }| используется для корректного отображения
% заголовков с принудительными разрывами строк.
%    \begin{macrocode}
    {\def\\{ }\addcontentsline{toc}{part}{\@tocseccntformat{part} #1}}
  \else
    {\def\\{ }\addcontentsline{toc}{part}{#1}}
  \fi
  \markboth{}{}%
  {%
    \interlinepenalty \@M
    \normalfont
    \ifnum \c@secnumdepth >-2\relax
%    \end{macrocode}
% Постоянная часть заголовка и номер.
%    \begin{macrocode}
      {\thepartfont\partalign\@seccntformat{part}}
    \fi%
%    \end{macrocode}
% Название.
%    \begin{macrocode}
    {\partfont\partalign\beforepart #2\afterpart}%
  }
  \@endpart%
}

%    \end{macrocode}
%
% \DescribeMacro{\@spart}\index{Макросы!\verb+"\"@spart+}
% Команда, формирующая ненумеруемый заголовок части |\part*|.
%    \begin{macrocode}
\def\@spart#1{%
  \partalign{\interlinepenalty \@M%
    \partfont\beforepart #1\afterpart}%
  \@endpart
}

%    \end{macrocode}
%
% \DescribeMacro{\@endpart}\index{Макросы!\verb+"\"@endpart+}
% Завершение страницы с заголовком части.
%    \begin{macrocode}
\def\@endpart{
  \vfil\newpage
  \if@twoside
    \null
    \thispagestyle{\partpagestyle}%
    \newpage
  \fi
  \if@tempswa\twocolumn\fi
}

%    \end{macrocode}
% \DescribeMacro{\l@part}
% Низкоуровневая команда, создающая запись в Содержании.
%    \begin{macrocode}
\newcommand*\l@part[2]{%
  \ifnum \c@tocdepth >-2\relax
    \addpenalty{-\@highpenalty}%
    \addvspace{2.25em \@plus\p@}%
    \begingroup
      \setlength\@tempdima{3em}%
      \parindent \z@ \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      {\leavevmode \tocpartfont #1\nobreak
      \tocpartfillfont\tocpartfill\hfill
      \hb@xt@\@pnumwidth{\hss\tocpartnumfont #2}}
      \par\nobreak
      \global\@nobreaktrue
      \everypar{\global\@nobreakfalse\everypar{}}%
    \endgroup
  \fi
}

%</part>
%    \end{macrocode}
