这篇文章有点长,所以提前致歉。我想嵌套 xymatrices,Xy-pic
这样整个 xymatrices 就会被视为另一个 xymatrix 中的单个条目。
我尝试了一种显而易见的方法,即将 xymatrix 作为另一个条目放入其中,但没有效果。
然后我进行了一些搜索并阅读了一些手册,发现了一种方法,它只处理两个并排的矩阵,箭头的起点不在两个矩阵的中心,如下面的代码所示:
\[
\xymatrix{
& R_1 \ar[r] \ar[d] & P \\
R_2 \ar[r] \ar[d] & B & \\
Q &&
} \qquad\rightarrow\qquad
\xymatrix{a}
\]
然后我在 Xy 官方网站的一个帖子上发现有人问了和我同样的问题;他被告知使用 xygraph,并且有一个关于这种构造类型的 xymovie。
我找不到这部电影;也找不到太多关于如何使用 xygraph 的信息(Xy-pic RM 中的部分没有包含很多示例)。
最终我尝试了这个:
\xy
\xygraph{!M
\xymatrix{
& R_1 \ar[r] \ar[d] & P \\
R_2 \ar[r] \ar[d] & B & \\
Q &&
} ([u]X : ?, [l]Y : ?)
}
\endxy
但仍然没有达到我想要的效果。
那么有没有办法嵌套 xymatrices?或者也许我需要使用其他图形包?非常感谢您的帮助!(以及您阅读本文的时间。)
答案1
您可以在环境xy
中使用多个矩阵xy
并引用它们。下面是使用代码片段的示例,它打印两个xy
矩阵并通过箭头将它们连接起来:
\documentclass{article}
\usepackage[matrix,arrow]{xy}
\begin{document}
\[
\xy
\xymatrix"m"{
& R_1 \ar[r] \ar[d] & P \\
R_2 \ar[r] \ar[d] & B & \\
Q &&
}
\POS+(42,0)
\xymatrix{
\ar@{<-}["m"rr] A \ar[r] & B
}
\endxy
\]
\end{document}
第一个矩阵名为"m"
。第二个矩阵中的命令使用从左上角开始的相对定位从当前点绘制一个指向矩阵\ar@{<-}["m"rr]
节点的箭头。我曾经将箭头反转。P
"m"
rr
@{<-}
输出:
这样,您可以使用多个矩阵并通过箭头连接它们。关于实际嵌套:参考xy-pic
手册说:
矩阵嵌套并不安全。
答案2
您的第二个示例无法编译,因为您不应该\xymatrix
在 之后添加命令M
。文档指出
M<matrix>
将结果插入\xymatrix<matrix>
为节点
所以
\xy
\xygraph{!M{
& R_1 \ar[r] \ar[d] & P \\
R_2 \ar[r] \ar[d] & B & \\
Q &&
} ([u]X : ?, [l]Y : ?)
}
\endxy
可以编译。另一方面,阅读手册时,它指出对于\xymatrix
整个矩阵本身就是一个对象,其参考点是其左上角的条目
指向和来自它的箭头不会正确居中。如果你编译上面的代码,就会看到这一点。