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 就不方便了。因此我添加了一個替代方案: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

在a裡面tikzpicture,沿著a 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}

相關內容