您好我有一个postscript文件,从左到右排列图像。
%%% Temporary
/Fix_long 4.2 cm def
/Fix_short 3.2 cm def
%%% Set Image Scale
/SetFixScale { 2 copy gt { Fix_long Fix_short }{ Fix_short Fix_long }ifelse scale } bind def
%%% Set put coordinate
/SetXAdjust { 2 copy gt
{ X_Step Fix_long sub 2 div floor }
{ Fix_long Fix_short sub 2 div} ifelse /XAdjust exch def
} bind def
/YAdjust 1.0 cm def
%%% Temporary
/Row 4 def
/Column 5 def
/X_Step urx llx sub Row div floor def
/Y_Step ury lly sub Column div floor def
/Row_pos 0 def
/Column_pos 1 def
/SetPutPosition {
llx X_Step Row_pos mul add
ury Y_Step Column_pos mul sub translate
DrawFrame
DrawFileName
XAdjust YAdjust translate
Row 1 sub Row_pos eq { /Row_pos 0 def /Column_pos Column_pos 1 add def }{ /Row_pos Row_pos 1 add def } ifelse
Column_pos Column gt { /Column_pos 1 def } if
} bind def
我尝试更改postscript以从上到下排列图像。我可以从上到下布局图像,但我只能把它放在第一列。
/SetPutPosition {
llx X_Step Row_pos mul add
ury Y_Step Column_pos mul sub translate
DrawFrame
DrawFileName
XAdjust YAdjust translate
Row 1 sub Row_pos eq { /Row_pos 0 def /Column_pos Column_pos 1 add def }{ /Column_pos Column_pos 1 add def } ifelse
Column_pos Column gt { /Row_pos 1 def } if
} bind def
答案 0 :(得分:0)
并非所有程序都被给出,例如llx,lly,urx和ury未定义。所以不可能重现你在做什么......
行和列的定义对我来说也很奇怪,因为行在x方向上递增而列在y方向递减。
我假设程序在循环中运行(也未示出)。在循环的每次迭代中,它将页面上的位置设置为:
x = llx +(X_Step * Row_pos) y = ury - (Y_Step * Column_pos)
然后程序然后从Row中减去1并与Row_pos进行比较。如果它们是相同的,那么我们重置行,否则我们向Row_pos添加1。实际上,我们将Row_pos递增,直到我们到达Row-1。
现在,如果我们重置行,那么我们将Row_pos设置为0,并将1添加到column_pos。
最后,我们比较Column_pos和Column,如果Column_pos大于Column,那么我们将Column_pos重置为1.由于我们还要在前面的控制块中重置Row_pos,这实际上是一个完整的页面重置,并从初始值。
您的代码首先通过再次针对Row检查Row_pos(当应检查Column_pos对列时)。如果Row_pos没有到达Row,那么您将1添加到Column_pos。然后根据Column检查Column_pos,如果更大则重置Row_pos。
请注意,如果Row_pos等于Row - 1
,则可以改变Row_pos的唯一方法如果是,则将Row_pos重置为0.之后,除非Row为1,否则无法增加Row_pos。
基本上你的逻辑被打破了。
您希望将Column_pos与Column进行比较 - 1.当它们相等时,您希望将Column_pos设置为1并增加Row_pos,否则您希望增加Column_pos。最后,如果Row_pos大于Row,则要重置Row_pos top 0。
因此,请记住,我无法对此进行测试,因为并非所有代码都存在,例如:
/SetPutPosition {
llx X_Step Row_pos mul add
ury Y_Step Column_pos mul sub translate
DrawFrame
DrawFileName
XAdjust YAdjust translate
Column 1 sub Column_pos eq { /Column_pos 1 def /Row_pos Row_pos 1 add def }{ /Column_pos Column_pos 1 add def } ifelse
Row_pos Row gt { /Row_pos 0 def } if
} bind def