% This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2003/12/01 or later. % % This work has the LPPL maintenance status "maintained". % % This Current Maintainer of this work is Konstantin Korikov. % % This work consists of all files listed in manifest.txt. % % Пакет предоставляет возможность вставки листа % почти любого размера (ограничения описаны в руководстве % пользователя eskdx): m4_ESKDX_INIT m4_FILE_INIT \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{eskdfreesize}[m4_dnl m4_FILE_ID([[$Date:: 2010-02-20#$]]) Inserting Free Size Sheets] \RequirePackage{eskdstamp} % переключение размера возможно только в pdflatex. % Tем не менее, latex тоже сможет собрать такой документ, % но все большие страницы % обрежет по размерам формата, установленного в documentclass \RequirePackage{ifpdf} \ifpdf{} \else{\PackageWarningNoLine{eskdfreesize} {It's better to compile this document with pdflatex.\MessageBreak In DVI you will get only part of the inserted big sheet}} \fi % в eskdstamp для ускорения отрисовки рамки применен \savebox % в нашем случае это неудобно, будем рисовать персонально % на каждой странице \newcommand{\ESKDdrawFrameFree}{% \put(\ESKDltu{\ESKDframeX},\ESKDltu{\ESKDframeY}){% \setlength{\unitlength}{1mm}% \begin{picture}(0,0)(0,0) \linethickness{\ESKDlineThick} \put(0,\ESKDltu{\ESKDframeH}){\line(1,0){\ESKDltu{\ESKDframeW}}} \put(0,0){\line(1,0){\ESKDltu{\ESKDframeW}}} \put(0,0){\line(0,1){\ESKDltu{\ESKDframeH}}} \put(\ESKDltu{\ESKDframeW},0){\line(0,1){\ESKDltu{\ESKDframeH}}} \end{picture}}} % содержимое нестандартной графы 32 по умолчанию \newcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDemptyFormatName}} % определим нашу собственную нестандартную графу 32 \newcommand{\ESKDdrawColumnXXXIIfree}{% \setlength{\ESKD@tmpdima}{\ESKDframeX+\ESKDframeW-50mm}% \setlength{\ESKD@tmpdimb}{\ESKDframeY-3.7mm}% \put(\ESKDltu{\ESKD@tmpdima},\ESKDltu{\ESKD@tmpdimb}){% \makebox[50mm][r]{\ESKDfontIII\ESKDtheColumnXXXIIfree}}} % Определим новый стиль. Подробнее про определение своих стилей % можно прочитать в руководстве пользователя eskdx, % или заглянуть в eskdstamp.sty, % кусок оттуда был использован как основа для стиля freesize \ESKDnewStyle{freesize}{8mm} \ESKDputOnStyle{freesize}{frame}{\ESKDdrawFrameFree} \ESKDputOnStyle{freesize}{stamp}{\ESKDdrawStampIIa} \ifESKD@enable@columns@xix \ESKDputOnStyle{freesize}{columnsxix}{\ESKDdrawColumnsXIX} \fi \ifESKD@enable@column@xxvi \ESKDputOnStyle{freesize}{columnxxvi}{\ESKDdrawColumnXXVI} \fi \ifESKD@enable@columns@xxvii \ESKDputOnStyle{freesize}{columnsxxvii}{\ESKDdrawColumnsXXVIIi} \fi \ifESKD@enable@column@xxxi \ESKDputOnStyle{freesize}{columnxxxi}{\ESKDdrawColumnXXXI} \fi \ifESKD@enable@column@xxxii % наша новая графа 32 \ESKDputOnStyle{freesize}{columnxxxii}{\ESKDdrawColumnXXXIIfree} \fi \ifESKD@enable@column@xxxiii \ESKDputOnStyle{freesize}{columnxxxiii}{\ESKDdrawColumnXXXIII} \fi \ifESKD@enable@column@xxxiv \ESKDputOnStyle{freesize}{columnxxxiv}{\ESKDdrawColumnXXXIV} \fi \ifESKD@zonelabels% \ESKDputOnStyle{freesize}{zonelabels}{\ESKDdrawZoneLabelsI} \fi % вспомогательные счетчики для записей в лог \newcounter{ESKD@free@sizepagebegin} \newcounter{ESKD@free@sizepageend} % теперь самое сложное - сам переключатель \newcommand{\ESKDfreeSize}[3]{% \ESKDclearDoublePage% \setcounter{ESKD@free@sizepagebegin}{\value{page}}% запомним текущую страницу \pdfpagewidth=#1% \pdfpageheight=#2% \setlength{\ESKD@origin@y}{#2-1in}% \setlength{\ESKDframeW}{\pdfpagewidth-\ESKD@margin@si-\ESKD@margin@so}% \setlength{\ESKDframeH}{\pdfpageheight-\ESKD@margin@t-\ESKD@margin@b}% \ESKDstyle{freesize}% \expandafter{#3}% % зафиксируем факт вставки листа в \jobname.log \ESKDclearDoublePage% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDemptyFormatName}}% сброс графы 32 \setcounter{ESKD@free@sizepageend}{\value{page}}% \addtocounter{ESKD@free@sizepageend}{-1}% \ifthenelse{\value{ESKD@free@sizepagebegin}<\value{ESKD@free@sizepageend}}% латех начал новую страницу {\immediate\write0{eskdfreesize: sheet(s) with size (#1 x #2) inserted at page(s) \noexpand[\arabic{ESKD@free@sizepagebegin}% -\arabic{ESKD@free@sizepageend}\noexpand]}} {\immediate\write0{eskdfreesize: sheet(s) with size (#1 x #2) inserted at page(s) \noexpand[\arabic{ESKD@free@sizepageend}\noexpand]}} % теперь вернем всё как было до нас \setlength{\ESKD@origin@y}{\paperheight-1in}% \pdfpageheight=\paperheight% \pdfpagewidth=\paperwidth% \setlength{\ESKDframeW}{\paperwidth-\ESKD@margin@si-\ESKD@margin@so}% \setlength{\ESKDframeH}{\paperheight-\ESKD@margin@t-\ESKD@margin@b}% \ESKDstyle{\ESKD@default@style@other}% \newpage% } % Определим несколько готовых к употреблению форматов \newcommand{\ESKDlandscapeAIII}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa3FormatName}}% \ESKDfreeSize{420mm}{297mm}{#1}} \newcommand{\ESKDportraitAIII}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa3FormatName}}% \ESKDfreeSize{297mm}{420mm}{#1}} \newcommand{\ESKDlandscapeAII}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa2FormatName}}% \ESKDfreeSize{594mm}{420mm}{#1}} \newcommand{\ESKDportraitAII}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa2FormatName}}% \ESKDfreeSize{420mm}{594mm}{#1}} \newcommand{\ESKDlandscapeAI}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa1FormatName}}% \ESKDfreeSize{841mm}{594mm}{#1}} \newcommand{\ESKDportraitAI}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa1FormatName}}% \ESKDfreeSize{594mm}{841mm}{#1}} \newcommand{\ESKDlandscapeAZERO}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa0FormatName}}% \ESKDfreeSize{1189mm}{841mm}{#1}} \newcommand{\ESKDportraitAZERO}[1]{% \renewcommand\ESKDtheColumnXXXIIfree{\@nameuse{ESKDa0FormatName}}% \ESKDfreeSize{841mm}{1189mm}{#1}} \newcommand{\ESKDlandscapeBanner}[1]{% % Пятиметровое полотно для подшивки гармошкой в обычную папку А4. % Просто для демонстрации \ESKDfreeSize{5000mm}{297mm}{#1}}