He estado dibujando diagramas conmutativos usando tikzcd en los que una entrada es dramáticamente más grande que las demás. Me gustaría que los tamaños de entrada se "normalicen" de alguna manera para que la visualización no sea demasiado desigual y quiero poder ajustarlos localmente para cada diagrama individualmente. He aquí un ejemplo típico:
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-cd}
\usetikzlibrary{matrix}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{trees}
\usetikzlibrary{backgrounds}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{force}
\tikzset{
commutative diagrams/.cd,
arrow style=tikz,
diagrams={>={Straight Barb[scale=0.9]}, semithick}
}
\begin{document}
\[
\begin{tikzcd}
A \arrow[rr, bend right, dashed, "i"'] \arrow[dr, equals] \arrow[rr, phantom, "\bot"] & & \hom_B(B,f) \arrow[dl, two heads, "p_1"] \arrow[ll, bend right, two heads, "p_1"'] \\ & A
\end{tikzcd}
\]
\end{document}
Respuesta1
Puede ajustar la posición de la etiqueta con pos=<fraction>
:
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows.meta}
\tikzset{
commutative diagrams/.cd,
arrow style=tikz,
diagrams={>={Straight Barb[scale=0.9]}, semithick}
}
\begin{document}
\[
\begin{tikzcd}[column sep={4em,between origins}]
A
\arrow[rr, bend right, dashed, "i"' pos=0.57]
\arrow[dr, equals]
& \bot &
\hom_B(B,f)
\arrow[dl, two heads, "p_1"]
\arrow[ll, bend right, two heads, "p_1"' pos=0.43]
\\
& A
\end{tikzcd}
\]
\end{document}
Respuesta2
¿Como esto? Utilizo el \makebox*
comando del makebox
paquete pequeño para hacer que el nodo más a la derecha tenga el ancho del nodo más a la izquierda con una sintaxis simple.
No relacionado: no es necesario cargar tikz
si carga tikz-cd
.
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{matrix}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{trees}
\usetikzlibrary{backgrounds}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{force}
\tikzset{
commutative diagrams/.cd,
arrow style=tikz,
diagrams={>={Straight Barb[scale=0.9]}, semithick}
}
\usepackage{makebox}
\begin{document}
\[
\begin{tikzcd}
A \arrow[rr, bend right, dashed, "i"'] \arrow[dr, equals] \arrow[rr, phantom, "\bot"] & &\makebox*{$A$}{$ \hom_B(B,f) $} \arrow[dl, two heads, "p_1"] \arrow[ll, bend right, two heads, "p_1"'] \\ & A
\end{tikzcd}
\]
\end{document}