diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:57:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:57:09 +0000 |
commit | 25a63a89071064b748f75e62d8f093ca7cf71296 (patch) | |
tree | 11cf6551bc39755838111c20cb4df55fa6b79fb4 /Master/texmf-dist/source | |
parent | 6503c91bd38e667c9173750a5169f069184297b9 (diff) |
trunk/Master/texmf-dist/source/latex/rotfloat
git-svn-id: svn://tug.org/texlive/trunk@493 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/latex/rotfloat/rotfloat.dtx | 535 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/rotfloat/rotfloat.ins | 34 |
2 files changed, 569 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/rotfloat/rotfloat.dtx b/Master/texmf-dist/source/latex/rotfloat/rotfloat.dtx new file mode 100644 index 00000000000..62c67ce3d28 --- /dev/null +++ b/Master/texmf-dist/source/latex/rotfloat/rotfloat.dtx @@ -0,0 +1,535 @@ +% \iffalse meta-comment +% +% Copyright (c) 1995-2004 Axel Sommerfeldt (rotfloat@sommerfeldt.net) +% +% This file is part of the rotfloat package. +% ------------------------------------------ +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% 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.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% +% \fi +% \CheckSum{215} +% +% \iffalse +%<*driver> +\NeedsTeXFormat{LaTeX2e}[1994/12/01] +\documentclass{ltxdoc} +\setlength{\parindent}{0pt} +\setlength{\parskip}{\smallskipamount} +\begin{document} + \DocInput{rotfloat.dtx} +\end{document} +%</driver> +% \fi +% +% \newcommand*{\purerm}[1]{{\upshape\mdseries\rmfamily #1}} +% \newcommand*{\puresf}[1]{{\upshape\mdseries\sffamily #1}} +% \newcommand*{\purett}[1]{{\upshape\mdseries\ttfamily #1}} +% +% \changes{v1.0}{30 Mar 95}{First release} +% \changes{v1.1}{ 2 Feb 02}{Revised and adapted to new versions of float and rotating} +% \changes{v1.1a}{20 Feb 02}{Minor cosmetic changes} +% \changes{v1.2}{4 Jan 04}{Revised and support of [H] implemented} +% +% \GetFileInfo{rotfloat.sty} +% \def\fileversion{1.2} +% \def\filedate{2004/01/04} +% \title{The \puresf{rotfloat} package\thanks{This package has version number +% \fileversion, last revised \filedate.}} +% \author{Axel Sommerfeldt\\\texttt{rotfloat@sommerfeldt.net}} +% \date{2004/01/04} +% \maketitle +% +% \begin{abstract} +% The \textsf{float} package~\cite{float} provides commands to define new floats +% of various styles (|plain|, |boxed|, |ruled|, and userdefined ones); +% the \textsf{rotating} package~\cite{rotating} provides new environments (|sidewaysfigure| +% and |sidewaystable|) which are rotated by $90^\circ$ or $270^\circ$. +% But what about new rotated floats, e.g.\ a rotated ruled one? +% This package makes this possible; it builds a bridge between both packages +% and extend the commands from the \textsf{float} package to define rotated +% versions of the new floats, too. +% \end{abstract} +% +% \section{The user interface} +% To use this package just put the line +% \begin{quote} +% |\usepackage|\oarg{options}|{rotfloat}| +% \end{quote} +% into the preamble of your document. The options are exactly the same as +% for the \textsf{rotating} package, because all options will be passed to +% the \textsf{rotating} package. +% (The \textsf{rotfloat} package hasn't got any own options at all). +% +% \DescribeMacro{\newfloat} +% \DescribeMacro{\restylefloat} +% The commands |\newfloat| and |\restylefloat| from the \textsf{float} package +% (re)define the float type \meta{type} and now additionally a rotated one called +% \meta{\purett{sideways}type}: +% \begin{quote} +% |\newfloat|\marg{type}\marg{placement}\marg{ext}\oarg{within}\\ +% |\restylefloat|\marg{type} +% \end{quote} +% +% \begin{minipage}[t]\textwidth +% E.g.\ the code +% \begin{quote} +% |\floatstyle{ruled}|\\ +% |\floatname{program}{Program}|\\ +% |\newfloat{program}{tbp}{lop}[section]| +% \end{quote} +% defines the new floating environments |program|, |program*|, +% |sidewaysprogram|, and |sidewaysprogram*| +% which behave equivalent to |figure|, |figure*|, +% |sidewaysfigure|, and |sidewaysfigure*|. +% (Note that |sidewaysfigure*| has been introduced to version $2.10$ of the \puresf{rotating} +% package, therefore you only get a |sidewaysprogram*| environment if you use this or a newer +% version of the \puresf{rotating} package.) +% \end{minipage} +% +% \begin{minipage}[t]\textwidth +% The code +% \begin{quote}\nopagebreak% +% |\floatstyle{boxed}|\\ +% |\restylefloat{table}| +% \end{quote} +% will restyle the environments |table|, |table*|, |sidewaystable|, and |sidewaystable*|. +% \end{minipage} +% +% Please take a look at the \textsf{float} package for a complete description +% of these commands. +% Additionally an example file is provided with this package. +% +% \section{What has changed since version {1.0}?} +% Version $1.0$ of this package was a quick \& dirty hack. The +% version $1.1$ took it all more serious, it patched less code from +% the float package and especially it let the |[H]| code for the +% not-sideways floats intact. Furthermore it was adapted to the new +% version 1.3 of the float and 2.10 of the rotating package. +% +% This version $1.2$ is a further step in this direction. It was revised again +% to make it even more compatible to different versions of the float package. +% As an effect of this |[H]| for sideways floats is now fully supported +% (this could be desirable when used in cooperation with the \puresf{afterpage} package), +% furthermore a bug was fixed that caused problems if the \puresf{rotfloat} +% package was used together with the \puresf{color} package. +% +% \section{A final note} +% This package was tested with the versions $1.2$, $1.2c$, $1.2d$, $1.2e$, $1.3c$, +% and $1.3d$ of the \textsf{float} package and version $2.6$, $2.9$, $2.10$, $2.12$, +% and $2.13$ of the \textsf{rotating} package. +% +% You should \emph{not} use this package together with older versions of them! +% Future versions of these packages may make some trouble, but I hope they will not. +% If they do please don't hesitate to send me a bug report including a simple non-working +% example and the log file produced by \LaTeX. +% +% \section{Further reading} +% +% I recommend the following documents for further reading: +% +% \begin{itemize} +% \item +% The \TeX\ FAQ - Frequently asked questions about \TeX\ and \LaTeX : +% \begin{quote}\texttt{http://faq.tug.org/}\end{quote} +% +% \item +% A French FAQ can be found at +% \begin{quote}\texttt{http://www.grappa.univ-lille3.fr/FAQ-LaTeX/}\end{quote} +% +% \item +% A German FAQ can be fount at +% \begin{quote}\texttt{http://www.dante.de/faq/de-tex-faq/}\end{quote} +% +% \item +% \textsf{epslatex} from Keith Reckdahl contains many tips around +% graphics in \LaTeXe. You will find this document in the directory +% \begin{quote}\texttt{ftp://ftp.ctan.org/pub/tex/info/}\end{quote} +% as \texttt{epslatex.ps} and \texttt{epslatex.pdf}. +% +% There is also a french translation available at +% \begin{quote}\texttt{ftp://ftp.ctan.org/pub/tex/info/fepslatex.ps}\end{quote} +% +% \item +% \emph{``Gleitobjekte -- die richtige Schmierung''} from Axel Reichert +% is a German documentation about floating environments in general. +% You will find it here: +% \begin{quote}\texttt{ftp://ftp.ctan.org/pub/tex/info/german/gleitobjekte/}\end{quote} +% \end{itemize} +% +% +% \section{Thanks} +% +% I would like to thank Katja Melzner, Anselm Lingnau, Sebastian Rahtz, +% and \hbox{Wojciech} \hbox{Pietron}. +% +% \StopEventually{ +% \begin{thebibliography}{9} +% \bibitem{float} +% Anselm Lingnau: +% \textsl{An Improved Environment for Floats}, +% 2001/11/08 +% \bibitem{rotating} +% Sebastian Rahtz and Leonor Barroca: +% \textsl{A style option for rotated objects in \LaTeX}, +% 1997/09/26 +% \end{thebibliography} +% } +% \setlength{\parskip}{0pt plus 1pt} +% +% \DoNotIndex{\@ifnextchar,\@ifundefined,\@namedef,\@nameuse} +% \DoNotIndex{\bgroup,\columnwidth,\csname,\def,\edef,\egroup,\else,\endcsname} +% \DoNotIndex{\empty,\expandafter,\fi,\global,\ifx,\let,\newcommand,\noexpand} +% \DoNotIndex{\renewcommand,\setbox,\textheight,\typeout,\undefined,\vbox} +% \DoNotIndex{\CurrentOption,\DeclareOption,\ExecuteOptions,\NeedsTeXFormat} +% \DoNotIndex{\PassOptionsToPackage,\ProcessOptions,\ProvidesPackage,\RequirePackage} +% +% \iffalse +%<*package> +% \fi +% +% \section{The code} +% +% \emph{Note:} +% If you really want to know what's exactly going on here, you have to study the +% code from the packages \textsf{float} and \textsf{rotating} first! +% +% \subsection{The identification part} +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{rotfloat}[2004/01/04 v1.2 Combining float+rotating package (AS)] +% \end{macrocode} +% +% \subsection{The package loading part} +% +% Of course this package needs the \textsf{float} and the \textsf{rotating} +% package, so we load them both here. +% (The \textsf{rotfloat} package hasn't got any own options, so we just pass +% everything we get to the \textsf{rotating} package.) +% \changes{v1.1a}{19 Feb 02}{Use \cs{RequirePackageWithOptions} for rotating} +% +% \begin{macrocode} +\RequirePackage{float}[1994/06/20] % >= version 1.2 +\RequirePackageWithOptions{rotating}%[1995/01/06] % >= version 2.6 +% \end{macrocode} +% +% \subsection{Adaption of the float package} +% \changes{v1.0a}{1 Apr 95}{Blew \cs{float@end} up} +% +% We have different code for version $1.2$ and version $1.3$ of +% the \textsf{float} package. If |\@float@HH| is not defined we assume +% version $1.2$, otherwise version $1.3$. +% \changes{v1.1a}{19 Feb 02}{\cs{wlog} changed to \cs{PackageInfo}} +% +% \begin{macrocode} +\ifx\@float@HH\undefined + \PackageInfo{rotfloat}{float package v1.2 detected} +% \end{macrocode} +% +% First the code for version $1.2$ of the float package: +% +% \begin{macro}{\restylefloat} +% \changes{v1.0a}{1 Apr 95}{Extra |\bgroup| removed} +% \changes{v1.1}{1 Feb 02}{We define a *-sideways float as well} +% +% The new code for |\restylefloat| behaves like the old one, but it defines +% a sideways float as well. +% If |\@rotdblfloat| is defined we have loaded \textsf{rotating} version $2.10$ +% or newer. In this case we can define a star form as well. +% +% \begin{macrocode} + \let\rotfloat@restyle\restylefloat + \renewcommand*\restylefloat[1]{% + \rotfloat@restyle{#1}% + \@namedef{sideways#1}{\rotfloat@float{#1}}% + \expandafter\let\csname endsideways#1\endcsname\float@end + \ifx\@rotdblfloat\@undefined + \else + \@namedef{sideways#1*}{\rotfloat@dblfloat{#1*}}% + \expandafter\let\csname endsideways#1*\endcsname\float@dblend + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotfloat@float} +% \changes{v1.2}{29 Dec 03}{We use the original definitions via |\@namedef| now} +% +% What differs sideways floats from `normal' ones? +% \begin{enumerate} +% \item +% |\hsize|, |\textwidth|, and |\columnwidth| are set to |\textheight|. +% Usually this is done in |\@xrotfloat| (\puresf{rotating} package) +% but this time we have to do it for ourself because the \puresf{float} +% package handles floats differently: +% +% It collects its contents ($=$ |\@currbox|) first, so it can build up a new +% float contents (including the current one) later on. +% This step is neccessary because the \puresf{float} package will take care +% of the placement of the |\caption|. Furthermore it can add rules, boxes and +% so on here, whatever the actual float style wants to. +% (This is done in |\float@makebox|.) +% +% Note that we don't set |\hsize| here, because |\@xfloat| (part of \LaTeX) +% will set |\hsize| to |\columnwidth| anyway. +% +% \item +% We build up the float contents with |\rotfloat@makebox| (instead of +% |\float@makebox|) which rotates the contents additionally. +% \end{enumerate} +% +% \begin{macrocode} + \newcommand\rotfloat@float{% + \textwidth\textheight + \columnwidth\textheight + \let\rotfloat@@makebox\float@makebox + \let\float@makebox\rotfloat@makebox + \@nameuse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotfloat@dblfloat} +% +% For double column floats we use |\rotdblfloat@makebox| here. +% +% \begin{macrocode} + \newcommand\rotfloat@dblfloat{% + \textwidth\textheight + \columnwidth\textheight + \let\rotfloat@@makebox\float@makebox + \let\float@makebox\rotdblfloat@makebox + \@nameuse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@HHfloat} +% \changes{v1.1}{1 Feb 02}{Leave H-code intact for normal floats} +% \changes{v1.2}{29 Dec 03}{Leave H-code intact for sideways floats, too} +% +% For sideways floats with a placement specifier |[H]| the original code +% of |\@HHfloat| from the \puresf{float} package is sufficient. +% But we have to take care that at the end of the float |\rotfloat@endH| +% will be called instead of |\float@endH| so we can handle them correctly +% later on. +% +% \begin{macrocode} + \let\rotfloat@HH\@HHfloat + \def\@HHfloat#1{% + \expandafter\let\csname endsideways#1\endcsname\rotfloat@endH +% \expandafter\let\csname endsideways#1*\endcsname\rotfloat@dblendH + \let\end@float\relax + \rotfloat@HH{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotfloat@endH} +% +% The \puresf{float} package defines this command to close a floating +% environment with a |[H]| placement specifier: +% \begin{quote} +% |\newcommand\float@endH{%|\\ +% | \egroup| (\emph{or} |\@endfloatbox|)\\ +% | \vskip\intextsep|\\ +% | \if@flstyle\float@makebox\egroup\else\box\@currbox\fi|\\ +% | \vskip\intextsep\relax}| +% \end{quote} +% +% The |\egroup| (or |\@endfloatbox|) will close the |\@currbox| first. +% Afterwards the contents of the float will be typeset HERE, surrounded by +% some extra skip. +% If the float was defined with |\newfloat| or |\restylefloat|, +% |\float@makebox| will be used to build up the float contents. +% (An extra |\egroup| is needed to finish off the |\bgroup| that +% precedes the |\@nameuse| in the |\begin{|\meta{float}|}| commands. +% See the code documentation of the \puresf{float} package $v1.2$ for +% details.) +% Otherwise the vanilla |\@currbox| will be used. +% +% Here comes our version: +% If the float was defined with |\newfloat| or |\restylefloat| +% (that means |\if@flstyle| is true) +% we can use the original code from the \puresf{float} package +% because |\float@makebox| was replaced with |\rotfloat@makebox| anyway. +% (See our definition of |\rotfloat@float| for details.) +% +% But if this is not the case (that means |\if@flstyle| is false) +% we have to close the rotated float first. +% This is usually done with |\end@rotfloat| (which is part of the +% \puresf{rotating} package) but there is a caveat: |\end@rotfloat| +% uses |\end@float| which normally closes a floating environment. +% But we don't want to support floating here (well, that's why the user +% has specified the placement |[H]|), so we re-define |\end@float| to +% |\relax| which does simply nothing. +% (Note that this re-definition takes place in |\@HHfloat| because +% |\end@rotfloat| closes some environments first, so our re-definition +% would get lost if we would make it here.) +% Afterwards the original code from the \puresf{float} package +% ($=$ |\float@endH|) is sufficient again. +% +% \begin{macrocode} + \newcommand\rotfloat@endH{% + \if@flstyle + \else +% \let\end@float\relax + \end@rotfloat + \fi + \float@endH} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotfloat@makebox} +% +% Finally: The typesetting of a (re-styled) rotated float. +% +% This is quite simple: We put the |\float@makebox| inside +% a rotated environment. For this purpose we use |\@rotfloat| +% and |\end@rotfloat| which usually begin and end a rotated floating +% environment; they are provided by the \puresf{rotating} package. +% But we have to keep the floating stuff outside, so +% we define |\@float| (which is used by |\@rotfloat|) and +% |\end@float| (which is used by |\end@rotfloat|) to do nothing. +% +% \begin{macrocode} + \newcommand\rotfloat@makebox{% + \vbox{% + \def\@float##1[##2]{}\let\end@float\relax + \@rotfloat{}[]% + \rotfloat@@makebox + \end@rotfloat}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotdblfloat@makebox} +% +% Well, this is quite the same as |\rotfloat@makebox| but we use the +% appropriate macros for the star-variants of floating environments here. +% +% \begin{macrocode} + \newcommand\rotdblfloat@makebox{% + \vbox{% + \def\@float##1[##2]{}\let\end@dblfloat\relax + \@rotdblfloat{}[]% + \rotfloat@@makebox + \end@rotdblfloat}} +% \end{macrocode} +% \end{macro} +% +% So far the code for the version $1.2$ of the float package. +% +% \begin{macrocode} +\else +% \end{macrocode} +% +% Now the code for the \puresf{float} package version $1.3$: +% +% It is mainly the same, so we only tell you the small differences compared to +% the code inside the branch for the \puresf{float} package version $1.2$ here. +% +% \begin{macrocode} + \PackageInfo{rotfloat}{float package v1.3 detected} +% \end{macrocode} +% +% \begin{macro}{\float@restyle} +% We have to extend |\float@restyle| instead of |\restylefloat| here, +% so |\restylefloat*| will still work. +% \begin{macrocode} + \let\rotfloat@restyle\float@restyle + \renewcommand*\float@restyle[1]{% + \rotfloat@restyle{#1}% + \@namedef{sideways#1}{\rotfloat@float{#1}}% + \expandafter\let\csname endsideways#1\endcsname\float@end + \ifx\@rotdblfloat\@undefined + \else + \@namedef{sideways#1*}{\rotfloat@dblfloat{#1*}}% + \expandafter\let\csname endsideways#1*\endcsname\float@dblend + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotfloat@float} +% \begin{macro}{\rotfloat@dblfloat} +% These two don't have to be changed. +% \begin{macrocode} + \newcommand\rotfloat@float{% + \textwidth\textheight + \columnwidth\textheight + \let\rotfloat@@makebox\float@makebox + \let\float@makebox\rotfloat@makebox + \@nameuse} + \newcommand\rotfloat@dblfloat{% + \textwidth\textheight + \columnwidth\textheight + \let\rotfloat@@makebox\float@makebox + \let\float@makebox\rotdblfloat@makebox + \@nameuse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@float@HH} +% We have to extend |\@float@HH| instead of |\@HHfloat| here. +% \begin{macrocode} + \let\rotfloat@HH\@float@HH + \def\@float@HH#1{% + \expandafter\let\csname endsideways#1\endcsname\rotfloat@endH +% \expandafter\let\csname endsideways#1*\endcsname\rotfloat@dblendH + \let\end@float\relax + \rotfloat@HH{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotfloat@endH} +% This one hasn't to be changed. +% \begin{macrocode} + \newcommand\rotfloat@endH{% + \if@flstyle + \else +% \let\end@float\relax + \end@rotfloat + \fi + \float@endH} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rotfloat@makebox} +% \begin{macro}{\rotdblfloat@makebox} +% |\float@makebox| has a parameter here which will be set to |\columnwidth| or +% |\textwidth|. (In the \puresf{float} package $v1.2$ the |\columnwidth| was +% hard wired into |\float@makebox|.) So we have to pass this parameter through +% the original version of |\float@makebox| which we have saved to +% |\rotfloat@@makebox| within |\rotfloat@float|.) +% \begin{macrocode} + \newcommand*\rotfloat@makebox[1]{% + \vbox{% + \def\@float##1[##2]{}\let\end@float\relax + \@rotfloat{}[]% + \rotfloat@@makebox{#1}% + \end@rotfloat}} + \newcommand*\rotdblfloat@makebox[1]{% + \vbox{% + \def\@float##1[##2]{}\let\end@dblfloat\relax + \@rotdblfloat{}[]% + \rotfloat@@makebox{#1}% + \end@rotdblfloat}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% That's all folks. +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \iffalse +%</package> +% \fi +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/latex/rotfloat/rotfloat.ins b/Master/texmf-dist/source/latex/rotfloat/rotfloat.ins new file mode 100644 index 00000000000..40928a87541 --- /dev/null +++ b/Master/texmf-dist/source/latex/rotfloat/rotfloat.ins @@ -0,0 +1,34 @@ +\def\batchfile{rotfloat.ins} +\input docstrip + +\keepsilent +\preamble + +Copyright (c) 1995-2004 Axel Sommerfeldt (rotfloat@sommerfeldt.net) + +This file is part of the rotfloat package. +------------------------------------------ + +It may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.2 +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.2 or later is part of all distributions of LaTeX +version 1999/12/01 or later. + +\endpreamble + +%\generateFile{rotfloat.drv}{t}{\from{rotfloat.dtx}{driver}} +\generateFile{rotfloat.sty}{t}{\from{rotfloat.dtx}{package}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the file} +\Msg{* `rotfloat.sty' into a directory searched by TeX.} +\Msg{*} +\Msg{* To produce the documentation run the file `rotfloat.dtx'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{***********************************************************} + |