我正在使用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.}%
将产生期望的结果: