使 LaTeX 优先从下往上放置浮动内容

使 LaTeX 优先从下往上放置浮动内容

正如解释的那样关于浮点数的全面答案,参数的顺序[htb]无关紧要,如果允许所有参数,LaTeX 会首先尝试将它们放在“此处”的位置,然后是顶部,然后是底部。

我想将此顺序改为这里、底部、顶部。现在,当然我可以使用 完全禁止顶部位置[hb],但这不是我真正想要的。我只是希望 LaTeX 强烈偏好底部位置而不是顶部,就像它目前偏好顶部到底部一样。有没有(合理的)方法来实现这一点?

答案1

嗯,这实际上相当困难。

latex 会先尝试从上到下,因为代码确实

\def \@addtotoporbot {%
   \@getfpsbit \tw@
   \ifodd \@tempcnta
     \@flsetnum \@topnum
     \ifnum \@topnum>\z@
       \@tempswafalse
       \@flcheckspace \@toproom \@toplist
       \if@tempswa
         \@bitor\@currtype{\@midlist\@botlist}%
         \if@test
         \else
          \@flupdates \@topnum \@toproom \@toplist
          \@inserttrue
         \fi
       \fi
     \fi
   \fi
   \if@insert
   \else
     \@addtobot
   \fi
}

\@botlist因此,您可以先在那里交换几行来尝试,\@toplist但是浮点数在遇到时会被编号,而 LaTeX 不会让它们乱序浮动,所以如果您将浮点数放在底部区域,那么您需要关闭顶部区域,否则浮点数序列将会乱序。

因此从实际角度来说,你实际上并不想改变上述内容:优先使用底部浮动与优先使用顶部浮动但限制出现顶部浮动的机会相同,但要么禁止它们,要么使用 限制顶部浮动区域的大小\topfraction

为了真正做出可用的选项来优先选择底部浮点数,您需要一种机制,在这种机制中,浮点数是按照它们的放置位置而不是遇到的位置进行编号,这并非不可能,但需要对大多数 latex 浮点数放置进行重大重写。

答案2

您可以使用以下方法控制每个位置的浮点数

\setcounter{topnumber}{2}
\setcounter{bottomnumber}{2}
\setcounter{totalnumber}{4}

例如,调整bottomnumber大于。topnumber

相关内容