Tikzcd-Pullback-Quadrat-Problem

Tikzcd-Pullback-Quadrat-Problem

Ich habe ein Tikzcd-Diagramm

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

das wie folgt aussieht:

Rückzugsquadrat

Ich möchte ein Symbol hinzufügen, das anzeigt, dass es sich um ein Pullback-Quadrat handelt. Nachdem ich beideHierUndHierhabe ich die Lösung gefunden, mein eigenes Tikz-CD-Symbol zu erstellen und es in das Diagramm einzufügen.

Der Code für mein Symbol ist dieser:

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

Dies ist im Wesentlichen die untere und rechte Kante eines Quadrats.

Um dieses Symbol in das Diagramm einzufügen, ändere ich den Code für das Diagramm wie folgt:

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

Soweit ich weiß, sollte dies einen unsichtbaren Pfeil erzeugen und mein Symbol an dessen Spitze platzieren. Tatsächlich erscheint etwas, aber es ist nicht das, was ich will:

Bildbeschreibung hier eingeben

Es sollte ungefähr Folgendes angezeigt werden (entworfen in MSpaint):

Bildbeschreibung hier eingeben

Das ist dasselbe, außer dass das Symbol das richtige ist.

Was läuft schief? Sollte ich das anders angehen?

Antwort1

Ihr Ansatz verschachtelt tikzpictures. Der Standardweg, dies zu vermeiden, besteht darin,use \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}

Bildbeschreibung hier eingeben

Sie haben Ihren Befehl mit einem Parameter definiert, den Sie nicht verwendet haben. Nehmen wir an, dass solche Parameter erforderlich sind. Dann \saveboxsind es unpraktisch. Daher füge ich eine Alternative hinzu: ein path picturemit so vielen festen Dingen, wie Sie sich vorstellen können. Beispielsweise -kann man sagen, dass kein Pfeil usw. vorhanden sein soll. (Ich verstehe, dass es sehr unwahrscheinlich ist, dass Sie möchten, dass das Symbol rot ist. Dies dient nur zur Veranschaulichung, dass Parameter hier funktionieren.)

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

Bildbeschreibung hier eingeben

Antwort2

Warum fügst du das \lrcornerSymbol nicht einfach ein?

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

Bildbeschreibung hier eingeben

Antwort3

Innerhalb eines tikzpicture, entlang eines path, können Sie nicht nur, nodesondern auch einfügen pic.

Bildbeschreibung hier eingeben

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

verwandte Informationen