tengo un diagrama tikzcd
\begin{center}
\begin{tikzcd}
F \arrow[r] \arrow[d]
& * \arrow[d] \\
X \arrow[r, "f"] & Y \\
\end{tikzcd}
\end{center}
que se parece a esto:
Deseo agregar un símbolo que indique que se trata de un cuadrado de retroceso. habiendo mirado ambosaquíyaquí, Encontré la solución para crear mi propio símbolo tikz-cd e insertarlo en el diagrama.
El código para mi símbolo es este:
\newcommand{\foo}[1]{%
\begin{tikzpicture}[#1]%
\draw (0,0) -- (1ex,0ex);%
\draw (1ex,0ex) -- (1ex,1ex);%
\end{tikzpicture}%
}
Este es básicamente el borde inferior y derecho de un cuadrado.
Para agregar este símbolo al diagrama, cambiaré el código del diagrama a:
\begin{center}
\begin{tikzcd}
F \arrow[r] \arrow[d]
\arrow[dr, phantom, "\foo{} " , very near start, color=black]
& * \arrow[d] \\
X \arrow[r, "f"] & Y \\
\end{tikzcd}
\end{center}
Hasta donde yo sé, esto debería consistir en crear una flecha invisible y poner mi símbolo en su cabecera. De hecho, algo aparece, pero no es lo que quiero:
Lo que debería aparecer es algo como esto (diseñado en MSpaint):
Que es lo mismo excepto el símbolo con el símbolo correcto.
¿Qué pasa? ¿Debería abordar esto de una manera diferente?
Respuesta1
Su enfoque anida tikzpicture
s. La forma estándar de evitarlo esusar \savebox
es.
\documentclass{article}
\usepackage{tikz-cd}
\newsavebox{\pullback}
\sbox\pullback{%
\begin{tikzpicture}%
\draw (0,0) -- (1ex,0ex);%
\draw (1ex,0ex) -- (1ex,1ex);%
\end{tikzpicture}}
\begin{document}
\begin{center}
\begin{tikzcd}
F \arrow[r] \arrow[d]
\arrow[dr, phantom, "\usebox\pullback" , very near start, color=black]
& * \arrow[d] \\
X \arrow[r, "f"] & Y \\
\end{tikzcd}
\end{center}
\end{document}
Definiste tu comando con un parámetro que no usaste. Supongamos que estos parámetros son necesarios. Entonces \savebox
los es no son prácticos. Por eso agrego una alternativa: una path picture
con tantas cosas arregladas como se te ocurra. Por ejemplo, -
quiere decir que no debería haber una flecha, etc. (Entiendo que es muy poco probable que desee que el símbolo sea rojo, esto es solo para ilustrar que los parámetros funcionan aquí).
\documentclass{article}
\usepackage{tikz-cd}
\tikzset{pullback/.style={minimum size=1.2ex,path picture={
\draw[opacity=1,black,-,#1] (-0.5ex,-0.5ex) -- (0.5ex,-0.5ex) -- (0.5ex,0.5ex);%
}}}
\begin{document}
\begin{center}
\begin{tikzcd}
F \arrow[r] \arrow[d]
\arrow[dr, phantom," " {pullback=red}, very near start, color=black]
& * \arrow[d] \\
X \arrow[r, "f"] & Y \\
\end{tikzcd}
\end{center}
\end{document}
Respuesta2
¿Por qué no simplemente insertas el \lrcorner
símbolo?
\documentclass[svgnames]{article}
\usepackage{tikz-cd, amsmath, amssymb}%
\begin{document}
\begin{center}
\begin{tikzcd}
F \arrow[r] \arrow[d]
\arrow[dr, phantom, "\scalebox{1.5}{\color{IndianRed}$\lrcorner$}" , very near start, color=black]
& * \arrow[d] \\
X \arrow[r, "f"] & Y \\
\end{tikzcd}
\end{center}
\end{document}
Respuesta3
Dentro de a tikzpicture
, a lo largo de a path
, puedes poner no solo node
sino también pic
.
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[bmr/.pic={
\draw (2mm,0)--++(-90:2mm)--++(180:2mm);
}]
\path
(0,0) node (F) {$F$}
+(-45:.2) pic[scale=.8,red]{bmr}
+(0:1.5) node (star) {$*$}
++(-90:1) node (X) {$X$}
+(0:1.5) node (Y) {$Y$};
\draw[->] (F)--(star);
\draw[->] (F)--(X);
\draw[->] (X)--(Y) node[midway,above,scale=.6]{$f$};
\draw[->] (star)--(Y);
\end{tikzpicture}
\end{document}