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}