From 8b2864e5e56bf67ac61ff644c72cb5575ff1135c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 12 Aug 2011 15:32:16 +0000 Subject: new latex package realboxes (11aug11) git-svn-id: svn://tug.org/texlive/trunk@23511 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/realboxes/realboxes.dtx | 999 +++++++++++++++++++++ .../source/latex/realboxes/realboxes.ins | 49 + 2 files changed, 1048 insertions(+) create mode 100644 Master/texmf-dist/source/latex/realboxes/realboxes.dtx create mode 100644 Master/texmf-dist/source/latex/realboxes/realboxes.ins (limited to 'Master/texmf-dist/source/latex/realboxes') diff --git a/Master/texmf-dist/source/latex/realboxes/realboxes.dtx b/Master/texmf-dist/source/latex/realboxes/realboxes.dtx new file mode 100644 index 00000000000..dcf555b1286 --- /dev/null +++ b/Master/texmf-dist/source/latex/realboxes/realboxes.dtx @@ -0,0 +1,999 @@ +% \iffalse meta-comment +% +% Copyright (C) 2011 by Martin Scharrer +% --------------------------------------------------------------------------- +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% 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.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Martin Scharrer. +% +% This work consists of the files realboxes.dtx and realboxes.ins +% and the derived filebase realboxes.sty. +% +% \fi +% +% \iffalse +%<*driver> +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesFile{realboxes.dtx} + [2011/08/08 v0.2 DTX file] +\documentclass{ydoc} +\usepackage{realboxes}[2011/08/08] +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\optionaloff +\begin{document} + \DocInput{realboxes.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi +% +% \CheckSum{545} +% +% \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 \~} +% +% +% \changes{v0.1}{2011/08/04}{First release.} +% \changes{v0.2}{2011/08/08}{Fixed \cs{Savebox}. Added much more documentation.} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% \providecommand*{\url}{\texttt} +% \GetFileInfo{realboxes.dtx} +% \title{The \textsf{realboxes} package} +% \author{Martin Scharrer \\ \url{martin@scharrer-online.de}} +% \date{\fileversion~from \filedate} +% +% \maketitle +% \begin{abstract} +% Provides variants of common ``box''-macros which reads their content as real box and not as macro argument. +% \end{abstract} +% +% \section{Introduction} +% The \LaTeX\ core and several packages like \pkg{graphics/x} provide +% some \cs{box} macros which modify their content by first placing it into a box. +% However, these macros still read their content as a macro argument and therefore +% do no support verbatim content. This package provides variants of these macros +% which use the authors other package \pkg{collectbox} to collect the content +% as real box before it is modified (framed, raised, scaled, rotated, etc.). +% This allows for verbatim and other special content. +% +% The provided macros simply have the same names as the original versions but +% start with an upper-case letter instead. +% However, these macros do not support the special \env{picture} syntax as the original macros. +% The ``long-form'' macros, like \Macro\Makebox, can also be used as environments, but +% not the ``short-form'' macros, like \Macro\Mbox. However, normally the long form uses +% the short form anyway when no optional arguments are used. +% +% \subsection*{Length values} +% Some of the macros await length values to specify a dimension of the content. +% For all macros the lengths \Macro\width, \Macro\height, \Macro\depth and \Macro\totalheight\relax +% (= height + depth) can be used to refer to the original dimensions of the content. +% Also the \pkg{adjcalc} package from the \pkg{adjustbox} bundle is used to allow for +% mathematical expressions for these values. By default the $\epsilon$-\TeX\ primitive +% \Macro\dimexpr is used which allows for |+|, |-|, |*| and |/| as well as grouping using |( )|. +% If either $\epsilon$-\TeX\ or the \pkg{adjcalc} package is not available, than the \pkg{calc} +% package is used by default. It is also possible to use the \pkg{pgfmath} framework of the +% \pkg{pgf} bundle. To select a different math back-end simply load the \pkg{adjcalc} package +% with one of the options `|etex|', `|calc|', `|pgfmath|' or `|none|' before the \pkg{realboxes} package. See the +% \pkg{adjustbox} manual for more information about \pkg{adjcalc}. +% +% +% \section{Usage} +% The following macros are provided dependent on the used package options. +% The options state other packages which are loaded and variants of their box macros are provided. +% See the package manual for more details about these macros. +% If loaded without any options the \opt{core} macros are loaded as well as all +% variant of macros for all already loaded packages (``auto-detection mode''). +% +% +% \subsection{\LaTeX\ code macros (option \opt{core})} +% +% \DescribeMacro{\Mbox}{} +% This variant of \Macro\mbox is the only macro which doesn't use \Macro\collectbox +% because of the simplicity of the original macro. \Macro\Mbox will use \Macro\hbox +% directly to process the \marg{content} (and will expand it to search for the opening brace). +% The special case when \marg{content} is a single token is handling by using \Macro\mbox instead. +% +% +% \DescribeMacro{\Makebox}[][]{} +% Places the \meta{content} in a box of width \meta{width} (by default the native width) and horizontally aligns it +% accordantly to \meta{position}. Valid values are |l| for left, |r| for right and |c| for center alignment (default). +% If no optional arguments are used this macro equals to \Macro\Mbox. +% +% +% \DescribeMacro{\Fbox}{} +% Draws a frame around \meta{content} with a line width of \Macro\fboxrule and a separation of \Macro\fboxsep. +% The baseline of the content is not affected. +% +% +% \DescribeMacro{\Framebox}[][]{} +% Like \Macro\Makebox but draws a frame like \Macro\Fbox. +% If no optional arguments are used this macro equals to \Macro\Fbox. +% +% \DescribeMacro{\Frame}{} +% Similar to \Macro\Fbox but does draw the frame tightly around its content with no separation. The resulting box will also have no depth, i.e. +% might be moved up. Note that the original \Macro\frame macro is indented for use inside a \env{picture} environment but can also be used in +% normal text. The line width is the current \env{picture} line width (|\@wholewidth|) which can be (globally) set +% using \Macro\linethickness{} (also in normal text mode). +% +% +% +% +% \DescribeMacro{\Raisebox}{}[][]{} +% Raises the \meta{content} by \meta{length}. Negative values lower the content. +% In addition to this the official height and depth can be set. This does not scale the content, +% but only make \TeX\ reserve less vertical space. +% +% +% \DescribeMacro{\Centerline}{} +% Places \meta{content} into a box of width \Macro\linewidth and centers it inside this box (even if the content is wider). +% This is similar to \Macro\Makebox[\AlsoMacro\linewidth][c]{}. +% +% +% \DescribeMacro{\Leftline}{} +% Places \meta{content} into a box of width \Macro\linewidth and left aligns it inside this box. +% If the content is wider it will stick out on the right site. +% This is similar to \Macro\Makebox[\AlsoMacro\linewidth][l]{}. +% +% +% \DescribeMacro{\Rightline}{} +% Places \meta{content} into a box of width \Macro\linewidth and right aligns it inside this box. +% If the content is wider it will stick out on the left site. +% This is similar to \Macro\Makebox[\AlsoMacro\linewidth][r]{}. +% +% +% \DescribeMacro{\Rlap}{} +% Places \meta{content} into a box of zero width so that it laps over to the right site. The following material to the right will be printed +% on top of it. +% This is similar to \Macro\Makebox['0pt'][l]{}. +% +% \DescribeMacro{\Llap}{} +% Places \meta{content} into a box of zero width so that it laps over to the left site. The content will be printed on top of the +% previous material on the left. +% This is similar to \Macro\Makebox['0pt'][l]{}. +% +% +% \DescribeMacro{\Parbox}[][][]{}{} +% Places the \meta{content} into a paragraph box of the given \meta{width}. +% The optional \meta{pos} argument can be used to select the vertical alignment of the box towards the surrounding: +% `|t|' align box to the top baseline, `|b|' align to the bottom +% baseline or `|c|' vertically center the content. +% In addition to this the \meta{height} and the \meta{inner pos}ition can be set as further optional arguments. +% Valid values for \meta{inner-pos} are: `|t|' flush content to the top, `|b|' flush content to the bottom, +% `|c|' center the content inside the box or `|s|' to stretch the material vertically across the box. This only works if the content contains +% something vertically stretchable. +% +% This macro uses also \pkg{collectbox} but redefines an internal macro to collect a vertical box instead of the usual horizontal one. +% +% +% \DescribeMacro{\Sbox}{<\textbackslash boxregister>}{} +% This saves the \meta{content} into the given \meta{\textbackslash boxregister}, which must be first allocated +% using \Macro\newsavebox{<\textbackslash boxregister>}. +% +% \DescribeMacro{\Savebox}{<\textbackslash boxregister>}[][]{} +% Sets the \meta{content} in a box of the given width and alignment like \Macro\Makebox and stores it in \meta{\textbackslash boxregister}. +% If no optional arguments are used this macro equals to \Macro\Sbox. +% +% \Needspace*{10\baselineskip} +% \subsection{Color macros (option \opt{color} or \opt{xcolor})} +% \DescribeMacro{\Colorbox}[]{}{} +% Sets the \meta{content} into a box with the given background \meta{color}. If required the \meta{color model} can be specified. +% +% \DescribeMacro{\Fcolorbox}[]{}[]{}{} +% Sets the \meta{content} into a box with the given \meta{background color} and draws a frame around it like \Macro\Fbox but with +% a given \meta{frame color}. +% If required the color \meta{model} can be specified. If only the frame color model is specified it will also be used for the background color. +% +% +% \Needspace*{6\baselineskip} +% \subsection{Graphic macros (option \opt{graphics} or \opt{graphicx})} +% \DescribeMacro{\Rotatebox}[]{}{} +% Rotates the \meta{content} by \meta{angle} which is be default in degrees anti-clockwise (360 = full circle). +% As \meta{options} the following keys can be used: +% \begin{description}\def\oitem#1#2{\item[{\normalfont\ttfamily \MacroArgs'#1='<#2>\relax}]}% +% \oitem{x}{dimen} +% \oitem{y}{dimen} Allows to specify the X and Y coordinate of the coordinate of the center of rotation relative to the reference point +% of the box. +% \oitem{origin}{label} Allows to specify the center of the rotation using the following letters which can be combined: `|l|' left side, +% `|r|' right side, `|c|' center of the box, `|t|' top of the box, `|b|' bottom of the box and `|B|' for the base line. +% For example `|tr|' rotates about the top right corner. +% \oitem{units}{number} allows to change the default units of degrees anti-clockwise (|360|) to any \meta{number} of units in one full +% anti-clockwise rotation. For example |-360| specifies degrees clockwise and |6.283185| specifies radians. +% \end{description} +% +% +% \DescribeMacro{\Scalebox}{}[]{} +% Scales the \meta{content} by the given \meta{scale} factor. The vertical scaling can be specified independently using the optional argument. +% +% +% \DescribeMacro{\Reflectbox}{} +% This reflects the \meta{content} and is equal to \Macro\Scalebox{-1}{1}{}. +% +% +% \DescribeMacro{\Resizebox}{}{}{} +% Resizes the \meta{content} to the given \meta{width} and/or \meta{height}. +% The special value `|!|' can be used for one of the two values to scale it accordantly to the other value. +% \Macro\Resizebox{'!'}{'!'}{} will not change the size of the content. +% If both values are used the aspect ratio might be changed. This can be avoided (for the local \TeX\ group) using +% \Macro\setkeys{Gin}{keepaspectratio}. Then the content is scaled to the smaller of the two values. +% +% \DescribeMacro{\Resizebox}'*'{}{}{} +% Like \Macro\Resizebox but scales the total height (= height + depth) instead of the height. +% +% +% \subsection{Macros of the \pkg{dashbox} package (option \opt{dashbox})} +% +% \DescribeMacro{\Dbox}{} +% Like \Macro\Fbox but uses a dashed line instead. +% +% \DescribeMacro{\Dashbox}[][]{} +% Like \Macro\Framebox but uses a dashed line instead. +% +% \DescribeMacro{\Lbox}[]{} +% Draws some solid background layers to the lower right of the content which produces a shadow effect. +% The \meta{content} is supposed to also use \Macro\Dbox or \Macro\Fbox to draw the foreground dash or frame box. +% By default two layers are drawn but this can be changed by the optional argument. +% +% \DescribeMacro{\Dlbox}[]{} +% Like \Macro\Lbox but draws the layers with dashed lines instead. +% +% +% \subsection{Compatibility with the \pkg{fancybox} package (option \opt{fancybox})} +% The \pkg{fancybox} package defines its macros already in a verbatim compatible way. +% However, if this option is used the \Macro\Sbox macro provided by the \opt{core} option is defined in a way to not +% collide with the \opt{Sbox} environment of this package. +% +% \StopEventually{} +% +% \clearpage +% \section{Implementation} +% +% \iffalse +%<*package> +% \fi +% \subsection{Package Header and Options} +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesPackage{realboxes}[2011/08/08 v0.2 Change box commands to read there content as real boxes] +\newif\ifrealboxes@core +\newif\ifrealboxes@xcolor +\newif\ifrealboxes@color +\newif\ifrealboxes@graphicx +\newif\ifrealboxes@graphics +\newif\ifrealboxes@dashbox +\newif\ifrealboxes@fancybox +\DeclareOption{all}{% + \realboxes@coretrue + \realboxes@xcolortrue + \realboxes@colortrue + \realboxes@graphicxtrue + \realboxes@graphicstrue + \realboxes@dashboxtrue + \realboxes@fancyboxtrue +} +\DeclareOption*{% + \begingroup + \expandafter\ifx\csname realboxes@\CurrentOption true\endcsname\relax + \endgroup + \@unknownoptionerror + \else + \endgroup + \csname realboxes@\CurrentOption true\endcsname + \fi +} +\ProcessOptions\relax +% \end{macrocode} +% +% \begin{macrocode} +\edef\@tempa{\@ptionlist{\@currname.\@currext}} +\ifx\@tempa\empty + \realboxes@coretrue + \@ifpackageloaded{dashbox}{\realboxes@dashboxtrue}{} + \@ifpackageloaded{color}{\realboxes@colortrue}{} + \@ifpackageloaded{xcolor}{\realboxes@xcolortrue}{} + \@ifpackageloaded{graphics}{\realboxes@graphicstrue}{} + \@ifpackageloaded{graphicx}{\realboxes@graphicxtrue}{} + \@ifpackageloaded{fancybox}{\realboxes@fancyboxtrue}{} +\fi +% \end{macrocode} +% +% \begin{macrocode} +\ifrealboxes@fancybox + \realboxes@coretrue +\fi +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{collectbox} +% \end{macrocode} +% +% \begin{macrocode} +\IfFileExists{adjcalc.sty}{% + \RequirePackage{adjcalc} +}{% + \RequirePackage{calc} + \def\adjsetlength{\setlength} +} +% \end{macrocode} +% +% \subsection{\LaTeX\ core} +% \begin{macrocode} +\ifrealboxes@core +% \end{macrocode} +% +% \begin{macro}{\Makebox} +% \begin{macrocode} +\newcommand*{\Makebox}{% + \collectboxcheckenv{Makebox}% + \@ifnextchar[% + \@Makebox + \mbox +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Makebox} +% \begin{macrocode} +\def\@Makebox[#1]{% + \@ifnextchar[% + {\@iMakebox{#1}}% + {\@iMakebox{#1}[c]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iMakebox} +% \begin{macrocode} +\def\@iMakebox#1[#2]{% + \@collectbox{% + \let\@tempboxa\collectedbox + \adjsetlength\@tempdima{#1}% + \hb@xt@\@tempdima{\csname bm@#2\endcsname}% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Fbox} +% \begin{macrocode} +\newcommand*\Fbox{% + \collectbox@{\kern\fboxsep}{\let\@tempboxa\collectedbox\@frameb@x\relax}{\kern\fboxsep}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Frame} +% \begin{macrocode} +\newcommand*\Frame{% + \@collectbox{\frame\BOXCONTENT}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Mbox} +% \begin{macrocode} +\newcommand*\Mbox{% + \leavevmode + \@ifnextchar\bgroup + \hbox + \mbox +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Raisebox} +% \begin{macrocode} +\newcommand*\Raisebox[1]{% + \leavevmode + \collectboxcheckenv{Raisebox}% + \@ifnextchar[% + {\@Rsbox{#1}}% + {\@collectbox{\@iRsbox{#1}{}}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Rsbox} +% \begin{macrocode} +\def\@Rsbox#1[#2]{% + \@ifnextchar[% + {\@iiRsbox{#1}{#2}}% + {\@collectbox{\@iRsbox{#1}{#2}}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iRsbox} +% \begin{macrocode} +\def\@iRsbox#1#2{% + \adjsetlength\@tempdima{#1}% + \ifx \\#2\\\else + \adjsetlength\@tempdimb{#2}% + \fi + \setbox\collectedbox\hbox{\raise\@tempdima\box\collectedbox}% + \ifx \\#2\\\else + \ht\collectedbox\@tempdimb + \fi + \box\collectedbox +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iiRsbox} +% \begin{macrocode} +\def\@iiRsbox#1#2[#3]{% + \@collectbox{\@iiiRsbox{#1}{#2}{#3}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iiiRsbox} +% \begin{macrocode} +\def\@iiiRsbox#1#2#3{% + \adjsetlength\@tempdima{#1}% + \adjsetlength\@tempdimb{#2}% + \adjsetlength\dimen@{#3}% + \setbox\collectedbox\hbox{\raise\@tempdima\box\collectedbox}% + \ht\collectedbox\@tempdimb + \dp\collectedbox\dimen@ + \box\collectedbox +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Leftline} +% \begin{macrocode} +\newcommand*\Leftline{\nocollectbox@to\linewidth{}{}\hss} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Rightline} +% \begin{macrocode} +\newcommand*\Rightline{\nocollectbox@to\linewidth\hss{}{}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Centerline} +% \begin{macrocode} +\newcommand*\Centerline{\nocollectbox@to\linewidth\hss{}\hss} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Rlap} +% \begin{macrocode} +\newcommand*\Rlap{\nocollectbox@to\z@{}{}\hss} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Llap} +% \begin{macrocode} +\newcommand*\Llap{\nocollectbox@to\z@\hss{}{}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Framebox} +% \begin{macrocode} +\newcommand*\Framebox{% + \collectboxcheckenv{Framebox}% + \@ifnextchar[% + \@Framebox + \Fbox +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Framebox} +% \begin{macrocode} +\def\@Framebox[#1]{% + \@ifnextchar[% + {\@iFramebox{#1}}% + {\@iFramebox{#1}[c]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iFramebox} +% \begin{macrocode} +\def\@iFramebox#1[#2]{% + \@collectbox{\@iiFramebox{#1}{#2}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iiFramebox} +% \begin{macrocode} +\def\@iiFramebox#1#2{% + \let\@tempboxa\collectedbox + \adjsetlength\@tempdima{#1}% + \setbox\@tempboxa\hb@xt@\@tempdima + {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}% + \@frameb@x{\kern-\fboxrule}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Parbox} +% \begin{macrocode} +\newcommand\Parbox{% + \collectboxcheckenv{Parbox}% + \@ifnextchar[% + \@iParbox + {\@iiiParbox c\relax[s]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iParbox} +% \begin{macrocode} +\def\@iParbox[#1]{% + \@ifnextchar[% + {\@iiParbox{#1}}% + {\@iiiParbox{#1}\relax[s]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iiParbox} +% \begin{macrocode} +\def\@iiParbox#1[#2]{% + \@ifnextchar[% + {\@iiiParbox{#1}{#2}}% + {\@iiiParbox{#1}{#2}[#1]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iiiParbox} +% \begin{macrocode} +\def\@iiiParbox#1#2[#3]#4{% + \leavevmode + \begingroup + \@pboxswfalse + \adjsetlength\@tempdima{#4}% + \let\collect@box\vbox + \let\@tempboxa\collectedbox + \collectbox@{\hsize\@tempdima\@parboxrestore}{\@vParbox{#1}{#2}{#3}}{\@@par}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@vParbox} +% \begin{macrocode} +\def\@vParbox#1#2#3{% + \ifx\relax#2\else + \adjsetlength\@tempdimb{#2}% + \edef\@parboxto{to\the\@tempdimb}% + \fi + \if#1b\vbox + %\else\if #1B\vbox + \else\if #1t\vtop + %\else\if #1T\vtop + \else\ifmmode\vcenter + \else\@pboxswtrue $\vcenter + \fi\fi\fi + %\fi\fi + \@parboxto{\let\hss\vss\let\unhbox\unvbox + \csname bm@#3\endcsname}% + \if@pboxsw \m@th$\fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Sbox@} +% \begin{macrocode} +\newcommand*\Sbox@[1]{\@collectboxto{#1}{}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Savebox} +% \begin{macrocode} +\def\Savebox#1{% + \@ifnextchar[% + {\@Savebox#1}% + {\Sbox@#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\pkg{fancybox} Compatibility} +% +% \begin{macrocode} +\ifrealboxes@fancybox +\RequirePackage{fancybox} +\let\orig@fancy@Sbox\Sbox +% \end{macrocode} +% +% \begin{macro}{\Sbox} +% \begin{macrocode} +\def\Sbox{% + \begingroup + \def\@tempa{Sbox}% + \expandafter\endgroup + \ifx\@currenvir\@tempa + \orig@fancy@Sbox + \edef\@currenvir{\@currenvir\space}% + \else + \expandafter\Sbox@ + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\else +\let\Sbox\Sbox@ +\AtBeginDocument{\@ifpackageloaded{fancybox}{% + \PackageWarning{realboxes}{Package 'fancybox' got loaded. This requires 'realboxes' to be loaded with the 'fancybox' option!}% +}{}}% +\fi +% \end{macrocode} +% +% \begin{macro}{\@Savebox} +% \begin{macrocode} +\def\@Savebox#1[#2]{% + \@ifnextchar [% + {\@iSavebox#1{#2}}% + {\@iSavebox#1{#2}[c]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iSavebox} +% \begin{macrocode} +\def\@iSavebox#1#2[#3]{% + \@collectboxto#1{\@iiSavebox{#1}{#2}{#3}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iiSavebox} +% \begin{macrocode} +\def\@iiSavebox#1#2#3{% + \sbox#1{% + \let\@tempboxa#1% + \adjsetlength\@tempdima{#2}% + \hb@xt@\@tempdima{\csname bm@#3\endcsname}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \subsection{\pkg{color} and \pkg{xcolor} Packages} +% \begin{macrocode} +\ifrealboxes@xcolor + \RequirePackage{xcolor} + \realboxes@colortrue +\else + \ifrealboxes@color + \RequirePackage{color} + \fi +\fi +\ifrealboxes@color +% \end{macrocode} +% +% \begin{macro}{\Colorbox} +% \begin{macrocode} +\newcommand*\Colorbox{}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Colorbox} +% \begin{macrocode} +\def\Colorbox#1#{% + \collectboxcheckenv{Colorbox}% + \Color@box{#1}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Color@box} +% \begin{macrocode} +\def\Color@box#1#2{% + \@collectbox{\color@box{#1}{#2}\BOXCONTENT}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Fcolorbox} +% \begin{macrocode} +\newcommand*\Fcolorbox{} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Fcolorbox} +% \begin{macrocode} +\def\Fcolorbox#1#{% + \collectboxcheckenv{Fcolorbox}% + \Color@fbox{#1}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Color@fbox} +% \begin{macrocode} +\def\Color@fbox#1#2#3#{% + \Color@@fbox{#1}{#2}{#3}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Color@@fbox} +% \begin{macrocode} +\def\Color@@fbox#1#2#3#4{% + \protect\@collectbox{\protect\color@fb@x{#1}{#2}{#3}{#4}\BOXCONTENT}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \subsection{\pkg{color} and \pkg{xcolor} Packages} +% \begin{macrocode} +\ifrealboxes@graphicx + \RequirePackage{graphicx} + \realboxes@graphicstrue +\else + \ifrealboxes@graphics + \RequirePackage{graphics} + \fi +\fi +\ifrealboxes@graphics +% \end{macrocode} +% +% \begin{macro}{\Rotatebox} +% \begin{macrocode} +\newcommand*\Rotatebox{% + \collectboxcheckenv{Rotatebox}% + \@ifnextchar[% + \Rotatebox@kv + \Rotatebox@std +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Rotatebox@kv} +% \begin{macrocode} +\def\Rotatebox@kv[#1]#2{% + \@collectbox{\Grot@box@kv[#1]{#2}\BOXCONTENT}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Rotatebox@std} +% \begin{macrocode} +\def\Rotatebox@std#1{% + \@collectbox{\Grot@box@std{#1}\BOXCONTENT}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Scalebox} +% \begin{macrocode} +\newcommand*\Scalebox[1]{% + \collectboxcheckenv{Scalebox}% + \@ifnextchar[% + {\Scale@box{#1}}% + {\Scale@box{#1}[#1]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Scale@box} +% \begin{macrocode} +\def\Scale@box#1[#2]{% + \@collectbox{\Gscale@box{#1}[#2]\BOXCONTENT}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Reflectbox} +% \begin{macrocode} +\newcommand*\Reflectbox{% + \collectboxcheckenv{Reflectbox}% + \Scale@box{-1}[1]% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Resizebox} +% \begin{macrocode} +\newcommand*\Resizebox{% + \collectboxcheckenv{Resizebox}% + \@ifstar + {\@Resizebox\totalheight}% + {\@Resizebox\height}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Resizebox} +% \begin{macrocode} +\@namedef{Resizebox*}{% + \@collectboxisenv{Resizebox*}% + \@Resizebox\totalheight +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@Resizebox} +% \begin{macrocode} +\def\@Resizebox#1#2#3{% + \@collectbox{\let\setlength\adjsetlength\Gscale@@box{#1}{#2}{#3}\BOXCONTENT}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% +% \subsection{\pkg{dashbox} Package} +% \begin{macrocode} +\ifrealboxes@dashbox +\RequirePackage{dashbox} +% \end{macrocode} +% +% \begin{macro}{\Dbox} +% \begin{macrocode} +\newcommand*\Dbox{% + \@collectbox{\dbox{\BOXCONTENT}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Dashbox} +% \begin{macrocode} +\newcommand*\Dashbox{% + \@ifnextchar[% + \@Dashbox + \Dbox +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Dashbox} +% \begin{macrocode} +\def\@Dashbox[#1]{% + \@ifnextchar[% + {\@iDashbox{#1}}% + {\@iDashbox{#1}[c]}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@iDashbox} +% \begin{macrocode} +\def\@iDashbox#1[#2]{% + \@collectbox{\dashbox[#1][#2]{\BOXCONTENT}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Lbox} +% \begin{macrocode} +\newcommand*\Lbox{% + \@ifnextchar[% + \@Lbox + {\@collectbox{\lbox{\BOXCONTENT}}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Lbox} +% \begin{macrocode} +\def\@Lbox[#1]{% + \@collectbox{\lbox[#1]{\BOXCONTENT}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Dlbox} +% \begin{macrocode} +\newcommand*\Dlbox{% + \@ifnextchar[% + \@Dlbox + {\@collectbox*\dlbox}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Dlbox} +% \begin{macrocode} +\def\@Dlbox[#1]{% + \@collectbox{\dlbox[#1]{\BOXCONTENT}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% +% \iffalse +% +% \fi +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/realboxes/realboxes.ins b/Master/texmf-dist/source/latex/realboxes/realboxes.ins new file mode 100644 index 00000000000..2e4818ec282 --- /dev/null +++ b/Master/texmf-dist/source/latex/realboxes/realboxes.ins @@ -0,0 +1,49 @@ +%% $Id: realboxes.ins 2095 2011-01-28 16:16:43Z martin $ +\input docstrip.tex +\preamble + +Copyright (C) 2011 by Martin Scharrer + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3c +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.3c or later is part of all distributions of LaTeX +version 2008/05/04 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Martin Scharrer. + +This work consists of the files realboxes.dtx, realboxes.ins +and the derived file realboxes.sty. + +\endpreamble +\keepsilent + +\generate{% + \file{realboxes.sty}{\from{realboxes.dtx}{realboxes}}% +} + +\obeyspaces +\Msg{*************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* realboxes.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file realboxes.dtx *} +\Msg{* through LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{*************************************************************} + +\endbatchfile + +%% vim: ft=tex + -- cgit v1.2.3