カスタムフロート内でローカル `@fptop` を実現する

カスタムフロート内でローカル `@fptop` を実現する

以下のポリシーを希望します:

  • figureページフロートの上部はtableページの 15% 下に配置する必要があります (図がテキストの高さの 85% を超える場合は、理想的には上方に移動できます)。
  • カスタム環境(smallbox)は垂直方向に中央に配置する必要があります

基本的には、デフォルトが適用される場合を除いて に@fptop設定したいと思います。0.15\textheight minus 0.15\textheightmybox@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% に保つか、遠くに移動しすぎます (つまり、smallbox がページの上部にあります)。

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}

答え1

minipageを使用すると、投稿後数時間で機能することがわかりました。

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

関連情報