%\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}