texlive[47750] Master/texmf-dist: paracol (18may18)

commits+karl at tug.org commits+karl at tug.org
Fri May 18 23:10:33 CEST 2018


Revision: 47750
          http://tug.org/svn/texlive?view=revision&revision=47750
Author:   karl
Date:     2018-05-18 23:10:33 +0200 (Fri, 18 May 2018)
Log Message:
-----------
paracol (18may18)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/paracol/README
    trunk/Master/texmf-dist/doc/latex/paracol/paracol-man.pdf
    trunk/Master/texmf-dist/doc/latex/paracol/paracol-man.tex
    trunk/Master/texmf-dist/source/latex/paracol/impl.dtx
    trunk/Master/texmf-dist/source/latex/paracol/paracol.dtx
    trunk/Master/texmf-dist/source/latex/paracol/ppts.dtx
    trunk/Master/texmf-dist/source/latex/paracol/probs.dtx
    trunk/Master/texmf-dist/tex/latex/paracol/paracol.sty

Modified: trunk/Master/texmf-dist/doc/latex/paracol/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/paracol/README	2018-05-18 21:10:18 UTC (rev 47749)
+++ trunk/Master/texmf-dist/doc/latex/paracol/README	2018-05-18 21:10:33 UTC (rev 47750)
@@ -1,6 +1,6 @@
-paracol (v1.32): a multi-column package to typeset columns in "parallel".
+paracol (v1.34): a multi-column package to typeset columns in "parallel".
 ===
-Copyright (C) 2005-2013
+Copyright (C) 2005-2018
   Hiroshi Nakashima <h.nakashima at DOMAIN;  DOMAIN=media.kyoto-u.ac.jp>
   (Kyoto Univerisity)
 This package can be redistributed and/or modified under the terms
@@ -107,7 +107,7 @@
 - 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.
+- A bug found in v1.32 has been fixed.
 
 Enjoy!
 

Modified: trunk/Master/texmf-dist/doc/latex/paracol/paracol-man.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/paracol/paracol-man.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/paracol/paracol-man.tex	2018-05-18 21:10:18 UTC (rev 47749)
+++ trunk/Master/texmf-dist/doc/latex/paracol/paracol-man.tex	2018-05-18 21:10:33 UTC (rev 47750)
@@ -1,5 +1,5 @@
 %% LaTeX file 'paracol-man'.
-%% Copyright (C) 2005-2015
+%% Copyright (C) 2005-2018
 %%   Hiroshi Nakashima <h.nakashima at DOMAIN;  DOMAIN=media.kyoto-u.ac.jp>
 %%   (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}
-[2015/10/10 v1.32 ]
+[2018/05/07 v1.34 ]
 \documentclass{ltxdoc}\normalmarginpar
 \usepackage{color}
 \usepackage{paracol}

Modified: trunk/Master/texmf-dist/source/latex/paracol/impl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/paracol/impl.dtx	2018-05-18 21:10:18 UTC (rev 47749)
+++ trunk/Master/texmf-dist/source/latex/paracol/impl.dtx	2018-05-18 21:10:33 UTC (rev 47750)
@@ -228,7 +228,7 @@
 % 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}
-% in the macro \Midx{\!\pcol at spanning!}, for such {\em\Uidx\spanning}
+% in the macro \!\pcol at spanning!, for such {\em\Uidx\spanning}
 % whose registers have the followings.
 % 
 % \begin{itemize}
@@ -267,7 +267,7 @@
 % emptied by \!\pcol at startpage!, and then the elements are added by
 % \!\pcol at makecol! (only for the last one) and \!\pcol at output@switch!
 % whenever they find a \mctext{} completes.  The element is often {\em
-% cached} in the macro \Midx{\!\pcol at sptextlist!} and is referred to by
+% cached} in the macro \!\pcol at sptextlist! and is referred to by
 % \!\pcol at 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 little bit more detailedly.
@@ -298,7 +298,7 @@
 % another examiner \!\pcol at output@end! lets the outside \!\@mparbottom! have
 % 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 at mparbottom!}.  The usage of this
+% {\em cached} in the macro \!\pcol at mparbottom!.  The usage of this
 % element is discussed in \secref{sec:imp-ovv-cswap} a little bit more
 % detailedly.
 % \end{itemize}
@@ -471,10 +471,10 @@
 % $\pp^f(\ptop)$ through a list;
 % $$
 % \Uidx\df=\!\pcol at topfnotes!=
-% (f_1,f_2,\ldots,f_n)=|\vbox{|f_1\;f_2\;\cdots\;f_n|}|
+% (f_1,f_2,\ldots,f_n)=\!\vbox!|{|f_1\;f_2\;\cdots\;f_n|}|
 % $$
-% where $f_i$ is a |\vbox| containing the deferred footnote preceded by
-% |\penalty\interlinepenalty| to allow \TeX{} to break footnotes to place
+% where $f_i$ is a \!\vbox! containing the deferred footnote preceded by
+% \!\penalty!\!\interlinepenalty! to allow \TeX{} to break footnotes to place
 % them in two (or more) pages.  That is, \!\footnote! or \!\footnotetext! in
 % $p<\ptop$ adds an element for the footnote to $\df$, then all the elements
 % 
@@ -510,7 +510,7 @@
 % \!\pcol at shrinkcolbyfn!.  Other and more subtle adjustment is to add the
 % stretch and shrink factors of $\!\skip!\cdot\pp^f(p)$ at the tail of the
 % \colpage{} by \!\pcol at unvbox@cclv!.  This is necessary because \TeX{} has
-% broken the \colpage{} taking acount the stretch and, more essentially,
+% broken the \colpage{} taking account of the stretch and, more essentially,
 % shrink factors, and thus without the factors the main vertical list in the
 % \colpage{} could be a little bit taller than \!\@colht! causing overfull.
 % 
@@ -563,6 +563,9 @@
 % 
 % \subsubsection{Fundamental Mechanism}
 % \label{sec:imp-ovv-color-fundamental}
+% \changes{v1.34}{2018/05/07}
+% 	{Revise the description of \Sec1.6.1 according to the new
+%	 implementation with \cs{insert}.}
 % 
 % Text coloring done by \textsf{color} package and its relatives using
 % \!\special! stands on the fact that the main vertical list is {\em
@@ -608,29 +611,34 @@
 % when a group surrounding the coloring \!\special! is closed.  Therefore we
 % have to keep track of the \colorctext{} with {\em\Uidx\colorstack}
 % $$
-% \Uidx\cst=\Midx{\!\pcol at colorstack!}=(\Uidx\celt_1,\celt_2,\ldots,\celt_n)=
-% \!\@elt!|{|\celt_1|}|\;\!\@elt!|{|\celt_2|}|\;\cdots\!\@elt!|{|\celt_n|}|
+% \Uidx\cst=
+% (\Uidx\celt_1,\celt_1,\ldots,\celt_n)=
+% \!\vbox!|{|\celt_1\;\celt_2\;\ldots\;\celt_n|}|
 % $$
-% to which we push $\celt=\!\current at color!$ when \!\set at color! is invoked
-% and from which we pop it when the corresponding \!\reset at color! appears.
-% Then when we encounter an out-of-order jump, at first we rewind the
-% \colorstack{} in |.dvi| by putting \!\special!s which \!\reset at color!
-% would put, and then reestablish the \colorstack{} by putting \!\special!s
-% as if \!\set at color! for $\celt_i$ is invoked for all $\celt_i\in\cst$.
-% Therefore from the viewpoint of a {\em printer}, it will see
-% stack-rewinding at the end of each \colpage{} and the leaving points of
-% \cswitch{}, while the beginning of each \colpage{} and the entry points of
-% \cswitch{} should have the sequence of coloring \!\special!s to regain the
-% \colorstack{} which the {\em printer} must have at each of the points.
+% where $\celt_i$ is a \!\vbox! of 1\,|sp| tall, 0 deep and 0 wide containing
+% a coloring \!\special! which \!\set at color! puts into the main vertical
+% list.  That is, when \!\set at color! is invoked we push $\celt$ to the tail
+% of $\cst$, while when the corresponding \!\reset at color! appears we pop it
+% from $\cst$\@.  Then when we encounter an out-of-order jump, at first we
+% rewind the \colorstack{} in |.dvi| by putting \!\special!s which
+% \!\reset at color! would put, and then reestablish the \colorstack{} by
+% putting \!\special!s in $\celt_i$ as if \!\set at color! for it is invoked
+% for all $\celt_i\in\cst$.  Therefore from the viewpoint of a {\em
+% printer}, it will see stack-rewinding at the end of each \colpage{} and
+% the leaving points of \cswitch{}, while the beginning of each \colpage{}
+% and the entry points of \cswitch{} should have the sequence of coloring
+% \!\special!s to regain the \colorstack{} which the {\em printer} must have
+% at each of the points.
 % 
-% \SpecialArrayMainIndex{c}{\pcol at columncolor}
+% \SpecialArrayMainIndex{c}{\pcol at columncolor@box}
 % 
-% In addition, for each column $c$ we keept
-% $\Uidx\Celt^c=|\pcol at columncolor|\cdot c$ as the {\em default} color of
-% the column $c$, optionally given by the API macro \!\columncolor!.  If
-% given for $c$, it is assumed to be at the bottom of the \colorstack{}
-% denoted by $\Uidx\CST^c=(\Celt^c,\celt_1,\ldots,\celt_n)$ which we
-% rewind\slash reestablish at each out-of-order jump in the column $c$.
+% In addition, for each column $c$ we keep
+% $\Uidx\Celt^c=|\pcol at columncolor@box|\cdot c$ as the {\em default} color
+% of the column $c$, optionally given by the API macro \!\columncolor! or
+% \!\normalcolumncolor!.  If given for $c$, it is assumed to be at the bottom
+% of the \colorstack{} denoted by
+% $\Uidx\CST^c=(\Celt^c,\celt_1,\ldots,\celt_n)$ which we rewind\slash
+% reestablish at each out-of-order jump in the column $c$.
 % 
 % 

 % 
@@ -638,6 +646,9 @@
 % \label{sec:imp-ovv-color-hmode}
 % \changes{v1.22}{2013/06/30}
 %	{Add the subsection ``Coloring in Horizontal Mode''.}
+% \changes{v1.34}{2018/05/07}
+% 	{Revise the description of \Sec1.6.2 according to the new
+%	 implementation with \cs{insert}.}
 % 
 % We have to pay attention to the fact a coloring command can appear in
 % horizontal mode of course, and thus push/pop operations in a \colpage{}
@@ -645,26 +656,49 @@
 % \!\reset at color! is in the second half of a page-crossing paragraph and if
 % we immediately performed push\slash pop of the \colorstack{} in these
 % macros.  In addition, even in vertical mode these macros can appear before
-% a page break after which they must be in effect, if they are preceded by a
-% vertical item to make a break before it and an inhibiting penalty 10000
-% which {\em delays} \TeX{} examining the break and thus invoking \!\output!.
+% \TeX{} finds a page break after which they must be in effect, if they are
+% preceded by a sequece of non-breakable vertical items by which \TeX{}'s
+% examination of the page break is {\em delayed} as well as the invocation
+% of \!\output! at the break.
 % 
-% In order to solve the problem of push/pop timing, we maintain a list
-% $\Uidx{\cstb}={}$\!\pcol at colorstack@buf!
+% In order to solve the problem of push/pop timing, we perform push\slash
+% pop operations through \!\insert! to our own register set
+% \!\pcol at colorins!.  That is, we \!\insert! $\celt$ to \!\pcol at colorins!
+% when we encounter a \!\set at color! for $\celt$, while its corresponding
+% \!\reset at color! also \!\insert!s another \!\vbox! $\Uidx\celtpop$ of
+% null-height\slash depth\slash width having a \!\special! which the
+% \!\reset at color! puts into the main vertical list.  Since we let
+% $\!\count!\!\pcol at colorins!=0$ and $\!\skip!\!\pcol at colorins!=0$ to keep
+% the \!\insert!iion from affecting the growth of \!\pagetotal!, it is
+% guaranteed that an inserted $\celt$ or $\celtpop$ is given to \!\output!
+% through \!\pcol at colorins! together with |\box255| containing the
+% corresponding \!\special!.
+% 
+% When \!\output! is invoked, \!\pcol at colorins! has $\Uidx\cstraw$
+% containing $\celt_i$ and possibly its corresponding $\celtpop_i$.
+% Therefore, if \!\output! is for a page break or a \cswitch, we remove all
+% pairs of $\celt_i$ and $\celtpop_i$ from \!\pcol at colorins! to let it have
+% $\cst$ only with $\celt_j$ whose corresponding $\celt_j^-$ is not in
+% $\cstraw$.  For this removal, we scan $\cstraw$ from its tail
+% incrementing\slash decrementing a counter $\Uidx\npop$ which we initialize
+% to 0 before scanning.  In the scan, we remove all $\celtpop$
+% unconditionally incrementing $\npop$, and $\celt$ such that $\npop>0$ on
+% the encounter with it decrementing $\npop$.  This scan is done by
+% \!\pcol at clearcolorstack!, invoked from \!\pcol at opcol! for a page break and
+% \!\pcol at output@switch! for a \cswitch{} through \!\pcol at clearcst@unvbox!,
+% and is for rewinding the \colorstack{}
+% $(\Celt^c,\cstraw)=\Uidx\CSTraw^c$.  Therefore, for each $\celt$ to be kept
+% because of $\npop=0$ on the encoutner with it we put \!\special! for
+% \!\reset at color!.  Note that on another scan for stack reestablishment,
+% \!\pcol at colorins! has $\cst$ and is kept unchanged.  Also note that other
+% \!\output!  invocations such as that for floats do not touch $\cstraw$ to
+% allow it grows with $\celt$ and $\celtpop$ corresponding to \!\set at color!
+% and \!\reset at color! in the \colpage{} in which the invocation
+% happens\footnote{
 % 
-% \SpecialMainIndex{\pcol at colorstack@buf}
-% 
-% of colors to be pushed in $\cst$, and raise a special \!\output!
-% request, via \!\vadjust! if in horizontal mode, for \colorstack{}
-% manipulation rather than performing it immediately.  That is, at the
-% request itself or at the completion of the paragraph having these macros,
-% we have a sequence of \!\output! requests for pushes and pops toghether
-% with the list $\cstb$ for pushes, and possibly a request for a page break
-% in the sequence or at its tail and/or that for \cswitch{} at the tail.
-% Since a request for push moves the first element of $\cstb$ to the tail of
-% $\cst$ while that for pop simply pops $\cst$, \!\output! for a page
-% break or \cswitch{} should see $\cst$ perfectly consistent with coloring
-% \!\special!s in the main vertical list given to the \!\output!.
+% Unlike \cs{footins} which becomes void by putting its contents back to the
+% main vertical list to reexamine the footnote placement possibly with
+% splitting.}.
 % 
 % The mechanism above especially for horizontal mode has subtle issues as
 % follows.
@@ -671,15 +705,11 @@
 % 
 % \begin{itemize}
 % \item
-% If \!\set at color! appears in a \!\vbox!, the \!\output! request for pushing
+% If \!\set at color! appears in a \!\vbox!, the \!\insert!ion for pushing
 % is not effective but corresponding \!\reset at color! can be outside of the
 % \!\vbox! to make pushes and pops unbalanced because \!\aftergroup! for it
 % inserts it just after the closing of the \!\vbox! if \!\set at color! is not
-% surrounded by an inner group.  Another problem with this ineffective
-% \!\output! request is that the {\em protection} by a dummy request of
-% $-10004$ and an empty \!\vbox! from the elimination just after a page
-% break should causes a trouble by the latter because the empty \!\vbox!
-% is added to the \!\vbox! in question.
+% surrounded by an inner group.
 % 
 % \item
 % If we are in vertical mode, we can know if we are in a \!\vbox! by
@@ -692,18 +722,18 @@
 % To solve the problem above, we introduced a trick with \!\everyvbox! to
 % turn a switch $\CSIndex{ifpcol at inner}=\true$ at the beginning of every
 % \!\vbox! in a \env{paracol} environment, by which we supress the
-% \!\output!  request for \!\set at color! because a \!\vbox! cannot cross a
+% \!\insert!ion for \!\set at color! because a \!\vbox! cannot cross a
 % page boundary.  As for that of \!\reset at color!, we suppress it by not
-% reserving our own macro \!\pcol at reset@color at pop! for the request by
+% reserving our own macro \!\pcol at reset@color at pop! for the \!\insert!ion by
 % \!\aftergroup!.  That is, we reserve both \!\reset at color! and
 % \!\pcol at reset@color at pop! with \!\aftergroup! if we are outside of any
 % \!\vbox!es, while does the former only otherwise.  By the same reason, we
-% supress the requests if we are in restricted horizontal mode, i.e., if
-% both \CSIndex{ifhmode} and \CSIndex{ifinner} are true.  On the other hand,
-% we cannot supress the request when we are in an in-text math because it
-% can cross a page boundary\footnote{
+% supress the \!\insert!ion if we are in restricted horizontal mode, i.e.,
+% if both \CSIndex{ifhmode} and \CSIndex{ifinner} are true.  On the other
+% hand, we cannot supress the \!\insert!ion when we are in an in-text math
+% because it can cross a page boundary\footnote{
 % 
-% If an in-text math is in a \!\hbox!, making the \!\output! request is not
+% If an in-text math is in a \cs{hbox}, \cs{insert}ion is not
 % necessary because the math cannot cross a page boundary.  Though we can
 % detect it by a trick with \!\everyhbox!, we abandon this idea because the
 % request is not harmful.  Another and more serious issue of coloring in
@@ -713,28 +743,6 @@
 % does not interfere the use of \!\everyvbox! inside/outside of
 % \env{paracol} environments or is not affected by the use.
 % 
-% The implemntation of \!\columncolor! and \!\normalcolumncolor! has issues
-% similar to above but a little bit more complicated because we need to
-% update $\Celt^c$ at the bottom of \colorstack{} if we are in the column
-% $c$.  That is, in addition to adding the specified color to the tail of
-% $\cstb$ and making a special \!\output! request for update, we need to
-% rewind the stack before updating $\Celt^c$ and then reestablish the stack
-% with the updated $\Celt^c$.  A complication is in the fact that the
-% \colorstack{} $\cst$ may not be up-to-date at the occurrence of the
-% commands.  More complicatedly, the existence of $\Celt^c$ itself is not
-% up-to-date because we have to update it by the special \!\output! request.
-% This problem is solved by having {\em shadows} of $\cst$ and $\Celt^c$,
-% namely {$\Uidx{\cstshadow}=\Midx{\!\pcol at colorstack@shadow!}$} and
-% $\Uidx{\Celtshadow^c}=|\pcol at columncolor@shadow|{\cdot}c$,
-% 
-% \SpecialArrayMainIndex{c}{\pcol at columncolor@shadow}
-% 
-% into which we push or set a color immediately, and referring to them for
-% rewinding and reestablishing the up-to-date \colorstack{} in the
-% column-color commands.  Note that the shadows are referred to only outside
-% \!\output! routine and thus popping is done automatically by doing push
-% operations locally.
-% 
 % Another attention we should pay is that \!\color! will leave \!\aftergroup! 
 % tokens of \!\reset at color! and thus they are invoked just after
 % \Endparacol.  However, since we have completed all \colpage{}s in the
@@ -743,24 +751,83 @@
 % elements in the stack are popped by \!\reset at color! invoked with the
 % \!\aftergroup! mechanism.  We also take care of our own \colorstack{}
 % popper \!\pcol at reset@color at pop! which must do nothing, i.e., must not make
-% a \!\output! request, after we completed the \lpage, i.e.,
-% if \CSIndex{ifpcol at output} is $\false$.
+% an \!\insert!ion, after we completed the \lpage, i.e., if
+% \CSIndex{ifpcol at output} is $\false$.
 % 
 % 

 % 
+% \subsubsection{Changing Default Column Color}
+% \label{sec:imp-ovv-color-colcolor}
+% \changes{v1.34}{2018/05/07}
+% 	{Split the description of \cs{columncolor} from \Sec1.6.2 to have
+%	 new \Sec1.6.3 ``Changing Default Column Color'' because we have
+%	 serveral new issues in the new implementation with \cs{insert}.}
+% 
+% The implemntation of \!\columncolor! and \!\normalcolumncolor! is
+% relatively easy for the cases that they appear outside
+% \env{paracol} environment or they define the default color of a
+% column different from the current column.  That is, for the default color
+% of a column $c$ we simply \!\def!ine
+% ${\Uidx\Celtshadow}^c=|pcol at columncolor|\cdot c$ to let it have what
+% \!\current at color! has for the color.  Then, in \beginparacol{} in the
+% former case or immediately in the latter, we let
+% $\Celt^c=|pcol at coloumncolor@box|\cdot c$ have the coloring \!\special! for
+% the color acquiring an \!\insert! from \!\@freelist! if the box is
+% $\bot$.
+% 
+% \SpecialArrayMainIndex{c}{\pcol at columncolor}
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
+% 
+% On the other hand, when the API commands are to define the default color
+% of the current column $c$, we need to place the coloring at the bottom of
+% \colorstack{}s in terms of |.tex| and |.dvi|.  That is, for the former we
+% have to rewind and reestablish the stack which can be different from
+% $\CST^c$ because the API command can follow a page break which \TeX{} does
+% not yet find.  Therefore, we maintain a {\em shadow} of $\cst$ namely;
+% $$
+% {\Uidx\cstshadow}={\Midx{\!\pcol at colorstack@shadow!}}
+% =({\Uidx\celtshadow}_1,\celtshadow_2,\ldots,\celtshadow_n)
+% =\!\@elt!\Arg{\celtshadow_1}\;\!\@elt!\Arg{\celtshadow_2}\;\cdots\;
+%  \!\@elt!\Arg{\celtshadow_n}
+% $$
+% to which our version of \!\set at color! pushes $\celtshadow_i$ being
+% \!\current at color! which the original one defines, while popping is done
+% automatically by \TeX's grouping mechanism because pushes are done by
+% \!\edef! rather than \!\xdef!.  Then before we \!\def!ine $\Celtshadow^c$
+% we rewind
+% ${\Uidx\CSTshadow}^c=(\Celtshadow^c,\celtshadow_1,\ldots,\celtshadow_n)$
+% putting \!\special! for pop to the main vertical list for each elements,
+% and then after the \!\def!initon of $\Celtshadow^c$ we reestablish
+% $\CSTshadow^c$ putting coloring \!\special! for each element.
+% 
+% As for placing $\Celt^c$ at the bottom of $\CST^c$, we must ensure that
+% the placement is done for the \colpage{} in which the API command
+% belongs to, as we did in ordinary push\slash pop of the \colorstack.
+% Therefore the API command \!\insert!s $\Celt^c$ to $\cstraw$ in the form
+% of a \!\vbox!, whose height and depth are 1\,|sp| and width is 0,
+% containing the coloring \!\special! for $\Celt^c$.  Then when $\cstraw$ is
+% scanned for rewinding in \!\output!, this \!\vbox! is found to let
+% $\Celt^c$ have the \!\special! acquiring an \!\insert! from \!\@freelist!
+% it was $\bot$.  Note that $\cstraw$ may have multiple \!\vbox!es to update
+% $\Celt^c$ and if so the last one is effective.
+% 
+% 

+% 
 % \subsubsection{Coloring in Math Mode}
 % \label{sec:imp-ovv-color-mmode}
 % \changes{v1.24}{2013/07/27}
 %	{Add the subsection ``Coloring in Math Mode''.}
+% \changes{v1.34}{2018/05/07}
+% 	{Revise the description of \Sec1.6.4 according to the new
+%	 implementation with \cs{insert}.}
 % 
 % Unfortunately the solution above is imperfect because \TeX{} builds an
 % implicit \!\hbox! for a |{|\textit{math stuff}|}| construct in math mode
-% and the contents of \!\vadjust! in the construct does not contribute to
+% and an \!\insert! in the construct does not contribute to
 % the main vertical list at all\footnote{
 % 
-% The contents is not thrown away but \cs{vadjust} construct itself is added
-% to the list rather than the contents taking away the chance of the
-% contribution.}.
+% The contents is not thrown away but \cs{insert}ion itself is added
+% to the list rather than given to \cs{output}.}.
 % 
 % Since the implicit \!\hbox! does not care about \!\everyhbox!, we cannot
 % use the trick similar to that with \!\everyvbox!.  Another bad news is
@@ -768,58 +835,76 @@
 % have $\CSIndex{ifvmode}=\CSIndex{ifhmode}=\false$ and
 % $\CSIndex{ifmmode}=\true$ while $\CSIndex{ifinner}$ is $\true$ or $\false$
 % when we are in in-text or displayed math mode respectively.  Therefore, we
-% have to take care of the potential loss and unbalance of \!\output!
-% requests for push and pop.
+% have to take care of the potential loss of \!\insert!ion for pushes and
+% thus unmatched pops in $\cstraw$.
 % 
-% Since \!\output! requests can be lost, we cannot use $\cstb$ to carry
-% colors to be pushed to the stack $\cst$.  We also have to remember that,
-% in the cases like |${|\!\color!$\Arg{c}\textit{text}$|}$| or
-% |$|\!\textcolor!$\Arg{c}\ARg{text}$|$| expanded to the former, the
-% \!\output! request for push is lost while its counterpart for pop survives
+% For example, we have to remember that, in the cases like
+% |${|\!\color!$\Arg{c}\textit{text}$|}$| or
+% |$|\!\textcolor!$\~\Arg{c}\ARg{text}$|$| expanded to the former, the
+% \!\insert!ion for push is lost while its counterpart for pop survives
 % making it necessary to check the existance of pushing counterpart for each
-% pop\footnote{
+% pop in $\cstraw$\footnote{
 % 
 % Since a pop is always in a group one level outer from its push
 % counterpart, the pop request should be presented if the push does.}.
 % 
-% Therefore, we have to find a means for an \!\output! request of a push or
-% pop to carry the color to be pushed and the identifier to associate the
-% push and its counterpart pop.
+% Note that the fact that the pop in the examples is in the in-text math
+% does not help us, because the pop in
+% |$|\!\begingroup!\!\color!\Arg{c}\textit{text}\!\endgroup!|$| is also in
+% the in-text math while its pushing counterpart performs an effective
+% \!\insert!ion, and two \!\insert!ions must be presented in $\cstraw$
+% because we can have a page-break in \textit{text}.  Therefore, we have to
+% find a means to examine whether a pop $\celtpop_i$ has its counterpart
+% $\celt_i$ in $\cstraw$ to remove $\celt_i$ from $\cstraw$ if exists or to
+% igonore $\celtpop_i$ otherwise.  That is, we have to attach an identifier
+% $m$ to $\celt_i$ and $\celtpop_i$, i.e., to make them $\Uidx\mcelt_{i,m}$
+% and $\Uidx\mceltpop_{i,m}$.
 % 
 % Since the only means we have for the communication with \!\output! routine
-% is the page break \!\penalty!, we reserve a set of negative penalties
-% $\LP\Uidx\mppush{-}\mplimit,\mppush\RB$ for pushes and
-% $\LP\Uidx\mppop{-}\mplimit,\mppop\RB$ for pops to give the identifier $i$ to
-% a push, where $i\In0\mplimit$, $\mppush=-10100=-\!\pcol at op@mcpush!$,
-% $\mppop=-10200=-\!\pcol at op@mcpop!$, and
-% $\Uidx{\mplimit}=\!\pcol at mcpushlimit!=100$.  That is, a coloring operation
-% in math mode attempts to make an \!\output!  request with
-% $\!\penalty!=\mppush-i$ while the \!\penalty! for its counterpart pop is
-% $\mppop-i$.  The color $\Uidx\mcelt_i$ and the identifier $i$ is kept in the
-% macro $\cs{pcol at reset@color at mpop@}{\cdot}i=
-% \!\pcol at reset@color at mpop!\Arg{i}\~\Arg{\mcelt_i}$
+% is what we \!\insert! to $\cstraw$, the \!\insert!ed \!\vbox! must carry an
+% identifier $m$ for a push\slash pop in math mode.  To do that, we make
+% \!\vbox! $m$\,|sp| wide ($m>0$) if our version of \!\set at color! is in math
+% mode to represent $\mcelt_{i,m}$ and $\mceltpop_{i,m}$, while the width is
+% 0 otherwise as described in \secref{sec:imp-ovv-color-hmode}.  Then in the
+% scan of $\cstraw$ for rewinding in \!\output!, we supress
+% incrementing\slash decrementing $\npop$ for $\mcelt_{i,m}$ and
+% $\mceltpop_{i,m}$, but remove $\mcelt_{i,m}$ if $\mceltpop_{i,m}$ is in
+% $\cstraw$ as a successor while we keep it in $\cstraw$ otherwise putting a
+% \!\special! of pop for it to the main vertical list.
+% 
+% To ensure that $\mcelt_{i,m}$ has its counterpart $\mceltpop_{i,m}$ in
+% $\cstraw$ iff the push and pop are in a \colpage, we maintain the counter
+% \!\pcol at mcid! incremented before (the attempt of) the \!\insert!ion of
+% $\mcelt_{i,m}$ with $m=\!\pcol at mcid!$ and the \!\aftergroup! reservaion
+% for that of $\mceltpop_{i,m}$.  Then the counter is zero-cleared by
+% \!\output! routine in order to keep it less than
+% $\!\pcol at mcpushlimit!=1000$ unless, roughly speaking, a \colpage{} has a
+% unexpectedly large number of math constructs having coloring commands in
+% them.  Note that this zero-clearing does not ensure that an identifier $m$
+% is unique in $\cstraw$.  That is, it can happen that $\cstraw$ has
+% $\mcelt_{i,m}$, $\mceltpop_{i,m}$, $\mcelt_{j,m}$ and/or $\mceltpop_{j,m}$
+% in this order for $i<j$, when two math constructs with coloring for $i$
+% and $j$ are in different paragraphs and \!\output! is invoked at or after
+% the end of the paragraph with the math for $i$.  This potential
+% duplication is, however, unharmful because of the following.
 % 
-% \SpecialArrayMainIndex{i}{\pcol at reset@color at mpop@}
-% 
-% which is also used as the token given to \!\aftergroup! in the coloring
-% operation.  Then the \!\output! routine for $\mppush-i$ appends $i$ to the
-% tail of the list
-% $\Uidx{\mplist}=\Midx{\!\pcol at colorstack@mpushed!}=(i_1,i_2,\ldots,i_k)$
-% of identifiers of pushes which have been done in the last pargraph made
-% just before the invocation of the \!\output! routine, and pushes $\mcelt_i$
-% to the \colorstack{} $\cst$.  The routine for $\mppop-i$ invoked by the
-% macro $\!\pcol at reset@color at mpop!\Arg{i}\Arg{\mcelt_i}$, on the other hand,
-% pops $\cst$ if $i$ is found in $\mplist$, i.e., its push counterpart is
-% processed by \!\output! routine to ensure the balance of push and pop.
+% \begin{itemize}
+% \item
+% Since a math construct cannot have immediate \!\output! invocations in it,
+% the order of the elements in $\cstraw$ must be $\mcelt_{i,m}$,
+% $\mceltpop_{i,m}$, $\mcelt_{j,m}$ and $\mceltpop_{j,m}$ from its bottom to
+% top, though some of them could be missing.  Therefore, if
+% $\mceltpop_{i,m}$ is in $\cstraw$, $\mcelt_{j,m}$ must follow it if
+% exsits not causing accidental matching with $\mceltpop_{i,m}$.
 % 
-% To give unique identifier to each push in a paragraph, we maintain the
-% counter $\!\pcol at mcid!$ which is incremented after (the attempt of)
-% \!\output! request of each push.  Then the counter is zero-cleared by
-% \!\output! routine in order to keep it less than $L$ unless, roughly
-% speaking, a \colpage{} has a unexpectedly large number of math constructs
-% having coloring commands in them.  Then at a push for $i=0$, we clear the
-% list $\mplist$ because pushes recorded in it should have been processed by
-% the last \!\output! routine and/or its predecessors.
+% \item
+% If $\mcelt_{i,m}$ is in $\cstraw$ but $\mceltpop_{i,m}$ is not, it means
+% we have a page break between vertical items corresponding to
+% $\mcelt_{i,m}$ and $\mceltpop_{i,m}$ to keep the \!\insert!ion of
+% $\mceltpop_{i,m}$ and anything following it from appended into $\cstraw$.
+% Therefore, $\cstraw$ cannot have $\mceltpop_{j,m}$ not causing accidental
+% matching with $\mcelt_{i,m}$.
+% \end{itemize}
 % 
 % 

 % 
@@ -841,19 +926,19 @@
 % \colpage{}s just having such \!\special!s as follows.  When we start a new
 % \colpage{}, we don't put \!\special!s for establishing immediately but
 % save the \colorstack{} $\CST^c$ into
-% $\Uidx\csts=\Midx{\!\pcol at colorstack@saved!}$.  Then when we leave the
+% $\Uidx\csts=\!\pcol at colorstack@saved!$.  Then when we leave the
 % \colpage{} by switching or page breaking, we examine the emptiness of the
 % \colpage{} and if so we do nothing, while otherwise we put the
-% \!\special!s for reestablishing $\csts$ at the top of the \colpage{}, and
-% those for rewinding at the bottom.  Similary, when we revisit a \colpage,
-% we examine its emptiness and if so we save $\CST^c$ into $\csts$, while
-% otherwise we put \!\special!s for reestablishing $\CST^c$ and nullify
-% $\csts$ so that nothing will be put at the top of the \colpage{} when we
-% leave it.  By these mechanisms, an empty \colpage{} should not have
-% coloring \!\special!s, while non-empty ones should have a sequence of
-% triples; reestablishing \!\special!s; ordinary main vertical list items
-% including coloring \!\special!s inserted by \!\color! etc.; and then
-% rewinding \!\special!s.
+% \!\special!s for reestablishing $\csts$ at the top of the \colpage{} and
+% those for rewinding $\cstraw$ at the bottom.  Similary, when we revisit a
+% \colpage, we examine its emptiness and if so we save $\CST^c$ into
+% $\csts$, while otherwise we put \!\special!s for reestablishing $\CST^c$
+% and nullify $\csts$ so that nothing will be put at the top of the
+% \colpage{} when we leave it.  By these mechanisms, an empty \colpage{}
+% should not have coloring \!\special!s, while non-empty ones should have a
+% sequence of triples; reestablishing \!\special!s; ordinary main vertical
+% list items including coloring \!\special!s inserted by \!\color! etc.; and
+% then rewinding \!\special!s.
 % 
 % 

 % 
@@ -1236,17 +1321,17 @@
 % |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 at depth! by also newly introduced \!\@testwrongwidth!, so that they
-% process only floats of a page/column category specified by \!\f at depth!,
-% while those not matching to \!\f at depth! are let go to \!\@deferlist! to
-% inhibit succeeding floats of the same type to overtake them.  The
-% \!\def!inition of \!\f at 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 at depth!=\!\z@!$ except for special occasions in which the
-% placement of \pwise{} floats is tried.
+% Then all float placement macros invoked in \!\output!-routine examine the
+% depth of floats in the list they are working on against a newly introduced
+% macro \!\f at depth! by also newly introduced \!\@testwrongwidth!, so that
+% they process only floats of a page/column category specified by
+% \!\f at depth!, while those not matching to \!\f at depth! are let go to
+% \!\@deferlist! to inhibit succeeding floats of the same type from
+% overtaking them.  The \!\def!inition of \!\f at 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 at 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,
@@ -1311,7 +1396,7 @@
 % \item
 % \label{item:ovv-float- at output@start}
 % We convert \!\@deferlist! to \!\@dbldeferlist! in \!\pcol at output@start! to
-% start a \env{paracol} environment, and peforms the reverse operation in
+% start a \env{paracol} environment, and perform the reverse operation in
 % \!\pcol at 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
@@ -1325,7 +1410,7 @@
 % 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,
+% Even if such guy a really exists and complains abount this transformation,
 % however, we have good right to say ``don't do that''.}.
 % \end{enumerate}
 % 
@@ -1416,16 +1501,21 @@
 % \end{itemize}
 % 
 % \item[\rm\Uidx{\!\bx at A!}, \ldots, \Uidx{\!\bx at R!}]
-% have floats created by \!\@xfloat! in the ordinary usage of \LaTeX.  In
-% addtion to it, we use these registers for completed \colpage{}s $s_c(p)$
-% (\!\pcol at opcol!, \!\pcol at flushcolumn!), main vertical list $\cc_c(\vb)$
-% (\!\pcol at output@start!, \!\pcol at output@switch!, \!\pcol at flushcolumn!)
-% and \Mcfnote{}s $\cc_c(\ft)$ (\!\pcol at output@switch!) in \ccolpage{}s,
-% \spanning{} including \preenv{} $\pp^i(p)$ (\!\pcol at startpage!,
-% \!\pcol at output@start!) and \Scfnote{}s $\pp^f(p)$ (\!\pcol at makecol!,
-% \!\pcol at output@switch!) in pages, \mvlfloat{}s for main vertical lists in
-% \sync{}ed pages (\!\pcol at synccolumn!), and \pwise{} floats deferred
-% from \env{paracol} to \postenv{} (\!\pcol at output@end!).
+% have floats created by \!\@xfloat! in the ordinary usage of {\em
+% fundamental\/} \LaTeX{} of 2014 or earlier or that without the extension
+% of e-\TeX{} or its relatives.  On the other hand, in \LaTeX{} of 2015 or
+% later and with e-\TeX{} or its relatives, the set is \!\bx at A!, \ldots,
+% \Uidx{\!\bx at Z!}, \Uidx{\!\bx at AA!}, \ldots, \Uidx{\!\bx at ZZ!}\@.  In addtion
+% to the use in \LaTeX, we use these registers for completed \colpage{}s
+% $s_c(p)$ (\!\pcol at opcol!, \!\pcol at flushcolumn!), main vertical list
+% $\cc_c(\vb)$ (\!\pcol at output@start!, \!\pcol at output@switch!,
+% \!\pcol at flushcolumn!)  and \Mcfnote{}s $\cc_c(\ft)$
+% (\!\pcol at output@switch!) in \ccolpage{}s, \spanning{} including \preenv{}
+% $\pp^i(p)$ (\!\pcol at startpage!, \!\pcol at output@start!) and \Scfnote{}s
+% $\pp^f(p)$ (\!\pcol at makecol!, \!\pcol at output@switch!) in pages,
+% \mvlfloat{}s for main vertical lists in \sync{}ed pages
+% (\!\pcol at synccolumn!), and \pwise{} floats deferred from \env{paracol} to
+% \postenv{} (\!\pcol at output@end!).
 % \end{description}
 % 
 % 

@@ -1453,13 +1543,12 @@
 % is \TeX's primitive register to have the page-break penalty inserted
 % between two lines.  The register is referred to in \!\pcol at output@start!
 % to make \Preenv{} \Mgfnote{}s followed by this \!\penalty! on the
-% \!\insert!ion, in \!\pcol at restartcolumn! and \!\pcol at return@from at color! to
-% insert the \!\penalty! in the register to resume a \colpage{} unless it is
-% suspended after a sectioning command, i.e., $\CSIndex{if at nobreak}=\true$,
-% in \!\pcol at deferredfootins!  to let the secnod half of split $\df$ have
-% this \!\penalty! as the very first element, in
-% \!\pcol at fntexttop!\marg{text} to make the footnote $\arg{text}$ followed
-% by this \!\penalty! on the \!\insert!ion, in
+% \!\insert!ion, in \!\pcol at restartcolumn! to insert the \!\penalty! in the
+% register to resume a \colpage{} unless it is suspended after a sectioning
+% command, i.e., $\CSIndex{if at nobreak}=\true$, in \!\pcol at deferredfootins!
+% to let the secnod half of split $\df$ have this \!\penalty! as the very
+% first element, in \!\pcol at fntexttop!\marg{text} to make the footnote
+% $\arg{text}$ followed by this \!\penalty! on the \!\insert!ion, in
 % \!\pcol at fntextother!\marg{text} to make the footnote $\arg{text}$ preceded
 % by this \!\penalty! in $\df$, and in \!\pcol at fntextbody! to let it have
 % \!\interfootnotelinepenalty!.
@@ -1514,6 +1603,7 @@
 % \!\pcol at makenormalcol!,
 % \!\pcol at output@switch!,
 % \!\pcol at setcurrcol!,
+% \!\pcol at iscancst!,
 % \!\pcol at addmarginpar!,
 % \!\pcol at do@mpbout at i!,
 % \!\pcol at sync!,
@@ -1542,10 +1632,6 @@
 % \!\pcol at swapcolumn!,
 % \!\pcol at set@color at push!,
 % \end{quote}
-% 
-% In addition, the register is used for the top level definition of
-% $\!\pcol at op@mcpop!=-\!\pcol at op@mcpush at pone!+1+\mplimit=
-% -(\mppush+1)+1+\mplimit=-(\mppush-\mplimit)$.
 % 
 % \item[\Uidx{\!\tw@!}]
 % is a \!\chardef! register to have 2.  It is used in \!\pcol at setcurrcol! to
@@ -1570,6 +1656,9 @@
 % scanning range $\LBRP\CBfrom{\CBto{-}1}$.
 % 
 % \item
+% \!\pcol at iscancst! to decrement $\npop$ by one.
+% 
+% \item
 % \!\pcol at do@mpbout at i! to let \!\@tempcnta! have it to indicate left margin.
 % 
 % \item
@@ -1582,10 +1671,6 @@
 % \item
 % \!\pcol at iadjustfnctr! to decrement \!\c at footnote!.
 % \end{itemize}
-% 
-% The register is also used for the top level definition of
-% $\!\pcol at op@mcpush at pone!=-(-\mppush-1)=\mppush+1$ and
-% $\!\pcol at op@mcpop at pone!=-(-\mppop-1)=\mppop+1$.
 % 
 % \item[\Uidx{\!\sixt@@n!}]
 % is a \!\chardef! register to have 16.  It is used in
@@ -1608,11 +1693,11 @@
 % \begin{itemize}
 % \item
 % \!\pcol at ShowBox! to let \!\showboxdepth! and \!\showboxbreadth!  have
-% 10000 for full logging of a box having footnotes.
+% 10000 for full logging of a box.
 % 
 % \item
 % \!\pcol at output! to examine if $\!\outputpenalty!<-10000$ to mean a special
-% \!\output!  request.
+% \!\output! request.
 % 
 % \item
 % \!\pcol at specialoutput! to let $\!\outputpenalty!=-10000$ to tell
@@ -1635,22 +1720,19 @@
 % $\!\pcol at setcw@calcf!\<x\>\<y\>\<z\>$ to let $Z=z\times1\,|pt|=10000\,|pt|$
 % if $x/y$ is too large.
 % \end{itemize}
-% 
-% In addition, the register is used for the top level definition of
-% $\!\pcol at op@mcpush!=10000+\mplimit$.
 % 
 % \item[\Uidx{\!\@Mii!}]
 % is a \!\mathchardef! register to have 10002.  It is used in
 % \!\pcol at end@dblfloat! to examine if $\!\@floatpenalty!=-10002$ to mean the
-% float environment to be closed is in horizontal mode.
+% float environment to be closed is given in horizontal mode.
 % 
 % \item[\Uidx{\!\@Miv!}]
 % is a \!\mathchardef! register to have 10004.  It is used in \!\pcol at output!
 % to examine if $\!\outputpenalty!=-10004$ for a dummy \!\output! request
-% made by \LaTeX's float-related macros and our \!\pcol at invokeoutput! and
-% \!\pcol at color@invokeoutput! to ensure the real request is not eliminated
-% when it is made at the very beginning of a page or a \colpage.  It is also
-% used in \!\pcol at specialoutput! for footnote logging when
+% made by \LaTeX's float-related macros and our \!\pcol at invokeoutput! to
+% ensure the real request is not eliminated when it is made at the very
+% beginning of a page or a \colpage.  It is also used in
+% \!\pcol at specialoutput! for footnote logging when
 % $\!\outputpenalty!=-10004$.
 % 
 % \item[\Uidx{\!\@MM!}]
@@ -1713,7 +1795,7 @@
 % 
 % \begin{itemize}
 % \item
-% our own \!\@outputpage! to give $\page(p)$ or $\page(p)+1$ to
+% Our own \!\@outputpage! to give $\page(p)$ or $\page(p)+1$ to
 % \!\pcol at outputpage@l! and \!\pcol at outputpage@r! which finally let the
 % register have the value to be referred to by \!\pcol@@outputpage! being
 % \LaTeX's \!\@outputpage!.
@@ -1784,6 +1866,7 @@
 % 
 % \item[\Uidx{\!\count@!}]
 % is a \!\count! register for temporary use.  It is used in
+% \!\pcol at iscancst! to have $m$ of $\mcelt_{i,m}$,
 % \!\pcol at addmarginpar! to have the physical column position of the current
 % column $c$ in which \!\marginpar! is given, and in
 % $\!\pcol at extract@fil at i!\<s\>\!\@nil!$ to exract the unit of the stretch
@@ -1823,21 +1906,14 @@
 % \item
 % In \!\@outputpage!, it has $\page(p)$ or $\page(p)+1$ to be given to
 % \!\pcol at outputpage@l! or \!\pcol at outputpage@r! as their argument when they
-% are used to ship out the second (not alwways right) component of a
+% are used to ship out the second (not always right) component of a
 % \parapag{}e pair.
 % 
 % \item
 % In \!\pcol at bg@columnleft!, it has a value in $\LBRP\CBfrom{c}$ to sum up
-% the width of columns and \csepgap{}s of in the range.
+% the width of columns and \csepgap{}s in the range.
 % 
 % \item
-% In \!\pcol at specialoutput!, it has $i=-(\!\outputpenalty!-P_x)$ where
-% $P_x\in\{\mppush,\mppop\}$ when $\!\outputpenalty!\leq\mppush$ to pass $i$
-% to \!\pcol at output@mcpush! or \!\pcol at output@mcpop! as the identifier of
-% the push operation.  Then the register referred to by the former directly
-% and by \!\pcol at output@mcpop at elt! invoked from the latter.
-% 
-% \item
 % In \!\pcol at output@switch!, it is used to have $\page(p)$ obtained by
 % \!\pcol at getcurrp~info! and simply to store the value in $\pp^p(p)$ by
 % \!\pcol at defcurrpage!  when we use these macros to add an element to
@@ -1851,6 +1927,12 @@
 % \SpecialIndex{\if at afterindent}
 % 
 % \item
+% In $\!\pcol at scancst!\arg{box}$, it is let have
+% $\arg{box}\in\{\!\pcol at colorins!,|\pcol at color|\~|stack at saved|\}$ and then is
+% referred to in \!\pcol at iscancst!.
+% \SpecialIndex{\pcol at colorstack@saved}
+% 
+% \item
 % In \!\pcol at addmarginpar! besides the page scan shown above, it is used to
 % scan all columns whose physical position is left from the current
 % colum $c$ to measure the distance between the left edges of the leftmost
@@ -1909,21 +1991,7 @@
 % In $\!\marginparthreshold!\Arg{t_l}|[|t_r|]|$ it is let have $t_l$, while
 % in the related macro $\!\pcol at marginparthreshold!|[|t_r|]|$ it is let have
 % $t_r$.
-% 
-% \item
-% In \!\pcol at set@color at push!, it is used to calculate the \!\penalty!
-% $\mppush-i$ for the \!\output! request of $i$-th math-mode color push.
-% 
-% \item
-% In \!\pcol at reset@color at mpop!, it is used to calculate the \!\penalty!
-% $\mppop-i$ for the \!\output! request to pop \colorstack{} element pushed
-% by $i$-th math-mode coloring operation.
 % \end{itemize}
-% 
-% In addition, the register is used in the top level definition of
-% \!\pcol at op@mcpush!, \!\pcol at op@mcpush at pone!, \!\pcol at op@mcpop! and
-% \!\pcol at op@mcpop at pone! to have $P_x$ or $P_x-1$ where
-% $P_x\in\{\mppush,\mppop\}$.
 % 
 % \item[\Uidx{\!\@tempcntb!}]
 % is a \!\count! register for temporary use.  It is used in the following
@@ -1937,6 +2005,9 @@
 % $c'\In\Cfrom\Cto$, where $(\Cfrom,\Cto)\in\{(0,\CL),(\CL,\C)\}$.
 % 
 % \item
+% In \!\pcol at scancst! and \!\pcol at iscancst!, it has $\npop$.
+% 
+% \item
 % In \!\pcol at addmarginpar!, it is let have the column number $d$ whose
 % phisical position is left from the current colum $c$ to measure the
 % distance between the left edges of the leftmost column and $c$.
@@ -1988,11 +2059,11 @@
 % temporary setting for a page with bottom floats has some reasonability but
 % its implementation for \env{paracol} environments having \cswitch{}
 % from/to a \colpage{} with bottom floats to/from another one without
-% them\footnote{
+% them is too costly\footnote{
 % 
-% Unless we incorporate \cs{maxdepth} as a member of \cctext, but we don't
-% because the idea of temporary setting itself is too vague to pay the
-% effort and a precious membership in \cctext.}.
+% That is, we would need to incorporate \cs{maxdepth} as a member of
+% \cctext, but we don't because the idea of temporary setting itself is too
+% vague to pay the effort and a precious membership in \cctext.}.
 % 
 % Therefore, we let the register have \!\@maxdepth! in \!\pcol at output! and
 % \!\pcol at combinefloats! to cancel the temporary setting done in
@@ -2026,6 +2097,11 @@
 % \!\pcol at zparacol!  also refers to it to save it in \!\pcol at firstprevdepth!
 % for the \preenv.
 % 
+% \item[\Uidx{\!\vfuzz!}]
+% is \TeX's primitive register to have the threshold height of overfull
+% messaging.  It is set to 0 in $\!\pcol at ShowBox!\arg{b}$ to ensure overfull
+% for any \!\box! $b$ of non-null height.
+% 
 % \item[\Uidx{\!\maxdimen!}]
 % is a \!\dimen! register to have $16383.99999\,|pt|$ being the largest
 % legal dimensional value.  The usages of this register are as follows.
@@ -2032,6 +2108,12 @@
 % 
 % \begin{itemize}
 % \item
+% For the \!\insert! register set $\!\pcol at colorins!=\cstraw$,
+% \!\dimen!\!\pcol at colorins! is let be \!\maxdimen! for the consistency with
+% our intention that a \colpage{} can have virtually infinite number of
+% \!\insert!ions for text coloring.
+% 
+% \item
 % In \!\pcol at output!, it is set into \!\vsize! when $\!\outputpenalty!=-10004$
 % for the dummy \!\output! request so that no page break should occur
 % between the dummy and real requests.
@@ -2235,7 +2317,9 @@
 % \!\pcol at bg@paperwidth!  to calculate $\WP-2\WR$.
 % 
 % \item[\Uidx{\!\z@!}]
-% is a \!\dimen! register to have 0\,|pt| and is used in the following macros.
+% is a \!\dimen! register to have 0\,|pt| to initialize \!\pagerim! and
+% \!\skip!\!\pcol at colorins! at their declarations, and is used in the
+% following macros.
 % 
 % \begin{quote}\raggedright
 % \!\pcol at ShowBox!,
@@ -2256,6 +2340,7 @@
 % \!\pcol at bg@paintregion!,
 % \!\pcol at output@start!,
 % \!\pcol at putbackmvl!,
+% \!\pcol at iscancst!,
 % \!\pcol at deferredfootins!,
 % \!\pcol at addmarginpar!,
 % \!\pcol at getmparbottom!,
@@ -2272,12 +2357,17 @@
 % \!\pcol at extract@fil at ii!,
 % \!\pcol at sptext!,
 % \!\pcol at fntextbody!.
+% \!\pcol at icolumncolor!,
 % \!\pcol at set@color at push!,
+% \!\pcol at reset@color at pop!,
+% \!\pcol at reset@color at mpop!,
 % \!\pcol at backgroundcolor@iii!.
 % \end{quote}
 % 
-% It is also used to give the number 0 to initialize \!\pcol at currcol! at its
-% declaration, and in the following macros.
+% It is also used to give the number 0 for the initializations of
+% \!\pcol at currcol!, \!\pcol at ncol!, \!\pcol at ncolleft! and
+% \!\count!\!\pcol at colorins! at their declarations, and in the following
+% macros.
 % 
 % \begin{quote}\raggedright
 % \!\pcol at ShowBox!,
@@ -2295,6 +2385,7 @@
 % \!\pcol at output@start!,
 % \!\pcol at output@switch!,
 % \!\pcol at setcurrcol!,
+% \!\pcol at iscancst!,
 % \!\pcol at addmarginpar!,
 % \!\pcol at setmpbelt!,
 % \!\pcol at do@mpbout at i!,
@@ -2318,15 +2409,14 @@
 % \!\pcol at sptext!,
 % \!\pcol at switchcol!,
 % \!\pcol at visitallcols!,
-% \!\pcol at set@color at push!,
 % \!\endparacol!.
 % \end{quote}
 % 
 % \item[\Uidx{\!\p@!}]
 % \begin{Sloppy}{3950}%
-% is a \!\dimen! register to have 1\,|pt|.  It is used in \!\pcol at cflt!,
-% \!\pcol at addflhd!, \!\pcol at synccolumn!, \!\pcol at output@end!,
-% \!\pcol at setcolwidth@s!, \!\pcol at setcw@getspec at i!, \!\pcol at setcw@fill! and 
+% is a \!\dimen! register to have 1\,|pt|.  It is used in \!\pcol at ShowBox!,
+% \!\pcol at cflt!, \!\pcol at addflhd!, \!\pcol at synccolumn!, \!\pcol at output@end!,
+% \!\pcol at setcolwidth@s!, \!\pcol at setcw@getspec at i!, \!\pcol at setcw@fill! and
 % \!\pcol at setcw@calcf!, and the top level assignment to \!\@tempskipa! for
 % the invocation of \!\pcol at defkw!, as the shorthand of |pt|.
 % \end{Sloppy}
@@ -2498,7 +2588,7 @@
 % \begin{itemize}
 % \item
 % \!\pcol at buildcolseprule!, \!\pcol at buildcselt@S! and \!\pcol at buildcselt! to
-% have the argument $d\in\{\!\@maxdepth!,0\}$ of the former macro.
+% have the argument $d\in\{\!\@maxdepth!,0\}$ of the first macro.
 % 
 % \item
 % \!\pcol at bg@paintregion at i! to have $y_1$ of $\bgr_a^{[c]}$.
@@ -2507,6 +2597,10 @@
 % $\!\pcol at bias@mpbout at i!\Arg{y}\Arg{t}\Arg{b}$ to have $t$ and then $t+y$.
 % 
 % \item
+% \!\pcol at output@switch! to have the height of \prespan{} in
+% \!\pcol at prespan!, or 0 if it is $\bot$.
+% 
+% \item
 % \!\pcol at sync! to have $V$ or $V-\DT+\VE$.
 % 
 % \item
@@ -2573,9 +2667,9 @@
 % In \!\pcol at outputelt!, it has $\pp^h(p)$ to examine if $p$ is a \fpage.
 % 
 % \item
-% In \!\pcol at outputelt!, it has $\pp^h(p)$ possibly shrunk by \Scfnote{}s
+% In \!\pcol at ioutputelt!, it has $\pp^h(p)$ possibly shrunk by \Scfnote{}s
 % to know the \bground{}s to be painted for columns etc.  After that it has
-% $\w_c$ being the width of each |\hbox| into which the \colpage{} of each
+% $\w_c$ being the width of each \!\hbox! into which the \colpage{} of each
 % column $c$ is put.
 % 
 % \item
@@ -2667,9 +2761,9 @@
 % are scaling parameters for good approximation.
 % 
 % \item
-% In \!\pcol at switchcol!, it is let have \!\pcol at ensurevspace! so that
-% registers in it is evaluated in the macro and the evaluateion result is
-% assigned to $\VE=\!\pcol@@ensurevspace!$.
+% In \!\pcol at switchcol!, it is let have what \!\pcol at ensurevspace! has so
+% that the dimensional expression in it is evaluated in the macro and the
+% evaluateion result is assigned to $\VE=\!\pcol@@ensurevspace!$.
 % 
 % \item
 % In $\!\ensurevspace!\ARg{space}$, it is let have $\arg{space}$ to ensure
@@ -2680,6 +2774,11 @@
 % which the footnote is encapsulated.
 % 
 % \item
+% In \!\pcol at set@color at push!, it has the width of the \!\vbox! to be
+% \!\insert!ed, which is $m$\,|sp| for a math-mode push of $\mcelt_{i,m}$ or
+% 0 for a non-math one $\celt_i$.
+% 
+% \item
 % In $\!\pcol at bg@defext!\Arg{d}\Arg{e}$, it is let have $e$ to confirm $e$
 % is a proper dimension.
 % \end{itemize}
@@ -2968,8 +3067,9 @@
 % skip above \Scfnote{}s.
 % 
 % \item[\Uidx{\!\voidb at x!}]
-% is a \!\box! register to be void ($\bot$) always.  It is referred to
-% by the following macros.
+% is a \!\box! register to be void ($\bot$) always.  It is used to
+% initialize \!\pcol at prespan! and \!\pcol at rightpage! at their declaration,
+% and is referred to by the following macros.
 % 
 % \begin{itemize}
 % \item
@@ -2988,11 +3088,12 @@
 % \!\pcol at ioutputelt! to examine if $\S_c$ is empty.
 % 
 % \item
-% \!\pcol at output@start! to let $\pp^f(0)=\bot$.
+% \!\pcol at output@start! to let $\pp^f(0)=\bot$, and $\Celt^c=\bot$ if
+% $\Celtshadow^c$ is undefined.
 % 
 % \item
-% \!\pcol at output@switch! to let $\cc_c(\ft^b)=\bot$ if a column does not
-% have \Mcfnote{}s.
+% \!\pcol at output@switch! to let $\cc_c(\ft^b)=\bot$ if the column does
+% not have \Mcfnote{}s.
 % 
 % \item
 % \!\pcol at getcurrfoot! to let \!\footins! be void if so.
@@ -3003,9 +3104,14 @@
 % 
 % \item
 % \!\pcol at putbackmvl! to let $\!\pcol at prespan!=\bot$ if a \mctext{} really
-% starts from the top of a \colpage.
+% starts from the top of a \colpage, and $\csts=\bot$ if the \colpage{}
+% $\cc_c(\vb)$ to be restarted is non-empty.
 % 
 % \item
+% \!\pcol at savecolorstack! to let $\csts=\bot$ or its first item be $\bot$ if
+% $\CST^c$ or $\Celt^c$ is $\bot$, resepectively.
+% 
+% \item
 % \!\pcol at savefootins! to let its argument macro have a void box if
 % \!\@freelist! is exhausted.
 % 
@@ -3023,7 +3129,8 @@
 % \item
 % \!\pcol at output@end! to let $\!\pcol at rightpage!=\bot$ if
 % the last page has nothing other than \spanning{} being \pwise{} floats
-% and thus we don't have the right \parapag{}e.
+% and thus we don't have the right \parapag{}e.  The macro also lets
+% $\Celt^c=\bot$ for all $c$ and $\cst=\bot$.
 %
 % \item
 % \!\pcol at com@flushpage! and \!\pcol at com@clearpage! gives the void box to
@@ -3036,9 +3143,8 @@
 % is a \!\box! register to have the main vertical list when \!\output! is
 % invoked with a special \!\penalty! code.  It is let have that by
 % \!\pcol at specialoutput!, and is referred to by \!\pcol at output@start!  and
-% \!\pcol at makenormalcol! for \preenv{}, by \!\pcol at output@switch! for the
-% column from which we are leaving, and by \!\pcol at return@from at color! to put
-% its contents back to the main vertical list.
+% \!\pcol at makenormalcol! for \preenv{}, and by \!\pcol at output@switch! for the
+% column from which we are leaving.
 % 
 % \item[\Uidx{\!\@outputbox!}]
 % is a \!\box! register to have a partial or the complete ship-out image
@@ -3160,6 +3266,14 @@
 % if $\arg{box}$ is empty.
 % 
 % \item
+% In $\!\pcol at scancst!\arg{box}$ and \!\pcol at iscancst!, it is used to have
+% what $\cst$ or $\csts$ has after the scan of $\arg{box}\in\{\cst,\csts\}$.
+% 
+% \item
+% In \!\pcol at savecolorstack!, it is used to have the \!\vbox! for $\Celt^c$
+% to be placed at the top of $\csts$.
+% 
+% \item
 % In \!\pcol at deferredfootins!, it is used to have the first half split from
 % $\df$ being the deferred footnotes to be \!\insert!ed.
 % 
@@ -3166,6 +3280,19 @@
 % \item
 % In \!\pcol at fntextbody!\marg{text}, it is used to encapsulate $\arg{text}$
 % in it.
+% 
+% \item
+% In \!\pcol at icolumncolor!, it is used to have a \!\vbox! to be \!\insert!ed
+% for the update of $\Celt^c$.
+% 
+% \item
+% In \!\pcol at set@color at push!, it is used to have a \!\vbox! to be \!\insert!ed
+% to push $\celt_i$ or $\mcelt_{i,m}$ to $\cstraw$.
+% 
+% \item
+% In \!\pcol at reset@color at pop! and \!\pcol at reset@color at mpop!, it is used to
+% have a \!\vbox! to be \!\insert!ed to add $\celtpop_i$ or
+% $\mceltpop_{i,m}$ to $\cstraw$.
 % \end{itemize}
 % \end{description}
 % 
@@ -3271,12 +3398,15 @@
 % \CSIndex{if at afterindent} by \!\pcol at setcurrcol!, and then restored from
 % it by \!\pcol at iigetcurrcol!.  The macro \!\pcol at output@switch! refers to
 % it to broadcast its value set by a \mctext{} to $\cc_c(\sw)$ for all
-% $c\In0\C$, while \!\pcol at restartcolumn! and \!\pcol at return@from at color!
-% insert $\!\penalty!=10000$ by \!\nobreak! if the switch is $\true$.  The
-% macro \!\pcol at zparacol! also exmaines the switch, but with the truth value
-% in it given outside \env{paracol} environment, to invoke \!\@nbitem! if
-% $\true$ when the macro finds the \env{paracol} environment to start is at
-% the very beginning of a \env{list}-like environment.
+% $c\In0\C$, while \!\pcol at restartcolumn! inserts $\!\penalty!=10000$ by
+% \!\nobreak! if the switch is $\true$.  This conditional \!\nobreak!
+% is also done by \!\pcol at icolumncolor!, \!\pcol at set@color at push!,
+% \!\pcol at reset@color at pop! and \!\pcol at reset@color at mpop! to avoid a break
+% after an \!\insert!.  The macro \!\pcol at zparacol! also exmaines the
+% switch, but with the truth value in it given outside \env{paracol}
+% environment, to invoke \!\@nbitem! if $\true$ when the macro finds the
+% \env{paracol} environment to start is at the very beginning of a
+% \env{list}-like environment.
 % 
 % \item[\Uidx{\CSIndex{if at newlist}}]
 % is a switch to be $\true$ in the duration after a \env{list}-like
@@ -3355,12 +3485,13 @@
 % is \scfnote{} and $p<\ptop$.
 % 
 % \item
-% In \!\pcol at icolumncolor!, it is turned $\true$ iff we are in a \!\vbox! or
-% in restricted horizontal or math mode.
+% In \!\pcol at scancst!, it is initialized to be $\true$.  Then it is referred
+% to by \!\pcol at iscancst! for each $\celt\in\cstraw$ to update $\Celt^c$ and
+% then turned $\false$ when the first one is found.
 % 
 % \item
-% It is turned $\false$ by \!\pcol at output@mcpop! for $\mppop-i$, and then
-% turned $\true$ by \!\pcol at output@mcpop at elt! iff $i\in\mplist$.
+% In \!\pcol at savecolorstack!, it is $\true$ iff either $\cst\neq\bot$ or
+% $\Celt^c\neq\bot$, i.e., $\CST^c$ to be saved is not $\bot$.
 % 
 % \item
 % In \!\pcol at getmparbottom!, it is intialized to be $\false$ and then may be
@@ -3438,6 +3569,10 @@
 % \!\@tempswatrue! as the default.
 % 
 % \item
+% In \!\pcol at icolumncolor!, it is turned $\true$ iff we are in a \!\vbox! or
+% in restricted horizontal or math mode.
+% 
+% \item
 % In \!\pcol at backgroundcolor@i!, it is exmained if the root of the
 % invocation chain is \!\backgroundcolor! which turns the switch $\true$, or
 % \!\nobackgroundcolor! which turns it $\false$, to determine whether the
@@ -3456,9 +3591,9 @@
 % \item[\Uidx{\CSIndex{par}}]
 % is \TeX's primitive to end\slash start paragraphs, but may be modified by
 % \LaTeX{} to have some special functionality occasionally.  The macro
-% \!\pcol at output! makes it \!\let!-equal to \!\@@par! in which the \TeX's
-% orinigal definition is kept, while \!\pcol at zparacol! and \!\pcol at par! use
-% it as is.
+% \!\pcol at output! makes it \!\let!-equal to \hbox{\!\@@par!} in which the
+% \TeX's orinigal definition is kept, while \!\pcol at zparacol! and
+% \!\pcol at par! use it as is.
 % 
 % \item[\Uidx{\!\space!}]
 % is an API macro to have a space token.  It is used in \!\pcol at output!,
@@ -3523,8 +3658,9 @@
 % 
 % \item[\Uidx{\!\nobreak!}]
 % is an API macro to insert $\!\penalty!=10000$ to inhibit line or page
-% breaks.  It is used in \!\pcol at restartcolumn! and
-% \!\pcol at return@from at color! to meet the page-break inhibition request made
+% breaks.  It is used in \!\pcol at restartcolumn!, \!\pcol at icolumncolor!,
+% \!\pcol at set@color at push!, \!\pcol at reset@color at pop! and
+% \!\pcol at reset@color at mpop!  to meet the page-break inhibition request made
 % by $\CSIndex{if at nobreak}=\true$.
 % 
 % \item[\Uidx{$\!\addvspace!$\marg{skip}}]
@@ -3539,11 +3675,10 @@
 % is an API macro to insert a page break $\!\penalty!=\arg{pen}$ if
 % $\CSIndex{if at nobreak}={\false}$.  The \!\penalty! is inserted removing the
 % last vertical skip which is reinserted after the \!\penalty!.  The macro
-% is used in \!\pcol at restartcolumn! and \!\pcol at return@from at color! to insert
-% \!\interlinepenalty! if $\CSIndex{if at nobreak}=\false$, while
-% \!\pcol at zparacol! uses it to insert \!\@beginparpenalty! when it finds the
-% \env{paracol} environment to start is at the very beginning of a
-% \env{list}-like environment.
+% is used in \!\pcol at restartcolumn! to insert \!\interlinepenalty! if
+% $\CSIndex{if at nobreak}=\false$, while \!\pcol at zparacol! uses it to insert
+% \!\@beginparpenalty! when it finds the \env{paracol} environment to start
+% is at the very beginning of a \env{list}-like environment.
 % 
 % \item[\Uidx{\!\footnotesize!}]
 % is an API macro to set the font size for footnotes.  It is used in
@@ -3644,7 +3779,7 @@
 % message $\arg{msg}$ with the package identification $\arg{pkg}$ and the
 % help mssage $\arg{hlp}$.  The macro is used in the following macros;
 % \!\pcol at ovf! on \!\@freelist! shortage; \!\pcol at set@color at push! on too
-% many math-mode colorings, in \!\pcol at zparacol! on illegal nesting;
+% many math-mode colorings; in \!\pcol at zparacol! on illegal nesting;
 % $\!\pcol at setcw@calcf!\<x\>\<y\>\<z\>$ on too large $x/y$;
 % \!\pcol at switchcolumn! on invalid target column; \!\pcol at switchenv! on
 % illegal \cswitch{} commands\slash environments in a \csenv;
@@ -3828,15 +3963,12 @@
 % \SpecialArrayIndex{c}{\pcol at columnsep}
 % 
 % \item
-% \!\pcol at output@mcpush! with $\mppush-i$ for
-% $|\pcol at reset@color at mpop@|{\cdot}i$.
+% \!\pcol at ccuse! for
+% $\Celt^c=|\pcol at columncolor@box|{\cdot}c$ or
+% $\Celtshadow^c=|\pcol at columncolor|{\cdot}c$.
 % 
-% \SpecialArrayIndex{i}{\pcol at reset@color at mpop@}
-% 
-% \item
-% \!\pcol at colorstack@full! for $\Celt^c=~|\pcol at column|\~|color|{\cdot}c$.
-% 
 % \SpecialArrayIndex{c}{\pcol at columncolor}
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
 % 
 % \item
 % \!\column*! for \!\pcol at com@column*!.
@@ -3881,7 +4013,7 @@
 % \SpecialIndex{\pcol at ac@def at lof}\SpecialIndex{\pcol at ac@def at lot}
 % 
 % \item
-% $\!\pcol at ac@def at lof!\arg{eord}$ and $\!\pcol at ac@def at lot!{\cdot}\arg{eord}$
+% $\!\pcol at ac@def at lof!\arg{eord}$ and $\!\pcol at ac@def at lot!\arg{eord}$
 % for $|\pcol at ac@caption@|{\cdot}\~\arg{eord}$.
 % 
 % \SpecialIndex{\pcol at ac@caption at enable}
@@ -3917,14 +4049,15 @@
 % \end{itemize}
 % 
 % \item[\Uidx{$\!\@gobble!\arg{arg}$}]
-% discards its argument $\arg{arg}$.  It is used in \!\pcol at set@color at elt!
-% for temporarily letting \!\aftergroup! be \!\@gobble! to nullify
-% \!\aftergroup!  with \!\reset at color! invoked in \!\pcol at set@color!, being
-% the original version of \!\set at color!, and in \!\pcol at zparacol! to make
-% \!\pcol at bg@paintbox! \!\let!-equal to \!\@gobble! to nullify it if any
-% coloring packages have not been loaded.  In addition, the macros
-% \!\pcol at F! and \!\pcol at Fe! for logging are made \!\let!-equial to
-% \!\@gobble! at the top level to nullify them.
+% discards its argument $\arg{arg}$.  It is used in \!\pcol at output@start!,
+% \!\pcol at icolumncolor! and \!\pcol at set@color at push! for temporarily letting
+% \!\aftergroup! be \!\@gobble! to nullify \!\aftergroup! with
+% \!\reset at color! invoked in \!\pcol at set@color!, being the original version
+% of \!\set at color!, and in \!\pcol at zparacol! to make \!\pcol at bg@paintbox!
+% \!\let!-equal to \!\@gobble! to nullify it if any coloring packages have
+% not been loaded.  In addition, the macros \!\pcol at F! and \!\pcol at 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}%
@@ -4101,12 +4234,16 @@
 % floats.
 % 
 % \item
-% \!\pcol at output@start! for the \preenv{} and \colpage{}s of all columns.
+% \!\pcol at output@start! for the \preenv{}, and \colpage{}s and $\Celt^c$ of
+% all columns.
 % 
 % \item
 % \!\pcol at output@switch! for the \colpage{} from which we are leaving.
 % 
 % \item
+% \!\pcol at iscancst! for $\Celt^c$.
+% 
+% \item
 % \!\pcol at savefootins! for footnotes.
 % 
 % \item
@@ -4119,6 +4256,9 @@
 % \item
 % \!\pcol at output@end! for the \pwise{} floats in the \lpage{} if the
 % main vertical list of the page is empty.
+% 
+% \item
+% \!\pcol at icolumncolor! for $\Celt^c$.
 % \end{itemize}
 % 
 % The macro is also used in \!\pcol at ioutputelt! to obtain completed
@@ -4158,17 +4298,6 @@
 % and its footnotes $\cc_c(\ft)$ if any, to \!\@freelist!.
 % 
 % \item
-% \!\pcol at set@color at push! to push $\gamma$ in \!\current at color! to the
-% \colorstack{} pushing list $\cstb=\!\pcol at colorstack@buf!$.
-% 
-% \item
-% \!\pcol at output@icpush! to push $\gamma$ at the head of $\cstb$ into $\cst$.
-% 
-% \item
-% $\!\pcol at reset@color at elt!\!\@elt!\Arg{\celt_i}\!\@elt!\Arg{\celt_{i+1}}$ to
-% repush the non-top $\celt_i$ into $\cst$.
-% 
-% \item
 % $\!\pcol at getmparbottom!\<t\>\<h\>$ to add
 % $\mpar(\max(t,b_n),\max(t,b_n){+}h)$ to the tail of the list
 % $\mpb_{\{L,R\}}^{\{l,r\}}$, and its callee
@@ -4198,8 +4327,8 @@
 % $\cc_c(\vb^p)=\ptop$ to \!\@freelist! if any.
 % 
 % \item
-% \!\pcol at output@end! to return $\pp^f(\ptop)$ and all \ccolpage{}s
-% $\cc_c(\vb)$ to \!\@free~list!.
+% \!\pcol at output@end! to return $\pp^f(\ptop)$, all \ccolpage{}s
+% $\cc_c(\vb)$, and all $\Celt^c\neq\bot$ to \!\@freelist!.
 % 
 % \item
 % \!\pcol at end@dblfloat! to add a \pwise{} float in \!\@currbox! to
@@ -4250,8 +4379,8 @@
 % 
 % \item[\Uidx{\!\@ehb!}]
 % is an internal macro having a help message saying the error causes a
-% serious problem.  It is used in \!\pcol at ovf! as the argument of
-% \!\PackageError!.
+% serious problem.  It is used in \!\pcol at ovf! and \!\pcol at set@color at push!
+% as the argument of \!\PackageError!.
 % 
 % \item[\Uidx{$\!\@latex at warning@no at line!\arg{msg}$}]
 % is an internal macro to report a warning message $\arg{msg}$ without the
@@ -4292,10 +4421,15 @@
 % 
 % \item
 % \!\pcol at icolumncolor! complains that no color packages have been loaded if
-% \!\set at color!${}={}$\!\relax!, while otherwise its descendent
-% \!\pcol at iicolumncolor!  temporarily lets $\!\set at color!=\!\relax!$ so that
+% \!\set at color!${}={}$\!\relax!, and then otherwise temporarily lets it be
+% the original saved in \!\pcol at set@color! to \!\insert! a \!\vbox! to
+% update $\Celt^c$ or to do the update immediately.
+% 
+% \item
+% \!\pcol at iicolumncolor! temporarily lets $\!\set at color!=\!\relax!$ so that
 % \!\color! or \!\normalcolor! invoked in the macro just defines
-% \!\current at color!  without doing any other coloring operations.
+% \!\current at color! to be set into $\Celtshadow^c$ without doing any other
+% coloring operations.
 % 
 % \item
 % \!\pcol at defcseprulecolor@i! complains that no color packages have been
@@ -4318,7 +4452,11 @@
 % is an internal macro to finish text coloring started by \!\set at color!.  By
 % default it is undefined but may have some definition to put a \!\special!
 % to finish coloring.  It is used in \!\pcol at clearcolorstack! so as to apply
-% it to all elements in $\CST^c$.
+% it to all elements in $\CST^c$, in \!\pcol at iscancst! to put it to the
+% main vertical list in the case that $\Celt^c$ was $\bot$ and then updated,
+% in \!\pcol at icolumncolor! to apply it to all elements in $\CSTshadow^c$,
+% and in \!\pcol at reset@color at pop! and \!\pcol at reset@color at mpop! to have an
+% uncoloring \!\special! in the \!\vbox! for $\celt_i$ and $\mcelt_{i,m}$.
 % 
 % \item[\Uidx{\!\color at begingroup!}]
 % is an internal macro to open a group in which a color is specified.  It is
@@ -4416,7 +4554,7 @@
 % \!\pcol at output@clear! prior to processing \pwise{} floats in
 % \!\@dbldeferlist!.  As discussed in
 % item-(\ref{item:ovv-float- at dblfloatplacement}) of
-% Section~\ref{sec:imp-ovv-float}, this macro in 2015 or later version of
+% \secref{sec:imp-ovv-float}, this macro in 2015 or later version of
 % \LaTeX{} lets $\!\f at depth!=|1sp|$.
 % 
 % \item[\Uidx{\!\p at footnote!}]
@@ -4473,12 +4611,6 @@
 % \!\pcol at makecol! for an ordinary \colpage{}, and in \!\pcol at output@start!
 % and \!\pcol at makenormalcol! for \preenv{}.
 % 
-% \item[\Uidx{\!\@reinserts!}]
-% in an internal macro for \!\output! routine to put \!\footins! and
-% \!\@kludgeins! back to the main vertical list if they have something.  It
-% is used in \!\pcol at return@from at 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
@@ -4497,7 +4629,7 @@
 % 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 at outputpage@l! and \!\pcol at outputpage@r! being calles of our own
+% \!\pcol at outputpage@l! and \!\pcol at outputpage@r! being callees 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
@@ -4585,7 +4717,7 @@
 % 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- at addtodblcol} of Section \ref{sec:imp-ovv-float}.
+% item-(\ref{item:ovv-float- at addtodblcol}) of \secref{sec:imp-ovv-float}.
 % It is used in \!\pcol at startpage! to apply to each element of (the copy of)
 % \!\@dbldeferlist!.
 % 
@@ -4712,33 +4844,12 @@
 % $\cc_c(\bl)=\!\@botlist!$  and $\cc_c(\dl)=\!\@deferlist!$.
 % 
 % \item
-% \!\pcol at output@icpush! and \!\pcol at output@icset! have \!\@elt! in their
-% argument specifications to pick the first element of $\cstb$.
+% \!\pcol at scancst! and \!\pcol at iscancst! let $\!\@elt!=\!\relax!$ to
+% \!\edef!ine the list $M=(m\,\Bar\,\mceltpop_{j,m}\in\cstraw,\;j\geq i)$ for
+% $\mceltpop_{i,*}$, and then the latter \!\def!ines \!\@elt! as a macro with
+% an argument $m$ to examine $m\in M$ for $\mcelt_{i,m}$.
 % 
 % \item
-% \!\pcol at output@cpop! uses \!\@elt! to invoke \!\pcol at reset@color at elt!,
-% which also uses it for recursive invocatoin of itself.
-% 
-% \item
-% \!\pcol at output@mcpop! for $\mppop-i$ lets
-% $\!\@elt!=\!\pcol at output@mcpop at elt!$ for each $i_k\in\mplist$ to examine
-% if $\exists i_k=i$.
-% 
-% \item
-% \!\pcol at clearcolorstack! lets $\!\@elt!=\!\reset at color!$ for $\celt_i$ in
-% $\CST^c$ to rewind printer's \colorstack.
-% 
-% \item
-% \!\pcol at restorecst!$\<\mathit{\Gamma}'\>$ lets
-% $\!\@elt!=\!\pcol at set@color at elt!$ for $\celt_i$ 
-% in $\mathit{\Gamma}'\in\{\CST^c,\csts\}$ to reestablish printer's
-% \colorstack.
-% 
-% \item
-% \!\pcol at savecolorstack! lets $\!\@elt!=\!\relax!$ to save $\CST^c$ into
-% $\csts$.
-% 
-% \item
 % \!\pcol at addmarginpar! lets $\!\@elt!=\!\pcol at setmpbelt!$ for $\PPP$.
 % 
 % \item
@@ -4852,20 +4963,19 @@
 % for $\T$, and then $\!\@elt!=\!\relax!$ to give the default.
 % 
 % \item
+% \!\pcol at icolumncolor! \!\def!ines $\!\@elt!\arg{\celtshadow_i}$ to apply
+% \!\reset at color! for rewinding and \!\pcol at set@color! for reestablishing
+% to each $\celtshadow_i\in\CSTshadow^c=(\Celtshadow^c,\cstshadow)$
+% by \!\pcol at scancst@shadow!, in which \!\@elt! is explicitly applied to
+% $\Celtshadow^c$ if it is defined and then implicitly done to
+% $\cstshadow=\!\pcol at colorstack@shadow!$.
+% 
+% \item
 % \!\pcol at set@color at push! lets $\!\@elt!=\!\relax!$ to push a color
 % information into $\cstshadow$, with save\slash restore of its original
 % value.
 % 
 % \item
-% \!\pcol at icolumncolor! lets $\!\@elt!=\!\relax!$ to \!\xdef!ine
-% $\Celt^c=|\pcol at columncolor|{\cdot}\~c$,
-% $\Celtshadow^c=|\pcol at columncolor@shadow|{\cdot}\~c$ and
-% $\cstb=\!\pcol at colorstack@buf!$ in \!\pcol at iicolumncolor!.
-% 
-% \SpecialArrayIndex{c}{\pcol at columncolor}
-% \SpecialArrayIndex{c}{\pcol at columncolor@shadow}
-% 
-% \item
 % \!\resetbackgroundcolor! lets $\!\@elt!=\!\pcol at resetbackgroundcolor!$ to
 % scan \!\pcol at bg@defined! containing $\!\@elt!\Arg{a'_i}$ to let
 % $|\pcol at bg@color|{\cdot}a'_i$ for each of $i$.
@@ -4920,9 +5030,6 @@
 % ($\mathit{\Theta}'\in\{\CG,\CL\}$)\\
 % \!\pcol at sscounters! ($\Cc_c$)
 % \end{quote}
-% 
-% It is also used in \!\pcol at colorstack@full! to replace undefined $\Celt^c$
-% with it.
 % 
 % \item[\Uidx{\!\@currentlabel!}]
 % is an internal macro to have the reference to be associated with the
@@ -4950,12 +5057,13 @@
 % \!\pcol at opcol! ($\cc_c(\vb)$)\\
 % \!\pcol at startpage! ($\pp^i(\ptop)$)\\
 % \!\pcol at ioutputelt! ($\s_c(q)$)\\
-% \!\pcol at output@start! ($\pp^i(0)$, $\cc_c(\vb)$)\\
+% \!\pcol at output@start! ($\pp^i(0)$, $\cc_c(\vb)$, $\Celt^c$)\\
 % \!\pcol at output@switch! ($\cc_c(\vb)$)\\
 % \!\pcol at restartcolumn! ($\cc_c(\vb)$)\\
 % \!\pcol at igetcurrcol! ($\cc_c(\vb)$)\\
 % \!\pcol at setcurrcol! ($\cc_c(\vb)$)\\
 % \!\pcol at putbackmvl! ($\cc_c(\vb)$)\\
+% \!\pcol at iscancst! ($\Celt^c$)\\
 % \!\pcol at addmarginpar! (left marginal note)\\
 % \!\pcol at flushcolumn! ($\cc_c(\vb), \s_c(q)$)\\
 % \!\pcol at makefcolumn! ($\cc_c(\vb)$)\\
@@ -4964,7 +5072,8 @@
 % \!\pcol at imakeflushedpage! ($\cc_c(\vb)$)\\
 % \!\pcol at freshpage! ($\cc_c(\vb)$)\\
 % \!\pcol at output@end! (top float, $\cc_c(\vb)$)\\
-% \!\pcol at end@dblfloat! (\pwise{} float)
+% \!\pcol at end@dblfloat! (\pwise{} float)\\
+% \!\pcol at icolumncolor! ($\Celt^c$)
 % \end{quote}
 % 
 % \item[\Uidx{\!\@marbox!}]
@@ -4973,10 +5082,10 @@
 % 
 % \item[\Uidx{\!\@freelist!}]
 % is an internal macro having available \!\insert!s for floats originially,
-% but also \colpage{}s, \spanning{} and footnotes in our usage.  Besides the
-% acquisition of an \!\insert! from it shown in the description of
-% \!\@next!, it is used by the following macros to return the the objects in
-% parentheses to \!\@freelist!.
+% but also \colpage{}s, \spanning{}, footnotes and default column-color in
+% our usage.  Besides the acquisition of an \!\insert! from it shown in the
+% description of \!\@next!, it is used by the following macros to return the
+% the objects in parentheses to \!\@freelist!.
 % 
 % \begin{quote}
 % \!\pcol at cflt! ($\cc_c(\tl)$)\\
@@ -4992,7 +5101,7 @@
 % \!\pcol at makefcolpage! ($\cc_c(\tl)$)\\
 % \!\pcol at makeflushedpage! ($\pp^i(\ptop)$, $\pp^f(\ptop)$)\\
 % \!\pcol at imakeflushedpage! ($\cc_c(\ft)$)\\
-% \!\pcol at output@end! ($\pp^f(\ptop)$, $\cc_c(\vb)$)
+% \!\pcol at output@end! ($\pp^f(\ptop)$, $\cc_c(\vb)$, $\Celt^c$)
 % \end{quote}
 % 
 % In addition \!\pcol at F@count! scans its element to have its cardinality.
@@ -5006,16 +5115,8 @@
 % \!\pcol at getcurrpinfo! for the invocation of \!\@cdr!.
 % 
 % \item
-% \!\pcol at output@cpush! and \!\pcol at output@cset!  to remove the first
-% element of $\cstb$ by \!\pcol at output@icpush! and \!\pcol at output@icset!
-% respectively.
-% 
-% \item
-% \!\pcol at output@cpop! to terminate $\cst$.
-% 
-% \item
 % $\!\pcol at bias@mpbout at i!\Arg{y}\!\@elt!\Arg{t}\Arg{b}\!\@nil!$ to capture
-% $t$ and $b$ following the convetion in \!\pcol at do@mpb at all@ii!.
+% $t$ and $b$ following the convention in \!\pcol at do@mpb at all@ii!.
 % 
 % \item
 % \begingroup\def\,{\mskip0mu plus2mu\relax}
@@ -5068,19 +5169,14 @@
 % everything not processed by their ancestors.
 % \end{itemize}
 % 
-% \item[\Uidx{\!\@nnil!}]
-% is an internal macro having \!\@nil!.  It is referred to by
-% \!\pcol at reset@color at elt! to examine if it acts on the last element of the
-% \colorstack{} $\cst$ followed by the tail sentinel \!\@elt!\!\@nil!.
-% 
 % \item[\Uidx{\!\current at color!}]
 % is an internal macro having color information to be put into |.dvi| as a
 % part of the argument of coloring \!\special!.  It is referred to by
 % \!\pcol at bg@paintregion at i!,
-% \!\pcol at set@color at push!,
-% \!\pcol at set@color at elt!,
+% \!\pcol at output@start!,
 % \!\pcol at icolumncolor!,
 % \!\pcol at iicolumncolor!, and
+% \!\pcol at set@color at push!,
 % \!\pcol at backgroundcolor@y!.
 % 
 % \item[\Uidx{\!\@dbldeferlist!}]
@@ -5090,7 +5186,7 @@
 % lets it have \!\@deferlist! made before \beginparacol, and
 % \!\pcol at 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
+% As discussed in \secref{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.
@@ -5118,7 +5214,7 @@
 % \!\pcol at startpage! uses it as the interface with \!\@addtodblcol! of 2015
 % or later version of \LaTeX{} as discussed in
 % item-(\ref{item:ovv-float- at addtodblcol}) of
-% Section~\ref{sec:imp-ovv-float}.
+% \secref{sec:imp-ovv-float}.
 % 
 % \item
 % \!\pcol at setcurrcol! and \!\pcol at igetcurrcol! saves\slash restores it
@@ -5181,7 +5277,7 @@
 % specify the float category, \pwise{} or \cwise{} respectively, which
 % float-related macros work on.  As discussed in
 % item-(\ref{item:ovv-float- at dblfloatplacement}) of
-% Section~\ref{sec:imp-ovv-float}, this feature introduced in 2015 version
+% \secref{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 at startpage! and \!\pcol at output@clear! when they invoke the macro.
@@ -5264,13 +5360,19 @@
 % to broadcast it to other columns.
 % 
 % \item
-% In \!\pcol at output@cpop!, it has $\cst$ from which we remove its tail.
-% 
-% \item
 % In \!\pcol at ifempty!$\arg{box}\arg{then}\arg{else}$, it has $\arg{then}$ or
 % $\arg{else}$ according to the emptiness of $\arg{box}$.
 % 
 % \item
+% In \!\pcol at clearcolorstack!, it is \!\def!ined to put an uncoloring
+% \!\special! by \!\reset at color! for its argument $\celt_i$ in
+% \!\pcol at iscancst!.
+% 
+% \item
+% In \!\pcol at restorecst!, it is \!\def!ined to put a coloring \!\special! in
+% its argument $\celt_i$ by \!\unvbox! done in \!\pcol at iscancst!.
+% 
+% \item
 % In \!\pcol at addmarginpar!, at first it is made let equal to 0 or $\CL$
 % according to $c<\CL$ or not.  Then it is let have $\PPP$ to be scanned to
 % find $\pp^m(p)$.
@@ -5392,13 +5494,6 @@
 % \item
 % In $\!\pcol at twosided!|[|T|]|$, it is let have each non-space token in $T$
 % given by a \!\@tfor! loop.
-% 
-% \item
-% In \!\pcol at getshadowcc!, it is used implement
-% $\!\let!|\pcol at columncolor|{\cdot}c=|\pcol@|\~|columncolor at shadow|{\cdot}c$.
-% 
-% \SpecialArrayIndex{c}{\pcol at columncolor}
-% \SpecialArrayIndex{c}{\pcol at columncolor@shadow}
 % \end{itemize}
 % 
 % \item[\Uidx{\!\reserved at b!}]
@@ -5434,13 +5529,21 @@
 % leaving column to broadcast it to other columns.
 % 
 % \item
-% In
-% \!\pcol at reset@color at elt!\!\@elt!$\Arg{\celt_i}$\!\@elt!$\Arg{\celt_{i+1}}$,
-% it has $\celt_{i+1}\in\CST$ or \!\@nil! for \CSIndex{ifx}-comparison with
-% \!\@nnil!.  Then it is let have \!\@elt!$\Arg{\celt_{i+1}}$ or \!\relax!
-% respectively for the recursive invocation of the macro itself.
+% In \!\pcol at clearcolorstack!, it is \!\def!ined to put an uncoloring
+% \!\special! by \!\reset at color! for its argument $\Celt^c$ in
+% \!\pcol at scancst!.
 % 
 % \item
+% In \!\pcol at restorecst!, it is \!\def!ined to put a coloring \!\special! in
+% its argument $\Celt^c$ by \!\unvcopy! done in \!\pcol at scancst!.
+% 
+% \item
+% In \!\pcol at scancst! and \!\pcol at iscancst!, after the reference for the
+% purposes shown in the two items above, it has
+% $M=(m\,\Bar\,\mceltpop_{j,m}\in\cstraw,\;j\geq i)$ for $\mceltpop_{i,*}$
+% and in the latter is scanned to find $m$ for $\mcelt_{i,m}$ in $M$.
+% 
+% \item
 % In \!\pcol at addmarginpar!, it is made let equal to $\CL$ or $\C$
 % according to $c<\CL$ or not.
 % 
@@ -5482,8 +5585,16 @@
 % 
 % \item[\Uidx{\!\reserved at c!}]
 % is an internal macro for temporary use.  It is used in \!\pcol at startpage!
-% to save \!\@deferlist! in it and then to restore the list from it.
+% to save \!\@deferlist! in it and then to restore the list from it, and in
+% \!\pcol at iscancst! to have \!\relax! or the macro itself to iterate the
+% macro recursively.
 % 
+% \item[\Uidx{\!\reserved at d!}]
+% is an internal macro for temporary use.  It is used in
+% \!\pcol at iscancst! as a \!\chardef! register to have 0 if $m$ for
+% $\mcelt_{i,m}$ is not in the list
+% $M=(n\,\Bar\,\mceltpop_{j,n}\in\cstraw,\;j\geq i)$, or 1 if found.
+% 
 % \item[\Uidx{\!\@gtempa!}]
 % is an internal macro used as a \!\global!ly modifiable scratchpad.  Its
 % usages are as follows.
@@ -5490,11 +5601,6 @@
 % 
 % \begin{itemize}
 % \item
-% In \!\pcol at output@mcpop! for $\mppop-i$, it is made \!\let!-equal to
-% \!\pcol at output@cpop! if $i\in\mplist$ or to \!\pcol at return@from at color!
-% otherwise, to define what we do after the group for scanning $\mplist$.
-% 
-% \item
 % In \!\pcol at ifempty!$\arg{box}\arg{then}\arg{else}$, it has \!\lastpenalty!
 % in a \!\vbox! whose value is examined outside the \!\vbox! for the
 % emptiness check of $\arg{box}$.
@@ -5554,7 +5660,6 @@
 % \!\pcol at output@switch!,
 % \!\pcol at getcurrcol!,
 % \!\pcol at setcurrcol!,
-% \!\pcol at output@icset!,
 % \!\pcol at clearcolorstack!,
 % \!\pcol at restorecolorstack!,
 % \!\pcol at addmarginpar!,
@@ -5604,6 +5709,15 @@
 % The macros \!\pcol at imakeflushedpage! and \!\pcol at iflushfloats! also use
 % the register for scanning but for $\LBRP\Cfrom\Cto$ given by their
 % arguments.
+% 
+% In addition \!\pcol at ccuse!, \!\pcol at ifccdefined! and \!\pcol at ccxdef!
+% refer to the register to have the control sequence
+% $|\pcol at columncolor|\cdot c=\Celtshadow^c$ or
+% $|\pcol at columncolor@box|\cdot c=\Celt^c$ where $c$ is for the current
+% column or for all columns depending on their invokers.
+% 
+% \SpecialArrayIndex{c}{\pcol at columncolor}
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
 % \end{macro}
 % 
 % \begin{macro}{\pcol at nextcol}
@@ -5798,18 +5912,21 @@
 % \begin{macro}{\pcol at mcid}
 % \changes{v1.24}{2013/07/27}
 %	{Introduced for coloring specified in math mode.}
+% \changes{v1.34}{2018/05/07}
+% 	{Change its meaning and operations with it a little bit according to
+%	 the new text coloring with \cs{insert}.}
 % 
-% The register \!\pcol at mcid! has the number of pending pushes of
-% \colorstack{} requested by coloring commands in math mode.  The register is
+% The register \!\pcol at mcid! has the number of pushes of
+% \colorstack{} by coloring commands in math mode between two consecutive
+% invocations of \!\output!.  The register is
 % zero-cleared by \!\pcol at output! because we are definitely in the main
-% vertical mode and thus all requests must have been processed or will have
-% to be processed before the next coloring in math mode.  Then the register
+% vertical mode and thus all pops corresponding to pushes in math mode must
+% have been applied to |.tex|'s \colorstack.  Then the register
 % is referred to by \!\pcol at set@color at push! when it is invoked in math mode,
-% to examine if it is zero to mean that the list $\mplist$ can be cleared,
-% and if less than $\mplimit$ to mean the request still can be made.  The
-% macro also uses the value of the register as the identifier of the pushing
-% \!\output! request made by the macro, and then increments the register to
-% make the identifier unique.
+% to increment it and then examine if it does not exceed the limit
+% \!\pcol at mcpushlimit! to mean the math-mode coloring still can be made.  The
+% macro then uses the value of the register as the identifier of the push
+% operation given to \!\output! through an \!\insert!ion.
 % \end{macro}
 %    \begin{macrocode}
 
@@ -5836,6 +5953,9 @@
 % \begin{macro}{\ifpcol at output}
 % \changes{v1.2-7}{2013/05/11}
 % 	{Introduced to solve the \cs{output} request sneaking.}
+% \changes{v1.22}{2013/06/30}
+%	{Add a user \cs{pcol at reset@color at pop} to inhibit uncoloring if
+%	 $\mathit{false}$.}
 % \changes{v1.3-2}{2013/09/17}
 %	{Add a user \cs{@outputpage} for parallel-paging.}
 % \changes{v1.3-3}{2013/09/17}
@@ -5845,11 +5965,11 @@
 % which turns the switch $\true$ has been invoked but \!\pcol at output@end!
 % which does $\false$ has not yet.  Then the switch is examined by
 % \!\pcol at output! to detect an \!\output! request sneaked from outside of
-% the \env{paracol} environment.  The other user \!\@outputpage! examine
-% this switch to know if the macro is invoked inside or outside of
-% \env{paracol} environment, and the macro \!\pcol at output@start!
-% temporarily turns the switch $\false$ when it ships out a page having
-% \preenv{} only.
+% the \env{paracol} environment.  The other users \!\@outputpage! and
+% \!\pcol at reset@color at pop! examine this switch to know if the macro is
+% invoked inside or outside of \env{paracol} environment, while the macro
+% \!\pcol at output@start!  temporarily turns the switch $\false$ when it ships
+% out a page having \preenv{} only.
 % \end{macro}
 % 
 % \begin{macro}{\ifpcol at nospan}
@@ -5924,7 +6044,7 @@
 % The macro \!\pcol at sptext! then \!\global!ly turns another switch
 % \CSIndex{ifpcol at sptext} $\true$ before putting the \mctext{} into the main
 % vertical list so that \!\pcol at makecol! for the page break in the text and
-% \!\pcol at output@switch! for closing it captures it to place it
+% \!\pcol at output@switch! for closing capture the text to place it
 % appropriately especially when \cswap{} is in effect.  Then the switch 
 % is \!\global!ly turned $\false$ by \!\pcol at output@switch! to give the
 % default state after it {\em broadcasts} \CSIndex{if at nobreak},
@@ -6281,7 +6401,7 @@
 % \SpecialIndex{\swapcolumninevenpages}
 % \SpecialIndex{\noswapcolumninevenpages}
 % 
-% The switch \CSIndex{pcol at swapcolumn} is also turned $\false$ by
+% The switch \CSIndex{ifpcol at swapcolumn} is also turned $\false$ by
 % \!\pcol at zparacol! but locally if \npaired{} \parapag{}ing is specified
 % because \cswap{} is meaningless in the environment.  Another modifier is (our
 % own version of) \!\@outputpage!, but setting and examining the switch in
@@ -6288,7 +6408,7 @@
 % this macro is also local and is to decide the ship-out order of left and
 % right \parapag{}es.
 % 
-% Besides the local use by \!\@outputpage!, \CSIndex{pcol at swapcolumn} is
+% Besides the local use by \!\@outputpage!, \CSIndex{ifpcol at swapcolumn} is
 % then examined by the following macros to do special operations if it is
 % $\true$ and we are in an even numbered page.
 % 
@@ -6514,7 +6634,7 @@
 % 
 % 

 % 
-% \subsection{\cs{box} Register}
+% \subsection{\cs{box} Registers}
 % 
 % The next declaration group is for the following \!\box! registers.
 % 
@@ -6594,12 +6714,39 @@
 % its implementation, incidentally.}.
 % \end{macro}
 % 
-% \begin{macro}{\pcol at tempbox}
+% \begin{macro}{\pcol at colorstack@saved}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced as $\mathit{\Gamma}_s$ to keep the color stack
+%	 $\mathit{\Gamma}^c$ until a column-page of $c$ becomes non-empty.}
+% 
+% The \!\box! register \!\pcol at colorstack@saved! is $\csts$ to keep the
+% \colorctext{} $\CST^c$ of column $c$ until its \ccolpage{} becomes non-empty
+% to avoid that the \colpage{} only has coloring \!\special!s for
+% \colorstack{} establishing and rewinding to let \!\pcol at ifempty! misjudge
+% the \colpage{} is non-empty.  It is let have $\Celt^c$, if defined,
+% and $\cst$ by \!\pcol at savecolorstack! invoked from \!\pcol at startcolumn!
+% and \!\pcol at output@start!, and from \!\pcol at restartcolumn! through
+% \!\pcol at putbackmvl! when we know or find the (re)starting \colpage{} is
+% empty.  The macro \!\pcol at putbackmvl! also makes the \!\box! register
+% $\bot$ when the restarting \colpage{} is not empty and thus the \colpage{}
+% has had coloring \!\special!s for establishing \colorctext{} at its
+% beginning.  Then the register is given to \!\pcol at restorecst! by
+% \!\pcol at clearcst@unvbox! to put leading coloring \!\special!s for
+% establishing of the \colpage{} when we complete it by \!\pcol at opcol!  or
+% leave from it by \!\pcol at output@switch!.
+% \end{macro}
+% 
+% \begin{macro}{\pcol at tempboxa}
 % \changes{v1.3-3}{2013/09/17}
 %	{Introduced to have materials temporarily for column-separatig rule
 %	 drawing or background painting.}
+% \changes{v1.34}{2018/05/07}
+%	{Renamed from \cs{pcol at tempbox} because its relative
+%	 \cs{pcol at tempboxb} is introduced.}
+% \changes{v1.34}{2018/05/07}
+%	{Add ussage in \cs{pcol at scancst} and \cs{pcol at iscancst}.}
 % 
-% The \!\box! register \!\pcol at tempbox! is used to have stuff temporarily as
+% The \!\box! register \!\pcol at tempboxa! is used to have stuff temporarily as
 % follows.
 % 
 % \begin{itemize}
@@ -6617,18 +6764,76 @@
 % which is inserted into the ship-out image by its callee
 % \!\pcol at outputpage@l! through \!\everyvbox! and its contents
 % \!\pcol at outputpage@ev!.
+% 
+% \item
+% In \!\pcol at scancst! and its callee \!\pcol at iscancst! to scan $\CSTraw^c$,
+% $\CST^c$ or $\csts$, the sequence of (un)coloring \!\special!s to be put
+% into the main vertical list is build in it.
 % \end{itemize}
 % \end{macro}
 % 
+% \begin{macro}{\pcol at tempboxb}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to extract the top of color stack $\mathit{\Gamma}$,
+%	 $\mathit{\Gamma}_r$ or $\mathit{\Gamma}_s$.}
+% 
+% The \!\box! register \!\pcol at tempboxb! is used in \!\pcol at iscancst!
+% to extract the top (last) element of $\cst$, $\cstraw$ or $\csts$.
+% \end{macro}
+% 
 %    \begin{macrocode}
 \newbox\pcol at topfnotes
 \newbox\pcol at prespan \setbox\pcol at prespan\box\voidb at x
 \newbox\pcol at rightpage \global\setbox\pcol at rightpage\box\voidb at x
-\newbox\pcol at tempbox
+\newbox\pcol at colorstack@saved
+\newbox\pcol at tempboxa
+\newbox\pcol at tempboxb
 %    \end{macrocode}
 % 
 % 

 % 
+% \subsection{\cs{insert} Register Set}
+% \changes{v1.34}{2018/05/07}
+%	{Add \Sec3.6 ``\cs{insert} Register Set'' for \cs{pcol at colorins}.}
+% 
+% The next declaration is for the following \!\insert! register set.
+% 
+% \begin{macro}{\pcol at colorins}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to present text-coloring operations to \cs{output}
+%	 synchronously with column-pages.}
+% 
+% The register set \!\pcol at colorins! is to \!\insert! a \!\vbox! containing a
+% (un)coloring \!\special! for color pushing or popping, or the definition
+% of a new default color of the current column.  In order to make it sure
+% that an \!\insert!ion does not affect \!\pagetotal! and is given to
+% \!\output!  with |\box255| containing the corresponding coloring
+% \!\special! put in the main vertical list, \!\count!\!\pcol at colorins! and
+% \!\skip!\!\pcol at colorins! are let be 0, while \!\dimen!\!\pcol at colorins! is
+% let be \!\maxdimen! to allow a \colpage{} to have vitually infinite number
+% of \!\insert!ions.
+% 
+% The \!\insert!ion is done by \!\pcol at icolumncolor! for a default color
+% definition, \!\pcol at set@color at push! for color pushing, and
+% \!\pcol at reset@color at pop! and \!\pcol at reset@color at mpop! for color popping
+% in non-math and math mode respectrively.  Then \!\insert!ed \!\vbox!es are
+% packed into \!\box!\!\pcol at colorins! and is given to \!\output! as
+% $\cstraw$ to be scanned by \!\pcol at clearcolorstack! to reform it as
+% $\cst$, and then scanned by \!\pcol at restorecolorstack! or saved into
+% $\csts=\!\pcol at colorstack@saved!$ by \!\pcol at savecolorstack!.  The
+% register is also referred to by $\!\pcol at scancst!\arg{box}$ to examine if
+% $\arg{box}$ is this register or \!\pcol at colorstack@saved!, and is made
+% $\bot$ by \!\pcol at output@end! after the final reestablishment of the
+% \colorstack.
+% 
+%    \begin{macrocode}
+\newinsert\pcol at colorins
+\count\pcol at colorins\z@ \skip\pcol at colorins\z@ \dimen\pcol at colorins\maxdimen
+%    \end{macrocode}
+% \end{macro}
+% 
+% 

+% 
 % \subsection{\cs{toks} Register}
 % 
 % The last declaration is for the following \!\toks! register.
@@ -6659,7 +6864,7 @@
 % \section{Logging Tools}
 % \label{sec:imp-logging}
 % 
-% Prior to the |\def|initions of macros to implement \textsf{paracol}'s
+% Prior to the \!\def!initions of macros to implement \textsf{paracol}'s
 % functions, we define a few macros for debug logging.
 % 
 % \begin{macro}{\pcol at ShowBox}
@@ -6669,11 +6874,17 @@
 %	{Change \cs{unvcopy} to \cs{copy} to make sure the argument box
 %	 causes overfull if its height is positive and even if it has
 %	 nothing.}
+% \changes{v1.34}{2018/05/07}
+%	{Add messaging {\tt (VOID)} if $\langle b\rangle\EQ\bot$,
+%	 $\cs{vfuzz}\gets0$ to ensure overfull, and \cs{vskip} of 1\,{\tt
+%	 pt} if $\langle b\rangle$'s height is 0 to ensure overfull too.}
 % 
-% The macro $\!\pcol at ShowBox!\arg{f}$ puts a logging \!\message! showing the
-% height, depth and width of the \!\insert! register $f$ containing
-% footnotes and dump its contents into |.log| file by making overfull
-% intentionally.
+% The macro $\!\pcol at ShowBox!\arg{b}$ puts a logging \!\message! showing the
+% height, depth and width of the \!\box! (or \!\insert!) register $b$, or
+% ``|(VOID)|'' if $b=\bot$.  Then, if $b\neq\bot$, $b$'s contents is dumped
+% into |.log| file making overfull intentionally by putting $b$ into
+% \!\box!|0| of null height, together with \!\vskip! of 1\,|pt| if $b$'s
+% height is 0, with setting $\!\vfuzz!=0$.
 % \end{macro}
 % 
 % \KeepSpace{13}
@@ -6762,8 +6973,13 @@
 %    \begin{macrocode}
 %% Logging Tools
 
-\def\pcol at ShowBox#1{\message{(\the\ht#1+\the\dp#1)x(\the\wd#1)}%
-  {\showboxdepth\@M \showboxbreadth\@M \setbox\z@\vbox to\z@{\copy#1}}}
+\def\pcol at ShowBox#1{%
+  \ifvoid#1\message{(VOID)}%
+  \else
+    \message{(\the\ht#1+\the\dp#1)x(\the\wd#1)}%
+    {\vfuzz\z@ \showboxdepth\@M \showboxbreadth\@M
+     \setbox\z@\vbox to\z@{\ifdim\ht#1=\z@ \vskip1\p@\fi \copy#1}}%
+  \fi}
 \def\pcol at LogLevel#1#2#3{%
   \pcol at iLogLevel{#1}{pcol at Log}%
   \pcol at iLogLevel{#2}{pcol at Logstart}%
@@ -6822,19 +7038,21 @@
 % release of \!\insert! registers into a file named $\arg{job}|.fls|$
 % associated with \!\pcol at F@write! where $\arg{job}$ is given by
 % \!\jobname!.  After opened when \Paracol{} is loaded, the file is written by
-% $\!\pcol at FF!\arg{msg_a}\arg{msg_b}$ with a line of the following form,
-% where $p=\!\pcol at page!$, $c=\!\pcol at currcol!$, $\ptop=\!\pcol at toppage!$,
-% $\page(p)=\!\c at page!$, and $\arg{n}_b=\!\pcol at F@n!$ is the cardinality of
-% \!\@deferlist! counted by \!\pcol at F@count!.
+% $\!\pcol at FF!\Arg{m_a}\Arg{m_b}$ with a line of the following form with
+% text messages $m_a$ and $m_b$, where $p=\!\pcol at page!$,
+% $c=\!\pcol at currcol!$, $\ptop=\!\pcol at toppage!$, $\pi=\page(p)=\!\c at page!$,
+% and $n_b=\!\pcol at F@n!$ is the cardinality of \!\@deferlist! counted by
+% \!\pcol at F@count!.
 % 
 % \begin{itemize}\item[]
-% $\arg{msg_a}|(|p|:|c|/|\ptop|:|\page(p)|)|=\arg{n_b}\arg{msg_b}$
+% $\arg{m_a}|(|\arg{p}|:|\arg{c}|/|\arg{\ptop}|:|\arg{\pi}|)=|
+% \arg{n_b}\arg{m_b}$
 % \end{itemize}
 % 
-% The argument $\arg{msg_b}$ is empty when $\!\pcol at FF!$ is invoked from
-% $\!\pcol at F!\arg{msg_a}$ for snapshot, while
-% $\arg{msg_b}=\hbox{`|<=|$\arg{n_b}$'}$ when invoked from
-% $\!\pcol at Fe!\arg{msg_a}$ paired by $\!\pcol at Fb!=\!\pcol at F@count!$ by which
+% The argument $\arg{m_b}$ is empty when $\!\pcol at FF!$ is invoked from
+% $\!\pcol at F!\arg{m_a}$ for snapshot, while
+% $\arg{m_b}=\hbox{`|<=|$\arg{n_b}$'}$ when invoked from
+% $\!\pcol at Fe!\arg{m_a}$ paired by $\!\pcol at Fb!=\!\pcol at F@count!$ by which
 % the cardinality of \!\@freelist! is given to $\arg{n_b}$ through
 % \!\pcol at F@n! and then \!\reserved at a!.  Therefore, by the pair of
 % \!\pcol at Fb! and \!\pcol at Fe!, the consumption or restitution in a series of
@@ -6878,8 +7096,9 @@
 % \!\PackageError! with a message notifying the shortage.  The additional
 % help message is \!\@ehb! as in \!\@fltovf!.  This macro is used in
 % \!\pcol at opcol!, \!\pcol at startpage!, \!\pcol at output@start!,
-% \!\pcol at output@switch!, \!\pcol at savefootins!, \!\pcol at flushcolumn!,
-% \!\pcol at synccolumn! and \!\pcol at output@end!.
+% \!\pcol at output@switch!, \!\pcol at iscancst!, \!\pcol at savefootins!,
+% \!\pcol at flushcolumn!, \!\pcol at synccolumn!, \!\pcol at output@end! and
+% \!\pcol at icolumncolor!.
 % \end{macro}
 % 
 %    \begin{macrocode}
@@ -6900,6 +7119,8 @@
 % \changes{v1.2-7}{2013/05/11}
 %	{Add the assignment of \cs{@maxdepth} to \cs{maxdepth} to nullify
 %	 the temproary setting done by \cs{@addtobot}.}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add a space after \cs{@opcol} to obey the coding convention.}
 % 
 % The macro \!\pcol at output! is the \Paracol's version of \!\output! which
 % is let have this macro as its sole token by \!\pcol at zparacol!.  The
@@ -6959,9 +7180,8 @@
 % do it for clearity.}.
 % 
 % The other is to zero-clear the counter \!\pcol at mcid! because we are
-% definitely in the main (non-internal) vertical mode and thus all requests
-% must have been processed or will have to be processed before the next
-% coloring in math mode.
+% definitely in the main (non-internal) vertical mode and thus all push/pop
+% pairs of the coloring in math mode have been processed.
 % 
 % Further, before we start the sequence for non-special \!\output!  request
 % on page breaks, we examine if $\CSIndex{ifpcol at output}=\true$ to mean
@@ -7025,7 +7245,7 @@
     \@makecol
     \@opcol
     \@startcolumn
-    \@whilesw\if at fcolmade\fi{\@opcol\@startcolumn}%
+    \@whilesw\if at fcolmade\fi{\@opcol \@startcolumn}%
   \fi\fi
   \global\maxdepth\@maxdepth
   \ifnum\outputpenalty>-\@Miv
@@ -7109,6 +7329,10 @@
 %	 \cs{pcol at shrinkcolbyfn}.}
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Move down the \cs{def}inition of \cs{pcol at currfoot} with $\bot$ to
+%	 place it just before the \cs{ifpcol at scfnote}/\cs{fi} construct to
+%	 make it clear how \cs{pcol at currfoot} is \cs{def}ined.}
 % 
 % The macro \!\pcol at makecol! is invoked solely from \!\pcol at output! to build
 % the shipping image of the \ccolpage{} which just has completed in
@@ -7177,9 +7401,9 @@
 % \sync{}ation point in $\ptop$.  Then we let \!\box!|255| have the
 % \prespan{} followed by the \mctext{} being the original contents of
 % \!\box!|255|, which may be shifted left by
-% $\WT-w_c=\!\textwidth!-\!\columnwidth!$ if \cswap{} is in effect so that
-% its left edge is aligned to that of the leftmost column, i.e., of the text
-% area.
+% $\WT-w_c=\!\textwidth!-\!\columnwidth!$ by the macro
+% \!\pcol at shiftspanning! if \cswap{} is in effect so that its left edge is
+% aligned to that of the leftmost column, i.e., of the text area.
 % 
 % The third addition is for \Scfnote{}s.  If they are presented in
 % \!\footins!, we shrink \!\@colht! by its height plus depth
@@ -7198,12 +7422,18 @@
 % \!\footins! otherwise because $\pp^f(p)$ has already been fixed.  Note
 % that these saving\slash discarding make \!\footins! void and thus
 % \!\@makecol! will not put footnotes.
+% 
+% On the other hand, if footnote typesetting is \mcfnote{}, \!\footins! is
+% kept unchanged so that its contents will be put by \!\@makecol! if it has
+% something.  As for \!\pcol at currfoot!, it should have its default value
+% $\!\voidb at x!=\bot$ assigned to it beforehand, so that, if $p=\ptop$,
+% \!\pcol at startpage! will make $\pp^f(p)=\bot$ unless \Scfnote{s} are given
+% in \!\footins!.
 % 
 %    \begin{macrocode}
 \def\pcol at makecol{\let\pcol at textbottom\@textbottom
   \ifdim\pcol at textfloatsep=\maxdimen\else
     \def\@textbottom{\vskip\z@\@plus.0001fil\@minus.0001fil}\fi
-  \def\pcol at currfoot{\voidb at x}%
   \ifpcol at sptext \ifnum\pcol at currcol=\z@
     \pcol at getcurrpinfo\@tempcnta\@tempdima\@tempskipa
     \setbox\@tempboxa\vbox{\unvcopy\@cclv}%
@@ -7218,6 +7448,7 @@
     \setbox\@cclv\vbox{\unvbox\pcol at prespan \pcol at shiftspanning\@cclv
                        \unvbox\@cclv}%
   \fi\fi
+  \def\pcol at currfoot{\voidb at x}%
   \ifpcol at scfnote \ifvoid\footins\else
     \pcol at shrinkcolbyfn\@colht\footins\relax
     \setbox\@cclv\vbox{\pcol at unvbox@cclv\footins}%
@@ -7260,9 +7491,9 @@
 % \changes{v1.2-7}{2013/05/11}
 %	{Introduced to solve the \cs{output} request sneaking.}
 % 
-% The macro \!\pcol at combinefloats! is our own version of \!\@combinefloats!
+% The macro \!\pcol at combinefloats! being our own version of \!\@combinefloats!
 % is used in \LaTeX's \!\@makecol! because the original and our
-% own are made \!\let!-equal by \!\pcol at zparacol!, and in
+% own are made \!\let!-equal by \!\pcol at zparacol!, and also used in
 % \!\pcol at makenormalcol!  explicitly.  The customization is twofold for both
 % of top and bottom floats.
 % 
@@ -7341,6 +7572,9 @@
 %	{Replace \cs{maxdepth} with \cs{@maxdepth}.}
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add {\tt\%} to the end of the line to open \cs{vbox} for
+%	 \cs{@outputbox} to obey the coding convention.}
 % 
 % The macro \!\pcol at cflt! is invoked solely from \!\pcol at combinefloats! if
 % the \colpage{} for which the macro combines the top floats has
@@ -7373,7 +7607,7 @@
   \let\@elt\@comflelt
   \setbox\@tempboxa\vbox{}%
   \@toplist
-  \setbox\@outputbox\vbox{
+  \setbox\@outputbox\vbox{%
     \boxmaxdepth\@maxdepth
     \box\@tempboxa
     \vskip-\floatsep
@@ -7406,6 +7640,9 @@
 %	{Rename \cs{pcol at outputpage} as \cs{pcol at outputcolumns}.}
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add {\tt\%} to the end of the line to open \cs{vbox} for
+%	 \cs{@currbox} to obey the coding convention.}
 % 
 % The macro \!\pcol at opcol! is invoked from \!\pcol at output! for the ordinary
 % completed \colpage{} built by \!\pcol at makecol!, or from the loop creating
@@ -7450,7 +7687,7 @@
 %    \begin{macrocode}
 \def\pcol at opcol{%
   \pcol at Fb
-  \@next\@currbox\@freelist{\global\setbox\@currbox\vbox to\@colht{
+  \@next\@currbox\@freelist{\global\setbox\@currbox\vbox to\@colht{%
       \boxmaxdepth\@maxdepth
       \pcol at clearcst@unvbox\@outputbox}}\pcol at ovf
   \pcol at Fe{opcol}%
@@ -7468,6 +7705,9 @@
 % \end{macro}
 % 

 % \begin{macro}{\pcol at setpageno}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add \cs{let}\cs{@elt}\cs{relax} before \cs{edef} of \cs{reserved at a}
+%	 for the sake of clarity.}
 % \begin{macro}{\pcol at setpnoelt}
 % \changes{v1.0}{2011/10/10}
 %	{Rename \cs{ifpcol at textonly} as \cs{ifpcol at nospan}.}
@@ -7499,14 +7739,15 @@
 % Then we scan $\pi'(q)\in\mathit{\Pi}'$ for all $q\in[\pbase,\ptop]$ by
 % applying \!\pcol at setpnoelt! to each $\pi'(q)$ giving its five components
 % to the macro, so that the macro updates $\pp(q)$ by \!\pcol at defcurrpage!
-% letting $\pp^p(q)=\page'(q)$ if $q\geq p$.  Note that we let \!\c at page!
-% have $\page'(q)$, but this assignment is temporary and \!\c at page! will
-% regain the value $\page(p)$ after \!\pcol at setpageno! finishes.
+% letting $\pp^p(q)=\page'(q)$ if $q\geq p$, or equivalently $p-q\leq0$.
+% Note that we let \!\c at page!  have $\page'(q)$, but this assignment is
+% temporary and \!\c at page! will regain the value $\page(p)$ after
+% \!\pcol at setpageno! finishes.
 % 
 %    \begin{macrocode}
 \def\pcol at setpageno{\begingroup
   \@tempcnta\pcol at page \advance\@tempcnta-\pcol at basepage
-  \edef\reserved at a{\pcol at pages\pcol at currpage}%
+  \let\@elt\relax \edef\reserved at a{\pcol at pages\pcol at currpage}%
   \global\let\pcol at pages\@empty \global\let\pcol at currpage\@empty
   \let\@elt\pcol at setpnoelt \reserved at a
   \endgroup}
@@ -7565,11 +7806,11 @@
 % 
 % The macro \!\pcol at nextpage! is invoked solely in \!\pcol at opcol! to let
 % $p$ be $p+k+1$ where $k$ is the number of \fpage{}s directly following
-% $p$.  For this update, the macro scans $\pp(q)\in\PP$ for all
-% $q\In\pbase\ptop$ applying \!\pcol at nextpelt! to $\pp(q)$, to perform
-% the following where $p_0$ is $p$ before update and
-% $f=\CSIndex{if at tempswa}$ being $\true$ at initial, to let $p\gets p+k$,
-% and then increments $p$ to have $p+k+1$.
+% $p$, i.e., $k=\Abs{\Set{q>p}{p<\forall q'\leq q:\pp(q')^h<0}}$.  For
+% this update, the macro scans $\pp(q)\in\PP$ for all $q\In\pbase\ptop$
+% applying \!\pcol at nextpelt! to $\pp(q)$, to perform the following where
+% $p_0$ is $p$ before update and $f=\CSIndex{if at tempswa}$ being $\true$ at
+% initial, to let $p\gets p+k$, and then increments $p$ to have $p+k+1$.
 % $$
 % \<p,f\>\gets\cases{
 % 	\<p,f\>&	$q\leq p_0$\cr
@@ -7600,7 +7841,8 @@
 % 

 % \begin{macro}{\pcol at checkshipped}
 % The macro \!\pcol at checkshipped! is invoked solely in \!\pcol at opcol! to let
-% \CSIndex{if at tempswa} be $\true$ iff $S_c=|\pcol at shipped|{\cdot}c\neq()$
+% \CSIndex{if at tempswa} be $\true$ iff
+% $S_c=|\pcol at shipped|{\cdot}c\neq\emptyset$
 % 
 % \SpecialArrayIndex{c}{\pcol at shipped}
 % 
@@ -7814,8 +8056,8 @@
 % \!\@dblfloatplacement! to reinitialize the parameters for \pwise{} float
 % placement.  In addition, we let $\!\f at depth!=0$ to nullify the
 % setting $\!\f at depth!=|1sp|$ possiblly done by \!\@dblfloatplacement! as
-% discussed in the item-(\ref{item:ovv-float- at dblfloatplacement}) of Section
-% \ref{sec:imp-ovv-float}.  Then we repeat \!\@tryfcolumn!  giving it
+% discussed in the item-(\ref{item:ovv-float- at dblfloatplacement}) of
+% \secref{sec:imp-ovv-float}.  Then we repeat \!\@tryfcolumn!  giving it
 % \!\@dbldeferlist!  having \pwise{} floats not contributed to previous
 % pages yet, while $\CSIndex{if at fcolmade}=\true$ meaning it builds \fpage{}s
 % in \!\@outputbox!.  For each \fpage{}, we acquire an \!\insert!  from
@@ -7858,8 +8100,8 @@
 % element to invoke \!\@addtodblcol! for adding the element to \!\@dbltoplist!
 % 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- at addtodblcol}) of Section
-% \ref{sec:imp-ovv-float}, we also clear \!\@deferlist! after saving it in
+% in item-(\ref{item:ovv-float- at addtodblcol}) of
+% \secref{sec:imp-ovv-float}, we also clear \!\@deferlist! after saving it in
 % \!\reserved at 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 at c!.
@@ -7866,8 +8108,8 @@
 % 
 % Then If this scan results in empty \!\@dbltoplist! to mean the new page
 % does not have any \spanning, we invoke \!\pcol at defcurrpage! with
-% $\pp^i(\ptop)=\pp^f(\ptop)=\bot$ so that $\pp(\ptop)$ reprsents a page
-% without \spanning{} nor \Scfnote{}s.
+% $\pp^i(\ptop)=\pp^f(\ptop)=\bot$ and $\pp^s(\ptop)=\pp^m(\ptop)=\emptyset$
+% so that $\pp(\ptop)$ reprsents a page perfectly empty.
 % 
 %    \begin{macrocode}
   \begingroup
@@ -8004,7 +8246,7 @@
 % let \!\pcol at rightpage! be an empty box but paint its \bground{} too, because
 % the right counterpart of left parallel float page should be always blank.
 % Note that we temporarily increment $\page(q)$ by one for \npaired{} right
-% \parapag{}ee so that the paiting macro peforms page-parity dependent
+% \parapag{}ee so that the paiting macro performs page-parity dependent
 % operations correctly.
 % 
 % \Index{parallel-paging}
@@ -8151,8 +8393,8 @@
 % We do the painting at this earliest stage of the image building in order
 % to use the left-top corner of the text area where we are now at as the
 % origin for painting, and to let the region may be overlaid by those of
-% columns and \csepgap{}s.  We also let $h=\pp^h(q)$ shrunk by the
-% height-plus-depth by \!\pcol at shrinkcolbyfn!.
+% columns and \csepgap{}s.  We also let $h=\pp^h(q)=\!\@tempdima!$ shrunk by
+% the height-plus-depth by \!\pcol at shrinkcolbyfn!.
 % 
 %    \begin{macrocode}
 \def\pcol at ioutputelt#1#2#3{\setbox#3\vbox to\textheight{%
@@ -8225,7 +8467,7 @@
 % Third, we invoke \!\pcol at buildcolseprule! giving it $h$ being $\pp^h(q)$
 % but possibly shrunk by \Scfnote{}s, the column range $\LBRP\Cfrom\Cto$,
 % and \!\@maxdepth! to mean $q$ is non-\lpage, to draw a \cseprule{}
-% possibly broken by the speces for \mctext{}s in the box \!\pcol at tempbox!
+% possibly broken by the speces for \mctext{}s in the box \!\pcol at tempboxa!
 % and to paint the \bground{}s of columns, \csepgap{}s and \mctext{} in the
 % box \!\@tempboxa! which we put into $b$ immediately.
 % 
@@ -8285,8 +8527,9 @@
 % $\pp^f(q)$ to \!\@freelist!, if $\Cfrom=0$ meaning left \parapag{}e.
 % Otherwise for the right \parapag{}e, we simply put an empty box whose
 % height and depth equal to those of $\pp^f(q)$ by \!\pcol at phantom!,
-% preceded by \!\nointerlineskip! to inhibit baseline skip insertion above
-% the box and followed by null \!\vskip! as done in \!\pcol at putfootins!.
+% preceded by a vertical skip of $\!\skip!{\cdot}\pp^f(q)$ and then
+% \!\nointerlineskip! to inhibit baseline skip insertion above the box, and
+% followed by null \!\vskip! as done in \!\pcol at putfootins!.
 % 
 % Sixth and finally\footnote{
 % 
@@ -8344,6 +8587,8 @@
 %	 painting for columns, column-separating gaps and spanning texts.}
 % \changes{v1.3-4}{2013/09/17}
 %	{Introduced for non-uniform column-separating gaps.}
+% \changes{v1.34}{2018/05/07}
+% 	{Rename \cs{pcol at tempbox} as \cs{pcol at tempboxa}.}
 % \begin{macro}{\pcol at buildcselt@S}
 % \changes{v1.3-3}{2013/09/17}
 %	{Introduced for background under-painting for spanning texts.}
@@ -8353,6 +8598,8 @@
 %	 painting for columns, column-separating gaps and spanning texts.}
 % \changes{v1.3-4}{2013/09/17}
 %	{Introduced for non-uniform column-separating gaps.}
+% \changes{v1.34}{2018/05/07}
+% 	{Rename \cs{pcol at tempbox} as \cs{pcol at tempboxa}.}
 % 
 % The macro $\!\pcol at buildcolseprule!\<H_{n+1}\>\<\Cfrom\>\<\Cto\>\<d\>$ is
 % used in \!\pcol at ioutputelt!, \!\pcol at imakeflushedpage! and
@@ -8365,7 +8612,7 @@
 % For initializing the drawing and painting process, we let
 % $\!\@tempdimb!=H_0+h_0=0$,
 % $(\!\pcol at bg@from!,\!\pcol at bg@to!)=(\CBfrom,\CBto)=(\Cfrom,\Cto)$, and
-% make boxes $b_r=\!\pcol at tempbox!$ for the rule and $b_b=\!\@tempboxa!$ for
+% make boxes $b_r=\!\pcol at tempboxa!$ for the rule and $b_b=\!\@tempboxa!$ for
 % the \bground{} empty.  Then we apply
 % \!\pcol at buildcselt@S!$\<H_i\>\<h_i\>$ to each element $\spt(H_i,h_i)$ of
 % $\pp^s(p)$ to under-paint the \bground{} of each \mctext{} by
@@ -8410,12 +8657,12 @@
 \def\pcol at buildcolseprule#1#2#3#4{%
   \@tempdima#1\relax \dimen@#4\relax
   \let\pcol at bg@from#2\relax \let\pcol at bg@to#3\relax
-  \setbox\pcol at tempbox\vbox{}\setbox\@tempboxa\vbox{}%
+  \setbox\pcol at tempboxa\vbox{}\setbox\@tempboxa\vbox{}%
   \let\@elt\pcol at buildcselt@S \pcol at sptextlist
   \@tempdimb\z@ \let\@elt\pcol at buildcselt \pcol at sptextlist
   \let\@elt\relax \advance\@tempdima-\@tempdimb
   \ifdim\@tempdima>\z@
-    \setbox\pcol at tempbox\vbox{\unvbox\pcol at tempbox
+    \setbox\pcol at tempboxa\vbox{\unvbox\pcol at tempboxa
       \hrule\@height\@tempdima\@width\columnseprule}%
     \setbox\@tempboxa\vbox{\unvbox\@tempboxa
       \let\@elt\relax
@@ -8435,7 +8682,7 @@
     \pcol at bg@paintbox{S}}}
 \def\pcol at buildcselt#1#2{%
   \@tempdimc#1sp \advance\@tempdimc-\@tempdimb
-  \setbox\pcol at tempbox\vbox{\unvbox\pcol at tempbox
+  \setbox\pcol at tempboxa\vbox{\unvbox\pcol at tempboxa
     \ifdim\@tempdimc>\z@ \hrule\@height\@tempdimc\@width\columnseprule \fi
     \vskip#2sp}%
   \setbox\@tempboxa\vbox{\unvbox\@tempboxa
@@ -8459,6 +8706,8 @@
 %	{Introduced for column-separating rule drawing.}
 % \changes{v1.3-4}{2013/09/17}
 %	{Introduced for non-uniform column-separating gaps.}
+% \changes{v1.34}{2018/05/07}
+% 	{Rename \cs{pcol at tempbox} as \cs{pcol at tempboxa}.}
 % 
 % The macro $\!\pcol at hfil!\<c\>$ is used in \!\pcol at ioutputelt!,
 % \!\pcol at imakeflushedpage! and \!\pcol at iflushfloats! to separate column
@@ -8473,7 +8722,7 @@
 % \SpecialArrayIndex{c}{\pcol at columnsep}
 % 
 % followed by a skip $-r/2$ to nullify the width of the rule; the rule in
-% \!\pcol at tempbox! which \!\pcol at buildcolseprule! built, with color
+% \!\pcol at tempboxa! which \!\pcol at buildcolseprule! built, with color
 % $|\pcol at colseprulecolor|{\cdot}c$
 % 
 % \SpecialArrayIndex{c}{\pcol at columnsep}
@@ -8498,7 +8747,7 @@
     \hskip-.5\columnseprule
     \@ifundefined{pcol at colseprulecolor#1}%
       {\pcol at colseprulecolor}{\@nameuse{pcol at colseprulecolor#1}}%
-    \copy\pcol at tempbox \hskip-.5\columnseprule
+    \copy\pcol at tempboxa \hskip-.5\columnseprule
     \hskip.5\@tempdima\@plus1fil\relax
   \else \hskip\@tempdima\@plus1fil\relax
   \fi}}
@@ -8520,6 +8769,8 @@
 %	{Redefined for background painting.}
 % \changes{v1.3-4}{2013/09/17}
 %	{Redefined for marginal note placement.}
+% \changes{v1.34}{2018/05/07}
+% 	{Rename \cs{pcol at tempbox} as \cs{pcol at tempboxa}.}
 % 
 % The macro \!\@outputpage!, being our own version of \LaTeX's one kept in
 % \!\pcol@@outputpage!, ships out a page $p$ or \parapag{}e pair in $p$.
@@ -8540,7 +8791,7 @@
 % assumes as a page, i.e., shifted 1\,inch down from the real page.  Then if
 % $\CSIndex{ifpcol at output}=\true$ to mean this macro is used in a
 % \env{paracol} environment, we build the painted \bground{}s of left and
-% right \parapag{}es in $\!\pcol at tempbox!=b_l$ and $\!\@tempboxa!=b_r$ by
+% right \parapag{}es in $\!\pcol at tempboxa!=b_l$ and $\!\@tempboxa!=b_r$ by
 % putting a vertical skip of $H'_M$, and invoking \!\pcol at bg@paintpage!
 % with the setting $(\!\pcol at bg@from!,\!\pcol at bg@to!)=(\CBfrom,\CBto)$ be
 % $(0,\CL)$ and $(\CL,\C)$ respectively.  Note that \!\pcol at bg@paintpage!
@@ -8626,7 +8877,7 @@
 \def\@outputpage{\begingroup
   \@tempdima\topmargin \advance\@tempdima\headheight \advance\@tempdima\headsep
   \ifpcol at output
-    \setbox\pcol at tempbox\vtop{\vskip\@tempdima \global\pcol at bg@paintedfalse
+    \setbox\pcol at tempboxa\vtop{\vskip\@tempdima \global\pcol at bg@paintedfalse
      \let\pcol at bg@from\z@ \let\pcol at bg@to\pcol at ncolleft
      \pcol at bg@paintpage}%
     \ifpcol at bg@painted \@tempswatrue \else \@tempswafalse \fi
@@ -8639,7 +8890,7 @@
       \ifpcol at havelastpage \ifx\set at color\relax\else
         \pcol at bg@@paintpage \pcol at bg@@paintbox{Pp}%
       \fi\fi}%
-    \setbox\pcol at tempbox\vbox{%
+    \setbox\pcol at tempboxa\vbox{%
       \let\pcol at bg@preposttop\pcol at bg@preposttop at left
       \let\pcol at bg@from\z@ \let\pcol at bg@to\pcol at ncolleft \reserved at a}%
     \ifpcol at bg@painted \@tempswatrue \else \@tempswafalse \fi
@@ -8653,7 +8904,7 @@
       \pcol at Logend{\@outputpage{rightset}}%
     \fi
   \fi
-  \ht\pcol at tempbox\z@ \dp\pcol at tempbox\z@
+  \ht\pcol at tempboxa\z@ \dp\pcol at tempboxa\z@
   \ht\@tempboxa\z@ \dp\@tempboxa\z@
   \ifodd\c at page                                 \pcol at swapcolumnfalse \fi
   \ifnum\pcol at ncolleft<\pcol at ncol\else          \pcol at swapcolumnfalse \fi
@@ -8678,6 +8929,8 @@
 % \changes{v1.3-3}{2013/09/17}
 %	{Introduced for column-separating rule drawing and background
 %	 painting in left parallel-pages.}
+% \changes{v1.34}{2018/05/07}
+% 	{Rename \cs{pcol at tempbox} as \cs{pcol at tempboxa}.}
 % \begin{macro}{\pcol at outputpage@r}
 % \changes{v1.3-2}{2013/09/17}
 %	{Introduced for shipping out right parallel-pages.}
@@ -8759,7 +9012,7 @@
   \global\c at page#1\relax
   \let\@themargin\oddsidemargin
   \if at twoside\ifodd\c at page\else \let\@themargin\evensidemargin \fi\fi
-  \if at tempswa \everyvbox{\pcol at outputpage@ev\pcol at tempbox}\fi
+  \if at tempswa \everyvbox{\pcol at outputpage@ev\pcol at tempboxa}\fi
   \pcol@@outputpage
   \pcol at Logend{\@outputpage{left}}}
 \def\pcol at outputpage@r#1{%
@@ -9177,8 +9430,11 @@
 % $y_0=\!\@tempdimb!$, $x_1=\!\@tempdimc!$ and $y_1=\!\dimen@!$ of the
 % region $\bgr_a^{[c]}$ by $\!\pcol at bg@calculate!\arg{z}\arg{z_0}\Arg{F}$
 % giving it
-% $(z,z_0,F)\in\{(x_0,0,F_x),(y_0,0,F_y),(x_1,x_0,F_w),(y_1,y_0,F_h)\}$. Next
-% we modify $\{x,y\}_{\{0,1\}}$ for \bgext{} by
+% $(z,z_0,F)\in\{(x_0,0,F_x),(y_0,0,F_y),(x_1,x_0,F_w),(y_1,y_0,F_h)\}$,
+% where $(x_0,y_0)$ and $(x_1,y_1)$ is the left-top and right-bottom corner
+% of the painting region in the text-area coordinate, i.e., left-right and
+% top-down coordinate whose origin is at the left-top corner of the leftmost
+% column.  Next we modify $\{x,y\}_{\{0,1\}}$ for \bgext{} by
 % $\!\pcol at bg@addext!\arg{z}\Arg{s}\Arg{d}$ with $(z,s,d)\in
 % \{(x_0,\hbox{`|-|'},|l|),(y_0,\hbox{`|-|'},|t|),
 % (x_1,\emptyset,|r|),\~(y_1,\emptyset,|b|)\}$.
@@ -9195,8 +9451,8 @@
 % \SpecialArrayIndex{a}{\pcol at bg@color@}
 % 
 % On the other hand if \mirror{}ing is to be done, the region should be
-% $[(\WT{-}x_1,y_0)(\WT{-}x_0,y)]$ and thus the shift amount for
-% \!\moveright! of the \!\hbox! is $(x_1-\WT)$.
+% $[(\WT{-}x_1,y_0)(\WT{-}x_0,y_1)]$ and thus the shift amount for
+% \!\moveright! of the \!\hbox! is $(\WT-x_1)$.
 % 
 % Then after \!\pcol at bg@paintregion at i! finshes its work,
 % \!\pcol at bg@paintregion! lets the switch
@@ -9347,8 +9603,8 @@
 % 	    \HP-(\HM-\HR)&$d=|b|$\cr}
 % $$
 % where $\WM-\WR$ is specified by \!\pcol at bg@pageleft! and $\HM-\HR$ by
-% \!\pcol at bg@pagetop!.  Then we let $z=e'\pm(10000\PT-e)$ according to $s$
-% again.
+% \!\pcol at bg@pagetop!.  Then we let $z=e'\pm(e-10000\PT)$ according to $s$
+% again, i.e., move $z$ {\em inside\/} by $(10000\PT-e)$ from $e'$.
 % 
 %    \begin{macrocode}
 \def\pcol at bg@addext#1#2#3{%
@@ -9600,7 +9856,7 @@
 % \bgr_{\{s,S\}}&:&(0\;,\;H^s)\ +\ (\WT\;,\;h^s)\\
 % \bgr_{\{t,T\}}&:&(-(\WM-\WR)\;,\;-(\HM-\HR))\ +\ ((\WP-2\WR)\;,\;\HM-\HR)\\
 % \bgr_{\{b,B\}}&:&(-(\WM-\WR)\;,\;\HT)\ +\ 
-%                  ((\WP-2\WR)\;,\;(\HP-2\WR)-((\HM-\HR)+\HT))\\
+%                  ((\WP-2\WR)\;,\;(\HP-2\HR)-((\HM-\HR)+\HT))\\
 % \bgr_{\{l,L\}}&:&(-(\WM-\WR)\;,\;0)\ +\ ((\WM-\WR)\;,\;\HT)\\
 % \bgr_{\{r,R\}}&:&(\WT\;,\;0)\ +\ ((\WP-2\WR)-((\WM-\WR)+\WT)\;,\;\HT)\\
 % \bgr_{\{f,F\}}&:&(0\;,\;0)\ +\ (\WT\;,\;h^f)\\
@@ -9696,32 +9952,40 @@
 % \subsection{Dispatcher}
 % \label{sec:imp-sout-disp}
 % 
+% \changes{v1.22}{2013/06/30}
+%	{\cs{pcol at op@cpush} was introduced for output request to push color
+%	 stack but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at op@cpush} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
+% \changes{v1.22}{2013/06/30}
+%	{\cs{pcol at op@cpop} was introduced for output request to pop color
+%	 stack but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at op@cpop} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
+% \changes{v1.22}{2013/06/30}
+%	{\cs{pcol at op@cset} was introduced for output request to set
+%	 $\gamma_0^c$ but removed in v1.34}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at op@cpop} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
+% 
 % \begin{macro}{\pcol at op@start}
 % \begin{macro}{\pcol at op@switch}
 % \begin{macro}{\pcol at op@flush}
 % \begin{macro}{\pcol at op@clear}
 % \begin{macro}{\pcol at op@end}
-% \begin{macro}{\pcol at op@cpush}
-% \changes{v1.22}{2013/06/30}
-%	{Introduced for output request to push color stack.}
-% \begin{macro}{\pcol at op@cpop}
-% \changes{v1.22}{2013/06/30}
-%	{Introduced for output request to pop color stack.}
-% \begin{macro}{\pcol at op@cset}
-% \changes{v1.22}{2013/06/30}
-%	{Introduced for output request to set $\gamma_0^c$}
 % 
 % The macro $|\pcol at op@|{\cdot}f$ where $f\in
-% F=\{|start|,|switch|,|flush|,|clear|,|end|,|cpush|,|cpop|,|cset|\}$ has
+% F=\{|start|,|switch|,|flush|,|clear|,|end|\}$ has
 % our own \!\outputpenalty! code less than $-10000$ to invoke the
 % corresponding macro $|\pcol at output@|{\cdot}f$.  The code macros are given
 % to \!\pcol at invokeoutput! as its argument by \!\pcol at zparacol! ($f=|start|$),
 % \!\pcol at switchcol! ($f=|switch|$), \!\pcol at visitallcols! ($f=|switch|$),
 % \!\pcol at com@flushpage! ($f=|flush|$), \!\pcol at com@clearpage!
-% ($f=|clear|$), \!\pcol at flushclear! ($f=|switch|$), \!\endparacol!
-% ($f=|end|$), \!\pcol at set@color at push! ($f=|cpush|$),
-% \!\pcol at reset@color at pop!  ($f=|cpop|$), and \!\pcol at icolumncolor!
-% ($f=|cset|$) to set one of them into \!\outputpenalty!, so that the other
+% ($f=|clear|$), \!\pcol at flushclear! ($f=|switch|$), and \!\endparacol!
+% ($f=|end|$) to set one of them into \!\outputpenalty!, so that the other
 % user \!\pcol at specialoutput! examines which special function is invoked.
 % 
 % \SpecialIndex{\pcol at output@start}
@@ -9729,9 +9993,6 @@
 % \SpecialIndex{\pcol at output@flush}
 % \SpecialIndex{\pcol at output@clear}
 % \SpecialIndex{\pcol at output@end}
-% \SpecialIndex{\pcol at output@cpush}
-% \SpecialIndex{\pcol at output@cpop}
-% \SpecialIndex{\pcol at output@cset}
 % 
 %    \begin{macrocode}
 %% Special Output Routines: Dispatcher
@@ -9741,56 +10002,34 @@
 \def\pcol at op@flush{-10012}
 \def\pcol at op@clear{-10013}
 \def\pcol at op@end{-10014}
-\def\pcol at op@cpush{-10015}
-\def\pcol at op@cpop{-10016}
-\def\pcol at op@cset{-10017}
 
 %    \end{macrocode}
 % \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
-% \end{macro}\end{macro}\end{macro}
 % 

-% \KeepSpace{3}
-% \begin{macro}{\pcol at mcpushlimit}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% \begin{macro}{\pcol at op@mcpush}
+%	{\cs{pcol at op@mcpush} was introduced for coloring specified in math
+%	 mode but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at op@mcpush} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% \begin{macro}{\pcol at op@mcpush at pone}
+%	{\cs{pcol at op@mcpush at pone} was introduced for coloring specified in
+%	 math mode but removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at op@mcpush at pone} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% \begin{macro}{\pcol at op@mcpop}
+%	{\cs{pcol at op@mcpop} was introduced for coloring specified in math
+%	 mode but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at op@mcpop} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% \begin{macro}{\pcol at op@mcpop at pone}
-% \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% 
-% Another set of macros $|\pcol at op@|{\cdot}f$ where
-% $f\in\{|mcpush|,|mcpop|\}$ is for \!\output! penalties $\mppush$
-% ($f=|mcpush|$) and $\mppop$ ($f=|mcpop|$) but they carry positive
-% counterparts $-\mppush=10000+\mplimit$ and $-\mppop=-\mppush+\mplimit$ for
-% the calculation of $i=-P+P_x=-(P-P_x)$ in \!\pcol at specialoutput! and
-% $P=P_x-i=-(-P_x+i)$ in \!\pcol at set@color at push! and
-% \!\pcol at reset@color at mpop!, where $\mplimit=\!\pcol at mcpushlimit!$,
-% $P_x\in\{\mppush,\mppop\}$, $P=\!\outputpenalty!$, and $i$ is the
-% identifier of pushing.  The other related set of macros
-% $|\pcol at op@|{\cdot}f{\cdot}|@pone|$ is for $\mppush+1$ ($f=|mcpush|$) and
-% $\mppop+1$ ($f=|mcpop|$) for the examination of $P\leq P_x\Leftrightarrow
-% P<P_x+1$ in \!\pcol at specialoutput!.
-% 
-%    \begin{macrocode}
-\def\pcol at mcpushlimit{100}
-\@tempcnta\@M
-\advance\@tempcnta\pcol at mcpushlimit
-\edef\pcol at op@mcpush{\number\@tempcnta}\advance\@tempcnta\m at ne
-\edef\pcol at op@mcpush at pone{\number-\@tempcnta}\advance\@tempcnta\@ne
-\advance\@tempcnta\pcol at mcpushlimit
-\edef\pcol at op@mcpop{\number\@tempcnta}\advance\@tempcnta\m at ne
-\edef\pcol at op@mcpop at pone{\number-\@tempcnta}\advance\@tempcnta\@ne
-
-%    \end{macrocode}
-% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
+%	{\cs{pcol at op@mcpop at pone} was introduced for coloring specified in
+%	 math mode but removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at op@mcpop at pone} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % 

 % \begin{macro}{\pcol at specialoutput}
 % \changes{v1.0}{2011/10/10}
@@ -9805,27 +10044,25 @@
 %	{Add examination with $P_{\string\rm{push}}$ and $P_{\string\rm{pop}}$
 %	 and invocation of \cs{pcol at output@mcpush} and
 %	 \cs{pcol at output@mcpop}.} 
+% \changes{v1.34}{2018/05/07}
+%	{Remove examinations related to $f\in\{{\tt cpush},{\tt cpop},{\tt
+%	 mcpush},{\tt mcpop}\}$.}
 % 
 % The macro \!\pcol at specialoutput! is invoked solely in \!\pcol at output! to
 % invoke our own or \LaTeX's special output routine.  It examines if
-% $P=\!\outputpenalty!\in\Set{\cs{pcol at op@}{\cdot}f}{f\in F}$,
-% $P\in\LP\mppush{-}\mplimit,\mppush\RB$ for $f=|mcpush|$, or
-% $P\in\LP\mppop{-}\mplimit,\mppop\RB$\footnote{
+% $P=\!\outputpenalty!\in\Set{\cs{pcol at op@}{\cdot}f}{f\in F}$ and then, if
+% so, before invoking $|\pcol at output@|{\cdot}f$, we rebuild \!\@holdpg!
+% removing \!\lastbox! and the last vertical skip as done in \LaTeX's
+% \!\@specialoutput!.  We also let $\!\outputpenalty!=-10000$\footnote{
 % 
-% In reality, we omit the examination of $P>\mppop-\mplimit$.}
-% 
-% for $f=|mcpop|$.  If so, before invoking $|\pcol at output@|{\cdot}f$, we
-% rebuild \!\@holdpg! removing \!\lastbox! and the last vertical skip as
-% done in \LaTeX's \!\@specialoutput!.  We also let
-% $\!\outputpenalty!=-10000$\footnote{
-% 
 % It can be any value larger than -10004.}
 % 
 % so that \!\vsize! is correctly set to \!\@colroom! in the second half of
 % \!\pcol at output! after this macro finishes.
 % 
-% Otherwise, i.e., if $P\notin\Set{\cs{pcol at op@}{\cdot}f}{f\in{}F}$ and
-% $P>\mppush$, we simply invokes \LaTeX's \!\@specialoutput!\footnote{
+% \hfuzz9pt
+% Otherwise, i.e., if $P\notin\Set{\cs{pcol at op@}{\cdot}f}{f\in{}F}$,
+% we simply invokes \LaTeX's \!\@specialoutput!\footnote{
 % 
 % With footnote logging if $\cs{outputpenalty}=-10004$.}.
 % 
@@ -9841,20 +10078,8 @@
     \let\reserved at a\pcol at output@clear
   \else\ifnum\outputpenalty=\pcol at op@end\relax
     \let\reserved at a\pcol at output@end
-  \else\ifnum\outputpenalty=\pcol at op@cpush\relax
-    \let\reserved at a\pcol at output@cpush
-  \else\ifnum\outputpenalty=\pcol at op@cpop\relax
-    \let\reserved at a\pcol at output@cpop
-  \else\ifnum\outputpenalty=\pcol at op@cset\relax
-    \let\reserved at a\pcol at output@cset
-  \else\ifnum\outputpenalty<\pcol at op@mcpop at pone\relax
-    \advance\outputpenalty\pcol at op@mcpop\relax \@tempcnta-\outputpenalty
-    \let\reserved at a\pcol at output@mcpop
-  \else\ifnum\outputpenalty<\pcol at op@mcpush at pone\relax
-    \advance\outputpenalty\pcol at op@mcpush\relax \@tempcnta-\outputpenalty
-    \let\reserved at a\pcol at output@mcpush
   \else \let\reserved at a\@specialoutput
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi
   \ifnum\outputpenalty=-\@Miv\relax
     \ifvoid\footins\else \pcol at Log\dummy{dummy}\footins \fi
   \fi
@@ -9865,7 +10090,8 @@
   \fi
   \reserved at a}
 
-%    \end{macrocode} \end{macro}
+%    \end{macrocode}
+% \end{macro}
 % 
 % 

 % 
@@ -9899,7 +10125,7 @@
 %	 \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}.}
+%	 them has \texttt{1sp}.}
 % 
 % The macro \!\pcol at output@start! is invoked solely from
 % \!\pcol at specialoutput! to process the special \!\output! request made in
@@ -9908,12 +10134,12 @@
 % {\em\Uidx\preenv} in short.  First, we turn
 % $\CSIndex{ifpcol at output}=\true$ so that \!\output!  requests for page
 % breaks are processed by our own macros such as \!\pcol at 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 \cwise{} dererred floats become
-% \pwise{}.  In this float importation, as discussed in
+% Then we let $p=\pbase={\ptop}=0$ and $\PP=\emptyset$ because we have
+% nothing for $q<\ptop=0$.  We also move \!\@deferlist! to \!\@dbldeferlist!
+% and then let \!\@deferlist! be empty because all \cwise{} dererred floats
+% become \pwise{}.  In this float importation, as discussed in
 % item-(\ref{item:ovv-float- at output@start}) of
-% Section~\ref{sec:imp-ovv-float}, we force all floats in the list have
+% \secref{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{
 % 
@@ -9940,13 +10166,22 @@
 % \!\@outputbox!.  Then the box is passed to \!\@outputbox! for which we
 % temporarily let $\CSIndex{ifpcol at output}=\false$ because the page is
 % assumed to be outside the \env{paracol} environment having just started.
-% After that we invoke \!\pcol at startpage! for the \spage{} $\ptop=0$ letting
-% $\pp(0)$ be empty so that the macro will not refer to it.  We also let
-% $\!\topskip!=\!\pcol at topskip!$ being the value at \beginparacol, and
-% $\CSIndex{ifpcol at firstpage}={\false}$, because we have the \spage{}
+% 
+% After that we invoke \!\pcol at startpage! to let it produce $\pp(\ptop)$ for
+% the \spage{} $\ptop=0$ letting $\!\pcol at currpage!$ be empty so that the
+% macro will not refer to it.  The page $\pp(0)$ is usually empty but can
+% have non-empty $\pp^i(0)$ with imported deferred floats which are now
+% \pwise.  Moreover, we can have two or more pages if deferred \pwise{}
+% floats produce \fpage{s}.  However, we can be unaware of these effects of
+% floats because the resulting $\PP^+$ with them is correct of course.
+% 
+% Then let $\!\topskip!=\!\pcol at topskip!$ being the value at \beginparacol,
+% and $\cs{ifpcol@}\~|firstpage|={\false}$, because we have the \spage{}
 % without \preenv{} and thus the first item of each column will be at its
 % top.
 % 
+% \CSINDEX{ifpcol at firstpage}
+% 
 %    \begin{macrocode}
 %% Special Output Routines: Building First Page
 
@@ -10004,27 +10239,39 @@
 % together with \!\topskip! to inhibit the ordinary \!\topskip! insertion.
 % 
 % As for $\pp^m(0)$, we define it as follows, referring to
-% $\mpbout=\!\pcol at mparbottom@out!$ possibly having the positions of the
-% last marginal notes in the last \env{paracol} environment in the page we
-% are working on, and to $B=\!\@mparbottom!$ having the bottom edge of the
+% $\mpbout=\!\pcol at mparbottom@out!=\{\mpb_L^l,\mpb_L^r,\mpb_R^l,\mpb_R^r\}$,
+% where $\mpb_X^x$ has exactly one element $\mpar(h,t)$ which may be the
+% position of last marginal notes in the last \env{paracol} environment in
+% the page we are working on, or $\mpb_X^x=\{\mpar(0,0)\}$ if such marginal
+% note or the environment itself does not exist in the page.  On the other
+% hand, $B=\!\@mparbottom!$ may have non-zero for the bottom edge of the
 % last marginal note in \preenv{} including the last \env{paracol}
-% environment if any.  First we \!\def!fine $\!\pcol at do@mpbout at whole!
-% \<\mpb_L^l\>\<\mpb_L^r\>\<\mpb_R^l\>\<\mpb_R^r\>$ so that it redefines
-% $\mpbout$ to let it have the arguments in the body, and \!\def!ine
-% $\!\pcol at do@mpbout at elem!\@elt\Arg{t}\Arg{b}$ to let it have
-% $\!\@elt!\Arg{0}\Arg{B}$ to be replaced with $\mpb_L^l$ or $\mpb_L^r$ in
-% $\mpbout$.  Second, we invoke \!\pcol at do@mpbout! to update $\mpbout$ with
-% the replacement using two macros above.  Third and finally, we invoke
-% \!\pcol at bias@mpbout! giving it $-h$ to replace each $\mpar(t,b)$ in each
-% element $\mpb_{\{L,R\}}^{\{l,r\}}$ in $\mpbout$, which we let $\pp^m(0)$
-% have shortly, with $\mpar(t-h,b-h)$.  This replacement transforms the
-% coordinates for text area to that for columns and make it possible the
-% first marginal note in each margin to exploit the space for \preenv{} if
-% it is tall extraordinarily.
+% environment if any.  Therefore, what we need to do is to let
+% $\mpb_L^x=\{\mpar(0,B)\}$ to reflect the marginal node whose bottom is at
+% $B$ and which can be different from what $\mpb_L^x$ had, where $x$ is the
+% target margin in the \preenv{} determined by \CSIndex{if at mparswitch}, the
+% parity of $\page(0)$ and \CSIndex{if at reversemargin}.
 % 
-% Then we let $\pp(0)$ have those elements shown above and
+% The replacement is done by \!\pcol at do@mpbout! which invokes
+% $\!\pcol at do@mpbout at whole!\arg{m_L^l}\~\arg{m_L^r}\arg{\mpb_R^l}\arg{\mpb_R^r}$
+% where $m_L^x\in\{M_L^x,\,\!\pcol at do@mpbout at elem!\arg{M_L^x}\}$ whose choice
+% is made according that $x\in\{l,r\}$ is the target margin (latter) or not
+% (former).  Therefore, prior to the invocation of \!\pcol at do@mpbout!, we
+% \!\def!fine \!\pcol at do@mpbout at whole! so that it \!\xdef!ines
+% $\mpbout=\!\pcol at mparbottom@out!$ with its four arguments, and
+% \!\pcol at do@mpbout at elem! to let it be expanded to
+% $\!\@elt!\Arg{0}\Arg{B}=\mpar(0,B)$.  After that, we also invoke
+% \!\pcol at bias@mpbout! giving it $-h$ to replace $\mpar(t,b)$ being the sole
+% element of each $\mpb_{\{L,R\}}^{\{l,r\}}$ in the resulting $\mpbout$ with
+% $\mpar(t-h,b-h)$ to have what we give to $\pp^m(0)$.  This replacement
+% transforms the coordinates for text area to that for columns, and makes it
+% possible for the first marginal note in each margin in the \env{paracol}
+% environment we now start to exploit the space for \preenv{} even if it is
+% tall extraordinarily.
+% 
+% Then we let $\pp(0)$ have $\pp^i(0)$ and $\pp^m(0)$ shown above, and
 % $\pp^p(0)=\!\c at page!$, $\pp^f(0)=\bot$ and $\pp^s(0)=\emptyset$ by
-% \!\pcol at defcurrpage!, and $\CSIndex{ifpcol at firstpage}=\true$ because
+% \!\pcol at defcurrpage!, and let $\CSIndex{ifpcol at firstpage}=\true$ because
 % $\pp^b(0)$ has \preenv.
 % 
 % \changes{v1.3-6}{2013/09/17}
@@ -10104,11 +10351,12 @@
 % Then we invoke \!\pcol at setcurrcolnf! to save the following values for
 % $\cc_c(e)$ ($e\neq\vb$); $\cc_c(\ft)=\!\voidb at x!$ because $c$ does not
 % have \Mcfnote{}s so far;  $\cc_c(\pd)=\!\prevdepth!$ as discussed above;
-% $\cc_c(\tl)=\cc_c(\ml)=\cc_c(\bl)=()$ because \!\pcol at makenormalcol! and
-% \!\@combinefloats! invoked from it emptied them;  $\cc_c(\dl)=()$ as
-% discussed above;  $\cc_c(\tn)=\!\c at topnumber!$,
-% $\cc_c(\bn)=\!\c at botnumber!$ and $\cc_c(\tn)=\!\c at totalnumber!$ as
-% initialized by \!\@floatplacement! invoked from \!\pcol at floatplacement!;
+% $\cc_c(\tl)=\cc_c(\ml)=\cc_c(\bl)=\emptyset$ because
+% \!\pcol at makenormalcol! and \!\@combinefloats! invoked from it emptied
+% them; $\cc_c(\dl)=\emptyset$ as discussed above;
+% $\cc_c(\tn)=\!\c at topnumber!$, $\cc_c(\bn)=\!\c at botnumber!$ and
+% $\cc_c(\tn)=\!\c at totalnumber!$ as initialized by \!\@floatplacement!
+% invoked from \!\pcol at floatplacement!;
 % $\cc_c(\tr)=\!\topfraction!\times\!\@colht!$ and
 % $\cc_c(\br)=\!\bottomfraction!\times\!\@colht!$ as initialized by
 % \!\@floatplacement!; $\cc_c(\sw)$ is defined by \CSIndex{if at nobreak} and
@@ -10119,13 +10367,25 @@
 % at the time of \beginparacol; and
 % $\cc_c(\ep)=\!\everypar!$ at the time of \beginparacol.  We also let
 % $\cc_c(\vb^p)=0$ because $p=0$ and $\cc_c(\vb^r)=\!\@colroom!$ defined
-% above.  In addition, we let $\S_c=\phi$ because we don't have any
+% above.  In addition, we let $\S_c=\emptyset$ because we don't have any
 % \colpage{} having been completed.
+% 
+% \SpecialArrayIndex{c}{\pcol at columncolor}
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
+% We also examine if $\Celtshadow^c=\cs{pcol at columncolor}\cdot c$ is defined
+% and, if so, acquire an \!\insert! from \!\@freelist! to let
+% $\Celt^c=\cs{pcol at columncolor@box}\cdot c$ have the coloring \!\special!
+% for the color defined in $\Celtshadow^c$ by invoking \!\pcol at set@color!
+% being the origina \!\set at color! with nullification of \!\aftergroup!.
+% Otherwise, we let $\Celt^c=\bot$ .
 % 
 % \changes{v1.0}{2011/10/10}
 %	{Add clearing of $S_c$.}
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.34}{2018/05/07}
+%	{Add initialization of
+%	 $\gamma_0^c\EQ\cs{pcol at columncolor@box}\cdot c$.} 
 % 
 %    \begin{macrocode}
   \global\@colroom\@colht \pcol at floatplacement
@@ -10138,6 +10398,12 @@
     \global\count\@currbox\z@
     \global\dimen\@currbox\@colroom
     \expandafter\gdef\csname pcol at shipped\number\pcol at currcol\endcsname{}%
+    \pcol at ifccdefined
+      {\@next\@currbox\@freelist{\global\setbox\@currbox\vbox{%
+        \def\current at color{\pcol at ccuse{}}\let\aftergroup\@gobble
+        \pcol at set@color}}\pcol at ovf}%
+      {\def\@currbox{\voidb at x}}%
+    \pcol at ccxdef{\@currbox}%
    \advance\pcol at currcol\@ne}%
 %    \end{macrocode}
 %
@@ -10157,15 +10423,16 @@
 % parameters in $\cc_0$ by \!\pcol at getcurrcol!.  Then before putting
 % $\cc_0(\vb^b)$ to the main vertical list by \!\unvbox! returning
 % $\cc_0(\vb)$ to \!\@freelist! by \!\@cons! because it has become useless
-% so far, we save the \colorctext{} just with $\Celt^0$ into $\csts$ by
-% \!\pcol at savecolorstack!.  Then we \!\insert! \!\footins! through itself to
-% the main vertical list if it is not $\bot$ and thus has footnotes to be
-% \mgfnote{}.  This \!\insert!ion is different from other footnote
-% \!\insert!ion because \!\footins! is not \!\unvbox!ed but is put as a
-% whole and is followed by \!\penalty!\!\interlinepenalty!, so that
-% footnotes will not be broken by \TeX's page builder to prevent the
-% reconnection of a broken footnote with innapropriate glue discarding,
-% which we will discuss in \secref{sec:imp-fnote}.
+% so far, we save the \colorctext{} just with $\Celt^c$ into $\csts$ by
+% \!\pcol at savecolorstack! because $\CST$ is emptied by \!\pcol at zparacol!.
+% Then we \!\insert! \!\footins! through itself to the main vertical list if
+% it is not $\bot$ and thus has footnotes to be \mgfnote{}.  This
+% \!\insert!ion is different from other footnote \!\insert!ion because
+% \!\footins! is not \!\unvbox!ed but is put as a whole and is followed by
+% \!\penalty!\!\interlinepenalty!, so that footnotes will not be broken by
+% \TeX's page builder to prevent the reconnection of a broken footnote with
+% innapropriate glue discarding, which we will discuss in
+% \secref{sec:imp-fnote}.
 % 
 %    \begin{macrocode}
   \global\pcol at currcol\z@
@@ -10314,6 +10581,9 @@
 %	 \cs{pcol at defcurrpage}.}
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Let \cs{dimen@} have the height of \cs{pcol at prespan} if it is not
+%	 $\bot$, or 0 if $\bot$ for the sake of clarity.}
 % 
 % The macro \!\pcol at output@switch! is invoked from
 % \!\pcol at specialoutput! to process the special \!\output! request made in
@@ -10324,22 +10594,31 @@
 % 
 % First, we examine if the \cswitch{} is to close a \mctext, i.e.,
 % $\CSIndex{ifpcol at sptext}={\true}$ and $c=0$, and if so we do the
-% followings; add the height of \!\pcol at prespan! having \prespan{} to
-% \!\@colroom! which we temporarily shrank when the \mctext{} starts unless
-% the box is void to mean we have had a page break in the \mctext; add an
-% elemnent $\spt(H,h)$ to the tail of $\pp^s(\ptop)=\!\pcol at sptextlist!$ by
-% \!\pcol at getcurrpage! and \!\pcol at defcurrpage!, where $H$ is the height of
-% \!\pcol at prespan! plus the total height of top floats measured by
-% \!\pcol at addflhd!, and $h$ is the height-plus-depth of \!\@holdpg! having
-% (a part of) \mctext, represented in the form of integers and thus expanded
-% with \!\number!; shift \!\@holdpg! left by \!\pcol at shiftspanning! if
-% the column-0 is not the leftmost due to \cswap; and then put \prespan{}
-% and (maybe shifted) \!\@holdpg! into \!\@holdpg! itself so as to let
-% \!\@holdpg! have everything in the \colpage{} 0 as usual.  Note that we
-% perform these operations at the first \cswitch{} for \cscan{}ing from
-% $c=0$ with $\CSIndex{ifpcol at sptext}=\true$, i.e., not for \sync{}ation
-% taking place afterword as explained shortly.
+% following; let $h_p$ be the height of \!\pcol at prespan! having \prespan{}
+% if it is not $\bot$, or 0 if $\bot$ to mean we have had a page break in
+% the \mctext; add $h_p$ to \!\@colroom! which we temporarily shrank when
+% the \mctext{} starts; add an elemnent $\spt(H,h)$ to the tail of
+% $\pp^s(\ptop)=\!\pcol at sptextlist!$ by \!\pcol at getcurrpage! and
+% \!\pcol at defcurrpage!, where $H$ is $h_p$ plus the total height of top
+% floats measured by \!\pcol at addflhd!, and $h$ is the height-plus-depth of
+% \!\@holdpg! having (a part of) \mctext, represented in the form of
+% integers and thus expanded with \!\number!; shift \!\@holdpg! left by
+% \!\pcol at shiftspanning! if the column-0 is not the leftmost due to \cswap;
+% and then put \prespan{} and (maybe shifted) \!\@holdpg! into \!\@holdpg!
+% itself so as to let \!\@holdpg! have everything in the \colpage{} 0 as
+% usual.
 % 
+% Note that it can be $\!\pcol at prespan!=\bot$ if \mctext{} had a page break
+% (or multiple ones) in it as shown above.  This empty \prespan{}, however,
+% does not always means that we have no top floats because the page break in
+% the \mctext{} can produce a \colpage{} with top floats which are deferred
+% from the previous page(s), or though unlikely the \mctext{} itself has
+% float environments.  Therefore, the measurement of the total height of top
+% floats are always necessary.  Also note that we perform these operations
+% at the first \cswitch{} for \cscan{}ing from $c=0$ with
+% $\CSIndex{ifpcol at sptext}=\true$, i.e., prior to the \sync{}ation itself
+% which takes place afterword, as explained shortly.
+% 
 % Then regardless of the operations above, we acquire an \!\insert! from
 % \!\@freelist! by \!\@next! for $\cc_c(\vb)$ to store the \ccolpage{} in
 % (maybe modified) \!\@holdpg! by \!\pcol at clearcst@unvbox! to add uncoloring
@@ -10379,10 +10658,11 @@
 
 \def\pcol at output@switch{%
   \ifpcol at sptext\ifnum\pcol at currcol=\z@
-    \ifvoid\pcol at prespan\else \global\advance\@colroom\ht\pcol at prespan \fi
+    \ifvoid\pcol at prespan \dimen@\z@ \else \dimen@\ht\pcol at prespan \fi
+    \global\advance\@colroom\dimen@
+    \pcol at addflhd\@toplist\pcol at textfloatsep
     \pcol at getcurrpinfo\@tempcnta\@tempdima\@tempskipa
     \@tempdimb\ht\@holdpg \advance\@tempdimb\dp\@holdpg
-    \dimen@\ht\pcol at prespan \pcol at addflhd\@toplist\pcol at textfloatsep
     \@cons\pcol at sptextlist{{\number\dimen@}{\number\@tempdimb}}%
     \pcol at defcurrpage{\number\@tempcnta}\pcol at spanning\pcol at footins
                      {\pcol at sptextlist}{\pcol at mparbottom}%
@@ -10442,10 +10722,23 @@
 % \mctext.  Also note that, as mentioned in the explanation of the first
 % examination at the beginning of this macro, we perform these operations at
 % the first \cswitch{} for \cscan{}ning from $c=0$ with
-% $\CSIndex{ifpcol at sptext}=\true$, i.e., not for \sync{}ation taking place
-% afterward, so that the \cscan{} will not insert penalties to allow page
-% break inappropriately if $\CSIndex{if at nobreak}={\true}$.
+% $\CSIndex{ifpcol at sptext}=\true$ prior to the \sync{ation} following the
+% \mctext.  This means, if $\CSIndex{if at nobreak}={\true}$,
+% $\!\penalty!=10000$ is inserted at the top and bottom end of the space for
+% \mctext{} in the columns such that $c\neq0$, the former by this \cscan{}
+% and the latter by the \cswitch{} to $c$ made after the synchronization.
+% Therefore, if our \sync{ation} mechanism and \TeX's page builder once
+% agreed both end can be in a page, both end will not chosen as page
+% break points\footnote{
 % 
+% As for $c=0$, its top end of \mctext{} is a feasible break point to make
+% the penalty insertion asymmetric.  Therefore, we need to reinvestigate if
+% the condition of the broadcast is really appropriate, and, if
+% inappropriate, have to go back to the old implementation in which
+% \cs{ifpcol at sync} is included in the condition.  Otherwise, if proved
+% appropriate, we will have to consider to make the penalty insertion
+% symmetric by adding \cs{nobreak} at the top of \mctext{} in $c=0$.}.
+% 
 % \changes{v1.0}{2011/10/10}
 %	{Restrict the broadcast of \cs{if at nobreak} and \cs{everypar} only
 %	 when a column-switching is accompanied with spanning text.}
@@ -10883,6 +11176,13 @@
 % \changes{v1.3-1}{2013/09/17}
 %	{Renamed from \cs{pcol at restorecst@restart} and the operations to
 %	 save pre-spanning-text stuff is added.}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add {\tt\%} to the end of the line to open \cs{vbox} for
+%	 \cs{pcol at prespan} to obey the coding convention.}
+% \changes{v1.34}{2018/05/07}
+%	{Change nullification of
+%	 $\mathit{\Gamma}_s\EQ\cs{pcol at colorstack@saved}$ from \cs{gdef} to
+%	 \cs{box}-assignment of $\bot$ because it is now a \cs{vbox}.}
 % 
 % The macro \!\pcol at putbackmvl!, solely used in
 % \!\pcol at restartcolumn!, has two functions;  \colorstack{} restoration and
@@ -10892,27 +11192,36 @@
 % \!\pcol at savecolorstack! as the opening \colorctext{} of the \colpage{},
 % and \!\pcol at prespan! for \prespan{} is made $\bot$.
 % 
-% Otherwise, $\csts$ is nullified because the opening \colorctext{} has
+% Otherwise, $\csts$ is let $\bot$ because the opening \colorctext{} has
 % already been put when we left from the \colpage{}.  Then if
 % $\CSIndex{ifpcol at sptextstart}=\true$ to mean a \mctext{} is to start, we
 % save $\cc_c(\vb)$ into \!\pcol at prespan! adding the colorling \!\special!s
-% to restore \colorctext{} from $\CST^c$ by \!\pcol at restorecolorstack!.  We
-% also shrink $\cc_c(\vb^r)=\!\@colroom!$ by the height of the \prespan{} so
-% that \mctext{} will be captured by \!\pcol at makecol! if it is broken into
-% two (or more) pages, and put a invisible \!\hrule! to the main vertical
-% list letting $\!\topskip!=0$ to supress \!\topskip! insertion prior to the
-% \mctext{} but instead to make the text led by \!\baselineskip! (or
-% \!\lineskip!) according to the \!\prevdepth!  being the depth of the
-% tallest column and the height of the first \!\hbox! in the \mctext.
-% Otherwise, i.e., if $\CSIndex{ifpcol at sptextstart}=\false$, we simply put
-% back $\cc_c(\vb)$ into the main vertical list and then the coloring
-% \!\special!s by \!\pcol at restorecolorstack!.
+% to restore \colorctext{} from $\CST^c$ by
+% \!\pcol at restorecolorstack!\footnote{
+% 
+% If \cs{pcol at prespan} is connected to (the first part of) the \mctext,
+% the reestablishment of the \colorstack{} here correctly places coloring
+% \cs{special}s in \texttt{.dvi}.  On the other hand, if the \mctext{} is
+% slown away to the next page as a whole, the reestablishment here is
+% essential for the correct paring of the pushes and pops, the latter of
+% which are at the bottom of the \colpage{} whose tail is \cs{pcol at prespan}.}.
+% 
+% We also shrink $\cc_c(\vb^r)=\!\@colroom!$ by the height of the \prespan{}
+% so that \mctext{} will be captured by \!\pcol at makecol! if it is broken
+% into two (or more) pages, and put a invisible \!\hrule! to the main
+% vertical list letting $\!\topskip!=0$ to supress \!\topskip! insertion
+% prior to the \mctext{} but instead to make the text led by
+% \!\baselineskip! (or \!\lineskip!) according to the \!\prevdepth!  being
+% the depth of the tallest column and the height of the first \!\hbox! in
+% the \mctext.  Otherwise, i.e., if $\CSIndex{ifpcol at sptextstart}=\false$,
+% we simply put back $\cc_c(\vb)$ into the main vertical list and then the
+% coloring \!\special!s by \!\pcol at restorecolorstack!.
 % 
 % Note that $\CSIndex{ifpcol at sptextstart}$ is temporarily made $\false$ by
 % this macro if the \!\pcol at output@switch! invoking \!\pcol at restartcolumn!
 % did not make \sync{}ed \cswitch{}, i.e., if $\CSIndex{ifpcol at flush}=\true$
 % to mean the page is flushed before the \sync{}ation, or
-% $\CSIndex{pcol at sync}=\false$ for \cscan{}ning prior to the \sync{}ation.
+% $\CSIndex{ifpcol at sync}=\false$ for \cscan{}ning prior to the \sync{}ation.
 % 
 %    \begin{macrocode}
 \def\pcol at putbackmvl{%
@@ -10921,9 +11230,9 @@
   \pcol at ifempty\@currbox
    {\pcol at savecolorstack
     \ifpcol at sptextstart \global\setbox\pcol at prespan\box\voidb at x \fi}%
-   {\gdef\pcol at colorstack@saved{}%
+   {\global\setbox\pcol at colorstack@saved\box\voidb at x
     \ifpcol at sptextstart
-      \global\setbox\pcol at prespan\vbox{
+      \global\setbox\pcol at prespan\vbox{%
         \unvbox\@currbox \pcol at restorecolorstack}%
       \global\advance\@colroom-\ht\pcol at prespan
       \global\topskip\z@ \hrule\@height\z@\@width\z@
@@ -10947,156 +11256,78 @@
 %	{Move commands outside \cs{output} routine to the newly introduced
 %	 section ``Commands for Text Coloring'' to distinguish
 %	 macros inside and outside \cs{output} routine.}
-% 
-% \KeepSpace{2}
-% \begin{macro}{\pcol at output@cpush}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced for color stack pushing.}
-% \begin{macro}{\pcol at output@icpush}
+% 	{\cs{pcol at output@cpush} was introduced for color stack pushing but
+%	 removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@cpush} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced to implement \cs{pcol at output@cpush}.}
-% \begin{macro}{\pcol at output@mcpush}
+% 	{\cs{pcol at output@icpush} was introduced to implement
+%	 \cs{pcol at output@cpush} but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@icpush} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% \begin{macro}{\pcol at output@imcpush}
+%	{\cs{pcol at output@mcpush} was introduced for coloring specified in
+%	 math mode but removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@mcpush} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% 
-% The macro \!\pcol at output@cpush! and its math-mode relative
-% \!\pcol at output@mcpush! are invoked solely from
-% \!\pcol at specialoutput! to process the \!\output! requests
-% \!\pcol at op@cpush! and $\mppush-i$ respectively for \colorstack{} pushing.
-% The former macro \!\pcol at output@cpush! removes the first element from
-% $\cstb$ and pushes it into $\cst$ by \!\pcol at output@icpush!.  The latter
-% macro \!\pcol at output@mcpush! invokes $|\pcol at reset@color at mpop@|{\cdot}i$,
-% 
-% \SpecialArrayIndex{i}{\pcol at reset@color at mpop@}
-% 
-% whose body is $\!\pcol at reset@color at mpop!\Arg{i}\Arg{\mcelt_i}$ which is
-% temporarily redefined as \!\pcol at output@imcpush! to
-% push $\mcelt_i$ to $\cst=\!\pcol at colorstack!$, and to append $i$ to
-% $\mplist=\!\pcol at colorstack@mpushed!$ so that corresponding popper
-% \!\pcol at output@mcpop! for $i$ finds $i\in\mplist$.
-% 
-%    \begin{macrocode}
-%% Special Output Routines: Color Management
-
-\def\pcol at output@cpush{%
-  \expandafter\pcol at output@icpush\pcol at colorstack@buf\@nil
-  \pcol at return@from at color}
-\def\pcol at output@icpush\@elt#1#2\@nil{%
-  \@cons\pcol at colorstack{{#1}}\gdef\pcol at colorstack@buf{#2}}
-\def\pcol at output@mcpush{\begingroup
-  \let\pcol at reset@color at mpop\pcol at output@imcpush
-  \@nameuse{pcol at reset@color at mpop@\number\@tempcnta}%
-  \endgroup
-  \pcol at return@from at color}
-\def\pcol at output@imcpush#1#2{%
-  \@cons\pcol at colorstack{{#2}}%
-  \@cons\pcol at colorstack@mpushed{{#1}}}
-
-%    \end{macrocode}
-% \end{macro}\end{macro}\end{macro}\end{macro}
-% 

-% \KeepSpace{2}
-% \begin{macro}{\pcol at output@cpop}
+%	{\cs{pcol at output@imcpush} was introduced for coloring specified in
+%	 math mode but removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@imcpush} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced for color stack popping.}
-% \begin{macro}{\pcol at reset@color at elt}
+% 	{\cs{pcol at output@cpop} was introduced for color stack popping but
+%	 removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@cpop} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.2-1}{2013/05/11}
-% 	{Introduced to implement \cs{pcol at reset@color at pop}.}
+% 	{\cs{pcol at reset@color at elt} was introduced to implement
+%	 \cs{pcol at reset@color at pop} but removed in v1.34.} 
 % \changes{v1.22}{2013/06/30}
-% 	{Moved from the position where \cs{pcol at reset@color at pop} is defined
-%	 because it is now used only by \cs{pcol at output@cpop}.}
-% \begin{macro}{\pcol at output@mcpop}
+% 	{\cs{pcol at reset@color at elt} was moved from the position where
+%	 \cs{pcol at reset@color at pop} was defined 
+%	 because it became to be used only by \cs{pcol at output@cpop}, but
+%	 removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at reset@color at elt} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% \begin{macro}{\pcol at output@mcpop at elt}
+%	{\cs{pcol at output@mcpop} was introduced for coloring specified in
+%	 math mode but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@mcpop} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.24}{2013/07/27}
-%	{Introduced for coloring specified in math mode.}
-% 
-% The macro \!\pcol at output@cpop! is invoked by \!\pcol at specialoutput!
-% to process the \!\output! request \!\pcol at op@cpop! for popping the
-% \colorstack{} $\cst$.  To do that, we temporarily make $\cst$ empty and
-% then scan its copy by \!\pcol at reset@color at elt! to add each element to the
-% tail of $\cst$ until the last element is found.  The macro
-% \!\pcol at output@cpop! is also used in its math-mode counterpart
-% \!\pcol at output@mcpop! solely invoked from \!\pcol at specialoutput! with
-% $\!\outputpenalty!=\mppop-i$, if $i\in\mplist=\!\pcol at colorstack@mpushed!$
-% is confirmed by scanning $\mplist$ with \!\pcol at output@mcpop at elt! to mean
-% the counterpart push has been processed by \!\pcol at output@mcpush!.
-% 
-%    \begin{macrocode}
-\def\pcol at output@cpop{\begingroup
-  \let\reserved at a\pcol at colorstack
-  \gdef\pcol at colorstack{}\let\@elt\pcol at reset@color at elt
-  \reserved at a\@elt\@nil
-  \endgroup
-  \pcol at return@from at color}
-\def\pcol at reset@color at elt#1\@elt#2{\def\reserved at b{#2}%
-  \ifx\reserved at b\@nnil \let\reserved at b\relax
-  \else \@cons\pcol at colorstack{{#1}}\def\reserved at b{\@elt{#2}}%
-  \fi
-  \reserved at b}
-\def\pcol at output@mcpop{\begingroup
-  \let\@elt\pcol at output@mcpop at elt \@tempswafalse
-  \pcol at colorstack@mpushed
-  \if at tempswa \global\let\@gtempa\pcol at output@cpop
-  \else       \global\let\@gtempa\pcol at return@from at color
-  \fi
-  \endgroup
-  \@gtempa}
-\def\pcol at output@mcpop at elt#1{\ifnum#1=\@tempcnta \@tempswatrue \fi}
-
-%    \end{macrocode}
-% \end{macro}\end{macro}\end{macro}\end{macro}
-% 

-% \begin{macro}{\pcol at output@cset}
+%	{\cs{pcol at output@mcpop at elt} was introduced for coloring specified in
+%	 math mode but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@mcpop at elt} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced to set $\gamma_0^c$.}
-% \begin{macro}{\pcol at output@icset}
+% 	{\cs{pcol at output@cset} was introduced to set $\gamma_0^c$ but
+%	 removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@cset} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced to implement \cs{pcol at output@cset}.}
-% 
-% The macro \!\pcol at output@cset!, invoked solely from \!\pcol at specialoutput!
-% to process the \!\output! request \!\pcol at op@cset!, lets
-% $\Celt^c=\cs{pcol at columncolor}{\cdot}c$
-% 
-% \SpecialArrayIndex{c}{\pcol at columncolor}
-% 
-% have the first element of $\cstb$ by \!\pcol at output@icset!.
-% 
-%    \begin{macrocode}
-\def\pcol at output@cset{%
-  \expandafter\pcol at output@icset\pcol at colorstack@buf\@nil
-  \pcol at return@from at color}
-\def\pcol at output@icset\@elt#1#2\@nil{{\let\@elt\relax
-  \expandafter\xdef\csname pcol at columncolor\number\pcol at currcol\endcsname{%
-    \@elt{#1}}%
-  \gdef\pcol at colorstack@buf{#2}}}
-
-%    \end{macrocode}
-% \end{macro}\end{macro}
-% 

-% \begin{macro}{\pcol at return@from at color}
+% 	{\cs{pcol at output@icset} was introduced to implement
+%	 \cs{pcol at output@cset} but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at output@icset} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced to implement \cs{pcol at output@cpush},
-%	 \cs{pcol at output@cpop} and \cs{pcol at output@cset}.}
-% 
-% The macro \!\pcol at return@from at color! is invoked from macros for coloring
-% \!\output! request being \!\pcol at output@cpush!, \!\pcol at output@mcpush!,
-% \!\pcol at output@cpop!, \!\pcol at output@mcpop! and \!\pcol at output@cset!.  The
-% macro puts the contents of \!\@holdpg! back to the main vertical list,
-% puts \!\footins! as well by \!\@reinserts!, and adds a penalty of 10000 or
-% \!\interlinepenalty! acoording to \CSIndex{if at nobreak}, to pretend as if
-% the building process of main vertical list were not interrupted.
-% 
-%    \begin{macrocode}
-\def\pcol at return@from at color{\unvbox\@holdpg \@reinserts
-  \if at nobreak\nobreak \else\addpenalty\interlinepenalty \fi}
-
-%    \end{macrocode}
-% \end{macro}
+% 	{\cs{pcol at return@from at color} was introduced to implement
+%	 \cs{pcol at output@cpush}, \cs{pcol at output@cpop} and
+%	 \cs{pcol at output@cset} but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at return@from at color} is removed according to the change of
+%	 text coloring from \cs{output} to \cs{insert}.}
 % 

 % \begin{macro}{\pcol at magicpenalty}
 % \begin{macro}{\pcol at ifempty}
@@ -11119,6 +11350,8 @@
 % otherwise, $\!\@gtempa!=\!\pcol at magicpenalty!$ iff $\arg{box}$ is empty.
 % 
 %    \begin{macrocode}
+%% Special Output Routines: Color Management
+
 \def\pcol at magicpenalty{12345}
 \def\pcol at ifempty#1#2#3{%
   \setbox\@tempboxa\vbox{\penalty\pcol at magicpenalty
@@ -11138,122 +11371,352 @@
 % \begin{macro}{\pcol at clearcolorstack}
 % \changes{v1.2-1}{2013/05/11}
 % 	{Introduced to clear color context.}
+% \changes{v1.34}{2018/05/07}
+%	{Completely change its definition according to the new text coloring
+%	 with \cs{insert}.}
 % 
 % The macro \!\pcol at clearcst@unvbox!$\arg{box}$, invoked from \!\pcol at opcol!
-% and \!\pcol at output@switch!, puts the followings above and below
+% and \!\pcol at output@switch!, puts the following above and below
 % $\arg{box}$ containing the main vertical list of a \colpage{} from which
 % we are now leaving, if \!\pcol at ifempty! judges that $\arg{box}$ is not
 % empty.  Above the $\arg{box}$, we put coloring \!\special!s to establish
 % the \colorstack{} of |.dvi| saved in $\csts=\!\pcol at colorstack@saved!$ by
 % \!\pcol at restorecst! as the opening \colorctext{} of the \colpage{}.  The
-% stack $\csts$, however, can be empty if $\arg{box}$ already has the
-% \!\special!s, i.e., when we visited the \colpage{} it had already had
+% stack $\csts$, however, can be $\bot$ if $\arg{box}$ already has the
+% \!\special!s, i.e., when we visit the \colpage{} it had already had
 % some items.  Below $\arg{box}$, on the other hand, we put uncoloring
-% \!\special!s by \!\pcol at clearcolorstack! to rewind $\CST^c$ to clear the
+% \!\special!s by \!\pcol at clearcolorstack! to rewind $\CSTraw^c$ to clear the
 % \colorctext{} of the \colpage{} in |.dvi| temporarily so that afterward it
 % is made consistent with that in |.tex|.
 % 
-% The macro \!\pcol at clearcolorstack!, also used in \!\pcol at icolumncolor!,
-% simply scans the \colorstack{} $\CST^c$ for the current column $c$, to
-% which \!\pcol at colorstack@full!  is expanded, applying \!\reset at color!
-% to each element in it.  That is, we invoke \!\reset at color!  $\Abs{\CST^c}$
-% times ignoring the color information in each element and the order of
-% elements, expecting \!\reset at color! just pops printer's \colorstack{} or
-% lets printer's text color be \!\current at color!, as defined in all printer
-% |.def|inition files in \textsf{graphic} package.  If the former is chosen
-% for a printer, its \colorstack{} is rewineded as we intend.  Otherwise,
-% the sequence of \!\reset at color! is meaningless but harmless at the same
-% time.
+% The macro \!\pcol at clearcolorstack!, solely invoked from
+% \!\pcol at clearcst@unvbox! shown above\footnote{
 % 
+% But we have this macro to avoid the complication in \cs{def}ining
+% \cs{reserved at a} and \cs{reserved at b} with an argument if we did it in the
+% argument of \cs{pcol at ifempty} in \cs{pcol at clearcst@unvbox}.},
+% 
+% scans $\CSTraw^c=(\Celt^c,\cstraw)$ by \!\pcol at scancst! giving
+% $\cstraw=\!\pcol at colorins!$ to it as its argument.  Since we gives
+% $\cstraw$ to the macro, this scan includes removals of all $\celtpop_i$
+% and $\mceltpop_{i,m}$, all $\celt_i$ having matching $\celtpop_i$, all
+% $\mcelt_{i,m}$ having matching $\mceltpop_{i,m}$, and all elements to
+% update $\Celt^c$, from $\cstraw$ to let \!\pcol at colorins! have $\cst$.
+% Prior to this invocation, we \!\def!ine $\!\reserved at a!\<\celt_i\>$ and
+% $\!\reserved at b!\<\Celt^c\>$ to let them have \!\reset at color! so that
+% uncoloring \!\special! will be put into the main vertical list for each
+% $\celt_i\in\cst$ and $\Celt^c$ before update if any, regardless of
+% coloring \!\special! they have.  That is, we invoke \!\reset at color! as
+% many times as the appearance of $\celt_i\in\cst$ and once if
+% $\Celt^c\neq\bot$ before the invocation, ignoring the color information in
+% each element and the order of elements, expecting \!\reset at color! just
+% pops printer's \colorstack{} to rewind it as we intend.
+% 
+% Note that in some printer |.def|inition could \!\def!ine \!\reset at color! to
+% let printer's text color be \!\current at color! to make the stack rewinding
+% resulting in the sequence of coloring operations with \!\current at color! at
+% the invocation of \!\output!.  This meaningless operations might cause a
+% problem when a colored \colpage{} of $c_1$ is physically followed by another
+% \colpage{} of the succeeding column $c_2$ without any coloring, because the
+% \colpage{} of $c_2$ will be colored with \!\current at color! at the page break
+% in $c_1$.  If this problem is serious, we could initialize $\Celt^c$ with
+% \!\current at color! at \beginparacol{} for all $c$ such that $\Celtshadow^c$
+% is undefined, in order to make sure that any \colpage{} has at least one
+% coloring \!\special! with $\Celt^c$ at its beginning so that, for example,
+% coloring operations at the tail of the \colpage{} of $c_1$ is overridden
+% by that of the default color of $c_2$ placed at the head of its \colpage{}.
+% 
 %    \begin{macrocode}
 \def\pcol at clearcst@unvbox#1{%
   \pcol at ifempty#1\relax
-   {\pcol at restorecst\pcol at colorstack@saved
-    \unvbox#1\pcol at clearcolorstack}}
-\def\pcol at clearcolorstack{{\def\@elt##1{\reset at color}%
-  \pcol at colorstack@full}}
+   {\pcol at restorecst\pcol at colorstack@saved \unvbox#1\pcol at clearcolorstack}}
+\def\pcol at clearcolorstack{%
+  \def\reserved at a##1{\reset at color}\def\reserved at b##1{\reset at color}%
+  \pcol at scancst\pcol at colorins}
 
 %    \end{macrocode}
 % \end{macro}\end{macro}
 % 

-% \KeepSpace{1}
+% \changes{v1.2-1}{2013/05/11}
+% 	{\cs{pcol at set@color at elt} was introduced to implement color context
+%	 reestablishment but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at set@color at elt} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
+% 
 % \begin{macro}{\pcol at restorecolorstack}
 % \changes{v1.2-1}{2013/05/11}
 % 	{Introduced to reestablish color context.}
+% \changes{v1.34}{2018/05/07}
+%	{Completely change its definition according to the new text coloring
+%	 with \cs{insert}.}
 % \begin{macro}{\pcol at restorecst}
 % \changes{v1.2-1}{2013/05/11}
 % 	{Introduced to reestablish color context.}
-% \begin{macro}{\pcol at set@color at elt}
-% \changes{v1.2-1}{2013/05/11}
-% 	{Introduced to implement color context reestablishment.}
+% \changes{v1.34}{2018/05/07}
+%	{Completely change its definition according to the new text coloring
+%	 with \cs{insert}.}
 % 
-% The macro \!\pcol at restorecolorstack!, used in \!\pcol at putbackmvl!,
-% \!\pcol at icolumncolor!  and \!\pcol at output@end!, makes \colorctext{} in
-% |.dvi| consistent with that in |.tex| by giving $\CST^c$, to which
-% \!\pcol at colorstack@full! is expanded, to \!\pcol at restorecst! which applies
-% \!\pcol at set@color at elt! to each element in its argument \colorstack{}
-% $\CST^c$ or $\csts$.  That is for each $\celt$ in the stack,
-% \!\current at color! is defined as $\celt$ and then \!\pcol at set@color!, being
-% the original \!\set at color!, is invoked to push $\celt$ into the
-% \colorstack{} in the printer in use.  Note that before the invocation of
-% \!\pcol at set@color!, we make \!\aftergroup!  \!\let!-equal to \!\@gobble!
-% in order to nullify \!\aftergroup! with \!\reset at color! in the macro, so
-% that the macro simply puts some coloring \!\special! into the main
-% vertical list without taking care of popping the \colorstack{} in |.dvi|
-% because the real push/pop operations are done by \!\pcol at set@color at push!
-% and \!\pcol at reset@color at pop!.
+% The macro \!\pcol at restorecolorstack!, used in \!\pcol at putbackmvl!
+% and \!\pcol at output@end!, makes \colorctext{} in
+% |.dvi| consistent with that in |.tex| by giving $\cst=\!\pcol at colorins!$
+% to \!\pcol at restorecst! to let it scan $\CST^c=(\Celt^c,\cst)$.
+% The callee macro $\!\pcol at restorecst!\arg{box}$, also used in
+% \!\pcol at clearcst@unvbox! with $\arg{box}=\csts=\!\pcol at colorstack@saved!$,
+% invokes \!\pcol at scancst! after \!\def!ining $\!\reserved at a!\<\celt_i\>$ to
+% apply \!\unvbox! to $\celt_i$ in $\cst$ or $\csts$ and
+% $\!\reserved at b!\<\Celt^c\>$ to apply \!\unvcopy! to $\Celt^c$ so that
+% coloring \!\special!s they have will be put into the main vertical list.
 % 
 %    \begin{macrocode}
-\def\pcol at restorecolorstack{\pcol at restorecst\pcol at colorstack@full}
-\def\pcol at restorecst#1{{\let\@elt\pcol at set@color at elt#1}}
-\def\pcol at set@color at elt#1{\def\current at color{#1}\let\aftergroup\@gobble
-  \pcol at set@color}
+\def\pcol at restorecolorstack{\pcol at restorecst\pcol at colorins}
+\def\pcol at restorecst{%
+  \def\reserved at a##1{\unvbox##1}\def\reserved at b##1{\unvcopy##1}%
+  \pcol at scancst}
 
 %    \end{macrocode}
-% \end{macro}\end{macro}\end{macro}
+% \end{macro}\end{macro}
 % 

+% \begin{macro}{\pcol at scancst}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to implement new text coloring with \cs{insert}.}
+% \begin{macro}{\pcol at iscancst}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to implement new text coloring with \cs{insert}.}
+% 
+% \begin{Sloppy}{1500}
+% The macro $\!\pcol at scancst!\arg{box}$ is invoked from
+% \!\pcol at clearcolorstack! and \!\pcol at restorecst!.  In the former
+% invocation, we have $\arg{box}=\cstraw=\!\pcol at colorins!$ to rewind
+% $\CSTraw=(\Celt^c,\cstraw)$ with $\!\reserved at a!\arg{\celt_i}$ and
+% $\!\reserved at b!\arg{\Celt^c}$ having \!\reset at color!.  In the latter one,
+% we have
+% $\arg{box}\in\{\cst{=}\!\pcol at colorins!,\,\csts{=}\!\pcol at colorstack@saved!\}$
+% to reestablish $\CST^c=(\Celt^c,\cst)$ or $\csts$ with
+% $\!\reserved at a!\arg{\celt_i}$ to apply \!\unvbox! to $\celt_i$ and 
+% $\!\reserved at b!\arg{\Celt^c}$ to apply \!\unvcopy! to $\Celt^c$.
+% Therefore, if $\arg{box}=\!\pcol at colorins!$, we at first put (un)coloring
+% \!\special! for $\Celt^c$, unless it is $\bot$, to the main vertical
+% list applying \!\reserved at b! to it.  This means the \!\special! for
+% $\Celt^c$ is put first prior to those for elements in $\cstraw$ or $\cst$
+% consistently in reestablishing but not in rewinding.  However as we
+% discussed in the description of \!\pcol at clearcolorstack!, the order of
+% rewinding does not affect the result for almost all printers because only
+% the number of pop operations is siginficant for them\footnote{
+% 
+% And even for the minority because multiple updates of printer's color with
+% one particular color are independent of the order of them.}.
+% 
+% Then if $\arg{box}\neq\bot$ we invoke \!\pcol at iscancst! to examine the
+% contents of $\arg{box}$ from its bottom to top.  Prior to the invocation,
+% we do the following;  let \!\@tempboxa! have an empty \!\vbox! as its initial
+% value of reformed $\arg{box}$;  let \!\pcol at tempboxa! have an empty
+% \!\vbox! as its initial value of the sequence of \!\special!s to be put
+% into the main vertical list; let $\npop=\!\@tempcntb!=0$; let
+% $M=\!\reserved at b!=()$ as its initial value of the list of identifiers of
+% math-mode pops; $\CSIndex{if at tempswa}=\true$ to mean the first \!\vbox! to
+% update $\Celt^c$ found in the scan (i.e., the bottommost one) is
+% effective.
+% \end{Sloppy}
+% 
+% In the macro \!\pcol at iscancst!, we repeatedly examine the last \!\vbox! in
+% $\arg{box}$ taken by \!\lastbox! into $\celt=\!\pcol at tempboxb!$ until
+% $\celt$ becomes $\bot$, and perform one of the following for $\celt$.
+% 
+% \begin{enumerate}\def\labelenumi{(\arabic{enumi})}
+% \def\HT{\mathit{height}}\def\DP{\mathit{depth}}\def\WD{\mathit{width}}
+% \item
+% If $\HT(\celt)=0$ and $\WD(\celt)=0$ to mean $\celt=\celtpop_i$, increment
+% $\npop$.
+% 
+% \item
+% If $\HT(\celt)=0$ and $\WD(\celt)=m>0$ to mean $\celt=\mceltpop_{i,m}$, let
+% $M=(m,M)$.
+% 
+% \item
+% If $\HT(\celt)\neq0$, $\DP(\celt)=0$ and $\WD(\celt)=0$ to mean
+% $\celt=\celt_i$, decrement $\npop$ if $\npop>0$, or otherwise add $\celt$
+% to the head of \!\@tempboxa! and apply $\!\reserved at a!\arg{\celt}$ to add
+% its result to the head of \!\pcol at tempboxa!.
+% 
+% \item
+% If $\HT(\celt)\neq0$, $\DP(\celt)=0$ and $\WD(\celt)=m>0$ to mean
+% $\celt=\mcelt_{i,m}$, do nothing if $m\in M$, or otherwise add $\celt$
+% to the head of \!\@tempboxa! and apply $\!\reserved at a!\arg{\celt}$ to add
+% its result to the head of \!\pcol at tempboxa!.
+% 
+% \item
+% If $\HT(\celt)\neq0$, $\DP(\celt)\neq0$ to mean $\celt$ has a \!\special!
+% with which $\Celt^c$ is updated.  If $\CSIndex{if at tempswa}=\true$ to mean
+% $\celt$ is the first (bottommost) occurence, $\Celt^c$ is updated
+% acquiring an \!\insert! from \!\@freelist! if it was $\bot$.  In this
+% case of $\bot$, we have to put an uncoloring \!\special! by
+% \!\reset at color!, because \!\pcol at scancst! did not do it but
+% \!\columncolor! or \!\normalcolumncolor! pushed the corresponding color
+% \!\special!.  Then we let $\CSIndex{if at tempswa}=\false$.
+% 
+% Otherwise, i.e., if $\CSIndex{if at tempswa}=\false$ for second or succeeding
+% occurences, we do nothing because updates by them are overridden by the
+% first one.
+% \end{enumerate}
+% 
+% Note that the cases other than (3) and (4) happen only in rewinding, and
+% thus in reestablishing we only have (3) and (4) with $\npop=0$ and $M=()$
+% always so that every $\celt$ is kept into new $\arg{box}$ and a coloring
+% \!\special! for it will be put into the main vertical list.
+% 
+% Then we go back to \!\pcol at scancst! to let $\arg{box}=\!\@tempboxa!$,
+% meaningless in reestablishing but not harmful, and put the contents of
+% \!\pcol at tempboxa! to the main vertical list.
+% 
+% 
+%    \begin{macrocode}
+\def\pcol at scancst#1{%
+  \@tempcnta#1\relax 
+  \ifnum\@tempcnta=\pcol at colorins
+    \ifvoid\pcol at ccuse{@box}\else
+      \reserved at b{\pcol at ccuse{@box}}\fi
+  \fi
+  \ifvoid\@tempcnta\else
+    \setbox\@tempboxa\vbox{}\setbox\pcol at tempboxa\vbox{}\@tempcntb\z@ 
+    \def\reserved at b{}\let\@elt\relax \@tempswatrue \pcol at iscancst
+    \global\setbox\@tempcnta\box\@tempboxa \unvbox\pcol at tempboxa
+  \fi}
+\def\pcol at iscancst{%
+  \setbox\@tempcnta\vbox{%
+    \unvbox\@tempcnta \global\setbox\pcol at tempboxb\lastbox}%
+  \ifvoid\pcol at tempboxb \let\reserved at c\relax
+  \else
+    \let\reserved at c\pcol at iscancst
+    \ifdim\ht\pcol at tempboxb=\z@
+      \ifdim\wd\pcol at tempboxb=\z@ \advance\@tempcntb\@ne
+      \else \edef\reserved at b{\@elt{\number\wd\pcol at tempboxb}\reserved at b}%
+      \fi
+    \else\ifdim\dp\pcol at tempboxb=\z@
+      \ifdim\wd\pcol at tempboxb=\z@
+        \ifnum\@tempcntb>\z@ \advance\@tempcntb\m at ne
+        \else
+          \setbox\@tempboxa\vbox{\copy\pcol at tempboxb \unvbox\@tempboxa}%
+          \setbox\pcol at tempboxa\vbox{%
+            \reserved at a\pcol at tempboxb \unvbox\pcol at tempboxa}%
+        \fi
+      \else
+        \count@\wd\pcol at tempboxb \chardef\reserved at d\z@
+        \def\@elt##1{\ifnum##1=\count@ \chardef\reserved at d\@ne \fi}%
+        \reserved at b \let\@elt\relax
+        \ifnum\reserved at d=\z@
+          \setbox\@tempboxa\vbox{\copy\pcol at tempboxb \unvbox\@tempboxa}%
+          \setbox\pcol at tempboxa\vbox{%
+            \reserved at a\pcol at tempboxb \unvbox\pcol at tempboxa}%
+        \fi
+      \fi
+    \else\if at tempswa
+      \ifvoid\pcol at ccuse{@box}%
+        \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{}}\pcol at ovf
+        \pcol at ccxdef{\@currbox}\reset at color
+      \fi
+      \global\setbox\pcol at ccuse{@box}\vbox{\unvbox\pcol at tempboxb}%
+      \@tempswafalse
+    \fi\fi\fi
+  \fi
+  \reserved at c}
+
+%    \end{macrocode}
+% \end{macro}\end{macro}
+% 

 % \begin{macro}{\pcol at savecolorstack}
 % \changes{v1.2-1}{2013/05/11}
 % 	{Introduced to save the opening color context of a column-page.}
+% \changes{v1.34}{2018/05/07}
+%	{Completely change its definition according to the new text coloring
+%	 with \cs{insert}.}
 % 
 % The macro \!\pcol at savecolorstack! is used in \!\pcol at startcolumn!,
 % \!\pcol at output@start! and \!\pcol at putbackmvl! to save the opening
-% \colorctext{} in $\CST^c$ of a \ccolpage{} $c$ known to be or found empty.
-% The saving to $\csts=\!\pcol at colorstack@saved!$ is done by \!\xdef!ining it
-% with the expansion result of \!\pcol at colorstack@full!.
+% \colorctext{} in $\CST^c$ of a \ccolpage{} $c$ known to be or found empty
+% into $\csts=\!\pcol at colorstack@saved!$.  If both of
+% $\Celt^c=|\pcol at columncolor@box|\cdot c$ and $\cst=\!\pcol at colorins!$ are
+% $\bot$, $\csts$ is let be $\bot$.  Otherwise, $\csts$ is let be a \!\vbox!
+% having a \!\vbox! for $\Celt^c$ at the top if it is not $\bot$ and then the
+% contents of $\cst$ if it is not $\bot$.
 % 
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
+% 
 %    \begin{macrocode}
-\def\pcol at savecolorstack{{\let\@elt\relax
-  \xdef\pcol at colorstack@saved{\pcol at colorstack@full}}}
+\def\pcol at savecolorstack{%
+  \ifvoid\pcol at colorins \@tempswafalse \else \@tempswatrue \fi
+  \ifvoid\pcol at ccuse{@box}%
+    \setbox\@tempboxa\box\voidb at x
+  \else
+    \setbox\@tempboxa\vbox{\unvcopy\pcol at ccuse{@box}}%
+    \ht\@tempboxa1sp \dp\@tempboxa\z@ \wd\@tempboxa\z@
+    \@tempswatrue
+  \fi
+  \if at tempswa
+    \global\setbox\pcol at colorstack@saved\vbox{%
+      \ifvoid\@tempboxa\else \box\@tempboxa \fi
+      \ifvoid\pcol at colorins\else \unvcopy\pcol at colorins \fi}
+  \else \global\setbox\pcol at colorstack@saved\box\voidb at x
+  \fi}
+
 %    \end{macrocode}
 % \end{macro}
 % 
-% \begin{macro}{\pcol at colorstack@full}
 % \changes{v1.2-1}{2013/05/11}
-% 	{Introduced to represent $\string\mathit{\Gamma}^c$.}
+% 	{\cs{pcol at colorstack@full} was introduced to represent
+%	 $\string\mathit{\Gamma}^c$ but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at colorstack@full} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % 
-% The macro \!\pcol at colorstack@full!, used in \!\pcol at clearcolorstack!,
-% \!\pcol at restorecolor~stack! and \!\pcol at savecolorstack!, to represent the
-% color stack $\CST^c$ of the column $c$'s own, i.e., $(\Celt^c,\cst)$.
-% Therefore, the macro has the concatenation
-% $\Celt^c=|\pcol at columncolor|{\cdot}c$
+% \KeepSpace{3}
+% \begin{macro}{\pcol at ccuse}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to implement new text coloring with \cs{insert}.}
+% \begin{macro}{\pcol at ifccdefined}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to implement new text coloring with \cs{insert}.}
+% \begin{macro}{\pcol at ccxdef}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to implement new text coloring with \cs{insert}.}
 % 
+% The macro $\!\pcol at ccuse!\arg{pfx}$ is to expand a macro
+% $|\pcol at columncolor|\cdot\arg{pfx}\cdot c$ for the current column $c$.  It
+% is used in \!\pcol at output@start! and \!\pcol at scancst@shadow! with
+% $\arg{pfx}=\hbox{`'}$ to have $\Celtshadow^c$, and in \!\pcol at scancst!,
+% \!\pcol at iscancst!, \!\pcol at savecolorstack!, \!\pcol at output@end! and
+% \!\pcol at icolumncolor! with $\arg{pfx}=|@box|$ to have $\Celt^c$.
+% 
 % \SpecialArrayIndex{c}{\pcol at columncolor}
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
+% 
+% The macro $\!\pcol at ifccdefined!\arg{then}\arg{else}$ is used in
+% \!\pcol at output@start! and \!\pcol at scancst@shadow! to examine whether
+% $\Celtshadow^c=|\pcol at columncolor|\cdot c$ is defined and to do
+% $\arg{then}$ if so or $\arg{else}$ otherwise.
 % 
-% and $\cst=\!\pcol at colorstack!$, but we have to take care of the case
-% that $\Celt^c$ is undefined not to leaving the control sequece
-% $|\pcol at columncolor|{\cdot}c$ but to have nothing, especially for the
-% invocation from \!\pcol at savecolorstack!.
+% \SpecialArrayIndex{c}{\pcol at columncolor}
+% 
+% The macro $\!\pcol at ccxdef!\arg{body}$ \!\xdef!ines a macro
+% $\Celt^c=|\pcol at columncolor@box|\cdot c$ as $\arg{body}$ for the current
+% column $c$.  It is used in \!\pcol at output@start!, \!\pcol at iscancst! and
+% \!\pcol at icolumncolor!  with $\arg{body}=\!\@currbox!$ when an \!\insert!
+% for $\Celt^c$ is acquired, and in \!\pcol at output@end! with
+% $\arg{body}=\!\voidb at x!$ after releasing $\Celt^c$ to \!\@freelist!.
 % 
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
+% 
 %    \begin{macrocode}
-\def\pcol at colorstack@full{%
+\def\pcol at ccuse#1{\@nameuse{pcol at columncolor#1\number\pcol at currcol}}
+\def\pcol at ifccdefined#1#2{%
   \expandafter\ifx\csname pcol at columncolor\number\pcol at currcol\endcsname\relax
-    \@empty
-  \else \@nameuse{pcol at columncolor\number\pcol at currcol}\fi
-  \pcol at colorstack}
+  #2\else#1\fi}
+\def\pcol at ccxdef#1{%
+  \expandafter\xdef
+    \csname pcol at columncolor@box\number\pcol at currcol\endcsname{#1}}
 
 %    \end{macrocode}
-% \end{macro}
+% \end{macro}\end{macro}\end{macro}
 % 
 % 

 % 
@@ -11677,6 +12140,9 @@
 % \begin{macro}{\pcol at getmpbelt}
 % \changes{v1.3-4}{2013/09/17}
 %	{Introduced to find the space where a marginal note is placed.}
+% \changes{v1.33-1}{2016/11/19}
+% 	{Fix the bug by which $t_k$ such that $t_k\geq t$ and $t_k-t\geq h$
+%	 but $t_k-b_{k-1}<h$ is found.}
 % 
 % The macro $\!\pcol at getmparbottom!\<t\>\<h\>$ is solely used in
 % \!\pcol at addmarginpar!\footnote{
@@ -11748,6 +12214,7 @@
 \def\pcol at getmpbelt#1#2{%
   \ifdim#1sp<\@tempdima
     \global\@mparbottom#2sp\relax \@cons\pcol at mpblist{{#1}{#2}}%
+    \ifdim\@tempdima<#2sp\relax \@tempdima#2sp\relax \fi
   \else
     \@tempdimc\@tempdima \advance\@tempdimc\@tempdimb
     \ifdim#1sp<\@tempdimc
@@ -11935,7 +12402,7 @@
 % \!\pcol at output@end! with $y$ being that of \spanning{} in the \lpage, and
 % in $\!\pcol at getmparbottom@last!\Arg{y}$ with its argument $y$.  The macro
 % modifies $\mpar(t,b)$ in all $M\in\Set{\mpb_X^x}{X\in\{L,R\},x\in\{l,r\}}$
-% of $\mpbout$ so that they have $\mpar(t+y,b+y)$ for the transformation
+% of $\mpbout$ so that they have $\mpar(t{+}y,b{+}y)$ for the transformation
 % from text area coordinates to columns in the first and third, while for
 % the reverse transformation in the second, by invoking \!\pcol at do@mpb at all!
 % giving it $\mpbout$ and letting \!\reserved at a! have
@@ -11942,8 +12409,8 @@
 % $\!\pcol at bias@mpbout at i!\Arg{y}$.  That is,
 % $\!\pcol at bias@mpbout at i!\Arg{y}\!\@elt!\Arg{t}\Arg{b}\!\@nil!$ is then
 % invoked in \!\pcol at do@mpb at all@ii! with $t$ and $b$ from $\mpar(t,b)$ in
-% each $M$, and then it \!\def!ines \!\reserved at b! with $\mpar(t+y,b+y)$ so
-% that updated $M$ has it.
+% each $M$, and then it \!\def!ines \!\reserved at b! with $\mpar(t{+}y,b{+}y)$
+% so that updated $M$ has it.
 % 
 %    \begin{macrocode}
 \def\pcol at bias@mpbout#1{\def\reserved at a{\pcol at bias@mpbout at i{#1}}%
@@ -11980,13 +12447,13 @@
 % then adding $y$ to each $t=b=0$ by \!\pcol at bias@mpbout! giving it $y$.
 % Otherwise, i.e., if $\pp^m(\ptop)\neq\emptyset$, it invokes
 % \!\pcol at do@mpb at all! giving it $\pp^m(\ptop)$ and letting \!\reserved at a!
-% have $\!\pcol at getmparbottom@i!\Arg{y}$.  That is,
-% $\!\pcol at getmparbottom@i!\Arg{y}\~\mpar(t_1,b_1)\cdots\mpar(t_n,b_n)\!\@nil!$
-% is then invoked in \!\pcol at do@mpb at all@ii! for each $\mpb_X^x$ to let
-% \!\reserved at b! have $\mpar(y,y)$ at first and then to let it have
-% $\mpar(t_i,b_i)$ for all $i\in[1,n]$.  Therefore, \!\reserved at b! should
-% finally have $\mpar(t_n,b_n)$ assuming $t_0=b_0=y$, and then becomes
-% $m_X^x$.
+% have $\!\pcol at getmparbottom@last at i!\Arg{y}$.  That is,
+% $\!\pcol at getmparbottom@last at i!\Arg{y}\~\mpar(t_1,b_1)\cdots
+% \mpar(t_n,b_n)\!\@nil!$ is then invoked in \!\pcol at do@mpb at all@ii! for each
+% $\mpb_X^x$ to let \!\reserved at b! have $\mpar(y,y)$ at first and then to
+% let it have $\mpar(t_i,b_i)$ for all $i\in[1,n]$.  Therefore,
+% \!\reserved at b! should finally have $\mpar(t_n,b_n)$ assuming $t_0=b_0=y$,
+% and then becomes $m_X^x$.
 % \end{macro}\endgroup
 % 
 %    \begin{macrocode}
@@ -12581,6 +13048,9 @@
 % 	{Replace the sequence of operations to make a usual float column
 %	 with \cs{@toplist} with the newly introduced
 %	 \cs{pcol at makefcolpage}.}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Remove a space after the \cs{vbox} to be assigned to \cs{@currbox}
+%	 to obey the coding convention.}
 % 
 % The macro \!\pcol at makefcolumn! is invoked solely from \!\pcol at flushcolumn!
 % to put deferred floats in the currently empty \colpage{} of $c$ in the
@@ -12613,6 +13083,9 @@
 % It can happen if the first float is larger than $\pp^h(\ptop)$.},
 % 
 % we examine if $\ptop$ is the \lpage{} ($|\ifpcol@|\~|lastpage|=\true$)
+% 
+% \SpecialIndex{\ifpcol at lastpage}
+% 
 % and $\cc_c(\dl)$ is empty to mean the last \colpage{} have all deferred
 % floats.  This case is subtle because if we make the \colpage{} a \fcolumn{}
 % it can be sparse and unnecessarily throw the \postenv{} to the next
@@ -12665,7 +13138,7 @@
     \ifpcol at lastpage \ifx\@deferlist\@empty \ifdim\@colroom<\@fpmin
       \@tempswafalse \global\@toproom\maxdimen
     \fi\fi\fi
-    \if at tempswa \global\setbox\@currbox\vbox{\pcol at makefcolpage} \fi
+    \if at tempswa \global\setbox\@currbox\vbox{\pcol at makefcolpage}\fi
   \fi}
 %    \end{macrocode}
 % \end{macro}
@@ -12702,6 +13175,9 @@
 %	 performed in three macros.}
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add {\tt\%} to the end of the line to open \cs{vbox} to obey the
+%	 coding convention.} 
 % 
 % The macro \!\pcol at makefcolpage! is invoked from \!\pcol at flushcolumn!,
 % \!\pcol at makefcolumn! and \!\pcol at imakeflushedpage! to build a \fcolumn{}
@@ -12713,7 +13189,7 @@
 % encapsulation in the case of \!\pcol at makefcolumn!.
 % 
 %    \begin{macrocode}
-\def\pcol at makefcolpage{\vbox to\@colht{
+\def\pcol at makefcolpage{\vbox to\@colht{%
     \vskip\@fptop \vskip-\@fpsep
     \def\@elt##1{\vskip\@fpsep\box##1}\@toplist \vskip\@fpbot}%
   \pcol at Fb
@@ -12737,7 +13213,7 @@
 % \cctext{} in $\cc_c$ by \!\pcol at getcurrcol!, we calculate
 % $\size_c(t)=\!\skip!{\cdot}\cc_c(\vb)$ by \!\pcol at addflhd! giving it
 % $\cc_c(\tl)$ and $\cc_c(\tf)=\!\pcol at textfloatsep!$ as its arguments also
-% to have $\CSIndex{if at tempswa}=\fc(t)$.  Note that $\cc_c(\tf)=\infty$ means
+% to have $\CSIndex{if at tempswa}={\fc(t)}$.  Note that $\cc_c(\tf)=\infty$ means
 % the \colpage{} does not have any \sync{}ation points yet and thus
 % \!\textfloatsep! is used in the calculation as the skip between the top
 % floats and main vertical list, while the value itself possibly for a
@@ -13059,6 +13535,9 @@
 % 
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add {\tt\%} to the end of the line to open \cs{vbox} for
+%	 \cs{pcol at float} to obey the coding convention.} 
 % 
 %    \begin{macrocode}
   \else
@@ -13070,7 +13549,7 @@
           \textfloatsep\z@ \floatsep\z@ \let\topfigrule\relax
         \fi
         \pcol at Fb
-        \@next\pcol at float\@freelist{\global\setbox\pcol at float\vbox to\z@{
+        \@next\pcol at float\@freelist{\global\setbox\pcol at float\vbox to\z@{%
           \vskip-\floatsep \topfigrule \vskip\textfloatsep
           \unvbox\@currbox \vss}}\pcol at ovf
         \pcol at Fe{synccolumn(topfloat)}%
@@ -13149,17 +13628,22 @@
 % because it should be $\cc_c(\tf)\leq5000\,|pt|$ to mean the \colpage{}
 % does not have a \mvlfloat.
 % 
+% \changes{v1.33-2}{2016/11/19}
+% 	{Add {\tt\%} to the end of the line to open \cs{vbox} for
+%	 \cs{@currbox} and two lines for \cs{vbox}es in it to obey the
+%	 coding convention.} 
+% 
 %    \begin{macrocode}
     \else
       \global\pcol at prevdepth\@tempdimc
       \ifdim\pcol at textfloatsep=\maxdimen
         \global\pcol at textfloatsep\textfloatsep \fi
-      \global\setbox\@currbox\vbox{
+      \global\setbox\@currbox\vbox{%
         \ifdim\@tempdimb<\topskip
-          \vbox to\topskip{\unvbox\@currbox \vskip\z@\@plus.0001fil}
+          \vbox to\topskip{\unvbox\@currbox \vskip\z@\@plus.0001fil}%
           \vskip-\topskip \vskip\@tempdimb
         \else
-          \vbox to\@tempdimb{\unvbox\@currbox \vskip\z@\@plus.0001fil}
+          \vbox to\@tempdimb{\unvbox\@currbox \vskip\z@\@plus.0001fil}%
         \fi}%
     \fi
   \fi
@@ -13266,7 +13750,7 @@
 % \!\@dblfloatplacement! to set up placement parameters followed by
 % $\!\f at depth!=0$ to nullify the setting $\!\f at depth!=|1sp|$ possiblly done
 % by it as discussed in the item-(\ref{item:ovv-float- at dblfloatplacement})
-% of Section \ref{sec:imp-ovv-float}; \!\@makefcolumn!  with
+% of \secref{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 at rightpage!, and \!\@outputpage! followed by \!\@makefcolumn!
@@ -13339,7 +13823,9 @@
 % invoke \!\pcol at output@switch! with setting $\CSIndex{ifpcol at clear}=\true$
 % to flush all pages up to $\ptop-1$ and to let $\cc_c(\vb^b)$ have the
 % ship-out image of the main vertical list of each \colpage{} $c$ in
-% $\ptop$.  Then after obtaining $\ptop$'s \pctext{} to have
+% $\ptop$.  This invocatoin also lets $\!\pcol at colht!=\VPP$ so that hereafter
+% we will refer $\VPP$ throuth $\arg{ht}$ if it is $\!\pcol at colht!$ for
+% \lpage.  Then after obtaining $\ptop$'s \pctext{} to have
 % $\page(\ptop)=\pp^p(\ptop)$, $\!\@colht!=\pp^h(\ptop)$ and
 % \CSIndex{ifpcol at nospan} by \!\pcol at getcurrpinfo!, we build the ship-out
 % image of $\ptop$ in \!\@outputbox!, and \!\pcol at rightpage! if
@@ -13380,7 +13866,7 @@
 % 
 % \!\pcol at rightpage! must have the couterpart in right \parapag{}e if the
 % \spanning{} is \preenv, while it is made $\bot$ by \!\pcol at output@end! if
-% \pwise{} floats.}.
+% the \spanning{} are \pwise{} floats.}.
 % 
 % Since \pwise{} floats become ordinary floats in \postenv, we cannot paint
 % its \bground{} and must remove \!\dbltextfloatsep! at the bottom of
@@ -13493,10 +13979,11 @@
 % ship-out image of columns if required fundamentally by
 % $\CSIndex{if at tempswa}=\true$.  First,
 % if the page $\ptop$ has \Scfnote{}s, we shrink
-% $\!\@colht!=\pp^h(\ptop)$ by \!\pcol at shrinkcolbyfn! to keep the room for
-% the footnotes, to have $H$ being the possibly shrunk $\pp^h(\ptop)$ whose
-% original value without shrinkage is saved in \!\@pageht! for the reference
-% in \!\pcol at imakeflushedpage!.  Second, if
+% $\!\@colht!={\pp^h}(\ptop)$ by \!\pcol at shrinkcolbyfn! to keep the room for
+% the footnotes, to have $H=\!\@pageht!$ being the possibly shrunk
+% $\pp^h(\ptop)$ for the reference
+% in \!\pcol at imakeflushedpage! after the further possible modification of
+% \!\@colht! we will make shortly.  Second, if
 % $\CSIndex{ifpcol at lastpage}=\true$ but $\CSIndex{ifpcol at dfloats}=\true$
 % too, we turn $\CSIndex{ifpcol at lastpage}=\false$ because we need a
 % full-sized \lpage{}, temporarily letting $\!\@textbottom!=\!\vfil!$ if
@@ -13636,7 +14123,7 @@
 % counterpart, by \!\pcol at bg@paintbox! \!\def!ining the parameter
 % \!\pcol at bg@footnoteheight!  with the height-plus-depth of $\pp^f(\ptop)$,
 % as the very first element of the ship-out image as done in
-% \!\pcol at ioutputelt!, if $\ptop$ is not the \lpage{} for which the
+% \!\pcol at ioutputelt!, unless $\ptop$ is the truely \lpage{} for which the
 % \bgpaint{} is done in \!\pcol at output@end!.  Then we put \spanning{} in $b$
 % itself if any.
 % 
@@ -13705,7 +14192,7 @@
 % preceded by \!\pcol@@hfil! being \!\relax! for the first column, while
 % it is $\!\pcol at hfil!\<c^g\>$, where $c^g=\!\pcol at colsepid!$ being $c$ or
 % $c-1$ without or with \cswap{} respectively, to put a \csepgap{} possibly
-% with \cseprule{} segments in \!\pcol at tempbox! built by
+% with \cseprule{} segments in \!\pcol at tempboxa! built by
 % \!\pcol at buildcolseprule!.  Finally, we save \cctext{} especially those
 % for float parameters into $\cc_c$ by \!\pcol at setcurrcolnf! because all
 % \Mcfnote{}s have been shipped out.
@@ -13810,7 +14297,7 @@
 % we temporarily add \!\c at page! by one for page parity examination for
 % \mirror{}ed \bgpaint.  Then, the macro \!\pcol at buildcolseprule! is invoked
 % with $\!\@colht!=\!\textheight!$ and $\LBRP\Cfrom\Cto$ for \cseprule{}
-% drawing in \!\pcol at tempbox! and \bgpaint{} for columns and \csepgap{}s in
+% drawing in \!\pcol at tempboxa! and \bgpaint{} for columns and \csepgap{}s in
 % \!\@tempboxa! put into $b$ immediately.
 % 
 % Then we open a \!\hbox! of \!\textwidth! wide and initialize
@@ -13893,7 +14380,7 @@
 % \!\pcol at getcurrpage! to have the \pctext{} of $p=0$, because it might be
 % modified by a column $c'<c$ by producing \fcolumn{}s.  After that and the
 % invocation of \!\pcol at floatplacement! for setting float parametners, we
-% invoke \!\pcol at startcolumn! for $c$'s \colpage{} at $p=0$, and interate
+% invoke \!\pcol at startcolumn! for $c$'s \colpage{} at $p=0$, and iterate
 % \!\pcol at opcol! and \!\pcol at startcolumn! while a \fcolumn{} is made by the
 % latter\footnote{
 % 
@@ -14010,7 +14497,7 @@
 % The first case is for $\CSIndex{ifpcol at dfloats}=\true$ to mean the
 % \lpage{} is followed by one or more pages having deferred \cwise{}
 % floats and thus \!\pcol at makeflushedpage! builds the ship-out image of the
-% \lpage in {\em full size} in \!\@outputbox! unless the page has nothing
+% \lpage{} in {\em full size} in \!\@outputbox! unless the page has nothing
 % perfectly.  Therefore, we ship the image out by \!\@outputbox! unless it
 % is $\bot$ for perfectly empty case.  Then we invoke \!\pcol at flushfloats!
 % to produce and ship out \fpage{}s, lettinng $\CSIndex{if at fcolmade}={\true}$
@@ -14126,7 +14613,7 @@
 % However before putting the box back to the main vertical list, we have to
 % take care of the \bgpaint{} as follows.  First we let
 % $\CSIndex{ifpcol at havelastpage}=\true$ to let \!\@outputpage! paint the
-% \bground{} of the \postenv{} if the page having the \lpage{} completes.
+% \bground{} of the \postenv{} when the page having the \lpage{} completes.
 % Second, we let \!\pcol at bg@preposttop at left! have the height-plus-depth of
 % the \!\@outputbox! having the short \lpage{} because the \bground{} of
 % \postenv{}, or of \preenv{} if we have another \env{paracol} environment
@@ -14142,7 +14629,7 @@
 % contiguous in the empty case.
 % 
 % Third and finally, we have to paint the \bground{} of non-merged
-% \Scfnote{}s because the paining is left by \!\pcol at makeflushedpage! for
+% \Scfnote{}s because the painting is left by \!\pcol at makeflushedpage! for
 % this macro.  Therefore, if $\!\pcol at fnheight@lpage!>0$ to mean we have
 % footnotes whose total height-plus-depth is in the macro, we paint their
 % \bground{} by \!\pcol at bg@paintbox! \!\def!ining \!\pcol at bg@footnoteheight!
@@ -14206,20 +14693,19 @@
   \ifvoid\pcol at topfnotes\else \insert\footins{\unvbox\pcol at topfnotes}\fi
 %    \end{macrocode}
 % 
-% The followings are for clean-up and set-up for the \postenv;
-% reestablish the \colorstack{} by \!\pcol at restorecolorstack! for
-% column-0\footnote{
+% The following operationss are for clean-up and set-up for the \postenv;
+% for all c, return $\cc_c(\vb)$ obtained by \!\pcol at getcurrcol! and
+% $\Celt^c\neq\bot$ letting it $\bot$ to \!\@freelist!; reestablish the
+% \colorstack{} by \!\pcol at restorecolorstack! for column-0\footnote{
 % 
 % It can be any other column.}
 % 
-% nullifying $\Celt^0$ so that the \colorstack{} is just $\cst$ and is
-% rewinded at \Endparacol; return all $\cc_c(\vb)$ obtained by
-% \!\pcol at getcurrcol! to \!\@freelist!;  reload $\cc_d$ for
-% $d=\!\pcol at lastcol!$ being the column in which \Endparacol{} occurs to
-% let $\!\everypar!=\cc_d(\ep)$ and to let \CSIndex{if at nobreak} and
-% \CSIndex{if at afterindent} have the value represented by $\cc_d(\sw)$, so
-% that the first paragraph of the \postenv{} is typeset following
-% them\footnote{
+% so that the \colorstack{} is just $\cst$ and is rewinded at \Endparacol,
+% and let $\cst=\bot$; reload $\cc_d$ for $d=\!\pcol at lastcol!$ being the
+% column in which \Endparacol{} occurs to let $\!\everypar!=\cc_d(\ep)$ and
+% to let \CSIndex{if at nobreak} and \CSIndex{if at afterindent} have the value
+% represented by $\cc_d(\sw)$, so that the first paragraph of the \postenv{}
+% is typeset following them\footnote{
 % 
 % For rare cases that the last item of the closing environment is a
 % sectioning command, but a user has such very unusual usage.};
@@ -14251,15 +14737,25 @@
 %	 \cs{everypar} of the column to post-environment stuff.}
 % \changes{v1.32-2}{2015/10/10}
 % 	{Add \cs{pcol at Fb}/\cs{pcol at Fe} pair(s).}
+% \changes{v1.34}{2018/05/07}
+%	{Remove nullification of $\gamma_0^0$ because it is not meaningless
+%	 now, add release of $\gamma_0^c\NEQ\bot$ and then nullification of
+%	 it for all $c$, move color stack reestablishment down to the loop
+%	 with $c$ to ensure $\gamma_0^0\EQ\bot$, and add nullification of
+%	 $\mathit{\Gamma}$.}
 % 
 %    \begin{macrocode}
-  \expandafter\let\csname pcol at columncolor\number\z@\endcsname\relax
-  \pcol at currcol\z@ \pcol at restorecolorstack
-  \@whilenum\pcol at currcol<\pcol at ncol\do{%
+  \pcol at currcol\z@ \@whilenum\pcol at currcol<\pcol at ncol\do{%
     \pcol at Fb
     \pcol at getcurrcol \@cons\@freelist\@currbox
+    \ifvoid\pcol at ccuse{@box}\else
+      \@cons\@freelist{\pcol at ccuse{@box}}%
+      \pcol at ccxdef{\voidb at x}%
+    \fi
     \pcol at Fe{output at end(col)}%
    \advance\pcol at currcol\@ne}%
+  \pcol at currcol\z@ \pcol at restorecolorstack
+  \global\setbox\pcol at colorins\box\voidb at x
   \pcol at currcol\pcol at lastcol\relax \pcol at getcurrcol
   \global\pcol at prevdepth\@pagedp
   \global\@colht\textheight
@@ -14569,7 +15065,7 @@
 % not the last so far; and $\!\pcol at firstprevdepth!=\!\prevdepth!$ in
 % decimal integer form for the extreme empty case.
 % 
-% We also make the macro \Midx{\!\@combinefloats!} \!\let!-equal to our own
+% We also make the macro \!\@combinefloats! \!\let!-equal to our own
 % \!\pcol at combinefloats!  throughout the environment, after saving its
 % original definition into \Midx{\!\pcol@@combinefloats!} for processing
 % \!\output! request sneaked from outsied of environment, so that our
@@ -14580,7 +15076,7 @@
 % implementaion of our own.  On the other hand, \!\end at dblfloat! is simply
 % replaced with our own \!\pcol at end@dblfloat! being what \LaTeX{} had had until
 % 2014 as discussed in item-(\ref{item:ovv-float-end at dblfloat}) of
-% Section~\ref{sec:imp-ovv-float}.
+% \secref{sec:imp-ovv-float}.
 % 
 % \changes{v1.1}{2012/05/11}
 % 	{Replace the calculation of \cs{columnwidth} with the call of
@@ -14666,12 +15162,11 @@
 % macros \!\pcol at bg@paintpage!, \!\pcol at bg@paintbox! and
 % \!\pcol at bg@paintcolumns! activated by making them \!\let!-equal to thier
 % |@@| counterparts namely \!\pcol at bg@@paintpage!, \!\pcol at bg@@paintbox! and
-% \!\pcol at bg@paintcolumns! which implement \bgpaint{}.
+% \!\pcol at bg@@paintcolumns! which implement \bgpaint{}.
 % 
-% Finally we empty \colorstack{}s $\cst=\!\pcol at colorstack!$ and
-% $\cstshadow={}$\!\pcol at colorstack@shadow! and the pushing list
-% $\cstb=\!\pcol at colorstack@buf!$ to give them initial states regardless of
-% the availability of coloring package.
+% Finally we empty the shadow \colorstack{}
+% $\cstshadow={}$\!\pcol at colorstack@shadow!  to give it initial value
+% regardless of the availability of coloring package.
 % 
 % \changes{v1.2-1}{2013/05/11}
 % 	{Add redefinitions of \cs{set at color} and \cs{reset at color}.}
@@ -14686,6 +15181,9 @@
 % \changes{v1.3-3}{2013/09/17}
 %	{Add definition of painting macros dependent to the availability of
 %	 a coloring package.}
+% \changes{v1.34}{2018/05/07}
+%	{Remove the initializations of \cs{pcol at colorstack} and
+%	 \cs{pcol at colorstack@buf} because they no longer exist.}
 % 
 %    \begin{macrocode}
   \global\let\pcol at set@color\set at color
@@ -14704,8 +15202,7 @@
     \let\pcol at bg@paintbox\pcol at bg@@paintbox
     \let\pcol at bg@paintcolumns\pcol at bg@@paintcolumns
   \fi
-  \gdef\pcol at colorstack{}%
-  \gdef\pcol at colorstack@buf{}\gdef\pcol at colorstack@shadow{}%
+  \gdef\pcol at colorstack@shadow{}%
 %    \end{macrocode}
 % 
 % \changes{v1.2-2}{2013/05/11}
@@ -14865,7 +15362,7 @@
 %	{Introduced for nullificaton of API macros of footnote typesetting
 %	 definition.}
 % 
-% The macro \!\pcol at localcommands!$\arg{macro}$ is to complain that the
+% The macro \!\pcol at ignore!$\arg{macro}$ is to complain that the
 % $\arg{macro}$ being one of the followings appears in \env{paracol}
 % environment.
 % 
@@ -14883,7 +15380,7 @@
 % \!\pcol at zparacol! to invoke this macro with the argument identifying
 % themselves, which is shown in the warning message given by
 % \!\PackageWarning!.  As for \!\twosided!, the target of the
-% re\!|def!inition is \!\pcol at twosided! so that its optional argument is
+% re\!\def!inition is \!\pcol at twosided! so that its optional argument is
 % captured before the complaint.
 % 
 %    \begin{macrocode}
@@ -14961,7 +15458,7 @@
 % \begin{macro}{\pcol at 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{}
+% As discussed in \secref{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
@@ -14970,7 +15467,7 @@
 % with a new definition in the new \LaTeX{} of course, and thus we define
 % \!\pcol at 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 at dblfloat}) of Section~\ref{sec:imp-ovv-float}.
+% item-(\ref{item:ovv-float-end at dblfloat}) of \secref{sec:imp-ovv-float}.
 % 
 %    \begin{macrocode}
 \gdef\@dbldeferlist{}
@@ -15023,7 +15520,7 @@
 % \Arg{r^l_0,r^l_1,\cdots,r^l_{k^l-1}}|[|r^r_0,r^r_1,\cdots,r^r_{k^r-1}|]|$
 % defines the column width fraction $r^l_c$ for column $c$ in left
 % \parapag{}es and optionally $r^r_c$ for those in right \parapag{}es.  This
-% macro and its callee \!\pcol at icolumnratio! just |\global|y |\def|ine
+% macro and its callee \!\pcol at icolumnratio! just \!\global!y \!\def!ine
 % macros \!\pcol at columnratioleft! and \!\pcol at columnratioright!  whose
 % bodies have the first and second arguments respectively, or commonly have
 % the first if the second optional one is not given, so that they are given
@@ -15076,7 +15573,7 @@
 % and gap specifier $\w_c$ and $\gap_c$.  After \!\let!ting
 % $\!\pcol at columnratioleft!=\!\relax!$ to disable the setting by
 % \!\columnratio! and to enable that done by this macro, the macro and its
-% callee \!\pcol at isetcolumnwidth! just |\global|y |\def|ine macros
+% callee \!\pcol at isetcolumnwidth! just \!\global!y \!\def!ine macros
 % \!\pcol at colwidthspecleft! and \!\pcol at colwidthspecright!  whose bodies have
 % the first and second arguments respectively, or commonly have the first if
 % the second optional one is not given, so that they are given to
@@ -15141,7 +15638,7 @@
 %	 and $\langle\string\mathit{spec}\rangle$ for columns in right
 %	 parallel-pages.}
 % \changes{v1.3-3}{2013/09/17}
-%	{Add setting of $g_c=\cs{pcol at columnsep}{\cdot}c=\cs{columnsep}.}
+%	{Add setting of $g_c\EQ\cs{pcol at columnsep}{\cdot}c=\cs{columnsep}.}
 % 
 % \begin{Hfuzz}{0.3pt}%
 % The macro $\!\pcol at setcolwidth@r!\<\Cfrom\>\<\Cto\>\arg{ratio}\arg{spec}$
@@ -15321,7 +15818,7 @@
 % 
 % In the \textit{body} above, we invoke
 % $\!\pcol at setcw@getspec!\;s_i|//|\!\@nil!$ to parse $s_i$ to have $w^n_i$,
-% $w^f_i$ to be processed by \!\pcol at setcw@s! and $g^n_i$ and $g^f_i$ by
+% $w^f_i$ to be processed by \!\pcol at setcw@c! and $g^n_i$ and $g^f_i$ by
 % \!\pcol at setcw@s!, for all $i\In0m$.
 % 
 %    \begin{macrocode}
@@ -15393,7 +15890,7 @@
 % 
 % Because the first assignment is done in a group.}.
 % 
-% Otherwise, we invoke $\!\pcol at setcw@fill!\;x'_d\!\@nil!$ to let
+% Otherwise, we invoke $\!\pcol at setcw@fill!\;x'_d$ to let
 % \!\@tempskipa! have $0\,|pt|\ |plus|\ f\,|fil|$ where $f$ is replaced by 1
 % if $f=\emptyset$.
 % 
@@ -15503,7 +16000,7 @@
 % $\phi_f=\!\dimen at ii!$ as follows
 % $$
 % (\phi_s,\phi_f)=\cases{(\WT/\W,\;0)& $W\geq\WT\;\lor\;F\leq0$\cr
-%                        (1,\;(\WT-W)/F)&$W<WT\;\land\;F>0$}
+%                        (1,\;(\WT-W)/F)&$W<\WT\;\land\;F>0$}
 % $$
 % where $W=\!\dimen@!$, $F\times1\,|pt|=\!\dimen at ii!$ and $\WT=\!\textwidth!$,
 % and $\phi_s=1$ is represented by empty body of \!\pcol at setcw@scale!.
@@ -15621,7 +16118,7 @@
 % body respectively but with $\!\catcode!=12$ (other) which is used in
 % \!\the!-representation of glues.  For the definition, we invoke
 % \!\pcol at defkw! giving it \!\the!-representation of \!\@tempskipa! letting
-% it have $1\,|pt|\ |plus|\ 1\,|fil|\ |minus|1\,|fil|$ having all keywards
+% it have $1\,|pt|\ |plus|\ 1\,|fil|\ |minus|\ 1\,|fil|$ having all keywards
 % we need to have\footnote{
 % 
 % We can do what \!\pcol at defkw! does by temporarily giving $\!\catcode!=12$
@@ -15708,8 +16205,8 @@
 % 
 % \begin{quote}
 % \let\@sverb\latex at sverb
-% \verb*|\def\pcol at extract@fil at iii#1fil#2 at nil{%|\\
-% |    \@tempdimb\pcol at setcw@filunit\relax \@tempdimb#2\@tempdimb}|
+% \verb*|\def\pcol at extract@fil at iii#1fil#2\@nil{%|\\
+% |    \@tempdimb\pcol at setcw@filunit\relax \@tempdimb#1\@tempdimb}|
 % \end{quote}
 % 
 % just once at the top level too.
@@ -16073,12 +16570,13 @@
 %	{Introduced for the implementation of the new API command
 %	 \cs{synccounter}.} 
 % 
-% The macro $\!\pcol at com@synccounter!\<\theta\>$, the implementation of the
-% \elocal{} API macro \!\synccounter!, lets $\val_c(\theta)=\Val(\theta)$
-% for all $c\In0\C$.  That is, the value of the counter $\theta$ is {\em
-% broadcasted} to all columns for the {\em\Uidx\csync} of $\theta$.  This
-% broadcast is done by \!\pcol at synccounter! with an argument
-% $\!\@elt!|{|\theta|}|$ so that it works only on $\theta$.
+% The macro $\!\pcol at com@synccounter!\<\theta\>$, being the implementation
+% of the \elocal{} API macro \!\synccounter!, lets
+% $\val_c(\theta)=\Val(\theta)$ for all $c\In0\C$.  That is, the value of
+% the counter $\theta$ is {\em broadcasted} to all columns for the
+% {\em\Uidx\csync} of $\theta$.  This broadcast is done by
+% \!\pcol at synccounter! with an argument $\!\@elt!|{|\theta|}|$ so that it
+% works only on $\theta$.
 % 
 %    \begin{macrocode}
 \def\pcol at com@synccounter#1{\pcol at synccounter{\@elt{#1}}}
@@ -16132,10 +16630,10 @@
 %	{Introduced for the implementation of the new API command
 %	 \cs{syncallcounters}.} 
 % 
-% The macro \!\pcol at com@syncallcounters!, the implementation of the
-% \elocal{} API macro \!\syncallcounters! makes all \lcounter{}s in all
+% The macro \!\pcol at com@syncallcounters!, being the implementation of the
+% \elocal{} API macro \!\syncallcounters!, makes all \lcounter{}s in all
 % columns have the value in the current column.  That is, for each
-% $c\In0\C$, we invoke \!\pcol at savecounters! to let $\val_c(\cl)=\Val(\cl)$
+% $c\In0\C$, we invoke \!\pcol at savecounters! to let $\val_c(\cl)={\Val}(\cl)$
 % for all $\cl\in\CTL$.
 % 
 %    \begin{macrocode}
@@ -16277,7 +16775,7 @@
 %	{Add a space before the number of columns in the error message.}
 % 
 % \begin{macro}{\pcol at iswitchcolumn}
-% The macro $\!\pcol at com@switchcolumn!|[|d|]|$, the implementation of the
+% The macro $\!\pcol at com@switchcolumn!|[|d|]|$, being the implementation of the
 % \elocal{} API macro \!\switchcolumn!, switches to the column $d$ if provided
 % through its optional argument, or to $d=(c+1)\bmod\C$ otherwise where $c$
 % is the ordinal of the current column.  After making it sure to be in
@@ -17666,7 +18164,7 @@
 % or the margins are swapped otherwise.
 % 
 % The macro \!\def!ines \!\pcol at mpthreshold@l! to let it have $t_l$ after a
-% assigning $t_l$ to \!\@tempcnta! to ensure $t_l$ gives sum number, and
+% assigning $t_l$ to \!\@tempcnta! to ensure $t_l$ gives some number, and
 % then do the same for \!\pcol at mpthreshold@r! with $t_r$ by
 % \!\pcol at marginparthreshold! if $t_r$ is provided, or let the marco have
 % $t_l$ otherwise.  Note that at the top level we do
@@ -17760,6 +18258,12 @@
 % \end{macro}
 % 
 % \KeepSpace{1}
+% \changes{v1.22}{2013/06/30}
+%	{\cs{pcol at getshadowcc} was introduced for setting $\hat\gamma_0^c$
+%	 into $\gamma_0^c$ locally, but removed in v1.34.} 
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at getshadowcc} is removed according to the change of text
+%	 coloring from \cs{output} to \cs{insert}.}
 % \begin{macro}{\pcol at icolumncolor}
 % \changes{v1.2-1}{2013/05/11}
 % 	{Introduced to implement \cs{columncolor} and
@@ -17774,13 +18278,25 @@
 %	 justified.}
 % \changes{v1.24}{2013/07/27}
 %	{Add math mode to the cases of ineffective use.}
+% \changes{v1.34}{2018/05/07}
+%	{Remove the invocations of \cs{pcol at iicolumncolor} for
+%	 $\cs{pcol at columncolor@shadow}\cdot c$ because it no longer exists,
+%	 completly change the opearations in the case the target column $c$
+%	 is the current one according to the new method with \cs{insert},
+%	 and add immediate setting of $\gamma_0^c$ in the case $c$ is not
+%	 current.}
 % \begin{macro}{\pcol at iicolumncolor}
 % \changes{v1.22}{2013/06/30}
 %	{Introduced for setting $\gamma_0^c$ and $\hat\gamma_0^c$, and
 %	 pushing $\chi$.}
-% \begin{macro}{\pcol at getshadowcc}
-% \changes{v1.22}{2013/06/30}
-%	{Introduced for setting $\hat\gamma_0^c$ into $\gamma_0^c$ locally.}
+% \changes{v1.34}{2018/05/07}
+%	{Remove the third argument, change the second argument from a
+%	 control sequence name to the target column, add a grouping to
+%	 surround the entire body of the macro, and change the body of
+%	 $\gamma_0^c$ so that it only has the color information.}
+% \begin{macro}{\pcol at scancst@shadow}
+% \changes{v1.34}{2018/05/07}
+%	{Introduced to rewind or establish the color stack $\hat\Gamma^c$.}
 % 
 % The macro \!\pcol at icolumncolor!\marg{cmd}\oarg{c}, invoked from
 % \!\pcol at columncolor! and \!\normal~columncolor!, performs the operations to
@@ -17789,54 +18305,57 @@
 % as follows.  First we examine if \!\set at color! is not \!\relax! and we are
 % in non-internal vertical or non-restricted horizontal mode and, if not, we
 % complain the command whose name is in \!\pcol at colorcommand! is ineffective
-% by \!\PackageWarning! and do nothing.  Otherwise and if we are not in a
-% \env{paracol} environment, i.e., \!\pcol at zparacol! is not \!\let!-equal to
-% \!\pcol at paracol!, or if we are in a column $c'\neq c$, we simply invoke
-% \!\pcol at iicolumncolor! to let both $\Celt^c$ and $\Celtshadow^c$ have the
-% color $\gamma$ specified by $\arg{cmd}$, because $\Celt^c$ will not be
-% referred to by \!\output! routine until a \env{paracol} environment starts
-% or \cswitch{} to $c$ is performed.
+% by \!\PackageWarning! and do nothing.
 % 
-% Otherwise, i.e., if we are in a \env{paracol} environment and in the
-% column $c$, we temporarily let $\cst=\cstshadow$ and
-% $\Celt^c=\Celtshadow^c$, the latter is done by \!\pcol at getshadowcc! by a
-% lengthy sequence for
-% $\!\let!|\pcol at columncolor|{\cdot}c=|\pcol at columncolor@shadow|{\cdot}c$.
+% Otherwise and if we are not in a \env{paracol} environment, i.e.,
+% \!\paracol! is not \!\let!-equal to \!\pcol at paracol!, we simply invoke
+% \!\pcol at iicolumncolor! to let $\Celtshadow^c=|\pcol at columncolor|\cdot c$
+% have the color $\chi$ specified by $\arg{cmd}$ so that the next
+% \beginparacol{} will let $\Celt^c$ have the coloring \!\special!  for
+% $\chi$.  If we are in a \env{paracol} environment but in a column $c'\neq
+% c$, on the other hand, we also let $\Celtshadow=\chi$ but in addition let
+% $\Celt^c=|\pcol at columncolor@box|\cdot c$ have the coloring \!\special! for
+% $\chi$ immediately so that it is effective in the next \cswitch{} to $c$.
+% This immediate setting of $\Celt^c$ is done by invoking $\arg{cmd}$ with
+% the original \!\set at color!  saved in \!\pcol at set@color! and the
+% nullification of \!\aftergroup!, after acquiring an \!\insert! for it if
+% necessary,
 % 
 % \SpecialArrayIndex{c}{\pcol at columncolor}
-% \SpecialArrayIndex{c}{\pcol at columncolor@shadow}
-% 
-% Then we invoke \!\pcol at clearcolorstack! and \!\pcol at restorecolorstack!
-% before and after the operations to define the default color, so that
-% $\Celt^c$ is placed at the bottom of the \colorstack{} of |.dvi|.
+% \SpecialArrayIndex{c}{\pcol at columncolor@box}
 % 
-% The default color definition is done by adding the color $\gamma$ to the
-% tail of $\cstb$ by \!\pcol at iicolumncolor!, and by letting
-% $\Celtshadow^c=\gamma$ also by \!\pcol at iicolumncolor!, before making the
-% \!\output! request \!\pcol at op@cset! for \!\pcol at output@cset! by
-% \!\pcol at color@invokeoutput! whose second argument is \!\relax! to mean
-% nothing is inserted after \!\vadjust! when we are in horizontal mode.
-% Note that the \!\output! request is made outside a group in which we
-% rewind and reestablish the \colorstack{} with $\Celtshadow^c$ and
-% $\cstshadow$ because the temporary setting $\Celt^c=\Celtshadow^c=\gamma$
-% is harmful if it is seen by \!\output!  routine for page breaking which
-% can be invoked at the timing of the request of \!\pcol at op@cset! but just
-% prior to the acceptance of it.
+% Otherwise, i.e., if we are in a \env{paracol} environment and in the
+% column $c$, at first we invoke \!\pcol at scancst@shadow! to rewind
+% $\CSTshadow^c$ applying $\!\@elt!=\!\reset at color!$ to
+% $\celtshadow_i\in\CSTshadow^c$.  Then, after letting $\Celtshadow^c=\chi$,
+% we invoke \!\pcol at scancst@shadow! again to reestablish $\CSTshadow^c$ with
+% the new $\Celtshadow^c$ so that $\Celtshadow^c$ is at the bottom of the
+% \colorstack{} in |.tex|.  In this scan $\!\@elt!\arg{\celtshadow_i}$
+% \!\def!ines \!\current at color! to let it have $\celtshadow_i$ and then
+% invokes \!\pcol at set@color! to put the coloring \!\special! for
+% $\celtshadow_i$ nullifying \!\aftergroup!.  Then we \!\insert! a \!\vbox!,
+% whose height and depth are 1\,|pt| and width is 0, having the coloring
+% \!\special! for $\chi$ so that \!\output! will let $\Celt^c$ have the
+% \!\special! in a synchronous manner.  After that we put a
+% $\!\penalty!=10000$ if $\CSIndex{if at nobreak}=\true$ to keep the
+% \!\insert!ion from being followed by a page break.
 % 
-% The macro $\!\pcol at iicolumncolor!\arg{cmd}\arg{dcs}\arg{scs}$ at first
+% The macro $\!\pcol at iicolumncolor!\arg{cmd}\arg{c}$ at first
 % invokes $\arg{cmd}$ to let \!\current at color! have the printer-specific color
-% information $\gamma$ of $\arg{color}$ or what \!\normalcolor!  specifies,
+% information $\chi$ of $\arg{color}$ or what \!\normalcolor! specifies,
 % temporarily letting \!\set at color! be \!\relax! to let \!\color! or
-% \!\normalcolor! just do the \!\def!inition of \!\current at color!  without
+% \!\normalcolor! just do the \!\def!inition of \!\current at color! without
 % putting coloring \!\special!s nor preparing \colorstack{} popping.  Then
-% we \!\xdef!ine $\arg{dcs}$ being $|\pcol at columncolor|{\cdot}c$,
-% $|\pcol at columncolor@shadwo|{\cdot}c$ or \!\pcol at colorstack@buf! to have
-% $\arg{scs}$ being empty or \!\pcol at colorstack@buf! followed by $\gamma$.
-% That is we let $\Celt^c=\gamma$ or $\Celtshadow^c=\gamma$, or add $\gamma$ at
-% the tail of $\cstb$.
+% we \!\xdef!ine $\Celtshadow^c=|\pcol at columncolor|{\cdot}c$ to have $\chi$.
 % 
 % \SpecialArrayIndex{c}{\pcol at columncolor}
-% \SpecialArrayIndex{c}{\pcol at columncolor@shadow}
+% 
+% \begingroup\hfuzz3.1pt
+% The macro \!\pcol at scancst@shadow! applies \!\@elt! to $\Celtshadow^c$ to
+% put a coloring or uncoloring \!\special! for it if it is defined, and then
+% do the same for all
+% $\celtshadow_i\in\cstshadow=\!\pcol at colorstack@shadow!$.
+% \par\endgroup
 % 
 %    \begin{macrocode}
 \def\pcol at icolumncolor#1[#2]{%
@@ -17854,35 +18373,48 @@
     \begingroup
     \let\@elt\relax
     \ifx\pcol at paracol\paracol
-      \pcol at iicolumncolor{#1}{pcol at columncolor#2}{}%
-      \pcol at iicolumncolor{#1}{pcol at columncolor@shadow#2}{}%
+      \pcol at iicolumncolor{#1}{#2}%
     \else\ifnum#2=\pcol at currcol
-      \begingroup
-        \pcol at getshadowcc{#2}\let\pcol at colorstack\pcol at colorstack@shadow
-        \pcol at clearcolorstack
-        \pcol at iicolumncolor{#1}{pcol at colorstack@buf}{\pcol at colorstack@buf}%
-        \pcol at iicolumncolor{#1}{pcol at columncolor@shadow#2}{}%
-        \pcol at getshadowcc{#2}\pcol at restorecolorstack
-      \endgroup
-      \pcol at color@invokeoutput\pcol at op@cset\relax
+      \def\@elt##1{\reset at color}\pcol at scancst@shadow
+      \pcol at iicolumncolor{#1}{#2}%
+      \def\@elt##1{\def\current at color{##1}\let\aftergroup\@gobble
+        \pcol at set@color}%
+      \pcol at scancst@shadow
+      \setbox\@tempboxa\vbox{\let\set at color\pcol at set@color
+        \let\aftergroup\@gobble #1}%
+      \ht\@tempboxa1sp \dp\@tempboxa1sp \wd\@tempboxa\z@\relax
+      \insert\pcol at colorins{\box\@tempboxa}%
+      \ifvmode\if at nobreak \nobreak \fi\fi
     \else
-      \pcol at iicolumncolor{#1}{pcol at columncolor#2}{}%
-      \pcol at iicolumncolor{#1}{pcol at columncolor@shadow#2}{}%
+      \pcol at iicolumncolor{#1}{#2}%
+      \pcol at currcol#2\relax
+      \ifvoid\pcol at ccuse{@box}%
+        \@next\@currbox\@freelist{}\pcol at ovf
+        \pcol at ccxdef{\@currbox}%
+      \fi
+      \global\setbox\pcol at ccuse{@box}\vbox{\let\set at color\pcol at set@color
+        \let\aftergroup\@gobble #1}%
     \fi\fi
     \endgroup
   \fi\fi
   \ignorespaces}
-\def\pcol at iicolumncolor#1#2#3{\let\set at color\relax #1%
-  \expandafter\xdef\csname#2\endcsname{#3\@elt{\current at color}}}
-\def\pcol at getshadowcc#1{%
-  \expandafter\let\expandafter\reserved at a
-    \csname pcol at columncolor@shadow#1\endcsname
-  \expandafter\let\csname pcol at columncolor#1\endcsname\reserved at a}
+\def\pcol at iicolumncolor#1#2{{\let\set at color\relax #1%
+  \expandafter\xdef\csname pcol at columncolor#2\endcsname{\current at color}}}
+\def\pcol at scancst@shadow{%
+  \pcol at ifccdefined{\@elt{\pcol at ccuse{}}}\relax
+  \pcol at colorstack@shadow}
 
 %    \end{macrocode}
 % \end{macro}\end{macro}\end{macro}
 % 

 % \KeepSpace{1}
+% \begin{macro}{\pcol at mcpushlimit}
+% \changes{v1.24}{2013/07/27}
+%	{Introduced for coloring specified in math mode.}
+% \changes{v1.34}{2018/05/07}
+%	{Move down to place it just before the \cs{def}inition of
+%	 \cs{pcol at set@color at push} being the sole referrer, and change its
+%	 body from 100 to 1000.}
 % \begin{macro}{\set at color}
 % \begin{macro}{\pcol at set@color}
 % \begin{macro}{\pcol at set@color at push}
@@ -17899,6 +18431,9 @@
 %	{Change the second argument of \cs{pcol at color@invokeoutput} from
 %	 \cs{hskip}\cs{z@} to \cs{pcol at fcwhyphenate} to make null skip
 %	 insertion conditional.}
+% \changes{v1.34}{2018/05/07}
+%	{Completely change its definition according to the new text coloring
+%	 with \cs{insert}.}
 % 
 % The macro \!\pcol at set@color at push! is invoked whenever \LaTeX's
 % counterpart \!\set at color!  appears in a \env{paracol} environment through
@@ -17906,39 +18441,48 @@
 % \LaTeX's macro with it saving the original version in \!\pcol at set@color!,
 % if the original \!\set at color! is not \!\relax! to mean some coloring
 % package is in use.  This original version is used through
-% \!\pcol at set@color! by \!\pcol at bg@paintregion at i! and \!\pcol at set@color at elt!
-% besides this macro \!\pcol at set@color at push!.
+% \!\pcol at set@color! by \!\pcol at bg@paintregion at i!, \!\pcol at output@start! and
+% \!\pcol at icolumncolor!  besides this macro \!\pcol at set@color at push!,
+% while \!\output! lets $\!\set at color!=\!\pcol at set@color!$ for the references
+% outside of our control.
 % 
 % The macro at first invokes its original version being \!\pcol at set@color!
-% to let it put appropriate coloring \!\special! to |.dvi|.  Then, it
-% performs one of two different operations depending on TeX's mode, i.e.,
-% math mode or not.  If we are in math mode and not in a \!\vbox!, at first
-% we examine if $\!\pcol at mcid!=i=0$ and, if so, we make
-% $\mplist=\!\pcol at colorstack@mpushed!$ empty because there are no pending
-% math-mode requests of pushes.  Then if $i<\mplimit=\!\pcol at mcpushlimit!$,
-% we do the followings for \!\output! request of \colorstack{} pushing;
-% reserve the invocation of the macro $|\pcol at reset@color at mpop@|{\cdot}i$
+% to put an appropriate coloring \!\special! to |.dvi| and reserve the
+% invocation of \!\reset at color! by \!\aftergroup!.  Then, it performs one of
+% two different operations depending on TeX's mode, i.e., math mode or not.
+% If we are in math mode and not in a \!\vbox!, at first we increment
+% $m=\!\pcol at mcid!$ and examine if $m>\!\pcol at mcpushlimit!=1000$, and if so
+% we stop the execution with \!\PackageError!\footnote{
 % 
-% \SpecialArrayIndex{i}{\pcol at reset@color at mpop@}
+% And let $m=1$ to allow a user to continue the execution bravely.}
 % 
-% for corresponding pop by \!\aftergroup! defining the macro as
-% $\!\pcol at reset@color at mpop!\Arg{i}\Arg{\gamma}$ where $\gamma$ is the color
-% information stored in \!\current at color!;  make the \!\output! request with
-% $\!\penalty!=\mppush-i$ by \!\pcol at color@invokeoutput! letting its second
-% argument \!\relax! because nothing should be inserted after \!\vadjust!;
-% and increment \!\pcol at mcid! to make the identifier $i$ unique\footnote{
+% in order to avoid too many macros $|\pcol at reset@color at mpop@|\cdot m$ are
+% defined\footnote{
 % 
-% We don't touch the shadow stack $\cstshadow$ because \!\columncolor! or
-% \!\normalcolumncolor! is not effective in math mode.}.
+% \SpecialArrayIndex{m}{\pcol at reset@color at mpop@}
 % 
-% Otherwise, i.e., $i\geq\mplimit$, we have to stop the execution with
-% \!\PackageError!.
+% We could make the number of math-mode coloring operations virtually
+% unlimited by putting all digits of the decimal representation of $m$
+% followed by a terminator by multiple
+% \cs{aftergroup}s so that \cs{pcol at reset@color at mpop} is put by
+% \cs{aftergroup} prior to them to capture them as its argument, but 
+% limiting with $2^{31}-1$ is still necessary and that with 1000 is
+% reasonable.}. 
+% 
+% Otherwise, i.e., if $m\leq\!\pcol at mcpushlimit!$, we
+% reserve the invocation of the macro $|\pcol at reset@color at mpop@|{\cdot}i$
+% 
+% \SpecialArrayMainIndex{m}{\pcol at reset@color at mpop@}
+% 
+% for our own pop by \!\aftergroup! defining the macro as
+% $\!\pcol at reset@color at mpop!\Arg{m}$.  If we are not in math mode, on the
+% other hand, and neither in a \!\vbox!  nor in restricted horizontal mode,
+% we simply reserve the invocation of the macro $\pcol at reset@color at pop$.
 % 
-% If we are not in math mode, on the other hand, and neither in a \!\vbox!
-% nor in restricted horizontal mode, we push the contents of
+% Then, regardless that we are in math mode or not, we push the contents of
 % \!\current at color!, which \!\set at color! should refer to as the color
 % information to be set, into the shadow \colorstack{}
-% $\cstshadow=\!\pcol at colorstack@shadow!$ for the stack rewiding\slash
+% $\cstshadow=\!\pcol at colorstack@shadow!$ for the stack rewinding\slash
 % reestablishing in \!\columncolor! and \!\normalcolumncolor!.  Since this
 % push is done non-\!\global!ly with \!\edef!, we save\slash restore the
 % definition of \!\@elt! to\slash from \Midx{\!\pcol at elt@save!} before\slash
@@ -17946,139 +18490,133 @@
 % 
 % Just in case.}.
 % 
-% The color information is also added to the list
-% $\cstb=\!\pcol at colorstack@buf!$ so that the push to $\cst$ is done in
-% \!\pcol at output@cpush! invoked by the \!\output! request \!\pcol at op@cpush!
-% made by \!\pcol at color@invokeoutput!, whose second argument
-% \!\pcol at fcwhyphenate! being \!\hskip!\!\z@! when \!\coloredwordhyphenated!
-% is effective is to split coloring \!\special! and \!\vadjust! from the
-% first colored word so that the word may be hyphenated if we are in
-% horizontal mode. We also reserve the invocation of
-% \!\pcol at reset@color at pop! by \!\aftergroup! for the corresponding pop.
+% Then we \!\insert! a \!\vbox! through \!\pcol at colorins! for the push of
+% $\celt_i$ or $\mcelt_{i,m}$ to $\cstraw$ synchronous with a page break or
+% \cswitch{}.  The height of the \!\vbox! is 1\,|pt|, depth is 0 and
+% width is $m$\,|sp| if we are in math mode or 0 otherwise, and its
+% contents is the coloring \!\special! given by \!\pcol at set@color! so that
+% the \!\special! is what the macro put at the beginning of this macro but
+% without the reservation of \!\reset at color!.  After the insertion, we put
+% \!\pcol at fcwhyphenate!, being \!\hskip!\!\z@! when
+% \!\coloredwordhyphenated!  is effective, to split the coloring \!\special!
+% from the first colored word so that the word may be hyphenated if we are
+% in horizontal mode.  If we are in vertical mode, on the other hand, we do
+% \!\nobreak! if $\CSIndex{if at nobreak}=\true$ to keep the \!\insert!ion from
+% being followed by a page break.
 % 
 %    \begin{macrocode}
+\def\pcol at mcpushlimit{1000}
 \def\pcol at set@color at push{\pcol at set@color
-  \ifmmode\ifpcol at inner\else
-    \ifnum\pcol at mcid=\z@ \gdef\pcol at colorstack@mpushed{}\fi
-    \ifnum\pcol at mcid<\pcol at mcpushlimit\relax
+  \ifmmode\else\ifinner \pcol at innertrue \fi\fi
+  \ifpcol at inner\else
+    \ifmmode
+      \global\advance\pcol at mcid\@ne
+      \ifnum \pcol at mcid>\pcol at mcpushlimit\relax
+        \PackageError{paracol}{Too many coloring commands in math mode}\@ehb
+        \global\pcol at mdid\@ne
+      \fi
+      \@tempdima\pcol at mcid sp\relax
       \expandafter\aftergroup
         \csname pcol at reset@color at mpop@\number\pcol at mcid\endcsname
       \expandafter\xdef
         \csname pcol at reset@color at mpop@\number\pcol at mcid\endcsname
-          {\noexpand\pcol at reset@color at mpop
-            {\number\pcol at mcid}{\current at color}}%
-      \@tempcnta-\pcol at op@mcpush\relax \advance\@tempcnta-\pcol at mcid
-      \pcol at color@invokeoutput\@tempcnta\relax
-      \global\advance\pcol at mcid\@ne
+          {\noexpand\pcol at reset@color at mpop{\number\pcol at mcid}}%
     \else
-      \PackageError{paracol}{Too many coloring commands in math mode}\@ehb
-    \fi\fi
-  \else
-    \ifinner \pcol at innertrue \fi
-    \ifpcol at inner\else
-      \aftergroup\pcol at reset@color at pop
-      \let\pcol at elt@save\@elt \let\@elt\relax
-      \edef\pcol at colorstack@shadow{\pcol at colorstack@shadow
-        \@elt{\current at color}}%
-      \let\@elt\pcol at elt@save
-      \@cons\pcol at colorstack@buf{{\current at color}}%
-      \pcol at color@invokeoutput\pcol at op@cpush\pcol at fcwhyphenate
+      \aftergroup\pcol at reset@color at pop \@tempdima\z@
     \fi
+    \let\pcol at elt@save\@elt \let\@elt\relax
+    \edef\pcol at colorstack@shadow{\pcol at colorstack@shadow\@elt{\current at color}}%
+    \let\@elt\pcol at elt@save
+    \setbox\@tempboxa\vbox{\let\aftergroup\@gobble \pcol at set@color}%
+    \ht\@tempboxa1sp \dp\@tempboxa\z@ \wd\@tempboxa\@tempdima
+    \insert\pcol at colorins{\box\@tempboxa}\ifhmode \pcol at fcwhyphenate \fi
+    \ifvmode\if at nobreak \nobreak \fi\fi
   \fi}
 
 %    \end{macrocode}
-% \end{macro}\end{macro}\end{macro}
+% \end{macro}\end{macro}\end{macro}\end{macro}
 % 

 % \begin{macro}{\pcol at reset@color at pop}
 % \changes{v1.2-1}{2013/05/11}
 % 	{Introduced to work as \cs{reset at color}.}
 % \changes{v1.22}{2013/06/30}
-%	{Modified to pop color stack by \cs{output} always.}
+%	{Modified to pop color stack by \cs{output} and to examine if
+%	 $\cs{ifpcol at output}\EQ\mathit{true}$.}
 % \changes{v1.23}{2013/07/08}
 %	{Add an argument of \cs{relax} to \cs{pcol at color@invokeoutput}
 %	 so that the last word of a colored text is not followed by a line
 %	 break candidate.}
+% \changes{v1.34}{2018/05/07}
+%	{Completely change its definition according to the new text coloring
+%	 with \cs{insert}.}
 % \begin{macro}{\pcol at reset@color at mpop}
 % \changes{v1.24}{2013/07/27}
 %	{Introduced for coloring specified in math mode.}
+% \changes{v1.34}{2018/05/07}
+%	{Completely change its definition according to the new text coloring
+%	 with \cs{insert}.}
 % 
 % The macro \!\pcol at reset@color at pop! and its math-mode relative
-% $\!\pcol at reset@color at mpop!\Arg{i}\~\Arg{\gamma}$ are invoked by
+% $\!\pcol at reset@color at mpop!\~\Arg{m}$ are invoked by
 % \!\aftergroup! mechanism in \!\pcol at set@color at push!, directly for the
-% former and through the macro $|\pcol at reset@color at mpop@|{\cdot}i$
+% former and through the macro $|\pcol at reset@color at mpop@|{\cdot}m$
 % 
-% \SpecialArrayIndex{i}{\pcol at reset@color at mpop@}
+% \SpecialArrayIndex{m}{\pcol at reset@color at mpop@}
 % 
-% for the latter.  They make \!\output! requests, \!\pcol at op@cpop! in the
-% former and $\mppop-i$ in the latter, through \!\pcol at color@invokeoutput!
-% whose second argument is \!\relax! because nothing is inserted after
-% \!\special! and \!\vadjust! when we are in horizontal or math mode.
+% for the latter.  They \!\insert! a \!\vbox! for $\celtpop_i$ or
+% $\mceltpop_{i,m}$ to add it to $\cstraw$ synchronously with a page break
+% or \cswitch{}.  Therefore, the height and depth of the \!\vbox! are 0 and
+% width is 0 for $\celtpop_i$ or $m$\,|sp| for $\mceltpop_{i,m}$.  The
+% contents of the \!\vbox! is an uncoloring \!\special! given by
+% \!\reset at color! but this is done just for debugging to show what
+% \!\pcol at colorins! has by, for example, \!\pcol at ShowBox!.  Then if we are
+% in vertical mode and $\CSIndex{if at nobreak}=\true$, we do \!\nobreak! to
+% keep the \!\insert!ion from being followed by a page break even in
+% \!\pcol at reset@color at mpop! because its corresponding
+% \!\pcol at set@color at push! may have been in a displayed math construct after
+% which we are in vertical mode.
 % 
 % One caution is that \!\pcol at reset@color at pop! can be invoked outside the
 % \env{paracol} environment in which the corresponding
 % \!\pcol at set@color at push! appears.  In this case with
 % $\CSIndex{ifpcol at output}=\false$, we don't need to do the pop operation
-% and cannot make the \!\output! request for it because \!\output! is not
-% for \env{paracol}.  Another remark is that \!\pcol at reset@color at mpop! is
-% temporarily redefined by \!\pcol at output@mcpush! to make it
-% \!\pcol at output@imcpush! to append $i$ to $\mplist$ and $\gamma$ to $\cst$.
+% and cannot make the \!\insert!ion for it because \!\output! is not for
+% \env{paracol}.
 % 
 %    \begin{macrocode}
-\def\pcol at reset@color at pop{\ifpcol at output
-  \pcol at color@invokeoutput\pcol at op@cpop\relax \fi}
-\def\pcol at reset@color at mpop#1#2{\@tempcnta-\pcol at op@mcpop\relax
-  \advance\@tempcnta-#1\relax
-  \pcol at color@invokeoutput\@tempcnta\relax}
+\def\pcol at reset@color at pop{%
+  \ifpcol at output
+    \setbox\@tempboxa\vbox{\reset at color}%
+    \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa\z@
+    \insert\pcol at colorins{\box\@tempboxa}%
+    \ifvmode\if at nobreak \nobreak \fi\fi
+  \fi}
+\def\pcol at reset@color at mpop#1{%
+  \setbox\@tempboxa\vbox{\reset at color}%
+  \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa#1sp\relax
+  \insert\pcol at colorins{\box\@tempboxa}%
+  \ifvmode\if at nobreak \nobreak \fi\fi
+}
 
 %    \end{macrocode}
 % \end{macro}\end{macro}
 % 

-% \begingroup\let\small\footnotesize
-% \begin{macro}{\pcol at color@invokeoutput}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced for \cs{output} request for coloring.}
+% 	{\cs{pcol at color@invokeoutput} was introduced for \cs{output}
+%	 request for coloring but removed in v1.34.}
 % \changes{v1.23}{2013/07/08}
-%	{Add second argument $s$ to insert a null skip
-%	 after \cs{vadjust} only when the macro is invoked from
-%	 \cs{pcol at set@color at push} in horizontal mode.}
-% \begin{macro}{\pcol at color@invokeoutput at v}
+%	{\cs{pcol at color@invokeoutput} was modified to add second argument
+%	 $s$ to insert a null skip after \cs{vadjust} only when the macro is
+%	 invoked from \cs{pcol at set@color at push} in horizontal mode.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at color@invokeoutput} is removed according to the change of
+%	 text coloring from \cs{output} to \cs{insert}.}
 % \changes{v1.22}{2013/06/30}
-% 	{Introduced for \cs{output} request for coloring.}
-% 
-% \begin{Sloppy}{2000}
-% The macro $\!\pcol at color@invokeoutput!\arg{pen}\arg{s}$ where
-% $\arg{pen}=|\pcol at op@|{\cdot}f$ and $s\in\break\{\!\hskip!\!\z@!,\!\relax!\}$,
-% 
-% \SpecialIndex{\pcol at op@cpush}
-% \SpecialIndex{\pcol at op@cpop}
-% \SpecialIndex{\pcol at op@cset}
-% 
-% invoked from \!\pcol at set@color at push! ($f=|cpush|$, $s=\!\hskip!\!\z@!$),
-% \!\pcol at reset@color at pop! ($f=|cpop|$, $s=\!\relax!$) and
-% \!\pcol at icolumncolor!  ($f=|cset|$, $s=\!\relax!$), makes an \!\output!
-% request with $\!\penalty!\arg{pen}$.  The following sequence to make the
-% request performed by $\!\pcol at color@invokeoutput at v!\arg{pen}$ is exactly
-% same as that in \LaTeX's \!\end at float!; insert a \!\penalty!  of $-10004$
-% to save the main vertical list in \!\@holdpg!; save \!\prevdepth!; insert
-% a \!\vbox! to make it sure the following \!\penalty!  of $\arg{pen}$ is
-% kept even when we are at the top of a page; and finally restore
-% \!\prevdepth!.  The sequence is simply excueted when we are in vertical
-% mode, while it is enclosed in \!\vadjust!  otherwise.  In addition, when
-% we are in horizotal mode, the \!\vadjust! is followed by $s$ which makes
-% it possible that the word following a coloring command such as \!\color!
-% is hyphenated with $s=\!\pcol at fcwhyphenate!=\!\hskip!\!\z@!$.
-% \end{Sloppy}
-% \end{macro}\end{macro}\endgroup
-% 
-%    \begin{macrocode}
-\def\pcol at color@invokeoutput#1#2{%
-  \ifvmode \pcol at color@invokeoutput at v{#1}%
-  \else \vadjust{\pcol at color@invokeoutput at v{#1}}\ifhmode #2\fi
-  \fi}
-\def\pcol at color@invokeoutput at v#1{\penalty-\@Miv \@tempdima\prevdepth
-  \vbox{}\prevdepth\@tempdima \penalty#1\relax}
-
-%    \end{macrocode}
+% 	{\cs{pcol at color@invokeoutput at v} was introduced for \cs{output}
+%	 request for coloring but removed in v1.34.}
+% \changes{v1.34}{2018/05/07}
+%	{\cs{pcol at color@invokeoutput at v} is removed according to the change of
+%	 text coloring from \cs{output} to \cs{insert}.}
 % 

 % \KeepSpace{1}
 % \begin{macro}{\coloredwordhyphenated}
@@ -18096,9 +18634,9 @@
 % 
 % The API macro \!\coloredwordhyphenated! \!\def!ines the macro
 % \!\pcol at fcwhyphenate! being \!\hskip!\!\z@! so that the null space is
-% inserted after \!\vadjust! with $\!\outputpenalty!=\!\pcol at op@cpush!$ in
-% \!\pcol at color@invokeoutput! used in \!\pcol at set@color at push! in horizontal
-% mode, so that the word following it can be hyphenated.  The other API macro
+% inserted after the coloring \!\special! and \!\insert! put by
+% \!\pcol at set@color at push! if we are in horizontal mode, so that the word
+% following them can be hyphenated.  The other API macro
 % \!\nocoloredwordhyphenated! makes $\!\pcol at fcwhyphenate!=\!\relax!$ to
 % inhibit the insertion.  Since the null skip is a line break candidate, the
 % skip might cause an unexpected and undesirable line break.  However, this

Modified: trunk/Master/texmf-dist/source/latex/paracol/paracol.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/paracol/paracol.dtx	2018-05-18 21:10:18 UTC (rev 47749)
+++ trunk/Master/texmf-dist/source/latex/paracol/paracol.dtx	2018-05-18 21:10:33 UTC (rev 47750)
@@ -2,7 +2,7 @@
 %<paracol>%% Style file `paracol'.
 %<man>%% LaTeX file 'paracol-man'.
 %<*paracol|man>
-%% Copyright (C) 2005-2015
+%% Copyright (C) 2005-2018
 %%   Hiroshi Nakashima <h.nakashima at DOMAIN;  DOMAIN=media.kyoto-u.ac.jp>
 %%   (Kyoto University)
 %% This program can be redistributed and/or modified under the terms
@@ -19,7 +19,7 @@
 %<man>\ProvidesFile{paracol-man.tex}
 % \fi
 % \ProvidesFile{paracol.dtx}
-[2015/10/10 v1.32 ]
+[2018/05/07 v1.34 ]
 % \iffalse
 %<*man>
 \documentclass{ltxdoc}\normalmarginpar
@@ -88,6 +88,7 @@
 % \nosv
 % \gdef\Set#1#2{\{#1\,|\,#2\}}
 % \gdef\Abs#1{|#1|}
+% \gdef\Bar{|}
 % \endgroup
 % 
 % \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
@@ -421,14 +422,21 @@
 % 
 % \def\vb{\Index[$\kappa_c(\beta)$]{-k_c(-b)}\beta}
 % \def\pd{\Index[$\kappa_c(\delta)$]{-k_c(-d)}\delta}
-% \def\Celt{\Index[$\gamma_0^c$]{-c_0^c}\gamma_0}
-% \def\Celtshadow{\Index[$\hat\gamma_0^c$]{-c_0^c'}\hat\gamma_0}
-% \def\celt{\Index[$\gamma_i$]{-c_i}\gamma}
-% \def\mcelt{\Index[$\gamma'_i$]{-c_i'}\gamma'}
-% \def\cst{\Index[$\string\mathit{\Gamma}$]{-C}\mathit{\Gamma}}
+% \def\Celt{\Index[$\gamma_0^c$]{-c^c_0}\gamma_0}
+% \def\Celtshadow{\Index[$\hat\gamma_0^c$]{-c^xc_0}\hat\gamma_0}
+% \def\celt{\Index[$\gamma_i$]{-c^a_i}\gamma}
+% \def\celtpop{\Index[$\gamma_i^-$]{-c^m_i}\gamma^-}
+% \def\celtshadow{\Index[$\hat\gamma_i$]{-c^x_i}\hat\gamma}
+% \def\mcelt{\Index[$\gamma_{i,m}$]{-c^a_i,m}\gamma}
+% \def\mceltpop{\Index[$\gamma_{i,m}^-$]{-c^m_i,m}\gamma^-}
+% \def\cst{\Index[$\string\mathit{\Gamma}$]{-C^a}\mathit{\Gamma}}
 % \def\CST{\Index[$\string\mathit{\Gamma}^c$]{-C^c}\mathit{\Gamma}}
-% \def\csts{\Index[$\string\mathit{\Gamma_s}$]{-C_s}\mathit{\Gamma}_s}
-% \def\cstshadow{\Index[$\hat\string\mathit{\Gamma}$]{-C'}\hat\mathit{\Gamma}}
+% \def\CSTraw{\Index[$\string\mathit{\Gamma}^c_r$]{-C^c_r}\mathit{\Gamma}_r}
+% \def\cstraw{\Index[$\string\mathit{\Gamma}_r$]{-C^a_r}\mathit{\Gamma}_r}
+% \def\csts{\Index[$\string\mathit{\Gamma}_s$]{-C_s}\mathit{\Gamma}_s}
+% \def\CSTshadow{\Index[$\hat\string\mathit{\Gamma}^c$]{-C^xc}
+%   \hat\mathit{\Gamma}}
+% \def\cstshadow{\Index[$\hat\string\mathit{\Gamma}$]{-C^x}\hat\mathit{\Gamma}}
 % \def\ep{\Index[$\kappa_c(\varepsilon)$]{-k_c(-e)}\varepsilon}
 % \def\clist{\Index[$\zeta(\theta)$]{-f(-j)}\zeta}
 % \def\fh{\Index[$\kappa_c(\eta)$]{-k_c(-h)}\eta}
@@ -456,8 +464,6 @@
 % \def\sw{\Index[$\kappa_c(\sigma)$]{-k_c(-s)}\sigma}
 % \def\ft{\Index[$\kappa_c(\tau)$]{-k_c(-t)}\tau}
 % \def\df{\Index[$\string\mathit{\Phi}$]{-U}\mathit{\Phi}}
-% \def\cstb{\Index[$\chi$]{-x}\chi}
-% \def\cstbm{\Index[$\chi_m$]{-x_m}\chi_m}
 % 
 % \def\bf{\Index[$b_f$]{b_f}b_f}
 % \def\bgc{\Index[$B_a$]{B_a}B}
@@ -464,18 +470,18 @@
 % \def\bge{\Index[$e_a(d^\pm)$]{e_a(d^+)}e}
 % \def\bgr{\Index[$R_a$]{R_a}R}
 % \def\C{\Index[$C$]{C}C}
-% \def\Cfrom{\Index[$C^0$]{C^0}{C^0}}
-% \def\CBfrom{\Index[$C_b^0$]{C_b^0}{C_b^0}}
-% \def\CBto{\Index[$C_b^1$]{C_b^1}{C_b^1}}
-% \def\CL{\Index[$C_L$]{C_L}C_L}
-% \def\Cto{\Index[$C^1$]{C^1}{C^1}}
-% \def\cmax{\Index[$c_{\max}$]{c_max}c_{\max}}
+% \def\Cfrom{\Index[$C^0$]{C0^0}{C^0}}
+% \def\CBfrom{\Index[$C_b^0$]{C0_b^0}{C_b^0}}
+% \def\CBto{\Index[$C_b^1$]{C0_b^1}{C_b^1}}
+% \def\CL{\Index[$C_L$]{C0_L}C_L}
+% \def\Cto{\Index[$C^1$]{C0^1}{C^1}}
+% \def\cmax{\Index[$c_{\max}$]{c0_max}c_{\max}}
 % \def\dc{\Index[$d_c$]{d_c}d_c}
 % \def\DP{\Index[$D_P$]{D_P}D_P}
 % \def\DT{\Index[$D_T$]{D_T}D_T}
 % \def\false{\Index[$\string\mathit{false}$]{false}\mathit{false}}
-% \def\Fc{\Index[$F_c(X)$]{F_c}F_c}
-% \def\fc{\Index[$f_c(x)$]{f_c}f_c}
+% \def\Fc{\Index[$F_c(X)$]{F0_c}F_c}
+% \def\fc{\Index[$f_c(x)$]{f0_c}f_c}
 % \def\gap{\Index[$g_c$]{g_c}g}
 % \def\HB{\Index[$H_B$]{H_B}H_B}
 % \def\HM{\Index[$H_M$]{H_M}H_M}
@@ -486,15 +492,13 @@
 % \def\HT{\Index[$H_T$]{H_T}H_T}
 % \def\mplist{\Index[$I$]{I}I}
 % \def\nf{\Index[$n_f$]{n_f}n_f}
+% \def\npop{\Index[$n_{\rm pop}$]{n_pop}n_{\rm pop}}
 % \def\mpar{\Index[$\mathit{mpar}(t_i,b_i)$]{mpar(t_i,b_i)}\mathit{mpar}}
-% \def\mpb{\Index[$M_{\{L,R\}}^{\{l,r\}}$]{M_{L,R}^{l,r}}M}
-% \def\mpbout{\Index[${\string\cal{M}}$]{M}{\cal M}}
-% \def\mpboutz{\Index[${\string\cal{M}}_0$]{M_0}{\cal M}_0}
-% \def\mplimit{\Index[$L$]{L}L}
-% \def\mppop{\Index[$P_{\string\rm{pop}}$]{P_pop}P_{\rm pop}}
-% \def\mppush{\Index[$P_{\string\rm{push}}$]{P_push}P_{\rm push}}
-% \def\pbase{\Index[$p_b$]{p_b}p_b}
-% \def\ptop{\Index[$p_t$]{p_t}p_t}
+% \def\mpb{\Index[$M_{\{L,R\}}^{\{l,r\}}$]{M0_{L,R}^{l,r}}M}
+% \def\mpbout{\Index[${\string\cal{M}}$]{M1}{\cal M}}
+% \def\mpboutz{\Index[${\string\cal{M}}_0$]{M1_0}{\cal M}_0}
+% \def\pbase{\Index[$p_b$]{p0_b}p_b}
+% \def\ptop{\Index[$p_t$]{p0_t}p_t}
 % \def\page{\Index[$\string\mathit{page}(p)$]{page(p)}\mathit{page}}
 % \def\S{\Index[$S_c$]{S_c}S}
 % \def\SS{\Index[$S$]{S}S}
@@ -508,18 +512,18 @@
 % 	\mathit{val}}
 % \def\Val{\Index[$\string\mathit{val}(\theta)$]{val(j)}
 % 	\mathit{val}}
-% \def\vc{\Index[$v_c(x)$]{v_c}v_c}
-% \def\VB{\Index[$V_B$]{V_B}V_B}
-% \def\VE{\Index[$V_E$]{V_E}V_E}
-% \def\VP{\Index[$V_P$]{V_P}V_P}
-% \def\VPP{\Index[$V'_P$]{V_Px}V'_P}
-% \def\VT{\Index[$V_T$]{V_T}V_T}
-% \def\w{\Index[$w_c$]{w_c}w}
-% \def\W{\Index[$W_c$]{W_c}W}
-% \def\WM{\Index[$W_M$]{W_M}W_M}
-% \def\WP{\Index[$W_P$]{W_P}W_P}
-% \def\WR{\Index[$W_R$]{W_R}W_R}
-% \def\WT{\Index[$W_T$]{W_T}W_T}
+% \def\vc{\Index[$v_c(x)$]{v1_c}v_c}
+% \def\VB{\Index[$V_B$]{V0_B}V_B}
+% \def\VE{\Index[$V_E$]{V0_E}V_E}
+% \def\VP{\Index[$V_P$]{V0_P}V_P}
+% \def\VPP{\Index[$V'_P$]{V0_Px}V'_P}
+% \def\VT{\Index[$V_T$]{V0_T}V_T}
+% \def\w{\Index[$w_c$]{w1_c}w}
+% \def\W{\Index[$W_c$]{W0_c}W}
+% \def\WM{\Index[$W_M$]{W0_M}W_M}
+% \def\WP{\Index[$W_P$]{W0_P}W_P}
+% \def\WR{\Index[$W_R$]{W0_R}W_R}
+% \def\WT{\Index[$W_T$]{W0_T}W_T}
 % 
 % 

 %
@@ -627,7 +631,15 @@
 % \changes{v1.32-2}{2015/10/10}
 % 	{Fix a memory leak in \cs{pcol at startcolumn}. (2015/10/10)}
 % \changes{v1.32-3}{2015/10/10}
-% 	{Fix the page-wise float problem. (2015/10/10)}
+% 	{Fix a page-wise float problem. (2015/10/10)}
+% \changes{v1.33-1}{2016/11/19}
+% 	{Fix a marginal note problem. (2016/11/19)}
+% \changes{v1.33-2}{2016/11/19}
+% 	{Non-logical modifications to obey the coding convention, for
+%	 clarification, etc.. (2016/11/19)}
+% \changes{v1.34}{2018/05/07}
+% 	{Fix a text coloring problem in non-breakable sequences of vertical
+%	 items. (2018/05/07)}
 %
 % 

 % 
@@ -737,9 +749,12 @@
 % 
 % Tigran Aivazian who reported a memory leak problem fixed in version 1.32;
 % 
-% and Marcus Zelezny and Touhami Mamouni who found an incompatibility with
+% 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.
+% of the problem;
+% 
+% and Manuel Kuehner who reported a bug in text coloring which had hidden
+% for five years until the version 1.34 was released.
 % 
 % For the implementation of the style file, the author referred to the base
 % implementations of \texttt{\char`\\output}, \texttt{\char`\\newcounter}
@@ -753,6 +768,7 @@
 % \PrintIndex}
 % 
 % \newpage
+% \addtocounter{page}{2}
 % \let\Midx\MidxSave
 % \advance\oddsidemargin1in\evensidemargin\oddsidemargin
 % \advance\textwidth-1in\columnwidth\textwidth
@@ -773,6 +789,6 @@
 % \Finale
 % \GlossaryPrologue{\newpage\section*{Revision History}
 % \addcontentsline{toc}{part}{\protect\numberline{}{Revision History}}}
-% \def\EQ{=} \def\GT{>} \def\BAR{|} \def\NEQ{\neq}
+% \def\EQ{=} \def\GT{>} \def\BAR{|} \def\NEQ{\neq} \def\S{\Sec}
 % \PrintChanges
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/paracol/ppts.dtx
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/paracol/probs.dtx
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/paracol/paracol.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/paracol/paracol.sty	2018-05-18 21:10:18 UTC (rev 47749)
+++ trunk/Master/texmf-dist/tex/latex/paracol/paracol.sty	2018-05-18 21:10:33 UTC (rev 47750)
@@ -1,5 +1,5 @@
 %% Style file `paracol'.
-%% Copyright (C) 2005-2015
+%% Copyright (C) 2005-2018
 %%   Hiroshi Nakashima <h.nakashima at DOMAIN;  DOMAIN=media.kyoto-u.ac.jp>
 %%   (Kyoto University)
 %% This program can be redistributed and/or modified under the terms
@@ -9,7 +9,7 @@
 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
 \ProvidesPackage{paracol}
-[2015/10/10 v1.32 ]
+[2018/05/07 v1.34 ]
 
 %% Register Declaration
 
@@ -58,13 +58,22 @@
 \newbox\pcol at topfnotes
 \newbox\pcol at prespan \setbox\pcol at prespan\box\voidb at x
 \newbox\pcol at rightpage \global\setbox\pcol at rightpage\box\voidb at x
-\newbox\pcol at tempbox
+\newbox\pcol at colorstack@saved
+\newbox\pcol at tempboxa
+\newbox\pcol at tempboxb
+\newinsert\pcol at colorins
+\count\pcol at colorins\z@ \skip\pcol at colorins\z@ \dimen\pcol at colorins\maxdimen
 \newtoks\pcol at everyvbox
 
 %% Logging Tools
 
-\def\pcol at ShowBox#1{\message{(\the\ht#1+\the\dp#1)x(\the\wd#1)}%
-  {\showboxdepth\@M \showboxbreadth\@M \setbox\z@\vbox to\z@{\copy#1}}}
+\def\pcol at ShowBox#1{%
+  \ifvoid#1\message{(VOID)}%
+  \else
+    \message{(\the\ht#1+\the\dp#1)x(\the\wd#1)}%
+    {\vfuzz\z@ \showboxdepth\@M \showboxbreadth\@M
+     \setbox\z@\vbox to\z@{\ifdim\ht#1=\z@ \vskip1\p@\fi \copy#1}}%
+  \fi}
 \def\pcol at LogLevel#1#2#3{%
   \pcol at iLogLevel{#1}{pcol at Log}%
   \pcol at iLogLevel{#2}{pcol at Logstart}%
@@ -126,7 +135,7 @@
     \@makecol
     \@opcol
     \@startcolumn
-    \@whilesw\if at fcolmade\fi{\@opcol\@startcolumn}%
+    \@whilesw\if at fcolmade\fi{\@opcol \@startcolumn}%
   \fi\fi
   \global\maxdepth\@maxdepth
   \ifnum\outputpenalty>-\@Miv
@@ -157,7 +166,6 @@
 \def\pcol at makecol{\let\pcol at textbottom\@textbottom
   \ifdim\pcol at textfloatsep=\maxdimen\else
     \def\@textbottom{\vskip\z@\@plus.0001fil\@minus.0001fil}\fi
-  \def\pcol at currfoot{\voidb at x}%
   \ifpcol at sptext \ifnum\pcol at currcol=\z@
     \pcol at getcurrpinfo\@tempcnta\@tempdima\@tempskipa
     \setbox\@tempboxa\vbox{\unvcopy\@cclv}%
@@ -172,6 +180,7 @@
     \setbox\@cclv\vbox{\unvbox\pcol at prespan \pcol at shiftspanning\@cclv
                        \unvbox\@cclv}%
   \fi\fi
+  \def\pcol at currfoot{\voidb at x}%
   \ifpcol at scfnote \ifvoid\footins\else
     \pcol at shrinkcolbyfn\@colht\footins\relax
     \setbox\@cclv\vbox{\pcol at unvbox@cclv\footins}%
@@ -212,7 +221,7 @@
   \let\@elt\@comflelt
   \setbox\@tempboxa\vbox{}%
   \@toplist
-  \setbox\@outputbox\vbox{
+  \setbox\@outputbox\vbox{%
     \boxmaxdepth\@maxdepth
     \box\@tempboxa
     \vskip-\floatsep
@@ -231,7 +240,7 @@
 
 \def\pcol at opcol{%
   \pcol at Fb
-  \@next\@currbox\@freelist{\global\setbox\@currbox\vbox to\@colht{
+  \@next\@currbox\@freelist{\global\setbox\@currbox\vbox to\@colht{%
       \boxmaxdepth\@maxdepth
       \pcol at clearcst@unvbox\@outputbox}}\pcol at ovf
   \pcol at Fe{opcol}%
@@ -247,7 +256,7 @@
 
 \def\pcol at setpageno{\begingroup
   \@tempcnta\pcol at page \advance\@tempcnta-\pcol at basepage
-  \edef\reserved at a{\pcol at pages\pcol at currpage}%
+  \let\@elt\relax \edef\reserved at a{\pcol at pages\pcol at currpage}%
   \global\let\pcol at pages\@empty \global\let\pcol at currpage\@empty
   \let\@elt\pcol at setpnoelt \reserved at a
   \endgroup}
@@ -475,12 +484,12 @@
 \def\pcol at buildcolseprule#1#2#3#4{%
   \@tempdima#1\relax \dimen@#4\relax
   \let\pcol at bg@from#2\relax \let\pcol at bg@to#3\relax
-  \setbox\pcol at tempbox\vbox{}\setbox\@tempboxa\vbox{}%
+  \setbox\pcol at tempboxa\vbox{}\setbox\@tempboxa\vbox{}%
   \let\@elt\pcol at buildcselt@S \pcol at sptextlist
   \@tempdimb\z@ \let\@elt\pcol at buildcselt \pcol at sptextlist
   \let\@elt\relax \advance\@tempdima-\@tempdimb
   \ifdim\@tempdima>\z@
-    \setbox\pcol at tempbox\vbox{\unvbox\pcol at tempbox
+    \setbox\pcol at tempboxa\vbox{\unvbox\pcol at tempboxa
       \hrule\@height\@tempdima\@width\columnseprule}%
     \setbox\@tempboxa\vbox{\unvbox\@tempboxa
       \let\@elt\relax
@@ -500,7 +509,7 @@
     \pcol at bg@paintbox{S}}}
 \def\pcol at buildcselt#1#2{%
   \@tempdimc#1sp \advance\@tempdimc-\@tempdimb
-  \setbox\pcol at tempbox\vbox{\unvbox\pcol at tempbox
+  \setbox\pcol at tempboxa\vbox{\unvbox\pcol at tempboxa
     \ifdim\@tempdimc>\z@ \hrule\@height\@tempdimc\@width\columnseprule \fi
     \vskip#2sp}%
   \setbox\@tempboxa\vbox{\unvbox\@tempboxa
@@ -523,7 +532,7 @@
     \hskip-.5\columnseprule
     \@ifundefined{pcol at colseprulecolor#1}%
       {\pcol at colseprulecolor}{\@nameuse{pcol at colseprulecolor#1}}%
-    \copy\pcol at tempbox \hskip-.5\columnseprule
+    \copy\pcol at tempboxa \hskip-.5\columnseprule
     \hskip.5\@tempdima\@plus1fil\relax
   \else \hskip\@tempdima\@plus1fil\relax
   \fi}}
@@ -532,7 +541,7 @@
 \def\@outputpage{\begingroup
   \@tempdima\topmargin \advance\@tempdima\headheight \advance\@tempdima\headsep
   \ifpcol at output
-    \setbox\pcol at tempbox\vtop{\vskip\@tempdima \global\pcol at bg@paintedfalse
+    \setbox\pcol at tempboxa\vtop{\vskip\@tempdima \global\pcol at bg@paintedfalse
      \let\pcol at bg@from\z@ \let\pcol at bg@to\pcol at ncolleft
      \pcol at bg@paintpage}%
     \ifpcol at bg@painted \@tempswatrue \else \@tempswafalse \fi
@@ -545,7 +554,7 @@
       \ifpcol at havelastpage \ifx\set at color\relax\else
         \pcol at bg@@paintpage \pcol at bg@@paintbox{Pp}%
       \fi\fi}%
-    \setbox\pcol at tempbox\vbox{%
+    \setbox\pcol at tempboxa\vbox{%
       \let\pcol at bg@preposttop\pcol at bg@preposttop at left
       \let\pcol at bg@from\z@ \let\pcol at bg@to\pcol at ncolleft \reserved at a}%
     \ifpcol at bg@painted \@tempswatrue \else \@tempswafalse \fi
@@ -559,7 +568,7 @@
       \pcol at Logend{\@outputpage{rightset}}%
     \fi
   \fi
-  \ht\pcol at tempbox\z@ \dp\pcol at tempbox\z@
+  \ht\pcol at tempboxa\z@ \dp\pcol at tempboxa\z@
   \ht\@tempboxa\z@ \dp\@tempboxa\z@
   \ifodd\c at page                                 \pcol at swapcolumnfalse \fi
   \ifnum\pcol at ncolleft<\pcol at ncol\else          \pcol at swapcolumnfalse \fi
@@ -579,7 +588,7 @@
   \global\c at page#1\relax
   \let\@themargin\oddsidemargin
   \if at twoside\ifodd\c at page\else \let\@themargin\evensidemargin \fi\fi
-  \if at tempswa \everyvbox{\pcol at outputpage@ev\pcol at tempbox}\fi
+  \if at tempswa \everyvbox{\pcol at outputpage@ev\pcol at tempboxa}\fi
   \pcol@@outputpage
   \pcol at Logend{\@outputpage{left}}}
 \def\pcol at outputpage@r#1{%
@@ -825,19 +834,7 @@
 \def\pcol at op@flush{-10012}
 \def\pcol at op@clear{-10013}
 \def\pcol at op@end{-10014}
-\def\pcol at op@cpush{-10015}
-\def\pcol at op@cpop{-10016}
-\def\pcol at op@cset{-10017}
 
-\def\pcol at mcpushlimit{100}
-\@tempcnta\@M
-\advance\@tempcnta\pcol at mcpushlimit
-\edef\pcol at op@mcpush{\number\@tempcnta}\advance\@tempcnta\m at ne
-\edef\pcol at op@mcpush at pone{\number-\@tempcnta}\advance\@tempcnta\@ne
-\advance\@tempcnta\pcol at mcpushlimit
-\edef\pcol at op@mcpop{\number\@tempcnta}\advance\@tempcnta\m at ne
-\edef\pcol at op@mcpop at pone{\number-\@tempcnta}\advance\@tempcnta\@ne
-
 \def\pcol at specialoutput{%
   \ifnum\outputpenalty=\pcol at op@start\relax
     \let\reserved at a\pcol at output@start
@@ -849,20 +846,8 @@
     \let\reserved at a\pcol at output@clear
   \else\ifnum\outputpenalty=\pcol at op@end\relax
     \let\reserved at a\pcol at output@end
-  \else\ifnum\outputpenalty=\pcol at op@cpush\relax
-    \let\reserved at a\pcol at output@cpush
-  \else\ifnum\outputpenalty=\pcol at op@cpop\relax
-    \let\reserved at a\pcol at output@cpop
-  \else\ifnum\outputpenalty=\pcol at op@cset\relax
-    \let\reserved at a\pcol at output@cset
-  \else\ifnum\outputpenalty<\pcol at op@mcpop at pone\relax
-    \advance\outputpenalty\pcol at op@mcpop\relax \@tempcnta-\outputpenalty
-    \let\reserved at a\pcol at output@mcpop
-  \else\ifnum\outputpenalty<\pcol at op@mcpush at pone\relax
-    \advance\outputpenalty\pcol at op@mcpush\relax \@tempcnta-\outputpenalty
-    \let\reserved at a\pcol at output@mcpush
   \else \let\reserved at a\@specialoutput
-  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi
   \ifnum\outputpenalty=-\@Miv\relax
     \ifvoid\footins\else \pcol at Log\dummy{dummy}\footins \fi
   \fi
@@ -935,6 +920,12 @@
     \global\count\@currbox\z@
     \global\dimen\@currbox\@colroom
     \expandafter\gdef\csname pcol at shipped\number\pcol at currcol\endcsname{}%
+    \pcol at ifccdefined
+      {\@next\@currbox\@freelist{\global\setbox\@currbox\vbox{%
+        \def\current at color{\pcol at ccuse{}}\let\aftergroup\@gobble
+        \pcol at set@color}}\pcol at ovf}%
+      {\def\@currbox{\voidb at x}}%
+    \pcol at ccxdef{\@currbox}%
    \advance\pcol at currcol\@ne}%
   \global\pcol at currcol\z@
   \pcol at getcurrcol
@@ -972,10 +963,11 @@
 
 \def\pcol at output@switch{%
   \ifpcol at sptext\ifnum\pcol at currcol=\z@
-    \ifvoid\pcol at prespan\else \global\advance\@colroom\ht\pcol at prespan \fi
+    \ifvoid\pcol at prespan \dimen@\z@ \else \dimen@\ht\pcol at prespan \fi
+    \global\advance\@colroom\dimen@
+    \pcol at addflhd\@toplist\pcol at textfloatsep
     \pcol at getcurrpinfo\@tempcnta\@tempdima\@tempskipa
     \@tempdimb\ht\@holdpg \advance\@tempdimb\dp\@holdpg
-    \dimen@\ht\pcol at prespan \pcol at addflhd\@toplist\pcol at textfloatsep
     \@cons\pcol at sptextlist{{\number\dimen@}{\number\@tempdimb}}%
     \pcol at defcurrpage{\number\@tempcnta}\pcol at spanning\pcol at footins
                      {\pcol at sptextlist}{\pcol at mparbottom}%
@@ -1127,9 +1119,9 @@
   \pcol at ifempty\@currbox
    {\pcol at savecolorstack
     \ifpcol at sptextstart \global\setbox\pcol at prespan\box\voidb at x \fi}%
-   {\gdef\pcol at colorstack@saved{}%
+   {\global\setbox\pcol at colorstack@saved\box\voidb at x
     \ifpcol at sptextstart
-      \global\setbox\pcol at prespan\vbox{
+      \global\setbox\pcol at prespan\vbox{%
         \unvbox\@currbox \pcol at restorecolorstack}%
       \global\advance\@colroom-\ht\pcol at prespan
       \global\topskip\z@ \hrule\@height\z@\@width\z@
@@ -1139,52 +1131,6 @@
 
 %% Special Output Routines: Color Management
 
-\def\pcol at output@cpush{%
-  \expandafter\pcol at output@icpush\pcol at colorstack@buf\@nil
-  \pcol at return@from at color}
-\def\pcol at output@icpush\@elt#1#2\@nil{%
-  \@cons\pcol at colorstack{{#1}}\gdef\pcol at colorstack@buf{#2}}
-\def\pcol at output@mcpush{\begingroup
-  \let\pcol at reset@color at mpop\pcol at output@imcpush
-  \@nameuse{pcol at reset@color at mpop@\number\@tempcnta}%
-  \endgroup
-  \pcol at return@from at color}
-\def\pcol at output@imcpush#1#2{%
-  \@cons\pcol at colorstack{{#2}}%
-  \@cons\pcol at colorstack@mpushed{{#1}}}
-
-\def\pcol at output@cpop{\begingroup
-  \let\reserved at a\pcol at colorstack
-  \gdef\pcol at colorstack{}\let\@elt\pcol at reset@color at elt
-  \reserved at a\@elt\@nil
-  \endgroup
-  \pcol at return@from at color}
-\def\pcol at reset@color at elt#1\@elt#2{\def\reserved at b{#2}%
-  \ifx\reserved at b\@nnil \let\reserved at b\relax
-  \else \@cons\pcol at colorstack{{#1}}\def\reserved at b{\@elt{#2}}%
-  \fi
-  \reserved at b}
-\def\pcol at output@mcpop{\begingroup
-  \let\@elt\pcol at output@mcpop at elt \@tempswafalse
-  \pcol at colorstack@mpushed
-  \if at tempswa \global\let\@gtempa\pcol at output@cpop
-  \else       \global\let\@gtempa\pcol at return@from at color
-  \fi
-  \endgroup
-  \@gtempa}
-\def\pcol at output@mcpop at elt#1{\ifnum#1=\@tempcnta \@tempswatrue \fi}
-
-\def\pcol at output@cset{%
-  \expandafter\pcol at output@icset\pcol at colorstack@buf\@nil
-  \pcol at return@from at color}
-\def\pcol at output@icset\@elt#1#2\@nil{{\let\@elt\relax
-  \expandafter\xdef\csname pcol at columncolor\number\pcol at currcol\endcsname{%
-    \@elt{#1}}%
-  \gdef\pcol at colorstack@buf{#2}}}
-
-\def\pcol at return@from at color{\unvbox\@holdpg \@reinserts
-  \if at nobreak\nobreak \else\addpenalty\interlinepenalty \fi}
-
 \def\pcol at magicpenalty{12345}
 \def\pcol at ifempty#1#2#3{%
   \setbox\@tempboxa\vbox{\penalty\pcol at magicpenalty
@@ -1196,23 +1142,89 @@
 
 \def\pcol at clearcst@unvbox#1{%
   \pcol at ifempty#1\relax
-   {\pcol at restorecst\pcol at colorstack@saved
-    \unvbox#1\pcol at clearcolorstack}}
-\def\pcol at clearcolorstack{{\def\@elt##1{\reset at color}%
-  \pcol at colorstack@full}}
+   {\pcol at restorecst\pcol at colorstack@saved \unvbox#1\pcol at clearcolorstack}}
+\def\pcol at clearcolorstack{%
+  \def\reserved at a##1{\reset at color}\def\reserved at b##1{\reset at color}%
+  \pcol at scancst\pcol at colorins}
 
-\def\pcol at restorecolorstack{\pcol at restorecst\pcol at colorstack@full}
-\def\pcol at restorecst#1{{\let\@elt\pcol at set@color at elt#1}}
-\def\pcol at set@color at elt#1{\def\current at color{#1}\let\aftergroup\@gobble
-  \pcol at set@color}
+\def\pcol at restorecolorstack{\pcol at restorecst\pcol at colorins}
+\def\pcol at restorecst{%
+  \def\reserved at a##1{\unvbox##1}\def\reserved at b##1{\unvcopy##1}%
+  \pcol at scancst}
 
-\def\pcol at savecolorstack{{\let\@elt\relax
-  \xdef\pcol at colorstack@saved{\pcol at colorstack@full}}}
-\def\pcol at colorstack@full{%
+\def\pcol at scancst#1{%
+  \@tempcnta#1\relax
+  \ifnum\@tempcnta=\pcol at colorins
+    \ifvoid\pcol at ccuse{@box}\else
+      \reserved at b{\pcol at ccuse{@box}}\fi
+  \fi
+  \ifvoid\@tempcnta\else
+    \setbox\@tempboxa\vbox{}\setbox\pcol at tempboxa\vbox{}\@tempcntb\z@
+    \def\reserved at b{}\let\@elt\relax \@tempswatrue \pcol at iscancst
+    \global\setbox\@tempcnta\box\@tempboxa \unvbox\pcol at tempboxa
+  \fi}
+\def\pcol at iscancst{%
+  \setbox\@tempcnta\vbox{%
+    \unvbox\@tempcnta \global\setbox\pcol at tempboxb\lastbox}%
+  \ifvoid\pcol at tempboxb \let\reserved at c\relax
+  \else
+    \let\reserved at c\pcol at iscancst
+    \ifdim\ht\pcol at tempboxb=\z@
+      \ifdim\wd\pcol at tempboxb=\z@ \advance\@tempcntb\@ne
+      \else \edef\reserved at b{\@elt{\number\wd\pcol at tempboxb}\reserved at b}%
+      \fi
+    \else\ifdim\dp\pcol at tempboxb=\z@
+      \ifdim\wd\pcol at tempboxb=\z@
+        \ifnum\@tempcntb>\z@ \advance\@tempcntb\m at ne
+        \else
+          \setbox\@tempboxa\vbox{\copy\pcol at tempboxb \unvbox\@tempboxa}%
+          \setbox\pcol at tempboxa\vbox{%
+            \reserved at a\pcol at tempboxb \unvbox\pcol at tempboxa}%
+        \fi
+      \else
+        \count@\wd\pcol at tempboxb \chardef\reserved at d\z@
+        \def\@elt##1{\ifnum##1=\count@ \chardef\reserved at d\@ne \fi}%
+        \reserved at b \let\@elt\relax
+        \ifnum\reserved at d=\z@
+          \setbox\@tempboxa\vbox{\copy\pcol at tempboxb \unvbox\@tempboxa}%
+          \setbox\pcol at tempboxa\vbox{%
+            \reserved at a\pcol at tempboxb \unvbox\pcol at tempboxa}%
+        \fi
+      \fi
+    \else\if at tempswa
+      \ifvoid\pcol at ccuse{@box}%
+        \@next\@currbox\@freelist{\global\setbox\@currbox\vbox{}}\pcol at ovf
+        \pcol at ccxdef{\@currbox}\reset at color
+      \fi
+      \global\setbox\pcol at ccuse{@box}\vbox{\unvbox\pcol at tempboxb}%
+      \@tempswafalse
+    \fi\fi\fi
+  \fi
+  \reserved at c}
+
+\def\pcol at savecolorstack{%
+  \ifvoid\pcol at colorins \@tempswafalse \else \@tempswatrue \fi
+  \ifvoid\pcol at ccuse{@box}%
+    \setbox\@tempboxa\box\voidb at x
+  \else
+    \setbox\@tempboxa\vbox{\unvcopy\pcol at ccuse{@box}}%
+    \ht\@tempboxa1sp \dp\@tempboxa\z@ \wd\@tempboxa\z@
+    \@tempswatrue
+  \fi
+  \if at tempswa
+    \global\setbox\pcol at colorstack@saved\vbox{%
+      \ifvoid\@tempboxa\else \box\@tempboxa \fi
+      \ifvoid\pcol at colorins\else \unvcopy\pcol at colorins \fi}
+  \else \global\setbox\pcol at colorstack@saved\box\voidb at x
+  \fi}
+
+\def\pcol at ccuse#1{\@nameuse{pcol at columncolor#1\number\pcol at currcol}}
+\def\pcol at ifccdefined#1#2{%
   \expandafter\ifx\csname pcol at columncolor\number\pcol at currcol\endcsname\relax
-    \@empty
-  \else \@nameuse{pcol at columncolor\number\pcol at currcol}\fi
-  \pcol at colorstack}
+  #2\else#1\fi}
+\def\pcol at ccxdef#1{%
+  \expandafter\xdef
+    \csname pcol at columncolor@box\number\pcol at currcol\endcsname{#1}}
 
 %% Special Output Routines: Footnote Handling
 
@@ -1339,6 +1351,7 @@
 \def\pcol at getmpbelt#1#2{%
   \ifdim#1sp<\@tempdima
     \global\@mparbottom#2sp\relax \@cons\pcol at mpblist{{#1}{#2}}%
+    \ifdim\@tempdima<#2sp\relax \@tempdima#2sp\relax \fi
   \else
     \@tempdimc\@tempdima \advance\@tempdimc\@tempdimb
     \ifdim#1sp<\@tempdimc
@@ -1539,7 +1552,7 @@
     \ifpcol at lastpage \ifx\@deferlist\@empty \ifdim\@colroom<\@fpmin
       \@tempswafalse \global\@toproom\maxdimen
     \fi\fi\fi
-    \if at tempswa \global\setbox\@currbox\vbox{\pcol at makefcolpage} \fi
+    \if at tempswa \global\setbox\@currbox\vbox{\pcol at makefcolpage}\fi
   \fi}
 \def\pcol at makefcolelt#1{%
   \@tempdimb\ht#1{}\advance\@tempdimb\dp#1{}\advance\@tempdimb\@tempdimc
@@ -1548,7 +1561,7 @@
   \else \@cons\@toplist#1\relax
     \advance\@tempdima-\@tempdimb \global\advance\@colroom\@tempdimb
   \fi}
-\def\pcol at makefcolpage{\vbox to\@colht{
+\def\pcol at makefcolpage{\vbox to\@colht{%
     \vskip\@fptop \vskip-\@fpsep
     \def\@elt##1{\vskip\@fpsep\box##1}\@toplist \vskip\@fpbot}%
   \pcol at Fb
@@ -1624,7 +1637,7 @@
           \textfloatsep\z@ \floatsep\z@ \let\topfigrule\relax
         \fi
         \pcol at Fb
-        \@next\pcol at float\@freelist{\global\setbox\pcol at float\vbox to\z@{
+        \@next\pcol at float\@freelist{\global\setbox\pcol at float\vbox to\z@{%
           \vskip-\floatsep \topfigrule \vskip\textfloatsep
           \unvbox\@currbox \vss}}\pcol at ovf
         \pcol at Fe{synccolumn(topfloat)}%
@@ -1638,12 +1651,12 @@
       \global\pcol at prevdepth\@tempdimc
       \ifdim\pcol at textfloatsep=\maxdimen
         \global\pcol at textfloatsep\textfloatsep \fi
-      \global\setbox\@currbox\vbox{
+      \global\setbox\@currbox\vbox{%
         \ifdim\@tempdimb<\topskip
-          \vbox to\topskip{\unvbox\@currbox \vskip\z@\@plus.0001fil}
+          \vbox to\topskip{\unvbox\@currbox \vskip\z@\@plus.0001fil}%
           \vskip-\topskip \vskip\@tempdimb
         \else
-          \vbox to\@tempdimb{\unvbox\@currbox \vskip\z@\@plus.0001fil}
+          \vbox to\@tempdimb{\unvbox\@currbox \vskip\z@\@plus.0001fil}%
         \fi}%
     \fi
   \fi
@@ -1922,13 +1935,17 @@
     \pcol at Fe{output at end(pagefn)}%
   \fi
   \ifvoid\pcol at topfnotes\else \insert\footins{\unvbox\pcol at topfnotes}\fi
-  \expandafter\let\csname pcol at columncolor\number\z@\endcsname\relax
-  \pcol at currcol\z@ \pcol at restorecolorstack
-  \@whilenum\pcol at currcol<\pcol at ncol\do{%
+  \pcol at currcol\z@ \@whilenum\pcol at currcol<\pcol at ncol\do{%
     \pcol at Fb
     \pcol at getcurrcol \@cons\@freelist\@currbox
+    \ifvoid\pcol at ccuse{@box}\else
+      \@cons\@freelist{\pcol at ccuse{@box}}%
+      \pcol at ccxdef{\voidb at x}%
+    \fi
     \pcol at Fe{output at end(col)}%
    \advance\pcol at currcol\@ne}%
+  \pcol at currcol\z@ \pcol at restorecolorstack
+  \global\setbox\pcol at colorins\box\voidb at x
   \pcol at currcol\pcol at lastcol\relax \pcol at getcurrcol
   \global\pcol at prevdepth\@pagedp
   \global\@colht\textheight
@@ -2013,8 +2030,7 @@
     \let\pcol at bg@paintbox\pcol at bg@@paintbox
     \let\pcol at bg@paintcolumns\pcol at bg@@paintcolumns
   \fi
-  \gdef\pcol at colorstack{}%
-  \gdef\pcol at colorstack@buf{}\gdef\pcol at colorstack@shadow{}%
+  \gdef\pcol at colorstack@shadow{}%
   \pcol at footnotebase\c at footnote \global\pcol at nfootnotes\z@
   \let\footnote\pcol at footnote
   \let\footnotemark\pcol at footnotemark
@@ -2636,72 +2652,78 @@
     \begingroup
     \let\@elt\relax
     \ifx\pcol at paracol\paracol
-      \pcol at iicolumncolor{#1}{pcol at columncolor#2}{}%
-      \pcol at iicolumncolor{#1}{pcol at columncolor@shadow#2}{}%
+      \pcol at iicolumncolor{#1}{#2}%
     \else\ifnum#2=\pcol at currcol
-      \begingroup
-        \pcol at getshadowcc{#2}\let\pcol at colorstack\pcol at colorstack@shadow
-        \pcol at clearcolorstack
-        \pcol at iicolumncolor{#1}{pcol at colorstack@buf}{\pcol at colorstack@buf}%
-        \pcol at iicolumncolor{#1}{pcol at columncolor@shadow#2}{}%
-        \pcol at getshadowcc{#2}\pcol at restorecolorstack
-      \endgroup
-      \pcol at color@invokeoutput\pcol at op@cset\relax
+      \def\@elt##1{\reset at color}\pcol at scancst@shadow
+      \pcol at iicolumncolor{#1}{#2}%
+      \def\@elt##1{\def\current at color{##1}\let\aftergroup\@gobble
+        \pcol at set@color}%
+      \pcol at scancst@shadow
+      \setbox\@tempboxa\vbox{\let\set at color\pcol at set@color
+        \let\aftergroup\@gobble #1}%
+      \ht\@tempboxa1sp \dp\@tempboxa1sp \wd\@tempboxa\z@\relax
+      \insert\pcol at colorins{\box\@tempboxa}%
+      \ifvmode\if at nobreak \nobreak \fi\fi
     \else
-      \pcol at iicolumncolor{#1}{pcol at columncolor#2}{}%
-      \pcol at iicolumncolor{#1}{pcol at columncolor@shadow#2}{}%
+      \pcol at iicolumncolor{#1}{#2}%
+      \pcol at currcol#2\relax
+      \ifvoid\pcol at ccuse{@box}%
+        \@next\@currbox\@freelist{}\pcol at ovf
+        \pcol at ccxdef{\@currbox}%
+      \fi
+      \global\setbox\pcol at ccuse{@box}\vbox{\let\set at color\pcol at set@color
+        \let\aftergroup\@gobble #1}%
     \fi\fi
     \endgroup
   \fi\fi
   \ignorespaces}
-\def\pcol at iicolumncolor#1#2#3{\let\set at color\relax #1%
-  \expandafter\xdef\csname#2\endcsname{#3\@elt{\current at color}}}
-\def\pcol at getshadowcc#1{%
-  \expandafter\let\expandafter\reserved at a
-    \csname pcol at columncolor@shadow#1\endcsname
-  \expandafter\let\csname pcol at columncolor#1\endcsname\reserved at a}
+\def\pcol at iicolumncolor#1#2{{\let\set at color\relax #1%
+  \expandafter\xdef\csname pcol at columncolor#2\endcsname{\current at color}}}
+\def\pcol at scancst@shadow{%
+  \pcol at ifccdefined{\@elt{\pcol at ccuse{}}}\relax
+  \pcol at colorstack@shadow}
 
+\def\pcol at mcpushlimit{1000}
 \def\pcol at set@color at push{\pcol at set@color
-  \ifmmode\ifpcol at inner\else
-    \ifnum\pcol at mcid=\z@ \gdef\pcol at colorstack@mpushed{}\fi
-    \ifnum\pcol at mcid<\pcol at mcpushlimit\relax
+  \ifmmode\else\ifinner \pcol at innertrue \fi\fi
+  \ifpcol at inner\else
+    \ifmmode
+      \global\advance\pcol at mcid\@ne
+      \ifnum \pcol at mcid>\pcol at mcpushlimit\relax
+        \PackageError{paracol}{Too many coloring commands in math mode}\@ehb
+        \global\pcol at mdid\@ne
+      \fi
+      \@tempdima\pcol at mcid sp\relax
       \expandafter\aftergroup
         \csname pcol at reset@color at mpop@\number\pcol at mcid\endcsname
       \expandafter\xdef
         \csname pcol at reset@color at mpop@\number\pcol at mcid\endcsname
-          {\noexpand\pcol at reset@color at mpop
-            {\number\pcol at mcid}{\current at color}}%
-      \@tempcnta-\pcol at op@mcpush\relax \advance\@tempcnta-\pcol at mcid
-      \pcol at color@invokeoutput\@tempcnta\relax
-      \global\advance\pcol at mcid\@ne
+          {\noexpand\pcol at reset@color at mpop{\number\pcol at mcid}}%
     \else
-      \PackageError{paracol}{Too many coloring commands in math mode}\@ehb
-    \fi\fi
-  \else
-    \ifinner \pcol at innertrue \fi
-    \ifpcol at inner\else
-      \aftergroup\pcol at reset@color at pop
-      \let\pcol at elt@save\@elt \let\@elt\relax
-      \edef\pcol at colorstack@shadow{\pcol at colorstack@shadow
-        \@elt{\current at color}}%
-      \let\@elt\pcol at elt@save
-      \@cons\pcol at colorstack@buf{{\current at color}}%
-      \pcol at color@invokeoutput\pcol at op@cpush\pcol at fcwhyphenate
+      \aftergroup\pcol at reset@color at pop \@tempdima\z@
     \fi
+    \let\pcol at elt@save\@elt \let\@elt\relax
+    \edef\pcol at colorstack@shadow{\pcol at colorstack@shadow\@elt{\current at color}}%
+    \let\@elt\pcol at elt@save
+    \setbox\@tempboxa\vbox{\let\aftergroup\@gobble \pcol at set@color}%
+    \ht\@tempboxa1sp \dp\@tempboxa\z@ \wd\@tempboxa\@tempdima
+    \insert\pcol at colorins{\box\@tempboxa}\ifhmode \pcol at fcwhyphenate \fi
+    \ifvmode\if at nobreak \nobreak \fi\fi
   \fi}
 
-\def\pcol at reset@color at pop{\ifpcol at output
-  \pcol at color@invokeoutput\pcol at op@cpop\relax \fi}
-\def\pcol at reset@color at mpop#1#2{\@tempcnta-\pcol at op@mcpop\relax
-  \advance\@tempcnta-#1\relax
-  \pcol at color@invokeoutput\@tempcnta\relax}
-
-\def\pcol at color@invokeoutput#1#2{%
-  \ifvmode \pcol at color@invokeoutput at v{#1}%
-  \else \vadjust{\pcol at color@invokeoutput at v{#1}}\ifhmode #2\fi
+\def\pcol at reset@color at pop{%
+  \ifpcol at output
+    \setbox\@tempboxa\vbox{\reset at color}%
+    \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa\z@
+    \insert\pcol at colorins{\box\@tempboxa}%
+    \ifvmode\if at nobreak \nobreak \fi\fi
   \fi}
-\def\pcol at color@invokeoutput at v#1{\penalty-\@Miv \@tempdima\prevdepth
-  \vbox{}\prevdepth\@tempdima \penalty#1\relax}
+\def\pcol at reset@color at mpop#1{%
+  \setbox\@tempboxa\vbox{\reset at color}%
+  \ht\@tempboxa\z@ \dp\@tempboxa\z@ \wd\@tempboxa#1sp\relax
+  \insert\pcol at colorins{\box\@tempboxa}%
+  \ifvmode\if at nobreak \nobreak \fi\fi
+}
 
 \def\coloredwordhyphenated{\def\pcol at fcwhyphenate{\hskip\z@}}
 \def\nocoloredwordhyphenated{\let\pcol at fcwhyphenate\relax}



More information about the tex-live-commits mailing list