是否可以实现 (*x {\f(x)}) 的等效语法,但首先指定纵坐标?

是否可以实现 (*x {\f(x)}) 的等效语法,但首先指定纵坐标?

PSTricks 为我们提供了一个有用的语法来指定具有横坐标和纵坐标(*x {\f(x)})的点。例如,设,一个点可以写成。x\f(x)\def\f(#1){#1+.5}(1,1.5)(*1 {\f(x)})

我想要相反的方式,即先给出纵坐标,然后通过给定的表达式计算横坐标\g(y)。例如,假设\def\g(#1){#1-.5},我想要一个点(1,1.5),但它必须以形式表示(**{\g(y)} 1.5)

可以实现吗?如果你能实现,我会给你 4 个赏金,每个 500实施它。

答案1

\documentclass[pstricks,border=5mm]{standalone}
\usepackage{pst-node}
\makeatletter
\define@boolkey[psset]{}[Pst@]{exchange}[true]{}
\psset{exchange=false}

\def\alg@@@coor#1 #2{%          algebraic PostScript code 
  \edef\pst@coor{%
    /x #1 def
    /Func (#2) AlgParser cvx def    
    x Func \ifPst@exchange exch \fi
    \tx@ScreenCoor }}
\makeatother
\begin{document}

\def\f(#1){#1^2}
\begin{pspicture}[showgrid](5,5)
\psline{->}(*2 {x^2})
\psline[exchange]{->}(*2 {x^2})
{\psset{exchange}\pnode(*2 {\f(x)}){A}}
\psline[linecolor=red](1,1)(A)(2;45)(*2 {\f(x)})
\end{pspicture}
\end{document}

或者使用当前版本的 pstricks.texhttp://texnik.dante.de/tex/generic/pstricks/

\documentclass[pstricks,border=5mm]{standalone}
\usepackage{pst-node}
\begin{document}

\def\f(#1){#1^2}
\def\y{2}
\begin{pspicture}[showgrid](5,5)
\psline{->}(*2 {x^2})
\psline{->}(**{y^2} 2)
\psline[linecolor=red](1,1)(**{\f(y)} 2.2)(2;45)(*2 {\f(x)})

\psline[linecolor=blue]{->}(+{sqrt(2),\f(x)}) 
\psline[linecolor=blue]{->}(+{sqrt(3)},{\f(x)}) 
\psline(+1,x+.5)
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容