123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 |
- %%
- %% 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'.
|