我收到一个无法修复的错误:引用使用算法的错误。
我尝试在标题中和标题下方放置标签,但当我引用算法时,我总是收到“??”错误。我正在使用 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
,因为前者是文本符号,因此在数学模式下无效。