easyeqn

Pakiet udostępnia środowiska EQ i EQA służące do prezentacji wzorów matematycznych (jest zgodny z pakietem showkeys). Główną różnicą w stosunku do środowisk equation i eqnarray jest to, że wzory są numerowane tylko wtedy, gdy w tekście występuje do nich odwołanie (oczywiście przez etykietę).

Pakiet posiada następujące opcje:
allnumber numerowane są wszystkie wzory (definiowane środowiskami EQ lub EQA) -- nie tylko te do których są odwołania
warning podawane są komunikaty o wzorach etykietowanych, do których nie ma odwołań
easyold definiowane są środowiska występujące w starszych wersjach pakietu: EQS, EQS*, EQ*, EQA*
fleqn wzory są dosunięte do lewego marginesu; lewy margines można ustalić poleceniem \eqleftmargin{długosć}; jeśli równocześnie jest użyta opcja leqno to wielkość marginesu musi uwzględnić miejsce na oznaczenie wzoru
leqno oznaczenia wzorów są wstawiane z lewej strony
math powoduje definiowanie dodatkowych makroinstrukcji przydatnych przy składzie wzorów

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

ilustruje działanie i przy okazji pokazuje, że zostały zdefiniowane dwie makroinstrukcje służące do powołania się na dany wzór (makroinstrukcja ref nie włącza mechanizmu oznaczania wzoru i generowania etykiet), różnice w działaniu widać na ilustracji; uzgodnienie połączeń wymaga trzykrotnej kompilacji.

Zarówno środowisko EQ jak i EQA może służyć do budowy tabel, różnica polega na tym, że w przypadku EQ cały wzór jest opatrzony jednym numerem, a w przypadku EQA numerem jest opatrzony każdy wiersz tabeli (o ile jest on zaetykietowany i jest do niego odwołanie lub zostało użyte polecenie \yesnumber).

\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$}\label{eq2}
\end{EQ}
in \eqref{eq2} ....
\begin{EQA}[rcll]
   \nabla\cdot(\rho\nabla u)&=&f \qquad
      &\mbox{on $\Omega$} \\
   u&=&u_{0}&\mbox{on $A\subset\partial\Omega$}
		   \label{eq3}\\
   (\rho\nabla u)\cdot n&=&u_{1}
      &\mbox{on $B\subset\partial\Omega$}\label{eq4}
\end{EQA}
in \eqref{eq3} and \eqref{eq4} ....

W obu środowiskach parametr opcjonalny określa sposób pozycjonowania poszczególnych kolumn:
l-- do lewej krawędzi
c-- centralnie
r-- do prawej krawędzi
.-- powoduje skasowanie odległości między kolumnami (odpowiada międzykolumnowej specyfikacji @{})

polecenia przejścia do nowego wiersza (//) można używać nawet wtedy, gdy parametr opcjonalny nie jest zdefiniowany -- domyślnie zdefiniowana jest jedna wycentrowana kolumna (ale nie jest przewidziane miejsce na oznaczenie wzoru).

Do łączenia kolumn służy makroinstrukcja \eqmulticol o następującej składni:
\eqmulticol{ncol}{align}{zawartość}
gdzie:
ncol -- liczba łączonych kolumn
align -- sposób pozycjonowania kolumny (tak jak w opcjonalnym parametrze środowisk)
zawartość -- zawartość kolumny

Dodatkowe polecenia:

\yesnumber -- wymusza numerowanie wzoru (lub wiersza tabeli w którym jest użyty)
\begin{EQ}[rcl]\yesnumber
a & = & \frac{1}{23} \\
b & = & \sqrt{\frac{1}{23}}
\end{EQ}

equationleft -- powoduje, że wszystkie następne wzory będą dosunięte do lewego marginesu (p. opcja fleqn)
equationcenter -- powoduje, że wszystkie następne wzory będą centrowane
numberleft -- powoduje, że we wszystkich następnych wzorach oznaczenia będą po lewej stronie (p. opcja lefteqno)
numberright -- powoduje, że we wszystkich następnych wzorach oznaczenia będą po prawej stronie
\eqspacing{odległość} -- odległość przed i po wzorze
\eqcolumnsep{odległość} -- odległość między kolumnami
\eqrowsep{odległość} -- odległość między wierszami
\eqlabeltop -- oznaczenie wzoru na górze
\eqlabelbot -- oznaczenie wzoru na dole
\eqlabelcenter -- oznaczenie wzoru centralnie
\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}
\eqlabelbot
\begin{EQ}
   \nabla\cdot(\rho\nabla u) = 0 \\
   \nabla\cdot(\rho\nabla u) = 0 \\
   \nabla\cdot(\rho\nabla u) = 0 \label[BOT]
\end{EQ}
\eqlabelcenter
\begin{EQ}
   \nabla\cdot(\rho\nabla u) = 0 \\
   \nabla\cdot(\rho\nabla u) = 0 \\
   \nabla\cdot(\rho\nabla u) = 0 \label[CENTER]
\end{EQ}
zmiana pozycji oznaczenia wzoru jest możliwa jedynie we wzorach wieloliniowych.

makroinstrukcja \label ma dodatkowe własności:
\label{nazwa_etykiety} -- działanie standardowe
\label[tekst] -- wzór zostanie oznaczony podanym tekstem (nie jest definiowana etykieta, na którą można się powołać)
\label[tekst]{nazwa_etykiety} -- wzór zostanie oznaczony podanym tekstem, nazwa_etykiety jest etykietą, na którą można się powołać
\label(tekst) -- wzór zostanie oznaczony podanym tekstem, który zostanie ujęty w nawiasy () (nie jest definiowana etykieta, na którą można się powołać)
\label(tekst){nazwa_etykiety} -- wzór zostanie oznaczony podanym tekstem, który zostanie ujęty w nawiasy (), nazwa_etykiety jest etykietą, na którą można się powołać

Przykład:
\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}

W parametrze makroinstrukcji \label można użyć znaku ~ -- oznacza on wstawienie polecenia \theequation z ostatnio użytą wartością licznika wzorów, bez jego inkrementacji. W ten sposób łatwo uzyskać efekt dodatkowego numerowania wzoru (p. także pakiety subeqn i subeqnarray)
\begin{EQA}[c]\label{dqq}\yesnumber
   \nabla\cdot(\rho\nabla u) = 0 \label(~.a){aqq}\\
   \nabla\cdot(\rho\nabla u) = 0 \label(~.b){bqq}\\
   \nabla\cdot(\rho\nabla u) = 0\label(~.c){cqq}
\end{EQA}
\eqref{aqq} \eqref{bqq} \eqref{cqq}
konieczne jest zdefiniowanie etykiety na początku (\label{dqq}\yesnumber), tak aby została zwiększona wartość licznika, w przeciwnym razie kolejne linie byłyby oznaczane (0.a), (0.b) i (0.c)

Dodatkowe polecenia aktywowane opcją math

\frac[długość]{licznik}{mianownik} -- parametr opcjonalny pozwala na zmianę grubości kreski ułamkowej (z powodu błędów definicji przed wywołaniem pakietu należy skasować standardową definicję makroinstrukcji poleceniem \let\frac\relax)
\dfrac[długość]{licznik}{mianownik} -- licznik i mianownik składany jest zawsze w ,,displaystyle''; parametr opcjonalny pozwala na zmianę grubości kreski ułamkowej
\tfrac[długość]{licznik}{mianownik} -- licznik i mianownik składany jest zawsze w ,,textstyle''; parametr opcjonalny pozwala na zmianę grubości kreski ułamkowej
\eqbox{zawartość}
\eqbox(grubość,odległość){zawartość} -- makroinstrukcja pozwala na ujęcie fragmentu wzoru w ramkę; parametr opcjonalny określa grubość ramki i jej odległość od zawartości
\[
\eqbox{\int_0^\infty dx}~~~~
\eqbox(2pt,5pt){\int_0^\infty dx}
\]
\norm{zawartość} --
\abs{zawartość} --
\ParDer[definicja mianownika]{licznik} --
\DIV{zawartość} --
\GRAD{zawartość} --
\LAPLA{zawartość} --
\SUM{od}{do}
\SUM[indeks]{od}{do} --
\PROD{od}{do}
\PROD[indeks]{od}{do} --

Dodatkowe środowiska aktywowane opcją math

ARRAY -- różnicę w stosunku do środowiska array ilustruje przykład (pola tablicy są składane w ,,displaystyle'')
  \[
    \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),
  \]
	
MATRIX -- różnicę w stosunku do makroinstrukcji matrix ilustruje przykład (odległość między wierszami)
  \[
    \matrix{
      1        & \frac{1}{2} \cr
      \sqrt{3} & \frac{2}{\sqrt{3}}
    }, \qquad
    \begin{MATRIX}
      1        & \frac{1}{2} \\
      \sqrt{3} & \frac{2}{\sqrt{3}}
    \end{MATRIX}
  \]

	

Pakiet easyeqn wraz z pakietami pomocniczymi jest dostępny pod adresem:
ftp://ftp.gust.org.pl/TeX/macros/latex/contrib/easy/


Włodzimierz Macewicz
Ostatnie zmiany: 05.05.2014.