如何增加算法的顶部空间到页边距?

如何增加算法的顶部空间到页边距?

我在页面顶部有一个算法。如何增加算法和页面顶部边距之间的空间?

代码如下:

\begin{algorithm}[t]
\caption{Some Algorithm}
\begin{algorithmic}[1]
...
\end{algorithmic}
\end{algorithm}

A\vspace可以对图形进行该工作,例如以下代码可以增加图形与上边距之间的空间:

\begin{figure*}[t!]
\vspace{10ex}
\centering
\includegraphics[width=7in]{...}
\caption{Some Figure}
\end{figure*}

我怎样才能对环境做类似的事情algorithm

答案1

分配给浮点的默认float类型为salgorithmalgorithmruled。在ruled选项下,标题放置在浮动的顶部(所有管理都由float包裹)。考虑到这一点,人们可以利用\fs@pre并添加必要的空间

\@fs@pre,[..] 插入到浮动对象的最开始处,, \@fs@mid[..] 位于浮动对象和标题之间(如果标题放在顶部,则位于标题和浮动对象之间),而\@fs@post,[..] 则结束浮动对象。

ruled f这是与loat类型相关的默认定义s

\newcommand\fs@ruled{\def\@fs@cfont{\bfseries}\let\@fs@capt\floatc@ruled
  \def\@fs@pre{\hrule height.8pt depth0pt \kern2pt}%
  \def\@fs@post{\kern2pt\hrule\relax}%
  \def\@fs@mid{\kern2pt\hrule\kern2pt}%
  \let\@fs@iftopcapt\iftrue}

我们可以创造一种新的spaceruled floats类型

\makeatletter
\newcommand\fs@spaceruled{\def\@fs@cfont{\bfseries}\let\@fs@capt\floatc@ruled
  \def\@fs@pre{\vspace{5\baselineskip}\hrule height.8pt depth0pt \kern2pt}%
  \def\@fs@post{\kern2pt\hrule\relax}%
  \def\@fs@mid{\kern2pt\hrule\kern2pt}%
  \let\@fs@iftopcapt\iftrue}
\makeatother

\vspace在设置常规之前插入一个\hrule

在此处输入图片描述

\documentclass{article}

\usepackage{algorithm,algpseudocode}

\makeatletter
\newcommand\fs@spaceruled{\def\@fs@cfont{\bfseries}\let\@fs@capt\floatc@ruled
  \def\@fs@pre{\vspace{5\baselineskip}\hrule height.8pt depth0pt \kern2pt}%
  \def\@fs@post{\kern2pt\hrule\relax}%
  \def\@fs@mid{\kern2pt\hrule\kern2pt}%
  \let\@fs@iftopcapt\iftrue}
\makeatother


\begin{document}

\begin{algorithm}[t]
  \caption{Some Algorithm}
  \begin{algorithmic}[1]
    \State print ``Hello World''
  \end{algorithmic}
\end{algorithm}
Some text

\clearpage      % force a new page here, only for the example

\floatstyle{spaceruled}% Select new float style
\restylefloat{algorithm}% Apply spaceruled float style to algorithm
\begin{algorithm}[t]
  \caption{Some Other Algorithm}
  \begin{algorithmic}[1]
    \State print ``Hello New World''
  \end{algorithmic}
\end{algorithm}
Some text

\end{document}

答案2

vspace您可以在算法(带有标题和标签)之前放置一个带有一些但不带有标题的空图,并在subfigures环境中将它们连接在一起(您也不提供标题)。

出乎意料的是,[t]算法的浮动位置说明符()实际上将整个子图环境放置在页面的顶部。

subfigures环境由包提供subfloat,因此需要\usepackage{subfloat}在 之前添加\begin{document}

梅威瑟:

\documentclass{article}
\usepackage{algorithm,algpseudocode}
\usepackage{subfloat}
\begin{document}
Some text
\begin{algorithm}[t]
\caption{Some Algorithm}
\begin{algorithmic}[1]
\State print "Hello World"
\end{algorithmic}
\end{algorithm}
\clearpage      % force a new page here, only for the example
Some more text which references Algorithm~\ref{alg:b}
\begin{subfigures}
\begin{figure}
\vspace{1cm}
\end{figure}
\begin{algorithm}[t]
\caption{Some Other Algorithm}
\label{alg:b}
\begin{algorithmic}[1]
\State print "Hello New World"
\end{algorithmic}
\end{algorithm}
\end{subfigures}
\end{document}

结果:

在此处输入图片描述

相关内容