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:
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:
Es sollte ungefähr Folgendes angezeigt werden (entworfen in MSpaint):
Das ist dasselbe, außer dass das Symbol das richtige ist.
Was läuft schief? Sollte ich das anders angehen?
Antwort1
Ihr Ansatz verschachtelt tikzpicture
s. Der Standardweg, dies zu vermeiden, besteht darin,use \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}
Sie haben Ihren Befehl mit einem Parameter definiert, den Sie nicht verwendet haben. Nehmen wir an, dass solche Parameter erforderlich sind. Dann \savebox
sind es unpraktisch. Daher füge ich eine Alternative hinzu: ein path picture
mit 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}
Antwort2
Warum fügst du das \lrcorner
Symbol 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}
Antwort3
Innerhalb eines tikzpicture
, entlang eines path
, können Sie nicht nur, node
sondern auch einfügen 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}