算法会自动编号,但函数却无法获得相同的编号。
在下面的例子中,算法本身被编号为算法 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
用较新的字体替换newtxtext
和newtxmath
。
添加: 请用不间断空格 ~
标签名称和其编号之间。