我需要一些帮助,以便将孔放在正确的位置。以下是图表:
\xymatrix { \{\iota\} \sqcup A^0 \ar@{->}[rddd]\ar@{->}[dd]_-{\bigsqcup\limits_{\alpha\in A^0} g_\alpha} \ar@{->}[rr]^-{} && \{\iota\} \sqcup A \ar@{->}[rddd]^/20pt/{\rho^{\{\iota\}}(f)} \ar@{->}[rr]^-{\phi} \ar@{->}[dd]_-{} && X \ar@{->}[rdrdd]^-{g} \\ && && \\ \bigsqcup\limits_{\alpha\in A^0} P_\alpha \ar@{->}[rddd]_-{\subset} \ar@{->}[rr]^-{}|!{[r]}\hole && \widehat{A}\ar@{-->}[rddd]_/10pt/{\exists !} \ar@{-->}[rruu]^-{\exists !} && \\ &\{\iota\} \sqcup B^0 \ar@{->}[dd]^-{\bigsqcup\limits_{\beta\in B^0} g_\beta} \ar@{->}[rr]^-{} && \{\iota\} \sqcup B \ar@{->}[rrr]^-{\psi} \ar@{->}[dd]_-{} &&& Y \\ &&& && \\ &\bigsqcup\limits_{\beta\in B^0} P_\beta \ar@{->}[rr]^-{} && \widehat{B} \ar@{-->}[rrruu]^-{\exists !} && }
我想推动左边的洞,使其位于从 ${\iota} \sqcup A^0$ 到 ${\iota} \sqcup B^0$ 的箭头下方。我不知道该怎么做。谢谢你的帮助。
答案1
在 中xy-matrix
,您可以使用括号指定孔(或标签)沿箭头的距离,因此\ar[r]|(0.5)\hole
将孔放置在箭头的一半处,\ar[r]|(0.9)\hole
将其放置在箭头的十分之九处,依此类推。经过反复试验,确定在本例中,它应该是\ar@{->}[rr]^-{}|(0.315)\hole
。
这是完整的图表。
\xymatrix {
\{\iota\} \sqcup A^0 \ar@{->}[rddd]
\ar@{->}[dd]_-{\bigsqcup\limits_{\alpha\in A^0} g_\alpha}
\ar@{->}[rr]^-{}
&& \{\iota\} \sqcup A \ar@{->}[rddd]^/20pt/{\rho^{\{\iota\}}(f)}
\ar@{->}[rr]^-{\phi}
\ar@{->}[dd]_-{}
&& X \ar@{->}[rdrdd]^-{g} \\
&& && \\
\bigsqcup\limits_{\alpha\in A^0} P_\alpha \ar@{->}[rddd]_-{\subset}
\ar@{->}[rr]^-{}|(0.315)\hole % here
&& \widehat{A} \ar@{-->}[rddd]_/10pt/{\exists !}
\ar@{-->}[rruu]^-{\exists !} && \\
&\{\iota\} \sqcup B^0 \ar@{->}[dd]^-{\bigsqcup\limits_{\beta\in B^0} g_\beta}
\ar@{->}[rr]^-{}
&& \{\iota\} \sqcup B \ar@{->}[rrr]^-{\psi}
\ar@{->}[dd]_-{} &&& \\
&&& && \\
&\bigsqcup\limits_{\beta\in B^0} P_\beta \ar@{->}[rr]^-{}
&& \widehat{B} \ar@{-->}[rrruu]^-{\exists !} &&
}
(最后,这是一个小问题,但\ar
没有@{}
默认值\ar@{->}
,这可以节省您的一些输入。同样,您不需要用^{}
或来装饰_{}
,因为如果为空,它们不会执行任何操作。)
答案2
替代方法tikz-cd
:交叉很容易,有时只需要稍后画一个箭头。
为了是节点,需要进行一些调整才能获得平行箭头。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[column sep=1.5em]
\{\iota\} \sqcup A^0
\arrow[dd,swap,"\bigsqcup\limits_{\alpha\in A^0} g_\alpha"]
% \arrow[rddd]% later, for crossing over
\arrow[rr] &&
\{\iota\} \sqcup A
\arrow[dd]
% \arrow[rddd,"\rho^{\{\iota\}}(f)"]% later, for crossing over
\arrow[rr,"\phi"] &&
X
\arrow[rrddd,xshift=-.4em,end anchor={[xshift=.4em]north},"g"] \\ \\
\bigsqcup\limits_{\alpha\in A^0} P_\alpha
\arrow[rddd,swap,"\subset"]
\arrow[rr] &&
\widehat{A}
\arrow[rddd,dashed,swap,pos=0.25,"\exists!"]
\arrow[rruu,dashed,"\exists!"] \\
&\{\iota\} \sqcup B^0
\arrow[luuu,<-,crossing over]% reversed!
\arrow[dd,"\bigsqcup\limits_{\beta\in B^0} g_\beta"]
\arrow[rr,crossing over] &&
\{\iota\} \sqcup B
\arrow[luuu,<-,crossing over,swap,pos=0.3,"\rho^{\{\iota\}}(f)"]% reversed!
\arrow[rrr,"\psi"]
\arrow[dd] &&&
Y \\ \\
&\bigsqcup\limits_{\beta\in B^0} P_\beta
\arrow[rr] &&
\widehat{B}
\arrow[rrruu,dashed,"\exists!"]
\end{tikzcd}
\end{document}
答案3
除了 egreg 的解决方案之外,这里还有一个非硬编码的更正,用于获得平行箭头。我还稍微改变了注释的方式,以显示可能性。选择你喜欢的方式。
% arara: pdflatex
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[column sep={15ex,between origins}, row sep={5em,between origins}]
\{\iota\} \sqcup A^0 \arrow{d}[swap]{\bigsqcup\limits_{\alpha\in A^0} g_\alpha} \arrow{rr}
& &[-2.5em]
\{\iota\} \sqcup A \arrow{d}\arrow{rr}{\phi}
& &[-5em]
X \arrow{rdd}{g}
\\
\bigsqcup\limits_{\alpha\in A^0} P_\alpha \arrow{rdd}[swap]{\subset}\arrow{rr}
& &
\widehat{A} \arrow[dashed]{rdd}[swap,pos=.25]{\exists!}\arrow[dashed]{rru}{\exists!}
\\
&
\{\iota\} \sqcup B^0 \arrow[leftarrow,crossing over]{luu}\arrow{d}{\bigsqcup\limits_{\beta\in B^0} g_\beta}\arrow[crossing over]{rr}
& &
\{\iota\} \sqcup B \arrow[leftarrow,crossing over]{luu}[swap,pos=0.3]{\rho^{\{\iota\}}(f)}\arrow{rr}{\psi}\arrow{d}
& &
Y
\\
&
\bigsqcup\limits_{\beta\in B^0} P_\beta \arrow{rr}
& &
\widehat{B} \arrow[dashed]{rru}{\exists!}
& &
\end{tikzcd}
\]
\end{document}