我已经在问题中问过了使用 pstree/pstricks 描述带有下支撑的树叶如何使用下支撑。现在我想使用\Tfan
而不是\Tf
,但角度技巧似乎不起作用(我也不太明白它为什么与 一起使用\Tf
)。我必须将 附加psbrace
在节点的中心,但要稍微偏移一点 -psbrace
应该长一点。
Herbert Voß 提供了解决方案邮件列表帖子,不幸的是,我不明白那里使用的方法,无法将它们应用于我的问题。他建议基本上有两种方法。
一种是用\rnode{A}{$a$}
来代替\rnode[bc]{A}{$a$\vphantom{gt}}
。但我无法让它按预期在水平空间中工作。
第二种方法是将psbrace
not 连接到(A)
but (!\psGetNodeCenter{A} A.x A.y .2 sub)
。这叫什么名字?!whatever
它的语法是怎样的?我该如何采用这种方法?
\documentclass[english]{article}
\usepackage{pst-plot}
\usepackage{pstricks}
\usepackage{pst-node}
\usepackage{pst-tree}
\usepackage{pstricks-add}
\usepackage{babel}
\begin{document}
\begin{pspicture}(1,-5)
\pstree[levelsep=50pt,treesep=12pt]{\Tcircle{ }} {
\skiplevel {
\Tf[name=firstleaf]{}
\Tf{}
{\psset{linestyle=none} \Tr{$\cdots$} }
\Tf[name=lastleaf]{}
}
\tspace{1.5cm}
\pstree{\Tr{ }}{\Tfan[name=firstantree]}
{\psset{linestyle=none} \Tr{$\cdots$} }
\pstree{\Tr{ }}{\Tfan[name=lastantree]}
}
\psbrace*[ref=tC,rot=90,nodesep=5pt]([angle=-165]firstleaf)([angle=-15]lastleaf){leaves}
\psbrace*[rot=90,ref=tC,nodesep=5pt,nodesepA=-5pt](firstantree)(lastantree){subrees}
\end{pspicture}
\end{document}
答案1
使用
\psbrace*[rot=90,ref=tC,nodesep=5pt,nodesepA=-5pt]%
([Xnodesep=-1.5em]firstantree)([Xnodesep=1.5em]lastantree){subrees}
答案2
下面的答案也许应该是一条评论,但它太大了。
你为什么不在邮件列表中问这个问题?pstricks
接受不同类型的坐标输入。通常你使用(x,y)
,但你也可以使用其他输入方法,如(! x y )
下面是一小部分集合:
(x,y)
-- 正常笛卡尔输入(r;a)
-- r=半径; a=角度 -- 极坐标(! x y)
-- 后记符号。此处将在后记级别计算坐标(* x {f(x)})
-- 使用函数计算与 x 坐标相关的 y 坐标(Nodename)
-- 使用定义的节点( x1,y1 | x2,y2 )
使用第一组的 x 坐标和第二组的 y 坐标。可以进行更复杂的计算。
文档中还展示了许多其他可能性。不过我不想在这里展示所有内容。
该命令\psGetNodeCenter
接受一个强制参数,即节点。该命令接受节点并允许分别处理 x 和 y 坐标。此命令仅在 PostScript 中有效,因此您必须使用坐标形式(! x y)
。语法本身遵循逆波兰表示法。示例:将两个数字相加作为 x 坐标,将一个数字相加作为 y 坐标
(! 2.2 3.4 add 5)
这相当于x=2.2+3.4=5.6
和y=5
,所以最后一点是 (5.6,5)
。