我需要绘制一个以图形为对象的交换图,就像这链接也显示在下面。
我有一些问题:
- xy-pic“倾斜”物体;
- TiKZ 中的“矩阵”库不愿意在我想要绘制的矩阵中包含其他 TiKZ 命令。
我该怎么办?这是对我的问题的初步回答:
\[
\xymatrix@C=2cm@M=3mm{
\begin{tikzpicture}
\filldraw[lightgray] (0,0) -- (2,0) -- (2,1) -- (0,1) -- cycle;
\draw (0,0) -- (2,0);
\draw (0,1) -- (2,1);
\end{tikzpicture} \ar@{->>}[r]
&
\begin{tikzpicture}
\draw[fill=lightgray] (0,0) ellipse (.5cm and .25cm);
\filldraw[lightgray] (-.5,0) -- (.5,0) -- (.5, .6) -- (-.5, .6) -- cycle;
\draw (-.5,0) -- (-.5, .6);
\draw (.5,0) -- (.5, .6);
\draw[fill=lightgray,yshift=.6cm] (0,0) ellipse (.5cm and .25cm);
\end{tikzpicture}
}\]
正如您所见,箭头“太低”。
答案1
您可以使用tikz-cd。它类似于tikz
,xy-matrix
易于使用,并且相当灵活。以下是一个例子:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\pgfdeclareimage[interpolate=true]{image-name}{circle}
$$
\begin{tikzcd}
\pgfuseimage{image-name} \rar[start anchor=real east] & \node[draw,circle]{A};
\end{tikzcd}
$$
\end{document}
请注意,您需要修改箭头的锚点(箭头的开始和结束位置),因为 中的节点的锚点tikz-cd
由于技术原因发生了移动(参见包手册中的第 3.3 节)。左侧的圆圈是 定义的节点tikz-cd
,因此需要进行调整。另一个是普通节点,因此无需进行调整。
另外,请注意,您可以使用pgf
从单独的文件包含您的绘图(因为您似乎使用了多个文件)。这样做的好处是每个图像只包含在 PDF 文件中一次,并且可以多次使用而不会大大增加文件的大小。
编辑:示例
用更精美的图形替换多边形,您可以用非常简单的代码获得非常漂亮的图表:
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{shapes} % to draw polygons
\begin{document}
\[
\begin{tikzcd}
\node[draw,regular polygon, regular polygon sides=5]{}; \rar{\varphi}
\drar \arrow[bend right=50]{d} &
\node[draw,circle]{}; \dlar[crossing over] \\
\node[draw,regular polygon, regular polygon sides=6]{}; \arrow{r}[description]{\psi} &
\node[draw,circle]{};
\end{tikzcd}
\]
\end{document}
另外,我想强调一下我在一条评论中写的内容,tikz-cd
改变箭头参数(当然只在图表中),使箭头看起来确切地就像包装上的箭头一样amsmath
。非常重要...