177 lines
7.2 KiB
TeX
177 lines
7.2 KiB
TeX
% 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.
|
||
%
|
||
|
||
% Пакет предоставляет возможность вставки листа
|
||
% почти любого размера (ограничения описаны в руководстве
|
||
% пользователя xespdx):
|
||
|
||
|
||
%
|
||
% This is automaticaly generated file, do not edit it.
|
||
%
|
||
|
||
\NeedsTeXFormat{LaTeX2e}
|
||
\ProvidesPackage{xespdfreesize}[2010/02/20 v0.98 Inserting Free Size Sheets]
|
||
|
||
\RequirePackage{xespdstamp}
|
||
|
||
% переключение размера возможно только в pdflatex.
|
||
% Tем не менее, latex тоже сможет собрать такой документ,
|
||
% но все большие страницы
|
||
% обрежет по размерам формата, установленного в documentclass
|
||
\RequirePackage{ifpdf}
|
||
\ifpdf{}
|
||
\else{\PackageWarningNoLine{xespdfreesize}
|
||
{It's better to compile this document with pdflatex.\MessageBreak
|
||
In DVI you will get only part of the inserted big sheet}}
|
||
\fi
|
||
|
||
|
||
|
||
% в xespdstamp для ускорения отрисовки рамки применен \savebox
|
||
% в нашем случае это неудобно, будем рисовать персонально
|
||
% на каждой странице
|
||
\newcommand{\XESPDdrawFrameFree}{%
|
||
\put(\XESPDltu{\XESPDframeX},\XESPDltu{\XESPDframeY}){%
|
||
\setlength{\unitlength}{1mm}%
|
||
\begin{picture}(0,0)(0,0)
|
||
\linethickness{\XESPDlineThick}
|
||
\put(0,\XESPDltu{\XESPDframeH}){\line(1,0){\XESPDltu{\XESPDframeW}}}
|
||
\put(0,0){\line(1,0){\XESPDltu{\XESPDframeW}}}
|
||
\put(0,0){\line(0,1){\XESPDltu{\XESPDframeH}}}
|
||
\put(\XESPDltu{\XESPDframeW},0){\line(0,1){\XESPDltu{\XESPDframeH}}}
|
||
\end{picture}}}
|
||
|
||
% содержимое нестандартной графы 32 по умолчанию
|
||
\newcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDemptyFormatName}}
|
||
|
||
% определим нашу собственную нестандартную графу 32
|
||
\newcommand{\XESPDdrawColumnXXXIIfree}{%
|
||
\setlength{\XESPD@tmpdima}{\XESPDframeX+\XESPDframeW-50mm}%
|
||
\setlength{\XESPD@tmpdimb}{\XESPDframeY-3.7mm}%
|
||
\put(\XESPDltu{\XESPD@tmpdima},\XESPDltu{\XESPD@tmpdimb}){%
|
||
\makebox[50mm][r]{\XESPDfontIII\XESPDtheColumnXXXIIfree}}}
|
||
|
||
|
||
|
||
% Определим новый стиль. Подробнее про определение своих стилей
|
||
% можно прочитать в руководстве пользователя xespdx,
|
||
% или заглянуть в xespdstamp.sty,
|
||
% кусок оттуда был использован как основа для стиля freesize
|
||
\XESPDnewStyle{freesize}{8mm}
|
||
\XESPDputOnStyle{freesize}{frame}{\XESPDdrawFrameFree}
|
||
\XESPDputOnStyle{freesize}{stamp}{\XESPDdrawStampIIa}
|
||
\ifXESPD@enable@columns@xix
|
||
\XESPDputOnStyle{freesize}{columnsxix}{\XESPDdrawColumnsXIX}
|
||
\fi
|
||
\ifXESPD@enable@column@xxvi
|
||
\XESPDputOnStyle{freesize}{columnxxvi}{\XESPDdrawColumnXXVI}
|
||
\fi
|
||
\ifXESPD@enable@columns@xxvii
|
||
\XESPDputOnStyle{freesize}{columnsxxvii}{\XESPDdrawColumnsXXVIIi}
|
||
\fi
|
||
\ifXESPD@enable@column@xxxi
|
||
\XESPDputOnStyle{freesize}{columnxxxi}{\XESPDdrawColumnXXXI}
|
||
\fi
|
||
\ifXESPD@enable@column@xxxii
|
||
% наша новая графа 32
|
||
\XESPDputOnStyle{freesize}{columnxxxii}{\XESPDdrawColumnXXXIIfree}
|
||
\fi
|
||
\ifXESPD@enable@column@xxxiii
|
||
\XESPDputOnStyle{freesize}{columnxxxiii}{\XESPDdrawColumnXXXIII}
|
||
\fi
|
||
\ifXESPD@enable@column@xxxiv
|
||
\XESPDputOnStyle{freesize}{columnxxxiv}{\XESPDdrawColumnXXXIV}
|
||
\fi
|
||
\ifXESPD@zonelabels%
|
||
\XESPDputOnStyle{freesize}{zonelabels}{\XESPDdrawZoneLabelsI}
|
||
\fi
|
||
|
||
|
||
% вспомогательные счетчики для записей в лог
|
||
\newcounter{XESPD@free@sizepagebegin}
|
||
\newcounter{XESPD@free@sizepageend}
|
||
|
||
% теперь самое сложное - сам переключатель
|
||
\newcommand{\XESPDfreeSize}[3]{%
|
||
\XESPDclearDoublePage%
|
||
\setcounter{XESPD@free@sizepagebegin}{\value{page}}% запомним текущую страницу
|
||
\pdfpagewidth=#1%
|
||
\pdfpageheight=#2%
|
||
\setlength{\XESPD@origin@y}{#2-1in}%
|
||
\setlength{\XESPDframeW}{\pdfpagewidth-\XESPD@margin@si-\XESPD@margin@so}%
|
||
\setlength{\XESPDframeH}{\pdfpageheight-\XESPD@margin@t-\XESPD@margin@b}%
|
||
\XESPDstyle{freesize}%
|
||
\expandafter{#3}%
|
||
% зафиксируем факт вставки листа в \jobname.log
|
||
\XESPDclearDoublePage%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDemptyFormatName}}% сброс графы 32
|
||
\setcounter{XESPD@free@sizepageend}{\value{page}}%
|
||
\addtocounter{XESPD@free@sizepageend}{-1}%
|
||
\ifthenelse{\value{XESPD@free@sizepagebegin}<\value{XESPD@free@sizepageend}}% латех начал новую страницу
|
||
{\immediate\write0{xespdfreesize: sheet(s) with size (#1 x #2) inserted
|
||
at page(s) \noexpand[\arabic{XESPD@free@sizepagebegin}%
|
||
-\arabic{XESPD@free@sizepageend}\noexpand]}}
|
||
{\immediate\write0{xespdfreesize: sheet(s) with size (#1 x #2) inserted
|
||
at page(s) \noexpand[\arabic{XESPD@free@sizepageend}\noexpand]}}
|
||
% теперь вернем всё как было до нас
|
||
\setlength{\XESPD@origin@y}{\paperheight-1in}%
|
||
\pdfpageheight=\paperheight%
|
||
\pdfpagewidth=\paperwidth%
|
||
\setlength{\XESPDframeW}{\paperwidth-\XESPD@margin@si-\XESPD@margin@so}%
|
||
\setlength{\XESPDframeH}{\paperheight-\XESPD@margin@t-\XESPD@margin@b}%
|
||
\XESPDstyle{\XESPD@default@style@other}%
|
||
\newpage%
|
||
}
|
||
|
||
|
||
% Определим несколько готовых к употреблению форматов
|
||
\newcommand{\XESPDlandscapeAIII}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa3FormatName}}%
|
||
\XESPDfreeSize{420mm}{297mm}{#1}}
|
||
|
||
\newcommand{\XESPDportraitAIII}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa3FormatName}}%
|
||
\XESPDfreeSize{297mm}{420mm}{#1}}
|
||
|
||
\newcommand{\XESPDlandscapeAII}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa2FormatName}}%
|
||
\XESPDfreeSize{594mm}{420mm}{#1}}
|
||
|
||
\newcommand{\XESPDportraitAII}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa2FormatName}}%
|
||
\XESPDfreeSize{420mm}{594mm}{#1}}
|
||
|
||
\newcommand{\XESPDlandscapeAI}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa1FormatName}}%
|
||
\XESPDfreeSize{841mm}{594mm}{#1}}
|
||
|
||
\newcommand{\XESPDportraitAI}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa1FormatName}}%
|
||
\XESPDfreeSize{594mm}{841mm}{#1}}
|
||
|
||
\newcommand{\XESPDlandscapeAZERO}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa0FormatName}}%
|
||
\XESPDfreeSize{1189mm}{841mm}{#1}}
|
||
|
||
\newcommand{\XESPDportraitAZERO}[1]{%
|
||
\renewcommand\XESPDtheColumnXXXIIfree{\@nameuse{XESPDa0FormatName}}%
|
||
\XESPDfreeSize{841mm}{1189mm}{#1}}
|
||
|
||
\newcommand{\XESPDlandscapeBanner}[1]{%
|
||
% Пятиметровое полотно для подшивки гармошкой в обычную папку А4.
|
||
% Просто для демонстрации
|
||
\XESPDfreeSize{5000mm}{297mm}{#1}}
|