You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostScript中如何将字符串与变量结合生成文本标签?

PostScript循环生成数值标签的解决方案

问题原因

你在循环中使用的(i)是字面量字符串,PostScript会直接将其作为文本输出,不会解析变量i的实际数值,所以所有位置都打印出字符"i"。

解决方法

需要先将整数变量转换为对应的字符串,再传入Label操作符,以下是两种可行方案:

方案1:循环内直接转换数值为字符串

修改循环代码,在调用Label前用cvs操作符将整数转为字符串:

1 10 20 {
    /i exch def
    i 0 0
    i 256 string cvs  % 将整数i转为ASCII字符串
    Label
} for
  • 解释:256 string创建一个足够容纳整数的空字符串缓冲区,cvs(Convert to String)操作符会把栈顶的整数i转换成对应的字符串,替换空字符串后,栈上的参数正好匹配Label的要求。

方案2:修改Label操作符,支持直接传入数值

如果希望Label能同时接收字符串和数值,可以修改其定义,自动处理数值转字符串的逻辑:

/Label { % i dx dy text/num Label
    % 判断最后一个参数是否为整数,是则转为字符串
    dup type /integertype eq {
        256 string cvs
    } if
    % 原有的定位和打印逻辑
    4 3 roll 1 sub coor exch get aload pop moveto
    3 1 roll fsize mul exch fsize mul exch rmoveto
    show
} bind def

修改后可以直接传入变量i调用:

1 10 20 {
    /i exch def
    i 0 0 i Label
} for

关键说明

PostScript是栈式解释型语言,字面量字符串(xxx)属于静态文本,不会触发变量解析。必须通过cvs这类标准操作符,显式将数值类型转换为字符串类型,才能输出变量对应的数值文本。

内容的提问来源于stack exchange,提问作者Cristian Velandia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:12:52