New macro to handle uppercase text
[ccbib.git] / psutils / fixdlsrps.pl
blob324109d1b5083c7199aff079bb2a1752bed9f43b
1 @PERL@
2 # fixdlsrps: fix DviLaser/PS document to work with PSUtils
4 # Copyright (C) Angus J. C. Duggan 1991-1995
5 # See file LICENSE for details.
7 $nesting = 0;
8 $page = 1;
9 $infont = 0;
11 @fonts = ();
12 @body = ();
13 $header = 1;
15 while (<>) {
16 if (/^XP/) {
17 $infont++;
18 push(@fonts, $_);
19 $infont-- if /PXL.*RP/ || /DN?F.*RP/;
20 } elsif ($infont) {
21 push(@fonts, $_);
22 $infont-- if /PXL.*RP/ || /DN?F.*RP/;
23 } elsif ((/^%%EndSetup/ || /^%%Page:/) && $header) {
24 print @body;
25 @body = ("%%EndSetup\n");
26 $header = 0;
27 } elsif (/^%%EndProlog/ && !$nesting) {
28 push(@body,
29 "\$DviLaser begin/GlobalMode{}bdef/LocalMode{}bdef/XP{}def/RP{}def",
30 "/DoInitialScaling{72.0 Resolution div dup scale}bdef end\n", $_);
31 } elsif (/^%%BeginPageSetup/ && !$nesting) {
32 push(@body, "%%Page: $page $page\n", $_,
33 "Resolution 72 div dup scale Magnification 1000 div dup scale\n",
34 "/DocumentInitState where {\n",
35 "/DocumentInitState [ matrix currentmatrix currentlinewidth",
36 " currentlinecap currentlinejoin currentdash currentgray",
37 " currentmiterlimit] cvx put}if\n");
38 $page++;
39 } elsif (/^%%BeginDocument:/ || /^%%BeginBinary:/ || /^%%BeginFile:/) {
40 push(@body, $_);
41 $nesting++;
42 } elsif (/^%%EndDocument/ || /^%%EndBinary/ || /^%%EndFile/) {
43 push(@body, $_);
44 $nesting--;
45 } elsif (!/^%%PageBoundingBox:/ && !/^%%Page:/) {
46 push(@body, $_);
50 print @fonts;
51 print @body;
53 exit 0;
54 @END@