使用算法时删除标题的空格

使用算法时删除标题的空格

我有类似的东西:

\usepackage{algorithm}
\usepackage{algpseudocode}

...
\begin{document}
\begin{algorithm}[H]
\begin{algorithmic}[1]
\Function {function}{a}
\State a = a + 1
\EndFunction
\end{algorithmic}
\end{algorithm}
\end{document}

我使用 [H] 是因为我想设置代码的位置。但这样做之后,出现了一个我不想要的标题空间,而且现在我的代码前面有两条水平线。你可以在这张图片中看到我的意思:在此处输入图片描述

我怎样才能删除其中的一行?

谢谢!

答案1

定义您自己的版本:

\documentclass{article}
\usepackage{algpseudocode}

\usepackage{lipsum} % for the example

\newenvironment{algo}
 {\par\addvspace{\topsep}
  \centering
  \begin{minipage}{\linewidth}
  \hrule\kern2pt}
 {\par\kern2pt\hrule
  \end{minipage}
  \par\addvspace{\topsep}}

\begin{document}

\lipsum[2]

\begin{algo}
\begin{algorithmic}[1]
\Function {function}{a}
\State a = a + 1
\EndFunction
\end{algorithmic}
\end{algo}

\lipsum[3]

\end{document}

在此处输入图片描述

答案2

为了实现这一点,您需要定义一个新的\floatstyle。这里有一个这样的选项(我称之为nocaptionruled):

在此处输入图片描述

\documentclass{article}

\usepackage{algorithm,algpseudocode}

\makeatletter
\newcommand\fs@nocaptionruled{%\def\@fs@cfont{\bfseries}%
  \let\@fs@capt\relax%\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}
\makeatother

\begin{document}

\begin{algorithm}[H]
  \begin{algorithmic}[1]
    \Function{function}{a}
      \State a = a + 1
    \EndFunction
  \end{algorithmic}
\end{algorithm}

\floatstyle{nocaptionruled}
\restylefloat{algorithm}

\begin{algorithm}[H]
  \begin{algorithmic}[1]
    \Function{function}{a}
      \State a = a + 1
    \EndFunction
  \end{algorithmic}
\end{algorithm}

\end{document}

相关内容