From 94c2e367c3690be2a3c715b4577c81200652ad81 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 24 Sep 2019 03:00:39 +0000 Subject: CTAN sync 201909240300 --- macros/latex/contrib/keyfloat/keyfloat.dtx | 332 ++++++++++++++++++++++------- 1 file changed, 250 insertions(+), 82 deletions(-) (limited to 'macros/latex/contrib/keyfloat/keyfloat.dtx') diff --git a/macros/latex/contrib/keyfloat/keyfloat.dtx b/macros/latex/contrib/keyfloat/keyfloat.dtx index 980abeba9c..08acaf860a 100644 --- a/macros/latex/contrib/keyfloat/keyfloat.dtx +++ b/macros/latex/contrib/keyfloat/keyfloat.dtx @@ -17,7 +17,7 @@ % \iffalse %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{keyfloat} -% [2019/03/21 v2.00 Key/value interface for floats and subfloats.] +% [2019/09/23 v2.01 Key/value interface for floats and subfloats.] % %<*driver> \documentclass{ltxdoc} @@ -102,6 +102,8 @@ \usepackage{enumitem} +\usepackage{needspace} + \usepackage{array} \usepackage{booktabs} \usepackage{threeparttable} @@ -177,7 +179,7 @@ position=top, -\usepackage{lipsum} +\usepackage{blindtext} @@ -315,7 +317,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% %<*package> % \fi % -% \CheckSum{1174} +% \CheckSum{1251} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -349,6 +351,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \changes{v2.00}{2019/03/21}{\ 2019/03/21} % \changes{v2.00}{2019/03/17}{Added custom float types.} % \changes{v2.00}{2019/03/17}{Added float authors.} +% \changes{v2.01}{2019/09/23}{2019/09/23} @@ -653,6 +656,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \end{sourceverb} % % +% \needspace{7\baselineskip} % \subsection{Macros and environments} % % \DescribeMacro{\keyfig} * \oarg{loc} \marg{\keyvalsarg} \marg{image filename} \\ @@ -697,26 +701,32 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % % % \DescribeEnv{keyfloats} * \oarg{loc} \marg{num columns} \\ -% A group of figures or tables typeset in rows. May be nested. +% A group of figures or tables typeset in rows. May be nested, [H], [W], or [M]. % See \cref{ex:keyfloats}. % % \DescribeEnv{keysubfigs} * \oarg{loc} \marg{numcols} \marg{keys} \\ % A group of subfigures typeset in rows. -% May not be nested. +% May \emph{not} be nested. May be [H], [W], or [M]. % See \cref{ex:keysubfigs}. % +% \needspace{2\baselineskip} % \DescribeEnv{keysubtabs} * \oarg{loc} \marg{numcols} \marg{keys} \\ % A group of subtables typeset in rows. -% May not be nested. +% May \emph{not} be nested. May be [H], [W], or [M]. % See \cref{ex:keysubtabs}. % +% \needspace{2\baselineskip} % \DescribeEnv{keysubfloats} * \oarg{loc} \marg{float type} \marg{numcols} \marg{keys} \\ % A group of subfloats typeset in rows. -% May not be nested. +% May \emph{not} be nested. May be [H], [W], or [M]. % % \DescribeEnv{keywrap} \marg{width of keyfloat} \marg{keyfloat} \\ -% Displays a keyfloat next to an environment of text. Usable inside a list item, -% where [W] will not work. \meta{keyfloat} may be any of \cs{keyfig}, \env{keyfigure}, +% Displays a keyfloat next to an environment of text. +% Two minipages are used side-by-side, which allows its use inside a list item +% where [W] will not work, but extra empty vertical space +% \watchout[empty space] +% will appear if the keyfloat and the text are of unequal vertical size. +% \meta{keyfloat} may be any of \cs{keyfig}, \env{keyfigure}, % \env{keyfloats}, \env{keysubfigs}, etc., each with its proper arguments. % See \cref{ex:keywrapkeyfig}. % @@ -804,7 +814,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \end{tabular} % \begin{tablenotes} % \item[a:] All the keys in Part I may be used with the -% \env{keysubfigs} and \env{keysubtabs} environments. +% \env{keysubfigs}, \env{keysubtabs}, and \env{keysubfloats} environments. % \item[b:] Artist \Slash author keys: % |al| is an artist's last name, |aul| is an author's last name, etc. % Artists names are printed centered, authors are flush right. @@ -854,7 +864,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \end{tabular} % \begin{tablenotes} % \item[a:] None of the keys in Part II are used in the -% \env{keysubfigs} and \env{keysubtabs} environments. +% \env{keysubfigs}, \env{keysubtabs}, and \env{keysubfloats} environments. % \end{tablenotes} % \end{threeparttable} % \end{keytable} @@ -922,7 +932,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % options for the |wp| key % for floats placed |[W]|. % -% \begin{keytable}{c={Wrapped float placement options},l=tab:wrapplacement} +% \begin{keytable}{c={Key \optn{wp}: Wrapped float placement options},l=tab:wrapplacement} % \index{float>wrapped placement}\index{wrapped float placement} % \centering % \begin{tabular}{ccl} @@ -1256,8 +1266,8 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % It is the user's responsibility to adjust |w|, |h|, or |lw| as necessary. % \index{troubleshooting>image too large} % -% Keyfloats may be positioned [H]: \\ -% \hspace*{2em}|\begin{keyfloats}[H}{2}| \dots +% Keyfloats may be located [H], [M], or located [W] set with half the line width:\\ +% \hspace*{2em}|\begin{keyfloats}[H]{2}| \dots % % Keyfloats may be starred to span both columns in a two-column format: \\ % \hspace*{2em}|\begin{keyfloats}*{2}| \dots @@ -1288,11 +1298,11 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % % \Crefrange{fig:firstsubfig}{fig:fifthsubfig} are in % the \cref{fig:subfigs} \env{keysubfigs} environment. -% The \cs{keysubtabs} environment is similar. +% The \env{keysubtabs} environment is similar. % Mixed types have the type of their container, as shown with \cref{fig:fourthsubfig}. % % Subfloats are associated floats (a, b, \dots) collected together into one common float -% (the enclosing \cs{keysubfigs} or \cs{keysubtabs} environment). +% (the enclosing \env{keysubfigs} or \env{keysubtabs} environment). % The enclosing float can have its own caption (call ``Sub-Figures'' in the example), % which appears in the \acro{LOF}/\acro{LOT}, and also a label. % Each subfloat can have its own caption and label as well, but the @@ -1305,17 +1315,17 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % This avoids miss-labeling as each subfloat must clearly be identified % as a child of its containing float. % -% \cs{keysubfigs} and \cs{keysubtabs} may not be used inside\watchout[nested subfloats] +% \env{keysubfigs} and \env{keysubtabs} may not be used inside\watchout[nested subfloats] % \index{troubleshooting>nested subfloats}\index{subfloat>nested} % the \env{keyfloats} environment, % and cannot be nested inside each other. (No subfloat |12aa|, |12ab|, |12ba|, etc.) % -% The \env{keyfloats} environment may be used inside \cs{keysubfigs} or +% The \env{keyfloats} environment may be used inside \env{keysubfigs} or % \margintag{nested keyfloats}\index{keyfloats>nested} -% \cs{keysubtabs} to gather subfloats together, such as the +% \env{keysubtabs} to gather subfloats together, such as the % three right-most figures in \cref{fig:subfigs}. % -% Subfloats may be located |H|: \\ +% Subfloats may be located [H], [M], or located [W] set with half the line width: \\ % \hspace*{2em}|\begin{keysubfigs}[H]{3}{|key/vals \dots|}| % % Subfloats may be starred to span both columns in a two-column format: \\ @@ -1446,10 +1456,10 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % l=fig:keyfigw,ft,lw=.4,wp=I, % t={.4\cs{linewidth} wide, placed \texttt{I}.} % }{image2} -% \lipsum[1] +% \blindtext % \keytab[W]{c={A \cs{keytab}\texttt{[W]}},l=tab:keytabw,w=.75in, % }{\testtable} -% \lipsum[2] +% \blindtext % \end{dtxexample} % % \begin{dtxexample}[\Cref{fig:keyfigboxw} and the \cs{keyparbox}.] @@ -1458,9 +1468,9 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % l=fig:keyfigboxw,f,lw=.25,wp=I, % t=Text text text text text text text text text % }{The contents.} -% \lipsum[1] +% \blindtext % \keyparbox[W]{w=1in}{A \cs{keyparbox}[W] and some more text.} -% \lipsum[2] +% \blindtext % \end{dtxexample} % % @@ -1470,14 +1480,14 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % l=fig:keyfigurew,f,w=1.5in} % This is a keyfigure. % \end{keyfigure} -% \lipsum[1] +% \blindtext % % \begin{keytable}[W]{c={A \env{keytable}\texttt{[W]}}, % l=tab:keytablew,w=2in,wp=L,tc=Placed \texttt{L} and 2in wide.} % \centering % \testwidetable % \end{keytable} -% \lipsum[2] +% \blindtext % \end{dtxexample} % % @@ -1765,7 +1775,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % % % \section{Code} -% +% ^^A *source % % \subsection{Older packages} % @@ -1907,18 +1917,32 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % These macros are commonly used by others. % \begin{environment}{tablehere} Place a table exactly [H]. +% \changes{v2.01}{2019/09/11}{Fix: Font and color.} +% \changes{v2.01}{2019/09/14}{Improved vertical space.} % \begin{macrocode} \ProvideDocumentEnvironment{tablehere}{} - {\bigbreak\noindent\minipage{\linewidth}\def\@captype{table}} - {\endminipage\bigbreak} +{% + \vskip\intextsep\noindent% + \minipage{\linewidth}% + \def\@captype{table}% + \normalcolor\reset@font\normalsize% +}% +{\endminipage\vskip\intextsep}% % \end{macrocode} % \end{environment} % \begin{environment}{figurehere} Place a figure exactly [H]. +% \changes{v2.01}{2019/09/11}{Fix: Font and color.} +% \changes{v2.01}{2019/09/14}{Improved vertical space.} % \begin{macrocode} \ProvideDocumentEnvironment{figurehere}{} - {\bigbreak\noindent\minipage{\linewidth}\def\@captype{figure}} - {\endminipage\bigbreak} +{% + \vskip\intextsep\noindent% + \minipage{\linewidth}% + \def\@captype{figure}% + \normalcolor\reset@font\normalsize% +}% +{\endminipage\vskip\intextsep}% % \end{macrocode} % \end{environment} @@ -2347,7 +2371,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \setcounter{KFLT@keyfloatdepth}{0} % \end{macrocode} -% \DescribeBoolean{KFLT@inkeysubfloats} Inside a keysubfigs environment? +% \DescribeBoolean{KFLT@inkeysubfloats} Inside a \env{keysubfigs} environment? % \begin{macrocode} \newboolean{KFLT@inkeysubfloats} \setboolean{KFLT@inkeysubfloats}{false} @@ -2876,7 +2900,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % use either \cs{caption} or \cs{captionartist}. % % The fourth argument is |{}| if a regular float, or -% |subgrp| if \cs{keysubfigs} or \cs{keysubtabs}. +% |subgrp| if \env{keysubfigs} or \env{keysubtabs}. % % See Table \ref{tab:captions} for the possible combinations of % the caption-related keys: |c|, |cstar|, and |sc|. @@ -2961,7 +2985,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % Caption-creation logic. % % The argument is |{}| if a regular float, or -% |subgrp| if \cs{keysubfigs} or \cs{keysubtabs}. +% |subgrp| if \env{keysubfigs} or \env{keysubtabs}. % % See Table \ref{tab:captions} for the possible combinations of % the caption-related keys: |c|, |cstar|, and |sc|. @@ -3141,7 +3165,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % Adds optional additional text. % % The argument is |{}| if a regular float, or -% |subgrp| if \cs{keysubfigs} or \cs{keysubtabs}. +% |subgrp| if \env{keysubfigs} or \env{keysubtabs}. % % \changes{v0.11}{2016/12/02}{Improved paragraph handling.} % @@ -3205,7 +3229,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % Adds optional additional text. % % The argument is |{}| if a regular float, or -% |subgrp| if \cs{keysubfigs} or \cs{keysubtabs}. +% |subgrp| if \env{keysubfigs} or \env{keysubtabs}. % % One of two versions is used, depending on whether the \pkg{tocdata} % package is available. @@ -3367,19 +3391,23 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \end{macro} +% \DescribeBoolean{KFLT@captionistop} Saves the value of \cs{caption@position}, +% which may become unreliable if using Komascript and +% \begin{sourceverb} +% \captionsetup[table]{position=above} +% \end{sourceverb} +% +% \begin{macrocode} +\newbool{KFLT@captionistop} +% \end{macrocode} + + % \begin{macro}{\KFLT@LWR@hook@boxouter} Used by \pkg{lwarp}. % \begin{macrocode} \newcommand*{\KFLT@LWR@hook@boxouter}{}% % \end{macrocode} % \end{macro} -% \begin{environment}{KFLT@LWR@hook@boxouter@minipage} Used by \pkg{lwarp}. -% \begin{macrocode} -\newenvironment*{KFLT@LWR@hook@boxouter@minipage}[2][] - {\minipage[#1]{#2}} - {\endminipage} -% \end{macrocode} -% \end{environment} % \begin{environment}{KFLT@boxouter} \marg{star?} \marg{loc} % @@ -3410,7 +3438,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \ifnumgreater{\value{KFLT@keyfloatdepth}}{0}% {% keyfloats \ifbool{KFLT@keywrap}% - {\KFLT@LWR@hook@boxouter@minipage[t]{\KFLT@rowboxwidth}}% + {\minipage[t]{\KFLT@rowboxwidth}}% {\minipage[\KFLT@va]{\KFLT@rowboxwidth}}% \captionsetup*{type=\KFLT@type}% }% keyfloats @@ -3430,7 +3458,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% {% \par\addvspace{\baselineskip}% \noindent% - \KFLT@LWR@hook@boxouter@minipage[t]{\linewidth}% + \minipage[t]{\linewidth}% \captionsetup{type=\KFLT@type}% }% {% not a keywrap @@ -3441,7 +3469,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \begin{macrocode} \ifstrequal{#2}{W}% % \end{macrocode} -% Place [W], so create a wrapfloat from the \pkg{wrapfig} package: +% Place [W], so create a wrapfloat using the \pkg{wrapfig} package: % \begin{macrocode} {% [W] % \end{macrocode} @@ -3451,7 +3479,9 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \begin{macrocode} \KFLT@findwidths% \wrapfloat{\KFLT@type}{\KFLT@wp}% - {\KFLT@imagewidth+2\KFLTlooseframewidth}% + {\KFLT@imagewidth+2\KFLTlooseframewidth}% + \minipage{\KFLT@imagewidth+2\KFLTlooseframewidth}% + \normalcolor\reset@font\normalsize% % \end{macrocode} % Change the interior image to the discovered fixed width. % \begin{macrocode} @@ -3470,9 +3500,8 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \begin{macrocode} {% [M] \KFLT@marginfloat[\KFLT@mo]{\KFLT@type}% - \captionsetup{type=\KFLT@type}% }% [M] - {% not [M} + {% not [M] % \end{macrocode} % % See if the float should be positioned [H]ere: @@ -3480,10 +3509,13 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \ifstrequal{#2}{H}% % \end{macrocode} % Place [H], so create an inline minipage: +% \changes{v2.01}{2019/09/11}{Fix: Font and color.} +% \changes{v2.01}{2019/09/14}{Improved vertical space.} % \begin{macrocode} {% [H] - \par\addvspace{\baselineskip}% + \vskip\intextsep% \noindent\minipage[\KFLT@va]{\linewidth}% + \normalcolor\reset@font\normalsize% \captionsetup{type=\KFLT@type}% }% [H] % \end{macrocode} @@ -3510,8 +3542,10 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \KFLT@findwidths% % \end{macrocode} % Place the caption above the contents depending on \pkg{caption} \optn{position} option: +% \changes{v2.01}{2019/09/11}{Fix: Positions with \brand{Komascript}.} % \begin{macrocode} - \caption@iftop{\KFLT@caption{}}{}% + \caption@iftop{\booltrue{KFLT@captionistop}}{\boolfalse{KFLT@captionistop}}% + \ifbool{KFLT@captionistop}{\KFLT@caption{}}{}% % \end{macrocode} % Typeset the contents: % \begin{macrocode} @@ -3531,8 +3565,9 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \KFLT@addartisttext{}% % \end{macrocode} % Place the caption below the contents depending on \pkg{caption} \optn{position} option: +% \changes{v2.01}{2019/09/11}{Fix: Positions with \brand{Komascript}.} % \begin{macrocode} - \caption@iftop{}{\KFLT@caption{}}% + \ifbool{KFLT@captionistop}{}{\KFLT@caption{}}% % \end{macrocode} % If are inside \env{keysubtabs}, end the subtable: % \begin{macrocode} @@ -3543,6 +3578,8 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% {% not subfloat \ifnumgreater{\value{KFLT@keyfloatdepth}}{0}% keyfloats? {% +% \end{macrocode} +% \begin{macrocode} \endminipage% }% keyfloats {% not keyfloats @@ -3555,7 +3592,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % See if in a \env{keywrap}: % \begin{macrocode} \ifbool{KFLT@keywrap}{% - \endKFLT@LWR@hook@boxouter@minipage% + \endminipage% \par\addvspace{\baselineskip}% }% {% not keywrap @@ -3568,6 +3605,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % Place [W], so close the wrap float: % \begin{macrocode} {% [W] + \endminipage% \endwrapfloat% }% [W] {% not[W] @@ -3577,17 +3615,21 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \begin{macrocode} \ifstrequal{#2}{M}% % \end{macrocode} -% Place [M], so close the marginfloat: +% [M], so close the marginfloat: % \changes{v2.00}{2019/03/18}{Added custom float types.} % \begin{macrocode} {% [M] \endKFLT@marginfloat% }% [M] +% \end{macrocode} +% [H] or float: +% \changes{v2.01}{2019/09/14}{Improved vertical space.} +% \begin{macrocode} {% not [M] \ifstrequal{#2}{H}% {% \endminipage% [H] - \par\addvspace{\baselineskip}% + \vskip\intextsep% }% {% not [H] \IfBooleanTF{#1}% starred float? @@ -3989,7 +4031,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % inside the \env{keyfloats} environment. % % Note that |lw| linewidth keys may need to be adjusted inside -% a \env{keyfloats}, \cs{keysubfigs}, or \cs{keysubtabs}, since +% a \env{keyfloats}, \env{keysubfigs}, or \env{keysubtabs}, since % \cs{linewidth} changes depending on the number of columns. % Likewise, manually-selected |w| width and |h| tags may need to be % adjusted to prevent overflow. @@ -4023,6 +4065,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% {% [H] or nested % \end{macrocode} % If nested, use different spacing as was computed in the outer nesting level: +% \changes{v2.01}{2019/09/14}{Improved vertical space.} % \begin{macrocode} \ifboolexpr{% test {\ifnumgreater{\value{KFLT@keyfloatdepth}}{1}} or @@ -4032,10 +4075,15 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \KFLT@LWR@hook@keyfloatsminipage{\KFLT@rowboxwidth}% }% {% - \bigbreak% + \vskip\intextsep% \KFLT@LWR@hook@keyfloatsminipage{\linewidth}% }% % \end{macrocode} +% Reset font and color: +% \changes{v2.01}{2019/09/11}{Fix: Font and color.} +% \begin{macrocode} + \normalcolor\reset@font\normalsize% +% \end{macrocode} % If inside subfloats, generate subfigures by default: % \begin{macrocode} \ifbool{KFLT@inkeysubfloats}% @@ -4043,13 +4091,38 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% {\captionsetup*{type=figure}}% }% [H] or nested % \end{macrocode} -% Isn't [H] or nested, so create a figure: +% Isn't [H] or nested +% \begin{macrocode} + {% See if [W]: + \ifstrequal{#2}{W} + {% [W]: +% \end{macrocode} +% [W]: +% \changes{v2.01}{2019/09/16}{Added \env{keyfloats} [W].} % \begin{macrocode} - {% figure - \IfBooleanTF{#1}% starred figure, two-col figure in a two-col format - {\begin{figure*}[#2]}% - {\begin{figure}[#2]}% - }% figure + \wrapfloat{figure}{O}{.5\linewidth}% + \minipage{\linewidth}% + \normalcolor\reset@font\normalsize% + }% + {% not [H]: + \ifstrequal{#2}{M}% + {% [M]: +% \end{macrocode} +% [M]: +% \changes{v2.01}{2019/09/16}{Added \env{keyfloats} [M].} +% \begin{macrocode} + \KFLT@marginfloat{figure}% + }% +% \end{macrocode} +% A normal figure: +% \begin{macrocode} + {% figure + \IfBooleanTF{#1}% starred figure, two-col figure in a two-col format + {\begin{figure*}[#2]}% + {\begin{figure}[#2]}% + }% figure + }% not [H] + }% % \end{macrocode} % Compute the width of each entry: % \begin{macrocode} @@ -4093,22 +4166,47 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \endKFLT@LWR@hook@keyfloatsminipage% % \end{minipage}% % \end{macrocode} -% Spacing if nested: +% Spacing if nested or not: +% \changes{v2.01}{2019/09/14}{Improved vertical space.} % \begin{macrocode} \ifboolexpr{ test {\ifnumgreater{\value{KFLT@keyfloatdepth}}{0}} or bool {KFLT@keywrap} }% - {}{% - \bigbreak% + {}{% not nested + \vskip\intextsep% }% }% was [H], etc. % \end{macrocode} -% Was not [H], so close a figure: +% Not [H]: % \begin{macrocode} {% not [H], etc. - \IfBooleanTF{#1}% starred figure? - {\end{figure*}}{\end{figure}}% + \ifstrequal{#2}{W}% + {% [W]: +% \end{macrocode} +% [W]: +% \changes{v2.01}{2019/09/16}{Added \env{keyfloats} [W].} +% \begin{macrocode} + \endminipage% + \endwrapfloat% + }% + {% + \ifstrequal{#2}{M}% + {% [M]: +% \end{macrocode} +% [M]: +% \changes{v2.01}{2019/09/16}{Added \env{keyfloats} [M].} +% \begin{macrocode} + \endKFLT@marginfloat% + }% + {% figure +% \end{macrocode} +% A figure: +% \begin{macrocode} + \IfBooleanTF{#1}% starred figure? + {\end{figure*}}{\end{figure}}% + }% + }% }% not [H], etc. % \end{macrocode} % Unnest the environment: @@ -4160,6 +4258,18 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \end{macro} +% \DescribeBoolean{KFLT@subcaptionistop} Saves the value of \cs{caption@position}, +% which may become unreliable if using Komascript and +% \begin{sourceverb} +% \captionsetup[table]{position=above} +% \end{sourceverb} +% +% \begin{macrocode} +\newbool{KFLT@subcaptionistop} +% \end{macrocode} + + + % \begin{macro}{\KFLT@subfloats} \marg{starred?} \marg{loc} \marg{cols} \marg{\keyvalsarg} % % \changes{v0.13}{2017/01/16}{Fix: Subfloat type selection.} @@ -4188,21 +4298,51 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% {\setlength{\KFLT@rowboxwidth}{.9\linewidth/\real{#3}}}% % \end{macrocode} % If [H], or in a \env{keywrap}, create an inline minipage: +% \changes{v2.01}{2019/09/11}{Fix: Font and color.} +% \changes{v2.01}{2019/09/14}{Improved vertical space.} % \begin{macrocode} \ifboolexpr{% test {\ifstrequal{#2}{H}} or bool {KFLT@keywrap} }% {% - \bigbreak\noindent\begin{minipage}{\linewidth}% + \vskip\intextsep\noindent\begin{minipage}{\linewidth}% + \normalcolor\reset@font\normalsize% }% % \end{macrocode} -% Isn't [H], so create a float, possibly starred: +% Not [H]: % \begin{macrocode} {% - \IfBooleanTF{#1}% - {\begin{\KFLT@subgrptype*}[#2]}% - {\begin{\KFLT@subgrptype}[#2]}% + \ifstrequal{#2}{W}% + {% [W] +% \end{macrocode} +% [W]: +% \changes{v2.01}{2019/09/16}{Added \env{keysubfloats} [W].} +% \begin{macrocode} + \wrapfloat{\KFLT@subgrptype}{O}{.5\linewidth}% + \setlength{\KFLT@rowboxwidth}{.5\KFLT@rowboxwidth}% + \minipage{\linewidth}% + \normalcolor\reset@font\normalsize% + }% + {% not [H]: + \ifstrequal{#2}{M}% + {% [M]: +% \end{macrocode} +% [M]: +% \changes{v2.01}{2019/09/16}{Added \env{keysubfloats} [M].} +% \begin{macrocode} + \KFLT@marginfloat{\KFLT@subgrptype}% + \setlength{\KFLT@rowboxwidth}{.9\marginparwidth/\real{#3}}% + }% [M] + {% subfloat +% \end{macrocode} +% A subfloat: +% \begin{macrocode} + \IfBooleanTF{#1}% + {\begin{\KFLT@subgrptype*}[#2]}% + {\begin{\KFLT@subgrptype}[#2]}% + }% + }% not [H] }% % \end{macrocode} % Set the caption type: @@ -4220,8 +4360,10 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \center\unskip% % \end{macrocode} % Place the caption above the contents depending on \pkg{caption} \optn{position} option: +% \changes{v2.01}{2019/09/11}{Fix: Positions with \brand{Komascript}.} % \begin{macrocode} - \caption@iftop{\KFLT@caption{subgrp}}{}% + \caption@iftop{\booltrue{KFLT@subcaptionistop}}{\boolfalse{KFLT@subcaptionistop}}% + \ifbool{KFLT@subcaptionistop}{\KFLT@caption{subgrp}}{}% % \end{macrocode} % Not yet started a row of subfloats. % The use of \cs{defcounter} makes these changes local. @@ -4260,20 +4402,41 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \KFLT@addartisttext{subgrp}% % \end{macrocode} % Place the caption below the contents depending on \pkg{caption} \optn{position} option: +% \changes{v2.01}{2019/09/11}{Fix: Positions with \brand{Komascript}.} % \begin{macrocode} - \caption@iftop{}{\KFLT@caption{subgrp}}% + \ifbool{KFLT@subcaptionistop}{}{\KFLT@caption{subgrp}}% % \end{macrocode} % End the float or minipage: +% \changes{v2.01}{2019/09/14}{Improved vertical space.} % \begin{macrocode} \ifboolexpr{% test {\ifstrequal{#2}{H}} or bool{KFLT@keywrap} }% - {\end{minipage}\bigbreak}% was [H] + {\end{minipage}\vskip\intextsep}% was [H] {% not [H]: - \IfBooleanTF{#1}% starred? - {\end{\KFLT@subgrptype*}}% - {\end{\KFLT@subgrptype}}% + \ifstrequal{#2}{W}% + {% [W] +% \end{macrocode} +% \changes{v2.01}{2019/09/16}{Added \env{keysubfloats} [W].} +% \begin{macrocode} + \endminipage% + \endwrapfloat% + }% + {% not [W]: + \ifstrequal{#2}{M}% + {% [M]: +% \end{macrocode} +% \changes{v2.01}{2019/09/16}{Added \env{keysubfloats} [M].} +% \begin{macrocode} + \endKFLT@marginfloat% + }% [M] + {% subfloat + \IfBooleanTF{#1}% starred? + {\end{\KFLT@subgrptype*}}% + {\end{\KFLT@subgrptype}}% + }% + }% not [W] }% not [H] % \end{macrocode} % Unnest the environment: @@ -4380,6 +4543,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % \subsection{Margin floats} % % \begin{environment}{KFLT@marginfloat} \oarg{offset} \marg{type} +% \changes{v2.01}{2019/09/11}{Fix: Font and color.} % \begin{macrocode} \newsavebox{\KFLT@marginfloatbox} @@ -4392,6 +4556,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \captionsetup{type=#2}% \hbox{}\vspace*{#1}% \noindent% + \normalcolor\reset@font\normalsize% }% start {% end \end{minipage}% @@ -4454,10 +4619,12 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% % % \begin{environment}{keywrap} \marg{width} \marg{keyfloat} % \changes{v0.15}{2017/05/11}{Added.} +% \changes{v2.01}{2019/09/11}{Fix: Font and color.} +% \changes{v2.01}{2019/09/16}{Fix: \cs{noindent}.} % \begin{macrocode} -\DeclareDocumentEnvironment{keywrap}{m +m} +\DeclareDocumentEnvironment{keywrap}{m +m}% {% - \par% + \par\noindent% \setlength{\KFLT@keywrapwidth}{\linewidth}% \addtolength{\KFLT@keywrapwidth}{-#1}% \addtolength{\KFLT@keywrapwidth}{-2em}% @@ -4473,6 +4640,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}% \hfill% \begin{minipage}[t]{#1}% \booltrue{KFLT@keywrap}% + \normalcolor\reset@font\normalsize% #2% \par% \unskip\vspace{\smallskipamount}% -- cgit v1.2.3