% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \iffalse meta-comment % % DocStrip file for fullminipage package % % Copyright 2012 Christian Schneider % % 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 . % % WARNING: THIS IS ALPHA SOFTWARE AND MAY CONTAIN SERIOUS BUGS! % % \fi % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \iffalse %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{fullminipage} % [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} % % \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{}, \url{http://chschneider.eu}.}} % \author{Christian Schneider\\ \texttt{}} % % \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{}|. % 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{}. % % \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