% Copyright (C) 2015 Yuri Stepanenko stepanenkoyra@gmail.com % This program is free software; you can redistribute it % and/or modify it under the terms of the GNU Library General Public % License as published by the Free Software Foundation; either version 2 % of the License, or (at your option) any later version. % The GNU LIBICONV Library 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. See the GNU % Library General Public License for more details. % You should have received a copy of the GNU Library General Public % License along with the 'eskdi'; see the file License.gpl. % If not, write to the Free Software Foundation, Inc., 59 Temple Place - % Suite 330, Boston, MA 02111-1307, USA. \NeedsTeXFormat{LaTeX2e} \RequirePackage{ifthen} \RequirePackage{eso-pic} \RequirePackage{everyshi} \RequirePackage{lastpage} \ProvidesPackage{G2-104-68} [2015/02/02 v3.0 GOST Frames] \newcounter{gostszv} \newcounter{gostszvv} \newlength{\gostorigline}% \newlength{\gostadnomin}% \newsavebox{\newgostboxik}% \newcounter{StampACounter} % begin{Для вывода текста в бокс с указанными координатами углов %1,2 координаты x,y левого нижнего угла, 3,4 правого верхнего угла % 5 выравнивание 6 текст} \def\spbox#1#2#3#4#5#6 {% \put(#1,#2) {% \setcounter{gostszv}{#3}% \setcounter{gostszvv}{#4}% \setcounter{gostszv}{\value{gostszv}-#1}% \setcounter{gostszvv}{\value{gostszvv}-#2}% \makebox(\value{gostszv},\value{gostszvv})[#5]{#6}% }% } \def\spformedbox#1#2#3#4#5#6 {% \setcounter{gostszv}{#3}% \setcounter{gostszvv}{#4}% \setcounter{gostszv}{\value{gostszv}-#1}% \setcounter{gostszvv}{\value{gostszvv}-#2}% \setlength{\gostadnomin}{#3pt - #1pt}%ширина поля {% \sbox{\newgostboxik}{#6}% \settowidth{\gostorigline}{\usebox{\newgostboxik}}% \put(#1,#2) {% \ifthenelse{\lengthtest{\gostorigline<\gostadnomin}}% { \makebox(\value{gostszv},\value{gostszvv})[#5]% {\usebox{\newgostboxik}} }% {\makebox(\value{gostszv},\value{gostszvv})[#5]{\resizebox{\gostadnomin}{\height}{\usebox{\newgostboxik}}}}% }% }% } % Вывод текста в вертикальный бокс \def\vspbox#1#2#3#4#5#6 {% \put(#1,#2) {% \setcounter{gostszv}{#3}% \setcounter{gostszvv}{#4}% \setcounter{gostszv}{\value{gostszv}-#1}% \setcounter{gostszvv}{\value{gostszvv}-#2}% \begin{sideways}% \makebox(\value{gostszv},\value{gostszvv})[#5]{#6}% \end{sideways}% }% }% % end{Для вывода текста в бокс с указанными координатами углов %1,2 координаты x,y левого нижнего угла, 3,4 правого верхнего угла % 5 выравнивание 6 текст} % begin{Верхний колонтитул. Заполняем рамки текстом. Координаты задаются в pt, соответствующие координатам в просмотре} \renewcommand{\@oddhead}% { \ifx\gostMakeStamp\undefined \raisebox{0pt}[\headheight][0pt] { \vbox { \hbox to \textwidth{\parbox[c][1.2\height]{0.4\textwidth}{\textbf{\@gosttitleobjectI} \hfil} \parbox{0.02\textwidth}{\ } \parbox[c][1.2\height]{0.58\textwidth}{\@gostCurrentSection \hfil}} {\color{white} \hrule height 0.4mm } % Без этого текст наползает на подчёркивание \hrule height 1.2mm } } \unitlength=1pt \StampFormatI \vbox { \hrule height 1.2mm {\color{white} \hrule height 0.4mm } % Без этого текст наползает на надчёркивание \hbox to \textwidth{\parbox[c][1.2\height]{0.3\textwidth}{\@gostDATE \hfil} \parbox[c][1.2\height]{0.6\textwidth}{\@gosttitledocument \hfil} \parbox[c][1.2\height]{0.1\textwidth}{\hfil \thepage (\pageref{LastPage})}} } \end{picture} \else \unitlength=1mm \ifx\MaketitleDef\undefined \ifnum \thepage = 1 \else % Последующие страницы \PageNumFormat \fi \else \ifnum \thepage = 1 \else \ifnum \thepage = 2 \else % Последующие страницы \PageNumFormat \fi \fi \fi \fi } % end{Верхний колонтитул. Заполняем рамки текстом. Координаты задаются в pt, соответствующие координатам в просмотре} % begin {Команда формирования листа регистрации изменений} \newcommand{\regChanges} { \newpage \ifx\gostMakeStamp\undefined \begin{center} % \Large\center \textbf{\CYRL\cyri\cyrs\cyrt\ \cyrz\cyra\cyrm\cyre\cyrch\cyra\cyrn\cyri\cyrishrt}\normalsize \Large\center \textbf{Лист замечаний}\normalsize \end{center} \else \def\gostMakeListOfCh{} \ \fi } % end {Команда формирования листа регистрации изменений} % begin{Настройки для фоновых рамок} \newcommand\BackgroundPicture[1] { \setlength{\unitlength}{1pt}% \put(0,\strip@pt\paperheight) { \parbox[t][\paperheight]{\paperwidth} { \vfill \ifx\gostMakeStamp\undefined \includegraphics[width=210mm, height=297mm, viewport=2.0mm 14.0mm 210.0mm 311.0mm]{#1} \else %\includegraphics[width=210mm, height=297mm, viewport=2.0mm -0.1mm 211.0mm 296.9mm]{#1} \PictureSizeFormat{#1}% \fi \vfill } } } % end{Настройки для фоновых рамок} % begin{После вывода каждой страницы выполняем следующий код для вывода рамок} \def\pathtosharedresource{./eskdi/} \newcommand\titlePicture{} \EveryShipout {% \setcounter{footnote}{0} % Сбрасываем счётчик сносок в начале каждой страницы (не всегда срабатывает :( ) \ClearShipoutPicture { \ifx\gostMakeStamp\undefined \ifnum \thepage = 1 %Можно добавить альтернативный фоновый рисунок на первый лист \titlePicture \else \ifnum \thepage = 2 %Можно добавить альтернативный фоновый рисунок на второй лист %\AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9_A4}} \else \ifx\gostMakeListOfCh\undefined %Можно добавить альтернативный фоновый рисунок на остальные листы %\AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A4}} \else %Можно добавить альтернативный фоновый рисунок на лист изменений %\AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_503_3_A4}} \fi \fi \fi \else \ifnum \thepage = 1 \ifx\MaketitleDef\undefined \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9_A4}} \else \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_105_1_A4}} \fi \else \ifnum \thepage = 2 \ifx\MaketitleDef\undefined \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A4}} \else \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9_A4}} \fi \else \ifx\gostMakeListOfCh\undefined \StampFormat %\AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A4}} \else \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_503_3_A4}} \fi \fi \fi \fi } } % end{После вывода каждой страницы выполняем следующий код для вывода рамок} \newcommand\SetTitleDocumentInSecondPage{% \spbox{260}{36}{445}{62}{c}{\parbox{65mm}{\centering\large{\@gosttitleobjectI} \small{\\ \@gosttitledocument} }} } \newcommand{\SetSecondPage} { \spbox{538}{58}{593}{70}{c}{\pageref{LastPage}} \spbox{497}{58}{538}{70}{c}{\thepage} \spformedbox{119}{72}{180}{84}{l}{\small\@gostrazrabotchik} \spformedbox{119}{57}{180}{70}{l}{\small\@gostproveril} \spformedbox{119}{29}{180}{41}{l}{\small\@gostnormokontroler} \spformedbox{119}{15}{180}{27}{l}{\small\@gostutverdil} % \spformedbox{190}{72}{225}{84}{l}{\small \cyrp\cyro\cyrd\cyrp.} % \spformedbox{190}{57}{225}{70}{l}{\small \cyrp\cyro\cyrd\cyrp.} % \spformedbox{190}{29}{225}{41}{l}{\small \cyrp\cyro\cyrd\cyrp.} % \spformedbox{190}{15}{225}{27}{l}{\small \cyrp\cyro\cyrd\cyrp.} \spformedbox{190}{72}{225}{84}{l}{\small подп.} \spformedbox{190}{57}{225}{70}{l}{\small подп.} \spformedbox{190}{29}{225}{41}{l}{\small подп.} \spformedbox{190}{15}{225}{27}{l}{\small подп.} \spformedbox{226}{72}{252}{84}{l}{\small\@gostDATErazrabotchik} \spformedbox{226}{57}{252}{70}{l}{\small\@gostDATEproveril} \spformedbox{226}{29}{252}{41}{l}{\small\@gostDATEnormokontroler} \spformedbox{226}{15}{252}{27}{l}{\small\@gostDATEutverdil} \spformedbox{303}{151}{440}{191}{c}{\large{\@gostreshenie}} \spbox{457}{58}{470}{70}{l}{\small\@gostliteraI} \spbox{470}{56}{490}{70}{l}{\small\@gostliteraII} \spbox{242}{87}{578}{127}{c}{\LARGE{\@gostklgi}} \vspbox{55}{670}{202}{683}{c}{\normalsize\@gostferstklgi} \SetTitleDocumentInSecondPage } % pt - points (about 1/72 inch) % 1 inch = 2.54 mm % 1 inch = 72 pt % 2.54 mm = 72 pt % pt = (1/74) * 2.54 mm % mm = 28.34 % begin{Нижний колонтитул. Заполняем рамки текстом. Координаты задаются в pt, соответствующие координатам в просмотре} \renewcommand{\@oddfoot}% { \ifx\gostMakeStamp\undefined \else \unitlength=1pt \begin{picture}(0,0)(334,98) \ifx\MaketitleDef\undefined \ifnum \thepage = 1 \SetSecondPage \else % Последующие страницы \fi \else \ifnum \thepage = 1 \else \ifnum \thepage = 2 \SetSecondPage \else % Последующие страницы \fi \fi \fi \end{picture} \fi } % end{Нижний колонтитул. Заполняем рамки текстом. Координаты задаются в pt, соответствующие координатам в просмотре} \renewcommand{\@makefnmark}{\hbox{\mathsurround=0pt$^{\@thefnmark)}$}} % Переопределим вид сносок (добавим круглую скобку) %\newcommand{\@makefntext}[1]{\parindent=1em\noindent % \hbox to 1.8em{\hss\@makefnmark}#1} \def\StampA#1 {% \setcounter{StampACounter}{#1}% }% \def\StampFormat{\ifcase\value{StampACounter} %% Default format \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A4}} \or \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A1}} \or \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A2}} \or \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A3}} \or \AddToShipoutPicture{\BackgroundPicture{\pathtosharedresource F2_106_9a_A4}} \else \typeout{} \fi } \def\PictureSizeFormat#1{\ifcase\value{StampACounter} %% Default format \includegraphics[width=210mm, height=297mm, viewport=2.0mm -0.1mm 211.0mm 296.9mm]{#1}% \or % A1 % \includegraphics[width=841mm, height=594mm, viewport=2.0mm -0.1mm 842.0mm 593.9mm]{#1}% \includegraphics[width=841mm, height=594mm, angle=270, viewport=0.0mm 2.1mm 840.0mm 595.9mm]{#1}% \or % A2 % \includegraphics[width=594mm, angle=270, height=420mm, viewport=2.0mm -0.1mm 595.0mm 419.9mm]{#1}% \includegraphics[width=594mm, height=420mm, angle=270, viewport=0.0mm 2.1mm 593.0mm 421.9mm]{#1}% \or % A3 % \includegraphics[width=420mm, height=297mm, viewport=2.0mm -0.1mm 421.0mm 296.9mm]{#1}% \includegraphics[width=420mm, height=297mm, angle=270, viewport=0.0mm 2.1mm 419.0mm 298.9mm]{#1}% \or \includegraphics[width=210mm, height=297mm, viewport=2.0mm -0.1mm 211.0mm 296.9mm]{#1}% \else \typeout{} \fi } \def\PageNumFormat{\ifcase\value{StampACounter} %% Default format \put(59,-271){\makebox[110mm][c]{\LARGE{\@gostklgi}}} % A4 \put(169,-274){\makebox[10mm][c]{\thepage}} \or \put(690.5,-568){\makebox[110mm][c]{\LARGE{\@gostklgi}}} % A1 \put(800.5,-570.5){\makebox[10mm][c]{\thepage}} \or \put(443.5,-394){\makebox[110mm][c]{\LARGE{\@gostklgi}}} % A2 \put(553.5,-396.5){\makebox[10mm][c]{\thepage}} \or \put(269,-271){\makebox[110mm][c]{\LARGE{\@gostklgi}}} % A3 \put(379,-274){\makebox[10mm][c]{\thepage}} \or \put(59,-271){\makebox[110mm][c]{\LARGE{\@gostklgi}}} % A4 \put(169,-274){\makebox[10mm][c]{\thepage}} \else \typeout{} \fi } \def\PageSizeFormat{\ifcase\value{StampACounter} %% Default format \pdfpageheight=\paperheight% \pdfpagewidth=\paperwidth% \setlength{\textwidth}{175mm}% \setlength{\textheight}{24.7cm} \or % A1 \pdfpagewidth=841mm% \pdfpageheight=594mm% \setlength{\textwidth}{804mm}% A1 \setlength{\textheight}{54.4cm} \or % A2 \pdfpagewidth=594mm% \pdfpageheight=420mm% \setlength{\textwidth}{557mm}% A2 \setlength{\textheight}{37.0cm} \or % A3 \pdfpagewidth=420mm% \pdfpageheight=297mm% \setlength{\textwidth}{383mm}% A3 \setlength{\textheight}{24.7cm} \or \pdfpageheight=\paperheight% \pdfpagewidth=\paperwidth% \setlength{\textwidth}{175mm}% \setlength{\textheight}{24.7cm} \else \typeout{} \fi } \def\TextSizeFormat#1{\ifcase#1 %% Default format \setlength{\hsize}{175mm} \setlength{\vsize}{247mm} % \setlength{\textheight}{24.7cm} \or % A1 \setlength{\hsize}{804mm}% A1 \setlength{\vsize}{544mm} % \setlength{\textheight}{54.4cm} \or % A2 \setlength{\hsize}{557mm}% A2 \setlength{\vsize}{370mm} % \setlength{\textheight}{37.0cm} \or % A3 \setlength{\hsize}{383mm}% A3 \setlength{\vsize}{247mm} % \setlength{\textheight}{24.7cm} \or \setlength{\hsize}{175mm} \setlength{\vsize}{247mm} % \setlength{\textheight}{24.7cm} \else \typeout{} \fi } \def\StampFormatI{\ifcase\value{StampACounter} %% Default format \begin{picture}(0,0)(504,763) %A4 \or \begin{picture}(0,0)(2294,1613) %A1 \or \begin{picture}(0,0)(1591,1113) %A2 \or \begin{picture}(0,0)(1096,763) %A3 \or \begin{picture}(0,0)(504,763) %A4 \else \typeout{} \fi }