Dibujemos matrices fácilmente con LaTeX!
Hola buenas... recientemente tuve que realizar la documentación de una práctica y por la cosa de coger soltura la realice 100% en LaTex. Como tenía que hacer diagramitas chulos y tal me puse a buscar que extensión podía ayudarme y encontré una maravillosa: xymatrix. Espero que esto sea un "primeros pasos" de xymatrix ya que la potencia (como todo lo que rodea al LaTex) es increíble y el límite lo ponemos nosotros.
Ingredientes
Para trastear con la receta os hará falta:- Unos conocimientos muy mínimos de LaTex.
- Tener instalado LaTeX/TeTeX.
- Un buen Makefile y/o rubber.
Instalación de xymatrix
Instrucciones para Debian (y supongo que Ubuntu):El preámbulo
Bueno, sabréis que un documento en LaTex debe tener un pequeño preámbulo donde se define qué tipo de documento se está creando, paquetes que se emplearán, etc. Lo que yo uso para añadir y configurar xymatrix es:\usepackage{geometry,amsthm,graphics,amssymb,amsmath,latexsym} \usepackage[all,2cell]{xy} \UseAllTwocells \SilentMatricesEn la documentación oficial de xymatrix emplean un parámetro más al incluir xy, esto es:
\usepackage[all,2cell,dvips]{xy} \UseAllTwocells \SilentMatricesPero esto provocaba que no se me dibujasen las flechitas.
Crear una matriz
Pues nada, vamos a crear una matriz de 2x2 con los elementos A, B, C y D:\[ \xymatrix{ A & B \\ C & D} \]Activamos el modo matemático (con "\[" y "\]"), en él insertamos un elemento xymatrix con los elementos citados. Los elementos de una columna los separamos con ampersand, es decir "&", y una nueva fila con la doble barra, "\\". Que yo lo haya puesto en distintas líneas en el código ha sido para que se vea más claro, pero podríamos haber hecho:
\[\xymatrix{A&B\\C&D}\]Los ejemplos anteriores habrían dado como resultado:
\[\xymatrix{ A & B \\ & D} \]Recordad que podemos hacer cosas como:
\[\xymatrix{ A && B & C} \]En este caso tendríamos una matriz fila de cuatro elementos, en el que el segundo elemento es nulo. Podéis ver como quedaría aquí:
\[\xymatrix{ & &1& & \\ &2& &3& \\ 4& &5& &6} \]Los huecos entre ampersand's los coloco para que se vea más claro, pero podría haber escrito:
\[\xymatrix{ &&1&&\\ &2&&3&\\ 4&5&6} \]O incluso:
\[\xymatrix{&&1&&\\&2&&3&\\4&5&6}\]El manual de xy tiene los ejemplos en la segunda forma, por lo que más vale entender esto bien, incluso practicarlo un poco. Yo en ejemplos más complicados tuve que usar lápiz y papel para entenderme (menudo informático de pacotilla! :-P). Entendiendo esto bien podemos pasar al siguiente punto: la flechas entre elementos.
Las flechitas
Bien, las flechas tienen un origen y un destino (ohhh), el origen es el elemento donde se crea y el destino es el elemento que le indicaremos nosotros. Todas las flechas tienen dirección por lo que si queréis una bidireccional entre A y B (por ejemplo) debéis crear una entre A y B y otra entre B y A (esto creo que debería estar en el TO-DO de xy). La forma en la que indicamos el elemento destino es indicando su desplazamiento con respecto al elemento origen. Los desplazamientos se indican con una letra: u,d,l,r; esto es: up, down, left, right (vaaaale: arriba, abajo, izquierda y derecha :-P). Por tanto, si queremos una flecha desde un elemento hasta el siguiente elemento a la izquierda, lo indicaríamos con [l]. Si queremos una flecha desde un elemento hasta el elemento dos lineas mas arriba y una columna más a la derecha pues [uur]. Al principio puede parecer lioso, pero veamos un ejemplo: en la matriz de ejemplo primera, la de 2x2, vamos a hacer un triángulo de flechas entre los elementos A, B y D con el sentido de las agujas del reloj, es decir, lo siguiente:\[ \xymatrix{ A \ar[r] & B \ar[d]\\ C & D \ar[ul]} \]Veamos: con \ar añadimos una flecha, un elemento puede tener todas las que quiera, los destinos pueden ser elementos vacíos y tiene que estar obligatoriamente dentro de los límites de la matriz, en caso contrario no compilará. Si no entendéis bien el ejemplo, dibujad en un papel un cuadro de 2x2 y observad los desplazamientos. Ahora vamos a crear una matriz fila de tres elementos: A, B y C, uniremos todos de forma cíclica, es decir: A con B, B con C y C otra vez con A:
\[\xymatrix{ A \ar[r]& B \ar[r]& C \ar[ll]} \]Si compiláis veréis lo siguiente:
\[\xymatrix{ A \ar[r]& B \ar[r]& C \ar@/^/[ll]} \]Para arquear una flecha añadimos la arroba al final de ar después viene lo siguiente: "/^/" indica cómo debe ser el arco. La concavidad/convexidad es relativa a la dirección de la flecha, "/^/" lo hace de una forma y "/_/" de la otra. También podemos aumentar la curvatura: "/^1pc/", "/^2pc/", etc.
Algunos ejemplos
Hasta aquí supondré q lo entendéis todo bien e incluso lo habéis probado. Si no entendéis bien lo anterior... esto os va a resultar algo extraño... Vamos a dibujar cuatro elementos formando un cuadrado pero con un quinto elemento central, todos los elementos exteriores tendrán una flecha hacia el elemento central:\[\xymatrix{ A \ar[dr]& & B \ar[dl] \\ & E & \\ C \ar[ur] & & D \ar[ul]} \]Que resulta en lo siguiente:
\[\xymatrix{ & E \ar[rr]&& F \ar[dd]\\ A \ar[rr]\ar[ur]&& B \ar[dd]\ar[ur]&\\ & G \ar[uu]&& H \ar[ll]\\ C \ar[uu]\ar[ur]&& D \ar[ll]\ar[ur]&} \]Con lo que obtendríamos un bonito:
\[ \xymatrix{ & & 2 \ar[rrrr]\ar@/_1pc/[dddddd]\ar[dl]\ar[ddr]& & & & 3 \ar[llll]\ar@/^1pc/[dddddd]\ar[dl]\ar[ddl]\\ & 0 \ar[rrrr]\ar@/_1pc/[dddddd]\ar[ur]\ar[ddr]& & & & 1 \ar[llll]\ar@/^1pc/[dddddd]\ar[ur]\ar[ddl]& \\ & & & 10 \ar[rr]\ar[dd]\ar[dl]\ar[uul]& & 11 \ar[ll]\ar[dd]\ar[dl]\ar[uur]& \\ & & 8 \ar[rr]\ar[dd]\ar[ur]\ar[uul]& & 9 \ar[ll]\ar[dd]\ar[ur]\ar[uur]& & \\ & & & 14 \ar[uu]\ar[rr]\ar[dl]\ar[ddl]& & 15 \ar[ll]\ar[uu]\ar[dl]\ar[ddr]& \\ & & 12 \ar[rr]\ar[uu]\ar[ur]\ar[ddl]& & 13 \ar[ll]\ar[uu]\ar[ur]\ar[ddr]& & \\ & & 6 \ar@/^1pc/[uuuuuu]\ar[rrrr]\ar[dl]\ar[uur]& & & & 7 \ar[llll]\ar@/_1pc/[uuuuuu]\ar[dl]\ar[uul] \\ & 4 \ar@/^1pc/[uuuuuu]\ar[rrrr]\ar[ur]\ar[uur]& & & & 5 \ar[llll]\ar@/_1pc/[uuuuuu]\ar[ur]\ar[uul]& } \]Si entendéis este ejemplo podréis hacer cualquier otra cosa de este tipo. El manual de xymatrix es todavía mas rayante...
Enlaces de interés
Manual de xymatrix Y como siempre que escribo una receta... Manual de xypic Lo de xypic no lo conocía pero parece que es bastante mejor que xymatrix... habrá que echarle un ojo ;-) [ show comments ]
blog comments powered by Disqus