我想使用 来排版xypic
来自范畴论中伴随函子定义的三角形恒等式。我的问题是创建连接斜边和对角的双箭头。
这是我自己可以做的(完全琐碎的)部分,除了双箭头之外的所有内容:
\xymatrix{ C\ar[r]^{F}\ar[dr]_{1_{C}} & D\ar[d]^{G} & & D\ar[dr]^{1_{D}}\ar[d]_{G}\\ & C & & C\ar[r]_{F} & D }
据说有一种方法可以创建这样的“粘贴图表” xypic
,但我没有在任何地方找到任何明确的说明;我知道该命令\compositemap
以某种方式参与其中,但我不知道如何使用它。
答案1
我不再使用它了xy
,因为它不像tikz-cd。我希望,这个解决方案也能帮助你:
% arara: pdflatex
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[\begin{tikzcd}[row sep=3em]
C \arrow{r}{F} \arrow[""{name=foo}]{dr}[swap]{1_C} & D \arrow{d}{G} \arrow[Rightarrow, from=foo, swap, near start, "\eta"]& D \arrow{d}[swap]{G} \arrow[""{name=bar, below}]{dr}{1_D} & \\
& C & C \arrow{r}[swap]{F} \arrow[Rightarrow, to=bar, swap, near start, "\varepsilon"] & D
\end{tikzcd}\]
\end{document}
如您所愿,这里有一个解决方案xy
。它相当 hacky。我想使用 Sigur 提到的例子会更好。但由于xy
能够管理空矩阵条目,我使用它来将箭头指向我想要的位置。不过,矩阵节点的数量需要加倍。
% arara: pdflatex
\documentclass{article}
\usepackage[%
,all
%,cmtip % recommended, but I do not know how to get it to work for the double arrow
]{xy}
\begin{document}
\[\xymatrix@R=4mm @C=4mm{
C\ar[rr]^{F} \ar[ddrr]_{1_{C}} & & D \ar[dd]^{G} & & D \ar[ddrr]^{1_{D}} \ar[dd]_{G} & & \\
&\ar@2{->}[ur]_{\eta} & & & & & \\
& & C & & C \ar@2{->}[ur]_{\varepsilon} \ar[rr]_{F} & & D
}\]
\end{document}
答案2
另一种xy-pic
采用不同方法的解决方案:
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\[
\xymatrix{
C\ar[r]^{F}\ar[dr]_{1_{C}} & D\ar[d]^{G}\ar@{<=}[dl]+<22pt>^>>>{\eta} & & D\ar[dr]^{1_{D}}\ar[d]_{G} & \\
& C & & C\ar[r]_{F}\ar@{=>}[ur]-<22pt>_>>>{\varepsilon} & D
}
\]
\end{document}
输出:
答案3
我刚刚看了同样的东西,并尝试使用该2cell
功能xy-pic
。读完参考手册,我认为“正确”的解决方案如下
\documentclass[border=10pt]{standalone}
\usepackage[all,2cell]{xy}
\UseAllTwocells
\begin{document}
\[
\xymatrix{C\drtwocell\omit{^<-2>\eta}\ar_{1_C}[dr]\ar^F[r]&D\ar^G[d]&
D\drtwocell\omit{^<2>\varepsilon}\ar^{1_D}[dr]\ar_G[d]&\\
&C&C\ar_F[r]&D}
\]
\end{document}
代码如下\drtwocell\omit{^<-2>\eta}
,其中\omit
表示我们将省略两个弯曲的箭头,^
指定2单元格的方向,并<-2>
轻推标签(否则它将位于中心点)。
输出:
有一个问题:你不能指定标签相对于 2 单元格位于哪一侧。似乎尚未实现此功能,因此也许这是我们在不使用其他黑客手段的情况下能做到的最好事情。