防止两个 \psmatrix 对象相互连接

防止两个 \psmatrix 对象相互连接

我正在尝试使用 pstricks 命令绘制图形,\psmatrix代码如下:

\documentclass{article}
\usepackage{pstricks,pst-node,pst-tree}

\def\e{\strut \hphantom{.}}

\newenvironment{graph}
               {
                 \begin{center}
                  $\psmatrix[rowsep=1cm,colsep=1.5cm,mnode=circle]
               }
               {
                 \endpsmatrix
                 $
                 \end{center}
               }

\begin{document}

\begin{graph}
  \e & \e & \e & \e & \e
  \ncline{1,1}{1,2}
  \ncline{1,2}{1,3}
  \ncline{1,3}{1,4}
  \ncline{1,4}{1,5}
\end{graph}

\begin{graph}
  & \e \\
  \e & \e & \e & \e
  \ncline{1,1}{1,2}
  \ncline{1,2}{1,3}
  \ncline{1,3}{1,4}
  \ncline{1,2}{2,2}
\end{graph}

\end{document}

它产生以下输出,其中顶行圆圈来自第一个图,第二行和第三行来自第二个图: 两张图连接不当

我原本以为每对都是相互独立的,但实际上这两个图似乎使用了同一组节点。例如,如果我从第一个图中删除所有 s ,则会得到以下结果 \psmatrix\endpsmatrix\ncline我看不懂的奇怪的图表。

我该如何分离这两个图表,以便其中一个图表的代码不会影响另一个图表?

答案1

这是正确的行为!您的第二个示例在第一行只有一个单元格,这就是为什么\ncline将从第一个示例的第一行中获取单元格的原因。

\documentclass{article}
\usepackage{pstricks,pst-node,pst-tree}

\def\e{\strut \hphantom{.}}

\newenvironment{graph}
{
    \begin{center}
        \psmatrix[rowsep=1cm,colsep=1.5cm,mnode=circle]
    }
    {
        \endpsmatrix
    \end{center}
}

\begin{document}

\begin{graph}
    \e & \e & \e & \e & \e
    \ncline{1,1}{1,2}
    \ncline{1,2}{1,3}
    \ncline{1,3}{1,4}
    \ncline{1,4}{1,5}
\end{graph}

\vspace{1cm}
\psset{linecolor=red}

\begin{graph}
    \e & \e & \e & \e\\
    \e & \e & \e & \e
    \ncline{1,1}{1,2}
    \ncline{1,2}{1,3}
    \ncline{1,3}{1,4}
    \ncline{1,2}{2,2}
\end{graph}

\end{document}

在此处输入图片描述

相关内容