forked from avana/cryptrdie
369 lines
11 KiB
TeX
Executable file
369 lines
11 KiB
TeX
Executable file
%%
|
|
%% This is file `textpos.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% textpos.dtx (with options: `package')
|
|
%% Textpos: absolute positioning of text on the page
|
|
%% This software is copyright, 1999, 2001--2003, 2005--7 Norman Gray.
|
|
%%
|
|
%% This program is free software; you can redistribute it and/or
|
|
%% modify it under the terms of the GNU General Public License
|
|
%% as published by the Free Software Foundation; either version 2
|
|
%% of the License, or (at your option) any later version.
|
|
%%
|
|
%% This program 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 General Public License for more details.
|
|
%%
|
|
%% You should have received a copy of the GNU General Public License
|
|
%% along with this program; if not, write to the Free Software
|
|
%% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
%%
|
|
%% Author: Norman Gray, norman@astro.gla.ac.uk.
|
|
%% Department of Physics and Astronomy, University of Glasgow, UK
|
|
%%
|
|
%% See the file LICENCE for a copy of the GPL.
|
|
%% You can also find an online copy at http://www.gnu.org/copyleft/gpl.html .
|
|
%%
|
|
%%% Source: $Id: textpos.dtx.in,v 1.18 2007/04/04 13:22:51 norman Exp $
|
|
%%
|
|
%%\def\ParseRCSDate$#1: #2 #3 ${\def\TP@Date{#2}}
|
|
%%\ParseRCSDate$Date: 2007/04/04 13:22:51 $
|
|
\def\filename{textpos}
|
|
\def\fileversion{1.7d}
|
|
\def\filedate{2007/03/30}
|
|
\def\docdate{2007 March 30}
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesPackage{textpos}[\filedate\space v\fileversion]
|
|
\typeout{Package: `textpos' \fileversion\space<\docdate>}
|
|
\newif\ifTPshowboxes
|
|
\TPshowboxesfalse
|
|
\DeclareOption{showboxes}{\TPshowboxestrue}
|
|
\newif\ifTP@showtext
|
|
\TP@showtexttrue
|
|
\DeclareOption{noshowtext}{\TP@showtextfalse}
|
|
\newif\ifTP@abspos
|
|
\TP@absposfalse
|
|
\DeclareOption{absolute}{\TP@abspostrue}
|
|
\newif\ifTP@overlay
|
|
\TP@overlayfalse
|
|
\DeclareOption{overlay}{\TP@overlaytrue}
|
|
\newif\ifTP@chatter
|
|
\TP@chattertrue
|
|
\DeclareOption{quiet}{\TP@chatterfalse}
|
|
\DeclareOption{verbose}{\TP@chattertrue}
|
|
\ProcessOptions
|
|
\ifTP@abspos
|
|
\RequirePackage{everyshi}
|
|
\fi
|
|
\def\TP@xfloat#1[#2]{
|
|
\par\def\@captype{#1}%
|
|
\@floatpenalty\z@
|
|
\color@vbox
|
|
\normalcolor
|
|
\vbox\bgroup
|
|
}
|
|
\def\TP@xympar{
|
|
\PackageError{textpos}
|
|
{You can't use \protect\marginpar\space within a textblock}
|
|
{You're using textpos because you _don't_ want things to float
|
|
around, yes?}}
|
|
\newbox\TP@textbox
|
|
\ifTP@abspos
|
|
\newbox\TP@holdbox % starts off void
|
|
\AtEndDocument{\ifvoid\TP@holdbox \else \hbox{}\fi}
|
|
\fi
|
|
\newdimen\TPHorizModule
|
|
\newdimen\TPVertModule
|
|
\newdimen\TP@margin
|
|
\TP@margin=0pt
|
|
\newdimen\TP@absmargin
|
|
\TP@absmargin=0pt
|
|
\newcommand{\TPMargin}{%
|
|
\@ifstar\TPMargin@outer\TPMargin@inner
|
|
}
|
|
\newcommand{\TPMargin@inner}[1]{%
|
|
\TP@margin=#1\relax
|
|
\ifdim\TP@margin < 0pt
|
|
\PackageError{textpos}
|
|
{\protect\TPMargin\space must have a positive argument}
|
|
{\protect\TPMargin\space must have a positive argument}
|
|
\fi
|
|
\TP@absmargin=\TP@margin
|
|
}
|
|
\newcommand\TPMargin@outer[1]{%
|
|
\TP@margin=-#1\relax
|
|
\ifdim\TP@margin > 0pt
|
|
\PackageError{textpos}
|
|
{\protect\TPMargin*\space must have a positive argument}
|
|
{\protect\TPMargin*\space must have a positive argument}
|
|
\fi
|
|
\TP@absmargin=-\TP@margin
|
|
}
|
|
\def\TPGrid{%
|
|
\@ifnextchar[{\@tempswatrue\TP@Grid}{\@tempswafalse\TP@Grid[0pt,0pt]}}
|
|
\def\TP@Grid[#1,#2]#3#4{
|
|
\setlength{\@tempdima}{#1}
|
|
\multiply\@tempdima by 2
|
|
\TPHorizModule=\paperwidth
|
|
\advance\TPHorizModule by -\@tempdima
|
|
\divide\TPHorizModule by #3
|
|
\setlength{\@tempdima}{#2}
|
|
\multiply\@tempdima by 2
|
|
\TPVertModule=\paperheight
|
|
\advance\TPVertModule by -\@tempdima
|
|
\divide\TPVertModule by #4
|
|
\ifTP@chatter
|
|
\typeout{Grid set #3 x #4 = \the\TPHorizModule\space x \the\TPVertModule}%
|
|
\fi
|
|
\ifTP@abspos\if@tempswa \textblockorigin{#1}{#2}\fi\fi
|
|
}
|
|
\TPGrid{16}{16}
|
|
\newdimen\TPboxrulesize
|
|
\setlength{\TPboxrulesize}{0.4pt}
|
|
\def\showtextsize{\normalsize}
|
|
\ifTP@abspos
|
|
\newdimen\TP@ox
|
|
\newdimen\TP@oy
|
|
\fi
|
|
\def\textblockorigin#1#2{%
|
|
\ifTP@abspos
|
|
\TP@ox=-1in \addtolength\TP@ox{#1}
|
|
\TP@oy=-1in \addtolength\TP@oy{#2}
|
|
\ifTP@chatter\typeout{TextBlockOrigin set to #1 x #2}\fi
|
|
\else
|
|
\PackageError{textpos}
|
|
{The \protect\textblockorigin\space command\MessageBreak
|
|
may only be used if the package was given\MessageBreak
|
|
the`absolute' option when it was invoked}
|
|
{If you want to use the \protect\textblockorigin\space command, then
|
|
\MessageBreak
|
|
invoke the package with the syntax\MessageBreak
|
|
\protect\usepackage[absolute]{textpos}}
|
|
\fi
|
|
}
|
|
\def\textblocklabel#1{\gdef\TP@textblocklabel{#1}}
|
|
\def\textblockcolour#1{%
|
|
\@ifundefined{color}%
|
|
{%
|
|
\gdef\TP@blockcolour{}% ignore argument, switch off colour blocking below
|
|
\PackageWarning{textpos}{command textblockcolour used, but
|
|
{color} package not loaded.\MessageBreak Colour changes ignored.}%
|
|
}
|
|
{%
|
|
\def\@tempa{#1}
|
|
\gdef\TP@blockcolour{#1}
|
|
\ifx\TP@defaultblockcolour\@undefined
|
|
\gdef\TP@defaultblockcolour{#1}
|
|
\fi
|
|
}}
|
|
\def\TP@blockcolour{} % safe initial default
|
|
\let\textblockcolor\textblockcolour
|
|
\let\tekstblokkulur\textblockcolour
|
|
\def\textblockrulecolour#1{%
|
|
\@ifundefined{color}%
|
|
{%
|
|
\gdef\TP@rulecolour{}% ignore argument, switch off colour blocking below
|
|
\PackageWarning{textpos}{command textblockrulecolour used, but
|
|
{color} package not loaded.\MessageBreak Colour changes ignored.}}%
|
|
{%
|
|
\def\@tempa{#1}
|
|
\gdef\TP@rulecolour{#1}%
|
|
}}
|
|
\def\TP@rulecolour{black}
|
|
\let\textblockrulecolor\textblockrulecolour
|
|
\let\tekstblokroolkulur\textblockrulecolour
|
|
\@ifundefined{color}%
|
|
{\gdef\color#1{}%
|
|
\gdef\color@block#1#2#3{}%
|
|
}{}
|
|
\def\textblock#1{%
|
|
\@tempdima=#1\TPHorizModule
|
|
\ifvmode\else
|
|
\ifmmode
|
|
\PackageError{textpos}
|
|
{You cannot use textblock in maths mode}
|
|
{You may use the textblock environment only in \MessageBreak
|
|
vertical mode or horizontal mode (when it triggers a\MessageBreak
|
|
new paragraph). You cannot use it in maths mode.}
|
|
\else % in horizontal mode
|
|
\par % force us back into vertical mode
|
|
\fi
|
|
\fi
|
|
\@ifnextchar[{\TP@textblock}{\TP@textblock[0,0]}%] bracematch
|
|
}
|
|
\def\TP@textblockstar#1{%
|
|
\setlength{\@tempdima}{#1}
|
|
\ifvmode\else
|
|
\PackageWarning{textpos}{environment textblock* not in vertical mode.
|
|
\MessageBreak
|
|
Environment textblock* should not have any text\MessageBreak
|
|
or printable material appearing before it.\MessageBreak
|
|
Alignment may work out wrongly.}%
|
|
\par % force us back into vertical mode
|
|
\fi
|
|
\@ifnextchar[{\TP@textblock}{\TP@textblock[0,0]}%] bracematch
|
|
}
|
|
\expandafter\let\csname textblock*\endcsname\TP@textblockstar
|
|
\newtoks\TP@tbargs
|
|
\def\TP@textblock[#1,#2](#3,#4){%
|
|
\TP@tbargs={{#1}{#2}{#3}{#4}}%
|
|
\let\@xfloat\TP@xfloat
|
|
\let\@xympar\TP@xympar
|
|
\setbox\TP@textbox=\vbox\bgroup
|
|
\ifTPshowboxes
|
|
{\color{\TP@rulecolour}\hrule height0pt depth \TPboxrulesize }%
|
|
\vskip-\TPboxrulesize
|
|
\fi
|
|
\ifdim\TP@margin = 0pt
|
|
\hsize=\@tempdima
|
|
\textwidth\hsize \columnwidth\hsize \linewidth\hsize
|
|
\else
|
|
\vskip\TP@absmargin
|
|
\@tempdimb=\@tempdima % \@tempdimb is outer box width
|
|
\hsize=\@tempdima % \hsize is inner box width
|
|
\ifdim\TP@margin < 0pt
|
|
\advance\@tempdimb by 2\TP@absmargin % bigger box
|
|
\else
|
|
\advance\hsize by -2\TP@absmargin % narrower content
|
|
\fi
|
|
\hbox to \@tempdimb\bgroup
|
|
\hskip\TP@absmargin\vbox\bgroup
|
|
\textwidth\hsize \columnwidth\hsize \linewidth\hsize
|
|
\fi
|
|
}
|
|
\def\endtextblock{\global\@tempswatrue\TP@commonendtextblock}
|
|
\@namedef{endtextblock*}{\global\@tempswafalse\TP@commonendtextblock}
|
|
\newdimen\TP@prevdepth
|
|
\def\TP@commonendtextblock{%
|
|
\ifdim\TP@margin = 0pt
|
|
\relax
|
|
\else
|
|
\egroup % end of inner vbox
|
|
\hskip\TP@absmargin
|
|
\egroup % end of inner hbox
|
|
\vskip \TP@absmargin
|
|
\fi
|
|
\ifTPshowboxes
|
|
\vskip-\TPboxrulesize
|
|
{\color{\TP@rulecolour}\hrule depth 0pt height \TPboxrulesize}%
|
|
\fi
|
|
\egroup % end of \TP@textbox
|
|
\TP@prevdepth=\prevdepth
|
|
\prevdepth=-1000pt % = \nointerlineskip
|
|
\expandafter\TP@endtextblock\the\TP@tbargs
|
|
}
|
|
\def\TP@endtextblock#1#2#3#4{%
|
|
\if@tempswa % modular/unstarred endtextblock
|
|
\@tempdima=#3\TPHorizModule
|
|
\@tempdimb=#4\TPVertModule
|
|
\else % absolute/starred endtextblock
|
|
\setlength{\@tempdima}{#3}
|
|
\setlength{\@tempdimb}{#4}
|
|
\fi
|
|
\ifdim\TP@margin < 0pt
|
|
\advance\@tempdima \TP@margin
|
|
\advance\@tempdimb \TP@margin
|
|
% #1,#2 are proportions of \TP@textbox size
|
|
\@tempdimc=-#1\wd\TP@textbox
|
|
\advance\@tempdima\@tempdimc
|
|
\@tempdimc=-#2\ht\TP@textbox
|
|
\advance\@tempdimb\@tempdimc
|
|
\else
|
|
% \TP@margin is positive
|
|
% #1,#2 are proportions of \TP@framebox size = \TP@textbox+2\TP@margin
|
|
\@tempdimc=\wd\TP@textbox
|
|
\advance\@tempdimc 2\TP@margin
|
|
\@tempdimc=#1\@tempdimc
|
|
\advance\@tempdima -\@tempdimc
|
|
\@tempdimc=\ht\TP@textbox
|
|
\advance\@tempdimc 2\TP@margin
|
|
\@tempdimc=#2\@tempdimc
|
|
\advance\@tempdimb -\@tempdimc
|
|
\fi
|
|
\ifTP@abspos
|
|
\advance\@tempdima by \TP@ox
|
|
\advance\@tempdimb by \TP@oy
|
|
\fi
|
|
\setbox0=\vbox to 0pt{\vskip\@tempdimb
|
|
\hbox to 0pt{\hskip\@tempdima
|
|
\ifx\TP@blockcolour\@empty \else
|
|
{% defaults for TP@blockcolour mean we should never get here if
|
|
% the {color} package is not loaded
|
|
\color{\TP@blockcolour}%
|
|
\color@block{\wd\TP@textbox}{\ht\TP@textbox}{\dp\TP@textbox}%
|
|
}%
|
|
\fi
|
|
\ifx\TP@defaultblockcolour\@undefined \else
|
|
\global\let\TP@blockcolour\TP@defaultblockcolour
|
|
\fi
|
|
\ifTPshowboxes
|
|
{\color{\TP@rulecolour}\vrule width \TPboxrulesize}%
|
|
\hskip -\TPboxrulesize
|
|
\fi
|
|
\ifTP@showtext
|
|
\box\TP@textbox
|
|
\else
|
|
\vbox to\ht\TP@textbox{%
|
|
\ifTPshowboxes
|
|
{\color{\TP@rulecolour}\hrule depth 0pt height \TPboxrulesize \vskip-\TPboxrulesize}%
|
|
\fi
|
|
\vskip\smallskipamount
|
|
\hbox to\wd\TP@textbox{%
|
|
\ifx\TP@textblocklabel\undefined
|
|
\hbox{}%
|
|
\else
|
|
\hskip\smallskipamount
|
|
\fbox{\showtextsize \TP@textblocklabel}%
|
|
\global\let\TP@textblocklabel\undefined
|
|
\fi
|
|
\hss
|
|
}%
|
|
\vss
|
|
\ifTPshowboxes
|
|
\vskip -\TPboxrulesize
|
|
{\color{\TP@rulecolour}\hrule depth 0pt height \TPboxrulesize}%
|
|
\fi
|
|
}%
|
|
\fi
|
|
\ifTPshowboxes
|
|
\hskip -\TPboxrulesize
|
|
{\color{\TP@rulecolour}\vrule width \TPboxrulesize}%
|
|
\fi
|
|
\hss}%
|
|
\vss
|
|
}% end of box0
|
|
\ifTP@abspos
|
|
\global\setbox\TP@holdbox\vbox{%
|
|
\box0
|
|
\unvbox\TP@holdbox
|
|
}%
|
|
\else
|
|
\box0
|
|
\prevdepth=\TP@prevdepth
|
|
\fi
|
|
}%
|
|
\ifTP@abspos
|
|
\ifTP@overlay
|
|
\EveryShipout{%
|
|
\global\setbox\@cclv\vbox{%
|
|
\vbox to 0pt{\ifvbox\@cclv \unvbox\@cclv \else \box\@cclv \fi \vss}%
|
|
\unvbox\TP@holdbox % TP@holdbox is now void
|
|
}
|
|
}%
|
|
\else
|
|
\EveryShipout{%
|
|
\global\setbox\@cclv\vbox{%
|
|
\unvbox\TP@holdbox
|
|
\ifvbox\@cclv \unvbox\@cclv \else \box\@cclv \fi
|
|
}%
|
|
}%
|
|
\fi
|
|
\textblockorigin{0pt}{0pt}%
|
|
\fi
|
|
\endinput
|
|
%%
|
|
%% End of file `textpos.sty'.
|