如何重新格式化回忆录文档类中的算法?

如何重新格式化回忆录文档类中的算法?

我正在尝试在回忆录类中排版算法。我正在使用带有自定义环境的算法包,因为这是我能够让算法列表在目录中正确显示以及算法在算法列表中正确列出的唯一方法。如下图所示,

目录正确 正确的算法列表

目前算法显示如下,

算法展示

如何重新格式化算法环境以使其看起来更像下面这样?

例一 例二

我不需要精确的格式,只需要更专业的东西。我理想情况下想要行号、垂直线、水平线以及小于文本宽度的某种形式的左右缩进。我当前的代码是,

\documentclass[]{memoir}
\usepackage[utf8x]{inputenc}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{algorithmic}

\newcommand{\algorithmname}{Algorithm}
\newcommand{\listalgorithmname}{List of Algorithms} \newlistof{listofalgorithms}{loa}{\listalgorithmname}
\newfloat{algorithm}{loa}{\algorithmname}
\newfixedcaption{\falgcaption}{algorithm}
\newlistentry{algorithm}{loa}{0}

\begin{document}
\tableofcontents
\newpage
\listoffigures
\listoftables
\listofalgorithms

\newpage
\chapter{Example Chapter}
\section{Example Section}

\begin{algorithm}[htbp]
\hrulefill
\caption{An Algorithm Template}
\label{alg1}
\hrulefill
\begin{algorithmic}
\REQUIRE $n \geq 0$
\ENSURE $y = x^n$ 
\STATE $y \leftarrow 1$
\STATE $X \leftarrow x$
\STATE $N \leftarrow n$
 \WHILE{$N \neq 0$}
 \IF{$N$ is even}
\STATE $X \leftarrow X \times X$
\STATE $N \leftarrow N / 2$
\ELSE[$N$ is odd]
 \STATE $y \leftarrow y \times X$
\STATE $N \leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}
\hrulefill
\end{algorithm}
\end{document}

答案1

您可以加载浮动包使用宏定义了新的浮点数memoir

\newcommand{\algorithmname}{Algorithm}
\newcommand{\listalgorithmname}{List of Algorithms}
\newlistof{listofalgorithms}{loa}{\listalgorithmname}
\newfloat{algorithm}{loa}{\algorithmname}
\newfixedcaption{\falgcaption}{algorithm}
\newlistentry{algorithm}{loa}{0}

\usepackage{float}
\floatstyle{ruled}
\restylefloat{algorithm}

然后删除\hrulefill命令,您将获得“传统”格式。

在此处输入图片描述

答案2

我对 algorithm2e 和 memoir 非常满意。但我必须在正文中添加以下内容作为目录(文本是西班牙语,这就是我必须重置名称的原因,babel 无法处理它,间距是为了让算法列表使用与其他列表调整的间距相同的间距...):

%%%
%%% For algorithm2e
%%%

\SetAlgorithmName{Algoritmo}{Algoritmo}{Índice de algoritmos}
\newlistof{listofalgorithms}{loa}{\listalgorithmcfname}
\makeatletter
\renewcommand{\l@algocf}{\@dottedtocline{1}{1em}{3.5em}}
\makeatother

相关内容