在页面末尾的空间中垂直居中浮动

在页面末尾的空间中垂直居中浮动

我有半页文本,其下有一个短表格,下一页上有一个大表格。短表格位于页面底部,位于半页文本下方,这在页面中留下了很大的空间。是否可以将浮动对齐到空间中间,以便看起来更好?

答案1

既然你感兴趣特定浮动位置, 这float包裹[H]放置选项可能会有所帮助。

将有问题的表格放在\vfill两侧的空格内:

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum,float}

\begin{document}

\lipsum[1-7]

\vfill

\begin{table}[H]% This table will not float
  \centering
  \rule{.8\textwidth}{7\baselineskip}
  \caption{A very small table.}
\end{table}

\vfill

\clearpage

\begin{table}[t]
  \centering
  \rule{.8\textwidth}{.4\textheight}
  \caption{A very large table.}
\end{table}

\lipsum[8-15]

\end{document}

答案2

您可以调整 LaTeX 的底部浮动区域,使浮动位于空间的中心,感谢 Werner 提供的 MWE:-)

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum,float}

\makeatletter

\def \@cflb {%
    \let\@elt\@comflelt
    \setbox\@tempboxa \vbox{}%
    \@botlist
    \setbox\@outputbox \vbox{%
                             \unvbox\@outputbox
                             \vfill
                             \botfigrule
                             \unvbox\@tempboxa
                             \vskip -\floatsep
                             \vskip0ptplus2fill\relax
                             }%
    \let\@elt\relax
    \xdef\@freelist{\@freelist\@botlist}%
    \global \let \@botlist\@empty
}

\makeatother

\begin{document}

\lipsum[1-7]

\vfill

\begin{table}[b]% This table will  float
  \centering
  \rule{.8\textwidth}{7\baselineskip}
  \caption{A very small table.}
\end{table}

\vfill

\clearpage

\begin{table}[t]
  \centering
  \rule{.8\textwidth}{.4\textheight}
  \caption{A very large table.}
\end{table}

\lipsum[8-15]

\end{document}

相关内容