summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/fullminipage/fullminipage.dtx
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/fullminipage/fullminipage.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/fullminipage/fullminipage.dtx')
-rw-r--r--macros/latex/contrib/fullminipage/fullminipage.dtx328
1 files changed, 328 insertions, 0 deletions
diff --git a/macros/latex/contrib/fullminipage/fullminipage.dtx b/macros/latex/contrib/fullminipage/fullminipage.dtx
new file mode 100644
index 0000000000..10bfd8945d
--- /dev/null
+++ b/macros/latex/contrib/fullminipage/fullminipage.dtx
@@ -0,0 +1,328 @@
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \iffalse meta-comment
+%
+% DocStrip file for fullminipage package
+%
+% Copyright 2012 Christian Schneider <software(at)chschneider(dot)eu>
+%
+% This file is part of fullminipage.
+%
+% fullminipage is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License version 3 as
+% published by the Free Software Foundation, not any later version.
+%
+% fullminipage 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 fullminipage. If not, see <http://www.gnu.org/licenses/>.
+%
+% WARNING: THIS IS ALPHA SOFTWARE AND MAY CONTAIN SERIOUS BUGS!
+%
+% \fi
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{fullminipage}
+%<package> [2014/07/06 v0.1.1 fullpage minipage environment]
+%<*driver>
+\documentclass[a4paper]{ltxdoc}
+\usepackage{fullminipage}
+\usepackage{hyperref}
+\usepackage{units}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+%
+% modified description environment
+\newcommand{\listmark}{$\bullet$}
+\newcommand{\listlengths}{%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\leftmargin}{10.5em}%
+ \setlength{\rightmargin}{0pt}%
+ \setlength{\labelsep}{1em}%
+ \setlength{\labelwidth}{9.5em}}
+\newenvironment{mydescription}{%
+ \begin{list}{\listmark}{\listlengths}%
+}{%
+ \end{list}%
+}
+%
+\begin{document}
+ \DocInput{fullminipage.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \changes{v0.1.0}{2014/06/22}{initial public version}
+% \changes{v0.1.1}{2014/07/06}{corrected README file; no \LaTeX{} changes}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \CheckSum{151}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \GetFileInfo{fullminipage.sty}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\@ne}
+% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
+% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \title{The \textsf{fullminipage} package\thanks{This document corresponds
+% to \textsf{fullminipage}~\fileversion, dated~\filedate. Copyright
+% 2012,2014 Christian Schneider
+% \texttt{<software(at)chschneider(dot)eu>}, \url{http://chschneider.eu}.}}
+% \author{Christian Schneider\\ \texttt{<software(at)chschneider(dot)eu>}}
+%
+% \maketitle
+%
+% \tableofcontents
+% \clearpage
+%
+% \begin{abstract}
+% This package provides the environment |fullminipage|, which generates a
+% |minipage| spanning a new, complete page with page style |empty|.
+% The environment provides options to set margins around the |minipage| and
+% configure the background.
+% \end{abstract}
+%
+% \section{Usage}
+%
+% \subsection{The Environment}
+%
+% \DescribeEnv{fullminipage}
+% The environment |fullminipage| generates a new page with page style |empty|,
+% which is spanned by a |minipage|.
+% The available horizontal and vertical sizes are |\hsize| and |\vsize|,
+% respectively.
+%
+% Caveat: The clearing of the page before/after the |fullminipage| might not
+% be done correctly in certain circumstances, in particular, multi-column
+% documents.
+% Please refer to the |pagebreak| option for details.
+%
+% \subsection{Options}
+%
+% The environment |fullminipage| has an optional argument, which accepts
+% a comma-separated list of \meta{key}|=|\meta{value} pairs:
+% \begin{mydescription}
+% \item[\textsf{left}] left margin (default: $\unit[0]{pt}$)
+% \item[\textsf{right}] right margin (default: $\unit[0]{pt}$)
+% \item[\textsf{top}] top margin (default: $\unit[0]{pt}$)
+% \item[\textsf{bottom}] bottom margin (default: $\unit[0]{pt}$).
+% Note that content exceeding the vertical size of the minipage will not be
+% ``stopped'' by the bottom margin.
+% The value is rather used to calculate the vertical size of the minipage.
+% \item[\textsf{alignment}] the vertical alignment inside the minipage (one
+% of |tcb|; default: |t|)
+% \item[\textsf{bgcolor}] color of the background (except for the
+% margins, empty by default).
+% Omitting the \meta{value} will lead to a black background.
+% A blue background can, for example, be generated with |bgcolor=blue|.
+% \item[\textsf{background}] arbitrary macro for the background (empty by
+% default).
+% This allows, for example, to put an image into the background with
+% |background=\includegraphics{<file>}|.
+% The image will be aligned in the lower left corner of the minipage.
+% Note that |background| is put on top of the background color defined by
+% |bgcolor|.
+% \item[\textsf{pagebreak}] macro for clearing page before and after inserting
+% the |fullminipage|.
+% By default, |\newpage| will be used in single-column documents and
+% |\clearpage|, if a multi-column style is detected.
+% This detection, however, might fail and the user might want to explicitly
+% set |pagebreak=\clearpage|.
+% Note that |\clearpage| has the side-effect of flushing all pending floats.
+% \end{mydescription}
+%
+% \section{License}
+%
+% \textsf{fullminipage} is free software: you can redistribute it and/or
+% modify it under the terms of the GNU General Public License version~3 as
+% published by the Free Software Foundation, not any later version.
+%
+% \textsf{fullminipage} 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
+% fullminipage. If not, see \texttt{<http://www.gnu.org/licenses/>}.
+%
+% \section{Bugs, problems, and suggestions}
+%
+% Please report bugs and problems or send suggestions for this package to
+% Christian Schneider.
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \section{Implementation}
+%
+% The implementation is briefly described in this section. First of all, we
+% need the \textsf{keyval} package for \meta{key}|=|\meta{value} options.
+% The \textsf{color} package will only be required, if the background color
+% needs to be defined.
+% \begin{macrocode}
+\RequirePackage{keyval}
+\RequirePackage{color}
+% \end{macrocode}
+%
+% Next, the \meta{key}s are defined:
+% \begin{macrocode}
+\define@key{fullminipage}{left}{\def\fullminipage@left{#1}}
+\define@key{fullminipage}{right}{\def\fullminipage@right{#1}}
+\define@key{fullminipage}{top}{\def\fullminipage@top{#1}}
+\define@key{fullminipage}{bottom}{\def\fullminipage@bottom{#1}}
+\define@key{fullminipage}{alignment}{\def\fullminipage@alignment{#1}}
+\define@key{fullminipage}{bgcolor}[black]{\def\fullminipage@bgcolor{#1}}
+\define@key{fullminipage}{background}{\def\fullminipage@background{#1}}
+\define@key{fullminipage}{pagebreak}{\def\fullminipage@pagebreak{#1}}
+% \end{macrocode}
+%
+% Finally, the environment is defined:
+% \begin{macrocode}
+\newenvironment{fullminipage}[1][]{%
+ \begingroup
+% \end{macrocode}
+%
+% The \meta{key}|=|\meta{value} pairs are evaluated and a simple detection
+% for two-column layout is performed.
+% \begin{macrocode}
+ \setkeys{fullminipage}{left=\z@,right=\z@,top=\z@,bottom=\z@,%
+ alignment=t,background={},pagebreak=\newpage}%
+ \@ifundefined{twocolumn@sw}{}%
+ {\twocolumn@sw{\setkeys{fullminipage}{pagebreak=\clearpage}}{}}%
+ \if@twocolumn\setkeys{fullminipage}{pagebreak=\clearpage}\fi%
+ \setkeys{fullminipage}{#1}%
+% \end{macrocode}
+%
+% A new page is started with pagestyle |empty|.
+% \begin{macrocode}
+ \fullminipage@pagebreak
+ \thispagestyle{empty}%
+% \end{macrocode}
+%
+% The top position is calculated and the top (vertical) position adjusted
+% with |\vspace*|.
+% \begin{macrocode}
+ \@tempdima=-1in
+ \advance\@tempdima by-\voffset
+ \advance\@tempdima by-\topmargin
+ \advance\@tempdima by-\headheight
+ \advance\@tempdima by-\headsep
+ \@tempdimb=\@tempdima
+ \advance\@tempdima by-\parskip
+ \advance\@tempdima by-\topskip
+ \advance\@tempdima by\fullminipage@top
+ \vspace*{\@tempdima}%
+% \end{macrocode}
+%
+% The bottom position is calculated and the current page size enlarged
+% accordingly with |\enlargethispage|.
+% \begin{macrocode}
+ \@tempdima=\paperheight
+ \advance\@tempdima by\@tempdimb
+ \advance\@tempdima by-\textheight
+ \advance\@tempdima by-\fullminipage@bottom
+ \enlargethispage{\@tempdima}%
+% \end{macrocode}
+%
+% The position corresponding to the left margin is calculated.
+% \begin{macrocode}
+ \leftmargin=-1in
+ \advance\leftmargin by-\hoffset
+ \if@twoside
+ \ifodd\value{page}%
+ \advance\leftmargin by-\oddsidemargin
+ \else
+ \advance\leftmargin by-\evensidemargin
+ \fi
+ \else
+ \advance\leftmargin by-\oddsidemargin
+ \fi
+ \advance\leftmargin by\fullminipage@left
+% \end{macrocode}
+%
+% The length of a line is calculated and the margins are set with
+% |\parshape|.
+% \begin{macrocode}
+ \linewidth=\paperwidth
+ \advance\linewidth by-\fullminipage@left
+ \advance\linewidth by-\fullminipage@right
+ \parshape \@ne \leftmargin \linewidth
+% \end{macrocode}
+%
+% Prepare output without extra spaces.
+% \begin{macrocode}
+ \nointerlineskip
+ \noindent
+% \end{macrocode}
+%
+% The value of |\vsize| is calculated and set. (If it is set before the
+% |\noindent| above, it will be overwritten in some cases.)
+% \begin{macrocode}
+ \vsize=\paperheight
+ \advance\vsize by-\fullminipage@top
+ \advance\vsize by-\fullminipage@bottom
+% \end{macrocode}
+%
+% A zero-sized |picture| environment containing the background is output and the
+% |minipage| is started.
+% \begin{macrocode}
+ \begin{picture}(0,0)
+ \@ifundefined{fullminipage@bgcolor}{}{%
+ \put(0,0){\makebox(0,0)[bl]%
+ {\color{\fullminipage@bgcolor}{\rule{\linewidth}{\vsize}}}%
+ }%
+ }%
+ \put(0,0){\makebox(0,0)[bl]%
+ {\fullminipage@background}%
+ }%
+ \end{picture}%
+ \begin{minipage}[b][\vsize][\fullminipage@alignment]{\linewidth}
+}%
+% \end{macrocode}
+%
+% The |minipage| is closed and a new page is started.
+% \begin{macrocode}
+{%
+ \end{minipage}%
+ \parfillskip=\z@
+ \fullminipage@pagebreak
+ \endgroup
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \Finale
+%
+\endinput