顶点带有长标签的(交换)图

顶点带有长标签的(交换)图

我正在尝试绘制一个类似于下图的图表:

##############  ---------> ##############
       \                       / 
         \                   /
       #########################

需要注意的重要一点是,所有顶点上的标签都相当长,并且下方顶点应该与上方两个顶点重叠。

在 XYpic 中绘制类似这样的内容很容易:

####  ------->  ####
    \          /
      \      /
        ####

使用以下代码:

\[ \xymatrix { longtexthere \ar[rr] \ar@{-}[dr] & & longtexthere \ar@{-}[dl] \\ 
               & longtexthere & } \]

即顶点不重叠。不幸的是,在我的例子中,这意味着上面的两个顶点将被“推”到纸张边缘,这显然是不好的。

有什么想法可以画出这样的东西吗?最好使用 XYpic,但它似乎超出了它的能力 —— 显然你不能画出跨多列的单元格 —— 那么也许甚至可以使用 TikZ。

答案1

您可以指定底部标签所占的尺寸:

\documentclass{article}
\usepackage{xypic}

\begin{document}

\[ \xymatrix { longtexthere \ar[rr] \ar@{-}[dr] & & longtexthere \ar@{-}[dl] \\ 
&*=<1cm,1cm>{reallyreallylongtexthere} & } \]

\end{document}

具有指定对象宽度的 xy pic 图

答案2

尽管您已经要求 XYpic 解决方案,并且已经获得一个,但这里有一个 TiKZ 中的方法。这种方法的主要优点(除了语法简单之外)是您不必手动指定任何节点长度。

\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\begin{document}

\begin{tikzpicture}
    \node (a) [draw, rounded corners] {%
              this is a very long label for a node};
    \node (b) [draw, rounded corners, right=of a] {%
              this node has a very long label as well};
    \node (c) [draw, rounded corners] at ($(a)!0.5!(b) + (0,-10ex)$) {%
              this node has an especially long label which overlaps the other two};

    \draw [-stealth] (a) -- (b);
    \draw (a) -- (c);
    \draw (b) -- (c);
\end{tikzpicture}
\end{document}

答案3

这是另一个 Xy-pic 解决方案:开始时,\xymatrix您可以指定列和/或行间距。将列间距设置为负值即可满足您的需要。我们通过在命令和左括号@C=-2em之间添加来实现这一点:\xymatrix

\documentclass[12pt]{article}
\usepackage[all,cmtip]{xy}
\begin{document}
\thispagestyle{empty}

\[
\xymatrix@C=-2em { longtexthere \ar[rr] \ar@{-}[dr]
  && longtexthere \ar@{-}[dl] \\ 
  & longtexthere & } 
\]

\end{document}

得出的结果为:排版图

答案4

以下是带有eplain's 的示例gridcommdiag

\input eplain
$$ \hgrid=1.3cm \vgrid=1.3cm
  \gridcommdiag{
    \llap{long text here} & \mapright & \rlap{long text here} \cr
    \sline(-1,1) & & \sline(1,1) \cr
    & \hbox{really really long text here} \cr
} $$
\bye

在此处输入图片描述

相关内容