summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/blowup
diff options
context:
space:
mode:
authorManuel Pégourié-Gonnard <mpg@elzevir.fr>2008-07-04 10:22:30 +0000
committerManuel Pégourié-Gonnard <mpg@elzevir.fr>2008-07-04 10:22:30 +0000
commit3808f9582452443de2e1a2a2b857a00ae7eb79aa (patch)
tree98414d785d050865e2ab43267c061d5a7def196b /Master/texmf-dist/source/latex/blowup
parenteef215b5e430da50a3de04662e45891f15d32430 (diff)
new blowup package
git-svn-id: svn://tug.org/texlive/trunk@9224 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/blowup')
-rw-r--r--Master/texmf-dist/source/latex/blowup/blowup.dtx430
-rw-r--r--Master/texmf-dist/source/latex/blowup/blowup.ins59
2 files changed, 489 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/blowup/blowup.dtx b/Master/texmf-dist/source/latex/blowup/blowup.dtx
new file mode 100644
index 00000000000..f9322aff6be
--- /dev/null
+++ b/Master/texmf-dist/source/latex/blowup/blowup.dtx
@@ -0,0 +1,430 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2007
+% Rolf Niepraschk, Rolf.Niepraschk@gmx.de
+%
+% 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 "author-maintained".
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{blowup.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{blowup}
+%<*package>
+ [2008/06/06 v0.1i Document Scaling (RN)]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{array,longtable}
+\IfFileExists{ragged2e.sty}{%
+ \usepackage{ragged2e}}{\let\RaggedRight=\raggedright}
+\newcommand{\m}[1]{\mbox{$\langle$\it #1\/$\rangle$}}
+\renewcommand{\arg}[1]{{\ttfamily\string{}\m{#1}{\ttfamily\string}}}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{blowup.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{496}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v0.1a}{2007/08/14}{Initial version. (RN)}
+%
+% \GetFileInfo{blowup.dtx}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+% \newcommand\afterheading{\par\nobreak\@afterheading}
+% \newcolumntype{P}[1]{>{\RaggedRight\hspace{0pt}}p{#1}}
+%
+%
+% \title{The \textsf{blowup} package\thanks{This document
+% corresponds to \textsf{blowup}~\fileversion, dated \filedate.}}
+% \author{Rolf Niepraschk \\ \texttt{Rolf.Niepraschk@gmx.de}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \noindent
+% This package only defines the user-level macro \cmd{\blowup},
+% which can be used to upscale or downscale all pages
+% of a document. It is
+% similar to the \TeX\ primitive \cmd{\magnification} but more
+% accurate and user-friendly. \cmd{\blowup}
+% may be useful for the creation of posters from a normal-sized
+% document and for many kinds of fine adjustments of a ready
+% typesetted document (e.\,g., minor changes of scaling and
+% position of the pages).
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Usage}
+% Load the package after other packages that affect the paper size.
+% Then call the macro \cmd{\blowup} before |\begin{document}| to scale
+% the document. \par \medskip \noindent
+% |\usepackage{blowup}| \par \noindent
+% \cmd{\blowup}\arg{key=value} \par \noindent
+% \vspace{-\baselineskip}
+% \setlength\extrarowheight{.2ex}
+% \begin{longtable}{@{}lP{.75\linewidth}@{}}
+% \multicolumn{1}{@{}l}{\textbf{key}} &
+% \multicolumn{1}{l@{}}{\textbf{value}} \tabularnewline \hline
+% paper & The final paper size: \tabularnewline
+% & |letter|, |legal|, |executive| or a paper size from the
+% ISO/DIN paper series A, B, C, D
+% (e.\,g., |a8|, |c7|,..., |b1|, |a0|) or a pair of dimensions
+% in curly brackets (e.\,g., |paper={925mm,1225mm}|) or the
+% letter `x' followed by a scaling factor
+% (e.\,g., |paper=x1.414213|). \tabularnewline[.4\baselineskip]
+% landscape & Exchanges paperwidth and paperheight: \tabularnewline
+% & |true| (the same as no value) or |false|. \tabularnewline[.4\baselineskip]
+% noscale & No scaling of the original paper size: \tabularnewline
+% & |true| (the same as no value) or |false|. \tabularnewline[.4\baselineskip]
+% pos & Position of the page on the paper: \tabularnewline
+% & |left| or |right|, |inside| or |outside|, |top| or |bottom|
+% (only the first letter is significant; default is
+% centering), or
+% a pair of dimensions in curly brackets which means the offset
+% from the lower left or lower outside corner of the final paper.
+% Only meaningful for |noscale=true| and up-scaled paper
+% size. \tabularnewline[.4\baselineskip]
+% onepage & Suppresses the second page and all following pages: \tabularnewline
+% & |true| (the same as no value) or |false|. \tabularnewline
+% & Useful for creating a one-side paper like a poster.
+% \end{longtable}
+% \vspace{0\baselineskip}
+% See also the example documents |blowup-test?.tex|.
+%
+% \section{Required Packages}
+%
+% The \textsf{blowup} package requires the following packages:
+% \textsf{everyshi}, \textsf{graphics}, \textsf{keyval}, and
+% \textsf{typearea}.
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% Load some packages for utility macros.
+% \begin{macrocode}
+\RequirePackage{everyshi,graphics,keyval}
+\@ifpackageloaded{typearea}{}{%
+ \newcommand*\BL@save@dimen[1]{%
+ \@ifundefined{BL@#1}{%
+ \expandafter\newlength\csname BL@#1\endcsname}{}%
+ \csname BL@#1\endcsname\csname #1\endcsname
+ \g@addto@macro\BL@restore@dimens{%
+ \csname #1\endcsname\csname BL@#1\endcsname}%
+ }%
+ \newcommand*\BL@restore@dimens{}%
+% \end{macrocode}
+% Some dimensions changed by \textsf{typearea} must be saved and restored.
+% \begin{macrocode}
+ \BL@save@dimen{textwidth}%
+ \BL@save@dimen{textheight}%
+ \BL@save@dimen{evensidemargin}%
+ \BL@save@dimen{oddsidemargin}%
+ \BL@save@dimen{topmargin}%
+ \BL@save@dimen{headheight}%
+ \BL@save@dimen{headsep}%
+ \BL@save@dimen{topskip}%
+ \BL@save@dimen{footskip}%
+ \BL@save@dimen{baselineskip}%
+ \RequirePackage{typearea}%
+ \BL@restore@dimens
+ \let\BL@save@dimen=\relax
+ \let\BL@restore@dimens=\relax
+}
+\providecommand*\vb@xt@{\vbox to}
+% \end{macrocode}
+% \begin{macro}{\sPaperWidth}
+% \begin{macro}{\sPaperHeight}
+% The size of the scaled pages.
+% \begin{macrocode}
+\newlength\sPaperWidth \sPaperWidth=\paperwidth
+\newlength\sPaperHeight \sPaperHeight=\paperheight
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*\BL@@resize{}
+% \end{macrocode}
+% \begin{macro}{\BL@scalePage}
+% Scales the output box to the dimension of the new paper size.
+% \begin{macrocode}
+\newcommand*\BL@scalePage{%
+ \setbox\@cclv=\vbox{\vskip1in\unvbox\@cclv}%
+ \setbox\@cclv=\vbox{\moveright1in\box\@cclv}%
+ \setbox\@cclv=\hb@xt@\paperwidth{\box\@cclv\hss}%
+ \setbox\@cclv=\vb@xt@\paperheight{\box\@cclv\vss}%
+ \let\BL@@resize=\@firstofone
+ \ifBL@noscale\else
+ \def\BL@@resize##1{\resizebox{\sPaperWidth}{!}{##1}}%
+ \setbox\@tempboxa=\hbox{\set@typeset@protect
+ \BL@@resize{\copy\@cclv}}%
+ \ifdim\ht\@tempboxa>\sPaperHeight
+ \def\BL@@resize##1{\resizebox{!}{\sPaperHeight}{##1}}%
+ \fi
+ \fi
+ \setbox\@tempboxa=\vb@xt@\sPaperHeight{\set@typeset@protect
+ \kern\z@\BL@t
+ \hb@xt@\sPaperWidth{\BL@l\BL@@resize{\box\@cclv}\BL@r}%
+ \BL@b\kern\z@
+ }%
+ \setbox\@cclv=\vbox{\box\@tempboxa}%
+ \setbox\@cclv=\vbox{\vskip-1in\unvbox\@cclv}%
+ \setbox\@cclv=\vbox{\moveright-1in\box\@cclv}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newcommand\BL@tempa{}
+\newcommand\BL@tempb{}
+\newcommand*\BL@strip@comma{}
+\def\BL@strip@comma#1,{#1}
+% \end{macrocode}
+% \begin{macro}{\BL@if@dimen@pair}
+% The parameter two will be executed if the first parameter is
+% a comma-separated pair of two dimensions. If not the parameter three
+% will be executed.
+% \begin{macrocode}
+\newcommand*\BL@if@dimen@pair[1]{%
+ \expandafter\BL@@if@dimen@pair#1,\@nil
+}
+\newcommand*\BL@@if@dimen@pair{}
+\def\BL@@if@dimen@pair#1,#2\@nil{%
+ \edef\BL@tempa{#1}\edef\BL@tempb{#2}%
+ \@tempswafalse
+ \ifx\BL@tempb\@empty\else
+ \edef\BL@tempb{\expandafter\BL@strip@comma\BL@tempb}%
+ \ifdimen{\BL@tempa}{\@tempswatrue}{}%
+ \if@tempswa
+ \ifdimen{\BL@tempb}{}{\@tempswafalse}%
+ \fi
+ \fi
+ \if@tempswa
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newcommand*\BL@strip@x{}
+\def\BL@strip@x#1x{#1}
+% \end{macrocode}
+% \begin{macro}{\BL@if@factor}
+% The parameter two will be executed if the first parameter is the
+% small letter x (`times') immediately followed by a number. If not
+% the parameter three will be executed.
+% \begin{macrocode}
+\newcommand*\BL@if@factor[1]{%
+ \expandafter\BL@@if@factor#1x\@nil
+}
+\newcommand*\BL@@if@factor{}
+\def\BL@@if@factor#1x#2\@nil{%
+ \edef\BL@tempa{#2}%
+ \ifx\BL@tempa\@empty
+ \expandafter\@secondoftwo
+ \else
+ \edef\BL@tempa{\expandafter\BL@strip@x\BL@tempa}%
+ \expandafter\@firstoftwo
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% The key-value definitions for \cmd{\blowup}
+% \begin{macrocode}
+\define@key{BL@}{paper}{%
+ \BL@if@dimen@pair{#1}{%
+ \global\sPaperWidth=\BL@tempa\relax
+ \global\sPaperHeight=\BL@tempb\relax
+ }{%
+ \BL@if@factor{#1}{%
+ \global\sPaperWidth=\BL@tempa\paperwidth
+ \global\sPaperHeight=\BL@tempa\paperheight
+ }{%
+ \begingroup
+% \end{macrocode}
+% Get the paper size. Reset the landscape mode because one of the
+% \textsf{KOMA-SCRIPT} classes may be loaded in landscape mode too.
+% \begin{macrocode}
+ \KOMAoptions{paper=portrait,paper=#1}%
+ \global\sPaperWidth=\paperwidth
+ \global\sPaperHeight=\paperheight
+ \endgroup
+ }%
+ }%
+}%
+\newif\ifBL@noscale \BL@noscalefalse
+\define@key{BL@}{noscale}[true]{%
+ \csname BL@noscale#1\endcsname
+}
+\newcommand*\BL@l{\hss}
+\newcommand*\BL@r{\hss}
+\newcommand*\BL@i{}
+\newcommand*\BL@o{}
+\newcommand*\BL@t{\vss}
+\newcommand*\BL@b{\vss}
+% \end{macrocode}
+% \begin{macro}{\BL@setPos}
+% Modify the macros \cmd{\BL@l}, \cmd{\BL@r} (\cmd{\BL@i}, \cmd{\BL@o}),
+% \cmd{\BL@t}, and \cmd{\BL@b} for positioning the page on the paper.
+% \begin{macrocode}
+\newcommand\BL@setPos[1]{%
+ \def\BL@l{\hss}\def\BL@r{\hss}%
+ \def\BL@t{\vss}\def\BL@b{\vss}%
+ \def\BL@i{}\def\BL@o{}%
+ \BL@if@dimen@pair{#1}{%
+ \edef\BL@b{\vskip\BL@tempb}%
+ \if@twoside
+ \edef\BL@l{\noexpand\ifodd\value{page}%
+ \hskip\BL@tempa\noexpand\else\hss\noexpand\fi}%
+ \edef\BL@r{\noexpand\ifodd\value{page}%
+ \hss\noexpand\else\hskip\BL@tempa\noexpand\fi}%
+ \else
+ \edef\BL@l{\hskip\BL@tempa}%
+ \if
+ }{%
+ \@for\BL@tempa:=#1\do{%
+% \end{macrocode}
+% Extract the first letter.
+% \begin{macrocode}
+ \edef\BL@tempb{\expandafter\@car\BL@tempa\@nil}%
+ \expandafter\let\csname BL@\BL@tempb \endcsname\relax
+ \if@twoside
+ \ifx\BL@i\relax
+ \def\BL@r{\ifodd\value{page}\hss\else\relax\fi}%
+ \def\BL@l{\ifodd\value{page}\relax\else\hss\fi}%
+ \fi
+ \ifx\BL@o\relax
+ \def\BL@l{\ifodd\value{page}\hss\else\relax\fi}%
+ \def\BL@r{\ifodd\value{page}\relax\else\hss\fi}%
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\define@key{BL@}{pos}{%
+ \BL@setPos{#1}%
+}
+\newif\ifBL@landscape \BL@landscapefalse
+\define@key{BL@}{landscape}[true]{%
+ \csname BL@landscape#1\endcsname
+}
+\newcommand*\BL@pageInit{}
+\define@key{BL@}{onepage}[true]{%
+ \csname if#1\endcsname
+ \def\BL@pageInit{\gdef\shipout{\setbox\@tempboxa=}}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\blowUp}
+% The only user-level macro.
+% \begin{macrocode}
+\newcommand*\blowUp[1]{%
+ \setkeys{BL@}{#1}%
+ \ifBL@landscape
+ \@tempdima=\sPaperWidth
+ \global\sPaperWidth=\sPaperHeight
+ \global\sPaperHeight=\@tempdima
+ \fi
+ \EveryShipout{\BL@scalePage}%
+ \gdef\blowUp##1{%
+ \PackageWarning{blowup}{%
+ Only the first call of `\string\blowUp' \MessageBreak is effective}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\EveryShipout{\BL@pageInit}
+\@onlypreamble\blowUp
+\AtBeginDocument{%
+% \end{macrocode}
+% The package \textsf{geometry} must not
+% write (wrong) pagesize informations to the output file.
+% \begin{macrocode}
+ \let\Gm@checkdrivers=\relax
+ \BL@pagesize@specials{\sPaperWidth}{\sPaperHeight}%
+}
+% \end{macrocode}
+% \begin{macro}{\BL@pagesize@specials}
+% Write pagesize informations to the output file. Depends on \TeX\
+% compiler or driver.
+% \begin{macrocode}
+\newcommand*\BL@pagesize@specials[2]{}
+\@ifundefined{Gin@driver}{}{%
+ \ifx\Gin@driver\@empty\else
+ \filename@parse{\Gin@driver}\@tempswafalse
+ \def\reserved@a{dvips}%
+ \ifx\filename@base\reserved@a\@tempswatrue\fi
+ \def\reserved@a{dvipdfm}%
+ \ifx\filename@base\reserved@a\@tempswatrue\fi
+ \if@tempswa
+ \PackageInfo{blowup}{Generating code for dvips}%
+ \def\BL@pagesize@specials#1#2{%
+ \@tempdima=#1\@tempdimb=#2%
+ \AtBeginDvi{\special{papersize=\the\@tempdima,\the\@tempdimb}}}%
+ \fi
+ \def\reserved@a{pdftex}%
+ \ifx\filename@base\reserved@a
+ \PackageInfo{blowup}{Generating code for pdfTeX}%
+ \def\BL@pagesize@specials#1#2{%
+ \pdfpagewidth=#1\relax\pdfpageheight=#2\relax}%
+ \fi
+ \def\reserved@a{vtex}%
+ \ifx\filename@base\reserved@a
+ \PackageInfo{blowup}{Generating code for VTeX}%
+ \def\BL@pagesize@specials#1#2{%
+ \mediawidth=#1\relax\mediaheight=#2\relax}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \Finale
+%\endinput
diff --git a/Master/texmf-dist/source/latex/blowup/blowup.ins b/Master/texmf-dist/source/latex/blowup/blowup.ins
new file mode 100644
index 00000000000..c3fe1a33ec5
--- /dev/null
+++ b/Master/texmf-dist/source/latex/blowup/blowup.ins
@@ -0,0 +1,59 @@
+%%
+%% Copyright (C) 2007
+%% Rolf Niepraschk, Rolf.Niepraschk@gmx.de
+%%
+%% 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 "author-maintained".
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/blowup}
+
+\preamble
+
+ Copyright (C) 2007
+ Rolf Niepraschk, Rolf.Niepraschk@gmx.de
+
+ 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 "author-maintained".
+
+\endpreamble
+
+\keepsilent
+\askforoverwritefalse
+
+\generate{
+ \file{blowup.sty}{\from{blowup.dtx}{package}}
+}
+
+\obeyspaces
+\Msg{****************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* blowup.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file blowup.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{****************************************************************}
+
+\endbatchfile