diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/fullminipage/fullminipage.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/fullminipage/fullminipage.dtx | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/fullminipage/fullminipage.dtx b/Master/texmf-dist/source/latex/fullminipage/fullminipage.dtx new file mode 100644 index 00000000000..7d185793143 --- /dev/null +++ b/Master/texmf-dist/source/latex/fullminipage/fullminipage.dtx @@ -0,0 +1,327 @@ +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \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/06/22 v0.1.0 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} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \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 |