Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm pretty new to (La)TeX so please forgive me if this question is stupid :)

I have an algorithm that is typeset with the algorithm and algorithmic packages.

Then I have this in the algorithm:

\WHILE[growingPhase returns $topK \eq \emptyset$ \OR $\sum_{u_i^-} > k^{th}score$]
{$\exists S_i$ such that $S_i \neq \emptyset$ \AND $growingPhase()$}

Which gives me an undefined control sequence error. The same line without the comment works fine:

\WHILE{$\exists S_i$ such that $S_i \neq \emptyset$ \AND $growingPhase()$}

Also another while works fine with comments:

\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$}

So I'm pretty sure it's not the comment, rather the math or the \OR in the comment that makes the trouble...

A minimum (non)working example is:

\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}

(also the comment gives the same error when used in a \COMMENT{} macro.)

share|improve this question
    
Welcome to TeX.sx! A tip: If you indent lines by 4 spaces, they'll be marked as a code sample. You can also highlight the code and click the "code" button (with "{}" on it). –  lockstep Oct 24 '12 at 15:24

1 Answer 1

up vote 2 down vote accepted

Your MWE is missing a \STATE command. Otherwise the only error is that \eq is not defined. You should just write =.

\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}

Included is @egreg's suggestion to add the \mathit for the multi-letter identifies. As he also says, consider using k\text{-th} (or k\mbox{-th} without amsmath) instead of superscript.

share|improve this answer
    
I'll remove my answer; would you add my comments to yours? –  egreg Oct 24 '12 at 16:23
    
doh of course! The = instead of \eg solved it :) Also I simply forgot the \STATE in the example, in reality quite a lot of statements follow inside the \WHILE –  Casper Oct 24 '12 at 16:28
    
@egreg OK, I've done that. –  Andrew Swann Oct 24 '12 at 16:31
    
I think my multiletter identifiers actually work without \mathit - what is the difference? Also what is the difference between using amsmath (^{th}) instead of \text{-th} or \mbox{-th}? –  Casper Oct 24 '12 at 16:35
1  
@Casper Try to use the function name Difference() and after that try \mathit{Difference}(). You'll see a big difference. ;-) –  egreg Oct 24 '12 at 16:44

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.