pstricks 图片中的垂直偏移

pstricks 图片中的垂直偏移

我的论文包含以下 PSTricks 图片。它在左侧显示一个正方形,在右侧显示两个正方形 - 顶部和底部。它描述了一个过程,其中左侧的正方形可以处于两种状态之一 - 右上角或右下角状态:

\begin{pspicture}(45,90)
\psframe[fillstyle=solid,fillcolor=green!20](0,20)(30,50)
\rput(15,35){V=3}
\psline{->}(35,25)(45,15)
\psline{->}(35,45)(45,55)
\end{pspicture}
\begin{pspicture}(45,90)
\psframe[fillstyle=solid,fillcolor=green!20](0,40)(30,70)
\psline[linecolor=black,linestyle=dotted](15,40)(15,70)
\rput{90}(7,55){V>2}
\rput{90}(22,55){V<1}
\psline{->}(35,55)(45,55)
\psframe[fillstyle=solid,fillcolor=green!20](0,0)(30,30)
\psline[linecolor=black,linestyle=dashed](15,0)(15,30)
\rput{90}(7,15){1$\leq$V$\leq$2}
\rput{90}(22,15){1$\leq$V$\leq$2}
\end{pspicture}

三个方块必须相同(它们代表同一个方块),因此我希望它们在 PSTricks 代码中看起来也相同。但是,为了垂直排列它们,我必须更改它们的坐标,因此左侧方块为“(0,20)(30,50)”,右上角为“(0,40)(30,70)”,右下角为“(0,0)(30,30)”。

有没有办法插入垂直移位,这样,我可以复制现有的 psframe,添加移位,然后它就会正确移位?

(我希望我说清楚了)

答案1

是的。插入\psframe内部\rput{0}(<xshift>,<yshift>){<stuff>}并在命令中定义框架,例如一致性

在此处输入图片描述

\newcommand{\myframe}[1][]{%
  \psframe[fillstyle=solid,fillcolor=green!20,#1](0,20)(30,50)}

%...

\begin{pspicture}(45,90)
  \myframe
  %...
  \rput{0}(0,20){\myframe}% Translate \myframe vertically up 20 y-units
  \rput{0}(0,-20){\myframe}% Translate \myframe vertically down 20 y-units
  %...
\end{pspicture}
%...

的可选参数\myframe[<opt arg>]允许您传递可选内容,例如fillcolor=green!50!red根据需要更改其他框架的内容。考虑到这一点,请考虑在单个pspicture环境中绘制整个图片。

答案2

将正方形定义为节点,然后可以使用符号坐标进行连接:

\documentclass[border=20pt]{standalone}
\usepackage{pstricks-add}
\psset{unit=1mm}
\makeatletter
\def\myframe{\@ifnextchar[\myframe@i{\myframe@i[]}}
\def\myframe@i[#1](#2)#3#4{%
  \rput(#2){\rnode{#4}{%
    \psTextFrame[fillstyle=solid,fillcolor=green!20,#1](-15,-15)(15,15){#3}}}}
\makeatother

\begin{document}

\begin{pspicture}(-20,-50)(80,50)
\myframe(0,0){V=3}{left}
\myframe[rot=90](50,-30){\parbox{30mm}{\centering
  $1\leq V\leq2$\\  \psline[linestyle=dashed](-15,0)(15,0)\\[5pt]
  $1\leq V\leq2$}}{down}
\myframe[rot=90](50,30){\parbox{30mm}{\centering
  $V>2$\\   \psline[linestyle=dotted](-15,0)(15,0)\\[5pt]
  $V>1$}}{up}
%
\ncline[nodesep=16,doubleline]{->}{left}{down}\naput{foo}
\ncline[nodesep=16,doubleline]{->}{left}{up}\nbput{bar}
\ncline[nodesepA=16,nodesepB=-30]{->}{up}{up}\ncput*{baz}
\end{pspicture}

\end{document}

在此处输入图片描述

语法\myframe是:

\myframe[optarg](x,y){text}{node name}

相关内容