我正在尝试使用 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}