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