Ref 命令在伪代码中不起作用

Ref 命令在伪代码中不起作用

我想在我的伪代码中使用 \ref 命令,如下所示:第一行:“mut Eq. x”第二行:“cr Eq. y”第三行:“sel Eq. z”但我在第二行中收到“Latex 错误:命令 \item 在数学模式下无效”。第一行似乎可以正常工作。我该如何修复它?任何帮助表示感谢

\documentclass[11pt]{article}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\AtBeginEnvironment{algorithmic}{\let\textbf\relax}
\usepackage{amsmath}
\usepackage[fleqn]{mathtools}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{fontspec}
\usepackage{bm}
\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
    \If {$\boldsymbol{E_r}$ = $\boldsymbol{M_r}$} \boldsymbol{$let$~$bac$~$ go:$}
            \State \boldsymbol{$ME$~$mut$~$as$~$in$~$(Eq.$~$$} \ref{eq:best1})
            \State \boldsymbol{$ME$~$cr$~$as$~$in$~$(Eq.$~$)$} \ref{eq:creq})
            \State \boldsymbol{$DE$~$sel$~$as$~$in$~$(Eq.$~$)$} \ref{eq:seleq})
\end{algorithmic}
\end{algorithm}
\end{document}

答案1

您的设置中存在许多问题:

  • \boldsymbol应在数学模式下使用。也就是说,$\boldsymbol{..}$而不是\boldsymbol{$..$}

  • 如果您使用类似的构造\If{<condition>},则需要稍后使用将其关闭\EndIf

  • \label-\ref开箱即用algorithmic(见下文)。

这是一个简化的例子,因为我不知道所有符号的用途\boldsymbol

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm,algpseudocode}
\begin{document}
\begin{algorithm}
  \begin{algorithmic}[1]
    \If {$\boldsymbol{E_r}$ = $\boldsymbol{M_r}$}
      \State ME mut as in (Eq.~\ref{eq:label})
    \EndIf
  \end{algorithmic}
\end{algorithm}

\begin{equation}
  f(x) = ax^2 + bx + c \label{eq:label}
\end{equation}

\end{document}

相关内容