summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/eskd/eskd.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/eskd/eskd.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/eskd/eskd.dtx')
-rw-r--r--macros/latex/contrib/eskd/eskd.dtx1071
1 files changed, 1071 insertions, 0 deletions
diff --git a/macros/latex/contrib/eskd/eskd.dtx b/macros/latex/contrib/eskd/eskd.dtx
new file mode 100644
index 0000000000..51c1594561
--- /dev/null
+++ b/macros/latex/contrib/eskd/eskd.dtx
@@ -0,0 +1,1071 @@
+% \iffalse ^^A -*- coding: koi8-r -*-
+%<*driver>
+\documentclass[a4paper,dvips]{article}
+
+\usepackage{doc}
+\usepackage{verbatim}
+\EnableCrossrefs
+%%\DisableCrossrefs
+%%\OnlyDescription
+\CodelineIndex
+
+\DoNotIndex{\-,\\,\ }
+\DoNotIndex{\addtolength}
+\DoNotIndex{\begin\bf,\bfseries}
+\DoNotIndex{\centerline,\cline,\CurrentOption,\cyrg}
+\DoNotIndex{\DeclareOption,\define@key,\draft}
+\DoNotIndex{\edef,\end}
+\DoNotIndex{\itshape}
+\DoNotIndex{\line,\linethickness}
+\DoNotIndex{\makebox}
+\DoNotIndex{\newcommand,\newsavebox}
+\DoNotIndex{\put}
+\DoNotIndex{\renewcommand}
+\DoNotIndex{\savebox}
+\DoNotIndex{\unitlength,\usebox}
+\DoNotIndex{\if,\else,\fi}
+%%\DoNotIndex{}
+%%\DoNotIndex{}
+
+\usepackage{pscyr}
+\usepackage{type1cm}
+\usepackage[T2A]{fontenc}
+\usepackage[koi8-r]{inputenc}
+\usepackage[russian]{babel}
+
+\renewcommand{\rmdefault}{far}
+
+%%\usepackage{url}
+\usepackage{graphicx}
+
+\MakeShortVerb{\|}
+
+\newcommand{\ndm}{\par\noindent\DescribeMacro}
+
+\author{Вячеслав~А.~Федоров\\
+Тольяттинский государственный университет,\\
+Центр новых информационных технологий
+}
+\title{Класс ЕСКД}
+\date{\small $ $Id: eskd.dtx,v 1.3 2004/10/15 05:34:29 fva Exp $ $}
+\begin{document}
+\DocInput{eskd.dtx}
+\end{document}
+%</driver>
+%
+%% Copyright 2004 Vjacheslav A. Fyodorov
+%
+% This program may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% 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.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% This program consists of the files eskd.dtx and example.tex
+
+% \fi
+%
+%\CheckSum{987}
+% \maketitle
+% \begin{abstract}
+% This class designed for making documents in accordance with russian
+% (and probably post USSR) standards for designers. So it documented
+% in russian. PsCyr package required.
+% \end{abstract}
+
+% Идея разработки класса возникла из необходимости создания большого
+% набора документов в формате похожем на ЕСКД. Имеющиеся на тот момент
+% шаблоны для текстовых процессоров пугали своей странной реакцией на смену
+% принтера и объем документа, поэтому все и началось.
+
+% Несмотря на название, класс не претендует на стопроцентное следование
+% ЕСКД: частично устаревшая документация и, конечно, недостаток времени
+% не позволили сделать все как должно быть,
+% но наверное, плохой класс лучше чем его отсутствие.
+
+% Итак, что мы умеем:
+% \begin{itemize}
+% \item рисовать рамки по краю страницы. Три вида --- для титульного
+% листа, первой и последующих страниц,
+% \item заполнять поля рамок,
+% \item готовить документ для двусторонней печати,
+% \item регулировать высоту рамки,
+% \item печатать титульный лист и лист изменений.
+% \end{itemize}
+
+% \section{Параметры класса}
+
+% \ndm{twoside} --- двусторонняя печать. По умолчанию
+% --- нет (односторонняя).
+% \ndm{height} --- высота рамки в миллиметрах (принтеры
+% бывают разные). По умолчанию --- 282. Значение параметра сохраняется в
+% макрокоманде \DescribeMacro{\eskdheight}|\eskdheight|.
+% \ndm{title} --- печать титульного листа. По умолчанию
+% --- нет (без титульного листа).
+% \ndm{encoding} --- кодировка текста
+% cp866,koi8-r,cp1251\dots По умолчанию --- koi8-r. Значение параметра
+% сохраняется в макрокоманде \DescribeMacro{\eskdencoding}|\eskdencoding|.
+% \ndm{year} --- год документа. По умолчанию
+% --- |\number\year| --- текущий. Значение параметра сохраняется в
+% макрокоманде \DescribeMacro{\eskdyear}|\eskdyear|.
+% \ndm{draft} --- черновик. По умолчанию
+% --- нет (чистовик). В режиме черновика на строках переполнения
+% печатаются пометки.
+
+% \section{Заполнение полей документа}
+
+% \begin{figure}[htbp]
+% \centering
+% \includegraphics[width=\textwidth]{example}
+% \caption{Поля документа}
+% \label{fig:fields}
+% \end{figure}
+
+% На рис.~\ref{fig:fields} представлен результат форматирования файла
+% содержащего команды\footnote{чистая обратная сторона титульного
+% листа не показана}:
+%
+% {\tt\verbatiminput{example}
+% }
+
+% \section{Команды формирования полей документа}
+
+% \subsection{Команды с одним параметром}
+
+% \ndm{\docName} --- ( синоним |\fI|) наименование изделия/документа ---
+% графа 1.
+% \ndm{\docSignature} --- (|\fII|) обозначение --- графа 2.
+% \ndm{\docLabel} --- (|\fIX|) графа 9.
+% \ndm{\middleLabel} --- (|\fX|) графа 10 --- недостающая должность.
+% \ndm{\docAuthor} --- (|\fXIi|) фамилия автора.
+% \ndm{\docChecker} --- (|\fXIii|) фамилия проверившего.
+% \ndm{\middleName} --- (|\fXIiii|) фамилия неизвестного.
+% \ndm{\normController} --- (|\fXIiv|) фамилия нормоконтролера.
+% \ndm{\approvedBy} --- (|\fXIv|) фамилия утвердившего.
+% \ndm{\titleTop} --- (|\tfI|) шапка титульного листа.
+% \ndm{\tfIII} --- поле согласовано/утверждаю титульного листа. Генерируется
+% командами |\titleAgreedBy| и |\titleApprovedBy|.
+% \ndm{\titleName} --- (|\tfIV|) наименование (на титульном
+% листе). По умолчанию берется из |\docName|.
+% \ndm{\titleSignature} --- (|\tfVI|) обозначение. По умолчанию
+% берется из |\docSignature|.
+% \ndm{\titleBottom} --- нижнее поле титула. По умолчанию берется год
+% из параметра класса.
+
+% \subsection{Команды с двумя параметрами}
+
+
+% \ndm{\titleApprovedBy} --- задание должности и фамилии утвердившего на
+% титульном листе. Параметры соответственно --- должность и фамилия.
+
+% \ndm{\titleAgreedBy} --- должность и фамилия согласовавшего на
+% титульном листе. Можно использовать несколько раз --- дополнительные
+% появятся внизу слева.
+
+% \ndm{\titleDesignedBy} --- должность соавтора, фамилия соавтора.
+% Можно использовать несколько раз.
+
+
+% \section{Лист регистрации изменений}
+
+% Команда \DescribeMacro{\eskdListOfChanges}|\eskdListOfChanges|
+% печатает лист регистрации изменений с новой страницы.
+
+
+% \bigskip
+% \StopEventually{Конец описания пакета ЕСКД. Вопросы задавать по
+% адресу: {\it V.Fyodorov@tltsu.ru}}
+
+
+
+% \section{Детали реализации}
+
+
+% \subsection{Идентификация}
+
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e} \ProvidesClass{eskd}[2004/10/12 a4 eskd
+format (V.Fyodorov@tltsu.ru)]
+% \end{macrocode}
+
+% \subsection{Создание и инициализация параметров}
+% двусторонняя печать:
+% \begin{macrocode}
+\newif\ifeskd@twoside
+\eskd@twosidefalse
+
+% \end{macrocode}
+% титульный лист:
+% \begin{macrocode}
+\newif\ifeskd@title
+\eskd@titlefalse
+
+% \end{macrocode}
+% высота рамки в миллиметрах по умолчанию:
+% \begin{macrocode}
+\newcommand{\eskdheight}{282}
+% \end{macrocode}
+% кодировка по умолчанию:
+% \begin{macrocode}
+\newcommand{\eskdencoding}{koi8-r}
+% \end{macrocode}
+% год документа:
+% \begin{macrocode}
+\newcommand{\eskdyear}{\number\year}
+
+% \end{macrocode}
+% толщина тонкой линии в мм:\footnote{не умею делить вещественные
+% числа, поэтому второй параметр (должен быть равен половине от первого)}
+% \begin{macrocode}
+\newcommand{\eskd@thin}{0.2}
+\newcommand{\eskd@half@thin}{0.1}
+
+% \end{macrocode}
+% ... толстой:\footnote{аналогично}
+% \begin{macrocode}
+\newcommand{\eskd@thick}{0.4}
+\newcommand{\eskd@half@thick}{0.2}
+% \end{macrocode}
+
+% \subsection{Обработка параметров класса}
+% \begin{macrocode}
+\RequirePackage{keyval}
+
+\define@key{eskd}{height}{\renewcommand{\eskdheight}{#1}}
+\define@key{eskd}{encoding}{\renewcommand{\eskdencoding}{#1}}
+\define@key{eskd}{year}{\renewcommand{\eskdyear}{#1}}
+
+\DeclareOption{title}{\eskd@titletrue}
+
+\DeclareOption{twoside}{%
+ \eskd@twosidetrue
+ \PassOptionsToClass{\CurrentOption}{article}
+ \PassOptionsToPackage{twosideshift=0pt}{geometry}
+ }
+
+\DeclareOption{draft}{\PassOptionsToClass{\CurrentOption}{article}}
+
+\DeclareOption*{\edef\@tempa{%
+ \noexpand\setkeys{eskd}{\CurrentOption}}\@tempa}
+
+\ProcessOptions\relax
+
+\LoadClass[a4paper]{article}
+% \end{macrocode}
+
+% \subsection{Дополнительные пакеты}
+
+% \begin{macrocode}
+\RequirePackage[koi8-r,\eskdencoding]{inputenc}
+\RequirePackage[russian]{babel}
+\RequirePackage[T2A]{fontenc}
+\RequirePackage{rotating}
+\RequirePackage{lastpage}
+\RequirePackage{ifthen}
+\RequirePackage{fancyhdr}
+
+\RequirePackage{pscyr}
+\renewcommand{\rmdefault}{far}
+
+\RequirePackage[left=24mm,right=11mm%
+,top=10mm,nofoot,headsep=0pt]{geometry}
+% \end{macrocode}
+
+
+% \subsection{Управление размером нижнего поля}
+
+% Команда \DescribeMacro{\set@eskd@bottom}|\set@eskd@bottom|
+% устанавливает нижнее поле текста относительно нижней рамки.
+
+% \begin{macrocode}
+\newcommand{\set@eskd@bottom}[1]{%
+ \setlength{\textheight}{\eskdheight mm}
+ \addtolength{\textheight}{-#1}
+ \addtolength{\textheight}{5 mm}
+ }
+% \end{macrocode}
+
+
+% \subsection{Вертикальная неизменяемая часть. 148x12}
+
+% Не будем дважды рисовать одно и то же. Макет
+% будет в виде текста:
+
+% \begin{verbatim}
+% +-----------------------------------------------------------------------+
+% |Инв. N подл.| Подп. и дата | Взам. инв. N | Инв. N дубл.| Подп. и дата |
+% |------------|--------------|--------------|-------------|--------------|
+% | | | | | |
+% \end{verbatim}
+
+% Повернутая на 90 градусов относительно левого нижнего угла.
+
+% \begin{macrocode}
+\newsavebox{\eskd@vertical@frame}
+
+\newcommand{\make@eskd@vertical@frame}{%
+ \unitlength 1mm %
+ \savebox{\eskd@vertical@frame}(0,0){%
+ \begin{rotate}{90}
+ \begin{picture}(0,0)(0,0)
+ \linethickness{\eskd@thick mm}
+% \end{macrocode}
+% вертикальные линии:
+% \begin{macrocode}
+%
+ \put(0,0){\line(0,1){12}}
+ \put(25,0){\line(0,1){12}}
+ \put(60,0){\line(0,1){12}}
+ \put(85,0){\line(0,1){12}}
+ \put(110,0){\line(0,1){12}}
+ \put(145,0){\line(0,1){12}}
+% \end{macrocode}
+% углы:
+% \begin{macrocode}
+ \put(0,12){\line(0,1){\eskd@half@thick}}
+ \put(145,12){\line(0,1){\eskd@half@thick}}
+% \end{macrocode}
+% горизонтальные линии:
+% \begin{macrocode}
+%
+ \put(0,7){\line(1,0){145}}
+ \put(0,12){\line(1,0){145}}
+% \end{macrocode}
+% текст:
+% \begin{macrocode}
+%
+ \put(12.5,9.5){\makebox(0,0){\itshape
+ \textar{Инв. \textnumero\ подл.}}}
+ \put(42.5,9.5){\makebox(0,0){\itshape
+ \textar{Подп. и дата}}}
+ \put(72.5,9.5){\makebox(0,0){\itshape
+ \textar{Взам. инв. \textnumero}}}
+ \put(97.5,9.5){\makebox(0,0){\itshape
+ \textar{Инв. \textnumero\ дубл.}}}
+ \put(127.5,9.5){\makebox(0,0){\itshape
+ \textar{Подп. и дата}}}
+ %
+ \end{picture}%
+ \end{rotate}
+ }}
+
+% \end{macrocode}
+
+% \subsection{Граница поля с основанием в левом верху.}
+
+% \begin{verbatim}
+%
+% O----------------------------------+
+% | ^ |
+% | | |
+% | \eskdheight mm |
+% | | |
+% |<-------- 185 mm ----|----------->|
+% | | |
+% | v |
+% +----------------------------------+
+%
+% \end{verbatim}
+% \begin{macrocode}
+\newsavebox{\eskd@border}
+
+\newcommand{\make@eskd@border}{%
+ \savebox{\eskd@border}(0,0){%
+ \unitlength 1mm
+ \begin{picture}(0,0)(0,\eskdheight)
+ \linethickness{\eskd@thick mm}
+% \end{macrocode}
+% рамка:
+% \begin{macrocode}
+ \put(0,0){\line(1,0){185}}
+ \put(0,\eskdheight){\line(1,0){185}}
+ \put(0,0){\line(0,1){\eskdheight}}
+ \put(185,0){\line(0,1){\eskdheight}}
+% \end{macrocode}
+% углы:
+% \begin{macrocode}
+ \put(-\eskd@half@thick,0){\line(1,0){\eskd@half@thick}}
+ \put(-\eskd@half@thick,\eskdheight){\line(1,0){\eskd@half@thick}}
+ \put(185,0){\line(1,0){\eskd@half@thick}}
+ \put(185,\eskdheight){\line(1,0){\eskd@half@thick}}
+ \end{picture}
+}}
+
+
+% \end{macrocode}
+
+% \subsection{Надпись}
+%
+% Надпись общую разобьем на три куска из которых будем складывать
+% четную/нечетную и общую часть.
+%
+% \subsubsection{Левая часть надписи.}
+% \begin{verbatim}
+% ------+------+----------+-------+-----
+% | | | |
+% ------+------+----------+-------+-----
+% | | | |
+% ------+------+----------+-------+-----
+% Изм. | Лист | N докум. | Подп. | Дата
+% \end{verbatim}
+% \begin{macrocode}
+
+\newsavebox{\eskd@common@left}
+
+\newcommand{\make@eskd@common@left}{%
+ \savebox{\eskd@common@left}(0,0){%
+ \unitlength 1mm %
+ \begin{picture}(0,0)(0,0)
+ \linethickness{\eskd@thick mm}
+% \end{macrocode}
+% толстые вертикальные:
+% \begin{macrocode}
+%
+ \put(7,0){\line(0,1){15}}
+ \put(17,0){\line(0,1){15}}
+ \put(40,0){\line(0,1){15}}
+ \put(55,0){\line(0,1){15}}
+% \end{macrocode}
+% толстые горизонтальные:
+% \begin{macrocode}
+%
+ \put(0,5){\line(1,0){65}}
+ \put(0,15){\line(1,0){65}}
+% \end{macrocode}
+% тонкие горизонтальные:
+% \begin{macrocode}
+%
+ \linethickness{\eskd@thin mm}
+ \put(0,10){\line(1,0){65}}
+% \end{macrocode}
+% текст:
+% \begin{macrocode}
+%
+ \put(3.5,2.5){\makebox(0,0){\footnotesize\itshape\textar{Изм.}}}
+ \put(12,2.5){\makebox(0,0){\itshape\textar{Лист}}}
+ \put(28.5,2.5){\makebox(0,0){\itshape
+ \textar{\textnumero\ докум.}}}
+ \put(47.5,2.5){\makebox(0,0){\itshape\textar{Подп.}}}
+ \put(60,2.5){\makebox(0,0){\small\itshape\textar{Дата}}}
+%
+ \end{picture}
+ }}
+% \end{macrocode}
+
+% \subsubsection{Дырка (поле 2). 110x15}
+% \begin{verbatim}
+% +--------------+
+% | |
+% | |
+%
+% \end{verbatim}
+
+% \begin{macrocode}
+%
+\newsavebox{\eskd@common@hole}
+%
+\newcommand{\make@eskd@common@hole}{%
+ \savebox{\eskd@common@hole}(0,0){%
+ \unitlength 1mm
+ \begin{picture}(0,0)(0,0)
+ \linethickness{\eskd@thick mm}
+% \end{macrocode}
+% толстые вертикальные:
+% \begin{macrocode}
+%
+ \put(0,0){\line(0,1){15}}
+ \put(110,0){\line(0,1){15}}
+% \end{macrocode}
+% толстые горизонтальные:
+% \begin{macrocode}
+%
+ \put(0,15){\line(1,0){110}}
+ %
+ \end{picture}
+ }}
+% \end{macrocode}
+
+% \subsubsection{Лист/страница}
+
+% \begin{macrocode}
+
+\newsavebox{\eskd@common@page}
+
+\newcommand{\make@eskd@common@page}{%
+ \savebox{\eskd@common@page}(0,0){%
+ \unitlength 1mm
+ \begin{picture}(0,0)(0,0)
+ \linethickness{\eskd@thick mm}
+% \end{macrocode}
+% толстые горизонтальные:
+% \begin{macrocode}
+%
+ \put(0,15){\line(1,0){10}}
+ \put(0,8){\line(1,0){10}}
+ %
+ \end{picture}
+ }}
+
+% \end{macrocode}
+
+% \subsection{Обычная страница}
+
+% команда создающая обычный стиль страницы
+% \begin{macrocode}
+\newcommand{\make@eskd@common@style}{%
+ \newsavebox{\eskd@common@list}
+% \end{macrocode}
+% надпись перед номером страницы:
+% \begin{macrocode}
+ \savebox{\eskd@common@list}{\itshape
+ \textar{\ifeskd@twoside Стр.\else Лист\fi}}
+%
+% \end{macrocode}
+% надпись внизу страницы:
+% \begin{macrocode}
+ \newsavebox{\eskd@common@gost}
+ \savebox{\eskd@common@gost}{\scriptsize\textar{ГОСТ 2.104-68
+ Форма 2\ifeskd@twoside б\else a\fi}}
+% \end{macrocode}
+% обозначение:
+% \begin{macrocode}
+ \newsavebox{\eskd@common@signature}
+ \savebox{\eskd@common@signature}{{\inputencoding{\eskdencoding}\eskd@ii}}
+%
+% \end{macrocode}
+% собственно стиль:
+% \begin{macrocode}
+ \fancypagestyle{common}{%
+ \fancyhf{}
+ \fancyhead[L]{%
+ \unitlength 1mm
+ \begin{picture}(0,0)(3,-6)
+ \put(0,0){\usebox{\eskd@border}}
+ \put(0,-\eskdheight){\usebox{\eskd@vertical@frame}}
+ \put(0,-\eskdheight){\usebox{\eskd@common@left}}
+ \put(65,-\eskdheight){\usebox{\eskd@common@hole}}
+ \put(175,-\eskdheight){\usebox{\eskd@common@page}}
+ \put(0,-\eskdheight){\begin{picture}(0,0)
+ \put(180,4){\makebox(0,0){\large\textbf{\textar{\thepage}}}}
+ \put(120,7.5){\makebox(0,0){\usebox{\eskd@common@signature}}}
+ \put(180,11.5){\makebox(0,0){\usebox{\eskd@common@list}}}
+ \put(185,\ifeskd@twoside-1\else0\fi){\makebox(0,0)[rt]{%
+ \usebox{\eskd@common@gost}}}
+ \end{picture}}
+ \end{picture}
+ }
+ \ifeskd@twoside
+ \fancyhead[LE]{%
+ \unitlength 1mm
+ \begin{picture}(0,0)(3,-6)
+ \put(0,0){\usebox{\eskd@border}}
+ \put(120,-\eskdheight){\usebox{\eskd@common@left}}
+ \put(10,-\eskdheight){\usebox{\eskd@common@hole}}
+ \put(0,-\eskdheight){\usebox{\eskd@common@page}}
+ \put(0,-\eskdheight){\begin{picture}(0,0)
+ \put(5,4){\makebox(0,0){\large\textbf{\textar{\thepage}}}}
+ \put(65,7.5){\makebox(0,0){\usebox{\eskd@common@signature}}}
+ \put(5,11.5){\makebox(0,0){\usebox{\eskd@common@list}}}
+ \put(185,\ifeskd@twoside-1\else0\fi){\makebox(0,0)[rt]{%
+ \usebox{\eskd@common@gost}}}
+ \end{picture}}
+ \end{picture}
+ }
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}}
+}
+
+
+% \end{macrocode}
+
+% \subsection{Стиль первого листа}
+
+% \begin{macrocode}
+
+\newcommand{\make@eskd@first@style}{%
+ \newsavebox{\eskd@first@text}
+ \savebox{\eskd@first@text}{%
+ \unitlength 1mm
+ \begin{picture}(0,0)(0,0)
+ \put(185,-1){\makebox(0,0)[rt]{\scriptsize
+ ГОСТ 2.104-68 Форма 2}}
+ \put(3.5,27.5){\makebox(0,0){\footnotesize\itshape Изм.}}
+ \put(12,27.5){\makebox(0,0){\itshape Лист}}
+ \put(28.5,27.5){\makebox(0,0){\itshape\textnumero\ докум.}}
+ \put(47.5,27.5){\makebox(0,0){\itshape Подп.}}
+ \put(60,27.5){\makebox(0,0){\small\itshape Дата}}
+%
+ \put(8.5,22.5){\makebox(0,0){\itshape Разраб.}}
+ \put(8.5,17.5){\makebox(0,0){\itshape Пров.}}
+ \put(8.5,7.5){\makebox(0,0){\itshape Н. контр.}}
+ \put(8.5,2.5){\makebox(0,0){\itshape Утв.}}
+%
+ \put(142.5,22.5){\makebox(0,0){\itshape Лит.}}
+ \put(157.5,22.5){\makebox(0,0){\itshape
+ \ifeskd@twoside Стр.\else Лист\fi}}
+ \put(175,22.5){\makebox(0,0){\itshape
+ \ifeskd@twoside Страниц\else Листов\fi}}
+
+ \end{picture}
+ }
+%
+ \fancypagestyle{first}{%
+ \fancyhf{}
+ \fancyhead[L]{%
+ \unitlength 1mm
+ \begin{picture}(0,0)(3,-6)
+ \put(0,0){\usebox{\eskd@border}}
+ \put(0,-\eskdheight){\usebox{\eskd@vertical@frame}}
+ \put(0,-\eskdheight){\makebox(0,0){%
+ \unitlength 1mm
+ \begin{picture}(0,0)(0,0)
+ \put(157.5,17.5){\makebox(0,0){\ifthenelse
+ {\pageref{LastPage}=1}{}{\thepage}}}
+ \put(175,17.5){\makebox(0,0){\pageref{LastPage}}}
+ \put(18,22.5){\makebox(0,0)[l]{\eskd@xiI}}
+ \put(18,17.5){\makebox(0,0)[l]{\eskd@xiII}}
+ \put(18,12.5){\makebox(0,0)[l]{\eskd@xiIII}}
+ \put(18,7.5){\makebox(0,0)[l]{\eskd@xiIV}}
+ \put(18,2.5){\makebox(0,0)[l]{\eskd@xiV}}
+ \put(67,12.5){\makebox(0,0)[l]{%
+ \parbox{66mm}{\large\raggedright\eskd@i}}}
+ \put(125,32.5){\makebox(0,0){\LARGE\eskd@ii}}
+ \put(160,7.5){\makebox(0,0){\eskd@ix}}
+ \put(8.5,12.5){\makebox(0,0){\itshape\eskd@x}}
+ \linethickness{\eskd@thick mm}
+% \end{macrocode}
+% vertical lines thick:
+% \begin{macrocode}
+%
+ \put(7,25){\line(0,1){15}}
+ \put(17,0){\line(0,1){40}}
+ \put(40,0){\line(0,1){40}}
+ \put(55,0){\line(0,1){40}}
+ \put(65,0){\line(0,1){40}}
+ \put(135,0){\line(0,1){25}}
+ \put(140,15){\line(0,1){5}}
+ \put(145,15){\line(0,1){5}}
+ \put(150,15){\line(0,1){10}}
+ \put(165,15){\line(0,1){10}}
+% \end{macrocode}
+% horizontal lines thick:
+% \begin{macrocode}
+%
+ \put(0,40){\line(1,0){185}}
+ \put(0,30){\line(1,0){65}}
+ \put(0,25){\line(1,0){185}}
+ \put(135,20){\line(1,0){50}}
+ \put(135,15){\line(1,0){50}}
+% \end{macrocode}
+% horizontal lines thin:
+% \begin{macrocode}
+%
+ \linethickness{\eskd@thin mm}
+ \put(0,35){\line(1,0){65}}
+ \multiput(0,5)(0,5){4}{\line(1,0){65}}
+% \end{macrocode}
+% labels:
+% \begin{macrocode}
+%
+ \put(0,0){\usebox{\eskd@first@text}}
+ %
+ \end{picture}
+ }}
+ \end{picture}
+ }
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}}
+ }
+% \end{macrocode}
+% \subsection{Стиль титульного листа}
+% \begin{macrocode}
+
+\newcommand{\make@eskd@title@style}{%
+ \newsavebox{\eskd@title@text}
+ \savebox{\eskd@title@text}{\scriptsize\textar{Ф. 1288}}
+ \newsavebox{\eskd@agr}
+ \savebox{\eskd@agr}{\usefont{T2A}{far}{b}{n}\Large Согласовано}
+ \newsavebox{\eskd@appr}
+ \savebox{\eskd@appr}{\usefont{T2A}{far}{b}{n}\Large Утверждаю}
+ \fancypagestyle{title}{%
+ \fancyhf{}
+ \fancyhead[L]{%
+ \unitlength 1mm
+ \begin{picture}(0,0)(3,-6)
+ \put(0,0){\usebox{\eskd@border}}
+ \put(0,-\eskdheight){\usebox{\eskd@vertical@frame}}
+ \put(185,-\eskdheight){%
+ \begin{picture}(0,0)
+ \put(0,-1){\makebox(0,0)[rt]{\usebox{\eskd@title@text}}}
+ \end{picture}}
+ \end{picture}
+ }
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}}
+ }
+% \end{macrocode}
+
+% \subsection{Определение команд заполнения полей}
+
+% \subsubsection{Наименование изделия/документа --- графа 1}
+% \DescribeMacro{\docName}\DescribeMacro{\eskd@i}
+% \begin{macrocode}
+\newcommand{\eskd@i}{}
+\newcommand{\docName}[1]{\renewcommand{\eskd@i}{#1}}
+% \end{macrocode}
+% синоним :\DescribeMacro{\fI}
+% \begin{macrocode}
+\newcommand{\fI}{\docName}
+
+% \end{macrocode}
+% \subsubsection{Обозначение - графа 2.}
+% \begin{macrocode}
+\newcommand{\eskd@ii}{}
+\newcommand{\docSignature}[1]{\renewcommand{\eskd@ii}{#1}}
+% \end{macrocode}
+% синоним :
+% \begin{macrocode}
+\newcommand{\fII}[1]{\renewcommand{\eskd@ii}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Графа 9.}
+% \begin{macrocode}
+\newcommand{\eskd@ix}{}
+\newcommand{\fIX}[1]{\renewcommand{\eskd@ix}{#1}}
+\newcommand{\docLabel}[1]{\renewcommand{\eskd@ix}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Графа 10 - недостающая должность.}
+% \begin{macrocode}
+\newcommand{\eskd@x}{}
+\newcommand{\middleLabel}[1]{\renewcommand{\eskd@x}{#1}}
+\newcommand{\fX}[1]{\renewcommand{\eskd@x}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Фамилия автора.}
+% \begin{macrocode}
+\newcommand{\eskd@xiI}{}
+\newcommand{\docAuthor}[1]{\renewcommand{\eskd@xiI}{#1}}
+% \end{macrocode}
+% синоним :
+% \begin{macrocode}
+\newcommand{\fXIi}[1]{\renewcommand{\eskd@xiI}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Фамилия проверившего.}
+% \begin{macrocode}
+\newcommand{\eskd@xiII}{}
+\newcommand{\docChecker}[1]{\renewcommand{\eskd@xiII}{#1}}
+% \end{macrocode}
+% синоним :
+% \begin{macrocode}
+\newcommand{\fXIii}[1]{\renewcommand{\eskd@xiII}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Фамилия неизвестного.}
+% \begin{macrocode}
+\newcommand{\eskd@xiIII}{}
+\newcommand{\middleName}[1]{\renewcommand{\eskd@xiIII}{#1}}
+\newcommand{\fXIiii}[1]{\renewcommand{\eskd@xiIII}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Фамилия нормоконтролера.}
+% \begin{macrocode}
+\newcommand{\eskd@xiIV}{}
+\newcommand{\normController}[1]{\renewcommand{\eskd@xiIV}{#1}}
+\newcommand{\fXIiv}[1]{\renewcommand{\eskd@xiIV}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Фамилия утвердившего.}
+% \begin{macrocode}
+\newcommand{\eskd@xiV}{}
+\newcommand{\approvedBy}[1]{\renewcommand{\eskd@xiV}{#1}}
+\newcommand{\fXIv}[1]{\renewcommand{\eskd@xiV}{#1}}
+
+% \end{macrocode}
+
+% \subsection{Команды заполнения титульного листа.}
+% \begin{macrocode}
+\newcommand{\eskd@title@i}{}
+\newcommand{\titleTop}[1]{\renewcommand{\eskd@title@i}{#1}}
+\newcommand{\tfI}[1]{\renewcommand{\eskd@title@i}{#1}}
+
+% \end{macrocode}
+% нужен <утверждаю>:
+% \begin{macrocode}
+\newif\ifeskd@title@appr \eskd@title@apprfalse
+% \end{macrocode}
+% нужен <согласовано>:
+% \begin{macrocode}
+\newif\ifeskd@title@agr \eskd@title@agrfalse
+
+% \end{macrocode}
+% список разработчиков (дополнительно):
+% \begin{macrocode}
+\newcommand{\eskd@des@list}{}
+
+% \end{macrocode}
+% должность утвердившего:
+% \begin{macrocode}
+\newcommand{\eskd@title@iii@right@position}{}
+% \end{macrocode}
+% фамилия утвердившего:
+% \begin{macrocode}
+\newcommand{\eskd@title@iii@right@name}{}
+\newcommand{\titleApprovedBy}[2]{%
+ \renewcommand{\eskd@title@iii@right@position}{#1}
+ \renewcommand{\eskd@title@iii@right@name}{#2}
+ \eskd@title@apprtrue
+ }
+
+% \end{macrocode}
+% должность согласовавшего:
+% \begin{macrocode}
+\newcommand{\eskd@title@iii@left@position}{}
+% \end{macrocode}
+% фамилия согласовавшего:
+% \begin{macrocode}
+\newcommand{\eskd@title@iii@left@name}{}
+% \end{macrocode}
+% \subsubsection{Список согласовавших (дополнительно).}
+% \begin{macrocode}
+\xdef\eskd@agr@list{}
+\newcommand{\titleAgreedBy}[2]{%
+% \end{macrocode}
+% добавить в дополнительный список:
+% \begin{macrocode}
+ \ifeskd@title@agr
+ \xdef\eskd@agr@list{\eskd@agr@list#1\par\vrule
+ depth 0.8pt height -0.4pt width31mm~#2\par
+ ''\vrule depth 0.8pt height -0.4pt width8mm''\vrule
+ depth 0.8pt height -0.4pt width20mm\ \eskdyear\ \cyrg\par\vskip 3mm}
+ \else
+ \renewcommand{\eskd@title@iii@left@position}{#1}
+ \renewcommand{\eskd@title@iii@left@name}{#2}
+ \eskd@title@agrtrue
+ \fi
+ }
+
+% \end{macrocode}
+% \subsubsection{Список титульных авторов.}
+% \begin{macrocode}
+\xdef\eskd@author@list{}
+\newcommand{\titleDesignedBy}[2]{%
+ \xdef\eskd@author@list{\eskd@author@list#1\par\vrule
+ depth 0.8pt height -0.4pt width31mm~#2\par
+ ''\vrule depth 0.8pt height -0.4pt width8mm''\vrule
+ depth 0.8pt height -0.4pt width20mm\ \eskdyear\ \cyrg\par\vskip 3mm}
+ }
+
+\newcommand{\tfIII}{\hyphenpenalty=10000 %
+ \begin{tabular}{@{\hspace{5mm}}p{80mm}@{\hspace{10mm}}p{80mm}}%
+ \ifeskd@title@agr \hspace{15mm}\usebox{\eskd@agr}\fi &%
+ \ifeskd@title@appr \hspace{15mm}\usebox{\eskd@appr}\fi \\[3mm]
+ \ifeskd@title@agr{\raggedright \eskd@title@iii@left@position}\fi &%
+ \ifeskd@title@appr{\raggedright
+ \eskd@title@iii@right@position}\fi\\[3mm]
+ \ifeskd@title@agr \rule[-1mm]{31mm}{0.4pt}~%
+ \eskd@title@iii@left@name \fi &%
+ \ifeskd@title@appr \rule[-1mm]{31mm}{0.4pt}~%
+ \eskd@title@iii@right@name \fi\\[3mm]
+ \ifeskd@title@agr ''\rule[-1mm]{8mm}{0.4pt}''\rule[-1mm]{20mm}{0.4pt}
+ \eskdyear\ \cyrg\fi &%
+ \ifeskd@title@appr ''\rule[-1mm]{8mm}{0.4pt}''\rule[-1mm]{20mm}{0.4pt}
+ \eskdyear\ \cyrg\fi
+ \end{tabular}
+ }
+
+% \end{macrocode}
+% \subsubsection{Наименование.}
+% \begin{macrocode}
+\newcommand{\eskd@title@iv}{\eskd@i}
+\newcommand{\titleName}[1]{\renewcommand{\eskd@title@iv}{#1}}
+\newcommand{\tfIV}[1]{\renewcommand{\eskd@title@iv}{#1}}
+
+% \end{macrocode}
+% \subsubsection{Обозначение.}
+% \begin{macrocode}
+\newcommand{\eskd@title@vi}{\eskd@ii}
+\newcommand{\titleSignature}[1]{\renewcommand{\eskd@title@vi}{#1}}
+\newcommand{\tfVI}[1]{\renewcommand{\eskd@title@vi}{#1}}
+
+% \end{macrocode}
+
+% \subsubsection{Год документа.}
+
+% \begin{macrocode}
+\newcommand{\eskd@title@bottom}{\eskdyear}
+\newcommand{\titleBottom}[1]{\renewcommand{\eskd@title@bottom}{#1}}
+
+% \end{macrocode}
+% \subsection{Создание титульного листа.}
+% \begin{macrocode}
+\renewcommand{\maketitle}{}
+\newcommand{\eskd@maketitle}{%
+\thispagestyle{title}
+% \end{macrocode}
+% следующая страница первая:
+% \begin{macrocode}
+\set@eskd@bottom{55mm}
+\usefont{T2A}{far}{m}{n}
+% \end{macrocode}
+% увеличить нормальный шрифт:
+% \begin{macrocode}
+\large
+% \end{macrocode}
+% пропуск перед шапкой:
+% \begin{macrocode}
+\vspace*{1mm}
+% \end{macrocode}
+% \subsubsection{Шапка титульного листа.}
+% \begin{macrocode}
+\begin{center}
+% \end{macrocode}
+% жирным и побольше:
+% \begin{macrocode}
+\bfseries\Large
+\eskd@title@i
+% \end{macrocode}
+% конец шапки:
+% \begin{macrocode}
+\end{center}
+% \end{macrocode}
+% растягивающийся верт. пропуск :
+% \begin{macrocode}
+\vfill
+% \end{macrocode}
+% \subsubsection{Поле "утверждаю".}
+% \begin{macrocode}
+%
+\centerline{\raisebox{0mm}[0mm][0mm]{\tfIII}}
+% \end{macrocode}
+% растягивающийся верт. пропуск:
+% \begin{macrocode}
+\vfill
+% \end{macrocode}
+% \subsubsection{Название.}
+% начало :
+% \begin{macrocode}
+\begin{center}
+% \end{macrocode}
+% жирным и побольше:
+% \begin{macrocode}
+{\bfseries\Large
+\MakeUppercase{\eskd@title@iv}}\mbox{}\\[3mm]
+{\large\MakeUppercase{\eskd@title@vi}}
+% \end{macrocode}
+% конец названия:
+% \begin{macrocode}
+\end{center}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \end{macrocode}
+% растягивающийся верт. пропуск:
+% \begin{macrocode}
+\vfill
+% \end{macrocode}
+% \subsubsection{Начало полей согласования/авторов.}
+% \begin{macrocode}
+%
+\unitlength\textwidth\begin{picture}(0,0)
+\put(0,0){\makebox(0,0)[l]{\hyphenpenalty=10000 %
+\begin{tabular}{@{\hspace{5mm}}p{80mm}@{\hspace{10mm}}p{80mm}}
+\raggedright\eskd@agr@list &{\raggedright\eskd@author@list}\\
+\end{tabular}
+}}
+\end{picture}
+% \end{macrocode}
+% растягивающийся верт. пропуск:
+% \begin{macrocode}
+\vfill\vfill
+% \end{macrocode}
+% \subsubsection{Год документа.}
+% \begin{macrocode}
+\begin{center}
+ \eskd@title@bottom
+\end{center}
+% \end{macrocode}
+% \subsubsection{Завершение титульного листа.}
+% \begin{macrocode}
+\newpage
+
+\ifeskd@twoside
+\thispagestyle{empty}
+\cleardoublepage
+\fi
+
+\thispagestyle{first}
+\set@eskd@bottom{30mm}
+
+}
+
+
+\set@eskd@bottom{\ifeskd@title15mm\else55mm\fi}
+
+% \end{macrocode}
+
+% \subsection{Выполнить настройки зависящие от параметров.}
+
+% \begin{macrocode}
+
+\AtBeginDocument{%
+
+ \inputencoding{koi8-r}
+
+% \end{macrocode}
+% \subsubsection{Лист регистрации изменений.}
+% \begin{macrocode}
+\newcommand{\eskdListOfChanges}{\newpage
+{\small\noindent
+\begin{tabular}{|c|*{7}{p{1.5cm}|}c|c|}
+ \multicolumn{10}{c}{\Large\bf Лист регистрации изменений}\\\hline
+& \multicolumn{4}{c|}{Номера листов
+(страниц)}&&&&&\\\cline{2-5}
+Изм.&из\-ме\-нен\-ных&за\-ме\-нен\-ных&но\-вых&%
+ан\-ну\-ли\-ро\-ван\-ных&
+Всего листов (страниц)
+в докум.&\No\ докум.&Вхо\-дя\-щий \No\
+сопроводительного докум. и дата&Подпись&Дата\\\hline
+\vbox{\vspace{\eskdheight mm}\vspace{-6cm}}&&&&&&&&&\\\hline
+\end{tabular}
+}
+}
+
+% \end{macrocode}
+% \subsubsection{Выполнить установки.}
+% \begin{macrocode}
+
+ \make@eskd@border
+ \make@eskd@vertical@frame
+
+ \make@eskd@common@left
+ \make@eskd@common@hole
+ \make@eskd@common@page
+
+ \make@eskd@first@style
+ \make@eskd@title@style
+ \make@eskd@common@style
+
+ \pagestyle{common}
+ \inputencoding{\eskdencoding}
+ \ifeskd@title\eskd@maketitle
+ \else\thispagestyle{first}\set@eskd@bottom{30mm}\fi
+
+ \renewcommand{\make@eskd@border}{}
+ \renewcommand{\make@eskd@vertical@frame}{}
+ \renewcommand{\make@eskd@common@left}{}
+ \renewcommand{\make@eskd@common@hole}{}
+ \renewcommand{\make@eskd@common@page}{}
+ \renewcommand{\make@eskd@first@style}{}
+ \renewcommand{\make@eskd@title@style}{}
+ \renewcommand{\make@eskd@common@style}{}
+ \renewcommand{\eskd@maketitle}{}
+ \relax
+}
+% \end{macrocode}
+% \Finale
+% \clearpage\setcounter{IndexColumns}{2}
+% \addcontentsline{toc}{section}{Index}\PrintIndex
+% \clearpage\tableofcontents