Tikzcd откат квадратный вопрос

Tikzcd откат квадратный вопрос

У меня есть диаграмма tikzcd

\begin{center}
\begin{tikzcd}
F \arrow[r] \arrow[d] 
& * \arrow[d] \\
X \arrow[r, "f"] & Y \\
\end{tikzcd}
\end{center}

который выглядит так:

Квадрат отката

Я хочу добавить символ, который указывает, что это квадрат отката. Посмотрев обаздесьиздесьЯ нашел решение создать свой собственный символ tikz-cd и вставить его в диаграмму.

Код моего символа такой:

\newcommand{\foo}[1]{%
\begin{tikzpicture}[#1]%
\draw (0,0) -- (1ex,0ex);%
\draw (1ex,0ex) -- (1ex,1ex);%
\end{tikzpicture}%
 }

По сути, это нижний правый край квадрата.

Чтобы добавить этот символ на диаграмму, я изменяю код диаграммы на:

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

Насколько я знаю, это должно создать невидимую стрелу и поместить мой символ на ее вершину. Действительно, что-то появляется, но это не мое, что я хочу:

введите описание изображения здесь

Должно получиться что-то вроде этого (нарисовано в MSpaint):

введите описание изображения здесь

Что одно и то же, за исключением правильного символа.

Что не так? Стоит ли мне подойти к этому по-другому?

решение1

Ваш подход вложенных tikzpictures. Стандартный способ избежать этого -использовать \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}

введите описание изображения здесь

Вы определили свою команду с параметром, который вы не использовали. Предположим, что есть необходимость в таких параметрах. Тогда \saveboxes неудобны. Поэтому я добавляю альтернативу: a path pictureс максимальным количеством исправленных вещей, которые вы можете придумать. Например, -это означает, что не должно быть стрелки и т. д. (Я понимаю, что маловероятно, что вы хотите, чтобы символ был красным, это просто для иллюстрации того, что параметры здесь работают.)

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

введите описание изображения здесь

решение2

Почему бы вам просто не вставить \lrcornerсимвол?

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

введите описание изображения здесь

решение3

Внутри tikzpicture, вдоль path, можно поместить не только node, но и 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}

Связанный контент