📄 hardcopy.ps
字号:
%% Redefiniton of the PostScript file output operators so results go to paper.% Complicated and slow, but the implementation doesn't place many demands on% included PostScript. About all that's required is gentle treatment of the% graphics state between write calls.%/#copies 1 store/aspectratio 1 def/font /Courier def/formsperpage 1 def/landscape false def/magnification 1 def/orientation 0 def/pointsize 10 def/rotation 1 def/xoffset .1 def/yoffset .1 def/roundpage true def/useclippath true def/pagebbox [0 0 612 792] def/inch {72 mul} def/min {2 copy gt {exch} if pop} def/HardcopySetup { landscape {/orientation 90 orientation add def} if font findfont 1 1.1 div scalefont setfont pagedimensions xcenter ycenter translate orientation rotation mul rotate width 2 div neg height 2 div translate xoffset inch yoffset inch neg translate pointsize 1.1 mul dup scale magnification dup aspectratio mul scale height width div 1 min dup scale 0 -1 translate 0 0 moveto} def/pagedimensions { useclippath { /pagebbox [clippath pathbbox newpath] def roundpage currentdict /roundpagebbox known and {roundpagebbox} if } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def} def%% Unbind the operators in an executable array or packedarray. Leaves the% unbound array or the original object on the stack.%/Unbind { 0 index xcheck 1 index type /arraytype eq 2 index type /packedarraytype eq or and { dup length array copy cvx dup 0 exch { dup type /operatortype eq { ( ) cvs cvn cvx } if dup type /dicttype eq { dup maxlength dict exch { Unbind 3 copy put pop pop } forall } if 0 index xcheck 1 index type /arraytype eq 2 index type /packedarraytype eq or and { Unbind } if 3 copy put pop 1 add } forall pop } if} def%% New write operator - don't bind the definition! Expands tabs and backspaces,% wraps long lines, and starts a new page whenever necessary. The code that% handles newlines assumes lines are separated by one vertical unit.%/write { true exch %%case '\b': dup 8#10 eq { ( ) stringwidth pop neg 0 rmoveto currentpoint pop 0 lt { currentpoint exch pop 0 exch moveto } if exch pop false exch } if %%case '\t': dup 8#11 eq { currentpoint pop ( ) stringwidth pop div round cvi 8 mod 8 exch sub { 2 index 8#40 write } repeat exch pop false exch } if %%case '\n': dup 8#12 eq { currentpoint 0 exch 1 sub moveto pop gsave clippath pathbbox pop pop exch pop grestore currentpoint exch pop 1 sub ge { 2 index 8#14 write } if exch pop false exch } if %%case '\f': dup 8#14 eq { gsave showpage grestore 0 0 moveto exch pop false exch } if %%case '\r': dup 8#15 eq { currentpoint 0 exch moveto pop exch pop false exch } if %%case EOF: dup -1 eq { currentpoint 0 ne exch 0 ne or { 2 index 8#14 write } if exch pop false exch } if %%default: exch { dup gsave clippath pathbbox pop 3 1 roll pop pop grestore ( ) stringwidth pop currentpoint pop add le { 2 index 8#12 write } if ( ) dup 0 4 -1 roll put show } if pop % the character pop % and file object} def%% All the other file output operators call our redefined write operator.%/print { (%stdout) (w) file exch {1 index exch write} forall pop} def/writestring { {1 index exch write} forall pop} def/writehexstring { (0123456789ABCDEF) 3 1 roll { dup 3 index exch -4 bitshift 16#F and get 2 index exch write 2 index exch 16#F and get 1 index exch write } forall pop pop} def%% Unbind and redefine the remaining file output procedures.%/= dup load Unbind def/== dup load Unbind def/stack dup load Unbind def/pstack dup load Unbind def
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -