⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gslp.ps

📁 遗传算法工具箱 希望高手指点 GATOOLS
💻 PS
📖 第 1 页 / 共 2 页
字号:
%    Copyright (C) 1991, 1995, 1996 Aladdin Enterprises.  All rights reserved.
% 
% This file is part of Aladdin Ghostscript.
% 
% Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author
% or distributor accepts any responsibility for the consequences of using it,
% or for whether it serves any particular purpose or works at all, unless he
% or she says so in writing.  Refer to the Aladdin Ghostscript Free Public
% License (the "License") for full details.
% 
% Every copy of Aladdin Ghostscript must include a copy of the License,
% normally in a plain ASCII text file named PUBLIC.  The License grants you
% the right to copy, modify and redistribute Aladdin Ghostscript, but only
% under certain conditions described in the License.  Among other things, the
% License requires that the copyright notice and this notice be preserved on
% all copies.

% gslp.ps - format and print text

% This utility provides functionality approximately equivalent to the Unix
% `enscript' program.  It prints plain text files using a single font.
% It currently handles tabs and formfeeds, but not backspaces.
% It only works with fixed-pitch fonts.
% Standard flags implemented:
%	-12BclqRr -b -f -F -L -p
% Sun flags implemented:
%	-T<n>	set tab width
% Flags ignored:
%	-GghKkmow -# -C -d -J -n -P -S -s -t -v
% Flags added:
%	--detect
%		treats the file as PostScript if it starts with %!
%	--(heading|footing)-(left|center|right) <string>
%		sets the heading/footing fields; use -B first to clear
%	--first-page <n>
%		sets the first page to print
%	--last-page <n>
%		sets the last page to print
%	--spacing <n>
%		for double (n=2), triple (n=3), etc. spacing
% Also, the string %# in a heading or footing is replaced with the page #.
/PageNumberString (%#) def

/lpdict 150 dict def
lpdict begin

% build iso-latin-1 version of a font
/font-to-iso-latin-1 {	% <font> font-to-iso-latin-1 <font>
    %% reencode for iso latin1; from the 2nd edition red book, sec 5.6.1
    dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall
    /Encoding ISOLatin1Encoding def currentdict end
    dup /FontName get 80 string cvs (-ISOLatin1) concatstrings cvn 
    exch definefont
} def

/find-latin-font {	% <name> find-latin-font <font>
  findfont font-to-iso-latin-1
} def

% Define the initial values of the printing parameters.

/BodyFont null def		% use default
  /defaultBodyFont
    { /Courier find-latin-font Landscape { 7 } { 10 } ifelse scalefont } def
/Columns 1 def
/DetectFileType false def
/Footers false def
/FootingLeft () def
/FootingCenter () def
/FootingRight () def
/Headers true def
/HeadingLeft () def
/HeadingCenter () def
/HeadingRight (page ) PageNumberString concatstrings def
/HeadingFont null def		% use default
  /defaultHeadingFont
    { /Courier-Bold find-latin-font 10 scalefont } def
/Landscape false def
/MarginBottom 36 def		% 1/2"
/MarginLeft 36 def		% 1/2"
/MarginRight 36 def		% 1/2"
/MarginTop 36 def		% 1/2"
/MaxLines 9999 def		% max lines per page
/Noisy true def			% i.e., not quiet
/OutFile null def		% null = write directly to device
/PageFirst 1 def
/PageLast 99999 def
/Spacing 1 def
/Tab 8 def
/Truncate false def		% wrap long lines, don't truncate

% When writing to a file, we want to write out PostScript;
% when writing to the printer, we want to execute it;
% some commands should be executed regardless.
% lpexec provides for all this.

/lpexec		% <arg1> ... <argn> </op> <n> <do_always> lpexec -
 { OutFile null eq
    { pop 1 add true
    }
    { /t exch def 1 add /n exch def cvx
      n { n -1 roll dup wosp } repeat
      OutFile (\n) writestring
      n t
    }
   ifelse
    { pop load exec }
    { { pop } repeat }
   ifelse
 } def

/lpmoveto
 { /moveto 2 true lpexec
 } def
/lpshow
 { dup length 0 ne { /show 1 false lpexec } { pop } ifelse
 } def
/lpsetmyfont
 { dup load setfont
   OutFile null ne { cvx /setfont 1 false lpexec } { pop } ifelse
 } def

% Define some utility procedures.

/banner		% ypos left center right
 { /HFont lpsetmyfont
   3 -1 roll bannerstring pop 0 4 index pwidth showline2 pop
   exch bannerstring pwidth exch sub 2 div 3 index pwidth showline2 pop
   bannerstring pwidth exch sub
   3 -1 roll pwidth showline2 pop
 } def

/bannerstring	% string -> string width
  { PageNumberString search
     { exch pop pindex 4 string cvs concatstrings exch concatstrings
     }
    if dup stringwidth pop
  } def

/beginpage
 { /lindex 0 def
   /skipping pindex PageFirst ge pindex PageLast le and not def
   /save 0 true lpexec /pagesave exch def
   skipping { nulldevice   /OutFile null def } if
   Headers
    { lheight hdescent add
      HeadingLeft HeadingCenter HeadingRight banner
    } if
   /BFont lpsetmyfont
 } def

/endpage
 { lindex 0 ne
    { Footers
       { topskip plength sub hdescent add
         FootingLeft FootingCenter FootingRight banner
       } if
      /showpage 0 false lpexec
    } if
   pagesave /restore 0 true lpexec
   /pindex pindex 1 add def
 } def

/fontheight	% <font> fontheight <ascent> <height>
 { gsave setfont
   newpath 0 0 moveto
   (|^_j) false charpath
   pathbbox exch pop dup 2 index sub 4 -2 roll pop pop
   grestore exch 1.25 mul exch 1.25 mul
 } def

/wosp
 { OutFile ( ) writestring OutFile exch write==only
 } def

/outfont		% name font ->
 { OutFile null ne
    { exch wosp
      dup /FontName get 
      dup wosp OutFile ( findfont) writestring
      %% reencode for iso latin1; from the 2nd edition red book, sec 5.6.1
      OutFile ( 
	dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall
	/Encoding ISOLatin1Encoding def currentdict end
      ) writestring
      wosp OutFile (-ISOLatin1 exch definefont) writestring
      /FontMatrix get 0 get 1000 mul round cvi wosp
      OutFile ( scalefont def\n) writestring
    }
    { pop pop
    }
   ifelse
 } def

/StringFF (\f) def
/CharFF StringFF 0 get def
/StringTAB (\t) def
/CharTAB StringTAB 0 get def

/showline		% line -> leftover_line (handles \f)
 {  { showline1 dup length 0 eq { exit } if
      dup 0 get CharFF ne { exit } if
      endpage beginpage
      skip1
    }
   loop
 } def

/showline1		% line -> leftover_line (handles page break)
 { lindex llength eq { endpage beginpage } if
   lindex colines idiv cowidth mul		% x
   lindex colines mod 1 add lheight mul neg fascent sub	% y
   1 index cowidth add
   showline2
   /lindex lindex 1 add def
 } def

/showline2	% string x y xlimit -> leftover_string (handles tabs)
 { 2 index exch 5 2 roll lpmoveto	% xinit xlimit string
    { showline3 dup length 0 eq { exit } if
      dup 0 get CharTAB ne { exit } if
      currentpoint exch 4 index sub tabwx div
	0.05 add ceiling tabwx mul 4 index add exch lpmoveto
      skip1
      currentpoint pop 2 index ge { exit } if
    }
   loop exch pop exch pop
 } def

/showline3	% xlimit string -> xlimit leftover_string
		% (finds line break / tab / formfeed)
 { currentpoint pop 2 index exch sub
     cwx div 0.1 add cvi 0 max 1 index length min
   1 index 0 3 -1 roll getinterval
	% look for \f or \t
   StringFF search { exch pop exch pop } if
   StringTAB search { exch pop exch pop } if
   dup lpshow
   length dup 2 index length exch sub getinterval
 } def

/skip1
 { dup length 1 sub 1 exch getinterval
 } def

/e== {		% <object> e== - -- print an object to stderr
  (%stderr) (w) file dup 3 -1 roll write==only flushfile
} def

/eprint {	% <string> eprint - -- print a string to stderr
  (%stderr) (w) file dup 3 -1 roll writestring flushfile
} def

% The main printing procedure

/lp		% file initial_chars ->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -