Problema del cuadrado de retroceso de Tikzcd

Problema del cuadrado de retroceso de Tikzcd

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:

Cuadrado de retroceso

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:

ingrese la descripción de la imagen aquí

Lo que debería aparecer es algo como esto (diseñado en MSpaint):

ingrese la descripción de la imagen aquí

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 tikzpictures. La forma estándar de evitarlo esusar \saveboxes.

\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}

ingrese la descripción de la imagen aquí

Definiste tu comando con un parámetro que no usaste. Supongamos que estos parámetros son necesarios. Entonces \saveboxlos es no son prácticos. Por eso agrego una alternativa: una path picturecon 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}

ingrese la descripción de la imagen aquí

Respuesta2

¿Por qué no simplemente insertas el \lrcornersí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} 

ingrese la descripción de la imagen aquí

Respuesta3

Dentro de a tikzpicture, a lo largo de a path, puedes poner no solo nodesino también pic.

ingrese la descripción de la imagen aquí

\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}

información relacionada