算法参考不起作用(包括 MWE)

算法参考不起作用(包括 MWE)

我收到一个无法修复的错误:引用使用算法的错误。

我尝试在标题中和标题下方放置标签,但当我引用算法时,我总是收到“??”错误。我正在使用 overleaf,因此下面的示例可以在线测试。

最小工作示例是:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{times}
\usepackage{latexsym}
\usepackage[algoruled,ruled,vlined,noend]{algorithm2e}
\usepackage{times}
\usepackage{latexsym}
\usepackage{pgfplots}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{xcolor,colortbl}
\usepackage{tikz}
\usepackage{diagbox}
\usepackage{tkz-tab}
\usepackage{caption}
\usepackage{latexsym}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{subcaption}
\usepackage{natbib}
\usepackage{blindtext}
\usepackage{url}
\usepackage{color}
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator*{\argmin}{arg\,min}
\usepackage{url}
\usepackage{hyperref}    
\usepackage{amsthm}   
\usepackage{cleveref}
\SetAlFnt{\small}
\SetAlCapFnt{\small}
\SetAlCapNameFnt{\small}
\usepackage{ntheorem}

\begin{document}

\begin{algorithm}[ht]
 \SetAlgoNoLine
 \SetNoFillComment
 \KwData{Something}
 \KwResult{Value}
 \For{i=1 to n}{
 T =  \underset{ A(S^{\textbackslash i}) } f[X[i]] 
  }
 \caption{My Algorithm}
 \label{algo:my_algo}
\end{algorithm}

\ref{algo:my_algo}

\end{document}

该算法被简化为仅保留产生错误的部分:如果我删除该行,错误就会消失:

 T =  \underset{ A(S^{\textbackslash i}) } f[X[i]] 

但我不能删除这一行,因为它是算法的主要部分。在引用算法时,有什么可能的方法可以避免在这里使用硬引用。

感谢您的帮助。

答案1

我们可以将给定的 MWE 简化为

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}
\usepackage[algoruled,ruled,vlined,noend]{algorithm2e}

\begin{document}

\begin{algorithm}[ht]
 \SetAlgoNoLine
 \SetNoFillComment
 \KwData{Something}
 \KwResult{Value}
 \For{i=1 to n}{
 T = \underset{ A(S^{\textbackslash i}) } f[X[i]] 
  }
 \caption{My Algorithm}
 \label{algo:my_algo}
\end{algorithm}

\ref{algo:my_algo}

\end{document}

这给出了相当令人困惑的错误

! Missing $ inserted.
<inserted text> 
                $
l.17  \caption
              {My Algorithm}

但这\underset是一个数学构造,所以我们可能需要

$ T = \underset{ A(S^{\backslash i}) } f[X[i]] $

请注意,我不太清楚您要应用什么\underset(它通常需要两个参数),因为这里只给出了一个参数,它会添加下面的内容f。不确定这是否是意图。我还将其更改\textbackslash\blackslash,因为前者是文本符号,因此在数学模式下无效。

相关内容