diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/eskdx/source/eskdfreesize.sty.in')
-rw-r--r-- | Master/texmf-dist/doc/latex/eskdx/source/eskdfreesize.sty.in | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/eskdx/source/eskdfreesize.sty.in b/Master/texmf-dist/doc/latex/eskdx/source/eskdfreesize.sty.in new file mode 100644 index 00000000000..8648ba6364a --- /dev/null +++ b/Master/texmf-dist/doc/latex/eskdx/source/eskdfreesize.sty.in @@ -0,0 +1,174 @@ +% 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}} |