LaTeX/LyX: matrices con delimitadores

Una cosa lleva a la otra por lo que gracias a un mensaje del amigo Victor en quitter.no me encontré con un blog muy interesante y en él un tema que picó mi curiosidad: poner «etiquetas» en los delimitadores de una matriz en LaTeX.

Matriz1En LyX crear matrices es simple y agregar delimitadores una fiesta, pero poner etiquetas que nombren las filas y columnas como en el ejemplo a izquierda, pues ya no lo parece tanto.

¡Y de hecho no lo es!

Las opciones son pocas: LaTeX puro y duro en una «caja TeX» o simular la cosa con matrices dentro de matrices. Ambas tienen su dificultad, que el lector decida cuál es su veneno favorito.

Con LaTeX puro y duro

La primer cosa es aplicar el método utilizado por la colega Ondiz en su blog, es decir, la instrucción \bordermatrix. Para esto y si queremos que la matriz esté «en modo display», dentro de una caja TeX

LyX-TeX

escribimos lo siguiente:

\[\bordermatrix{~ & x & y \cr
                A & 1 & 0 \cr
                B & 0 & 1 \cr}\]

(si queremos que esté numerada cambiamos el \[ al principio y el \] al final por \begin{equation} y \end{equation}, respectivamente, mientras que si queremos que esté «en línea» sustituimos con el signo $). Esto nos dará algo parecido a la primer captura de pantalla, pero con paréntesis en lugar de corchetes. ¿Cómo se logran entonces los corchetes? ¡tex.stackexchange al rescate! La segunda opción dada por el usuario egreg es la que más me ha gustado: en el preámbulo LaTeX escribimos

\usepackage{etoolbox}
\let\bbordermatrix\bordermatrix
\patchcmd{\bbordermatrix}{8.75}{4.75}{}{}
\patchcmd{\bbordermatrix}{\left(}{\left[}{}{}
\patchcmd{\bbordermatrix}{\right)}{\right]}{}{}

Lo que aquí sucede es que el paquete etoolbox toma la instrucción \bordermatrix y la copia en \bbordermatrix cambiando paréntesis por corchetes y ajustando el espaciado.

Ahora, en nuestra «caja TeX» escribimos

\[\bbordermatrix{~ & x & y \cr
                 A & 1 & 0 \cr
                 B & 0 & 1 \cr}\]

que nos dará exactamente lo buscado.

Forzando el editor gráfico

La idea parte del hecho de que podemos tener «matrices anidadas» simplemente insertando una matriz en una celda de otra matriz.

Primero insertamos una matriz de 2×2, dejando la celda de arriba a la izquierda vacía. Ahora insertamos una matriz de 1×2 (una fila y dos columnas) en la celda de arriba a la derecha, otra de 2×1 en la de abajo a la izquierda y finalmente una de 2×2 en la de abajo a la derecha, esta última rodeada de los paréntesis o corchetes que nos sirvan y procediendo luego a completar los espacios necesarios. Es posible que tengamos que agregar algún espacio extra (en el modo matemático de LyX Ctrl-Espacio nos da un espacio pequeño, si presionamos espacio de nuevo uno más grande, etcétera) para corregir algunos «problemas cosméticos»… pero no todos, porque las etiquetas de la izquierda quedarán un tanto separadas de la matriz. Esto puede «arreglarse» insertando oportunos

\arraycolsep=X.Ypt

donde X.Y es una distancia en puntos, por ejemplo 1.4 para reducir y 5.2 para agrandar. Esta instrucción cambia la distancia entre columnas (hay una análoga para la distancia entre filas). Dejo al lector el imaginar dónde colocarlas y jugar un poco con los valores.

Conclusión

El método de «LaTeX puro y duro» da los mejores resultados, pero complica un poco las referencias cruzadas (no puede utilizarse el sistema de etiquetado de LyX dentro de una «caja TeX») y si la matriz es solo una parte de la expresión… nada grave, pero tampoco muy cómodo.

El método gráfico funciona, pero hay que realizar varios trucos sucios y numerosas pruebas antes de llegar a la forma ideal.

En fin, lo dicho: que cada uno elija su propio veneno 😉

Anuncios

  1. #1 por Ondiz el 7 julio, 2016 - 21:10

    ¡Me alegro mucho de que te pasaras por mi blog y sobre todo de que te gustase! Me parece muy interesante lo que haces por aquí, te tendré vigilado 😉

    • #2 por elpinguinotolkiano el 7 julio, 2016 - 21:19

      ¡Pues a mi me ha alegrado descubrir tu blog! Encontrar un blog como el tuyo donde se habla, como dicen en Italia, di tutto e di più (sería «de todo y más aún») es en estos días un raro placer. Esos panes me dieron apetito… 😉

A %d blogueros les gusta esto: