From 46d0f1b567232fe2d47924b58b532ce87b671c6e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 12 Oct 2015 22:17:41 +0000 Subject: paracol (13oct15) git-svn-id: svn://tug.org/texlive/trunk@38620 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/paracol/README | 9 +- .../texmf-dist/doc/latex/paracol/paracol-man.pdf | Bin 315571 -> 614626 bytes .../texmf-dist/doc/latex/paracol/paracol-man.tex | 4 +- Master/texmf-dist/source/latex/paracol/impl.dtx | 936 +++++++++++--- Master/texmf-dist/source/latex/paracol/ltfloat.dtx | 1314 -------------------- Master/texmf-dist/source/latex/paracol/man.dtx | 27 +- Master/texmf-dist/source/latex/paracol/paracol.dtx | 73 +- Master/texmf-dist/source/latex/paracol/probs.dtx | 38 +- Master/texmf-dist/source/latex/paracol/ref.dtx | 44 +- Master/texmf-dist/tex/latex/paracol/paracol.sty | 138 +- 10 files changed, 991 insertions(+), 1592 deletions(-) delete mode 100644 Master/texmf-dist/source/latex/paracol/ltfloat.dtx (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/paracol/README b/Master/texmf-dist/doc/latex/paracol/README index 440d6a8ed56..eeab4c20645 100644 --- a/Master/texmf-dist/doc/latex/paracol/README +++ b/Master/texmf-dist/doc/latex/paracol/README @@ -1,4 +1,4 @@ -paracol (v1.31): a multi-column package to typeset columns in "parallel". +paracol (v1.32): a multi-column package to typeset columns in "parallel". === Copyright (C) 2005-2013 Hiroshi Nakashima @@ -102,7 +102,12 @@ you need newvbtm.sty being also available in CTAN. - \backgroundcolor{}{}[] to paint the background of a by (*NEW* for v1.3). -- A few bugs found in v1.22 have been fixed. +- \globalcounter* to make all counters global (*NEW* for v1.32). + +- Compatible with the new implemenatation of LaTeX (2015/01/10 or + later) now (*NEW* for v 1.32). + +- A bug found in v1.31 has been fixed. Enjoy! diff --git a/Master/texmf-dist/doc/latex/paracol/paracol-man.pdf b/Master/texmf-dist/doc/latex/paracol/paracol-man.pdf index 9138f4910fa..292e9f8f89f 100644 Binary files a/Master/texmf-dist/doc/latex/paracol/paracol-man.pdf and b/Master/texmf-dist/doc/latex/paracol/paracol-man.pdf differ diff --git a/Master/texmf-dist/doc/latex/paracol/paracol-man.tex b/Master/texmf-dist/doc/latex/paracol/paracol-man.tex index 088c81f6963..fd8abb5dc5d 100644 --- a/Master/texmf-dist/doc/latex/paracol/paracol-man.tex +++ b/Master/texmf-dist/doc/latex/paracol/paracol-man.tex @@ -1,5 +1,5 @@ %% LaTeX file 'paracol-man'. -%% Copyright (C) 2005-2013 +%% Copyright (C) 2005-2015 %% Hiroshi Nakashima %% (Kyoto University) %% This program can be redistributed and/or modified under the terms @@ -8,7 +8,7 @@ %% version 1 of the License, or any later version. \ProvidesFile{paracol-man.tex} -[2013/10/10 v1.31 ] +[2015/10/10 v1.32 ] \documentclass{ltxdoc}\normalmarginpar \usepackage{color} \usepackage{paracol} diff --git a/Master/texmf-dist/source/latex/paracol/impl.dtx b/Master/texmf-dist/source/latex/paracol/impl.dtx index 06668b8d612..d37e4cec6bb 100644 --- a/Master/texmf-dist/source/latex/paracol/impl.dtx +++ b/Master/texmf-dist/source/latex/paracol/impl.dtx @@ -121,7 +121,7 @@ % is the list of bottom floats inserted in the \ccolpage. % % \item $\Uidx\dl=\!\@deferlist!$ -% is the list of column-wise floats deferred to the next \colpage. +% is the list of \cwise{} floats deferred to the next \colpage. % % \item $\Uidx\tf=\!\pcol@textfloatsep!$ % is the vertical skip used instead of \!\textfloatsep! for top floats in the @@ -224,7 +224,7 @@ % (i.e. \!\c@page!) for the page $p$. % % \item -% Iff $\pp^i(p)\neq\bot$, the page $p$ has page-wise floats or the +% Iff $\pp^i(p)\neq\bot$, the page $p$ has \pwise{} floats or the % single-column {\em\Uidx\preenv} preceeding \beginparacol{} in the % {\em\Uidx\spage} where it resides and spannig all columns. In this case % $\pp^i(p)=i$ represents $\!\insert!{\cdot}i$, often {\em cached} @@ -270,7 +270,7 @@ % cached} in the macro \Midx{\!\pcol@sptextlist!} and is referred to by % \!\pcol@buildcolseprule! to draw \cseprule{} and to paint columns and % \csepgap{} leaving spaces for \mctext{}s. The usage of this element is -% discussed in \secref{sec:imp-ovv-cswap} a littel bit more detailedly. +% discussed in \secref{sec:imp-ovv-cswap} a little bit more detailedly. % % \item % $\pp^m(p)=\Arg{\Uidx\mpb_L^l}\Arg{\mpb_L^r}\Arg{\mpb_R^l}\Arg{\mpb_R^r}$ @@ -299,7 +299,7 @@ % a value based on $b_n$ of one of the element, according to \LaTeX's % setting of marginal note placement. The whole elemnt $\pp^m(p)$ is often % {\em cached} in the macro \Midx{\!\pcol@mparbottom!}. The usage of this -% element is discussed in \secref{sec:imp-ovv-cswap} a littel bit more +% element is discussed in \secref{sec:imp-ovv-cswap} a little bit more % detailedly. % \end{itemize} %  @@ -355,7 +355,7 @@ % Also note that we also keep $\pp(\ptop)$ in \Midx{\!\pcol@currpage!} % which is initialized by \!\pcol@output@start! to let $\pp^i(\ptop)$ have % the \preenv. Then the macro is redefined to have the value representing -% the new page possibly with $\pp^i(\ptop)$ for page-wise floats in +% the new page possibly with $\pp^i(\ptop)$ for \pwise{} floats in % \!\pcol@startpage! by the macro \!\pcol@defcurrpage!. Another % \!\def!inition is done in \!\pcol@output@switch! also with % \!\pcol@defcurrpage! to let $\pp^f(\ptop)$ have \Scfnote{}s built in @@ -915,14 +915,14 @@ % % {\em Page-wise stuff} % \UsageIndex{page-wise stuff} -% spanning all columns, i.e., \spanning{} being \preenv{} or page-wise +% spanning all columns, i.e., \spanning{} being \preenv{} or \pwise{} % floats, \mctext{}s, \scfnote{} footnotes and \postenv{} are always placed % in a left \parapag{}e, while the corresponding regions for them in a right % \parapag{}e are always blank\footnote{ %  % So far. In some future, we could implement a special setting to let % \preenv{}, \postenv{} and \scfnote{} footnotes are split into both -% \parapag{}es, and to make it possible that a page-wise float or a +% \parapag{}es, and to make it possible that a \pwise{} float or a % \mctext{} has its counterpart placed in the corresponding right % \parapag{}e.} %  @@ -1094,7 +1094,7 @@ % \bgr_a^{[c]}=[(x_0-\bge_a^{[c]}(x^-),\;y_0-\bge_a^{[c]}(y^-))\; % (x_1+\bge_a^{[c]}(x^+),\;y_1+\bge_a^{[c]}(y^+))] % $$ -% \begingroup\par\hfuzz0.105pt\noindent +% \begingroup\par\hfuzz0.9pt\noindent % with the optional shifts specified by the first argument of % \!\backgroundcolor! as % \Arg{\hbox{\ttfamily\itshape{a}}\oarg{c}$|(|x^\pm|,|y^\pm|)|$} (for both @@ -1151,7 +1151,7 @@ % On the other hand, the \mirror{}ing of $\bgr_{\{s,S\}}$ is enabled by the % specifier `|b|' of \!\twosided!, together with other regions being top % margin ($t,T$), bottom margin ($b,B$), left margin ($l,L$), right margin -% ($r,R$), page-wise floats ($f,F$) and \scfnote{} footnotes ($n,N$). The +% ($r,R$), \pwise{} floats ($f,F$) and \scfnote{} footnotes ($n,N$). The % geometical specifications $\bgr_a$ for those regions are given as follows, % but the coordinate origin is at the top-left corner of text area (rather % than the leftmost column). @@ -1219,6 +1219,125 @@ % % % +% \subsection{Page-wise Float Placement} +% \label{sec:imp-ovv-float} +% \changes{v1.32-3}{2015/10/10} +% {Add the section ``Page-wise Float Placement'' to discuss the +% page-wise float problem.} +% +% In the release on 2015/01/10, \LaTeX{}'s float placement mechanism was +% drastically changed to avoid {\em out-of-order\/} appearance of \pwise{} +% floats as follows. Since the cause of overtaking of a \pwise{} float by a +% \cwise{} float is that they are in two separated lists \!\@dbldeferlist! +% for the former and \!\@deferlist! for the latter, in the new implemenation +% the two lists are merged to let all floats go to \!\@deferlist!. To +% distinguish \pwise{} and \cwise{} floats in the list, \!\end@dblfloat! +% lets the \pwise{} float processed by the macro have a special depth of +% |1sp|, while depth of \cwise{} floats are 0 since \!\@endfloatbox! add a +% \!\vskip! of 0 at the end of the box of floats. +% +% Then all macros invoked in \!\output!-routine examine the depth of floats +% in the list they are working on against a newly introduced macro +% \!\f@depth! by also newly introduced \!\@testwrongwidth!, so that they +% process only floats of a page/column category specified by \!\f@depth!, +% while those not matching to \!\f@depth! are let go to \!\@deferlist! to +% inhibit succeeding floats of the same type to overtake them. The +% \!\def!inition of \!\f@depth! is done only by modified +% \!\@dblfloatplacement!, always invoked in a group, to let it have |1sp| so +% that float placement macros usually work on \cwise{} ones with the default +% setting of $\!\f@depth!=\!\z@!$ except for special occasions in which the +% placement of \pwise{} floats is tried. +% +% Though the mechanism should work well with {\em ordinary\/} multi-columned +% documents, it is incompatible with \Paracol{} almost inherently. That is, +% in the first place we have to separate float-related lists into the sets +% of them corresponding to columns as we do\footnote{ +%  +% If counters \counter{figure} and \counter{table} are global and we have to +% avoid inter-column overtaking with respect to, for example, the partial +% ordering rooted by the top-left corner, merging \cwise{} lists together +% with the merge of \cs{@deferlist} and \cs{@dbldeferlist} might be a +% solution to let the depth of a \cwise{} float be $c\,\texttt{sp}$ while +% that of \pwise{} is $\C$\,\texttt{sp}. However such implementation is not +% only tough but also doubtful to be worthwhile.}. +%  +% Therefore, it is obviously nonsense to merge the list for \pwise{} floats, +% i.e., \!\@dbldeferlist!, to \!\@deferlist! of a particular column, and +% thus we have to stick with the conventional implementation to process +% \pwise{} and \cwise{} floats separately as follows. +%  +% \begin{enumerate}\def\labelenumi{(\arabic{enumi})} +% \item +% \label{item:ovv-float-end@dblfloat} +% We \!\def!ine our own \!\end@dblfloat! namely \!\pcol@end@dblfloat! +% whose definition is exactly same as the old version of \!\end@dblfloat!, +% and replace the new version with it by \!\let!ting them equivalent in +% \!\pcol@zparacol! by which start \env{paracol} environments. Therefore, +% \pwise{} floats composed in a \env{paracol} environment is processed in +% the traditional way, i.e., being inclueded in \!\@dbldeferlist! rather than +% \!\@deferlist! and having ordinary depth 0. +% +% \item +% \label{item:ovv-float-@dblfloatplacement} +% Each invocation of \!\@dblfloatplacement! in our own \!\output!-routine is +% followed by a \!\let! to nullify the setting of $\!\f@depth!=|1sp|$ done +% by \!\@dblfloatplacement! by doing \!\f@depth!=\!\z@!. By this setting, +% \!\@tryfcolumn! in \!\pcol@startpage! and \!\@makefcolumn! in +% \!\pcol@output@clear! work on their argument \!\@dbldeferlist! in the way +% exactly same as in 2014 or before. +% +% \item +% \label{item:ovv-float-@addtodblcol} +% Among \LaTeX's macros in its \!\output!-routine which we use in our own +% one as well, only \!\@addtodblcol! changed its target from +% \!\@dbldeferlist! to \!\@deferlist!. That is, if the macro fails to put a +% \pwise{} float to the page we just have started by \!\pcol@startpage!, +% the float is added to \!\@deferlist! rather than \!\@dbldeferlist!. +% Therefore, when we apply \!\@sdblcolelt! to the copy of \!\@dbldeferlist! +% to invoke \!\@addtodblcol! for each of its element float, we have to save +% \!\@deferlist! somewhere, to \!\reserved@c! in reality, and clear it prior +% to the application. Then after all elements are processed, we have to let +% \!\@dbldeferlist! have what \!\@deferlist! have, while \!\@deferlist! +% should regain its origial contents from the saved place. A subtle issue +% is that we might work with \LaTeX{} of 2014 or older in which the floats +% are returned to \!\@dbldeferlist!. Therefore to make \Paracol{} +% compatible with both of new and old versions, we have to {\em add} +% \!\@deferlist! to \!\@dbldeferlist! rather than replacing +% \!\@dbldeferlist! with \!\@deferlist!. This addition should work well, +% because we clear both lists before the application of \!\@sdblcolelt! and +% then one of them will have the still-deferred floats after the application +% while the other remains empty. +% +% \item +% \label{item:ovv-float-@output@start} +% We convert \!\@deferlist! to \!\@dbldeferlist! in \!\pcol@output@start! to +% start a \env{paracol} environment, and peforms the reverse operation in +% \!\pcol@output@end! to close the environment. Though it is very unlikely +% (or maybe impossible) that the \!\@deferlist! {\em imported\/} in the +% former operation has \LaTeX's (i.e., not \Paracol's) double-column floats +% of |1sp| deep, we make such floats old-fashioned making their depth 0 so +% that they can be put in a page built in the \env{paracol} environment. On +% the other hand, the latter cannot {\em export\/} a list having floats of +% |1sp| deep because they have been produced in the closing \env{paracol} +% environment or have passed our {\em custom\/} \!\pcol@output@start! when +% they were imported\footnote{ +%  +% Therefore, if one try to {\em smuggle\/} a double-column float of the new +% scheme into a \env{paracol} and to pass it through the environment to +% another double-column world, the float will become a single-column one. +% Even if such guy really exists and complains abount this transformation, +% however, we have good right to say ``don't do that''.}. +% \end{enumerate} +%  +% Note that the operations (1), (2) and (4) are fully compatible with 2014 +% or older version of \LaTeX{}, because with the old version; (1) +% \!\pcol@end@dblfloat! is equivalent to \!\end@dblfloat!; (2) modification +% of \!\f@depth! cannot be seen because it does not exist; and (4) we +% virtually do nothing in the importation. As for (3), we explicitly take +% care of the compatibility as shown above. +% +% +% % \section{Interaction with \TeX{} and \LaTeX{}} % \label{sec:imp-tex} % @@ -1305,7 +1424,7 @@ % \spanning{} including \preenv{} $\pp^i(p)$ (\!\pcol@startpage!, % \!\pcol@output@start!) and \Scfnote{}s $\pp^f(p)$ (\!\pcol@makecol!, % \!\pcol@output@switch!) in pages, \mvlfloat{}s for main vertical lists in -% \sync{}ed pages (\!\pcol@synccolumn!), and page-wise floats deferred +% \sync{}ed pages (\!\pcol@synccolumn!), and \pwise{} floats deferred % from \env{paracol} to \postenv{} (\!\pcol@output@end!). % \end{description} % @@ -1379,6 +1498,7 @@ % following macros mainly for incrementing another register. %  % \begin{quote}\raggedright +% \!\pcol@F@count!, % \!\pcol@output!, % \!\pcol@opcol!, % \!\pcol@setpnoelt!, @@ -1519,6 +1639,11 @@ % In addition, the register is used for the top level definition of % $\!\pcol@op@mcpush!=10000+\mplimit$. % +% \item[\Uidx{\!\@Mii!}] +% is a \!\mathchardef! register to have 10002. It is used in +% \!\pcol@end@dblfloat! to examine if $\!\@floatpenalty!=-10002$ to mean the +% float environment to be closed is in horizontal mode. +% % \item[\Uidx{\!\@Miv!}] % is a \!\mathchardef! register to have 10004. It is used in \!\pcol@output! % to examine if $\!\outputpenalty!=-10004$ for a dummy \!\output! request @@ -1541,6 +1666,12 @@ % when it finds the \env{paracol} environment to start is at the very % beginning of a \env{list}-like environment. % +% \item[\Uidx{\!\@floatpenalty!}] +% is a \!\count! register to have the penalty code -10002 or -10003 given by +% \!\@xfloat! at the beginning of a float environment according to the +% environment is in horizontal or verticalmode respectively. It is +% referred to by \!\pcol@end@dblfloat!. +% % \item[\Uidx{\!\@topnum!}] % is a \!\count! register to have the maximum number of top floats which the % \ccolpage{} can accept further. It is used in \!\pcol@setcurrcol! @@ -1574,7 +1705,7 @@ % \!\pcol@startpage! reload the register from $\pp^p(\ptop{-}1)$ and then % increment it by one usually but two in \npaired{} \parapag{}ing, and % repeat $\pp^p(\ptop)=\page(\ptop)$ and incrementing $\page(p)$ for each -% \fpage{}s of page-wise floats. Reloading $\page(p)$ to the register from +% \fpage{}s of \pwise{} floats. Reloading $\page(p)$ to the register from % $\pp^p(p)$ is also done by \!\pcol@getpelt! for macros using % \!\pcol@getcurrpage!, and by \!\pcol@outputelt!, \!\pcol@sync! and % \!\pcol@makeflushedpage! by \!\pcol@getcurrpinfo!. Then the register is @@ -1620,12 +1751,13 @@ % \npaired{} \parapag{}e. % % The other users are \!\localcounter!\marg{ctr} to check -% $\arg{ctr}\neq\counter{page}$, and \!\pcol@remctrelt! to let +% $\arg{ctr}\neq\counter{page}$, \!\pcol@remctrelt! to let % $|\cl@|{\cdot}\theta=\!\pcol@stepcounter!\Arg{\theta}$ %  % \SpecialArrayIndex{\theta}{\cl@} %  -% unless $\theta=\counter{page}$. +% unless $\theta=\counter{page}$, and \!\pcol@FF! to write it to a log file +% as a part the logging information of memory leak debugging. % % \item[\Uidx{\!\c@footnote!}] % is \LaTeX's counter \Uidx{\counter{footnote}} being a \!\count! register @@ -1663,6 +1795,10 @@ %  % \begin{itemize} % \item +% In \!\pcol@F@count!, it is used to measure the cardinality of +% \!\@freelist!. +% +% \item % In \!\pcol@makecol!, it is used to keep $\page(\ptop)$ gotten by % \!\pcol@getcurrpinfo! until we store it back by \!\pcol@defcurrpage!. % @@ -2106,6 +2242,9 @@ % \!\pcol@makecol!, % \!\pcol@combinefloats!, % \!\pcol@nextpelt!, +% \!\pcol@floatplacement!, +% \!\pcol@startpage!, +% \!\pcol@restartcolumn!, % \!\pcol@outputelt!, % \!\pcol@ioutputelt!, % \!\pcol@buildcolseprule!, @@ -2116,8 +2255,6 @@ % \!\pcol@bg@paint@i!, % \!\pcol@bg@paintregion!, % \!\pcol@output@start!, -% \!\pcol@floatplacement!, -% \!\pcol@restartcolumn!, % \!\pcol@putbackmvl!, % \!\pcol@deferredfootins!, % \!\pcol@addmarginpar!, @@ -2144,6 +2281,7 @@ %  % \begin{quote}\raggedright % \!\pcol@ShowBox!, +% \!\pcol@F@count!, % \!\pcol@makecol!, % \!\pcol@opcol!, % \!\pcol@setpnoelt!, @@ -2749,12 +2887,12 @@ % % \item[\Uidx{\!\dblfloatsep!}] % is an API \!\skip! register to have the vertical skip between adjacent -% page-wise floats, and is used in \!\pcol@startpage! to cancel the skip +% \pwise{} floats, and is used in \!\pcol@startpage! to cancel the skip % below the last float. % % \item[\Uidx{\!\dbltextfloatsep!}] % is an API \!\skip! register to have the vertical skip between the last -% page-wise float and the top of columns, and is used in +% \pwise{} float and the top of columns, and is used in % \!\pcol@startpage! to put the skip. % % \item[\Uidx{\!\@topsep!}] @@ -2884,7 +3022,7 @@ % % \item % \!\pcol@output@end! to let $\!\pcol@rightpage!=\bot$ if -% the last page has nothing other than \spanning{} being page-wise floats +% the last page has nothing other than \spanning{} being \pwise{} floats % and thus we don't have the right \parapag{}e. % % \item @@ -2980,7 +3118,7 @@ % % \item\begin{Sloppy}{2100} % In \!\pcol@cflt! and \!\pcol@startpage!, it has top column-\slash -% page-wise floats combined by the application of +% \pwise{} floats combined by the application of % \!\@comflelt!\slash\!\@comdblflelt! to \!\@toplist!\slash\!\@dbltoplist! % respectively. % \end{Sloppy} @@ -3083,7 +3221,8 @@ % finds that the \!\output! request for a page break outside \env{paracol} % is sneaked into our own \!\output! routine, in order to avoid that % \LaTeX's original \!\output! routine misunderstands it is working on a -% two-columned document. +% two-columned document. The switch is examined by \LaTeX's own macros +% including old \!\end@dblfloat! kept in our own \!\pcol@end@dblfloat!. % % \item[\Uidx{\CSIndex{if@firstcolumn}}] % is a switch to be $\true$ iff the first column is being typeset. Its @@ -3460,13 +3599,13 @@ % \cscan{} when the \sync{}ed \cswitch{} requires explicit page breaks. % % \item[\Uidx{\!\dblfigrule!}] -% is an API macro to draw a horizontal line between the last page-wise +% is an API macro to draw a horizontal line between the last \pwise{} % floats and the main vertical list, or to insert whatever it has between % them. The macro is used in \!\pcol@startpage! to build \spanning{} in % the page $p$ in $\pp^b(p)$. % % \item[\Uidx{\!\topfigrule!}] -% is an API macro to draw a horizontal line between the last column-wise +% is an API macro to draw a horizontal line between the last \cwise{} % top float and the main vertical list, or to insert whatever it has between % them. The macro is used in \!\pcol@cflt! and \!\pcol@synccolumn! to % insert it below the last (real) top float. It is also made \!\let!-equal @@ -3783,7 +3922,9 @@ % \!\aftergroup! with \!\reset@color! invoked in \!\pcol@set@color!, being % the original version of \!\set@color!, and in \!\pcol@zparacol! to make % \!\pcol@bg@paintbox! \!\let!-equal to \!\@gobble! to nullify it if any -% coloring packages have not been loaded. +% coloring packages have not been loaded. In addition, the macros +% \!\pcol@F! and \!\pcol@Fe! for logging are made \!\let!-equial to +% \!\@gobble! at the top level to nullify them. % % \item[\Uidx{$\!\@ifundefined!\arg{cs}\arg{then}\arg{else}$}] % \begin{Hfuzz}{0.8pt}% @@ -3852,8 +3993,9 @@ % \item[\Uidx{$\!\@ifstar!\arg{then}\arg{else}$}] % is an internal macro to do $\arg{then}$ or $\arg{else}$ if the character % following to the macro is `|*|'. It is used in \!\pcol@yparacol!, -% \!\pcol@switchcolumn!, \!\pcol@footnote!, \!\pcol@footnotemark! and -% \!\pcol@footnotetext! to examine if the optional `|*|' is specified. +% \!\globalcounter!, \!\pcol@switchcolumn!, \!\pcol@footnote!, +% \!\pcol@footnotemark! and \!\pcol@footnotetext! to examine if the optional +% `|*|' is specified. % % \item[\Uidx{$\!\@whilesw!\arg{sw}\cs{fi}\arg{body}$}] % is an internal macro to iterate $\arg{body}$ while the switch $\arg{sw}$ @@ -3955,7 +4097,7 @@ % \!\pcol@opcol! for the completed \colpage{}. % % \item -% \!\pcol@startpage! for \fpage{}s and \spanning{} for page-wise top +% \!\pcol@startpage! for \fpage{}s and \spanning{} for \pwise{} top % floats. % % \item @@ -3975,7 +4117,7 @@ % defined by a column whose main vertical list is empty. % % \item -% \!\pcol@output@end! for the page-wise floats in the \lpage{} if the +% \!\pcol@output@end! for the \pwise{} floats in the \lpage{} if the % main vertical list of the page is empty. % \end{itemize} %  @@ -4060,6 +4202,10 @@ % $\cc_c(\vb)$ to \!\@free~list!. % % \item +% \!\pcol@end@dblfloat! to add a \pwise{} float in \!\@currbox! to +% \!\@dbldeferlist!. +% +% \item % $\!\globalcounter!\<\theta\>$ to add a \gcounter{} $\theta$ to $\CG$. % % \item @@ -4109,9 +4255,14 @@ % % \item[\Uidx{$\!\@latex@warning@no@line!\arg{msg}$}] % is an internal macro to report a warning message $\arg{msg}$ without the -% line number in which the cause lies. It is used \!\pcol@output! if +% line number in which the cause lies. It is used in \!\pcol@output! if % a page with floats and very short main vertical list is built. % +% \item[\Uidx{\!\@Esphack!}] +% is an internal macro to put back the horizontal skip and space factor +% saved by \!\@bsphack! at the end of an environment. It is used in +% \!\pcol@end@dblfloat!. +% % \item[\Uidx{\!\reset@font!}] % is an internal macro \!\let!-equal to \!\normalfont! to use a starndard % font. It is used in \!\pcol@fntextbody! for footnote typesetting. @@ -4237,6 +4388,37 @@ % which uses the original version temporarily disabling \!\addcontentsline! % if necessary. % +% \item[\Uidx{\!\end@float!}] +% is an internal macro to close a \cwise{} float environment. It is used in +% \!\pcol@end@dblfloat! (but never invoked because we havd \cs{if@twocolumn} +% true always). +% +% \item[\Uidx{\!\end@dblfloat!}] +% is an internal macro to close a \pwise{} float environment. It is replaced +% with our own \!\pcol@end@dblfloat!. +% +% \item[\Uidx{\!\@endfloatbox!}] +% is an internal macro to close a \!\vbox! for a float. It is used in +% \!\pcol@end@dblfloat!. +% +% \item[\Uidx{\!\@largefloatcheck!}] +% is an internal macro to examine if a float is too large. It is used in +% \!\pcol@end@dblfloat!. +% +% \item[\Uidx{\!\@floatplacement!}] +% is an internal macro for \!\output! routine to reinitialize \cwise{} +% float placement parameters. It is used in our own version of it, +% \!\pcol@floatplacement!. +% +% \item[\Uidx{\!\@dblfloatplacement!}] +% is an internal macro for \!\output! routine to reinitialize \pwise{} +% float placement paramenters. It is used in \!\pcol@startpage! and +% \!\pcol@output@clear! prior to processing \pwise{} floats in +% \!\@dbldeferlist!. As discussed in +% item-(\ref{item:ovv-float-@dblfloatplacement}) of +% Section~\ref{sec:imp-ovv-float}, this macro in 2015 or later version of +% \LaTeX{} lets $\!\f@depth!=|1sp|$. +% % \item[\Uidx{\!\p@footnote!}] % is an internal macro to have the prefix to \!\thefootnote! in the printed % reference of the counter \counter{footnote}. It is used in @@ -4259,12 +4441,24 @@ % \!\pcol@fntextbody!\marg{text} to typeset the footnote $\arg{text}$ with % some other stuff. % +% \item[\Uidx{\!\@emptycol!}] +% is an internal macro for \!\output! routine to put back an empty page to +% the main vertical list. It is used \!\pcol@output! if a page with floats +% and very short main vertical list is built. +% % \item[\Uidx{\!\@specialoutput!}] % is an internal macro for \!\output! routine to process an \!\output! % request made by \LaTeX's original \!\clearpage!, $\!\end!\Arg{float}$ and % \!\marginpar!. It is used in \!\pcol@specialoutput! to process the % request for floats or marginal notes. % +% \item[\Uidx{\!\@opcol!}] +% is an internal macro for \!\output! routine to output a page or to keep +% the first column until the second one is completed. This macro is used in +% \!\pcol@output! to process a sneaked \!\output! request from outside of +% \env{paracol}, and in \!\pcol@output@end! for the case \pwise{} floats +% are left at \Endparacol{} and they are put in \fpage{}s. +% % \item[\Uidx{\!\@makecol!}] % is an internal macro for \!\output! routine to build the ship-out % image of a column in \!\@outputbox! consisting of top floats, main @@ -4285,12 +4479,36 @@ % is used in \!\pcol@return@from@color! to go back to the building process % of the main vertical list as if it were not interrupted. % +% \item[\Uidx{\!\@textbottom!}] +% is an internal macro for \!\output! routine to be put at the bottom of +% \!\@outputbox! in which a \colpage{} is stored, by \!\@makecol!. This +% macro is temporarily re\!\def!ined by \!\pcol@makecol! for a \colpage{} +% having \sync{}ation points so that it has a vertical skip of inifinite +% stretch and shrink to push up/down the stuff below the last \sync{}ation +% point in order to adjust its top to the point. After that, its original +% definition kept in \!\pcol@textbottom! is restored. Another modifiers of +% the macro are as follows; \!\pcol@makenormalcol! to make the macro +% \!\let!-equal to \!\relax! temporarily to avoid the insertion of whatever +% the macro has in \!\@makecol!; and \!\pcol@makeflushedpage! to let the +% macro have \!\vfil! temporarily so that empty columns in a \lpage{} are +% made {\em full size} without underfull. +% +% \item[\Uidx{\!\@outputpage!}] +% is an internal macro for \!\output! routine to output a page kept in +% \!\@outputbox! together with the header and footer. The original +% definition of this macro is saved in \!\pcol@@outputpage! to be used in +% \!\pcol@outputpage@l! and \!\pcol@outputpage@r! being calles of our own +% revised version of \!\@outputpage!. Therefore, any \!\output! request to +% result in page ship-out reaches our own \!\@outputpage! and then \LaTeX's +% one after we perform operations for \parapag{}ing and \bgpaint{} onto the +% ship-out image. +% % \item[\Uidx{\!\@combinefloats!}] % is an internal macro for \!\output! routine to combine top and bottom % floats in \!\@toplist! and \!\@botlist! respectively with \!\@outputbox! % in which the main vertical list and footnotes\footnote{ %  -% In p\LaTeX, footnotes are not in \cs{@outputbox} because of the reveral of +% In p\LaTeX, footnotes are not in \cs{@outputbox} because of the reversal of % footnotes and bottom floats.} %  % have been put by \!\@makecol!, and to have the result in \!\@outputbox! @@ -4325,103 +4543,63 @@ % % \item[\Uidx{$\!\@comflelt!\arg{flt}$}] % is an internal macro for \!\output! routine to put $\arg{flt}$ being a -% column-wise top or bottom float to the tail of \!\@tempboxa! which +% \cwise{} top or bottom float to the tail of \!\@tempboxa! which % finally has all top\slash bottom floats in a column. It is used in % \!\pcol@cflt! to apply it to each element of \!\@toplist!. % -% \item[\Uidx{\!\@textbottom!}] -% is an internal macro for \!\output! routine to be put at the bottom of -% \!\@outputbox! in which a \colpage{} is stored, by \!\@makecol!. This -% macro is temporarily re\!\def!ined by \!\pcol@makecol! for a \colpage{} -% having \sync{}ation points so that it has a vertical skip of inifinite -% stretch and shrink to push up/down the stuff below the last \sync{}ation -% point in order to adjust its top to the point. After that, its original -% definition kept in \!\pcol@textbottom! is restored. Another modifiers of -% the macro are as follows; \!\pcol@makenormalcol! to make the macro -% \!\let!-equal to \!\relax! temporarily to avoid the insertion of whatever -% the macro has in \!\@makecol!; and \!\pcol@makeflushedpage! to let the -% macro have \!\vfil! temporarily so that empty columns in a \lpage{} are -% made {\em full size} without underfull. -% -% \item[\Uidx{\!\@outputpage!}] -% is an internal macro for \!\output! routine to output a page kept in -% \!\@outputbox! together with the header and footer. The original -% definition of this macro is saved in \!\pcol@@outputpage! to be used in -% \!\pcol@outputpage@l! and \!\pcol@outputpage@r! being calles of our own -% revised version of \!\@outputpage!. Therefore, any \!\output! request to -% result in page ship-out reaches our own \!\@outputpage! and then \LaTeX's -% one after we perform operations for \parapag{}ing and \bgpaint{} onto the -% ship-out image. +% \item[\Uidx{$\!\@comdblflelt!\arg{flt}$}] +% is an internal macro for \!\output! routine to put $\arg{flt}$ being a +% \pwise{} float to the tail of \!\@tempboxa! which finally has the +% \spanning{} for \pwise{} floats. It is used in \!\pcol@startpage! to +% apply to each element of \!\@dbltoplist! to have the \spanning. % -% \item[\Uidx{\!\@dblfloatplacement!}] -% is an internal macro for \!\output! routine to reinitialize page-wise -% float placement paramenters. It is used in \!\pcol@startpage! and -% \!\pcol@output@clear! prior to processing page-wise floats in -% \!\@dbldeferlist!. +% \item[\Uidx{\!\@startcolumn!}] +% is an internal macro for \!\output! routine which tries to build a +% \fcolumn{} for the floats in \!\@deferlist! and, if the column +% is not built, tries to move floats to \!\@toplist! and \!\@botlist!. This +% macro is used in \!\pcol@output! to process a sneaked \!\output! request +% from outside of \env{paracol}, and in \!\pcol@output@end! for the case +% \pwise{} floats are left at \Endparacol{} after which they become +% \cwise{} ones. % % \item[\Uidx{$\!\@tryfcolumn!\arg{lst}$}] % is an internal macro for \!\output! routine which examines if a \fcolumn{} % or a \fpage{} can be built with some floats in $\arg{lst}$ and, if so, % builds the page in \!\@outputbox! removing floats put in the page from -% $\arg{lst}$. It is used in \!\pcol@startpage! for page-wise floats in -% \!\@dbldeferlist!, and in \!\pcol@startcolumn! for column-wise floats in +% $\arg{lst}$. It is used in \!\pcol@startpage! for \pwise{} floats in +% \!\@dbldeferlist!, and in \!\pcol@startcolumn! for \cwise{} floats in % $\cc_c(\dl)$. % -% \item[\Uidx{$\!\@sdblcolelt!\arg{flt}$}] -% is an internal macro for \!\output! routine which examines if a -% page-wise float $\arg{flt}$ can be added to \!\@dbltoplist! being the -% list of the floats to be put at the top of a page, and if so, adds -% $\arg{flt}$ to \!\@dbltoplist!, while it is added to \!\@dbldeferlist! -% otherwise. It is used in \!\pcol@startpage! to apply to each element of -% (the copy of) \!\@dbldeferlist!. -% -% \item[\Uidx{$\!\@comdblflelt!\arg{flt}$}] -% is an internal macro for \!\output! routine to put $\arg{flt}$ being a -% page-wise float to the tail of \!\@tempboxa! which finally has the -% \spanning{} for page-wise floats. It is used in \!\pcol@startpage! to -% apply to each element of \!\@dbltoplist! to have the \spanning. -% -% \item[\Uidx{\!\@floatplacement!}] -% is an internal macro for \!\output! routine to reinitialize column-wise -% float placement parameters. It is used in our own version of it, -% \!\pcol@floatplacement!. -% % \item[\Uidx{$\!\@scolelt!\arg{flt}$}] % is an internal macro for \!\output! routine which examines if a -% column-wise float $\arg{flt}$ can be added to \!\@toplist! or +% \cwise{} float $\arg{flt}$ can be added to \!\@toplist! or % \!\@botlist! being the list of the floats to be put at the top or bottom % of a page respectively. Then, if the examination succeeds, $\arg{flt}$ is % added to \!\@toplist! or \!\@botlist!, while it is added to % \!\@deferlist! otherwise. It is used in \!\pcol@trynextcolumn! to % apply to each element of (the copy of) $\cc_c(\dl)$. % +% \item[\Uidx{$\!\@sdblcolelt!\arg{flt}$}] +% is an internal macro for \!\output! routine which examines if a +% \pwise{} float $\arg{flt}$ can be added to \!\@dbltoplist! being the +% list of the floats to be put at the top of a page, and if so, adds +% $\arg{flt}$ to \!\@dbltoplist!, while it is added to \!\@dbldeferlist! or +% \!\@deferlist! depending on \LaTeX's version otherwise as discussed in +% item-\ref{item:ovv-float-@addtodblcol} of Section \ref{sec:imp-ovv-float}. +% It is used in \!\pcol@startpage! to apply to each element of (the copy of) +% \!\@dbldeferlist!. +% +% \item[\Uidx{\!\@addmarginpar!}] +% is an internal macro for \!\output! routine to add a marginal note. Its +% original definition is kept in \!\pcol@@addmarginpar! and used in +% \!\pcol@addmarginpar! being our own \!\@addmarginpar!. +% % \item[\Uidx{$\!\@makefcolumn!\arg{lst}$}] % is an internal macro for \!\output! routine to build a \fcolumn{} with % some floats at the head of a float list $\arg{lst}$ and to remove the % floats from the list. It is used in \!\pcol@flushcolumn! and -% \!\pcol@iflushfloats! for $\cc_c(\dl)$ of column-wise floats, and in -% \!\pcol@output@clear! for \!\@dbldeferlist! of page-wise floats. -% -% \item[\Uidx{\!\@opcol!}] -% is an internal macro for \!\output! routine to output a page or to keep -% the first column until the second one is completed. This macro is used in -% \!\pcol@output! to process a sneaked \!\output! request from outside of -% \env{paracol}, and in \!\pcol@output@end! for the case page-wise floats -% are left at \Endparacol{} and they are put in \fpage{}s. -% -% \item[\Uidx{\!\@startcolumn!}] -% is an internal macro for \!\output! routine which tries to build a -% \fcolumn{} for the floats in \!\@deferlist! and, if the column -% is not built, tries to move floats to \!\@toplist! and \!\@botlist!. This -% macro is used in \!\pcol@output! to process a sneaked \!\output! request -% from outside of \env{paracol}, and in \!\pcol@output@end! for the case -% page-wise floats are left at \Endparacol{} after which they become -% column-wise ones. -% -% \item[\Uidx{\!\@emptycol!}] -% is an internal macro for \!\output! routine to put back an empty page to -% the main vertical list. It is used \!\pcol@output! if a page with floats -% and very short main vertical list is built. +% \!\pcol@iflushfloats! for $\cc_c(\dl)$ of \cwise{} floats, and in +% \!\pcol@output@clear! for \!\@dbldeferlist! of \pwise{} floats. % \end{description} % % @@ -4439,6 +4617,10 @@ %  % \begin{itemize} % \item +% \!\pcol@F@count! \!\def!ines \!\@elt! as a macro to increment +% \!\@tempcnta! by one to measure the cardinality of \!\@freelist!. +% +% \item % \!\pcol@cflt! lets $\!\@elt!=\!\@comflelt!$ for $\cc_c(\tl)$, and then % $\!\@elt!=\!\relax!$ to concatenate \!\@freelist! and $\cc_c(\tl)$. % @@ -4448,8 +4630,7 @@ % \item % \!\pcol@setpnoelt! and \!\pcol@setmpbelt! let $\!\@elt!=\!\relax!$ to add % $\pp(q)$ to $\PP$. It also uses \!\@elt! to \!\def!ine \!\pcol@currpage! -% with -% $\!\@elt! +% with $\!\@elt! % \Arg{\pp^p(q)}\<\pp^i(q)\>\<\pp^f(q)\>\~\Arg{\pp^s(p)}\Arg{\pp^m(p)}$. % % \item @@ -4465,9 +4646,9 @@ % % \item % \!\pcol@startpage! lets $\!\@elt!=\!\@sdblcolelt!$ for (the copy of) -% \!\@dbldeferlist!, $\!\@elt!=\!\@comdblflelt!$ for \!\@dbltoplist!, -% and then $\!\@elt!=\!\relax!$ to concatenate \!\@freelist! and -% \!\@dbltoplist!. +% \!\@dbldeferlist!, and $\!\@elt!=\!\@comdblflelt!$ for \!\@dbltoplist!. It +% also lets $\!\@elt!=\!\relax!$ for the concatenation of \!\@dbldeferlist! +% and \!\@deferlist!, and that of \!\@freelist! and \!\@dbltoplist!. % % \item % \!\pcol@outputcolumns! lets $\!\@elt!=\!\pcol@outputelt!$ with two arguments @@ -4511,10 +4692,11 @@ % $\!\@elt!=\!\pcol@bg@advance!$ to go back to addition. % % \item -% \!\pcol@output@start! \!\edef!inies \!\pcol@bg@textheight! with \!\@elt! -% having height-plus-depth of \preenv{} for \bgpaint{} of it, and -% \!\def!ines $\pp^m(0)$ having one element in $\mpb_L^l$ or $\mpb_L^r$ for -% \!\@mparbottom! in \preenv{}. +% \!\pcol@output@start! lets all floats $f$ imported in \!\@dbldeferlist! +% have depth 0 by \!\def!ining $\!\@elt!\arg{f}$ to do it, \!\edef!ines +% \!\pcol@bg@textheight! with \!\@elt! having height-plus-depth of +% \preenv{} for \bgpaint{} of it, and \!\def!ines $\pp^m(0)$ having one +% element in $\mpb_L^l$ or $\mpb_L^r$ for \!\@mparbottom! in \preenv{}. % % \item % \!\pcol@makenormalcol! lets $\!\@elt!=\!\relax!$ to concatenate @@ -4646,7 +4828,7 @@ % \SpecialIndex{\pcol@synccounter} % \par\endgroup % -% \item \begingroup\hfuzz0.37pt +% \item \begingroup\hfuzz0.51pt % $\!\pcol@synccounter!\arg{lst}$ lets $\!\@elt!=\!\relax!$ to have the list % $\arg{lst}$ in \!\reserved@a! by \!\edef!, $\!\@elt!=\!\pcol@loadctrelt!$ % for $\CC_c$, and then $\!\@elt!=\!\pcol@syncctrelt!$ for $\arg{lst}$. @@ -4723,7 +4905,8 @@ % \begin{quote} % \!\pcol@cflt! ($\cc_c(\tl)$)\\ % \!\pcol@setpageno! ($\PP$, $\pp(\ptop)$)\\ -% \!\pcol@startpage! ($\cc_c(\dl)$, \!\@dbldeferlist!, \!\@dbltoplist!)\\ +% \!\pcol@startpage! ($\cc_c(\dl)$, \!\@dbldeferlist!, \!\@deferlist!, +% \!\@dbltoplist!)\\ % \!\pcol@trynextcolumn! ($\cc_c(\dl)$)\\ % \!\pcol@output@start! ($\PP$, $\pp(\ptop)$, $\cc_c(\dl)$)\\ % \!\pcol@makenormalcol! (\!\@midlist! in \preenv)\\ @@ -4780,7 +4963,8 @@ % \!\pcol@synccolumn! ($\cc_c(\vb)$)\\ % \!\pcol@imakeflushedpage! ($\cc_c(\vb)$)\\ % \!\pcol@freshpage! ($\cc_c(\vb)$)\\ -% \!\pcol@output@end! (top float, $\cc_c(\vb)$) +% \!\pcol@output@end! (top float, $\cc_c(\vb)$)\\ +% \!\pcol@end@dblfloat! (\pwise{} float) % \end{quote} % % \item[\Uidx{\!\@marbox!}] @@ -4799,6 +4983,7 @@ % \!\pcol@startpage! (\!\@dbltoplist!)\\ % \!\pcol@outputelt! ($\pp^i(q)$)\\ % \!\pcol@ioutputelt! ($\pp^i(q)$, $\pp^f(q)$, $\s_c(q)$)\\ +% \!\pcol@startcolumn! ($\pp^f(\ptop)$)\\ % \!\pcol@output@start! ($\cc_0(\vb)$)\\ % \!\pcol@makenormalcol! (\!\@midlist! in \preenv)\\ % \!\pcol@restartcolumn! ($\cc_c(\vb)$, $\pp^f(p)$ or $\cc_c(\ft)$)\\ @@ -4809,6 +4994,8 @@ % \!\pcol@imakeflushedpage! ($\cc_c(\ft)$)\\ % \!\pcol@output@end! ($\pp^f(\ptop)$, $\cc_c(\vb)$) % \end{quote} +%  +% In addition \!\pcol@F@count! scans its element to have its cardinality. % % \item[\Uidx{\!\@nil!}] % is an internal control sequence which is conventionally used to terminate @@ -4897,22 +5084,26 @@ % \!\pcol@backgroundcolor@y!. % % \item[\Uidx{\!\@dbldeferlist!}] -% is an internal macro having the list of page-wise floats whose page +% is an internal macro having the list of \pwise{} floats whose page % appearance are not yet fixed. It is scanned and then updated in % \!\pcol@startpage! and \!\pcol@output@clear!, while \!\pcol@output@start! % lets it have \!\@deferlist! made before \beginparacol, and -% \!\pcol@output@end! adds page-wise floats to be put in the empty +% \!\pcol@output@end! adds \pwise{} floats to be put in the empty % \lpage{} to it and then move the whole of the list to \!\@deferlist!. +% As discussed in Section~\ref{sec:imp-ovv-float}, 2015 or later version of +% \LaTeX{} no longer uses this list, but we stick with it for \pwise{} +% floats produced in \env{paracol} environments and thus have its top level +% definition with empty body in \Paracol. % % \item[\Uidx{\!\@dbltoplist!}] -% is an internal macro having the list of page-wise floats which +% is an internal macro having the list of \pwise{} floats which % \!\@sdblcolelt! decided to be put in the new page. The macro % \!\pcol@startpage! scans it to put all floats into the page $\ptop$ as its % \spanning{} $\pp^i(\ptop)$, and then empties it after returning all floats % to \!\@freelist!. % % \item[\Uidx{\!\@deferlist!}] -% is an internal macro having the list of column-wise floats whose page +% is an internal macro having the list of \cwise{} floats whose page % appearance are not yet fixed. It is scanned and then updated in % \!\pcol@startcolumn!, \!\pcol@trynextcolumn!, \!\pcol@flushcolumn!, % \!\pcol@makefcolumn! and \!\pcol@iflushfloats!, while the following macros @@ -4924,6 +5115,12 @@ % before \beginparacol. % % \item +% \!\pcol@startpage! uses it as the interface with \!\@addtodblcol! of 2015 +% or later version of \LaTeX{} as discussed in +% item-(\ref{item:ovv-float-@addtodblcol}) of +% Section~\ref{sec:imp-ovv-float}. +% +% \item % \!\pcol@setcurrcol! and \!\pcol@igetcurrcol! saves\slash restores it % into/from $\cc_c(\dl)$, respectively. % @@ -4937,11 +5134,11 @@ % % \item % \!\pcol@output@end! lets it have \!\@dbldeferlist! so that it processed as -% column-wise floats after \Endparacol. +% \cwise{} floats after \Endparacol. % \end{itemize} % % \item[\Uidx{\!\@toplist!}] -% is an internal macro having the list of column-wise floats which is +% is an internal macro having the list of \cwise{} floats which is % decided to be put at the top of the \ccolpage{} by float environments or by % \!\pcol@trynextcolumn!. This list is scanned by \!\pcol@cflt! if its % invoker \!\pcol@combinefloats! finds the macro is not empty. The list is @@ -4960,7 +5157,7 @@ % \!\pcol@makeflushedpage!. % % \item[\Uidx{\!\@botlist!}] -% is an internal macro having the list of column-wise floats which is +% is an internal macro having the list of \cwise{} floats which is % decided to be put at the bottom of the \ccolpage{} by float environments or % by \!\pcol@trynextcolumn!. The emptiness of this list examined by % \!\pcol@combinefloats! to invoke the scanner \!\@cflb! unless empty, @@ -4979,11 +5176,22 @@ % and \!\pcol@igetcurrcol! saves\slash restores the list into/from % $\cc_c(\ml)$ respectively. % +% \item[\Uidx{\!\f@depth!}] +% is an internal macro having |1sp| or being \!\let!-equal to \!\z@! to +% specify the float category, \pwise{} or \cwise{} respectively, which +% float-related macros work on. As discussed in +% item-(\ref{item:ovv-float-@dblfloatplacement}) of +% Section~\ref{sec:imp-ovv-float}, this feature introduced in 2015 version +% of \LaTeX{} is nullified in \env{paracol} environments and thus the +% setting with |1sp| done by \!\@dblfloatplacement! is overriden by +% \!\pcol@startpage! and \!\pcol@output@clear! when they invoke the macro. +% % \item[\Uidx{\!\cl@@ckpt!}] % is an internal macro having the list of all counters defined by % \!\newcounter! and the counter \counter{page}. The original usage of this % macro is to log the values of all counters into |.aux| by \!\include!, but -% we use it to obatin all counters in \!\pcol@zparacol!. +% we use it to obatin all counters in \!\pcol@zparacol! and +% \!\pcol@globalcounter@s!. % % \item[$\cs{cl@}{\cdot}\theta$] % is an internal macro having the list $\clist(\theta)$ of descendant @@ -5000,6 +5208,11 @@ %  % \begin{itemize} % \item +% In \!\pcol@Fe!, it is used to keep the cardinality of \!\@freelist! in +% \!\pcol@F@n! to log it by \!\pcol@FF! after \!\pcol@F@n! is let have +% another measurement result. +% +% \item % In $\!\pcol@iLogLevel!\\arg{name}$, it is used to implement % $\!\let!|\|\arg{name}=|\|\arg{name}{\cdot}l'$ where $l'$ is the roman % representation of the level $l$. @@ -5081,7 +5294,7 @@ % % \item % In \!\pcol@makeflushedpage!, it is let have an invocation of -% \!\pcol@bg@paintbox! for page-wise floats in $\pp^i(\ptop)$ together with +% \!\pcol@bg@paintbox! for \pwise{} floats in $\pp^i(\ptop)$ together with % the condition of the \bgpaint. % % \item @@ -5267,6 +5480,10 @@ % color is defined or undefined. % \end{itemize} % +% \item[\Uidx{\!\reserved@c!}] +% is an internal macro for temporary use. It is used in \!\pcol@startpage! +% to save \!\@deferlist! in it and then to restore the list from it. +% % \item[\Uidx{\!\@gtempa!}] % is an internal macro used as a \!\global!ly modifiable scratchpad. Its % usages are as follows. @@ -5328,6 +5545,7 @@ % \begin{quote}\raggedright % \!\pcol@Log@iii!, % \!\pcol@Log@ii!, +% \!\pcol@FF!, % \!\pcol@makecol!, % \!\pcol@opcol!, % \!\pcol@bg@columnleft!, @@ -5517,9 +5735,9 @@ % \!\pcol@flushcolumn! locally updates the register to scan % $\PP=\!\pcol@pages!$, and \!\pcol@freshpage! also performs local updates % but in more weird manner. Besides the updates discussed above, the -% macros \!\pcol@Log@iii!, \!\pcol@Log@ii!, \!\pcol@makecol!, \!\pcol@opcol!, -% \!\pcol@setpageno!, \!\pcol@getcurrpage!, \!\pcol@startcolumn!, -% \!\pcol@output@switch!, \!\pcol@addmarginpar! and +% macros \!\pcol@Log@iii!, \!\pcol@Log@ii!, \!\pcol@FF!, \!\pcol@makecol!, +% \!\pcol@opcol!, \!\pcol@setpageno!, \!\pcol@getcurrpage!, +% \!\pcol@startcolumn!, \!\pcol@output@switch!, \!\pcol@addmarginpar! and % \!\pcol@fntext! refer to the register to know which page they are % operating on. % \end{macro} @@ -5548,8 +5766,8 @@ % \!\pcol@output@switch! and \!\pcol@restartcolumn! refer to the register % to examine if they are working on a \colpage{} in the \tpage, while % \!\pcol@flushcolumn! and \!\pcol@fntext! examines if the \ccolpage{} is -% behind the \tpage. The register is also referred to by \!\pcol@Log@iii! -% and \!\pcol@Log@ii! for logging. +% behind the \tpage. The register is also referred to by \!\pcol@Log@iii!, +% \!\pcol@Log@ii! and \!\pcol@FF! for logging. % \end{macro} %  % \begin{macro}{\pcol@footnotebase} @@ -5802,7 +6020,7 @@ % becomes a float in \postenv, and leaves \Scfnote{}s untouched if % \Mgfnote{} typesetting is in effect. This macro itself turns this switch % $\false$ if $\CSIndex{ifpcol@dfloats}=\true$ to mean one or more columns -% in the \lpage{} have deferred column-wise floats and thus the \lpage{} +% in the \lpage{} have deferred \cwise{} floats and thus the \lpage{} % must be {\em full size}. % % \item @@ -5953,7 +6171,7 @@ % \spanning{} or not because it is too large, respectively. Then the switch % is examined by \!\pcol@ioutputelt! or \!\pcol@makeflushedpage! when they % finds a \spanning{} to be combined to the page to be printed so as to -% paint the \bground{} for the color of page-wise floats unless the switch is +% paint the \bground{} for the color of \pwise{} floats unless the switch is % $\true$ to mean the stuff is pre-environment one rather than floats. Then % \!\pcol@outputelt! or \!\pcol@makeflushedpage! itself \!\global!ly turns % the switch $\false$ after printing a page because we no longer have @@ -6138,7 +6356,7 @@ % {Introduced to know if the last page has deferred column-wise floats.} %  % The switch \cs{ifpcol@dfloats} is $\true$ iff one or more columns (in a -% \lpage) have deferred column-wise floats. Therefore, it is turned +% \lpage) have deferred \cwise{} floats. Therefore, it is turned % $\false$ by \!\pcol@sync! before it invokes \!\pcol@measurecolumn! which % turns it $\true$ when it finds a column $c$ such that % $\cc_c(\dl)\neq\emptyset$. Then the switch is examined by @@ -6356,7 +6574,7 @@ % \!\@outputpage!. The macro \!\pcol@output@end! also uses the register to % paint the \bground{} of the empty counterpart of non-merged \Scfnote{}s in % it, or to make the register $\bot$ when it have an empty \lpage{} but with -% \spanning{} of page-wise floats. After closing a \env{paracol} +% \spanning{} of \pwise{} floats. After closing a \env{paracol} % environment, the contents of the register % will be shiped out by % \!\@outputpage! invoked outside \env{paracol} environment when the @@ -6569,6 +6787,83 @@ \def\pcol@Logfn@i#1{} \pcol@LogLevel111 +% \end{macrocode} +% +% \begin{macro}{\pcol@F@write} +% \changes{v1.32-2}{2015/10/10} +% {Introduced for debugging memory leak problems.} +% \begin{macro}{\pcol@F} +% \changes{v1.32-2}{2015/10/10} +% {Introduced for debugging memory leak problems.} +% \begin{macro}{\pcol@FF} +% \changes{v1.32-2}{2015/10/10} +% {Introduced for debugging memory leak problems.} +% \begin{macro}{\pcol@F@count} +% \changes{v1.32-2}{2015/10/10} +% {Introduced for debugging memory leak problems.} +% \begin{macro}{\pcol@F@n} +% \changes{v1.32-2}{2015/10/10} +% {Introduced for debugging memory leak problems.} +% \begin{macro}{\pcol@Fb} +% \changes{v1.32-2}{2015/10/10} +% {Introduced for debugging memory leak problems.} +% \begin{macro}{\pcol@Fe} +% \changes{v1.32-2}{2015/10/10} +% {Introduced for debugging memory leak problems.} +% Another debugging tool is for investigating memory leak problems. Since +% \Paracol{} uses \!\insert! registers for various purposes, management +% operations of them especially that for proper release of them are crusial +% for the correctness of the implmentation. A source of toughness in +% debugging {\em memory leak} caused by missing a release of a register back +% to \!\@freelist! is that the resulting shortage is revealed long after the +% leakage to make it hard to find the point of the leakage. +% +% The set of macros is to help such debugging by logging the aquire and +% release of \!\insert! registers into a file named $\arg{job}|.fls|$ +% associated with \!\pcol@F@write! where $\arg{job}$ is given by +% \!\jobname!. After opened when \Paracol{} is loaded, the file is written by +% $\!\pcol@FF!\arg{msg_a}\arg{msg_b}$ with a line of the following form, +% where $p=\!\pcol@page!$, $c=\!\pcol@currcol!$, $\ptop=\!\pcol@toppage!$, +% $\page(p)=\!\c@page!$, and $\arg{n}_b=\!\pcol@F@n!$ is the cardinality of +% \!\@deferlist! counted by \!\pcol@F@count!. +%  +% \begin{itemize}\item[] +% $\arg{msg_a}|(|p|:|c|/|\ptop|:|\page(p)|)|=\arg{n_b}\arg{msg_b}$ +% \end{itemize} +%  +% The argument $\arg{msg_b}$ is empty when $\!\pcol@FF!$ is invoked from +% $\!\pcol@F!\arg{msg_a}$ for snapshot, while +% $\arg{msg_b}=\hbox{`|<=|$\arg{n_b}$'}$ when invoked from +% $\!\pcol@Fe!\arg{msg_a}$ paired by $\!\pcol@Fb!=\!\pcol@F@count!$ by which +% the cardinality of \!\@freelist! is given to $\arg{n_b}$ through +% \!\pcol@F@n! and then \!\reserved@a!. Therefore, by the pair of +% \!\pcol@Fb! and \!\pcol@Fe!, the consumption or restitution in a series of +% operations surrounded by the pair is logged in the file. +% +% In the production version, the logging is disabled of course by \!\let!ting +% \!\pcol@F! and \!\pcol@Fe! be \!\@gobble! and \!\pcol@F! be \!\relax!, +% while the open of \!\pcol@F@write! is disabled as well by a pair of +% \cs{iffalse} and \cs{fi}. +% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +%  +% \begin{macrocode} +\iffalse +\newwrite\pcol@F@write +\immediate\openout\pcol@F@write\jobname.fls +\fi +\def\pcol@F#1{\pcol@FF{#1}{}} +\def\pcol@FF#1#2{\pcol@F@count + \immediate\write\pcol@F@write{#1(\number\pcol@page:\number\pcol@currcol/% + \number\pcol@toppage:\number\c@page)=\pcol@F@n #2}} +\def\pcol@F@count{{\@tempcnta\z@ + \def\@elt##1{\advance\@tempcnta\@ne}\@freelist + \xdef\pcol@F@n{\number\@tempcnta}}} +\let\pcol@Fb\pcol@F@count +\def\pcol@Fe#1{{\let\reserved@a\pcol@F@n \pcol@FF{#1}{<=\reserved@a}}} +\let\pcol@F\@gobble +\let\pcol@Fb\relax +\let\pcol@Fe\@gobble + % \end{macrocode} % % @@ -6577,7 +6872,7 @@ % \label{sec:imp-output} % % \begin{macro}{\pcol@ovf} -% Before giving the definitions of macros in \!\output! rontine, we define +% Before giving the definitions of macros in \!\output! routine, we define % the macro \!\pcol@ovf! invoked if \!\@freelist! is empty on an acquision % of an \!\insert! by \!\@next! and thus we have to abort the execution by % \!\PackageError! with a message notifying the shortage. The additional @@ -6812,6 +7107,8 @@ % \changes{v1.3-3}{2013/09/17} % {Add \cs{@colht} and \cs{relax} as the first and third argument of % \cs{pcol@shrinkcolbyfn}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@makecol! is invoked solely from \!\pcol@output! to build % the shipping image of the \ccolpage{} which just has completed in @@ -6926,7 +7223,9 @@ \setbox\@cclv\vbox{\pcol@unvbox@cclv\footins}% \ifnum\pcol@page=\pcol@toppage \pcol@Log\pcol@makecol{save}\footins + \pcol@Fb \pcol@savefootins\pcol@currfoot + \pcol@Fe{makecol(pagefn)}% \else \pcol@Log\pcol@makecol{discard}\footins \setbox\@tempboxa\box\footins @@ -6954,7 +7253,7 @@ % {Add the assignment of \cs{@maxdepth} to \cs{maxdepth} to nullify % the temproary setting done by \cs{@addtobot}.} % \changes{v1.3-6}{2013/09/17} -% {Add special operations for columns having syncronization point to +% {Add special operations for columns having synchronization point to % move the infinite stretch and shrink to let it follow bottom floats % ratehr than preceding them.} % \begin{macro}{\pcol@@combinefloats} @@ -7040,6 +7339,8 @@ % synchronization points.} % \changes{v1.2-7}{2013/05/11} % {Replace \cs{maxdepth} with \cs{@maxdepth}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@cflt! is invoked solely from \!\pcol@combinefloats! if % the \colpage{} for which the macro combines the top floats has @@ -7084,7 +7385,9 @@ \vskip\pcol@textfloatsep \unvbox\@outputbox}% \let\@elt\relax + \pcol@Fb \xdef\@freelist{\@freelist\@toplist}% + \pcol@Fe{cflt}% \global\let\@toplist\@empty} % \end{macrocode} @@ -7101,6 +7404,8 @@ % the setting $\cs{boxmaxdepth}\EQ\cs{@maxdepth}$ for depth capping.} % \changes{v1.3-2}{2013/09/17} % {Rename \cs{pcol@outputpage} as \cs{pcol@outputcolumns}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@opcol! is invoked from \!\pcol@output! for the ordinary % completed \colpage{} built by \!\pcol@makecol!, or from the loop creating @@ -7144,9 +7449,11 @@ %  % \begin{macrocode} \def\pcol@opcol{% + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox to\@colht{ \boxmaxdepth\@maxdepth \pcol@clearcst@unvbox\@outputbox}}\pcol@ovf + \pcol@Fe{opcol}% \expandafter\@cons\csname pcol@shipped\number\pcol@currcol\endcsname\@currbox \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi \pcol@nextpage @@ -7416,7 +7723,7 @@ %  % The macro \!\pcol@floatplacement! is invoked from \!\pcol@opcol!, % \!\pcol@output@start!, \!\pcol@flushcolumn!, \!\pcol@freshpage! and -% \!\pcol@output@end! to reinitialize the parameters of column-wise float +% \!\pcol@output@end! to reinitialize the parameters of \cwise{} float % placement at the beginning of a \colpage{} or that of \postenv. The macro % lets \!\@textfloatsheight! be 0 and then invokes \!\@floatplacement!, as % \!\@opcol! does its tail\footnote{ @@ -7455,6 +7762,16 @@ % {Revise reflecting the new page context element $\pi^s(p)$.} % \changes{v1.3-4}{2013/09/17} % {Revise reflecting the new page context element $\pi^m(p)$.} +% \changes{v1.32-3}{2015/10/10} +% {Add $\hbox{\cs{f@depth}}\EQ0$ to override +% $\hbox{\cs{f@depth}}\EQ\hbox{\texttt{1sp}}$ done by +% \cs{@dblfloatplacement}.} +% \changes{v1.32-3}{2015/10/10} +% {Modify the code to apply \cs{@sdblcolelt} to \cs{@dbldeferlist} so +% as to work with both 2015 (or newer) and 2014 (or older) versions +% of \LaTeX.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@startpage! is invoked from \!\pcol@opcol! with % $\!\pcol@currpage!=\pp(p{-}1)$ to start a new page $p=\!\pcol@page!$, or @@ -7494,11 +7811,14 @@ % \end{macrocode} % % Then, we build \fpage{}s if any as follows. First we invoke -% \!\@dblfloatplacement! to reinitialize the parameters for page-wise float -% placement. Then we repeat \!\@tryfcolumn! giving it \!\@dbldeferlist! -% having page-wise floats not contributed to previous pages yet, while -% $\CSIndex{if@fcolmade}=\true$ meaning it builds \fpage{}s in -% \!\@outputbox!. For each \fpage{}, we acquire an \!\insert! from +% \!\@dblfloatplacement! to reinitialize the parameters for \pwise{} float +% placement. In addition, we let $\!\f@depth!=0$ to nullify the +% setting $\!\f@depth!=|1sp|$ possiblly done by \!\@dblfloatplacement! as +% discussed in the item-(\ref{item:ovv-float-@dblfloatplacement}) of Section +% \ref{sec:imp-ovv-float}. Then we repeat \!\@tryfcolumn! giving it +% \!\@dbldeferlist! having \pwise{} floats not contributed to previous +% pages yet, while $\CSIndex{if@fcolmade}=\true$ meaning it builds \fpage{}s +% in \!\@outputbox!. For each \fpage{}, we acquire an \!\insert! from % \!\@freelist! by \!\@next! for $\pp^i(\ptop)$ to let it have the % followings to represent the \fpage{}. %  @@ -7517,11 +7837,13 @@ % the values for the page following the \fpage{}s. %  % \begin{macrocode} - \@dblfloatplacement + \@dblfloatplacement \let\f@depth\z@ \@tryfcolumn\@dbldeferlist \@whilesw\if@fcolmade\fi{% + \pcol@Fb \@next\@currbox\@freelist{% \global\setbox\@currbox\box\@outputbox}\pcol@ovf + \pcol@Fe{startpage(fcol)}% \global\dimen\@currbox-\maxdimen \global\skip\@currbox\pcol@topskip \@cons\pcol@pages{{\number\c@page}\@currbox\voidb@x{}{}}% @@ -7530,29 +7852,38 @@ \@tryfcolumn\@dbldeferlist}% % \end{macrocode} % -% Next, we copy \!\@dbldeferlist! containing page-wise floats which +% Next, we copy \!\@dbldeferlist! containing \pwise{} floats which % could not be included in \fpage{}s to \!\reserved@b!, clear the list, and % then scan the copied list by applying \!\@sdblcolelt! to each list % element to invoke \!\@addtodblcol! for adding the element to \!\@dbltoplist! -% or keeping it in \!\@dbldeferlist!, as \LaTeX's \!\@startdblcolumn! -% does. If this scan results in empty \!\@dbltoplist! to mean the new page +% or keeping it in \!\@dbldeferlist! or \!\@deferlist! depending on \LaTeX's +% version, as \LaTeX's \!\@startdblcolumn! does. In addition, as discussed +% in item-(\ref{item:ovv-float-@addtodblcol}) of Section +% \ref{sec:imp-ovv-float}, we also clear \!\@deferlist! after saving it in +% \!\reserved@c! prior to the scan, and then after the scan we concatenate +% \!\@dbldeferlist! and \!\@deferlist! to let the former have the result and +% restore \!\@deferlist! from \!\reserved@c!. +% +% Then If this scan results in empty \!\@dbltoplist! to mean the new page % does not have any \spanning, we invoke \!\pcol@defcurrpage! with % $\pp^i(\ptop)=\pp^f(\ptop)=\bot$ so that $\pp(\ptop)$ reprsents a page % without \spanning{} nor \Scfnote{}s. %  % \begin{macrocode} \begingroup - \let\reserved@b\@dbldeferlist - \global\let\@dbldeferlist\@empty + \let\reserved@b\@dbldeferlist \let\reserved@c\@deferlist + \global\let\@dbldeferlist\@empty \global\let\@deferlist\@empty \let\@elt\@sdblcolelt \reserved@b + \let\@elt\relax \xdef\@dbldeferlist{\@dbldeferlist\@deferlist}% + \global\let\@deferlist\reserved@c \endgroup \ifx\@dbltoplist\@empty \pcol@defcurrpage{\number\c@page}\voidb@x\voidb@x{}{}% % \end{macrocode} % % Otherwise, i.e., \!\@dbltoplist! is not empty, we scan all elements in it -% by letting $\!\@elt!=\!\@comdblflelt!$ to have all page-wise floats in +% by letting $\!\@elt!=\!\@comdblflelt!$ to have all \pwise{} floats in % \!\@tempboxa!. Then, after returning all elements to \!\@freelist!, we % acquire an \!\insert! from \!\@freelist! to be $\pp^i(\ptop)$ by \!\@next! % and store the contents of \!\@tempboxa! in $\pp^b(\ptop)$ after removing @@ -7571,7 +7902,7 @@ % \pp^m(\ptop)=\emptyset\quad % \end{eqnarray*} % -% Finally, regardless of the existence of the page-wise floats, we let +% Finally, regardless of the existence of the \pwise{} floats, we let % $\!\pcol@footins!=\bot$ to mean the \tpage{} does not have any \Scfnote{}s, % so far if footnote typesetting is \scfnote, or never otherwise. %  @@ -7582,11 +7913,15 @@ \let\@elt\@comdblflelt \@dbltoplist \let\@elt\relax + \pcol@Fb \xdef\@freelist{\@freelist\@dbltoplist}% + \pcol@Fe{startpage(dbltop)}% \global\let\@dbltoplist\@empty + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{% \unvbox\@tempboxa \vskip-\dblfloatsep \dblfigrule \vskip\dbltextfloatsep}}\pcol@ovf + \pcol@Fe{startpage(spanning)}% \global\dimen\@currbox\@colht \global\skip\@currbox\pcol@topskip \pcol@defcurrpage{\number\c@page}\@currbox\voidb@x{}{}% @@ -7684,6 +8019,8 @@ % {Add painting of page-wise float page.} % \changes{v1.3-2}{2013/09/17} % {Add building a empty right parallel float page.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \ifdim\@tempdima<\z@ @@ -7691,7 +8028,9 @@ \def\pcol@bg@floatheight{\pcol@bg@textheight}% \setbox\@outputbox\vbox to\textheight{% \pcol@bg@paintbox{Ff}\unvbox\pcol@spanning}% + \pcol@Fb \@cons\@freelist\pcol@spanning + \pcol@Fe{outputelt(spanning)}% \ifnum\pcol@ncolleft<\pcol@ncol \setbox\pcol@rightpage\vbox to\textheight{% \ifpcol@paired\else \advance\c@page\@ne \fi @@ -7720,7 +8059,7 @@ % Then after the ship-out image building, we \!\global!ly let % $\CSIndex{ifpcol@firstpage}=\false$ to tell \!\pcol@ioutputelt! and % \!\pcol@makeflushedpage! that the pages they build are no longer first of -% a \env{paracol} environment and thus $\pp^i(q)$ should have page-wise +% a \env{paracol} environment and thus $\pp^i(q)$ should have \pwise{} % floats rather than \preenv{} hereafter. % \end{itemize} %  @@ -7834,7 +8173,7 @@ % put by \!\unvbox!, painting its \bground{} with $\bgc_{\{F,f\}}$ by % \!\pcol@bg@paintbox! letting the basic height \!\pcol@bg@floatheight! of % the paining region $\bgr_{\{F,f\}}$ be the height-plus-depth of $\pp^b(q)$ -% if $q$ is not the first page and thus $\pp^b(q)$ has page-wise floats. We +% if $q$ is not the first page and thus $\pp^b(q)$ has \pwise{} floats. We % also return the \!\insert! $\pp^i(q)$ to \!\@freelist! by \!\@cons!. % % \item @@ -7859,6 +8198,9 @@ %  % \Index{extension of background painting region} %  +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} +%  % \begin{macrocode} \ifpcol@nospan\else \def\pcol@bg@floatheight{% @@ -7866,7 +8208,9 @@ \@tempdimb\ht\pcol@spanning \advance\@tempdimb\dp\pcol@spanning \ifnum#1=\z@ \ifpcol@firstpage\else \pcol@bg@paintbox{Ff}\fi + \pcol@Fb \@cons\@freelist\pcol@spanning \unvbox\pcol@spanning + \pcol@Fe{ioutputelt(spanning)}% \else\ifpcol@firstpage \ht\pcol@rightpage\ht\pcol@spanning \dp\pcol@rightpage\dp\pcol@spanning @@ -7912,6 +8256,9 @@ % $c^g=c-1$ if swapped or $c^g=c$ otherwise, because if swapped the % column-$c$ is followed by the gap which follows $c-1$ if not swapped. %  +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} +%  % \begin{macrocode} \pcol@buildcolseprule\@tempdima#1#2\@maxdepth \unvbox\@tempboxa \hb@xt@\textwidth{% @@ -7921,7 +8268,11 @@ \expandafter\@next\expandafter\@currbox \csname pcol@shipped\number\@tempcntb\endcsname \relax{\let\@currbox\voidb@x}% - \ifvoid\@currbox\else \@cons\@freelist\@currbox \fi + \ifvoid\@currbox\else + \pcol@Fb + \@cons\@freelist\@currbox + \pcol@Fe{ioutputelt(page)}% + \fi \expandafter\@tempdima \csname pcol@columnwidth\number\@tempcntb \endcsname \pcol@@hfil \hb@xt@\@tempdima{\box\@currbox\hss}% @@ -7946,12 +8297,17 @@ % are now closing, as done for each \colpage{} and as expected to be applied % to \Scfnote{}s. %  +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} +%  % \begin{macrocode} \ifvoid\pcol@footins\else \ifnum#1=\z@ \pcol@Log\pcol@outputelt{output}\pcol@footins \pcol@putfootins\pcol@footins + \pcol@Fb \@cons\@freelist\pcol@footins + \pcol@Fe{ioutputelt(footins)}% \else \vskip\skip\pcol@footins \nointerlineskip \pcol@phantom\pcol@footins \vskip\z@ @@ -8438,6 +8794,11 @@ % \changes{v1.3-3}{2013/09/17} % {Add \cs{@colht} and \cs{@tempdimb} as the first and third argument of % \cs{pcol@shrinkcolbyfn}.} +% \changes{v1.32-2}{2015/10/10} +% {Fix the memory leak caused by mistakingly preserving $\pi^f(p)$ +% when $p\EQ p_t$.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro $\!\pcol@startcolumn!\arg{f}$ is invoked from \!\pcol@output! % with $f=1$ and \!\pcol@freshpage! with $f=0$ to start a new \colpage. @@ -8463,10 +8824,18 @@ % and \!\pcol@trynextcolumn! as done in \LaTeX's \!\@startcolumn!, we % \!\insert! $\pp^f(p)$, if it is has some footnoes, by letting \!\footins! % have it by \!\pcol@getcurrfoot! so that \TeX{} will be aware of the -% footnotes when it examines the page break of the \colpage{}. Then if -% $p=\ptop$, we also \!\insert! deferred footnotes in $\df$ until their -% total height reaches \!\@colht! by \!\pcol@deferredfootins! if $f=1$ to -% mean this macro is invoked from \!\pcol@output!\footnote{ +% footnotes when it examines the page break of the \colpage{}. That is, if +% $p<\ptop$ the \!\insert!ion is to keep the vertical space for $\pp^f(p)$ in +% the building process of the \colpage{} in $p$ because any \Scfnote{s} +% cannot be added to $p$ any more, and thus $\pp^f(p)$ is preserved until +% the page $p$ is shipped out. On the other hand if $p=\ptop$, \Scfnote{s} +% in $p$ can grow further and thus \!\insert!ed footnotes will be captured +% again by \!\pcol@output@switch! or \!\pcol@startpage!. Therefore, if +% $p=\ptop$, we release $\pp^f(p)$ to \!\@freelist!. +% +% Then if $p=\ptop$, we also \!\insert! deferred footnotes in $\df$ until +% their total height reaches \!\@colht! by \!\pcol@deferredfootins! if $f=1$ +% to mean this macro is invoked from \!\pcol@output!\footnote{ %  % The \cs{insert}ion of $\pp^f(p)$ also requiers $f=1$ but this examination % is redundant because $\pp^f(p)=\bot$ definately if $f=0$.}. @@ -8500,6 +8869,11 @@ \pcol@getcurrfoot\copy \pcol@Log\pcol@startcolumn{insert}\footins \insert\footins{\unvbox\footins}% + \ifnum\pcol@page=\pcol@toppage + \pcol@Fb + \@cons\@freelist\pcol@footins + \pcol@Fe{startcolumn(pagefn)}% + \fi \fi \ifnum\pcol@page=\pcol@toppage \pcol@deferredfootins\pcol@startcolumn \fi @@ -9523,6 +9897,9 @@ % the invocation of \cs{@outputpage} for too tall pre-environment % stuff because the page is considered as outside % \string\texttt{paracol} envrionments.} +% \changes{v1.32-3}{2015/10/10} +% {Add depth clearing of imported deferred floats in case that some of +% them has \texttt{1sp}.} %  % The macro \!\pcol@output@start! is invoked solely from % \!\pcol@specialoutput! to process the special \!\output! request made in @@ -9533,9 +9910,16 @@ % breaks are processed by our own macros such as \!\pcol@makecol! hereafter. % Then we let $p=\pbase={\ptop}=0$ and $\PP=()$ because we have nothing for % $q<\ptop=0$. We also move \!\@deferlist! to \!\@dbldeferlist! and then -% let \!\@deferlist! be empty because all column-wise dererred floats become -% page-wise, and let $\df=\bot$ because we don't have any deferred -% footnotes. +% let \!\@deferlist! be empty because all \cwise{} dererred floats become +% \pwise{}. In this float importation, as discussed in +% item-(\ref{item:ovv-float-@output@start}) of +% Section~\ref{sec:imp-ovv-float}, we force all floats in the list have +% depth 0 to ensure no one has |1sp| to conform our own and old-fashioned +% \pwise{} float placement mechanism\footnote{ +%  +% Though having \texttt{1sp} is almost imposiible.}. +%  +% We then and let $\df=\bot$ because we don't have any deferred footnotes. % % Next we caculate $H=H_r-(H_m+H_f+H_b)$ where $H_r=\!\@colroom!$, $H_m$ is % the height-plus-depth of the main vertical list in \!\@holdpg!, $H_f$ is @@ -9571,6 +9955,7 @@ \global\pcol@page\z@ \global\pcol@toppage\z@ \global\pcol@basepage\z@ \global\let\pcol@pages\@empty \global\let\@dbldeferlist\@deferlist \global\let\@deferlist\@empty + {\def\@elt##1{\global\dp##1\z@}\@dbldeferlist}% \setbox\z@\box\pcol@topfnotes \@tempdima\@colroom \advance\@tempdima-\ht\@holdpg \advance\@tempdima-\dp\@holdpg @@ -9649,6 +10034,8 @@ % {Add background painting of pre-environment stuff.} % \changes{v1.3-4}{2013/09/17} % {Add initialization of $\pi^m(0)$.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \else @@ -9666,9 +10053,11 @@ \let\pcol@bg@preposttop\pcol@bg@preposttop@right \reserved@a \unvbox\pcol@rightpage}% \fi + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{% \let\pcol@bg@preposttop\pcol@bg@preposttop@left \reserved@a \unvbox\@outputbox}}\pcol@ovf + \pcol@Fe{output@start(preenv)}% \global\dimen\@currbox\@colht \ifdim\@tempdima=\z@ \@tempskipa\topskip \else \@tempskipa\z@ \fi \global\skip\@currbox\@tempskipa \global\topskip\@tempskipa @@ -9685,7 +10074,7 @@ % Then regardless of $H$, we do the followings for all columns $c\In0\C$ to % build $\cc_c$, after initializing \!\@colroom! to be \!\@colht!, and % invoking \!\pcol@floatplacement! to reinitialize the parameters of -% column-wise float placement. +% \cwise{} float placement. % % First, if we have let $\!\topskip!=0$ with the \preenv, % we let $\cc_c(\vb^b)$ have an invisible \!\hrule! whose @@ -9735,12 +10124,16 @@ %  % \changes{v1.0}{2011/10/10} % {Add clearing of $S_c$.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \global\@colroom\@colht \pcol@floatplacement \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{% + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{% \ifdim\topskip=\z@ \hrule\@height\z@\@width\z@ \fi}}\pcol@ovf + \pcol@Fe{output@start(col)}% \pcol@setcurrcolnf \global\count\@currbox\z@ \global\dimen\@currbox\@colroom @@ -9757,6 +10150,8 @@ % is not void.} % \changes{v1.22}{2013/06/30} % {Move emptying \cs{pcol@colorstack} to \cs{pcol@zparacol}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % Finally, we let $c=\!\pcol@currcol!=0$ for the first column, and regain the % parameters in $\cc_0$ by \!\pcol@getcurrcol!. Then before putting @@ -9776,7 +10171,9 @@ \global\pcol@currcol\z@ \pcol@getcurrcol \pcol@savecolorstack + \pcol@Fb \@cons\@freelist\@currbox \unvbox\@currbox + \pcol@Fe{output@start(col)}% \ifvoid\footins\else \pcol@Log\pcol@output@start{insert}\footins \insert\footins{\box\footins\penalty\interlinepenalty}% @@ -9798,6 +10195,8 @@ % \changes{v1.3-6}{2013/09/17} % {Completely redesigined to use \cs{@makecol} if pre-environment % stuff has bottom floats.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@makenormalcol! is invoked solely from % \!\pcol@output@start! to let \!\@output~box! have the \preenv{} as @@ -9879,7 +10278,9 @@ \ifvoid\footins \setbox\@outputbox\box\@holdpg \else \pcol@combinefootins\@holdpg\footins \fi + \pcol@Fb \let\@elt\relax \xdef\@freelist{\@freelist\@midlist}% + \pcol@Fe{makenormalcol}% \global\let\@midlist\@empty \pcol@combinefloats \else @@ -9911,6 +10312,8 @@ % \changes{v1.3-4}{2013/09/17} % {Add $\pi^m(p)\EQ\cs{pcol@mparbottom}$ to the argument of % \cs{pcol@defcurrpage}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@output@switch! is invoked from % \!\pcol@specialoutput! to process the special \!\output! request made in @@ -9986,15 +10389,19 @@ \pcol@shiftspanning\@holdpg \setbox\@holdpg\vbox{\unvbox\pcol@prespan \unvbox\@holdpg}% \fi\fi + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{ \pcol@clearcst@unvbox\@holdpg}}\pcol@ovf + \pcol@Fe{output@switch}% \def\pcol@currfoot{\voidb@x}% \ifvoid\footins\else \ifpcol@scfnote \ifnum\pcol@page=\pcol@toppage \pcol@getcurrpinfo\@tempcnta\@tempdima\@tempskipa \pcol@Log\pcol@output@switch{save}\footins + \pcol@Fb \pcol@savefootins\pcol@footins + \pcol@Fe{output@switch(pagefn)}% \pcol@defcurrpage{\number\@tempcnta}\pcol@spanning\pcol@footins {\pcol@sptextlist}{\pcol@mparbottom}% \else @@ -10003,7 +10410,9 @@ \fi \else \pcol@Log\pcol@output@switch{save}\footins + \pcol@Fb \pcol@savefootins\pcol@currfoot + \pcol@Fe{output@switch(colfn)}% \fi \fi \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi @@ -10125,6 +10534,8 @@ % \changes{v1.0}{2011/10/10} % {Add \cs{pcol@getcurrfoot} to restore parameters of $\kappa_c(\tau)$ % into \cs{footins}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@restartcolumn! is invoked from \!\pcol@output@switch! or % \!\pcol@freshpage! to restart the \ccolpage{} $d=\!\pcol@nextcol!$ which @@ -10140,7 +10551,9 @@ \pcol@getcurrcol \global\pcol@page\count\@currbox \global\@colroom\dimen\@currbox + \pcol@Fb \@cons\@freelist\@currbox + \pcol@Fe{restartcolumn(col)}% \pcol@getcurrpage % \end{macrocode} %  @@ -10248,6 +10661,9 @@ % to the penalty, to keep the footnotes and references to them in a page. % \end{enumerate} %  +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} +%  % \begin{macrocode} \ifpcol@scfnote \edef\pcol@currfoot{\pcol@footins}% @@ -10256,7 +10672,9 @@ \pcol@putbackmvl \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi \ifvoid\pcol@footins\else + \pcol@Fb \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot + \pcol@Fe{restartcolumn(pagefn)}% \pcol@Log\pcol@restartcolumn{insert}\footins \pcol@shrinkcolbyfn\@colht\footins\@tempdimb \insert\footins{\unvbox\footins}% @@ -10275,9 +10693,11 @@ \else \pcol@putbackmvl \ifvoid\pcol@currfoot\else - \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot - \pcol@Log\pcol@restartcolumn{insert}\footins - \insert\footins{\unvbox\footins}% + \pcol@Fb + \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot + \pcol@Fe{restartcolumn(colfn)}% + \pcol@Log\pcol@restartcolumn{insert}\footins + \insert\footins{\unvbox\footins}% \fi \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi \fi} @@ -11630,7 +12050,7 @@ % % % -% \subsection{Syncronization} +% \subsection{Synchronization} % \label{sec:imp-sout-sync} % % \begin{macro}{\pcol@sync} @@ -11928,6 +12348,8 @@ % of \cs{pcol@shrinkcolbyfn} for all of three invocations of it.} % \changes{v1.3-6}{2013/09/17} % {Add \cs{@maxdepth} as the first argument of \cs{pcol@@makecol}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % The macro \!\pcol@flushcolumn! is invoked for each column $c\In0\C$ from % \!\pcol@sync! to ship out the \ccolpage{} of $c$ into $\S_c$ if it is not @@ -12018,7 +12440,11 @@ \pcol@lastpagefalse \pcol@page\count\@currbox \setbox\@cclv\vbox{\unvbox\@currbox \vfil}% - \ifvoid\pcol@currfoot\else \@cons\@freelist\pcol@currfoot \fi + \ifvoid\pcol@currfoot\else + \pcol@Fb + \@cons\@freelist\pcol@currfoot + \pcol@Fe{flushcolumn(colfn)}% + \fi \pcol@getcurrfoot\box \pcol@getcurrpage \ifvoid\pcol@footins @@ -12051,6 +12477,8 @@ %  % \changes{v1.2-2}{2013/05/11} % {Add \cs{@colht} shrinking by page-wise footnotes.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \advance\pcol@page\@ne @@ -12062,8 +12490,10 @@ \fi \@makefcolumn\@deferlist \if@fcolmade + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}% \pcol@ovf + \pcol@Fe{flushcolumn(fcol)}% \expandafter\@cons \csname pcol@shipped\number\pcol@currcol\endcsname\@currbox \fi @@ -12109,10 +12539,14 @@ % {Fix the bug that $\kappa_c(\beta^p)$ is let have \cs{pcol@page}, % which can be less than $p_t\EQ\cs{pcol@toppage}$, to cause the column % $c$ is lost or moved to a wrong page.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \ifpcol@lastpagesave \pcol@lastpagetrue \fi + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{}}\pcol@ovf + \pcol@Fe{flushcolumn(col)}% \pcol@getcurrpinfo\@tempcnta{\global\@colht}\@tempskipa \@pageht\@colht \ifvoid\pcol@footins\else \pcol@shrinkcolbyfn\@colht\pcol@footins\relax \fi @@ -12265,7 +12699,10 @@ % \begin{macro}{\pcol@makefcolpage} % \changes{v1.2-7}{2013/05/11} % {Introduced to implement the operations to make a float column -% performed in three macros.} +% performed in three macros.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} +%  % The macro \!\pcol@makefcolpage! is invoked from \!\pcol@flushcolumn!, % \!\pcol@makefcolumn! and \!\pcol@imakeflushedpage! to build a \fcolumn{} % having floats in \!\@toplist!, which is then returned to \!\@freelist! and @@ -12279,7 +12716,10 @@ \def\pcol@makefcolpage{\vbox to\@colht{ \vskip\@fptop \vskip-\@fpsep \def\@elt##1{\vskip\@fpsep\box##1}\@toplist \vskip\@fpbot}% - \xdef\@freelist{\@freelist\@toplist}\global\let\@toplist\@empty} + \pcol@Fb + \xdef\@freelist{\@freelist\@toplist}\global\let\@toplist\@empty + \pcol@Fe{makefcolpage}% +} % \end{macrocode} % \end{macro} @@ -12381,7 +12821,7 @@ % Finally, we let $\CSIndex{ifpcol@dfloats}=\true$ if % $\cc_c(\dl)\neq\emptyset$ to tell \!\pcol@makeflushedpage! that the % \lpage{} must be {\em full size} and \!\pcol@output@end! to flush the -% deferred column-wise floats. +% deferred \cwise{} floats. %  % \changes{v1.3-6}{2013/09/17} % {Revise the mechanism to tell \cs{pcol@makeflushedpage} and @@ -12617,6 +13057,9 @@ % $\cc_c(\tf)<\infty$ but just let succeeding stuff be added to the main % vertical list as in \cswitch{} without \sync{}ation. %  +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} +%  % \begin{macrocode} \else \@tempdimb\@tempdima @@ -12626,9 +13069,11 @@ \ifx\@toplist\@empty \textfloatsep\z@ \floatsep\z@ \let\topfigrule\relax \fi + \pcol@Fb \@next\pcol@float\@freelist{\global\setbox\pcol@float\vbox to\z@{ \vskip-\floatsep \topfigrule \vskip\textfloatsep \unvbox\@currbox \vss}}\pcol@ovf + \pcol@Fe{synccolumn(topfloat)}% \@cons\@toplist\pcol@float \advance\@tempdimb\textfloatsep \advance\@tempdimb-\floatsep \advance\@tempdimb\@M\p@ @@ -12805,19 +13250,26 @@ % right parallel-page for each page-wise float page.} % \changes{v1.3-3}{2013/09/17} % {Add background painting of float pages.} +% \changes{v1.32-3}{2015/10/10} +% {Add $\hbox{\cs{f@depth}}\EQ0$ to override +% $\hbox{\cs{f@depth}}\EQ\hbox{\texttt{1sp}}$ done by +% \cs{@dblfloatplacement}.} %  % The macro \!\pcol@output@clear! is invoked solely from % \!\pcol@specialoutput! to process the \!\output! request made by % \!\clearpage!. The first part up to \!\@outputpage! and the last line of % this macro are same as \!\pcol@output@flush! to flush the \tpage{} and to % have a newpage. In the remaining mid part, we invoke \!\pcol@flushfloats! -% to ship out all deferred column-wise floats in all columns if any, and -% then do it for page-wise floats by the following invocations enclosed in a +% to ship out all deferred \cwise{} floats in all columns if any, and +% then do it for \pwise{} floats by the following invocations enclosed in a % group; letting $\!\pcol@rightpage!=\bot$ for ordinary paging; -% \!\@dblfloatplacement! to set up placement parameters; \!\@makefcolumn! -% with \!\@dbldeferlist! to have a \fpage{} in \!\@outputbox! if any; and a -% loop of \bgpaint{} of \!\@outputbox! and, if $\CL<\C$, of -% empty \!\pcol@rightpage!, and \!\@outputpage! followed by \!\@makefcolumn! +% \!\@dblfloatplacement! to set up placement parameters followed by +% $\!\f@depth!=0$ to nullify the setting $\!\f@depth!=|1sp|$ possiblly done +% by it as discussed in the item-(\ref{item:ovv-float-@dblfloatplacement}) +% of Section \ref{sec:imp-ovv-float}; \!\@makefcolumn! with +% \!\@dbldeferlist! to have a \fpage{} in \!\@outputbox! if any; and a loop +% of \bgpaint{} of \!\@outputbox! and, if $\CL<\C$, of empty +% \!\pcol@rightpage!, and \!\@outputpage! followed by \!\@makefcolumn! % repeated while we have a \fpage{}, i.e., $\CSIndex{if@fcolmade}=\true$. % % Note that the mid part is same as that found in \!\@doclearpage! but we @@ -12845,7 +13297,7 @@ \pcol@flushfloats \begingroup \setbox\pcol@rightpage\box\voidb@x - \@dblfloatplacement + \@dblfloatplacement \let\f@depth\z@ \@makefcolumn\@dbldeferlist \@whilesw\if@fcolmade\fi{% \def\pcol@bg@floatheight{\pcol@bg@textheight}% @@ -12928,9 +13380,9 @@ %  % \!\pcol@rightpage! must have the couterpart in right \parapag{}e if the % \spanning{} is \preenv, while it is made $\bot$ by \!\pcol@output@end! if -% page-wise floats.}. +% \pwise{} floats.}. %  -% Since page-wise floats become ordinary floats in \postenv, we cannot paint +% Since \pwise{} floats become ordinary floats in \postenv, we cannot paint % its \bground{} and must remove \!\dbltextfloatsep! at the bottom of % $\pp^i(\ptop)$. % @@ -12970,7 +13422,7 @@ % the \spanning{} is \preenv{} having already been painted by % \!\pcol@output@start!; and the other is the case of % $\CSIndex{if@tempswa}=\false$ to mean we are working on a truly \lpage{} -% being empty except for the \spanning{} itself and thus the page-wise +% being empty except for the \spanning{} itself and thus the \pwise{} % floats become a part of deferred floats in \postenv{} as discussed in\Tie % (\ref{item:mfp-last-empty}). In the latter exceptional case, excluding % the case that the \lpage{} is also the \spage\footnote{ @@ -12990,7 +13442,7 @@ % Then we do the similar procedure for \!\pcol@rightpage! and make its height % and depth equal to those of \!\@outputbox!\footnote{ %  -% If page-wise floats become a part of \postenv's floats, \!\pcol@rightpage! +% If \pwise{} floats become a part of \postenv's floats, \!\pcol@rightpage! % will be made $\bot$ by \!\pcol@output@end! afterward.}. %  % Finally we temporarily add $h$ to \!\topmargin! as done in @@ -13001,6 +13453,8 @@ % {Revise the condition of leaving page-wise floats as ordinary % post-environment floats using \cs{if@tempswa} with % \cs{ifpcol@dfloats}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \begingroup @@ -13019,7 +13473,9 @@ \reserved@a \unvbox\pcol@spanning \ifpcol@firstpage\else \if@tempswa\else \unskip \fi\fi}% \global\setbox\@outputbox\vbox{\box\@outputbox}% + \pcol@Fb \@cons\@freelist\pcol@spanning + \pcol@Fe{makeflushedpage(spanning)}% \ifnum\pcol@ncolleft<\pcol@ncol \global\setbox\pcol@rightpage\vbox{% \ifpcol@paired\else \advance\c@page\@ne \fi @@ -13126,6 +13582,8 @@ % \changes{v1.3-6}{2013/09/17} % {page-wise footnotes for the last page followed by pages for % deferred column-wise floats are now put by this macro.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \gdef\pcol@fnheight@lpage{0pt}% @@ -13142,7 +13600,9 @@ \fi \global\setbox\@outputbox\vbox{% \unvbox\@outputbox \pcol@putfootins\pcol@footins}% + \pcol@Fb \@cons\@freelist\pcol@footins \gdef\pcol@footins{\voidb@x}% + \pcol@Fe{makeflushedpage(pagefn)}% \ifdim\pcol@colht=-\maxdimen \global\pcol@colht\z@ \fi \fi \fi @@ -13275,6 +13735,8 @@ % {Remove the examination of $\kappa_c(\lambda_d)$ for % \cs{if@fcolmade} because it is made unnecesary now by % \cs{ifpcol@dfloats}.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \hb@xt@\textwidth{% @@ -13282,7 +13744,11 @@ \pcol@swapcolumn\@tempcntb\pcol@currcol#1#2\relax \pcol@getcurrcol \setbox\@cclv\box\@currbox - \ifvoid\pcol@currfoot\else \@cons\@freelist\pcol@currfoot \fi + \ifvoid\pcol@currfoot\else + \pcol@Fb + \@cons\@freelist\pcol@currfoot + \pcol@Fe{imakeflushedpage(colfn)}% + \fi \pcol@getcurrfoot\box \@tempswafalse \begingroup @@ -13324,7 +13790,7 @@ % {Implement variable-width column-separating gaps.} %  % The macro \!\pcol@flushfloats! is invoked from \!\pcol@output@clear! and -% \!\pcol@output@end! to flush all deferred column-wise floats in each +% \!\pcol@output@end! to flush all deferred \cwise{} floats in each % column if any. After letting $\!\@colht!=\!\textheight!$ for % \fcolumn{}s, we iterate shipping out a page having \fcolumn{}s while % $\CSIndex{if@fcolmade}=\exists c\In0\C:(\cc_c(\dl)\neq())$. @@ -13542,7 +14008,7 @@ % Next we process one of the following cases. % % The first case is for $\CSIndex{ifpcol@dfloats}=\true$ to mean the -% \lpage{} is followed by one or more pages having deferred column-wise +% \lpage{} is followed by one or more pages having deferred \cwise{} % floats and thus \!\pcol@makeflushedpage! builds the ship-out image of the % \lpage in {\em full size} in \!\@outputbox! unless the page has nothing % perfectly. Therefore, we ship the image out by \!\@outputbox! unless it @@ -13576,7 +14042,7 @@ % Before proceeding to the second and third cases, we let % $\CSIndex{ifpcol@output}=\false$ because we have nothing to ship out. % -% Then the second case is for $h=-\infty$ without deferred column-wise +% Then the second case is for $h=-\infty$ without deferred \cwise{} % floats to mean all columns in the \lpage{} are empty and the page does not % have non-merged \Scfnote{}s. In this case, we examine if % $\Midx{\!\pcol@firstprevdepth!}=\!\relax!$ to mean we have had at least @@ -13600,7 +14066,7 @@ % has $\!\prevdepth!=\pd'$ just before \beginparacol{} in decimal integer % representation. Since we have not started any pages in the environment, % and all columns in the \lpage{} is empty, we have almost nothing in the -% environment. Note that the environment can have page-wise floats but they +% environment. Note that the environment can have \pwise{} floats but they % have not yet put into any pages but are kept in \!\@dbldeferlist!, or % \Mgfnote{}s but they are merged to those in \postenv. Therefore, the % \preenv{} and \postenv{} must be {\em connected} naturally and thus we put @@ -13624,6 +14090,8 @@ % \changes{v1.3-6}{2013/09/17} % {Remove \cs{unskip} from the operation to let page-wise floats be % ordinary ones because \cs{pcol@makeflushedpage} does it.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \else @@ -13633,8 +14101,10 @@ \@tempswatrue \@pagedp\@m\p@ \global\@mparbottom\z@ \global\let\pcol@mparbottom@out\pcol@mparbottom@zero \ifpcol@nospan\else + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}% \pcol@ovf + \pcol@Fe{output@end(spanning)}% \count\@currbox10\relax {\let\@elt\relax \xdef\@dbldeferlist{\@elt\@currbox\@dbldeferlist}}% \global\setbox\pcol@rightpage\box\voidb@x @@ -13723,11 +14193,15 @@ %  % \changes{v1.2-2}{2013/05/11} % {Add insertion of page-wise footnotes to be merged.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \ifvoid\pcol@footins\else \pcol@Log\pcol@output@end{insert}\pcol@footins + \pcol@Fb \insert\footins{\unvbox\pcol@footins}\@cons\@freelist\pcol@footins + \pcol@Fe{output@end(pagefn)}% \fi \ifvoid\pcol@topfnotes\else \insert\footins{\unvbox\pcol@topfnotes}\fi % \end{macrocode} @@ -13757,10 +14231,10 @@ % put to the main vertical list packed in \!\@outputbox!, or are in % \!\@dbldeferlist!. % -% As for deferred page-wise floats produced in the environment, including +% As for deferred \pwise{} floats produced in the environment, including % those once put in the \lpage{} but returned to the list by the operation % described above, we move them to \!\@deferlist! because they are now -% column-wise floats. Then we invoke \!\pcol@floatplacement! to +% \cwise{} floats. Then we invoke \!\pcol@floatplacement! to % reinitialize float placement parameters. Finally, if $f_{\it sp}=\true$, % we invoke \!\@startcolumn! and then repeat invocations of \!\@opcol! and % \!\@startcolumn! while \fpage{}s are produced, after letting @@ -13775,12 +14249,16 @@ % {Add \cs{pcol@getcurrcol} for the column specified by % \cs{pcol@lastcol} to pass \cs{if@nobreak}, \cs{if@afterindent} and % \cs{everypar} of the column to post-environment stuff.} +% \changes{v1.32-2}{2015/10/10} +% {Add \cs{pcol@Fb}/\cs{pcol@Fe} pair(s).} %  % \begin{macrocode} \expandafter\let\csname pcol@columncolor\number\z@\endcsname\relax \pcol@currcol\z@ \pcol@restorecolorstack \@whilenum\pcol@currcol<\pcol@ncol\do{% + \pcol@Fb \pcol@getcurrcol \@cons\@freelist\@currbox + \pcol@Fe{output@end(col)}% \advance\pcol@currcol\@ne}% \pcol@currcol\pcol@lastcol\relax \pcol@getcurrcol \global\pcol@prevdepth\@pagedp @@ -14059,7 +14537,7 @@ % Fourth, we set up a few \LaTeX's typesetting parameters which should have % appropriate values in the environment. We let % $\CSIndex{if@twocolumn}=\true$ so that \textit{float}|*| environments work -% for page-wise floats and LaTeX's \!\@addmarginpar! determine the margin +% for \pwise{} floats and LaTeX's \!\@addmarginpar! determine the margin % for marginal notes by \CSIndex{if@firstcolumn} whose truth value is % determined by our own \!\@addmarginpar!. We also let $\!\col@number!=1$ % instead of $\C$ so that its (almost surely) sole user \!\maketitle! will @@ -14099,7 +14577,10 @@ % \LaTeX's own macros. Similarly, \!\@addmarginpar! is made \!\let!-equal % to our own \!\pcol@addmarginpar! while its orginal definition is saved % into \!\pcol@@addmarginpar! but in this case we need the original for the -% implementaion of our own. +% implementaion of our own. On the other hand, \!\end@dblfloat! is simply +% replaced with our own \!\pcol@end@dblfloat! being what \LaTeX{} had had until +% 2014 as discussed in item-(\ref{item:ovv-float-end@dblfloat}) of +% Section~\ref{sec:imp-ovv-float}. %  % \changes{v1.1}{2012/05/11} % {Replace the calculation of \cs{columnwidth} with the call of @@ -14121,6 +14602,8 @@ % \changes{v1.3-2}{2013/09/17} % {Add operations to define the width of columns and column-separating % gaps in right parallel-pages.} +% \changes{v1.32-3}{2015/10/10} +% {Add replacement of \cs{end@dblfloat} with \cs{pcol@end@dblfloat}.} %  % \begin{macrocode} \global\@twocolumntrue \col@number\@ne @@ -14136,6 +14619,7 @@ \pcol@lastpagefalse \xdef\pcol@firstprevdepth{\number\prevdepth}% \let\pcol@@combinefloats\@combinefloats \let\@combinefloats\pcol@combinefloats \let\pcol@@addmarginpar\@addmarginpar \let\@addmarginpar\pcol@addmarginpar + \let\end@dblfloat\pcol@end@dblfloat % \end{macrocode} % % Fifth, we save the original definition of \!\set@color! into @@ -14470,6 +14954,41 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@dbldeferlist} +% \changes{v1.32-3}{2015/10/10} +% {Add top-level definition in case that future \LaTeX{} removes it at +% all.} +% \begin{macro}{\pcol@end@dblfloat} +% \changes{v1.32-3}{2015/10/10} +% {Added to go back to old mechanism.} +% As discussed in Section~\ref{sec:imp-ovv-float}, 2015 version of \LaTeX{} +% no longer uses \!\@dbldeferlist! but the macro itself is still kept in +% \LaTeX{}. However it will be removed in future to make the first +% \!\@cons! with it resulting in an error. Therefore, here we have its top +% level definition with empty duplicatedly in case of its future +% elimination. The macro \!\end@dblfloat!, on the other hand, is replaced +% with a new definition in the new \LaTeX{} of course, and thus we define +% \!\pcol@end@dblfloat! here to keep its old definition and to replace the +% new one in \env{paracol} environment as discussed in +% item-(\ref{item:ovv-float-end@dblfloat}) of Section~\ref{sec:imp-ovv-float}. +%  +% \begin{macrocode} +\gdef\@dbldeferlist{} +\def\pcol@end@dblfloat{% + \if@twocolumn + \@endfloatbox + \ifnum\@floatpenalty <\z@ + \@largefloatcheck + \@cons\@dbldeferlist\@currbox + \fi + \ifnum \@floatpenalty =-\@Mii \@Esphack\fi + \else + \end@float + \fi +} +% \end{macrocode} +% \end{macro}\end{macro} +% % % % \KeepSpace{6} @@ -15253,20 +15772,35 @@ % {Examine if the argument counter is already in % $\string\mathit{\Theta}^g$ to avoid the duplicatoin in the list % which caused a bug.} +% \changes{v1.32-1}{2015/10/10} +% {Modified according to the introduction of \cs{globalcounter*}.} +% \begin{macro}{\pcol@globalcounter@s} +% \changes{v1.32-1}{2015/10/10} +% {Added for \cs{globalcounter*}.} +% \begin{macro}{\pcol@globalcounter} +% \changes{v1.32-1}{2015/10/10} +% {Renamed from \cs{globalcounter} according to the introduction of +% \cs{globalcounter*}.} % \begin{macro}{\pcol@gcounters} -% The API macro $\!\globalcounter!\ARg{ctr}$, also used in -% \!\pcol@fnlayout@p! to globalize the counter \counter{footnote}, -% defines that $\arg{ctr}$ is a \gcounter, and thus adds it to -% $\CG=\Midx{\!\pcol@gcounters!}$, which has \counter{page} at initial. -% Note that we examines if $\arg{ctr}\in\CG$ prior to the addition to avoid -% the duplication in $\CG$. Also note that initial definition of -% \!\pcol@gcounters! is done by \!\gdef! just for consistent \!\global! -% assignments to it. +% The API macro $\!\globalcounter!\ARg{ctr}$, implemented by +% \!\pcol@globalcounter! and also used in \!\pcol@fnlayout@p! to globalize the +% counter \counter{footnote}, defines that $\arg{ctr}$ is a \gcounter, and +% thus adds it to $\CG=\Midx{\!\pcol@gcounters!}$, which has \counter{page} +% at initial. Note that we examines if $\arg{ctr}\in\CG$ prior to the +% addition to avoid the duplication in $\CG$. Also note that initial +% definition of \!\pcol@gcounters! is done by \!\gdef! just for consistent +% \!\global! assignments to it. On the other hand \!\globalcounter!|*|, +% implemented by \!\pcol@globalcounter@s!, makes all counters kept in +% \!\cl@@ckpt! global by letting \!\pcol@gcounters! have the list. +% Switching these two functionality is done by \!\globalcounter! examining +% if it is followed by a |*| by \!\@ifstar!. %  % \begin{macrocode} %% Counter Operations -\def\globalcounter#1{{% +\def\globalcounter{\@ifstar\pcol@globalcounter@s\pcol@globalcounter} +\def\pcol@globalcounter@s{\global\let\pcol@gcounters\cl@@ckpt} +\def\pcol@globalcounter#1{{% \@tempswafalse \def\reserved@a{#1}% \def\@elt##1{\def\reserved@b{##1}% \ifx\reserved@a\reserved@b \@tempswatrue \fi}% @@ -15274,7 +15808,7 @@ \if@tempswa\else \@cons\pcol@gcounters{{#1}}\fi}} \gdef\pcol@gcounters{\@elt{page}} % \end{macrocode} -% \end{macro}\end{macro} +% \end{macro}\end{macro}\end{macro}\end{macro} %  % \begin{macro}{\localcounter} % \changes{v1.2-6}{2013/05/11} @@ -16254,7 +16788,7 @@ % % % -% \section{Disabing \cs{addcontentsline}} +% \section{Disabling \cs{addcontentsline}} % \label{sec:imp-aconly} % % \begin{macro}{\addcontentsonly} @@ -16429,7 +16963,7 @@ %  % to let \CSIndex{if@tempswa} be $\true$ or $\false$ according to the % enable\slash disable status of $t$. Then, after letting -% $\!\addcontentsline!=\!\pcol@gobblethree!$ for disabing if $\false$, we +% $\!\addcontentsline!=\!\pcol@gobblethree!$ for disabling if $\false$, we % invoke \!\pcol@ac@caption@latex!, being the \LaTeX's orignial \!\@caption!, % giving all three arguments of \!\pcol@ac@caption! itself surrounding % $\arg{lcap}$ with |{| and |}| for the concealment of `|]|'. Finally, we @@ -17975,7 +18509,7 @@ % followed by optional $|[|c|]|$, so that the invoker macro examines if $a$ % can have the optional column oridinal. %  -% \SpecialArrayMainIndex{a}{\pcol@bg@mayhavecol} +% \SpecialArrayMainIndex{a}{\pcol@bg@mayhavecol@} %  % Therefore, the macros just need not to be \!\relax! and thus commonly have % empty bodies. diff --git a/Master/texmf-dist/source/latex/paracol/ltfloat.dtx b/Master/texmf-dist/source/latex/paracol/ltfloat.dtx deleted file mode 100644 index 2669e706b74..00000000000 --- a/Master/texmf-dist/source/latex/paracol/ltfloat.dtx +++ /dev/null @@ -1,1314 +0,0 @@ -% \iffalse meta-comment -% -% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 -% The LaTeX3 Project and any individual authors listed elsewhere -% in this file. -% -% This file is part of the LaTeX base system. -% ------------------------------------------- -% -% It may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3c -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3c or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This file has the LPPL maintenance status "maintained". -% -% The list of all files belonging to the LaTeX base distribution is -% given in the file `manifest.txt'. See also `legal.txt' for additional -% information. -% -% The list of derived (unpacked) files belonging to the distribution -% and covered by LPPL is defined by the unpacking scripts (with -% extension .ins) which are part of the distribution. -% -% \fi -% \iffalse -%%% From File: ltfloat.dtx -% -%<*driver> -% \fi -\ProvidesFile{ltfloat.dtx}[2002/10/01 v1.1v LaTeX Kernel (Floats)] -% \iffalse -\documentclass{ltxdoc} -\GetFileInfo{ltfloat.dtx} -\title{\filename} -\date{\filedate} - \author{% - Johannes Braams\and - David Carlisle\and - Alan Jeffrey\and - Leslie Lamport\and - Frank Mittelbach\and - Chris Rowley\and - Rainer Sch\"opf} - -\begin{document} -\maketitle - \DocInput{\filename} -\end{document} -% -% \fi -% -% \CheckSum{636} -% -% \section{Floats} -% -% The different types of floats are identified by a \meta{type} name, -% which is the name of the counter for that kind of float. For -% example, figures are of type `figure' and tables are of type `table'. -% Each \meta{type} has associated a positive \meta{type number}, which -% is a power of two. E.g.,\\ -% figures might be have type number~1, tables type number~2, programs -% type number~4, etc. -% -% The locations where a float can go are specified by a -% \meta{placement specifier}, which is a list of the possible -% locations, each denoted by a letter as follows: -% \begin{center} -% \begin{tabular}{l@{ : }l@{ --- }l} -% h & here & at the current location in the text.\\ -% t & top & at the top of a text page.\\ -% b & bottom & at the bottom of a text page.\\ -% p & page & on a separate float page -% \end{tabular} -% \end{center} -% In addition, in conjunction with these, you can use `!' which means -% that the current values of the float positioning parameters are -% ignored for this float. (Has no effect on `p', float page -% positioning.) -% For example, `pht' specifies that the float can appear in any of -% three locations: page, here or top. -% -% \StopEventually{} -% -% -% \changes{v1.0a}{1994/03/04}{Initial version, split from latex.dtx} -% \changes{v1.0b}{1994/03/28}{Split further from ltherest.dtx} -% \changes{v1.0e}{1994/04/25}{Changed warning messages} -% \changes{v1.0e}{1994/04/25}{Removed obsolete tracing code} -% \changes{v1.0f}{1994/05/03} -% {(CAR) Added \cs{@largefloatcheck}} -% \changes{v1.0f}{1994/05/03}{Removed unnecessary braces from -% arguments of \cs{@ifnextchar}} -% \changes{v1.0i}{1994/05/22}{Use new warning commands} -% \changes{v1.1e}{1994/11/17} -% {\cs{@tempa} to \cs{reserved@a}} -% \changes{v1.1g}{1994/12/10}{Some temps reinserted temporarily} -% \changes{v1.1n}{1995/11/28}{documentation fixes} -% \changes{v1.1s}{1997/06/16}{documentation fixes} -% -% \subsection{Floating Environments} -% \begin{macrocode} -%<*2ekernel> -\message{floats,} -% \end{macrocode} -% \begin{oldcomments} -% -% Where floats may appear on a page, and how many may appear there -% are specified by the following float placement parameters. The -% numbers are named like counters so the user can set them with -% the ordinary counter-setting commands. -% -% \c@topnumber : Number of floats allowed at the top of a column. -% \topfraction : Fraction of column that can be devoted to floats. -% \c@dbltopnumber, \dbltopfraction -% : Same as above, but for double-column floats. -% \c@bottomnumber, \bottomfraction -% : Same as above for bottom of page. -% \c@totalnumber : Number of floats allowed in a single column, -% including in-text floats. -% \textfraction :Minimum fraction of column that must contain text. -% \floatpagefraction: Minimum fraction of page that must be taken -% up by float page. -% \dblfloatpagefraction -% : Same as above, for double-column floats. -% -% The document style must define the following. -% -% \fps@TYPE : The default placement specifier for floats of type -% TYPE. -% -% \ftype@TYPE : The type number for floats of type TYPE. -% -% \ext@TYPE : The file extension indicating the file on which the -% contents list for float type TYPE is stored. -% For example, \ext@figure = 'lof'. -% -% \fnum@TYPE : A macro to generate the figure number for a caption. -% For example, \fnum@TYPE == Figure \thefigure. -% -% \@makecaption{NUM}{TEXT} : -% A macro to make a caption, with NUM the value -% produced by \fnum@... and TEXT the text of the caption. -% It can assume it's in a \parbox of the appropriate width. -% -% \@float{TYPE}[PLACEMENT] : This macro begins a float environment for a -% single-column float of type TYPE with PLACEMENT as the placement -% specifier. The default value of PLACEMENT is defined by -% \fps@TYPE. The environment is ended by \end@float. -% E.g., \figure == \@float{figure}, \endfigure == \end@float. -% -% \@float{TYPE}[PLACEMENT] == -% BEGIN -% if hmode then \@bsphack -% \@floatpenalty := -10002 -% else \@floatpenalty := -10003 -% fi -% \@captype ==L TYPE -% \@dblflset -% \@fps ==L PLACEMENT -% \@onelevel@sanitize \@fps -% add default PLACEMENT if at most ! in PLACEMENT == \@fpsadddefault -% if inner -% then LaTeX Error: 'Not in outer paragraph mode.' -% \@floatpenalty := 0 -% else if \@freelist nonempty -% then \@currbox :=L head of \@freelist -% \@freelist :=G tail of \@freelist -% \count\@currbox :=G 32*\ftype@TYPE + -% bits determined by PLACEMENT -% else \@floatpenalty := 0 -% LaTeX Error: 'Too many unprocessed floats' -% fi -% fi -% \@currbox :=G \color@vbox -% \normalcolor -% \vbox{ -% %% 15 Dec 87 -- -% %% removed \boxmaxdepth :=L 0pt -% %% that made box 0 depth because it screwed -% %% things up. Instead, added \vskip0pt at end -% \hsize = \columnwidth -% \@parboxrestore -% \@floatboxreset -% END -% -% \caption == -% BEGIN -% \refstepcounter{\@captype} -% \@dblarg{\@caption{\@captype}} -% END -% -% In following definition, \par moved from after \addcontentsline to -% before \addcontentsline because the \write could cause -% an extra blank line to be added to the paragraph above the -% caption. (Change made 12 Jun 87) -% -% \@caption{TYPE}[STEXT]{TEXT} == -% BEGIN -% \par -% \addcontentsline{\ext@TYPE}{TYPE}{\numberline{\theTYPE}{STEXT}} -% \begingroup -% \@parboxrestore -% \@normalsize -% \@makecaption{\fnum@TYPE}{TEXT} -% \par -% \endgroup -% END -% -% -% \@dblfloat{TYPE}[PLACEMENT] : Macro to begin a float environment for -% a double-column float of type TYPE with PLACEMENT as the placement -% specifier. The default value of PLACEMENT is 'tp' -% The environment is ended by \end@dblfloat. -% E.g., \figure* == \@dblfloat{figure}, -% \endfigure* == \end@dblfloat. -% -% \@dblfloat{TYPE}[PLACEMENT] == -% Identical to \@float{TYPE}[PLACEMENT] except \hsize and \linewidth -% are set to \textwidth. -% \end{oldcomments} -% -% \begin{macro}{\@floatpenalty} -% \begin{macrocode} -\newcount\@floatpenalty -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\caption} -% -% This is set to be an error message outside a float since no -% captype is defined there; this may need to be changed by some -% classes. -% \changes{v1.1u}{1999/04/19} -% {Made caption an error oustside a float: latex/2815} -% \begin{macrocode} -\def\caption{% - \ifx\@captype\@undefined - \@latex@error{\noexpand\caption outside float}\@ehd - \expandafter\@gobble - \else - \refstepcounter\@captype - \expandafter\@firstofone - \fi - {\@dblarg{\@caption\@captype}}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@caption} -% \changes{v1.0b}{1994/03/28} -% {Use \cs{normalsize} not \cs{@normalsize}} -% \changes{v1.1r}{1996/12/06} -% {Call \cs{@setminpage} if needed. latex/2318} -% \begin{macrocode} -\long\def\@caption#1[#2]#3{% - \par - \addcontentsline{\csname ext@#1\endcsname}{#1}% - {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% - \begingroup -% \end{macrocode} -% -% The paragraph setting parameters are normalised at this point, however -% |\@parboxrestore| resets |\everypar| which is not correct in this -% context so |\@setminipage| is called if needed. -% -% The float mechanism, like minipage, sets the flag |@minipage| true -% before executing the user-supplied text. Many \LaTeX\ constructs -% test for this flag and do not add vertical space when it is true. -% The intention is that this emulates \TeX's `top of page' behaviour. -% The flag must be set false at the start of the first paragraph. This -% is achieved by a redefinition of |\everypar|, but the call to -% |\@parboxrestore| removes that redefinition, so it is re-inserted -% if needed. If the flag is already false then the |\caption| was not -% the first entry in the float, and so some other paragraph has already -% activated the special |\everypar|. In this case no further action is -% needed. -% \begin{macrocode} - \@parboxrestore - \if@minipage - \@setminipage - \fi -% \end{macrocode} -% -% \begin{macrocode} - \normalsize - \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par - \endgroup} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@float} -% \begin{macro}{\@dblflset} -% \changes{v1.1a}{1994/10/31}{Macro added} -% \changes{v1.1g}{1994/12/10}{Macro removed temporarily} -% \changes{v1.1a}{1994/10/31} -% {Major changes to parameter parsing, setting of local variables, -% etc; two-column and one-column cases merged; space hacks moved} -% \changes{v1.1c}{1994/11/05} -% {Add compatibility with old version of \cs{@xfloat}.} -% \changes{v1.1g}{1994/12/10}{Old version reinstated temporarily} -% -% \begin{macrocode} -\def\@float#1{% - \@ifnextchar[% - {\@xfloat{#1}}% - {\edef\reserved@a{\noexpand\@xfloat{#1}[\csname fps@#1\endcsname]}% - \reserved@a}} -% \end{macrocode} -% -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@dblfloat} -% \changes{v1.1a}{1994/10/31} -% {Major changes since two-column and one-column cases merged} -% \changes{v1.1g}{1994/12/10}{Old version reinstated temporarily} -% -% \begin{macrocode} -\def\@dblfloat{% - \if@twocolumn\let\reserved@a\@dbflt\else\let\reserved@a\@float\fi - \reserved@a} -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\fps@dbl} -% \changes{v1.1a}{1994/10/31}{Macro added} -% \changes{v1.1g}{1994/12/10}{Macro removed temporarily} -% Note that all double floats have default fps `tp'. -% \end{macro} -% -% \begin{macro}{\@setfps} -% \changes{v1.1a}{1994/10/31}{Macro added} -% \changes{v1.1c}{1994/11/05} -% {Add compatibility with old version of \cs{@xfloat}.} -% \changes{v1.1g}{1994/12/10}{Macro removed temporarily} -% This sets the fps, dealing with error conditions by adding -% the default. -% -% \end{macro} -% -% \begin{macro}{\@xfloat} -% \changes{LaTeX2e}{1993/12/05}{Command changed} -% \changes{LaTeX2e}{1994/01/21}{Added missing percent characters.} -% \changes{v1.1a}{1994/10/31} -% {Major changes, removing setting of local variables, space hacks -% etc; two-column and one-column cases merged} -% \changes{v1.1c}{1994/11/05} -% {Add compatibility with old version of \cs{@xfloat}: but the -% arguments, provided at exorbitant cost, are now completely -% ignored} -% \changes{v1.1f}{1994/11/21} -% {Missing percents reinserted after 4, 8: these are not numbers.} -% \changes{v1.1g}{1994/12/10}{Old version reinstated temporarily} -% \changes{v1.1g}{1994/12/10}{Sanitisation added temporarily} -% The first part of this sets the count register that stores all -% the information about the type and fps of the float. -% -% We assume here that the default specifiers already contain no -% active characters. -% -% It may be better to store the defaults as numbers, rather than -% symbol strings. -% -% \changes{v1.1p}{1996/10/24}{Added \cs{@nodocument} to trap -% floats in the preamble} -% \begin{macrocode} -\def\@xfloat #1[#2]{% - \@nodocument - \def \@captype {#1}% - \def \@fps {#2}% - \@onelevel@sanitize \@fps - \def \reserved@b {!}% - \ifx \reserved@b \@fps - \@fpsadddefault - \else - \ifx \@fps \@empty - \@fpsadddefault - \fi - \fi - \ifhmode - \@bsphack - \@floatpenalty -\@Mii - \else - \@floatpenalty-\@Miii - \fi - \ifinner - \@parmoderr\@floatpenalty\z@ - \else - \@next\@currbox\@freelist - {% - \@tempcnta \sixt@@n - \expandafter \@tfor \expandafter \reserved@a - \expandafter :\expandafter =\@fps - \do - {% - \if \reserved@a h% - \ifodd \@tempcnta - \else - \advance \@tempcnta \@ne - \fi - \fi - \if \reserved@a t% - \@setfpsbit \tw@ - \fi - \if \reserved@a b% - \@setfpsbit 4% - \fi - \if \reserved@a p% - \@setfpsbit 8% - \fi - \if \reserved@a !% - \ifnum \@tempcnta>15 - \advance\@tempcnta -\sixt@@n\relax - \fi - \fi - }% - \@tempcntb \csname ftype@\@captype \endcsname - \multiply \@tempcntb \@xxxii - \advance \@tempcnta \@tempcntb - \global \count\@currbox \@tempcnta - }% - \@fltovf - \fi -% \end{macrocode} -% The remainder sets up the box in which the float is typeset, and -% the typesetting environment to be used. It is essential to have -% the extra box to avoid the unwanted space that would otherwise -% often be put at the top of the float. -% -% It ends with a hook; not sure how useful this is but it is needed -% at present to deal with double-column floats. -% \task{CAR?}{Sort out hooks} -% \changes{v1.0a}{1994/03/07} -% {(DPC) Extra group for colour} -% \changes{v1.0c}{1994/03/14} -% {(DPC) Use \cs{color@begingroup}} -% \changes{v1.0g}{1994/05/13} -% {(DPC) Use \cs{normalcolor}} -% \changes{v1.1a}{1994/10/31} -% {(DPC/CAR) Extra box added to remove colour resetting from vmode} -% \changes{v1.1a}{1994/10/31}{Reset hook added} -% \changes{v1.1c}{1994/11/05} -% {Use new \cs{color@hbox} concept.} -% \changes{v1.1f}{1994/11/21} -% {Changed to \cs{color@vbox} so that large floats overflow -% at the bottom} -% \changes{v1.1f}{1994/11/21}{Use \cs{@setnobreak}} -% \changes{v1.1f}{1994/11/21}{Added \cs{@setminipage}} -% \changes{v1.1f}{1994/11/21}{Added resetting of size and font} -% \changes{v1.1m}{1995/05/25}{(CAR) Resettings moved to hook} -% \begin{macrocode} - \global \setbox\@currbox - \color@vbox - \normalcolor - \vbox \bgroup - \hsize\columnwidth - \@parboxrestore - \@floatboxreset -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@floatboxreset} -% \changes{v1.1a}{1994/10/31}{Macro added} -% -% The rational for allowing these normally global flags to be set -% locally here, via |\@parboxrestore|, was stated originally by -% Donald Arseneau and extended by Chris Rowley. -% It is because these flags are only set globally to -% true by section commands, and these should never appear within -% marginals or floats or, indeed, in any group; and they are only ever -% set globally to false when they are definitely true. -% -% If anyone is unhappy with this argument then both flags should be -% treated as in |\set@nobreak|; otherwise this command will be -% redundant. -% \changes{v1.1p}{1996/10/24} -% {Added local settings of flags: dangerous!!} -% \begin{macrocode} -\def \@floatboxreset {% - \reset@font - \normalsize - \@setminipage -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@setnobreak} -% \changes{v1.1f}{1994/11/21}{Macro added} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before -% \cs{@nobreak...}} -% \begin{macrocode} -\def \@setnobreak{% - \if@nobreak - \let\outer@nobreak\@nobreaktrue - \@nobreakfalse - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@setminipage} -% \changes{v1.1f}{1994/11/21}{Macro added} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before -% \cs{@minipage...}} -% \begin{macrocode} -\def \@setminipage{% - \@minipagetrue - \everypar{\@minipagefalse\everypar{}}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\end@float} -% \changes{v1.0f}{1994/05/03} -% {(CAR) Added \cs{@largefloatcheck}} -% \changes{v1.1n}{1995/10/25}{(CAR) unify code for double and -% single versions} -% \begin{macrocode} -\def\end@float{% - \@endfloatbox - \ifnum\@floatpenalty <\z@ -% \end{macrocode} -% We make sure that we never exceed |\textheight|, otherwise float -% will never get typeset (91/03/15 FMi). -% \begin{macrocode} - \@largefloatcheck - \@cons\@currlist\@currbox - \ifnum\@floatpenalty <-\@Mii - \penalty -\@Miv -% \end{macrocode} -% Saving and restoring |\prevdepth| added 26 May 87 to prevent extra -% vertical space when used in vertical mode. -% \begin{macrocode} - \@tempdima\prevdepth - \vbox{}% - \prevdepth\@tempdima -% \end{macrocode} -% -% \begin{macrocode} - \penalty\@floatpenalty -% \end{macrocode} -% \changes{LaTeX2.09}{1992/03/18} -% {(RmS) changed \cs{@esphack} to \cs{@Esphack}} -% \begin{macrocode} - \else - \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\end@dblfloat} -% \changes{v1.0f}{1994/05/03}{\cs{@largefloatcheck} added} -% \changes{v1.1n}{1995/10/25}{(CAR) unify code for double and -% single versions} -% \begin{macrocode} -\def\end@dblfloat{% -\if@twocolumn - \@endfloatbox - \ifnum\@floatpenalty <\z@ -% \end{macrocode} -% We make sure that we never exceed |\textheight|, otherwise float -% will never get typeset (91/03/15 FMi). -% \begin{macrocode} - \@largefloatcheck - \@cons\@dbldeferlist\@currbox - \fi -% \end{macrocode} -% RmS 92/03/18 changed |\@esphack| to |\@Esphack|. -% \begin{macrocode} - \ifnum \@floatpenalty =-\@Mii \@Esphack\fi -\else - \end@float -\fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@endfloatbox} -% \changes{v1.1n}{1995/10/25}{(CAR) macro added: to unify code for -% double and single versions} -% This macro is not intended to be a hook; it is designed to help -% maintain the integrity of this code, which is used twice and, as -% can be seen, is subject to frequent changes. -% \begin{macrocode} -\def \@endfloatbox{% - \par\vskip\z@skip %% \par\vskip\z@ added 15 Dec 87 -% \end{macrocode} -% \changes{v1.0a} -% {1994/03/07}{(DPC) Extra group for colour} -% \changes{v1.0c}{1994/03/14} -% {(DPC) Use \cs{color@endgroup}} -% \changes{v1.0h}{1994/05/20}{Restore outer value of @nobreak switch.} -% \changes{v1.1a}{1994/10/31} -% {(DPC/CAR) Extra box added to remove colour resetting from vmode} -% \changes{v1.1c}{1994/11/05} -% {Use new \cs{color@hbox} concept.} -% \changes{v1.1f}{1994/11/21}{Corrected position of \cs{outer@nobreak}} -% \changes{v1.1f}{1994/11/21}{Added reset of minipage flag} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before -% \cs{@minipage...}} -% \begin{macrocode} - \@minipagefalse - \outer@nobreak - \egroup %% end of vbox - \color@endbox -} -% -% \begin{macro}{\outer@nobreak} -% \changes{v1.0h}{1994/05/20}{Macro added: default is to do nothing.} -% \begin{macrocode} -\let\outer@nobreak\@empty -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\@largefloatcheck} -% \changes{v1.0e}{1994/04/25}{Command added} -% -% This calculates by how much a float is oversize for the page and -% prints this in a warning message. -% -% \begin{macrocode} -\def \@largefloatcheck{% - \ifdim \ht\@currbox>\textheight - \@tempdima -\textheight - \advance \@tempdima \ht\@currbox -% \end{macrocode} -% \changes{v1.0e}{1994/04/25}{Changed warning message to give more -% info} -% \begin{macrocode} - \@latex@warning {Float too large for page by \the\@tempdima}% - \ht\@currbox \textheight - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@dbflt} -% \begin{macro}{\@xdblfloat} -% \changes{v1.1a}{1994/10/31} -% {Macros removed: \cs{@dbflt}, \cs{@xdblfloat}} -% \changes{v1.1g}{1994/12/10}{Macros reinserted temporarily} -% -% -% \begin{macrocode} -\def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tp]}} -\def\@xdblfloat#1[#2]{% - \@xfloat{#1}[#2]\hsize\textwidth\linewidth\textwidth} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% -% Moved to ltoutput 93/12/16 -% \begin{macrocode} -%\newcount\c@topnumber -%\newcount\c@dbltopnumber -%\newcount\c@bottomnumber -%\newcount\c@totalnumber -% \end{macrocode} -% -% An analysis of |\@floatplacement|: -% -% This should be called whenever |\@colht| has been set. -% \begin{macrocode} -\def\@floatplacement{\global\@topnum\c@topnumber - % Textpage bit, global: - \global\@toproom \topfraction\@colht - \global\@botnum \c@bottomnumber - \global\@botroom \bottomfraction\@colht - \global\@colnum \c@totalnumber - % Floatpage bit, local: - \@fpmin \floatpagefraction\@colht} -% \end{macrocode} -% -% \begin{macro}{\@dblfloatplacement} -% \changes{LaTeX2e}{1993/12/05}{Command changed} -% -% This should be called only within a group. Now changed to -% provide extra checks in |\@addtodblcol|, needed when processing a -% BANG float. -% -% \begin{macrocode} -\def \@dblfloatplacement {% -% \end{macrocode} -% Textpage bit: global, but need not be. -% \begin{macrocode} - \global \@dbltopnum \c@dbltopnumber - \global \@dbltoproom \dbltopfraction\@colht -% \end{macrocode} -% This new bit uses |\@textmin| to locally store the amount of extra -% room in the column. -% \begin{macrocode} - \@textmin \@colht - \advance \@textmin -\@dbltoproom -% \end{macrocode} -% Floatpage bit: must be local. -% \begin{macrocode} - \@fpmin \dblfloatpagefraction\textheight - \@fptop \@dblfptop - \@fpsep \@dblfpsep - \@fpbot \@dblfpbot -} -% \end{macrocode} -% \end{macro} -% -% -% \begin{oldcomments} -% MARGINAL NOTES: -% -% Marginal notes use the same mechanism as floats to communicate -% with the \output routine. Marginal notes are distinguished from -% floats by having a negative placement specification. The command -% \marginpar [LTEXT]{RTEXT} generates a marginal note in a parbox, -% using LTEXT if it's on the left and RTEXT if it's on the right. -% (Default is RTEXT = LTEXT.) It uses the following parameters. -% -% \marginparwidth : Width of marginal notes. -% \marginparsep : Distance between marginal note and text. -% the page layout to determine how to move the marginal -% note into the margin. E.g., \@leftmarginskip == -% \hskip -\marginparwidth \hskip -\marginparsep . -% \marginparpush : Minimum vertical separation between \marginpar's -% -% Marginal notes are normally put on the outside of the page -% if @mparswitch = true, and on the right if @mparswitch = false. -% The command \reversemarginpar reverses the side where they -% are put. \normalmarginpar undoes \reversemarginpar. -% These commands have no effect for two-column output. -% -% SURPRISE: if two marginal notes appear on the same line of -% text, then the second one could appear on the next page, in -% a funny position. -% -% -% \marginpar [LTEXT]{RTEXT} == -% BEGIN -% if hmode then \@bsphack -% \@floatpenalty := -10002 -% else \@floatpenalty := -10003 -% fi -% if inner -% then LaTeX Error: 'Not in outer paragraph mode.' -% \@floatpenalty := 0 -% else if \@freelist has two elements: -% then get \@marbox, \@currbox from \@freelist -% \count\@marbox :=G -1 -% else \@floatpenalty := 0 -% LaTeX Error: 'Too many unprocessed floats' -% \@currbox, \@marbox := \@tempboxa %%use \def -% fi -% fi -% if optional argument -% then %% \@xmpar == -% \@savemarbox\@marbox{LTEXT} -% \@savemarbox\@currbox{RTEXT} -% else %% \@ympar == -% \@savemarbox\@marbox{RTEXT} -% \box\@currbox :=G \box\@marbox -% fi -% \@xympar -% END -% -% \reversemarginpar == BEGIN \@mparbottom :=G 0 -% @reversemargin :=G true -% END -% -% \normalmarginpar == BEGIN \@mparbottom :=G 0 -% @reversemargin :=G false -% END -% -% \end{oldcomments} -% -% \begin{macro}{\marginpar} -% \begin{macrocode} -\def\marginpar{% - \ifhmode - \@bsphack - \@floatpenalty -\@Mii - \else - \@floatpenalty-\@Miii - \fi - \ifinner - \@parmoderr - \@floatpenalty\z@ - \else - \@next\@currbox\@freelist{}{}% - \@next\@marbox\@freelist{\global\count\@marbox\m@ne}% - {\@floatpenalty\z@ - \@fltovf\def\@currbox{\@tempboxa}\def\@marbox{\@tempboxa}}% - \fi - \@ifnextchar [\@xmpar\@ympar} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@xmpar} -% \begin{macrocode} -\long\def\@xmpar[#1]#2{% - \@savemarbox\@marbox{#1}% - \@savemarbox\@currbox{#2}% - \@xympar} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@ympar} -% \begin{macrocode} -\long\def\@ympar#1{% - \@savemarbox\@marbox{#1}% - \global\setbox\@currbox\copy\@marbox - \@xympar} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@savemarbox} -% \changes{v1.0b}{1994/03/12} -% {(DPC) Extra group for colour} -% \changes{v1.0c}{1994/03/14} -% {(DPC) Use \cs{color@begingroup}} -% \changes{v1.0d}{1994/04/18} -% {(DPC) Remove Colour support} -% \changes{v1.1a}{1994/10/31} -% {(DPC/CAR) Extra box added for colour} -% \changes{v1.1c}{1994/11/05} -% {Use new \cs{color@hbox} concept.} -% \changes{v1.1f}{1994/11/21}{Changed to \cs{color@vbox} } -% \changes{v1.1f}{1994/11/21}{Use \cs{@setnobreak} etc} -% \changes{v1.1f}{1994/11/21}{Added \cs{@setminipage} etc} -% \changes{v1.1f}{1994/11/21}{Added resetting of size and font} -% \changes{v1.1m}{1995/05/25}{(CAR) Resettings moved to hook} -% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before -% \cs{@minipage...}} -% \begin{macrocode} -\long\def \@savemarbox #1#2{% - \global\setbox #1% - \color@vbox - \vtop{% - \hsize\marginparwidth - \@parboxrestore - \@marginparreset - #2% - \@minipagefalse - \outer@nobreak - }% - \color@endbox -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@marginparreset} -% \changes{v1.1f}{1994/11/21}{Macro added} -% -% The rational for allowing these normally global flags to be set -% locally here, via |\@parboxrestore| was stated originally by -% Donald Arsenau and extended by Chris Rowley. -% It is because these flags are only set globally to -% true by section commands, and these should never appear within -% marginals or floats or, indeed, in any group; and they are only ever -% set globally to false when they are definitely true. -% -% If anyone is unhappy with this argument then both flags should be -% treated as in |\set@nobreak|; otherwise this command will be -% redundant. -% \changes{v1.1p}{1996/10/24} -% {Added local settings of flags: dangerous!!} -% \begin{macrocode} -\def \@marginparreset {% - \reset@font - \normalsize -% \let\if@nobreak\iffalse -% \let\if@noskipsec\iffalse -% \@setnobreak - \@setminipage -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@xympar} -% \begin{macrocode} -% \end{macrocode} -% \changes{LaTeX2.09}{1992/03/18} -% {(RmS) added \cs{global}\cs{@ignorefalse}} -% \changes{v1.0b}{1994/03/12} -% {(DPC) Extra bgroup for colour} -% \changes{1.0c}{1994/03/14} -% {(DPC) Use \cs{color@begingroup}} -% \changes{v1.1a}{1994/10/31} -% {(DPC/CAR) Extra box added since needed for floats} -% \changes{v1.1c}{1994/11/05} -% {Use new \cs{color@hbox} concept.} -% \changes{v1.1f}{1994/11/21}{Changed to \cs{color@vbox} } -% Setting the box here is done only because the code -% uses \cs{end@float}; it will be empty and gets discarded. -% \changes{v1.1o}{1996/08/02}{Remove \cs{global} before \cs{@ignore...}} -% \begin{macrocode} -\def \@xympar{% - \ifnum\@floatpenalty <\z@\@cons\@currlist\@marbox\fi - \setbox\@tempboxa - \color@vbox - \vbox \bgroup - \end@float - \@ignorefalse - \@esphack -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\reversemarginpar} -% \begin{macro}{\normalmarginpar} -% \begin{macrocode} -\def\reversemarginpar{\global\@mparbottom\z@ \@reversemargintrue} -\def\normalmarginpar{\global\@mparbottom\z@ \@reversemarginfalse} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macrocode} -\message{footnotes,} -% \end{macrocode} -% -% \subsection{Footnotes} -% -% \begin{oldcomments} -% -% \footnote{NOTE} : User command to insert a footnote. -% -% \footnote[NUM]{NOTE}: User command to insert a footnote numbered -% NUM, where NUM is a number -- 1, 2, -% etc. For example, if footnotes are numbered -% *, **, etc. within pages, then \footnote[2]{...} -% produces footnote '**'. This command does not -% step the footnote counter. -% -% \footnotemark[NUM] : Command to produce just the footnote mark in -% the text, but no footnote. With no argument, -% it steps the footnote counter before generating -% the mark. -% -% \footnotetext[NUM]{TEXT} : Command to produce the footnote but -% no mark. \footnote is equivalent to -% \footnotemark \footnotetext . -% -% As in PLAIN, footnotes use \insert\footins, and the following -% parameters: -% -% \footnotesize : Size-changing command for footnotes. -% -% \footnotesep : The height of a strut placed at the beginning of -% every footnote. -% \skip\footins : Space between main text and footnotes. The rule -% separating footnotes from text occurs in this -% space. This space lies above the strut of height -% \footnotesep which is at the beginning of the -% first footnote. -% \footnoterule : Macro to draw the rule separating footnotes from -% text. It is executed right after a \vspace of -% \skip\footins. It should take zero vertical -% space--i.e., it should to a negative skip to -% compensate for any positive space it occupies. -% (See PLAIN.TEX.) -% -% \interfootnotelinepenalty : Interline penalty for footnotes. -% -% \thefootnote : In usual LaTeX style, produces the footnote number. -% If footnotes are to be numbered within pages, then -% the document style file must include an \@addtoreset -% command to cause the footnote counter to be reset -% when the page counter is stepped. This is not a good -% idea, though, because the counter will not always be -% reset in time to ensure that the first footnote on a -% page is footnote number one. -% -% \@thefnmark : Holds the current footnote's mark--e.g., \dag or '1' -% or 'a'. -% -% \@mpfnnumber : A macro that generates the numbers for \footnote -% and \footnotemark commands. It == \thefootnote -% outside a minipage environment, but can be -% changed inside to generate numbers for -% \footnote's. -% -% \@makefnmark : A macro to generate the footnote marker from -% \@thefnmark The default definition was -% \hbox{$^\@thefnmark$}. -% -% This is now replaced by -% \textsuperscript{\@thefnmark} -% -% \@makefntext{NOTE} : -% Must produce the actual footnote, using \@thefnmark as the mark -% of the footnote and NOTE as the text. It is called when -% effectively inside a \parbox, with \hsize = \columnwidth. -% For example, it might be as simple as -% $^{\@thefnmark}$ NOTE -% -% In a minipage environment, \footnote and \footnotetext are redefined -% so that -% (a) they use the counter mpfootnote -% (b) the footnotes they produce go at the bottom of the minipage. -% The switch is accomplished by letting \@mpfn == footnote or mpfootnote -% and \thempfn == \thefootnote or \thempfootnote, and by redefining -% \@footnotetext to be \@mpfootnotetext in the minipage. -% -% \footnote{NOTE} == -% BEGIN -% \stepcounter{\@mpfn} -% begingroup -% \protect == \noexpand -% \@thefnmark :=G eval (\thempfn) -% endgroup -% \@footnotemark -% \@footnotetext{NOTE} -% END -% -% \footnote[NUM]{NOTE} == -% BEGIN -% begingroup -% \protect == \noexpand -% counter \@mpfn :=L NUM -% \@thefnmark :=G eval (\thempfn) -% endgroup -% \@footnotemark -% \@footnotetext{NOTE} -% END -% -% \footnotemark == -% BEGIN \stepcounter{footnote} -% begingroup -% \protect == \noexpand -% \@thefnmark :=G eval(\thefootnote) -% endgroup -% \@footnotemark -% END -% -% \footnotemark[NUM] == -% BEGIN -% begingroup -% footnote counter :=L NUM -% \protect == \noexpand -% \@thefnmark :=G eval(\thefootnote) -% endgroup -% \@footnotemark -% END -% -% \@footnotemark == -% BEGIN -% \leavevmode -% IF hmode THEN \@x@sf := \the\spacefactor FI -% \@makefnmark % put number in main text -% IF hmode THEN \spacefactor := \@x@sf FI -% END -% -% \footnotetext == -% BEGIN begingroup \protect == \noexpand -% \@thefnmark :=G eval (\thempfn) -% endgroup -% \@footnotetext -% END -% -% \footnotetext[NUM] == -% BEGIN begingroup counter \@mpfn :=L NUM -% \protect == \noexpand -% \@thefnmark :=G eval (\thempfn) -% endgroup -% \@footnotetext -% END -% -% \end{oldcomments} -% -% -% \changes{v1.1l}{1995/05/24}{Moved definition of \cs{footins} -% and \cs{footnoterule} from ltplain.} -% -% \begin{macro}{\footins} -% \LaTeX\ does use the same insert for footnotes as PLAIN. -% \begin{macrocode} -\newinsert\footins -% \end{macrocode} -% -% \LaTeX\ leaves these initializations for the |\footins| insert. -% -% \begin{macrocode} -\skip\footins=\bigskipamount % space added when footnote is present -\count\footins=1000 % footnote magnification factor (1 to 1) -\dimen\footins=8in % maximum footnotes per page -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\footnoterule} -% \LaTeX\ keeps PLAIN \TeX's |\footnoterule| as the default. -% -% \begin{macrocode} -\def\footnoterule{\kern-3\p@ - \hrule \@width 2in \kern 2.6\p@} % the \hrule is .4pt high -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\thefootnote} -% \changes{v1.1i}{1995/05/16}{Streamlined parts of code.} -% \begin{macrocode} -\@definecounter{footnote} -\def\thefootnote{\@arabic\c@footnote} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\thempfootnote} -% \changes{v1.1j}{1995/05/18}{Added \cs{itshape}.} -% \changes{v1.1v}{2002/10/01}{Use braces around \cs{itshape} -% to keep font change local (pr/3460).} -% The default display for the footnote counter in minipages is to -% use italic letters. We use |\itshape| not |\textit| as the latter -% would add an italic correction. -% \begin{macrocode} -\@definecounter{mpfootnote} -\def\thempfootnote{{\itshape\@alph\c@mpfootnote}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@makefnmark} -% \changes{v1.1i}{1995/05/16}{Now use \cs{textsuperscript}.} -% \changes{v1.1j}{1995/05/18}{Added \cs{normalfont}.} -% \changes{v1.1k}{1995/05/20}{Moved \cs{normalfont} to -% \cs{textsuperscript}} -% \changes{v1.1k}{1995/05/20}{Moved \cs{normalfont} back -% and use \cs{@textsuperscript}} -% Default definition. -% \begin{macrocode} -%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}} -\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textsuperscript} -% \changes{v1.1i}{1995/05/16}{Command added./pr1503} -% \changes{v1.1k}{1995/05/20}{Use \cs{normalfont}.} -% \changes{v1.1l}{1995/05/24}{Use \cs{@textsuperscript}} -% This command provides superscript characters in the current text -% font. It's implementation might change!!! -% \begin{macrocode} -\DeclareRobustCommand*\textsuperscript[1]{% - \@textsuperscript{\selectfont#1}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@textsuperscript} -% \changes{v1.1l}{1995/05/24}{Command added.} -% \changes{v1.1n}{1995/12/05}{Use \cs{ensuremath} for latex/1984.} -% \changes{v1.1m}{1995/12/07} -% {Move \cs{m@th} out of the \cs{ensuremath} for latex/1984.} -% This command should not be used directly, but may be used to define -% other commands |\textsuperscript|, |\@makefnmark|. |#1| should -% always start with a font selection command, to activate the font -% size switch. -% \begin{macrocode} -\def\@textsuperscript#1{% - {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\footnotesep} -% \begin{macrocode} -\newdimen\footnotesep -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\footnote} -% \changes{LaTeX2.09}{1991/11/01} -% {(RmS) Added \cs{let}\cs{protect}\cs{noexpand} in -% \cs{footnote}, \cs{footnotemark}, -% and \cs{footnotetext}, since \cs{xdef} is used} -% \changes{LaTeX2.09}{1991/11/22} -% {(RmS) Added \cs{let}\cs{protect}\cs{noexpand} in -% \cs{@xfootnote}, \cs{@xfootnotemark}, -% and \cs{@xfootnotetext}} -% \changes{LaTeX2.09}{1992/11/26} -% {(RmS) Changed all to -% `def`protect\string{`noexpand`protect`noexpand\string}} -% \changes{v1.1b}{1994/11/26} -% {(ASAJ) Added \cs{protected@xdef}.} -% -% \begin{macrocode} -\def\footnote{\@ifnextchar[\@xfootnote{\stepcounter\@mpfn - \protected@xdef\@thefnmark{\thempfn}% - \@footnotemark\@footnotetext}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@xfootnote} -% \begin{macrocode} -\def\@xfootnote[#1]{% - \begingroup - \csname c@\@mpfn\endcsname #1\relax - \unrestored@protected@xdef\@thefnmark{\thempfn}% - \endgroup - \@footnotemark\@footnotetext} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@footnotetext} -% \changes{LaTeX2.09}{1991/09/29} -% {(RmS) added \cs{reset@font}} -% \changes{LaTeX2.09}{1992/11/26} -% {(RmS) added protection for \cs{edef}} -% \changes{v1.0a}{1994/03/07} -% {(DPC) Extra group for colour} -% \changes{v1.0c}{1994/03/14} -% {(DPC) Use \cs{color@begingroup}, add \cs{endgraf}} -% \changes{v1.0d}{1994/04/18} -% {(DPC) Remove Colour support} -% \changes{v1.0g}{1994/05/13} -% {(DPC) Add new style colour support: \cs{normalcolor}} -% \changes{v1.0g}{1994/05/13} -% {(DPC) Use \cs{@finalstrut}} -% \changes{v1.1a}{1994/10/31} -% {(DPC/CAR) Move colour setting to output routine} -% \changes{v1.1b}{1994/11/04} -% {(ASAJ) Added \cs{protected@edef}.} -% \changes{v1.1c}{1994/11/05} -% {Removed \cs{normalcolor} (again)} -% \changes{v1.1t}{1997/11/19} -% {Missing percent, again} -% \begin{macrocode} -\long\def\@footnotetext#1{\insert\footins{% - \reset@font\footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{% - \csname p@footnote\endcsname\@thefnmark - }% - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% - \color@endgroup}}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\footnotemark} -% \changes{v1.1b}{1994/11/04}{Added \cs{protected@xdef} to -% \cs{footnotemark}.} -% \begin{macrocode} -\def\footnotemark{% - \@ifnextchar[\@xfootnotemark - {\stepcounter{footnote}% - \protected@xdef\@thefnmark{\thefootnote}% - \@footnotemark}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@xfootnotemark} -% \begin{macrocode} -\def\@xfootnotemark[#1]{% - \begingroup - \c@footnote #1\relax - \unrestored@protected@xdef\@thefnmark{\thefootnote}% - \endgroup - \@footnotemark} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@footnotemark} -% \changes{v1.1h}{1995/05/12} -% {Add \cs{nobreak} to allow hyphenation. latex/1605} -% \begin{macrocode} -\def\@footnotemark{% - \leavevmode - \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi - \@makefnmark - \ifhmode\spacefactor\@x@sf\fi - \relax} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\footnotetext} -% \begin{macrocode} -\def\footnotetext{% - \@ifnextchar [\@xfootnotenext - {\protected@xdef\@thefnmark{\thempfn}% - \@footnotetext}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@xfootnotenext} -% \begin{macrocode} -\def\@xfootnotenext[#1]{% - \begingroup - \csname c@\@mpfn\endcsname #1\relax - \unrestored@protected@xdef\@thefnmark{\thempfn}% - \endgroup - \@footnotetext} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\thempfn} -% \begin{macro}{\@mpfn} -% \begin{macrocode} -\def\@mpfn{footnote} -\def\thempfn{\thefootnote} -% -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \Finale -% diff --git a/Master/texmf-dist/source/latex/paracol/man.dtx b/Master/texmf-dist/source/latex/paracol/man.dtx index 8569ce52d9f..f604ba24fac 100644 --- a/Master/texmf-dist/source/latex/paracol/man.dtx +++ b/Master/texmf-dist/source/latex/paracol/man.dtx @@ -346,6 +346,8 @@ % \changes{v1.2-7}{2013/05/11} % {Remove \cs{nosv} from verbatim example of Table~1 shown in the right % column.} +% \changes{v1.32-3}{2015/10/10} +% {Add footnote to mention the page-wise float problem.} % \begin{table}[b]\nosv % \caption{A Single-Column Table} % \centerline{\begin{tabular}[t]{|l|c|r|}\hline @@ -356,13 +358,18 @@ % \subsection{Figures and Tables} % As shown in this page, double-column figures\slash tables (or those % spanned multiple columns if you have three or more) may be placed by -% \env{figure*} and \env{table*} environments as usual. A single-column -% figure\slash table will be placed in the column in which you put -% \env{figure} and \env{table}. For example, the body of a \env{figure} -% environment in a \env{leftcolumn} environment is \emph{always} placed in a -% left column. That is, even if the column of the \emph{current} page does -% not have enough room to place the figure, it will not be thrown to the right -% column but will be placed in the left column of the next page\footnote{ +% \env{figure*} and \env{table*} environments as usual\footnote{ +%  +% See Section~\ref{sec:problem} for the appearance order issue of +% double-column floats.}. +%  +% A single-column figure\slash table will be placed in the column in which +% you put \env{figure} and \env{table}. For example, the body of a +% \env{figure} environment in a \env{leftcolumn} environment is +% \emph{always} placed in a left column. That is, even if the column of the +% \emph{current} page does not have enough room to place the figure, it will +% not be thrown to the right column but will be placed in the left column of +% the next page\footnote{ %  % Or some farther page if \LaTeX{} cannot solve the placement problem wisely.}. % @@ -706,12 +713,10 @@ %\columnratio{0.6} %\begin{paracol}{2} %\begin{leftcolumn} -%O.K., we have restarted |paracol| -%environment... +%O.K., ... %\end{leftcolumn} -%\begin{rightcolumn} %\end{Verbatim} -% \textit{source}\\ +% |\begin{rightcolumn}| \textit{source}\\ % |\end{rightcolumn}| % \flushpage % \end{rightcolumn} diff --git a/Master/texmf-dist/source/latex/paracol/paracol.dtx b/Master/texmf-dist/source/latex/paracol/paracol.dtx index a71db219dbc..40d22cb2806 100644 --- a/Master/texmf-dist/source/latex/paracol/paracol.dtx +++ b/Master/texmf-dist/source/latex/paracol/paracol.dtx @@ -2,7 +2,7 @@ %%% Style file `paracol'. %%% LaTeX file 'paracol-man'. %<*paracol|man> -%% Copyright (C) 2005-2013 +%% Copyright (C) 2005-2015 %% Hiroshi Nakashima %% (Kyoto University) %% This program can be redistributed and/or modified under the terms @@ -19,7 +19,7 @@ %\ProvidesFile{paracol-man.tex} % \fi % \ProvidesFile{paracol.dtx} -[2013/10/10 v1.31 ] +[2015/10/10 v1.32 ] % \iffalse %<*man> \documentclass{ltxdoc}\normalmarginpar @@ -374,6 +374,7 @@ % \def\cswap{column-swapping\Index{column-swapping}} % \def\cswitch{column-switching\Index{column-switching}} % \def\csenv{column-switching environment\Index{column-switching environment}} +% \def\cwise{column-wise\Index{column-wise stuff}} % \def\csync{counter synchronization\Index{counter synchronization}} % \def\ccolpage{current column-page\Index{current column-page}} % \def\Endparacol{\CSIndex{end}\allowbreak @@ -409,6 +410,7 @@ % \def\preenv{pre-environment stuff\Index{pre-environment stuff}} % \def\prespan{pre-spanning-text stuff\Index{pre-spanning-text stuff}} % \def\prim{page rim\Index{page rim}} +% \def\pwise{page-wise\Index{page-wise stuff}} % \def\pwstuff{page-wise stuff\Index{page-wise stuff}} % \def\Scfnote{page-wise footnote\Index{page-wise footnote}} % \def\scfnote{page-wise\Index{page-wise footnote}} @@ -560,62 +562,72 @@ % % % \changes{v0.9}{2005/01/28} -% {The style paracol is born.} +% {The style paracol is born. (2005/01/28)} % \changes{v0.91}{2011/09/16} -% {The style is included in CTAN with a very small modification.} +% {The style is included in CTAN with a very small +% modification. (2011/09/16) } % \changes{v1.0}{2011/10/10} % {Add this document and fix the following problems on the author's -% 30th wedding anniversary.} +% 30th wedding anniversary. (2011/10/10)} % \changes{v1.1}{2012/05/11} -% {Add \cs{columnratio} and variable column width.} +% {Add \cs{columnratio} and variable column width. (2012/05/11)} % \changes{v1.2-1}{2013/05/11} % {Make \string\texttt{paracol} environment accept \cs{color} and add -% \cs{columncolor}.} +% \cs{columncolor}. (2013/05/11)} % \changes{v1.2-2}{2013/05/11} -% {Add page-wise and merged footnote functions.} +% {Add page-wise and merged footnote functions. (2013/05/11)} % \changes{v1.2-3}{2013/05/11} -% {Fix a problem in synchronization.} +% {Fix a problem in synchronization. (2013/05/11)} % \changes{v1.2-4}{2013/05/11} -% {Add column-swapping functions.} +% {Add column-swapping functions. (2013/05/11)} % \changes{v1.2-5}{2013/05/11} % {Allow a \string\texttt{paracol} envrionment is enclosed in list-like -% environments.} +% environments. (2013/05/11)} % \changes{v1.2-6}{2013/05/11} -% {Add \cs{localcounter}.} +% {Add \cs{localcounter}. (2013/05/11)} % \changes{v1.2-7}{2013/05/11} -% {Bug fixes and minor revisions as follows.} +% {Bug fixes and minor revisions as follows. (2013/05/11)} % \changes{v1.21}{2013/06/06} % {Fix the bug by which a column having empty column-pages followed by -% a synchronization point is lost or placed in a wrong page.} +% a synchronization point is lost or placed in a wrong +% page. (2013/06/06)} % \changes{v1.22}{2013/06/30} % {Fix the bug that \cs{color} and its relatives in a paragraph or -% around page top causes inconsistency of color context.} +% around page top causes inconsistency of color context. (2013/06/30)} % \changes{v1.23}{2013/07/08} % {Fix the problem that a colored text has a line break candidate at -% its end inappropriately.} +% its end inappropriately. (2013/07/08)} % \changes{v1.24}{2013/07/27} % {Fix the problem caused by the concealment of \cs{vadjust} in math -% group.} +% group. (2013/07/27)} % \changes{v1.3-1}{2013/09/17} % {Fix the known problem of the placement of page-crossing spanning -% texts.} +% texts. (2013/09/17)} % \changes{v1.3-2}{2013/09/17} -% {Introduce parallel-paging.} +% {Introduce parallel-paging. (2013/09/17)} % \changes{v1.3-3}{2013/09/17} -% {Introduce column-separating rule drawing and background painting.} +% {Introduce column-separating rule drawing and background +% painting. (2013/09/17) } % \changes{v1.3-4}{2013/09/17} % {Introduce API for column/gap width and marginal note position -% specification.} +% specification. (2013/09/17)} % \changes{v1.3-5}{2013/09/17} % {Introduce \cs{thecolumn} and \cs{ensurevspace}, -% \cs{footnotelayout}, \cs{twosided} and \cs{cleardoublepage}.} +% \cs{footnotelayout}, \cs{twosided} and +% \cs{cleardoublepage}. (2013/09/17)} % \changes{v1.3-6}{2013/09/17} % {Fix a few problems mainly related to synchronization and ordinary -% footnotes.} +% footnotes. (2013/09/17)} % \changes{v1.31}{2013/10/10} % {Add passing paramenters related sectioning commmands beyond % \cs{end}\texttt{\char`\{paracol\char`\}} and fix misspells in -% error messages.} +% error messages. (2013/10/10)} +% \changes{v1.32-1}{2015/10/10} +% {Add \cs{globalcounter*} to make all counters global. (2015/10/10)} +% \changes{v1.32-2}{2015/10/10} +% {Fix a memory leak in \cs{pcol@startcolumn}. (2015/10/10)} +% \changes{v1.32-3}{2015/10/10} +% {Fix the page-wise float problem. (2015/10/10)} % % % @@ -692,8 +704,9 @@ % packages; %  % Heiner Richter who asked for the possibility of swapping unbalanced -% columns, then revealed two bugs in version 1.22 related to coloring and -% float pages, and finally showed the necessity of \!\coloredwordhyphnated!; +% columns, revealed two bugs in version 1.22 related to coloring and +% float pages, showed the necessity of \!\coloredwordhyphenated!, and finally +% found the necessity of \!\globalcounter!|*|; %  % an anonymous user who reported a very rare-case but severe bug in the % version~1.1 by which a page can be lost (whoops!); @@ -719,8 +732,14 @@ % capability of rule drawing in the gaps separating columns and painting % backgrounds of columns and so on; %  -% and Michael Bolin who gave the author motivated examples showing the +% Michael Bolin who gave the author motivated examples showing the % necessity of \!\ensurevspace!. +%  +% Tigran Aivazian who reported a memory leak problem fixed in version 1.32; +%  +% and Marcus Zelezny and Touhami Mamouni who found an incompatibility with +% \LaTeX{} itself (2015/01/10 or later) and enlighten the author on the cause +% of the problem. % % For the implementation of the style file, the author referred to the base % implementations of \texttt{\char`\\output}, \texttt{\char`\\newcounter} diff --git a/Master/texmf-dist/source/latex/paracol/probs.dtx b/Master/texmf-dist/source/latex/paracol/probs.dtx index e8c69fd556d..f2d716d60ea 100644 --- a/Master/texmf-dist/source/latex/paracol/probs.dtx +++ b/Master/texmf-dist/source/latex/paracol/probs.dtx @@ -9,13 +9,6 @@ % \changes{v1.3-3}{2013/09/17} % {Remove the problem description of the lack of column-separating rule % drawing because it has been implmented.} -% \changes{v1.3-6}{2013/09/17} -% {Add comments about usage of \cs{paragraph} etc.\ in spanning texts.} -% \changes{v1.3-2}{2013/09/17} -% {Add comments about the limitaion of parallel-paging.} -% \changes{v1.3-3}{2013/09/17} -% {Add comments about the imperfectnss of extention of backgrond -% painting regions.} % % Here a few problems you could face in the use of \textsf{paracol} are % summarized. @@ -99,6 +92,8 @@ % \end{itemize} % % \item +% \changes{v1.3-6}{2013/09/17} +% {Add comments about usage of \cs{paragraph} etc.\ in spanning texts.} % \begingroup\parskip\z@ % As the author did for Section\Tie1 to \ref{sec:float}, sometimes you will % make a section header spanning all columns by giving a sectioning command @@ -161,18 +156,47 @@ % \env{paracol} environment cannot be broken into two (or more) pages. % % \item +% \changes{v1.3-2}{2013/09/17} +% {Add comments about the limitaion of parallel-paging.} +%  % As the author confessed in Section\Tie\ref{sec:ppts-paired}, right % \parapag{}es cannot have \pwstuff{} but have blank spaces in the % corresponding region for them. The author will try to remove this % limitation from a future version of \Paracol, in the version 1.4 hopefully. % % \item +% \changes{v1.3-3}{2013/09/17} +% {Add comments about the imperfectnss of extention of backgrond +% painting regions.} % \begin{Hfuzz}{1.5pt} % As discussed in Section\Tie\ref{sec:bgpaint-me}, it is desirable that % \bgpaint{} region definition in \!\backgroundcolor! has position dependent % extensions. The author is fairly optimistic about the incorporation of % this advanced feature in the version 1.4. % \end{Hfuzz} +% +% \item +% \changes{v1.32-3}{2015/10/10} +% {Add comments about the out-of-order appearance of page-wise floats +% even with \protect\LaTeX-2015/01/10 or later.} +% In the release on 2015/01/10, \LaTeX{} changed its mechanism of the +% placement of double-column floats (or in our terminology, \pwise{} +% floats) to avoid {\em out-of-order\/} appearance of them. That is, until +% the release on 2014/05/01 a double-column float (e.g., \env{figure*}) can +% be overtaken by a single-column float of the same category (e.g., +% \env{figure}) when they cannot be put into the page in which texts around +% them are put. In order to cope with the problem, the new version merged +% two lists to keep {\em deferred\/} double- and single-column floats into +% one so that the appearance order of them is determined by their order in +% the single list. Though this change should have made people happy when +% they typeset {\em ordinary\/} two-column (or multiple-column) documents, +% the new feature might not be welcomed by \Paracol{} users because your +% parallel-columns have their own {\em stream\/} of floats to be put in the +% corresponding columns. Therefore, and for the sake of simplicity of +% \Paracol's implementation, the author decided to nullify this new feature +% in \env{paracol} environments. That is, even with new releases of +% \LaTeX{}, your \pwise{} floats given in a \env{paracol} environment can be +% overtaken by \cwise{} floats. % \end{itemize} % % In addition to the problems above known to the author, there may be (or diff --git a/Master/texmf-dist/source/latex/paracol/ref.dtx b/Master/texmf-dist/source/latex/paracol/ref.dtx index 98bd32a2abf..c28ad26d3dd 100644 --- a/Master/texmf-dist/source/latex/paracol/ref.dtx +++ b/Master/texmf-dist/source/latex/paracol/ref.dtx @@ -36,7 +36,7 @@ % if provided, with a vertical skip of \!\textfloatsep! separating them if % bottom floats exist. The \emph{deferred} floats which have not yet % appeared in the starting page and thus will appear in the next or -% succeeding pages are considered as page-wise floats given in the +% succeeding pages are considered as \pwise{} floats given in the % environment. % % \item @@ -109,7 +109,7 @@ % the {\em\Uidx\postenv} being the single-column texts and others % following \Endparacol{} in the {\em\Uidx\lpage} of the environment may not % start from the top of a page. If any columns don't have deferred -% column-wise floats and the most advanced {\em\Uidx\lcolumn} at +% \cwise{} floats and the most advanced {\em\Uidx\lcolumn} at % \Endparacol{} has neither of footnotes\footnote{ %  % With \Mgfnote{} layout shown in Section~\ref{sec:ref-scfnote}, the @@ -120,11 +120,11 @@ % nor bottom floats, its bottom is naturally connected to the \postenv{}. % If the \lcolumn{} has these kinds of bottom stuff, they are put above the % \postenv{}, with a vertical skip of \!\textfloatsep! separating them if -% bottom floats exist. All deferred column-wise floats given in the +% bottom floats exist. All deferred \cwise{} floats given in the % environment are flushed before the \postenv{} appears, possibly creating % {\em\Uidx\fcolumn{}s} only with floats. On the other hand, deferred -% page-wise floats given in the environment are considered as deferred -% (single-) column-wise floats given just after \Endparacol. +% \pwise{} floats given in the environment are considered as deferred +% (single-) \cwise{} floats given just after \Endparacol. % % \item % The values of all \lcounter{}s in the leftmost column are used as the @@ -169,7 +169,7 @@ %  % \begin{itemize} % \item -% All {\em\Uidx\pwstuff}, i.e., \Preenv{} and \postenv, page-wise floats, +% All {\em\Uidx\pwstuff}, i.e., \Preenv{} and \postenv, \pwise{} floats, % \mctext{} and (\mgfnote{} or non-merged) \Scfnote{}s, are placed only in % left \parapag{}es leaving corresponding regions in right \parapag{}es % blank\footnote{ @@ -828,13 +828,20 @@ % % % +% \newpage % \subsection{Commands for Counters} % \label{sec:ref-counter} % % \begin{description} -% \item[\Midx{\!\globalcounter!}\marg{ctr}]\mbox{}\par -% The command declares that the counter \meta{ctr} is global to all columns. -% An update of a \Uidx\gcounter{} in a column is seen by any other columns. +% \item[\Midx{\!\globalcounter!}\marg{ctr}]\mbox{} +% \Item[\Midx{\!\globalcounter!}\texttt{*}]\mbox{}\par +% \changes{v1.32-1}{2015/10/10} +% {Add descriptions of \cs{globalcounter*}.} +%  +% The command \!\globalcounter!\marg{ctr} declares that the counter +% \meta{ctr} is global to all columns, while \!\globalcounter!|*| does so +% for all counters. An update of a \Uidx\gcounter{} in a column is seen by +% any other columns. %  % \begin{itemize} % \item @@ -857,6 +864,15 @@ % might have in ordinary \LaTeX{} documents.}. % % \item +% All counters except for \counter{page} are local by default. This feature +% may cause a problem with some packages including \textsf{marginnote} and +% \textsf{(auto-)pst-pdf} having their own counters which must be global. +% Since it is tough to find the name of such counters from package sources, +% if you have something wrong with these (or other) packages, try to put +% \!\globalcounter!|*| in your preamble and use \!\localcounter! shown below +% to localize specific counters which you need to be local. +% +% \item % Globalizing a \meta{ctr} being already global is just ignored without any % complaints. % \end{itemize} @@ -1171,7 +1187,7 @@ % The rules are drawn if \LaTeX's typesetting parameter \!\columnseprule! % for the rule width has non-zero value, e.g., 0.4\,|pt| to obey the % standard rule thickness. The rules are \emph{not} drawn on \pwstuff{}, -% i.e., \Preenv{} and \postenv, page-wise floats or (\mgfnote{} or +% i.e., \Preenv{} and \postenv, \pwise{} floats or (\mgfnote{} or % non-merged) \Scfnote{}s of course but also \mctext{}s. Therefore, if a % page has \mctext{}s, the rules are {\em broken} by them as shown in the % red rule example below. @@ -1249,7 +1265,7 @@ % % \item[|s|\rm(\textit{panning})] for \mctext{}s. % -% \item[|f|\rm(\textit{loat})] for page-wise floats. +% \item[|f|\rm(\textit{loat})] for \pwise{} floats. % % \item[|n|\rm(\textit{ote})] for (\mgfnote{} or non-merged) \Scfnote{}s. % @@ -1420,9 +1436,9 @@ % \item[\Midx{\!\clearpage!}]\mbox{}\par % The command does what \!\flushpage! does and then flushes all floats still % deferred if any. The deferred float flushing beyond the \tpage{} takes -% place at first for column-wise ones creating \fcolumn{}s for them, and -% then for page-wise ones creating {\em\Uidx\fpage{}s} only with -% page-wise floats, as \LaTeX's \!\clearpage! does outside \env{paracol} +% place at first for \cwise{} ones creating \fcolumn{}s for them, and +% then for \pwise{} ones creating {\em\Uidx\fpage{}s} only with +% \pwise{} floats, as \LaTeX's \!\clearpage! does outside \env{paracol} % environment. % % \item[\Midx{\!\cleardoublepage!}]\mbox{}\par diff --git a/Master/texmf-dist/tex/latex/paracol/paracol.sty b/Master/texmf-dist/tex/latex/paracol/paracol.sty index 3abdb891ee8..17a55ec5a2e 100644 --- a/Master/texmf-dist/tex/latex/paracol/paracol.sty +++ b/Master/texmf-dist/tex/latex/paracol/paracol.sty @@ -1,5 +1,5 @@ %% Style file `paracol'. -%% Copyright (C) 2005-2013 +%% Copyright (C) 2005-2015 %% Hiroshi Nakashima %% (Kyoto University) %% This program can be redistributed and/or modified under the terms @@ -9,7 +9,7 @@ \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{paracol} -[2013/10/10 v1.31 ] +[2015/10/10 v1.32 ] %% Register Declaration @@ -88,6 +88,23 @@ \def\pcol@Logfn@i#1{} \pcol@LogLevel111 +\iffalse +\newwrite\pcol@F@write +\immediate\openout\pcol@F@write\jobname.fls +\fi +\def\pcol@F#1{\pcol@FF{#1}{}} +\def\pcol@FF#1#2{\pcol@F@count + \immediate\write\pcol@F@write{#1(\number\pcol@page:\number\pcol@currcol/% + \number\pcol@toppage:\number\c@page)=\pcol@F@n #2}} +\def\pcol@F@count{{\@tempcnta\z@ + \def\@elt##1{\advance\@tempcnta\@ne}\@freelist + \xdef\pcol@F@n{\number\@tempcnta}}} +\let\pcol@Fb\pcol@F@count +\def\pcol@Fe#1{{\let\reserved@a\pcol@F@n \pcol@FF{#1}{<=\reserved@a}}} +\let\pcol@F\@gobble +\let\pcol@Fb\relax +\let\pcol@Fe\@gobble + %% \output Routine \def\pcol@ovf{% @@ -160,7 +177,9 @@ \setbox\@cclv\vbox{\pcol@unvbox@cclv\footins}% \ifnum\pcol@page=\pcol@toppage \pcol@Log\pcol@makecol{save}\footins + \pcol@Fb \pcol@savefootins\pcol@currfoot + \pcol@Fe{makecol(pagefn)}% \else \pcol@Log\pcol@makecol{discard}\footins \setbox\@tempboxa\box\footins @@ -205,13 +224,17 @@ \vskip\pcol@textfloatsep \unvbox\@outputbox}% \let\@elt\relax + \pcol@Fb \xdef\@freelist{\@freelist\@toplist}% + \pcol@Fe{cflt}% \global\let\@toplist\@empty} \def\pcol@opcol{% + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox to\@colht{ \boxmaxdepth\@maxdepth \pcol@clearcst@unvbox\@outputbox}}\pcol@ovf + \pcol@Fe{opcol}% \expandafter\@cons\csname pcol@shipped\number\pcol@currcol\endcsname\@currbox \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi \pcol@nextpage @@ -300,11 +323,13 @@ \fi \global\@colht\textheight \global\topskip\pcol@topskip - \@dblfloatplacement + \@dblfloatplacement \let\f@depth\z@ \@tryfcolumn\@dbldeferlist \@whilesw\if@fcolmade\fi{% + \pcol@Fb \@next\@currbox\@freelist{% \global\setbox\@currbox\box\@outputbox}\pcol@ovf + \pcol@Fe{startpage(fcol)}% \global\dimen\@currbox-\maxdimen \global\skip\@currbox\pcol@topskip \@cons\pcol@pages{{\number\c@page}\@currbox\voidb@x{}{}}% @@ -312,10 +337,12 @@ \global\advance\pcol@page\@ne \global\pcol@toppage\pcol@page \@tryfcolumn\@dbldeferlist}% \begingroup - \let\reserved@b\@dbldeferlist - \global\let\@dbldeferlist\@empty + \let\reserved@b\@dbldeferlist \let\reserved@c\@deferlist + \global\let\@dbldeferlist\@empty \global\let\@deferlist\@empty \let\@elt\@sdblcolelt \reserved@b + \let\@elt\relax \xdef\@dbldeferlist{\@dbldeferlist\@deferlist}% + \global\let\@deferlist\reserved@c \endgroup \ifx\@dbltoplist\@empty \pcol@defcurrpage{\number\c@page}\voidb@x\voidb@x{}{}% @@ -325,11 +352,15 @@ \let\@elt\@comdblflelt \@dbltoplist \let\@elt\relax + \pcol@Fb \xdef\@freelist{\@freelist\@dbltoplist}% + \pcol@Fe{startpage(dbltop)}% \global\let\@dbltoplist\@empty + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{% \unvbox\@tempboxa \vskip-\dblfloatsep \dblfigrule \vskip\dbltextfloatsep}}\pcol@ovf + \pcol@Fe{startpage(spanning)}% \global\dimen\@currbox\@colht \global\skip\@currbox\pcol@topskip \pcol@defcurrpage{\number\c@page}\@currbox\voidb@x{}{}% @@ -352,7 +383,9 @@ \def\pcol@bg@floatheight{\pcol@bg@textheight}% \setbox\@outputbox\vbox to\textheight{% \pcol@bg@paintbox{Ff}\unvbox\pcol@spanning}% + \pcol@Fb \@cons\@freelist\pcol@spanning + \pcol@Fe{outputelt(spanning)}% \ifnum\pcol@ncolleft<\pcol@ncol \setbox\pcol@rightpage\vbox to\textheight{% \ifpcol@paired\else \advance\c@page\@ne \fi @@ -393,7 +426,9 @@ \@tempdimb\ht\pcol@spanning \advance\@tempdimb\dp\pcol@spanning \ifnum#1=\z@ \ifpcol@firstpage\else \pcol@bg@paintbox{Ff}\fi + \pcol@Fb \@cons\@freelist\pcol@spanning \unvbox\pcol@spanning + \pcol@Fe{ioutputelt(spanning)}% \else\ifpcol@firstpage \ht\pcol@rightpage\ht\pcol@spanning \dp\pcol@rightpage\dp\pcol@spanning @@ -411,7 +446,11 @@ \expandafter\@next\expandafter\@currbox \csname pcol@shipped\number\@tempcntb\endcsname \relax{\let\@currbox\voidb@x}% - \ifvoid\@currbox\else \@cons\@freelist\@currbox \fi + \ifvoid\@currbox\else + \pcol@Fb + \@cons\@freelist\@currbox + \pcol@Fe{ioutputelt(page)}% + \fi \expandafter\@tempdima \csname pcol@columnwidth\number\@tempcntb \endcsname \pcol@@hfil \hb@xt@\@tempdima{\box\@currbox\hss}% @@ -421,7 +460,9 @@ \ifnum#1=\z@ \pcol@Log\pcol@outputelt{output}\pcol@footins \pcol@putfootins\pcol@footins + \pcol@Fb \@cons\@freelist\pcol@footins + \pcol@Fe{ioutputelt(footins)}% \else \vskip\skip\pcol@footins \nointerlineskip \pcol@phantom\pcol@footins \vskip\z@ @@ -577,6 +618,11 @@ \pcol@getcurrfoot\copy \pcol@Log\pcol@startcolumn{insert}\footins \insert\footins{\unvbox\footins}% + \ifnum\pcol@page=\pcol@toppage + \pcol@Fb + \@cons\@freelist\pcol@footins + \pcol@Fe{startcolumn(pagefn)}% + \fi \fi \ifnum\pcol@page=\pcol@toppage \pcol@deferredfootins\pcol@startcolumn \fi @@ -834,6 +880,7 @@ \global\pcol@page\z@ \global\pcol@toppage\z@ \global\pcol@basepage\z@ \global\let\pcol@pages\@empty \global\let\@dbldeferlist\@deferlist \global\let\@deferlist\@empty + {\def\@elt##1{\global\dp##1\z@}\@dbldeferlist}% \setbox\z@\box\pcol@topfnotes \@tempdima\@colroom \advance\@tempdima-\ht\@holdpg \advance\@tempdima-\dp\@holdpg @@ -862,9 +909,11 @@ \let\pcol@bg@preposttop\pcol@bg@preposttop@right \reserved@a \unvbox\pcol@rightpage}% \fi + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{% \let\pcol@bg@preposttop\pcol@bg@preposttop@left \reserved@a \unvbox\@outputbox}}\pcol@ovf + \pcol@Fe{output@start(preenv)}% \global\dimen\@currbox\@colht \ifdim\@tempdima=\z@ \@tempskipa\topskip \else \@tempskipa\z@ \fi \global\skip\@currbox\@tempskipa \global\topskip\@tempskipa @@ -878,8 +927,10 @@ \fi \global\@colroom\@colht \pcol@floatplacement \pcol@currcol\z@ \@whilenum\pcol@currcol<\pcol@ncol\do{% + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{% \ifdim\topskip=\z@ \hrule\@height\z@\@width\z@ \fi}}\pcol@ovf + \pcol@Fe{output@start(col)}% \pcol@setcurrcolnf \global\count\@currbox\z@ \global\dimen\@currbox\@colroom @@ -888,7 +939,9 @@ \global\pcol@currcol\z@ \pcol@getcurrcol \pcol@savecolorstack + \pcol@Fb \@cons\@freelist\@currbox \unvbox\@currbox + \pcol@Fe{output@start(col)}% \ifvoid\footins\else \pcol@Log\pcol@output@start{insert}\footins \insert\footins{\box\footins\penalty\interlinepenalty}% @@ -901,7 +954,9 @@ \ifvoid\footins \setbox\@outputbox\box\@holdpg \else \pcol@combinefootins\@holdpg\footins \fi + \pcol@Fb \let\@elt\relax \xdef\@freelist{\@freelist\@midlist}% + \pcol@Fe{makenormalcol}% \global\let\@midlist\@empty \pcol@combinefloats \else @@ -927,15 +982,19 @@ \pcol@shiftspanning\@holdpg \setbox\@holdpg\vbox{\unvbox\pcol@prespan \unvbox\@holdpg}% \fi\fi + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{ \pcol@clearcst@unvbox\@holdpg}}\pcol@ovf + \pcol@Fe{output@switch}% \def\pcol@currfoot{\voidb@x}% \ifvoid\footins\else \ifpcol@scfnote \ifnum\pcol@page=\pcol@toppage \pcol@getcurrpinfo\@tempcnta\@tempdima\@tempskipa \pcol@Log\pcol@output@switch{save}\footins + \pcol@Fb \pcol@savefootins\pcol@footins + \pcol@Fe{output@switch(pagefn)}% \pcol@defcurrpage{\number\@tempcnta}\pcol@spanning\pcol@footins {\pcol@sptextlist}{\pcol@mparbottom}% \else @@ -944,7 +1003,9 @@ \fi \else \pcol@Log\pcol@output@switch{save}\footins + \pcol@Fb \pcol@savefootins\pcol@currfoot + \pcol@Fe{output@switch(colfn)}% \fi \fi \ifnum\pcol@currcol=\z@ \pcol@setpageno \fi @@ -980,7 +1041,9 @@ \pcol@getcurrcol \global\pcol@page\count\@currbox \global\@colroom\dimen\@currbox + \pcol@Fb \@cons\@freelist\@currbox + \pcol@Fe{restartcolumn(col)}% \pcol@getcurrpage \ifpcol@scfnote \edef\pcol@currfoot{\pcol@footins}% @@ -989,7 +1052,9 @@ \pcol@putbackmvl \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi \ifvoid\pcol@footins\else + \pcol@Fb \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot + \pcol@Fe{restartcolumn(pagefn)}% \pcol@Log\pcol@restartcolumn{insert}\footins \pcol@shrinkcolbyfn\@colht\footins\@tempdimb \insert\footins{\unvbox\footins}% @@ -1008,9 +1073,11 @@ \else \pcol@putbackmvl \ifvoid\pcol@currfoot\else - \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot - \pcol@Log\pcol@restartcolumn{insert}\footins - \insert\footins{\unvbox\footins}% + \pcol@Fb + \pcol@getcurrfoot\box \@cons\@freelist\pcol@currfoot + \pcol@Fe{restartcolumn(colfn)}% + \pcol@Log\pcol@restartcolumn{insert}\footins + \insert\footins{\unvbox\footins}% \fi \if@nobreak \nobreak \else \addpenalty\interlinepenalty \fi \fi} @@ -1394,7 +1461,11 @@ \pcol@lastpagefalse \pcol@page\count\@currbox \setbox\@cclv\vbox{\unvbox\@currbox \vfil}% - \ifvoid\pcol@currfoot\else \@cons\@freelist\pcol@currfoot \fi + \ifvoid\pcol@currfoot\else + \pcol@Fb + \@cons\@freelist\pcol@currfoot + \pcol@Fe{flushcolumn(colfn)}% + \fi \pcol@getcurrfoot\box \pcol@getcurrpage \ifvoid\pcol@footins @@ -1424,15 +1495,19 @@ \fi \@makefcolumn\@deferlist \if@fcolmade + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}% \pcol@ovf + \pcol@Fe{flushcolumn(fcol)}% \expandafter\@cons \csname pcol@shipped\number\pcol@currcol\endcsname\@currbox \fi \advance\pcol@page\@ne}% \fi \ifpcol@lastpagesave \pcol@lastpagetrue \fi + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{}}\pcol@ovf + \pcol@Fe{flushcolumn(col)}% \pcol@getcurrpinfo\@tempcnta{\global\@colht}\@tempskipa \@pageht\@colht \ifvoid\pcol@footins\else \pcol@shrinkcolbyfn\@colht\pcol@footins\relax \fi @@ -1476,7 +1551,10 @@ \def\pcol@makefcolpage{\vbox to\@colht{ \vskip\@fptop \vskip-\@fpsep \def\@elt##1{\vskip\@fpsep\box##1}\@toplist \vskip\@fpbot}% - \xdef\@freelist{\@freelist\@toplist}\global\let\@toplist\@empty} + \pcol@Fb + \xdef\@freelist{\@freelist\@toplist}\global\let\@toplist\@empty + \pcol@Fe{makefcolpage}% +} \def\pcol@measurecolumn{% \pcol@getcurrcol @@ -1545,9 +1623,11 @@ \ifx\@toplist\@empty \textfloatsep\z@ \floatsep\z@ \let\topfigrule\relax \fi + \pcol@Fb \@next\pcol@float\@freelist{\global\setbox\pcol@float\vbox to\z@{ \vskip-\floatsep \topfigrule \vskip\textfloatsep \unvbox\@currbox \vss}}\pcol@ovf + \pcol@Fe{synccolumn(topfloat)}% \@cons\@toplist\pcol@float \advance\@tempdimb\textfloatsep \advance\@tempdimb-\floatsep \advance\@tempdimb\@M\p@ @@ -1599,7 +1679,7 @@ \pcol@flushfloats \begingroup \setbox\pcol@rightpage\box\voidb@x - \@dblfloatplacement + \@dblfloatplacement \let\f@depth\z@ \@makefcolumn\@dbldeferlist \@whilesw\if@fcolmade\fi{% \def\pcol@bg@floatheight{\pcol@bg@textheight}% @@ -1635,7 +1715,9 @@ \reserved@a \unvbox\pcol@spanning \ifpcol@firstpage\else \if@tempswa\else \unskip \fi\fi}% \global\setbox\@outputbox\vbox{\box\@outputbox}% + \pcol@Fb \@cons\@freelist\pcol@spanning + \pcol@Fe{makeflushedpage(spanning)}% \ifnum\pcol@ncolleft<\pcol@ncol \global\setbox\pcol@rightpage\vbox{% \ifpcol@paired\else \advance\c@page\@ne \fi @@ -1678,7 +1760,9 @@ \fi \global\setbox\@outputbox\vbox{% \unvbox\@outputbox \pcol@putfootins\pcol@footins}% + \pcol@Fb \@cons\@freelist\pcol@footins \gdef\pcol@footins{\voidb@x}% + \pcol@Fe{makeflushedpage(pagefn)}% \ifdim\pcol@colht=-\maxdimen \global\pcol@colht\z@ \fi \fi \fi @@ -1701,7 +1785,11 @@ \pcol@swapcolumn\@tempcntb\pcol@currcol#1#2\relax \pcol@getcurrcol \setbox\@cclv\box\@currbox - \ifvoid\pcol@currfoot\else \@cons\@freelist\pcol@currfoot \fi + \ifvoid\pcol@currfoot\else + \pcol@Fb + \@cons\@freelist\pcol@currfoot + \pcol@Fe{imakeflushedpage(colfn)}% + \fi \pcol@getcurrfoot\box \@tempswafalse \begingroup @@ -1796,8 +1884,10 @@ \@tempswatrue \@pagedp\@m\p@ \global\@mparbottom\z@ \global\let\pcol@mparbottom@out\pcol@mparbottom@zero \ifpcol@nospan\else + \pcol@Fb \@next\@currbox\@freelist{\global\setbox\@currbox\box\@outputbox}% \pcol@ovf + \pcol@Fe{output@end(spanning)}% \count\@currbox10\relax {\let\@elt\relax \xdef\@dbldeferlist{\@elt\@currbox\@dbldeferlist}}% \global\setbox\pcol@rightpage\box\voidb@x @@ -1827,13 +1917,17 @@ \fi \ifvoid\pcol@footins\else \pcol@Log\pcol@output@end{insert}\pcol@footins + \pcol@Fb \insert\footins{\unvbox\pcol@footins}\@cons\@freelist\pcol@footins + \pcol@Fe{output@end(pagefn)}% \fi \ifvoid\pcol@topfnotes\else \insert\footins{\unvbox\pcol@topfnotes}\fi \expandafter\let\csname pcol@columncolor\number\z@\endcsname\relax \pcol@currcol\z@ \pcol@restorecolorstack \@whilenum\pcol@currcol<\pcol@ncol\do{% + \pcol@Fb \pcol@getcurrcol \@cons\@freelist\@currbox + \pcol@Fe{output@end(col)}% \advance\pcol@currcol\@ne}% \pcol@currcol\pcol@lastcol\relax \pcol@getcurrcol \global\pcol@prevdepth\@pagedp @@ -1902,6 +1996,7 @@ \pcol@lastpagefalse \xdef\pcol@firstprevdepth{\number\prevdepth}% \let\pcol@@combinefloats\@combinefloats \let\@combinefloats\pcol@combinefloats \let\pcol@@addmarginpar\@addmarginpar \let\@addmarginpar\pcol@addmarginpar + \let\end@dblfloat\pcol@end@dblfloat \global\let\pcol@set@color\set@color \ifx\set@color\relax \let\pcol@bg@paintpage\relax \let\pcol@bg@paintbox\@gobble @@ -1970,6 +2065,19 @@ \expandafter\let\expandafter\reserved@a\csname pcol@com@#1\endcsname \expandafter\let\csname #1\endcsname\reserved@a} +\gdef\@dbldeferlist{} +\def\pcol@end@dblfloat{% + \if@twocolumn + \@endfloatbox + \ifnum\@floatpenalty <\z@ + \@largefloatcheck + \@cons\@dbldeferlist\@currbox + \fi + \ifnum \@floatpenalty =-\@Mii \@Esphack\fi + \else + \end@float + \fi +} %% Column Width Setting \def\columnratio#1{\global\let\pcol@colwidthspecleft\relax @@ -2130,7 +2238,9 @@ %% Counter Operations -\def\globalcounter#1{{% +\def\globalcounter{\@ifstar\pcol@globalcounter@s\pcol@globalcounter} +\def\pcol@globalcounter@s{\global\let\pcol@gcounters\cl@@ckpt} +\def\pcol@globalcounter#1{{% \@tempswafalse \def\reserved@a{#1}% \def\@elt##1{\def\reserved@b{##1}% \ifx\reserved@a\reserved@b \@tempswatrue \fi}% -- cgit v1.2.3