summaryrefslogtreecommitdiff
path: root/support/lametex/page/page_skew.ps
blob: c49e0dbf7c2d86d16c6568de2d0cbb13b10cf002 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
%! page_skew.ps     - A page turned at at 30 degree angle
%% This is a LameTeX Page Description File written in PostScript.
%% Postscript Code by Jon Monsarrat Copyright 1992
%% permission given for anything except selling this or deleting the header.

%%%%%%%%%%%%%%%% width height angle left bot Skew-Page %%%%%%%%%%%%%%%%%%%%%%
% Draws a twisted page at ang degrees, given margins and size
/Skew-Page
{
                                        % wp hp ang lp bp
  moveto dup cos exch sin 2 copy        % wp hp cosang sinang cosang sinang 
  5 index mul exch 6 -1 roll mul        % hp cosang sinang sinwpang coswpang
  5 2 roll 2 index mul neg 3 1 roll mul % sinwpang coswpang -sinhpang coshpang
  2 index 4 index rlineto               % sinwpang coswpang -sinhpang coshpang
  rlineto neg exch neg rlineto          % -empty-
  closepath
} bind def

%%%%%%%%%%%  icon-name  LeftMarginIcon   - %%%%%%%%%%%%
% Given the name of an icon, executes the icon in the left margin.
/LeftMarginIcon
{
  gsave
       bslot 50 sub ypos 72 sub translate cvx exec
  grestore
} bind def

%% REQUIRED DEFINITIONS START HERE %%

/PageShape
{
  8.5 in 11 in 30 0 0 Skew-Page 
  currentflat 8 mul
} bind def

% Anything to do when a new page is started
/StartPage
{
  0 0 moveto -30 rotate
} bind def

% Anything to do when a new page is ended
/EndPage
{
   pagenumber 4 string cvs
   dup stringwidth pop 8.5 in
   formatdict /rightmargin get sub
   formatdict /leftmargin get sub 
   exch sub 2 div formatdict /leftmargin get add
   formatdict /bottommargin get 2 div moveto show
   /pagenumber pagenumber 1 add def
   showpage  % A new page here really does mean start a new page.
} bind def

%% INITIALIZATION TO DO WHEN FILE IS LOADED %%
% Page-specific defaults that describe the page.
/InitPage
{
  /evenodd true def   % if true use even-odd rule; false means winding rule
  /fillout false def  % true means fill outside shape. false is inside.

  /in {72 mul} def
  /BM 0 def       % Bottom Margin
  /TM 11 in def   % Top Margin
  /LM 0 def       % Left Margin
  /RM 8.5 in def  % Right Margin

  userdict /pagenumber known not   % Initialize pagenumber if not done already
  { userdict begin /pagenumber 1 def end} if
} bind def

InitPage        % Just loading this file initializes the page.