summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/paracol/ref.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/paracol/ref.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/paracol/ref.dtx')
-rw-r--r--macros/latex/contrib/paracol/ref.dtx1535
1 files changed, 1535 insertions, 0 deletions
diff --git a/macros/latex/contrib/paracol/ref.dtx b/macros/latex/contrib/paracol/ref.dtx
new file mode 100644
index 0000000000..4025a65d08
--- /dev/null
+++ b/macros/latex/contrib/paracol/ref.dtx
@@ -0,0 +1,1535 @@
+% \footnotelayout{m}
+% \columnratio{}
+% \section{Reference Manual}
+% \label{sec:ref}
+% \subsection{Environment \texttt{paracol}}
+% \label{sec:ref-paracol}
+%
+% \begin{description}
+% \item[\ENV{paracol}{\marg{num}\oarg{text}}]\mbox{}\par
+% The environment \env{paracol} contains \meta{body} typeset in \meta{num}
+% columns in parallel. The optional \meta{text} is put spanning all columns
+% prior to the multi-columned \meta{body}.
+% 
+% \begin{itemize}
+% \item
+% \changes{v1.2-2}{2013/05/11}
+% {Add a footnote mentioning page-wise footnotes merged with
+% pre-environment staff.}
+% \changes{v1.35-4}{2018/12/31}
+% {Add description of \cs{belowfootnoteskip}.}
+% 
+% The environment may start from \emph{any} vertical position in a page,
+% i.e., not necessary at the top of a page. The single-column
+% {\em\Uidx\preenv} of the {\em\Uidx\spage} in which \beginparacol{} lies
+% are naturally connected to the beginning part of \meta{body} in each
+% column, unless the page has footnotes\footnote{
+% 
+% With \Mgfnote{} layout shown in Section~\ref{sec:ref-scfnote}, the
+% footnotes in the single-column contents are merged with those in
+% \env{paracol} environment and are put at the bottom of the \spage{}
+% together as shown in this page.}
+% 
+% or bottom floats. If these kinds of bottom stuff exist, they are
+% put above the multi-columned \meta{body}, or the spanning \meta{text}
+% 
+% \UsageIndex{spanning text}
+% 
+% if provided, with a vertical skip of \!\textfloatsep! separating them if
+% bottom floats exist, or of \!\belowfootnoteskip! described in
+% Section~\ref{sec:ref-scfnote} if only footnotes exist. The
+% \emph{deferred} floats which have not yet appeared in the starting page
+% and thus will appear in the next or succeeding pages are considered as
+% \pwise{} floats given in the environment.
+%
+% \item
+% \changes{v1.2-5}{2013/05/11}
+% {Add an item to show that \string\texttt{paracol} can be enclosed in
+% a \string\texttt{list}-like environment.}
+% 
+% The environment can be enclosed in a \env{list}{\em-like environment} such
+% as \env{enumerate}, \env{itemize} and \env{description}. If so, \!\item!s
+% in each column are typeset using the parameters of the surrounding
+% environment such as \!\leftmargin! and \!\rightmargin!. For example, the
+% following short \env{paracol} environment is included in an \env{itemize}
+% for this and other \!\item!s in this page.
+% 
+% \begin{paracol}{2}
+% \item
+% This is the first \!\item! in the left column.
+%
+% \item
+% This is the second \!\item! in the left column followed by a
+% \!\switchcolumn!\footnote{.
+% 
+% This footnote is to show the footnotes in this page are merged.}.
+% \switchcolumn
+%
+% \item
+% This is the first \!\item! in the right column.
+%
+% \item
+% This is the second \!\item! in the right column.
+%
+% \item
+% This is the third and last \!\item! in the right column.
+% \end{paracol}
+% You are now seeing the switching to/from multi-columned and \env{itemize}d
+% texts are naturally connected with the last and this single-columned
+% sentences. You may feel the space between two columns above is too large
+% but it simply results from the large total \!\leftmargin!s of the outer
+% \env{description} and this \env{itemize}, which make the right column
+% shifted right. A simple remedy for this large space is to make
+% \!\columnsep! narrower, for example 0\,pt as shown below.
+% 
+% \columnsep0pt
+% \begin{paracol}{2}
+% \item
+% This \!\item! is wider than the last \!\item! above because
+% \!\columnsep! is 0\,pt.
+% \switchcolumn
+%
+% \item
+% Therefore, this \!\item! is shifted left a little bit to make
+% inter-column spece narrower.
+% \end{paracol}
+%
+% \item
+% All \Uidx\lcounter{}s in all columns are initialized to have the values at
+% \beginparacol{} on its first occurrence. On the second and succeeding
+% occurrences of \beginparacol, the \lcounter{}s in each column have the
+% value at the last \Endparacol, unless they are modified after the
+% \Endparacol. If a counter is modified (or declared by \!\newcounter!)
+% after the \Endparacol, the local versions of the counter in all columns
+% commonly have the value at \beginparacol.
+%
+% \item
+% \changes{v1.2-2}{2013/05/11}
+% {Add a footnote mentioning page-wise footnotes merged with
+% post-environment staff.}
+% 
+% The environment may end at \emph{any} vertical position in a page, i.e.,
+% the {\em\Uidx\postenv} being the single-column texts and others
+% following \Endparacol{} in the {\em\Uidx\lpage} of the environment may not
+% start from the top of a page. If any columns don't have deferred
+% \cwise{} floats and the most advanced {\em\Uidx\lcolumn} at
+% \Endparacol{} has neither of footnotes\footnote{
+% 
+% With \Mgfnote{} layout shown in Section~\ref{sec:ref-scfnote}, the
+% footnotes in the closing \env{paracol} environment are merged with those
+% in \postenv{} and are put at the bottom of the page{} together as shown in
+% this page.}
+% 
+% nor bottom floats, its bottom is naturally connected to the \postenv{}.
+% If the \lcolumn{} has these kinds of bottom stuff, they are put above the
+% \postenv{}, with a vertical skip of \!\textfloatsep! separating them if
+% bottom floats exist. All deferred \cwise{} floats given in the
+% environment are flushed before the \postenv{} appears, possibly creating
+% {\em\Uidx\fcolumn{}s} only with floats. On the other hand, deferred
+% \pwise{} floats given in the environment are considered as deferred
+% (single-) \cwise{} floats given just after \Endparacol.
+%
+% \item
+% The values of all \lcounter{}s in the leftmost column are used as the
+% initial values of them in the \postenv.
+%
+% \item
+% The \env{paracol} environment cannot be nested, or you will have an error
+% message of illegal nesting.
+%
+% \item
+% The commands \!\switchcolumn!, \!\synccounter!, \!\syncallcounters! and
+% \!\flushpage!, and environments \env{column}(|*|), \env{nthcolumn}(|*|),
+% \env{leftcolumn}(|*|) and \env{rightcolumn}(|*|) are {\em local} to
+% \env{paracol} environment and thus undefined outside the
+% environment\footnote{
+% 
+% Unless you dare to define them.}.
+% 
+% The command \!\clearpage! is of course usable outside and inside the
+% environment but its function inside is a little bit different from outside.
+% \end{itemize}
+%
+%
+%
+% \item[\ENV{paracol}{\oarg{numleft}\marg{num}\oarg{text}}]\mbox{}
+% \Item[\ENV{paracol}{\oarg{numleft}\texttt{*}\marg{num}\oarg{text}}]
+% \mbox{}\par
+% \changes{v1.3-2}{2013/09/17}
+% {Add description of parallel-paging.}
+% 
+% If a \beginparacol{} has the optional \meta{numleft} argument to specify
+% the number of leading columns $n_l$ together with the total $n$ given by
+% \meta{num}, columns in the environment are laid out across two adjacent
+% pages. In this {\em\Uidx\parapag{}e} typesetting, the first $n_l$ columns
+% are placed in the {\em left} page while remaining $n_r=n-n_l$ columns go to
+% the next {\em right} page. The pair of left and right pages is
+% considered as comprising a virtual {\em\Uidx\paired} page and thus shares
+% a common page number, unless {\em\Uidx\npaired} typesetting is specified
+% by the optional `|*|' following the optional \meta{numleft} argument. In
+% the \npaired{} \parapag{}ing, when the leading $n_l$ columns are put in a
+% page $p$, the trailing $n_r$ columns are in the page $p+1$.
+% 
+% \begin{itemize}
+% \item
+% All {\em\Uidx\pwstuff}, i.e., \Preenv{} and \postenv, \pwise{} floats,
+% \mctext{} and (\mgfnote{} or non-merged) \Scfnote{}s, are placed only in
+% left \parapag{}es leaving corresponding regions in right \parapag{}es
+% blank\footnote{
+% 
+% Someday the author could devise an advanced mechanism to exploit the space
+% in right \parapag{}es.}.
+%
+% \item
+% A \npaired{} left \parapag{}e is not necessary to be even-numbered, though
+% the printing tradition requires so if you naturally want to have a
+% \parapag{}e pair in a double spread. The page number given to the first
+% left \parapag{}e is simply the number of the page $p_1$ in which
+% \beginparacol{} reside, and that for the $k$-th left \parapag{}e is
+% $p_1+2(k-1)$\footnote{
+% 
+% Unless you make some change to \counter{page} counter.}.
+% 
+% Therefore, to make it sure $p_1$ is even, you might need to have an
+% ordinary page of blank, a title, etc., or to let \counter{page} counter have
+% an even number by \!\setcounter!, etc., before starting a \env{paracol}
+% environment.
+%
+% \item
+% Section~\ref{sec:ppts} shows examples of \parapag{}ing together with
+% related issues on two-sided typesetting.
+% \end{itemize}
+% \end{description}
+%
+%
+%
+% \subsection{Column-Switching Command and Environments}
+% \label{sec:ref-switchcolumn}
+%
+% \begin{description}
+% \item[\Midx{\!\switchcolumn!}\oarg{col}]\mbox{}
+% \Item[\Midx{\!\switchcolumn!}\oarg{col}\texttt{*}\oarg{text}]\mbox{}\par
+% The command switches columns from $i$ to $j$ where $i$ and $j$ is the
+% zero-origin ordinals of the columns from/to which we are leaving\slash
+% visiting respectively. Without the optional \meta{col}, $j=i+1\bmod n$
+% where $n$ is the number of columns given to \beginparacol, while
+% $j=\meta{col}$ with the optional argument. If the command (or
+% \oarg{col} if specified) is followed by a |*|, the \cswitch{} takes
+% place after \sync{}ation and, if specified, the optional spanning
+% \meta{text} is put.
+% 
+% \Index{spanning text}
+% 
+% \begin{itemize}
+% \item
+% Using \!\switchcolumn! in a \env{list}-like environment \emph{included} in
+% a \env{paracol} environment causes an ugly result without any error\slash
+% warning messages. This caution is effectual for all \csenv{}s too.
+%
+% \item
+% If $\meta{col}\notin\LBRP0n$, an error is reported and, if you dare to
+% continue, you will switch to the leftmost column 0.
+%
+% \item
+% The \sync{}ation point is set just below the last line of the \lcolumn{}
+% in a page $p$, partly taking deferred floats into account. That is, all
+% deferred floats are put in the pages up to $p-1$ and at the top of $p$ if
+% possible. Then, if a non-\lcolumn{} has footnotes and/or bottom floats
+% and they cannot be pushed down below the \sync{}ation point, the point is
+% moved to the next page top\footnote{
+% 
+% Or below top floats deferred to the page.}.
+%
+% \item
+% In a page having one or more \sync{}ation points, stretch and shrink
+% factors of all vertical spaces, such as those surrounding sectionning
+% commands, are ignored. Therefore, even if you specify \!\flushbottom!,
+% the page is typeset as if \!\raggedbottom! were specified.
+%
+% \item
+% After a \sync{}ation point is set, no top floats will be inserted in the page
+% having the point, thus they will be deferred to the next page or further one.
+% \end{itemize}
+%
+%
+%
+% \item[\ENV{column}{}]\mbox{}
+% \Item[\ENV{column*}{\oarg{text}}]\mbox{}\par
+% The environment \env{column} contains \meta{body} for the column next to
+% what we are in just before \!\begin!|{|\env{column}|}|. The starred
+% version \env{column*} does the same after \sync{}ation and, if specified,
+% the optional spanning \meta{text} is put.
+% 
+% \Index{spanning text}
+% 
+% \begin{itemize}
+% \item
+% The environments are almost equivalent to;
+% \begin{quote}
+% |{|\!\switchcolumn!\quad\meta{body}\quad\CSIndex{par}|}|\\
+% |{|\!\switchcolumn!|*|\oarg{text}\quad\meta{body}\quad\CSIndex{par}|}|
+% \end{quote}
+% except for their first occurrences which don't switch to the column 1
+% (i.e., right column if two-columned) but stay in the leftmost column 0.
+% More precisely, \!\begin!|{|\env{column}(|*|)|}| does not make \cswitch{}
+% if it is not preceded by \!\switchcolumn! nor other \csenv{}s.
+%
+% \item
+% The \meta{body} of the environments cannot have \!\switchcolumn! nor
+% \csenv{}s including \env{column}(|*|) themselves, or you will have an
+% error message of illegal use of command\slash environment.
+%
+% \item
+% Column-switching\index{column-switching} does not take place at
+% \!\end!|{|\env{column}(|*|)|}|. Therefore, texts following the
+% environments are put in the column in which \meta{body} resides until a
+% \cswitch{} command\slash environment is given.
+% \end{itemize}
+%
+%
+%
+% \item[\ENV{nthcolumn}{\marg{col}}]\mbox{}
+% \Item[\ENV{nthcolumn*}{\marg{col}\oarg{text}}]\mbox{}\par
+% The environment \env{nthcolumn} contains \meta{body} for the column
+% \meta{col}. The starred version \env{nthcolumn*} does the same after
+% \sync{}ation and, if specified, the optional spanning \meta{text} is put.
+% 
+% \Index{spanning text}
+% 
+% \begin{itemize}
+% \item
+% The environments are equivalent to;
+% 
+% \begin{quote}
+% |{|\!\switchcolumn!\oarg{col}\quad\meta{body}\quad\CSIndex{par}|}|\\
+% |{|\!\switchcolumn!\oarg{col}|*|\oarg{text}\quad
+% \meta{body}\quad\CSIndex{par}|}|
+% \end{quote}
+%
+% \item
+% The \meta{body} of the environments cannot have \!\switchcolumn! nor
+% \csenv{}s including \env{nthcolumn}(|*|) themselves, or you will have an
+% error message of illegal use of command\slash environment.
+%
+% \item
+% Column-switching\index{column-switching} does not take place at
+% \!\end!|{|\env{nthcolumn}(|*|)|}|. Therefore, texts following the
+% environments are put in the column in which \meta{body} resides until a
+% \cswitch{} command\slash environment is given.
+% \end{itemize}
+%
+%
+%
+% \KeepSpace{4}
+% \item[\ENV{leftcolumn}{}]\mbox{}
+% \Item[\ENV{leftcolumn*}{\oarg{text}}]\mbox{}
+% \Item[\ENV{rightcolumn}{}]\mbox{}
+% \Item[\ENV{rightcolumn*}{\oarg{text}}]\mbox{}\par\nobreak
+% The environment \env{leftcolumn} contains \meta{body} for the leftmost
+% column 0, while \env{rightcolumn} for the column 1 being the right column
+% in two-column typesetting. The starred versions \env{leftcolumn*} and
+% \env{rightcolumn*} do the same after \sync{}ation and, if specified, the
+% optional spanning \meta{text} is put.
+% 
+% \Index{spanning text}
+% 
+% \begin{itemize}
+% \item
+% The environments \env{leftcolumn}(|*|) are equivalent to;
+% 
+% \begin{quote}
+% \Env{nthcolumn}{\Arg{\texttt{0}}}\\
+% \Env{nthcolumn*}{\Arg{\texttt{0}}\oarg{text}}
+% \end{quote}
+% 
+% while \env{rightcolumn}(|*|) are equivalent to;
+% 
+% \begin{quote}
+% \Env{nthcolumn}{\Arg{\texttt{1}}}\\
+% \Env{nthcolumn*}{\Arg{\texttt{1}}\oarg{text}}
+% \end{quote}
+% 
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\thecolumn!}]\mbox{}\par
+% \changes{v1.3-5}{2013/09/17}
+% {Add description of \cs{thecolumn}.}
+% The command gives you the zero-origin ordinal of the column in which this
+% command appears. Therefore, the following code snip;
+% 
+% \begin{itemize}\item[]
+% |\begin{paracol}{3}|\\
+% |Column-\thecolumn.\switchcolumn|
+% |Column-\thecolumn.\switchcolumn|
+% |Column-\thecolumn.|\\
+% |\end{paracol}|
+% \end{itemize}
+% 
+% gives us the followings.
+% 
+% \par\medskip
+% \begin{paracol}{3}
+% Column-\thecolumn.\switchcolumn
+% Column-\thecolumn.\switchcolumn
+% Column-\thecolumn.
+% \end{paracol}
+% 
+% \begin{itemize}
+% \item
+% The command is {\em neither} a \LaTeX's counter nor \!\count! register of
+% native \TeX{}, and thus the value it keeps cannot be modified. However,
+% it can be used wherever an integer number is required or appropriate.
+% Therefore for example, \!\setcounter!|{mycounter}{|\!\thecolumn!|}| works
+% well to give the column ordinal to the counter |mycounter|.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\definecolumnpreamble!}\marg{col}\marg{pream}]\mbox{}\par
+% \changes{v1.35-5}{2018/12/31}
+% {Add description of \cs{definecolumnpreamble}.}
+% The command is to define the {\Uidx\colpream} \meta{pream} for the column
+% \meta{col}, which is inserted at every \cswitch{} to the column. More
+% specifically, the command let \!\switchcolumn! to \meta{col} act as if you
+% sepcify;
+% 
+% \begin{itemize}\item[]
+% \!\switchcolumn! $\arg{pream\ for\ col}$
+% \end{itemize}
+% 
+% and \csenv{}s such as \env{nthcolumn} act as if you specify;
+% 
+% \begin{itemize}\item[]
+% |\begin{nthcolumn}{|\meta{col}|}| $\arg{pream\ for\ col}$
+% 
+% \end{itemize}
+% 
+% \begin{itemize}
+% \item
+% \begingroup\hfuzz1.5pt
+% The optional \sptext{} of \!\switchcolumn!, \csenv{}s and \beginparacol{}
+% is considered to be in a virtual column $-1$, and thus if you need a
+% \Colpream{} for \sptext{}s do \!\definecolumnpreamble!|{-1}|\marg{pream}.
+% \par\endgroup
+%
+% \item
+% The command may appear in a \env{paracol} environment and, if so,
+% \meta{pream} is effective from the succeeding \cswitch{} to \meta{col}.
+%
+% \item
+% The definition of \meta{pream} is made globally.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\ensurevspace!}\marg{len}]\mbox{}\par
+% \changes{v1.3-5}{2013/09/17}
+% {Add description of \cs{ensurevspace}.}
+% 
+% The command tells the first \sync{}ing \cswitch{} command (i.e.,
+% \!\switchcolumn!\oarg{col}|*|) or environment (i.e., \env{column*}, etc.\@)
+% following this command that the page must be broken before \sync{}ation
+% unless the \sync{}ation point has the space of \meta{len} or more below it
+% in the page. If a \sync{}ation does not have the command after the
+% previous \sync{}ation, it is assumed that
+% \!\ensurevspace!|{|\!\baselineskip!|}| is given.
+% 
+% \begin{itemize}
+% \item
+% This command is to be used when a \sync{}ation point would be placed near
+% the bottom of a page $p$ and the space below it is not sufficient for a column
+% $c$ to put anything in the page, while another column $c'$ can have a few
+% lines in the page. If this happens, the first line after the \sync{}ation
+% should start at the top of the page $p+1$ in the column $c$, while that of
+% $c'$ is still in the page $p$, giving you an impression that the
+% \sync{}ation fails to align the top of all columns below it. The fact is,
+% however, the \sync{}ation point is properly established near at the bottom
+% of the page but the first line of $c$ needs some large space due to, for
+% example, the followings.
+% 
+% \begin{itemize}
+% \item
+% The line has unusually tall stuff including larger font letters.
+%
+% \item
+% The line has a footnote reference which is hardly apart from the
+% footnote, and thus the line and the footnote go to the next page together.
+%
+% \item
+% The parameter \!\clubpenalty! is too large (e.g., 10000) to break the
+% first and second lines into separate pages.
+%
+% \item
+% The first line follows a vertical space.
+% \end{itemize}
+%
+% \item
+% This manual itself has some instances of \!\ensurevspace! command in the
+% page \pageref{page:bfreude} and \pageref{page:efreude} in which each German
+% stanza is enclosed in \env{verse} and then \env{leftcolumn*} environments
+% and has \!\ensurevspace!|{2|\!\baselineskip!|}| before the \!\begin!ing of
+% the outer \env{leftcolumn*} because the first line of the stanza is
+% preceded by a vertical space inserted by \!\begin!|{|\env{verse}|}|. In
+% fact without \!\ensurevspace!, the first two lines of the sixth English
+% stanza would be in the page \pageref{page:bfreude}, while corresponding
+% German stanza go to the next page \pageref{page:efreude} as a whole, due
+% to the difference of the height of footnotes in each column, i.e., German
+% ones are taller than English ones to narrow the space for the German
+% column.
+%
+% \item
+% As the author does in the ``An die Freude/To Joy'' example, it is a good
+% tactics to have an \!\ensurevspace! with some vertical space larger than the
+% default \!\baselineskip! if it is sure that a column has a feature shown
+% above regardless of the position of the \sync{}ation point in question,
+% because the point goes up or down with revisions of your document and
+% using an \!\ensurevspace! for a \sync{}ation far above the page bottom is
+% perfectly harmless. Similarly, if you find a problem in a \sync{}ation
+% and add an \!\ensurevspace! to solve it, keeping the command attached is
+% recommended even when the \sync{}ation point moves up or down to make the
+% command unnecessary.
+% \end{itemize}
+% \end{description}
+%
+%
+%
+% \subsection{Commands for Column and Gap Width}
+% \label{sec:ref-colwidth}
+%
+% \begin{description}
+% \item[\Midx{\!\columnratio!}\Arg{$r_0,r_1,\cdots,r_k$}
+% {|[|$r'_0,r'_1,\cdots,r'_{k'}$|]|}]\mbox{}\par
+% \changes{v1.1}{2012/05/11}
+% {Add description of \cs{columnratio}.}
+% \changes{v1.3-2}{2013/09/17}
+% {Add descriptino of the optional argument of \cs{columnratio} for
+% parallel-paging.}
+% 
+% The command defines the width of each column by the fraction $r_i$ to
+% specify the portion which $i$-th ($i=0$ for the leftmost) column
+% occupies. More specifically, the width $\Midx{\w}_i$ of the $i$-th column
+% is defined as follows, where $W$ is \!\textwidth!, $S$ is \!\columnsep!,
+% and $n$ is the number of columns given to \beginparacol.
+% 
+% \begin{eqnarray*}
+% W'&=&W-(n-1)S\\
+% w_i&=&\cases{
+% r_iW'
+% \vrule height1.5\ht\strutbox depth1.5\dp\strutbox width0pt&$i\leq k$\cr
+% \displaystyle{(1-\sum_{j=0}^k r_j)W'\over n-(k+1)}&$i>k$}
+% \end{eqnarray*}
+% 
+% For a \env{paracol} environment with \parapag{}ing, $n$ is replaced with
+% $n_l$ for the columns in left \parapag{}es, while $n$ and $w_i$ are
+% replaced with $n_r$ and $w_{n_r+i}$ for those in right \parapag{}es.
+% Moreover, if the optional argument having $r'_0,r'_1,\cdots,r'_{k'}$ is
+% provided, $w_{n_r+i}$ for a column in right \parapag{}es is determined
+% by $r'_i$ and $k'$ instead of $r_i$ and $k$.
+% 
+% \begin{itemize}
+% \item
+% The equations above imply that $k<n-1$, $r_i>0$ and $\sum_{j=0}^k
+% r_j<1$. If $k\geq n-1$, $k$ is assumed to be $n-2$ and all $r_i$ such
+% that $i\geq n-1$ are ignored. If $r_i$ or its sum does not satisfy the
+% conditions, you will have an ugly result with ``Overfull'' messages.
+%
+% \item
+% The argument $r_0,r_1,\cdots,r_k$ can be empty to mean $k=-1$ to let all
+% column widths be $W'/n$ as default.
+%
+% \item
+% The setting of column width by the command takes effect in the |paracol|
+% environments following the command\footnote{
+% 
+% If the command is in a \texttt{paracol} environment, the command does not
+% affect the column widths of the environment but does the next ones, though
+% such usage is very unusual.}.
+% 
+% Therefore, though placing the command in the preamble is the most natural
+% way\footnote{
+% 
+% Or second most to not using it at all, of course.},
+% 
+% you may place this command between two |paracol| environments to change
+% the column layout for the second one even when they appear in a page as
+% shown in Section~\ref{sec:man-close}.
+%
+% \item
+% \changes{v1.2-5}{2013/05/11}
+% {Modify the description about \cs{linewidth} reflecting the fact
+% that \string\texttt{paracol} may be included in a
+% \string\texttt{list}-like environment.}
+% 
+% In the $i$-th column, \!\columnwidth! has $w_i$ and, for outermost
+% paragraphs in the column, \!\hsize! has $w_i$ as well. As for
+% \!\linewidth!, it has $w_i-(\!\textwidth!-l)$ where $l$ is what
+% \!\linewidth! had at \beginparacol{}, i.e., the \!\linewidth! for the
+% \env{list}-like environment surrounding \env{paracol} if any, or
+% \!\textwidth! otherwise.
+%
+% \item
+% You can specify width of each column and that of each {\em gap} between
+% two columns more detailedly by \!\setcolumnwidth! shown below. If your
+% document has both of \!\columnratio! and \!\setcolumnwidth! prior to a
+% \env{paracol} environment, the command given later is effective for the
+% environment.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\setcolumnwidth!}\Arg{$s_0,s_1,\cdots,s_k$}
+% {|[|$s'_0,s'_1,\cdots,s'_{k'}$|]|}]\mbox{}\par
+% \changes{v1.3-2}{2013/09/17}
+% {Add descriptino of \cs{setcolumnwidth}.}
+% 
+% The command defines the width of each column and that of each {\em gap}
+% between two columns by the column/gap specification $s_i$ for the $i$-th
+% column and the gap between it and the $(i{+}1)$-th column. More
+% specifically, $s_i$ has the form of $\hat w_i$ or $\hat w_i\,|/|\,\hat g_i$
+% where each of $\hat w_i$ and $\hat g_i$ is a proper glue including a
+% proper dimension, or an empty string to mean $\hat w_i=\!\fill!$ and $\hat
+% g_i=\!\columnsep!$, to determine the width of $i$-th column $\w_i$ and that
+% of $i$-th gap $\Midx{\gap}_i$ as follows, where $\mathit{nat}(x)$ is the
+% natural width of the glue $x$, $\mathit{str}(x)$ is the infinite stretch
+% factor of $x$, $W$ is \!\textwidth!, and $n$ is the number of columns
+% given to \beginparacol.
+% 
+% \begin{eqnarray*}
+% W'&=&\sum_{i=0}^{n-2}\big(\mathit{nat}(\hat w_i)+\mathit{nat}(\hat g_i)\big)+
+% \mathit{nat}(\hat w_{n-1})\\
+% F&=&\sum_{i=0}^{n-2}\big(\mathit{str}(\hat g_i)+\mathit{str}(\hat g_i)\big)+
+% \mathit{str}(\hat w_{n-1})\\
+% x_i&=&\cases{(W/W')\mathit{nat}(\hat x_i)&$W'\geq W\;\lor\;F\leq0$\cr
+% \mathit{nat}(\hat x_i)+(\mathit{str}(\hat x_i)/F)(W-W')&
+% $W'< W\;\land\;F>0$}
+% \qquad(x\in\{w,g\})
+% \end{eqnarray*}
+% That is, if the total of natural widths $W'$ is larger than \!\textwidth!
+% $W$ or there are no infinite stretch factors in the specification, given
+% widths are scaled down or up so that the scaled total is equal to $W$.
+% Otherwise, each width with an infinite stretch factor is extended
+% according to its ratio in the total stretch so that the stretched total is
+% equal to $W$.
+%
+% For a \env{paracol} environment with \parapag{}ing, $n$ is replaced with
+% $n_l$ for the columns in left \parapag{}es, while $n$, $w_i$ and $g_i$ are
+% replaced with $n_r$, $w_{n_r+i}$ and $g_{n_r+i}$ for those in right
+% \parapag{}es. Moreover, if the optional argument having
+% $s'_0,s'_1,\cdots,s'_{k'}$ is provided, $w_{n_r+i}$ and $g_{n_r+i}$ for a
+% column in right \parapag{}es are determined by $s'_i$ instead of $s_i$.
+% 
+% \begin{itemize}
+% \item
+% In \env{paracol} environments having $n$ columns, $s_i$ s.t.\ $i\geq n$
+% and $\hat g_{n-1}$ are ignored. On the other hand if $k<n-1$, it is
+% assumed $s_i$ is an empty string for all $i>k$.
+%
+% \item
+% Finite stretch factors and finite or infinite shrink factors in $\hat w_i$
+% and $\hat g_i$ are ignored.
+%
+% \item
+% Unlike \TeX's genuine glue addition, all infinite unit |fil|, |fill| and
+% |filll| are not distinguished in the summation for $F$. Also unlike
+% \TeX's genuine scaling of a glue primitive,
+% $f\!\fill!$ means $0\,|pt|\ |plus|\ f\,|fill|$ for convenience\footnote{
+% 
+% In \TeX's grammar, $f\!\fill!$ means a dimension rather than a glue and is
+% $0\,|pt|$ because the natural component of \!\fill! is 0.}.
+%
+% \item
+% The division $W/W'$ and $\mathit{str}(\hat x_i)/F$ can have some
+% arithmetic errors and thus the total of $w_i$ and $g_i$ may not be equal to
+% $W$ exactly but can be a little bit less than $W$. This small error is,
+% however, equally distributed to $g_i$ in typesetting of a page to make the
+% total width of columns and gaps is exactly $W$\footnote{
+% 
+% If we may ignore the arithmetic error inherent in \TeX.}.
+%
+% \item
+% All the specifications shown in the table below give us same results for a
+% \env{paracol} environment having three columns, providing
+% $\!\textwidth!=360\,|pt|$ and $\!\columnsep!=S=20\,|pt|$.
+% 
+% \par\hbox to\textwidth\bgroup\hfil
+% \nosv \def\|{\verb|}\small\arraycolsep0pt\def\arraystretch{1.1}
+% $\begin{array}[b]{l|ccccc}
+% s_0,s_1,s_2&w_0&g_0&w_1&g_1&w_2\rlap{ (in \texttt{pt})}\\\hline
+% \|50pt/20pt,100pt/40pt,150pt|&50&20&100&40&150\\
+% \|50pt,100pt/2\columnsep,150pt|&50&S&
+% 100&2S&150\\
+% \|50pt/\fill,100pt/2\fill,150pt|&50&(1/3)\cdot60&100&(2/3)\cdot60&150\\
+% \|,2\fill/2\columnsep,3\fill|&\ (1/6)\cdot300&S&
+% (2/6)\cdot300&2S&
+% (3/6)\cdot300\\
+% \|50pt/20,50pt plus 1fil/40pt,50pt plus 2fil |&
+% 50&20&50+(1/3)\cdot150&40&
+% 50+(2/3)\cdot150\\
+% \|5pt/2pt,10pt/4pt,15pt|&10\cdot5&10\cdot2&10\cdot10&10\cdot4&
+% 10\cdot15\\
+% \|100pt/40pt,200pt/80pt,300pt|&0.5\cdot100&0.5\cdot40&
+% 0.5\cdot200&0.5\cdot80&
+% 0.5\cdot300
+% \end{array}$\hfil\egroup
+%
+% \item
+% If your document has both of \!\columnratio! and \!\setcolumnwidth! prior
+% to a \env{paracol} environment, the command given later is effective for
+% the environment.
+% \end{itemize}
+% \end{description}
+%
+%
+%
+% \subsection{Commands for Two-Sided Typesetting and Marginal Note Placement}
+% \label{sec:ref-twoside}
+% \changes{v1.3-3}{2013/09/17}
+% {Add the sub-section ``Commands for Two-Sided Typesetting and Marginal
+% Note Placement''.}
+% \changes{v1.3-4}{2013/09/17}
+% {Add the sub-section ``Commands for Two-Sided Typesetting and Marginal
+% Note Placement''.}
+% \changes{v1.3-5}{2013/09/17}
+% {Add the sub-section ``Commands for Two-Sided Typesetting and Marginal
+% Note Placement''.}
+%
+% \begin{description}
+% \item[\Midx{\!\twosided!}{$|[|t_1t_2\cdots t_k|]|$}]\mbox{}\par
+% \changes{v1.3-3}{2013/09/17}
+% {Add description of \cs{twosided}.}
+% \changes{v1.3-4}{2013/09/17}
+% {Add description of \cs{twosided}.}
+% \changes{v1.3-5}{2013/09/17}
+% {Add description of \cs{twosided}.}
+% 
+% The command enables a set of two-sided typesetting features
+% $\Set{t_i}{t_i\in\{|p|,|c|,|m|,|b|\},\ 1\leq i\leq k}$ explicitly by the
+% optional argument, or all of the following four features as a whole
+% without the argument, in even-numbered pages.
+% 
+% \begin{description}
+% \item[|p|\rm(\textit{age})]
+% for ordinary two-sided paging, letting the left side margin be
+% \!\evensidemargin!, page headers be different from those in odd-numbered
+% pages with |headings| or |myheadings| page style, and \!\cleardoublepage!
+% leave an even-numbered page blank if it is used in an odd-numbered page.
+%
+% \item[|c|\rm(\textit{olumn})]
+% for {\em\Uidx\cswap} to \emph{print} columns in even-numbered pages in
+% reverse order. This feature is sometimes preferable in typesetting
+% especially with unbalanced parallel columns to make, for example, a wider
+% columns are always \emph{inside} while narrower ones are \emph{outside}.
+%
+% \item[|m|\rm(\textit{arginal text})]
+% to place marginal notes in the side margin opposite to that specified by
+% the command \!\marginparthreshold! discussed shortly.
+%
+% \item[|b|\rm(\textit{ackground painting})]
+% to make \bgpaint, shown in Section~\ref{sec:ref-bgpaint},
+% \emph{\mirror{}ed} so that, for example, a color specified for the left
+% margin is used to paint the right margin instead.
+% \end{description}
+% 
+% \begin{itemize}
+% \item
+% The feature |p| is also enabled by the |twoside| option of
+% \!\documentclass! with almost all classes including |article|, |book|,
+% |report|, etc. Though it is strongly recommended to make both settings by
+% \!\documentclass! and this command consistent, they can be inconsistent
+% resulting in lack of some expected functions. For example, enabling |p|
+% feature by \!\twosided! without |twoside| option in \!\documentclass!
+% makes the format of headers and footers in all pages same even with
+% \!\pagestyle!|{headings}|.
+%
+% \item
+% The \cswap{} enabled by the feature |c| is ineffective in \npaired{}
+% \parapag{}ing because it is meaningless\footnote{
+% 
+% Unless somebody tells the author it is meaningful.},
+% 
+% and thus silently ignored.
+%
+% \item
+% In ordinary single-column typesetting, marginal note swapping in
+% even-numbered pages is enabled by the |twoside| option, while it never takes
+% place in ordinary two-column typesetting. For marginal notes given in
+% \env{paracol} environments, however, swapping of them in
+% even-numbered pages is enabled by giving the feature |m| to \!\twosided!.
+%
+% \item\label{page:cswap}
+% The command has to be outside of \env{paracol} environments to decide the
+% action in the environments following them. If it appears in a
+% \env{paracol} environment, you will have a warning message saying it is
+% ignored.
+%
+% \twosided[c]\columnratio{0.6}\columnsep0pt
+% \begin{paracol}{2}
+% \hfuzz2pt
+% \item
+% Here is an example of column swapping. Since this page
+% \pageref{page:cswap} is odd, this wider column-0 with roman font is placed
+% in left side and thus inside at the begining, but now we are in an even
+% page in which this column is in right side.
+%
+% \switchcolumn
+% \item\it
+% This narrower, outside and italicized column-1 is at first in right
+% side but the page break has changed the position to the left.
+% \end{paracol}
+%
+% \item
+% \changes{v1.2-4}{2013/05/11}
+% {Add description of \cs{[no]swapcolumninevenpages}.}
+% \changes{v1.3-5}{2013/09/17}
+% {Remove description of \cs{[no]swapcolumninevenpages} but mention
+% they are still available.}
+% 
+% In old versions of \Paracol, namely 1.2 and its minor revisions 1.2x,
+% \cswap{} was controlled by lengthy commmands
+% \Midx{\!\swapcolumninevenpages!} and \Midx{\!\noswapcolumninevenpages!}.
+% Though they are still available and will be so forever for backward
+% compatibility, it is recommended to use \!\twosided! with or without the
+% feature |c|. The old versions also have a problem that \spanning{}
+% crossing a page boundary is placed incorrectly after the page break in it,
+% but this problem is solved by a fix incorporated in version 1.3.
+%
+% \item
+% It must be $t_i\in\{|p|,|c|,|m|,|b|\}$, or you will have an error message
+% of illegal two-siding feature.
+%
+% \item
+% Section~\ref{sec:ppts} shows examples of two-sided typesetting together
+% with related issues on \parapag{}ing.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\marginparthreshold!}$\Arg{k}{|[|k'|]|}$]\mbox{}\par
+% \changes{v1.3-4}{2013/09/17}
+% {Add description of \cs{marginparthreshold}.}
+% 
+% The command specifies the minimum ordinal $k$ of columns whose marginal
+% notes are placed in right margin. That is, marginal notes given in a
+% column-$i$ go to left margin if $i<k$, while they go to right if $i\geq
+% k$. The optional argument $k'$, if given, is for columns in right
+% \parapag{}es to decide the margin where their marginal notes are placed.
+% In default, $k=1$ is assumed to let marginal notes from the leftmost
+% column-0 go to left margin while those from other columns go to right.
+% 
+% \begin{itemize}
+% \item
+% You may specify $k=0$ to let all marginal notes go to right margin, or may
+% give the command a large number, say 100, to place all of them in left
+% margin.
+%
+% \item
+% The setting $k=0$ or $k=100$ above makes a side margin \emph{shared} by
+% marginal notes from different columns, and sharing is inevitable when a
+% (parallel-) page has three or more columns. When a margin is shared by
+% marginal notes from two or more columns, it can happen that two marginal
+% notes from different columns conflict over the space to be occupied by each
+% of them. This conflict is solved by \Paracol{} to push down the note
+% given later in your source |.tex| until an available space for it is
+% found. Note that the marginal note to be pushed down is determined by the
+% position in the source rather than that in the printed result. Also note
+% that \Paracol{} exploits space between two marginal notes having been
+% already placed in the placement of other note coming later to place it at
+% the natural position if possible or to minimize the amount of pushing down
+% otherwise.
+%
+% \item
+% In the decision of the real margin in which a marginal note is placed,
+% other two factors are involved; |m| feature of \!\twosided! command and
+% the parity of the page; and \LaTeX's genuine command \!\reversemarginpar!.
+% More specifically, after the first preliminary decision is made according
+% to the threshold given to \!\marginparthreshold!, we have the following
+% two steps to modify the decision; if |m| feature has been specified in
+% \!\twosided! command and the marginal note belongs to an even-numbered
+% page, the decision is reversed to have the second preliminary result; and
+% then if \!\reversemarginpar! has been specified, the second result is
+% reversed (again) to have the final result.
+%
+% \item
+% In old versions of \Paracol, namely older than 1.3, marginal note
+% placement was not only uncontrollable but also gave ugly results when your
+% document has three or more columns because the marginal notes from a column
+% not being leftmost or rightmost were placed in the gap following the
+% column rather than a margin. This miserable {\em gap note} placement does
+% not happen any more, or in other words this is no more available because
+% the author believes nobody loves it.
+%
+% \item
+% Section~\ref{sec:ppts} shows examples of marginal note placement together
+% with related issues on \parapag{}ing and two-sided typesetting.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\marginnote!}\oarg{left}\marg{right}\oarg{voffset}]\mbox{}\par
+% \changes{v1.35-3}{2018/12/31}
+% {Add description of \cs{marginnote}.}
+% You may use the package \textsf{marginnote} and its command \!\marginnote!
+% in \env{paracol} environments as a replacement of \!\marginpar!. However,
+% the command is \emph{emulated} with \!\marginpar! and \textsf{paracol}'s
+% own mechanism of marginal note placement. Therefore, some of
+% \textsf{marginnote}'s functionality are not effective in \env{paracol}
+% environment except for the following features.
+% 
+% \begin{itemize}
+% \item
+% Shifting up/down a marginal note by the optional \meta{voffset}.
+%
+% \item
+% Defining fonts (and others) for marginal notes by \!\marginfont!.
+%
+% \item
+% Controlling the holizontal paragraph alignment by \!\raggedleftmarginnote!
+% and |\raggedright|\~|marginnote|\SpecialIndex{\raggedrightmarginnote}.
+% \end{itemize}
+% 
+% Note that you will see a warning message ``|\margninnote| is emulated by
+% |\marginpar|'' at the first in-\env{paracol} occurrence of the command to
+% let you know the imperfection.
+% \end{description}
+%
+%
+%
+% \subsection{Commands for Counters}
+% \label{sec:ref-counter}
+%
+% \begin{description}
+% \item[\Midx{\!\globalcounter!}\marg{ctr}]\mbox{}
+% \Item[\Midx{\!\globalcounter!}\texttt{*}]\mbox{}\par
+% \changes{v1.32-1}{2015/10/10}
+% {Add descriptions of \cs{globalcounter*}.}
+% 
+% The command \!\globalcounter!\marg{ctr} declares that the counter
+% \meta{ctr} is global to all columns, while \!\globalcounter!|*| does so
+% for all counters. An update of a \Uidx\gcounter{} in a column is seen by
+% any other columns.
+% 
+% \begin{itemize}
+% \item
+% All column-local values of a descendant \lcounter{} of a \gcounter{} are
+% zero-cleared when the \gcounter{} is explicitly stepped by \!\stepcounter!
+% or \!\refstepcounter!, or implicitly by a sectioning command and so on.
+%
+% \item
+% The counter \counter{page} is always global but an explicit update of it
+% by e.g., \!\setcounter! in a non-leftmost column is not seen by other
+% columns and is canceled even for the column itself after a \cswitch{} or a
+% page break in the column. Therefore, if you want to make a \emph{jump} of
+% \counter{page}, it must be done in the leftmost column 0. Note that a
+% jump from a page $p$ to $q$ can be seen in other columns even if they have
+% gone beyond $p$ \emph{before} the column 0 makes the jump, as far as
+% \counter{page} having $q$ (or its successor) is referred to by \!\pageref!
+% or through \emph{contents} files such as |.toc|\footnote{
+% 
+% Direct reference to \counter{page} may give an inconsistent result, as you
+% might have in ordinary \LaTeX{} documents.}.
+%
+% \item
+% All counters except for \counter{page} are local by default. This feature
+% may cause a problem with some packages including \textsf{marginnote} and
+% \textsf{(auto-)pst-pdf} having their own counters which must be global.
+% Since it is tough to find the name of such counters from package sources,
+% if you have something wrong with these (or other) packages, try to put
+% \!\globalcounter!|*| in your preamble and use \!\localcounter! shown below
+% to localize specific counters which you need to be local.
+%
+% \item
+% Globalizing a \meta{ctr} being already global is just ignored without any
+% complaints.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\localcounter!}\marg{ctr}]\mbox{}\par
+% The command declares that the counter \meta{ctr} is local for each column.
+% 
+% \begin{itemize}
+% \item
+% Though this command is intended for localizing a \meta{ctr} which is once
+% globalized, localizing a local counter does not causes any error but is
+% just ignored. Localizing the permanently global \counter{page} is also
+% just ignored without any complaints.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\definethecounter!}\marg{ctr}\marg{col}\marg{rep}]\mbox{}\par
+% The command defines |\the|\meta{ctr} being \marg{rep} for the local use in
+% the column \meta{col}. That is, |\the|\meta{ctr} in the column \meta{col}
+% acts as if it is defined by
+% \!\renewcommand!\Arg{\cs{the}\meta{ctr}}\Arg{\meta{rep}}.
+%
+%
+%
+% \item[\Midx{\!\synccounter!}\marg{ctr}]\mbox{}\par
+% The command \emph{broadcasts} the value of the \lcounter{} \meta{ctr} in
+% the column in which the command appears to the values in all other columns.
+%
+% \item[\Midx{\!\syncallcounters!}]\mbox{}\par
+% The command broadcasts the values of all \lcounter{}s in the column in
+% which the command appears to the values in all other columns.
+% \end{description}
+%
+%
+%
+% \subsection{Page-Wise Footnotes}
+% \label{sec:ref-scfnote}
+% \changes{v1.2-2}{2013/05/11}
+% {Add the sub-section ``Single-Columned Footnotes'' to describe newly
+% introducerd commands for page-wise footnotes.}
+% \changes{v1.3-5}{2013/09/17}
+% {Rename the sub-section title from ``Single-Columned Footnotes'' to
+% ``Page-Wise Footnotes'' following new naming.}
+%
+% \begin{description}
+% \item[\Midx{\!\footnotelayout!}\marg{layout}]\mbox{}\par
+% The command specifies the \meta{layout}${}\in\{|c|,|p|,|m|\}$ of footnotes
+% in \env{paracol} environments as follows.
+% 
+% \begin{description}
+% \item[|c|\rm(\textit{olumn})] makes footnotes {\em\Uidx\mcfnote} (aka
+% multi-columned) being default to place footnotes in each column at the
+% bottom of the column and separating them from \Preenv{} and \Postenv{}
+% footnotes.
+%
+% \item[|p|\rm(\textit{age})] makes footnotes {\em\Uidx\scfnote} (aka
+% single-columned) so that footnotes in all columns are gathered, typeset
+% spanning all columns, and placed at the bottom of the page in which they
+% appear or at the end of the \env{paracol} environment they belong to, so
+% that they are separated from \Preenv{} and \Postenv{} footnotes.
+%
+% \item[|m|\rm(\textit{erge})] makes \Scfnote{}s {\em\Uidx\mgfnote} with
+% footnotes in outside of the environment but in the same page, i.e., those
+% in \Preenv{} and \postenv.
+% \end{description}
+%
+% 
+% \begin{itemize}
+% \item
+% An example of \Mgfnote{} is found in p.~\pageref{sec:ref-paracol} while
+% you will see many of them in Section~\ref{sec:fnnp}\footnote{
+% 
+% The left-column footnote \ref{fn:flush} in p.~\pageref{fn:flush} looks like
+% a merged footnote because it is at the bottom of the page and the marked
+% text is above the single-column text. However, it is an ordinary
+% \mcfnote{} one produced by a trick with \cs{footnotemark} and
+% \cs{footnotetext} in different \env{paracol} environments.}.
+%
+% \item
+% In any layouts, a footnote cannot have page breaks in it, i.e., a footnote
+% is always put in a page as a whole. This makes it impossible to have a
+% footnote taller than \!\textheight! and thus you will see a warning
+% message if you give a very long footnote which will be printed intruding
+% into the area for page footer (or out of the paper bound).
+%
+% \item
+% Choosing the layout |p|age-wise or |m|erged makes \counter{footnote}
+% counter global and \!\fncounteradjustment! shown below performed inside
+% \!\footnotelayout!. Choosing |c|olumn-wise let the command do the
+% operations oppositely, i.e., localizes \counter{footnote} and does
+% \!\nofncounteradjustment!. Though these settings are usually appropriate
+% for each footnote layout but you can override them by explicitly using
+% commands like \!\localcounter!|{footnote}|.
+%
+% \item
+% The command has to be outside of \env{paracol} environments to decide the
+% action in the environments following them. If it appears in a
+% \env{paracol} environment, you will have a warning message saying it is
+% ignored.
+%
+% \item
+% \changes{v1.3-5}{2013/09/17}
+% {Remove description of \cs{multicolumnfootnotes},
+% \cs{singlecolumnfootnotes}, \cs{mergedfootnotes} but mention they
+% are still available.}
+% 
+% In old versions of \Paracol, namely 1.2 and its minor revisions 1.2x,
+% footnote layout was controlled by a set of lengthy commands
+% \Midx{\!\multicolumnfootnotes!} for |c|, \Midx{\!\singlecolumnfootnotes!}
+% for |p|, and \Midx{\!\mergedfootnotes!} for |m|.
+% Though they are still available and will be so forever for backward
+% compatibility, it is recommended to use \!\footnotelayout!\footnote{
+% 
+% Not only for type saving but also for being familiar with this command
+% which could have some advanced feature, for example to put gathered
+% footnotes into a specific column, someday.}.
+%
+% % \item
+% It must be $\meta{layout}\in\{|c|,|p|,|m|\}$, or you will have an error
+% message of illegal layout specifier.
+% \end{itemize}
+%
+%
+%
+% \KeepSpace{5}
+% \item[\Midx{\!\footnote!}\texttt{*}\oarg{num}\marg{text}]\mbox{}
+% \Item[\Midx{\!\footnotemark!}\texttt{*}\oarg{num}]\mbox{}
+% \Item[\Midx{\!\footnotetext!}\texttt{*}\oarg{num}\marg{text}]\mbox{}\par
+% The starred version of \!\footnote!, \!\footnotemark! and \!\footnotetext!
+% are for the adjustment of the footnote numbering, the order of footnote
+% marks in main texts, and the stacking order of footnotes at page
+% bottom. Their usages with various examples are given in
+% Section~\ref{sec:fnnp}.
+%
+%
+%
+% \KeepSpace{3}
+% \item[\Midx{\!\fncounteradjustment!}]\mbox{}
+% \Item[\Midx{\!\nofncounteradjustment!}]\mbox{}\par
+% The maintenance of \counter{footnote} with the starred footnote commands
+% such as \!\footnote!|*| shown above causes out-of-order progress of the
+% counter to make it hard to have a consistent counter value at
+% \Endparacol. The command \!\fncounteradjustment! is to let \Endparacol{}
+% adjust the value of the counter based on its value at
+% \beginparacol{} and the number of footnote commands in the environment.
+% The command \!\nofncounteradjustment! is to tell \Endparacol{} to do
+% nothing as in default.
+%
+% \begin{itemize}
+% \item
+% Though \!\footnotelayout! with |p|(age-wise) or |m|(erged) argument does
+% \!\fncounteradjustment! while that with |c|(olumn) does
+% \!\nofncounteradjustment! inside of it, you can override these settings by
+% explicitly putting a counter adjustment command after \!\footnotelayout!.
+%
+% \item
+% The effect of \!\fncounteradjustment! is shown in Section~\ref{sec:fnnp}.
+% \end{itemize}
+%
+%
+% \item[\Midx{\!\belowfootnoteskip!}]\mbox{}\par
+% \changes{v1.35-4}{2018/12/31}
+% {Add description of \cs{belowfootnoteskip}.}
+% The typesetting parameter specifies the amount of the space inserted below
+% footnotes of single-column \preenv{} if it does not have bottom floats. The
+% default amount is 0\,pt, i.e., no space is added.
+%
+% \end{description}
+%
+%
+% \KeepSpace{6}
+% \subsection{Commands for Coloring Texts and Column-Separating Rules}
+% \label{sec:ref-tcolor}
+% \changes{v1.3-3}{2013/09/17}
+% {Rename the sub-sectoin title from ``Commands for Text Coloring'' to
+% ``Commands for Coloring Texts and Column-Separating Rules'' to
+% add description of the rule coloring together with the rule
+% drawing itself.}
+%
+% \begin{description}
+% \item[\Midx{\!\columncolor!}\oarg{mode}\marg{color}\oarg{col}]\mbox{}
+% \Item[\Midx{\!\normalcolumncolor!}\oarg{col}]\mbox{}\par
+% \changes{v1.2-1}{2013/05/11}
+% {Add description of \cs{columncolor} and \cs{normlcolumncolor}.}
+% 
+% The command \!\columncolor! declares that the \emph{default color} of a
+% column is \meta{color} or what it specifies by the combination with the
+% optional \meta{mode}. The command \!\normalcolumncolor! declares the
+% default color is what \!\normalcolor! specifies, i.e., black usually. The
+% target column of these commands is that in which the commands reside, or
+% \meta{col} if it specified.
+% 
+% \begin{itemize}
+% \item
+% The command may be outside of \env{paracol} environment. If so and
+% \meta{col} is not provided, the target column is the leftmost 0.
+%
+% \item
+% The default color declaration is \emph{global}. Therefore, even if the
+% command appears in a \env{paracol} environment (and even in some grouping
+% structure in it), the declaration will be kept effective after
+% \Endparacol{} to determine the default color of the specified column in
+% succeeding \env{paracol} environments.
+%
+% \item
+% To give a color to texts (and maybe other stuff) in a column correctly,
+% you need to load \textsf{color} package or its relative (e.g.,
+% \textsf{xcolor}) which the implementation of coloring in \textsf{paracol}
+% relies on.
+%
+% \item
+% Coloring with \!\color!\oarg{mode}\marg{color} and other coloring commands
+% in \env{paracol} environments is of course allowed. One caution is that
+% the \!\color! decides the color for following texts until other
+% specification is given or the group surrounding the command is closed.
+% Therefore, \!\switchcolumn! does not affect the coloring but a color given
+% to the texts in a column is also applied to the texts in the column to be
+% switched to. This irrelativeness of coloring and \cswitch{} is shown in
+% the example below.
+%
+% \twosided[]\columnratio{0.5}\columnsep0pt
+% \tolerance5000\hbadness5000
+% \begin{paracol}{2}
+% \columncolor{blue}
+% This column is colored blue because\\
+% \mbox{}\qquad \!\columncolor!|{blue}|\\
+% is specfied. Here we have a \!\switchcolumn!.
+% \switchcolumn
+% \columncolor{red}
+% This column is colored red because\\
+% \mbox{}\qquad\!\columncolor!|{red}|\\
+% is specified.
+%
+% \begin{color}{green}
+% Now the color of the right column is changed to green because\\
+% \mbox{}\qquad\!\begin!|{color}{green}|\\
+% is given prior to this paragraph. Now we have another \!\switchcolumn! to
+% go back to the left.
+% \switchcolumn
+% The color of this paragraph is green because we are still in the
+% environment of green coloring, which we are now closing.\par
+% \end{color}%
+%
+% Since the coloring environment has been closed, the color of this
+% paragraph is the default blue. Now we have yet another and the last
+% \!\switchcolumn! to the right.
+% \switchcolumn
+% Since this paragraph is outside of the coloring environment, its color is
+% the default red.
+% \end{paracol}
+%
+% \normalcolumncolor[0]\normalcolumncolor[1]
+% The default coloring of columns does not affect anything outside of
+% \env{paracol} environment of course, and thus this sentence is not
+% colored\footnote{
+% 
+% Or colored black as \cs{normalcolor} specifies.}.
+% \end{itemize}
+%
+%
+%
+% \KeepSpace{4}
+% \item[\Midx{\!\coloredwordhyphenated!}]\mbox{}
+% \Item[\Midx{\!\nocoloredwordhyphenated!}]\mbox{}\par
+% \changes{v1.3-3}{2013/09/17}
+% {Add description of \cs{coloredwordhyphenated} and
+% \cs{nocoloredwordhyphenated}.}
+% 
+% The command \!\coloredwordhyphenated! allows the first word following a
+% coloring command such as \!\color! to be hyphenated, but at the same time
+% make it possible that a line is broken before the word. The command
+% \!\nocoloredwordhyphenated! acts oppositely and thus line breaking before
+% the first word and hyphenating it are inhibited. By default,
+% \!\coloredwordhyphenated! is effective.
+% 
+% \begin{itemize}
+% \item
+% The implementation of \textsf{color} package and its relatives makes it
+% impossible that \meta{word} is hyphenated when it appears like
+% |{|\!\color!|{red}|\meta{word} \ldots|}| or
+% \!\textcolor!|{|\meta{word} \ldots|}|. This inhibition of the hyphenation
+% is sometimes annoying especially when the document is multi-columned and
+% thus a line is narrow and a column is written in a language having long
+% words such as German. Therefore in \Paracol{} package, a trick is used to
+% allow the \meta{word} is hyphenated. However this trick being insertion
+% of a null horizontal space has a side effect that the word can have a line
+% break before it. Though this line break is usually unharmful, in a
+% special occasion the break is undesirable and
+% in\textcolor{red}{appropriate} by making it possible that the
+% \emph{half-colored} word `inappropriate' is broken between `in' and
+% `appropriate' without hyphenation. Therefore, if you find such a
+% inappropriate break, use \!\nocoloredwordhyphenated! as follows, for example.
+% \begin{quote}
+% |{\nocoloredwordhyphenated in\textcolor{red}{appropriate}}|
+% \end{quote}
+% \end{itemize}
+%
+%
+% \KeepSpace{4}
+% \item[\Midx{\!\colseprulecolor!}\oarg{mode}\marg{color}\oarg{col}]\mbox{}
+% \Item[\Midx{\!\normalcolseprulecolor!}\oarg{col}]\mbox{}\par
+% \changes{v1.3-3}{2013/09/17}
+% {Add description of \cs{colseprulecolor} and
+% \cs{normalcolseprulecolor}.}
+% 
+% The command \!\colseprulecolor! declares the color for
+% {\em\Uidx\cseprule{}s}, being the vertical rules drawn at the center of
+% gaps between columns, is \meta{color} or what it specifies by the
+% combination with the optional \meta{mode}. The command
+% \!\normalcolseprulecolor! declares the color of rules is what
+% \!\normalcolor! specifies, i.e., black usually. If the optional argument
+% \meta{col} is given, these commands specifies the color of the rule in the
+% gap following the column whose ordinal is \meta{col}, rather than all rules.
+% 
+% \begin{itemize}
+% \item
+% The rules are drawn if \LaTeX's typesetting parameter \!\columnseprule!
+% for the rule width has non-zero value, e.g., 0.4\,|pt| to obey the
+% standard rule thickness. The rules are \emph{not} drawn on \pwstuff{},
+% i.e., \Preenv{} and \postenv, \pwise{} floats or (\mgfnote{} or
+% non-merged) \Scfnote{}s of course but also \mctext{}s. Therefore, if a
+% page has \mctext{}s, the rules are {\em broken} by them as shown in the
+% red rule example below.
+% \global\unitlength\@totalleftmargin
+% \end{itemize}
+% \end{description}
+%
+% \columnseprule0.4pt\colseprulecolor{red}[1]\colseprulecolor{white}[0]
+% \setcolumnwidth{\unitlength/0pt}
+% \begin{paracol}{3}\switchcolumn\noindent
+% This is a left column paragraph preceding a \mctext. Of cource the rule
+% separating this and the next column starts from the top of this paragraph.
+% \switchcolumn\noindent
+% This is a right column paragraph preceding a \mctext{} given by the
+% \!\switchcolumn!|*| at its end.
+% \switchcolumn[1]*[\subsubsection*{\hbox to\unitlength{}
+% An Example of Spanning Text Given by \cs{subsubsection}|*| Command}]
+% Since we have a \mctext{} above, the red rule separating this and the next
+% column is broken by the text.
+% \switchcolumn
+% It is also natural that the rule separating this and the previous column is
+% terminated at the end of this \env{paracol} environment.
+% \end{paracol}
+% \columnseprule0pt\columnratio{}
+% 
+% \begin{description}
+% \Item[]\mbox{}
+% \begin{itemize}
+% \Item
+% To give a color to rules correctly, you need to load \textsf{color}
+% package or its relative (e.g., \textsf{xcolor}) which the implementation
+% of coloring in \textsf{paracol} relies on.
+%
+% \item
+% Once you give a color to rules in a specific gap with the optional
+% \meta{col}, another \!\colseprulecolor! or \!\normalcolseprulecolor!
+% without \meta{col} does \emph{not} change the color of the rule in the
+% gap.
+% \end{itemize}
+% \end{description}
+%
+%
+%
+% \KeepSpace{7}
+% \subsection{Commands for Background Painting}
+% \label{sec:ref-bgpaint}
+% \changes{v1.3-3}{2013/09/17}
+% {Add the sub-section ``Commands for Background Painting.}
+%
+% \begin{description}
+% \item[\Midx{\!\backgroundcolor!}\marg{region}\oarg{mode}\marg{color}]
+% \mbox{}\par
+% \Item[\Midx{\!\backgroundcolor!}
+% \Arg{\meta{region}$|(|x_0|,|y_0|)|$}\oarg{mode}\marg{color}]
+% \mbox{}\par
+% \Item[\Midx{\!\backgroundcolor!}
+% \Arg{\meta{region}$|(|x_0|,|y_0|)||(|x_1|,|y_1|)|$}
+% \oarg{mode}\marg{color}]
+% \mbox{}\par
+% \changes{v1.3-3}{2013/09/17}
+% {Add description of \cs{backgroundcolor}.}
+% 
+% The command declares that {\em\Uidx\bgpaint} of \meta{region} is performed
+% with \meta{color} or what it specifies by the combination of the optional
+% \meta{mode}. The \meta{region} whose \bground{} is painted is one of the
+% following.
+% 
+% \begin{description}
+% \item[|c|\rm(\textit{olumn})] for all columns, or particular one if
+% \meta{region} is |c|\oarg{col} to specify its ordinal \meta{col}.
+%
+% \item[|g|\rm(\textit{ap})] for all gaps between columns, or particular one
+% if \meta{region} is |g|\oarg{col} to specify the ordinal \meta{col} of the
+% column preceding the gap.
+%
+% \item[|s|\rm(\textit{panning})] for \mctext{}s.
+%
+% \item[|f|\rm(\textit{loat})] for \pwise{} floats.
+%
+% \item[|n|\rm(\textit{ote})] for (\mgfnote{} or non-merged) \Scfnote{}s.
+%
+% \item[|p|\rm(\textit{re/post})] for \Preenv{} and \postenv.
+%
+% \item[|t|\rm(\textit{op})] for top margin.
+%
+% \item[|b|\rm(\textit{ottom})] for bottom margin.
+%
+% \item[|l|\rm(\textit{eft})] for left margin.
+%
+% \item[|r|\rm(\textit{ight})] for right margin.
+% \end{description}
+% 
+% In addition, capitals of the keys above, i.e., |C|, |G|, \ldots, |L|, are
+% also legitimate for {\em under painting}. For example, you may specify to
+% paint the \bground{} of a region, say top margin, by two
+% \!\backgroundcolor! with |t| and |T| and with different color arranging the
+% size of the region of either |t| or |T| (or both of them) by the
+% \emph{\bgext} option shown below.
+%
+% The optional $|(|x_0|,|y_0|)|$ is to enlarge the region to be painted
+% shifting its left-top and right-bottom corner outside by
+% the dimension $x_0$ horizontally and $y_0$ vertically, or to shrink it
+% with negative dimensions. This {\em\Uidx\bgext} can be asymmetric giving
+% another optional $|(|x_1|,|y_1|)|$ so that it acts on the right-bottom
+% corner while let $|(|x_0|,|y_0|)|$ shift only the left-top corner.
+% Moreover, you may make each \bgext{} {\em infinite} by giving 10000\,|pt|
+% (about 3.5\,m) to $x_0$, $y_0$, $x_1$ and/or $y_1$ so that the
+% corresponding region edge is shifted to the paper edge. Furthermore, this
+% {\em\Uidx\bginfext{}} can be terminated at the point $\alpha$ inside the
+% corresponding paper edge by giving $10000\,|pt|-\alpha$
+% ($\alpha\leq1000\,|pt|$) to an extension parameter $x_0$, etc.
+% 
+% \begin{itemize}
+% \item
+% A region whose color is not specified is not painted and thus left blank
+% (or kept as painted by \!\pagecolor! if you specify it).
+%
+% \item
+% Under-painting of columns and gaps by |C| and |G| is made for regions
+% different from those over-painting |c| and |g|. That is, under-painting
+% is done ignoring all \pwstuff{} and thus the height of the regions is
+% always $\!\textheight!+\!\maxdepth!$. On the other hand, over-painting is
+% only for chunks shrunk or separated by \pwstuff.
+%
+% \item
+% You may exploit the following painting order, where $x_i$
+% is the $i$-th \mctext{} ($x\in\{|s|,|S|\}$) or $i$-th chunk followed by
+% the $i$-th \mctext, $m$ and $n$ is the number of \mctext{}s and columns in
+% a page respectively, to overlay a preceding region with a succeeding
+% region, if your \emph{printer} allows overlaid color painting.
+% 
+% \begin{eqnarray*}
+% |T|&\to&|B|\to|L|\to|R|
+% \to|G[|0|]|\to\cdots\to|G[|n{-}1|]|\to|C[|0|]|\to\cdots\to|C[|n{-}1|]|\\
+% &\to&|t|\to|b|\to|l|\to|r|\to|N|\to|n|\to\{|F|,|P|\}\to\{|f|,|p|\}
+% \to|S|_1\to\cdots\to|S|_m\\
+% &\to&|g|_1|[|0|]|\to\cdots|g|_1|[|n{-}2|]|\to
+% |c|_1|[|0|]|\to\cdots|c|_1|[|n{-}1|]|\to|s|_1\\
+% &\to&\cdots\\
+% &\to&|g|_m|[|0|]|\to\cdots|g|_m|[|n{-}2|]|\to
+% |c|_m|[|0|]|\to\cdots|c|_m|[|n{-}1|]|\to|s|_m\\
+% &\to&|g|_{m+1}|[|0|]|\to\cdots|g|_{m+1}|[|n{-}2|]|\to
+% |c|_{m+1}|[|0|]|\to\cdots|c|_m|[|n{-}1|]|
+% \end{eqnarray*}
+%
+% \item
+% If you specify |b| feature by \!\twosided!, \bgpaint{} is
+% {\em\Uidx\mirror{}ed} in even-numbered pages so that |l| and |L| mean
+% right margin, |r| and |R| mean left margin, and asymmetric extensions are
+% applied to right-top and left-bottom corners.
+%
+% \item
+% To give a color for \bgpaint{} correctly, you need to load \textsf{color}
+% package or its relative (e.g., \textsf{xcolor}) which the implementation
+% of coloring in \textsf{paracol} relies on.
+%
+% \item
+% To paint margins and regions having infinite extension correctly, the
+% parameters \!\paperwidth! and \!\paperheight! should be set properly by,
+% for example, a paper selection option of \!\documentclass!.
+%
+% \item
+% Section~\ref{sec:bgpaint} shows examples of \bgpaint{} to give you more
+% intutive explanations of \!\backgroundcolor! and its region specifications.
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\nobackgroundcolor!}\marg{region}]\mbox{}
+% \Item[\Midx{\!\resetbackgroundcolor!}]\mbox{}\par
+% \changes{v1.3-3}{2013/09/17}
+% {Add description of \cs{nobackgroundcolor} and
+% \cs{resetbackgroundcolor}.}
+% 
+% The command \!\nobackgroundcolor! declares that the \bground{} of
+% \meta{region} is not painted, where \meta{region} is one of legitimate
+% region specifiers of \!\backgroundcolor!. The command
+% \!\resetbackgroundcolor! declares no regions are painted and thus gives
+% you the default state.
+% 
+% \begin{itemize}
+% \item
+% If you specified the \bgpaint{} of |c|\oarg{col} or |g|\oarg{col} by
+% \!\backgroundcolor!, the painting is \emph{not} canceled by
+% \!\nobackgroundcolor! with |c| or |g| but without \oarg{col}. Similarly,
+% once you made declarations of \bgpaint{} of both |c| and |c|\oarg{col}
+% (resp.\ |g| and |g|\oarg{col}), \!\nobackgroundcolor! with |c|\oarg{col}
+% (resp.\ |g|\oarg{col}) cancels the painting of |c|\oarg{col} (resp.\
+% |g|\oarg{col}) but the region will still be painted by the color you gave
+% to |c| (resp.\ |g|).
+% \end{itemize}
+%
+%
+%
+% \item[\Midx{\!\pagerim!}]\mbox{}\par
+% \changes{v1.3-3}{2013/09/17}
+% {Add description of \cs{pagerim}.}
+% 
+% This is a (kind of) \emph{length command}\footnote{
+% 
+% In reality, it is a \cs{dimen} register rather than a \cs{skip} register.}
+% 
+% to have the width of the \emph{rim} area placed at each paper edge to
+% inhibit \bgpaint{} in the area. That is, the inner edges of the area are
+% considered as virtual paper edges to block painting of all margins and
+% regions having \bginfext{} to the edges, for example in order to
+% avoid printing troubles caused by painting the rim area too close to the
+% real paper edges. The default value of \!\pagerim! is 0 to allow paint
+% anywhere in a paper.
+% \end{description}
+%
+%
+%
+% \subsection{Control of Contents Output}
+% \label{sec:ref-contents}
+%
+% \begin{description}
+% \item[\Midx{\!\addcontentsonly!}\marg{file}\marg{col}]\mbox{}\par
+% The command inhibits the output of contents information to
+% $\meta{file}\in\{|toc|,|lof|,|lot|\}$ from columns other than \meta{col}.
+% 
+% \begin{itemize}
+% \item
+% For example, this manual has \!\addcontentsonly!|{toc}{0}| to
+% inhibit the contents information output from \!\subsection! commands
+% in the right column in Section~\ref{sec:env} and~\ref{sec:float},
+% or the table should have duplicated entries of sub-sections.
+%
+% \item
+% It must be $\meta{file}\in\{|toc|,|lof|,|lot|\}$, or you will have an
+% error message of illegal type of contents file.
+% \end{itemize}
+% \end{description}
+%
+%
+%
+% \subsection{Page Flushing Commands}
+% \label{sec:ref-flush}
+%
+% \begin{description}
+% \item[\Midx{\!\flushpage!}]\mbox{}\par
+% The command flushes pages up to the {\em\Uidx\tpage} in which the \lcolumn{}
+% resides. Deferred floats which can be put in the pages up to the \tpage{}
+% are also flushed.
+%
+% \item[\Midx{\!\clearpage!}]\mbox{}\par
+% The command does what \!\flushpage! does and then flushes all floats still
+% deferred if any. The deferred float flushing beyond the \tpage{} takes
+% place at first for \cwise{} ones creating \fcolumn{}s for them, and
+% then for \pwise{} ones creating {\em\Uidx\fpage{}s} only with
+% \pwise{} floats, as \LaTeX's \!\clearpage! does outside \env{paracol}
+% environment.
+%
+% \item[\Midx{\!\cleardoublepage!}]\mbox{}\par
+% \changes{v1.3-5}{2013/09/17}
+% {Add description of \cs{cleardoublepage}.}
+% The command does what \LaTeX's \!\cleardoublepage! does outside
+% \env{paracol}. That is, it does \!\clearpage! always and then leaves a
+% blank page if it is even-numbered and two-sided |p|(age) feature is
+% enabled by |twoside| option of \!\documentclass! or \Paracol's own
+% \!\twosided! command shown in Section~\ref{sec:ref-twoside}.
+% 
+% \begin{itemize}
+% \item
+% This command is equivalent to \!\clearpage! in \env{paracol} environments
+% for \npaired{} \parapag{}ing because \!\clearpage! flushes \emph{both}
+% left and right \parapag{}es.
+% \end{itemize}
+% \end{description}
+\endinput