您能告诉我在算法中使用 return 命令有什么问题吗?当我添加
\RETURN $C
到我的 LaTeX 文档我得到
return C =0,
我 需要 的 只是return C
。
\begin{algorithm} % enter the algorithm environment
\caption{ lloyd's kmeans}
\label{alg1}
\begin{algorithmic}[1] % enter the algorithmienvironment
\RETURN{$C$}
\end{algorithmic}
\end{algorithm}
我得到了两个额外的字符=0
。我想知道它是从哪里来的。如果有帮助的话,在生成的错误日志中有“缺失数字,视为零”,并且为 \ifnum 插入了缺失 =。
答案1
你可能结合使用algorithmic
和algorithmicx
包。后者可以完全替代前者,因此你应该不是将它们一起加载(按顺序加载时会重现错误\usepackage{algorithmic,algcompatible}
)。我建议按以下方式使用它:
\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algcompatible}% http://ctan.org/pkg/algorithmicx
% Define keyword and construction of \RETURN
\algnewcommand\algorithmicreturn{\textbf{return}}
\algnewcommand\RETURN{\State \algorithmicreturn}%
\begin{document}
\begin{algorithm}
\caption{My algorithm}\label{alg1}
\begin{algorithmic}[1]
\RETURN{} $C$
\end{algorithmic}
\end{algorithm}
\end{document}
这需要您定义\RETURN
关键字才能正常工作。可能还需要定义其他关键字才能正常工作。但是,它们可以用相同的方式完成。
根据您发布的代码,以下可能是定义算法结构的一种方式:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{algorithm,algcompatible}% http://ctan.org/pkg/{algorithms,algorithmicx}
\algnewcommand\algorithmicreturn{\textbf{return}}
\algnewcommand\RETURN{\algorithmicreturn}
\algnewcommand\algorithmicprocedure{\textbf{procedure}}
\algnewcommand\PROCEDURE{\item[\algorithmicprocedure]}%
\algnewcommand\algorithmicendprocedure{\textbf{end procedure}}
\algnewcommand\ENDPROCEDURE{\item[\algorithmicendprocedure]}%
\algnewcommand{\algvar}[1]{{\text{\ttfamily\detokenize{#1}}}}
\algnewcommand{\algarg}[1]{{\text{\ttfamily\itshape\detokenize{#1}}}}
\algnewcommand{\algproc}[1]{{\text{\ttfamily\detokenize{#1}}}}
\algnewcommand{\algassign}{\leftarrow}
\begin{document}
\begin{algorithm}% enter the algorithm environment
\caption{procedure DOWNLOAD}% give the algorithm a caption
\label{SaS:DOWNLOAD}
\begin{algorithmic}[1]% enter the algorithmic environment
\raggedright
\PROCEDURE \algvar{user_request}(\algarg{follower_id}, \algarg{friend_id}, \algarg{content_id}, \algarg{home_server}, \algarg{friend_surrogate})
\REQUIRE \algarg{user_id}, \algarg{home_server}
\ENSURE URL of requested content
\STATE $\algvar{content} \algassign \algproc{request_redirect}(\algarg{content_id})$
\IF{$\algvar{content} \neq \algvar{server}$}
\STATE \algproc{schedule_pull}(\algarg{content_id}, \algvar{server})
\ENDIF
\STATE \RETURN{} \algvar{content_host}
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}
\end{document}
为了持续的,定义处理类似项目格式的宏。
答案2
我的代码中也遇到了同样的问题。我正在使用该algpseudocode
包。
原文:在返回末尾附加 0
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage{algpseudocode} %This introduces extra zero at the end of algorithm
解决方案:删除包后,返回末尾没有附加 0 algpseudocode
:
\usepackage{algorithmic}
\usepackage{algorithm}
答案3
我刚刚按照以下顺序放置包,从而消除了该错误:
\usepackage{algpseudocode}
%\usepackage{algorithmic} not required
\usepackage{algorithm}