我在页面顶部有一个算法。如何增加算法和页面顶部边距之间的空间?
代码如下:
\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
分配给浮点的默认f
loat类型为s
algorithm
algorithm
是ruled
。在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
f
loats
类型
\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}
结果: