不适用于 amsbook 文档类的算法列表

不适用于 amsbook 文档类的算法列表

\listofalgorithms我在文档中使用\documentclass{amsbook}。由于某种原因,两者似乎发生冲突。当我运行 时pdflatex,我收到以下错误消息:

(./main.loa
! Undefined control sequence.
\@dottedtocline ... \hbox {$\m@th \mkern \@dotsep 
                                                  mu\hbox {.}\mkern \@dotsep...
l.1 ...uction algorithm.\relax }}{11}{algorithm.1}

?

下面是产生错误代码的最小片段。如果注释掉\listofalgorithms代码,在 下编译就没问题pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian)。哦,我在 第二次运行 pdflatex 时也遇到了错误,那是在 之后LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.

\documentclass[12pt,a4paper]{amsbook}

\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}

\title{Example}

\begin{document}
    \maketitle

    \listofalgorithms

    \chapter{Introduction}
        This is about homotopy theory.

            \begin{algorithm}
                \begin{algorithmic}[1]
                    \Procedure{ComputeY}{$X$}
                        \State \Return $Y$
                    \EndProcedure
                \end{algorithmic}
                \caption{Algorithm.}
                \label{algo:algo1}
            \end{algorithm}
\end{document}

您知道可能是什么问题吗?

答案1

ams 文档类将“任意”列表与基本文档类中的定义区别对待,因此一些附加包(比如用于算法的包)遵循该类的方法book

如果您将这些定义添加到序言中,算法列表的形式应该与amsbook做事的方式兼容。

\makeatletter
\renewcommand{\listofalgorithms}{\@starttoc{loa}{List of Algorithms}}
\let\l@algorithm=\l@figure
\makeatother

相关内容