On Fri, 24 Mar 2006, WN wrote:
First thanks for your help, I did what you suggested and it worked.
But now I am trying your example file align.tex and running texexec,
using the latest Context (2006.03.23), I get the following error. I believe
the problems
lies in verb-tex.tex but I am not sure.
section : 1 Basic Alignment
<align-align.tmp> (/usr/local/tex/texmf-local/tex/context/base/verb-tex.tex
loading : Context Support Macros / Pretty TEX Verbatim
)
! Missing number, treated as zero.
<to be read again>
f
\currenttyping ->f
ile
\checkverbatimfileline ...enumber <\currenttyping
\c!start \else \ifnum
\ver...
\presetnormalverbatimline ...\doflushverbatimline
\global \chardef
\verbatim...
\readline ...line \else \presetnormalverbatimline
\fi \fi \fi \fi
\handlever...
\processfileverbatim ...expandafter \readline \fi
\closein \verbatiminput
\e...
...
*l.25 \ShowExample*
Strange. Try
\def\ShowExample{\typebuffer\showbuffer}
and if that does not work, I guess you do not have permissions to write to
a buffer. (This is all that I can make out from the error message). Try
modifying texmf.cnf for the correct permissions. (Again, I am not sure
which setting you need to modify).
Otherwise try the attached file. I have replaced all
\typebuffer\showbuffer by
\starttyping ... \stoptyping buffer contents (vim regex rules). This also
compiles on live.contextgarden.
If you do not manage to get it working, I will send you a pdf later today.
I do not have access to a recent context distribution right now [1].
HTH,
Aditya
[1] On my college computer
texexec --version gives
I can send you a pdf sometime
later today.
TeXExec 3.1 - ConTeXt / PRAGMA ADE 1997-2002
Taco, do you need this one for the museum :)
\setupcolors[state=start]
\definecolor [BufferColor] [r=1,g=1,b=0.5]
\setuptyping[option=color]
\gdef\ShowExample{
\blank
\framed[align=normal,width=broad,frame=off,background=screen]
{\tfx \typebuffer}
\framed[align=normal,width=broad,frame=off,
background=color,backgroundcolor=BufferColor] {\getbuffer}}
\starttext
\section{Basic Alignment}
The purpose of this document is to show how to do multi-line display equations
in \CONTEXT. Hans has provided a configurable align environment that can be
used for general purpose multiline display equations. Lets look at few
examples to understand how it works. In many cases, we need to align a
sequence of equations at the $=$ sign. This is how it can be done
\starttyping
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NR
\stopalign \stopformula
\stoptyping
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NR
\stopalign \stopformula
Lets look at how this is working. The \tex{startformula} starts the \CONTEXT
display mode, \tex{startalign} moves to the multiline display mode. \tex{NC}
specifies to start a {\em New Column} is starting and \tex{NR} specifies to
start a {\em New Row}. By default, the first column is right aligned and the
second is left aligned. You can increase the number of alignments by
specifying \type{n=?} as options to \tex{startalign}. By default all the new
columns are left aligned.
\starttyping
\startformula \startalign[n=3]
\NC a_1 x + b_1 y \NC = c_1 \NC = d_1 u + e_1 v \NR
\NC a_2 x + b_2 y \NC = c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
\stoptyping
\startformula \startalign[n=3]
\NC a_1 x + b_1 y \NC = c_1 \NC = d_1 u + e_1 v \NR
\NC a_2 x + b_2 y \NC = c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
The default column alignment can be changed by using
\type<<align={...,...,...}>> construct. This is a comma separated list, each
value is either \type{right}, \type{left} or \type{middle}. For example, to
get the second column to be middle aligned, we can specify \type<<[n=3,
align={right,middle,left}]>>
\starttyping
\startformula \startalign[n=3, align={right,middle,left}]
\NC a_1 x + b_1 y \NC = c_1 \NC = d_1 u + e_1 v \NR
\NC a_2 x + b_2 y \NC = c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
\stoptyping
\startformula \startalign[n=3, align={right,middle,left}]
\NC a_1 x + b_1 y \NC = c_1 \NC = d_1 u + e_1 v \NR
\NC a_2 x + b_2 y \NC = c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
Oops, this doesn't look too good. We need to specify each \type{=} sign as a
separate column.
\starttyping
\startformula \startalign[n=4, align={right,middle,middle,left}]
\NC a_1 x + b_1 y \NC = \NC c_1 \NC = d_1 u + e_1 v \NR
\NC a_2 x + b_2 y \NC = \NC c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
\stoptyping
\startformula \startalign[n=4, align={right,middle,middle,left}]
\NC a_1 x + b_1 y \NC = \NC c_1 \NC = d_1 u + e_1 v \NR
\NC a_2 x + b_2 y \NC = \NC c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
Sometimes one wants to have two columns of equations, next to one another.
This can be done by specifying the number of blocks in \type<<m=?>>.
\starttyping
\startformula \startalign[m=2]
\NC a_1 x + b_1 y \NC = c_1 \NC d_1 u + e_1 v \NC = f_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NC d_2 u + e_2 v \NC = f_2 \NR
\stopalign \stopformula
\stoptyping
\startformula \startalign[m=2]
\NC a_1 x + b_1 y \NC = c_1 \NC d_1 u + e_1 v \NC = f_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NC d_2 u + e_2 v \NC = f_2 \NR
\stopalign \stopformula
The distance between the blocks can be increased by specifying (well you
guessed it) \type<<distance>> in the parameters of align.
\starttyping
\startformula \startalign[m=2,distance=5em]
\NC a_1 x + b_1 y \NC = c_1 \NC d_1 u + e_1 v \NC = f_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NC d_2 u + e_2 v \NC = f_2 \NR
\stopalign \stopformula
\stoptyping
\startformula \startalign[m=2,distance=5em]
\NC a_1 x + b_1 y \NC = c_1 \NC d_1 u + e_1 v \NC = f_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NC d_2 u + e_2 v \NC = f_2 \NR
\stopalign \stopformula
However, this block mode can be cumbersome to work with. You need to work with
two formulas at the same time and this can be confusing. There is another
alternative in \tex{startformulas}
\starttyping
\startformulas
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NR
\stopalign \stopformula
\startformula \startalign
\NC d_1 u + e_1 v \NC = f_1 \NR
\NC d_2 u + e_2 v \NC = f_2 \NR
\stopalign \stopformula
\stopformulas
\stoptyping
\startformulas
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NR
\stopalign \stopformula
\startformula \startalign
\NC d_1 u + e_1 v \NC = f_1 \NR
\NC d_2 u + e_2 v \NC = f_2 \NR
\stopalign \stopformula
\stopformulas
More than two groups can also be placed.
\starttyping
\startformulas
\dorecurse{5}{\startformula
\startalign[n=3,align={middle,middle,middle}]
\NC a \NC = \NC b \NR
\NC 2a \NC = \NC 2b \NR
\stopalign
\stopformula}
\stopformulas
\stoptyping
\startformulas
\dorecurse{5}{\startformula
\startalign[n=3,align={middle,middle,middle}]
\NC a \NC = \NC b \NR
\NC 2a \NC = \NC 2b \NR
\stopalign
\stopformula}
\stopformulas
\section{Equation Numbering and referring}
To number multiline displays, two things need to be done. Write
\tex{placeformula} before \tex{startformula} to {\em start up} equation
numbering. To actually number the equations, you need to type \type{[+]} with
each \tex{NR}. Going back to our basic example
\starttyping
\placeformula
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR[+]
\NC a_2 x + b_2 y \NC = c_2 \NR[+]
\stopalign \stopformula
\stoptyping
\placeformula
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR[+]
\NC a_2 x + b_2 y \NC = c_2 \NR[+]
\stopalign \stopformula
If you only want to number a some specific equations, just add \type<<[+]>> to
that equation only. Suppose in the above example, we want to only number the
second equation.
\starttyping
\placeformula
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NR[+]
\stopalign \stopformula
\stoptyping
\placeformula
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NR[+]
\stopalign \stopformula
Some more examples \unknown
\starttyping
\placeformula
\startformula \startalign[n=3, align={right,middle,left}]
\NC a_1 x + b_1 y \NC = c_1 \NC = d_1 u + e_1 v \NR[+]
\NC a_2 x + b_2 y \NC = c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
\stoptyping
\placeformula
\startformula \startalign[n=3, align={right,middle,left}]
\NC a_1 x + b_1 y \NC = c_1 \NC = d_1 u + e_1 v \NR[+]
\NC a_2 x + b_2 y \NC = c_2 + c_3 \NC = d_2 u + e_2 v + f_1 w\NR
\stopalign \stopformula
\starttyping
\placeformula
\startformula \startalign[m=2]
\NC a_1 x + b_1 y \NC = c_1 \NC d_1 u + e_1 v \NC = f_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NC d_2 u + e_2 v \NC = f_2 \NR[+]
\stopalign \stopformula
\stoptyping
\placeformula
\startformula \startalign[m=2]
\NC a_1 x + b_1 y \NC = c_1 \NC d_1 u + e_1 v \NC = f_1 \NR
\NC a_2 x + b_2 y \NC = c_2 \NC d_2 u + e_2 v \NC = f_2 \NR[+]
\stopalign \stopformula
\starttyping
\placeformula
\startformulas
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR[+]
\NC a_2 x + b_2 y \NC = c_2 \NR
\stopalign \stopformula
\startformula \startalign
\NC d_1 u + e_1 v \NC = f_1 \NR
\NC d_2 u + e_2 v \NC = f_2 \NR[+]
\stopalign \stopformula
\stopformulas
\stoptyping
\placeformula
\startformulas
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR[+]
\NC a_2 x + b_2 y \NC = c_2 \NR
\stopalign \stopformula
\startformula \startalign
\NC d_1 u + e_1 v \NC = f_1 \NR
\NC d_2 u + e_2 v \NC = f_2 \NR[+]
\stopalign \stopformula
\stopformulas
There is no fun numbering equations if can not refer to it. Well, referencing
an equation is easy. Instead of the \type<<[+]>>, you can specify
\type<<[eq:tag]>> and then refer to the equation using \type{\in[eq:tag]}. For
example,
\starttyping
\placeformula
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR[eq:1]
\NC a_2 x + b_2 y \NC = c_2 \NR[eq:2]
\stopalign \stopformula
As seen from (\in[eq:1]) and (\in[eq:2]), referring equations is straight
forward.
\stoptyping
\placeformula
\startformula \startalign
\NC a_1 x + b_1 y \NC = c_1 \NR[eq:1]
\NC a_2 x + b_2 y \NC = c_2 \NR[eq:2]
\stopalign \stopformula
As seen from (\in[eq:1]) and (\in[eq:2]), referring equations is straight
forward.
{\bf Note that you need to put the tag with the \tex{NR} and not with
\tex{placeformula} (as is done with single line equations).}
\section{Some Advanced Tips}
Well, need to understand more myself before writing this. Write about
\tex{setupalign}, \tex{definealign}. Give examples of defining \type<<gather>>
and \type<<split>> environments.
\stoptext
_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context