You can do the formatting using a table for alignment of the labels, manual spacing for indentation and manual typesetting of each word (paying attention to spacing). $$ \begin{array}{ll} & \mathit{stringlen} \leftarrow \text{length of } \mathit{string}. \\ & \mathit{i} \leftarrow \mathit{patlen}. \\ \mathit{top}: & \text{if } \mathit{i} \gt \mathit{stringlen} \text{ then return false}. \\ … \\ & \text{if } \mathit{string}(\mathit{i}) = \mathit{pat}(\mathit{i}) \\ & \quad \text{then} \\ … \\ \end{array} $$ But this is painful for many reasons. The source is hard to read and edit. The rendering of such large blocks of MathJax is slow in some browsers. I hate to think what this would sound like on a screen reader. And I don't think your sample output is particularly pretty anyway. I would use the native text markup. It's perfectly suitable for a nested structure. * Let $\mathit{stringlen} = \mathrm{length}(\mathit{string})$ * Set $i = \mathit{patlen}$ * While $i \lt \mathit{stringlen}$: * Set $j = \mathit{patlen}$ * While $j \lt 0$: * … * Return false. This is easier to do with structured code than with goto. But you shouldn't be using goto when loops would do anyway. [Source code of this post](https://cs.meta.stackexchange.com/revisions/2d5663e0-e341-4364-8c61-1d66668a224a/view-source) ([other revisions](https://cs.meta.stackexchange.com/posts/1471/revisions))