Keywords: doceqn

# The package EASYEQN

Enrico Bertolazzi
Department of Mechanics and Structures Engineering
University of Trento
via Mesiano 77, I - 38050 Trento, Italy
enrico.bertolazzi@ing.unitn.it

### Abstract:

The package EASYEQN introduces some equation environments that simplify the typesetting 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.i Additional macros are also included to facilitate the typing of formulae.

## Contents

- Some examples with EASYEQN
- Use of the EQ environment
- The \yesnumber command
- Use of EQA environment
- The \label command
- Label positioning
- Sub-numbering
- Use of fleqn and leqno option
- Cosmetic changes
- Additional macros
- Test latex2html interface
- About this document ...

# Some examples with EASYEQN

The package is loaded by means of 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 environments that are explicitly labeled and referenced are numbered.
warning | Causes the flagging of the equations that are labeled but not referenced.
easyold | Produces obsolete environment EQS, EQS*, EQ*, EQA* for backward compatibilty.
fleqn | equations will be left-justify.
leqno | Writes equation number on the left.
math | Defines additional macros for mathematics.

#### Remark:

When EASYEQN is used with HYPERREF the package EASYEQN must be included after HYPERREF or cross referencing do not work.

# Use of the EQ environment

The use of EQ environment is best unserstood by the following 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}.

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 of `\label` is not permitted from within EQ* environments. If you use `\ref` to reference equations results are unpredictable2.

Here 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}

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 if used between the definition of two columns, disables the spacing between columns as in the following example, which is 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}

In the above example the command `\eqmulticol` has been introduced. Its syntax is:

       \eqmulticol{ncol}{align}{body}

where:

ncol | number of column to merge.
aling | alignment, parameter to be chosen among the set `l`, `r`, `c`.
body | expression to put across the column.

# The `\yesnumber` command

If may you want to number an equation without reference it. The `\yesnumber` command does the work as this example shows:

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

# 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}!!

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, causes the equation displays `eqnum` instead of `(equation number)`. The equation counter is not advanced and `labelname` if present will refer to `eqnum`.

For 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}

Note that custom label are always displayed even if not referenced.

# Label positioning

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

| `\eqlabeltop`
| `\eqlabelbot`
| `\eqlabelcenter`

For example:

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

# Sub-numbering

To sub-number equation, instead of use something like

      \begin{subequations}
      \begin{EQ}...

      \end{EQ}
      \end{subequations}

I prefer to use the `\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}

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

# Use of fleqn and leqno option

You can use fleqn to left justify the equations or leqno to number equations on the left. For example:

      \documentclass{article}
      .
      .
      \usepackage[fleqn,leqno]{easyeqn}
      .
      .

and the following example shows the effect

    \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}!!

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 slighly modify the appearance of the equations. There are three parameters that can be changed:

left indent | Whenever equations are left justified, 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 of a formula, (default `7pt`) can be controlled by the command
      \eqspacing{new spacing}
for example
      \eqspacing{4pt}
column spacing | The spacing among columns (default value `4pt`) can be changed by the command
      \eqcolumnsep{new spacing}
for example
      \eqcolumnsep{10pt}
row spacing | The spacing among 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}
    nonsense, nonsense, nonsense, monsense, nonsense

# Additional macros

Using the package as follow

      \documentclass{article}
      .
      .
      \usepackage[...,math]{easyeqn}
      .
      .

as additional macros useful for typesetting mathematics can be invoked. The macros are defined as `\frac`, `\dfrac`, `\tfrac`, `\binom` and `\boxed` and their 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}

Definition of the macro `\eqbox` and its effect:

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

Definition of the macros `\norm` and `\abs` and their effect:

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

Definition of the macro `\ParDer` and its effect:

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

Notice the single item of the derivatives 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)} \]

otherwise you obtain weird results like the following

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

Definition of the macros `\DIV`, `\GRAD` and `\LAPLA` and their effect:

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

Definition of the macro `\SUM` and its effect:

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

Definition of the macro `\PROD` and its effect:

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

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),
    \]

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},
    \]

# Test `latex2html` interface

A file named `easyeqn.perl` is furnished for interfacing macros with perl program `latex2html`. The effect is to generate better HTML images of equations. For example the following equation has equation number always aligned on the right of the page:

|  | (eqn)

While equation array equations are also splitted in a table to maintain alignement on resize:

|  |  |  |  |  | (A)
|  |  |  |  |  | (B)
|  |  |  |  |  | (C)
|  |  |  |  |  | (D)

# About this document ...

The package EASYEQN

This document was generated using the LaTeX2`HTML` translator Version 2K.1beta (1.61)

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 `-transparent -local_icons -no_navigation -split 0 doceqn`

The translation was initiated by Enrico Bertolazzi on 2002-03-19

#### Footnotes

... package1
  the option ``showkeys'' is eliminated because the new release of EASYEQN is compatible with the SHOWKEYS package
... unpredictable2
  The previous release used the command `
  eqlabel` for equation labelling, 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 keep backward compatibility such an environment is maintained