修改 PS 文件使行变粗

modifying the PS file to thick the line

我有一个 .ps 文件,我想增加主轴线的宽度(主要和次要刻度)。 ps 文件中的哪个 属性 是正确的更改。

ps 文件可用 here,您可以在下面看到输出文件。

更新

更新

根据 BlueBook (pages 21 and 25) and the GreenBook(第 41 页),setlinewidth 语法类似于

4 setlinewidth

然而,在我的文件中,setlinewidth 是这样调用的

/sw /setlinewidth load def

看来这是一种不同的语法!我还写了一段代码来弹出一个值(3)并将其设置为线宽(至少我认为)

{ dup 0 eq
  { pop 3
  } if
  setlinewidth
} bind def
/sw /setlinewidth load def

但它不正确。

如果有人帮助我如何更改线宽,我将不胜感激,因为我真的不会编写打印机驱动程序....

老实说,这不是一个明智的问题。 PostScript 是一种编程语言,因此询问要更改哪个 'property' 没有多大意义。如果您希望打印结果不同,您应该返回生成 PostScript 的原始应用程序,然后修改它。

你认为这两个轴中的哪一个是 'major' 轴?

这段代码:

gs
a 113 2 m 113 292 l ps
gr
gs
a ps
a 113 6.40922 m 107.5 6.40922 l ps
a 113 18.0718 m 102 18.0718 l ps
a 113 29.7345 m 107.5 29.7345 l 113 41.3971 m 107.5 41.3971 l 113 53.0597 m 107.5 53.0597 l 113 64.7223 m 107.5 64.7223 l 113 76.3849 m 107.5 76.3849 l 113 88.0476 m 107.5 88.0476 l 113 99.7102 m 107.5 99.7102 l 113 111.373 m 107.5 111.373 l 113 123.035 m 107.5 123.035 l 113 134.698 m 107.5 134.698 l ps
80 18.0718 m (0) s
a 113 134.698 m 102 134.698 l ps
a 113 146.361 m 107.5 146.361 l 113 158.023 m 107.5 158.023 l 113 169.686 m 107.5 169.686 l 113 181.349 m 107.5 181.349 l 113 193.011 m 107.5 193.011 l 113 204.674 m 107.5 204.674 l 113 216.336 m 107.5 216.336 l 113 227.999 m 107.5 227.999 l 113 239.662 m 107.5 239.662 l 113 251.324 m 107.5 251.324 l ps
42 123.698 m (500m) s
a 113 251.324 m 102 251.324 l ps
a 113 262.987 m 107.5 262.987 l 113 274.65 m 107.5 274.65 l 113 286.312 m 107.5 286.312 l 113 297.975 m 107.5 297.975 l 113 309.637 m 107.5 309.637 l 113 321.3 m 107.5 321.3 l 113 332.963 m 107.5 332.963 l 113 344.625 m 107.5 344.625 l 113 356.288 m 107.5 356.288 l 113 367.95 m 107.5 367.95 l ps
80 240.324 m (1) s
a 113 303.663 m 107.5 303.663 l 113 315.325 m 107.5 315.325 l 113 326.988 m 107.5 326.988 l 113 338.65 m 107.5 338.65 l 113 350.313 m 107.5 350.313 l 113 361.976 m 107.5 361.976 l 113 373.638 m 107.5 373.638 l 113 385.301 m 107.5 385.301 l 113 396.964 m 107.5 396.964 l 113 408.626 m 107.5 408.626 l ps
gr

绘制短轴(标注为Voltages(lin),此段代码:

gs
a 2 64 m 709 64 l ps
gr
gs
a 2 64 m 2 53 l ps
a ps
a ps
a 22.2859 64 m 22.2859 53 l ps
a 49.4608 64 m 49.4608 58.5 l 76.6357 64 m 76.6357 58.5 l 103.811 64 m 103.811 58.5 l 130.986 64 m 130.986 58.5 l 158.161 64 m 158.161 58.5 l ps
11.7859 31 m (4n) s
a 158.161 64 m 158.161 53 l ps
a 185.335 64 m 185.335 58.5 l 212.51 64 m 212.51 58.5 l 239.685 64 m 239.685 58.5 l 266.86 64 m 266.86 58.5 l 294.035 64 m 294.035 58.5 l ps
139.661 31 m (4.2n) s
a 294.035 64 m 294.035 53 l ps
a 321.21 64 m 321.21 58.5 l 348.385 64 m 348.385 58.5 l 375.56 64 m 375.56 58.5 l 402.735 64 m 402.735 58.5 l 429.91 64 m 429.91 58.5 l ps
275.535 31 m (4.4n) s
a 429.91 64 m 429.91 53 l ps
a 457.085 64 m 457.085 58.5 l 484.26 64 m 484.26 58.5 l 511.435 64 m 511.435 58.5 l 538.609 64 m 538.609 58.5 l 565.784 64 m 565.784 58.5 l ps
411.41 31 m (4.6n) s
a 565.784 64 m 565.784 53 l ps
a 592.959 64 m 592.959 58.5 l 620.134 64 m 620.134 58.5 l 647.309 64 m 647.309 58.5 l 674.484 64 m 674.484 58.5 l 701.659 64 m 701.659 58.5 l ps
547.284 31 m (4.8n) s
a 701.659 64 m 701.659 53 l ps
a 728.834 64 m 728.834 58.5 l 756.009 64 m 756.009 58.5 l 783.184 64 m 783.184 58.5 l 810.359 64 m 810.359 58.5 l 837.534 64 m 837.534 58.5 l ps
688 20 m (5n) s
a 709 64 m 709 53 l ps
a 736.175 64 m 736.175 58.5 l 763.35 64 m 763.35 58.5 l 790.525 64 m 790.525 58.5 l 817.7 64 m 817.7 58.5 l 844.875 64 m 844.875 58.5 l ps
gr

绘制另一个轴。如果你改变这些部分的线宽,那么笔画会更宽。

我想补充几句来补充 Ken 的回答,我认为这是正确的观点。可以通过查看 Postscript tag-info page 来了解该语言的基础知识。阅读蓝皮书的前半部分(它很短,可以让您快速了解堆栈、运算符、语法和所有内容)。然后你应该阅读绿皮书了解为什么程序的结构是这样的,它有一个定义了很多短名称的序言,以及一个看起来更像纯数据的脚本。

如果你这样做了,你会发现Ken真的通过修改后记给了你如何做的答案。但是,"better" 方法几乎总是通过修改实际来源 material 来重新生成后记(无论是什么,它可能更接近 "property" 该元素)。


编辑:问题更新后。

正如 Ken 所说,您实际上不需要弄乱线路

/sw /setlinewidth load def

这不是调用 setlinewidth,而是将 sw 定义为较长名称的快捷方式。

因此,对于每个部分,您需要做两件事:

  1. 改变开头的线宽
  2. 最后再改回来[=44​​=]

要相对于当前值更改宽度,您可以使用 currentlinewidth 并做一些数学运算。

currentlinewidth 2 mul setlinewidth

要改回来,你可以做相反的操作,或者用额外的 gsave ... grestore 对把整个东西括起来,或者在定义中保存原始宽度并使用重置它的定义。

您可以使用像 gsave 这样的长运算符名称,也可以使用程序中定义的快捷方式,例如 gs.