暂时关闭浮动

暂时关闭浮动

我编写了一个命令,将内容放入小页面中以测量其高度。它使用此信息插入“智能”分页符、新页、清除页和警告。

为了进行测量,必须将内容放入盒子中,我想这是不可避免的。禁止使用浮子。

我希望此命令适用于所有内容。我不想测量任何浮动的高度。这毫无意义,因为我不知道它们最终会在哪里。最合适的是它们会出现在文档的某个位置,并且不会影响所需的分页行为。

这是我的问题:我需要在测量时关闭所有浮点数。浮点数应该被忽略。

这个例子显示了我想要做的事情:

\documentclass{scrartcl}%
\usepackage{calc}%
\usepackage{blindtext}%

\newlength{\fooLength}%
\newsavebox{\fooBox}%

\newcommand{\fooCmd}[1]{%
%measure
%\TurnFloatsOFF (I need this)
\savebox{\fooBox}{\begin{minipage}{\linewidth}#1\end{minipage}}%
%\TurnFloatsON (I need this)
\settototalheight\fooLength{\usebox{\fooBox}}%
%do stuff
\ifdim\fooLength>3\baselineskip%
    \newpage#1%
\else% 
    #1%
\fi%
}%

\begin{document}
\blindtext%
\fooCmd{\blindtext}%no problem
%\fooCmd{\begin{figure}\blindtext\end{figure}}%does not work
\end{document}

我还没有找到任何有用的东西。也许 comments-package 可以解决问题。它提供以下内容:

\excludecomment{figure}

但这不起作用。另外,我需要停用所有浮点数,而不仅仅是数字。有什么建议吗?

答案1

请注意,这几乎肯定会导致较少的智能分页比 (La)TeX 提供的要好得多。分页的最佳方法是不要碰它直到文档形成最终形式,然后,如果有必要,尽可能少地手动调整它。

那是,不要在家尝试这个!

至少可以说,这是极其粗糙的。

\documentclass{scrartcl}%
\usepackage{calc}%
\usepackage{blindtext}%

\newlength{\foolength}%
\newsavebox{\foobox}%
\makeatletter
\newcommand{\foocmd}[1]{%
%measure
%\TurnFloatsOFF (I need this)
\begingroup
\renewenvironment{figure}{\@gobble}{\relax}%
\renewenvironment{table}{\@gobble}{\relax}%
\renewcommand\caption[1]{\relax}%
\savebox{\foobox}{\begin{minipage}{\linewidth}#1\end{minipage}}%
\settototalheight\foolength{\usebox{\foobox}}%
% \TurnFloatsON (I need this)
% do stuff
\ifdim\foolength>3\baselineskip%
  \endgroup
    \newpage#1%
\else%
  \endgroup
    #1%
\fi%
}%
\makeatother
\begin{document}
\blindtext%

\foocmd{\blindtext\blindtext}% no problem

\foocmd{\begin{figure}\blindtext\caption{A figure}\end{figure}}% also works

\foocmd{\blindtext\blindtext}
\end{document}

非智能分页

相关内容