如何在段落之间放置浮动?

如何在段落之间放置浮动?

我已经阅读过该网站上的多个问题,例如如何影响 LaTeX 中图形和表格等浮动环境的位置?在我看来浮点数的默认行为不是我所需要的。

我想要的行为:如果页面上有足够的剩余空间 -> 将浮动元素放置在调用它的位置。在浮动元素之后开始下一个段落。否则将其放入队列中,并在每段之后进行检查 -> 浮动元素是否可以放在那里 -> 执行。

浮动实际上所做的就是分割一些段落(在分页符上),在浮动之后留下段落的最后一个单词,或者等待很长时间跳过浮动本来可以很好地适合段落之间的位置。

是否有任何包或工具可以满足我的要求 - 只要页面上有空间,就可以在段落之间放置图形和表格?

我理解浮动可能不是正确的术语,因为这种行为可能有其他名称,但它是什么呢?

答案1

类似这样的情况,如果命令\flushhere放置在段落之间,它会尝试从延迟列表中取出一个浮点数,并使其成为此处的浮点数,如果成功,它会尝试弹出下一个延迟浮点数,依此类推,直到用完为止。

因此,如果您[hp]在段落之间使用浮动并将其放在\flushhere后续段落之后,则任何未放置在“此处”的浮动都应在段落之间被清除...

仅在这个文件中测试过,我可能错过了一些东西......

在此处输入图片描述

\documentclass{article}


\setcounter{totalnumber}{30}% lots of here floats

\def\a{One two \stepcounter{enumi}\roman{enumi} three four five six. }
\def\b{\a\a  red \stepcounter{enumi}\roman{enumi} red green yellow 
random longer typesetting expressions that might invoke hyphenation. }
\def\c{\a\b\a\a\b\b\a}

\def\f#1{\begin{figure}[hp]\centering\rule{2cm}{1cm}\par\caption{ff: #1}\end{figure}}
\def\t#1{\begin{table}[hp]\centering\caption{tt: #1}\par\bigskip\begin{tabular}{cc}1&2\\33&44\\555&666\end{tabular}\end{table}}

\makeatletter
\def\flushhere{\par{%
 \let\s@deferlist\@deferlist
 \let\@currbox\relax
\@next\@currbox\@deferlist{%
  \ifodd\count\@currbox
\typeout{Trying \meaning\@currbox (\number\@currbox/\the\count\@currbox),
        adding to \meaning\@currlist}%
    \@cons\@currlist\@currbox
\typeout{added: to \meaning\@currlist}%
\typeout{deferlist was \s@deferlist, now \@deferlist}%
\let\s@@deferlist\@deferlist\@empty
\global\let\@deferlist\@empty
    \@floatpenalty -\@Miii
      \penalty -\@Miv
      \@tempdima\prevdepth
      \vbox{}%
      \prevdepth\@tempdima
      \penalty\@floatpenalty
       \@@par
   \ifx\@deferlist\@empty
\typeout{float placed here}%
\global\let\@deferlist\s@@deferlist
   \flushhere
\else
\typeout{float not placed here}%
\global\let\@deferlist\s@deferlist
\fi
    \else
\typeout{not h}%
    \global\let\@deferlist\s@deferlist
    \fi
   }%
  {%
\typeout{no pending float}%
}\par}}

\makeatother

%\let\flushhere\relax

\begin{document}

AA \c \verb|\t{a}\f{a}|

\t{a}\f{a}

BB \c\b \verb|\t{b}\t{c}|

\t{b}\t{c}

BB2 \b \verb|\f{b}\f{c}|

\flushhere

\f{b}\f{c}

CC2 \a

\flushhere

CC \c \verb|\t{d}|

\flushhere
\t{d}

DD \c

\typeout{before DD2}
\flushhere

DD2 \c

\flushhere
\f{d}

EE \c

\typeout{before FF}
\flushhere

FF \c\b 

%\flushhere

\end{document}

相关内容