我经常使用 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
答案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}