算法中的函数编号

算法中的函数编号

算法会自动编号,但函数却无法获得相同的编号。

在下面的例子中,算法本身被编号为算法 1 和算法 2,但函数却没有。请指教。

\documentclass{ucbthesis}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{epstopdf}
\usepackage[ruled,vlined,linesnumbered]{algorithm2e}
\usepackage{algpseudocode}
\usepackage{tikz,pgfplots,pgfplotstable}
\usepackage{tikz-qtree}
\usepackage{forest}
\usepackage{lettrine}
\usepackage{mathtools}
\usepackage{lscape}
\usepackage{pgf-pie}
\usepackage{caption} 
\usetikzlibrary{positioning,shapes,arrows,shadows,patterns,intersections,calc,fit}
\usepackage{dashbox}
\usepackage{mathptmx}
\usepackage{xcolor}
\usepackage{hyperref}
\begin{document}
\begin{algorithm}
    \caption{First Algorithm}
    \For{$j \in V$}{
    }
\end{algorithm}

\begin{algorithm}
    \caption{Second Algorithm}
    \For{$j \in V$}{
    }
\end{algorithm}

\begin{function}        
    \label{function1}   
    \caption{First Function ()}     
    \For{$k \in R$}{

    }       
\end{function}  

\begin{function}    
    \label{function2}
    \caption{Second Function ()}    
    \For{$k \in R$}{    

    }       
\end{function}

I am refering to function \ref{function1} and function \ref{function2}

\end{document}

在此处输入图片描述

答案1

您需要的是包选项procnumbered,它“使过程和函数按算法编号”。请参阅第 19 页algorithm2e手动的。

添加:为了正确获取交叉引用,您需要放置\label \caption正如@egreg在下面的评论中提到的那样。另请参阅这个简短的解释来自 @PhilMiller 和这个更长的解释来自@anon。

\documentclass{ucbthesis}
\usepackage[ruled,vlined,linesnumbered,procnumbered]{algorithm2e}
\usepackage{newtxtext}
\usepackage{newtxmath}

\begin{document}
\begin{algorithm}
    \caption{First Algorithm}
    \For{$j \in V$}{
    }
\end{algorithm}

\begin{algorithm}
    \caption{Second Algorithm}
    \For{$j \in V$}{
    }
\end{algorithm}

\begin{function}
    \caption{First Function ()}
    \label{function1}
    \For{$k \in R$}{
    }
\end{function}

\begin{function}
    \caption{Second Function ()}
    \label{function2}
    \For{$k \in R$}{
    }
\end{function}

I am refering to Function~\ref{function1} and Function~\ref{function2}.

\end{document}

函数编号

如果你希望你的函数独立编号,那么你需要为环境设置一个新的计数器function

\documentclass{ucbthesis}
\usepackage[ruled,vlined,linesnumbered,procnumbered]{algorithm2e}
\usepackage{newtxtext}
\usepackage{newtxmath}
% Set up a new counter for function
\newcounter{function}
\usepackage{etoolbox}
% Change the original counter to the new counter
\makeatletter
\AtBeginEnvironment{function}{%
  \let\c@algocf\c@function
}
\makeatother

\begin{document}
\begin{algorithm}
    \caption{First Algorithm}
    \For{$j \in V$}{
    }
\end{algorithm}

\begin{algorithm}
    \caption{Second Algorithm}
    \For{$j \in V$}{
    }
\end{algorithm}

\begin{function}
    \caption{First Function ()}
    \label{function1}
    \For{$k \in R$}{
    }
\end{function}

\begin{function}
    \caption{Second Function ()}
    \label{function2}
    \For{$k \in R$}{
    }
\end{function}

I am refering to Function~\ref{function1} and Function~\ref{function2}.

\end{document}

独立编号的功能

请注意

  • 如果你正在使用caption,请考虑使用subcaption(与 一起分发caption),而不是subfig
  • 如果你想使用 Times 风格的字体,可以考虑mathptmx用较新的字体替换newtxtextnewtxmath

添加: 请用不间断空格 ~标签名称和其编号之间。

相关内容