jueves, 4 de noviembre de 2010

Reacciones químicas con LaTeX

LaTex permite escribir reacciones químicas fácilmente. En primer lugar, nuestro archivo .tex tendrá que ser algo parecido a lo siguiente, donde se cargan las librerías babel y inputenc para escribir en español, y las librerías ams para poder escribir algunos símbolos matemáticos que no vienen por defecto.

\documentclass[a4paper,openright,12pt]{report}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amssymb, amsmath, amsbsy} % librerias ams

\begin{document}

\end{document}



Las reacciones químicas en LaTeX se escriben igual que cualquier ecuación. Así que, quizás te pueda ser útil alguno de los truquitos para dibujar ecuaciones, que recopilo en el siguiente enlace (click aquí). Las referencias se pueden hacer con "\ref" o con "\eqref" (que ya añade directamente los paréntesis).

En la ecuación \eqref{reac:A2B} se que ve:

\begin{equation} \label{reac:A2B}
A \rightarrow B
\end{equation}



A continuación, puedes ver varios ejemplos de reacciones químicas. Fíjate en las distintas formas de poner flechitas, super y subíndices, y símbolos:

\begin{equation}
A_{2}^{+} \rightarrow B^{+}
\end{equation}

\begin{equation}
^{1}B \rightleftarrows 2 \cdot C
\end{equation}

\begin{equation}
C \xrightarrow[a]{b} D
\end{equation}

\begin{equation}
D \rightarrow E\uparrow + F\downarrow
\end{equation}


Nota: para el puntito de multiplicar he usado "\cdot".



Si no queremos que nos pinte la reacción en cursiva, podemos usar el comando \mathrm{}, como muestro en el siguiente ejemplo, más complejo:

\begin{equation}
\mathrm{NO_{3}^{-} + S_{2}O_{7}^{2-} \xrightarrow[T\uparrow]{H^{+}} NO_{2}^{+} + 2 SO_{4}^{2-}}
\end{equation}




Para escribir encima o debajo de cualquier flechita, símbolo o parte de la ecuación, podemos usar el comando "\stackbin" (suministrado por el paquete {stackerl}):

\usepackage{stackrel}

\begin{equation}
A + B \stackbin[T_1]{P_1}{=} C + D
\end{equation}





Para la formulación de química orgánica, se ha desarrollado el paquete {chemfig}, con el que puedes dibujar ciclos, cadenas, distintos tipos de enlaces, etc. El paquete es muy completo. Puedes encontrar la guía de dicho paquete en el siguiente enlace (click aquí).

Ecuaciones con LaTeX

En esta entrada resumiré los comandos más importantes para escribir ecuaciones. En primer lugar, nuestro archivo .tex tendrá que ser algo parecido al siguiente, donde se cargan los paquetes {babel} y {inputenc} para escribir en español, y los paquetes {ams} para poder escribir algunos símbolos matemáticos que no vienen por defecto.

Algunas de las instrucciones descritas aquí, también requieren algunos paquetes especiales, como sigue: el paquete {upgreek} se usa para escribir letras griegas sin cursiva; {cancel} se usa para tachar; {mathdots} se usa para poder disponer del comando "\iddots"; {mathrsfs} se usa para el formato de letra "\mathscr", y {stackrel} se usa para el comando "\stackbin". Si no vamos a emplear estas instrucciones, no es necesario cargar estos paquetes.

\documentclass[a4paper,openright,12pt]{report}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amssymb, amsmath, amsbsy} % simbolitos
\usepackage{upgreek} % para poner letras griegas sin cursiva
\usepackage{cancel} % para tachar
\usepackage{mathdots} % para el comando \iddots
\usepackage{mathrsfs} % para formato de letra
\usepackage{stackrel} % para el comando \stackbin


\begin{document}

\end{document}

Será entre \begin{document} y \end{document} donde iremos escribiendo nuestro código.



Normalmente, las ecuaciones se escriben dentro de \begin{equation} \end{equation}

Por ejemplo, la ecuación (\ref{eq:ej}):

\begin{equation}\label{eq:ej}
y(x_{i}) = 4 + x_{i}^{2}
\end{equation}



A veces, queremos meter la ecuación en mitad de una línea de texto. Esto lo hacemos encerrando la ecuación entre $. Por cierto, LaTeX, por defecto, pone las ecuaciones en cursiva. Si queremos evitarlo, usamos el comando \mathrm{}.

El símbolo del protón es $H_{3}O^{+}$. \\
El símbolo del protón es $\mathrm{H_{3}O^{+}}$.




Si queremos añadir un texto dentro de una ecuación, lo podemos hacer usando el comando \textup{}.

\begin{equation}
y(x_{i}) = \sin(x_{i})^{2} \ \ \textup{función seno cuadrado}
\end{equation}






Los espacios en blanco se escriben con "\ ". Y los espacios negativos con "\!":

\begin{equation}
x y, x \ y, x \! y
\end{equation}




Los simbolitos sobre una letra, se pueden poner de la siguiente manera:

\begin{equation}
\hat{a}, \check{a}, \tilde{a}, \bar{a},
\acute{a}, \grave{a}, \dot{a}, \ddot{a},
\end{equation}




Si queremos escribir vectores, podemos usar líneas o flechitas sobre nuestras variables:

\begin{equation}
\overline{ab}, \underline{ab}, \vec{ab}, \overrightarrow{ab}
\end{equation}



Y para escribir el símbolo de producto escalar o vectorial, podemos hacer lo siguiente:

\begin{equation}
a \cdot b \times x
\end{equation}




Podemos indicar las partes de una ecuación de la siguiente forma:

\begin{equation}
y = \underbrace{f(1)}_{parte\ 1} + \overbrace{f(2)}^{parte\ 2}
\end{equation}


Nota: los espacios en blanco los he puesto con "\ ".

O utilizando el función "\stackbin[]{}" (para la que hay que cargar el paquete {stackrel}):

\usepackage{stackrel}

\begin{equation} \label{reac:A2B}
\stackbin[xxx]{}{x_1} = \stackbin{yyy}{y^2} = \stackbin[zzz]{www}{z_1}
\end{equation}





Las funciones seno, coseno, tangente, mínimo, máximo, límite, etc. se escriben como \sin, \cos, \tan, \min, \max, \lim, etc. Al considerarlas funciones, LaTeX ya no las pone en cursiva.

\begin{equation}
y(x_{i}) = \sin(x_{i})^{2}
\end{equation}




Para poner letras griegas se pueden usar los siguientes comandos:

\begin{equation}
\alpha, \beta, \gamma, \delta, \epsilon, \zeta, \eta, \theta, \iota, \kappa, \lambda
\end{equation}

\begin{equation}
\mu, \nu, \xi, \pi, \rho, \sigma, \tau, \upsilon, \phi, \chi, \psi, \omega
\end{equation}

\begin{equation}
\Gamma, \Delta, \Theta, \Lambda, \Xi, \Pi, \Sigma, \Upsilon, \Phi, \Psi, \Omega
\end{equation}

\begin{equation}
\varepsilon, \vartheta, \varpi, \varrho, \varsigma, \varphi
\end{equation}




Hay veces que resulta interesante poner una letra bonita. A continuación, algunos ejemplos. (Para usar el comando \mathscr, es necesario cargar el paquete {mathrsfs}. Este comando solo trabaja con letras mayúsculas.)

\usepackage{mathrsfs}

\begin{equation}
\mathrm{R}, \mathbb{R}, \mathcal{R}, \mathfrak{R}
\end{equation}

\begin{equation}
\mathbf{R}, \mathsf{R}, \mathit{R}, \mathscr{R}
\end{equation}



Las letras griegas funcionan de una manera un poco particular: 1) Para poner en negrita una letra griega, no funciona el comando \mathbf{}. Podemos usar el comando \boldsymbol{} (requiere el paquete {amsmath}), o bien el comando \bm{} (requiere el paquete {bm}). 2) Para escribir sin cursiva una letra griega, tampoco funciona el comando \mathsf{}. Para ello hay que utilizar el paquete {upgreek}, que contiene las letras griegas sin cursiva: \upalpha, \upbeta, etc... A continuación un ejemplo:

\usepackage{upgreek}

\begin{equation}
\tau, \boldsymbol{\tau}, \uptau, \boldsymbol{\uptau}
\end{equation}




Transformada de Laplace (donde es necesario el paquete {mathrsfs}):

\usepackage{mathrsfs}

\begin{equation}
\mathscr{L}\{f(t)\} = F(s)
\end{equation}



Nota: las llaves las he puesto con "'\{" y "\}".



Algunos simbolitos matemáticos:

\begin{equation}
\pm, \leq, \geq, \ll, \gg
\propto, \sim, \simeq, \approx, \cong
\not=, \not<, \not>, \equiv
\end{equation}


Más simbolitos matemáticos:

\begin{equation}
\infty, \emptyset, \forall
\exists, \nabla, \in
\end{equation}

Y algunos puntitos que vienen bien cuando dibujamos vectores y matrices. (Por cierto, para el comando "\iddots", se necesita cargar el paquete {mathdots}.)

\usepackage{mathdots}

\begin{equation}
\cdots, \ldots, \vdots, \ddots, \iddots
\end{equation}




Sumatorio, productorio e integral:

\begin{equation}
\sum_{i=0}^n, \prod_{j=1}^{5}, \int_{x=0}^{x=\pi}, \oint,
\end{equation}


Tienes más sobre integrales en esta otra entrada (click aquí).
 


Límites:

\begin{equation}
\lim_{x \to \infty} \frac{\sin(x)}{x} = 0
\end{equation}


Nota: LaTeX, al estar trabajando con [spanish]{babel}, ha puesto lím con acento. El símbolo del seno es "sin", ya que viene del latín "sinus".



Un ejemplo de cómo escribir una función a minimizar:

\begin{equation}
\min_{u} f_{objetivo} = \sum_{i}(y_{i}- \hat y_{i})^{2}
\end{equation}


Nota: LaTeX, al estar trabajando con [spanish]{babel}, ha puesto mín con acento.



Flechitas. (Por cierto, para usar "\leftrigharrows", necesitamos el paquete {amssymb}.)

\usepackage{amssymb}

\begin{equation}
\rightarrow \longrightarrow \leftarrow \longleftarrow
\Rightarrow \Longrightarrow \Leftarrow \Longleftarrow
\uparrow \downarrow \Uparrow \Downarrow
\nearrow \nwarrow \swarrow \searrow
\leftrightarrow \Leftrightarrow \rightleftharpoons \leftrightarrows
\end{equation}




Raíces:

\begin{equation}
\sqrt{y\,a} = \sqrt[n]{b}
\end{equation}





Fracciones:

\begin{equation}
\frac{x^2}{x^2 + y^2} + \frac15 + \frac1{x}
\end{equation}



Tienes más sobre integrales en esta otra entrada (click aquí).



Números combinatorios:

\begin{equation}
{n \choose r}
\end{equation}





Las derivadas, pueden ponerse de alguna de estas maneras:

\begin{equation}
y' = \dot{y} = \frac{\partial y}{\partial t}
\end{equation}





Los paréntesis, corchetes y rayitas verticales, se pueden escribir directamente:

\begin{equation}
(x) = [x] = |x|
\end{equation}


Para llaves tenemos que hacerlo con el siguiente código. (El comando "\lbrack" es una forma alternativa para poner corchetes. Si hay alguna diferencia entre ambas formas, no la conozco.)


\begin{equation}
\lbrace x \rbrace = \langle x \rangle = \lbrack x \rbrack
\end{equation}


Cuando lo que está dentro de los paréntesis es más grande que una línea, es mejor hacerlo de la siguiente manera. Si queremos abrir  paréntesis, corchetes o poner una raya vertical, se hace respectivamente con "\left(", "\left[", "\left|"... El único que es un poco distinto es abre llave, que se hace con "\left\lbrace". De forma similar, para cerrar un símbolo se hace con "\right)", "\right]", etc. A continuación, se puede ver un ejemplo:

\begin{equation}
\left( \frac12 \right) = \left[ \frac12 \right] = \left| \frac12 \right| = \left\lbrace \frac12 \right\rbrace
\end{equation}



No es necesario que el símbolo de la izquierda sea igual que el de la derecha. Pero siempre tiene que haber un "\left" y un "\right".

\begin{equation}
\left( \frac12 \right] = \left\lbrace \frac12 \right| = \left\rbrace \frac12 \right(
\end{equation}




Si no queremos que haya un símbolo de abrir o cerrar, se pone con "\left." o "\right." respectivamente. Es decir:

\begin{equation}
\left\lbrace \frac12 \right. = \left. \frac12 \right| = \left[ \frac12 \right.
\end{equation}


Con "\left(" y "\right)", LaTeX aumenta automáticamente el tamaño del paréntesis. Pero hay veces que lo mantiene pequeñito, y quedaría mejor grande. En esos casos, podemos usar mejor "\Big(", "\bigg(" y "\Bigg(", como se ve a continuación:

\begin{equation}
\left( \left( \left( (x + 1) -1 \right) +1 \right) -1\right)
\end{equation}


\begin{equation}
\Bigg( \bigg( \Big( (x + 1) -1 \Big) +1 \bigg) -1 \Bigg)
\end{equation}





Las matrices se escriben de manera similar a las tablas (tienes más información sobre tablas en otras entradas (click aquí)). Se usa & para pasar al elemento siguiente y \\ para cambiar de línea. En \begin{array}{cc} las letras "c" significa elemento alineado en el centro. También se podía haber puesto "l" o "r", para alineación a la izquierda o a la derecha respectivamente.

\begin{equation}
\begin{array}{cc}
a & b \\
ccc & d
\end{array}
\end{equation}



Algunos ejemplos de matrices más complejos:

\begin{equation}
\left(
\begin{array}{cccc}
1 & 0 & \cdots & 0 \\
0 & 1 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & 1
\end{array}
\right)
\end{equation}



\begin{equation}
f(x) = \left\lbrace
\begin{array}{ll}
\textup{si } x>5 & 1\\
\textup{si } x\leq 5 & 0
\end{array}
\right.
\end{equation}



\begin{equation}
\begin{array}{llllll}
& x_1 &&& = & 10 \\
+ \\
& x_1 & + & x_2 & = & 1\\
\cline{2-6}
& 2x_1 & + & x_2 & = & 11
\end{array}
\end{equation}





Los saltos de línea se pueden hacer de la siguiente manera. Por cierto, se usa "\nonumber" para evitar que LaTeX numere todas las líneas de la ecuación:

\begin{eqnarray}
\nonumber x = 1 + 2 + 3 + \\
+ 4 + 5
\end{eqnarray}


\begin{eqnarray}
\nonumber x & = & (a+b)^2 \\
& = & a^2 + b^2 + 2\,a\,b
\end{eqnarray}




El paquete {cancel} contiene varias instrucciones para tachar elementos:

\begin{equation}
x + \cancel{y} = 5 + \cancel{y}
\end{equation}




Por último, si queremos cambiar el tamaño de un símbolo, podemos usar lo siguiente. (En vez de "\huge", podemos poner \Large, \LARGE, \footnotesize, etc.)

El símbolo \huge $\Omega$ \normalsize se llama omega.

\begin{equation}
\textup{\huge $\Omega$} , \Omega
\end{equation}

martes, 2 de noviembre de 2010

Tablas con LaTeX (1)

A continuación, mostraré una pequeña introducción para dibujar tablas sencillas en LaTeX. En primer lugar, nuestro archivo .tex tendrá que ser algo parecido a lo siguiente. Además de los paquetes habituales {babel} y inputenc}, se carga el paquete {multirow}, necesario para poder combinar celdas.

\documentclass[a4paper,openright,10pt]{report}
\usepackage[spanish]{babel} 
\usepackage[utf8]{inputenc} 
\usepackage{multirow} % para las tablas

\begin{document}

\end{document}

LaTeX, cuando trabaja con el paquete [spanish] llama a las tablas "Cuadros". Para que mejor las llame "Tablas", tenemos que indicarlo escribiendo:

\usepackage[spanish,es-tabla]{babel}



Una tabla muy sencilla puede ser la siguiente:

Por ejemplo, la tabla (\ref{tabla:sencilla}):

\begin{table}[htbp]
\begin{center}
\begin{tabular}{|l|l|}
\hline
País & Ciudad \\
\hline \hline
España & Madrid \\ \hline
España & Sevilla \\ \hline
Francia & París \\ \hline
\end{tabular}
\caption{Tabla muy sencilla.}
\label{tabla:sencilla}
\end{center}
\end{table}

Cuyo resultado sería:


Básicamente, utilizamos "&" para pasar a la siguiente celda, "\\" para saltar de línea, y "\hline" para hacer una línea horizontal.
Cuando en la tercera línea ponemos \begin{tabular}{|l|l|}, las "l" (letra ele) indican alineación a la izquierda (left). También podríamos haber puesto "c" o "r", para alineación en el centro o a la derecha. Los "|" (palitos verticales) significan separación con línea vertical.
Por último, en la primera línea hemos puesto [htbp]. Esto indica el orden en que queremos que LaTeX trate de colocar la tabla.
  • h (here) aquí.
  • t (top) arriba.
  • b (bottom) abajo.
  • p (page) en esta página.
Es decir, si ponemos [htbp], LaTeX probará primero de poner la tabla aquí. Si no le convence, probará arriba de la página. Luego abajo. Y luego en cualquier parte de esta página. De todos modos, LaTeX es bastante especial para colocar las tablas e imágenes. Si queremos obligar a LaTeX que situe la tabla exactamente donde hemos dicho, hay que poner [H] y usar el paquete {float}.



Se pueden fusionar celdas de la misma fila, mediante el comando \multicolumn.

\begin{table}[htb]
\centering
\begin{tabular}{|l|l|}
\hline
\multicolumn{2}{|c|}{Europa} \\ \hline
País & Ciudad \\
\hline \hline
España & Madrid \\ \hline
España & Sevilla \\ \hline
Francia & París \\ \hline
\end{tabular}
\caption{Tabla muy sencilla.}
\label{tabla:sencilla2}
\end{table}
En este caso \multicolumn{2}{|c|}{Europa}: {2} = 2 celdas fusionadas (contando de izquierda a derecha), {|c|} = texto centrado. (Por cierto, este comando también nos puede valer para alinear de una manera diferente, una única celda de una columna. Por ejemplo, con \multicolumn{1}{|r|}{xxx})

El resultado sería:




LaTeX se encarga de seleccionar el ancho de las celdas que él considera "mejor". Sin embargo, utilizando el comando p{...cm} en vez de "l", "c" o "r", podemos fijar el ancho que queramos.

\begin{table}[htb]
\centering
\begin{tabular}{| p{2.2cm}| p{2.2cm} |}
\hline
\multicolumn{2}{|c|}{Europa} \\
\hline
País & Ciudad \\
\hline \hline
España & Madrid \\ \hline
España & Sevilla \\ \hline
Francia & París \\ \hline
\end{tabular}
\caption{Tabla de ancho fijo.}
\label{tabla:anchofijo}
\end{table}

Cuyo resultado sería:






También podemos fusionar celdas de una misma columna. Para ello utilizamos el comando "\multirow", que está en el paquete {mutlirow}.

\usepackage{multirow}

\begin{table}[htb]
\centering
\begin{tabular}{|l|c|}
\hline
\multicolumn{2}{|c|}{Europa} \\
\hline
País & Ciudad \\
\hline \hline
\multirow{2}{1cm}{España} & Madrid \\ \cline{2-2}
& Sevilla \\ \hline

Francia & París \\ \hline
\end{tabular}
\caption{Fusionando celdas.}
\label{tabla:fusionandoceldas}
\end{table}

En este caso \multirow{2}{1cm}{España}: {2} = 2 celdas fusionadas (contando de arriba abajo), {1cm} = ancho de la celda.
Además, ahora ya no se puede utilizar siempre el comando \hline, pues crea una línea horizontal de longitud toda la tabla. Hay que usar el comando \cline{n1-n2}, que crea una línea horizontal entre la columna n1 y la columna n2.




Por último, un ejemplo de una tabla un poco más grande. (Fíjate que la rayita está centrada en el centro, no a la izquierda.)

\usepackage{multirow}

\begin{table}[htb]
\centering
\begin{tabular}{|l|l|l|l|}
\hline
& \multicolumn{3}{c|}{Europa} \\
\cline{2-4}
& Ciudad & Río & Símbolo\\
\hline \hline
\multirow{3}{1cm}{España} & Madrid & Manzanares & Cibeles\\ \cline{2-4}
& Sevilla & Guadalquivir & Giralda\\ \cline{2-4}
& Zaragoza & Ebro & Pilar\\ \cline{1-4}
Francia & París & Sena & Torre Eiffel\\ \cline{1-4}
\multirow{2}{1cm}{Italia} & Roma & Tíber & San Pedro\\ \cline{2-4}
& Milán & \multicolumn{1}{c|}{-} & Duomo\\ \cline{1-4}
\end{tabular}
\caption{Tabla muy bonita.}
\label{tabla:final}
\end{table}



Una última cosa. La etiqueta de las tablas, aparece debajo de cada tabla. Para que vaya arriba, basta con escribir la etiqueta "\caption{}" antes de "\begin{tabular}".