![使用 ([...]node) 语法时,如何将 PostScript 表达式传递给 nodesep 和 offset?](https://linux22.com/image/252798/%E4%BD%BF%E7%94%A8%20(%5B...%5Dnode)%20%E8%AF%AD%E6%B3%95%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%B0%86%20PostScript%20%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%BC%A0%E9%80%92%E7%BB%99%20nodesep%20%E5%92%8C%20offset%EF%BC%9F.png)
引自pst-news13.pdf
第 3 页:
是
labelsep
的第一个可选参数\uput
。现在可以使用 PostScript 符号表示此长度,例如{! 45 sin 3 mul}
。然后使用 时处于活动状态的单位\uput
。对于单位,不允许使用 PS 符号,否则会导致错误!
如果labelsep
(是长度键)可以接受 RPN 表达式,为什么nodesep
和offset
(也是长度键)不能接受 RPN 表达式?
对于当前的实现,angle
可以用RPN来表示,例如angle={!30 60 add}
。
以下是为您提供的 MWE。
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}
\begin{document}
\begin{pspicture}[showgrid](3,3)
\pnode{A}
\pnode
[!
60 cos 3 mul
60 sin 3 mul
](A){B}
\psline{->}(A)(B)
\end{pspicture}
% \begin{pspicture}[showgrid](3,3)
% \pnode{A}
% \psline(A){->}([nodesep=,offset=]A)
% \end{pspicture}
\end{document}
答案1
nodesep
和offset
是长度,并且必须有一个单位,至少是当前的单位。
\documentclass{article}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[showgrid](3,3)
\pnode{A}
\pnode
[!
60 cos 3 mul
60 sin 3 mul
](A){B}
\psline{->}(A)(B)
\end{pspicture}
\bigskip
\begin{pspicture}[showgrid](3,3)
\pnode{A}
\psline{->}(A)(!\psGetNodeCenter{A}
A.x 60 cos 3 mul add
A.y 60 sin 3 mul add)
\end{pspicture}
\end{document}