% Предварительная версия. Если что-то меняете,
% обязательно переименуйте файл!
% Определения \лк,\пк, \номер уточнены для корректной работы со шрифтами
% в иных кодировках. Это изменение не влияет на работу в родном окружении.
%        /С. Знаменский/
%\expandafter\ifx\csname russcorr.sty\endcsname\relax
%        \expandafter\def\csname russcorr.sty\endcsname{}
%\else\endinput\fi
%\def\@versiondate{6 июля 1994}
%\typeout{Это - russcorr.sty <\@versiondate>}
%\typeout{Ответственный за ошибки: С.М.Львовский, serge@schcorr.msk.su}
%
% Для начала вычистим ставшие ненужными макросы
%\message{Correcting math definitions,}
%\let\labelenumiii\relax  % ??? Зачем это?
%\let\theenumiii\relax    % и это??
%
% Теперь подправим названия тригонометрических и прочих функций
% Это - для совместимости с NFSS
\expandafter\ifx\csname selectfont\endcsname\relax
% Для старой FSS:
\def \tg {\mathop{\rm tg}\nolimits}
\def \ctg {\mathop{\rm ctg}\nolimits}
\def \cosec {\mathop{\rm cosec}\nolimits}
\def \arctg {\mathop{\rm arctg}\nolimits}
\def \arcctg {\mathop{\rm arcctg}\nolimits}
\def \sh {\mathop{\rm sh}\nolimits}
\def \ch {\mathop{\rm ch}\nolimits}
\def \th {\mathop{\rm th}\nolimits}
\def \cth {\mathop{\rm cth}\nolimits}
\else % для NFSS:
\def \tg {\mathop{\operator@font tg}\nolimits}
\def \ctg {\mathop{\operator@font ctg}\nolimits}
\def \cosec {\mathop{\operator@font cosec}\nolimits}
\def \arctg {\mathop{\operator@font arctg}\nolimits}
\def \arcctg {\mathop{\operator@font arcctg}\nolimits}
\def \sh {\mathop{\operator@font sh}\nolimits}
\def \ch {\mathop{\operator@font ch}\nolimits}
\def \th {\mathop{\operator@font th}\nolimits}
\def \cth {\mathop{\operator@font cth}\nolimits}
\fi
\let\eps\varepsilon
\let\vphi\varphi
% Определим основной стиль
%
\@ifundefined{chapter}{\def\@mainstyle{A}}{% это не статья
\@ifundefined{abstractname}{\def\@mainstyle{B}}% это не report
{\def\@mainstyle{R}}}
%
% Теперь подправим заголовки
%
\message{heading names,}
\def\contentsname{Оглавление}
\def\figurename{Рис.}
\def\partname{Часть}     % Надеюсь, это не займет слишком много
\def\chaptername{Глава}  % лишней памяти
\def\listfigurename{Список рисунков}
\def\listtablename{Список таблиц}
\def\refname{Литература}
\def\bibname{Литература}
\def\indexname{Предметный указатель}
\def\tablename{Таблица}
\def\abstractname{Аннотация}
%
%
% Теперь займемся секциями и главами.
% Пусть первый абзац после начала главы будет с отступом.
%
\message{headings,}
\def\chapter{\clearpage % Для экономии бумаги - вместо \cleardoublepage
   \thispagestyle{plain}%
   \global\@topnum\z@
   \@afterindenttrue % Здесь изменение (было \@afterindentfalse)
   \secdef\@chapter\@schapter}
%
% Пусть и первый абзац после начала секции, подсекции и подподсекции
% будет с отступом, но при этом мы сохраним возможность
% возврата к стандарту: для этого надо в трех слеующих \def'ах
% поменять на минус знак четвертого аргумента команды \@startsection
% (например, {-3.5ex plus-1ex minus-.2ex} для \section ).
%
% Приятно отметить, что эти определения НЕ ЗАВИСЯТ от стиля и кегля,
% даром что спрятаны в art12.sty и тому подобных мрачных местах!
%
\def\section{\@startsection {section}{1}{\z@}{3.5ex plus1ex minus
    .2ex}{2.3ex plus.2ex}{\reset@font\Large\bf}}
\def\subsection{\@startsection{subsection}{2}{\z@}{3.25ex plus1ex
    minus.2ex}{1.5ex plus.2ex}{\reset@font\large\bf}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.25ex plus
    1ex minus.2ex}{1.5ex plus.2ex}{\reset@font\normalsize\bf}}
%
% С секциями, кроме абзацного отступа в первом абзаце,
% устроим еще так, чтобы в заголовках после номера ставилась точка.
% Например: 4.3. Кое-что о слонах
%
% Чтобы сохранить возможность возврата к стандарту,
% введем команды \aftersectionseparator и т.п. (см. ниже)
% и определим их точкой. Чтобы вернуться к сандарту, надо переопределить
% их на \relax или {}
% Можно определить их и еще как-нибудь, если такое взбредет в голову.
%
% Заметим, что, если просто сказать что-нибудь наподобие
%  \def\thesection{\arabic{chapter}.\arabic{section}.} ,
% то возникнут проблемы с \label и \ref .
%
\def\@aftersepkern{\kern-.5em}
\def\postchapter{.}
\def\postsection{.\@aftersepkern}
\def\postsubsection{.\@aftersepkern}
\def\postsubsubsection{.\@aftersepkern}
\def\postparagraph{.\@aftersepkern}
\def\postsubparagraph{.\@aftersepkern}
\def\presection{}
\def\presubsection{}
\def\presubsubsection{}
\def\preparagraph{}
\def\presubparagraph{}
%
%  Приступим к постановке точек после номеров...
%
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
     \let\@svsec\@empty\else
     \refstepcounter{#1}\edef\@svsec{%
     \csname pre#1\endcsname % Добавил строку
     \csname the#1\endcsname
     \csname post#1\endcsname % Добавил строку
\hskip 1em}\fi
     \@tempskipa #5\relax
      \ifdim \@tempskipa>\z@
        \begingroup #6\relax
          \@hangfrom{\hskip #3\relax\@svsec
                   }{\interlinepenalty \@M \ignorespaces#8\par}%
% Вставил в предыдущей строке \ignorespaces
% Здесь и далее такие добавки - против лишних пробелов, появляющихся,
% если аргумент sectioning-команды начинается с пробела.
        \endgroup
       \csname #1mark\endcsname{\protect\ignorespaces #7}\addcontentsline
% Добавил два token'а перед #7
         {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                      \protect\numberline{\csname the#1\endcsname
                     \csname post#1\endcsname % Добавил строку
}\fi
\protect\ignorespaces #7}\else
% Добавил два token'а перед #7
        \def\@svsechd{#6\hskip #3\relax  %% \relax added 2 May 90
                   \@svsec #8\csname #1mark\endcsname
                      {\protect\ignorespaces #7}\addcontentsline
% Добавил два token'а перед #7
                           {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                             \protect\numberline{\csname the#1\endcsname
                          \csname post#1\endcsname % Добавил строку
}\fi
\protect\ignorespaces #7}}\fi
% Добавил два token'а перед #7
     \@xsect{#5}}
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
   \ifdim \@tempskipa>\z@
     \begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M
\ignorespaces #5\par}\endgroup % добавил \ignorespaces перед #5
   \else \def\@svsechd{#4\hskip #1\relax
\ignorespaces #5}\fi % добавил \ignorespaces перед #5
    \@xsect{#3}}
% После номеров глав тоже пусть стоят точки:
%
\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@\raggedright
    \ifnum \c@secnumdepth >\m@ne
     \huge\bf \@chapapp{} \thechapter\postchapter % добавлено \postchapter
    \par
    \vskip 20\p@ \fi
    \Huge \bf
    \ignorespaces #1\par % добавил \ignorespaces
    \nobreak
    \vskip 40\p@
  }}
\def\@makeschapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright
    \Huge \bf
    \ignorespaces #1\par % добавил \ignorespaces
    \nobreak
    \vskip 40\p@
  }}
%
% Сделаем так, чтоб в оглавлении точки шли и после номеров глав...
%
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
        \refstepcounter{chapter}%
        \typeout{\@chapapp\space\thechapter.}%
        \addcontentsline{toc}{chapter}{\protect
        \numberline{\thechapter
              \postchapter % Добавил строку
}%
\protect\ignorespaces #1}\else % Добавил два token'а перед #1
      \addcontentsline{toc}{chapter}{\protect\ignorespaces#1}\fi
% В предыдущей строчке вставлено два token'а перед #1
   \chaptermark{\protect\ignorespaces #1}%
   \addtocontents{lof}%
       {\protect\addvspace{10\p@}} % Adds between-chapter space
   \addtocontents{lot}%
       {\protect\addvspace{10\p@}} % to lists of figs & tables.
   \if@twocolumn                   % Tests for two-column mode.
           \@topnewpage[\@makechapterhead{#2}]%
     \else \@makechapterhead{#2}%
           \@afterheading          % Routine called after chapter and
     \fi}                          % section heading.
%
% Теперь подправим подписи к рисункам и таблицам
%
%---------Modified by BaSSiLL--------------

\newcommand{\captionwidth}{\textwidth}
\newcommand{\captionlinestretch}{1.0}
\newcommand{\captionfontsize}{\normalsize}

\message{captions,}
\long\def\@makecaption#1#2{%
%-------- The following line was replaced by the line after it:
%  \vskip 10\p@
  \vskip 5\p@
  \setbox\@tempboxa\hbox{\captionfontsize #1. #2}% Заменили двоеточие на точку...
  \ifdim \wd\@tempboxa >\captionwidth
  {
	\renewcommand{\baselinestretch}{\captionlinestretch}
	\selectfont
	\centerline{
		\begin{tabular}{p{\captionwidth}}
			\unhbox\@tempboxa \\
		\end{tabular}
	}\par
  }
  \else \centerline{\box\@tempboxa}\fi

%-------- The following line was added:
  \vskip 5\p@
%------------------------------------------
}
\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname
  ext@#1\endcsname}{#1}{\protect\numberline{\csname
  the#1\endcsname.}{\ignorespaces #2}}\begingroup
    \@parboxrestore
    \normalsize
    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
  \endgroup}

%
% Следующая проблема - поставить точки после номеров "теорем".
% Мы опять определим \afterthmseparator и инициализируем
% его точкой. Для возврата к стандарту - переопределить
% его на \relax
%
\message{theorems,}
\def\afterthmseparator{.}
\def\@begintheorem#1#2{\trivlist \item[\hskip \labelsep{\bf
#1\ #2\unskip\afterthmseparator}]\it} % вставил 2 token'а после #2
\def\@opargbegintheorem#1#2#3{\trivlist
      \item[\hskip \labelsep{\bf
#1\ #2\ (#3)\afterthmseparator}]\it} % вставил token после (#3)
%
% Поправим колонтитулы (та же точка после номера).
\message{running heads,}
\if A\@mainstyle % стиль - article (вставлено ".\@aftersepkern" после номера)
  \if@twoside
   \def\ps@headings{\let\@mkboth\markboth
    \def\@oddfoot{}\def\@evenfoot{}%       No feet.
    \def\@evenhead{\rm \thepage\hfil \sl \leftmark}%        Left heading.
    \def\@oddhead{{\sl \rightmark}\hfil \rm\thepage}% Right heading.
    \def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\z@
      \thesection\postsection \hskip 1em\relax \fi ##1}}{}}%
    \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
            \thesubsection\postsubsection \hskip 1em\relax \fi ##1}}}
  \else
   \def\ps@headings{\let\@mkboth\markboth
    \def\@oddfoot{}\def\@evenfoot{}%     No feet.
    \def\@oddhead{{\sl \rightmark}\hfil \rm\thepage}% Heading.
    \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
      \thesection\postsection \hskip 1em\relax \fi ##1}}}}
  \fi
\else\if R\@mainstyle % стиль=report. Два пробела после точки заменены на один.
  \if@twoside
  \def\ps@headings{\let\@mkboth\markboth
   \def\@oddfoot{}\def\@evenfoot{}%       No feet.
   \def\@evenhead{\rm \thepage\hfil \sl \leftmark}%        Left heading.
   \def\@oddhead{{\sl \rightmark}\hfil \rm\thepage}% Right heading.
   \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
        \@chapapp\ \thechapter. \fi ##1}}{}}%
   \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
     \thesection. \fi ##1}}}}
  \else
  \def\ps@headings{\let\@mkboth\markboth
  \def\@oddfoot{}\def\@evenfoot{}%     No feet.
  \def\@oddhead{{\sl \rightmark}\hfil \rm\thepage}% Heading.
  \def\chaptermark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\m@ne
    \@chapapp\ \thechapter. \fi ##1}}}}
  \fi
\else % стиль=book (два пробела после точки заменены на один)
\def\ps@headings{\let\@mkboth\markboth
 \def\@oddfoot{}\def\@evenfoot{}%       No feet.
 \def\@evenhead{\rm \thepage\hfil \sl \leftmark}%        Left heading.
 \def\@oddhead{{\sl \rightmark}\hfil \rm\thepage}% Right heading.
 \def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
      \@chapapp\ \thechapter. \fi ##1}}{}}%
 \def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
   \thesection. \fi ##1}}}}
\fi\fi
%
% Подправим команду \appendix : нумерация русскими буквами,
% а не латинскими.
\message{appendix,}
\if A\@mainstyle
\def\appendix{\par
  \setcounter{section}{0}%
  \setcounter{subsection}{0}%
  \def\thesection{\Ralph{section}}}
\else
\def\appendix{\par
  \setcounter{chapter}{0}%
  \setcounter{section}{0}%
  \def\@chapapp{\appendixname}%
  \def\thechapter{\Ralph{chapter}}}
\fi

% Подправим еще одну feature: \cleardoublepage выдает на
% пустой странице колонтитул, оставшийся от предыдущего раздела.
% Сделаем так, чтобы этого не было...
\message{\string\output,}
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
   {\null\ps@empty % добавил \ps@empty (и заодно заменил \hbox{} на \null )
\newpage}\if@twocolumn\hbox{}\newpage\fi\fi\fi}

%
% Определим команды \ralph и \Ralph, аналогичные \alph и \Alph,
% но с русскими буквами. Естественно, \"е, й, ъ, ы, ь пропускаются.
\message{counters,}
\def\prefix#1#2{\@ifundefined{c@#1}{\@nocnterr}%
{\expandafter\def\csname p@#1\endcsname{#2}}}
\def\ralph#1{\@ralph{\@nameuse {c@#1}}}
\def\@ralph#1{\ifcase #1\or \IeC {\cyra }\or \IeC {\cyrb }\or \IeC {\cyrv }\or \IeC {\cyrg }\or \IeC {\cyrd }\or \IeC {\cyre }\or \IeC {\cyrzh }\or \IeC {\cyrz }\or
\IeC {\cyri }\else\@iralph{#1}\fi
}
\def\@iralph#1{\ifcase #1\or\or\or\or\or\or\or\or\or\or
     \IeC {\cyrk }\or \IeC {\cyrl }\or \IeC {\cyrm }\or \IeC {\cyrn }\or \IeC {\cyro }\or \IeC {\cyrp }\or \IeC {\cyrr }\or \IeC {\cyrs }\or \IeC {\cyrt }\or \IeC {\cyru }\or \IeC {\cyrf }\or \IeC {\cyrh }\or \IeC {\cyrc }\or \IeC {\cyrch }\or \IeC {\cyrsh }\or \IeC {\cyrshch }\or \IeC {\cyrerev }\or \IeC {\cyryu }\or \IeC {\cyrya }\else\@ctrerr
     \fi}
\def\Ralph#1{\@Ralph{\@nameuse {c@#1}}}
\def\@Ralph#1{\ifcase #1\or \IeC {\CYRA }\or \IeC {\CYRB }\or \IeC {\CYRV }\or \IeC {\CYRG }\or \IeC {\CYRD }\or \IeC {\CYRE }\or \IeC {\CYRZH }\or \IeC {\CYRZ }\or
\IeC {\CYRI }\else\@iRalph{#1}\fi
}
\def\@iRalph#1{\ifcase #1\or\or\or\or\or\or\or\or\or\or
     \IeC {\CYRK }\or \IeC {\CYRL }\or \IeC {\CYRM }\or \IeC {\CYRN }\or \IeC {\CYRO }\or \IeC {\CYRP }\or \IeC {\CYRR }\or \IeC {\CYRS }\or \IeC {\CYRT }\or \IeC {\CYRU }\or \IeC {\CYRF }\or \IeC {\CYRH }\or \IeC {\CYRC }\or \IeC {\CYRCH }\or \IeC {\CYRSH }\or \IeC {\CYRSHCH }\or \IeC {\CYREREV }\or \IeC {\CYRYU }\or \IeC {\CYRYA }\else\@ctrerr
     \fi}
%
% Теперь "русифицируем" окружение enumerate:
\def\labelenumi{\theenumi)}      % чтобы после номера шла скобка;
\def\theenumii{\ralph{enumii}}   % чтобы на втором уровне шли русские,
\def\labelenumii{\theenumii)}    % а не латинские буквы
\def\p@enumii{\theenumi}         % а это для \ref
\def\labelenumiii{{\bf--}}       % а на третьем уровне пусть будут лишь тире,
\let\theenumiii\relax            % и отдельных ссылок на него не будет
\def\p@enumiii{\theenumi\theenumii}
%
% И еще запретим вкладывать четыре enumerate друг в друга ...
%
\def\enumerate{\ifnum \@enumdepth >2% было 3, а не 2
\@toodeep\else
      \advance\@enumdepth \@ne
      \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
      {\csname label\@enumctr\endcsname}{\usecounter
        {\@enumctr}\def\makelabel##1{\hss\llap{##1}}}\fi}
%
% Теперь определим окружение rlist
% для создания списков, в которых
% \item'ы нумеруются русскими буквами
% (строчными для rlist, прописными для rlist[u])
%
\@definecounter{rlistctr}
\newif\if@rlistsnested\@rlistsnestedfalse % последняя команда вроде бы
% избыточна, но Lamport в аналогичных ситуациях так делает
\def\rlist{\@ifnextchar[{\@rlist}{\@rlist[l]}}
\def\@rlist[#1]{\if u#1\def\@tempa{R}\else\def\@tempa{r}\fi
                \if@rlistsnested\@toodeep\else
                \@rlistsnestedtrue
                \edef\therlistctr{\expandafter\noexpand\csname
                                @\@tempa alph\endcsname\noexpand\c@rlistctr}%
                \list{\labelrlist}{\usecounter
                   {rlistctr}}\fi}
\let\endrlist\endlist
\def\labelrlist{\therlistctr)}
%
% А теперь определим кавычки-"лапки"
%
\message{quotes,}
%
% !!!! Отсюда и до второго вхождения !!!! все сперто из german.sty
\def\set@low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}\dimen\z@\ht\z@
     \advance\dimen\z@ -\ht\tw@
     \setbox\z@\hbox{\lower\dimen\z@ \box\z@}\ht\z@\ht\tw@ \dp\z@\dp\tw@ }
%    (this lowers the german left quotes to the same level as the comma.)
\def\@glqq{{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
     \let\@SF\empty \fi \leavevmode
     \set@low@box{''}\box\z@\kern-.04em\@allowhyphens\@SF\relax}}
\def\glqq{\protect\@glqq}
\def\@grqq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
     \let\@SF\empty \fi \kern-.07em``\kern.07em\@SF\relax}
\def\grqq{\protect\@grqq}
\def\@glq{{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
     \let\@SF\empty \fi \leavevmode
     \set@low@box{'}\box\z@\kern-.04em\@allowhyphens\@SF\relax}}
\def\glq{\protect\@glq}
\def\@grq{\kern-.07em`\kern.07em}
\def\grq{\protect\@grq}
% !!!!
%
% А теперь определим кавычки-"елочки" и знак номера.
% Это совсем просто после того, как в шрифты добавлены
% соответствующие символы.
%
% Три следующих обозначения --- на случай,
% если русские буквы не так и не станут буквами...
\expandafter\ifx\csname flqq\endcsname\relax\chardef\flqq=192 \fi
\expandafter\ifx\csname frqq\endcsname\relax\chardef\frqq=193 \fi
\expandafter\ifx\csname No\endcsname\relax\chardef\No=194 \fi
% А это -- нормальные обозначения:
\expandafter\ifx\csname documentclass\endcsname\relax
\expandafter\ifx\csname лк\endcsname\relax\chardef\лк=192 \fi
\expandafter\ifx\csname пк\endcsname\relax\chardef\пк=193 \fi
\expandafter\ifx\csname номер\endcsname\relax\chardef\номер=194 \fi
\fi
%
% По пожеланиям трудящихся:
\expandafter\ifx\csname documentclass\endcsname\relax
\def\сегодня{\number\day\space
                \ifcase\month\or
                 января\or февраля\or марта\or апреля\or мая\or
                 июня\or июля\or августа\or сентября\or октября\or
                 ноября\or декабря\fi\space\number\year}
\fi
%\message{...finished.}
\endinput
