summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/rotfloat
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/rotfloat
Initial commit
Diffstat (limited to 'macros/latex/contrib/rotfloat')
-rw-r--r--macros/latex/contrib/rotfloat/examples.tex209
-rw-r--r--macros/latex/contrib/rotfloat/rotfloat.dtx535
-rw-r--r--macros/latex/contrib/rotfloat/rotfloat.ins34
-rw-r--r--macros/latex/contrib/rotfloat/rotfloat.pdfbin0 -> 229271 bytes
4 files changed, 778 insertions, 0 deletions
diff --git a/macros/latex/contrib/rotfloat/examples.tex b/macros/latex/contrib/rotfloat/examples.tex
new file mode 100644
index 0000000000..aa5d39fdb0
--- /dev/null
+++ b/macros/latex/contrib/rotfloat/examples.tex
@@ -0,0 +1,209 @@
+%%
+%% This is file `examples.tex',
+%% Examples for the rotfloat package
+%%
+%% 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.
+%%
+\documentclass{article}
+\usepackage[figuresright]{rotfloat}[2004/01/04]
+\usepackage{shortvrb}
+
+\floatstyle{ruled}
+\floatname{program}{Program}
+\newfloat{program}{tbp}{lof}[section]
+\floatstyle{plain}
+\floatname{example}{Example}
+\newfloat{example}{t}{lof}[section]
+\floatstyle{boxed}
+\restylefloat{table}
+
+\begin{document}
+%\errorcontextlines9
+%\tracingmacros=1\tracingcommands=1
+
+\noindent First of all, here comes the original examples from the
+\textsf{float} package (just to see if they still work), the rotated
+versions of these will follow on the next pages (first without placement
+specifier, right afterwards with placement specifier \verb|[H]|):
+
+\begin{program}[H]
+\begin{verbatim}
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ int i;
+ for (i = 0; i < argc; ++i)
+ printf("argv[%d] = %s\n", i, argv[i]);
+ return 0;
+}
+\end{verbatim}
+\caption{The first program. This hasn't got anything to do with the style
+ but is included as an example. Note the \texttt{ruled} float style.%
+ \label{prog1.1}}
+\end{program}
+
+\begin{example}[H]
+\begin{verse}
+\MakeShortVerb{\|}
+|\floatstyle{ruled}|\\
+|\newfloat{Program}{tbp}{lop}[section]|\\
+\dots\ loads o' stuff \dots\\
+|\begin{Program}|\\
+|\begin{verbatim}|\\
+\dots\ program text \dots\\
+|\end{verbatim}|\\
+|\caption{|\dots\ caption \dots|}|\\
+|\end{Program}|
+\DeleteShortVerb{\|}
+\end{verse}
+\caption{This is another silly floating Example.}
+\end{example}
+
+\begin{table}[H] \def\B#1{$\displaystyle{n\choose#1}$}
+\begin{center} \begin{tabular}{c|cccccccc}
+$n$&\B0&\B1&\B2&\B3&\B4&\B5&\B6&\B7\\ \hline
+ 0 & 1\\
+ 1 & 1&1\\
+ 2 & 1&2&1\\
+ 3 & 1&3&3&1\\
+ 4 & 1&4&6&4&1\\
+ 5 & 1&5&10&10&5&1\\
+ 6 & 1&6&15&20&15&6&1\\
+ 7 & 1&7&21&35&35&21&7&1
+\end{tabular} \end{center}
+\caption{Pascal's triangle. This is a re-styled \LaTeX\ \texttt{table}.%
+ \label{table1}}
+\end{table}
+
+\clearpage
+
+\begin{sidewaysprogram}
+\begin{verbatim}
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ int i;
+ for (i = 0; i < argc; ++i)
+ printf("argv[%d] = %s\n", i, argv[i]);
+ return 0;
+}
+\end{verbatim}
+\caption{The first program. This hasn't got anything to do with the style
+ but is included as an example. Note the \texttt{ruled} float style.%
+ \label{prog1.2}}
+\end{sidewaysprogram}
+
+% Here we try the star-form just for fun.
+% Note that this leads to an error is rotating < 2.10 is used!
+%
+\begin{sidewaysexample*}
+\begin{verse}
+\MakeShortVerb{\|}
+|\floatstyle{ruled}|\\
+|\newfloat{Program}{tbp}{lop}[section]|\\
+\dots\ loads o' stuff \dots\\
+|\begin{Program}|\\
+|\begin{verbatim}|\\
+\dots\ program text \dots\\
+|\end{verbatim}|\\
+|\caption{|\dots\ caption \dots|}|\\
+|\end{Program}|
+\DeleteShortVerb{\|}
+\end{verse}
+\caption{This is another silly floating Example.}
+\end{sidewaysexample*}
+
+\begin{sidewaystable} \def\B#1{$\displaystyle{n\choose#1}$}
+\begin{center} \begin{tabular}{c|cccccccc}
+$n$&\B0&\B1&\B2&\B3&\B4&\B5&\B6&\B7\\ \hline
+ 0 & 1\\
+ 1 & 1&1\\
+ 2 & 1&2&1\\
+ 3 & 1&3&3&1\\
+ 4 & 1&4&6&4&1\\
+ 5 & 1&5&10&10&5&1\\
+ 6 & 1&6&15&20&15&6&1\\
+ 7 & 1&7&21&35&35&21&7&1
+\end{tabular} \end{center}
+\caption{Pascal's triangle. This is a re-styled \LaTeX\ \texttt{table}.%
+ \label{table2}}
+\end{sidewaystable}
+
+\clearpage
+\begin{sidewaysprogram}[H]
+\begin{verbatim}
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ int i;
+ for (i = 0; i < argc; ++i)
+ printf("argv[%d] = %s\n", i, argv[i]);
+ return 0;
+}
+\end{verbatim}
+\caption{The first program. This hasn't got anything to do with the style
+ but is included as an example. Note the \texttt{ruled} float style.%
+ \label{prog1.2}}
+\end{sidewaysprogram}
+
+\clearpage
+\begin{sidewaysexample}[H]
+\begin{verse}
+\MakeShortVerb{\|}
+|\floatstyle{ruled}|\\
+|\newfloat{Program}{tbp}{lop}[section]|\\
+\dots\ loads o' stuff \dots\\
+|\begin{Program}|\\
+|\begin{verbatim}|\\
+\dots\ program text \dots\\
+|\end{verbatim}|\\
+|\caption{|\dots\ caption \dots|}|\\
+|\end{Program}|
+\DeleteShortVerb{\|}
+\end{verse}
+\caption{This is another silly floating Example.}
+\end{sidewaysexample}
+
+\clearpage
+\begin{sidewaystable}[H] \def\B#1{$\displaystyle{n\choose#1}$}
+\begin{center} \begin{tabular}{c|cccccccc}
+$n$&\B0&\B1&\B2&\B3&\B4&\B5&\B6&\B7\\ \hline
+ 0 & 1\\
+ 1 & 1&1\\
+ 2 & 1&2&1\\
+ 3 & 1&3&3&1\\
+ 4 & 1&4&6&4&1\\
+ 5 & 1&5&10&10&5&1\\
+ 6 & 1&6&15&20&15&6&1\\
+ 7 & 1&7&21&35&35&21&7&1
+\end{tabular} \end{center}
+\caption{Pascal's triangle. This is a re-styled \LaTeX\ \texttt{table}.%
+ \label{table2}}
+\end{sidewaystable}
+
+% Finally a normal (not re-styled) sideways figure, again without and with [H]
+
+\begin{sidewaysfigure}
+THIS IS A FIGURE!
+\end{sidewaysfigure}
+
+\clearpage
+\begin{sidewaysfigure}[H]
+THIS IS A FIGURE!
+\end{sidewaysfigure}
+
+\end{document}
diff --git a/macros/latex/contrib/rotfloat/rotfloat.dtx b/macros/latex/contrib/rotfloat/rotfloat.dtx
new file mode 100644
index 0000000000..62c67ce3d2
--- /dev/null
+++ b/macros/latex/contrib/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/macros/latex/contrib/rotfloat/rotfloat.ins b/macros/latex/contrib/rotfloat/rotfloat.ins
new file mode 100644
index 0000000000..40928a8754
--- /dev/null
+++ b/macros/latex/contrib/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{***********************************************************}
+
diff --git a/macros/latex/contrib/rotfloat/rotfloat.pdf b/macros/latex/contrib/rotfloat/rotfloat.pdf
new file mode 100644
index 0000000000..c6a150ae04
--- /dev/null
+++ b/macros/latex/contrib/rotfloat/rotfloat.pdf
Binary files differ