texlive[61423] Master: wrapfig2 (27dec21)

commits+karl at tug.org commits+karl at tug.org
Mon Dec 27 22:15:02 CET 2021


Revision: 61423
          http://tug.org/svn/texlive?view=revision&revision=61423
Author:   karl
Date:     2021-12-27 22:15:01 +0100 (Mon, 27 Dec 2021)
Log Message:
-----------
wrapfig2 (27dec21)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/wrapfig2/
    trunk/Master/texmf-dist/doc/latex/wrapfig2/README.txt
    trunk/Master/texmf-dist/doc/latex/wrapfig2/wrapfig2.pdf
    trunk/Master/texmf-dist/source/latex/wrapfig2/
    trunk/Master/texmf-dist/source/latex/wrapfig2/wrapfig2.dtx
    trunk/Master/texmf-dist/tex/latex/wrapfig2/
    trunk/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
    trunk/Master/tlpkg/tlpsrc/wrapfig2.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/wrapfig2/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/wrapfig2/README.txt	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/wrapfig2/README.txt	2021-12-27 21:15:01 UTC (rev 61423)
@@ -0,0 +1,24 @@
+%%%% README.txt file
+This README.txt for package wrapfig2[2021-12-25 v.4.0 ...]
+
+This work is author maintained
+
+This work consists of wrapfig2.dtx, the main file, this README.txt
+and the derived files wrapfig2.pdf and wrapfig2.sty.
+
+Licence appended to the wrapfig2.sty file.
+
+The software contained herein is a fork of Donald Arseneau wrapfig
+package. It uses most of his code, but adds a new environment, 
+wraptext, to the existing wrapfigure and wraptable. In addition 
+most code uses the LaTeX3 functionalities.
+
+Supposedly this software is backwards compatible with Arseneau's
+original environments. Future experience may confirm this statement.
+
+The user commands are defined by means of the LaTeX3 functionalities.
+Therefore this package does not work with LaTeX2e kernels older than  about 2018, although a warning is issued if the LaTeX format file is dated with a date older than 1st January 2019.
+
+Claudio Beccari
+
+claudio dot beccari at gmail dot com
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/wrapfig2/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/wrapfig2/wrapfig2.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/wrapfig2/wrapfig2.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/wrapfig2/wrapfig2.pdf	2021-12-27 21:14:20 UTC (rev 61422)
+++ trunk/Master/texmf-dist/doc/latex/wrapfig2/wrapfig2.pdf	2021-12-27 21:15:01 UTC (rev 61423)

Property changes on: trunk/Master/texmf-dist/doc/latex/wrapfig2/wrapfig2.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/wrapfig2/wrapfig2.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/wrapfig2/wrapfig2.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/wrapfig2/wrapfig2.dtx	2021-12-27 21:15:01 UTC (rev 61423)
@@ -0,0 +1,1397 @@
+% \iffalse
+% !TEX encoding = UTF-8 Unicode
+% Remember to use \StopEventually{}, otherwise no Check Sum
+%<*internal>
+\begingroup
+\input docstrip.tex
+\keepsilent
+\preamble
+
+Copyright (C) 1991-2003 by Donald Arseneau  (asnd at triumf.ca)
+Copyright (C) 2021 by Claudio Beccari (claudio.beccari at gmail.com)
+License information appended
+  
+\endpreamble
+
+\postamble
+
+Distributable under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is "maintained"
+
+This work  consists of file  wrapfig2.dtx, and the derived  files 
+wrapfig2.sty and wrapfig2.pdf, plus the auxiliary file README.txt.
+
+\endpostamble
+\askforoverwritefalse
+
+\generate{\file{wrapfig2.sty}{\from{wrapfig2.dtx}{package}}}
+
+\def\tmpa{plain}
+\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
+\endgroup
+%</internal>
+% \fi
+%
+% \iffalse
+%<*package>
+%<package>\NeedsTeXFormat{LaTeX2e}[2019/01/01]
+%</package>
+%<*driver>
+\ProvidesFile{wrapfig2.dtx}%
+%</driver>
+%<+package>\ProvidesPackage{wrapfig2}%
+%^^A<+readme>File README.txt for package wrapfig2
+%<*package|readme>
+        [2021-12-21 v.4.0 Wrapfig extended]
+%</package|readme>
+%<*driver>
+%
+\documentclass{ltxdoc}\errorcontextlines=100
+\hfuzz 10pt
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{mflogo}
+\usepackage{multicol,amsmath,fancyvrb,graphicx,verbatim,pict2e,trace}
+\usepackage{xfp,xcolor,wrapfig2,tcolorbox,kantlipsum,xspace}
+\GetFileInfo{wrapfig2.dtx}
+\title{The \textsf{wrapfig2} package}
+\author{Claudio Beccari\thanks{E-mail: \texttt{claudio dot beccari at gmail dot com}}}
+\date{Version \fileversion~--~Last revised \filedate.}
+\providecommand*\diff{\mathop{}\!\mathrm{d}}
+\renewcommand\meta[1]{{\normalfont\textlangle\textit{#1}\textrangle}}
+\renewcommand\marg[1]{\texttt{\{\meta{#1}\}}}
+\providecommand\opz{}
+\renewcommand\opz[1]{{\normalfont\texttt{\itshape#1}}}
+\providecommand\Marg{}
+\renewcommand\Marg[1]{\texttt{\{#1\}}}
+\providecommand\oarg{}
+\renewcommand\oarg[1]{\texttt{[\meta{#1}]}}
+\providecommand\Oarg{}
+\renewcommand\Oarg[1]{\texttt{[#1]}}
+\providecommand\aarg{}
+\renewcommand*\aarg[1]{\texttt{<\meta{#1}>}}
+\providecommand\Aarg{}
+\renewcommand\Aarg[1]{\texttt{<#1>}}
+\providecommand\barg{}
+\renewcommand\barg[1]{\texttt{\string|\meta{#1}\string|}}
+\providecommand\Barg{}
+\renewcommand\Barg[1]{\texttt{\string|#1\string|}}
+\providecommand\parg{}
+\renewcommand\parg[1]{\texttt{(\meta{#1})}}
+\providecommand\Parg{}
+\renewcommand\Parg[1]{\texttt{(#1)}}
+\providecommand\eTeX{}
+\renewcommand\eTeX{\lower0.5ex\hbox{$\varepsilon\!$}\TeX}
+\providecommand\pack{}
+\renewcommand\pack[1]{{\normalfont\texttt{#1}}}
+\providecommand\class{}
+\renewcommand\class[1]{{\normalfont\texttt{#1}}}
+\providecommand\env{}
+\renewcommand\env[1]{\meta{\textsf{\slshape#1}}}\let\amb\env
+\providecommand\Env{}
+\renewcommand\Env[1]{\textsf{\slshape#1}}\let\Amb\Env
+\providecommand*\Bambiente[1]{\texttt{\char92begin\{#1\}}}
+\providecommand*\Eambiente[1]{\texttt{\char92end\{#1\}}}
+\let\Bamb\Bambiente \let\Benv\Bamb
+\let\Eamb\Eambiente \let\Eenv\Eamb
+
+\makeatletter
+
+\AfterEndPreamble{%
+\apptocmd{\TeX}{{}\xspace}{}{}
+\apptocmd{\LaTeX}{{}\xspace}{}{}}
+
+\DeclareRobustCommand\LaTeXe{%
+  \LaTeX\@killglue\kern0.15em2$_{\textstyle \varepsilon}${}\xspace}
+\DeclareRobustCommand\LaTeXccix{%
+  \LaTeX\@killglue\nobreakspace2.09{}\xspace}
+\DeclareRobustCommand\LaTeXiii{\LaTeX\@killglue\kern0.15em3{}\xspace}
+\DeclareRobustCommand*\pdfLaTeX{pdf\/\LaTeX}
+\DeclareRobustCommand*\LuaLaTeX{Lua\LaTeX}
+\DeclareRobustCommand*\XeLaTeX{%
+X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
+\lower.5ex\hbox{\rotatebox[origin=c]{180}{E}}%
+\ifdim\fontdimen1\font=0pt\kern-0.15em\else\kern-0.275em\fi
+\LaTeX}
+
+\providecommand\setfontsize{}
+\RenewDocumentCommand\setfontsize{O{1.2} m}{%
+  \fontsize{#2}{\fpeval{#1*#2}}\selectfont}
+
+
+\newwrite\example at out
+\ProvideDocumentEnvironment{Esempio}{ O{\footnotesize} D(){0.50}}
+% All definitions and assignments are local
+% #1 := LaTeX font size command or  \setfontsize{<size>}
+% %2 := \textwidth percentage for the code box; the complement, less the
+%       column gap, for the resulting compiled code
+% Syntax: \begin{Esempio}[<size command>](<code-box percentage-width>)
+%
+{\par\addvspace{3.0ex plus 0.8ex minus 0.5ex}\vskip -\parskip
+\dimendef\Wboxu=2570 \dimendef\Wboxd=2572
+\Wboxu=#2\textwidth\relax
+\Wboxd=\dimexpr\linewidth-\columnsep-\Wboxu\relax
+\begingroup
+\@bsphack
+\immediate\openout\example at out\jobname-temp.tex
+\let\do\@makeother\dospecials\catcode`\^^M\active
+\def\verbatim at processline{%
+  \immediate\write\example at out{\the\verbatim at line}}%
+\verbatim at start\relax}%
+{\immediate\closeout\example at out\@esphack\endgroup
+\begin{lrbox}{0}%
+\begin{minipage}{\textwidth}%
+\begin{minipage}{\Wboxu}%
+#1\relax
+\verbatiminput{\jobname-temp.tex}
+\end{minipage}%
+\hfill
+\begin{minipage}{\Wboxd}\raggedleft
+\input{\jobname-temp}%
+\end{minipage}
+\end{minipage}%
+\end{lrbox}%
+
+\medskip
+\noindent\makebox[\textwidth]{\box0}%
+\par
+}
+
+\providecommand\hz{\hskip0pt}
+
+\newenvironment{ttsintassi}{\begin{lrbox}{0}
+  \minipage{\dimexpr\linewidth-2\fboxrule-2\fboxsep}\ttfamily\obeylines}%
+{\endminipage\end{lrbox}\center\fbox{\box0}\endcenter}
+    
+
+%
+\begin{document}\errorcontextlines=100
+\maketitle
+\columnseprule=0.4pt
+\begin{multicols}{2}
+ \tableofcontents
+ \end{multicols}
+ \DocInput{wrapfig2.dtx}
+ 
+\end{document}
+%</driver>
+% \fi
+%
+% \begin{abstract}
+% This new package \pack{wrapfig2} is a fork that upgrades Donald
+% Arseneau's package \pack{wrapfig} (version 2.6, dated 2003) by
+% adding some \LaTeXiii definitions that accept a final optional star;
+% its presence changes the meaning of the first optional
+% argument so that it becomes a correction to the number of lines
+% that must be indented in order to receive the wrapped object.
+% A new environment is added to the traditional \Env{wrapfigure}
+% and \Env{wraptable}, namely \Env{wraptext}; it may be used
+% to wrap a small framed text block on a grey background; the
+% philosophy of this new environment is similar to that of the
+% other two environments, but the syntax is different.
+% \end{abstract}
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Caution} This package requires a fairly recent
+% \LaTeX kernel, otherwise it won't work; any \LaTeX kernel dated
+% at least 2020 is~OK.
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Introduction}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The purpose of this package is twofold. On one side it tries
+% to modernise the original software by Donald Arseneau by
+% upgrading it to the \LaTeXiii modern language. On the other it
+% creates a new environment, with the same philosophy
+% of the original Arseneau's ones, such that a document author
+% can emphasise short blocks of text by framing them while
+% typesetting the text on a coloured background by means of
+% the \pack{tcolorbox} functionalities, and wrapping this
+% inserted text with the surrounding main text.
+%
+% The original software had some idiosyncrasies; Donald Arseneau
+% described them in the documentation of his package; I am sorry
+% to say that such idiosyncrasies have not been reduced; but in any case
+% the solution is to wrap the inserted object with a sufficient
+% number of lines, i.e. by a sufficiently long paragraph.
+%
+% The above implies that no wrapped object code should be inserted
+% by the end of a paragraph; again no object code should be inserted
+% within any list; not even close to the end or to the
+% beginning of section. Arseneau's code is capable of
+% specifying the wrapping number of lines such that two or more
+% paragraphs can be indented so as to wrap a longish insertion,
+% but it is wise to avoid such risky situations. Moreover, if the
+% inserted figure or table has a numbered caption, the number might
+% not result in the correct order with the normal corresponding
+% floating objects.
+%
+% Therefore the usefulness of the wrapping procedure depends very
+% much from the document author ability to move around his/her code
+% until a suitable position is found. Certainly a good place is
+% within a longish first section at the beginning of a new chapter.
+%
+% The code of this package does not do anything to correct such
+% idiosyncrasies. They are caused by the limitations of the
+% \cs{ShipOut} native \TeX/\LaTeXe macro, and very little can be done in
+% addition to what Arseneau already did.
+%
+% Another purpose of this package is to add an option so that the
+% \meta{number of indented lines} argument does not mean the total
+% number, but the correction number to add-to or subtract-from to the
+% value computed by the default mechanism devised by Arseneau. We assume
+% that any user first uses the software to insert an object to be wrapped
+% by the surrounding text without specifying any value with the
+% specific optional argument; then evaluates the result, and if the
+% space below the wrapped object is too large, or if such space is
+% too small s/he counts the necessary number of lines and specifies
+% it to be processed during another document compilation. When the
+% object to be wrapped is tall, it is very easy to miscount the
+% necessary number of lines, while is is very easy to evaluate the
+% necessary small correction to the default computed value.
+%
+% A third purpose of this package is to define a new environment,
+% \Env{wraptext}, to wrap a framed text block typeset on a grey
+% background as if it were a figure. On \texttt{texstackexchange}
+% a solution was suggested to a user who was asking for such an
+% arrangement; the solution resorted to a specific use of the
+% \Env{wrapfigure} environment. We thought that an \emph{ad hoc}
+% solution would be a better one, since the parameters to be used for a
+% figure have nothing or little to do with a text, therefore most
+% of them would be useless with a wrapped text. Nevertheless the
+% \meta{location} of the wrapped text and the optional correction
+% of the indented lines number would still be necessary. We added also
+% the possibility of optionally specifying the measure of the
+% wrapped text, even if this measure should not be too different
+% from a half of the wrapping text measure: with a value too different
+% from \texttt{0.5\cs{linewidth}} either the wrapped text has problems
+% with inter word spaces and hyphenation because of the small measure,
+% or, on the opposite, the indented lines of the wrapping text have
+% similar problems.
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Environment syntax}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The new syntax for \Env{wrapfigure} and \Env{wraptable} is backwards
+% compatible with the original one: just a final optional star is
+% added to the original list of arguments. 
+% As the list of arguments shows, the \Env{wraptext} environment has
+% similar features, but all its arguments are optional, so that they
+% may be specified independently from one another, provided that, when
+% they are more than one, they are specified in the order
+% shown in the syntax table.
+%
+% The optional star is available only for the standard \Env{wrapfigure}
+% and \Env{wraptable} environments because the backwards compatibility
+% requires the first four optional and mandatory arguments. When the
+% optional star is specified, the \meta{indented lines number} is
+% interpreted as the correction to the computed number.
+%
+% \begin{ttsintassi}\setfontsize{8.10}
+%\Bambiente{wrapfigure}\oarg{indented lines number}\marg{location}\oarg{overhang}\oarg{width}\meta{$\star$}
+%\qquad\meta{figure}
+%\Eambiente{wrapfigure}
+%~
+%\Bambiente{wraptable}\oarg{indented lines number}\marg{location}\oarg{overhang}\oarg{width}\meta{$\star$}
+%\qquad\meta{table}
+%\Eambiente{wraptable}
+%~
+%\Bambiente{wraptext}\oarg{location}\barg{width}\aarg{indented line number correction}\parg{caption label}
+%\qquad\meta{wrapped framed text}
+%\Eambiente{wraptext}
+% \end{ttsintassi}
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\section{Examples}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% We display some examples by using fake objects such that suitably
+% long paragraphs are available; some fake language long paragraphs are
+% obtained by means of the \pack{kantlipsum} package functionalities.
+% They contain paragraphs that look as Kant's sentences, but we
+% doubt that Immanuel Kant ever wrote such texts\dots
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{A wrapped figure}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+%\begin{wrapfigure}{r}{50mm}*
+%\centering\unitlength=1mm
+%\begin{picture}(40,30)
+%\polygon(0,0)(40,0)(40,30)(0,30)
+%\Line(0,0)(40,30)\Line(0,30)(40,0)
+%\end{picture}
+%\caption{A rectangle}
+%\end{wrapfigure}
+%
+% \kant[1]
+%
+%
+% The code used to type the above figure is the following:
+%
+%\begin{flushleft}\obeylines%
+%\noindent\Bambiente{wrapfigure}\Marg{r}\Marg{50mm}
+%\cs{centering}\cs{unitlength}=1mm
+%\Bambiente{picture}\texttt{(40,30)}
+%\cs{polygon}\texttt{(0,0)(40,0)(40,30)(0,30)}
+%\cs{Line}\texttt{(0,0)(40,30)}\cs{Line}\texttt{(0,30)(40,0)}
+%\Eambiente{picture}
+%\cs{caption}\Marg{A rectangle with its diagonals}
+%\Eambiente{wrapfigure}
+%~
+%\cs{kant}\Oarg{1}
+%\end{flushleft}
+%
+% No asterisk was used because the package succeeded to correctly
+% compute the necessary number of indented lines.
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{A wrapped table}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Wrapping a small table is a little more difficult than wrapping
+% a figure, because the width of the inserted object is not known
+% exactly in advance and is difficult to estimate; therefore it is
+% possible that several trial compilations are necessary. In any
+% case a \cs{centering} command might help to center the table
+% within the indention of the wrapping text. Nevertheless the
+% software can compute the object width if a zero value is specified
+% or if the mandatory \meta{width} parameter is completely omitted;
+% this second possibility is a feature of this package, that uses a
+% \LaTeXiii property by which even a braced argument can be treated
+% as an optional argument with a predefined default value; see below
+% more details about this feature.
+%
+%\begin{wraptable}{l}
+%\centering 
+%  \begin{tabular}{cc}
+%  \hline
+%  First & Second\\
+%  Third & Fourth\\
+%  \hline
+%\end{tabular}
+%\caption{A small table}
+%\end{wraptable}
+%
+%\kant[2]
+%
+% The above wrapped small table has been typeset by means of the
+% following code.
+%\begin{flushleft}\ttfamily\obeylines
+%\Bambiente{wraptable}\Marg{l} 
+%\quad\cs{centering} 
+%\quad\Bambiente{tabular}\Marg{cc}
+%\qquad\cs{hline}
+%\qquad First \& Second\string \\
+%\qquad Third \& Fourth\string \\
+%\qquad\cs{hline}
+%\quad\Eambiente{tabular}
+%\quad\cs{caption}\Marg{A small table}
+%\Eambiente{wraptable}
+%\cs{kant}\Oarg{2}
+%\end{flushleft}
+%
+% You notice the absence of the braced width value; as said above,
+% this braced value is optional, and the software autonomously
+% computes the width of the wrapped object. This feature may be
+% useful in many instances, although we think that a smart use of
+% this width parameter might yield better looking results.
+% 
+% On the opposite if the user estimates that the table with its
+% caption might use 5 lines, and specified such a value as the
+% first (optional) argument to the environment, the result would
+% be this poor one, with the last caption line overlapping the
+% wrapping text.
+%
+%\begin{wraptable}[5]{l}
+%\centering 
+%  \begin{tabular}{cc}
+%  \hline
+%  First & Second\\
+%  Third & Fourth\\
+%  \hline
+%\end{tabular}
+%\caption{A small table}
+%\end{wraptable}
+%\kant[2]
+%
+% If 
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{A wrapped text}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{wraptext}
+% Text, text, text, text, text, text, text, text, text, text, text.
+% \end{wraptext}
+% \kant[3]
+%\enlargethispage{-2\baselineskip}
+% 
+% The above example was typeset with this simple code:
+%\begin{flushleft}\obeylines
+% \Bamb{wraptext}
+% \ttfamily Text, text, text, text, text, text, text, text, text, text, text.
+% \Eamb{wraptext}
+% \cs{kant}[3]
+%\end{flushleft}
+%
+% As it was previously shown, the syntax for the \Env{wraptext}
+% environment is a little different from that of the other two
+% environments. The logic behind it is substantially the same;
+% the \meta{width} parameter is optional; its preset value is
+% half the column width, that in one column typesetting mode
+% coincides with the text width. The wrapped text is typeset
+% in justified mode within a \Env{minipage} environment; the
+% measure of this mini page should not be too small (unless
+% the text is less than one line long) otherwise the inter
+% word spacing might be too large; at the same time the measure
+% of the mini page cannot be too large, otherwise the indented
+% wrapping lines, generally justified, might get a bad word
+% spacing. Therefore it is suggested to avoid specifying the
+% optional \meta{widh} outside the range of 40\% to 60\% the
+% column width. Actually specifying \texttt{0.2\cs{textwidth}}
+% or \texttt{0.4\cs{columnwidth}} when typesetting in two column
+% mode produces approximately the same result, because
+% \cs{columnwidth} is a little less than half the \cs{textwidth}.
+%
+% A warning is necessary: if a caption is entered
+% within the environment, such caption gets typeset within the
+% background coloured frame. We think that a framed text does not
+% require any caption; if such caption were necessary, then the
+% user should resort to other means, for example, to a standalone
+% small PDF file containing the framed shaded text to be imported
+% as a figure with the \amb{wrapfigure} environment.
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Remarks}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The syntax of the original environments \amb{wrapfigure} and
+% \amb{wraptable} has not been changed, except for a last optional
+% star. The fact that the last braced argument is optional does not
+% change the backward compatibility with the original environments.
+%
+% Therefore the optional \meta{line number} argument maintains its
+% meaning, unless the optional star is specified; in such a case that
+% number assumes the meaning of a correction to the computed number
+% of the indented lines.
+%
+% The mandatory \meta{placement} maintains its meaning and the legal
+% values are \texttt{l} (left), \texttt{r} (right), \texttt{L}
+% (floating left), \texttt{R} (floating right), \texttt{i}
+% (inner margin), \texttt{o} (outer margin), \texttt{I}
+% (floating inner margin), \texttt{O} (floating outer margin).
+% 
+% We tested all of them, but as a personal choice we prefer to
+% place the wrapped object at the left of the text, without
+% floating it and irrespective of the page number parity.
+%
+% As in the previous examples, we prefer to specify the wrapping
+% environment before a sufficiently long paragraph. Should the
+% paragraph be too short to completely wrap the object, all
+% the environments are capable of counting the number of indented
+% lines and to apply the \cs{overhang} command with the remaining
+% line number to the following paragraph(s); in these circumstances
+% it might be necessary to recourse to the optional star in order
+% to correct the indention, since the mechanism does not consider
+% the inter paragraph spacing that \TeX introduces only at ship~out
+% time.
+%
+% We avoid also to enter the wrapping environment before paragraphs
+% that are close to a page break; this action would tickle the
+% idiosyncrasies of the software, and requires moving the wrapping
+% environment some paragraphs before or after the preferred one; but
+% this can be done only while reviewing the document, because any
+% change in the previous source text might change the situation
+% if this adjustment is done while still editing the document.
+%
+% With the standard environments the optional parameter \meta{overhang} 
+% does exactly what its name implies: the wrapped object protrudes
+% into the adjacent margin exactly by the specified amount. This
+% parameter is not available for the \Env{wraptext} environment;
+% we believe that a wrapped text logically pairs the wrapping text;
+% of course this opinion might be wrong and in future upgrades we
+% might add this functionality.
+%
+% The \meta{width} parameter has been already sufficiently described;
+% we just remember that for \Env{wraptext} this parameter is optional
+% and its default value amounts to half the current measure; it can
+% be specified but it should not be too different from 50\% the
+% current measure. For the standard environments this parameter value
+% is mandatory, but, we recall, for the redefined environments
+% \env{wrapfigure} and \env{wraptable}, this braced argument is optional.
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Other floating objects}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Pictures and textual arrays may be floated by means of the standard
+% \amb{figure} and \amb{table} environments. But other floating
+% objects may be defined by means of the \pack{float} package,
+% just to name one, or classes. Besides floating, the main difference
+% is the name of the caption “label”: Figure, Table, Algorithm,
+% Example, and so on.
+%
+% If floating is not necessary, this package (as well as the original
+% one) allows to use the underlying  environment \Env{wrapfloat}
+% that uses the same syntax as \Env{wrapfigure} plus the mandatory
+% name of the new object: even a figure  might be introduced without
+% using \amb{wrapfigure}, by using instead:
+%\begin{flushleft}\ttfamily\obeylines
+%\Benv{wrapfloat}\Marg{figure}\oarg{line number}\marg{placement}\%
+%\quad \oarg{overhang}\marg{width}\meta{$\star$}
+%\qquad\qquad\meta{image}
+%\Eenv{wrapfloat}
+%\end{flushleft}
+% Another \meta{object} may be wrapped by using:
+%\begin{flushleft}\ttfamily\obeylines
+%\Benv{wrapfloat}\marg{object name}\oarg{line number}\marg{placement}\%
+%\quad \oarg{overhang}\marg{width}\meta{$\star$}
+%\qquad\qquad\meta{object}
+%\Eenv{wrapfloat}
+%\end{flushleft}
+%
+% If the floating \meta{placement} codes have to be used, another
+% floating object with the desired \meta{object name} has to be
+% previously  defined by means of the functionalities of other
+% packages or classes.
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \CheckSum{1061}
+% \StopEventually{}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{The code}
+%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Here we describe and comment the code of this package; essentially 
+% only the initial parts need some comments; because the final ones
+% are almost identical to the original Arseneau's code.
+%
+% We start with the usual specification of the format name and date,
+% and the identification of this specific package. We possibly load
+% the \pack{etoolbox} package, because we immediately need a
+% test on the existence of an @-protected macro; should this macro
+% already been defined by the class or other packages (including a
+% previous loading of this package or the previous Arseneau's one)
+% the loading is immediately aborted. If is was not previously loaded,
+% we load the \pack{xfp} package, that allows us to perform precise
+% calculations. Loading the \pack{xparse} package is necessary in
+% order to use one of its rare features that did not migrate
+% to the \LaTeX kernel. From the \LaTeX News Letter dated October 2020:
+%\begin{quote}
+% Most, but not all, of the argument types defined by \pack{xparse}
+% are now supported at the kernel level. In particular, the types
+% \texttt{g/G}, \texttt{l} and \texttt{u} are not provided by the
+% kernel code; these are \emph{deprecated} but still available by
+% explicitly loading \pack{xparse}. All other argument types are
+% now available directly within the \LaTeXe kernel.
+%\end{quote}
+% For now their availability eases the treatment of the backwards
+% compatibility of this software with the original \pack{wrapfig}
+% functionality. It deals with the mandatory \meta{width} argument
+% of the \pack{wrapfigure}, \pack{wraptable}, and \pack{wrapfloat}
+% environments, where it was possible to specify a zero value.
+% Now it is possible to omit it completely because it is a
+% \emph{braced optional argument}.
+%
+%\iffalse
+%<*package>
+%\fi
+
+%    \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[2020-01-01] 
+\ProvidesPackage{wrapfig2}%
+ [2021-11-30 v.4.0 Wrap text around figures, tables, framed text blocks]
+\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
+\ifcsdef{c at WF@wrappedlines}{\endinput}{}
+\ifcsdef{fpeval}{}{\RequirePackage{xfp}}
+\RequirePackage{xparse}
+
+%    \end{macrocode}
+% 
+% Next we define some dimensions, boxes, token registers, \TeX counters,
+% and alias names. The \cs{WF at correctlines@switch} \TeX numeric register
+% (not a \LaTeX counter) is going to be used a  boolean switch; if its
+% value is zero, il means “false”, otherwise is “true”; in the other
+% definitions below,  it will be set only to 0 or 1, depending on the
+% presence of the optional star.
+%    \begin{macrocode}
+\newdimen\wrapoverhang \wrapoverhang\z@
+\newdimen\WF at size
+\newcounter{WF at wrappedlines} 
+\newbox\WF at box 
+\newbox\NWF at box
+\newtoks\WF at everypar
+\newif\ifWF at float
+\newcount\WF at correctlines@switch
+\newdimen\insertwidth
+\let\@@parshape\parshape
+\let\WF@@everypar\everypar
+
+%    \end{macrocode}
+%
+% In what follows we are going to use very often the functionalities
+% of the \pack{xparse} package that are mostly already included into
+% the \LaTeX  kernel; but, since we use one of this functionalities that
+% have not migrated to the \LaTeX kernel, we load it, as they remain
+% available with that package; nevertheless we specified a
+% \LaTeX format date insuring that the \LaTeXiii syntax is available.
+%
+% Should the format file be an older one, a multitude of errors would be
+% produced, and the user should take care to load the \pack{xparse}
+% and \pack{xfp} packages before loading \pack{wrapfig2}.
+% Notice that most of the \pack{xparse} package functionalities
+% at the date required for the format file are already included. The
+% \pack{xparse} package has been available about in 2018; should the user
+% have available a definitely  older \TeX system installation, s/he
+% should upgrade it, or must avoid using this \pack{wrapfig2} package
+% and use the original one; if s/he needs to wrap text, s/he should
+% resort to some ingenious tricks to do it.
+%
+% The opening command of the \Env{wrapfloat} environment receives
+% the mandatory and optional arguments plus the name of the particular
+% object to be wrapped. It is used to define the prefix label of the
+% caption number in case that the object is described with a caption. The
+% optional star is not explicit, because it is going to be read by
+% the \cs{WF at wr} macro.
+%
+% The closing command of \Env{wrapfloat} performs most of
+% the work necessary to wrap the box that contains the object
+% to be wrapped, but certain tasks are demanded to other service
+% macros.
+%
+% It may set the width of the box if the \meta{width} parameter
+% is specified; otherwise it closes the \cs{hbox} that was used;
+% then it closes the main vertical box \cs{WF at box}. After executing
+% \cs{WF at floatstyhook}, necessary when package \pack{float.sty}
+% has been used, it saves the \meta{overhang} value to be used when
+% wrapping is actually performed; then it verifies if the box height
+% is too high to fit, or is too short; possibly re-boxes this box
+% in the same box register with a negative initial vertical skip
+% that raises the box contents.
+%
+% The definitions of the \Env{wrapfigure} and \Env{wraptable}
+% environments are very simple by means of the underlaying
+% \Env{wrapfloat} environments.
+%    \begin{macrocode}
+\NewDocumentEnvironment{wrapfigure}{o m o G{0pt}}%
+  {\wrapfloat{figure}[#1]{#2}[#3]{#4}}%
+  {\endwrapfloat}
+  
+\NewDocumentEnvironment{wraptable}{o m o G{0pt}}%
+  {\wrapfloat{table}[#1]{#2}[#3]{#4}}%
+  {\endwrapfloat}
+  
+%    \end{macrocode}
+% 
+% The definition of the \Env{wraptext} environment is more detailed,
+% because most of the computations must be done on the actual text
+% to be wrapped, that does not have a specific width; moreover the
+% inserted text must not be too wide, nor too short in order to avoid
+% problems for its justification or the justification of the wrapping
+% text. The framed box width is preset to 50\% of the normal text measure,
+% but it can be optionally specified to a different value (not too
+% different from 50\%), while for the other environments the wrapped
+% material width is an \emph{optional braced parameter}.
+%
+% For what concerns the \Env{wraptext} environment, see below,
+% because the code is a little more complicated and requires some
+% explanation.
+% In facts the first statement argument description list does not
+% contain any descriptor for an optional star. There is no need
+% because the computation of the insertion block height is pretty
+% precise and at most the user might desire one line more or less
+% depending on the  measure of the whole text, and that of the
+% inserted block and/or the measure of the indented wrapped lines.
+%
+% It is true that some of the input parameters specified to the opening
+% command with \LaTeXiii are available also to the closing commands; see
+% the last paragraph of section~2 in the \pack{xparse} documentation. 
+% But the following definition, besides using special delimiters for
+% optional parameters,  uses the separate opening and closing
+% macros  of the \Env{wrapfloat} environment; such procedure
+% apparently breaks this second availability of the input parameters,
+% therefore it is necessary to save them into local macros or count
+% registers (assignments of \TeX count registers are \emph{local},
+% while assignment of the \LaTeX\ named counters, through the
+% \cs{setcounter} macro and its siblings, are \emph{global}) so 
+% that we can use their values within the closing commands.
+%
+% The \cs{NWF at box} has been assigned at the beginning; remember
+% that \LaTeXiii registers of any kind are not limited in number
+% as they were some years ago even with \LaTeXe. 
+% The last opening commands are conceived to box the object to be
+% wrapped, typeset within a \Env{minipage} with the default or
+% specified width; such box, and the \Env{tcolorbox} and
+% \Env{minipage} environments are closed at the beginning of the
+% closing commands, so that what is necessary in order to place the
+% wrapped boxed text is easy to be executed.
+%
+% The number of indented lines is computed by  means of the
+% \cs{fpeval} \LaTeXiii function; among the operands of this
+% function there is the value \texttt{2} used to take into
+% account the vertical space used by \Env{tcolorbox} to
+% separate the frame from its contents. It is possible that
+% a value of \texttt{3} might reduce the probability of using the
+% \meta{line number correction}. But it is not always true and we
+% found that the chosen value is a better choice.
+%
+% Eventually the opening \Env{wrapfloat} statement is created by
+% expanding the whole line complete of arguments, by means of the
+% usual trick of defining a dummy macro within a group that contains
+% among its expansion the group closing command, so that while
+% it is being executed, it deletes itself from memory.
+%    \begin{macrocode}
+\NewDocumentEnvironment{wraptext}%
+      {O{l}    D||{0.5\columnwidth} D<>{0}   D(){figure}}%
+{%                                                        Open environment
+  \insertwidth=#2\relax
+  \def\textplacement{#1}%
+  \def\textcorrection{#3}%
+  \def\WF at caption@label{#4}%
+  \begin{lrbox}\NWF at box%            This box is to contain the framed text
+    \minipage{\insertwidth}%
+   \tcolorbox
+}{%                                                      Close environment
+  \endtcolorbox\endminipage\end{lrbox}%
+  \edef\NWF at wli%                        \NWF at wli is a macro, not a counter
+    {%
+      \fpeval{%
+        round((\ht\NWF at box+\dp\NWF at box)/\baselineskip,0)+2+\textcorrection
+             }%
+    }%
+  \ifhmode\unskip\else\leavevmode\noindent\fi
+  \bgroup\edef\x{\egroup\noexpand\wrapfloat{\WF at caption@label}[\NWF at wli]%
+      {\textplacement}{\the\insertwidth}}\x
+    \box\NWF at box %                       Output framed box containing text
+  \endwrapfloat
+  \ignorespaces
+}
+
+%    \end{macrocode}
+%
+% Now comes the definition of the fundamental environment \Env{wrapfloat};
+% compared to the original Arseneau's definition it is much longer,
+% but it contains the code that Arseneau, who wrote the code in 
+% \LaTeXe language, had to split in several macros in order to
+% handle the multitude of interspersed mandatory and optional
+% arguments.
+%
+% The main function of this environment is to handle the box that
+% contains the figure, or the table, or the framed test, or what
+% else, so that the inserted box is preceded and followed by the
+% suitable vertical spaces, and it is possible to compute the
+% number of lines to be indented; often this computed number is correct;
+% but in certain cases, when the code is used too close or
+% within prohibited wrapping text, such number might need to be
+% corrected. As it can be seen the optional star is not among
+% the argument descriptors of the opening commands; it will be
+% the following macro \cs{WR at wr} to take care of examining
+% the list of arguments and see if a star has been specified and
+% not yet read by the preceding commands.
+%
+% In order to handle any kind of wrapped object, this environment
+% first argument is the \meta{caption label}. It may remain blank;
+% but for wrapping figures or tables their respective definitions
+% specify the name of the floating object they belong to; it is not
+% necessary that there exists a floating environment with the same
+% name of the wrapped object, when its wrapping environment is not
+% specified with a floating \meta{placement} argument.
+%
+%    \begin{macrocode}
+
+\NewDocumentEnvironment{wrapfloat}{m o m o G{\z@}}%
+  {\def\@captype{#1}\WF at wr[#2]{#3}[#4]{#5}}%
+  {\ifdim\hsize>\z@ 
+    \par\hrule\@width\hsize\@height\z@ %   force width with invisible rule
+  \else 
+    \unskip \egroup \box\z@  %                               or close hbox
+  \fi 
+ \egroup %                      close the vtop box; its width now is known 
+  \WF at floatstyhook %                                 support for float.sty
+  \def\width{\wd\WF at box}%
+  \setlength\wrapoverhang{\WF at ovh}%
+  \xdef\WF at ovh{\the\wrapoverhang}%                     save until wrapping
+  \ifdim\ht\WF at box>\topskip \ht\WF at box\z@ \fi%          too high, set flag
+  \ifdim\ht\WF at box<.5\p@ %                              too short, move up
+    \global\setbox\WF at box\vtop{\vskip-1.4ex\unvbox\WF at box}%
+  \fi
+   \global\WF at size=%                  compute total box hight with \fpeval
+     \fpeval{\ht\WF at box+\dp\WF at box+1.5\baselineskip+\tw@\intextsep}\p@
+   \aftergroup\WF at startfloating %        use even when not really floating
+  \unless\ifWF at float 
+    \ifhmode
+      {\unskip \parfillskip\z at skip \par \vskip-\parskip}%
+      \aftergroup\noindent
+    \fi
+  \fi 
+  \global\@ignoretrue
+  }
+
+%    \end{macrocode}
+%
+% The working macro \cs{WF at wr} is defined with the \LaTeXiii
+% language; it grabs all the optional and mandatory arguments
+% in a single step, contrary to \LaTeXe that requires to split
+% the various steps in separate macros. In the definition code
+% we use also some commands, such as \cs{unless}, originally
+% defined by the \eTeX typesetting program extensions, that have
+% been included in the \pdfLaTeX, \XeLaTeX and \LuaLaTeX kernels
+% several years ago.
+%
+% Notice that the optional first (optional) argument, that represents
+% the number of indented lines or their correction number, is saved
+% into the macro \cs{WF at wli}, but if this argument is not specified,
+% \cs{WF at wli} is assigned the value zero. The same happens for the
+% \meta{overhang} optional argument.
+%
+% After these adjustments, it computes the box total height plus some
+% fixed amounts needed mostly to set the wrapped material below the
+% first wrapping text first line. Here is where the \LaTeXiii
+% \cs{fpeval} computing macro comes into play so as to assign such
+% height to \cs{WF at size}. Some unusual macros are executed; they
+% were devised by Arseneau to deal with possibly floating wrapped
+% objects. The optional star is not accepted by this macro; if the user
+% specified it, it is still in the input flux; notice that the
+% \Env{wraptext} environment does not accept the optional star; if
+% the user specifies it for this environment, an asterisk appears
+% at the beginning of the wrapped text.
+%
+% The mandatory \texttt{\#4} \meta{width} parameter (actually a
+% \meta{optional braced parameter}) may be specified
+% to be \texttt{0pt}; in any case \texttt{0pt} is the default parameter
+% value; if so, the object is treated at its natural width, by
+% boxing it into an hbox and using this hbox width as the working width
+%    \begin{macrocode}
+\NewDocumentCommand\WF at wr{o m o m s}{%
+  \xdef\WF at wfname{wrap\@captype\space}%
+  \unless\ifvoid\WF at box 
+    \WFclear \WF at collision 
+  \fi
+  \xdef\WF at place{\string`\@car#2r\@nil}%
+  \ifnum\lccode\WF at place=\WF at place 
+      \global\WF at floatfalse
+  \else 
+      \global\WF at floattrue 
+  \fi
+  \ifx\parshape\WF at fudgeparshape 
+    \unless\ifWF at float\\WF at collision\fi 
+  \else
+    \ifx\par\@@par 
+      \ifnum\@@parshape>\z@\WF at conflict\fi 
+    \else 
+      \WF at conflict
+    \fi
+   \fi 
+   \IfValueTF{#1}%                 save optional line number or correction
+     {\gdef\WF at wli{#1}}%
+     {\gdef\WF at wli{0}}%
+% 
+  \IfValueTF{#3}%                                   save optional overhang
+      {\gdef\WF at ovh{#3}}%
+      {\gdef\WF at ovh{\z@}}% 
+%
+   \global\setbox\WF at box\vtop\bgroup \setlength\hsize{#4}%       set width
+   \ifdim\hsize>\z@
+     \@parboxrestore
+   \else
+     \setbox\z@\hbox\bgroup
+     \let\wf@@caption\caption
+     \let\caption\wf at caption
+     \ignorespaces
+   \fi
+  \IfBooleanTF{#5}%    if the asterisk is present set the numerical switch
+              {\global\WF at correctlines@switch=\@ne}% 
+              {\global\WF at correctlines@switch=\z@}%
+  \global\@ignoretrue
+}
+
+%    \end{macrocode}
+%
+% At this point the main box \cs{WF at box} is opened in order to
+% store the object to be wrapped; with this box height the software
+% is going to compute the number of lines to be indented, unless
+% such a number has been specified and no star was added to the
+% input parameters.
+%
+% Also the \amb{wraptext} environment uses a box to collect the
+% framed text; the name of this second box must be different from
+% \cs{WF at box} otherwise interference of the various tasks produces
+% unrecoverable errors. This is why at the beginning of this
+% package we defined two different boxes: \cs{WF at box} and \cs{NWF at box}.
+%
+% The trick of creating an alias for the \cs{caption} macro is
+% used by Arseneau to redefine one of the two macros according to
+% certain conditions. Here \cs{wf at caption} is actually redefined
+% if the \meta{width} parameter has been specified.
+%    \begin{macrocode}
+\def\wf at caption{\relax%        redefine \wf at caption in case \hsize is zero
+  \ifdim\hsize>\z@ 
+    \let\caption\wf@@caption 
+  \else
+    \unskip \egroup \hsize\wd\z@ \@parboxrestore \box\z@%      empty \box0
+  \fi 
+  \caption
+}
+
+%    \end{macrocode}
+%
+% One of these unusual macros was introduced by Arseneau
+% to deal with paragraph parameters and possibly to float the
+% object to be wrapped.
+%    \begin{macrocode}
+\def\WF at startfloating{%
+ \WF at everypar\expandafter{\the\everypar}\let\everypar\WF at everypar
+ \WF@@everypar{\ifvoid\WF at box\else\WF at floathand\fi \the\everypar
+ \WF at wraphand
+}}
+
+%    \end{macrocode}
+% The following macro is for floating wrapping environments.
+%    \begin{macrocode}
+\def\WF at floathand{%
+  \ifx\parshape\WF at fudgeparshape 
+    \WF at fltmes
+  \else
+    \ifx\par\@@par
+      \ifnum\@@parshape=\z@
+        \ifdim\hangindent=\z@
+          \setbox\z@\lastbox \begingroup
+          \@@par \WF@@everypar{}\WF at putfigmaybe
+          \endgroup %                      after this group start wrapping
+          \unless\ifvoid\z@ %                          replace indentation
+              \box\z@
+          \fi 
+        \else
+          \WF at fltmes
+        \fi
+      \else
+        \WF at fltmes
+      \fi
+    \else
+      \WF at fltmes
+    \fi
+  \fi}
+
+%    \end{macrocode}
+%
+% On the contrary if there is enough space or if the wrapped object
+% cannot float, it gets output here.
+%    \begin{macrocode}
+\def\WF at putfigmaybe{%
+\ifinner
+  \vskip-\parskip \global\WF at floatfalse
+  \let\pagetotal\maxdimen %              kludge flag for "not top of page"
+\else %                                                         outer page
+  \@tempdima\pagedepth %                                   save page depth
+  {\advance\parskip\@tempdima\vskip-\parskip}%        back up to base line
+  \penalty\interlinepenalty %                       update page parameters
+  \@tempdimb\pagegoal \advance\@tempdimb-\pagetotal %    room left on page 
+  \ifdim \@tempdimb<\z@ %                                page already full
+    \global\WF at floatfalse
+    \unless\ifdim-\@tempdimb>\pageshrink 
+      \pagebreak 
+    \fi
+  \else
+    \ifdim\WF at size>\@tempdimb%     box too high does not fit in \@tempdimb
+      \ifWF at float
+        \dimen at .5\baselineskip 
+      \else
+        \dimen@ 2\baselineskip
+      \fi
+      \ifdim\pagestretch>\dimen@ \dimen@\pagestretch \fi
+      \ifdim\pagefilstretch>\z@ \dimen@\@tempdimb \fi
+      \ifdim\pagefillstretch>\z@ \dimen@\@tempdimb \fi
+      \advance\dimen at .5\baselineskip
+      \ifdim\dimen@>\@tempdimb %                     stretch page contents
+        \global\WF at floatfalse \pagebreak
+      \fi
+    \else %                                         box fits in \@tempdimb
+      \global\WF at floatfalse
+    \fi
+  \fi
+  \vskip\@tempdima\relax %                        return erased page depth
+\fi
+\noindent
+\ifWF at float
+  \WF at fltmes
+\else %                                               place insertion here
+  \WF at info{Put \WF at wfname here:}%
+  {\ifodd
+     \if at twoside\c at page\else\@ne\fi %          assign l/r to i/o placement
+     \lccode`i`l\lccode`o`r\else \lccode`i`r\lccode`o`l%
+   \fi
+   \xdef\WF at place{\the\lccode\lccode\WF at place}%
+                 }%                               twice to get only l or r
+  \hbox to\z@{%       llap o rlap depending on lor r; calc effective width
+    \@tempdima\wd\WF at box \@tempdimb\WF at ovh
+    \advance\@tempdima-\@tempdimb \advance\@tempdima\columnsep
+    \@tempdimb\hsize \advance\@tempdimb-\@tempdima
+    \xdef\WF at adjlw{\the\@tempdima}%
+    \ifnum `l=\WF at place %                                   object on left
+      \hss 
+      \def\@tempa{\kern\columnsep}%             take right gap into action
+    \else %                                                insert on light
+      \@tempdima\z@ %                                  no left indentation
+      \kern\@tempdimb \kern\columnsep
+      \def\@tempa{\hss}%                object overlaps space to the right
+    \fi
+    \ifdim\@tempdimb<\hsize
+      \xdef\WF at wrapil{\the\@tempdima \the\@tempdimb}%  indent.n and length
+      \xdef\WF at adjtlm{\the\@tempdima}%
+    \else
+      \xdef\WF at wrapil{\z@ \the\hsize}%
+      \xdef\WF at adjlw{\z@}\xdef\WF at adjtlm{\z@}%
+    \fi
+    \ifdim\pagetotal=\z@ %              put object at top of page \thepage
+      \global\advance\WF at size-\intextsep
+    \else %                               put object in middle of the page
+      \setbox\WF at box\hbox{\lower\intextsep\box\WF at box}%
+    \fi 
+    \dp\WF at box\z@ 
+    \box\WF at box 
+    \@tempa
+  }%                                                      end \hbox to 0pt
+  \aftergroup\WF at startwrapping  
+\fi
+}
+
+%    \end{macrocode}
+%
+% Here comes the very important macro that counts the wrapping indented
+% lines, so that wrapping is correct; of course the limitations
+% of the \TeX and \LaTeX processing (needed to ship out a complete
+% page) forbid to take into account the spaces inserted between
+% paragraphs and/or those inserted between entries of various
+% listings. The idiosyncrasies of this package arise from the
+% fact that this macro cannot preview actions that have not
+% yet taken place when this macro is executed.
+%
+% This macro is the one that counts the lines to be indented by
+% rounding the division of the box height by the current base
+% line skip. Notice that \texttt{WF at wrappedlines} is the name
+% of a \LaTeX named counter, not of a \TeX numeric register;
+% therefore special LaTeX commands, such as \cs{setocounter} or
+% \cs{value}, have to be used in order to  set or access the
+% numerical value stored within the \TeX register associated
+% to the \LaTeX counter name.
+%    \begin{macrocode}
+\def\WF at startwrapping{%
+  \ifnum\WF at wli=\z@ %                              no number was specified
+    \setcounter{WF at wrappedlines}%
+      {\fpeval{round(\WF at size/\baselineskip,0)}}%
+    \xdef\WF at wli{\value{WF at wrappedlines}}%
+  \else
+    \ifnum\WF at correctlines@switch>\z@ %             line number correction
+      \setcounter{WF at wrappedlines}
+        {\fpeval{round((\WF at size)/\baselineskip,0)+\WF at wli}}%
+      \xdef\WF at wli{\value{WF at wrappedlines}}%
+    \else
+      \setcounter{WF at wrappedlines}{\WF at wli}%      absolute number of lines
+      \global\advance\c at WF@wrappedlines\@ne
+    \fi
+  \fi
+  \ifnum\c at WF@wrappedlines>\@ne %                              fine tuning
+    \let\parshape\WF at fudgeparshape \let\WF at pspars\@empty \let\WF@@par\par
+    \def\@setpar##1{\def\WF@@par{##1}}\def\par{\@par}\let\@par\WF at mypar
+    \xdef\WF at restoretol{\tolerance\the\tolerance}\tolerance9999
+    \advance\linewidth-\WF at adjlw \advance\@totalleftmargin\WF at adjtlm
+ \fi}
+
+%    \end{macrocode}
+%
+% The next macro is the one that actually indents the wrapping text lines
+% and keeps track of the number of such processed lines. It can work
+% on more than a single paragraph. It resorts to service macros that
+% reiterate as long as the number of indented lines is lower than the
+% computed number of lines. Possibly this process could be defined by
+% means od the \texttt{dowhile} or \texttt{whiledo} \LaTeXiii functions.
+% By now we did not afford this task, because first we would like to
+% see if the overall software is reliable.
+%    \begin{macrocode}
+\def\WF at wraphand{%                    for indenting one or more paragraphs
+  \ifnum\c at WF@wrappedlines<\tw@ 
+    \WF at finale
+  \else \begingroup %                            create a parshape command
+    \@tempcnta\@ne \let\WF at wrapil\relax \gdef\WF at ps{}%
+    \@whilenum 
+      \@tempcnta<\c at WF@wrappedlines\do{%              repeated indentation
+      \xdef\WF at ps{\WF at ps\WF at wrapil}\advance\@tempcnta\@ne
+      }%
+    \endgroup
+    \ifx\WF at pspars\@empty
+      \@@parshape\c at WF@wrappedlines \WF at ps \WF at noil
+    \else %           use external `parshape' values to modify my parshape
+      \WF at modps
+    \fi
+  \fi
+}
+
+%    \end{macrocode}
+%
+% This macro resets the paragraph properties and terminates the job.
+%    \begin{macrocode}
+\def\WF at mypar{\relax
+  \WF@@par 
+  \ifnum\@@parshape=\z@ 
+    \let\WF at pspars\@empty %                                 reset parshape
+  \fi
+  \global\advance\c at WF@wrappedlines-\prevgraf \prevgraf\z@
+  \ifnum\c at WF@wrappedlines<\tw@ 
+    \WF at finale 
+  \fi
+}
+
+%    \end{macrocode}
+%
+% These macros are to modify the paragraph settings.
+%    \begin{macrocode}
+\def\WF at modps{\begingroup
+  \afterassignment\@tempdimb \@tempdima\WF at pspars % a=indent.num, b= width
+  \advance\@tempdima-\WF at adjtlm \advance\@tempdimb\WF at adjlw
+  \let\WF at wrapil\WF at pspars
+  \edef\@tempb{\@@parshape\c at WF@wrappedlines 
+                \WF at ps \the\@tempdima \the\@tempdimb}%
+  \expandafter\endgroup\@tempb
+}
+
+\let\@@setpar\@setpar
+\def\WF at noil{\z@ \hsize}
+\let\WF at pspars\@empty
+
+\def\WF at fudgeparshape{\relax 
+  \ifnum\c at WF@wrappedlines<\tw@ 
+    \WF at finale
+  \else 
+    \afterassignment\WF at fudgeparshapee \fam 
+  \fi
+}
+
+\def\WF at fudgeparshapee{%
+  \ifnum\fam=\@ne \expandafter 
+    \WF at parshapeee 
+  \else
+    \WF at conflict \@@parshape\fam 
+  \fi
+}
+  
+\def\WF at parshapeee#1#2{%
+  \begingroup\delimitershortfall#1%
+  \nulldelimiterspace#2%         \advance \nulldelimiterspace by \WF at adjlw
+  \edef\@tempa{\def\noexpand\WF at pspars{%
+      \the\delimitershortfall \the\nulldelimiterspace}}%
+  \expandafter\endgroup\@tempa \WF at wraphand
+}
+
+%    \end{macrocode}
+%
+% The following macro is the one that actually ends the single
+% wrapping job.
+%    \begin{macrocode}
+\def\WF at finale{%
+  \ifx\parshape\WF at fudgeparshape
+    \WF at restoretol \let\@setpar\@@setpar \let\par\WF@@par
+    \advance\linewidth\WF at adjlw \advance\@totalleftmargin-\WF at adjtlm
+    \WF at info{Finish wrapping text}%
+    \ifx\par\@@par 
+      \def\@par{\let\par\@@par\par}%
+    \else 
+      \let\@par\WF@@par 
+    \fi
+    \let\parshape\@@parshape
+    \parshape=\ifx\WF at pspars\@empty 
+                \z@ 
+              \else 
+                \@ne \WF at pspars
+              \fi 
+  \fi
+  \ifvoid\WF at box 
+    \ifx\everypar\WF at everypar
+      \let\everypar\WF@@everypar \everypar\expandafter{\the\WF at everypar}%
+    \fi
+  \fi
+}
+
+%    \end{macrocode}
+%
+% At the very end everything is restored, and the used boxes are emptied.
+%    \begin{macrocode}
+\newcommand{\WFclear}{\par 
+  \unless\ifvoid\WF at box
+    \vskip\bigskipamount \box\WF at box
+    \let\everypar\WF@@everypar \everypar\expandafter{\the\WF at everypar}%
+  \fi 
+  \global\c at WF@wrappedlines\z@ \WF at finale
+  \global\WF at correctlines@switch\z@
+}
+
+%    \end{macrocode}
+%
+% The following code is one of those “dirty tricks” by which a macro 
+% defined within a group is executed with the help of an 
+%\cs{expandafter} command that bypasses an \cs{endgroup}; by so doing
+% nothing local to the group remains in memory.
+%    \begin{macrocode}
+\begingroup
+ \toks0={\let\everypar\WF@@everypar
+         \everypar\expandafter{\the\WF at everypar}%
+         \let\parshape\@@parshape 
+         \let\@setpar\@@setpar 
+        }
+ \toks1=\expandafter{\@arrayparboxrestore}%
+ \toks2=\expandafter{\clearpage}%
+ \edef\@tempa{%
+      \def\noexpand\@arrayparboxrestore{\the\toks0 \the\toks1}%
+      \def\noexpand\clearpage
+      {\noexpand\protect\noexpand\WFclear \the\toks2}}%
+ \expandafter
+ \endgroup\@tempa
+
+%    \end{macrocode}
+%
+% Donald Arseneau classifies the following macro as the one
+% that “pampers the RevTeX's stupidity”.
+%    \begin{macrocode}
+\@ifundefined{@capwidth}{\let\@capwidth\hsize}{}% 
+
+%    \end{macrocode}
+%
+% This one, instead, issues a warning if a specific name conflicts
+% with another.
+%    \begin{macrocode}
+\def\WF at conflict{\WF at warning
+  {\WF at wfname used inside a conflicting environment}}%
+
+%    \end{macrocode}
+%
+% While this one issues a warning when a wrapping environment is
+% too close to another one.
+%    \begin{macrocode}
+\def\WF at collision{\WF at warning{Collision between wrapping environments}}%
+
+%    \end{macrocode}
+%
+% And this one is when two wrapping environments are too close to
+% one another so that the second one is forced to float.
+%    \begin{macrocode}
+\def\WF at fltmes{%                                        message for floats
+  \ifWF at float 
+    \WF at info{\WF at wfname floats}%
+ \else 
+   \WF at warning{Stationary \WF at wfname forced to float}%
+ \fi
+}
+
+%    \end{macrocode}
+%
+% These two aliases are just service macros for this package; in
+% particular, the second one is used to insert info of any kind
+% within a source file.
+%    \begin{macrocode}
+\let\WF at warning\@warning
+\let\WF at info\@gobble
+
+%    \end{macrocode}
+%
+% Arseneau says that his \pack{wrapfig} package is already compatible
+% with  package \pack{float.sty}, since, after defining a new float
+% \meta{foo}, it suffices to define the new environment
+% \Env{wrap\meta{foo}}. This fork version of his package should do
+% the same: is suffices to mimic the definitions of environments
+% \Env{wrapfigure} or \Env{wraptable}.
+%
+% Here there is some Arseneau's code that renders his \pack{wrapfig}
+% code compatible with \cs{newfloat} of class \class{memoir}, and
+% with \cs{newfoatlist} of package \pack{ccaption}. We leave his code
+% hereafter; but we did not test it with this package.
+% \begin{macrocode}
+\let\WF at floatstyhook\relax
+%
+\@ifundefined{newfloat}{}{%         \newfloat comes from somewhere besides
+%                                                                float.sty
+  \@ifundefined{restylefloat}{%
+    \@ifclassloaded{memoir}{%
+      \toks@=\expandafter\expandafter\expandafter
+       {\csname\string\newfloat\endcsname [{#1}]{#2}{#3}{#4}%
+       \newenvironment{wrap#2}{\wrapfloat{#2}}{\endwrapfloat}%
+      }%                             Mmmm; this might be wrong. Not tested
+   \edef\@tempa{\def\expandafter\noexpand\csname\string\newfloat\endcsname
+        [##1]##2##3##4{\the\toks@}}%
+      \@tempa
+     }%                                                 end memoir support
+     {}%                                  other origins of \newfloat here?
+  }{%          float.sty handler. Ops: Two versions for different versions
+%             Changing \floatstyle or \restylefloat changes \newfloat too.
+  \@ifundefined{float at restyle}%
+    {%                                                     older float.sty
+      \toks@=\expandafter{\restylefloat{#1}%       env. might be undefined
+      \@namedef{wrap#1}{%
+        \def\@captype{#1}\@nameuse{fst@#1}%
+        \def\WF at floatstyhook{\let\@currbox\WF at box \columnwidth\wd\WF at box 
+          \global\setbox\WF at box\float at makebox}%
+      \@ifnextchar[\WF at wr{\WF at wr[]}}%
+      \expandafter\let\csname endwrap#1\endcsname \endwrapfigure
+      }%
+    \edef\@tempa{\def\noexpand\restylefloat##1{\the\toks@}}%
+  }{%             newer float.sty: uses \float at restyle, and \float at makebox
+%                                                          takes width arg
+      \toks@=\expandafter{\float at restyle{#1}%      env. might be undefined 
+        \@namedef{wrap#1}{\def\@captype{#1}\@nameuse{fst@#1}%
+          \def\WF at floatstyhook{\let\@currbox\WF at box 
+            \global\setbox\WF at box\float at makebox{\wd\WF at box}}%
+        \@ifnextchar[\WF at wr{\WF at wr[]}}%
+        \expandafter\let\csname endwrap#1\endcsname \endwrapfigure
+      }%
+      \edef\@tempa{\def\noexpand\float at restyle##1{\the\toks@}}%
+    }%
+    \@tempa %                                        perform redefinitions
+%
+    }%                                               end float.sty handler
+}%                                          end redefinitions of \newfloat
+
+\ifcsname newfloatlist\endcsname%                     support ccaption.sty 
+  \toks@=\expandafter\expandafter\expandafter
+    {\csname\string\newfloatlist\endcsname [{#1}]{#2}{#3}{#4}{#5}%
+  \@namedef{wrap#2}{\wrapfloat{#2}}%
+  \expandafter\let\csname endwrap#2\endcsname \endwrapfloat
+  }%
+  \edef\@tempa{%
+  \def\expandafter\noexpand\csname\string\newfloatlist\endcsname
+   [##1]##2##3##4##5{\the\toks@}}%
+  \@tempa
+\fi
+
+%    \end{macrocode}
+% We never described the package options; this code was present
+% in Arseneau's code and ve leave it here, with the necessary
+% package name change. We think that this \opz{verbose} option
+% was and remains useless, since the instances of command
+% \cs{WF at info} were mostly commented out in the original code;
+% in any case, input of this code is stopped if the
+% \cs{DeclareOption} command is not defined; this command was
+% defined with \LaTeXe; therefore this is a residual of the old
+% times when \LaTeXccix was still in use, more than 25 years
+% ago\dots
+%    \begin{macrocode}
+\@ifundefined{DeclareOption}{\endinput}{%
+\def\WF at warning{\PackageWarning{wrapfig2}}%
+\DeclareOption{verbose}{\def\WF at info{\PackageInfo{wrapfig2}}}%
+\ProcessOptions
+\AtEndDocument{\WFclear}}%
+
+\endinput
+%    \end{macrocode}
+
+%\iffalse
+%</package>
+%\fi
+% \Finale
+%
+%^^A \endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/source/latex/wrapfig2/wrapfig2.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty	2021-12-27 21:15:01 UTC (rev 61423)
@@ -0,0 +1,480 @@
+%%
+%% This is file `wrapfig2.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% wrapfig2.dtx  (with options: `package')
+%% 
+%% Copyright (C) 1991-2003 by Donald Arseneau  (asnd at triumf.ca)
+%% Copyright (C) 2021 by Claudio Beccari (claudio.beccari at gmail.com)
+%% License information appended
+%% 
+\NeedsTeXFormat{LaTeX2e}[2019/01/01]
+\ProvidesPackage{wrapfig2}%
+        [2021-12-21 v.4.0 Wrapfig extended]
+
+\NeedsTeXFormat{LaTeX2e}[2020-01-01]
+\ProvidesPackage{wrapfig2}%
+ [2021-11-30 v.4.0 Wrap text around figures, tables, framed text blocks]
+\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
+\ifcsdef{c at WF@wrappedlines}{\endinput}{}
+\ifcsdef{fpeval}{}{\RequirePackage{xfp}}
+\RequirePackage{xparse}
+
+\newdimen\wrapoverhang \wrapoverhang\z@
+\newdimen\WF at size
+\newcounter{WF at wrappedlines}
+\newbox\WF at box
+\newbox\NWF at box
+\newtoks\WF at everypar
+\newif\ifWF at float
+\newcount\WF at correctlines@switch
+\newdimen\insertwidth
+\let\@@parshape\parshape
+\let\WF@@everypar\everypar
+
+\NewDocumentEnvironment{wrapfigure}{o m o G{0pt}}%
+  {\wrapfloat{figure}[#1]{#2}[#3]{#4}}%
+  {\endwrapfloat}
+
+\NewDocumentEnvironment{wraptable}{o m o G{0pt}}%
+  {\wrapfloat{table}[#1]{#2}[#3]{#4}}%
+  {\endwrapfloat}
+
+\NewDocumentEnvironment{wraptext}%
+      {O{l}    D||{0.5\columnwidth} D<>{0}   D(){figure}}%
+{%                                                        Open environment
+  \insertwidth=#2\relax
+  \def\textplacement{#1}%
+  \def\textcorrection{#3}%
+  \def\WF at caption@label{#4}%
+  \begin{lrbox}\NWF at box%            This box is to contain the framed text
+    \minipage{\insertwidth}%
+   \tcolorbox
+}{%                                                      Close environment
+  \endtcolorbox\endminipage\end{lrbox}%
+  \edef\NWF at wli%                        \NWF at wli is a macro, not a counter
+    {%
+      \fpeval{%
+        round((\ht\NWF at box+\dp\NWF at box)/\baselineskip,0)+2+\textcorrection
+             }%
+    }%
+  \ifhmode\unskip\else\leavevmode\noindent\fi
+  \bgroup\edef\x{\egroup\noexpand\wrapfloat{\WF at caption@label}[\NWF at wli]%
+      {\textplacement}{\the\insertwidth}}\x
+    \box\NWF at box %                       Output framed box containing text
+  \endwrapfloat
+  \ignorespaces
+}
+
+
+\NewDocumentEnvironment{wrapfloat}{m o m o G{\z@}}%
+  {\def\@captype{#1}\WF at wr[#2]{#3}[#4]{#5}}%
+  {\ifdim\hsize>\z@
+    \par\hrule\@width\hsize\@height\z@ %   force width with invisible rule
+  \else
+    \unskip \egroup \box\z@  %                               or close hbox
+  \fi
+ \egroup %                      close the vtop box; its width now is known
+  \WF at floatstyhook %                                 support for float.sty
+  \def\width{\wd\WF at box}%
+  \setlength\wrapoverhang{\WF at ovh}%
+  \xdef\WF at ovh{\the\wrapoverhang}%                     save until wrapping
+  \ifdim\ht\WF at box>\topskip \ht\WF at box\z@ \fi%          too high, set flag
+  \ifdim\ht\WF at box<.5\p@ %                              too short, move up
+    \global\setbox\WF at box\vtop{\vskip-1.4ex\unvbox\WF at box}%
+  \fi
+   \global\WF at size=%                  compute total box hight with \fpeval
+     \fpeval{\ht\WF at box+\dp\WF at box+1.5\baselineskip+\tw@\intextsep}\p@
+   \aftergroup\WF at startfloating %        use even when not really floating
+  \unless\ifWF at float
+    \ifhmode
+      {\unskip \parfillskip\z at skip \par \vskip-\parskip}%
+      \aftergroup\noindent
+    \fi
+  \fi
+  \global\@ignoretrue
+  }
+
+\NewDocumentCommand\WF at wr{o m o m s}{%
+  \xdef\WF at wfname{wrap\@captype\space}%
+  \unless\ifvoid\WF at box
+    \WFclear \WF at collision
+  \fi
+  \xdef\WF at place{\string`\@car#2r\@nil}%
+  \ifnum\lccode\WF at place=\WF at place
+      \global\WF at floatfalse
+  \else
+      \global\WF at floattrue
+  \fi
+  \ifx\parshape\WF at fudgeparshape
+    \unless\ifWF at float\\WF at collision\fi
+  \else
+    \ifx\par\@@par
+      \ifnum\@@parshape>\z@\WF at conflict\fi
+    \else
+      \WF at conflict
+    \fi
+   \fi
+   \IfValueTF{#1}%                 save optional line number or correction
+     {\gdef\WF at wli{#1}}%
+     {\gdef\WF at wli{0}}%
+  \IfValueTF{#3}%                                   save optional overhang
+      {\gdef\WF at ovh{#3}}%
+      {\gdef\WF at ovh{\z@}}%
+   \global\setbox\WF at box\vtop\bgroup \setlength\hsize{#4}%       set width
+   \ifdim\hsize>\z@
+     \@parboxrestore
+   \else
+     \setbox\z@\hbox\bgroup
+     \let\wf@@caption\caption
+     \let\caption\wf at caption
+     \ignorespaces
+   \fi
+  \IfBooleanTF{#5}%    if the asterisk is present set the numerical switch
+              {\global\WF at correctlines@switch=\@ne}%
+              {\global\WF at correctlines@switch=\z@}%
+  \global\@ignoretrue
+}
+
+\def\wf at caption{\relax%        redefine \wf at caption in case \hsize is zero
+  \ifdim\hsize>\z@
+    \let\caption\wf@@caption
+  \else
+    \unskip \egroup \hsize\wd\z@ \@parboxrestore \box\z@%      empty \box0
+  \fi
+  \caption
+}
+
+\def\WF at startfloating{%
+ \WF at everypar\expandafter{\the\everypar}\let\everypar\WF at everypar
+ \WF@@everypar{\ifvoid\WF at box\else\WF at floathand\fi \the\everypar
+ \WF at wraphand
+}}
+
+\def\WF at floathand{%
+  \ifx\parshape\WF at fudgeparshape
+    \WF at fltmes
+  \else
+    \ifx\par\@@par
+      \ifnum\@@parshape=\z@
+        \ifdim\hangindent=\z@
+          \setbox\z@\lastbox \begingroup
+          \@@par \WF@@everypar{}\WF at putfigmaybe
+          \endgroup %                      after this group start wrapping
+          \unless\ifvoid\z@ %                          replace indentation
+              \box\z@
+          \fi
+        \else
+          \WF at fltmes
+        \fi
+      \else
+        \WF at fltmes
+      \fi
+    \else
+      \WF at fltmes
+    \fi
+  \fi}
+
+\def\WF at putfigmaybe{%
+\ifinner
+  \vskip-\parskip \global\WF at floatfalse
+  \let\pagetotal\maxdimen %              kludge flag for "not top of page"
+\else %                                                         outer page
+  \@tempdima\pagedepth %                                   save page depth
+  {\advance\parskip\@tempdima\vskip-\parskip}%        back up to base line
+  \penalty\interlinepenalty %                       update page parameters
+  \@tempdimb\pagegoal \advance\@tempdimb-\pagetotal %    room left on page
+  \ifdim \@tempdimb<\z@ %                                page already full
+    \global\WF at floatfalse
+    \unless\ifdim-\@tempdimb>\pageshrink
+      \pagebreak
+    \fi
+  \else
+    \ifdim\WF at size>\@tempdimb%     box too high does not fit in \@tempdimb
+      \ifWF at float
+        \dimen at .5\baselineskip
+      \else
+        \dimen@ 2\baselineskip
+      \fi
+      \ifdim\pagestretch>\dimen@ \dimen@\pagestretch \fi
+      \ifdim\pagefilstretch>\z@ \dimen@\@tempdimb \fi
+      \ifdim\pagefillstretch>\z@ \dimen@\@tempdimb \fi
+      \advance\dimen at .5\baselineskip
+      \ifdim\dimen@>\@tempdimb %                     stretch page contents
+        \global\WF at floatfalse \pagebreak
+      \fi
+    \else %                                         box fits in \@tempdimb
+      \global\WF at floatfalse
+    \fi
+  \fi
+  \vskip\@tempdima\relax %                        return erased page depth
+\fi
+\noindent
+\ifWF at float
+  \WF at fltmes
+\else %                                               place insertion here
+  \WF at info{Put \WF at wfname here:}%
+  {\ifodd
+     \if at twoside\c at page\else\@ne\fi %          assign l/r to i/o placement
+     \lccode`i`l\lccode`o`r\else \lccode`i`r\lccode`o`l%
+   \fi
+   \xdef\WF at place{\the\lccode\lccode\WF at place}%
+                 }%                               twice to get only l or r
+  \hbox to\z@{%       llap o rlap depending on lor r; calc effective width
+    \@tempdima\wd\WF at box \@tempdimb\WF at ovh
+    \advance\@tempdima-\@tempdimb \advance\@tempdima\columnsep
+    \@tempdimb\hsize \advance\@tempdimb-\@tempdima
+    \xdef\WF at adjlw{\the\@tempdima}%
+    \ifnum `l=\WF at place %                                   object on left
+      \hss
+      \def\@tempa{\kern\columnsep}%             take right gap into action
+    \else %                                                insert on light
+      \@tempdima\z@ %                                  no left indentation
+      \kern\@tempdimb \kern\columnsep
+      \def\@tempa{\hss}%                object overlaps space to the right
+    \fi
+    \ifdim\@tempdimb<\hsize
+      \xdef\WF at wrapil{\the\@tempdima \the\@tempdimb}%  indent.n and length
+      \xdef\WF at adjtlm{\the\@tempdima}%
+    \else
+      \xdef\WF at wrapil{\z@ \the\hsize}%
+      \xdef\WF at adjlw{\z@}\xdef\WF at adjtlm{\z@}%
+    \fi
+    \ifdim\pagetotal=\z@ %              put object at top of page \thepage
+      \global\advance\WF at size-\intextsep
+    \else %                               put object in middle of the page
+      \setbox\WF at box\hbox{\lower\intextsep\box\WF at box}%
+    \fi
+    \dp\WF at box\z@
+    \box\WF at box
+    \@tempa
+  }%                                                      end \hbox to 0pt
+  \aftergroup\WF at startwrapping
+\fi
+}
+
+\def\WF at startwrapping{%
+  \ifnum\WF at wli=\z@ %                              no number was specified
+    \setcounter{WF at wrappedlines}%
+      {\fpeval{round(\WF at size/\baselineskip,0)}}%
+    \xdef\WF at wli{\value{WF at wrappedlines}}%
+  \else
+    \ifnum\WF at correctlines@switch>\z@ %             line number correction
+      \setcounter{WF at wrappedlines}
+        {\fpeval{round((\WF at size)/\baselineskip,0)+\WF at wli}}%
+      \xdef\WF at wli{\value{WF at wrappedlines}}%
+    \else
+      \setcounter{WF at wrappedlines}{\WF at wli}%      absolute number of lines
+      \global\advance\c at WF@wrappedlines\@ne
+    \fi
+  \fi
+  \ifnum\c at WF@wrappedlines>\@ne %                              fine tuning
+    \let\parshape\WF at fudgeparshape \let\WF at pspars\@empty \let\WF@@par\par
+    \def\@setpar##1{\def\WF@@par{##1}}\def\par{\@par}\let\@par\WF at mypar
+    \xdef\WF at restoretol{\tolerance\the\tolerance}\tolerance9999
+    \advance\linewidth-\WF at adjlw \advance\@totalleftmargin\WF at adjtlm
+ \fi}
+
+\def\WF at wraphand{%                    for indenting one or more paragraphs
+  \ifnum\c at WF@wrappedlines<\tw@
+    \WF at finale
+  \else \begingroup %                            create a parshape command
+    \@tempcnta\@ne \let\WF at wrapil\relax \gdef\WF at ps{}%
+    \@whilenum
+      \@tempcnta<\c at WF@wrappedlines\do{%              repeated indentation
+      \xdef\WF at ps{\WF at ps\WF at wrapil}\advance\@tempcnta\@ne
+      }%
+    \endgroup
+    \ifx\WF at pspars\@empty
+      \@@parshape\c at WF@wrappedlines \WF at ps \WF at noil
+    \else %           use external `parshape' values to modify my parshape
+      \WF at modps
+    \fi
+  \fi
+}
+
+\def\WF at mypar{\relax
+  \WF@@par
+  \ifnum\@@parshape=\z@
+    \let\WF at pspars\@empty %                                 reset parshape
+  \fi
+  \global\advance\c at WF@wrappedlines-\prevgraf \prevgraf\z@
+  \ifnum\c at WF@wrappedlines<\tw@
+    \WF at finale
+  \fi
+}
+
+\def\WF at modps{\begingroup
+  \afterassignment\@tempdimb \@tempdima\WF at pspars % a=indent.num, b= width
+  \advance\@tempdima-\WF at adjtlm \advance\@tempdimb\WF at adjlw
+  \let\WF at wrapil\WF at pspars
+  \edef\@tempb{\@@parshape\c at WF@wrappedlines
+                \WF at ps \the\@tempdima \the\@tempdimb}%
+  \expandafter\endgroup\@tempb
+}
+
+\let\@@setpar\@setpar
+\def\WF at noil{\z@ \hsize}
+\let\WF at pspars\@empty
+
+\def\WF at fudgeparshape{\relax
+  \ifnum\c at WF@wrappedlines<\tw@
+    \WF at finale
+  \else
+    \afterassignment\WF at fudgeparshapee \fam
+  \fi
+}
+
+\def\WF at fudgeparshapee{%
+  \ifnum\fam=\@ne \expandafter
+    \WF at parshapeee
+  \else
+    \WF at conflict \@@parshape\fam
+  \fi
+}
+
+\def\WF at parshapeee#1#2{%
+  \begingroup\delimitershortfall#1%
+  \nulldelimiterspace#2%         \advance \nulldelimiterspace by \WF at adjlw
+  \edef\@tempa{\def\noexpand\WF at pspars{%
+      \the\delimitershortfall \the\nulldelimiterspace}}%
+  \expandafter\endgroup\@tempa \WF at wraphand
+}
+
+\def\WF at finale{%
+  \ifx\parshape\WF at fudgeparshape
+    \WF at restoretol \let\@setpar\@@setpar \let\par\WF@@par
+    \advance\linewidth\WF at adjlw \advance\@totalleftmargin-\WF at adjtlm
+    \WF at info{Finish wrapping text}%
+    \ifx\par\@@par
+      \def\@par{\let\par\@@par\par}%
+    \else
+      \let\@par\WF@@par
+    \fi
+    \let\parshape\@@parshape
+    \parshape=\ifx\WF at pspars\@empty
+                \z@
+              \else
+                \@ne \WF at pspars
+              \fi
+  \fi
+  \ifvoid\WF at box
+    \ifx\everypar\WF at everypar
+      \let\everypar\WF@@everypar \everypar\expandafter{\the\WF at everypar}%
+    \fi
+  \fi
+}
+
+\newcommand{\WFclear}{\par
+  \unless\ifvoid\WF at box
+    \vskip\bigskipamount \box\WF at box
+    \let\everypar\WF@@everypar \everypar\expandafter{\the\WF at everypar}%
+  \fi
+  \global\c at WF@wrappedlines\z@ \WF at finale
+  \global\WF at correctlines@switch\z@
+}
+
+\begingroup
+ \toks0={\let\everypar\WF@@everypar
+         \everypar\expandafter{\the\WF at everypar}%
+         \let\parshape\@@parshape
+         \let\@setpar\@@setpar
+        }
+ \toks1=\expandafter{\@arrayparboxrestore}%
+ \toks2=\expandafter{\clearpage}%
+ \edef\@tempa{%
+      \def\noexpand\@arrayparboxrestore{\the\toks0 \the\toks1}%
+      \def\noexpand\clearpage
+      {\noexpand\protect\noexpand\WFclear \the\toks2}}%
+ \expandafter
+ \endgroup\@tempa
+
+\@ifundefined{@capwidth}{\let\@capwidth\hsize}{}%
+
+\def\WF at conflict{\WF at warning
+  {\WF at wfname used inside a conflicting environment}}%
+
+\def\WF at collision{\WF at warning{Collision between wrapping environments}}%
+
+\def\WF at fltmes{%                                        message for floats
+  \ifWF at float
+    \WF at info{\WF at wfname floats}%
+ \else
+   \WF at warning{Stationary \WF at wfname forced to float}%
+ \fi
+}
+
+\let\WF at warning\@warning
+\let\WF at info\@gobble
+
+\let\WF at floatstyhook\relax
+\@ifundefined{newfloat}{}{%         \newfloat comes from somewhere besides
+  \@ifundefined{restylefloat}{%
+    \@ifclassloaded{memoir}{%
+      \toks@=\expandafter\expandafter\expandafter
+       {\csname\string\newfloat\endcsname [{#1}]{#2}{#3}{#4}%
+       \newenvironment{wrap#2}{\wrapfloat{#2}}{\endwrapfloat}%
+      }%                             Mmmm; this might be wrong. Not tested
+   \edef\@tempa{\def\expandafter\noexpand\csname\string\newfloat\endcsname
+        [##1]##2##3##4{\the\toks@}}%
+      \@tempa
+     }%                                                 end memoir support
+     {}%                                  other origins of \newfloat here?
+  }{%          float.sty handler. Ops: Two versions for different versions
+  \@ifundefined{float at restyle}%
+    {%                                                     older float.sty
+      \toks@=\expandafter{\restylefloat{#1}%       env. might be undefined
+      \@namedef{wrap#1}{%
+        \def\@captype{#1}\@nameuse{fst@#1}%
+        \def\WF at floatstyhook{\let\@currbox\WF at box \columnwidth\wd\WF at box
+          \global\setbox\WF at box\float at makebox}%
+      \@ifnextchar[\WF at wr{\WF at wr[]}}%
+      \expandafter\let\csname endwrap#1\endcsname \endwrapfigure
+      }%
+    \edef\@tempa{\def\noexpand\restylefloat##1{\the\toks@}}%
+  }{%             newer float.sty: uses \float at restyle, and \float at makebox
+      \toks@=\expandafter{\float at restyle{#1}%      env. might be undefined
+        \@namedef{wrap#1}{\def\@captype{#1}\@nameuse{fst@#1}%
+          \def\WF at floatstyhook{\let\@currbox\WF at box
+            \global\setbox\WF at box\float at makebox{\wd\WF at box}}%
+        \@ifnextchar[\WF at wr{\WF at wr[]}}%
+        \expandafter\let\csname endwrap#1\endcsname \endwrapfigure
+      }%
+      \edef\@tempa{\def\noexpand\float at restyle##1{\the\toks@}}%
+    }%
+    \@tempa %                                        perform redefinitions
+    }%                                               end float.sty handler
+}%                                          end redefinitions of \newfloat
+
+\ifcsname newfloatlist\endcsname%                     support ccaption.sty
+  \toks@=\expandafter\expandafter\expandafter
+    {\csname\string\newfloatlist\endcsname [{#1}]{#2}{#3}{#4}{#5}%
+  \@namedef{wrap#2}{\wrapfloat{#2}}%
+  \expandafter\let\csname endwrap#2\endcsname \endwrapfloat
+  }%
+  \edef\@tempa{%
+  \def\expandafter\noexpand\csname\string\newfloatlist\endcsname
+   [##1]##2##3##4##5{\the\toks@}}%
+  \@tempa
+\fi
+
+\@ifundefined{DeclareOption}{\endinput}{%
+\def\WF at warning{\PackageWarning{wrapfig2}}%
+\DeclareOption{verbose}{\def\WF at info{\PackageInfo{wrapfig2}}}%
+\ProcessOptions
+\AtEndDocument{\WFclear}}%
+
+%% 
+%% Distributable under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%% 
+%% This work is "maintained"
+%% 
+%% This work  consists of file  wrapfig2.dtx, and the derived  files
+%% wrapfig2.sty and wrapfig2.pdf, plus the auxiliary file README.txt.
+%% 
+%%
+%% End of file `wrapfig2.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2021-12-27 21:14:20 UTC (rev 61422)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2021-12-27 21:15:01 UTC (rev 61423)
@@ -851,7 +851,7 @@
     widetable widows-and-orphans williams willowtreebook
     windycity withargs witharrows
     wnri wnri-latex wordcount wordlike worldflags worksheet
-    wrapfig wsemclassic wsuipa wtref
+    wrapfig wrapfig2 wsemclassic wsuipa wtref
   xargs xassoccnt xbmks xcharter xcite xcjk2uni xcntperchap
     xcolor xcolor-material xcolor-solarized
     xcomment xcookybooky xcpdftips xdoc xduthesis

Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2021-12-27 21:14:20 UTC (rev 61422)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2021-12-27 21:15:01 UTC (rev 61423)
@@ -1369,6 +1369,7 @@
 depend wordlike
 depend worksheet
 depend wrapfig
+depend wrapfig2
 depend wtref
 depend xargs
 depend xassoccnt

Added: trunk/Master/tlpkg/tlpsrc/wrapfig2.tlpsrc
===================================================================


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