texlive[46906] Master: nidanfloat (9mar18)

commits+karl at tug.org commits+karl at tug.org
Fri Mar 9 23:49:07 CET 2018


Revision: 46906
          http://tug.org/svn/texlive?view=revision&revision=46906
Author:   karl
Date:     2018-03-09 23:49:07 +0100 (Fri, 09 Mar 2018)
Log Message:
-----------
nidanfloat (9mar18)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/nidanfloat/
    trunk/Master/texmf-dist/doc/latex/nidanfloat/LICENSE
    trunk/Master/texmf-dist/doc/latex/nidanfloat/README.md
    trunk/Master/texmf-dist/doc/latex/nidanfloat/nidanfloat.pdf
    trunk/Master/texmf-dist/source/latex/nidanfloat/
    trunk/Master/texmf-dist/source/latex/nidanfloat/Makefile
    trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.dtx
    trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.ins
    trunk/Master/texmf-dist/tex/latex/nidanfloat/
    trunk/Master/texmf-dist/tex/latex/nidanfloat/nidanfloat.sty
    trunk/Master/tlpkg/tlpsrc/nidanfloat.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/nidanfloat/LICENSE
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nidanfloat/LICENSE	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nidanfloat/LICENSE	2018-03-09 22:49:07 UTC (rev 46906)
@@ -0,0 +1,28 @@
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2018 Japanese TeX Development Community
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of platex nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Added: trunk/Master/texmf-dist/doc/latex/nidanfloat/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nidanfloat/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/nidanfloat/README.md	2018-03-09 22:49:07 UTC (rev 46906)
@@ -0,0 +1,31 @@
+# nidanfloat
+
+This package enables bottom (`b`) placement option
+for double float in two column mode (nidan-kumi).
+This package was originally part of Japanese pLaTeX,
+and now is distributed as a separate package because
+it supports all LaTeX formats.
+The package was originally developed by ASCII MEDIA WORKS,
+and now maintained by Japanese TeX Development Community.
+
+## Changes from the original ASCII edition
+
+See the document (nidanfloat.pdf) for more information.
+
+- Fix several bugs in calculation of column height.
+
+## Repository
+
+The bundle is maintained on GitHub:
+https://github.com/texjporg/nidanfloat
+
+## License
+
+The bundle may be distributed and/or modified under the terms of
+the 3-clause BSD license (see [LICENSE](./LICENSE)).
+
+## Release Date
+
+2018-03-09
+
+Japanese TeX Development Community


Property changes on: trunk/Master/texmf-dist/doc/latex/nidanfloat/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/nidanfloat/nidanfloat.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/nidanfloat/nidanfloat.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/nidanfloat/nidanfloat.pdf	2018-03-09 22:47:41 UTC (rev 46905)
+++ trunk/Master/texmf-dist/doc/latex/nidanfloat/nidanfloat.pdf	2018-03-09 22:49:07 UTC (rev 46906)

Property changes on: trunk/Master/texmf-dist/doc/latex/nidanfloat/nidanfloat.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/nidanfloat/Makefile
===================================================================
--- trunk/Master/texmf-dist/source/latex/nidanfloat/Makefile	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/nidanfloat/Makefile	2018-03-09 22:49:07 UTC (rev 46906)
@@ -0,0 +1,51 @@
+STRIPTARGET = nidanfloat.sty
+DOCTARGET = nidanfloat
+PDFTARGET = $(addsuffix .pdf,$(DOCTARGET))
+DVITARGET = $(addsuffix .dvi,$(DOCTARGET))
+KANJI = -kanji=utf8
+FONTMAP = -f ipaex.map -f ptex-ipaex.map
+TEXMF = $(shell kpsewhich -var-value=TEXMFHOME)
+
+default: $(STRIPTARGET) $(DVITARGET)
+strip: $(STRIPTARGET)
+all: $(STRIPTARGET) $(PDFTARGET)
+
+NIDAN = nidanfloat.sty
+
+NIDAN_SRC = nidanfloat.dtx
+
+# for generating files, we use pdflatex incidentally.
+# current packages contain ASCII characters only, safe enough
+nidanfloat.sty: $(NIDAN_SRC)
+	rm -f $(NIDAN)
+	pdflatex nidanfloat.ins
+	rm nidanfloat.log
+
+.SUFFIXES: .dtx .dvi .pdf
+.dtx.dvi:
+	platex $(KANJI) $<
+	platex $(KANJI) $<
+	rm -f *.aux *.log *.toc
+.dvi.pdf:
+	dvipdfmx $(FONTMAP) $<
+
+.PHONY: install clean cleanstrip cleanall cleandoc
+install:
+	mkdir -p ${TEXMF}/doc/latex/nidanfloat
+	cp ./LICENSE ${TEXMF}/doc/latex/nidanfloat/
+	cp ./README.md ${TEXMF}/doc/latex/nidanfloat/
+	cp ./*.pdf ${TEXMF}/doc/latex/nidanfloat/
+	mkdir -p ${TEXMF}/source/latex/nidanfloat
+	cp ./Makefile ${TEXMF}/source/latex/nidanfloat/
+	cp ./*.dtx ${TEXMF}/source/latex/nidanfloat/
+	cp ./*.ins ${TEXMF}/source/latex/nidanfloat/
+	mkdir -p ${TEXMF}/tex/latex/nidanfloat
+	cp ./*.sty ${TEXMF}/tex/latex/nidanfloat/
+clean:
+	rm -f $(NIDAN) $(DVITARGET)
+cleanstrip:
+	rm -f $(NIDAN)
+cleanall:
+	rm -f $(NIDAN) $(DVITARGET) $(PDFTARGET)
+cleandoc:
+	rm -f $(DVITARGET) $(PDFTARGET)


Property changes on: trunk/Master/texmf-dist/source/latex/nidanfloat/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.dtx	2018-03-09 22:49:07 UTC (rev 46906)
@@ -0,0 +1,1137 @@
+% \iffalse
+%% File: nidanfloat.dtx
+%
+%  Copyright 1994 ASCII Co.
+%  Copyright (c) 2010 ASCII MEDIA WORKS
+%  Copyright (c) 2016-2017 Japanese TeX Development Community
+%
+%  This file is part of the pLaTeX2e system (community edition).
+%  -------------------------------------------------------------
+%
+% \fi
+%
+%
+% \setcounter{StandardModuleDepth}{1}
+%
+% \StopEventually{}
+%
+% \iffalse
+% \changes{v1.10}{1994/04/07}{platex2.09用}
+% \changes{v2.2}{1997/10/22}{platex2e用に修正}
+% \changes{v2.3}{2000/12/20}{一段抜きのフロートを混ぜるとエラーに
+%    なるのを修正(ありがとう、倉沢@QUIPUさん)}
+% \changes{v2.4}{2001/02/19}{最終ページで左右の行間が揃わない部分を修正}
+% \changes{v2.4}{2001/02/19}{柱が出ないのを修正}
+% \changes{v2.4}{2001/07/23}{ページの大きさが小さくなるのを修正}
+% \changes{v2.5}{2001/09/14}{パッケージオプション(balance,nobalance)を追加}
+% \changes{v2.6}{2003/05/15}{\cs{@fstype}を\cs{@fstyle}とタイプミスしていた
+%    のを修正(ありがとう、川上@航空宇宙研究所さん)}
+% \changes{v2.7}{2005/12/09}{必須フォーマットファイルをpLaTeX2eからLaTeX2eへ変更}
+% \changes{v2.8}{2017/05/01}{\cs{@rightfixht}を追加}
+% \changes{v2.8}{2017/05/01}{\cs{@outputbox}を作るときの
+%    \texttt{to \cs{@fixht}}の高さ指定をやめた}
+% \changes{v2.8}{2017/05/01}{\cs{vss}の位置を移動}
+% \changes{v2.8}{2017/05/01}{右カラム用の処理を丸ごと追加}
+% \changes{v2.8}{2017/05/01}{右カラムでは\cs{@rightfixht}の高さで
+%    組み立て、\cs{@colht}も更新するようにした}
+% \fi
+%
+% \iffalse
+\NeedsTeXFormat{LaTeX2e}
+%<*driver>
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesFile{nidanfloat.dtx}
+%</driver>
+%<core>\ProvidesPackage{nidanfloat}%
+  [2017/05/01 v2.8 Put double-floats at top/bottom within twocolumn mode]
+%
+%<*driver>
+\documentclass{jltxdoc}
+\GetFileInfo{nidanfloat.dtx}
+\title{TOP, BOTTOM指定が可能な2段抜きフロート\\
+  バージョン \space\fileversion}
+\date{作成日:\filedate}
+\author{中野 賢\footnote{株式会社 アスキー 出版技術部
+  (メールアドレス:ken-na at ascii.co.jp)}}
+\begin{document}
+  \maketitle
+  \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \file{nidanfloat}パッケージは、二段組時に段抜きのフロートをページ下部にも
+% 配置可能にする。もともとp\LaTeX{}の一部として配布されていましたが、
+% 全てのフォーマットをサポートできることから、
+% 2018年以降は独立して配布することにしました。
+%
+%\iffalse
+% The package \textsf{nidanfloat} enables bottom (|b|) placement option
+% for double float in two column mode (\emph{nidan-kumi}).
+% This package was originally part of Japanese \pLaTeX,
+% and now is distributed as a separate package because
+% it supports all \LaTeX\ formats.
+%\fi
+%
+% [TODO] This package needs adjustment for \LaTeXe\ 2015/01/01 changes
+% of the float order in two column mode!
+%
+% \section{コード}
+%
+% \subsection{パッケージオプション}
+% \changes{v2.5}{2001/09/14}{パッケージオプションを追加}
+% \file{nidanfloat}パッケージでは、最終ページの左右カラムの高さを
+% 均一に振り分けるようにしている。しかし、この機能の影響により、
+% 最終ページでの|\newpage|と|\clearpage|コマンドが正しく動作しない。
+% そこで、この機能を使うかどうかを指定するオプションを導入した。
+% パッケージ指定時にオプション``balance''を指定すると、
+% 最終ページの自動調整を行なうようになる。デフォルトでは行なわない。
+%    \begin{macrocode}
+%<*core>
+\DeclareOption{balance}{\AtEndDocument{\let\clearpage\balanceclearpage}}
+\DeclareOption{nobalance}{\relax}
+\ExecuteOptions{nobalance}
+\ProcessOptions
+%    \end{macrocode}
+%
+% \subsection{フロートパラメータ}
+% ここでは、段抜きのフロートをページ下部に置くために作成したパラメータに
+% ついて説明をする。
+%
+% \begin{macro}{\dblbotfraction}
+% 2段組時にページ下部に占めることのできる、二段抜きフロートの割合。
+% デフォルトは0.5、すなわちページ半分を占めることができるようにしている。
+%    \begin{macrocode}
+\newcommand\dblbotfraction{0.5}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c at dblbotnumber}
+% ページ下部に入れることのできる、二段抜きフロートの数。
+% デフォルトでは、二つの図を置くことができるようにしている。
+% |\c at dblbotnumber|はカウンタ|dblnumber|の内部形式。
+%    \begin{macrocode}
+\newcount\c at dblbotnumber
+\setcounter{dblbotnumber}{2}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@dblbotroom}
+% \begin{macro}{\@dblbotnum}
+% |\@dblbotroom|は、ページ下部に占めることのできる、
+% 二段抜きフロートの割合を示す長さ変数。
+% |\@dblbotnum|は、ページ下部に入れることのできる、
+% 二段抜きフロートの数を保持するカウンタ。
+%    \begin{macrocode}
+\newdimen\@dblbotroom
+\newcount\@dblbotnum
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dblfloatplacement}
+% 二段組用のフロートパラメータを設定するマクロを、新たに追加したパラメータ
+% も設定するように再定義する。
+%    \begin{macrocode}
+\def\@dblfloatplacement{%
+   \global\@dbltopnum\c at dbltopnumber
+   \global\@dblbotnum\c at dblbotnumber % added
+   \global\@dbltoproom\dbltopfraction\@colht
+   \global\@dblbotroom\dblbotfraction\@colht % added
+   \@textmin\@colht
+     \advance\@textmin-\@dbltoproom
+     \advance\@textmin-\@dblbotroom % added
+   \@fpmin\dblfloatpagefraction\textheight
+   \@fptop\@dblfptop
+   \@fpsep\@dblfpsep
+   \@fpbot\@dblfpbot
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{フロートリストへの登録}
+% 二段抜きフロートの定義は、クラスファイルで、つぎのようにして行なわれる。
+%\begin{verbatim}
+%    \newenvironment{figure*}
+%                   {\@dblfloat{figure}}
+%                   {\end at dblfloat}
+%\end{verbatim}
+% 文章中で|figure*|環境で囲まれた部分は、フロート保持用のリストに登録される。
+% この節では、段抜きフロートをページ下部にも置けるようにするために拡張した
+% マクロについて説明をする。
+%
+% \begin{macro}{\@dblbotlist}
+% \begin{macro}{\L at toplist}
+% \begin{macro}{\R at toplist}
+% \begin{macro}{\L at botlist}
+% \begin{macro}{\R at botlist}
+% 二段組のページ下部に置くフロートを保持するために|\@dblbotlist|を追加する。
+% また、カラムの上下に置くフロート用には、左側と右側で区別をするため、
+% |\L at toplist|, |\R at toplist|, |\L at botlist|, |\R at botlist|を追加する。
+%    \begin{macrocode}
+\gdef\@dblbotlist{}
+\gdef\L at toplist{}
+\gdef\R at toplist{}
+\gdef\L at botlist{}
+\gdef\R at botlist{}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dblfloat}
+% \begin{macro}{\@dbflt}
+% \begin{macro}{\end at dblfloat}
+% |\@dblfloat|から呼び出される、|\@dbflt|を再定義し、位置指定が省略された
+% ときのパラメータを``tb''とする。また、|\end at dblfloat|を|\end at float|にして、
+% 現在ページの下部にフロートを置けるようにする。
+%    \begin{macrocode}
+\def\@dblfloat{%
+  \if at twocolumn\let\reserved at a\@dbflt\else\let\reserved at a\@float\fi
+  \reserved at a}
+\def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tb]}}
+\def\@xdblfloat#1[#2]{%
+  \@xfloat{#1}[#2]\hsize\textwidth\linewidth\textwidth}
+\let\end at dblfloat\end at float
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\addtocurcol}
+% |\@xdblfloat|から呼び出された、|\@xfloat|は位置指定オプションの評価を行ない、
+% フロートオブジェクトの組み立てを開始する。
+% フロートオブジェクトの組み立ては|\end at float|で終了する。
+% |\end at float|は、ペナルティ値を$-10004$にして|\output|ルーチンを起動する。
+% この値での|\output|ルーチンは|\@specialoutput|を起動する。
+% |\@specialoutput|は|\@addtocurcol|を呼び出し、フロートの内容を現在ページに
+% 出力できるのならば出力をする。そうでなければ、別の可能性を探る。
+%    \begin{macrocode}
+\def\@addtocurcol{%
+%    \end{macrocode}
+% このパッケージの場合、段抜きのフロートが渡される可能性があるので、まず、
+% それをチェックする。フロートの幅がカラム幅よりも大きい場合は、強制的に
+% 段抜きフロートとして扱う。
+%    \begin{macrocode}
+  \ifdim\wd\@currbox>\columnwidth
+    \@addtodblcol
+  \else
+%    \end{macrocode}
+% それ以外の場合は、元の動作とほとんど同じである。
+%    \begin{macrocode}
+    \@insertfalse
+    \@setfloattypecounts
+    \ifnum\@fpstype=8 % is only `!p'
+    \else
+      \ifnum\@fpstype=24 % is only `p'
+      \else
+        \@flsettextmin
+        \advance\@textmin\@textfloatsheight
+        \@reqcolroom\@pageht
+        \ifdim\@textmin>\@reqcolroom \@reqcolroom\@textmin\fi
+        \advance\@reqcolroom\ht\@currbox
+        \ifdim\@colroom>\@reqcolroom
+          \@flsetnum\@colnum
+          \ifnum\@colnum>\z@
+            \@bitor\@currtype\@deferlist
+            \if at test
+            \else
+%    \end{macrocode}
+% ページ下部のフロートを保持しているフロートリストの名前が異なる。
+%    \begin{macrocode}
+              \@bitor\@currtype{\L at botlist\R at botlist}%
+              \if at test
+                \@addtobot
+              \else 
+                \ifodd\count\@currbox
+                  \advance\@reqcolroom\intextsep
+                  \ifdim\@colroom>\@reqcolroom
+                    \global\advance\@colnum\m at ne
+                    \global\advance\@textfloatsheight\ht\@currbox
+                    \global\advance\@textfloatsheight 2\intextsep
+                    \@cons\@midlist\@currbox
+                    \if at nobreak
+                      \nobreak
+                      \@nobreakfalse
+                      \everypar{}%
+                    \else
+                      \addpenalty \interlinepenalty
+                    \fi
+                    \vskip\intextsep
+                    \box\@currbox 
+                    \penalty\interlinepenalty
+                    \vskip\intextsep
+                    \ifnum\outputpenalty<-\@Mii \vskip-\parskip \fi
+                    \outputpenalty\z@ 
+                    \@inserttrue
+                  \fi
+                \fi
+                \if at insert\else\@addtotoporbot\fi
+              \fi
+            \fi
+          \fi
+        \fi
+      \fi
+    \fi
+    \if at insert\else\@resethfps\@cons\@deferlist\@currbox\fi
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@addtotoporbot}
+% フロートを保持しているリスト変数の修正。
+% \changes{v2.3}{2000/12/20}{%
+%    タイプミスの修正と\cs{@flcheckspace}の呼び出しを変更}
+%    \begin{macrocode}
+\def\@addtotoporbot{%
+  \@getfpsbit \tw@
+  \ifodd\@tempcnta
+    \@flsetnum\@topnum
+    \ifnum\@topnum>\z@
+      \@tempswafalse
+      \@flcheckspace\@toproom\@toplist\L at toplist\R at toplist
+      \if at tempswa
+        \@bitor\@currtype{\@midlist\L at botlist\R at botlist}%
+        \if at test\else
+          \if at firstcolumn
+            \@flupdates \@topnum \@toproom \L at toplist
+          \else
+            \@flupdates \@topnum \@toproom \R at toplist
+          \fi
+          \@inserttrue
+        \fi
+      \fi
+    \fi
+  \fi
+  \if at insert\else\@addtobot\fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@addtobot}
+% フロートを保持しているリスト変数の修正。
+% \changes{v2.3}{2000/12/20}{\cs{@flcheckspace}の呼び出しを変更}
+%    \begin{macrocode}
+\def\@addtobot{%
+  \@getfpsbit 4\relax
+  \ifodd\@tempcnta
+    \@flsetnum\@botnum
+    \ifnum\@botnum>\z@
+      \@tempswafalse
+      \@flcheckspace\@botroom\@botlist\L at botlist\R at botlist
+      \if at tempswa
+        \global\maxdepth\z@
+        \if at firstcolumn
+          \@flupdates \@botnum \@botroom \L at botlist
+        \else
+          \@flupdates \@botnum \@botroom \R at botlist
+        \fi
+        \@inserttrue
+      \fi
+    \fi
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\org at addtonextcol}
+% \begin{macro}{\@addtonextcol}
+% 挿入に失敗したフロートや`p'指定のフロートを出力するのに、
+% |\@startcolumn|で用いられる。このパッケージでは、カラム幅よりも大きい幅を
+% 持つフロートに対しては、段抜きフロートリストとして出力するようにしている。
+%    \begin{macrocode}
+\let\org at addtonextcol\@addtonextcol
+\def\@addtonextcol{%
+  \ifdim\wd\@currbox>\columnwidth
+    \@addtodblcol
+  \else
+    \org at addtonextcol
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@addtodblcol}
+% |\@addtodblcol|マクロは、フロートオブジェクトが現在ページに入るかどうか
+% を確認し、入るのであれば|\@addtodbltoporbot|を呼び出す。そうでなければ、
+% |\@dbldeferlist|に登録する。
+%
+% まず|@insert|フラグを偽にする。そして、フロートタイプを|\@fpstype|に得る。
+% フロートタイプが8または24の場合、位置オプションは`!p'か`p'だけであるので、
+% 無条件に|\@dbldeferlist|に加える。
+%    \begin{macrocode}
+\def\@addtodblcol{%
+  \begingroup
+  \@insertfalse
+  \@setfloattypecounts
+  \ifnum\@fpstype=8 % is only `!p'
+  \else
+    \ifnum\@fpstype=24 % is only `p'
+    \else
+%    \end{macrocode}
+% そうでなければ、同タイプのフロートで未出力のものがあるかどうかを確認する。
+% 同タイプのフロートでまだ出力していないものがある場合は、現在のフロートを
+% 出力しない。ただし、同タイプであってもカラム幅のフロートについては考慮
+% しない。出力することができるのならば、|\@addtodblbotortop|を呼び出す。
+%    \begin{macrocode}
+      \@bitor\@currtype{\@dbldeferlist}
+      %\@bitor\@currtype{\@deferlist\@dbldeferlist}
+      \if at test
+      \else
+        \@tempswafalse
+        \@checkdblspace
+        \if at tempswa
+          \@addtodbltoporbot
+        \fi
+      \fi
+    \fi
+  \fi
+  \if at insert\else\@cons\@dbldeferlist\@currbox\fi
+  \endgroup
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@addtodbltoporbot}
+% まず、`t'の指定があるかと、ページ上部に入れる数を越えていないかを確認する。
+%    \begin{macrocode}
+\def\@addtodbltoporbot{%
+  \@getfpsbit \tw@
+  \ifodd\@tempcnta
+    \@flsetnum\@dbltopnum
+    \ifnum\@dbltopnum>\z@
+%    \end{macrocode}
+% そして、ページ上部あるいは下部に同タイプのフロートが出力される可能性が
+% あるのかを調べる。二段組フロートは一段組フロートの上部に置かれることに注意。
+%    \begin{macrocode}
+      \@bitor\@currtype{%
+         \L at toplist\R at toplist\L at botlist\R at botlist\@dblbotlist}
+      \if at test
+      \else
+%    \end{macrocode}
+% 配置可能ならば、出力するだけのスペースがあるのかを確認する。
+%    \begin{macrocode}
+        \@tempswafalse
+        \@dblflcheckspace \@dbltoproom \@dbltoplist
+%    \end{macrocode}
+% スペースがあれば、段抜きフロートが上部に占めることのできる高さから、
+% その分を引く。また、上部に入れる段抜きフロートの数を減らし、
+% 上部段抜き用のフロートリストに登録をする。
+%    \begin{macrocode}
+        \if at tempswa
+          \@tempdima-\ht\@currbox
+          \advance\@tempdima
+           -\ifx\@dbltoplist\@empty \dbltextfloatsep\else\dblfloatsep\fi
+          \global\advance\@dbltoproom\@tempdima
+          \global\advance\@dbltopnum\m at ne
+          \@cons\@dbltoplist\@currbox
+%    \end{macrocode}
+% 左カラムのときは、カラムの高さ|\@colroom|からフロート分を引く。
+%    \begin{macrocode}
+          \if at firstcolumn
+            \advance\@colroom\@tempdima
+            \global\advance\@colroom\maxdepth
+%    \end{macrocode}
+% 右カラムのときは、新規の段抜きフロート分だけでなく、これを挿入すること
+% によって、左カラムから移動してくるテキストの高さも引く。
+%    \begin{macrocode}
+          \else
+            \@tempdima\textheight
+            \@chkdblfloatht\advance\@tempdima-\@floatht
+            \L at chkfloatht\advance\@tempdima-\@floatht
+            \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+            \setbox\z@=\vbox{\unvcopy\@leftcolumn}%
+            \setbox\@ne=\vsplit\z@ to\@tempdima
+            \advance\@colroom-\ht\z@
+            \global\advance\@colroom-\dp\z@
+          \fi
+%    \end{macrocode}
+% 最後に、|@insert|フラグを真にする。
+%    \begin{macrocode}
+          \@inserttrue
+        \fi
+      \fi
+    \fi
+  \fi
+  \if at insert\else\@addtodblbot\fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@addtodblbot}
+% ページ下部に段抜きフロートを置くときも、上部と同じである。
+% ただし、二段組フロートは最下部に置かれるので、他の出力用リストを調べる
+% 必要はないことが異なる。
+%    \begin{macrocode}
+\def\@addtodblbot{%
+  \@getfpsbit 4\relax
+  \ifodd\@tempcnta
+    \@flsetnum\@botnum
+    \ifnum\@botnum>\z@
+      \@tempswafalse
+      \@dblflcheckspace \@dbltoproom \@dbltoplist
+      \if at tempswa
+        \@tempdima-\ht\@currbox \advance\@tempdima
+           -\ifx\@dblbotlist\@empty \dbltextfloatsep\else\dblfloatsep\fi
+        \global\advance\@dblbotroom\@tempdima
+        \global\advance\@dblbotnum\m at ne
+        \@cons\@dblbotlist\@currbox
+        \if at firstcolumn
+          \advance\@colroom\@tempdima
+          \global\advance\@colroom\maxdepth
+        \else
+          \@tempdima\textheight
+          \@chkdblfloatht\advance\@tempdima-\@floatht
+          \L at chkfloatht\advance\@tempdima-\@floatht
+          \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+          \setbox\z@=\vbox{\unvcopy\@leftcolumn}%
+          \setbox\@ne=\vsplit\z@ to\@tempdima
+          \advance\@colroom-\ht\z@
+          \global\advance\@colroom-\dp\z@
+        \fi
+        \@inserttrue
+      \fi
+    \fi
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{フロートの高さを計算するマクロ}
+%
+% \begin{macro}{\@floatht}
+% |\@floatht|は、出力リストに格納されているフロートの高さを格納するのに用いる。
+%    \begin{macrocode}
+\global\newdimen\@floatht \@floatht\z@
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@flcheckspace}
+% \changes{v2.3}{2000/12/20}{状況別に場合わけするようにした}
+%    \begin{macrocode}
+\def \@flcheckspace #1#2#3#4{%
+   \advance \@reqcolroom
+  \if at twocolumn
+    \if at firstcolumn
+      \ifx #3\@empty \textfloatsep \else \floatsep \fi
+    \else
+      \ifx #4\@empty \textfloatsep \else \floatsep \fi
+    \fi
+  \else
+     \ifx #2\@empty \textfloatsep \else \floatsep \fi
+  \fi
+   \ifdim \@colroom>\@reqcolroom
+     \ifdim #1>\ht\@currbox
+       \@tempswatrue
+     \else
+       \ifnum \@fpstype<\sixt@@n
+         \@tempswatrue
+       \fi
+     \fi
+   \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@dblflcheckspace}
+% 段抜きフロートがページ上部あるいは下部に占めることのできる割合を越えて
+% いないかをチェックする。越えていなければ|\@tempswa|を真にする。
+% \changes{v2.6}{2003/05/15}{\cs{@fstype}を\cs{@fstyle}とタイプミスしていた}
+%    \begin{macrocode}
+\def\@dblflcheckspace#1#2{%
+  \@tempdima=#1\relax
+  \advance\@tempdima
+     -\ifx #2\@empty \dbltextfloatsep\else\dblfloatsep\fi
+  \ifdim\@tempdima>\ht\@currbox
+    \@tempswatrue
+  \else
+    \ifnum\@fpstype<\sixt@@n
+      \advance\@tempdima\@textmin
+      \if \@tempdima>\ht\@currbox
+        \@tempswatrue
+      \fi
+    \fi
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@checkdblspace}
+% 段抜きフロートと段抜きフロート間スペース(あるいは段抜きフロートとテキストと
+% の間のスペース)を入れる余裕があるかを調べる。
+%
+% まず、現在、組み立ててあるテキストの高さと、最小限入らなくてはならない
+% テキストの量とを比較し、大きいほうを|\@tempdima|に格納する。
+% 右カラムにいるときは、左カラムのテキストの高さも加える。
+%    \begin{macrocode}
+\def\@checkdblspace{%
+   \@tempdima\@pageht\advance\@tempdima\@pagedp
+   \@tempdimb\textfraction\@colht
+   \ifdim\@tempdima<\@tempdimb \@tempdima\@tempdimb\fi
+   \if at firstcolumn\else
+     \advance\@tempdima\ht\@leftcolumn
+     \advance\@tempdima\dp\@leftcolumn
+   \fi
+%    \end{macrocode}
+% そして、出力する予定のカラム幅フロートと段抜きフロートの高さを加える。
+% このとき、段抜き用のフロートの高さは二倍する。
+%    \begin{macrocode}
+   \L at chkfloatht\advance\@tempdima\@floatht
+   \R at chkfloatht\advance\@tempdima\@floatht
+   \@chkdblfloatht\advance\@tempdima\tw@\@floatht
+%    \end{macrocode}
+% それから、現在のフロートの高さと必要なスペースを加える。
+% このときも、それらの高さを二倍する。
+%    \begin{macrocode}
+   \@tempdimb\ht\@currbox\advance\@tempdimb\dp\@currbox
+   \advance\@tempdimb
+      \ifdim\@floatht>\z@ \dbltextfloatsep\else\dblfloatsep\fi
+   \multiply\@tempdimb\tw@ \advance\@tempdima\@tempdimb
+%    \end{macrocode}
+% これらすべての要素分の高さが|\textheight|の2倍よりも小さければ、
+% 現在のフロートを置くことができると判断する。
+%    \begin{macrocode}
+   \ifdim\@tempdima>\tw@\textheight
+     \@tempswafalse
+   \else
+     \@tempswatrue
+   \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tmp at comflelt}
+% \begin{macro}{\tmp at comdblflelt}
+% 出力リストに格納されているフロートの高さを計るために用いる。
+% それぞれ、|\@comfelt|, |\@comdblflelt|と同じだが、フロートの内容が
+% 失われないように|\copy|をしているのが異なる。
+%    \begin{macrocode}
+\def\tmp at comflelt#1{%
+  \setbox\@tempboxa
+  \vbox{\unvbox\@tempboxa\copy #1\vskip\floatsep}%
+}
+\def\tmp at comdblflelt#1{%
+  \setbox\@tempboxa
+  \vbox{\unvbox\@tempboxa\copy #1\vskip\dblfloatsep}%
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\L at chkfloatht}
+% \begin{macro}{\R at chkfloatht}
+% それぞれ、左カラムと右カラムに出力するフロートの高さを計算するのに用いる。
+% 計算結果は|\@floatht|に格納する。
+%    \begin{macrocode}
+\def\L at chkfloatht{\@floatht\z@
+  \ifx\L at toplist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\L at toplist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \unvbox\@tempboxa\vskip-\floatsep\topfigrule\vskip\textfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \ifx\L at botlist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\L at botlist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \global\@floatht\@floatht
+}
+\def\R at chkfloatht{\@floatht\z@
+  \ifx\R at toplist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\R at toplist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \unvbox\@tempboxa\vskip-\floatsep\topfigrule\vskip\textfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \ifx\R at botlist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\R at botlist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \global\@floatht\@floatht
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chkdblfloatht}
+% ページ上部と下部に出力する段抜きフロートの高さを計算し、
+% 結果を|\@floatht|に格納する。
+%    \begin{macrocode}
+\def\@chkdblfloatht{\@floatht\z@
+  \ifx\@dbltoplist\@empty\else
+    \let\@elt\tmp at comdblflelt\setbox\@tempboxa\vbox{}\@dbltoplist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \unvbox\@tempboxa
+        \vskip-\dblfloatsep
+        \dblfigrule
+        \vskip\dbltextfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \ifx\@dblbotlist\@empty\else
+    \let\@elt\tmp at comdblflelt\setbox\@tempboxa\vbox{}\@dblbotlist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \vskip\dbltextfloatsep
+        \dblfigrule
+        \unvbox\@tempboxa
+        \vskip-\dblfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \global\@floatht\@floatht
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{フロートとテキストのマージ}
+%
+% \begin{macro}{\@fixht}
+% |\@fixht|は、左カラムの高さを格納するのに用いる。
+%    \begin{macrocode}
+\global\newdimen\@fixht
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@rightfixht}
+% \emph{日本語\TeX{}開発コミュニティによる追加}:
+% |\@rightfixht|は、右カラムの高さを格納するのに用いる。
+% \changes{v2.8}{2017/05/01}{\cs{@rightfixht}を追加}
+%    \begin{macrocode}
+\global\newdimen\@rightfixht
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@combinefloats}
+% \changes{v2.4}{2001/07/23}{\cs{boxmaxdepth}を\cs{maxdepth}にしないようにした}
+% |\@combinefloats|は、カラム単位で、テキストとフロートをマージする。
+% このマクロは右カラムのときに実行する。
+%    \begin{macrocode}
+\def\@combinefloats{%
+  %%\boxmaxdepth\maxdepth
+  \if at twocolumn
+    \if at firstcolumn
+    \else
+%    \end{macrocode}
+% 左カラムのテキスト、上下のカラム幅フロート、上下の段抜きフロートの高さの
+% 合計を|\@fixht|に格納する。
+%    \begin{macrocode}
+      \@fixht\ht\@leftcolumn \advance\@fixht\dp\@leftcolumn
+      \@chkdblfloatht \@tempdima\@floatht
+      \L at chkfloatht \advance\@tempdima\@floatht
+      \advance\@fixht\@tempdima
+%    \end{macrocode}
+% |\@fixht|の高さが|\textheight|よりも大きい場合、テキストを分割し、入らない
+% 部分を右カラムに移す。
+%    \begin{macrocode}
+      \ifdim\@fixht>\textheight
+%    \end{macrocode}
+% 左カラムに残す部分の高さを|\@fixht|に格納する。
+%    \begin{macrocode}
+        \@fixht\textheight
+        \advance\@fixht-\@tempdima
+        \advance\@fixht\maxdepth
+%    \end{macrocode}
+% |\@fixht|分のテキストをボックス0に格納する。
+%    \begin{macrocode}
+        \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+        \setbox\z@=\vsplit\@leftcolumn to\@fixht
+%    \end{macrocode}
+% 移動する部分は|\@leftcolumn|に残っているので、
+% それを右カラム(|\@outputbox|)に入れる。
+% また、ボックス0の内容を左カラムに戻す。
+% \changes{v2.4}{2001/02/19}{行間が揃わない部分を修正}
+% \changes{v2.4}{2001/02/19}{柱が出ないのを修正}
+% \changes{v2.8}{2017/05/01}{\cs{@outputbox}を作るときの
+%    \texttt{to \cs{@fixht}}の高さ指定をやめた}
+%    \begin{macrocode}
+        \advance\@fixht-\maxdepth
+        \@tempdima\baselineskip \advance\@tempdima-\topskip
+        \setbox\@outputbox=\vbox{%
+            \ifvoid\@leftcolumn
+            \else
+              \unvbox\@leftcolumn\vskip\@tempdima
+            \fi\relax
+            \unvbox\@outputbox}% \vss moved from here
+%    \end{macrocode}
+% \changes{v2.5}{2001/09/14}{\cs{vsplit}時、infiniteエラーになるのを修正}
+% |\@leftcolumn|を作成するときに用いていた|\vss|が
+%\begin{verbatim}
+% ! Infinite glue shrinkage found in box being split.
+%\end{verbatim}
+% のエラーを起こすことがあるので削除した。
+%
+% \emph{日本語\TeX{}開発コミュニティによる修正}:
+% この場所のすぐ上にあるコードの|\unvbox\@outputbox|の直後にあった|vss|を
+% こちらに持ってきました。
+% \changes{v2.8}{2017/05/01}{\cs{vss}の位置を移動}
+%    \begin{macrocode}
+        \setbox\@leftcolumn=\vbox to\@fixht{\unvbox\z@\vss}% to here (2017/05/01)
+      \fi
+%    \end{macrocode}
+% 左カラムのテキストサイズに左カラムに入るフロートの高さを加えることで、
+% 左カラムの高さを|\@fixht|に格納します。
+%    \begin{macrocode}
+      \@fixht\ht\@leftcolumn
+        \advance\@fixht\dp\@leftcolumn \advance\@fixht\@floatht
+%    \end{macrocode}
+% \emph{日本語\TeX{}開発コミュニティによる追加}:
+% 右カラムについても同様に処理します。これで、古くからあった
+% 右カラムとフロートが重なるバグを解消しました。
+% \changes{v2.8}{2017/05/01}{右カラム用の処理を丸ごと追加}
+%    \begin{macrocode}
+      \@rightfixht\ht\@outputbox \advance\@rightfixht\dp\@outputbox
+      \@chkdblfloatht \@tempdima\@floatht
+      \R at chkfloatht \advance\@tempdima\@floatht
+      \advance\@rightfixht\@tempdima
+      \ifdim\@rightfixht>\textheight
+        \@rightfixht\textheight
+        \advance\@rightfixht-\@tempdima
+        \advance\@rightfixht\maxdepth
+        \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+        \setbox\z@=\vsplit\@outputbox to\@rightfixht
+        \advance\@rightfixht-\maxdepth
+        \unvbox\@outputbox
+        \setbox\@outputbox=\vbox to\@rightfixht{\unvbox\z@\vss}%
+      \fi
+      \@rightfixht\ht\@outputbox
+        \advance\@rightfixht\dp\@outputbox \advance\@rightfixht\@floatht
+%    \end{macrocode}
+% 左右、それぞれテキストとカラム幅フロートを組み立てる。
+%    \begin{macrocode}
+      \ifx\L at toplist\@empty\else\L at cflt\fi
+      \ifx\L at botlist\@empty\else\L at cflb\fi
+      \ifx\R at toplist\@empty\else\R at cflt\fi
+      \ifx\R at botlist\@empty\else\R at cflb\fi
+    \fi
+%    \end{macrocode}
+% 二段組でないときは従来どおりの動作をする。
+%    \begin{macrocode}
+  \else
+      \ifx\@toplist\@empty\else\@cflt\fi
+      \ifx\@botlist\@empty\else\@cflb\fi
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\L at cflt}
+% \begin{macro}{\L at cflb}
+% \begin{macro}{\R at cflt}
+% \begin{macro}{\R at cflb}
+% 左カラムと右カラムを組み立てるのに用いる。
+%
+% \emph{日本語\TeX{}開発コミュニティによる追加}:
+% 左カラムでは|\@fixht|、右カラムでは|\@rightfixht|の高さになるように
+% します。また、|\@colht|をこれらの高さに更新します。
+% \changes{v2.3}{2000/12/20}{\cs{gdef}を\cs{global}\cs{let}に変更}
+% \changes{v2.8}{2017/05/01}{右カラムでは\cs{@rightfixht}の高さで
+%    組み立て、\cs{@colht}も更新するようにした}
+%    \begin{macrocode}
+\def\L at cflt{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\L at toplist
+  \setbox\@leftcolumn\vbox to\@fixht{\boxmaxdepth\maxdepth
+      \unvbox\@tempboxa
+      \vskip-\floatsep\topfigrule\vskip\textfloatsep\unvbox\@leftcolumn
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\L at toplist}\global\let\L at toplist\@empty
+  \@colht\@fixht
+}
+\def\L at cflb{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\L at botlist
+  \setbox\@leftcolumn\vbox to\@fixht{\boxmaxdepth\maxdepth
+      \unvbox\@leftcolumn
+      \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\L at botlist}\global\let\L at botlist\@empty
+  \@colht\@fixht
+}
+\def\R at cflt{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\R at toplist
+  \setbox\@outputbox\vbox to\@rightfixht{\boxmaxdepth\maxdepth
+      \unvbox\@tempboxa
+      \vskip-\floatsep\topfigrule\vskip\textfloatsep\unvbox\@outputbox
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\R at toplist}\global\let\R at toplist\@empty
+  \@colht\@rightfixht
+}
+\def\R at cflb{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\R at botlist
+  \setbox\@outputbox\vbox to\@rightfixht{\boxmaxdepth\maxdepth
+      \unvbox\@outputbox
+      \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\R at botlist}\global\let\R at botlist\@empty
+  \@colht\@rightfixht
+}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@combinedblfloats}
+% テキストと段抜きフロートをマージする。このパッケージでは、ページ下部の
+% 段抜きフロートもマージするように拡張している。
+%    \begin{macrocode}
+%\def\@comdblflelt#1{\setbox\@tempboxa
+%      \vbox{\unvbox\@tempboxa\box#1\vskip\dblfloatsep}}
+%
+\def\@combinedblfloats{%
+  \ifx\@dbltoplist\@empty
+  \else
+    \let\@elt\@comdblflelt\setbox\@tempboxa\vbox{}\@dbltoplist
+    \setbox\@outputbox\vbox{\boxmaxdepth\maxdepth
+       \unvbox\@tempboxa
+       \vskip-\dblfloatsep
+       \dblfigrule
+       \vskip\dbltextfloatsep
+       \box\@outputbox}%
+    \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}%
+    \global\let\@dbltoplist\@empty
+  \fi
+  \ifx\@dblbotlist\@empty
+  \else
+    \let\@elt\@comdblflelt\setbox\@tempboxa\vbox{}\@dblbotlist
+    \setbox\@outputbox\vbox{\boxmaxdepth\maxdepth
+       \box\@outputbox
+       \vskip\dbltextfloatsep
+       \dblfigrule
+       \unvbox\@tempboxa
+       \vskip-\dblfloatsep
+       }%
+    \let\@elt\relax\xdef\@freelist{\@freelist\@dblbotlist}%
+    \global\let\@dblbotlist\@empty
+  \fi
+  \global\setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{二段組の出力}
+%
+% \begin{macro}{\if at balance}
+% 左右のカラムを均等にして出力するかどうかを示すフラグ。
+%    \begin{macrocode}
+\newif\if at balance \@balancefalse
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@outputdblcol}
+% 左右のカラムを連結し、出力するのは|\@outputdblcol|が行なう。
+% このパッケージでは、左右のカラムを均等に分割するためのルーチンを加えてある。
+%    \begin{macrocode}
+\newbox\@combinebox
+%    \end{macrocode}
+% 左カラムを組み立てただけの時点では、それを|\@leftcolumn|に格納するだけで
+% 出力はしない。
+% \changes{v2.4}{2001/02/19}{最終ページで左右の行間が揃わない部分を修正}
+% \changes{v2.4}{2001/02/19}{柱が出ないのを修正}
+%    \begin{macrocode}
+\def\@outputdblcol{%
+  \if at firstcolumn
+    \global\@firstcolumnfalse
+    \global\setbox\@leftcolumn\box\@outputbox
+    \@colht\textheight
+    \@chkdblfloatht\global\advance\@colht-\@floatht
+  \else
+    \global\@firstcolumntrue
+%    \end{macrocode}
+% ここからが左右カラムを均等に分割するコード。
+%    \begin{macrocode}
+    \if at balance
+      \@tempdima\baselineskip
+      \advance\@tempdima-\topskip
+      \setbox\@combinebox=\vbox{%
+          \unvbox\@leftcolumn\vskip\@tempdima\unvbox\@outputbox}%
+      \@tempdima\ht\@combinebox
+      \advance\@tempdima\dp\@combinebox
+      \divide\@tempdima\tw@
+      \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+      \setbox\@leftcolumn=\vsplit\@combinebox to\@tempdima
+      \setbox\@outputbox=\vtop{\unvbox\@combinebox}
+      \setbox\@leftcolumn=\vtop{\unvbox\@leftcolumn}
+    \fi
+%    \end{macrocode}
+% 整形する。
+%    \begin{macrocode}
+    \@tempdima\ht\@leftcolumn
+    \setbox\@outputbox\vbox to\@tempdima{%
+      \hb at xt@\textwidth{%
+        \hb at xt@\columnwidth{%
+           \vbox to\@tempdima{\box\@leftcolumn\vss}\hss}%
+        \hfil
+        \vrule width\columnseprule
+        \hfil
+        \hb at xt@\columnwidth{%
+           \vbox to\@tempdima{\box\@outputbox\vss}\hss}%
+      }%
+      \vss
+    }%
+    \@combinedblfloats
+    \@outputpage
+    \begingroup
+      \@dblfloatplacement
+      \@startdblcolumn
+      \@whilesw\if at fcolmade \fi{\@outputpage\@startdblcolumn}%
+    \endgroup
+  \fi
+  \global\@balancefalse
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@startdblcolumn}
+% 二段組を開始するとき、まだ出力をしていないフロートを出力する。
+% それらは|\sdblcolelt|を通じて、|\@addtonextcol|で出力される。
+% このパッケージでは、カラムの高さを|\textheight|からフロートの高さを
+% 引いたものに設定するように再定義する。
+%    \begin{macrocode}
+\def\@startdblcolumn{%
+  \global\@colht\textheight
+  \@tryfcolumn\@dbldeferlist
+  \if at fcolmade
+  \else
+    \begingroup
+      \let\reserved at b\@dbldeferlist
+      \global\let\@dbldeferlist\@empty
+      \let\@elt\@sdblcolelt
+      \reserved at b
+    \endgroup
+  \fi
+  \@chkdblfloatht
+  \global\advance\@colht-\@floatht
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@doclearpage}
+% 出力フロート用リストの初期化をするために、|\@doclearpage|を再定義する。
+%    \begin{macrocode}
+\def\@doclearpage{%
+  \ifvoid\footins
+    \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
+    \setbox\@tempboxa\box\@cclv
+    \xdef\@deferlist{%
+       \L at toplist\R at toplist\L at botlist\R at botlist\@deferlist}%
+    \global\let\L at toplist\@empty % changed from \@toplist
+    \global\let\R at toplist\@empty % added
+    \global\let\L at botlist\@empty % changed from \@botlist
+    \global\let\R at botlist\@empty % added
+    \global\@colroom\@colht
+    \ifx\@currlist\@empty
+    \else
+      \@latexerr{Float(s) lost}\@ehb
+        \global\let\@currlist\@empty
+    \fi
+    \@makefcolumn\@deferlist
+    \@whilesw\if at fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
+    \if at twocolumn
+      \if at firstcolumn
+        % added \@dblbotlist
+        \xdef\@dbldeferlist{\@dbltoplist\@dblbotlist\@dbldeferlist}%
+        \global\let\@dbltoplist\@empty
+        \global\let\@dblbotlist\@empty % added
+        \global\@colht\textheight
+        \begingroup
+          \@dblfloatplacement
+          \@makefcolumn\@dbldeferlist
+          \@whilesw\if at fcolmade \fi{\@outputpage
+                                    \@makefcolumn\@dbldeferlist}%
+        \endgroup
+      \else
+        \vbox{}\clearpage
+      \fi
+    \fi
+  \else
+    \setbox\@cclv\vbox{\box\@cclv\vfil}%
+    \@makecol\@opcol
+    \clearpage
+  \fi
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@topnewpage}
+% |\@dblbotroom|と|dblbotnumber|を初期化するために|\@topnewpage|を再定義する。
+%    \begin{macrocode}
+\long\def\@topnewpage[#1]{%
+  %\@nodocument
+  \@next\@currbox\@freelist{}{}%
+  \global\setbox\@currbox
+    \color at vbox
+      \normalcolor
+      \vbox{\hsize\textwidth
+            \@parboxrestore
+            \col at number\@ne
+            #1%
+            \vskip-\dbltextfloatsep}%
+    \color at endbox
+  \ifdim\ht\@currbox>\textheight
+    \ht\@currbox\textheight
+  \fi
+  \global\count\@currbox\tw@
+  \@tempdima-\ht\@currbox
+  \advance\@tempdima-\dbltextfloatsep
+  \global\advance\@colht\@tempdima
+  \ifx\@dbltoplist\@empty
+  \else
+    \@latexerr{Float(s) lost}\@ehb
+    \let\@dbltoplist\@empty
+  \fi
+  \@cons\@dbltoplist\@currbox
+  \global\@dbltopnum\m at ne
+  \global\@dblbotnum\m at ne % added
+  \ifdim\@colht<2.5\baselineskip
+    \@latex at warning@no at line {Optional argument of \noexpand\twocolumn
+          too tall on page \thepage}%
+    \@emptycol
+    \if at firstcolumn
+    \else
+      \@emptycol
+    \fi
+  \else
+    \global\vsize\@colht
+    \global\@colroom\@colht
+    \@floatplacement
+  \fi
+  %\global\@dbltoproom\maxdimen
+  %\global\@dblbotroom\maxdimen
+  %\@addtodblcol
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\balancenewpage}
+% \begin{macro}{\balanceclearpage}
+% テキストを均等に分割して出力するためのマクロ。
+% ただし、このマクロを用いた場合、そのページ内での|\newpage|や
+% |\clearpage|コマンドが無効になることに注意。
+%    \begin{macrocode}
+\def\balancenewpage{\par\vfil\global\@balancetrue\penalty-\@M}
+\def\balanceclearpage{\balancenewpage
+    \write\m at ne{}\vbox{}\global\@balancetrue\penalty-\@Mi}
+\endinput
+%</core>
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \Finale
+%
+% \endinput


Property changes on: trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/nidanfloat/nidanfloat.ins	2018-03-09 22:49:07 UTC (rev 46906)
@@ -0,0 +1,19 @@
+\input docstrip
+\keepsilent
+\usedir{tex/latex/nidanfloat}
+\ifToplevel{\askonceonly}
+
+\Msg{*** nidangumi double float package ***}
+
+\preamble
+
+Copyright (c) 2010 ASCII MEDIA WORKS
+Copyright (c) 2016-2018 Japanese TeX Development Community
+
+This file is part of nidanfloat community edition.
+-------------------------------------------------------------
+
+\endpreamble
+
+\generate{\file{nidanfloat.sty}{\from{nidanfloat.dtx}{core}}}
+\endbatchfile

Added: trunk/Master/texmf-dist/tex/latex/nidanfloat/nidanfloat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/nidanfloat/nidanfloat.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/nidanfloat/nidanfloat.sty	2018-03-09 22:49:07 UTC (rev 46906)
@@ -0,0 +1,649 @@
+%%
+%% This is file `nidanfloat.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% nidanfloat.dtx  (with options: `core')
+%% 
+%% Copyright (c) 2010 ASCII MEDIA WORKS
+%% Copyright (c) 2016-2018 Japanese TeX Development Community
+%% 
+%% This file is part of nidanfloat community edition.
+%% -------------------------------------------------------------
+%% 
+%% File: nidanfloat.dtx
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{nidanfloat}%
+  [2017/05/01 v2.8 Put double-floats at top/bottom within twocolumn mode]
+\DeclareOption{balance}{\AtEndDocument{\let\clearpage\balanceclearpage}}
+\DeclareOption{nobalance}{\relax}
+\ExecuteOptions{nobalance}
+\ProcessOptions
+\newcommand\dblbotfraction{0.5}
+\newcount\c at dblbotnumber
+\setcounter{dblbotnumber}{2}
+\newdimen\@dblbotroom
+\newcount\@dblbotnum
+\def\@dblfloatplacement{%
+   \global\@dbltopnum\c at dbltopnumber
+   \global\@dblbotnum\c at dblbotnumber % added
+   \global\@dbltoproom\dbltopfraction\@colht
+   \global\@dblbotroom\dblbotfraction\@colht % added
+   \@textmin\@colht
+     \advance\@textmin-\@dbltoproom
+     \advance\@textmin-\@dblbotroom % added
+   \@fpmin\dblfloatpagefraction\textheight
+   \@fptop\@dblfptop
+   \@fpsep\@dblfpsep
+   \@fpbot\@dblfpbot
+}
+\gdef\@dblbotlist{}
+\gdef\L at toplist{}
+\gdef\R at toplist{}
+\gdef\L at botlist{}
+\gdef\R at botlist{}
+\def\@dblfloat{%
+  \if at twocolumn\let\reserved at a\@dbflt\else\let\reserved at a\@float\fi
+  \reserved at a}
+\def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tb]}}
+\def\@xdblfloat#1[#2]{%
+  \@xfloat{#1}[#2]\hsize\textwidth\linewidth\textwidth}
+\let\end at dblfloat\end at float
+\def\@addtocurcol{%
+  \ifdim\wd\@currbox>\columnwidth
+    \@addtodblcol
+  \else
+    \@insertfalse
+    \@setfloattypecounts
+    \ifnum\@fpstype=8 % is only `!p'
+    \else
+      \ifnum\@fpstype=24 % is only `p'
+      \else
+        \@flsettextmin
+        \advance\@textmin\@textfloatsheight
+        \@reqcolroom\@pageht
+        \ifdim\@textmin>\@reqcolroom \@reqcolroom\@textmin\fi
+        \advance\@reqcolroom\ht\@currbox
+        \ifdim\@colroom>\@reqcolroom
+          \@flsetnum\@colnum
+          \ifnum\@colnum>\z@
+            \@bitor\@currtype\@deferlist
+            \if at test
+            \else
+              \@bitor\@currtype{\L at botlist\R at botlist}%
+              \if at test
+                \@addtobot
+              \else
+                \ifodd\count\@currbox
+                  \advance\@reqcolroom\intextsep
+                  \ifdim\@colroom>\@reqcolroom
+                    \global\advance\@colnum\m at ne
+                    \global\advance\@textfloatsheight\ht\@currbox
+                    \global\advance\@textfloatsheight 2\intextsep
+                    \@cons\@midlist\@currbox
+                    \if at nobreak
+                      \nobreak
+                      \@nobreakfalse
+                      \everypar{}%
+                    \else
+                      \addpenalty \interlinepenalty
+                    \fi
+                    \vskip\intextsep
+                    \box\@currbox
+                    \penalty\interlinepenalty
+                    \vskip\intextsep
+                    \ifnum\outputpenalty<-\@Mii \vskip-\parskip \fi
+                    \outputpenalty\z@
+                    \@inserttrue
+                  \fi
+                \fi
+                \if at insert\else\@addtotoporbot\fi
+              \fi
+            \fi
+          \fi
+        \fi
+      \fi
+    \fi
+    \if at insert\else\@resethfps\@cons\@deferlist\@currbox\fi
+  \fi
+}
+\def\@addtotoporbot{%
+  \@getfpsbit \tw@
+  \ifodd\@tempcnta
+    \@flsetnum\@topnum
+    \ifnum\@topnum>\z@
+      \@tempswafalse
+      \@flcheckspace\@toproom\@toplist\L at toplist\R at toplist
+      \if at tempswa
+        \@bitor\@currtype{\@midlist\L at botlist\R at botlist}%
+        \if at test\else
+          \if at firstcolumn
+            \@flupdates \@topnum \@toproom \L at toplist
+          \else
+            \@flupdates \@topnum \@toproom \R at toplist
+          \fi
+          \@inserttrue
+        \fi
+      \fi
+    \fi
+  \fi
+  \if at insert\else\@addtobot\fi
+}
+\def\@addtobot{%
+  \@getfpsbit 4\relax
+  \ifodd\@tempcnta
+    \@flsetnum\@botnum
+    \ifnum\@botnum>\z@
+      \@tempswafalse
+      \@flcheckspace\@botroom\@botlist\L at botlist\R at botlist
+      \if at tempswa
+        \global\maxdepth\z@
+        \if at firstcolumn
+          \@flupdates \@botnum \@botroom \L at botlist
+        \else
+          \@flupdates \@botnum \@botroom \R at botlist
+        \fi
+        \@inserttrue
+      \fi
+    \fi
+  \fi
+}
+\let\org at addtonextcol\@addtonextcol
+\def\@addtonextcol{%
+  \ifdim\wd\@currbox>\columnwidth
+    \@addtodblcol
+  \else
+    \org at addtonextcol
+  \fi
+}
+\def\@addtodblcol{%
+  \begingroup
+  \@insertfalse
+  \@setfloattypecounts
+  \ifnum\@fpstype=8 % is only `!p'
+  \else
+    \ifnum\@fpstype=24 % is only `p'
+    \else
+      \@bitor\@currtype{\@dbldeferlist}
+      %\@bitor\@currtype{\@deferlist\@dbldeferlist}
+      \if at test
+      \else
+        \@tempswafalse
+        \@checkdblspace
+        \if at tempswa
+          \@addtodbltoporbot
+        \fi
+      \fi
+    \fi
+  \fi
+  \if at insert\else\@cons\@dbldeferlist\@currbox\fi
+  \endgroup
+}
+\def\@addtodbltoporbot{%
+  \@getfpsbit \tw@
+  \ifodd\@tempcnta
+    \@flsetnum\@dbltopnum
+    \ifnum\@dbltopnum>\z@
+      \@bitor\@currtype{%
+         \L at toplist\R at toplist\L at botlist\R at botlist\@dblbotlist}
+      \if at test
+      \else
+        \@tempswafalse
+        \@dblflcheckspace \@dbltoproom \@dbltoplist
+        \if at tempswa
+          \@tempdima-\ht\@currbox
+          \advance\@tempdima
+           -\ifx\@dbltoplist\@empty \dbltextfloatsep\else\dblfloatsep\fi
+          \global\advance\@dbltoproom\@tempdima
+          \global\advance\@dbltopnum\m at ne
+          \@cons\@dbltoplist\@currbox
+          \if at firstcolumn
+            \advance\@colroom\@tempdima
+            \global\advance\@colroom\maxdepth
+          \else
+            \@tempdima\textheight
+            \@chkdblfloatht\advance\@tempdima-\@floatht
+            \L at chkfloatht\advance\@tempdima-\@floatht
+            \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+            \setbox\z@=\vbox{\unvcopy\@leftcolumn}%
+            \setbox\@ne=\vsplit\z@ to\@tempdima
+            \advance\@colroom-\ht\z@
+            \global\advance\@colroom-\dp\z@
+          \fi
+          \@inserttrue
+        \fi
+      \fi
+    \fi
+  \fi
+  \if at insert\else\@addtodblbot\fi
+}
+\def\@addtodblbot{%
+  \@getfpsbit 4\relax
+  \ifodd\@tempcnta
+    \@flsetnum\@botnum
+    \ifnum\@botnum>\z@
+      \@tempswafalse
+      \@dblflcheckspace \@dbltoproom \@dbltoplist
+      \if at tempswa
+        \@tempdima-\ht\@currbox \advance\@tempdima
+           -\ifx\@dblbotlist\@empty \dbltextfloatsep\else\dblfloatsep\fi
+        \global\advance\@dblbotroom\@tempdima
+        \global\advance\@dblbotnum\m at ne
+        \@cons\@dblbotlist\@currbox
+        \if at firstcolumn
+          \advance\@colroom\@tempdima
+          \global\advance\@colroom\maxdepth
+        \else
+          \@tempdima\textheight
+          \@chkdblfloatht\advance\@tempdima-\@floatht
+          \L at chkfloatht\advance\@tempdima-\@floatht
+          \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+          \setbox\z@=\vbox{\unvcopy\@leftcolumn}%
+          \setbox\@ne=\vsplit\z@ to\@tempdima
+          \advance\@colroom-\ht\z@
+          \global\advance\@colroom-\dp\z@
+        \fi
+        \@inserttrue
+      \fi
+    \fi
+  \fi
+}
+\global\newdimen\@floatht \@floatht\z@
+\def \@flcheckspace #1#2#3#4{%
+   \advance \@reqcolroom
+  \if at twocolumn
+    \if at firstcolumn
+      \ifx #3\@empty \textfloatsep \else \floatsep \fi
+    \else
+      \ifx #4\@empty \textfloatsep \else \floatsep \fi
+    \fi
+  \else
+     \ifx #2\@empty \textfloatsep \else \floatsep \fi
+  \fi
+   \ifdim \@colroom>\@reqcolroom
+     \ifdim #1>\ht\@currbox
+       \@tempswatrue
+     \else
+       \ifnum \@fpstype<\sixt@@n
+         \@tempswatrue
+       \fi
+     \fi
+   \fi
+}
+\def\@dblflcheckspace#1#2{%
+  \@tempdima=#1\relax
+  \advance\@tempdima
+     -\ifx #2\@empty \dbltextfloatsep\else\dblfloatsep\fi
+  \ifdim\@tempdima>\ht\@currbox
+    \@tempswatrue
+  \else
+    \ifnum\@fpstype<\sixt@@n
+      \advance\@tempdima\@textmin
+      \if \@tempdima>\ht\@currbox
+        \@tempswatrue
+      \fi
+    \fi
+  \fi
+}
+\def\@checkdblspace{%
+   \@tempdima\@pageht\advance\@tempdima\@pagedp
+   \@tempdimb\textfraction\@colht
+   \ifdim\@tempdima<\@tempdimb \@tempdima\@tempdimb\fi
+   \if at firstcolumn\else
+     \advance\@tempdima\ht\@leftcolumn
+     \advance\@tempdima\dp\@leftcolumn
+   \fi
+   \L at chkfloatht\advance\@tempdima\@floatht
+   \R at chkfloatht\advance\@tempdima\@floatht
+   \@chkdblfloatht\advance\@tempdima\tw@\@floatht
+   \@tempdimb\ht\@currbox\advance\@tempdimb\dp\@currbox
+   \advance\@tempdimb
+      \ifdim\@floatht>\z@ \dbltextfloatsep\else\dblfloatsep\fi
+   \multiply\@tempdimb\tw@ \advance\@tempdima\@tempdimb
+   \ifdim\@tempdima>\tw@\textheight
+     \@tempswafalse
+   \else
+     \@tempswatrue
+   \fi
+}
+\def\tmp at comflelt#1{%
+  \setbox\@tempboxa
+  \vbox{\unvbox\@tempboxa\copy #1\vskip\floatsep}%
+}
+\def\tmp at comdblflelt#1{%
+  \setbox\@tempboxa
+  \vbox{\unvbox\@tempboxa\copy #1\vskip\dblfloatsep}%
+}
+\def\L at chkfloatht{\@floatht\z@
+  \ifx\L at toplist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\L at toplist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \unvbox\@tempboxa\vskip-\floatsep\topfigrule\vskip\textfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \ifx\L at botlist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\L at botlist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \global\@floatht\@floatht
+}
+\def\R at chkfloatht{\@floatht\z@
+  \ifx\R at toplist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\R at toplist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \unvbox\@tempboxa\vskip-\floatsep\topfigrule\vskip\textfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \ifx\R at botlist\@empty\else
+    \let\@elt\tmp at comflelt\setbox\@tempboxa\vbox{}\R at botlist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \global\@floatht\@floatht
+}
+\def\@chkdblfloatht{\@floatht\z@
+  \ifx\@dbltoplist\@empty\else
+    \let\@elt\tmp at comdblflelt\setbox\@tempboxa\vbox{}\@dbltoplist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \unvbox\@tempboxa
+        \vskip-\dblfloatsep
+        \dblfigrule
+        \vskip\dbltextfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \ifx\@dblbotlist\@empty\else
+    \let\@elt\tmp at comdblflelt\setbox\@tempboxa\vbox{}\@dblbotlist
+    \setbox\@ne\vbox{\boxmaxdepth\maxdepth
+        \vskip\dbltextfloatsep
+        \dblfigrule
+        \unvbox\@tempboxa
+        \vskip-\dblfloatsep
+        }%
+    \let\@elt\relax \advance\@floatht\ht\@ne \advance\@floatht\dp\@ne
+  \fi
+  \global\@floatht\@floatht
+}
+\global\newdimen\@fixht
+\global\newdimen\@rightfixht
+\def\@combinefloats{%
+  %%\boxmaxdepth\maxdepth
+  \if at twocolumn
+    \if at firstcolumn
+    \else
+      \@fixht\ht\@leftcolumn \advance\@fixht\dp\@leftcolumn
+      \@chkdblfloatht \@tempdima\@floatht
+      \L at chkfloatht \advance\@tempdima\@floatht
+      \advance\@fixht\@tempdima
+      \ifdim\@fixht>\textheight
+        \@fixht\textheight
+        \advance\@fixht-\@tempdima
+        \advance\@fixht\maxdepth
+        \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+        \setbox\z@=\vsplit\@leftcolumn to\@fixht
+        \advance\@fixht-\maxdepth
+        \@tempdima\baselineskip \advance\@tempdima-\topskip
+        \setbox\@outputbox=\vbox{%
+            \ifvoid\@leftcolumn
+            \else
+              \unvbox\@leftcolumn\vskip\@tempdima
+            \fi\relax
+            \unvbox\@outputbox}% \vss moved from here
+        \setbox\@leftcolumn=\vbox to\@fixht{\unvbox\z@\vss}% to here (2017/05/01)
+      \fi
+      \@fixht\ht\@leftcolumn
+        \advance\@fixht\dp\@leftcolumn \advance\@fixht\@floatht
+      \@rightfixht\ht\@outputbox \advance\@rightfixht\dp\@outputbox
+      \@chkdblfloatht \@tempdima\@floatht
+      \R at chkfloatht \advance\@tempdima\@floatht
+      \advance\@rightfixht\@tempdima
+      \ifdim\@rightfixht>\textheight
+        \@rightfixht\textheight
+        \advance\@rightfixht-\@tempdima
+        \advance\@rightfixht\maxdepth
+        \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+        \setbox\z@=\vsplit\@outputbox to\@rightfixht
+        \advance\@rightfixht-\maxdepth
+        \unvbox\@outputbox
+        \setbox\@outputbox=\vbox to\@rightfixht{\unvbox\z@\vss}%
+      \fi
+      \@rightfixht\ht\@outputbox
+        \advance\@rightfixht\dp\@outputbox \advance\@rightfixht\@floatht
+      \ifx\L at toplist\@empty\else\L at cflt\fi
+      \ifx\L at botlist\@empty\else\L at cflb\fi
+      \ifx\R at toplist\@empty\else\R at cflt\fi
+      \ifx\R at botlist\@empty\else\R at cflb\fi
+    \fi
+  \else
+      \ifx\@toplist\@empty\else\@cflt\fi
+      \ifx\@botlist\@empty\else\@cflb\fi
+  \fi
+}
+\def\L at cflt{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\L at toplist
+  \setbox\@leftcolumn\vbox to\@fixht{\boxmaxdepth\maxdepth
+      \unvbox\@tempboxa
+      \vskip-\floatsep\topfigrule\vskip\textfloatsep\unvbox\@leftcolumn
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\L at toplist}\global\let\L at toplist\@empty
+  \@colht\@fixht
+}
+\def\L at cflb{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\L at botlist
+  \setbox\@leftcolumn\vbox to\@fixht{\boxmaxdepth\maxdepth
+      \unvbox\@leftcolumn
+      \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\L at botlist}\global\let\L at botlist\@empty
+  \@colht\@fixht
+}
+\def\R at cflt{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\R at toplist
+  \setbox\@outputbox\vbox to\@rightfixht{\boxmaxdepth\maxdepth
+      \unvbox\@tempboxa
+      \vskip-\floatsep\topfigrule\vskip\textfloatsep\unvbox\@outputbox
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\R at toplist}\global\let\R at toplist\@empty
+  \@colht\@rightfixht
+}
+\def\R at cflb{%
+  \let\@elt\@comflelt\setbox\@tempboxa\vbox{}\R at botlist
+  \setbox\@outputbox\vbox to\@rightfixht{\boxmaxdepth\maxdepth
+      \unvbox\@outputbox
+      \vskip\textfloatsep\botfigrule\unvbox\@tempboxa\vskip-\floatsep
+      \vss}%
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\R at botlist}\global\let\R at botlist\@empty
+  \@colht\@rightfixht
+}
+\def\@combinedblfloats{%
+  \ifx\@dbltoplist\@empty
+  \else
+    \let\@elt\@comdblflelt\setbox\@tempboxa\vbox{}\@dbltoplist
+    \setbox\@outputbox\vbox{\boxmaxdepth\maxdepth
+       \unvbox\@tempboxa
+       \vskip-\dblfloatsep
+       \dblfigrule
+       \vskip\dbltextfloatsep
+       \box\@outputbox}%
+    \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}%
+    \global\let\@dbltoplist\@empty
+  \fi
+  \ifx\@dblbotlist\@empty
+  \else
+    \let\@elt\@comdblflelt\setbox\@tempboxa\vbox{}\@dblbotlist
+    \setbox\@outputbox\vbox{\boxmaxdepth\maxdepth
+       \box\@outputbox
+       \vskip\dbltextfloatsep
+       \dblfigrule
+       \unvbox\@tempboxa
+       \vskip-\dblfloatsep
+       }%
+    \let\@elt\relax\xdef\@freelist{\@freelist\@dblbotlist}%
+    \global\let\@dblbotlist\@empty
+  \fi
+  \global\setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
+}
+\newif\if at balance \@balancefalse
+\newbox\@combinebox
+\def\@outputdblcol{%
+  \if at firstcolumn
+    \global\@firstcolumnfalse
+    \global\setbox\@leftcolumn\box\@outputbox
+    \@colht\textheight
+    \@chkdblfloatht\global\advance\@colht-\@floatht
+  \else
+    \global\@firstcolumntrue
+    \if at balance
+      \@tempdima\baselineskip
+      \advance\@tempdima-\topskip
+      \setbox\@combinebox=\vbox{%
+          \unvbox\@leftcolumn\vskip\@tempdima\unvbox\@outputbox}%
+      \@tempdima\ht\@combinebox
+      \advance\@tempdima\dp\@combinebox
+      \divide\@tempdima\tw@
+      \vbadness=\@M \splittopskip=\topskip \splitmaxdepth=\maxdepth
+      \setbox\@leftcolumn=\vsplit\@combinebox to\@tempdima
+      \setbox\@outputbox=\vtop{\unvbox\@combinebox}
+      \setbox\@leftcolumn=\vtop{\unvbox\@leftcolumn}
+    \fi
+    \@tempdima\ht\@leftcolumn
+    \setbox\@outputbox\vbox to\@tempdima{%
+      \hb at xt@\textwidth{%
+        \hb at xt@\columnwidth{%
+           \vbox to\@tempdima{\box\@leftcolumn\vss}\hss}%
+        \hfil
+        \vrule width\columnseprule
+        \hfil
+        \hb at xt@\columnwidth{%
+           \vbox to\@tempdima{\box\@outputbox\vss}\hss}%
+      }%
+      \vss
+    }%
+    \@combinedblfloats
+    \@outputpage
+    \begingroup
+      \@dblfloatplacement
+      \@startdblcolumn
+      \@whilesw\if at fcolmade \fi{\@outputpage\@startdblcolumn}%
+    \endgroup
+  \fi
+  \global\@balancefalse
+}
+\def\@startdblcolumn{%
+  \global\@colht\textheight
+  \@tryfcolumn\@dbldeferlist
+  \if at fcolmade
+  \else
+    \begingroup
+      \let\reserved at b\@dbldeferlist
+      \global\let\@dbldeferlist\@empty
+      \let\@elt\@sdblcolelt
+      \reserved at b
+    \endgroup
+  \fi
+  \@chkdblfloatht
+  \global\advance\@colht-\@floatht
+}
+\def\@doclearpage{%
+  \ifvoid\footins
+    \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
+    \setbox\@tempboxa\box\@cclv
+    \xdef\@deferlist{%
+       \L at toplist\R at toplist\L at botlist\R at botlist\@deferlist}%
+    \global\let\L at toplist\@empty % changed from \@toplist
+    \global\let\R at toplist\@empty % added
+    \global\let\L at botlist\@empty % changed from \@botlist
+    \global\let\R at botlist\@empty % added
+    \global\@colroom\@colht
+    \ifx\@currlist\@empty
+    \else
+      \@latexerr{Float(s) lost}\@ehb
+        \global\let\@currlist\@empty
+    \fi
+    \@makefcolumn\@deferlist
+    \@whilesw\if at fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
+    \if at twocolumn
+      \if at firstcolumn
+        % added \@dblbotlist
+        \xdef\@dbldeferlist{\@dbltoplist\@dblbotlist\@dbldeferlist}%
+        \global\let\@dbltoplist\@empty
+        \global\let\@dblbotlist\@empty % added
+        \global\@colht\textheight
+        \begingroup
+          \@dblfloatplacement
+          \@makefcolumn\@dbldeferlist
+          \@whilesw\if at fcolmade \fi{\@outputpage
+                                    \@makefcolumn\@dbldeferlist}%
+        \endgroup
+      \else
+        \vbox{}\clearpage
+      \fi
+    \fi
+  \else
+    \setbox\@cclv\vbox{\box\@cclv\vfil}%
+    \@makecol\@opcol
+    \clearpage
+  \fi
+}
+\long\def\@topnewpage[#1]{%
+  %\@nodocument
+  \@next\@currbox\@freelist{}{}%
+  \global\setbox\@currbox
+    \color at vbox
+      \normalcolor
+      \vbox{\hsize\textwidth
+            \@parboxrestore
+            \col at number\@ne
+            #1%
+            \vskip-\dbltextfloatsep}%
+    \color at endbox
+  \ifdim\ht\@currbox>\textheight
+    \ht\@currbox\textheight
+  \fi
+  \global\count\@currbox\tw@
+  \@tempdima-\ht\@currbox
+  \advance\@tempdima-\dbltextfloatsep
+  \global\advance\@colht\@tempdima
+  \ifx\@dbltoplist\@empty
+  \else
+    \@latexerr{Float(s) lost}\@ehb
+    \let\@dbltoplist\@empty
+  \fi
+  \@cons\@dbltoplist\@currbox
+  \global\@dbltopnum\m at ne
+  \global\@dblbotnum\m at ne % added
+  \ifdim\@colht<2.5\baselineskip
+    \@latex at warning@no at line {Optional argument of \noexpand\twocolumn
+          too tall on page \thepage}%
+    \@emptycol
+    \if at firstcolumn
+    \else
+      \@emptycol
+    \fi
+  \else
+    \global\vsize\@colht
+    \global\@colroom\@colht
+    \@floatplacement
+  \fi
+  %\global\@dbltoproom\maxdimen
+  %\global\@dblbotroom\maxdimen
+  %\@addtodblcol
+}
+\def\balancenewpage{\par\vfil\global\@balancetrue\penalty-\@M}
+\def\balanceclearpage{\balancenewpage
+    \write\m at ne{}\vbox{}\global\@balancetrue\penalty-\@Mi}
+\endinput
+%%
+%% End of file `nidanfloat.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/nidanfloat/nidanfloat.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-03-09 22:47:41 UTC (rev 46905)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2018-03-09 22:49:07 UTC (rev 46906)
@@ -453,7 +453,7 @@
     newtx newtxsf newtxtt newunicodechar newvbtm
     newverbs nextpage
     nfssext-cfr nicefilelist niceframe niceframe-type1 nicematrix nicetext
-    nih nihbiosketch
+    nidanfloat nih nihbiosketch
     nimbus15 nkarta nlctdoc
     nmbib noconflict nodetree noindentafter noitcrul nolbreaks
     nomencl nomentbl nonfloat nonumonpart nopageno norasi-c90 normalcolor

Modified: trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2018-03-09 22:47:41 UTC (rev 46905)
+++ trunk/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc	2018-03-09 22:49:07 UTC (rev 46906)
@@ -746,6 +746,7 @@
 depend nicefilelist
 depend niceframe
 depend nicetext
+depend nidanfloat
 depend nlctdoc
 depend noconflict
 depend noindentafter

Added: trunk/Master/tlpkg/tlpsrc/nidanfloat.tlpsrc
===================================================================


More information about the tex-live-commits mailing list