diff options
author | Karl Berry <karl@freefriends.org> | 2012-06-01 22:08:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-06-01 22:08:28 +0000 |
commit | 5d08379edd5bdc198bfaad79907a6d346aa9de44 (patch) | |
tree | 69917a971a4e46bf693062e5fc64466fb5c589eb /Master | |
parent | cfa73456320abf0144677f5b669ef785efb6c5f8 (diff) |
framed 0.96 (1jun12)
git-svn-id: svn://tug.org/texlive/trunk@26789 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/framed/framed.pdf | bin | 240493 -> 235475 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/framed/framed.tex | 83 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/framed/framed.sty | 298 |
3 files changed, 306 insertions, 75 deletions
diff --git a/Master/texmf-dist/doc/latex/framed/framed.pdf b/Master/texmf-dist/doc/latex/framed/framed.pdf Binary files differindex 85414ad00c5..fd00302d6a8 100644 --- a/Master/texmf-dist/doc/latex/framed/framed.pdf +++ b/Master/texmf-dist/doc/latex/framed/framed.pdf diff --git a/Master/texmf-dist/doc/latex/framed/framed.tex b/Master/texmf-dist/doc/latex/framed/framed.tex index dd411b02e49..4fffa8839ef 100644 --- a/Master/texmf-dist/doc/latex/framed/framed.tex +++ b/Master/texmf-dist/doc/latex/framed/framed.tex @@ -23,9 +23,9 @@ \addtokomafont{title}{\rmfamily} -\title{The \pkg{framed} package\thanks{This manual corresponds to \pkg{framed}~v0.95, dated~2007/10/04.}} +\title{The \pkg{framed} package\thanks{This manual corresponds to \pkg{framed}~v0.96, dated~2011/10/22.}} \author{Donald Arseneau (\mail{asnd@triumf.ca})} -\date{2007/10/04} +\date{2012/05/31} \begin{document} @@ -40,9 +40,13 @@ break across pages. The environments defined are \noindent \begin{tabular}{@{}>{\ttfamily}l@{~~--~~}l@{}} framed & ordinary frame box (\cmd{\fbox}) with edge at margin \\ + oframed & framed with open top/bottom at page breaks \\ shaded & shaded background (\cmd{\colorbox}) bleeding into margin \\ - snugshade & similar \\ - leftbar & thick vertical line in left margin + shaded* & shaded background (\cmd{\colorbox}) with edge at margin \\ + snugshade & shaded with tight fit around text (esp. in lists) \\ + snugshade*& like snugshade with shading edge at margin \\ + leftbar & thick vertical line in left margin \\ + titled-frame & frame with title-bar; template for others \end{tabular} \medskip @@ -50,20 +54,22 @@ break across pages. The environments defined are to be used like % \begin{verbatim} -\begin{framed} - copious text -\end{framed} + \begin{framed} + copious text + \end{framed} \end{verbatim} But the more general purpose of this package is to facilitate the -creation of environments that enable page breaking -within arbitrary decorations using a simple new-environment definition -incorporating \cmd{\FrameCommand} and\\ -\verb+\begin{MakeFramed}+\marg{settings} \ldots\ \verb+\end{MakeFramed}+ - -The ``\env{framed}'' environment uses ``\cmd{\fbox}'' as its ``\cmd{\FrameCommand}'' with -the additional settings \verb+\fboxrule=\FrameRule+ and \verb+\fboxsep=\FrameSep+. +definition of new environments that take multi-line material, +wrap it with some non-breakable formatting (some kind of box or +decoration) and allow page breaks in the material. Such environments +are defined to declare (or use) \cmd{\FrameCommand} for applying the boxy +decoration, and \cmd{\MakeFramed}\marg{settings} \ldots\ \cmd{\endMakeFramed} +wrapped around the main text (environment body). + +The ``\env{framed}'' environment uses \cmd{\fbox}, by default, as its \cmd{\FrameCommand} +with the additional settings \verb+\fboxrule=\FrameRule+ and \verb+\fboxsep=\FrameSep+. You can change these lengths (using \cmd{\setlength}) and you can change the definition of \cmd{\FrameCommand} to use much fancier boxes. @@ -71,9 +77,21 @@ In fact, the ``\env{shaded}'' environment just redefines \cmd{\FrameCommand} to \verb+\colorbox{shadecolor}+ (and you have to define the color ``\texttt{shadecolor}'': \verb+\definecolor{shadecolor}...+). +Although the intention is for other packages to define the varieties +of decoration, a command \cmd{\OpenFbox} is defined for frames with open +tops or bottoms, and used for the ``\env{oframed}'' environment. This +facility is based on a more complex and capable command \cmd{\CustomFBox} which can +be used for a wider range of frame styles. One such style of a title-bar +frame with continuation marks is provided as an example. It is used by +the ``\env{titled-frame}'' environment. To make use of \env{titled-frame} in your +document, or the \cmd{\TitleBarFrame} command in your own environment +definitions, you must define the colors \texttt{TFFrameColor} (for the frame) +and a contrasting \texttt{TFTitleColor} (for the title text). + A page break is allowed, and even encouraged, before the \env{framed} -environment. If you want to attach some text (a box title) to the -frame, then the text should be inserted by \cmd{\FrameCommand}. +and other environments. If you want to attach some text (a box title) to the +frame, then the text should be inserted by \cmd{\FrameCommand} so it cannot +be separated from the body. The contents of the framed regions are restricted: Floats, footnotes, marginpars and head-line entries will be lost. @@ -82,28 +100,45 @@ This package will not work with the page breaking of \pkg{multicol.sty}, or other systems that perform column-balancing. The \env{MakeFramed} environment does the work. Its ``\meta{settings}'' argument -should contain any adjustments to the text width (applied to \cmd{\hsize}, -and using the ``\cmd{\width}'' of the frame itself) as well as a ``restore'' -command -- \cmd{\@parboxrestore} or \cmd{\FrameRestore} or something similar; -as an example, the \env{snugshade} environment shows how to suppress excess -spacing within the box, copying the code from minipage. - +should contain any adjustments to the text width (via a setting of \cmd{\hsize}). +Here, the parameter \cmd{\width} gives the measured extra width +added by the frame, so a common setting is ``\verb+\advance\hsize-\width+'' +which reduces the width of the text just enough that the outer edge +of the frame aligns with the margins. The ``\meta{settings}'' should also +include a `restore' command -- \cmd{\@parboxrestore} or \cmd{\FrameRestore} +or something similar; for instance, the snugshade environment uses +settings to eliminate list indents and vertical space, but uses +\cmd{\hspace} in its \cmd{\FrameCommand} to reproduce the list margin ouside the +shading. + +There are actually four variants of \cmd{\FrameCommand} to allow different +formatting for each part of an environment broken over pages. Unbroken +text is adorned by \cmd{\FrameCommand}, whereas split text first uses +\cmd{\FirstFrameCommand}, possibly followed by \cmd{\MidFrameCommand}, and +finishing with \cmd{\LastFrameCommand}. The default definitions for +these three just invokes \cmd{\FrameCommand}, so that all portions are +framed the same way. See the \env{oframe} environment for use of distinct +First/Mid/Last frames. \section*{Expert commands:} \begin{itemize} \item \cmd{\MakeFramed}, \cmd{\endMakeFramed}: the ``\env{MakeFramed}'' environment \item \cmd{\FrameCommand}: command to draw the frame around its argument +\item \cmd{\FirstFrameCommand}: the frame for the first part of a split environment +\item \cmd{\LastFrameCommand}: frame for the last portion +\item \cmd{\MidFrameCommand}: for any intermediate segments \item \cmd{\FrameRestore}: restore some text settings, but fewer than \cmd{\@parbox\-restore} \item \cmd{\FrameRule}: length register; \cmd{\fboxrule} for default ``\env{framed}''. \item \cmd{\FrameSep}: length register; \cmd{\fboxsep} for default ``\env{framed}''. \item \cmd{\FrameHeightAdjust}: macro; height of frame above baseline at top of page +\item \cmd{\OuterFrameSep}: vertical space before and after the framed env.; defaults to \cmd{\topsep} \end{itemize} \medskip This is still a `pre-production' version because I can think of many -features/improvements that should be made. Nevertheless, starting -with version~0.5 it should be bug-free. +features/improvements that should be made. Also, a detailed manual needs +to be written. Nevertheless, starting with version~0.5 it should be bug-free. \section*{ToDo:} diff --git a/Master/texmf-dist/tex/latex/framed/framed.sty b/Master/texmf-dist/tex/latex/framed/framed.sty index 82081cee07b..b044e96593a 100644 --- a/Master/texmf-dist/tex/latex/framed/framed.sty +++ b/Master/texmf-dist/tex/latex/framed/framed.sty @@ -1,7 +1,7 @@ -% framed.sty v 0.95 2007/10/04 -% Copyright (C) 1992-2007 by Donald Arseneau (asnd@triumf.ca) +% framed.sty v 0.96 2011/10/22 +% Copyright (C) 1992-2011 by Donald Arseneau (asnd@triumf.ca) % These macros may be freely transmitted, reproduced, or modified -% provided that this notice is left intact. +% for any purpose provided that this notice is left intact. % %====================== Begin Instructions ======================= % @@ -9,33 +9,51 @@ % ~~~~~~~~~~ % Create framed, shaded, or differently highlighted regions that can % break across pages. The environments defined are -% framed -- ordinary frame box (\fbox) with edge at margin -% shaded -- shaded background (\colorbox) bleeding into margin -% snugshade -- similar -% leftbar -- thick vertical line in left margin +% framed - ordinary frame box (\fbox) with edge at margin +% oframed - framed with open top/bottom at page breaks +% shaded - shaded background (\colorbox) bleeding into margin +% shaded* - shaded background (\colorbox) with edge at margin +% snugshade - shaded with tight fit around text (esp. in lists) +% snugshade* - like snugshade with shading edge at margin +% leftbar - thick vertical line in left margin +% % to be used like % \begin{framed} % copious text % \end{framed} % % But the more general purpose of this package is to facilitate the -% creation of environments that enable page breaking -% within arbitrary decorations using a simple new-environment definition -% incorporating \FrameCommand and -% \begin{MakeFramed}{settings} ... \end{MakeFramed} +% definition of new environments that take multi-line material, +% wrap it with some non-breakable formatting (some kind of box or +% decoration) and allow page breaks in the material. Such environments +% are defined to declare (or use) \FrameCommand for applying the boxy +% decoration, and \MakeFramed{settings} ... \endMakeFramed wrapped +% around the main text argument (environment body). % -% The "framed" environment uses "\fbox" as its "\FrameCommand" with -% the additional settings \fboxrule=\FrameRule and \fboxsep=\FrameSep. -% You can change these lengths (using \setlength) and you can change -% the definition of \FrameCommand to use much fancier boxes. +% The "framed" environment uses "\fbox", by default, as its "\FrameCommand" +% with the additional settings "\fboxrule=\FrameRule" and "\fboxsep=\FrameSep". +% You can change these lengths (using "\setlength") and you can change +% the definition of "\FrameCommand" to use much fancier boxes. % % In fact, the "shaded" environment just redefines \FrameCommand to be -% \colorbox{shadecolor} (and you have to define the color "shadecolor": -% \definecolor{shadecolor}...). +% "\colorbox{shadecolor}" (and you have to define the color `"shadecolor"': +% "\definecolor{shadecolor}..."). +% +% Although the intention is for other packages to define the varieties +% of decoration, a command "\OpenFbox" is defined for frames with open +% tops or bottoms, and used for the "oframed" environment. This facility +% is based on a more complex and capable command "\CustomFBox" which can +% be used for a wider range of frame styles. One such style of a title-bar +% frame with continuation marks is provided as an example. It is used by +% the "titled-frame" environment. To make use of "titled-frame" in your +% document, or the "\TitleBarFrame" command in your own environment +% definitions, you must define the colors TFFrameColor (for the frame) +% and a contrasting TFTitleColor (for the title text). % % A page break is allowed, and even encouraged, before the framed % environment. If you want to attach some text (a box title) to the -% frame, then the text should be inserted by \FrameCommand. +% frame, then the text should be inserted by \FrameCommand so it cannot +% be separated from the body. % % The contents of the framed regions are restricted: % Floats, footnotes, marginpars and head-line entries will be lost. @@ -43,24 +61,42 @@ % This package will not work with the page breaking of multicol.sty, % or other systems that perform column-balancing. % -% The MakeFramed environment does the work. Its "settings" argument -% should contain any adjustments to the text width (applied to \hsize, -% and using the "\width" of the frame itself) as well as a "restore" -% command -- \@parboxrestore or \FrameRestore or something similar; -% as an example, the snugshade environment shows how to suppress excess -% spacing within the box, copying the code from minipage. +% The MakeFramed environment does the work. Its `settings' argument +% should contain any adjustments to the text width (via a setting of +% "\hsize"). Here, the parameter "\width" gives the measured extra width +% added by the frame, so a common setting is "\advance\hsize-\width" +% which reduces the width of the text just enough that the outer edge +% of the frame aligns with the margins. The `settings' should also +% include a `restore' command -- "\@parboxrestore" or "\FrameRestore" +% or something similar; for instance, the snugshade environment uses +% settings to eliminate list indents and vertical space, but uses +% "\hspace" in "\FrameCommand" to reproduce the list margin ouside the +% shading. +% +% There are actually four variants of "\FrameCommand" to allow different +% formatting for each part of an environment broken over pages. Unbroken +% text is adorned by "\FrameCommand", whereas split text first uses +% "\FirstFrameCommand", possibly followed by "\MidFrameCommand", and +% finishing with "\LastFrameCommand". The default definitions for +% these three just invokes "\FrameCommand", so that all portions are +% framed the same way. See the oframe environment for use of distinct +% First/Mid/Last frames. % % Expert commands: % \MakeFramed, \endMakeFramed: the "MakeFramed" environment % \FrameCommand: command to draw the frame around its argument +% \FirstFrameCommand: the frame for the first part of a split environment +% \LastFrameCommand: for the last portion +% \MidFrameCommand: for any intermediate segments % \FrameRestore: restore some text settings, but fewer than \@parboxrestore % \FrameRule: length register; \fboxrule for default "framed". % \FrameSep: length register; \fboxsep for default "framed". % \FrameHeightAdjust: macro; height of frame above baseline at top of page -% +% \OuterFrameSep: vertical space before and after the framed env. Defaults to "\topsep" +% % This is still a `pre-production' version because I can think of many -% features/improvements that should be made. Nevertheless, starting -% with version 0.5 it should be bug-free. +% features/improvements that should be made. Also, a detailed manual needs +% to be written. Nevertheless, starting with version 0.5 it should be bug-free. % % ToDo: % Test more varieties of list @@ -68,9 +104,10 @@ % Propagation of \marks % Handle footnotes (how??) floats (?) and marginpars. % Stretchability modification. +% Make inner contents height/depth influence placement. %======================== End Instructions ======================== -\ProvidesPackage{framed}[2007/10/04 v 0.95: +\ProvidesPackage{framed}[2011/10/22 v 0.96: framed or shaded text with page breaks] \newenvironment{framed}% using default \FrameCommand @@ -82,20 +119,176 @@ \MakeFramed {\FrameRestore}}% {\endMakeFramed} +\newenvironment{shaded*}{% + \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolor}}% + \MakeFramed {\advance\hsize-\width \FrameRestore}}% + {\endMakeFramed} + \newenvironment{leftbar}{% \def\FrameCommand{\vrule width 3pt \hspace{10pt}}% \MakeFramed {\advance\hsize-\width \FrameRestore}}% {\endMakeFramed} +% snugshde: Shaded environment that +% -- uses the default \fboxsep instead of \FrameSep +% -- leaves the text indent unchanged (shading bleeds out) +% -- eliminates possible internal \topsep glue (\@setminipage) +% -- shrinks inside the margins for lists +% An \item label will tend to hang outside the shading, thanks to +% the small \fboxsep. + \newenvironment{snugshade}{% - \def\FrameCommand{\colorbox{shadecolor}}% - \MakeFramed {\FrameRestore\@setminipage}}% - {\par\unskip\endMakeFramed} + \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep + \colorbox{shadecolor}{##1}\hskip-\fboxsep + % There is no \@totalrightmargin, so: + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \MakeFramed {\advance\hsize-\width + \@totalleftmargin\z@ \linewidth\hsize + \@setminipage}% + }{\par\unskip\@minipagefalse\endMakeFramed} + +\newenvironment{snugshade*}{% + \def\FrameCommand##1{\hskip\@totalleftmargin + \colorbox{shadecolor}{##1}% + % There is no \@totalrightmargin, so: + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \MakeFramed {\advance\hsize-\width + \@totalleftmargin\z@ \linewidth\hsize + \advance\labelsep\fboxsep + \@setminipage}% + }{\par\unskip\@minipagefalse\endMakeFramed} + +\newenvironment{oframed}{% open (top or bottom) framed + \def\FrameCommand{\OpenFBox\FrameRule\FrameRule}% + \def\FirstFrameCommand{\OpenFBox\FrameRule\z@}% + \def\MidFrameCommand{\OpenFBox\z@\z@}% + \def\LastFrameCommand{\OpenFBox\z@\FrameRule}% + \MakeFramed {\advance\hsize-\width \FrameRestore}% + }{\endMakeFramed} + +% A simplified entry to \CustomFBox with two customized parameters: +% the thicknesses of the top and bottom rules. Perhaps we want to +% use less \fboxsep on the open edges? + +\def\OpenFBox#1#2{\fboxsep\FrameSep + \CustomFBox{}{}{#1}{#2}\FrameRule\FrameRule} + +% \CustomFBox is like an amalgamation of \fbox and \@frameb@x, +% so it can be used by an alternate to \fbox or \fcolorbox, but +% it has more parameters for various customizations. +% Parameter #1 is inserted (in vmode) right after the top rule +% (useful for a title or assignments), and #2 is similar, but +% inserted right above the bottom rule. +% The thicknesses of the top, bottom, left, and right rules are +% given as parameters #3,#4,#5,#6 respectively. They should be +% \fboxrule or \z@ (or some other thickness). +% The text argument is #7. +% An instance of this can be used for the frame of \fcolorbox by +% locally defining \fbox before \fcolorbox; e.g., +% \def\fbox{\CustomFBox{}{}\z@\z@\fboxrule\fboxrule}\fcolorbox +% +% Do we need to use different \fboxsep on different sides too? +% +\long\def\CustomFBox#1#2#3#4#5#6#7{% + \leavevmode\begingroup + \setbox\@tempboxa\hbox{% + \color@begingroup + \kern\fboxsep{#7}\kern\fboxsep + \color@endgroup}% + \hbox{% + % Here we calculate and shift for the depth. Done in + % a group because one of the arguments might be \@tempdima + % (we could use \dimexpr instead without grouping). + \begingroup + \@tempdima#4\relax + \advance\@tempdima\fboxsep + \advance\@tempdima\dp\@tempboxa + \expandafter\endgroup\expandafter + \lower\the\@tempdima\hbox{% + \vbox{% + \hrule\@height#3\relax + #1% + \hbox{% + \vrule\@width#5\relax + \vbox{% + \vskip\fboxsep % maybe these should be parameters too + \copy\@tempboxa + \vskip\fboxsep}% + \vrule\@width#6\relax}% + #2% + \hrule\@height#4\relax}% + }% + }% + \endgroup +} + + +% A particular type of titled frame with continuation marks. +% Parameter #1 is the title, repeated on each page. +\newenvironment{titled-frame}[1]{% + \def\FrameCommand{\fboxsep8pt\fboxrule2pt + \TitleBarFrame{\textbf{#1}}}% + \def\FirstFrameCommand{\fboxsep8pt\fboxrule2pt + \TitleBarFrame[$\blacktriangleright$]{\textbf{#1}}}% + \def\MidFrameCommand{\fboxsep8pt\fboxrule2pt + \TitleBarFrame[$\blacktriangleright$]{\textbf{#1\ (cont)}}}% + \def\LastFrameCommand{\fboxsep8pt\fboxrule2pt + \TitleBarFrame{\textbf{#1\ (cont)}}}% + \MakeFramed{\advance\hsize-20pt \FrameRestore}}% +% note: 8 + 2 + 8 + 2 = 20. Don't use \width because the frame title +% could interfere with the width measurement. + {\endMakeFramed} + +% \TitleBarFrame[marker]{title}{contents} +% Frame with a label at top, optional continuation marker at bottom right. +% Frame color is TFFrameColor and title color is a contrasting TFTitleColor; +% both need to be defined before use. The frame itself use \fboxrule and +% \fboxsep. If the title is omitted entirely, the title bar is omitted +% (use a blank space to force a blank title bar). +% +\newcommand\TitleBarFrame[3][]{\begingroup + \ifx\delimiter#1\delimiter + \let\TF@conlab\@empty + \else + \def\TF@conlab{% continuation label + \nointerlineskip + \smash{\rlap{\kern\wd\@tempboxa\kern\fboxrule\kern\fboxsep #1}}}% + \fi + \let\TF@savecolor\current@color + \textcolor{TFFrameColor}{% + \CustomFBox + {\TF@Title{#2}}{\TF@conlab}% + \fboxrule\fboxrule\fboxrule\fboxrule + {\let\current@color\TF@savecolor\set@color #3}% + }\endgroup +} + +% The title bar for \TitleBarFrame +\newcommand\TF@Title[1]{% + \ifx\delimiter#1\delimiter\else + \kern-0.04pt\relax + \begingroup + \setbox\@tempboxa\vbox{% + \kern0.8ex + \hbox{\kern\fboxsep\textcolor{TFTitleColor}{#1}\vphantom{Tj)}}% + \kern0.8ex}% + \hrule\@height\ht\@tempboxa + \kern-\ht\@tempboxa + \box\@tempboxa + \endgroup + \nointerlineskip + \kern-0.04pt\relax + \fi +} \chardef\FrameRestore=\catcode`\| % for debug \catcode`\|=\catcode`\% % (debug: insert space after backslash) +\newlength\OuterFrameSep \OuterFrameSep=\maxdimen \relax + \def\MakeFramed#1{\par + % apply default \OuterFrameSep = \topsep + \ifdim\OuterFrameSep=\maxdimen \OuterFrameSep\topsep \fi % measure added width and height; call result \width and \height \fb@sizeofframe\FrameCommand \let\width\fb@frw \let\height\fb@frh @@ -119,10 +312,10 @@ \advance\skip@ \z@ plus-.5\baselineskip \advance\skip@ \z@ plus-.231\height \advance\skip@ \z@ plus-.231\skip@ - \advance\skip@ \z@ plus-.231\topsep + \advance\skip@ \z@ plus-.231\OuterFrameSep \vskip-\skip@ \penalty 1800 \vskip\skip@ \fi - \addvspace{\topsep}% + \addvspace{\OuterFrameSep}% \endgroup % clear out pending page break \penalty\@M \vskip 2\baselineskip \vskip\height @@ -137,13 +330,14 @@ \def\endMakeFramed{\par \kern\z@ - \hrule\@width\hsize\@height\z@ - \penalty-100 % put depth into height + \hrule\@width\hsize\@height\z@ % possibly bad + \penalty-100 % (\hrule moves depth into height) \egroup - % {\showoutput\showbox\@tempboxa}% +%%% {\showoutput\showbox\@tempboxa}% \begingroup \fb@put@frame\FrameCommand\FirstFrameCommand \endgroup + \@minipagefalse % In case it was set and not cleared } % \fb@put@frame takes the contents of \@tempboxa and puts all, or a piece, @@ -174,17 +368,18 @@ | \string\pagegoal=\the\pagegoal, | \string\pagestretch=\the\pagestretch, | \string\pageshrink=\the\pageshrink, -| \string\fb@frh=\fb@frh. \space} -| \message{Box of size \the\ht\@tempboxa\space + \fb@frh}% +| \string\fb@frh=\the\fb@frh. \space} +| \message{^^JBox of size \the\ht\@tempboxa\space}% \begingroup % temporarily set \dimen@ to be... \advance\dimen@.8\pageshrink % maximum space available on page - \advance\dimen@-\fb@frh\relax % space available for frame's contents + \advance\dimen@-\fb@frh\relax % max space available for frame's contents +%%% LOOKS SUBTRACTED AND ADDED, SO DOUBLE ACCOUNTING! \expandafter\endgroup % expand \ifdim, then restore \dimen@ to real room left on page \ifdim\dimen@>\ht\@tempboxa % whole box does fit | \message{fits in \the\dimen@. }% - % Use vsplit anyway to capture the marks - % !!!???!!! MERGE THIS WITH THE else CLAUSE!!! + % ToDo: Change this to use vsplit anyway to capture the marks + % MERGE THIS WITH THE else CLAUSE!!! \fb@putboxa#1% \fb@afterframe \else % box must be split @@ -198,7 +393,7 @@ \edef\fb@resto@set{\boxmaxdepth\the\boxmaxdepth \splittopskip\the\splittopskip}% \boxmaxdepth\z@ \splittopskip\z@ -| \message{Padded box of size \the\ht\@tempboxa\space split to \the\dimen@}% +| \message{^^JPadded box of size \the\ht\@tempboxa\space split to \the\dimen@}% % Split box here \setbox\tw@\vsplit\@tempboxa to\dimen@ | \toks99\expandafter{\splitfirstmark}% @@ -207,7 +402,7 @@ \setbox\tw@\vbox{\unvbox\tw@}% natural-sized | \message{Natural height of split box is \the\ht\tw@, leaving | \the\ht\@tempboxa\space remainder. }% - % If the split-to size > (\vsize-\topskip), then set box to full size + % If the split-to size > (\vsize-\topskip), then set box to full size. \begingroup \advance\dimen@\topskip \expandafter\endgroup @@ -216,7 +411,7 @@ \dimen@ii\pagegoal \advance\dimen@ii -\topskip \advance\dimen@ii \FrameHeightAdjust\relax - \else % suspect this is wrong: + \else % suspect this is implemented incorrectly: % If the split-to size > feasible room_on_page, rebox it smaller. \advance\dimen@.8\pageshrink \ifdim\ht\tw@>\dimen@ @@ -263,7 +458,7 @@ \def\fb@putboxa#1{% \ifvoid\@tempboxa - PackageWarning{framed}{Boxa is void -- discard it. }% + \PackageWarning{framed}{Boxa is void -- discard it. }% \else | \message{Frame and place boxa. }% | %{\showoutput\showbox\@tempboxa}% @@ -273,11 +468,12 @@ \def\fb@afterframe{% \nointerlineskip \null %{\showoutput \showlists} - \penalty-30 \vskip\topsep \relax + \penalty-30 \vskip\OuterFrameSep \relax } % measure width and height added by frame (#1 = frame command) % call results \fb@frw and \fb@frh +% todo: a mechanism to handle wide frame titles \newdimen\fb@frw \newdimen\fb@frh \def\fb@sizeofframe#1{\begingroup @@ -286,7 +482,7 @@ \vskip\z@skip}% | \message{Measuring frame addition for \string#1 in \@currenvir\space | gives ht \the\ht\z@\space and wd \the\wd\z@. }% -%{\showoutput\showbox\z@}% +| %{\showoutput\showbox\z@}% \global\fb@frw\wd\z@ \global\fb@frh\ht\z@ \endgroup } @@ -315,8 +511,8 @@ \providecommand\FrameHeightAdjust{6pt} % \FrameRestore has parts of \@parboxrestore, performing a similar but -% less complete restoration of a default layouy. See how it is used in the -% "settings" argument of \MakeFrame. Though not a parameter, \hsize +% less complete restoration of the default layout. See how it is used in +% the "settings" argument of \MakeFrame. Though not a parameter, \hsize % should be set to the desired total line width available inside the % frame before invoking \FrameRestore. \def\FrameRestore{% @@ -331,11 +527,11 @@ % Test if we are in a list (or list-like paragraph) \ifnum \ifdim\@totalleftmargin>\z@ 1\fi \ifdim\rightmargin>\z@ 1\fi - \ifnum\@listdepth>0 1\fi 0>\z@ + \ifnum\@listdepth>\z@ 1\fi 0>\z@ % \message{In a list: \linewidth=\the\linewidth, \@totalleftmargin=\the\@totalleftmargin, % \parshape=\the\parshape, \columnwidth=\the\columnwidth, \hsize=\the\hsize, % \labelwidth=\the\labelwidth. }% - \@setminipage % snug fit around the item + \@setminipage % snug fit around the item. I would like this to be non-global. % Now try to propageate changes of width from \hsize to list parameters. % This is deficient, but a more advanced way to indicate modification to text % dimensions is not (yet) provided; in particular, no separate left/right |