[OS X TeX] \newcommand\eal{\end{align}

Ross Moore ross.moore at mq.edu.au
Thu Nov 18 07:58:33 CET 2010


Hi David,

On 18/11/2010, at 5:06 PM, David Arnold wrote:

> All,
> 
> A colleague of mine asked why this won't compile.
> 
> \documentclass[12pt]{article}
> \usepackage{amsmath,amssymb}
> 
> \newcommand{\bal}{\begin{align*}}
> \newcommand{\eal}{\end{align*}}

First the dogma:

Definitions of this kind are prone to disasters.
You should stick to the markup that is already defined,
and not make such silly shorthands.
Use editor templates if there is a need to reduce typing.


Now the technical reason why it fails:

  The error message is:

>>> Runaway argument?
>>> \frac {3.5}{4.2} &= \frac {35}{42}\\ &= \frac {5}{6} \eal 
>>> ! Paragraph ended before \align* was complete.
>>> <to be read again> 
>>>                    \par 


The problem is that the tokens in an alignment need to be processed
*twice* before the display can be created. The first pass is for 
measuring widths (e.g., related to how much space for any \tag ,
even if there is not one being used) and working out the space 
between columns in the alignment.

To do this, the code needs to read ahead to where the environment
finishes, *without* expanding macros. When the \end{align*} is 
wrapped up inside \eal  then this step can only fail.


If there was only a single pass over the code, then the \end{align*}
would be found as \eal  was being expanded. But that is not good
enough for code, as here, that wants to capture the whole environment
unambiguously, before proceeding with the finer details.

Not that many of the alignments in amsmath.sty  work this way.
Furthermore, if the output needs to be further encapsulated,
(e.g. for Tagged PDF) so that it has a chance of working on
mobile devices, where the size of the output screen is variable,
then proper unambiguous markup of the input is vital.


> 
> \begin{document}
> 
> \bal
> 	\frac{3.5}{4.2} &= \frac{35}{42}\\
> 	&= \frac{5}{6}
> \eal
> 
> \end{document}
> 
> I just didn't have a good answer to give to him.  Can some expert out there explain?
> 
> Thanks.
> 
> David


Hope this helps,

	Ross

------------------------------------------------------------------------
Ross Moore                                       ross.moore at mq.edu.au 
Mathematics Department                           office: E7A-419      
Macquarie University                             tel: +61 (0)2 9850 8955
Sydney, Australia  2109                          fax: +61 (0)2 9850 8114
------------------------------------------------------------------------






More information about the macostex-archives mailing list