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

📄 rfc1276.ps

📁 RFC 的详细文档!
💻 PS
📖 第 1 页 / 共 5 页
字号:
%!              for use by dvi2ps Version 2.00
% a start (Ha!) at a TeX mode for PostScript.
% The following defines procedures assumed and used by program "dvi2ps"
% and must be downloaded or sent as a header file for all TeX jobs.

% By:  Neal Holtz, Carleton University, Ottawa, Canada
%      <holtz@cascade.carleton.cdn>
%      <holtz%cascade.carleton.cdn@ubc.csnet>
%      June, 1985
%      Last Modified: Aug 25/85
% oystr 12-Feb-1986
%   Changed @dc macro to check for a badly formed bits in character
%   definitions.  Can get a <> bit map if a character is not actually
%   in the font file.  This is absolutely guaranteed to drive the
%   printer nuts - it will appear that you can no longer define a
%   new font, although the built-ins will still be there.

% To convert this file into a downloaded file instead of a header
% file, uncomment all of the lines beginning with %-%

%-%0000000 			% Server loop exit password
%-%serverdict begin exitserver
%-%  systemdict /statusdict known
%-%  {statusdict begin 9 0 3 setsccinteractive /waittimeout 300 def end}
%-% if

/TeXDict 200 dict def   % define a working dictionary
TeXDict begin           % start using it.

                        % units are in "dots" (300/inch)
/Resolution 300 def
/Inch  {Resolution mul} def  % converts inches to internal units

/Mtrx 6 array def

%%%%%%%%%%%%%%%%%%%%% Page setup (user) options %%%%%%%%%%%%%%%%%%%%%%%%

% dvi2ps will output coordinates in the TeX system ([0,0] 1" down and in
% from top left, with y +ive downward).  The default PostScript system
% is [0,0] at bottom left, y +ive up.  The Many Matrix Machinations in
% the following code are an attempt to reconcile that. The intent is to
% specify the scaling as 1 and have only translations in the matrix to
% properly position the text.  Caution: the default device matrices are
% *not* the same in all PostScript devices; that should not matter in most
% of the code below (except for lanscape mode -- in that, rotations of
% -90 degrees resulted in the the rotation matrix [ e 1 ]
%                                                 [ 1 e ]
% where the "e"s were almost exactly but not quite unlike zeros.

% NOTE: We use A4 size paper. For letter size paper the constants '340' in the
% following code should be changed to '310'.

/@a4
{
72 Resolution div dup neg scale
270 -3215 translate
Mtrx currentmatrix pop
}def
/@letter
  { letter initmatrix
    72 Resolution div dup neg scale          % set scaling to 1.
    310 -3005 translate      % move origin to top (these are not exactly 1"
    Mtrx currentmatrix pop   % and -10" because margins aren't set exactly right)
  } def
        % note mode is like letter, except it uses less VM
/@note
  { note initmatrix
    72 Resolution div dup neg scale          % set scaling to 1.
    310 -3005 translate                      % move origin to top
    Mtrx currentmatrix pop
  } def

		% A3 modes courtesy of Francis Pintos, UCL

/@a3landscape
{a3 initmatrix
72 Resolution div dup neg scale
-90 rotate
300 310 translate
Mtrx currentmatrix pop
statusdict begin 1 setpapertray end
}def

/@a3portrait
{a3 initmatrix
72 Resolution div dup neg scale
300 310 translate
Mtrx currentmatrix pop
statusdict begin 1 setpapertray end
}def

/@landscape
  { letter initmatrix
    72 Resolution div dup neg scale          % set scaling to 1.
    -90 rotate                              % it would be nice to be able to do this
%    Mtrx currentmatrix 0 0.0 put             % but instead we have to do things like this because what
%    Mtrx 1 -1.0 put                          % should be zero terms aren't (and text comes out wobbly)
%    Mtrx 2 1.0 put                           % Fie!  This likely will not work on QMS printers
%    Mtrx 3 0.0 put                           % (nor on others where the device matrix is not like
%    Mtrx  setmatrix                          %  like it is on the LaserWriter).
    300 310  translate                       % move origin to top
    Mtrx currentmatrix pop
  } def

/@legal
  { legal initmatrix
    72 Resolution div dup neg scale          % set scaling to 1.
    295 -3880 translate                      % move origin to top
    Mtrx currentmatrix pop
  } def

/@manualfeed
   { statusdict /manualfeed true put
   } def
        % n @copies -   set number of copies
/@copies
   { /#copies exch def
   } def
/@restore /restore load def
/restore
   {vmstatus pop
   dup @VMused lt{pop @VMused}if		% calculate virtual memory used
   exch pop exch @restore /@VMused exch def
   }def

/@pri
    {
    ( ) print
    (                                       ) cvs print
    }def

/@FontMatrix [1 0 0 -1 0 0] def
/@FontBBox [0 0 1 1] def

%%%%%%%%%%%%%%%%%%%% Procedure Defintions %%%%%%%%%%%%%%%%%%%%%%%%%%

/@newfont       % id @newfont -         -- initialize a new font dictionary
  { /newname exch def
    newname 7 dict def          % allocate new font dictionary
    newname load begin
        /FontType 3 def
	/FontMatrix @FontMatrix def
	/FontBBox @FontBBox def
        /BitMaps 128 array def
        /BuildChar {CharBuilder} def
        /Encoding 128 array def
        0 1 127 {Encoding exch /.undef put} for
        end
    newname newname load definefont pop
  } def


% the following is the only character builder we need.  it looks up the
% char data in the BitMaps array, and paints the character if possible.
% char data  -- a bitmap descriptor -- is an array of length 6, of
%          which the various slots are:

/ch-image {ch-data 0 get} def   % the hex string image
/ch-width {ch-data 1 get} def   % the number of pixels across
/ch-height {ch-data 2 get} def  % the number of pixels tall
/ch-xoff  {ch-data 3 get} def   % number of pixels below origin
/ch-yoff  {ch-data 4 get} def   % number of pixels to left of origin
/ch-tfmw  {ch-data 5 get} def   % spacing to next character

/CharBuilder    % fontdict ch Charbuilder -     -- image one character
     {save 3 1 roll exch /BitMaps get exch get /ch-data exch def
      ch-data null ne
      {ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub
            setcachedevice
        ch-width ch-height true [1 0  0 1  ch-xoff ch-yoff]
            {ch-image} imagemask
     }if
     restore
  } def


/@sf            % fontdict @sf -        -- make that the current font
  { dup
    % All smallcaps fonts must have the string SmallCaps in their name
    /FontName known
      { dup /FontName get tempstring cvs (SmallCaps) search
	  {/smallcaps true def pop pop pop}
	  {/smallcaps false def pop}
        ifelse
      }
      {/smallcaps false def} 
    ifelse
    setfont
  } def

                % in the following, the font-cacheing mechanism requires that
                % a name unique in the particular font be generated

/@dc            % char-data ch @dc -    -- define a new character bitmap in current font
  { /ch-code exch def
% ++oystr 12-Feb-86++
    dup 0 get
    length 2 lt
      { pop [ <00> 1 1 0 0 8.00 ] } % replace <> with null
    if
% --oystr 12-Feb-86--
    /ch-data exch def
    currentfont /BitMaps get ch-code ch-data put
    currentfont /Encoding get ch-code
       dup (   ) cvs cvn   % generate a unique name simply from the character code
       put
  } def

/@pc		% char-data ch @pc -    -- print a character bitmap not downloaded
    {pop
    /ch-data exch def
    currentpoint translate
    ch-width ch-height true [1 0 0 -1 ch-xoff ch-yoff]
    {ch-image}imagemask
    }def

/@bop0           % n @bop0 -              -- begin the char def section of a new page
  { pop
  } def

/@bop1           % n @bop1 -              -- begin a brand new page
  { pop
    erasepage initgraphics
    Mtrx setmatrix
    /SaveImage save def
%
% RLW:
% The following is a fix necessary since a /@beginspecial immediately
% following a /@bop1 failed.  This was due to a lack of definition of the
% current point, something which can only happen in the one situation.
% Suffer the extra code for all other case as new pages don't happen too often.
%
    0 0 moveto
%
  } def

/@eop           % - @eop -              -- end a page
  { showpage
    SaveImage restore
  } def

/@start         % - @start -            -- start everything
  { @a4                             % (there is not much to do)
    vmstatus pop /@VMused exch def pop
  } def

/@end           % - @end -              -- done the whole shebang
  {(VM used: ) print @VMused @pri
  (. Unused: ) print vmstatus @VMused sub @pri pop pop
  (\n) print flush
  end
  } def

/p              % x y p -               -- move to position
  { moveto
  } def

/r              % x r -                 -- move right
  { 0 rmoveto
  } def

/s              % string s -            -- show the string
  { smallcaps {SmallCapShow} {show} ifelse
  } def

/c              % ch c -                -- show the character (code given)
  { c-string exch 0 exch put
    c-string s
  } def

/c-string ( ) def

/ru             % dx dy ru -   -- set a rule (rectangle)
  { /dy exch neg def    % because dy is height up from bottom
    /dx exch def
    /x currentpoint /y exch def def   % remember current point
    newpath x y moveto
    dx 0 rlineto
    0 dy rlineto
    dx neg 0 rlineto
    closepath fill
    x y moveto
  } def

/l              % x y l -               -- draw line to
  { lineto
  } def

⌨️ 快捷键说明

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