Un diagrama conmutativo coloca objetos como puntos y las aplicaciones entre ellos como flechas, de modo que se vea de un vistazo que “todo camino de composiciones coincide”. LaTeX ofrece dos herramientas principales para componerlos: el potente tikz-cd, construido sobre TikZ, y el paquete AMS más sencillo amscd. Esta página compone un cuadrado conmutativo, el diagrama más básico de este tipo, con cada herramienta, ordena cómo asignar dirección, etiquetas y estilo de línea a las flechas, y compara cuándo conviene usar una u otra.
Qué es un diagrama conmutativo
Los diagramas conmutativos se usan en álgebra, teoría de categorías y topología para comunicar relaciones de un vistazo. El ejemplo mínimo es el cuadrado conmutativo: objetos A, B, C, D en las cuatro esquinas, una aplicación f en el borde superior de A a B, g en el inferior de C a D, una aplicación por el lado izquierdo de A a C y otra por el derecho de B a D. Decir que “el cuadrado conmuta” significa simplemente que los dos caminos de A a D, por arriba y luego bajando por la derecha frente a bajar por la izquierda y luego ir por abajo, son la misma aplicación.
Un diagrama es en sí una pieza de matemáticas, así que normalmente se coloca dentro de un entorno matemático en display (\[ … \] o el entorno equation). Históricamente se han escrito muchos paquetes para esto (xy/xypic, diagrams y otros), pero hoy el estándar de facto es tikz-cd, que dibuja curvas, flechas diagonales y diagramas complejos de varias filas con facilidad. Cuando basta un diagrama rectangular sencillo, el paquete AMS amscd es la opción ligera. Los vemos por turno.
tikz-cd: la opción moderna
tikz-cd adapta el paquete general de dibujo TikZ a los diagramas conmutativos. Fue escrito por Florêncio Neves y ahora lo mantiene Augusto Stoffel; la versión actual en CTAN es la 1.0 (mayo de 2021). Cárgalo en el preámbulo con \usepackage{tikz-cd} o, tras cargar TikZ, con \usetikzlibrary{cd}, y obtendrás el entorno tikzcd. Su contenido se escribe como una matriz, igual que tabular en LaTeX: las celdas se separan con & y las filas con \\. Cada celda es un nodo donde se coloca un “objeto”, y todo se compone automáticamente en modo matemático.
Las flechas entre objetos se dibujan con el comando \arrow; el alias corto \ar hace exactamente lo mismo. En la celda donde empieza la flecha, escribes \arrow[…] y especificas el destino y la decoración dentro de los corchetes. El destino se da con claves de dirección: r para derecha, l para izquierda, u para arriba, d para abajo. Se combinan como una cadena; por ejemplo, [rd] apunta a la celda una posición a la derecha y una hacia abajo, en diagonal.
Para poner una etiqueta, el nombre de una aplicación, en una flecha, escribe una cadena entre comillas entre las opciones. \arrow[r, "f"] significa “una flecha hacia la celda de la derecha, etiquetada f”. Por defecto la etiqueta queda a la izquierda de la flecha respecto a su dirección; poner un apóstrofo ' justo después de la etiqueta entre comillas la mueve al lado opuesto, como "g"'. Una flecha puede llevar varias etiquetas, y puedes ajustar su posición con opciones como "f" near start. Este es un ejemplo breve del uso típico.
\[
\begin{tikzcd}
A \arrow[r, "\phi"] \arrow[rd] & B \\
& C
\end{tikzcd}
\]Esto produce A arriba a la izquierda, B arriba a la derecha y C abajo a la derecha: una flecha horizontal va de A a B a la derecha con la etiqueta φ, mientras una flecha diagonal baja de A a C en la esquina inferior derecha. Observa que \arrow[r, "\phi"] y \arrow[rd] están escritas una tras otra en la misma celda A; una sola celda puede emitir cualquier número de flechas.
Con esto, compongamos el cuadrado conmutativo descrito al comienzo. Coloca las cuatro esquinas A, B, C, D como una matriz 2×2 y dibuja cuatro flechas: f desde A hacia la derecha, el lado izquierdo desde A hacia abajo, el lado derecho desde B hacia abajo y g desde C hacia la derecha.
\[
\begin{tikzcd}
A \arrow[r, "f"] \arrow[d, "\alpha"] & B \arrow[d, "\beta"] \\
C \arrow[r, "g"] & D
\end{tikzcd}
\]Esto da un cuadrado con A, B, C, D en las esquinas: f apunta a la derecha en el borde superior, g a la derecha en el inferior, α hacia abajo en el lado izquierdo y β hacia abajo en el derecho. Cada etiqueta queda en su lado predeterminado, a la izquierda de la dirección de la flecha. Para mover la β del lado derecho al lado opuesto, exterior, escribe por ejemplo \arrow[d, "\beta"']. Como el interior de tikzcd está en modo matemático, usa \text{…} de amsmath dentro de la opción de etiqueta cuando quieras palabras normales.
La gran fortaleza de tikz-cd es lo mucho que permite ajustar la apariencia de una flecha. El estilo de línea, la punta y la curvatura se cambian simplemente añadiendo claves de estilo a las opciones de \arrow. La tabla reúne las comunes. Se pueden dar varias a la vez, como en \arrow[r, tail, two heads, dashed], y combinarlas libremente.
| Clave | Efecto |
|---|---|
hook | Un gancho (⊂) en la cola, para una inclusión o inyección |
two heads | Punta doble, para una sobreyección |
tail | Añade una cola al inicio, otra marca de inyección |
dashed | Hace la línea discontinua, a menudo para una aplicación determinada de forma única |
dotted | Hace la línea punteada, una clave de TikZ |
equal | Dibuja una línea doble, una igualdad, en lugar de una flecha |
bend left | Curva la flecha hacia la izquierda; bend left=20 fija el ángulo |
bend right | Curva la flecha hacia la derecha |
Es común colocar una marca de isomorfismo como \sim o \simeq sobre una flecha como etiqueta. Por ejemplo, \arrow[r, dashed, "\simeq"] coloca el signo ≃ sobre una flecha discontinua. Para dibujar dos arcos distintos entre el mismo par de objetos, usa bend left y bend right. Como tikz-cd también acepta claves de TikZ directamente (color=…, dotted, in=…/out=…, etc.), su rango expresivo es en la práctica el de todo TikZ.
Una advertencia: los diagramas tikzcd no se muestran correctamente en visores DVI. Compila con pdflatex, lualatex o xelatex, que producen PDF directamente, o mediante una ruta de DVI a PDF/PS. Ten en cuenta también que \arrow tiene una forma antigua anterior a la sintaxis con comillas, \arrow[…]{direction}labels, por ejemplo \arrow{r}{f}. Sigue disponible por compatibilidad, pero para trabajo nuevo se recomienda la sintaxis con comillas por ser más legible.
amscd: el entorno CD sencillo de AMS
amscd porta a LaTeX la función de diagramas conmutativos de AMS-TeX; se carga en el preámbulo con \usepackage{amscd}. Proporciona un único entorno CD. Como con tikz-cd, se escribe el contenido como una matriz usando & y \\, pero amscd no depende de paquetes externos, no usa TikZ, y funciona solo con la composición de TeX, así que es ligero. Su diseño, sin embargo, es deliberadamente austero: solo puede dibujar flechas horizontales y verticales.
Cada flecha se escribe como un token especial que empieza con @. Las flechas horizontales son @>>> hacia la derecha y @<<< hacia la izquierda; las verticales son @VVV hacia abajo, con V de vertical, y @AAA hacia arriba, leyendo la A como una flecha ascendente. La igualdad, línea doble, es @= en horizontal y @| o @\vert en vertical. Para un punto de la retícula que no debe llevar flecha, coloca @., un punto. Las flechas horizontales van entre objetos, en la posición & de la misma fila; las verticales van en la fila justo debajo de su objeto.
Las etiquetas se escriben entre los caracteres que forman una flecha. El @>>> horizontal tiene tres delimitadores > y por tanto dos ranuras: el texto en la primera, justo después de @>, va encima de la flecha; el texto en la segunda va debajo. Así, @>f>> pone f encima, @>>g> pone g debajo y @>f>g> pone f encima y g debajo. El @VVV vertical funciona igual: @VfVV pone f a la izquierda de una flecha hacia abajo y @VVfV lo pone a la derecha; @AAA sigue la misma regla.
Este es el ejemplo de cuadrado conmutativo del manual AMS de amscd. Supone que \End se ha definido como nombre de operador, de forma similar a \operatorname.
\[
\begin{CD}
S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T \\
@VVV @VV{\End P}V \\
(S\otimes T)/I @= (Z\otimes T)/J
\end{CD}
\]En este diagrama, la fila superior traza una flecha horizontal desde el objeto izquierdo hasta T a la derecha, con la etiqueta j encima. La fila central (@VVV y @VV{\End P}V) crea las flechas verticales: una flecha descendente sin etiqueta en la columna izquierda y una flecha descendente con la etiqueta End P a su derecha en la columna derecha. La fila inferior une sus dos objetos con @=, una igualdad de doble línea. Las llaves en {\End P} agrupan una etiqueta de varios tokens en una sola unidad.
El cuadrado conmutativo f/g/α/β del inicio de la página se compone así en amscd. Las etiquetas de las flechas verticales izquierda y derecha se colocan en la primera ranura, el lado izquierdo, como se explicó arriba.
\[
\begin{CD}
A @>f>> B \\
@VV\alpha V @VV\beta V \\
C @>g>> D
\end{CD}
\]Esto produce un cuadrado con A, B, C, D en las esquinas: una flecha f hacia la derecha en el borde superior, una flecha g hacia la derecha en el inferior, una flecha α hacia abajo en el lado izquierdo y una flecha β hacia abajo en el derecho. Es exactamente el mismo diagrama que el ejemplo de tikz-cd; solo cambia la notación con @. Como el entorno CD de amscd está en modo matemático, también se coloca dentro de matemáticas en display; arriba usamos \[ … \].
Cuál usar
Los dos paquetes tienen alcances claramente distintos. El entorno CD de amscd maneja solo diagramas en retícula, rectangulares; el propio manual AMS afirma que soporta “solo diagramas rectangulares sencillos, sin flechas diagonales ni funciones más exóticas”. Esa es su principal limitación. Si necesitas flechas diagonales, curvas o diagramas complejos de varias filas, amscd no puede dibujarlos y debes usar tikz-cd o la familia xy.
- Necesitas flechas diagonales o curvas →
tikz-cd.amscdsolo es horizontal/vertical y no puede inclinar. - Quieres control fino de puntas y estilos de línea (inyección
hook, sobreyeccióntwo heads, discontinuas, líneas dobles, etc.) →tikz-cd. - Basta un diagrama rectangular simple / quieres dependencias ligeras →
amscd. No carga TikZ y es ligero y rápido. - Gusto de notación: la escritura
@>>>deamscdes breve pero peculiar;\arrow[r, "f"]detikz-cdes más larga, pero clara para quien lee. - Ruta de salida:
tikz-cdno se muestra correctamente en visores DVI, así que presupone un motor que produzca PDF, como pdfLaTeX;amscdno tiene esa restricción.
Como regla práctica: si tu artículo tiene algún diagrama rectangular ocasional, amscd basta; no añade dependencias y se compone rápido. Si los diagramas son centrales y necesitas aplicaciones inclinadas, curvas o puntas elaboradas, elige tikz-cd. Y recuerda que para algo tan simple como “A → B” a menudo no necesitas ningún entorno de diagrama: un comando en línea como \xrightarrow{f} de amsmath es suficiente.