45

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. May 22, 2012 at 5:34

5 Answers 5

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
66

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.

7
  • 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, 2019 at 4:26
  • 1
    @ZaydH: There is no \Return defined by default.
    – Werner
    May 3, 2019 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, 2019 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, 2019 at 5:13
  • 1
    @ZaydH: Just saw that \Return is defined within algpseudocode.sty.
    – Werner
    May 3, 2019 at 15:41
6
\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

0

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, 2018 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.