Достижение локального `@fptop` в пользовательском float

Достижение локального `@fptop` в пользовательском float

Я хотел бы следующую политику:

  • Верхняя часть figureи tableплавающие элементы страницы должны располагаться на 15% ниже страницы (и в идеале иметь возможность перемещаться выше, если цифра составляет более 85% высоты текста).
  • Пользовательская среда ( smallbox) должна быть вертикально центрирована

По сути, я хочу установить @fptopзначение, 0.15\textheight minus 0.15\textheightза исключением myboxслучая (когда @fptopдолжно применяться значение по умолчанию).

Моим первоначальным решением было установить:

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

а затем со следующей средой:

\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}} 

добавление большого пробела (например, \vspace*{\fill}в последнем аргументе окружения). Однако это ничего не делает (то естьсохраняет верхнюю часть smallboxна уровне 15% от высоты текста) или сдвигает ее слишком далеко (например, маленький блок оказывается в верхней части страницы).

МВЭ:

\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}

решение1

Я обнаружил, что использование minipageпохожего метода срабатывает через несколько часов после публикации.

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

Связанный контент