texlive[64551] Master/texmf-dist: colorframed (29sep22)

commits+karl at tug.org commits+karl at tug.org
Thu Sep 29 22:47:06 CEST 2022


Revision: 64551
          http://tug.org/svn/texlive?view=revision&revision=64551
Author:   karl
Date:     2022-09-29 22:47:06 +0200 (Thu, 29 Sep 2022)
Log Message:
-----------
colorframed (29sep22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/colorframed/README.md
    trunk/Master/texmf-dist/doc/latex/colorframed/colorframed-doc.pdf
    trunk/Master/texmf-dist/doc/latex/colorframed/colorframed-doc.tex
    trunk/Master/texmf-dist/tex/latex/colorframed/colorframed.sty

Modified: trunk/Master/texmf-dist/doc/latex/colorframed/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/colorframed/README.md	2022-09-29 20:46:39 UTC (rev 64550)
+++ trunk/Master/texmf-dist/doc/latex/colorframed/README.md	2022-09-29 20:47:06 UTC (rev 64551)
@@ -1,6 +1,6 @@
-% colorframed 0.9a
+% colorframed 0.9b
 % Jean-François Burnol
-% 2022/09/23
+% 2022/10/01
 
 ## Usage
 
@@ -11,20 +11,13 @@
 
 ## Purpose
 
-The initial release fixes colour leak issues which one encounters
+The package fixes colour leak issues which one encounters
 with the environments provided by the
 [framed](https://ctan.org/pkg/framed) package.
 
-It is planned to extend `colorframed` with one more environment,
-based upon [pict2e](https://ctan.org/pkg/pict2e), which will
-provide breakable boxes with possibly rounded corners, optional
-background colour, external or inset shadow, separate
-customizability of the padding separations and border widths in
-the four directions, ...
-
 ## Copyright and License
 
-Copyright (c) 2022 Jean-François Burnol
+Copyright (C) 2022 Jean-François Burnol
 
 The colorframed [CTAN package](https://ctan.org/pkg/colorframed)
 is distributed under the

Modified: trunk/Master/texmf-dist/doc/latex/colorframed/colorframed-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/colorframed/colorframed-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/colorframed/colorframed-doc.tex	2022-09-29 20:46:39 UTC (rev 64550)
+++ trunk/Master/texmf-dist/doc/latex/colorframed/colorframed-doc.tex	2022-09-29 20:47:06 UTC (rev 64551)
@@ -1,4 +1,4 @@
-\documentclass[a4paper,dvipdfmx,11pt,english]{article}
+\documentclass[a4paper,dvipdfmx,10pt,english]{article}
 \usepackage{babel}
 \usepackage[T1]{fontenc}
 \usepackage{geometry}
@@ -13,7 +13,9 @@
 \colorlet{TFTitleColor}{purple}
 \def\colorframedTFconlabcolorcommand{\color{purple}}
 % shaded
-\colorlet{shadecolor}{orange!10}
+%\colorlet{shadecolor}{orange!10}
+\colorlet{shadecolor}{lightgray!25}
+
 % framed
 \FrameRule5pt\relax
 \FrameSep9pt\relax % this is framed.sty default anyhow, 3\fboxsep
@@ -23,8 +25,8 @@
 
 \title{The \colorframed package%
 \vadjust{\vtop to 0pt{\hbox
-    to\linewidth{\strut\footnotesize Release 0.9a of
-      2022/09/23\hss report issues at \url{https://github.com/jfbu/colorframed}}\vss}}%
+    to\linewidth{\strut\footnotesize Release 0.9b of
+      2022/10/01\hss report issues at \url{https://github.com/jfbu/colorframed/issues}}\vss}}%
 }
 \author{Jean-François Burnol}
 \date{}
@@ -37,6 +39,12 @@
 
 \usepackage{parskip}
 \usepackage{xspace}
+\usepackage{metalogo}
+\setlogokern{La}{-0.258em}
+\setlogokern{aT}{-0.08em}
+\setlogokern{eL}{-0.1em}
+%\setlogokern{X2}{0em}
+\usepackage{enumitem}
 
 \definecolor{joli}{RGB}{225,95,0}
 \definecolor{JOLI}{RGB}{225,95,0}
@@ -44,30 +52,58 @@
         \texorpdfstring{{\color{joli}\bfseries colorframed}}{colorframed}\xspace}
 
 
-{\makeatletter\sbox0{\color{RawSienna}\xdef\foo{\current at color}}}
-     \edef\verbatimpushcolor{\special{color push \foo}}
-     \def\verbatimpopcolor{\special{color pop}}
+% ATTENTION: dvipdfmx syntax here!
+{\makeatletter
+     \sbox0{\color{RawSienna}%
+            \xdef\verbatimpushcolor{\special{color push \current at color}}}%
+}
+\def\verbatimpopcolor{\special{color pop}}
 \AddToHook{env/verbatim/before}{\verbatimpushcolor}
 \AddToHook{env/verbatim/end}{\verbatimpopcolor}
+
+\newcommand\ghissue[2][]{\href{https://github.com/jfbu/colorframed/issues/#2}{#1\##2}}
+
+\makeatletter
+  %\show\verbatim at font % pas changé at begin doc
+  \def\verbatim at font{\normalfont\ttfamily\color{RawSienna}}%
+\makeatother
+
 \begin{document}
 \maketitle
 
+\vskip-1.75\baselineskip
+
+{\footnotesize
+\halign{\tabskip1em\bfseries#\unskip&\hfil(#\unskip)\hfil&#\unskip\hfil\cr
+0.9  & 2022/09/22 & initial release\cr
+0.9a & 2022/09/23 & doc fixes, mention \ctanpackage{longfbox}\cr
+0.9b & 2022/10/01 & - fix "placement of titled-frame title
+                                  is not backwards compatible" (\ghissue{2})\cr
+\omit&\omit& - |\colorframedTitleBarFrame| as workaround to upstream issues with titled-frame
+               (\ghissue{3}, \ghissue{4})\cr
+\omit&\omit& - add link to \ghissue{5} for usage with list items, other doc improvements
+               such as \ghissue{1}\cr
+}}
+
+\vskip-\baselineskip\vskip0pt\relax
+
 \section{Description}
 
+
 This package fixes various colour leaks one encounters with
 the environments from Donald Arseneau's package
 \ctanpackage{framed}.  Typically, colour leaks occur if using
-|\color| (at top level) inside the environments, or more subtly also when
-using |\textcolor| with an argument ending up being split at a
-page break.
+|\color| (at top level or whose scope involves a page break) inside the
+environments, or more subtly also when using |\textcolor| with
+an argument ending up being split at a page break.
 
 This latter type of colour leak (or colour disappearance) is the
 more challenging one as the fix requires modifications or
 replacements not only of some of the \ctanpackage{framed}.sty
 macros (such as its |\CustomFBox|, which \colorframed overwrites)
-but also to some \LaTeX2e internals, as some environments of
+but also to some \LaTeX{} internals, as some environments of
 \ctanpackage{framed}.sty rely on usage of |\fbox| or |\colorbox|.
-Rather than overwriting internal \LaTeX2e macros such as
+Rather than overwriting internal \LaTeX{} macros such as
 |\@frameb at x| or |\color at b@x|, \colorframed simply replaces |\fbox|
 and |\colorbox| in the \ctanpackage{framed}.sty environments by
 appropriate substitutes.
@@ -75,14 +111,18 @@
 I am aware \ctanpackage{tcolorbox} package documentation explains at
 least one colour issue which looks similar to those fixed
 here in \ctanpackage{framed} context, and that the fix overthere uses
-an extra colour stack, hence is not xelatex compatible
+an extra colour stack, hence is not \XeLaTeX{} compatible
 currently.
 
 The problems are solved here without involving an extra
-colour stack, hence the fixes work also with xelatex.
+colour stack, hence the fixes work also with \XeLaTeX.
 
 \section{The environments from \ctanpackage{framed}}
 
+  We refer the reader to \ctanpackage{framed} for the official
+  documentation and provide here only a few relevant details,
+  particularly
+  regarding the `titled-frame' environment.
 \begin{titled-frame}{A list of the environments from package \ctanpackage{framed}}
   This list indicates which boxing macros are
   used in the original, and their replacement.
@@ -90,7 +130,7 @@
 % preamble does not work)
 \halign{\bfseries#\hfil&(#\unskip)~\hfil&#\hfil\cr
 %
-  framed & |\fbox| & Replaced by specialization of own \rlap{\string\CustomFBox.}\cr
+  framed & |\fbox| & Replaced by specialization of own \rlap{\expandafter|\string\CustomFBox|.}\cr
 %
   oframed & |\CustomFBox| & \colorframed uses a redefined |\CustomFBox|.\cr
 %
@@ -107,23 +147,64 @@
   leftbar & none & This one does not use any boxing macro.\cr
 }
 \end{titled-frame}
-
-\begin{shaded*}
-  We refer the reader to \ctanpackage{framed} documentation
-  and provide here only a few additional details, particularly
-  regarding the `titled-frame' environment as it is described
-  in \ctanpackage{framed} documentation more as being a
-  template than a user-level finalized environment.  The above
-  box gives an example of its use.  It is an environment with
+The previous box gives an example of use of `titled-frame' environment.
+  It is an environment with
   one mandatory argument which provides the title of the
   frame, which is repeated after a page break with |(cont)|
   appended.  The colours |TFFrameColor| and
-  |TFTitleColor| must be defined by user.  To customize
-  further one will need to renew the environment definition,
-  which is left untouched by \colorframed (which modifies
-  rather |\TitleBarFrame| and |\CustomFBox|).  Here is
-  how this environment is defined inside \ctanpackage{framed}.sty: (code and comments by Donald Arseneau)\par
+  |TFTitleColor| must have been defined by the user.
+  \colorframed adds the possibility to colorize separately the continuation
+  label.  For example we used
+\begin{verbatim}
+\renewcommand\colorframedTFconlabcolorcommand{\color{purple}}
+\end{verbatim}
+  and the default definition of this macro is to do nothing (and then the
+  symbol obeys the |TFFrameColor|).
+
+\medskip
+% check why topsep influences separation of item 1 and 2
+% it shouldn't? hmm... ah yes I think framed itself uses \topsep...
+%\begin{enumerate}[noitemsep,topsep=6pt,font=\normalcolor]
+% j'utilise enumitem+noitemsep sinon je vois dans la partie ombrée
+% de l'espace supplémentaire au début de l'item (peut-être aussi
+% lié à l'emploi du package parskip)
+% \colorlet{shadecolor}{lightgray!25}
+
 \begin{footnotesize}
+\begin{itemize}[noitemsep,topsep=3pt,% influences strangely item separation
+                         parsep=3pt]
+\begin{shaded}
+\item
+\emph{The current box is an example of \emph{`shaded'}
+    environment; The
+    |shadecolor| must have been defined by user. See the
+    \ghissue[repository issue ]{5} for some comments about how to use
+    such environment with list items, if the environment is to start
+    at start of the item, as here. }
+\end{shaded}
+
+\begin{snugshade}
+\item \emph{This is an example of \emph{`snugshade'}
+    environment. It shares with \emph{`shaded'} the usage of |shadecolor|.}
+\end{snugshade}
+
+\begin{snugshade*}
+\item \emph{This is an example of \emph{`snugshade*'}.}
+\end{snugshade*}
+
+\begin{snugshade}
+\item
+%
+  The `titled-frame' environment was in effect broken in recent \LaTeX\ which
+  has modified how |\smash| behaves (the continuation label created a blank
+  line interrupting the framing); \colorframed fixes this infelicity in
+  passing.
+
+  To customize
+  further usage of `titled-frame' one must renew its definition,
+  which is left untouched by \colorframed.
+  Here is its source from \ctanpackage{framed}.sty: (code and
+  comments by Donald Arseneau)%
 \begin{verbatim}
 % A particular type of titled frame with continuation marks.  
 % Parameter #1 is the title, repeated on each page.
@@ -141,113 +222,157 @@
 %  could interfere with the width measurement.
  {\endMakeFramed}
 \end{verbatim}
-% pas de \footnote dans les environnements de framed...
-\normalcolor
-Side note: this `titled-frame' environment was in effect
-broken in recent \LaTeX\ which has modified how |\smash|
-behaves; \colorframed fixes this infelicity in passing.\par
+  The continuation label used in the `titled-frame' environment
+  is |$\blacktriangleright$|
+  (which despite its name reacts to current text colour setting).
+  It requires to
+  the best of the author knowledge loading \ctanpackage{amssymb} or
+  some other math symbols package and it is up to user to do it.
+\end{snugshade}
 
-\emph{(the current box is an example of \emph{`shaded*'} environment, next one is with
-\emph{`snugshade*'}, both use a \emph{shadecolor} which must be defined by user)}
-\par
-\end{footnotesize}
-\end{shaded*}
-% jeudi 22 septembre 2022 à 14:37:08
-% Il se passe des choses très bizarres avec snugshade* ou
-% framed en premier après un \item qui me semblent être des
-% bugs de framed.  Dans Sphinx, je n'ai pas eu ces problèmes,
-% au contraire je suis sûr que ça fonctionne avec les
-% environnements que j'y ai définis reposant sur framed (et un
-% \trivlist en général), j'ai testé plusieurs fois.
-% Ce n'est pas induit par colorframed j'ai vérifié sans lui.
-%\begin{enumerate}
-%\item\relax% {\footnotesize Now testing the `snugshade*' environment.}
-\begin{snugshade*}
-\leavevmode\color{OliveGreen}
-  One does not need to dive into the details of the macros
-  used above to understand intuitively how they are supposed
-  to influence the final output.  To modify this output,
-  simply redefine this environment with suitable changes.
+% \begin{shaded} % nesting does not work
+\begin{framed}
+\item
+\emph{(one can not nest environments of \ctanpackage{framed}.sty, else we would
+  have done so here.)}
 
-  Notice in particular that |$\blacktriangleright$|
-  (which produces $\blacktriangleright$ and acquires thus a colour
-  despite its name) requires to
-  the best of my knowledge loading \ctanpackage{amssymb} or
-  some other math symbols package and it is up to user to do it, if
-  its usage is kept.
-%
-  The original environment gives to this continuation label the
-  same colour as the frame.  \colorframed adds the
-  possibility to customize this colour via suitably defining a
-  macro, like this for example:% le % pour éviter un bug lorsqu'un caractère
-                               % espace est à la fin d'une ligne quasi-pleine,
-                               % je soupçonne bug de TeX que j'ai déjà
-                               % rencontré plusieurs fois, ou peut-être ici un
-                               % problème du \trivlist de verbatim
+\textcolor{blue}{(Here is an attempt to use the {`framed'} environment
+  around a list item; we can see an unexpected
+  induced indentation of the
+  paragraph. And, by the way, there is no {`snugframe'} environment which would
+  let the border fit not the whole width but only the indented item.)}
+\end{framed}
+% \end{shaded} % nesting does not work
+
+\begin{snugshade}
+\item To customize the `titled-frame' output, one may simply redefine the
+  environment via suitable changes e.g. to the setting of |\fboxsep| and
+  |\fboxrule|.  But doing so, one quickly discovers that the layout from
+  |\TitleBarFrame| has problems (see on this the repository issues \ghissue{3}
+  and \ghissue{4}).  So \colorframed |0.9b| provides
+  |\colorframedTitleBarFrame|, which can be used as a replacement to
+  |\TitleBarFrame| in a redefined custom `titled-framed' environment.  Check
+  the source code for comments.  This alternative
+  obeys added customizing
+  macros whose defaults are shown here:
 \begin{verbatim}
-\renewcommand\colorframedTFconlabcolorcommand{\color{purple}}
+% (such \fboxsep should be set by environment itself, like titled-frame does)
+\def\colorframedTFtitlesep{\fboxsep}% hor. distance of title from left border
+\def\colorframedTFconlabsep{3pt}% hor. distance of continuation label from border
 \end{verbatim}
-\end{snugshade*}
+  This variant handles differently than its model the horizontal and vertical
+  placement of the title.  It is provided as an exception
+  to the general rule that this package should take care only of fixing colour
+  problems (addition of \emph{new} environments may be considered in future,
+  but fixing existing environments will not be done beyond what is described here).
 
-\begin{framed}
-  This is an example of usage of the environment `framed'.
+\end{snugshade}
+\end{itemize}
+  As was already
+  mentioned `titled-frame' had been broken some years ago by an
+  upstream \LaTeX\ change and we did not change it beyond
+  fixing this problem.  The alternative |\colorframedTitleBarFrame| must be
+  opted-for explicitly by user in a re-definition of `titled-frame'
+  environment, the default remaining with the problematic
+  |\TitleBarFrame|. Or the user can do
+  |\let\TitleBarFrame\colorframedTitleBarFrame|
+  and use `titled-frame', not a new environment.
+  \par
+\end{footnotesize}
 
-  This environment allows customization of the border width
-  and of the separation with contents, via |\FrameRule| and
-  |\FrameSep|, but not of the colour of the border.  The
-  \colorframed version adds this possibility: it is simply a
-  matter of redefining the |\colorframedbordercolorcommand|
-  macro, which defaults to |\normalcolor|.
 
-\footnotesize (|\color{blue}| in source)
-\normalsize
-\color{blue}
-  So the current frame was configured using:
+
+% The aim of \colorframed regarding \ctanpackage{framed} existing
+% code base is strictly limited to fixing the colour leak issues,
+% there is no general intent to modify the existing environments of
+% \ctanpackage{framed} for them to acquire additional capabilities and
+% customizability.
+
+Already we have mentioned
 \begin{verbatim}
+\colorframedTFconlabcolorcommand
+\end{verbatim}
+whose default definition let it expands to nothing at all (the continuation label
+then inherits the |TFFrameColor| colour).
+
+Regarding the `framed' environment, \colorframed adds the
+\begin{verbatim}
+\colorframedbordercolorcommand
+\end{verbatim}
+which expands by default to |\normalcolor|.  It influences the colour of the
+framing done by environment `framed', the original having no such
+customizability.  Do not redefine it to do nothing, it always should set some
+colour, else the borders may display colour loss after a page break.
+
+For example
+\begin{verbatim}
 \setlength{\FrameRule}{5pt}
 \setlength{\FrameSep}{9pt}
-\renewcommand\colorframedbordercolorcommand{\color{red!20}}
+\renewcommand\colorframedbordercolorcommand{\color{gray!50}}
 \end{verbatim}
-\begin{footnotesize}\normalcolor
+configures the next usage of `framed'.
+
+\setlength{\FrameRule}{5pt}
+\setlength{\FrameSep}{9pt}
+\renewcommand\colorframedbordercolorcommand{\color{gray!50}}
+\begin{framed}
+  This environment allows indeed customization of the border width
+  and of the separation with contents, via |\FrameRule| and
+  |\FrameSep|.
+
   The length |\FrameSep| influences also `oframed', `shaded', and `shaded*',
   but `snugshade' and `snugshade*' employ |\fboxsep| rather.
 
-  As per |\FrameRule|, it influences `framed' and `oframed' but not
-  `titled-frame' which simply uses |\fboxrule| for its border width.\par
-\end{footnotesize}
-  The text colour induced from a |\color{blue}|
-  will not leak out to the frame or to the text following this
-  environment, even in case of a pagebreak.
+  |\FrameRule| influences both `framed' and `oframed'.
 \end{framed}
 
-The aim of \colorframed regarding \ctanpackage{framed} existing
-code base is strictly limited to fixing the colour leak issues,
-there is not intent to extend the existing environments of
-\ctanpackage{framed} with additional capabilities and
-customizability: we have mentioned already the two sole
-customization additions.
+\section{Technicalities, musings about future}
 
-\section{TODO}
+\begin{snugshade}
+I first developed the analysis of the colour leaks/losses at page breaks with
+\ctanpackage{framed} on occasion of some contributions I made to
+the \href{https://github.com/sphinx-doc/sphinx}{Sphinx project} and I am
+transferring here the gained knowledge.
 
+The key thing is that the boxes handled by \ctanpackage{framed}.sty may
+contain isolated colour push or colour pop.  We must make
+sure an isolated colour push, if followed by colour changes,
+is always followed by paired ones, and never by a colour pop
+from a colour command originated "prior" and symmetrically that a sole
+colour pop does not follow a yet unpaired colour push from some other
+colour command related to the framing.
+
+This means we can not ever use things such as |\fbox|, |\colorbox| or
+|\fcolorbox| (whether or not \ctanpackage{xcolor} is loaded) as they will
+cause colour pops after a possibly isolated colour push contained in the
+(already boxed) contents which are fetched to them as arguments by
+\ctanpackage{framed}.sty internals.  We must re-implement them otherwise.
+This is what is done here, without touching the \LaTeX\ internal macros
+themselves.
+
+Some portion of the macro file is occupied with the
+`titled-frame' environment of \ctanpackage{framed}.sty, which was broken by an
+upstream LaTeX change related to |\smash|, and has obvious problems
+apart from that.
+Further "obvious problems" do exist for the other \ctanpackage{framed}.sty
+environments but it is not the matter of this package to fix them.
+Perhaps in future another package will be provided based upon the
+work here and adding a completely new environment fixing the "obvious
+problems" (some of them being simply lack of customizability).
+
 The author has developed based upon usage of \ctanpackage{pict2e}
 breakable boxes with round corners, background colour, optional
-shadow (possibly inset), and other goodies and is planning on
-incorporating this environment into the package.
-%
-Of course, it will remain limited in comparison to the fully
-customizable boxes provided by package \ctanpackage{tcolorbox}
-but our testing showed significant speed-up in build time, which
-may matter for long documents.
+shadow (possibly inset), and other goodies and was planning on
+incorporating this environment into the package at some time in future.
 
 % Hopefully this addition will be done when time will permit.
 
-\thispagestyle{empty}
-\enlargethispage{2\baselineskip}
+% \thispagestyle{empty}
+% \enlargethispage{2\baselineskip}
 
-\colorlet{shadecolor}{lightgray!50}
-\footnotesize
-\begin{snugshade}
-  After initial release made it to CTAN on
+%\colorlet{shadecolor}{lightgray!50}
+% \footnotesize
+  But after initial release made it to CTAN on
   2022/09/22 I became aware of \ctanpackage{longfbox} which
   provides already such \ctanpackage{pict2e} breakable boxes with
   rounded corners (even elliptical arcs), and furthermore with a
@@ -254,9 +379,18 @@
   CSS-like interface which is exactly what I had done on my side
   too... I need to check more \ctanpackage{longfbox} before a
   decision is made here!  Perhaps it will be better to keep
-  \colorframed as it is currently and produce another package for
-  extras such as \ctanpackage{pict2e}-based boxes or a key-value
-  interface to `inline' or `display' box macros and environments.
+  \colorframed as it is currently and
+  extras such as new \ctanpackage{pict2e}-based boxes with a key-value
+  interface to `inline' or `display' boxing macros and environments
+  should make it to another package (loading \colorframed of course).
+
+  Of course, such a package would remain limited in its graphics abilities
+  (and customizability) in comparison to the customizable boxing environments
+  provided by package \ctanpackage{mdframed} or \ctanpackage{tcolorbox} but
+  testing with my own \ctanpackage{pict2e}-based boxes showed significant
+  speed-up in build time compared to using \ctanpackage{framed}+|\tcbox| or
+  the "breakable" option of \ctanpackage{tcolorbox}.
+
 \end{snugshade}
 \centerline{\hrulefill documentation ends here\hrulefill}
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/colorframed/colorframed.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/colorframed/colorframed.sty	2022-09-29 20:46:39 UTC (rev 64550)
+++ trunk/Master/texmf-dist/tex/latex/colorframed/colorframed.sty	2022-09-29 20:47:06 UTC (rev 64551)
@@ -1,23 +1,10 @@
-% colorframed.sty    v0.9a    2022/09/23
-% Copyright (c) 2022 Jean-François Burnol
+% colorframed.sty    v0.9b    2022/10/01
+% Copyright (C) 2022 Jean-François Burnol
 % Distributed under the terms of the LPPL 1.3c, see README.md
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{colorframed}
-    [2022/09/23 v0.9a fix `framed' breakable boxes colour leaks (JFB)]
-% This is actually same as 0.9 release of 2022/09/22 apart from these
-% comments:
-%
-% The analysis and original workarounds for using framed.sty
-% with colours were developed by me in some contributions I made
-% to the Sphinx project (\url{https://github.com/sphinx-doc/sphinx})
-% and I am transferring here the general idea.
-%
-% The key thing is that the boxes handled by framed.sty may
-% contain isolated colour push or colour pop.  We must make
-% sure an isolated colour push, if followed by colour changes,
-% is always followed by paired ones, and never by a colour pop
-% from a colour command originated "prior".
-%
+    [2022/10/01 v0.9b fix `framed' breakable boxes colour leaks (JFB)]
+% Apart from code comments here, documentation is in colorframed-doc.pdf
 \RequirePackage{framed}
 \RequirePackage{color}
 % First we must make \MakeFramed/\endMakeFramed colour safe.
@@ -123,8 +110,8 @@
     \vbox{%
         \colorframedbordercolorcommand % defaults to \normalcolor
         \hrule\@height#3\relax
-        \kern-#3\relax
         #1%
+        \kern-#3\relax % see discussion of issue #2
         \copy\z@ % deliberate overlap hrules+vrules to avoid anti-aliasing artefacts
         \kern-#4\relax
         #2%
@@ -167,4 +154,63 @@
   %}%                              <<<< REMOVED
   \endgroup
 }
+% There are various issues with \TitleBarFrame/\TF at Title/TF at conlab
+% we provide an alternative
+\def\colorframedTFconlabsep{3pt}
+\newcommand\colorframedTitleBarFrame[3][]{\begingroup
+  \ifx\delimiter#1\delimiter
+    \let\TF at conlab\@empty
+  \else
+    \def\TF at conlab{%
+     \nointerlineskip
+     \hbox{\colorframedTFconlabcolorcommand
+     \smash{\rlap{\kern\wd\@tempboxa
+                  % 2\fboxrule, not \fboxrule\fboxsep!
+                  \kern2\fboxrule
+                  \kern\dimexpr\colorframedTFconlabsep\relax #1}}}%
+          }%
+  \fi
+  \def\colorframedbordercolorcommand{\color{TFFrameColor}}%
+  \CustomFBox
+    {\colorframed at TF@Title{#2}}{\TF at conlab}%
+    \fboxrule\fboxrule\fboxrule\fboxrule
+    {#3}%
+  \endgroup
+}
+% The title bar for \colorframedTitleBarFrame, it will wrap its argument
+% as paragraphs in case it is too long, the horizontal placement is improved
+% and it will be suitably vertically centered. Nota Bene: for #1 to be
+% allowed to contain \par, the \textbf in titled-frame must be replaced by
+% some \bfseries.
+% Macro to customize the horizontal placement. For example
+% \def\colorframedTFtitleshift{0pt}
+% if \fboxrule is set by the environment to a high value.
+% Don't use negative value, some parts of the title may then be hidden
+% behind the left border.
+\def\colorframedTFtitlesep{\fboxsep}
+\newcommand\colorframed at TF@Title[1]{%
+  \ifx\delimiter#1\delimiter\else
+  %\kern-0.04pt\relax
+  \kern-.5\fboxrule
+  \begingroup
+  \setbox\@tempboxa\vbox{%
+   \kern0.8ex
+   \hbox{\kern\fboxrule
+         \kern\dimexpr\colorframedTFtitlesep\relax
+         \vbox{\hsize\dimexpr\linewidth-2\fboxrule-
+                             2\dimexpr\colorframedTFtitlesep\relax\relax
+               \noindent\color{TFTitleColor}%
+               #1\par}}%
+   \kern0.8ex}%
+  \hrule\@height\ht\@tempboxa
+  \kern-\ht\@tempboxa
+  \box\@tempboxa
+  \endgroup
+  %\nointerlineskip 
+  %\kern-0.04pt\relax
+  \hrule\@height.5\fboxrule
+  \fi
+}
+% maybe provide a titled-frame variant using the above and acting like
+% snugshade respective to being used in a list?
 \endinput



More information about the tex-live-commits mailing list.