diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:57:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:57:08 +0000 |
commit | 6503c91bd38e667c9173750a5169f069184297b9 (patch) | |
tree | f982a43166feaebdee280b9c4af82b8595c3ce89 /Master/texmf-dist | |
parent | c8eb7239a1d0c22402ee84cd955078ba062f61cc (diff) |
trunk/Master/texmf-dist/source/latex/rotating
git-svn-id: svn://tug.org/texlive/trunk@492 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
6 files changed, 454 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/rotating/examples.ex b/Master/texmf-dist/source/latex/rotating/examples.ex new file mode 100644 index 00000000000..dd0e05d5392 --- /dev/null +++ b/Master/texmf-dist/source/latex/rotating/examples.ex @@ -0,0 +1,2 @@ +\epsfig{figure=cat.eps,width=1in,% +angle=-56} diff --git a/Master/texmf-dist/source/latex/rotating/makefile b/Master/texmf-dist/source/latex/rotating/makefile new file mode 100644 index 00000000000..208e1e25332 --- /dev/null +++ b/Master/texmf-dist/source/latex/rotating/makefile @@ -0,0 +1,7 @@ +all: + tex rotating.ins + latex rotating.dtx + +clean: + -rm *.dvi *.aux *.log *.tmp *.toc *.lof *.lot *.idx *.ex + -rm rotating.sty diff --git a/Master/texmf-dist/source/latex/rotating/manifest b/Master/texmf-dist/source/latex/rotating/manifest new file mode 100644 index 00000000000..578b50ce7f3 --- /dev/null +++ b/Master/texmf-dist/source/latex/rotating/manifest @@ -0,0 +1,6 @@ +cat.eps PostScript file used in examples +examples.tex long test file +makefile +manifest +rotating.dtx commented source +rotating.ins TeX script to strip source diff --git a/Master/texmf-dist/source/latex/rotating/readme b/Master/texmf-dist/source/latex/rotating/readme new file mode 100644 index 00000000000..c8dcbee38fe --- /dev/null +++ b/Master/texmf-dist/source/latex/rotating/readme @@ -0,0 +1,9 @@ +A package built on the standard \LaTeX\ graphics package, and performs +all the different sorts of rotation one might like, including complete +figures and captions. The commented source contains the manual, and +there is a set of tests in examples.tex. + +Install by running \TeX\ on rotating.ins and place `rotating.sty' +where \LaTeX\ can find it. + + diff --git a/Master/texmf-dist/source/latex/rotating/rotating.dtx b/Master/texmf-dist/source/latex/rotating/rotating.dtx new file mode 100644 index 00000000000..c008c925b94 --- /dev/null +++ b/Master/texmf-dist/source/latex/rotating/rotating.dtx @@ -0,0 +1,378 @@ +\def\RInfo{1997/09/26, v2.13} +% +% \iffalse +%% File: rotating.dtx Copyright (C) 1995--1999 +% Sebastian Rahtz and Leonor Barroca +% <s.rahtz@elsevier.co.uk> +% +% This package may be distributed under the terms of the LaTeX Project Public +% License, as described in lppl.txt in the base LaTeX distribution. +% Either version 1.0 or, at your option, any later version. +% +% This package 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. +% +% A package to provide a rotation environment, and +% rotating floats and captions +% +%<*driver> +\documentclass{ltxdoc} +\begin{document} + \title{A style option for rotated objects in \LaTeX} + \author{Sebastian Rahtz \and Leonor Barroca} + \author{Leonor Barroca} + \date{printed today} + \maketitle + \tableofcontents + \listoffigures + \listoftables + \DocInput{rotating.dtx} +\end{document} +%</driver> +% \fi +% \CheckSum{388} +% \begin{abstract} +% This article documents a \LaTeX\ package, `rotating.sty', +% which perform all the different sorts of +% rotation one might like, including complete figures. +% \end{abstract} +% \section{History} +% +% Version 2.0 is a complete re-write, with most of the work now +% being done by the \LaTeXe\ graphics package. +% +% Version 2.1 provides a `clockwise' option to reinstate the behaviour +% described in the `\LaTeX\ Companion' +% +% Version 2.2 just intercepts the standard float macros instead +% of copying and changing the. The `twoside' option is obeyed. +% +% Version 2.5 corrects problems in sideways figures. +% +% Version 2.6 is a rewrite of the sideways floats via Frank Mittelbach +% (to whom many thanks for lookingat the mangy code). +% +% Version 2.7 is checked for \LaTeX\ of December 94, and adds the option +% of twoside behaviour independent of the general twoside. +% +% Version 2.8 cleans up some mistakes pointed out by Harald Axel Sommerfeldt. +% Version 2.9 cleans up some (more) mistakes pointed out by Harald Axel Sommerfeldt. +% \section{Usage} +% This style option provides three \LaTeX\ environments: +% \begin{description} +% \item[sideways] prints the contents turned through 90 degrees +% counterclockwise +% \item[turn] prints the contents turned through an arbitrary angle +% \item[rotate] prints the contents turned through an arbitrary angle +% but does \emph{not} leave any space for the result +% \end{description} +% A full set of examples are given in the file |examples.tex| +% Now we present the documented code. +% \section{Setup} +% \StopEventually{} +% \begin{macrocode} +%<*package> +\ProvidesPackage{rotating}[\RInfo\space Rotation package] +\NeedsTeXFormat{LaTeX2e} +\newif\if@rot@twoside +\DeclareOption{clockwise}{% this is for compatibility + \AtBeginDocument{\setkeys{Grot}{units=360}}% +} +\DeclareOption{counterclockwise}{% + \AtBeginDocument{\setkeys{Grot}{units=-360}}% +} +% \end{macrocode} +% Sideways figures and tables always take up the whole page. They can be +% rotated so that the bottom ot the figures is on the left or the right; +% the default is to always turn to the right. If the `twoside' option +% has been given to the main document class, this package then starts +% rotating sideways figures according to the page number (this requires +% two passes through \LaTeX{} at least). If you want the `twoside' +% option, but want the figures always in one direction, use the +% `figuresright' or `riguresleft' options to `rotating'. +% \begin{macrocode} +\DeclareOption{figuresleft}{% + \@rot@twosidefalse + \def\rot@LR{0}% +} +\DeclareOption{figuresright}{% + \@rot@twosidefalse + \def\rot@LR{-1}% +} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}} +\ExecuteOptions{clockwise} +\if@twoside + \@rot@twosidetrue +\else + \@rot@twosidefalse +\fi +\def\rot@LR{-1} +\ProcessOptions +\RequirePackage{graphicx} +\RequirePackage{ifthen} +\def\rotdriver#1{\makeatletter\input{#1.def}\makeatother} +\newcounter{r@tfl@t} +\setcounter{r@tfl@t}{0} +% \end{macrocode} +% \section{Turning and rotation environments} +% \begin{macro}{sideways} +% Environment to turn the contents through 90 degrees. +% \begin{macrocode} +\def\sideways{% + \Grot@setangle{90}% + \setbox\z@\hbox\bgroup\ignorespaces} +\def\endsideways{% + \unskip\egroup + \Grot@x\z@ + \Grot@y\z@ + \Grot@box +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{turn} +% Rotate the contents of the environment, leaving the appropriate space +% \begin{macrocode} +\def\turn#1{% + \Grot@setangle{#1}% + \setbox\z@\hbox\bgroup\ignorespaces} +\def\endturn{% + \unskip\egroup + \Grot@x\z@ + \Grot@y\z@ + \Grot@box +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{rotate} +% Rotate the contents of the environment, leaving \emph{no space}. +% \begin{macrocode} +\def\rotate#1{% + \Grot@setangle{#1}% + \setbox\z@\hbox\bgroup\ignorespaces} +\def\endrotate{% + \unskip\egroup + \Grot@x\z@ + \Grot@y\z@ + \wd0\z@\dp0\z@\ht0\z@ + \Grot@box +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\turnbox} +% A macro version of the `rotate' environment. +% \begin{macrocode} +\def\turnbox#1#2{% + \Grot@setangle{#1}% + \setbox\z@\hbox{{#2}}% + \Grot@x\z@\Grot@y\z@ + \wd0\z@\dp0\z@\ht0\z@ + \Grot@box +} +% \end{macrocode} +% \end{macro} +% \section{Sideways figures and tables} +% Now for the macros to provide a complete +% environment for sideways figures and tables. +% We define two environments |sidewaysfigure| and +% |sidewaystable| that +% fit in with the normal table and figure floats. These are `fixed' +% environments that just do 90 degree rotation, but it would be easy +% to parameterize this to do other rotations if needed (the mind +% boggles\ldots) +% +% First a generalised `rotfloat' environment. We need to intercept +% \LaTeX's float macros, in order to change the assumed width of a +% float being |\columnwidth|. We want it to work on a width of +% |\textheight| so that when we rotate the float, it comes out +% the right height. This is not actually very satisfactory, since what +% we \emph{really} want is for rotated floats to occupy the space they +% actually \emph{use}. The captions are a problem --- since they can +% precede the figure or table, we cannot set them in a box of the +% right width (ie the \emph{height} of the forthcoming object), because +% it has not happened yet. The result of these difficulties is that +% rotated figures always end up as full page figures. +% \begin{macrocode} +\newsavebox\rot@float@box +\def\@rotfloat#1{% + \@ifnextchar[% + {\@xrotfloat{#1}}% + {\edef\@tempa{\noexpand\@xrotfloat{#1}[\csname fps@#1\endcsname]}\@tempa}% +} +\def\@xrotfloat#1[#2]{% + \@float{#1}[#2]% +% \end{macrocode} +% Set the float contents in +% a box of |\textheight| instead of |\columnwidth|. +% \begin{macrocode} + \begin{lrbox}\rot@float@box + \begin{minipage}\textheight + } +% \end{macrocode} +% We call the |\end@float| macro having previously rotated +% the box |\@currbox| +% The rotation is either clockwise or +% anti-clockwise, depending on whether the page is odd or even; +% in oneside mode it is always odd. +% \begin{macrocode} +\def\end@rotfloat{% +% \end{macrocode} +% If we are going to know whether pages are odd or even, +% we need to use the a variant |\pageref| mechanism, and labels. But +% Labels won't work \emph{unless} the user has put in a +% caption. Beware! +% \begin{macrocode} + \end{minipage}\end{lrbox}% + \global\addtocounter{r@tfl@t}{1}% + \rot@label{RF\ther@tfl@t}% + \message{Adding sideways figure on }% + \def\R@@page{\pageref{RF\ther@tfl@t}}% + \wd\rot@float@box\z@ + \ht\rot@float@box\z@ + \dp\rot@float@box\z@ + \vbox to \textheight{% +% \end{macrocode} +% We need to know for sure which direction rotation is going to +% be in, so locally reset the graphics units. +% \begin{macrocode} + \setkeys{Grot}{units=360}% + \if@rot@twoside + \def\R@@page{\pageref{RF\ther@tfl@t}}% + \else + \let\R@@page\rot@LR + \fi + \ifthenelse{\isodd{\R@@page}}{% + \message{right hand page}% + \vfill + \centerline{\rotatebox{90}{\box\rot@float@box}}% + }{% + \message{left hand page}% + \centerline{\rotatebox{-90}{\box\rot@float@box}}% + \vfill + }% + }% + \end@float +} +% \end{macrocode} +% The following definitions set up two environments, +% \texttt{sidewaystable} and \texttt{sidewaysfigure}, which uses this +% type of float. Naturally, users may need to change these to suit +% their local style. Both contribute to the normal lists of figures +% and tables. +% \begin{macrocode} +\def\sidewaysfigure{\@rotfloat{figure}} +% +\let\endsidewaysfigure\end@rotfloat +% +\def\sidewaystable{\@rotfloat{table}} +\let\endsidewaystable\end@rotfloat +% \end{macrocode} +% Handling double column floats +% \begin{macrocode} +\def\@rotdblfloat{% + \if@twocolumn\let\reserved@a\@rotdbflt\else\let\reserved@a\@rotfloat\fi + \reserved@a} +\def\@rotdbflt#1{\@ifnextchar[{\@rotxdblfloat{#1}}{\@rotxdblfloat{#1}[tp]}} +\def\@rotxdblfloat#1[#2]{% + \hsize\textwidth\linewidth\textwidth + \@float{#1}[#2]% + \begin{lrbox}\rot@float@box + \begin{minipage}\textheight +} +\def\end@rotdblfloat{% + \end{minipage}\end{lrbox}% + \global\addtocounter{r@tfl@t}{1}% + \rot@label{RF\ther@tfl@t}% + \message{Adding sideways figure on }% + \def\R@@page{\pageref{RF\ther@tfl@t}}% + \@tempdima\ht\rot@float@box + \advance\@tempdima by \dp\rot@float@box +\typeout{BOX wd: \the\wd\rot@float@box, ht: \the\ht\rot@float@box, dp: \the\dp\rot@float@box: so shift by .5 of \the\@tempdima}% + \wd\rot@float@box\z@ + \ht\rot@float@box\z@ + \dp\rot@float@box\z@ + \vbox to \textheight{% + \setkeys{Grot}{units=360}% + \if@rot@twoside + \def\R@@page{\pageref{RF\ther@tfl@t}}% + \else + \let\R@@page\rot@LR + \fi + \ifthenelse{\isodd{\R@@page}}{% + \message{right hand page}% + \vfill + \hbox to\textwidth{\hfill\rotatebox{90}{\box\rot@float@box}\hfill}% + }{% + \message{left hand page}% + \hbox to \textwidth{\hfill\rotatebox{-90}{\box\rot@float@box}\hfill}% + \vfill + }% + }% + \end@dblfloat +} +\newenvironment{sidewaystable*} + {\@rotdblfloat{table}} + {\end@rotdblfloat} +\newenvironment{sidewaysfigure*} + {\@rotdblfloat{figure}} + {\end@rotdblfloat} + +% \end{macrocode} +% Note that we used |\rot@label|, not |\label|; this +% variant writes the \emph{true} page number, not the +% value of |\thepage|. It also involves a variant |\protected@write| +% for reasons which I do not fully understand. Let it stand. +% \begin{macrocode} +\long\def \r@protected@write#1#2#3{% + \begingroup + \let\therpage\relax + #2% + \let\protect\@unexpandable@protect + \edef\reserved@a{\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi +} +\def\therpage{\arabic{page}} +\def\rot@label#1{\@bsphack + \r@protected@write\@auxout{}% + {\string\newlabel{#1}{{\@currentlabel}{\therpage}}}% + \@esphack} +% \end{macrocode} +%\subsection{Rotated captions only} +% Sometimes you may find that the rotation of complete figures does +% not give quite the right result, since they always take up the whole +% page. You may prefer to rotate the caption and the float contents +% separately within a conventional figure. Here we offer a suggestion +% for a |\rotcaption| command, which inserts the caption rotated +% by 90 degrees. It is essentially a copy of the normal captioning +% code. +% Styles which define the |\@makecaption| command may also need +% to define |\@makerotcaption|. +% \begin{macrocode} +\def\rotcaption{\refstepcounter\@captype\@dblarg{\@rotcaption\@captype}} +\long\def\@rotcaption#1[#2]#3{% +\addcontentsline{\csname ext@#1\endcsname}{#1}{% + \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% + \par + \begingroup + \@parboxrestore + \normalsize + \@makerotcaption{\csname fnum@#1\endcsname}{#3}% + \endgroup} +\long\def\@makerotcaption#1#2{% + \setbox\@tempboxa\hbox{#1: #2}% + \ifdim \wd\@tempboxa > .8\vsize + \rotatebox{90}{% + \begin{minipage}{.8\textheight}#1: #2\end{minipage}% + }\par + \else% + \rotatebox{90}{\box\@tempboxa}% + \fi + \hspace{12pt}% +} +% \end{macrocode} +%</package> +% \Finale +\endinput +% diff --git a/Master/texmf-dist/source/latex/rotating/rotating.ins b/Master/texmf-dist/source/latex/rotating/rotating.ins new file mode 100644 index 00000000000..bcbcdb5c00a --- /dev/null +++ b/Master/texmf-dist/source/latex/rotating/rotating.ins @@ -0,0 +1,52 @@ +% \iffalse +% LaTex2e rotating package +% +% \fi +\def\fileversion{1} +\def\filedate{1994/04/14} +% +% \StopEventually{} +% +% As always we begin by identifying the latest version of this file +% on the VDU and in the {\sf log} file. +% \begin{macrocode} +\def\batchfile{rotating.ins} +\input docstrip.tex +\preamble + +Copyright (C) 1994 by Sebastian Rahtz and Leonor Barroca +All rights reserved. + +\endpreamble + +\def\batchfile{rotating.dst} % ignored in distribution +\input docstrip.tex % ignored in distribution + +\keepsilent + +\preamble +Copyright (C) 1994 Sebastian Rahtz and Leonor Barroca. All +rights reserved. Permission is granted to to customize the +declarations in this file to serve the needs of your installation. +However, no permission is granted to distribute a modified version of +this file under its original name. + +\endpreamble + +\Msg{*** Generating style file for using rotating package ***} + +\generateFile{rotating.sty}{f}{ + \from{rotating.dtx}{package}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the } +\Msg{* rotating.sty file into a directory searched by TeX} +\Msg{*} +\Msg{***********************************************************} + + +\endinput + + + |