43

I want to write a 'for' statement, but unsure how to do this with LaTeX. What I am trying to do is:

for k = 1, k++, while k < i

What is the proper (or at least a decent way) to write this in LaTeX?

Let me re-phrase:

I do not want to actually create a loop, I just want to print a line that will be the text of the beginning of a for-loop. I'm unsure how to do this.

1
  • We want to help you, but unsure how to help you as your statement is difficult to be parsed. Please provide a more detailed illustration. – kiss my armpit May 22 '12 at 5:34
14

If you just want to print the statement, then something like

\[
\text{for $k = 1$, $k{+}{+}$, while $k < i$}
\]

will set it in a displayed format (remember to call \usepackage{amsmath} in the preamble). If it's as an item in an enumerate, then

\item for $k = 1$, $k{+}{+}$, while $k < i$

is sufficient.

The only subtle point is to enclose the + symbols between braces, in order to avoid undesired spacings.

0
60

If you're interested in typesetting algorithmic code, there are a number of choices. You can use a pseudocode environment algpseudocode offered by algorithmicx. Here's a short example from the algorithmicx documentation (with a pseudocode for loop added):

enter image description here

\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithm
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\begin{document}
\begin{algorithm}
  \caption{Euclid’s algorithm}\label{euclid}
  \begin{algorithmic}[1]
    \Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
      \State $r\gets a\bmod b$
      \While{$r\not=0$}\Comment{We have the answer if r is 0}
        \State $a\gets b$
        \State $b\gets r$
        \State $r\gets a\bmod b$
      \EndWhile\label{euclidendwhile}
      \For{\texttt{<some condition>}}
        \State \texttt{<do stuff>}
      \EndFor
      \State \textbf{return} $b$\Comment{The gcd is b}
    \EndProcedure
  \end{algorithmic}
\end{algorithm}
\end{document}

The algorithms bundle supplied the algorithm floating environment.

Alternatively, the de-facto program typesetting package is listings. The examples, usage and language support is vast. An abundance of examples is contained within the listings documentation.

6
  • For line \State \textbf{return} $b$\Comment{The gcd is b}, is there a reason you did not use the \Return keyword? – ZaydH May 3 '19 at 4:26
  • 1
    @ZaydH: There is no \Return defined by default. – Werner May 3 '19 at 4:58
  • maybe a dumb question -- but could you please explain more? When I take the code you provided and change \textbf{return} to \Return, it compiles for me. Is this going to be system specific? (I am running a very recent version of MacTex) I am sure there is something I am missing and would like to understand more. – ZaydH May 3 '19 at 5:08
  • 1
    @ZaydH: If you look at the algorithmicx documentation you'll see that I just copied the code from the first example listed. I briefly looked at the code of algpseudocode.sty and could see a \Result; I may have missed it. If it works now, that's fine. – Werner May 3 '19 at 5:13
  • 1
    @ZaydH: Just saw that \Return is defined within algpseudocode.sty. – Werner May 3 '19 at 15:41
5
\documentclass{article}
\usepackage{algorithm,algpseudocode}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}

\begin{document}

\begin{algorithm}[H] 
\caption{Sum of Array Elements}
\label{alg:loop}
\begin{algorithmic}[1]
\Require{$A_{1} \dots A_{N}$} 
\Ensure{$Sum$ (sum of values in the array)}
\Statex
\Function{Loop}{$A[\;]$}
  \State {$Sum$ $\gets$ {$0$}}
    \State {$N$ $\gets$ {$length(A)$}}
    \For{$k \gets 1$ to $N$}                    
        \State {$Sum$ $\gets$ {$Sum + A_{k}$}}
    \EndFor
    \State \Return {$Sum$}
\EndFunction
\end{algorithmic}
\end{algorithm}

\end{document}

enter image description here

-1

To the example given by Werner above. It did not work for me until I included braces as if I'm coding. Like this:

\For{\texttt{<some condition>}} {
        \State \texttt{<do stuff>}
      \EndFor
}
1
  • 2
    The syntax of algorithmicx doesn't provide a second argument for \For. It only takes one argument. If you're using it this way, you're probably mixing algorithm2e's syntax with algorithmicx's constructions. Don't mix them - use one or the other. – Werner Mar 27 '18 at 22:29
-1

Possibly you are looking for this:

https://riptutorial.com/latex/example/28657/loops---repeating-things

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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