psmatrix 中的变量 colsep | 可能吗?

psmatrix 中的变量 colsep | 可能吗?

我经常使用 psmatrix 来创建简单的“时间线”图表(参见下面 MWE 中的第一个图)。对于时间线的“元素”间距相等的情况,这种方法效果很好,而且很容易实现。

但是,我定期想构建一个间隔不相等的时间线。基本思想如 MWE 中的第二张图所示。在这个例子中,我通过简单地“省略”其中一个节点来“强制解决方案”。如果所有间隔都是某个常见闭区间距离的倍数,那么这很好。

我真正想要的是一种在我明确定义的节点之间生成可变距离的方法。类似于:

 time 1 --> time 2 -----> time 3 ---> time 4 ---------> time 5

其中间隔分别为 2、5、3 和 9 个“单位”。同样,虽然我可以想象出一个强力解决方案(类似于我已经尝试过的方法),但我想知道是否有 (i) 使用 psmatrix 的更优雅的解决方案(如果可能的话),或者,如果失败了,(ii) 一些其他方法(tikz?)。

首先十分感谢...

以下是简单的 MWE:

\documentclass[11pt,letterpaper,oneside]{article}

\usepackage{pst-node}
% set up float for putting figures where you want them
\usepackage{float}


\begin{document}

Here is a basic time-line with equal intervals:

\begin{figure}[H]
\centering
\rule[-0.5cm]{0.0pt}{1.8cm}
$
\psmatrix[colsep=0.75cm,rowsep=0.2cm,
    arrowscale=1.5]
[name=n1] 1 &  [name=n2] 2 & [name=n3] 3 & [name=n4] 4 & [name=n5] 5 & \\
\small{\mbox{time~1}} & \small{\mbox{time~2}} & \small{\mbox{time~3}} & \small{\mbox{time~4}} & \small{\mbox{time~5}}
\endpsmatrix
\ncline[nodesep=2pt]{->}{n1}{n2}
\ncline[nodesep=2pt]{->}{n2}{n3}
  \ncline[nodesep=2pt]{->}{n3}{n4}
    \ncline[nodesep=2pt]{->}{n4}{n5}
      \ncline[nodesep=2pt]{->}{n5}{n6}
$
\end{figure}

Here is a lousy, brute-force attempt at reconfiguring for unequal intervals:

\begin{figure}[H]
\centering
\rule[-0.5cm]{0.0pt}{1.8cm}
$
\psmatrix[rowsep=0.2cm,
    arrowscale=1.5]
[name=n1] 1 &  [name=n2] ~ & [name=n3] 2 & [name=n4] 3 & [name=n5] 4 & \\
\small{\mbox{time~1}} & ~ & \small{\mbox{time~2}} & \small{\mbox{time~3}} & \small{\mbox{time~4}}
\endpsmatrix
\ncline[nodesep=2pt]{->}{n1}{n3}
  \ncline[nodesep=2pt]{->}{n3}{n4}
    \ncline[nodesep=2pt]{->}{n4}{n5}
      \ncline[nodesep=2pt]{->}{n5}{n6}
$
\end{figure}


\end{document} 

答案1

\documentclass{article}
\usepackage{pst-node}
\begin{document}

\psmatrix[rowsep=0.2cm,arrowscale=1.5,colsep=2cm]
[name=n1] 1 \psspan{3} &  [name=n3] 2 & [name=n4] 3 & [name=n5] 4 & \\
 & & & & & % dummy
\endpsmatrix
\ncline[nodesep=2pt]{->}{n1}{n3}\ncline[nodesep=2pt]{->}{n3}{n4}
\ncline[nodesep=2pt]{->}{n4}{n5}\ncline[nodesep=2pt]{->}{n5}{n6}
\small
\uput{5mm}[-90](n1){time~1}\uput{5mm}[-90](n3){time~2}
\uput{5mm}[-90](n4){time~3}\uput{5mm}[-90](n5){time~4}

\end{document} 

在此处输入图片描述

答案2

如果你不依赖 PSTricks,

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}[column sep=1em]
1 \arrow[r] & 2 \arrow[r] &[3em] 3 \arrow[r] &[2em] 4 \arrow[r] &[6em] 5
\end{tikzcd}

\end{document}

在此处输入图片描述

答案3

这是一个相当老的帖子,但如果有人感兴趣的话,在 pstricks 中执行此操作的一种方法是使用钩子,如文档中所述。

    \documentclass{article}
    \usepackage{pst-node}
    \begin{document}

    \newcommand*\pscolhooki{ % i is Roman number for 1, the first column
    \psset{colsep=.5}
    }
    \newcommand*\pscolhookii{ % ii is Roman number for 2, 
    \psset{colsep=1}
    }
    \newcommand*\pscolhookiii{ % iii is Roman number for 3, 
    \psset{colsep=.1}
    }
    \newcommand*\pscolhookiv{ % iv is Roman number for 4, 
    \psset{colsep=.8}
    }
    \psmatrix[rowsep=0.2cm, arrowscale=1.5, colsep=2cm]
    [name=n1] 1 \psspan{3} &  [name=n3] 2 & [name=n4] 3 & [name=n5] 4 & \\
     & & & & & % dummy
    \endpsmatrix
    \ncline[nodesep=2pt]{->}{n1}{n3}\ncline[nodesep=2pt]{->}{n3}{n4}
    \ncline[nodesep=2pt]{->}{n4}{n5}\ncline[nodesep=2pt]{->}{n5}{n6}
    \small
    \uput{5mm}[-90](n1){time~1}\uput{5mm}[-90](n3){time~2}
    \uput{5mm}[-90](n4){time~3}\uput{5mm}[-90](n5){time~4}
    \end{document} 

在此处输入图片描述

相关内容