Lo que más me llama la atención son las formas de alinear las ecuaciones complejas. Por ejemplo, imagínate que queremos dar el cambio a coordenadas esféricas.
La forma más cutre sería poner cada ecuación en su propio entorno matemático. Es tan cutre, que ni siquiera voy a poner el resultado. El principal problema es que resulta imposible alinear las ecuaciones entre si (lo que mejora mucho el resultado), y además el espacio entre ecuaciones es demasiado grande.
Entorno array
Una forma que he visto muchas veces consiste en utilizar el entorno "[FONT=Fixedsys]array[/FONT]",
Código:
\begin{equation} \begin{array}{ccl} x & = & r \sin\theta \cos\varphi \ , \\ y & = & r \sin\theta \sin\varphi \ , \\ z & = & r \cos\theta \ . \end{array} \end{equation}
[Error LaTeX: Compilación LaTeX fallida]
Es más o menos el efecto que queremos conseguir, pero hay varios problemas. El principal, a mi modo de entender el LaTeX, es que "[FONT=Fixedsys]array[/FONT]" es para hacer matrices (ese es su significado en inglés), y esto no es una matriz. Esto puede ser una diferencia más bien conceptual que importante, para algunos, pero yo prefiero utilizar las cosas para lo que sirven. ¡Llamame quisquilloso!
El segundo problema, este un poco más práctico, es que las diferentes columnas salen con un espacio demasiado grande. No es el mismo espacio al rededor del igual que hay habitualmente. ¡Queda mal! Si, se puede solucionar cambiando la separación entre columnas de un [FONT=Fixedsys]array[/FONT] con el comando
Código:
\setlength{\arraycolsep}{2pt}
El tercer inconveniente es que el sistema es rígido, poco flexible. Hay que recurrir a trucos para conseguir ciertos efectos. Por ejemplo, si quisiéramos hacer dos columnas de ecuaciones, dejando una separación entre ellas, hay que dejar una columna en blanco con el espacio necesario. Por ejemplo,
Código:
\begin{equation} \begin{array}{cclcccl} x & = & r \sin\theta \cos\varphi \ , &\hspace{1em}& r & = & \sqrt{x^2+y^2+z^2} \ , \\ y & = & r \sin\theta \sin\varphi \ , &\hspace{1em}& \theta & = & \arctan \frac{\sqrt{x^2+y^2}}{z} \ , \\ z & = & r \cos\theta \ , &\hspace{1em}& \varphi & = & \arctan\frac y x \ . \end{array} \end{equation}
Bueno, por lo menos así conseguimos que funcione; pero en realidad nos estamos cargando uno de los principios fundamentales del LaTeX: dejar que sea él quien se ocupe del aspecto de las cosas, nosotros nos centramos en el contenido. Debería ser él quien se ocupe del ancho de las columnas, y todo eso.
Entorno [FONT=Fixedsys]eqnarray[/FONT]
LaTeX trae de serie un entorno que sirve, precisamente, para poner varias ecuaciones juntas. Se llama "[FONT=Fixedsys]eqnarray[/FONT]", y básicamente equivale a un [FONT=Fixedsys]array[/FONT] con la opción rcl; se usa tal que así:
Código:
\begin{eqnarray} x & = & r \sin\theta \cos\varphi \ , \\ y & = & r \sin\theta \sin\varphi \ , \\ z & = & r \cos\theta \ . \end{eqnarray}
Esto ofrece dos ventajas. En primer lugar, numera todas las ecuaciones, individualmente, que puede ser útil. En segundo lugar, está hecho específicamente para ecuaciones.
Pero, sigue sin ser perfecto. La distancia al rededor del igual sigue siendo incorrecta. Además, a veces puede convenir no numerar todas las ecuaciones; por ejemplo, en el caso de las coordenadas esféricas, ¿vamos a necesitar hacer referencias a las componentes por separado? Sería mejor poner un número general. Otro ejemplo es cuando realizamos un cálculo por pasos. Por ejemplo,
Código:
\begin{eqnarray} I & = & \int_0^1 \mathrm{d} x\ x \mathrm{e}^{-x^2} \nonumber\\ & = & \left. -\frac12 \mathrm{e}^{-x^2} \right|_0^1\nonumber \\ & = & \frac12 \left( 1 - \frac1e \right) \ . \end{eqnarray}
No está mal, pero estaría mejor si el número quedaba en medio. La única forma sería volver a recurrir al entorno array.
Paquetes de la AMS: entornos [FONT=Fixedsys]gather[/FONT] y [FONT=Fixedsys]align[/FONT]
La Sociedad Americana de Matemáticas, la AMS ha desarrollado una serie de paquetes que resultan muy útiles para mejorar las capacidades de LaTeX. Yo, como mucha gente, los cargo en todos mis documentos sistemáticamente. El que nos salvará en este caso es el paquete [FONT=Fixedsys]amsmath[/FONT] y sus entornos avanzados para el modo matemático.
Empezaremos por el entorno [FONT=Fixedsys]gather[/FONT]. Su función, como su nombre en inglés indica, es agrupar ecuaciones, sin más, en múltiples líneas. Es útil para agrupar diferentes ecuaciones que no tienen una estructura común, y que por tanto no tiene sentido alinear. Por ejemplo,
Código:
\begin{gather} \int_0^1 \mathrm{d} x\ x \mathrm{e}^{-x^2} = \frac12 \left( 1 - \frac1e \right) \ , \\ \mathrm{e} = 2.71828 \ . \end{gather}
Pero lo que nos importa a nosotros son ecuaciones alineadas. Para eso tenemos el entorno [FONT=Fixedsys]align[/FONT]. Funciona de una forma muy simple: se sitúa un sólo amperstand (&) en el punto de alineación de las ecuaciones; dos barras invertidas para separar líneas. Y ya está. Volvamos a nuestro ejemplo del cambio a esféricas:
Código:
\begin{align} x & = r \sin\theta \cos\varphi \ , \\ y & = r \sin\theta \sin\varphi \ , \\ z & = r \cos\theta \ . \end{align}
Perfectamente alineado, con un número en cada línea, y el espacio al rededor del igual es el que debe ser.
Pero el entorno [FONT=Fixedsys]array[/FONT] aún esconde más posibilidades. Por ejemplo, podemos hacer varias columnas de ecuaciones; basta con separarlas con un amperstand extra. Por ejemplo,
Código:
\begin{align} x & = r \sin\theta \cos\varphi \ , & r & = \sqrt{x^2+y^2+z^2} \ , \\ y & = r \sin\theta \sin\varphi \ , & \theta & = \arctan \frac{\sqrt{x^2+y^2}}{z} \ , \\ z & = r \cos\theta \ , & \varphi & = \arctan\frac y x \ . \end{align}
El propio [FONT=Fixedsys]align[/FONT] se encarga de calcular la distancia justa entre columnas de ecuaciones. De eso se trata, que LaTeX se encarga de estas cosas por si solo. Esta característica es útil, por ejemplo, para dar varios valores a la vez:
Código:
\begin{align} e & = 1.60217646 \cdot 10^{-19}\mathrm{C}\ , & \hbar & = 1.05457148 \cdot 10^{-34}\mathrm{Js}\ , & m_e & = 9.10938188\cdot 10^{-31}\mathrm{kg} \ . \end{align}
Por supuesto, existe la versión de algin que no numera las ecuaciones, basta con añadir un asterisco al nombre: [FONT=Fixedsys]align*[/FONT].
Dentro de otras ecuaciones
A menudo, también se recurre a [FONT=Fixedsys]array[/FONT] para generar partes de una ecuación con varias lineas, dentro de una ecuación de una sóla linea. Es un poco de trabalenguas, si no lo has entendido el siguiente ejemplo te lo aclarará (espero), una función definida a trozos:
Código:
\begin{equation} \Theta(x) = \left\{ \begin{array}{cl} x & \text{si}\ x>0 \\ 0 & \text{si}\ x=0 \\ -x& \text{si}\ x<0 \end{array} \right. \end{equation}
Con lo que sabemos, todos nos iría mejor si pudiéramos usar las capacidades de [FONT=Fixedsys]align[/FONT] dentro de otra ecuación. Pues bien, alegraos por que podemos. El paquete de las AMS viene con otro entorno, llamado [FONT=Fixedsys]aligned[/FONT], que hace lo mismo que [FONT=Fixedsys]align[/FONT], pero estando dentro de otro entorno. Por ejemplo,
Código:
\begin{equation} \left. \begin{aligned} r & = \text{constante}\\ 0 & \le \theta \le \pi\\ 0 & \le \varphi \le 2\pi \end{aligned} \right\} \Longrightarrow \text{Superficie esf\'erica} \end{equation}
También existe una versión para usar [FONT=Fixedsys]gather[/FONT] dentro de otras ecuaciones; su nombre es [FONT=Fixedsys]gathered[/FONT]. Y el funcionamiento es idéntico,
Código:
\begin{equation} \left. \begin{gathered} r = \text{constante}\\ 0 \le \theta \le \pi\\ 0 \le \varphi \le 2\pi \end{gathered} \right\} \Longrightarrow \text{Superficie esf\'erica} \end{equation}
Este sistema también nos permite crear ecuaciones bien alineadas con un sólo número bien centrado. Volviendo a la integral anterior,
Código:
\begin{equation} \begin{aligned} I & = \int_0^1 \mathrm{d} x\ x \mathrm{e}^{-x^2} \nonumber\\ & = \left. -\frac12 \mathrm{e}^{-x^2} \right|_0^1\nonumber \\ & = \frac12 \left( 1 - \frac1e \right) \ . \end{aligned} \end{equation}
Nota sobre el uso en el foro
Como sabéis, en el foro (y blogs) se puede usar la etiqueta [tex]ecuación[/tex] para introducir ecuaciones LaTeX en los mensajes. El foro, internamente, pone el texto entre las etiquetas dentro de un entorno matemático, así que no podemos usar [FONT=Fixedsys]align[/FONT] y [FONT=Fixedsys]gather[/FONT] directamente. Pero, por supuesto, sí podemos utilizar las versiones acabadas en [FONT=Fixedsys]ed[/FONT]. Por ejemplo, la ecuación del último ejemplo dado se puede poner en el foro directamente como:
Código:
[tex=1]\begin{aligned} I & = \int_0^1 \mathrm{d} x\ x \mathrm{e}^{-x^2} \nonumber\\ & = \left. -\frac12 \mathrm{e}^{-x^2} \right|_0^1\nonumber \\ & = \frac12 \left( 1 - \frac1e \right) \ . \end{aligned}[/tex]
En el paquete AMSmath hay definidos muchos más entornos y comandos útiles. Por ejemplo, habréis notado que para escribir texto normal uso [FONT=Fixedsys]\text[/FONT] en vez del usual [FONT=Fixedsys]\textrm[/FONT]. Hay más entornos especiales para alinear ecuaciónes. Destacan [FONT=Fixedsys]multline, subequations, split, flalign, alignat y alignedat[/FONT], entre muchas otras opciones. Puedes leer más acerca de las inmensas posibilidades del paquete en su documentación.
Por fin me ha aclarado los usos de eqnarray, align, aligned, etc.
Estoy recomendándole este artículo a todo el mundo que me pregunta por esto, espero que se note en las visitas!