Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LaTeX2e 2022-06-01 以降で nidanfloat がエラー #5

Open
aminophen opened this issue Dec 3, 2022 · 3 comments
Open

LaTeX2e 2022-06-01 以降で nidanfloat がエラー #5

aminophen opened this issue Dec 3, 2022 · 3 comments
Labels
bug Something isn't working

Comments

@aminophen
Copy link
Member

aminophen commented Dec 3, 2022

確かに ! LaTeX mark Error: Infinite shrinkage found in 'column'. が出ます。

\makeatletter
\def\TABLE{\@ifnextchar*{\TABLE@}{\TABLE@{}}}
\def\TABLE@#1#2{%
  \begin{table#1}[ht]
  \caption{#2}
  \centering
  \begin{tabular}{p{0.25\linewidth}p{0.25\linewidth}p{0.25\linewidth}}
  \hline
  column 1 & column 2 & column 3\\
  \hline
  cell 1 & cell 2 & cell 3\\
  cell 1 & cell 2 & cell 3\\
  \hline
  \end{tabular}
  \end{table#1}}
\makeatother

\documentclass[twocolumn]{article}
\textheight8cm
\usepackage{lipsum}

\usepackage{nidanfloat}
\begin{document}

\TABLE*{First}
\TABLE{Second}
\TABLE*{Third}
\lipsum*[1-4]
\end{document}

\RequirePackage[2022/05/31]{platexrelease} に巻き戻すと一応エラーは消えるので,LaTeX2e 2022-06-01 で何かが起きています。

なお nidanfloat は LaTeX2e 2015/01/01 での「フロート順序修正」に追随していない (#1) ので,フロートの順序が崩れます。これは本件とは別に対処が必要。

@h20y6m
Copy link

h20y6m commented Dec 5, 2022

LaTeX2e 2022-06-01 で何かが起きています。

2022-06-01 で追加された新機能 "new mark mechanism" が関係しているようです。

エラーは以下のところで出ているようです。

https://github.com/latex3/latex2e/blob/78484db71505bd19333ea354669b7534681aea50/base/ltmarks.dtx#L991-L1005

よくわかっていませんがマーク抽出処理?で infinite shrinking glue が含まれていると \vsplit で low-level エラーが発生するので、事前にチェックして LaTeX のエラーを出力して処理しないようにしているようです。(\enlargethispage が追加する \vss ? を取り除くため?に \unskip してるみたいだけど nidanfloat が追加した \vss は取り除けていない)

試しに nidanfloat の \vss\vskip 0pt plus 1fil に置き換えていってみたところ以下の部分の \vss\vskip 0pt plus 1fil にするとエラーはでなくなるようです。(もちろん nidanfloat の機能が壊れてしまうでしょうが)

\setbox\@outputbox=\vbox to\@rightfixht{\unvbox\z@\vss}%

この部分は #2 で追加された部分のようです。

@h20y6m
Copy link

h20y6m commented Jan 9, 2023

\@combinefloats の以下の部分

        \@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}%

この最後の \vss のところは無限に縮小する必要はなく \maxdepth だけ縮小できれば十分な気がします。\vss の代わりに \vskip 0pt plus 1fil minus \maxdepth とすればよいのではないでしょうか?

(edit) \maxdepth だけ余分に切り出しているので minus 2\maxdepth にしないといけなさそう。


ところで以下の2行が必要な(つまり \maxdepth だけ余分に切り出している)理由がわからないのですが何のためなのでしょうか?

        \advance\@rightfixht\maxdepth
        \advance\@rightfixht-\maxdepth

@h20y6m
Copy link

h20y6m commented Jan 15, 2023

\R@cflt, \R@cflb で入れている \vss もエラーの原因になるようです。

\@rightfixht は必要な高さを事前に計算しているようなのでこの \vss も縮む必要はないのではないのでしょうか?

(そもそも \R@cflt, \R@cflb は高さを指定して \@outputbox を構築していますが、このボックスは高さを参照することもなく \@makecol/\@makespecialcolbox\unvbox されてしまうので高さを指定して構築する意味がないような気もします……)

trueroad added a commit to trueroad/FITpaper-class that referenced this issue May 10, 2023
最終ページで両カラムの下端を揃えるために
nidanfloat パッケージを使用していたが、
TeX Live 2023 初版などではエラーが出るため、
flushend パッケージへ変更する。

恐らく
texjporg/nidanfloat#5
の事象と同様と思われる。
h20y6m added a commit to h20y6m/nidanfloat that referenced this issue Mar 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants