Alcançando `@fptop` local dentro de um float personalizado

Alcançando `@fptop` local dentro de um float personalizado

Eu gostaria da seguinte política:

  • A parte superior figuree tableos flutuadores da página devem estar 15% abaixo da página (e, idealmente, capazes de se mover para cima se a figura tiver mais de 85% da altura do texto).
  • Um ambiente personalizado ( smallbox) deve ser centralizado verticalmente

Essencialmente, quero definir @fptopcomo 0.15\textheight minus 0.15\textheightexceto para o myboxcaso (onde o padrão @fptopdeve ser aplicado).

Minha solução inicial foi definir:

\setlength{\@fptop}{0.15\textheight minus 0.15\textheight}
\setlength{\@fpbot}{0pt plus 1fil}

e depois com o seguinte ambiente:

\usepackage{newfloat}  %% 
\DeclareFloatingEnvironment[listname={List of boxes}, name = {Box}]{boxe}
% The smallbox is a box intended for onecolumn.
\newenvironment{smallbox}[3][p]{%
  \begin{boxe}[#1]
  }{\end{boxe}} 

adicionando um espaço grande (como \vspace*{\fill}no último argumento do ambiente. No entanto, isso não faz nada (ou sejamantém o topo smallboxem 15% da altura do texto) ou move-o muito longe (ou seja, a caixa pequena está no topo da página).

MWE:

\documentclass[12pt,twocolumn]{article}  %% twocolumn makes fptop more obvious
\makeatletter
\setlength{\@fptop}{0.15\textheight minus 0.15\textheight}
\setlength{\@fpbot}{0pt plus 1fil}
\makeatother
\usepackage{newfloat}
\DeclareFloatingEnvironment[listname={List of boxes}, name = {Box}]{boxe}
\newenvironment{smallbox}[1][p]{%
\begin{boxe}[#1]
}{\end{boxe}} 

\usepackage[showframe]{geometry}
\usepackage[demo]{graphicx}
\usepackage{lipsum}
\begin{document}
.

\begin{figure}[p]
\caption{foo}
\includegraphics{}
\end{figure}
\clearpage
.

\begin{smallbox}
\lipsum[1]
\end{smallbox}


\end{document}

Responder1

Descobri que usar a minipageparece funcionar algumas horas após a postagem.

\newenvironment{smallbox}[1][p]{%
\begin{boxe}[#1]
\begin{minipage}[c][\textheight]{\linewidth}
}{\end{minipage}\end{boxe}}

informação relacionada