我对 (La)TeX 还很陌生,所以如果这个问题很愚蠢,请原谅我 :)
algorithm
我有一个用和包排版的算法algorithmic
。
然后我在算法中得到了这个:
\WHILE[growingPhase returns $topK \eq \emptyset$ \OR $\sum_{u_i^-} > k^{th}score$]
{$\exists S_i$ such that $S_i \neq \emptyset$ \AND $growingPhase()$}
这给了我一个未定义的控制序列错误。没有注释的同一行可以正常工作:
\WHILE{$\exists S_i$ such that $S_i \neq \emptyset$ \AND $growingPhase()$}
另外,另一个 while 可以很好地处理评论:
\WHILE[latice.maxUpperBound is the largest upper bound among the objects in the latice when fullUpdate() or lightUpdate() was last called]
{$\exists S_i$ such that $S_i \neq \emptyset$ \AND $latice.maxUpperBound > k^{th}score$}
所以我很确定不是评论,而是数学或\OR
评论中的内容造成了问题......
一个最小(非)工作示例是:
\documentclass[twoside,11pt,openright]{report}
\usepackage[utf8]{inputenc}
\usepackage[danish]{babel}
\usepackage{a4}
\usepackage{latexsym}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{epsfig}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[labeled]{multibib}
\usepackage{color}
\usepackage{datetime}
\usepackage{epstopdf}
\usepackage{subfig}
\usepackage{algorithm}
\usepackage{algorithmic}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\renewcommand{\algorithmicforall}{\textbf{for each}}
\renewcommand{\algorithmiccomment}[1]{\hfill// \textit{#1}}
\algsetup{linenosize=\tiny}
\captionsetup[algorithm]{font={scriptsize}}
\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\WHILE[growingPhase returns $topK \eq \emptyset$ \OR $\sum_{u_i^-} > k^{th}score$]{$\exists S_i$ such that $S_i \neq \emptyset$ \AND $growingPhase()$}
\ENDWHILE
\end{algorithmic}
\end{algorithm}
\end{document}
(在宏中使用时,注释也会出现同样的错误\COMMENT{}
。)
答案1
您的 MWE 缺少\STATE
命令。否则,唯一的错误是\eq
未定义。您应该只写=
。
\documentclass{report}
\usepackage{subfig}
\usepackage{algorithm}
\usepackage{algorithmic}
\renewcommand{\algorithmiccomment}[1]{\hfill// \textit{#1}}
\algsetup{linenosize=\tiny}
\captionsetup[algorithm]{font={scriptsize}}
\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\WHILE[growingPhase returns $\mathit{topK} = \emptyset$ \OR $\sum_{u_i^-} >
k^{th}\mathit{score}$]
{$\exists S_i$ such that $S_i \neq \emptyset$ \AND $\mathit{growingPhase()}$}
\STATE something
\ENDWHILE
\end{algorithmic}
\end{algorithm}
\end{document}
其中包括@egreg 建议添加\mathit
用于多字母标识的。正如他所说,考虑使用k\text{-th}
(或k\mbox{-th}
不使用amsmath
)代替上标。