在算法前插入白线

在算法前插入白线

我正在使用algorithm环境创建一个简单的伪代码列表,但我不喜欢第一行离规则太近。因此,我想在我使用的每个算法中插入一条白线。如果不输入每个算法块,\hfill这样做容易吗?\hfill

我制作的代码 \hfill看起来像这样:

% the important used packages
\usepackage{mdwlist}
\usepackage{algorithm}

\begin{algorithm}[H]
\hfill % I don't like this here, I would stylize this automatically in some way.
\begin{enumerate*}
    \item Do bla.
    \item Do bla.
    \item Do bla.
    \item Do bla.
\end{enumerate*}
\caption{My algo. \label{alg:1}}
\end{algorithm}

答案1

algorithm.sty使用包ruled定义的样式float。如果您只将此样式用于算法,那么您可以简单地重新定义\fs@ruled控制ruled样式的命令;下面是此类重新定义的一个简单示例,可产生所需的垂直间距:

\documentclass{article}
\usepackage{mdwlist}
\usepackage{algorithm}

\makeatletter
\renewcommand\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\kern\baselineskip}% original: \kern2pt\hrule\kern2pt
  \let\@fs@iftopcapt\iftrue}
\makeatother

\begin{document}

\begin{algorithm}
\begin{enumerate*}
    \item Do bla.
    \item Do bla.
    \item Do bla.
    \item Do bla.
\end{enumerate*}
\caption{My algo. \label{alg:1}}
\end{algorithm}

\end{document}

在此处输入图片描述

答案2

没有看到官方的方法,但将其添加到序言中是可行的:

\let\OldAlgorithm\algorithm
\renewcommand{\algorithm}[1][]{\OldAlgorithm[#1]\hfill}

答案3

enumerate除了在环境中使用algorithm生成分项/枚举代码段外,还有其他方法。您可以考虑使用algorithm2e或提供的功能algorithmx。这是一个使用后一个包复制当前算法的简短示例:

算法

\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithm
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\BeforeBeginEnvironment{algorithmic}{\kern 0.5\baselineskip}% Space above algorithmic environment
\AfterEndEnvironment{algorithmic}{\kern 0.5\baselineskip}% Space below algorithmic environment
\begin{document}
\begin{algorithm}
  \begin{algorithmic}[1]
    \State Do bla.
    \State Do bla.
    \State Do bla.
    \State Do bla.
  \end{algorithmic}
\caption{My algo. \label{alg:1}}
\end{algorithm}
\end{document}

etoolbox包裹用于自动在环境上方和下方添加垂直空格的过程algorithmic- 添加代码\BeforeBeginEnvironment以及\AfterEndEnvironment。如果您希望使用常规大小的字体作为行号并且不喜欢:分隔符,请使用

\algrenewcommand\alglinenumber[1]{\normalsize #1.}%

将产生期望的结果:

具有不同行数的算法

相关内容