后记 - 案例陈述的替代方法

标签 postscript

我偶尔会涉猎 postscript,这是一种我喜欢的古怪语言,但我还算不上专家。

要生成这样的图表:

enter image description here

我写了一些看起来像这样的代码:

  % fontsize on stack

  label (Up) eq 
    { /Symbol exch selectfont (\255) show }
    { label (Down) eq 
      { /Symbol exch selectfont (\257) show }
      { label (Left) eq
        { /Symbol exch selectfont (\254) show }
        { label (Right) eq
          { /Symbol exch selectfont (\256) show }
          { label (bs) eq
            { /Symbol exch selectfont (\254) show }
            { /Helvetica exch selectfont 
              label length 3 lt 
                { label show }
                {
                  label (/)              % (page/up) (/)
                  search                 % (up) (/) (page) true
                  {                      % (up) (/) (page) 
                    /Helvetica keyHeight 4.6 div selectfont
                    3 1 roll             % (page) (up) (/)
                    pop                  % (page) (up)
                    currentpoint         % (page) (up) 438 745
                    3 2 roll             % (page) 438 745 (up)
                    show                 % (page) 438 745 
                    moveto               % (page)
                    0 keyHeight 0.25 mul % (page) 0 11
                    rmoveto              % (page) 
                    show }               % 
                  { show } ifelse
                } ifelse 
            } ifelse
          } ifelse
        } ifelse
      } ifelse
    } ifelse
    ...
    (End)key (Page/Down)key 0.5 gap (7)(Home)key2 (8)(Up)key2 ...

我不喜欢嵌套的 if 语句和重复,但这是对解决方案的第一次快速尝试。我的第一个想法是我会使用另一种语言的案例陈述。对于 Postscript,我想我应该为标签名称对和相应的八进制字符代码选择合适的数据结构。也许是嵌套数组。

  [ [(Up) (\255)]  [(Down) (\257)] ... ]

但我不确定如何迭代这个并且仍然优雅地跟踪我是否需要在没有名称匹配时执行默认过程。

有没有我可以遵循的好成语?

最佳答案

好的,现在我回到我的办公 table 前。与其自己回答这个问题,不如让我为您指出一个很好的资源,John Deubert 的 Acumen Training Journal :

如果您查看 2001 年 4 月的 PostScript 技术期刊,您会看到 John 对如何使用字典实现 case 语句的清晰描述。我建议这比使用数组更好,主要原因有两个,首先是能够简单地添加默认情况,其次是事实,正如约翰指出的那样,“get”和“known”运算符通常在PostScript 解释器,因为它们的使用非常频繁。

关于后记 - 案例陈述的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32677646/

相关文章:

pdf - Postscript 有表格的概念吗?

postscript - 像 Typekit 一样提供附记大纲

printing - Ghostscript 和页边距

latex - 如何从 postscript/gnuplot 转换为 pdf 并保留 latex 文档的重音字母?

python - Tkinter Canvas Postscript 不捕获屏幕框架外的 Window 元素

ghostscript - PostScript 执行程序的用户交互

PDF 到 PostScript 使用 Ghostscript : large files having issues printing

r - 减少EPS格式的地 block 大小

Mac 上的 R 错误 : "family ' Times New Roman' not included in postscript() device"