The package EASYEQN

Enrico Bertolazzi

Laboratorio di Matematica Applicata e Meccanica Computazionale
Dipartimento di Ingegneria Meccanica e Strutturale
Università degli Studi di Trento
Mesiano, Trento, Italy

enrico.bertolazzi@ing.unitn.it

Abstract:

The package EASYEQN introduces some equation environments that simplify writing of equations. It uses a syntax similar to the array environment to define the column alignment. The label field is fully customizable. A package option permits to number only those equations that were labeled and referenced. Some additional macros are also included to facilitate typing of formulae.


Contents

Some examples with EASYEQN

Load the package using the usual syntax:


\documentclass{article}
.
.
\usepackage[allnumber,warning, easyold,
            fleqn,leqno,math]{easyeqn}
.
.

The package1introduces the EQ and EQA environments. The package options are:

allnumber Means that all of the EQ and EQA environments are numbered. Without that option, only those EQ and EQA environment that are labeled and referenced are numbered.
warning Causes equations that are labeled but not referenced to be flagged.
easyold Produce obsolete environment EQS, EQS*, EQ*, EQA* for backward compatibilty.
fleqn Flushes equation on the left margin.
leqno Writes equation number on the left.
math Define additional macros for mathematics.

Use of the EQ environment

Look at this example:


\begin{EQ}\label{eq:1}
    \frac{x}{y} = z
\end{EQ}
\begin{EQ}\label{eq:2}
    \frac{a}{b} = c
\end{EQ}
I will refer only to \eqref{eq:1} or,
in the old style, \refeq{eq:1}.

\begin{center}\vbox{\input{doceqn.2}
}\end{center}

Note that the reference is done by \eqref or \refeq. The command \refeq produces the same output as \ref, while \eqref uses ( ) for the output.

Remark: Due to the algorithm implementation, in order to obtain the right cross reference, you need to recompile the file 3 times. The use \label is not permitted inside EQ* environments and if you use \ref for referencing equations the results are unpredictable2.

This is another example:


\begin{EQ}[rcll]
   \nabla\cdot(\rho\nabla u)&=&f \qquad
      &\mbox{on $\Omega$} \\
   u&=&u_{0}&\mbox{on $A\subset\partial\Omega$} \\
   (\rho\nabla u)\cdot n&=&u_{1}
      &\mbox{on $B\subset\partial\Omega$}
\end{EQ}

\begin{center}\vbox{\input{doceqn.3}
}\end{center}

Note that between [...] you can specify the column alignment in the same way as in the array or tabular environment3. The permitted alignment are l for left alignment, r for right alignment and c for centering. There is also the character ``.'' that used between definition of two columns disable the spacing between columns as in the following example taken from the documentation of EQNARRAY of Roland Winkler;


\begin{EQ}[rcl.l]
  \phi & = & \sum \bigg( & \frac{xxxxxxxxxx}{\phi}\\
       & & & + \frac{yyyyyyyyyy}{\phi} \bigg)\\
       & = & \eqmulticol{2}{l}
             {\frac{zzzzzzzzzz}{\phi}}
\end{EQ}

\begin{center}\vbox{\input{doceqn.4}
}\end{center}

in this example we have used also the command \eqmulticol the syntax is the following


   \eqmulticol{ncol}{align}{body}
where

ncol is the number of column to fuse.
aling is the alignment, it can be l, r, c.
body is the thing to put across the column.

The \yesnumber command

If you want to number an equation without reference it, use the \yesnumber command as this example shows:


\begin{EQ}[rcl]\yesnumber
   a & = & \frac{1}{23} \\
   b & = & \sqrt{\frac{1}{23}}
\end{EQ}

\begin{center}\vbox{\input{doceqn.5}
}\end{center}

Use of EQA environment


\begin{EQA}[rcll]
   \nabla\!\cdot\!(\rho\nabla u)&=&f \qquad
      &\mbox{on $\Omega$}
   \yesnumber \\
   u&=&u_{0}&\mbox{on $A\subset\partial\Omega$}
          \label{eq:3} \\
   (\rho\nabla u)\!\cdot\!n&=&u_{1}
       &\mbox{on $B\subset\partial\Omega$}
          \label{eq:4}
\end{EQA}
it is referenced only \eqref{eq:4}!!

\begin{center}\vbox{\input{doceqn.6}
}\end{center}

Note that only the referenced lines or the lines with \yesnumber are numbered.

The \label command

It is possible to use custom label by \label command. The syntax is one of the following:

  \label{labelname}
  \label[eqnum]
  \label[eqnum]{labelname}
  \label(eqnum)
  \label(eqnum){labelname}
where ``[eqnum]'' is an optional argument that if defined, equation displays ``eqnum'' instead of ``(equation number)''. The equation counter is not advanced and ``labelname'' if present will refer to ``eqnum''.

If we use where ``(eqnum)'' is an optional argument that if defined, equation displays ``(eqnum)'' instead of ``(equation number)''. The equation counter is not advanced and ``labelname'' if present will refer to ``eqnum''.

Look at this example:


\begin{EQA}[c]
   \nabla\cdot(\rho\nabla u) = 0
       \label(eq.1){eq:custom:a} \\
   \nabla\cdot(\rho\nabla u) = 0
       \label[eq.2]{eq:custom:b} \\
   \nabla\cdot(\rho\nabla u) = 0
       \label[***1***]
\end{EQA}
I will refer to \eqref{eq:custom:a}
and \eqref{eq:custom:b}

\begin{center}\vbox{\input{doceqn.7}
}\end{center}

Notice that custom label are always displayed also if they are not referenced.

Label positioning

It is possible to change the default position os a single label by the commands:

* \eqlabeltop
* \eqlabelbot
* \eqlabelcenter

For example:


\eqlabeltop
\begin{EQ}
   \nabla\cdot(\rho\nabla u) = 0 \\
   \nabla\cdot(\rho\nabla u) = 0 \\
   \nabla\cdot(\rho\nabla u) = 0 \label[TOP]
\end{EQ}

\begin{center}\vbox{\input{doceqn.8}
}\end{center}

Sub-numbering

To sub-number equation instead of use something like

  \begin{subequations}
  \begin{EQ}...
    
  \end{EQ}
  \end{subequations}
I prefer to use \label command with the character ~ as a shortcut for the command \theequation. The following example shows the use


\begin{EQA}[c]\yesnumber
   \nabla\cdot(\rho\nabla u) = 0 \label(~.A) \\
   \nabla\cdot(\rho\nabla u) = 0 \label(~.B) \\
   \nabla\cdot(\rho\nabla u) = 0 \label(~.C)
\end{EQA}

\begin{center}\vbox{\input{doceqn.9}
}\end{center}

the \yesnumber command is necessary to enforce advancing of equation counter.

Use of fleqn and leqno option

You can use fleqn to flux left the equations or leqno to number equations on the left. If for example we have used

  \documentclass{article}
  .
  .
  \usepackage[fleqn,leqno]{easyeqn}
  .
  .
the effect with this example:


\begin{EQA}[rcll]
   \nabla\cdot(\rho\nabla u)&=&f \qquad
      &\mbox{on $\Omega$}\yesnumber \\
   u&=&u_{0}&\mbox{on $A\subset\partial\Omega$}
      \yesnumber\\
   (\rho\nabla u)\!\cdot\!n&=&u_{1}
      &\mbox{on $B\subset\partial\Omega$}
        \label{eq:5}
\end{EQA}
it is referenced only \eqref{eq:5}!!

\begin{center}\vbox{\input{doceqn.10}
}\end{center}

The same effect can be obtained everywhere using the commands \equationleft and \numberleft before defining the equation. To restore the default values use the commands \equationcenter and \numberright after the equation.

Cosmetic changes

It is possible to modify a little the appearance of the equations. There are three parameter that it is possible to change

left indent When the equations are fluxed left, the left indent can be changed by the command \eqleftmargin.

   
   \eqleftmargin{new indent}
for example

  
  \eqleftmargin{1cm}
The default value for the left margin is \leftmargini.

equation spacing The spacing around a formula, (default 7pt) can be changed by the command

  \eqspacing{new spacing}
for example

  
  \eqspacing{4pt}
column spacing The spacing between columns (default value 4pt) can be changed by the command

  \eqcolumnsep{new spacing}
for example

    
  \eqcolumnsep{10pt}
row spacing The spacing between rows in multiple equations (default value 7pt) can be changed by the command

  \eqrowsep{new spacing}
for example

  \eqrowsep{10pt}

for example


\eqrowsep{20pt}
\eqcolumnsep{10pt}
\eqspacing{1cm}
bla bla bla bla bla bla bla bla bla bla bla bla
\begin{EQ}[rcll]
   \nabla\cdot(\rho\nabla u)&=&f \qquad
      &\mbox{on $\Omega$} \\
   u&=&u_{0}&\mbox{on $A\subset\partial\Omega$} \\
   (\rho\nabla u)\cdot n&=&u_{1}
      &\mbox{on $B\subset\partial\Omega$}
\end{EQ}
bla bla bla bla bla bla bla bla bla bla bla bla

\begin{center}\vbox{\input{doceqn.11}
}\end{center}

Additional macros

Using the package as follow

  \documentclass{article}
  .
  .
  \usepackage[...,math]{easyeqn}
  .
  .
we can use additional macros for typesetting mathematics, the following macros are defined \frac, \dfrac, \tfrac, \binom and \boxed which use is described in the following example:


\begin{EQ}[rclrcl]
    \frac[1pt]{\frac{1}{2}}{\frac{1}{2}}
    & = & \frac{\frac{1}{2}}{\frac{1}{2}} \qquad &
    \dfrac{\frac{1}{2}}{\frac{1}{2}}
    & = & \dfrac{\frac[0pt]{1}{2}}{\frac{1}{2}} \\
   \tfrac{1}{2} &=& \frac{1}{2}\qquad &
   \binom{n-1}{n-k} && \boxed{a+b}
\end{EQ}

\begin{center}\vbox{\input{doceqn.12}
}\end{center}

The macro \eqbox is defined, the effect is the following


\[
  \eqbox{1+\dfrac{1}{2}} \qquad
  \eqbox(1pt,20pt){1+\dfrac{1}{2}} \qquad
  \eqbox(5pt,5pt){1+\dfrac{1}{2}}
\]

\begin{center}\vbox{\input{doceqn.13}
}\end{center}

The macros \norm and \abs are defined, the effect is the following


\[ \norm{A}, \qquad \abs{A} \]

\begin{center}\vbox{\input{doceqn.14}
}\end{center}

The macro \ParDer is defined, the effect is the following


\[
  \ParDer[xyyz]{f(x,y,z)}, \qquad
  \ParDer[{x^{2}}{x^{2}}{x^{2}}y\alpha]{f(x,y,z)}
\]

\begin{center}\vbox{\input{doceqn.15}
}\end{center}

notice that single item of derivative must be a single letter (or a macro) or must be inside a group { ... }. If you use \ParDer with package EASYVECTOR remember to put macros in brace when use ``$[$ $]$'' as follows:


\[ \xx,\xx[i,j] =
   \ParDer[\xx\xx{\xx[i,j]}\yy]{f(x,y,z)} \]

\begin{center}\vbox{\input{doceqn.16}
}\end{center}

otherwise you obtain strange think like the following


\[ \ParDer[\xx\xx\xx[i,j]\yy]{f(x,y,z)} \]

\begin{center}\vbox{\input{doceqn.17}
}\end{center}

The macros \DIV, \GRAD and \LAPLA are defined, the effect is the following


\[ \DIV{A}, \qquad \GRAD{B}, \qquad \LAPLA{C} \]

\begin{center}\vbox{\input{doceqn.18}
}\end{center}

The macro \SUM is defined, the effect is the following


\[
  \SUM{i=1}{100}a_{i},\quad
  \SUM[10]{i=1}{100}a_{i}
\]

\begin{center}\vbox{\input{doceqn.19}
}\end{center}

The macro \PROD is defined, the effect is the following


\[
  \PROD{i=1}{100}a_{i},\quad
  \PROD[10]{i=1}{100}a_{i}
\]

\begin{center}\vbox{\input{doceqn.20}
}\end{center}

The environment ARRAY is defined, is a simple subset of the environment array with a different spacing; look the following example


\[
  \left(\begin{array}{cc}
    1        & \frac{1}{2} \\
        \sqrt{3} & \frac{2}{\sqrt{3}}
  \end{array}\right), \qquad
  \left(\begin{ARRAY}{cc}
    1        & \frac{1}{2} \\
        \sqrt{3} & \frac{2}{\sqrt{3}}
  \end{ARRAY}\right),
\]

\begin{center}\vbox{\input{doceqn.21}
}\end{center}

The environment MATRIX is defined, is a simple replacement of \matrix command with a different spacing; look the following example


\[
  \matrix{
    1        & \frac{1}{2} \cr
    \sqrt{3} & \frac{2}{\sqrt{3}}
  }, \qquad
  \begin{MATRIX}
    1        & \frac{1}{2} \cr
    \sqrt{3} & \frac{2}{\sqrt{3}}
  \end{MATRIX},
\]

\begin{center}\vbox{\input{doceqn.22}
}\end{center}

About this document ...

The package EASYEQN

This document was generated using the LaTeX2HTML translator Version 99.1 release (March 30, 1999)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -local_icons -no_navigation -split 0 doceqn

The translation was initiated by Bertolazzi Enrico on 1999-10-22


Footnotes

... package1
the option ``showkeys'' is eliminated in this version because now EASYEQN is compatible with SHOWKEYS package
... unpredictable2
The previous release to label an equation uses the command
eqlabel
, for backward compatibility this command is maintained but the user should use the
label
command
... environment3
In a previous release of EASYEQN multicolumn alignment was implemented in a EQS environment. However to maintain backward compatibility such an environment are maintained


Bertolazzi Enrico
1999-10-22