%\iffalse
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% disser -- LaTeX document class for dissertations.
%%
%% Copyright (c) 2004-2007 Stanislav Kruchinin
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This program is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\ProvidesFile{disser.dtx}
%<*driver>
\documentclass{ltxdoc}
\usepackage[a4paper, includehead, includefoot, mag=1000,
left=4cm, right=1.5cm, top=1cm, bottom=2cm]{geometry}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[english,russian]{babel}
\usepackage[unicode,
pdftitle = {Documented source code of the disser package},
pdfauthor = {Stanislav Kruchinin},
pdfsubject = {disser},
pdfstartview = {FitH},
pdfborder = {0 0 0},
bookmarksopen = true,
bookmarksnumbered = true,
bookmarksopenlevel = 2
]{hyperref}
\usepackage{cmap}
\let\package\textsf
\IfFileExists{pscyr.sty}{%
\usepackage{pscyr}
\renewcommand\ttdefault{cmtt}
\renewcommand\rmdefault{ftm}
}{}
\usepackage{doc}
\IfFileExists{url.sty}{\RequirePackage{url}}{\newcommand\url{\texttt}}
\hypersetup{
colorlinks = true,
colorlinks = true,
linkcolor = black, citecolor=blue,
filecolor = blue, menucolor=blue,
pagecolor = blue, urlcolor=blue
}
%\OnlyDescription % uncomment to suppress code line listing
\RecordChanges % uncomment for a change history
%\CodelineIndex\EnableCrossrefs % uncomment for command index
\MakeShortVerb{\|}
\parindent=0pt
\begin{document}
\sloppy
\DocInput{disser.dtx}
\DocInput{counters.dtx}
\DocInput{part.dtx}
\DocInput{chapter.dtx}
\DocInput{sections.dtx}
\DocInput{lists.dtx}
\DocInput{floats.dtx}
\DocInput{env.dtx}
\DocInput{page.dtx}
\DocInput{titlepage.dtx}
\DocInput{bachelor.dtx}
\DocInput{master.dtx}
\DocInput{candidate.dtx}
\DocInput{doctor.dtx}
\DocInput{autoref.dtx}
\DocInput{toc.dtx}
\DocInput{custom.dtx}
\DocInput{gost732.dtx}
\PrintChanges
\end{document}
%
% \fi
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \def\fileversion{1.0.3}
%
% \title{|disser| "--- класс \LaTeX{} для оформления диссертаций}
% \author{Станислав Кручинин\\[6pt]
% \normalsize E-mail:
% \href{mailto:stas@crypt.org.ru}{\texttt{stas@crypt.org.ru}}}
% \date{Версия \fileversion}
%
% \maketitle
%
% \begin{abstract}\noindent
% Данный документ содержит описание исходных текстов.
% Инструкции по установке смотрите в файлах |README| и |README.ru|.
% \end{abstract}
%
% \tableofcontents
%
% \section{Введение}
%
% Класс |disser| был создан в результате объединения множества дополнений и
% исправлений для |extreport|, написанных автором при оформлении
% бакалаврской и магистерской работ по физике. Основной целью являлось
% устранение одного из главных недостатков стандартных классов ---
% отсутствия возможности прямого изменения формата элементов титульного
% листа, заголовков и записей в автоматически генерируемых списках
% (содержание, список иллюстраций, список таблиц). Предполагается, что
% пользователи будут активно изменять текст в соответствии со своими
% требованиями, поэтому он разбит на несколько файлов и снабжен подробными
% комментариями.
%
% \section{Исходный текст}
%
% \begin{macrocode}
%\NeedsTeXFormat{LaTeX2e}
%\ProvidesClass{disser}[2007/06/15 Document class for dissertations.]
%\ProvidesPackage{disser}
%\ProvidesFile{bachelor.rtx}
%\ProvidesFile{master.rtx}
%\ProvidesFile{candidate.rtx}
%\ProvidesFile{doctor.rtx}
%\ProvidesFile{autoref.rtx}
%\ProvidesFile{titledefs.rtx}
%<*disser>
% \end{macrocode}
% Расширение включаемых файлов.
% \begin{macrocode}
\def\substyle@ext{.rtx}
% \end{macrocode}
% Определение условий.
% \begin{itemize}
% \item |true|, если включена опция, оставляющая одну колонку при
% двухколонном наборе.
% \begin{macrocode}
\newif\if@restonecol
% \end{macrocode}
% \item |true|, если разрешена титульная страница.
% \begin{macrocode}
\newif\if@titlepage\@titlepagetrue
% \end{macrocode}
% \item Соответствующие типы диссертаций.
% \begin{macrocode}
\newif\if@bachelor\@bachelorfalse
\newif\if@master\@masterfalse
\newif\if@candidate\@candidatefalse
\newif\if@doctor\@doctorfalse
\newif\if@autoref\@autoreffalse
% \end{macrocode}
% \item |true|, если главы начинаются только с нечетных страниц.
% \begin{macrocode}
\newif\if@openright
% \end{macrocode}
% \item |true|, если подключается |hyperref|.
% \begin{macrocode}
\newif\ifhref\hreffalse
% \end{macrocode}
% \item |true|, если файл обрабатывается pdf\LaTeX{}.
% \begin{macrocode}
\newif\ifpdf
\ifx\pdfoutput\undefined
\else
\ifx\pdfoutput\relax
\else
\ifcase\pdfoutput
\else
\pdftrue
\fi
\fi
\fi
\newif\ifsubf\subffalse
% \end{macrocode}
% \end{itemize}
% \subsection{Опции класса}
%
% Размер листов.
% \begin{macrocode}
\DeclareOption{a4paper}{%
\setlength\paperheight{297mm}
\setlength\paperwidth {210mm}
}
\DeclareOption{a5paper}{%
\setlength\paperheight{210mm}
\setlength\paperwidth {148mm}
}
\DeclareOption{b5paper}{%
\setlength\paperheight{250mm}
\setlength\paperwidth {176mm}
}
% \end{macrocode}
% Альбомная ориентация.
% \begin{macrocode}
\DeclareOption{landscape}{%
\setlength\@tempdima {\paperheight}%
\setlength\paperheight{\paperwidth}%
\setlength\paperwidth {\@tempdima}
}
% \end{macrocode}
% Размер шрифта основного текста.
% \begin{macrocode}
\newcommand\@ptsize{}
\DeclareOption{8pt} {\renewcommand\@ptsize{8}}
\DeclareOption{9pt} {\renewcommand\@ptsize{9}}
\DeclareOption{10pt}{\renewcommand\@ptsize{10}}
\DeclareOption{11pt}{\renewcommand\@ptsize{11}}
\DeclareOption{12pt}{\renewcommand\@ptsize{12}}
\DeclareOption{14pt}{\renewcommand\@ptsize{14}}
\DeclareOption{17pt}{\renewcommand\@ptsize{17}}
\DeclareOption{20pt}{\renewcommand\@ptsize{20}}
% \end{macrocode}
% Установка полей для односторонней или двухсторонней печати.
% \begin{macrocode}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
% \end{macrocode}
% Включение сообщений о строках, выходящих за поля.
% \begin{macrocode}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
% \end{macrocode}
% Печатать титульный лист или нет.
% \begin{macrocode}
\DeclareOption{titlepage} {\@titlepagetrue}
\DeclareOption{notitlepage}{\@titlepagefalse}
% \end{macrocode}
% Главы будут начинаться только на нечетной странице (будет всегда справа на
% развороте) или на первой доступной.
% \begin{macrocode}
\DeclareOption{openright}{\@openrighttrue}
\DeclareOption{openany}{\@openrightfalse}
% \end{macrocode}
% Верстка в один или в два столбца.
% \begin{macrocode}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
% \end{macrocode}
% Номера размещаются слева, а не справа от формул.
% \begin{macrocode}
\DeclareOption{leqno}{\input{leqno.clo}}
% \end{macrocode}
% Выключные формулы будут выравнены по левому краю, а не по центру.
% \begin{macrocode}
\DeclareOption{fleqn}{\input{fleqn.clo}}
% \end{macrocode}
% Использовать в тексте и формулах шрифт Times вместо Computer Modern Roman.
% \begin{macrocode}
\DeclareOption{times}{
\AtEndOfPackage{%
\usepackage{pscyr}
% \end{macrocode}
% Пакет |txfonts| необходимо подключать \textbf{после} |pscyr| для
% корректного определения символов, составленных из двух других (таких как
% $\hbar$ и $\neq$).
% \begin{macrocode}
\usepackage{txfonts}
% \end{macrocode}
% Установка Times как шрифта по умолчанию.
% \begin{macrocode}
\renewcommand{\rmdefault}{ftm}
}
}
% \end{macrocode}
% Если указана эта опция, то блоки текста в списке литературы будут печататься на новых строках и с отступом.
% \begin{macrocode}
\DeclareOption{openbib}{%
\AtEndOfPackage{%
\renewcommand\@openbib@code{%
\advance\leftmargin\bibindent
\itemindent -\bibindent
\listparindent \itemindent
\parsep \z@
}%
\renewcommand\newblock{\par}
}%
}
% \end{macrocode}
% Включение пакета |hyperref| и необходимых настроек.
% \begin{macrocode}
\DeclareOption{href}{\hreftrue}
% \end{macrocode}
% Включение пакета |subfigure| и необходимых настроек.
% \begin{macrocode}
\DeclareOption{subf}{\subftrue}
% \end{macrocode}
% Тип диссертации.
% \begin{macrocode}
\DeclareOption{bachelor}{%
\@bachelortrue\@masterfalse\@candidatefalse\@doctorfalse\@autoreffalse
}
\DeclareOption{master}{%
\@bachelorfalse\@mastertrue\@candidatefalse\@doctorfalse\@autoreffalse
}
\DeclareOption{candidate}{%
\@bachelorfalse\@masterfalse\@candidatetrue\@doctorfalse\@autoreffalse
}
\DeclareOption{doctor}{%
\@bachelorfalse\@masterfalse\@candidatefalse\@doctortrue\@autoreffalse
}
\DeclareOption{autoref}{%
\@bachelorfalse\@masterfalse\@candidatefalse\@doctorfalse\@autoreftrue
}
% \end{macrocode}
% Команды изменения регистра.
% \DescribeMacro{\MakeTextUppercase}
% \begin{macrocode}
\DeclareRobustCommand\MakeTextUppercase{%
\@uclcnotmath{\def\i{I}\def\j{J}}{##1##2}\uppercase}
\protected@edef\MakeTextUppercase#1{\MakeTextUppercase{#1}}
% \end{macrocode}
% \DescribeMacro{\MakeTextLowercase}
% \begin{macrocode}
\DeclareRobustCommand\MakeTextLowercase{%
\@uclcnotmath{}{##2##1}\lowercase}
\protected@edef\MakeTextLowercase#1{\MakeTextLowercase{#1}}
% \end{macrocode}
% Выполнение опций по умолчанию.
% \begin{macrocode}
\ExecuteOptions{a4paper,14pt,oneside,titlepage,onecolumn,final,openany}
% \end{macrocode}
% Выполнение пользовательских опций.
% \begin{macrocode}
\ProcessOptions
% \end{macrocode}
% \subsection{Настройка шрифтов}
% \subsubsection{Определение размеров}
% \begin{macrocode}
\def\EC@family#1#2#3#4#5{%
\DeclareFontShape{#1}{#2}{#3}{#4}%
{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74>%
<24.88><29.86><35.83><42.99><51.59>genb*#5}{}}
\EC@family{T1}{cmr}{m}{n}{ecrm}
\EC@family{T1}{cmr}{m}{sl}{ecsl}
\EC@family{T1}{cmr}{m}{it}{ecti}
\EC@family{T1}{cmr}{m}{sc}{eccc}
\EC@family{T1}{cmr}{bx}{n}{ecbx}
\EC@family{T1}{cmr}{b}{n}{ecrb}
\EC@family{T1}{cmr}{bx}{it}{ecbi}
\EC@family{T1}{cmr}{bx}{sl}{ecbl}
\EC@family{T1}{cmr}{bx}{sc}{ecxc}
\EC@family{T1}{cmr}{m}{ui}{ecui}
\DeclareFontShape{OT1}{cmr}{m}{n}%
{<5><6><7><8><9><10><12>gen*cmr%
<10.95>cmr10%
<14.4>cmr12%
<17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmr17}{}
\DeclareFontShape{OT1}{cmr}{m}{sl}%
{<5><6><7>cmsl8%
<8><9>gen*cmsl%
<10><10.95>cmsl10%
<12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmsl12%
}{}
\DeclareFontShape{OT1}{cmr}{m}{it}%
{<5><6><7>cmti7%
<8>cmti8%
<9>cmti9%
<10><10.95>cmti10%
<12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmti12%
}{}
\DeclareFontShape{OT1}{cmr}{m}{sc}%
{<5><6><7><8><9><10><10.95><12>%
<14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmcsc10%
}{}
\DeclareFontShape{OT1}{cmr}{m}{ui}{
<5><6><7><8><9><10><10.95><12>%
<14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmu10%
}{}
\DeclareFontShape{OT1}{cmr}{b}{n}{
<5><6><7><8><9><10><10.95><12>%
<14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmb10%
}{}
\DeclareFontShape{OT1}{cmr}{bx}{n}{
<5><6><7><8><9>gen*cmbx%
<10><10.95>cmbx10%
<12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbx12%
}{}
\DeclareFontShape{OT1}{cmr}{bx}{sl}{<5><6><7><8><9>%
<10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbxsl10%
}{}
\DeclareFontShape{OT1}{cmr}{bx}{it}{<5><6><7><8><9>%
<10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbxti10%
}{}
\input{size\@ptsize.clo}
\RequirePackage{exscale}
% \end{macrocode}
%
% \subsubsection{Старые команды изменения начертания шрифтов (без NFSS)}
%
% В текстовом режиме.
% \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape} {\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape} {\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape} {\@nomath\sc}
% \end{macrocode}
% В математическом режиме.
% \begin{macrocode}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
% \end{macrocode}
%
% \subsection{Параметры текста}
%
% Вертикальный интервал между строками. Упоминаемый здесь и далее макрос |\p@|
% определяет единицу длины. По умолчанию она равна английскому пункту (pt).
% \DescribeMacro{\lineskip}
% \DescribeMacro{\normallineskip}
% \begin{macrocode}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
% \end{macrocode}
%
% \DescribeMacro{\singlespacing}
% \DescribeMacro{\onehalfspacing}
% \DescribeMacro{\doublespacing}
% Команды задания величины межстрочного интервала.
% \begin{macrocode}
\newcommand\singlespacing {\renewcommand\baselinestretch{1}}
\newcommand\onehalfspacing{\renewcommand\baselinestretch{1.5}}
\newcommand\doublespacing {\renewcommand\baselinestretch{2}}
% \end{macrocode}
% Установка межстрочного интервала по умолчанию.
% \begin{macrocode}
\onehalfspacing\normalsize
% \end{macrocode}
% Интервал между абзацами (добавляется к межстрочному).
% \DescribeMacro{\parskip}
% \begin{macrocode}
\setlength\parskip{0\p@ \@plus \p@}
% \end{macrocode}
%
% \subsection{Параметры размещения плавающих объектов на странице}
% \subsubsection{Количество объектов}
% \begin{itemize}
% \item Максимальное количество плавающих объектов, размещаемое вверху
% страницы (при двухколонном наборе --- вверху колонки).
% \begin{macrocode}
\setcounter{topnumber}{2}
% \end{macrocode}
% \item Максимальное количество плавающих объектов, размещаемое внизу
% страницы (при двухколонном наборе --- внизу колонки).
% \begin{macrocode}
\setcounter{bottomnumber}{1}
% \end{macrocode}
% \item Максимальное количество плавающих объектов, размещаемое
% на странице (при двухколонном наборе --- в колонке).
% \begin{macrocode}
\setcounter{totalnumber}{3}
% \end{macrocode}
% \item При наборе в две колонки: максимальное количество плавающих
% объектов шириной во всю страницу, которое разрешается разместить вверху
% страницы
% \begin{macrocode}
\setcounter{dbltopnumber}{2}
% \end{macrocode}
% \end{itemize}
%
% \subsubsection{Величина места, занимаемого плавающими объектами}
% \begin{itemize}
% \item Максимальная доля страницы по высоте, которую могут занимать
% плавающие объекты, размещаемые вверху страницы.
% \DescribeMacro{\topfraction}
% \begin{macrocode}
\renewcommand\topfraction{.7}
% \end{macrocode}
% \item Максимальная доля страницы по высоте, которую могут занимать
% плавающие объекты, размещаемые внизу страницы.
% \DescribeMacro{\bottomfraction}
% \begin{macrocode}
\renewcommand\bottomfraction{.3}
% \end{macrocode}
% \item Минимальная доля страницы, которую должен занимать текст, а не
% плавающие объекты на обычной странице (к страницам, создаваемым
% \LaTeX{}'ом
% специально для размещения плавающих объектов при обработке
% необязательного аргумента |p|, это не относится).
% \DescribeMacro{\bottomfraction}
% \begin{macrocode}
\renewcommand\textfraction{.2}
% \end{macrocode}
% \item Параметр, аналогичный предыдущему, относящийся к страницам для
% плавающих объектов.
% \DescribeMacro{\floatpagefraction}
% \begin{macrocode}
\renewcommand\floatpagefraction{.5}
% \end{macrocode}
% \item Тоже, что |\topfraction|, применительно к иллюстрациям (таблицам)
% шириной в целую страницу при двухколонном наборе.
% \DescribeMacro{\dbltopfraction}
% \begin{macrocode}
\renewcommand\dbltopfraction{.7}
% \end{macrocode}
% \item Тоже, что |\floatpagefraction|, применительно к иллюстрациям
% (таблицам) шириной в целую страницу при двухколонном наборе.
% \DescribeMacro{\dblfloatpagefraction}
% \begin{macrocode}
\renewcommand\dblfloatpagefraction{.5}
% \end{macrocode}
% \end{itemize}
% Максимальный уровень вложенности заголовков, помещаемых в Содержание
% (по умолчанию вносятся только |\part|, |\chapter| и |\section|).
% \DescribeMacro{tocdepth}
% \begin{macrocode}
\setcounter{tocdepth}{1}
% \end{macrocode}
% Максимальный уровень вложенности нумеруемых секций
% (по умолчанию нумеруются |\part|, |\chapter|, |\section| и |\subsection|).
% \DescribeMacro{secnumdepth}
% \begin{macrocode}
\setcounter{secnumdepth}{2}
% \end{macrocode}
% Описание структуры постоянных частей заголовков
% \begin{itemize}
% \item в тексте,
% \DescribeMacro{\@seccntformat}
% \begin{macrocode}
\def\@seccntformat#1{%
\csname prethe#1\endcsname%
\csname the#1\endcsname%
\csname postthe#1\endcsname%
}
% \end{macrocode}
% \item в Содержании.
% \DescribeMacro{\@tocseccntformat}
% \begin{macrocode}
\def\@tocseccntformat#1{%
\csname tocprethe#1\endcsname%
\csname tocthe#1\endcsname%
\csname tocpostthe#1\endcsname%
}
% \end{macrocode}
% \end{itemize}
% Характерные величины штрафов. Штраф --- мера <<красоты>> разбиения
% абзаца на строки. Чем больше величина, тем менее красиво.
% \begin{macrocode}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
%
% \end{macrocode}