初学者:算法有问题,某些命令不可用?

初学者:算法有问题,某些命令不可用?

我是 Latex 的真正初学者,现在我正在努力使用算法包和 algpseudocode 编写一些代码。到目前为止,我所做的是:

\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{algorithm}
\caption{My algorithm doing something....}
\begin{algorithmic}
\Function{findSomething}{$x, y$} \\
\(current\_value \gets 0\) \\
\(value\_found \gets false\) 
\While{\(value\_found \neq true\)}
\If{......}
% DO something, doesn't matter  \And    % WHERE I TRIED THE And command
 .......
\EndIf
\EndWhile \\
\Return \(x\) 
\EndFunction
\end{algorithmic}
 \end{algorithm}

现在我想使用“and、or、to”之类的命令,但在这里它们不起作用,这可能是我加载的另一个包吗?但我的第二个问题是,我发现我可以定义如下命令:

 \algnewcommand{\Or}{\textbf{or}}

但是当我使用 \Or 时,最终的 pdf 上没有任何内容:S。或者当我尝试定义:

 \algnewcommand{\And}{\textbf{and}}

Latex 告诉我该命令已经存在,但是当我尝试在我的代码中使用它(在示例中标记)时,我收到该命令不可用的错误,:S

答案1

定义\And\Or按您建议的方式工作,如您在以下示例中所见。但是,您应该使用\State

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}

\algnewcommand{\Or}{\textbf{or}}
\algnewcommand{\And}{\textbf{and}}

\begin{document}
\begin{algorithm}
\begin{algorithmic}
\Function{findSomething}{$x, y$}
\State \(current\_value \gets 0\)
\State \(value\_found \gets false\)
\While{\(value\_found \neq true\)}
\If{......}
% DO something, doesn't matter  \And    % WHERE I TRIED THE And command
\State A \And{} B
\EndIf
\EndWhile
\State \Return \(x\)
\EndFunction
\end{algorithmic}
\end{algorithm}
\end{document}

algorithmicx 软件包文档中的一段引文(http://mirrors.ctan.org/macros/latex/contrib/algorithmicx/algorithmicx.pdf):

一行简单的文本以 \State 开头。此宏标记每行的开头。您不需要在包中定义的命令前使用 \State,因为这些命令会自动使用新行。

对于伪代码中的逻辑和/或运算符,我个人使用\land\lor。通常您应该使用 algpseudocode 中定义的命令。to在我看来,通常不是伪代码中的命令,但可能用于 for 循环的第一行。同样,您可以使用algnewcommand来定义to命令。如果您想排版注释,您可能需要使用\State \Comment And or to...

相关内容