算法编号

算法编号

我对编号和引用算法有困难。

我想要按章节标记参考文献,然后在章节内标记,例如:

第一章中的第一个算法-算法 1.1

第一章中的第二个算法-算法 1.2

以下是我正在做的事情的 MWE

\documentclass[11pt, letterpaper]{thesis}

\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand{\thesection}{\arabic{section}}

\usepackage[chapter]{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\renewcommand{\thealgorithm}{\arabic{chapter}.\arabic{algorithm}} 

\begin{document} 

\chapter{First Chapter}

\begin{algorithm} 
  \begin{algorithmic}[1]
    \State Some code here 
  \end{algorithmic} 
  \label{alg:algorithm1}
\end{algorithm}

Algorithm \ref{alg:algorithm1} states blah blah blah. 

\end{document}

当我引用算法1时,我得到算法一(其中 I 是罗马数字 1)而不是算法 1.1

答案1

你需要使用\caption \label;否则,为引用挑选的字符串将是最后一个设置锚点的字符串(通常是分段单元的锚点),在本例中是来自的字符串\chapter。以下是代码的修改版本,显示了所需的结果:

\documentclass[11pt, letterpaper]{book}

\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand{\thesection}{\arabic{section}}

\usepackage[chapter]{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}

\renewcommand{\thealgorithm}{\arabic{chapter}.\arabic{algorithm}} 

\begin{document} 

\chapter{First Chapter}

\begin{algorithm} 
  \begin{algorithmic}[1]
    \State Some code here 
  \end{algorithmic} 
  \caption{A test algorithm}
  \label{alg:algorithm1}
\end{algorithm}

Algorithm~\ref{alg:algorithm1} states blah blah blah and algorithm~\ref{alg:algorithm2} states blah blah blah. 

\begin{algorithm} 
  \begin{algorithmic}[1]
    \State Some code here 
  \end{algorithmic} 
  \caption{Another test algorithm}
  \label{alg:algorithm2}
\end{algorithm}

\end{document}

在此处输入图片描述

如果您不想为算法提供明确的标题,则可以使用包\phantomcaption中的命令caption(但这可能会造成混淆,因为您通过数字引用一些实际上没有编号的对象):

\documentclass[11pt, letterpaper]{book}
\usepackage{caption}

\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand{\thesection}{\arabic{section}}

\usepackage[chapter]{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}

\renewcommand{\thealgorithm}{\arabic{chapter}.\arabic{algorithm}} 

\begin{document} 

\chapter{First Chapter}

\begin{algorithm} 
  \begin{algorithmic}[1]
    \State Some code here 
  \end{algorithmic} 
  \phantomcaption
  \label{alg:algorithm1}
\end{algorithm}

Algorithm~\ref{alg:algorithm1} states blah blah blah and algorithm~\ref{alg:algorithm2} states blah blah blah. 

\begin{algorithm} 
  \begin{algorithmic}[1]
    \State Some code here 
  \end{algorithmic} 
  \phantomcaption
  \label{alg:algorithm2}
\end{algorithm}

\end{document}

在此处输入图片描述

相关内容