diff options
-rw-r--r-- | Master/texmf-dist/source/latex/eskd/eskd.dtx | 1071 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/eskd/eskd.ins | 13 |
2 files changed, 1084 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/eskd/eskd.dtx b/Master/texmf-dist/source/latex/eskd/eskd.dtx new file mode 100644 index 00000000000..51c15945613 --- /dev/null +++ b/Master/texmf-dist/source/latex/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 diff --git a/Master/texmf-dist/source/latex/eskd/eskd.ins b/Master/texmf-dist/source/latex/eskd/eskd.ins new file mode 100644 index 00000000000..71a97115858 --- /dev/null +++ b/Master/texmf-dist/source/latex/eskd/eskd.ins @@ -0,0 +1,13 @@ +%<*ins> +\input docstrip +\askforoverwritefalse +\nopreamble +\nopostamble +\generate{ + \file{eskd.cls}{\from{eskd.dtx}{}} + } +\endbatchfile +%</ins> +% Local Variables: +% mode: tex +% End: |