From b2fc73208c72c65ca8f9ce068898291b69322d32 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 21 Jan 2024 03:01:05 +0000 Subject: CTAN sync 202401210301 --- macros/latex/contrib/wrapfig2/LAPDFcolori.pdf | Bin 0 -> 54947 bytes macros/latex/contrib/wrapfig2/README.txt | 28 +- macros/latex/contrib/wrapfig2/wrapfig2.dtx | 2121 ++++++++++++++----------- macros/latex/contrib/wrapfig2/wrapfig2.pdf | Bin 706124 -> 838594 bytes 4 files changed, 1199 insertions(+), 950 deletions(-) create mode 100644 macros/latex/contrib/wrapfig2/LAPDFcolori.pdf (limited to 'macros/latex/contrib/wrapfig2') diff --git a/macros/latex/contrib/wrapfig2/LAPDFcolori.pdf b/macros/latex/contrib/wrapfig2/LAPDFcolori.pdf new file mode 100644 index 0000000000..29dbd1faae Binary files /dev/null and b/macros/latex/contrib/wrapfig2/LAPDFcolori.pdf differ diff --git a/macros/latex/contrib/wrapfig2/README.txt b/macros/latex/contrib/wrapfig2/README.txt index 53aa5aa402..2649f93497 100644 --- a/macros/latex/contrib/wrapfig2/README.txt +++ b/macros/latex/contrib/wrapfig2/README.txt @@ -1,5 +1,5 @@ %%%% README.txt file -This README.txt is for package wrapfig2[2023-09-03 v.6.2.1] +This README.txt for package wrapfig2 [2024-01-18 v.7.0.0] This work is author maintained @@ -7,7 +7,7 @@ This work consists of wrapfig2.dtx, the main file, this README.txt and the derived files wrapfig2.pdf and wrapfig2.sty. -The package besides the source documented source +The package besides the source documented source file contains the image file stele-todi-small.jpg, a slightly cropped image downloaded from the internet site of the Gregorian Etruscan Museum in @@ -31,18 +31,26 @@ not work with LaTeX2e kernels older than about 2018, although a warning is issued if the LaTeX format file is older than 1st January 2019. In any case this package loading is aborted in -order to avoid conflicts, and in some other -circumstances; the error messages describe why the -process was aborted. - -Version 6 of this package accepts options in the -form key = value. Options are available to fall -back to version 5 and version 4. +order to avoid conflicts; it is aborted also +in some other circumstances; the error messages +describe why the process was aborted. IMPORTANT NOTICE: An incompatibility with the amstext package (loaded by amsmath, siunitx, and other packages) was discovered, but with version -6.2.1 this incompatibility was corrected. +6.2.2 this incompatibility was corrected. + +For the user version 7 does not appear different +from version 6; the inner workings are different +because the wraptext environment does not use +anymore the functionalities of package curve2e, +but uses directly those of package pict2e, +therefore avoiding some conflicts that have been +reported the the maintainer. + +Version 7 of this package accepts options in the +form key = value. Options are also available to +fall back to version 5 and version 4. Claudio Beccari diff --git a/macros/latex/contrib/wrapfig2/wrapfig2.dtx b/macros/latex/contrib/wrapfig2/wrapfig2.dtx index 32cb07b20c..4bd918a5ff 100644 --- a/macros/latex/contrib/wrapfig2/wrapfig2.dtx +++ b/macros/latex/contrib/wrapfig2/wrapfig2.dtx @@ -7,8 +7,8 @@ \keepsilent \preamble -Copyright (C) 1991-2003 by Donald Arseneau (asnd@triumf.ca) -Copyright (C) 2021-2023 by Claudio Beccari (claudio.beccari@gmail.com) +Copyright (C) 1991-2004 by Donald Arseneau (asnd@triumf.ca) +Copyright (C) 2021-2024 by Claudio Beccari (claudio.beccari@gmail.com) License information appended \endpreamble @@ -21,8 +21,8 @@ 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 this file README.txt. +This work consists of file wrapfig2.dtx, and the derived +files wrapfig2.sty and wrapfig2.pdf, plus this file README.txt. \endpostamble \askforoverwritefalse @@ -45,7 +45,7 @@ wrapfig2.sty and wrapfig2.pdf, plus this file README.txt. %<+package>\ProvidesPackage{wrapfig2}% %^^A<+readme>File README.txt for package wrapfig2 %<*package|readme> - [2023-09-03 v.6.2.1 Wrap text around figures, tables, framed text blocks] + [2024-01-18 v.7.0.0 Wrap text around figures, tables, framed text blocks] % %<*driver> % @@ -56,12 +56,12 @@ wrapfig2.sty and wrapfig2.pdf, plus this file README.txt. \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{mflogo} -\usepackage{multicol,fancyvrb,verbatim,microtype} -\usepackage{wrapfig2,amsmath,kantlipsum,xspace} +\usepackage{multicol,fancyvrb,verbatim,microtype,graphicx} +\usepackage{amsmath,kantlipsum,wrapfig2,xspace} % \GetFileInfo{wrapfig2.dtx} \title{The \textsf{wrapfig2} package} -\author{Claudio Beccari\thanks{E-mail: \texttt{claudio dot beccari at gmail dot com}}} +\author{Claudio Beccari\qquad E-mail: \texttt{claudio.beccari at gmail.com}} \date{Version \fileversion~--~Last revised \filedate.} % \providecommand*\diff{\mathop{}\!\mathrm{d}} @@ -156,33 +156,40 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % \fi % % \begin{abstract} -% This new package \pack{wrapfig2} is a fork that extends Donald +% This package \pack{wrapfig2} is a fork that extends Donald % Arseneau's package \pack{wrapfig} (version 3.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. +% 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 original \Env{wrapfigure} -% and \Env{wraptable}, namely \Env{wraptext}; it may be used -% to wrap a small framed text block on a coloured background; the -% philosophy of this new environment is similar to that of the -% other two environments, but the syntax was different with -% version~4 of this package, and is very similar with -% version 5.0; a further important enhancement is implemented -% in version~6. Fall back options are available for backwards -% compatibility. +% and \Env{wraptable}, namely \Env{wraptext}; it may be used to +% wrap a small framed text block on a possibly coloured +% background; the philosophy of this new environment is +% similar to that of the other two environments, but the syntax +% was different with version~4 of this package, and is very +% similar with version 5.0; a further important enhancement is +% implemented in versions~6 and~7. Fall back options are +% available for backwards compatibility. +% +% This version 7 is a new implementation of the \Env{wraptext} +% environment, in the sense that it does not make use of the +% \pack{curve2e} package so as to avoid some interferences with +% other user selected packages. % \end{abstract} % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% {\color{red}\paragraph{Caution} This package requires a fairly recent -% \LaTeX kernel, otherwise it won't work; any \LaTeX kernel dated -% at least 2020 is~OK. +% {\color{red}\paragraph{Caution} This package requires a fairly +% recent \LaTeX kernel, otherwise it won't work; any \LaTeX +% kernel dated at least 2019 is~OK. % -% Read carefully this document, because the are several pieces of -% information concerning other packages that may be incompatible -% with this \pack{wrapfig2} version. Special warnings are typeset -% in red as this one.} +% Read carefully this document, because the are several pieces +% of information concerning other packages that may be +% incompatible with this \pack{wrapfig2} version. Special +% warnings are typeset in red as this one.} % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -192,107 +199,123 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % % The purpose of this package is manyfold. On one side it tries % to upgrade the original software by Donald Arseneau by -% using some parts of the \LaTeXiii modern language. On another 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 wrapped text by framing them while -% typesetting the text on a coloured background. +% using some parts of the \LaTeXiii modern language. On another +% it creates a new environment, with the same philosophy +% of the original Arseneau's ones, such that users +% can emphasise short blocks of wrapped text by framing them +% while typesetting the text on a coloured background. % % The original software had some idiosyncrasies; Donald Arseneau -% described them in the documentation of his package; we are sorry -% to admit that such idiosyncrasies might have been slightly reduced; -% but in any case in order to avoid such peculiar anomalies, it is -% sufficient to wrap the inserted object with a reasonable -% number of lines, i.e. by reasonably long paragraphs. -% -% The above implies that no wrapped object code should be specified -% in the source file close the end of a paragraph, unless it is -% followed by other paragraphs; again no object code should be inserted -% within any list; not even close to the end or to the beginning of a -% 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 object has a numbered -% caption, the number might not result in the correct sequence with -% the normal corresponding floating objects. -% -% Therefore the usefulness of the wrapping procedure depends very -% much on the document authors' ability to move around their code +% described them in the documentation of his package; we must +% admit that such idiosyncrasies might have been just slightly +% reduced; but in any case, in order to avoid such peculiar +% anomalies, it is sufficient to wrap the inserted object with a +% reasonable number of lines, i.e. with reasonably long +% paragraphs. +% +% The above implies that no wrapped object code should be +% specified in the source file close the end of a paragraph, +% unless it is followed by other paragraphs; again, no object +% code should be inserted within any list; nor even close to the +% end or to the beginning of a 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 object has a numbered caption, the +% number might not result in the correct sequence with the +% normal corresponding floating objects. +% +% Therefore the usefulness of the wrapping procedure depends +% very much on the users' ability to move around their code % until a suitable position is found. Certainly a good place is % within a longish paragraph especially at the beginning of a -% section; or at the beginning of a chapter that starts with plain -% text, in particular just at the beginning of the first paragraph. -% -% The code of this package does very little, if anything, to correct -% such idiosyncrasies. They are caused by the limitations of the -% \cs{ShipOut} \LaTeXe kernel macro, and very little we were able -% to do in addition to what Arseneau already did. -% -% Another purpose of this package is to add another optional argument -% 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 -% the value computed by the default mechanism devised by Arseneau. -% -% We assume that most users first use the software to insert an object -% to be wrapped by the surrounding text without specifying any value -% with the specific optional argument; then they evaluate the result, -% and if the space below the wrapped object is too large, or if such -% space is too small they count the necessary number of lines and -% specify 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 computed value. -% -% A further purpose of this package is to define a new environment, -% \Env{wraptext}, to wrap a framed text block typeset on a coloured -% background. On \texttt{texstackexchange} a solution was suggested +% section; or at the beginning of a chapter that starts with +% plain text, in particular just at the beginning of the chapter +% first paragraph. +% +% The code of this package does very little, if anything, to +% correct such idiosyncrasies. They are caused by the +% limitations of the \cs{ShipOut} \LaTeXe kernel macro, and very +% little we were able to do in addition to what Arseneau already +% did. +% +% Another purpose of this package is to add another optional +% argument 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 the value computed by the default +% algorythm devised by Arseneau. +% +% We assume that most users first use the software to insert an +% object to be wrapped by the surrounding text without +% specifying any value with the specific optional argument; then +% they evaluate the result, and if the space below the wrapped +% object is too large, or if such space is too small they count +% the necessary number of lines and specify 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 computed +% value. +% +% A further purpose of this package is to define a new +% environment, \Env{wraptext}, to wrap a framed text block +% typeset on a possibly coloured background. +% On \texttt{tex.stackexchange} 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 and -% used the \Env{tcolorbox} 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 it -% should not be too different from a half of the wrapping text measure. -% In facts, 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 would have similar problems. -% -% Notice that the first implementation of this package, version~4, -% achieved the desired result but there were two drawbacks: $(a)$ -% the syntax was rather different from that of the other environments, -% and $(b)$ any possible caption was typeset within the same -% framing environment. In version~5 both drawbacks were -% eliminated, but since the environment syntax is different, -% in oder to assure backwards compatibility a package option -% was defined in order to fall back to the previous version~4 -% behaviour. In version 6.0 the \Env{wraptext} environment was -% further enhanced so as to accept several \texttt{key=value} settings -% concerned wit the text appearance, the colours, and other details -% relative to the wrapping process. Again another fall back option -% was defined in order to use the same functionalities of version~5. +% resorted to a specific use of the \Env{wrapfigure} environment +% and used the \Env{tcolorbox} 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 it should not be too different from a +% half of the wrapping text measure. In facts, with a value too +% different from \texttt{0.5\cs{linewidth}} either the wrapped +% text has problems with inter word spacing and hyphenation +% because of the small measure, or, on the opposite, the +% indented lines of the wrapping text would have similar +% problems. +% +% Notice that the first implementation of this package, +% version~4, achieved the desired result but there were two +% drawbacks: $(a)$ the syntax was rather different from that of +% the other environments, and $(b)$ any possible caption was +% typeset within the same framing environment. In version~5 both +% drawbacks were eliminated, but since the environment syntax is +% different, in oder to assure backwards compatibility a package +% option was defined in order to fall back to the previous +% version~4 behaviour; nevertheless we discourage this solution, +% and invite uers to use the most recent version. In version 6 +% the \Env{wraptext} environment was further enhanced so as to +% accept several \texttt{key=value} settings concerning the text +% appearance, the colours, and other details relative to the +% wrapping process. Again another fall back option was defined +% in order to use the same functionalities of version~5; again +% we discourage using any fall back solution. This version~7 +% does not use anymore the \pack{curve2e} functionalities, but +% resorts to package \pack{pict2e}; the code is simpler and +% several dozen lines shorter. % %^^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. +% 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. % -% 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 to be -% maintained identical. When the optional star is specified, the -% \meta{indented lines number} is interpreted as the correction to the -% computed value. +% 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 to be maintained identical. When the +% optional star is specified, the \meta{indented lines number} +% is interpreted as the correction to the computed value. % -% Notice the different syntax in versions~4, 5, and~6 of the +% Notice the different syntax in versions~4, 5, 6 and~7 of the % \Env{wraptext} syntax. % % \begin{ttsintassi}\setfontsize{8.00} @@ -317,59 +340,66 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %\qquad\cs{includeframedtext}\oarg{insertion measure}\marg{text to frame}\oarg{\meta{frame thickness},\meta{frame separation}}\oarg{radius} %\Eambiente{wraptext} %~ -%\textnormal{\color{red} No package option required for version~6.*}. +%\textnormal{\color{red} No package option required for versions~6.* and~7.*}. %~ %\Bambiente{wraptext}\oarg{indented lines number correction}\marg{location}\oarg{overhang}\marg{width} -%\qquad \meta{optional style settings} -%\qquad\cs{includeframedtext}\oarg{insertion measure}\marg{text to frame}\oarg{settings}\oarg{radius} +%\cs{includeframedtext}\oarg{insertion measure}\marg{text to frame}\oarg{key=value settings}\oarg{radius} %\Eambiente{wraptext} % \end{ttsintassi} % % \noindent -%\textcolor{red}{Please notice that the\Env{wraptext} environment -% does not require any optional star, because the specified indented -% lines number is always interpreted as its \emph{correction, not -% its absolute value}; this difference is clearly marked in the above -% syntax medallion. If users specified the star in similitude with -% the other two environments, with versions~5.* and~6.* the unnecessary -% star produces a strongly emphasised warning message visible in the -% editor console and in the \texttt{.log} file. With the old version~4.* -% the unnecessary star is printed as part of the text to be framed. +%\textcolor{red}{Please notice that the \Env{wraptext} +% environment does not require any optional star, because the +% specified indented lines number is always interpreted as its +% \emph{correction, not its absolute value}; this difference is +% clearly marked in the above syntax medallion. If users +% specified the star in similitude with the other two +% environments, with versions~5.* to~7.* the unnecessary +% star produces a strongly emphasised warning message visible in +% the editor console and in the \texttt{.log} file. With the old +% version~4.* the unnecessary star is printed as part of the +% text to be framed. %\newline -% Please notice also that all three \Env{wraptext} syntaxes, thanks to -% differently delimited optional arguments with peculiar default values, -% become very similar when such optional arguments are reduced -% to a minimum; only the \meta{location} argument is delimited -% by brackets with the old version and with braces with the newer -% ones.} +% Please notice also that all three \Env{wraptext} syntaxes, +% thanks to differently delimited optional arguments with +% peculiar default values, become very similar when such +% optional arguments are reduced to a minimum; only the +% \meta{location} argument is delimited by brackets with the old +% version and with braces with the newer ones.} % % It may be useful to compare the \cs{includeframedtext} macro, -% used to insert a framed test into a \Env{wraptext} environment, -% with \cs{includegraphics}, used to insert an external image into -% a \Env{figure} environment. Their functions are similar even if -% they refer to different objects to include. Their codes are -% obviously very different and the latter is much more complex -% than the former. The solution for a framed text used by -% version~4 was inspired by the information found on -% \texttt{texstackexchange} that used the very elaborate \Env{tcolorbox} -% environment; version~5 uses instead a much simpler command -% \cs{framedbox} based on the \pack{curve2e} package macro -% \cs{Curve}. Version 6.0 admits many settings, not just the -% \meta{frame thickness} and the space around the framed text, but -% several others ones collectively indicated with \meta{settings}; -% such settings refer to colours, dimensions, styles, and so on, -% relative to the text and to the frame; moreover they are set by -% means of the \texttt{key=value} syntax. As it can be seen, the -% logic, not the code, behind these different macros are very similar. +% used to insert a framed test into a \Env{wraptext} +% environment, with \cs{includegraphics}, used to insert an +% external image into a \Env{figure} environment. Their +% functions are similar even if they refer to different objects +% to include. Their codes are obviously very different and the +% latter is much more complex than the former. The solution for +% a framed text used by version~4 was inspired by the +% information found on \texttt{tex.stackexchange} that used the +% very elaborate \Env{tcolorbox} environment; version~5 used +% instead a much simpler command \cs{framedbox} based on the +% \pack{curve2e} package macro \cs{Curve}. Version 6.* admits +% many settings, not just the \meta{frame thickness} and the +% space around the framed text, but several others ones +% collectively indicated with \meta{settings}; such settings +% refer to colours, dimensions, styles, and so on, relative to +% the text and to the frame; moreover they are set by +% means of the \texttt{key=value} syntax. Version~7.* does not +% use any more the \pack{curve2e} macro \cs{Curve}, +% but it uses the simpler low level macros defined in package +% \pack{pict2e}. The syntax is the same as with version~6.* but +% the inner workings are much different and faster to execute. +% As it can be seen, the logic, not the code, behind these +% different macros are very similar. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\section{Examples} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % We display some examples by using fake objects and suitably % long paragraphs; some fake-language long-paragraphs are -% obtained by means of the \pack{kantlipsum} package functionalities; -% they are typeset with an italic font in order to distinguish their -% text from the normal one. +% obtained by means of the \pack{kantlipsum} package +% functionalities; they are typeset with an italic font in order +% to distinguish their text from the normal one. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \subsection{A wrapped figure} @@ -379,8 +409,8 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %\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) +%\polyline(0,0)(0,30)(40,0)(0,0)(40,30)(0,30) +%\Line(40,0)(40,30) %\end{picture} %\caption{A rectangle with its diagonals}\label{fig:figure} %\end{wrapfigure} @@ -391,16 +421,16 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %\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)} +%\cs{polyline}\texttt{(0,0)(0,30)(40,0)(0,0)(40,30)(0,30)} +%\cs{Line}\texttt{(40,0)(40,30)} %\Eambiente{picture} %\cs{caption}\Marg{A rectangle with its diagonals}\cs{label}\Marg{fig:figure} %\Eambiente{wrapfigure} %\Marg{\cs{itshape} \cs{kant}\Oarg{1}} %\end{flushleft} % -% No asterisk was used because the package succeeded to correctly -% compute the necessary number of indented lines. +% No asterisk was used because the package succeeded to +% correctly compute the necessary number of indented lines. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \subsection{A wrapped table} @@ -438,24 +468,27 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % useful in many instances, although a smart use of this width % parameter might yield better looking results. % -% Wrapping a small table is a little more difficult than wrapping -% a figure, because the width of the inserted object is not exactly -% known in advance, and it is difficult to estimate; therefore -% it might be necessary to execute several trial compilations. 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 \meta{width} parameter is completely omitted together -% with its braces; 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 such feature. +% Wrapping a small table is a little more difficult than +% wrapping a figure, because the width of the inserted object is +% not exactly known in advance, and it is difficult to estimate; +% therefore it might be necessary to execute several trial +% compilations. 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 \meta{width} parameter is +% completely omitted together with its braces; 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 such feature. % % 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 is -% shown in table~\ref{tab:wrong-wrapped-table}, but it is a very -% poor one, with the last caption line overlapping the wrapping text. +% first (optional) argument to the environment, and no asterisk +% is specified, the result is shown in +% table~\ref{tab:wrong-wrapped-table}, but it is a very +% poor one, with the last caption line overlapping the wrapping +% text. % %\begin{wraptable}[5]{l} %\centering @@ -486,18 +519,19 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % \Marg{\cs{itshape} \cs{kant}[3]} %\end{flushleft} % -% The result is the same as that obtainable with version~4 of this -% package, but the \meta{location} argument specification is braced -% instead of bracketed. +% The result is the same as that obtainable with version~4 of +% this package, but the \meta{location} argument specification +% is braced instead of bracketed. % % Remember, though, what was previously remarked about using an % unnecessary optional star with the \Env{wraptext} environment; -% with this package versions~5 and~6 the unnecessary star produces -% a warning message, while with version~4 it prints the star as if -% it was part of the text to be wrapped. +% with this package versions~5 to~7 the unnecessary star +% produces a warning message, while with version~4 it prints the +% star as if it was part of the text to be wrapped. % % If a caption is specified, version~4 would print it within the -% framed box, while versions~5 and~6 print it outside the framed box. +% framed box, while versions~5,~6, and~7 print a visible warning +% message and in the \texttt{.log} file. % % \begin{wraptext}{r} % \includeframedtext{Text, text, text, text, text, text, text, text, text, text, text.} @@ -505,39 +539,43 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % \end{wraptext} % {\itshape \kant[3]} % -% With version~5 users have the possibility of choosing the colours for -% all three elements of the framed text; if within the environment -% \Env{wraptext} and before using \cs{includeframedtext} the colours -% may be set different from the default light grey for -% the background, black for the text, and almost black for the frame: +% With version~5 users have the possibility of choosing the +% colours for all three elements of the framed text; if within +% the \Env{wraptext} environment and before using +% \cs{includeframedtext} the colours are set different from the +% default light grey for the background, black for the text, +% and almost black for the frame: % \begin{ttsintassi} %\cs{SetWFfrm}\marg{frame colour} %\cs{SetWFbgd}\marg{background colour} %\cs{SetWFtxt}\marg{text colour} % \end{ttsintassi} -% Such commands, in version~6, are already taken care by the relevant -% \texttt{key=value} options, while with version~5 these are user -% commands. See figure~\ref{fig:framed text} typeset with various -% version~6 options. +% Such commands, in versions~6 and~7, are already taken care by +% the relevant \texttt{key=value} options, while with version~5 +% these are user commands. See figure~\ref{fig:framed text} +% typeset with various version~7 options. % %\begin{figure} %\makebox[\textwidth]{\includeframedtext{Text}[insertionwidth=0.45\linewidth] %\hfill -%\includeframedtext{Text}[insertionwidth=0.45\linewidth,fboxrule=3pt]}\\[2ex] +%\includeframedtext{Text}[insertionwidth=0.45\linewidth,fboxrule=1mm]}\\[2ex] +%^^A %\makebox[\textwidth]{\includeframedtext{Text}[insertionwidth=0.45\linewidth,textcolor=red,fboxrule=2pt] %\hfill %\includeframedtext{Text}[insertionwidth=0.45\linewidth,fontstyle=\Large]}\\[2ex] +%^^A %\makebox[\textwidth]{\includeframedtext{Text}[insertionwidth=0.45\linewidth,backgroundcolor=yellow] %\hfill -%\includeframedtext{Text}[insertionwidth=0.45\linewidth,framecolor=blue,backgroundcolor=yellow,fboxrule=1mm]}\\[2ex] +%\includeframedtext{Text}[insertionwidth=0.45\linewidth, framecolor=blue, backgroundcolor=yellow, fboxrule=1mm]}\\[2ex] +%^^A % \makebox[\textwidth]{\includeframedtext{Text}[insertionwidth=0.5\linewidth, fboxrule=0pt, backgroundcolor=cyan, textcolor=white, fontstyle=\Huge\bfseries]} -%\caption{Some framed text boxes with different dimension parameters, -% different font size, and different colours}\label{fig:framed text} +%\caption{Some framed text boxes with different dimensional +% parameters, different font size, and different colours}\label{fig:framed text} %\end{figure} % -% Figure~\ref{fig:framed text} used the following code, where it is -% evident that the \cs{includeframedtext} command is available even -% outside the \Env{wraptext} environment. +% Figure~\ref{fig:framed text} used the following code, where it +% is evident that the \cs{includeframedtext} command is +% available even outside the \Env{wraptext} environment. %\begin{flushleft}\ttfamily\obeylines %\Bambiente{figure} %\cs{makebox}[\cs{textwidth}]\Marg{\cs{includeframedtext}\Marg{Text}\% @@ -560,7 +598,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %\qquad backgroundcolor=yellow,fboxrule=1mm]}\cs{\char92}[2ex] %\% % \cs{makebox}[\cs{textwidth}]{\cs{includeframedtext}\Marg{Text}\% -%\quad [insertionwidth=0.5\cs{linewidth}, fboxrule=0pt,\% +%\quad [insertionwidth=0.5\cs{linewidth}, fboxrule=0pt, %\qquad backgroundcolor=cyan,textcolor=white,fontstyle=\cs{Huge}\cs{bfseries}]} %\cs{caption}\Marg{Some framed text boxes ... different colours} %\cs{label}\Marg{fig:framed text} @@ -568,161 +606,231 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %\end{flushleft} % % As it is possible to notice from figure~\ref{fig:framed text}, -% version~6 adds another facility; the colours and dimensions of the -% elements of the wrapped objects are inserted as -% \textit{key=value} options to the \cs{includeframedtext} third -% argument \meta{settings}; its default value is “empty”; +% versions~6 and~7 add another facility; the colours and +% dimensions of the elements of the wrapped objects are inserted +% as \textit{key=value} options to the \cs{includeframedtext} +% third argument \meta{settings}; its default value is “empty”; % users can introduce as many options as they desire, among the % valid ones; if an option is misspelled or its value is not % coherent with its nature, either the option is ignored, or an -% error is raised. The valid options are the following ones; they are -% listed in alphabetical order, because the options described with the -% \texttt{key=value} syntax do not require either a specific order -% or their presence; users can therefore specify from zero to -% nine options. +% error is raised. The valid options are the following ones; +% they are listed in alphabetical order, because the options +% described with the \texttt{key=value} syntax do not require +% either a specific order or their presence; users can therefore +% specify from zero to nine options. %\begin{description} %^^A -%\item{\ttfamily backgroundcolor} sets the background colour among -% those defined by the default set provided by package \pack{xcolor}. -% The default colour is a light grey. +%\item{\ttfamily backgroundcolor} +% sets the background colour among those defined by the default +% set provided by package \pack{xcolor}. The default colour is +% light grey. %^^A -% \item{\ttfamily fboxrule} sets the thickness of the line -% around the frame; a zero value is allowed, otherwise it should -% not be smaller than \texttt{0.4pt}; on the opposite it -% should not be set too large and \texttt{1mm} appears as -% a thick enough line around the wrapped text. +% \item{\ttfamily fboxrule} +% sets the thickness of the frame; a zero value +% is allowed, otherwise it should not be smaller than +% \texttt{0.4pt}; on the opposite it should not be set too large +% and \texttt{1mm} appears as a thick enough frame around the +% wrapped text. %^^A -% \item{\ttfamily fboxsep} sets the distance of the frame from -% the wrapped text; by default it is set to \texttt{1ex}; -% also in this case it is better to avoid exaggerations. -% Notice that the default value depends on the wrapping text -% font x-height. +% \item{\ttfamily fboxsep} +% sets the distance of the frame from the wrapped text; by +% default it is set to \texttt{1ex}; also in this case it is +% better to avoid exaggerations. Notice that the default value +% depends on the wrapped text font x-height. %^^A -%\item{\ttfamily fontstyle} sets any available \emph{declaration} -% that changes the characteristics of a font: size, series, -% shape; it is possible to use also the \cs{usefont} command -% with all its four arguments, even the font encoding. This -% \pack{wrapfig2} has available also the \cs{setfontsize} -% command that can select any size with any font that has -% available at least a step wise continuous size set; for -% example the Latin Modern fonts have a stepwise continuous -% size set, while Computer Modern have available only a discrete -% size set. +%\item{\ttfamily fontstyle} +% sets any available \emph{declaration} that changes the +% characteristics of a font: size, series, shape; it is possible +% to use also the \cs{usefont} command with all its four +% arguments, even the font encoding. This \pack{wrapfig2} has +% available also the \cs{setfontsize} command that can select +% any size with any font that has available at least a stepwise +% continuous size set; for example the Latin Modern fonts have a +% stepwise continuous size set, while Computer Modern have +% available only a discrete size set. %^^A -%\item{\ttfamily framecolor} sets the color of the frame; the colours -% available are those available with package \pack{xcolor} to which -% no options have been specified; see its documentation and in case -% load \pack{xcolor} with the desired options before this package -% \pack{wrapfig2}. The default colour is a very dark grey. +%\item{\ttfamily framecolor} +% sets the color of the frame; the colours available are those +% available with package \pack{xcolor} to which no options have +% been specified; see its documentation and in case load +%\pack{xcolor} with the desired options before this package +% \pack{wrapfig2}. The default colour is a very dark grey. %^^A -%\item{\ttfamily insertionwidth} sets the insertion width; as -% it was previously specified, if this width is too small -% or too large it will be automatically reassigned a value -% within the allowed range. +%\item{\ttfamily insertionwidth} +% sets the insertion width; as it was previously specified, if +% this width is too small or too large it will be automatically +% reassigned a value within the allowed range. %^^A -%\item{\ttfamily radius} sets the optional radius of the frame -% rounded “corners”; if it is not specified, such radius is -% equal to the default value of \cs{fboxsep}. Although it is -% possible to use it, we suggest to abide from using it. +%\item{\ttfamily radius} +% sets the optional radius of the frame rounded “corners”; if it +% is not specified, such radius is equal to the default value of +% \cs{fboxsep}. Although it is possible to use it, we suggest to +% abide from using it. %^^A -% \item{\ttfamily scalefactor} sets the value that establishes -% a reasonable range of the insertion width; users can specify -% any value in the range $xy_0 = y\ped{min} \leq y \leq -% y\ped{max} = y_0/x$ , where $y_0$ is the default value, -% and $x$ is the scaling factor that by default equals $0.8$; -% this means $y_0$ equals half the current measure and the -% inserted wrapped text produces an indentation of the wrapping -% lines approximately between 60\% and 40\% the current measure; -% the wrapped text should never have a too short measure and the -% wrapping indented lines never have a too short measure. If users -% specify a different value to this key, they might get problems -% with inter word spacing and with hyphenation. +% \item{\ttfamily scalefactor} +% sets the value that establishes a reasonable range of the +% insertion width; users can specify any value in the range +% $xy_0 = y\ped{min} \leq y \leq y\ped{max} = y_0/x$, where +% $y_0$ is the default value, and $x$ is the scaling factor that +% by default equals $0.8$; this means that if $y_0$ equals half +% the current measure, the inserted wrapped text produces an +% indentation of the wrapping lines approximately between 60\% +% and 40\% the current measure; the wrapped text should never +% have a too short measure and the wrapping indented lines never +% have a too short measure. If users specify a different value +% to this key, they might get problems with inter word spacing +% and with hyphenation. %^^A -%\item{\ttfamily textcolor} sets the text colour -% among those available with the default set provided by package -% \pack{xcolor}. The default colour is black. +%\item{\ttfamily textcolor} +% sets the text colour among those available with the default +% set provided by package \pack{xcolor}. The default colour is +% black. %^^A %\end{description} % -% This version~6 has a more flexible way compared to version~5 to specify the details relative to the framed text, but they are relevant only for the \cs{includeframedtext} command; the syntax for the \Env{wraptext} environment opening command is identical. As it was previously shown, the syntax of environment \Env{wraptext} for version~6 and~5 is practically identical to the one used for both other environments; actually, as it can be seen below in the code description of version~6 and~5, it has a fairly longer definition; it is required by the necessity of avoiding the \cs{caption} changes foreseen in package{wrapfig} when \pack{float} is used to define another floating object, but in effects the new definition of the \Env{wraptext} environment uses the same \cs{wrapfloat} and \cs{endwrapfloat} commands. -% -% In all three cases the \meta{width} parameter is a \emph{braced optional argument}; for the \Env{wraptext} environment 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 \cs{parbox} argument; the measure of this text box 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 paragraph cannot be too large, otherwise the indented wrapping lines, generally justified, might get a bad word spacing. As it was already explained, it is recommended 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}. In any case versions~6 and~5 of \Env{wrapfig2} reset any specified width outside the above range to the nearest range bound. +% These versions~6 and~7 have a more flexible way compared to +% version~5 to specify the details relative to the framed text, +% but they are relevant only for the \cs{includeframedtext} +% command; the syntax for the \Env{wraptext} environment opening +% command is identical. As it was previously shown, the syntax +% of environment \Env{wraptext} for versions~7,~6, and~5 is +% practically identical to the one used for both other +% environments; actually, as it can be seen below in the code +% description of versions~7, 6 and~5, it has a fairly longer +% definition; it is required by the necessity of avoiding the +% \cs{caption} changes foreseen in package{wrapfig} when +% \pack{float} is used to define another floating object, but in +% effects the new definition of the \Env{wraptext} environment +% uses the same \cs{wrapfloat} and \cs{endwrapfloat} commands. +% +% In all three cases the \meta{width} parameter is a +% \emph{braced optional argument}; for the \Env{wraptext} +% environment 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 \cs{parbox} +% argument; the measure of this text box 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 paragraph cannot be too large, otherwise +% the indented wrapping lines, generally justified, might get a +% bad word spacing. As it was already explained, it is +% recommended 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}. In any case versions~7 to~5 of \Env{wrapfig2} +% reset any specified width outside the above range to the +% nearest range bound. % %^^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 \emph{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{location} 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). +% 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 \emph{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{location} 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 (possibly questionable) personal choice we prefer to place the wrapped object at the left of the text, without floating it and irrespective of the folio parity. +% We tested all of them, but as a (possibly questionable) +% personal choice we prefer to place the wrapped object at the +% left of the text, without floating it and irrespective of the +% folio parity. % %\begin{wraptext}{l}{0.5\textwidth}% %\includegraphics[width=\hsize]{stele-todi-small} -%\caption{The Todi stela written in Gallic and Latin. Gregorian Etruscan Museum in Rome.}\label{txt:todi-stela} +%\caption{The Todi stela written in Gallic and Latin. +% Gregorian Etruscan Museum in Rome.}\label{txt:todi-stela} %\end{wraptext} %{\itshape\kant[4]} % % As in the previous examples, we prefer to specify the wrapping -% environment just 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 used indented -% lines and to apply the remaining number (and the \cs{overhang} amount) -% 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 \LaTeX 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. +% environment just 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 used +% indented lines and to apply the remaining number (and the +% \cs{overhang} amount) 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 +% \LaTeX 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. +% +% Some of these idiosyncrasies might be avoided if the wrapped +% objects are allowed to float. Even Arseneau's \pack{wrapfig} +% allowed this feature, but according to our experience floating +% objects may solve the problems produced when they are in the +% chosen position, but they may create other problems; for +% example, if the chosen position falls close the the end of a +% page, and after that position a list starts; if the object +% floats to the beginning of the next page, and the list is +% still being processed, other errors emerge. For this reason +% floating wrapped objects are not so safe, and the best +% solution would be to chose their best position “by hand”. % -% Juan Luis Varona Malumbres, whom we thank very much, noticed that -% if the space left at the bottom of a page is scarse, it may be -% that a section title falls alone at the bottom of the page and -% the wrapping environment with its wrapping text gets typeset on the next -% page; this of course is not acceptable. We found the place to -% correct and versions~6 and~5 more often than not do not -% exhibit any more this “feature”. Unfortunately in some rare cases -% this “feature” pops up again; a \cs{newpage} command before the -% section title solves the problem. This rare feature could be avoided -% if the sectioning commands are redefined; but this would imply -% modifications to a large number of redefinitions due to the large -% varieties of classes and packages that redefine such sectioning -% commands. -% -% 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, -% or better, it is still available in versions~6 and~5, but we recommend -% to abide from using it; we believe that a wrapped text logically -% pairs the wrapping text; of course this personal opinion might be wrong. -% -% 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; this -% insertion width can be specified but it should not be too different -% from its default value $y_0$, set to 50\% of the current measure. -% For the standard environments this parameter value appears to be -% mandatory; actually it really is a braced optional argument only for the +% Juan Luis Varona Malumbres, whom we thank very much, noticed +% that if the space left at the bottom of a page is scarse, it +% may be that a section title falls alone at the bottom of the +% page and the wrapping environment with its wrapping text gets +% typeset on the next page; this of course is not acceptable. We +% found the place to correct and versions~7 and~6 more often +% than not do not exhibit any more this “feature”. Unfortunately +% in some rare cases this “feature” pops up again; a +% \cs{newpage} command before the section title solves the +% problem. This rare feature could be avoided if the sectioning +% commands are redefined; but this would imply modifications to +% a large number of redefinitions due to the large varieties of +% classes and packages that redefine such sectioning commands. +% +% 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, or better, it is still available +% in versions~7, 6 and~5, but we recommend to abide from using +% it; we believe that a wrapped text logically pairs the +% wrapping text; of course this is just a personal opinion. +% +% 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; this insertion width can be specified but +% it should not be too different from its default value $y_0$, +% set to 50\% of the current measure. For the standard +% environments this parameter value appears to be mandatory; +% actually it really is a braced optional argument only for the % redefined environments \env{wrapfigure} and \env{wraptable}. % -% Matter of facts, for the \Env{wraptext} environment we defined a -% command in order to specify a factor $x$ so as to avoid getting the -% object width outside the range $xy_0 \leq y \leq y_0/x$, where $y_0$ -% is the preset default width; if the authors specified -% a value outside this range, the above environment automatically -% resets the insertion width $y$ to the nearest bound. Of course authors -% have the possibility to change the preset $x$ value, if they redefine +% Matter of facts, for the \Env{wraptext} environment we defined +% a command in order to specify a factor $x$ so as to avoid +% getting the object width outside the range +% $xy_0 \leq y \leq y_0/x$, where $y_0$ is the preset default +% width; if the authors specified a value outside this range, +% the above environment automatically resets the insertion width +% $y$ to the nearest bound. Of course authors have the +% possibility to change the preset $x$ value, if they redefine % the \cs{WFscalefactor} macro, but such resetting is strongly % discouraged; the default value is~$0.8$. % @@ -734,19 +842,22 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %{\itshape\kant[7]} % % If optional parameters are not used and the mandatory ones are -% reduced to a minimum (remember the \meta{width}, in spite of being -% braced is optional) the three environments produce the same results; -% the difference, in spite of the nature of the wrapped object differs -% only with the environment name. Text~\ref{txt:todi-stela} displays -% an \emph{image} that contains some text; it is reasonable to insert -% it with the \Env{wrapfigure} environment, but it is not absurd to insert -% it with the \Env{wraptext} one as we did with text~\ref{txt:todi-stela}. -% -% The wrapped text may be written also in a foreign language, even -% if it uses a different alphabet. Evidently this language should -% be specified in the preamble of the author's document, either -% when using \pack{babel} or \pack{polyglossia}. The example -% text~\ref{txt:greek} was typeset with the following code: +% reduced to a minimum (remember the \meta{width}, in spite of +% being braced is optional) the three environments produce the +% same results; the difference, in spite of the nature of the +% wrapped object differs only with the environment name. +% Text~\ref{txt:todi-stela} displays an \emph{image} that +% contains some text; it is reasonable to insert it with the +% \Env{wrapfigure} environment, but it is not absurd to insert +% it with the \Env{wraptext} one, as we did with +% text~\ref{txt:todi-stela}. +% +% The wrapped text may be written also in a foreign language, +% even if it uses a different alphabet. Evidently this language +% should be specified in the preamble of the author's document, +% either when using \pack{babel} or \pack{polyglossia}. The +% example text~\ref{txt:greek} was typeset with the following +% code: %\begin{flushleft}\ttfamily\obeylines %\Bamb{wraptext}\Marg{l} %\cs{includeframedtext}\Marg{\% @@ -758,18 +869,20 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %^^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 other packages, such as -% \pack{float}, or classes, such as \class{memoir}. Besides floating, -% the main difference is the name of the caption “label”: Figure, Table, -% Algorithm, Example, and so on, in addition to the lists of such objects. -% -% 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: +% 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 other packages, +% such as \pack{float}, or classes, such as \class{memoir}. +% Besides floating, the main difference is the name of the +% caption “label”: Figure, Table, Algorithm, Example, and so on, +% in addition to the lists of such objects. +% +% 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}\setfontsize{9.275}\ttfamily\obeylines %\Benv{wrapfloat}\Marg{figure}\oarg{line number}\marg{placement}\oarg{overhang}\marg{width}\meta{$\star$} %\quad\qquad\meta{image} @@ -783,77 +896,83 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi %\Eenv{wrapfloat} %\end{flushleft} % -% By reading the documentation of the original \pack{wrapfig} package, -% it may be assumed that, if the floating \meta{location} 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. But, if the non floating \meta{location} codes -% are used, the presence of another \meta{floating object} environment -% appears to be unnecessary. -% -% This is actually possible by “cheating” a little bit: it can be actually -% wrapped any \meta{object} by using the \Env{wrapfigure} environment, -% while assigning a different name to the caption label; something -% similar to typeset a small figure within a non floating environment. -% The obvious draw back is that the caption is numbered as a figure. +% By reading the documentation of the original \pack{wrapfig} +% package, it may be assumed that, if the floating +% \meta{location} 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. But, if the non floating \meta{location} codes +% are used, the presence of another \meta{floating object} +% environment appears to be unnecessary. +% +% This is actually possible by “cheating” a little bit: it can +% be actually wrapped any \meta{object} by using the +% \Env{wrapfigure} environment, while assigning a different name +% to the caption label; something similar to typeset a small +% figure within a non floating environment. The obvious draw +% back is that the caption is numbered as a figure. % % In order to avoid such drawbacks and to have a real floating -% \meta{other object} environment it is necessary to procede by defining -% a new real floating environment with that name. To do this task, -% \pack{wrapfig2} versions~5 and~6 use the \pack{float} package. +% \meta{other object} environment it is necessary to procede by +% defining a new real floating environment with that name. To do +% this task, \pack{wrapfig2} versions~5,~6, and~7 use the +% \pack{float} package. % % As it is possible to verify by reading the section where the % code is documented, the operation is not that simple because -% \pack{float} redefines several internal macros that are incompatible -% with both \pack{wrapfig} and \pack{wrapfig2}. This is why, even -% with \pack{wrapfig2} in versions~5 and~6, that load the \pack{float} -% package, the code for this environment redefines the \cs{caption} -% command so that Arseneau had to define some adjusting macros in order -% to deal with something different from what it was with the \LaTeXe -% kernel. We did not modify what Arseneau defined, although it did not -% work correctly with the new \Env{text} floating environment. Therefore -% we reinstated the \LaTeXe kernel relevant definitions. -% -% It is possible that such resetting of the original definition is -% necessary also with floating objects defined by other means, for -% example by using the functionalities of the \class{memoir} class. -% We admit we did not test this package functionality with class -% \class{memoir}; \textcolor{red}{feedback on this compatibility issue +% \pack{float} redefines several internal macros that are +% incompatible with both \pack{wrapfig} and \pack{wrapfig2}. +% This is why, even with \pack{wrapfig2} in versions~5--7, that +% load the \pack{float} package, the code for this environment +% redefines the \cs{caption} command so that Arseneau had to +% define some adjusting macros in order to deal with something +% different from what it was with the \LaTeXe kernel. We did not +% modify what Arseneau defined, although it did not work +% correctly with the new \Env{text} floating environment. +% Therefore we reinstated the \LaTeXe kernel relevant +% definitions. +% +% It is possible that such resetting of the original definition +% is necessary also with floating objects defined by other +% means, for example by using the functionalities of the +% \class{memoir} class. We admit we did not test this package +% functionality with class \class{memoir}; +% \textcolor{red}{feedback on this compatibility issue % is very welcome}. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \section*{Acknowledgements} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% We gratefully thank Donald Arseneau who gave the \TeX community -% the original \Env{wrapfig} package. For what concerns wrapped text, -% we did not use Arseneau's \pack{framed} package, because we wanted a -% frame with rounded corners. Nevertheless, while developing our package, -% we experimented also with his package that yields good results but -% with the ordinary right angle frame corners. +% We gratefully thank Donald Arseneau who gave the \TeX +% community the original \Env{wrapfig} package. For what +% concerns wrapped text, we did not use Arseneau's \pack{framed} +% package, because we wanted a frame with rounded corners. +% Nevertheless, while developing our package, we experimented +% also with his package that yields good results but with the +% ordinary right angle frame corners. % % Thanks to Heinrich Fleck who submitted to our attention the -% \texttt{texstackexchange} message where the problem of wrapping text was -% presented possibly for the first time. The solution presented in -% \texttt{texstackexchange} appears to be oversimple, almost trivial; -% especially it does not solve the problem of a caption if one is desired -% to describe that wrapped text. -% Moreover the solution of \texttt{texstackexchange} used in a very -% simple way the \Env{tcolorbox} environment, that behind the -% scenes uses a very heavy set of multifunctional macros that offer +% \texttt{tex.stackexchange} message where the problem of +% wrapping text was presented possibly for the first time. The +% solution presented in \texttt{tex.stackexchange} appears to be +% oversimple, almost trivial; especially it does not solve the +% problem of a caption if one is desired to describe that +% wrapped text. Moreover the solution of +% \texttt{tex.stackexchange} used in a very simple way the +% \Env{tcolorbox} environment, that behind the scenes uses a +% very heavy set of multifunctional macros that offer % functionalities that are not required for this problem. % -% Warm thanks also to Juan Luis Varona -% Malumbresfor his precious feedback and his -% suggestions. +% Warm thanks also to Juan Luis Varona % Malumbres for his +% precious feedback and his suggestions. % % Herbert Voß spotted the necessity to follow a % specific loading order if the \pack{amsmath} -% needs to be used; he was so kind to send me a -% bug notice together with a minimum working -% example. +% needs to be used; he was so kind to send us a +% bug notice together with a minimum working example. % Thanks to Bruno Pagani who pinpointed the exact -% point that conflicts with \pack{wrapfig2} so +% point that conflicted with \pack{wrapfig2} so % that I could fix this conflict. Bruno Pagani % discovered also that package \pack{amstext} is % the source of this conflict and that this @@ -861,8 +980,13 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % but also by other packages such as, for example, % by \pack{siunitx}. % +% Many thanks to Ulrike Fisher who found a loading order problem +% reported on \texttt{tex.stackexchange} because a conflict with +% package \pack{circledsteps}, that should be loaded bifore +% \pack{wrapfig2}. Thanks a lot Ulrike. +% %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \CheckSum{1427} +% \CheckSum{1382} % \StopEventually{} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -873,35 +997,36 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % \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 Arseneau's original code. +% 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 Arseneau's +% original code. % % The usual specification of the format name and date, and the -% identification of this specific package have been already specified -% by the \texttt{.dtx} file. +% identification of this specific package have been already +% specified by the \texttt{.dtx} file. % % First of all we check if certain packages have already been % loaded; some of these packages, such as \pack{wrapfig}, that % might have been previously directly loaded, or might have been % loaded by other packages, are incompatible with this package -% \pack{wrapfig2}. \pack{wrapfig} might have been loaded by other -% packages, such as \pack{caption} or \pack{subcaption}, that redefine -% some internals that we did not want to replace so as to avoid other -% possible incompatibilities. We first check if a specific macro -% with the \texttt{WF} prefix has already been defined; if so, -% this package \emph{loading} is aborted with a very evident error -% message. In contrast the \emph{job} is not aborted, because the presence -% of the original \pack{wrapfig} package might still be sufficient; -% evidently there will be many errors if some new user commands -% or environments are used. -% -%{\color{red}\paragraph{Caution} besides the evident error message, -% that might be neglected by the user, the job may continue but it -% may produce several errors difficult to interpret. Please, -% in these cases read the \texttt{.log} file and look for error -% messages; there you are going to discover what has gone wrong -% with your way of using this package.} +% \pack{wrapfig2}. such packages, as \pack{caption} or +% \pack{subcaption}, redefine some internals that we did not +% want to replace so as to avoid other possible +% incompatibilities. We first check if a specific macro with the +% \texttt{WF} prefix has already been defined; if so, this +% package \emph{loading} is aborted with a very visible error +% message. In contrast the \emph{job} is not aborted, because +% the presence of the original \pack{wrapfig} package might +% still be sufficient; evidently there will be many errors if +% some new user commands or environments are used. +% +%{\color{red}\paragraph{Caution} Besides the evident error +% message, that might be neglected by the user, the job may +% continue but it may produce several errors difficult to +% interpret. Please, in these cases read the \texttt{.log} file +% and look for error messages; there you are going to discover +% what has gone wrong with your way of using this package.} % % \begin{macrocode} \ifcsname c@WF@wrappedlines\endcsname @@ -937,82 +1062,89 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi \newif\ifWFnew \let\ifWFnew\iftrue \newif\ifWFfive \let\ifWFfive\iffalse \DeclareOption{WFold}{\let\ifWFnew\iffalse} -\DeclareOption{WFfive}{\let\ifWFnew\iffalse \let\ifWFfive\iftrue} +\DeclareOption{WFfive}{\let\ifWFnew\iffalse\let\ifWFfive\iftrue} \ProcessOptions % \end{macrocode} % -% We load the \pack{etoolbox} package, in order to have available -% its powerful macros. +% We load the \pack{etoolbox} package, in order to have +% available its powerful macros. % -% If it 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: +% If it 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. +% 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} -% Their availability eases the treatment of the backwards -% compatibility of this software with the original \pack{wrapfig} and -% \pack{wraptable} functionality. It deals with the mandatory -% \meta{width} argument of the \Env{wrapfigure}, \Env{wraptable}, -% the new \Env{wraptext}, and \Env{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} +% The availability of these \emph{deprecated} types eases the +% treatment of the backwards compatibility of this software with +% the original \pack{wrapfig} and \pack{wraptable} +% functionality. It deals with the mandatory \meta{width} +% argument of the \Env{wrapfigure}, \Env{wraptable}, the new +% \Env{wraptext}, and \Env{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} % with a \texttt{0pt} default value. % % % \begin{macrocode} -\RequirePackage{xparse} +\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}} \@ifpackageloaded{xfp}{}{\RequirePackage{xfp}} \@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}} \@ifpackageloaded{float}{}{\RequirePackage{float}} -\@ifpackageloaded{color}{}{% - \@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}% +\@ifpackageloaded{color}{}% + {\@ifpackageloaded{xcolor}{}% + {\RequirePackage{xcolor}}% } -\@ifpackageloaded{curve2e}{}{\RequirePackage{curve2e}} +\@ifpackageloaded{pict2e}{}{\RequirePackage{pict2e}} \@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}} % \end{macrocode} -% Notice that we loaded the \pack{xcolor} package without any option -% in order to avoid option clash errors, and users who want to use -% \pack{xcolor} with options should load it \emph{before} this package -% \pack{wrapfig2}, version~5 and~6. {\color{red}Users are warned -% to pay attention to this \pack{color} package loading: they should load -% it neither before nor after loading \pack{wrapfig2}; if they do, they -% receive various warning or error messages because \pack{xcolor} -% redefines some \pack{color} internal commands; everything is -% explained in the \pack{xcolor} documentation.} -% -%In ordet to avoid conflicts with \pack{amstext} -% and its|\text| command, we have to save its -% definition before actually execution any part of -% this package, and restore ita value at the end +% Notice that we loaded the \pack{xcolor} package without any +% option in order to avoid option clash errors, and users who +% want to use \pack{xcolor} with options should load it +% \emph{before} this package \pack{wrapfig2}, versions~5--7. +% {\color{red}Users are warned to pay attention to avoid loading +% the \pack{color} package: they should never load it +% before or after loading \pack{wrapfig2}; if they do, they +% receive various warning or error messages because +% \pack{xcolor} redefines some \pack{color} internal commands; +% everything is explained in the \pack{xcolor} documentation.} +% +% In order to avoid conflicts with \pack{amstext} +% and its |\text| command, we have to save its +% definition before actually executing any part of +% this package, and restore its value at the end % of this package; see the second part of this % procedure at the very end of this package. % \begin{macrocode} \ifcsdef{text}{\let\amsTextText\text}{} + % \end{macrocode} % -% In order to define the new floating object \texttt{text} we have -% to load the package \pack{float}, but only if versions~5 or~6 -% are used; in other words only if the \cs{ifWFnew} switch -% is \texttt{true}. -% -% If the \cs{chapter} command is or is not defined we have to load -% the \pack{float} package with different options; for example, if -% we are using the \class{article} class, the \cs{chapter} command -% is undefined, and the last option might become \opt{section} (although -% in the standard \class{article} class, no floating object counter -% belongs to any other counter reset list) so as to have the floating -% \Env{text} environment correctly reset the right counter with the -% right label before the object number. +% In order to define the new floating object \texttt{text} we +% have to load the package \pack{float}, but only if versions~6 +% or later are used; in other words, only if the \cs{ifWFnew} +% switch is \texttt{true}. +% +% If the \cs{chapter} command is or is not defined we have to +% load the \pack{float} package with different options; for +% example, if we are using the \class{article} class, the +% \cs{chapter} command is undefined, and the last option might +% become \opt{section} (although in the standard \class{article} +% class, no floating object counter belongs to any other counter +% reset list) so as to have the floating \Env{text} environment +% correctly reset the right counter with the right label before +% the object number. % \begin{macrocode} \ifboolexpr{ bool{WFfive} or bool{WFnew} }% {\floatstyle{plain}% @@ -1021,7 +1153,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi \else \newfloat{text}{tbp}{lotx}% \fi - \floatname{text}{Text}% come personalizzare con le diverse lingue? + \floatname{text}{Text}% redefine to localise in other languages \let\WF@text@caption\float@caption }{} @@ -1029,20 +1161,21 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi % % If the users wanted to add the \texttt{text} counter to some % sectioning command counter reset list, they might use the -% \cs{counterwithin} command now available with the recent updates -% of the \LaTeX kernel; see the \LaTeX newsletter~28 for details -% (terminal command \texttt{texdoc ltnews28}). Its syntax is the -% following: +% \cs{counterwithin} command now available with the recent +% updates of the \LaTeX kernel; see the \LaTeX newsletter~28 for +% details (terminal command: \texttt{texdoc ltnews28}). Its +% syntax is the following: %\begin{ttsintassi} %\cs{counterwithin}\marg{counter}\marg{main counter reset list} %\end{ttsintassi} % -% Next we define some dimensions, boxes, token registers, \TeX counters, -% and alias names, plus some color and macro definitions. -% The \cs{WF@correctlines@switch} \TeX numeric register -% (not a \LaTeX counter) is going to be used as a boolean switch: if its -% value is zero, il means “false”, otherwise it is “true”; in the other -% definitions below, it will be set only to 0 or 1, depending on the +% Next we define some dimensions, boxes, token registers, +% \TeX counters, and alias names, plus some color and macro +% definitions. The \cs{WF@correctlines@switch} \TeX numeric +% register (not a \LaTeX counter) is going to be used as a +% boolean switch: if its value is zero, il means “false”, +% otherwise it 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@ @@ -1056,7 +1189,13 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi \let\@@parshape\parshape \let\WF@@everypar\everypar +\newlength\WFfrthick +\newlength\WFfrgap +\newlength\WFfrwidth +\newlength\WFfrheight \newdimen\insertwidth +\newlength\WFXR \newlength\WFYD +\newlength\WFXL \newlength\WFYU \newdimen\radius \newdimen\WFinsertwidthL \newdimen\WFinsertwidthH @@ -1089,13 +1228,14 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi }% % \end{macrocode} -% We define several options that use the \texttt{key=value} syntax. -% Above we have already loaded the \pack{xkeyval} package that -% offers also some ‘X’ labeled macros that mimic the corresponding -% \LaTeXe kernel macros, but that are necessary for using the -% \pack{xkeyval} internal macros. We chose the \texttt{wraptext} -% option family name, because such options are to be used mostly within -% the \cs{includeframedtext} macro. +% We define several options that use the \texttt{key=value} +% syntax. Above we have already loaded the \pack{xkeyval} +% package that offers also some ‘X’ labeled macros that mimic +% the corresponding \LaTeXe kernel macros, but that are +% necessary for using the \pack{xkeyval} internal macros. We +% chose the \texttt{wraptext} option family name, because such +% options are to be used mostly within the +% \cs{includeframedtext} macro. % The \cs{ExecuteOptionX} used here stands for a general % initialisation of the listed options, but it will be used also % within the \cs{includeframedtext} command in order to set the @@ -1110,41 +1250,56 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi \DeclareOptionX{fontstyle}[\normalfont]{#1} \DeclareOptionX{radius}[\fboxsep]{\radius=#1} \DeclareOptionX{insertionwidth}[0.5\columnwidth]{\insertwidth=#1} +\DeclareOptionX*{\PackageWarning{wrapfig2}% + {`\CurrentOption' ignored}} -\DeclareOptionX*{\PackageWarning{wrapfig2}{`\CurrentOption' ignored}} - -\ExecuteOptionsX{scalefactor, fboxrule, fboxsep, framecolor, -backgroundcolor, textcolor, fontstyle, radius, insertionwidth} +\ExecuteOptionsX{scalefactor, fboxrule, fboxsep, +framecolor, backgroundcolor, textcolor, fontstyle, radius, +insertionwidth} \ProcessOptionsX* % \end{macrocode} % -% -% {\color{red}Should the format file be not so up to date, 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 are -% already included in the format file at the date required for this -% file. The \pack{xparse} package has been available since about 2018; -% should the users have available a definitely older \TeX system -% installation, either they upgrade it, or they must avoid using this -% \pack{wrapfig2} package and should use the original \pack{wrapfig} one; -% if they need to wrap text, they should resort to some ingenious, -% not so trivial tricks to do it.} -% -% Originally version~4 used the \pack{tcolrbox} package to frame -% the wrapped text; we thought that loading that package was too -% heavy on memory, even if the modern computers have large working -% memories. But in order to maintain and track possible errors -% the traced \texttt{.log} file would become too large to be of any -% help; therefore in oder to draw a framed box with rounded corners -% we thought it would be much simpler to load the \pack{curve2e} -% package, just a second level extension of the original \Env{picture} -% environment defined in the \LaTeXe kernel; only some 30 lines of code -% are sufficient to replace the extremely powerful \pack{tcolorbox} -% functionalities otherwise required to frame wrapped text with this -% \pack{wrapfig2} package. +% {\color{red}Should the format file be not so up to date, 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 +% are already included in the format file at the date required +% for this file. The \pack{xparse} package has been available +% since about 2018; should the users have available a definitely +% older \TeX system installation, either they upgrade it, or +% they must avoid using this \pack{wrapfig2} package and should +% use the original \pack{wrapfig} one; if they need to wrap +% text, they should resort to some ingenious, not so trivial +% tricks to do it.} +% +% Originally version~4 used the \pack{tcolorbox} package to +% frame the wrapped text; we thought that loading that package +% was too heavy on memory, even if the modern computers have +% large working memories. But in order to maintain and track +% possible errors the traced \texttt{.log} file would become too +% large to be of any help; therefore in oder to draw a framed +% box with rounded corners we thought it would be much simpler +% to load the \pack{curve2e} package, just a second level +% extension of the original \Env{picture} environment defined in +% the \LaTeXe kernel; only some 30 lines of code are sufficient +% to replace the extremely powerful \pack{tcolorbox} +% functionalities otherwise required to frame wrapped text with +% this \pack{wrapfig2} package. +% +% We were informed that \pack{curve2e} was incompatible with +% some other packages, in particular its commands were not +% compatible with the recent modification of the \Env{picture} +% environment, that since 2019 is capable to use absolute +% dimensional data, without reference to \cs{unitlength} +% multipliers. Therefore we decided to avoid loading +% \pack{curve2e} and used \pack{pict2e} internal low level +% commands that are already upgraded to receive absolute +% dimensioned parameters. Of course we had to redefine several +% internal commands of \pack{wrapfig2}. Here we describe in +% details such new macros. % % The definitions of the \Env{wrapfigure} and \Env{wraptable} % environments are very simple by means of the underlaying @@ -1160,224 +1315,280 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % -% Notice that the argument descriptor \texttt{s} for the optional -% star is not present in these definitions; if a star is being used, -% it will be read by successive macros or environments. +% Notice that the argument type descriptor \texttt{s} for the +% optional star is not present in these definitions; if a star +% is being used, it will be read by successive macros or +% environments. % % In order to include the text to be wrapped the floating object -% \Env{text} has already been defined, but we need a suitable command -% to insert it with its frame into the \Env{wraptext} environment body. -% Here is the code of some extra macros and of the \Env{wraptext} -% environment. -% -% We start with two different \cs{includeframedtext}, one for version~6, that accepts \texttt{key=velue} options, and another one for version~5, that requires only a comma separated list of dimensional values. +% \Env{text} has already been defined, but we need a suitable +% command to insert it with its frame into the \Env{wraptext} +% environment body. Here is the code of some extra macros and of +% the \Env{wraptext} environment. +% +% We start with redefining \cs{includeframedtext} valid for +% versions~6 and~7, that accepts \texttt{key=value} options, and +% give up the alternative definitions for older versions. % \begin{macrocode} -\ifbool{WFnew}{% -\NewDocumentCommand\includeframedtext{% +\ifboolexpr{ bool{WFfive} or bool{WFnew} }% +{\NewDocumentCommand\includeframedtext{% O{\insertwidth} m O{} o}{\bgroup% - \ExecuteOptionsX{#3}% executes possible key=value options + \ExecuteOptionsX{#3}% executes possible options \insertwidth=#1\WFscalewidth - \framedbox{#2}{\fboxrule}{\fboxsep}[\radius]\egroup} -}{} - -\ifbool{WFfive}{% -\NewDocumentCommand\includeframedtext{O{\insertwidth} m O{1pt,1ex} o}% -{\bgroup - \WFsplitdimens #3!\relax - \IfNoValueTF{#4}% - {\framedbox{#2}{\fboxrule}{\fboxsep}}% - {\framedbox{#2}{\fboxrule}{\fboxsep}[#4]} -\egroup}% + \framedbox{\insertwidth}{\fboxrule}{\fboxsep}[\radius]{#2}\egroup} }{} % \end{macrocode} % -% Their simple syntaxes are the following +% Their simple syntax is the following %\begin{ttsintassi} -%~ -%\% for version 6.0 -%\cs{includeframedtext}\oarg{text width}\marg{text}\oarg{options}\oarg{radius} -% -%\% for version 5.0 -%\cs{includeframedtext}\oarg{text width}\marg{text}\oarg{dimensions}\oarg{radius} +%\cs{includeframedtext}\oarg{text width}\marg{text}\oarg{key=value settings}\oarg{radius} %\end{ttsintassi} -% -% The optional \meta{text width} is the (possibly scaled) width computed by the \Env{wraptext} environment; but if the authors use this command outside the \Env{wraptext} environment, they should specify a width; in any case the default value is half the current measure \cs{linewidth}. The \meta{text} is the unformatted text to be wrapped; it will be boxed and framed by the service macro \cs{framedbox}; the \meta{dimensions} are passed on to \cs{framedbox} command; they are a comma separated list of dimensions, namely the thickness of the frame and the necessary frame distance from the formatted text. The \meta{options} contains a comma separated list of zero to nine options with the syntax \texttt{key=vale} that are going to be used by both the \cs{includeframedtext} and \cs{framedbox}. The last optional \meta{radius} is the curvature radius of the rounded frame corners; the default value is going to be set to \cs{fboxsep}: in version~5 \cs{framedbox} by default sets it equal to the frame separation width, while with version~6 its value is received with the option \texttt{radius=\meta{dimension}}; the default value is certainly the best one, but the users can specify a different value, of course not too different from the default one. See some examples in figure~\ref{fig:framed text}. -% -% The definition of the \cs{framedbox} command appears to be complicated; it is just an apparent complication due to the fact that it uses the powerful \cs{Curve} command that draws an arbitrary curved line or fills the area delimited by such curved line; it suffices to specify the nodes and the tangents to each node; the nodes are the points the line should pass through, their tangents may be specified with arbitrary vector components along the horizontal and vertical axes. For a rectangle such vector components are just 0 or $\pm 1$. The node coordinates of the rounded corners, on the opposite, must be determined with accuracy; we used the \cs{fpeval} function of package \pack{xfp}, that performs precise computations on operands in fractional decimal numbers; if the operands are dimensions, the operands are their fractional decimal values in printer points, the results of such operations are pure fractional decimal numbers without units; if the numerical result is to be interpreted again as the measure of a dimensional entity, \texttt{pt} must be appended to the assignments to a dimension register; within the \Env{picture} environment, any coordinate is expressed in multiples of \cs{unitlength}, therefore no unit of measure is necessary, once \cs{unitlength} has been specified. -% -% For a rectangle with curved corners of a given radius \cs{R} -% we have four quarter circles joined by straight lines; therefore -% we need eight nodes. % -% The coloured background and the coloured frame have the same contour; -% but the former is filled, while the latter is stroked; we have to -% draw the same curve two times; first the coloured background, then the -% superimposed frame -% -% This coloured framed curved corners rectangle is at the center of the -% coordinate system of a \Env{picture} environment, and has the correct -% dimensions to receive the boxed text; it is trivial to center the text -% by means of a zero dimensioned box, typical of the \Env{picture} -% environment. +% The optional \meta{text width} is the (possibly scaled) width +% computed by the \Env{wraptext} environment; but if authors +% use this command outside the \Env{wraptext} environment, they +% should specify a width; in any case the default value is half +% the current measure \cs{linewidth}. +% +% The \meta{text} is the unformatted text to be wrapped; it will +% be boxed and framed by the service macro \cs{framedbox}. +% +% The \meta{key-value settings} contains a comma separated list +% of zero to nine settings with the syntax \texttt{key=value} +% that are going to be used by both the \cs{includeframedtext} +% and \cs{framedbox}. +% +% The last optional argument \meta{radius} (usable, but +% actually useless because it can be set with a \emph{key=value} +% option) is the curvature radius of the rounded frame corners; +% its default value is going to be set to \cs{fboxsep}: in this +% version its value is specified with the setting +% \texttt{radius=\meta{dimension}} among the other +% \meta{ket=value settings}; the default value is certainly the +% best one, but users can specify a different value, of course +% not too different from the default one. See some examples in +% figure~\ref{fig:framed text}. +% +% The definition of \cs{framedbox} is reduced to very simple +% settings (initially the \meta{text} is typeset within a +% \cs{parbox} of reduced measure: in facts the specified +% insertion width is diminished with the sum of twice the frame +% thickness and the frame gap; in this way the box dimensions +% are going to be used by \cs{Frame} to compute the centres of +% the corner arcs so as to draw the curved corners box needed to +% use the \cs{arc} \pack{pict2e} macro; the actual macro that +% draws the background and the frame is \cs{Frame}; +% nevertheless. it is \cs{framedbox} that decides to draw only +% the background or also the box frame. +% +% The coloured background and the coloured frame have the same +% contour; but the former is filled, while the latter is +% stroked; we have to draw the same curve two times; first the +% coloured background, then the superimposed frame +% +% This coloured framed curved corners rectangle is at the center +% of the coordinate system of a \Env{picture} environment, and +% has the correct dimensions to receive the boxed text; it is +% trivial to center the text by means of a zero dimensioned box, +% typical of the \Env{picture} environment. % -% The code of this long but simple code is the following. +% The code of this simple code is the following. % \begin{macrocode} -\NewDocumentCommand\framedbox{ m m m O{#3}}{\bgroup -\fboxrule=#2\fboxsep=#3\relax -\setbox0\hbox{\fboxrule=\z@\fboxsep=#3\relax -\framebox{\parbox{% draw a framed box without the frame - \fpeval{\insertwidth-2\fboxrule-2\fboxsep}\p@}{\textcolor{WFtext}{#1}}}} - -\unitlength=\fpeval{\wd0/100}\p@ % set the picture \unitlength - % determine the picture coordinates and displacement of the axes origin -\edef\x{100}% -\edef\y{\fpeval{(\ht0 +\dp0)/\unitlength}}% -\edef\xc{50}% -\edef\yc{\fpeval{\y/2}}\edef\R{\fpeval{#4/\unitlength}}% -\edef\R{\fpeval{#4/\unitlength}}% radius in unit lengths - % compute the horizontal and vertical shifts of the corner extrema -\edef\WFXds{\fpeval{-\xc+\R}}\edef\WFXsd{-\WFXds}% -\edef\WFYuo{\fpeval{\yc-\R}}\edef\WFYou{-\WFYuo}% - % compute the coordinates of the curved corners frame contour -\edef\PSEl{\WFXsd,-\yc}\edef\PSEu{\xc,\WFYou}\edef\PNEd{\xc,\WFYuo}% -\edef\PNEl{\WFXsd,\yc}\edef\PNWr{\WFXds,\yc}\edef\PNWd{-\xc,\WFYuo}% -\edef\PSWu{-\xc,\WFYou}\edef\PSWr{\WFXds,-\yc}% - -\def\WFrectangle{% define the contour as the argument of \Curve - (\WFXsd,-\yc)<1,0>(\xc,\WFYou)<0,1>(\xc,\WFYuo)<0,1>% - (\WFXsd,\yc)<-1,0>(\WFXds,\yc)<-1,0>(-\xc,\WFYuo)<0,-1>% - (-\xc,\WFYou)<0,-1>(\WFXds,-\yc)<1,0>(\WFXsd,-\yc)<1,0>}% -\def\CurveStar{\Curve*}% define a macro for adding the asterisk - -\begin{picture}(\x,\y)(-\xc,-\yc) -{\color{WFbackground}\expandafter\CurveStar\WFrectangle}% draw background -\ifdim\fboxrule>\z@% draw the frame if its thickness is not zero - {\color{WFframe}\linethickness{#2}\expandafter\Curve\WFrectangle}% -\fi - % put the text block in a null box at the coordinates origin -\put(0,0){\makebox(0,0)[cc]{\box0}}% -\end{picture} -\egroup} +\NewDocumentCommand\framedbox{m m m O{#3} m}{\bgroup +% +\dimen0=\dimexpr#1-(#2+#3)*2\relax +\setbox0\hbox{\parbox{\dimen0}{\color{WFtext}#5}}% +% +\WFfrthick=#2\relax +\WFXR=\dimexpr\wd0/2\relax \WFXL=-\WFXR% +\WFYU=\dimexpr(\ht0+\dp0)/2\relax \WFYD=-\WFYU% +\dimen4=#1\relax \dimen6=\dimexpr\ht0+\dp0+(#2+#3)*2\relax +\dimen8=#4 +% +{\begin{picture}(\dimen4,\dimen6)(-0.5\dimen4,-0.5\dimen6) +\Frame*{\dimen4}{\dimen6}{\dimen8}% +\ifdim\WFfrthick>0pt\Frame{\dimen4}{\dimen6}{\dimen8}\fi +\put(0mm,0mm){\makebox(0,0){\box0}}% +% +\end{picture}}% +\egroup\ignorespaces} + +\NewDocumentCommand\Frame{s m m m}{% +\bgroup +\WFXR=\dimexpr#2/2\relax \WFXL=-\WFXR% +\WFYU=\dimexpr#3/2\relax \WFYD=-\WFYU% +\IfBooleanTF{#1}{\linethickness{0pt}\color{WFbackground}}% +{\linethickness{\WFfrthick}\color{WFframe}}% +% +\moveto(\WFXR,\WFYD+#4)% +\circlearc{\WFXR-#4}{\WFYU-#4}{#4}{0}{90}% +\circlearc{\WFXL+#4}{\WFYU-#4}{#4}{90}{180}% +\circlearc{\WFXL+#4}{\WFYD+#4}{#4}{180}{270}% +\circlearc{\WFXR-#4}{\WFYD+#4}{#4}{270}{360}% +\closepath +\IfBooleanTF{#1}{\fillpath}{\strokepath}% +% +\egroup\ignorespaces} % \end{macrocode} -% Its syntax is the following. +% The syntax of \cs{framedbox} is the following. +%\begin{ttsintassi}\setfontsize{8.5}\obeylines +%\cs{framedbox}\marg{frame width}\marg{frame thickness}\marg{frame separation}\oarg{corner radius}\marg{text to be wrapped} +%\end{ttsintassi}¬ +% +% The default value of the \meta{corner radius} is assigned so +% as to equal argument number~3, that is the \meta{frame +% separation} and both have a default value of \texttt{1ex}; +% therefore they vary with the current font size. See +% figure~\ref{fig:framed text}. The frame thickness is given a +% default value of \texttt{1pt} if the command is used within +% the body of the \cs{includeframedtext}; but if this command +% received a different value the frame may be thicker, or even +% vanish; we discourage values higher than \texttt{3pt} (about +% \texttt{1mm}) and lower than \texttt{1pt} unless it is zero. +% +% The \cs{Frame} command syntax is the following %\begin{ttsintassi}\setfontsize{8.5}\obeylines -%\cs{framedbox}\marg{text to be wrapped}\marg{frame thickness}\marg{frame separation}\oarg{corner radius} +%\cs{Frame}\meta{$\star$}\marg{frame width}\marg{frame height}\marg{corner radius} %\end{ttsintassi} % -% The default value of the \meta{corner radius} is assigned to -% equal argument number~3, that is the \meta{frame separation} and both -% have a default value of \texttt{1ex}; therefore they vary with the -% current font size. See figure~\ref{fig:framed text}. The frame -% thickness is given a default value of \texttt{1pt} if the command is -% used within the body of the \cs{includeframedtext}; but if this -% command received a different value the frame may be thicker, -% or even vanish; we discourage values higher than \texttt{3pt} -% (about \texttt{1mm}) and lower than \texttt{1pt} unless it is zero. -% -% 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 slim in order to avoid -% problems with its justification or the justification of the wrapping -% lines. 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\%); as with the other wrapping environments, -% with versions~6 and~5 the inserted material width is a \emph{braced -% optional argument}; with version 6.0 the default value of -% the \opz{radius} option is equal to \cs{fboxsep}. -% -% For what concerns \Env{wraptext}, the opening 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 -% wrapping lines; sometimes it might be necessary to get rid of the -% space below the inserted block when it gets typeset at the bottom -% of a page. The star is not needed because for this environment -% the optional first argument is always interpreted as the indented -% lines number \emph{correction}; nevertheless if users specify the -% optional star, as they are used to with the other environments, such -% star produces a visible warning message that reminds the user about -% its uselessness. -% -% It is true that some of the input parameters specified to the opening -% command of any environment 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 uses the separate opening and closing -% macros of the \Env{wrapfloat} environment; such procedure -% breaks this second availability of the input parameters, -% therefore it is necessary to save them into local macros or count -% registers (remember that assignments to \TeX count registers are -% \emph{local}, while assignment to \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@box} box register has been allocated at the code beginning; -% remember that \LaTeXiii registers of any kind are not limited in number -% as they were some years ago with \LaTeXe. +%\begin{wrapfigure}{i}{45mm} +%\includegraphics[width=45mm]{LAPDFcolori} +%\caption{Reduced size of Detlef Reimers's colour wheel} +%\label{fig:colour-wheel} +%\end{wrapfigure} +% The optional $\star$ decides to avoid stroking; therefore the +% macro just fills the contour with the background color; +% without the $\star$ the contour is stroked with the frame +% width and color. \cs{box0}, that contains the now formatted +% text with the text color, shall be superimposed on the center +% of the frame; of course it is the user's duty to select the +% various colours so that they are contrasting; no white over +% yellow, for example; but yellow over blue is OK; It is +% convenient to give a look to the colour circle the single page +% documentation of \pack{colors} by Detlef Reimers: +% \texttt{texdoc colors}; figure~\ref{fig:colour-wheel}. Trace +% a diameter on the circular drawing, and the colours at both +% intersections with the wheel circumference are certainly +% contrasting; of course users can work also with colours that +% differ in density, typically white vs.~black. +% +% The definition of the \Env{wraptext} environment is more +% detailed than that of \Env{wrapfigure} and \Env{wraptable}, +% 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 slim in order to avoid problems with its justification or +% the justification of the wrapping lines. 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\%); as with the other wrapping environments, +% with versions~7 to~5 the inserted material width is a +% \emph{braced optional argument}; with versions 6.0 and~7 the +% default value of the \opz{radius} option is equal to +% \cs{fboxsep}. +% +% For what concerns \Env{wraptext}, the opening 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 formatted text, and that of the inserted +% block and/or the measure of the indented wrapping lines; +% sometimes it might be necessary to get rid of the space below +% the inserted block when it gets typeset at the bottom of a +% page. The star is not needed because for this environment +% the optional first argument is always interpreted as the +% indented lines number \emph{correction}; nevertheless if users +% specify the optional star, as they are used to with the other +% environments, such star produces a visible warning message +% that reminds the user about its uselessness. +% +% It is true that some of the input parameters specified to the +% opening command of any environment with \LaTeXiii are +% available also to the closing commands; see the last paragraph +% of section~2 in the \pack{xparse} documentation. +%^^A +% But the following definition uses the separate opening and +% closing macros of the \Env{wrapfloat} environment; such +% procedure breaks this second availability of the input +% parameters, therefore it is necessary to save them into local +% macros or count registers (remember that assignments to \TeX +% count registers are \emph{local}, while assignment to \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@box} box register has been allocated at the code +% beginning; remember that \LaTeXiii registers of any kind are +% not limited in number as they were some years ago with +% \LaTeXe. % -% The last opening commands are conceived to box the object to be -% wrapped, typeset within a coloured box with the default of +% The last opening commands are conceived to box the object to +% be wrapped, typeset within a coloured box with the default of % specified width; compared to version~4, these new versions~5 -% and~6 do not use anymore the functionalities provided by package -% \pack{tcolorbox}; instead they use the \pack{curve2e} package -% functionalities to draw similar framed and shaded boxes; this -% implies much less memory used by the almost unlimited, -% but unused, functionalities of the \pack{tikz} package on which -% \pack{tcolorbox} relies. Notice that the plain \Env{picture} -% environment, extended with the \pack{pict2e} package, can draw -% “ovals”, that is rectangles with rounded corners, but, as far as -% we know, they have the frame but cannot be filled. -% -% Notice the \Env{wraptext} has two or three definitions depending on the -% logical switches \texttt{WFnew} and \texttt{WFfive}; if one of these -% switches is \texttt{true} the definitions apply to either version~5 -% or~6 of this package; otherwise the last definition is a fall back to -% the functionality and the syntax of the previous version~4 of this -% package; in this case, in spite of the fact the the previous version -% used package \pack{tcolorbox}, the new code relies on the -% \pack{curve2e} functionalities in oder to get the same results -% without using the memory heavy \pack{tcolorbox} package. -% -% With version 6.0, the frame that surrounds the wrapped text +% to~7 do not use anymore the functionalities provided by +% package \pack{tcolorbox}; instead they use the \pack{pic2e} +% package functionalities to draw similar framed and shaded +% boxes; this implies much less memory used by the almost +% unlimited, but unused, functionalities of the \pack{tikz} +% package on which \pack{tcolorbox} relies. Notice that the +% plain \Env{picture} environment, extended with the +% \pack{pict2e} package, can draw “ovals”, that is rectangles +% with rounded corners, but, as far as we know, they have the +% frame but cannot be colour filled. +% +% Notice the \Env{wraptext} has three definitions +% depending on the logical switches \texttt{WFnew}, +% \texttt{WFfive}; if one of these switches is \texttt{true} the +% definitions apply to either version~5 or versions~6 to~7 of +% this package; otherwise the last definition is a fall back to +% the functionality and the syntax of the previous version~4 of +% this package; in this case, in spite of the fact that the +% previous version used package \pack{tcolorbox}, the new code +% relies on the \pack{pict2e} functionalities in oder to get the +% same results without using the memory heavy \pack{tcolorbox} +% package. +% +% With version 7, the frame that surrounds the wrapped text % has the desired rounded corners; it is possible to easily % specify the background and the frame colours, that by default -% are maintained to light grey and almost black respectively; this -% flexibility allows to set also the frame thickness and the -% separation width of the frame from its contents; by default -% they are~1pt for the frame thickness, and~1ex for the separation -% width, that changes with the font size. -% The number of indented lines is computed by means of the +% are maintained to light grey and almost black respectively; +% this flexibility allows to set also the frame thickness and +% the gap width between the frame and its contents; by +% default they are~1pt for the frame thickness, and~1ex for the +% gap width, that changes with the font size. +% +% The number of indented lines is computed by means of the % \cs{fpeval} \LaTeXiii function; among the operands of this % function there is the number \texttt{2} used to take into % account the vertical space above and below the framed box. % 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 its 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. -% -% Notice that the syntax of the new \Env{wraptext} environment is -% absolutely identical to that of the other two wrapping environments -% in terms of \meta{line number correction}, mandatory \meta{location}, -% optional \meta{overhang} and braced optional \meta{width}. See below -% for the very different syntax of the fall back version~4 opening -% \Env{wraptext} statement; they become almost identical when no -% optional parameters are specified, the only little difference being -% that the \meta{location} argument is mandatory for versions~5 and~6, +% a better choice. By increasing the corner arc radius it is +% possible to modify the gap width. +% +% Eventually the \Env{wrapfloat} opening statement is created by +% expanding the whole line complete of its 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. +% +% Notice that the syntax of the new \Env{wraptext} environment +% is absolutely identical to that of the other two wrapping +% environments in terms of \meta{line number correction}, +% mandatory \meta{location}, optional \meta{overhang} and braced +% optional \meta{width}. See below for the very different syntax +% of the fall back version~4 opening \Env{wraptext} statement; +% they become almost identical when no optional parameters are +% specified, the only little difference being that the +% \meta{location} argument is mandatory for versions~5 to~7, % while it is optional for version~4. % \begin{macrocode} -\ifboolexpr{bool{WFnew} or bool{WFfive}}{% definition for versions 5 and 6 +\ifboolexpr{bool{WFnew} or bool{WFfive}}{% definition for versions 5 to 7 \NewDocumentEnvironment{wraptext}{O{0} m O{0pt} G{0.5\columnwidth} s}{% \insertwidth=#4\WFscalewidth \def\textplacement{#2}% @@ -1403,47 +1614,49 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} }{\endwrapfloat\ignorespaces}% % \end{macrocode} % -% For the fallback to version~4 definition of this \Env{wraptext} -% environment we have to start with the old list of specifically -% delimited optional arguments. We remember that this opening statement -% receives in order a bracket delimited optional \meta{location} -% parameter, a vertical bar delimited optional \meta{width}, an angle -% bracket delimited optional \meta{line number correction}, a round -% parenthesis delimited optional \meta{caption label}; the different -% delimiters allow to specify any optional argument without regard with -% the other ones, provided they are in the same logical order when more +% For the fallback to version~4 definition of this +% \Env{wraptext} environment we have to start with the old list +% of specifically delimited optional arguments. We remember that +% this opening statement receives in order a bracket delimited +% optional \meta{location} parameter, a vertical bar delimited +% optional \meta{width}, an angle bracket delimited optional +% \meta{line number correction}, a round parenthesis delimited +% optional \meta{caption label}; the different delimiters allow +% to specify any optional argument without regard with the other +% ones, provided they are in the same logical order when more % than one optional argument is specified. % % Notice that the third optional argument contains the -% \meta{line number correction}, therefore the star used with the -% other environments is useless; contrary to versions~5 and~6, if -% an asterisk is indadvertedly specified, it is typeset as the first -% token of the wrapped test. -% -% The text to be wrapped, that forms the body of the environment, -% must be first boxed into a correct width vertical box; this is -% easily obtained with a \Env{minipage} environment, of which the -% internal commands are used; this insures that the text is -% typeset with the correct measure; with the closing commands -% this boxed text is fed to the \cs{framedbox} command, in -% order to be framed and assigned a default background color. +% \meta{line number correction}, therefore the star used with +% the other environments is useless; contrary to versions~5 +% to~7, if an asterisk is indadvertedly specified, it is typeset +% as the first token of the wrapped test. +% +% The text to be wrapped, that forms the body of the +% environment, must first be boxed into a correct width vertical +% box; this is easily obtained with a \Env{minipage} +% environment, of which the internal commands are used; this +% insures that the text is typeset with the correct measure; +% with the closing commands this boxed text is fed to the +% \cs{framedbox} command, in order to be framed and assigned a +% background color. % There is no possibility of specifying the colours unless the % whole \Env{wraptext} environment, preceded by explicit color % settings, is confined within a group delimited, for example, % by the \cs{begingroup} and \cs{endgroup} commands. % \begin{macrocode} -}{% definition for version 4 fall back +}{% definition for version 4 fall back % \NewDocumentEnvironment{wraptext}% - {O{l} D||{0.5\columnwidth} D<>{0} D(){text} }% - {% Open environment + {O{l} D||{0.5\columnwidth} D<>{0} D(){text}}% + {% Open environment \insertwidth=#2 \def\textplacement{#1}% \def\textcorrection{#3}% \def\WF@caption@label{#4}% \setbox0\hbox\bgroup \minipage{\dimexpr\insertwidth-2pt-6ex}% -}{% Close environment +}{% Close environment \endminipage\egroup \begin{lrbox}{\NWF@box}% \framedbox{\box0}{1pt}{1ex}% @@ -1464,12 +1677,12 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % -% 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@wr} macro. +% 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@wr} macro. % % The closing command of \Env{wrapfloat} performs most of % the work necessary to wrap the box that contains the object @@ -1477,65 +1690,70 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % macros. % % It is possible to 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@box}. After executing -% \cs{WF@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. -% -% Now comes the new actual 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 used the -% \LaTeXe language, had to split it 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 text, or what -% else, so that the inserted box is preceded and followed by -% 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 +% parameter is specified; otherwise it closes the \cs{hbox} that +% was used; then it closes the main vertical box \cs{WF@box}. +% After executing \cs{WF@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. +% +% Now comes the new actual 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 used the \LaTeXe language, had to +% split it 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 text, or +% what else, so that the inserted box is preceded and followed +% by 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@wr} responsible of taking care of % the list of arguments and see if a star has been specified but % is still in the input flow. % -% 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 -% necessary that there exists a floating environment with the same -% name of the wrapped object, even when its wrapping environment -% is not specified with a floating \meta{location} argument. +% 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 necessary that there exists a floating +% environment with the same name of the wrapped object, even +% when its wrapping environment is not specified with a floating +% \meta{location} argument. % % \begin{macrocode} \NewDocumentEnvironment{wrapfloat}{m o m o G{\z@}}% -{% open environment code +{% open environment code \def\@captype{#1}\WF@wr[#2]{#3}[#4]{#5}% -}{% close environment code +}{% close environment code \ifdim\hsize>\z@ - \par\hrule\@width\hsize\@height\z@ % force width with invisible rule + \par\hrule\@width\hsize\@height\z@ % force width with +% invisible rule \else -% \unskip % is the \unskip necessary? - \egroup \box\z@ % or close hbox + + \egroup \box\z@ % or close hbox \fi - \egroup % close the vtop box; its width now is known - \WF@floatstyhook % support for float.sty + \egroup % close the vtop box; its width now is known + \WF@floatstyhook % support for float.sty \def\width{\wd\WF@box}% \setlength\wrapoverhang{\WF@ovh}% - \xdef\WF@ovh{\the\wrapoverhang}% save until wrapping - \ifdim\ht\WF@box>\topskip \ht\WF@box\z@ \fi% too high, set flag - \ifdim\ht\WF@box<.5\p@ % too short, move up + \xdef\WF@ovh{\the\wrapoverhang}% save until wrapping + \ifdim\ht\WF@box>\topskip \ht\WF@box\z@ \fi% too high, +% set flag + \ifdim\ht\WF@box<.5\p@ % too short, move up \global\setbox\WF@box\vtop{\vskip-1.4ex\unvbox\WF@box}% \fi - \global\WF@size=% compute total box hight with \fpeval + \global\WF@size=% compute total box hight with \fpeval \fpeval{\ht\WF@box+\dp\WF@box+1.5\baselineskip+\tw@\intextsep}\p@ - \aftergroup\WF@startfloating % use even when not really floating + \aftergroup\WF@startfloating% use even when not floating \unless\ifWF@float \ifhmode {\unskip \parfillskip\z@skip \par \vskip-\parskip}% @@ -1556,38 +1774,41 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % 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@wli}, but if this argument is not specified, -% \cs{WF@wli} is assigned the value zero. The same happens for the -% \meta{overhang} optional argument. -% -% After these adjustments, the software computes the box total height -% plus some fixed amounts needed mostly to set the wrapped material -% below the wrapping text first line. Here is where the \LaTeXiii -% \cs{fpeval} computing function comes into play so as to assign such -% height to \cs{WF@size}. Afterwards 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 +% 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@wli}, but if this +% argument is not specified, \cs{WF@wli} is assigned the value +% zero. The same happens for the \meta{overhang} optional +% argument. +% +% After these adjustments, the software computes the box total +% height plus some fixed amounts needed mostly to set the +% wrapped material below the wrapping text first line. Here is +% where the \LaTeXiii \cs{fpeval} computing function comes into +% play so as to assign such height to \cs{WF@size}. Afterwards +% 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 flow; notice that the -% \Env{wraptext} environment does not accept the optional star; if the -% user indadvertedly specifies it for this environment, an -% asterisk appears at the beginning of the wrapped text with version~4; -% with versions~5 and~6 the asterisk produces a warning that remind -% users that this environment does not use any optional star. In all -% three versions, in facts, the first optional parameter is always -% interpreted as the \meta{line number correction}. +% \Env{wraptext} environment does not accept the optional star; +% if the user indadvertedly specifies it for this environment, +% a star appears at the beginning of the wrapped text with +% version~4; with versions~5 to~7 the asterisk produces a +% warning that remind users that this environment does not use +% any optional star. In all three versions, in facts, the first +% optional parameter is always interpreted as the \meta{line +% number correction}. % % The braced \meta{width} fourth parameter (actually a -% \textit{braced optional 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 box width as the working -% width; of course this works only with \Env{wrapfigure} and -% \Env{wraptable}, because what is being wrapped has its own natural -% width; with text the width is the default setting made -% with the \emph{braced optional argument} described with the -% \texttt{G} descriptor. +% \textit{braced optional 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 box width as +% the working width; of course this works only with +% \Env{wrapfigure} and \Env{wraptable}, because what is being +% wrapped has its own natural width; with text the width is the +% default setting made with the \emph{braced optional argument} +% described with the \texttt{G} descriptor. % \begin{macrocode} \NewDocumentCommand\WF@wr{o m o m s}{% \xdef\WF@wfname{wrap\@captype\space}% @@ -1609,15 +1830,16 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} \WF@conflict \fi \fi - \IfValueTF{#1}% save optional line number or correction + \IfValueTF{#1}% save optional line number or correction {\gdef\WF@wli{#1}}% {\gdef\WF@wli{0}}% % - \IfValueTF{#3}% save optional overhang + \IfValueTF{#3}% save optional overhang {\gdef\WF@ovh{#3}}% {\gdef\WF@ovh{\z@}}% % - \global\setbox\WF@box\vtop\bgroup \setlength\hsize{#4}% set width + \global\setbox\WF@box\vtop\bgroup + \setlength\hsize{#4}% set width \ifdim\hsize>\z@ \@parboxrestore \else @@ -1626,7 +1848,7 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} \let\caption\wf@caption \ignorespaces \fi - \IfBooleanTF{#5}% if the asterisk is present set the numerical switch + \IfBooleanTF{#5}% if star, set the numerical switch {\global\WF@correctlines@switch=\@ne}% {\global\WF@correctlines@switch=\z@}% @@ -1634,36 +1856,39 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % % At this point the main box \cs{WF@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. +% 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@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@box} and \cs{NWF@box}. +% framed text; the name of this second box must be different +% from \cs{WF@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@box} and +% \cs{NWF@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@caption} is actually redefined -% if the \meta{width} parameter has been specified or has been computed. +% used by Arseneau to redefine one of the two macros according +% to certain conditions. Here \cs{wf@caption} is actually +% redefined if the \meta{width} parameter has been specified or +% has been computed. % \begin{macrocode} -\def\wf@caption{\relax% redefine \wf@caption in case \hsize is zero +\def\wf@caption{\relax% redefine \wf@caption if \hsize is zero \ifdim\hsize>\z@ \let\caption\wf@@caption \else - \unskip \egroup \hsize\wd\z@ \@parboxrestore \box\z@% empty \box0 + \unskip \egroup \hsize\wd\z@ + \@parboxrestore \box\z@% export \box0 \fi \caption } % \end{macrocode} % -% One of the following unusual macros was introduced by Arseneau -% to deal with paragraph parameters and possibly to float the -% object to be wrapped. +% One of the following unusual macros were introduced by +% Arseneau to deal with paragraph parameters and possibly to +% float the object to be wrapped. % \begin{macrocode} \def\WF@startfloating{% \WF@everypar\expandafter{\the\everypar}\let\everypar\WF@everypar @@ -1683,8 +1908,8 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} \ifdim\hangindent=\z@ \setbox\z@\lastbox \begingroup \@@par \WF@@everypar{}\WF@putfigmaybe - \endgroup % after this group start wrapping - \unless\ifvoid\z@ % replace indentation + \endgroup % after this group start wrapping + \unless\ifvoid\z@ % replace indentation \box\z@ \fi \else @@ -1700,22 +1925,24 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % -% On the contrary if there is enough space or if the wrapped object -% cannot float, it gets output here. +% On the contrary if there is enough space or if the wrapped +% object cannot float, it gets output here. % \begin{macrocode} \def\WF@putfigmaybe{% \ifinner \vskip-\parskip \global\WF@floatfalse - \let\pagetotal\maxdimen % kludge flag for "not top of page" -\else % outer page - {\advance\parskip\@tempdima\vskip-\parskip}% back up to base line - \penalty\interlinepenalty % update page parameters - \@tempdimb\dimexpr\pagegoal - \pagetotal \relax% room left on page - \ifdim \@tempdimb<\z@ % page already full + \let\pagetotal\maxdimen % kludge flag for "not top of page" +\else % outer page + {\advance\parskip\@tempdima\vskip-\parskip}% back up to base +% line + \penalty\interlinepenalty % update page parameters + \@tempdimb\dimexpr\pagegoal - \pagetotal \relax% room left +% on page + \ifdim \@tempdimb<\z@ % page already full \global\WF@floatfalse \unless\ifdim-\@tempdimb>\pageshrink \pagebreak \fi \else - \ifdim\WF@size>\@tempdimb% box too high does not fit in \@tempdimb + \ifdim\WF@size>\@tempdimb% box does not fit in \@tempdimb \ifWF@float \dimen@ 0.5\baselineskip \else @@ -1725,94 +1952,98 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} \ifdim\pagefilstretch>\z@ \dimen@\@tempdimb \fi \ifdim\pagefillstretch>\z@ \dimen@\@tempdimb \fi \advance\dimen@ 0.5\baselineskip - \ifdim\dimen@>\@tempdimb % stretch page contents + \ifdim\dimen@>\@tempdimb % stretch page contents \global\WF@floatfalse \pagebreak \fi - \else % box fits in \@tempdimb + \else % box fits in \@tempdimb \global\WF@floatfalse \fi \fi - \vskip\@tempdima% return erased page depth + \vskip\@tempdima% return erased page depth \fi \noindent \ifWF@float \WF@fltmes -\else % place insertion here +\else % place insertion here \WF@info{Put \WF@wfname here:}% {\ifodd - \if@twoside\c@page\else\@ne\fi % assign l/r to i/o placement + \if@twoside\c@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@place{\the\lccode\lccode\WF@place}% - }% twice to get only l or r - \hbox to\z@{% llap o rlap depending on l or r; determine effective width + }% twice to get only l or r + \hbox to\z@{% llap o rlap depending on l or r; +% determine effective width \@tempdima\wd\WF@box \@tempdimb\WF@ovh \advance\@tempdima-\@tempdimb \advance\@tempdima\columnsep \@tempdimb\hsize \advance\@tempdimb-\@tempdima \xdef\WF@adjlw{\the\@tempdima}% - \ifnum `l=\WF@place % object on left + \ifnum `l=\WF@place % object on left \hss - \def\@tempa{\kern\columnsep}% take right gap into action - \else % object on right - \@tempdima\z@ % no left indentation + \def\@tempa{\kern\columnsep}% take right gap into action + \else % object on right + \@tempdima\z@ % no left indentation \kern\@tempdimb \kern\columnsep - \def\@tempa{\hss}% object overlaps space to the right + \def\@tempa{\hss}% object overlaps space to the right \fi \ifdim\@tempdimb<\hsize - \xdef\WF@wrapil{\the\@tempdima \the\@tempdimb}% indent.n and length + \xdef\WF@wrapil{\the\@tempdima \the\@tempdimb}% +% indent.number and length \xdef\WF@adjtlm{\the\@tempdima}% \else \xdef\WF@wrapil{\z@ \the\hsize}% \xdef\WF@adjlw{\z@}\xdef\WF@adjtlm{\z@}% \fi - \ifdim\pagetotal=\z@ % put object at top of page \thepage + \ifdim\pagetotal=\z@ % put object at top of page \thepage \global\advance\WF@size-\intextsep - \else % put object in middle of the page + \else % put object in middle of the page \setbox\WF@box\hbox{\lower\intextsep\box\WF@box}% \fi \dp\WF@box\z@ \box\WF@box \@tempa - }% end \hbox to 0pt + }% end \hbox to 0pt \aftergroup\WF@startwrapping \fi } % \end{macrocode} % -% Here comes the very important macro that counts the indented wrapping -% lines, so that wrapping is correct; of course the limitations -% of the \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 counts the lines to be indented by rounding the division -% of the box height by the current base line skip. Notice that -% \texttt{WF@wrappedlines} is the name of a \LaTeX named counter, -% not of a \TeX numeric register; therefore special \LaTeX commands, -% such as \cs{setcounter} 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. +% Here comes the very important macro that counts the indented +% wrapping lines, so that wrapping is correct; of course the +% limitations of the \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 counts the lines to be indented by rounding the +% division of the box height by the current base line base skip. +% Notice that \texttt{WF@wrappedlines} is the name of a \LaTeX +% named counter, not of a \TeX numeric register; therefore +% special \LaTeX commands, such as \cs{setcounter} 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@startwrapping{% - \ifnum\WF@wli=\z@ % no number was specified + \ifnum\WF@wli=\z@ % no number was specified \setcounter{WF@wrappedlines}% {\fpeval{round(\WF@size/\baselineskip,0)}}% \xdef\WF@wli{\value{WF@wrappedlines}}% \else - \ifnum\WF@correctlines@switch>\z@ % line number correction + \ifnum\WF@correctlines@switch>\z@ % line number correction \setcounter{WF@wrappedlines} {\fpeval{round((\WF@size)/\baselineskip,0)+\WF@wli}}% \xdef\WF@wli{\the\c@WF@wrappedlines}% \else - \setcounter{WF@wrappedlines}{\WF@wli}% absolute number of lines + \setcounter{WF@wrappedlines}{\WF@wli}% absolute number +% of lines \stepcounter{WF@wrappedlines}% \fi \fi - \ifnum\c@WF@wrappedlines>\@ne % fine tuning + \ifnum\c@WF@wrappedlines>\@ne % fine tuning \let\parshape\WF@fudgeparshape \let\WF@pspars\@empty \let\WF@@par\par \def\@setpar##1{\def\WF@@par{##1}}\def\par{\@par}\let\@par\WF@mypar \xdef\WF@restoretol{\tolerance\the\tolerance}\tolerance9999\relax @@ -1822,28 +2053,29 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \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. +% 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@wraphand{% for indenting one or more paragraphs +\def\WF@wraphand{% for indenting one or more paragraphs \ifnum\c@WF@wrappedlines<\tw@ \WF@finale - \else \begingroup % create a parshape command + \else \begingroup % create a parshape command \@tempcnta\@ne \let\WF@wrapil\relax \gdef\WF@ps{}% \@whilenum - \@tempcnta<\c@WF@wrappedlines\do{% repeated indentation + \@tempcnta<\c@WF@wrappedlines\do{% repeated indentation \xdef\WF@ps{\WF@ps\WF@wrapil}\advance\@tempcnta\@ne }% \endgroup \ifx\WF@pspars\@empty \@@parshape\c@WF@wrappedlines \WF@ps \WF@noil - \else % use external `parshape' values to modify my parshape + \else %use external `parshape' values to modify my parshape \WF@modps \fi \fi @@ -1851,13 +2083,13 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % -% This macro resets the paragraph properties and terminates the wrapping -% job. +% This macro resets the paragraph properties and terminates the +% wrapping job. % \begin{macrocode} \def\WF@mypar{\relax \WF@@par \ifnum\@@parshape=\z@ - \let\WF@pspars\@empty % reset parshape + \let\WF@pspars\@empty % reset parshape \fi \global\advance\c@WF@wrappedlines-\prevgraf \prevgraf\z@ \ifnum\c@WF@wrappedlines<\tw@ @@ -1870,7 +2102,8 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % These macros modify the paragraph settings. % \begin{macrocode} \def\WF@modps{\begingroup - \afterassignment\@tempdimb \@tempdima\WF@pspars % a=indent.num, b=width + \afterassignment\@tempdimb \@tempdima\WF@pspars% +% a=indent.num; b=width \advance\@tempdima-\WF@adjtlm \advance\@tempdimb\WF@adjlw \let\WF@wrapil\WF@pspars \edef\@tempb{\@@parshape\c@WF@wrappedlines @@ -1900,7 +2133,8 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} \def\WF@parshapeee#1#2{% \begingroup\delimitershortfall#1% - \nulldelimiterspace#2% \advance \nulldelimiterspace by \WF@adjlw + \nulldelimiterspace#2% \advance \nulldelimiterspace by +% \WF@adjlw \edef\@tempa{\def\noexpand\WF@pspars{% \the\delimitershortfall \the\nulldelimiterspace}}% \expandafter\endgroup\@tempa \WF@wraphand @@ -1937,7 +2171,8 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % -% At the very end everything is restored, and the used boxes are emptied. +% At the very end everything is restored, and the used boxes +% are emptied. % \begin{macrocode} \newcommand{\WFclear}{\par \unless\ifvoid\WF@box @@ -1950,10 +2185,11 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \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, -% after execution nothing local to the group remains in memory. +% 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, after execution nothing local to the group remains in +% memory. % \begin{macrocode} \begingroup \toks0={\let\everypar\WF@@everypar @@ -1967,8 +2203,7 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} \def\noexpand\@arrayparboxrestore{\the\toks0 \the\toks1}% \def\noexpand\clearpage {\noexpand\protect\noexpand\WFclear \the\toks2}}% - \expandafter - \endgroup\@tempa + \expandafter\endgroup\@tempa % \end{macrocode} % @@ -1979,8 +2214,8 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % -% This one, instead, issues a warning if a specific name conflicts -% with another. +% This one, instead, issues a warning if a specific name +% conflicts with another. % \begin{macrocode} \def\WF@conflict{\WF@warning {\WF@wfname used inside a conflicting environment}}% @@ -1994,10 +2229,10 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \end{macrocode} % -% And this one is when two wrapping environments are too close to -% one another so that the second one is forced to move. +% And this one is when two wrapping environments are too close +% to one another so that the second one is forced to move. % \begin{macrocode} -\def\WF@fltmes{% message for floats +\def\WF@fltmes{% message for floats \ifWF@float \WF@info{\WF@wfname floats}% \else @@ -2016,65 +2251,71 @@ backgroundcolor, textcolor, fontstyle, radius, insertionwidth} % \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: it suffices to mimic the definitions of environments -% \Env{wrapfigure} or \Env{wraptable}. But as we saw with the -% \Env{wraptext}, the above statement is not always true. -% -% Here there is some Arseneau's code that renders his \pack{wrapfig} -% code compatible with \cs{newfloat} of class \class{memoir}, and -% with \cs{newfloatlist} of package \pack{ccaption}. We keep his code, -% but we did not test it with this package. +% 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: it suffices to mimic the +% definitions of environments \Env{wrapfigure} or +% \Env{wraptable}. But as we saw with the \Env{wraptext}, the +% above statement is not always true. +% +% Here there is some Arseneau's code that renders his +% \pack{wrapfig} code compatible with \cs{newfloat} of class +% \class{memoir}, and with \cs{newfloatlist} of package +% \pack{ccaption}. We keep his code, but we did not test it with +% this package. % \begin{macrocode} \let\WF@floatstyhook\relax -\@ifundefined{newfloat}{}{% \newfloat comes from somewhere besides - % float.sty +\@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@}}% + }% 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 also \newfloat. + }% end memoir support + {}% other origins of \newfloat here? + }{% float.sty handler. Ops: Two versions for +% different versions +% Changing \floatstyle or \restylefloat changes also \newfloat. \@ifundefined{float@restyle}% - {% older float.sty - - \toks@=\expandafter{\restylefloat{##1}% env. might be undefined + {% older float.sty + \toks@=\expandafter{\restylefloat{##1}% env. might be +% undefined \@namedef{wrap#1}{% \def\@captype{#1}\@nameuse{fst@#1}% - \def\WF@floatstyhook{\let\@currbox\WF@box \columnwidth\wd\WF@box + \def\WF@floatstyhook{\let\@currbox\WF@box + \columnwidth\wd\WF@box \global\setbox\WF@box\float@makebox}% \@ifnextchar[\WF@wr{\WF@wr[]}}% \expandafter\let\csname endwrap#1\endcsname \endwrapfigure }% \edef\@tempa{\def\noexpand\restylefloat##1{\the\toks@}}% - }{% newer float.sty: uses \float@restyle, and \float@makebox -% takes width arg - \toks@=\expandafter{\float@restyle{#1}% env. might be undefined + }{% newer float.sty: uses \float@restyle, and \float@makebox +% takes width arg + \toks@=\expandafter{\float@restyle{#1}% env. might be +% undefined \@namedef{wrap#1}{\def\@captype{#1}\@nameuse{fst@#1}% \def\WF@floatstyhook{\let\@currbox\WF@box \global\setbox\WF@box\float@makebox{\wd\WF@box}}% \@ifnextchar[\WF@wr{\WF@wr[]}}% - \expandafter\let\csname endwrap#1\endcsname \endwrapfigure + \expandafter\let\csname endwrap#1\endcsname + \endwrapfigure }% \edef\@tempa{\def\noexpand\float@restyle##1{\the\toks@}}% }% - \@tempa % perform redefinitions + \@tempa % perform redefinitions % - }% end float.sty handler -}% end redefinitions of \newfloat + }% end float.sty handler +}% end redefinitions of \newfloat -\ifcsname newfloatlist\endcsname% support ccaption.sty +\ifcsname newfloatlist\endcsname% support ccaption.sty \toks@=\expandafter\expandafter\expandafter {\csname\string\newfloatlist\endcsname [{#1}]{#2}{#3}{#4}{#5}% \@namedef{wrap#2}{\wrapfloat{#2}}% diff --git a/macros/latex/contrib/wrapfig2/wrapfig2.pdf b/macros/latex/contrib/wrapfig2/wrapfig2.pdf index 025536c30f..4b374b9323 100644 Binary files a/macros/latex/contrib/wrapfig2/wrapfig2.pdf and b/macros/latex/contrib/wrapfig2/wrapfig2.pdf differ -- cgit v1.2.3