我编写了一个命令,将内容放入小页面中以测量其高度。它使用此信息插入“智能”分页符、新页、清除页和警告。
为了进行测量,必须将内容放入盒子中,我想这是不可避免的。禁止使用浮子。
我希望此命令适用于所有内容。我不想测量任何浮动的高度。这毫无意义,因为我不知道它们最终会在哪里。最合适的是它们会出现在文档的某个位置,并且不会影响所需的分页行为。
这是我的问题:我需要在测量时关闭所有浮点数。浮点数应该被忽略。
这个例子显示了我想要做的事情:
\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}