summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-02-16 21:13:41 +0000
committerKarl Berry <karl@freefriends.org>2022-02-16 21:13:41 +0000
commit690674172d6290861ee9bc5043f6778ebf2418dc (patch)
tree157dafd5cba5bec817f2f8b9341e9f1196c31357 /Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
parent25748faf344e9457fa0898b9b4cd76f0befb6121 (diff)
wrapfig2 (16feb22)
git-svn-id: svn://tug.org/texlive/trunk@62039 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty')
-rw-r--r--Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty168
1 files changed, 108 insertions, 60 deletions
diff --git a/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty b/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
index 0fe642f2490..508e88fc576 100644
--- a/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
+++ b/Master/texmf-dist/tex/latex/wrapfig2/wrapfig2.sty
@@ -12,25 +12,28 @@
%%
\NeedsTeXFormat{LaTeX2e}[2019/01/01]
\ProvidesPackage{wrapfig2}%
- [2022-01-26 v.5.0.7 Wrap text around figures, tables, framed text blocks]
+ [2022-02-16 v.6.0.0 Wrap text around figures, tables, framed text blocks]
\ifcsname c@WF@wrappedlines\endcsname
\PackageError{wrapfig2}{ \MessageBreak
****************************************************\MessageBreak
Package `wrapfig' has already been loaded perhaps \MessageBreak
by other packages, for example caption or subcaption.\MessageBreak
Such packages are incompatible with wrapfig2 \MessageBreak
- Loading `wrapfig2' aborted \MessageBreak
+ Loading of`wrapfig2' is aborted \MessageBreak
****************************************************\MessageBreak
}{You might type X <return> and might get along without\MessageBreak
this package if you don't use the new environment \MessageBreak
- `wraptext'; otherwise you get errors about such \MessageBreak
- environment not being defined; you must kill your job!}
+ `wraptext' and the new commands; otherwise you get \MessageBreak
+ errors about such environment not being defined; \MessageBreak
+ you must kill your job!}
\expandafter\endinput\fi
\def\WF@warning{\PackageWarning{wrapfig2}}
\DeclareOption{verbose}{\def\WF@info{\PackageInfo{wrapfig2}}}
\newif\ifWFnew \let\ifWFnew\iftrue
+\newif\ifWFfive \let\ifWFfive\iffalse
\DeclareOption{WFold}{\let\ifWFnew\iffalse}
+\DeclareOption{WFfive}{\let\ifWFnew\iffalse \let\ifWFfive\iftrue}
\ProcessOptions
\RequirePackage{xparse}
@@ -41,21 +44,22 @@
\@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}%
}
\@ifpackageloaded{curve2e}{}{\RequirePackage{curve2e}}
+\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}}
-\ifWFnew
- \floatstyle{plain}
+\ifboolexpr{ bool{WFfive} or bool{WFnew} }%
+ {\floatstyle{plain}%
\ifcsname chapter\endcsname
- \newfloat{text}{tbp}{lotx}[chapter]
+ \newfloat{text}{tbp}{lotx}[chapter]%
\else
- \newfloat{text}{tbp}{lotx}
+ \newfloat{text}{tbp}{lotx}%
\fi
- \floatname{text}{Text}
+ \floatname{text}{Text}% come personalizzare con le diverse lingue?
\let\WF@text@caption\float@caption
-\fi
+ }{}
\newdimen\wrapoverhang \wrapoverhang\z@
\newdimen\WF@size
-\newcounter{WF@wrappedlines}
+\newcount\c@WF@wrappedlines
\newbox\WF@box
\newbox\NWF@box
\newtoks\WF@everypar
@@ -65,6 +69,7 @@
\let\WF@@everypar\everypar
\newdimen\insertwidth
+\newdimen\radius
\newdimen\WFinsertwidthL
\newdimen\WFinsertwidthH
@@ -74,8 +79,13 @@
\def\SetWFbgd#1{\colorlet{WFbackground}{#1}}
\def\SetWFfrm#1{\colorlet{WFframe}{#1}}
\def\SetWFtxt#1{\colorlet{WFtext}{#1}}
+
\def\WFsplitdimens#1,#2!{\fboxrule=#1\relax\fboxsep=#2\relax}
+\providecommand\setfontsize{}
+\RenewDocumentCommand\setfontsize{O{1.2} m}{%
+ \fontsize{#2}{\fpeval{#1*#2}}\selectfont}
+
\def\WFscalefactor{0.8}%
\newcommand*\WFscalewidth{%
\WFinsertwidthL=\fpeval{\WFscalefactor*0.5\columnwidth}\p@
@@ -89,6 +99,23 @@
\fi
}%
+\DeclareOptionX<wraptext>{scalefactor}[0.8]{\def\WFscalefactor{#1}}
+\DeclareOptionX<wraptext>{fboxrule}[1pt]{\fboxrule=#1}
+\DeclareOptionX<wraptext>{fboxsep}[1ex]{\fboxsep=#1}
+\DeclareOptionX<wraptext>{framecolor}[WFframe]{\SetWFfrm{#1}}
+\DeclareOptionX<wraptext>{backgroundcolor}[WFbackground]{\SetWFbgd{#1}}
+\DeclareOptionX<wraptext>{textcolor}[WFtext]{\SetWFtxt{#1}}
+\DeclareOptionX<wraptext>{fontstyle}[\normalfont]{#1}
+\DeclareOptionX<wraptext>{radius}[\fboxsep]{\radius=#1}
+\DeclareOptionX<wraptext>{insertionwidth}[0.5\columnwidth]{\insertwidth=#1}
+
+\DeclareOptionX*{\PackageWarning{wrapfig2}{`\CurrentOption' ignored}}
+
+\ExecuteOptionsX<wraptext>{scalefactor, fboxrule, fboxsep, framecolor,
+backgroundcolor, textcolor, fontstyle, radius, insertionwidth}
+
+\ProcessOptionsX*
+
\NewDocumentEnvironment{wrapfigure}{o m o G{0pt}}%
{\wrapfloat{figure}[#1]{#2}[#3]{#4}}%
{\endwrapfloat}
@@ -97,40 +124,61 @@
{\wrapfloat{table}[#1]{#2}[#3]{#4}}%
{\endwrapfloat}
+\ifbool{WFnew}{%
+\NewDocumentCommand\includeframedtext{O{\insertwidth} m O{} o}{\bgroup%
+ \ExecuteOptionsX<wraptext>{#3}% executes possible key=value options
+ \insertwidth=#1\WFscalewidth
+ \framedbox{#2}{\fboxrule}{\fboxsep}[\radius]\egroup}
+}{}
+
+\ifbool{WFfive}{%
\NewDocumentCommand\includeframedtext{O{\insertwidth} m O{1pt,1ex} o}%
-{\bgroup \WFsplitdimens #3!%
-\insertwidth=#1\relax
-\IfNoValueTF{#4}%
- {\framedbox{#2}{\fboxrule}{\fboxsep}}%
- {\framedbox{#2}{\fboxrule}{\fboxsep}[#4]}%
-\egroup}
+{\bgroup
+ \WFsplitdimens #3!\relax
+ \IfNoValueTF{#4}%
+ {\framedbox{#2}{\fboxrule}{\fboxsep}}%
+ {\framedbox{#2}{\fboxrule}{\fboxsep}[#4]}
+\egroup}%
+}{}
\NewDocumentCommand\framedbox{ m m m O{#3}}{\bgroup
\fboxrule=#2\fboxsep=#3\relax
-\setbox0\hbox{\fboxrule=0pt\fboxsep=#3\relax
-\framebox{\parbox{%
- \fpeval{\insertwidth-2\fboxrule-2\fboxsep}pt}{\textcolor{WFtext}{#1}}}}%
-\unitlength=\fpeval{\wd0/100}pt
-\edef\x{100}\edef\y{\fpeval{(\ht0 +\dp0)/\unitlength}}%
-\edef\xc{50}\edef\yc{\fpeval{\y/2}}\edef\R{\fpeval{#4/\unitlength}}%
+\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{%
+
+\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*}%
+\def\CurveStar{\Curve*}% define a macro for adding the asterisk
+
\begin{picture}(\x,\y)(-\xc,-\yc)
-{\color{WFbackground}\expandafter\CurveStar\WFrectangle}%
-{\color{WFframe}\linethickness{#2}\expandafter\Curve\WFrectangle}%
+{\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}
-\ifWFnew
+\ifboolexpr{bool{WFnew} or bool{WFfive}}{% definition for versions 5 and 6
\NewDocumentEnvironment{wraptext}{O{0} m O{0pt} G{0.5\columnwidth}}{%
\insertwidth=#4\WFscalewidth
\def\textplacement{#2}%
@@ -148,27 +196,24 @@
\@dblarg{\@caption\@captype}%
}%
}{\endwrapfloat\ignorespaces}%
-\else %
+}{% definition for version 4 fall back
\NewDocumentEnvironment{wraptext}%
{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}%
-}{\endminipage\egroup
+}{% Close environment
+ \endminipage\egroup
\begin{lrbox}{\NWF@box}%
\framedbox{\box0}{1pt}{1ex}%
\end{lrbox}
- \edef\NWF@wli
- {%
- \fpeval{%
- round((\ht\NWF@box+\dp\NWF@box)/\baselineskip,0)+2+
- \textcorrection
- }%
- }%
+ \edef\NWF@wli]{\fpeval{%
+ round((\ht\NWF@box+\dp\NWF@box)/\baselineskip,0)+2+\textcorrection}%
+ }%
\unles\ifhmode
\leavevmode\noindent
\fi
@@ -178,15 +223,16 @@
\endwrapfloat
\ignorespaces
}
-\fi
-
+}
\NewDocumentEnvironment{wrapfloat}{m o m o G{\z@}}%
- {\def\@captype{#1}\WF@wr[#2]{#3}[#4]{#5}}%
- {\ifdim\hsize>\z@
+{% open environment code
+ \def\@captype{#1}\WF@wr[#2]{#3}[#4]{#5}%
+}{% close environment code
+ \ifdim\hsize>\z@
\par\hrule\@width\hsize\@height\z@ % force width with invisible rule
\else
- \unskip \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
@@ -207,7 +253,7 @@
\fi
\fi
\global\@ignoretrue
- }
+}
\NewDocumentCommand\WF@wr{o m o m s}{%
\xdef\WF@wfname{wrap\@captype\space}%
@@ -247,9 +293,8 @@
\IfBooleanTF{#5}% if the asterisk is present set the numerical switch
{\global\WF@correctlines@switch=\@ne}%
{\global\WF@correctlines@switch=\z@}%
- \global\@ignoretrue
-}
+}
\def\wf@caption{\relax% redefine \wf@caption in case \hsize is zero
\ifdim\hsize>\z@
\let\caption\wf@@caption
@@ -294,26 +339,23 @@
\vskip-\parskip \global\WF@floatfalse
\let\pagetotal\maxdimen % kludge flag for "not top of page"
\else % outer page
- \unless\ifWFnew \@tempdima\pagedepth \fi% save page depth
{\advance\parskip\@tempdima\vskip-\parskip}% back up to base line
\penalty\interlinepenalty % update page parameters
- \@tempdimb\pagegoal \advance\@tempdimb-\pagetotal % room left on page
+ \@tempdimb\dimexpr\pagegoal - \pagetotal \relax% room left on page
\ifdim \@tempdimb<\z@ % page already full
\global\WF@floatfalse
- \unless\ifdim-\@tempdimb>\pageshrink
- \pagebreak
- \fi
+ \unless\ifdim-\@tempdimb>\pageshrink \pagebreak \fi
\else
\ifdim\WF@size>\@tempdimb% box too high does not fit in \@tempdimb
\ifWF@float
- \dimen@.5\baselineskip
+ \dimen@ 0.5\baselineskip
\else
\dimen@ 2\baselineskip
\fi
\ifdim\pagestretch>\dimen@ \dimen@\pagestretch \fi
\ifdim\pagefilstretch>\z@ \dimen@\@tempdimb \fi
\ifdim\pagefillstretch>\z@ \dimen@\@tempdimb \fi
- \advance\dimen@.5\baselineskip
+ \advance\dimen@ 0.5\baselineskip
\ifdim\dimen@>\@tempdimb % stretch page contents
\global\WF@floatfalse \pagebreak
\fi
@@ -321,7 +363,7 @@
\global\WF@floatfalse
\fi
\fi
- \vskip\@tempdima\relax % return erased page depth
+ \vskip\@tempdima% return erased page depth
\fi
\noindent
\ifWF@float
@@ -342,7 +384,7 @@
\ifnum `l=\WF@place % object on left
\hss
\def\@tempa{\kern\columnsep}% take right gap into action
- \else % insert on light
+ \else % object on right
\@tempdima\z@ % no left indentation
\kern\@tempdimb \kern\columnsep
\def\@tempa{\hss}% object overlaps space to the right
@@ -366,6 +408,7 @@
\aftergroup\WF@startwrapping
\fi
}
+
\def\WF@startwrapping{%
\ifnum\WF@wli=\z@ % no number was specified
\setcounter{WF@wrappedlines}%
@@ -375,18 +418,19 @@
\ifnum\WF@correctlines@switch>\z@ % line number correction
\setcounter{WF@wrappedlines}
{\fpeval{round((\WF@size)/\baselineskip,0)+\WF@wli}}%
- \xdef\WF@wli{\value{WF@wrappedlines}}%
+ \xdef\WF@wli{\the\c@WF@wrappedlines}%
\else
\setcounter{WF@wrappedlines}{\WF@wli}% absolute number of lines
- \global\advance\c@WF@wrappedlines\@ne
+ \stepcounter{WF@wrappedlines}%
\fi
\fi
\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
+ \xdef\WF@restoretol{\tolerance\the\tolerance}\tolerance9999\relax
\advance\linewidth-\WF@adjlw \advance\@totalleftmargin\WF@adjtlm
- \fi}
+ \fi
+}
\def\WF@wraphand{% for indenting one or more paragraphs
\ifnum\c@WF@wrappedlines<\tw@
@@ -521,7 +565,9 @@
\let\WF@info\@gobble
\let\WF@floatstyhook\relax
+
\@ifundefined{newfloat}{}{% \newfloat comes from somewhere besides
+ % float.sty
\@ifundefined{restylefloat}{%
\@ifclassloaded{memoir}{%
\toks@=\expandafter\expandafter\expandafter
@@ -534,9 +580,11 @@
}% 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
+
+ \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