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

19th March 2002

Abstract The package easyeqn introduces some equation environments that sim-

plify 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

1 Some examples with easyeqn . . . . . . . . . . . . . . . . . . . 2 2 Use of the EQ environment . . . . . . . . . . . . . . . . . . . . . 2 3 The \yesnumber command . . . . . . . . . . . . . . . . . . . 4 4 Use of EQA environment . . . . . . . . . . . . . . . . . . . . . . 5 5 The \label command . . . . . . . . . . . . . . . . . . . . . . . 5 6 Label positioning . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 Sub-numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 Use of fleqn and leqno option . . . . . . . . . . . . . . . . . . . 8 9 Cosmetic changes . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 Additional macros . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 Test latex2html interface . . . . . . . . . . . . . . . . . . . . 15

1 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 package^{1} introduces 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.

2 Use of the EQ environment

The use of EQ environment is best unserstood by the following example:

1the option “showkeys” is eliminated because the new release of easyeqn is compatible with the showkeys package

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

\frac{x}{y} = z  (1)

\frac{a}{b} = c

I will refer only to (1) or, in the old style, 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 unpredictable^{2}.

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}

∇ · (ρ∇u) = f  on Ω
u = u_{0}  on A ⊂ ∂Ω
(ρ∇u) · n = u_{1}  on B ⊂ ∂Ω

2The previous release used the command eqlabel for equation labelling, for backward compatibility this command is maintained but the user should use the label command

Note that between [...] you can specify the column alignment in the same way as in the array or tabular environment^{3}. 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}

ϕ = ∑ (\frac{xxxxxxxxxx}{ϕ}

+\frac{yyyyyyyyyy}{ϕ} )

= \frac{zzzzzzzzzz}{ϕ}

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.

3 The \yesnumber command

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

3In a previous release of easyeqn multicolumn alignment was implemented in a EQS environment. However to keep backward compatibility such an environment is maintained

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

\begin{aligned}a & = & \frac{1}{23} \\ b & = & \sqrt{\frac{1}{23}} \end{aligned}  (2)

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

∇·(ρ∇u) = f  on Ω  (3)
u = u_{0}  on A ⊂ ∂Ω
(ρ∇u)·n = u_{1}  on B ⊂ ∂Ω  (4)

it is referenced only (4)!!

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

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

∇ · (ρ∇u) = 0  (eq.1)
∇ · (ρ∇u) = 0  eq.2
∇ · (ρ∇u) = 0  ***1***

I will refer to (eq.1) and (eq.2)

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

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

\begin{matrix}∇ · (ρ∇u) = 0 \\ ∇ · (ρ∇u) = 0 \end{matrix}  TOP

***********************************

\begin{matrix}∇ · (ρ∇u) = 0 \\ ∇ · (ρ∇u) = 0 \end{matrix}  BOT

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

∇ · (ρ∇u) = 0  (5.A)
∇ · (ρ∇u) = 0  (5.B)
∇ · (ρ∇u) = 0  (5.C)

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

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

(6) ∇ · (ρ∇u) = f  on Ω
(7)  u = u_{0}  on A ⊂ ∂Ω
(8) (ρ∇u)·n = u_{1}  on B ⊂ ∂Ω

it is referenced only (8)!!

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.

9 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

The package easyeqn  10

\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

bla bla bla bla bla bla bla bla bla bla bla bla

∇ · (ρ∇u) = f  on Ω
u = u_{0}  on A ⊂ ∂Ω
(ρ∇u) · n = u_{1}  on B ⊂ ∂Ω

nonsense, nonsense, nonsense, monsense, nonsense

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

\begin{aligned}\frac{\frac{1}{2}}{\frac{1}{2}} & = & \frac{\frac{1}{2}}{\frac{1}{2}} & \frac{\frac{1}{2}}{\frac{1}{2}} & = & \frac{{1 \atop 2}}{\frac{1}{2}} \\ \frac{1}{2} & = & \frac{1}{2} & \binom{n − 1}{n − k} & & a + b \end{aligned}

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

1 + \frac{1}{2}  1 + \frac{1}{2}  1 + \frac{1}{2}

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

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

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

\frac{∂^{4}f(x, y, z)}{∂x∂y^{2}∂z}, \frac{∂^{5}f(x, y, z)}{∂x^{2}^{3}∂y∂α}

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

x, x_{i,j} = \frac{∂^{4}f(x, y, z)}{∂x^{2}∂x_{i,j}∂y}

otherwise you obtain weird results like the following

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

\frac{∂^{7}y}{∂x^{3}∂[∂i∂,∂j}]f(x, y, z)

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

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

∇ · A,  ∇B,  ΔC

Definition of the macro \SUM and its effect:

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

∑_{i=1}^{100} a_{i}, ∑_{i=1}^{100}^{(10)}a_{i}

Definition of the macro \PROD and its effect:

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

∏_{i=1}^{100} a_{i}, ∏_{i=1}^{100}^{(10)}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),
\]

( \begin{matrix}1 & \frac{1}{2} \\ \sqrt{3} & \frac{2}{\sqrt{3}} \end{matrix} ) ,  (\begin{matrix}1 & \frac{1}{2} \\ \sqrt{3} & \frac{2}{\sqrt{3}} \end{matrix}) ,

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{matrix}1 & \frac{1}{2} \\ \sqrt{3} & \frac{2}{\sqrt{3}} \end{matrix} , \begin{matrix}1 & \frac{1}{2} \\ \sqrt{3} & \frac{2}{\sqrt{3}} \end{matrix} ,

11 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:

1 ≠ \frac{1}{2}  (eqn)

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

1 ≠ \frac{1}{2}  (A)

−\frac{1}{3} ≠ \frac{1}{3}  (B)

1 ≠ \frac{2}{3}  (C)

\frac{2}{3} ≠ \frac{4}{3}  (D)