From 487ca4806cc046076293cf6cc5fbba0db282bac7 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 17 Jan 2006 21:41:51 +0000 Subject: texk 1 git-svn-id: svn://tug.org/texlive/trunk@1485 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/dvipsk/contrib/MakeTeXPK.pl | 198 ++++ Build/source/texk/dvipsk/contrib/PSTricks | 352 ++++++ Build/source/texk/dvipsk/contrib/afm-extra/ptmr.ed | 118 ++ .../source/texk/dvipsk/contrib/afm-extra/ptmro.ed | 130 +++ .../source/texk/dvipsk/contrib/bbfig/INSTALLATION | 16 + Build/source/texk/dvipsk/contrib/bbfig/bb.ps | 579 +++++++++ Build/source/texk/dvipsk/contrib/bbfig/bbfig | 22 + Build/source/texk/dvipsk/contrib/bbfig/bbfig.1 | 40 + Build/source/texk/dvipsk/contrib/bbfig/vmsbbfig.c | 113 ++ Build/source/texk/dvipsk/contrib/colorsep.lpro | 184 +++ Build/source/texk/dvipsk/contrib/config.proto | 46 + Build/source/texk/dvipsk/contrib/configs/2a4.ps | 49 + .../source/texk/dvipsk/contrib/configs/config.fax | 5 + .../source/texk/dvipsk/contrib/configs/config.lino | 93 ++ .../source/texk/dvipsk/contrib/configs/config.lj2p | 95 ++ .../texk/dvipsk/contrib/configs/config.post3x3 | 28 + .../texk/dvipsk/contrib/configs/config.rokicki | 62 + Build/source/texk/dvipsk/contrib/configs/loop.ps | 2 + .../texk/dvipsk/contrib/configs/mkdvipspapers | 429 +++++++ .../texk/dvipsk/contrib/configs/papersize.level2 | 236 ++++ .../texk/dvipsk/contrib/configs/papersize.simple | 44 + .../source/texk/dvipsk/contrib/configs/prepipe.ps | 1 + .../source/texk/dvipsk/contrib/configs/showpage.ps | 1 + Build/source/texk/dvipsk/contrib/crop.lpr | 271 +++++ .../texk/dvipsk/contrib/latex209/avantgarde.sty | 11 + .../texk/dvipsk/contrib/latex209/blackdvi.sty | 109 ++ .../texk/dvipsk/contrib/latex209/bookman.sty | 11 + .../texk/dvipsk/contrib/latex209/chancery.sty | 11 + .../texk/dvipsk/contrib/latex209/colordvi.sty | 162 +++ .../source/texk/dvipsk/contrib/latex209/lucida.sty | 12 + Build/source/texk/dvipsk/contrib/latex209/ncs.sty | 11 + .../texk/dvipsk/contrib/latex209/palatino.sty | 11 + .../texk/dvipsk/contrib/latex209/psfonts.sty | 266 +++++ .../texk/dvipsk/contrib/latex209/psgreek.sty | 38 + .../source/texk/dvipsk/contrib/latex209/rotate.sty | 53 + .../source/texk/dvipsk/contrib/latex209/times.sty | 11 + .../texk/dvipsk/contrib/psfntmac/ps_lfonts.tex | 888 ++++++++++++++ .../texk/dvipsk/contrib/psfntmac/ps_plain.tex | 1235 ++++++++++++++++++++ .../source/texk/dvipsk/contrib/pspic/pspic.readme | 40 + Build/source/texk/dvipsk/contrib/pspic/pspic.sty | 168 +++ Build/source/texk/dvipsk/contrib/timesmat.sty | 291 +++++ Build/source/texk/dvipsk/contrib/volker/README | 149 +++ Build/source/texk/dvipsk/contrib/volker/a3.cfg | 17 + .../source/texk/dvipsk/contrib/volker/duplong.cfg | 19 + .../source/texk/dvipsk/contrib/volker/dupshort.cfg | 19 + Build/source/texk/dvipsk/contrib/volker/inv.cfg | 21 + .../source/texk/dvipsk/contrib/volker/scr100-0.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr100.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr110.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr120.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr130.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr140.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr150.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr70.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr80.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr85.cfg | 21 + Build/source/texk/dvipsk/contrib/volker/scr90.cfg | 21 + .../source/texk/dvipsk/contrib/volker/simplex.cfg | 19 + Build/source/texk/dvipsk/contrib/whichinpath | 13 + 59 files changed, 6930 insertions(+) create mode 100644 Build/source/texk/dvipsk/contrib/MakeTeXPK.pl create mode 100644 Build/source/texk/dvipsk/contrib/PSTricks create mode 100644 Build/source/texk/dvipsk/contrib/afm-extra/ptmr.ed create mode 100644 Build/source/texk/dvipsk/contrib/afm-extra/ptmro.ed create mode 100644 Build/source/texk/dvipsk/contrib/bbfig/INSTALLATION create mode 100644 Build/source/texk/dvipsk/contrib/bbfig/bb.ps create mode 100644 Build/source/texk/dvipsk/contrib/bbfig/bbfig create mode 100644 Build/source/texk/dvipsk/contrib/bbfig/bbfig.1 create mode 100644 Build/source/texk/dvipsk/contrib/bbfig/vmsbbfig.c create mode 100644 Build/source/texk/dvipsk/contrib/colorsep.lpro create mode 100644 Build/source/texk/dvipsk/contrib/config.proto create mode 100644 Build/source/texk/dvipsk/contrib/configs/2a4.ps create mode 100644 Build/source/texk/dvipsk/contrib/configs/config.fax create mode 100644 Build/source/texk/dvipsk/contrib/configs/config.lino create mode 100644 Build/source/texk/dvipsk/contrib/configs/config.lj2p create mode 100644 Build/source/texk/dvipsk/contrib/configs/config.post3x3 create mode 100644 Build/source/texk/dvipsk/contrib/configs/config.rokicki create mode 100644 Build/source/texk/dvipsk/contrib/configs/loop.ps create mode 100644 Build/source/texk/dvipsk/contrib/configs/mkdvipspapers create mode 100644 Build/source/texk/dvipsk/contrib/configs/papersize.level2 create mode 100644 Build/source/texk/dvipsk/contrib/configs/papersize.simple create mode 100644 Build/source/texk/dvipsk/contrib/configs/prepipe.ps create mode 100644 Build/source/texk/dvipsk/contrib/configs/showpage.ps create mode 100644 Build/source/texk/dvipsk/contrib/crop.lpr create mode 100644 Build/source/texk/dvipsk/contrib/latex209/avantgarde.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/blackdvi.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/bookman.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/chancery.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/colordvi.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/lucida.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/ncs.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/palatino.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/psfonts.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/psgreek.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/rotate.sty create mode 100644 Build/source/texk/dvipsk/contrib/latex209/times.sty create mode 100644 Build/source/texk/dvipsk/contrib/psfntmac/ps_lfonts.tex create mode 100644 Build/source/texk/dvipsk/contrib/psfntmac/ps_plain.tex create mode 100644 Build/source/texk/dvipsk/contrib/pspic/pspic.readme create mode 100644 Build/source/texk/dvipsk/contrib/pspic/pspic.sty create mode 100644 Build/source/texk/dvipsk/contrib/timesmat.sty create mode 100644 Build/source/texk/dvipsk/contrib/volker/README create mode 100644 Build/source/texk/dvipsk/contrib/volker/a3.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/duplong.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/dupshort.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/inv.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr100-0.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr100.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr110.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr120.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr130.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr140.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr150.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr70.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr80.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr85.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/scr90.cfg create mode 100644 Build/source/texk/dvipsk/contrib/volker/simplex.cfg create mode 100644 Build/source/texk/dvipsk/contrib/whichinpath (limited to 'Build/source/texk/dvipsk/contrib') diff --git a/Build/source/texk/dvipsk/contrib/MakeTeXPK.pl b/Build/source/texk/dvipsk/contrib/MakeTeXPK.pl new file mode 100644 index 00000000000..5e0b8dd5b3d --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/MakeTeXPK.pl @@ -0,0 +1,198 @@ +#!/usr/local/bin/perl +# +# MakeTeXPK.pl +# +# v1.0 - modified by John Stoffel (john@wpi.wpi.edu) from the original +# shell script written by Tomas Rokicki (rokicki@cs.stanford.edu). +# please feel free to make any modifications you would like to this +# script, but please acknowledge myself and tom when you make +# changes. +# +# - This was orignally modified to write the fonts to a seperate +# directory because the fonts were stored on a read-only NFS +# server. New fonts were then stored in a second location that +# was world writeable, so fonts could be created automatically. +# +# 1. checks both directories before hand for the font's existence. +# 2. creates the font, then moves it to the writeable directory. +# 3. changes the ownership and protection so users can't write +# the font directly. +# +# - this script should NOT be used directly, but run through +# suidscript.pl first and then used as directed. +# +# todo: +# - add automagic support for write-white and write-black printers. +# now I have two seperate version of the same program. This would +# mean adding in either a new parameter, or possibly a -w or -b +# switch. Default could be customizable. What do you think tom? +# +# - cleanup the code a little more and write it in better perl. +# +# ------------------------------------------------------------------------ +# +# This script file makes a new TeX PK font, because one wasn't +# found. Parameters are: +# +# name dpi bdpi magnification [[mode] subdir] +# +# `name' is the name of the font, such as `cmr10'. `dpi' is +# the resolution the font is needed at. `bdpi' is the base +# resolution, useful for figuring out the mode to make the font +# in. `magnification' is a string to pass to MF as the +# magnification. `mode', if supplied, is the mode to use. +# +# Note that this file must execute Metafont, and then gftopk, +# and place the result in the correct location for the PostScript +# driver to find it subsequently. If this doesn't work, it will +# be evident because MF will be invoked over and over again. +# +# Of course, it needs to be set up for your site. +# +# ------------------------------------------------------------------------- + +# setup the environment variables before hand. + +$ENV{'PATH'} = '/bin:/usr/bin:/usr/ucb:/usr/local/bin'; +$ENV{'SHELL'} = '/bin/sh' if $ENV{'SHELL'} ne ''; +$ENV{'IFS'} = '' if $ENV{'IFS'} ne ''; +$path = $ENV{'PATH'}; +umask(0022); + +# set who the owner and group of the created fonts will be. + +$OWNER = "root.tex"; + +# check number of arguements. + +die "Not enough arguments!\n" if ($#ARGV < 3); + +# make sure the user doesn't try to give us any control characters as +# as arguements. + +$NAME=&untaint($ARGV[0]); +$DPI=&untaint($ARGV[1]); +$BDPI=&untaint($ARGV[2]); +$MAG=&untaint($ARGV[3]); +$MODE=&untaint($ARGV[4]) if (defined($ARGV[4])); +$PK=&untaint($ARGV[5]) if (defined($ARGV[5])); + +# texdir and local dir can be the same if $TEXDIR is world writeable, or +# different if $TEXDIR is read-only and $LOCALDIR is read-write. + +$TEXDIR="/usr/local/lib/tex"; +$LOCALDIR="/shared/tex/fonts"; +$DESTDIR="$LOCALDIR/white/pk"; + +# TEMPDIR needs to be unique for each process because of the possibility +# of simultaneous processes running this script. + +if ($TMPDIR eq '') { + $TEMPDIR="/tmp/mtpk.$$"; + } +else { + $TEMPDIR="$TMPDIR/mtpk.$$"; + } + +if ($MODE eq "") { + if ($BDPI eq "300") { $MODE='imagen'; } + elsif ($BDPI eq "200") { $MODE='FAX'; } + elsif ($BDPI eq "360") { $MODE='nextII'; } + elsif ($BDPI eq "400") { $MODE='nexthi'; } + elsif ($BDPI eq "100") { $MODE='nextscreen'; } + elsif ($BDPI eq "635") { $MODE='linolo'; } + elsif ($BDPI eq "1270") { $MODE='linohi'; } + elsif ($BDPI eq "2540") { $MODE='linosuper'; } + else { + die "I don't know the $MODE for $BDPI\nHave your system admin update MakeTeXPK.pl\n" + } +} + +# Something like the following is useful at some sites. +# DESTDIR=/usr/local/lib/tex/fonts/pk.$MODE + +$GFNAME="$NAME.$DPI"."gf"; +$PKNAME="$NAME.$DPI"."pk"; + +# Clean up on normal or abnormal exit + +chdir("/") || die "Couldn't cd to /: $!\n"; + +if (-d $TEMPDIR) { + rmdir($TEMPDIR) || die "Couldn't remove $TEMPDIR: $!\n"; +} +if (-e "$DESTDIR/pktmp.$$") { + unlink("$DESTDIR/pktmp.$$") || die "Couldn't rm $DESTDIR/pktmp.$$: $!\n"; +} + +if (! -d $DESTDIR) { + mkdir($DESTDIR,0755) || die "Couldn't make $DESTDIR: $!\n"; +} + +if ($PK ne '') { + $DESTDIR = $DESTDIR . $PK; + if (! -d $DESTDIR) { + mkdir($DESTDIR,0755) || die "Couldn't make $DESTDIR: $!\n"; + } +} + +mkdir($TEMPDIR,0755) || die "Couldn't make $TEMPDIR: $!\n"; + +chdir($TEMPDIR) || die "Couldn't cd to $TEMPDIR: $!\n"; + +if (-e "$DESTDIR/$PKNAME") { + die "$DESTDIR/$PKNAME already exists!\n"; +} + +# check also in the standard place + +if ($PK eq '') { + if (-e "$TEXDIR/fonts/white/pk/$PKNAME") { + die "$TEXDIR/fonts/white/pk/$PKNAME already exists!\n"; + } + elsif (-e "$TEXDIR/fonts/white/pk/$PK$PKNAME") { + die "$TEXDIR/fonts/white/pk/$PK$PKNAME already exists!\n"; + } +} + +# print out the command string we will use, then actually do the command, +# printing it's results. + +print "mf \"\\mode:=$MODE; mag:=$MAG; scrollmode; input $NAME\" + +CONTRIBUTING TO PSTRICKS + + Please send me: + + + * Whatever you can spare. + * Pretty/interesting/clever things you have created with PSTricks, + for possible inclusion in the User's Guide or pst-samp.tex. Don't + be bashful! + * High level macros for trees/graphs, math diagrams, and linguistic + diagrams, based on PSTricks' node macros. + * Any other macros based on PSTricks. + * Contributions to the Tips and Tricks section of the User's Guide. + * Reports on +/- experiences with DVI-to-PS converters and previewers. + * Bug reports. + * pstricks.doc -- cleaned up, optimized, and documented. + * To Nepal. + +PSTRICKS AND SEMINAR.STY + + The PSTricks package grew out of macros originally written for the + seminar.sty package. seminar.sty is a LaTeX style for slides and notes. + seminar.sty, combined with pstricks.tex and your favorite macros for + inclusion of EPS files, make a complete TeX presentation software package. + + + PSTricks v0.92 works with seminar.sty version 0.92, and maybe later + versions as well. The seminar.sty package is also available from + Princeton.EDU, and perhaps from wherever else you got PSTricks. + +ABOUT MULTIDO.TEX: + + multido.tex contains a loop macro that is useful for making pictures, + among other things. See multido.ps for details. multido.tex is required + by PSTricks \psaxes macro. + + + The complete multido.tex distribution (i.e., including sources) is + available from the /pub directory at Princeton.EDU. + + +ACKNOWLEDGEMENTS: + + The basic idea for the node macros is from Emma Pease's tree-dvips.sty. + + + The algorithm in the \pscurve macro was adapted from a C program by + Shamim Zvonko Mohamed. + + + Thanks to Geoffrey Tobin for helpful comments. + + + The author is thankful to Frank Mittelbach for his documentation system. + + + Thanks to various contributors to samples.pst. + + +DISCLAIMERS: + + This is just an elaborate hack. Not for use as children's sleepware. diff --git a/Build/source/texk/dvipsk/contrib/afm-extra/ptmr.ed b/Build/source/texk/dvipsk/contrib/afm-extra/ptmr.ed new file mode 100644 index 00000000000..78dc82138de --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/afm-extra/ptmr.ed @@ -0,0 +1,118 @@ +1s/)/, then edited for Greek)/ +/(LIGTABLE/i +(MAPFONT D 1 + (FONTNAME rpsyr) + (FONTCHECKSUM O 12741765024) + ) +. +/(CHARACTER/i +(CHARACTER O 0 (comment Gamma) + (CHARWD R 603) + (CHARHT R 689) + (CHARIC R 6) + (MAP + (SELECTFONT D 1) + (SETCHAR C G) + ) + ) +(CHARACTER O 1 (comment Delta) + (CHARWD R 612) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C D) + ) + ) +(CHARACTER O 2 (comment Theta) + (CHARWD R 741) + (CHARHT R 689) + (CHARDP R 7) + (MAP + (SELECTFONT D 1) + (SETCHAR C Q) + ) + ) +(CHARACTER O 3 (comment Lambda) + (CHARWD R 686) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C L) + ) + ) +(CHARACTER O 4 (comment Xi) + (CHARWD R 645) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C X) + ) + ) +(CHARACTER O 5 (comment Pi) + (CHARWD R 768) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C P) + ) + ) +(CHARACTER O 6 (comment Sigma) + (CHARWD R 592) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C S) + ) + ) +(CHARACTER O 7 (comment Upsilon1) + (CHARWD R 620) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR O 241) + ) + ) +(CHARACTER O 10 (comment Phi) + (CHARWD R 763) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C F) + ) + ) +(CHARACTER O 11 (comment Psi) + (CHARWD R 795) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C Y) + ) + ) +(CHARACTER O 12 (comment Omega) + (CHARWD R 768) + (CHARHT R 689) + (MAP + (SELECTFONT D 1) + (SETCHAR C W) + ) + ) +(CHARACTER O 13 (comment arrowup) + (CHARWD R 603) + (CHARHT R 907) + (MAP + (SELECTFONT D 1) + (SETCHAR O 255) + ) + ) +(CHARACTER O 14 (comment arrowdown) + (CHARWD R 603) + (CHARHT R 907) + (CHARDP R 7) + (MAP + (SELECTFONT D 1) + (SETCHAR O 257) + ) + ) +. +w ptmr.vpl +q diff --git a/Build/source/texk/dvipsk/contrib/afm-extra/ptmro.ed b/Build/source/texk/dvipsk/contrib/afm-extra/ptmro.ed new file mode 100644 index 00000000000..26885af1622 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/afm-extra/ptmro.ed @@ -0,0 +1,130 @@ +1s/)/, edited for Greek)/ +/(LIGTABLE/i +(MAPFONT D 1 + (FONTNAME psyro) + (FONTCHECKSUM O 12741765024) + ) +. +/(CHARACTER/i +(CHARACTER O 0 (comment Gamma) + (CHARWD R 603) + (CHARHT R 689) + (CHARIC R 118) + (MAP + (SELECTFONT D 1) + (SETCHAR C G) + ) + ) +(CHARACTER O 1 (comment Delta) + (CHARWD R 612) + (CHARHT R 689) + (CHARIC R 111) + (MAP + (SELECTFONT D 1) + (SETCHAR C D) + ) + ) +(CHARACTER O 2 (comment Theta) + (CHARWD R 741) + (CHARHT R 689) + (CHARDP R 7) + (CHARIC R 87) + (MAP + (SELECTFONT D 1) + (SETCHAR C Q) + ) + ) +(CHARACTER O 3 (comment Lambda) + (CHARWD R 686) + (CHARHT R 689) + (CHARIC R 109) + (MAP + (SELECTFONT D 1) + (SETCHAR C L) + ) + ) +(CHARACTER O 4 (comment Xi) + (CHARWD R 645) + (CHARHT R 689) + (CHARIC R 66) + (MAP + (SELECTFONT D 1) + (SETCHAR C X) + ) + ) +(CHARACTER O 5 (comment Pi) + (CHARWD R 768) + (CHARHT R 689) + (CHARIC R 89) + (MAP + (SELECTFONT D 1) + (SETCHAR C P) + ) + ) +(CHARACTER O 6 (comment Sigma) + (CHARWD R 592) + (CHARHT R 689) + (CHARIC R 109) + (MAP + (SELECTFONT D 1) + (SETCHAR C S) + ) + ) +(CHARACTER O 7 (comment Upsilon1) + (CHARWD R 620) + (CHARHT R 689) + (CHARIC R 104) + (MAP + (SELECTFONT D 1) + (SETCHAR O 241) + ) + ) +(CHARACTER O 10 (comment Phi) + (CHARWD R 763) + (CHARHT R 689) + (CHARIC R 89) + (MAP + (SELECTFONT D 1) + (SETCHAR C F) + ) + ) +(CHARACTER O 11 (comment Psi) + (CHARWD R 795) + (CHARHT R 689) + (CHARIC R 100) + (MAP + (SELECTFONT D 1) + (SETCHAR C Y) + ) + ) +(CHARACTER O 12 (comment Omega) + (CHARWD R 768) + (CHARHT R 689) + (CHARIC R 83) + (MAP + (SELECTFONT D 1) + (SETCHAR C W) + ) + ) +(CHARACTER O 13 (comment arrowup) + (CHARWD R 603) + (CHARHT R 907) + (CHARIC R 120) + (MAP + (SELECTFONT D 1) + (SETCHAR O 255) + ) + ) +(CHARACTER O 14 (comment arrowdown) + (CHARWD R 603) + (CHARHT R 907) + (CHARDP R 7) + (CHARIC R 116) + (MAP + (SELECTFONT D 1) + (SETCHAR O 257) + ) + ) +. +w ptmro.vpl +q diff --git a/Build/source/texk/dvipsk/contrib/bbfig/INSTALLATION b/Build/source/texk/dvipsk/contrib/bbfig/INSTALLATION new file mode 100644 index 00000000000..8694fc1578b --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/bbfig/INSTALLATION @@ -0,0 +1,16 @@ + +To install bbfig: + +Make the bbfig shell script executable and put it in a suitable +directory. Put the file bb.ps in that *same* directory. If this +is not possible or is inconvenient, put bb.ps whereever you please +and edit the shell script to define BBPSDIR. + +If you run across a PostScript file that manages to confuse bbfig, +please send it along to me and I'll see if I can figure out what is +going wrong. Thanks. + + +Bernie Cosell [cosell@bbn.com] +27June90 + diff --git a/Build/source/texk/dvipsk/contrib/bbfig/bb.ps b/Build/source/texk/dvipsk/contrib/bbfig/bb.ps new file mode 100644 index 00000000000..e1d5f88cefb --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/bbfig/bb.ps @@ -0,0 +1,579 @@ +%! +% bb.ps -- +% +% Prints a file, but keeps track of bounding box info, and prints the box at +% the end (around the figure.) +% +% $Header: bb.ps,v 1.14 91/03/21 13:04:02 cosell Exp $ +% RCS log info at end + +50 dict /$BoundingBox exch def + +$BoundingBox begin + +/xdef { + exch def +} def + +/xstore { + exch store +} def + +/addcoords { + exch + 4 -1 roll add + 3 1 roll add +} def + +% +% Stubs of old functions. +% + +/-stroke /stroke load def +/-fill /fill load def +/-eofill /eofill load def +/-image /image load def +/-show /show load def +/-awidthshow /awidthshow load def +/-showpage /showpage load def +/-restore /restore load def +/-imagemask /imagemask load def + +end % $BoundingBox + +% +% New Functions. --- These go into the user dict to intercept the calls +% + +/stroke { + $BoundingBox begin + gsave + initmatrix + (stroke called\n) traceprint %%DEBUG + { + strokepath % Make sure to take line width into account. + 0 setlinejoin + flattenpath + } stopped { % strokepath often hits a limitcheck. + (Can't set up a strokepath\n) traceprint % DEBUG + grestore % Restore the original path + gsave + } if + includepath % Accumulate it into our box. + grestore + + -stroke + end % $BoundingBox +} def + +/fill { + $BoundingBox begin + gsave + (fill called\n) traceprint %%DEBUG + includepath + grestore + + -fill + end % $BoundingBox +} def + +/eofill { + $BoundingBox begin + gsave + (eofill called\n) traceprint %%DEBUG + includepath + grestore + + -eofill + end % $BoundingBox +} def + +% +% Text is implemented by reducing everything to an `awidthshow'. +% + +/show { + $BoundingBox begin + (show called\n) traceprint %%DEBUG + 0 0 0 0 0 % Extra parameters for awidthshow + 6 -1 roll % Bring the string back up + awidthshow + end % $BoundingBox +} def + +/widthshow { + $BoundingBox begin + (widthshow called\n) traceprint %%DEBUG + 0 0 % Extra parameters for awidthshow + 3 -1 roll % Bring the string back up. + awidthshow + end % $BoundingBox +} def + +/ashow { + $BoundingBox begin + (ashow called\n) traceprint %%DEBUG + 0 0 0 + 6 3 roll + awidthshow + end % $BoundingBox +} def + + +% This does all of the work of the text-rendering operators +% What it does, is compute, basically brute force, what 'charpath' +% would have given us virtually for free, if 'show' were the only +% operator that we needed to do. + +/awidthshow { + $BoundingBox begin + gsave + 6 (awidthshow:) debug %%DEBUG + currentpoint + 2 copy /@starty xdef /@startx xdef + 2 index stringwidth % Get the natural length of the string + addcoords % Add to the start to get the end. + + 2 index length % How many characters? + + dup % Add the offsets to each character + 6 index mul + exch 5 index mul + addcoords + + 5 index 3 index + chcount % How many padding characters? + + dup % Add the offsets for each pad. + 9 index mul + exch 8 index mul + addcoords + + /@endy xdef /@endx xdef + + % We now have the left and right edges (in user coords) + % of the text. Now we need only correct for the vertical + % displacements needed for the font and we can get the + % top and bottom edges of the enclosing box + + fontheight % Get the height and depth of the current font. + + @startx @starty addcoords + /@starty xdef /@startx xdef + @endx @endy addcoords + /@endy xdef /@endx xdef + newpath + @startx @starty moveto + @endx @starty lineto + @endx @endy lineto + @startx @endy lineto + closepath + includepath + grestore + + -awidthshow + end % $BoundingBox +} def + +% +% `image': +% +% Assume here that the image lands in the unit square. +% + +/image { + $BoundingBox begin + (image called\n) traceprint %%DEBUG + gsave + newpath + 0 0 moveto + 1 0 rlineto + 1 1 rlineto + -1 0 rlineto + closepath + includepath + grestore + + -image + end % $BoundingBox +} def + +/imagemask +{ + $BoundingBox begin + (imagemask called\n) traceprint %%DEBUG + gsave + newpath + 0 0 moveto + 1 0 rlineto + 1 1 rlineto + -1 0 rlineto + closepath + includepath + grestore + + -imagemask + end % $BoundingBox +} def + +% Just define this one out of existence +/framedevice { pop pop pop pop } def + +% Handle restoring VM --- this is all OK, except that we have to +% hang onto the bb info we collected while in the about-to-be-discarded +% environment + +/restore +{ + $BoundingBox begin + (restore called\n) traceprint %%DEBUG + tracedump %% HACK, but the only way I see right now to get this stuff! + bbox-llx bbox-lly bbox-urx bbox-ury + 5 -1 roll + -restore + /bbox-ury xstore /bbox-urx xstore + /bbox-lly xstore /bbox-llx xstore + end % $BoundingBox +} def + + +% +% `showpage': +% +% Just draw the box around the figure and print the page, and then initialize +% the bounding box variables again. +% + +$BoundingBox begin +/temp-string 10 string def +end % $BoundingBox + +/showpage { + $BoundingBox begin + initgraphics + + (showpage\n) traceprint % DEBUG + dump-bbox % DEBUG + + /bbox-llx round_down + /bbox-lly round_down + /bbox-ury round_up + /bbox-urx round_up + + bbox-llx bbox-lly moveto % Make the box + bbox-llx bbox-ury lineto + bbox-urx bbox-ury lineto + bbox-urx bbox-lly lineto + closepath + + bwstroke % Draw the box. + +% Print the size of the bounding box both above and below the actual box + 0 setgray + /Courier findfont 10 scalefont setfont + bbox-llx 36 max bbox-lly 12 sub 36 max moveto + (%%BoundingBox: ) -show + bbox-llx temp-string cvs -show ( ) -show + bbox-lly temp-string cvs -show ( ) -show + bbox-urx temp-string cvs -show ( ) -show + bbox-ury temp-string cvs -show + + bbox-llx 36 max bbox-ury 12 add 740 min moveto + (%%BoundingBox: ) -show + bbox-llx temp-string cvs -show ( ) -show + bbox-lly temp-string cvs -show ( ) -show + bbox-urx temp-string cvs -show ( ) -show + bbox-ury temp-string cvs -show + + init + -showpage + tracedump %% DEBUG + end % $BoundingBox +} def + +% +% BoundingBox functions: +% +% We accumulate the information about the bounding box into four variables. +% The data is stored in default coordinates. +% + +$BoundingBox begin + +/init { + /bbox-llx 99999 store + /bbox-lly 99999 store + /bbox-urx -99999 store + /bbox-ury -99999 store +} def + +/bbox-llx 0 def +/bbox-lly 0 def +/bbox-urx 0 def +/bbox-ury 0 def + +% +% - `includepath' - +% +% Incorporates the bounding box of the path into the bounding box info. +% ... Gets the bounding box in default coords + +/includepath { + (Adding a path: ) traceprint %%DEBUG + gsave + initmatrix + { + 0 setlinejoin + flattenpath + } stopped { + (Couldn't flatten the path\n) traceprint % DEBUG + grestore + gsave + initmatrix + } if + { pathbbox } stopped not + { + 4 2 roll % Just so we get lower-left first + 2 copy dump-coord %%DEBUG + dup bbox-lly lt { + /bbox-lly xstore + } { + pop + } ifelse + dup bbox-llx lt { + /bbox-llx xstore + } { + pop + } ifelse + + (; ) traceprint 2 copy dump-coord (\n) traceprint %%DEBUG + dup bbox-ury gt { + /bbox-ury xstore + } { + pop + } ifelse + dup bbox-urx gt { + /bbox-urx xstore + } { + pop + } ifelse + dump-bbox %%DEBUG + } if + grestore +} def + +% +% A nice black-and white line drawing function. +% + +/bwstroke { + 0 setlinewidth % Thinnest possible lines + 1 setgray % White first + [5] 0 setdash % Only half the line + gsave -stroke grestore + 0 setgray % Then black + [5] 5 setdash % On the other half + -stroke +} def + +% +% Stuff for text. +% + +% +% char-code string `chcount' occurs +% +% Counts the number of times a character appears in a string. +% + +/chcount { + 0 exch + { + 2 index eq { + 1 add + } if + } forall + exch pop +} def + +% +% - `fontheight' heightx heighty depthx depthy +% +% Returns the offsets to the lowest point and highest point in the current +% font. +% + +/fontheight { + currentfont begin + /FontBBox load aload pop + exch pop 0 exch + FontMatrix transform + 4 2 roll + exch pop 0 exch + FontMatrix transform + end +} def + +% key round_{down|up} - These will round the value of the given key +% up or down, as appropriate, to the nearest integer +/round_up { dup load ceiling cvi store } def +/round_down { dup load floor cvi store } def + +% key binddefinition - this will do a 'bind' on the procedure given by 'key' +/binddefinition +{ + dup where + { + exch + 2 copy + get bind put + } + { undefined } ifelse +} def + +% Given two numbers on the stack, return with just the smallest +/min { 2 copy ge { exch } if pop } def + +% Dito for the largest of the pair +/max { 2 copy lt { exch } if pop } def + + +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +% +% Debugging utilities +% + +/$tracedict where +{ % Trace package loaded... do the tracing + pop +% This is a debugging function to print out what is going on. +% Format ... n debug ... +% (that is, the 'n' args will be *left* on the stack!) +/debug +{ + traceprint (\n) traceprint + dup 1 add % Now total number of args (including arg count) + copy + { + ( ) traceprint + trace= + (\n) traceprint + } repeat + pop % Remove the extra copy of the arg count +} def + +% Print out a coordinate on the stack: x y --- +/dump-coord +{ + (\() traceprint exch trace= (, ) traceprint trace= (\)) traceprint +} def + +% Print out bb's current notion of its bounding box + +/dump-bbox +{ + (Bounding Box: ) traceprint + bbox-llx bbox-lly dump-coord + (; ) traceprint + bbox-urx bbox-ury dump-coord + (\n) traceprint +} def + +tracebegin %% DEBUG + +} +{ % No trace package loaded, so don't trace. Stub out the various calls + +/traceprint { pop } def +/dump-coord { pop pop } def +/dump-bbox { } def +/debug { pop pop } def +/tracedump { } def + +} ifelse + +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % + +% Bind everything + +/xdef binddefinition +/xstore binddefinition +/addcoords binddefinition +/stroke binddefinition +/fill binddefinition +/eofill binddefinition +/show binddefinition +/widthshow binddefinition +/ashow binddefinition +/awidthshow binddefinition +/image binddefinition +/showpage binddefinition +/init binddefinition +/includepath binddefinition +/bwstroke binddefinition +/chcount binddefinition +/fontheight binddefinition + +/debug binddefinition +/dump-coord binddefinition +/dump-bbox binddefinition + +% Start it up. + +init + +end % $BoundingBox + +% end of bb.ps + +% $Log: bb.ps,v $ +% Revision 1.14 91/03/21 13:04:02 cosell +% Relocated the position of the constrained BBox info +% +% Revision 1.13 91/03/21 12:21:04 cosell +% Forced the %BoundingBox info to stay within the page boundaries +% +% Revision 1.12 91/03/21 12:15:17 cosell +% Added a tracing hook to bridge restores. +% +% Revision 1.11 90/07/02 08:48:40 cosell +% bbfig now correctly copes with empty paths +% +% Revision 1.10 90/06/27 10:47:22 cosell +% Added a bunch of improvements from Joe Pallas at stanford. +% +% Revision 1.9 90/06/26 10:50:20 cosell +% Stack got botched in the 'debug' stub +% +% Revision 1.8 90/06/25 09:34:51 cosell +% Minor bug in 'restore' +% +% Revision 1.7 90/06/25 09:29:58 cosell +% Added code to catch and deal with 'restore'. Thanks to Frank +% Jensen for finding this one +% +% Revision 1.6 90/06/25 09:23:26 cosell +% Small bugfix in the text-handling stuff +% +% Revision 1.5 90/06/10 09:04:02 cosell +% Changed the printed string to explictly say "%%BoundingBox" +% +% Revision 1.4 90/06/10 08:55:39 cosell +% Added 'bind' machinery to insulate this package from later redefinitions +% of things we need from the systemdict. +% +% Revision 1.3 90/06/10 08:28:53 cosell +% Added debugging hooks. They don't affect anything (and don't do +% anything) in the normal use of bbfig. But if the 'trace' package +% is loaded ahead of this, it'll print out some helpful info. Probably +% I'll end up removing all of this if/when I really get the package +% up to snuff. +% +% Revision 1.2 90/05/25 12:08:24 cosell +% Major improvements and tuneups: fixed it to really use its private +% discionary, and the most importnat: it now computes the bounding box +% in *default* coords +% +% Revision 1.1 90/05/23 08:18:54 cosell +% Initial revision +% This is Ned Bachelder's original version diff --git a/Build/source/texk/dvipsk/contrib/bbfig/bbfig b/Build/source/texk/dvipsk/contrib/bbfig/bbfig new file mode 100644 index 00000000000..b704e0f0bea --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/bbfig/bbfig @@ -0,0 +1,22 @@ +#! /bin/sh + +# Script to stick bounding box finder in front of a postscript file +# Adapted from Ned's original + +# $Header: bbfig,v 1.3 90/06/27 21:54:49 cosell Exp $ + +# BBPSDIR= # Define this if bb.ps doesn't live in same + # directory as bbfig + +if [ ! -f ${BBPSDIR=`dirname $0`}/bb.ps ] +then + echo >&2 "Can't locate bb.ps" + exit 1 +fi + +case $# in + 0) cat $BBPSDIR/bb.ps - + ;; + *) cat $BBPSDIR/bb.ps "$@" + ;; +esac diff --git a/Build/source/texk/dvipsk/contrib/bbfig/bbfig.1 b/Build/source/texk/dvipsk/contrib/bbfig/bbfig.1 new file mode 100644 index 00000000000..6c61d1e491c --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/bbfig/bbfig.1 @@ -0,0 +1,40 @@ +.TH BBFIG LOCAL +.SH NAME +bbfig \- calculate bounding boxes in PostScript +.SH SYNTAX +.B bbfig +[ file \&.\|.\|. ] +.SH USAGE +.I Bbfig +should be piped into +.I psprint +or the equivalant. +.SH DESCRIPTION +The concatenation of the list of files, or standard input +if no file names are supplied, is +assumed to be a PostScript program for which the bounding box is desired. +.I Bbfig +prepends code that +calculates the bounding box, +and places the result on standard output. +The actual +calculation is done in the PostScript printer; the output is +in the form of a dashed line demarcating the bounding box and +and the corresponding +.B %%BoundingBox +header line printed just below the box. +The +.B %%BoundingBox +line +should be added to the header of the PostScript file. +.SH BUGS +.I Bbfig +is known to be confused by images and clipping paths. If the box +around the figure clearly is not the minimal one, a ruler is the +best bet for calculating the correct box. Remember that the +bounding box values are in PostScript points (72 to the inch) +relative to an origin at the lower left corner of the page, and +that (a,b) is the lower left hand corner of the bounding box, and +(c,d) is the upper right corner. +.SH Author +Ned Batchelder, modified by Bernie Cosell [cosell@bbn.com] diff --git a/Build/source/texk/dvipsk/contrib/bbfig/vmsbbfig.c b/Build/source/texk/dvipsk/contrib/bbfig/vmsbbfig.c new file mode 100644 index 00000000000..4415063eb57 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/bbfig/vmsbbfig.c @@ -0,0 +1,113 @@ +/* bbfig.c -- + * Martin Gelbaum, Lawrence Berkeley Laboratory + * martyg@lbl.gov + * September 21, 1992 + * Simple VAX C equivalent of Bourne shell script "bbfig" + */ + +#include +#include /* System status codes */ +#include + +#define BBFIG_HEADER "tex_disk:[tex.dvips.header_files]bb.ps" + +main(argc,argv) +int argc; +char **argv; +{ + FILE *infp, *libfp, *outfp; + char outfile[1024], buf[BUFSIZ], line[512], *cptr; + + if (argc < 2) { error("Usage: bbfig psfile [> outfile]\n"); } + if ( !strcmp(argv[1], "-help") || !strcmp(argv[1], "-HELP") ) + { + fprintf(stderr, "bbfig: usage: bbfig psfile [> outfile]\n"); + fflush(stderr); fprintf(stderr, +"If no output file specified, output file is bbfig_out.ps\n"); + fflush(stderr); fprintf(stderr, +"Output file shows figure surrounded by box made of dashes\n"); + fflush(stderr); fprintf(stderr, +"Output file also shows bounding box in default coordinates for use as\n"); + fflush(stderr); fprintf(stderr, +"Bounding Box comment as second line of PostScript file.\n"); + exit(SS$_NORMAL); + } + if ( (libfp = fopen(BBFIG_HEADER,"r")) == NULL) + { + error("ABNORMAL EXIT:\nCan't open PostScript macro file %s\n", + BBFIG_HEADER); + } + if ( (infp = fopen(*++argv,"r")) == NULL) + { + error("ABNORMAL EXIT:\nCan't open user PostScript file %s\n", + *argv); + } + if (argc >=3) + { + argv++; + if ( (*argv)[0] == '>') + { + if ((*argv)[1]) + /* We had bbfig file >outfile */ + { + cptr = &(*argv)[1]; + (void) sprintf(outfile,"%s", cptr); + } + else if (*(++argv) != NULL) + /* We had bbfig psfile > outfile */ + { + cptr = *argv; + (void) sprintf(outfile,"%s", cptr); + } + else + { + error("%s: no filename with '>' option\n", + "ABNORMAL EXIT"); + } + } + else + { + error("ABNORMAL EXIT: unknown option %c\n", + (*argv)[0]); + } + } + else + { + /* Default filename is "bbfig_out.ps" */ + sprintf(outfile, "bbfig_out.ps"); + } + /* Make a standard variable length record file + * with carriage return carriage control. + */ + if ( (outfp = fopen(outfile,"w", "rat=cr", "rfm=var")) == NULL) + { + error("ABNORMAL EXIT: can't create text file %s\n", + outfile); + } + while (fgets(line, 511, libfp)) + { + fputs(line, outfp); fflush(outfp); + } + (void) fclose (libfp); + while (fgets(line, 511, infp)) + { + fputs(line, outfp); fflush(outfp); + } + (void) fclose (infp); (void) fclose (outfp); + fprintf(stderr, "Output file showing bounding box is %s;\n", outfile); + fflush(stderr); + fprintf(stderr, +"You may print it by lpr to a PostScript printer or\n"); fflush(stderr); + fprintf(stderr, +"preview it by gs (ghostscript) on a X11 display ...\n"); fflush(stderr); + exit(SS$_NORMAL); +} + +static error(s1,s2) /* print error message and exit with error status. */ +char *s1, *s2; +{ + /* Notice that the first argument (s1) contains the formatting + * information for fprintf. + */ + fprintf(stderr, "bbfig: "); fprintf(stderr, s1, s2); exit(0x10000000); +} diff --git a/Build/source/texk/dvipsk/contrib/colorsep.lpro b/Build/source/texk/dvipsk/contrib/colorsep.lpro new file mode 100644 index 00000000000..89e4bedf8b6 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/colorsep.lpro @@ -0,0 +1,184 @@ +%! +% Colour separation. +% Ask dvips to do 4 pages. In bop-hook, cycle +% round CMYK color spaces. +% +% Sebastian Rahtz 30.9.93 +% checked 7.1.94 +% from Green Book, and Kunkel Graphic Design with PostScript +% (Green Book Listing 9-5, on page 153.) +% +/seppages 0 def +userdict begin +/Min {% 3 items on stack +2 copy lt { pop }{ exch pop } ifelse +2 copy lt { pop }{ exch pop } ifelse +} def +/SetGray { + 1 exch sub systemdict begin adjustdot setgray end +} def +/sethsbcolor {systemdict begin + sethsbcolor currentrgbcolor end + userdict begin setrgbcolor end}def + +/ToCMYK +% Red book p 305 + { +% subtract each colour from 1 + 3 { 1 exch sub 3 1 roll } repeat +% define percent of black undercolor +% find minimum (k) + 3 copy Min +% remove undercolor + blackUCR sub + dup 0 lt {pop 0} if + /percent_UCR exch def +% +% subtract that from each colour +% + 3 { percent_UCR sub 3 1 roll } repeat +% work out black itself + percent_UCR 1.25 mul % 1 exch sub +% stack should now have C M Y K +} def +% +% crop marks +% +/cX 18 def +/CM{gsave TR 0 cX neg moveto 0 cX lineto stroke +cX neg 0 moveto cX 0 lineto stroke grestore}def +% +/bop-hook{cX dup TR +% +% which page are we producing +% + seppages 1 add + /seppages exch def + seppages 5 eq { /seppages 1 def } if + seppages 1 eq { + /ColourName (CYAN) def + CYAN setupcolor + /WhichColour 3 def } if + seppages 2 eq { + /ColourName (MAGENTA) def + MAGENTA setupcolor + /WhichColour 2 def } if + seppages 3 eq { + /ColourName (YELLOW) def + YELLOW setupcolor + /WhichColour 1 def } if + seppages 4 eq { + /ColourName (BLACK) def + BLACK setupcolor + /WhichColour 0 def } if +% +% crop marks +% +gsave .3 setlinewidth +3 -7 moveto +/Helvetica findfont 6 scalefont setfont +ColourName show +0 0 CM +vsize cX 2 mul sub dup hsize cX 2 mul sub dup isls{4 2 roll}if 0 CM +exch CM 0 +exch CM +grestore 0 cX -2 mul TR isls +{cX -2 mul 0 TR}if + } def end +% +/separations 48 dict def +separations begin + /cmykprocs [ %def + % cyan + { pop pop pop SetGray } + % magenta + { pop pop exch pop SetGray } + % yellow + { pop 3 1 roll pop pop SetGray } + % black + { 4 1 roll pop pop pop SetGray } + ] def + /rgbprocs [ %def + % cyan + { ToCMYK pop pop pop SetGray } + % magenta + { ToCMYK pop pop exch pop SetGray } + % yellow + { ToCMYK pop 3 1 roll pop pop SetGray } + % black + { ToCMYK 4 1 roll pop pop pop SetGray } + ] def + /testprocs [ %def + % cyan + { ToCMYK pop pop pop } + % magenta + { ToCMYK pop pop exch pop } + % yellow + { ToCMYK pop 3 1 roll pop pop } + % black + { ToCMYK 4 1 roll pop pop pop } + ] def + /screenangles [ %def + 105 % cyan + 75 % magenta + 0 % yellow + 45 % black + ] def +end % separations + +% setupcolortakes 0, 1, 2, or 3 as its argument, +% for cyan, magenta, yellow, and black. +/CYAN 0 def /MAGENTA 1 def +/YELLOW 2 def /BLACK 3 def +/setupcolor{ %def + userdict begin + dup separations /cmykprocs get exch get + /setcmykcolor exch def + dup separations /rgbprocs get exch get + /setrgbcolor exch def + dup separations /testprocs get exch get + /testrgbcolor exch def + separations /screenangles get exch get + currentscreen + exch pop 3 -1 roll exch + setscreen + /setscreen { pop pop pop } def +% +% redefine setgray so that it only shows on the black separation +% + /setgray { + WhichColour 0 eq + {systemdict begin adjustdot setgray end} + {pop systemdict begin 1 setgray end} + ifelse}def + end +} bind def + +% +% from Kunkel +% +/adjustdot { dup 0 eq { } { dup 1 exch sub .1 mul add} ifelse } def +% +% redefine existing operators +% +% Percent of undercolor removal +/magentaUCR .3 def +/yellowUCR .07 def +/blackUCR .4 def +% +% Correct yellow and magenta +/correctMY {rgb2cym + 1 index yellowUCR mul sub 3 1 roll + 1 index magentaUCR mul sub 3 1 roll + 3 1 roll rgb2cym}def +% +%(bluely green ) = +%CYAN setupcolor +%.1 .4 .5 testrgbcolor = +%MAGENTA setupcolor +%.1 .4 .5 testrgbcolor = +%YELLOW setupcolor +%.1 .4 .5 testrgbcolor = +%BLACK setupcolor +%.1 .4 .5 testrgbcolor = +%quit diff --git a/Build/source/texk/dvipsk/contrib/config.proto b/Build/source/texk/dvipsk/contrib/config.proto new file mode 100644 index 00000000000..3033dce6afe --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/config.proto @@ -0,0 +1,46 @@ +% Prototype Dvips configuration file. + +% How to print, maybe with lp instead lpr, etc. +o |lpr + +% Default resolution of this device, in dots per inch. +D 600 + +% Metafont mode. (This is completely different from the -M command-line +% option, which controls whether MakeTeXPK is invoked.) Get +% @url{ftp://ftp.tug.org/tex/modes.mf} for a list of mode names. This mode +% and the D number above must agree, or MakeTeXPK will get confused. +M ljfour + +% Memory available. Download the three-line PostScript file: +% %! Hey, we're PostScript +% /Times-Roman findfont 30 scalefont setfont 144 432 moveto +% vmstatus exch sub 40 string cvs show pop showpage +% to determine this number. (It will be the only thing printed.) +m 3500000 + +% Correct printer offset. You can use testpage.tex from the LaTeX +% distribution to find these numbers. Print testpage.dvi more than once. +O 0pt,0pt + +% Partially download Type 1 fonts by default. Only reason not to do +% this is if you encounter bugs. (Please report them to +% @email{tex-k@@mail.tug.org} if you do.) +j + +% Also look for fonts at these resolutions. +R 300 600 + +% With a high resolution and a RISC cpu, better to compress the bitmaps. +Z + +% Uncomment these if you have and want to use PostScript versions of the +% fonts. +%p +cmfonts.map +%p +lafonts.map +%p +cyrfonts.map +%p +eufonts.map + +% You will also want definitions for alternative paper sizes -- A4, +% legal, and such. Examples in @file{contrib/papersize.level2} and +% @file{contrib/papersize.simple}. diff --git a/Build/source/texk/dvipsk/contrib/configs/2a4.ps b/Build/source/texk/dvipsk/contrib/configs/2a4.ps new file mode 100644 index 00000000000..cf2d4f479eb --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/2a4.ps @@ -0,0 +1,49 @@ +% @(#)2a4.ps 1.0 95/10/30 pete +% +% The following code defines PostScript procedures to work dvips. +% they must be downloaded or sent as a header file together with +% the PostScript version of your (La)TeX file. +% +% Originated probably by Piet van Oostrum, Department of Computer Science, +% Utrecht University, Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht +% Phone +31 30 531806 +% Fax +31 30 513791 +% uunet!mcsun!ruuinf!piet +% +% it is now re-written to work with dvips(k)-5.58f by Peter Dyballa +% Johann Wolfgang Goethe-Universit\"at Robert-Mayer-Str. 11-15 +% Fachbereich 20 - Theoretische Informatik D 60325 Frankfurt am Main +% (Department for Computer Science) (Federal Republic of Germany) +% +% +% To use 2a4.ps include this on invocation of dvips: +% -h 2a4.ps -t landscape +% +% do not include this in your (La)TeX source: +% \special{landscape}\special{header=2a4.ps} +% +/isoddpage true def +/orig-showpage /showpage load def +/factor 0.707106781187 def +/showpage { + isoddpage not { orig-showpage } if + /isoddpage isoddpage not store + } def + +/bop-hook { + /vsize 1 factor add neg def + isoddpage {factor factor scale + 842 412 translate } + { 0 -595 translate } ifelse + } def + +/end-hook { + isoddpage not { orig-showpage } if + } def +% +% Theses measures are for those paper formats: +% +% DIN A4 letter legal +% 148mm = 412 PS pt 5.5in = 396 PS pt 7in = 504 PS pt +% 210mm = 595 PS pt 8.5in = 612 PS pt 8.5in = 612 PS pt +% 297mm = 842 PS pt 11in = 792 PS pt 14in = 1008 PS pt diff --git a/Build/source/texk/dvipsk/contrib/configs/config.fax b/Build/source/texk/dvipsk/contrib/configs/config.fax new file mode 100644 index 00000000000..963ebffaf33 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/config.fax @@ -0,0 +1,5 @@ +* +* For FAX output, we set 200 dpi, FAX mode. +* +D 200 +M FAX diff --git a/Build/source/texk/dvipsk/contrib/configs/config.lino b/Build/source/texk/dvipsk/contrib/configs/config.lino new file mode 100644 index 00000000000..4e3285f5089 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/config.lino @@ -0,0 +1,93 @@ +* +* This configuration file is a sample one for a typesetter. See the +* end of the file especially, where we use setpageparams. With a +* configuration file like this, you can use +* +* -t film0 -k -T 11in,17in +* +* for instance to print an 11x17 inch document in orientation 0 with +* crop marks. +* +* Assume we have a nice modern lino with lots of memory. +* +m 1000000 +* +* And send output by default to a PostScript file. +* +o +* +* Default resolution. We must get this right! +* +D 1270 +* +* Compress the fonts. +* +Z +* +* Paper size information. First definition is the default. +* +* If your default is a4 uncomment the following definition +* and comment out the letterSize definition. +* +*@ a4size 210mm 297mm +*@+ %%PaperSize: a4 + +@ letterSize 8.5in 11in +@+ %%PaperSize: Letter + +@ letter 8.5in 11in +@+ %%BeginPaperSize: Letter +@+ letter +@+ %%EndPaperSize + +@ legal 8.5in 14in +@+ ! %%DocumentPaperSizes: Legal +@+ %%BeginPaperSize: Legal +@+ legal +@+ %%EndPaperSize + +@ ledger 17in 11in +@+ ! %%DocumentPaperSizes: Ledger +@+ %%BeginPaperSize: Ledger +@+ ledger +@+ %%EndPaperSize + +@ tabloid 11in 17in +@+ ! %%DocumentPaperSizes: Tabloid +@+ %%BeginPaperSize: Tabloid +@+ 11x17 +@+ %%EndPaperSize + +@ a4 210mm 297mm +@+ ! %%DocumentPaperSizes: a4 +@+ %%BeginPaperSize: a4 +@+ a4 +@+ %%EndPaperSize + +@ a3 297mm 420mm +@+ ! %%DocumentPaperSizes: a3 +@+ %%BeginPaperSize: a3 +@+ a3 +@+ %%EndPaperSize +* +* These last two are only for typesetters that can set the page size; +* uncomment and put them in a `config.lino', for instance. +* +* Use this for pages where you want the text to run in the same direction +* as the film feeds (slow scan direction; down the length of the film.) +* Best for everything *but* pages higher than the film is wide or pages +* wider than they are tall; needed for pages wider than the film is wide. +* +@ film0 0in 0in +@+ statusdict /setpageparams known { vsize hsize 0 0 statusdict begin { +@+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known +@+ { vsize hsize 0 statusdict begin { setpage } stopped pop end } if } if +* +* Use this for pages where you want the text to run across the width of +* the film (fast scan direction.) Needed for pages taller than the film +* is wide; preferred for pages wider than they are tall. +* +@ film1 0in 0in +@+ statusdict /setpageparams known { hsize vsize 0 1 statusdict begin { +@+ setpageparams } stopped end } { true } ifelse { statusdict /setpage known +@+ { hsize vsize 1 statusdict begin { setpage } stopped pop end } if } if diff --git a/Build/source/texk/dvipsk/contrib/configs/config.lj2p b/Build/source/texk/dvipsk/contrib/configs/config.lj2p new file mode 100644 index 00000000000..aaf2a25f3f2 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/config.lj2p @@ -0,0 +1,95 @@ +* original config.ps -- default definitions for dvips output. +* +* (If you change or delete `original' on the previous line, dvips won't +* install its config.ps over this file.) +* +* Configuration file for Karl & Kathy's LaserJet IIP. + +* We have 2 2MB expansion cards. +* +m 2750000 + + +* Send output by default to our printer. +* +o |lpr + + +* Default resolution. +* +D 300 + + +* Reverse the pages, since we usually print on the face-up tray. +* +r + + +* Mode is for Canon engine. +* +M CanonCX + + +* Also look for this list of resolutions. +* +R 300 + + +* The printer offsets the output by this much. +* +O 0pt,-6pt + + +* Paper size information. First definition is the default. +* +* If your default is a4 uncomment the following definition +* and comment out the letterSize definition. +* +* There is some redundancy in the following comments; that is to +* get things to work both on the NeXT and on other printers. +* +*@ a4size 210mm 297mm +*@+ %%PaperSize: a4 + +@ letterSize 8.5in 11in + +@ letter 8.5in 11in +@+ %%PaperSize: Letter +@+ %%BeginPaperSize: Letter +@+ letter +@+ %%EndPaperSize + +@ legal 8.5in 14in +@+ ! %%DocumentPaperSizes: Legal +@+ %%PaperSize: Legal +@+ %%BeginPaperSize: Legal +@+ legal +@+ %%EndPaperSize + +@ ledger 17in 11in +@+ ! %%DocumentPaperSizes: Ledger +@+ %%PaperSize: Ledger +@+ %%BeginPaperSize: Ledger +@+ ledger +@+ %%EndPaperSize + +@ tabloid 11in 17in +@+ ! %%DocumentPaperSizes: Tabloid +@+ %%PaperSize: Tabloid +@+ %%BeginPaperSize: Tabloid +@+ 11x17 +@+ %%EndPaperSize + +@ a4 210mm 297mm +@+ ! %%DocumentPaperSizes: a4 +@+ %%PaperSize: a4 +@+ %%BeginPaperSize: a4 +@+ a4 +@+ %%EndPaperSize + +@ a3 297mm 420mm +@+ ! %%DocumentPaperSizes: a3 +@+ %%PaperSize: a3 +@+ %%BeginPaperSize: a3 +@+ a3 +@+ %%EndPaperSize diff --git a/Build/source/texk/dvipsk/contrib/configs/config.post3x3 b/Build/source/texk/dvipsk/contrib/configs/config.post3x3 new file mode 100644 index 00000000000..f43b3071b4c --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/config.post3x3 @@ -0,0 +1,28 @@ + % + % This file is an example of a header file for dvips. It prints a page + % (or a whole document) as a 3x3 poster. This file is built so it can + % be used both as the header file for PostScript and as the configuration + % file for dvips. First comes the PostScript part. (Note that dvips + % ignores any lines beginning with a space.) Change the number here. + % Use it with -P post3x3. We try to overlap pages a bit. + % + /xpost 3 def /ypost 3 def + userdict begin /bop-hook { + 36 36 translate + dup xpost ypost mul mod + dup xpost mod hsize 36 xpost 1 sub mul sub mul neg exch + xpost idiv vsize 36 ypost 1 sub mul sub mul neg translate % translate! + xpost ypost scale % scale! + -36 -36 translate + } def end + { % we start a procedure so PostScript `ignores' the dvips options. + % + % Now the dvips options. Change the number here too, to be + % xpost * ypost. + % +b 9 +h config.post3x3 + % + % Now PostScript cleanup. + % + } pop diff --git a/Build/source/texk/dvipsk/contrib/configs/config.rokicki b/Build/source/texk/dvipsk/contrib/configs/config.rokicki new file mode 100644 index 00000000000..62828369a74 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/config.rokicki @@ -0,0 +1,62 @@ +* +* See config.lino for more info. +* With a virtual machine, we can claim 1M of memory. +* +m 1000000 +* +* And send output by default to the printer. +* +o !lpr +* +* Default resolution. +* +D 400 +* +* Last resort sizes. +* +R 100 120 144 300 360 400 432 480 +* +* Paper size information. First definition is the default. +* +* If your default is a4 uncomment the following definition +* and comment out the letterSize definition. +* +*@ A4size 210mm 297mm +*@+ %%PaperSize: A4 + +@ letterSize 8.5in 11in + +@ letter 8.5in 11in +@+ %%BeginPaperSize: Letter +@+ letter +@+ %%EndPaperSize + +@ legal 8.5in 14in +@+ ! %%DocumentPaperSizes: Legal +@+ %%BeginPaperSize: Legal +@+ legal +@+ %%EndPaperSize + +@ ledger 17in 11in +@+ ! %%DocumentPaperSizes: Ledger +@+ %%BeginPaperSize: Ledger +@+ ledger +@+ %%EndPaperSize + +@ tabloid 11in 17in +@+ ! %%DocumentPaperSizes: Tabloid +@+ %%BeginPaperSize: Tabloid +@+ 11x17 +@+ %%EndPaperSize + +@ A4 210mm 297mm +@+ ! %%DocumentPaperSizes: A4 +@+ %%BeginPaperSize: A4 +@+ a4 +@+ %%EndPaperSize + +@ A3 297mm 420mm +@+ ! %%DocumentPaperSizes: A3 +@+ %%BeginPaperSize: A3 +@+ a3 +@+ %%EndPaperSize diff --git a/Build/source/texk/dvipsk/contrib/configs/loop.ps b/Build/source/texk/dvipsk/contrib/configs/loop.ps new file mode 100644 index 00000000000..a38c4a19863 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/loop.ps @@ -0,0 +1,2 @@ +%(%stdin) (r) file 1 string readstring +{ } loop diff --git a/Build/source/texk/dvipsk/contrib/configs/mkdvipspapers b/Build/source/texk/dvipsk/contrib/configs/mkdvipspapers new file mode 100644 index 00000000000..b1adffcaa7a --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/mkdvipspapers @@ -0,0 +1,429 @@ +#!/usr/local/bin/perl + +# +# mkdvipspapers: a simple Perl script that generates a bunch of paper sizes +# definitions for dvips. +# +# Copyright (C) 1995, Yves Arrouye [06/15/95] +# +# THIS CODE IS PROVIDED AS IS, WITHOUT ANY WARRANTIES, EITHER EXPRESSED OR +# IMPLIED, OF ITS FITNESS TO ANY PURPOSE. IT'S AUTHOR CANNOT BE HELD LIABLE +# FOR ANY DAMAGES OCCURING DUE TO THE USE OF THIS CODE. USE AT YOUR OWN RISKS! + +# Known bugs: this script is written in Perl 5. (If you ever rewrite it in +# Perl 4, I'm interested to get your version; I can provide a Perl-4 options +# parser that is Getopt modified for it). + +# Last change: added the -p (--paper) option for specifying default size +# (the first that will be generated). Arranged for the letter and a4 defs +# be the first ones if nothing is specified (i.e. in the dvips default). +# Note: the default paper size need not be in the chose ones, it is taken from +# all the known papers sizes. + +# Read what follows for simple documentation and explanations. + +# +# Options accepted by the script: +# +# --help print a small help message +# --version print version +# +# -s, --standard generate standard definitions (Adobe ones) +# -n, --non-standard generate dvips non-standard definitions +# -d, --dvips generate dvips (i.e. standard + some) definitions +# -g, --gs generate non-standard gs definitions +# -e, --extra generate non-standard extra definitions +# -l, --local generate local definitions +# -a, --all generate all definitions +# +# -p, --paper default paper size +# +# default behaviour is the same as --dvips. +# + +use Getopt::Long; + +# +# The paper sizes definitions are stored in arrays with the following entries +# for each paper size: +# +# - the name of the paper for dvips, e.g. letter; +# - the name of the paper for the DSC PaperSize comment, e.g. Letter; +# - the name of an accessible PostScript operator that may select the +# correct paper size, e.g. letter; +# - the name of a PostScript operator in statusdict that may select the +# correct paper tray. e.g. lettertray (this is preferred); +# - the physical width and height of the paper, either in points (no units +# or bp, as in 4000bp), in inches (e.g 8.5in), centimeters (e.g. 21cm) +# or in millimeters (e.g. 297mm); +# - a flag indicating the orientation of the sheet, 0 meaning portrait and +# 1 meaning landscape (this actually used only for gs' setpage operator). +# +# The PostScript code generated in the Setup section does the following. +# First, we look in statusdict in order to look for a tray selection operator. +# If there is none, but the specified PostScript operator is accessible with +# the current dictionaries stacking order, we use it. If setpagedevice is +# implemented and the other methods did fail, we use it. Otherwise, if the +# setpage operator is present in statusdict, use this one. The setpage op. is +# assumed to be +# +# setpage -- +# +# where is 0 for portrait and 1 for landscape (in which case +# and are swapped!). +# + +# +# This code has been tested with an Apple LaserWriter II, an Hewlett Packard +# 4L laser printer, Ghostscript 3.33 and Ghostview 1.5 with success. +# + +# +# Enter your local definitions here in the same format as the examples +# below. +# +# Papers defined here: (none). +# + +@localpapersdefs = ( +); + +# +# Standard (Adobe) names. Missing names are a4small and lettersmall, because +# I don't have their definition handy. +# +# Papers defined here: 11x17, a3, a4, b5, ledger, legal, letter, note. +# + +@stdpapersdefs = ( + [ + 'letter', + 'Letter', 'letter', 'lettertray', + '8.5in', '11in', 0 + ], + [ + 'a4', + 'A4', 'a4', 'a4tray', + '210mm', '297mm', 0 + ], + [ + '11x17', + '11x17', '11x17', '11x17tray', + '11in', '17in', 0 + ], + [ + 'a3', + 'A3', 'a3', 'a3tray', + '297mm', '420mm', 0 + ], + [ + 'b5', + 'B5', 'ab5', 'b5tray', + '177mm', '250mm', 0 + ], + [ + 'ledger', + 'Ledger', 'ledger', 'ledgertray', + '11in', '17in', 1 + ], + [ + 'legal', + 'Legal', 'legal', 'legaltray', + '8.5in', '14in', 0 + ], + [ + 'note', + 'Note', 'note', 'notetray', + '7.5in', '10in', 0 + ] +); + +# +# Names that are present in the standard dvips distribution. +# +# Papers defined here: tabloid (aka 11x17). +# + +@dvipspapersdefs = ( + [ + 'tabloid', + 'Tabloid', '11x17', '11x17tray', + '11in', '17in', 0 + ], +); + +# +# Names that are present in the standard gs distribution. (Some names are +# currently missing...) +# +# Papers defined here: a0, a1, a2, a5, a6, a7, a8, a9, a10, +# b0, b1, b2, b3, b4. +# + +@gspapersdefs = ( + [ + 'a0', + 'A0', 'a0', 'a0tray', + '840mm', '1188mm', 0 + ], + [ + 'a1', + 'A1', 'a1', 'a1tray', + '594mm', '840mm', 0 + ], + [ + 'a2', + 'A2', 'a2', 'a2tray', + '420mm', '594mm', 0 + ], + [ + 'a5', + 'A5', 'a5', 'a5tray', + '148mm', '210mm', 0 + ], + [ + 'a6', + 'A6', 'a6', 'a6tray', + '105mm', '148mm', 0 + ], + [ + 'a7', + 'A7', 'a7', 'a7tray', + '74mm', '105mm', 0 + ], + [ + 'a8', + 'A8', 'a8', 'a8tray', + '52.5mm', '74mm', 0 + ], + [ + 'a9', + 'A9', 'a9', 'a9tray', + '37mm', '52.5mm', 0 + ], + [ + 'a10', + 'A10', 'a10', 'a10tray', + '26.25mm', '37mm', 0 + ], + [ + 'b0', + 'B0', 'b0', 'b0tray', + '2836bp', '4008bp', 0 + ], + [ + 'b1', + 'B1', 'b1', 'b1tray', + '2004bp', '2836bp', 0 + ], + [ + 'b2', + 'B2', 'b2', 'b2tray', + '1418bp', '2004bp', 0 + ], + [ + 'b3', + 'B3', 'b3', 'b3tray', + '1002bp', '1418bp', 0 + ], + [ + 'b4', + 'B4', 'b4', 'b4tray', + '709bp', '1002bp', 0 + ], +); + +@extrapapersdefs = ( + [ + 'executive', + 'Executive', 'executivepage', 'executivepagetray', + '7.25in', '10.5in', 0 + ], + [ + 'halfexecutive', + 'HalfExecutive', 'halfexecutivepage', 'halfexecutivepagetray', + '5.25in', '7.25in', 0 + ] +); + +sub basename { + local($fullname, $ext) = @_; + local($basename) = $fullname; + + $basename =~ s,(.*/)?([^/]+),$2,; + $ext && $basename =~ s,$ext$,,; + + $basename; +} + +sub dumpsizes { + local($legend, @sizes) = @_; + + print "$legend"; + + for $spec (@sizes) { + local(@array) = @$spec; + local($name) = @array; + + print $name, " "; + } + print "\n"; +} + +sub usage { + local($exitcode) = @_; + local($myname) = &basename($0); + + if ($exitcode) { + select STDERR; + } + + print "usage: $myname [ --version ] [ -h, --help ] [ -s, --standard ] [ -n, --non-standard ] [ -d, --dvips ] [ -g, --gs ] [ -e, --extra ] [ -l, --local ] [ -a, --all ] [ -p, --paper papername ]\n"; + + if ($exitcode == 0) { + print "\n"; + print "options: --version\t\tprint version information\n"; + print " -h, --help\t\tprint this help message\n"; + print " -s, --standard\t\tdefine standard paper sizes\n"; + print " -n, --non-standard\tdefine dvips' non-standard paper sizes\n"; + print " -d, --dvips\t\tdefine all dvips paper sizes\n"; + print " -g, --gs\t\tdefine gs' non-standard paper sizes\n"; + print " -e, --extra\t\tdefine extra paper sizes\n"; + print " -l, --local\t\tdefine local paper sizes\n"; + print " -a, --all\t\tdefine all previous paper sizes\n"; + print " -p, --paper papername\tspecify default paper size\n"; + print "\npapers: "; &dumpsizes("--standard\t\t", @stdpapersdefs); + print " "; &dumpsizes("--non-standard\t\t", @dvipspapersdefs); + print " "; &dumpsizes("--gs\t\t\t", @gspapersdefs); + print " "; &dumpsizes("--extra\t\t", @extrapapersdefs); + print " "; &dumpsizes("--local\t\t", @localpapersdefs); + } + + exit $exitcode; +} + +sub pssize { + local ($size) = @_; + local $number = $size; + + $number =~ s/\D+$//; + + if ($size =~ /in$/) { + $number *= 72; + } elsif ($size =~ /cm$/) { + $number *= 72 / 2.54; + } elsif ($size =~ /mm$/) { + $number *= 72 / 25.4; + } + + return int($number + .4); +} + +sub genpaperdefs { + local ($papername, $dscname, $psname, $trayname, + $width, $height, $orient) = @$_; + local ($pswidth, $psheight) = (&pssize($width), &pssize($height)); + + local ($exch) = ($orient == 1 ? " exch" : ""); + + if ($width =~ /^\d$/) { $width = "${width}bp"; } + if ($height =~ /^\d$/) { $height = "${height}bp"; } + + print <\n"; + exit(0); +} else { + @allpapersdefs = (@stdpapersdefs, @dvipspapersdefs, @gspapersdefs, + @extrapapersdefs, @localpapersdefs); + if ($opt_all) { + @paperdefs = @allpapersdefs; + } else { + @papersdefs = (); + + if ($opt_dvips) { + $opt_standard = 1; + $opt_non_standard = 1; + } + + if ($opt_standard && !$opt_dvips) { + @papersdefs = (@papersdefs, @stdpapersdefs); + } + if ($opt_non_standard && !$opt_dvips) { + @papersdefs = (@papersdefs, @dvipspapersdefs); + } + if ($opt_gs) { + @papersdefs = (@papersdefs, @gsspapersdefs); + } + if ($opt_extra) { + @papersdefs = (@papersdefs, @extrapapersdefs); + } + if ($opt_local) { + @papersdefs = (@papersdefs, @localpapersdefs); + } + + if ($#papersdefs == -1) { + @papersdefs = (@stdpapersdefs, @dvipspapersdefs); + } + } +} + +# Find default paper def in *all* definitions and generate config + +if ($opt_paper) { + for (@allpapersdefs) { + local(@paper) = @$_; + local($papername) = @paper; + + if ($papername eq $opt_paper) { + genpaperdefs @paper; + last; + } + } +} + +# Generate config for all selected paper sizes but the default one + +for (@defaultpaper, @papersdefs) { + local($papername) = @$_; + + if ($papername eq $opt_paper) { next; } + + genpaperdefs $_; +} + diff --git a/Build/source/texk/dvipsk/contrib/configs/papersize.level2 b/Build/source/texk/dvipsk/contrib/configs/papersize.level2 new file mode 100644 index 00000000000..8d708facafa --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/papersize.level2 @@ -0,0 +1,236 @@ +% If your printer doesn't support setpagedevice, and your default paper +% size is A4, uncomment this. +%@ A4size 210mm 297mm +%@+ %%PaperSize: A4 + +% If you want the lettersize definition that uses setpagedevice to be +% the default, comment this out. +@ letterSize 8.5in 11in + +% More paper size information. First definition is the default. +% These definitions were generated by the contrib/mkdvipspapers Perl 5 script, +% by Yves.Arrouye@imag.fr. +% +% If your default is a4 put the a4 definition first (i.e., before the letter +% definition). You should always keep a definition here in order to have the +% document print on the desired paper if possible even outside your original +% environment. +% +% If your default is something else than a4, of course, put its +% definition first! + +@ letter 8.5in 11in +@+ ! %%DocumentPaperSizes: Letter +@+ %%PaperSize: Letter +@+ %%BeginPaperSize: Letter +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 612 792 ] put setpagedevice +@+ } { +@+ statusdict /lettertray known { +@+ statusdict begin lettertray end +@+ /letter where { pop letter } if +@+ } { +@+ /letter where { +@+ pop letter +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 612 792 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ a4 210mm 297mm +@+ ! %%DocumentPaperSizes: a4 +@+ %%PaperSize: a4 +@+ %%BeginPaperSize: a4 +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 595 842 ] put setpagedevice +@+ } { +@+ statusdict /a4tray known { +@+ statusdict begin a4tray end +@+ /a4 where { pop a4 } if +@+ } { +@+ /a4 where { +@+ pop a4 +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 595 842 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ 11x17 11in 17in +@+ ! %%DocumentPaperSizes: 11x17 +@+ %%PaperSize: 11x17 +@+ %%BeginPaperSize: 11x17 +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 792 1224 ] put setpagedevice +@+ } { +@+ statusdict /11x17tray known { +@+ statusdict begin 11x17tray end +@+ /11x17 where { pop 11x17 } if +@+ } { +@+ /11x17 where { +@+ pop 11x17 +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 792 1224 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ a3 297mm 420mm +@+ ! %%DocumentPaperSizes: a3 +@+ %%PaperSize: a3 +@+ %%BeginPaperSize: a3 +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 842 1190 ] put setpagedevice +@+ } { +@+ statusdict /a3tray known { +@+ statusdict begin a3tray end +@+ /a3 where { pop a3 } if +@+ } { +@+ /a3 where { +@+ pop a3 +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 842 1190 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ b5 177mm 250mm +@+ ! %%DocumentPaperSizes: b5 +@+ %%PaperSize: b5 +@+ %%BeginPaperSize: b5 +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 502 709 ] put setpagedevice +@+ } { +@+ statusdict /b5tray known { +@+ statusdict begin b5tray end +@+ /ab5 where { pop ab5 } if +@+ } { +@+ /ab5 where { +@+ pop ab5 +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 502 709 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ ledger 11in 17in +@+ ! %%DocumentPaperSizes: Ledger +@+ %%PaperSize: Ledger +@+ %%BeginPaperSize: Ledger +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 792 1224 exch ] put setpagedevice +@+ } { +@+ statusdict /ledgertray known { +@+ statusdict begin ledgertray end +@+ /ledger where { pop ledger } if +@+ } { +@+ /ledger where { +@+ pop ledger +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 792 1224 1 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ legal 8.5in 14in +@+ ! %%DocumentPaperSizes: Legal +@+ %%PaperSize: Legal +@+ %%BeginPaperSize: Legal +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 612 1008 ] put setpagedevice +@+ } { +@+ statusdict /legaltray known { +@+ statusdict begin legaltray end +@+ /legal where { pop legal } if +@+ } { +@+ /legal where { +@+ pop legal +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 612 1008 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ note 7.5in 10in +@+ ! %%DocumentPaperSizes: Note +@+ %%PaperSize: Note +@+ %%BeginPaperSize: Note +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 540 720 ] put setpagedevice +@+ } { +@+ statusdict /notetray known { +@+ statusdict begin notetray end +@+ /note where { pop note } if +@+ } { +@+ /note where { +@+ pop note +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 540 720 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize + +@ tabloid 11in 17in +@+ ! %%DocumentPaperSizes: Tabloid +@+ %%PaperSize: Tabloid +@+ %%BeginPaperSize: Tabloid +@+ /setpagedevice where { +@+ pop 1 dict dup /PageSize [ 792 1224 ] put setpagedevice +@+ } { +@+ statusdict /11x17tray known { +@+ statusdict begin 11x17tray end +@+ /11x17 where { pop 11x17 } if +@+ } { +@+ /11x17 where { +@+ pop 11x17 +@+ } { +@+ statusdict /setpage known { +@+ statusdict begin +@+ 792 1224 0 setpage +@+ end +@+ } if +@+ } ifelse +@+ } ifelse +@+ } ifelse +@+ %%EndPaperSize diff --git a/Build/source/texk/dvipsk/contrib/configs/papersize.simple b/Build/source/texk/dvipsk/contrib/configs/papersize.simple new file mode 100644 index 00000000000..5112bdf40d4 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/papersize.simple @@ -0,0 +1,44 @@ +* Paper size information. First definition is the default. +* +* If your default is a4 uncomment the following definition +* and comment out the letterSize definition. +* +*@ A4size 210mm 297mm +*@+ %%PaperSize: A4 + +@ letterSize 8.5in 11in + +@ letter 8.5in 11in +@+ %%BeginPaperSize: Letter +@+ letter +@+ %%EndPaperSize + +@ legal 8.5in 14in +@+ ! %%DocumentPaperSizes: Legal +@+ %%BeginPaperSize: Legal +@+ legal +@+ %%EndPaperSize + +@ ledger 17in 11in +@+ ! %%DocumentPaperSizes: Ledger +@+ %%BeginPaperSize: Ledger +@+ ledger +@+ %%EndPaperSize + +@ tabloid 11in 17in +@+ ! %%DocumentPaperSizes: Tabloid +@+ %%BeginPaperSize: Tabloid +@+ 11x17 +@+ %%EndPaperSize + +@ A4 210mm 297mm +@+ ! %%DocumentPaperSizes: A4 +@+ %%BeginPaperSize: A4 +@+ a4 +@+ %%EndPaperSize + +@ A3 297mm 420mm +@+ ! %%DocumentPaperSizes: A3 +@+ %%BeginPaperSize: A3 +@+ a3 +@+ %%EndPaperSize diff --git a/Build/source/texk/dvipsk/contrib/configs/prepipe.ps b/Build/source/texk/dvipsk/contrib/configs/prepipe.ps new file mode 100644 index 00000000000..57b690963cd --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/prepipe.ps @@ -0,0 +1 @@ +/showpage { 1 true .outputpage } def diff --git a/Build/source/texk/dvipsk/contrib/configs/showpage.ps b/Build/source/texk/dvipsk/contrib/configs/showpage.ps new file mode 100644 index 00000000000..97a4789f75d --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/configs/showpage.ps @@ -0,0 +1 @@ +showpage diff --git a/Build/source/texk/dvipsk/contrib/crop.lpr b/Build/source/texk/dvipsk/contrib/crop.lpr new file mode 100644 index 00000000000..d79484266d9 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/crop.lpr @@ -0,0 +1,271 @@ +%! +% This file is for crop marks and registration marks if there is color. +% +% First, we translate and draw the marks. You can change the way the +% marks are drawn, but the quarter inch border around the page is fixed. +% +% This file uses bop-hook; sorry. +% +TeXDict begin +% +% CM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% x_center y_center CM - % +% % +% Make a crop mark at x_center y_center. This crop mark is just a cross. % +% Checks to see if TeXcolorcmyk is defined---if there is no color, you can % +% setgray instead of setcmykcolor. % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/cX 18 def % the crop offset +/CM +{ + gsave + 3 1 roll + translate + rotate + .3 setlinewidth + /TeXcolorcmyk where {pop 1 1 1 1 setcmykcolor} {0 setgray} ifelse + 0 cX neg moveto + 0 cX 2 div neg lineto stroke + cX neg 0 moveto + cX 2 div neg 0 lineto stroke + grestore +} def +% +% RegMark %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% x_center y_center RegMark - % +% % +% Make a registration mark at x_center y_center. Consists of two concentric % +% circles, the inner one filled, and a cross hair through them. Preferred % +% by those who register films for proof. Checks to see if TeXcolorcmyk is % +% defined---if there is no color, you don't need registration marks! % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/RegMark +{ + /TeXcolorcmyk where + { + pop + gsave + translate + .3 setlinewidth + 1 1 1 1 setcmykcolor + 0 0 3 0 360 arc fill + 0 0 6 0 360 arc stroke + 0 1 3 { + pop + 90 rotate + 0 0 0 0 setcmykcolor + 0 0 moveto 3 0 lineto stroke + 1 1 1 1 setcmykcolor + 3 0 moveto 8 0 lineto stroke + } for + grestore + } {pop pop} ifelse +} def +% +% DoLogo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% x_left y_upper DoLogo - % +% % +% If /CompositorName is defined, then the logo will be placed in the crop % +% area. /JobDescription and /Contractor can also be defined in the TeX file % +% to define the job. If there is no definition, they simply will not show % +% up. Examples: % +% /CompositorName (Meridian Creative Group) def % +% /JobDescription (College Algebra: Concepts and Models 2/e) def % +% /Contractor (D.C. Heath and Company) def % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/DoLogo +{ + moveto + save + % + % Variables to control the look of the Logo: + % + /LogoVgap 1 def % Vertical gap between logo string and box + /LogoHgap 3 def % Horizontal gap between logo string and box + /LogoFont {6 /Helvetica} def % The font to use for this logo. + % + % Gather some useful information about the Logo Font. + % + /LogoAscent LogoFont findfont /FontBBox get 3 get abs 1000 div mul def + /LogoDescent LogoFont findfont /FontBBox get 1 get abs 1000 div mul def + /LogoHeight LogoAscent LogoDescent add def + % + % AddToLogo + % + /LogoWidth 0 def + /AddToLogo + { + dup show % leaving on stack + stringwidth pop % on stack + } def + % + % Start by setting line width, color, and establish logo font. + % + .24 setlinewidth + /TeXcolorcmyk where {pop 1 1 1 1 setcmykcolor} {0 setgray} ifelse + LogoFont findfont exch scalefont setfont + % + % Then move into position + % + LogoHgap LogoVgap LogoAscent add neg rmoveto + % + % If there is a logo, there will be a compositor, so start by setting + % the compositor name and add to the LogoWidth. + % + CompositorName AddToLogo % Add compositor name to logo + LogoWidth add /LogoWidth exch def % Add compositor name to logo width + % + % If there is a job description, set it next. + % + /JobDescription where + { + pop % Get rid of dictionary + LogoFont pop 0 rmoveto % Move a bit to the right + LogoWidth LogoFont pop add % Add that on to the logo width + JobDescription AddToLogo % Add job description to logo + add /LogoWidth exch def % Add job description to logo width + } if + % + % Same thing with Contractor. + % + /Contractor where + { + pop % Get rid of dictionary + LogoFont pop 0 rmoveto % Move a bit to the right + LogoWidth LogoFont pop add % Add that on to the logo width + Contractor AddToLogo % Add contractor to logo + add /LogoWidth exch def % Add contractor to logo width + } if + % + % Add the gaps onto the logo dimensions for box drawing. + % + /LogoHeight LogoHeight 2 LogoVgap mul add def + /LogoWidth LogoWidth 2 LogoHgap mul add def + % + % Move into lower right corner of box and draw it clockwise. + % + LogoHgap LogoVgap LogoDescent add neg rmoveto + LogoWidth neg 0 rlineto 0 LogoHeight rlineto + LogoWidth 0 rlineto 0 LogoHeight neg rlineto stroke + restore + stroke +} def +% +/DrawCenterTicks +{ + gsave + .3 setlinewidth + /TeXcolorcmyk where {pop 1 1 1 1 setcmykcolor} {0 setgray} ifelse + hsize cX 2 mul sub 2 div cX 2 div neg moveto + 0 cX 2 div neg rlineto + hsize cX 1.5 mul sub vsize cX 2 mul sub 2 div moveto + cX 2 div 0 rlineto + hsize cX 2 mul sub 2 div vsize cX 1.5 mul sub moveto + 0 cX 2 div rlineto + cX 2 div neg vsize cX 2 mul sub 2 div moveto + cX 2 div neg 0 rlineto + stroke + grestore +} def +% +% NamePlates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% left bottom NamePlates - % +% % +% /FirstPlate, /SecondPlate, /ThirdPlate, and /FourthPlate have default % +% names but may be overridden in the job.hdr. % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/NamePlates +{ + gsave + translate + % Make sure each plate has a name. + /FirstPlate where {pop} {/FirstPlate (Cyan) def} ifelse + /SecondPlate where {pop} {/SecondPlate (Magenta) def} ifelse + /ThirdPlate where {pop} {/ThirdPlate (Yellow) def} ifelse + /FourthPlate where {pop} {/FourthPlate (Black) def} ifelse + /Helvetica-Bold findfont 10 scalefont setfont + % Cyan block + 1 0 0 0 setcmykcolor + 0 0 moveto + 9 0 lineto + 9 9 lineto + 0 9 lineto + closepath + fill + 0 0 0 0 setcmykcolor + 0.75 1 moveto + (C) show + % Magenta block + 0 1 0 0 setcmykcolor + 9 0 moveto + 18 0 lineto + 18 9 lineto + 9 9 lineto + closepath + fill + 0 0 0 0 setcmykcolor + 9.25 1 moveto + (M) show + % Yellow block + 0 0 1 0 setcmykcolor + 18 0 moveto + 27 0 lineto + 27 9 lineto + 18 9 lineto + closepath + fill + 0 0 0 0 setcmykcolor + 19.25 1 moveto + (Y) show + % Black block + 0 0 0 1 setcmykcolor + 27 0 moveto + 36 0 lineto + 36 9 lineto + 27 9 lineto + closepath + fill + 0 0 0 0 setcmykcolor + 27.5 1 moveto + (K) show + % Name Plates + /Helvetica-Narrow findfont 9 scalefont setfont + 1 1 1 1 setcmykcolor + ( Plate:) show + 1 0 0 0 setcmykcolor + FirstPlate show + 0 1 0 0 setcmykcolor + SecondPlate show + 0 0 1 0 setcmykcolor + ThirdPlate show + 0 0 0 1 setcmykcolor + FourthPlate show + grestore +} def +% +end %TeXDict +% +/bop-hook { + cX dup TR % move the origin a bit + gsave + % Draw center tic marks in the crop margin + DrawCenterTicks + % Do the logo + /CompositorName where {pop cX 2 div dup neg DoLogo} if + % Name the plates + /TeXcolorcmyk where {pop hsize 2 div cX add -18 NamePlates} if + % now draw four crop marks and four registration marks + 0 0 0 CM cX -2 div dup RegMark + vsize cX 2 mul sub dup + hsize cX 2 mul sub dup + isls { 4 2 roll } if + 0 2 copy 90 CM cX 2 div sub exch cX 2 div add exch RegMark + exch 2 copy 180 CM cX 2 div add exch cX 2 div add exch RegMark + 0 exch 2 copy 270 CM cX 2 div add exch cX 2 div sub exch RegMark + grestore + 0 cX -2 mul TR % now move to where we start drawing + isls { cX -2 mul 0 TR } if +} def diff --git a/Build/source/texk/dvipsk/contrib/latex209/avantgarde.sty b/Build/source/texk/dvipsk/contrib/latex209/avantgarde.sty new file mode 100644 index 00000000000..91ae8f388c1 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/avantgarde.sty @@ -0,0 +1,11 @@ +% latex style using AvantGarde for text. + +\def\@mrm{pagk}% AvantGarde - book +\def\@mit{pagko}% AvantGarde - book oblique +\def\@msl{pagdo}% AvantGarde - demi oblique +\def\@mbf{pagd}% AvantGarde - demi +\def\@mcsc{pagkc}% AvantGarde - book - small caps +\def\@mtt{pcrr}% courier +\def\@mss{phvr}% helvetica + +\input psfonts.sty diff --git a/Build/source/texk/dvipsk/contrib/latex209/blackdvi.sty b/Build/source/texk/dvipsk/contrib/latex209/blackdvi.sty new file mode 100644 index 00000000000..85e7fd38a28 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/blackdvi.sty @@ -0,0 +1,109 @@ +% This is BLACKDVI.STY and BLACKDVI.TEX in text format, as of March 5, +% 1992, written by Jim Hafner, HAFNER@ALMADEN, or hafner@almaden.ibm.com. +% This file turns all color commands defined by COLORDVI.STY or COLORDVI.TEX +% into no-ops and so can be used to get B/W printing without having to +% ferret out all the color macros. Modified by Tomas Rokicki to be a +% bit smaller. +% +% 20 Aug. 1992: Revised by J. Hafner, by adding \globalColor as a no-op. +% +% For example, with FoilTeX, just use +% \documentstyle[blackdvi]{foils} +% in place of +% \documentstyle[colordvi]{foils} +% +% This file can be used anywhere COLORDVI.STY or COLORDVI.TEX is used. In +% particular, It can be used in any flavor of LaTeX (e.g. LaTeX, +% FoilTeX, AMS-LaTeX) by adding the keyword "blackdvi" to the options in +% the \documentstyle command (e.g., "\documentstyle[blackdvi]{foils}") or +% \input in any flavor of TeX (e.g. Plain TeX, eplain, AMS-TeX or any of +% the above LaTeX flavors) with the command "\input blackdvi". +% +% Here is the background command +\def\background#1{}% +% +% This is used to define all the \newColor macros defined by \newColor +% as no-ops. +\def\newColor #1 {\expandafter\def\csname text#1\endcsname{}% + \expandafter\def\csname #1\endcsname##1{##1}}% +% +% Here are the two macros used for user-definable colors +\def\textColor#1{} +\def\Color#1#2{#2} +% +% This is the macro that is used to protect certain regions of the +% text from corruption by local color commands. See COLORDVI.STY for +% more information. We make it a no-op in this style. +\def\globalColor#1{#1} +% +% Here are the preset color names. This list should match the list +% in . +% +\newColor GreenYellow +\newColor Yellow +\newColor Goldenrod +\newColor Dandelion +\newColor Apricot +\newColor Peach +\newColor Melon +\newColor YellowOrange +\newColor Orange +\newColor BurntOrange +\newColor Bittersweet +\newColor RedOrange +\newColor Mahogany +\newColor Maroon +\newColor BrickRed +\newColor Red +\newColor OrangeRed +\newColor RubineRed +\newColor WildStrawberry +\newColor Salmon +\newColor CarnationPink +\newColor Magenta +\newColor VioletRed +\newColor Rhodamine +\newColor Mulberry +\newColor RedViolet +\newColor Fuchsia +\newColor Lavender +\newColor Thistle +\newColor Orchid +\newColor DarkOrchid +\newColor Purple +\newColor Plum +\newColor Violet +\newColor RoyalPurple +\newColor BlueViolet +\newColor Periwinkle +\newColor CadetBlue +\newColor CornflowerBlue +\newColor MidnightBlue +\newColor NavyBlue +\newColor RoyalBlue +\newColor Blue +\newColor Cerulean +\newColor Cyan +\newColor ProcessBlue +\newColor SkyBlue +\newColor Turquoise +\newColor TealBlue +\newColor Aquamarine +\newColor BlueGreen +\newColor Emerald +\newColor JungleGreen +\newColor SeaGreen +\newColor Green +\newColor ForestGreen +\newColor PineGreen +\newColor LimeGreen +\newColor YellowGreen +\newColor SpringGreen +\newColor OliveGreen +\newColor RawSienna +\newColor Sepia +\newColor Brown +\newColor Tan +\newColor Gray +\newColor Black +\newColor White diff --git a/Build/source/texk/dvipsk/contrib/latex209/bookman.sty b/Build/source/texk/dvipsk/contrib/latex209/bookman.sty new file mode 100644 index 00000000000..520e4ebdb68 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/bookman.sty @@ -0,0 +1,11 @@ +% latex style using Bookman for text + +\def\@mrm{pbkl}% Bookman - light +\def\@mit{pbkli}% Bookman - light italic +\def\@msl{pbkdi}% Bookman - demi italic +\def\@mbf{pbkd}% Bookman - demi +\def\@mcsc{pbklc}% Bookman - light - small caps +\def\@mtt{pcrr}% courier +\def\@mss{phvr}% helvetica + +\input psfonts.sty diff --git a/Build/source/texk/dvipsk/contrib/latex209/chancery.sty b/Build/source/texk/dvipsk/contrib/latex209/chancery.sty new file mode 100644 index 00000000000..7f87fd9d617 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/chancery.sty @@ -0,0 +1,11 @@ +% latex style using Zapf Chancery for text. + +\def\@mrm{pzcmi}% Zapf Chancery Medium Italic +\def\@mit{pzcmi}% Zapf Chancery Medium Italic +\def\@msl{pzcmi}% Zapf Chancery Medium Italic +\def\@mbf{pzcmi}% Zapf Chancery Medium Italic +\def\@mcsc{pzcmi}% Zapf Chancery Medium Italic +\def\@mtt{pcrr}% courier +\def\@mss{phvr}% helvetica + +\input psfonts.sty diff --git a/Build/source/texk/dvipsk/contrib/latex209/colordvi.sty b/Build/source/texk/dvipsk/contrib/latex209/colordvi.sty new file mode 100644 index 00000000000..df812f8df60 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/colordvi.sty @@ -0,0 +1,162 @@ +% This is COLORDVI.TEX and COLORDVI.STY in text format, as of +% March 5, 1992, written by Jim Hafner, HAFNER@ALMADEN, or +% hafner@almaden.ibm.com. Modified by Tomas Rokicki to be a +% bit smaller and easier to add to. +% +% 20 Aug. 1992: Revised by J. Hafner, by adding \globalColor. +% +% This style file can be used to get color in TeX, LaTeX or more +% importantly, FoilTeX as an optional style file. It is generic in +% that the color parameters are determined by the driver's header files. +% +% It can be used with any driver which knows how to process the keywords +% in the \special commands. Currently, only versions of dvips greater +% than 5.478 (dvips is the DVI->PostScript driver by Tom Rokicki) and +% TeXview on the NeXT interpret these specials. +% +% This file can be used in any flavor of LaTeX (e.g. LaTeX, FoilTeX, +% AMS-LaTeX) by adding the keyword "colordvi" to the options in the +% \documentstyle command (e.g., "\documentstyle[colordvi]{foils}") or \input +% in any flavor of TeX (e.g. Plain TeX, eplain, AMS-TeX or any of the +% above LaTeX flavors) with the command "\input colordvi". +% +% The actual parameters for each color are determined by the device +% driver. +% For "dvips", that is the header file color.pro prepended to the +% output file by dvips. They can be overrriden by a user-supplied +% header, called by either the -h option or the "h" flag in a printer +% configuration file, or in the .dvipsrc (or its analogue on other +% systems). +% +% Most of the color names and their matches were based on the +% most recent (at time of writing) Crayola Crayon box of 64 colors. +% +% There are 68 predefined colors. At the end of this file is a +% listing of the color names and their approximate PANTONE color +% match. This is for reference purposes only. +% +% The first macro lets the user specify the background color for the +% document. It sets the background color for the current page and all +% succeeding pages, unless changed by another command of this type. To +% change the background color back to the default, issue +% \background{White} +% +\def\background#1{\special{background #1}} +% +% There are two types of text color commands. The first is in the form +% \ColorName (note the uppercase for the color name). +% +% It is called a local color command since it takes one argument +% enclosed in brackets. It writes the contents of its argument in the +% selected color. This should be used for local or nested color +% changes, since it restores the original color state when it completes. +% The second type of color command is in the form +% \textColorName +% This uses the same naming convention as before. It is called a global +% color command since it takes no arguments and simply sets the color at +% this point. No previous color information is saved. IF YOU USE THIS +% INTERNAL TO ANY LOCAL COLOR COMMAND, THE NESTING HISTORY IS LOST. +% +% This next definition is used in an invocation of a \textColorName +% macro to save the global color value in local form via the \globalColor +% macro. This new macro can then be used to protect certain regions of +% the text, like item tags and headers and footers which can be +% corrupted by local colors. In particular, item tags in lists can +% incorrectly inherit the color from a local color command immediately +% following it. The \subdef macro is invoked within the invocation of a +% global color change. +% +\def\subdef#1{\gdef\globalColor##1{\special + {color push #1}##1\special{color pop}}} +% +% Here are the global color changers, with color codes defined; +% these are used to define the small region colors. +% +% This first is for user defined color. The argument #1 is for a "CMYK" +% quadruple of intensity values between 0 and 1. (CMYK stands for Cyan, +% Magenta, Yellow and Black.) E.g., \textColor{.2 .3 .4 .1} +% +\def\textColor#1{\subdef{cmyk #1}\special{color cmyk #1}} +% +% and a userdefinable local color command. +\def\Color#1#2{\special{color push cmyk #1}#2\special{color pop}} +% +% +\def\newColor #1 {\expandafter\def\csname #1\endcsname##1{\special + {color push #1}##1\special{color pop}}% + \expandafter\def\csname text#1\endcsname{\subdef{#1}% + \special{color #1}}}% +% +% Here are the color names and their PANTONE match (approximately) +% +\newColor GreenYellow % GreenYellow Approximate PANTONE 388 +\newColor Yellow % Yellow Approximate PANTONE YELLOW +\newColor Goldenrod % Goldenrod Approximate PANTONE 109 +\newColor Dandelion % Dandelion Approximate PANTONE 123 +\newColor Apricot % Apricot Approximate PANTONE 1565 +\newColor Peach % Peach Approximate PANTONE 164 +\newColor Melon % Melon Approximate PANTONE 177 +\newColor YellowOrange % YellowOrange Approximate PANTONE 130 +\newColor Orange % Orange Approximate PANTONE ORANGE-021 +\newColor BurntOrange % BurntOrange Approximate PANTONE 388 +\newColor Bittersweet % Bittersweet Approximate PANTONE 167 +\newColor RedOrange % RedOrange Approximate PANTONE 179 +\newColor Mahogany % Mahogany Approximate PANTONE 484 +\newColor Maroon % Maroon Approximate PANTONE 201 +\newColor BrickRed % BrickRed Approximate PANTONE 1805 +\newColor Red % Red VERY-Approx PANTONE RED +\newColor OrangeRed % OrangeRed No PANTONE match +\newColor RubineRed % RubineRed Approximate PANTONE RUBINE-RED +\newColor WildStrawberry % WildStrawberry Approximate PANTONE 206 +\newColor Salmon % Salmon Approximate PANTONE 183 +\newColor CarnationPink % CarnationPink Approximate PANTONE 218 +\newColor Magenta % Magenta Approximate PANTONE PROCESS-MAGENTA +\newColor VioletRed % VioletRed Approximate PANTONE 219 +\newColor Rhodamine % Rhodamine Approximate PANTONE RHODAMINE-RED +\newColor Mulberry % Mulberry Approximate PANTONE 241 +\newColor RedViolet % RedViolet Approximate PANTONE 234 +\newColor Fuchsia % Fuchsia Approximate PANTONE 248 +\newColor Lavender % Lavender Approximate PANTONE 223 +\newColor Thistle % Thistle Approximate PANTONE 245 +\newColor Orchid % Orchid Approximate PANTONE 252 +\newColor DarkOrchid % DarkOrchid No PANTONE match +\newColor Purple % Purple Approximate PANTONE PURPLE +\newColor Plum % Plum VERY-Approx PANTONE 518 +\newColor Violet % Violet Approximate PANTONE VIOLET +\newColor RoyalPurple % RoyalPurple Approximate PANTONE 267 +\newColor BlueViolet % BlueViolet Approximate PANTONE 2755 +\newColor Periwinkle % Periwinkle Approximate PANTONE 2715 +\newColor CadetBlue % CadetBlue Approximate PANTONE (534+535)/2 +\newColor CornflowerBlue % CornflowerBlue Approximate PANTONE 292 +\newColor MidnightBlue % MidnightBlue Approximate PANTONE 302 +\newColor NavyBlue % NavyBlue Approximate PANTONE 293 +\newColor RoyalBlue % RoyalBlue No PANTONE match +\newColor Blue % Blue Approximate PANTONE BLUE-072 +\newColor Cerulean % Cerulean Approximate PANTONE 3005 +\newColor Cyan % Cyan Approximate PANTONE PROCESS-CYAN +\newColor ProcessBlue % ProcessBlue Approximate PANTONE PROCESS-BLUE +\newColor SkyBlue % SkyBlue Approximate PANTONE 2985 +\newColor Turquoise % Turquoise Approximate PANTONE (312+313)/2 +\newColor TealBlue % TealBlue Approximate PANTONE 3145 +\newColor Aquamarine % Aquamarine Approximate PANTONE 3135 +\newColor BlueGreen % BlueGreen Approximate PANTONE 320 +\newColor Emerald % Emerald No PANTONE match +\newColor JungleGreen % JungleGreen Approximate PANTONE 328 +\newColor SeaGreen % SeaGreen Approximate PANTONE 3268 +\newColor Green % Green VERY-Approx PANTONE GREEN +\newColor ForestGreen % ForestGreen Approximate PANTONE 349 +\newColor PineGreen % PineGreen Approximate PANTONE 323 +\newColor LimeGreen % LimeGreen No PANTONE match +\newColor YellowGreen % YellowGreen Approximate PANTONE 375 +\newColor SpringGreen % SpringGreen Approximate PANTONE 381 +\newColor OliveGreen % OliveGreen Approximate PANTONE 582 +\newColor RawSienna % RawSienna Approximate PANTONE 154 +\newColor Sepia % Sepia Approximate PANTONE 161 +\newColor Brown % Brown Approximate PANTONE 1615 +\newColor Tan % Tan No PANTONE match +\newColor Gray % Gray Approximate PANTONE COOL-GRAY-8 +\newColor Black % Black Approximate PANTONE PROCESS-BLACK +\newColor White % White No PANTONE match + +% Now we make sure that we initialize the global color to Black +\subdef{Black} diff --git a/Build/source/texk/dvipsk/contrib/latex209/lucida.sty b/Build/source/texk/dvipsk/contrib/latex209/lucida.sty new file mode 100644 index 00000000000..012bfbdcac6 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/lucida.sty @@ -0,0 +1,12 @@ +% LaTeX style using Lucida for text (but not math). +% Bob Morris and Karl Berry, 15 Feb 93. + +\def\@mrm{plcr}% roman +\def\@mit{plcri}% italic +\def\@msl{plcro}% oblique +\def\@mbf{plcb}% bold +\def\@mcsc{plcrc}% small caps +\def\@mtt{plcrst}% (sans) typewriter +\def\@mss{plcrs}% sans + +\input psfonts.sty diff --git a/Build/source/texk/dvipsk/contrib/latex209/ncs.sty b/Build/source/texk/dvipsk/contrib/latex209/ncs.sty new file mode 100644 index 00000000000..e7b996f7e6a --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/ncs.sty @@ -0,0 +1,11 @@ +% latex style using New Century Schoolbook for text. + +\def\@mrm{pncr}% new century schoolbook +\def\@mit{pncri}% new century schoolbook - italic +\def\@msl{pncbi}% new century schoolbook - bold italic +\def\@mbf{pncb}% new century schoolbook - bold +\def\@mcsc{pncrc}% new century schoolbook - small caps +\def\@mtt{pcrr}% courier +\def\@mss{phvr}% helvetica + +\input psfonts.sty diff --git a/Build/source/texk/dvipsk/contrib/latex209/palatino.sty b/Build/source/texk/dvipsk/contrib/latex209/palatino.sty new file mode 100644 index 00000000000..41d95d322f5 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/palatino.sty @@ -0,0 +1,11 @@ +% latex style using Palatino for text. + +\def\@mrm{pplr}% palatino +\def\@mit{pplri}% palatino - italic +\def\@msl{pplro}% palatino - oblique +\def\@mbf{pplb}% palatino - bold +\def\@mcsc{pplrc}% palatino - small caps +\def\@mtt{pcrr}% courier +\def\@mss{phvr}% helvetica + +\input psfonts.sty diff --git a/Build/source/texk/dvipsk/contrib/latex209/psfonts.sty b/Build/source/texk/dvipsk/contrib/latex209/psfonts.sty new file mode 100644 index 00000000000..97948237045 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/psfonts.sty @@ -0,0 +1,266 @@ +% psfonts.sty - re-work of lfonts.tex to allow postscript fonts +% to replace cmr fonts. Original by LA Carr. Hacked by Van +% Jacobson. +% +% $Header: psfonts.sty,v 1.2 88/01/23 17:52:49 van Exp $ +% +\def\@@getfont#1#2#3#4#5#6#7{% +\@ifundefined{\string #1\string #5}{\global\expandafter + \font \csname \string #1\string #5\endcsname #4\@ptscale{#5}\relax}{}% +\@ifundefined{\string #1\string #6}{\global\expandafter + \font \csname \string #1\string #6\endcsname #4\@ptscale{#6}\relax}{}% +\@ifundefined{\string #1\string #7}{\global\expandafter + \font \csname \string #1\string #7\endcsname #4\@ptscale{#7}\relax}{}% +\@ifundefined{\string #1\string #3}{\global\expandafter + \let \csname \string #1\string #3\endcsname #3\relax + \@addfontinfo#3{\textfont #2\csname \string #1\string #5\endcsname + \scriptfont #2\csname \string #1\string #6\endcsname + \scriptscriptfont #2\csname \string #1\string #7\endcsname + \def#1{\fam #2\csname\string #1\string #5\endcsname}}}{}#3#1} +\def\@@@getfont#1#2#3#4#5{% +\@ifundefined{\string #1\string #5}{\global\expandafter + \font \csname \string #1\string #5\endcsname #4\@ptscale{#5}\relax}{}% +\@ifundefined{\string #1\string #3}{\global\expandafter + \let \csname \string #1\string #3\endcsname #3\relax + \@addfontinfo#3{\def#1{\fam #2\csname\string #1\string #5\endcsname}}}{}#3#1} + +\def\@psfonts#1#2#3#4{% +\def\prm{\@@getfont\prm\z@#1\@mrm{#2}{#3}{#4}}% +\def\pit{\@@getfont\pit\itfam#1\@mit{#2}{#3}{#4}}% +\def\psl{\@@getfont\psl\slfam#1\@msl{#2}{#3}{#4}}% +\def\pbf{\@@getfont\pbf\bffam#1\@mbf{#2}{#3}{#4}}% +\def\ptt{\@@getfont\ptt\ttfam#1\@mtt{#2}{#3}{#4}% +\@nohyphens\ptt {#2}\@nohyphens\ptt {#3}\@nohyphens\ptt {#4}}% +\def\psf{\@@getfont\psf\sffam#1\@mss{#2}{#3}{#4}}% +\def\psc{\@@getfont\psc\scfam#1\@mcsc{#2}{#3}{#4}}} + +% math stuff: we want to use cmr operator characters but Times +% letters. So, we make a new family to hold cmrX & re-mathcode +% to force the operators to come from that family. +\newfam\@cmrfam +\newcount\@cmrscale +\def\@mathmap#1{\@cmrscale=\@cmrfam \multiply\@cmrscale by 256 +\advance\@cmrscale by \the\mathcode#1 \mathcode#1=\@cmrscale\relax} +\def\@cmrset#1#2#3{\textfont\@cmrfam #1% +\scriptfont\@cmrfam #2\scriptscriptfont\@cmrfam #3\relax} + +\@mathmap{`\(} +\@mathmap{`\)} +\@mathmap{`\+} +\@mathmap{`\=} +\@mathmap{`\[} +\@mathmap{`\]} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\vpt{\textfont\z@\fivrm + \scriptfont\z@\fivrm \scriptscriptfont\z@\fivrm +\textfont\@ne\fivmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\fivsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\fam\@ne\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@vpt555% +\@cmrset\fivrm\fivrm\fivrm% +\def\ly{\fam\lyfam\fivly}\textfont\lyfam\fivly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly +\@setstrut\rm} +\def\@vpt{} +\def\vipt{\textfont\z@\sixrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\sixrm +\textfont\@ne\sixmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\sixmi +\textfont\tw@\sixsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\sixsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@vipt666% +\@cmrset\sixrm\sixrm\sixrm% +\def\ly{\fam\lyfam\sixly}\textfont\lyfam\sixly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\sixly +\@setstrut\rm} +\def\@vipt{} +\def\viipt{\textfont\z@\sevrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm +\textfont\@ne\sevmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\sevsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath +\unboldmath\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@viipt755% +\@cmrset\sevrm\sixrm\fivrm% +\def\ly{\fam\lyfam\sevly}\textfont\lyfam\sevly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} +\def\@viipt{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\viiipt{\textfont\z@\egtrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm +\textfont\@ne\egtmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\egtsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath +\unboldmath\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@viiipt865% +\@cmrset\egtrm\sixrm\fivrm% +\def\ly{\fam\lyfam\egtly}\textfont\lyfam\egtly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} +\def\@viiipt{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\ixpt{\textfont\z@\ninrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm +\textfont\@ne\ninmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\ninsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@ixpt965% +\@cmrset\ninrm\sixrm\fivrm% +\def\ly{\fam\lyfam\ninly}\textfont\lyfam\ninly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} +\def\@ixpt{} +\def\xpt{\textfont\z@\tenrm + \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm +\textfont\@ne\tenmi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\tensy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\tenmi + \textfont\tw@\tensy \textfont\lyfam\tenly + \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{tenmib}{\global\font\tenmib\@mbi + \global\font\tensyb\@mbsy + \global\font\tenlyb\@lasyb\relax\@addfontinfo\@xpt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\tenmib \textfont\tw@\tensyb + \textfont\lyfam\tenlyb \@prtct\@boldtrue}}}{}\@xpt\boldmath}% +\@psfonts\@xpt{10}75% +\@cmrset\tenrm\sevrm\fivrm% +\def\ly{\fam\lyfam\tenly}\textfont\lyfam\tenly + \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} +\def\@xpt{} +\def\xipt{\textfont\z@\elvrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm +\textfont\@ne\elvmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi +\textfont\tw@\elvsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\elvmi \textfont\tw@\elvsy + \textfont\lyfam\elvly \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{elvmib}{\global\font\elvmib\@mbi\@halfmag + \global\font\elvsyb\@mbsy\@halfmag + \global\font\elvlyb\@lasyb\@halfmag\relax\@addfontinfo\@xipt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\elvmib \textfont\tw@\elvsyb + \textfont\lyfam\elvlyb\@prtct\@boldtrue}}}{}\@xipt\boldmath}% +\@psfonts\@xipt{11}86% +\@cmrset\elvrm\egtrm\sixrm% +\def\ly{\fam\lyfam\elvly}\textfont\lyfam\elvly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly +\@setstrut \rm} +\def\@xipt{} +\def\xiipt{\textfont\z@\twlrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm +\textfont\@ne\twlmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi +\textfont\tw@\twlsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twlmi + \textfont\tw@\twlsy \textfont\lyfam\twlly + \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{twlmib}{\global\font\twlmib\@mbi\@magscale1\global + \font\twlsyb\@mbsy \@magscale1\global\font + \twllyb\@lasyb\@magscale1\relax\@addfontinfo\@xiipt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\twlmib \textfont\tw@\twlsyb + \textfont\lyfam\twllyb\@prtct\@boldtrue}}}{}\@xiipt\boldmath}% +\@psfonts\@xiipt{12}86% +\@cmrset\twlrm\egtrm\sixrm% +\def\ly{\fam\lyfam\twlly}\textfont\lyfam\twlly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly + \@setstrut \rm} +\def\@xiipt{} +\def\xivpt{\textfont\z@\frtnrm + \scriptfont\z@\tenrm \scriptscriptfont\z@\sevrm +\textfont\@ne\frtnmi \scriptfont\@ne\tenmi \scriptscriptfont\@ne\sevmi +\textfont\tw@\frtnsy \scriptfont\tw@\tensy \scriptscriptfont\tw@\sevsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\frtnmi \textfont\tw@\frtnsy + \textfont\lyfam\frtnly \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{frtnmib}{\global\font + \frtnmib\@mbi\@magscale2\global\font\frtnsyb\@mbsy\@magscale2 + \global\font\frtnlyb\@lasyb\@magscale2\relax\@addfontinfo\@xivpt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\frtnmib \textfont\tw@\frtnsyb + \textfont\lyfam\frtnlyb\@prtct\@boldtrue}}}{}\@xivpt\boldmath}% +\@psfonts\@xivpt{14}{10}7% +\@cmrset\frtnrm\tenrm\sevrm% +\def\ly{\fam\lyfam\frtnly}\textfont\lyfam\frtnly + \scriptfont\lyfam\tenly \scriptscriptfont\lyfam\sevly +\@setstrut \rm} +\def\@xivpt{} +\def\xviipt{\textfont\z@\svtnrm + \scriptfont\z@\twlrm \scriptscriptfont\z@\tenrm +\textfont\@ne\svtnmi \scriptfont\@ne\twlmi \scriptscriptfont\@ne\tenmi +\textfont\tw@\svtnsy \scriptfont\tw@\twlsy \scriptscriptfont\tw@\tensy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\svtnmi \textfont\tw@\svtnsy \textfont\lyfam\svtnly + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@xviipt{17}{12}{10}% +\@cmrset\svtnrm\twlrm\tenrm% +\def\ly{\fam\lyfam\svtnly}\textfont\lyfam\svtnly + \scriptfont\lyfam\twlly \scriptscriptfont\lyfam\tenly +\@setstrut \rm} +\def\@xviipt{} +\def\xxpt{\textfont\z@\twtyrm + \scriptfont\z@\frtnrm \scriptscriptfont\z@\twlrm +\textfont\@ne\twtymi \scriptfont\@ne\frtnmi \scriptscriptfont\@ne\twlmi +\textfont\tw@\twtysy \scriptfont\tw@\frtnsy \scriptscriptfont\tw@\twlsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@xxpt{20}{14}{12}% +\@cmrset\twtyrm\frtnrm\twlrm% +\def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\frtnly \scriptscriptfont\lyfam\twlly +\@setstrut \rm} +\def\@xxpt{} +\def\xxvpt{\textfont\z@\twfvrm + \scriptfont\z@\twtyrm \scriptscriptfont\z@\svtnrm +\textfont\@ne\twtymi \scriptfont\@ne\twtymi \scriptscriptfont\@ne\svtnmi +\textfont\tw@\twtysy \scriptfont\tw@\twtysy \scriptscriptfont\tw@\svtnsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\@psfonts\@xxvpt{25}{20}{17}% +\@cmrset\twfvrm\twtyrm\svtnrm% +\def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\twtyly \scriptscriptfont\lyfam\svtnly +\@setstrut \rm} +\def\@xxvpt{} +% +% Fix accents for PostScript fonts (but break them for non-PostScript +% fonts.) -tgr, 6 April 91. +% +\def\H#1{{\accent"CD #1}}\def\.#1{{\accent"C7 #1}} +\def\dot{\mathaccent"70C7 } +\newdimen\aadimen +\def\AA{\leavevmode\setbox0\hbox{h}\aadimen\ht0 + \advance\aadimen-1ex\setbox0\hbox{A}\rlap{\raise.67\aadimen + \hbox to \wd0{\hss\char'27\hss}}A} +\def\pounds{\char163} diff --git a/Build/source/texk/dvipsk/contrib/latex209/psgreek.sty b/Build/source/texk/dvipsk/contrib/latex209/psgreek.sty new file mode 100644 index 00000000000..396976c8dfd --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/psgreek.sty @@ -0,0 +1,38 @@ +%-------------------------------------------------------------- +%---------- greek.sty --------------------- +%---------- 4/19/90 S. Janowsky ----------- +% +% Include as a style option after times, palatino, or whatever. +% +\def\@mathgreekmap#1{\@cmrscale=\@cmrfam \multiply\@cmrscale by 256 +\advance\@cmrscale by \the#1 \mathchardef#1=\@cmrscale\relax} +\@mathgreekmap{\Gamma} +\@mathgreekmap{\Delta} +\@mathgreekmap{\Theta} +\@mathgreekmap{\Lambda} +\@mathgreekmap{\Xi} +\@mathgreekmap{\Pi} +\@mathgreekmap{\Sigma} +\@mathgreekmap{\Upsilon} +\@mathgreekmap{\Phi} +\@mathgreekmap{\Psi} +\@mathgreekmap{\Omega} +% +\def\@mathaccdefmap#1#2{\@cmrscale=\@cmrfam \multiply\@cmrscale by 256 +\advance\@cmrscale by #2 \edef#1{\mathaccent\the\@cmrscale}\relax} +% +\@mathaccdefmap{\acute}{"0013 } +\@mathaccdefmap{\grave}{"0012 } +\@mathaccdefmap{\ddot}{"007F } +\@mathaccdefmap{\tilde}{"007E } +\@mathaccdefmap{\bar}{"0016 } +\@mathaccdefmap{\breve}{"0015 } +\@mathaccdefmap{\check}{"0014 } +\@mathaccdefmap{\hat}{"005E } +%\@mathaccdefmap{\vec}{"017E } % Not type 00 +\@mathaccdefmap{\dot}{"005F } +%\@mathaccdefmap{\widetilde}{"0365 } % Not type 00 +%\@mathaccdefmap{\widehat}{"0362 } % Not type 00 +% +%---------------------------------------------------- + diff --git a/Build/source/texk/dvipsk/contrib/latex209/rotate.sty b/Build/source/texk/dvipsk/contrib/latex209/rotate.sty new file mode 100644 index 00000000000..0660e117352 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/rotate.sty @@ -0,0 +1,53 @@ +% +% These macros allow you to rotate or flip a \TeX\ box. Very useful for +% sideways tables or upsidedown answers. +% +% To use, create a box containing the information you want to rotate. +% (An hbox or vbox will do.) Now call \@rotr\boxnum to rotate the +% material and create a new box with the appropriate (flipped) dimensions. +% \@rotr rotates right, \@rotl rotates left, \@rotu turns upside down, and +% \@rotf flips. These boxes may contain other rotated boxes. +% +\newdimen\@rotdimen +\newbox\@rotbox + +\def\@vspec#1{\special{ps:#1}}% passes #1 verbatim to the output +\def\@rotstart#1{\@vspec{gsave currentpoint currentpoint translate + #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation +\def\@rotfinish{\@vspec{currentpoint grestore moveto}}% gets back in synch +% +% First, the rotation right. The reference point of the rotated box +% is the lower right corner of the original box. +% +\def\@rotr#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1% + \hbox to\@rotdimen{\hskip\ht#1\vbox to\wd#1{\@rotstart{90 rotate}% + \box#1\vss}\hss}\@rotfinish} +% +% Next, the rotation left. The reference point of the rotated box +% is the upper left corner of the original box. +% +\def\@rotl#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1% + \hbox to\@rotdimen{\vbox to\wd#1{\vskip\wd#1\@rotstart{270 rotate}% + \box#1\vss}\hss}\@rotfinish}% +% +% Upside down is simple. The reference point of the rotated box +% is the upper right corner of the original box. (The box's height +% should be the current font's xheight, \fontdimen5\font, +% if you want that xheight to be at the baseline after rotation.) +% +\def\@rotu#1{\@rotdimen=\ht#1\advance\@rotdimen by\dp#1% + \hbox to\wd#1{\hskip\wd#1\vbox to\@rotdimen{\vskip\@rotdimen + \@rotstart{-1 dup scale}\box#1\vss}\hss}\@rotfinish}% +% +% And flipped end for end is pretty ysae too. We retain the baseline. +% +\def\@rotf#1{\hbox to\wd#1{\hskip\wd#1\@rotstart{-1 1 scale}% + \box#1\hss}\@rotfinish}% +% +% Now the user interface for LaTeX: \rotate[type]{text} where +% ``type'' is `l' for left, `r' for right, `u' for upside-down, or +% `f' for flip. `l' is the default. +% +\def\rotate{\@ifnextchar[{\@rotate}{\@rotate[l]}} +\def\@rotate[#1]#2{\setbox\@rotbox=\hbox{#2}\@nameuse{@rot#1}\@rotbox} + diff --git a/Build/source/texk/dvipsk/contrib/latex209/times.sty b/Build/source/texk/dvipsk/contrib/latex209/times.sty new file mode 100644 index 00000000000..3e384c8fee8 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/latex209/times.sty @@ -0,0 +1,11 @@ +% latex style with times roman text but cm math italic. + +\def\@mrm{ptmr}% times - roman +\def\@mit{ptmri}% times - italic +\def\@msl{ptmro}% times - oblique +\def\@mbf{ptmb}% times - bold +\def\@mcsc{ptmrc}% times - roman - small caps +\def\@mtt{pcrr}% courier +\def\@mss{phvr}% helvetica + +\input psfonts.sty diff --git a/Build/source/texk/dvipsk/contrib/psfntmac/ps_lfonts.tex b/Build/source/texk/dvipsk/contrib/psfntmac/ps_lfonts.tex new file mode 100644 index 00000000000..f2e73ca0443 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/psfntmac/ps_lfonts.tex @@ -0,0 +1,888 @@ +% File LFONTS - Version of 21 November 1989, +% plus modifications for PostScript Times family fonts (added by Larry +% Denenberg, larry@bbn.com, originally 5 Apr 88 and later 13 Feb 91). +% PS font names changed to use Karl Berry's names like dvips does, +% Stephen Gildea, Sep 92. + +% This version of LFONTS.TEX is for the CMR fonts. It was converted +% from the AMR version by David Fuchs on 18 December 1985. +% And corrected on 11 Nov 1986 by Leslie Lamport. +% Last vestige of AMR fonts removed 3 Mar 89 by Leslie Lamport. + +% This file needs to be customized for the fonts available at a particular +% site. There are three places where changes need to be made. They +% can be found by searching this file for the string FONT-CUSTOMIZING. +% +% FONT CONVENTIONS +% +% A TYPESTYLE COMMAND is something like \it that defines a type style. +% Each style command \xx is defined to be \protect\pxx, where +% \pxx is defined to choose the correct font for the current size. +% This allows style commands to appear in 'unsafe' arguments where +% protection is required. +% +% A SIZE COMMAND is something like \normalsize that defines a type size. +% It is defined by the document style. However, \normalsize is handled +% somewhat differently because it is called so often--e.g., on every +% page by the output routine. The document style defines \@normalsize +% instead of \normalsize. +% +% A ONE-SIZE typestyle is one that exists only in the \normalsize size. +% +% A FONT-SIZE COMMAND is one that defines \textfont, \scriptfont and +% \scriptscriptfont for the font families corresponding to preloaded fonts, +% as well as the typestyle commands for the preloaded fonts. Each +% font-size command has an associated @fontsize command, having the same +% name except for an '@' at the front. All font-size commands are defined +% in LFONTS. The naming convention is that a fifteenpt font has a font-size +% name \xvpt, and so on. +% +% Each size command \SIZE executes the command +% \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE +% which does the following. +% 0. Executes \@nomath\SIZE to issue warning if in math mode. +% 1. \let \@currsize = \SIZE +% 2. Sets \strutbox to a strut of height .7 * BASELINESKIP and +% depth .3 * BASELINESKIP +% +% Note: Charles Karney observed that step 2 is useless, since the +% \FONTSIZE command executed in step 4 resets \strutbox using +% the actual baselineskip, which is \baselinestretch * BASELINESKIP. +% Some day, this step may get removed. (Note made 28 Feb 89) +% +% 3. Sets \baselineskip to \baselinestretch * BASELINESKIP +% and +% 4. Calls \FONTSIZE +% 5. Executes the \@FONTSIZE command. +% It should then define all the typestyle commands not defined by the font-size +% command, except for the one-size type styles. A typestyle command for which +% the corresponding font exists but is not preloaded is defined to expand to a +% \@getfont command. A typestyle whose font does not exist is defined to +% expand to a \@subfont command. +% +% A one-size typestyle whose font is not preloaded is defined to expand to +% a \@onesizefont command. +% +% \em is defined to be \it inside an unslanted style and \rm inside a +% slanted style. An \em command in a section title will produce a \pem +% command in the table of contents. +% + +\def\em{\protect\pem{}} +\def\pem{\ifdim \fontdimen\@ne\font >\z@ \rm \else \it \fi} + +\def\normalsize{\ifx\@currsize\normalsize \rm \else \@normalsize\fi} + +% \load{SIZE}{STYLE} : Solves anomaly of loaded-on-demand font +% used for first time in math mode. Give this command outside math +% mode, before formula using it for first time. +\def\load#1#2{\let\@tempa\@currsize \let\@currsize\relax #1#2\@tempa} + +% \newfont{\CMD}{FONT} defines \CMD to be the font FONT. +% It is equivalent to \font \CMD = FONT +% \symbol{NUM} == \char NUM + +\def\newfont#1#2{\@ifdefinable #1{\font #1=#2\relax}} +\def\symbol#1{\char #1\relax} + + + +% \@getfont \STYLE \FAM \@FONTSIZE{LOADING.INFO} +% \STYLE = style command +% \FAM = a control sequence defined by \newfam\FAM +% \@FONTSIZE = the @fontsize command for the current size. +% LOADING.INFO = information needed to load the font--e.g., +% cmtti10 \magstep 2 +% Does the following, where \FONTNAME denotes a new unique, untypeable +% font name: +% 1. Executes \font \FONTNAME = LOADING.INFO +% 2. Appends '\textfont FAM \FONTNAME \def\STYLE{\fam \FAM \FONTNAME}' +% to the definition of \@FONTSIZE. +% 3. Executes \@FONTSIZE \STYLE. +% +% \@nohyphens\STYLE\@FONTSIZE +% Used right after \@getfont to set \hyphenchar of the new font to -1, +% thereby prohibiting hyphenation. It is used with \tt fonts. +% (\@nohyphens was added on 12/18/85) +% +% \@subfont \STYLE \REPSTYLE +% \STYLE, \REPSTYLE = type style commands. +% Types warning message and defines uses \REPSTYLE. +% +% \@onesizefont \STYLE {LOADING.INFO} +% Defines \STYLE to be a typestyle that exists only for the \normalsize +% size. It produces the font specified by LOADING.INFO +% +% \@addfontinfo\@FONTSIZE{DEFS} +% Expands DEFS and adds to the definition of \@FONTSIZE. Items that should +% not be expanded should be protected with \@prtct---except no protection +% is needed for '\def\foo', only for the contents of the definition. +% +% \@nomath\CS : Types a warning '\CS used in math mode' if encountered +% in math mode. + +% Remove \outer from definition of \newfam +\def\newfam{\alloc@8\fam\chardef\sixt@@n} + +\def\@setsize#1#2#3#4{\@nomath#1\let\@currsize#1\baselineskip + #2\setbox\strutbox\hbox{\vrule height.7\baselineskip + depth.3\baselineskip width\z@}\baselineskip\baselinestretch\baselineskip + \normalbaselineskip\baselineskip#3#4} + +\newif\if@bold + +\let\@prtct=\relax + +\def\@addfontinfo#1#2{{\def\@prtct{\noexpand\@prtct\noexpand}\def\def{\noexpand + \def\noexpand}\xdef#1{#1#2}}} + +\def\@getfont#1#2#3#4{\@ifundefined{\string #1\string #3}{\global\expandafter + \font \csname \string #1\string #3\endcsname #4\relax + \@addfontinfo#3{\textfont #2\csname \string #1\string #3\endcsname + \scriptfont #2\csname \string #1\string #3\endcsname + \scriptscriptfont #2\csname \string #1\string #3\endcsname + \def#1{\fam #2\csname\string #1\string #3\endcsname}}}{}#3#1} + +\def\@nohyphens#1#2{\global\expandafter \hyphenchar\csname + \string #1\string #2\endcsname \m@ne} + +\def\@subfont#1#2{\@warning{No \string#1\space typeface in + this size, using \string#2}#2} + +\def\@onesizefont#1#2{\expandafter\newfam\csname fm\string#1\endcsname + \global\expandafter\font\csname ft\string#1\endcsname #2\relax + \gdef#1{\ifx \@currsize\normalsize \@ftfam#1\else + \@warning{Typeface \string#1\space available only in + \string\normalsize, using \string\rm}\gdef #1{\ifx \@currsize\normalsize + \textfont\@fontfam#1 \scriptfont\@fontfam#1 \scriptscriptfont + \@fontfam#1\@ftfam#1\else \rm\fi}#1\fi}#1} + +\def\@ftfam#1{\fam\csname fm\string#1\endcsname\csname ft\string#1\endcsname} + +\def\@nomath#1{\ifmmode \@warning{\string#1\space in math mode.}\fi} +\def\@nomathbold{\ifmmode \@warning{\string\mathbold\space in math mode.}\fi} + +% The following definitions save token space. E.g., using \@height +% instead of height saves 5 tokens at the cost in time of one macro +% expansion. + +\def\@height{height} +\def\@depth{depth} +\def\@width{width} + +\def\@magscale#1{ scaled \magstep #1} +\def\@halfmag{ scaled \magstephalf} +\def\@ptscale#1{ scaled #100} + + +%% FONT-CUSTOMIZING: The following \font commands define the +%% preloaded LaTeX fonts. Font names should be changed to cause +%% different fonts to be loaded in place of these particular AMR fonts. +%% \font commands should be added or deleted to change which fonts +%% are preloaded. + +% five point + \font\fivrm = ptmr at 5pt % roman + \font\fivmi = cmmi5 % math italic + \skewchar\fivmi ='177 % for placement of accents +%\font\fivmib = cmmib10 \@ptscale5 % bold math italic + \font\fivsy = cmsy5 % math symbols + \skewchar\fivsy ='60 % for placement of math accents +%\font\fivsyb = cmbsy10 \@ptscale5 % bold math symbols +%\font\fivit = ptmri at 5pt % text italic +%\font\fivsl = ptmro at 5pt % slanted +%\font\fivbf = ptmb at 5pt % extended bold +%\font\fivbfs = ptmbo at 5pt % extended bold slanted +%\font\fivtt = pcrb at 5pt % typewriter +%\font\fivtti = cmitt10 \@ptscale5 % italic typewriter +%\font\fivtts = pcrbo at 5pt % slanted typewriter +%\font\fivsf = phvr at 5pt % sans serif +%\font\fivsfi = phvro at 5pt % italic sans serif +%\font\fivsfb = phvb at 5pt % bold sans serif +%\font\fivsc = cmcsc10 \@ptscale5 % small caps + \font\fivly = lasy5 % LaTeX symbols +%\font\fivlyb = lasyb10 \@ptscale5 % LaTeX symbols +%\font\fivuit = ptmru at 5pt % unslanted italic + +% six point + \font\sixrm = ptmr at 6pt % roman + \font\sixmi = cmmi6 % math italic + \skewchar\sixmi ='177 % for placement of accents +%\font\sixmib = cmmib10 \@ptscale6 % bold math italic + \font\sixsy = cmsy6 % math symbols + \skewchar\sixsy ='60 % for placement of math accents +%\font\sixsyb = cmbsy10 \@ptscale6 % bold math symbols +%\font\sixit = ptmri at 6pt % text italic +%\font\sixsl = ptmro at 6pt % slanted +%\font\sixbf = ptmb at 6pt % extended bold +%\font\sixbfs = ptmbo at 6pt % extended bold slanted +%\font\sixtt = pcrb at 6pt % typewriter +%\font\sixtti = cmitt10 \@ptscale6 % italic typewriter +%\font\sixtts = pcrbo at 6pt % slanted typewriter +%\font\sixsf = phvr at 6pt % sans serif +%\font\sixsfi = cmssi10 \@ptscale6 % italic sans serif +%\font\sixsfb = phvb at 6pt % bold sans serif +%\font\sixsc = ptmrc at 6pt % small caps + \font\sixly = lasy6 % LaTeX symbols +%\font\sixlyb = lasyb10 \@ptscale6 % LaTeX symbols +%\font\sixuit = ptmru at 6pt % unslanted italic + +% seven point + \font\sevrm = ptmr at 7pt % roman + \font\sevmi = cmmi7 % math italic + \skewchar\sevmi ='177 % for placement of accents +%\font\sevmib = cmmib10 \@ptscale7 % bold math italic + \font\sevsy = cmsy7 % math symbols + \skewchar\sevsy ='60 % for placement of math accents +%\font\sevsyb = cmbsy10 \@ptscale7 % bold math symbols + \font\sevit = ptmri at 7pt % text italic +%\font\sevsl = ptmro at 7pt % slanted +%\font\sevbf = ptmb at 7pt % extended bold +%\font\sevbfs = ptmbo at 7pt % extended bold slanted +%\font\sevtt = pcrb at 7pt % typewriter +%\font\sevtti = cmitt10 \@ptscale7 % italic typewriter +%\font\sevtts = pcrbo at 7pt % slanted typewriter +%\font\sevsf = phvr at 7pt % sans serif +%\font\sevsfi = cmssi10 \@ptscale7 % italic sans serif +%\font\sevsfb = phvb at 7pt % bold sans serif +%\font\sevsc = ptmrc at 7pt % small caps + \font\sevly = lasy7 % LaTeX symbols +%\font\sevlyb = lasyb10 \@ptscale7 % LaTeX symbols +%\font\sevuit = ptmru at 7pt % unslanted italic + +% eight point + \font\egtrm = ptmr at 8pt % roman + \font\egtmi = cmmi8 % math italic + \skewchar\egtmi ='177 % for placement of accents +%\font\egtmib = cmmib10 \@ptscale8 % bold math italic + \font\egtsy = cmsy8 % math symbols + \skewchar\egtsy ='60 % for placement of math accents +%\font\egtsyb = cmbsy10 \@ptscale8 % bold math symbols + \font\egtit = ptmri at 8pt % text italic +%\font\egtsl = ptmro at 8pt % slanted +%\font\egtbf = ptmb at 8pt % extended bold +%\font\egtbfs = ptmbo at 8pt % extended bold slanted +%\font\egttt = pcrb at 8pt % typewriter +%\font\egttti = cmitt10 \@ptscale8 % italic typewriter +%\font\egttts = pcrbo at 8pt % slanted typewriter +%\font\egtsf = phvr at 8pt % sans serif +%\font\egtsfi = cmssi10 \@ptscale8 % italic sans serif +%\font\egtsfb = phvb at 8pt % bold sans serif +%\font\egtsc = ptmrc at 8pt % small caps + \font\egtly = lasy8 % LaTeX symbols +%\font\egtlyb = lasyb10 \@ptscale8 % LaTeX symbols +%\font\egtuit = ptmru at 8pt % unslanted italic + + +% nine point + \font\ninrm = ptmr at 9pt % roman + \font\ninmi = cmmi9 % math italic + \skewchar\ninmi ='177 % for placement of accents +%\font\ninmib = cmmib10 \@ptscale9 % bold math italic + \font\ninsy = cmsy9 % math symbols + \skewchar\ninsy ='60 % for placement of math accents +%\font\ninsyb = cmbsy10 \@ptscale9 % bold math symbols + \font\ninit = ptmri at 9pt % text italic +%\font\ninsl = ptmro at 9pt % slanted + \font\ninbf = ptmb at 9pt % extended bold +%\font\ninbfs = ptmbo at 9pt % extended bold slanted + \font\nintt = pcrb at 9pt % typewriter + \hyphenchar\nintt = -1 % suppress hyphenation in \tt font +%\font\nintti = cmitt10 \@ptscale9 % italic typewriter +%\font\nintts = pcrbo at 9pt % slanted typewriter +%\font\ninsf = phvr at 9pt % sans serif +%\font\ninsfi = cmssi10 \@ptscale9 % italic sans serif +%\font\ninsfb = phvb at 9pt % bold sans serif +%\font\ninsc = ptmrc at 9pt % small caps + \font\ninly = lasy9 % LaTeX symbols +%\font\ninlyb = lasyb10 \@ptscale9 % LaTeX symbols +%\font\ninuit = ptmru at 9pt % unslanted italic + +% ten point + \font\tenrm = ptmr at 10pt % roman + \font\tenmi = cmmi10 % math italic + \skewchar\tenmi ='177 % for placement of accents +%\font\tenmib = cmmib10 % bold math italic + \font\tensy = cmsy10 % math symbols + \skewchar\tensy ='60 % for placement of math accents +%\font\tensyb = cmbsy10 % bold symbols + \font\tenit = ptmri % text italic + \font\tensl = ptmro % slanted + \font\tenbf = ptmb % extended bold +%\font\tenbfs = ptmbo % extended bold slanted + \font\tentt = pcrb % typewriter + \hyphenchar\tentt = -1 % suppress hyphenation in \tt font +%\font\tentti = cmitt10 % italic typewriter +%\font\tentts = pcrbo % slanted typewriter + \font\tensf = phvr at 10pt % sans serif +%\font\tensfi = cmssi10 % italic sans serif +%\font\tensfb = phvb at 10pt % bold sans serif +%\font\tensc = ptmrc % small caps + \font\tenly = lasy10 % LaTeX symbols +%\font\tenlyb = lasyb10 % bold LaTeX symbols +%\font\tenuit = ptmru % unslanted italic + +% eleven point + \font\elvrm = ptmr at 11pt % roman + \font\elvmi = cmmi10 \@halfmag % math italic + \skewchar\elvmi ='177 % for placement of accents +%\font\elvmib = cmmib10 \@halfmag % bold math italic + \font\elvsy = cmsy10 \@halfmag % math symbols + \skewchar\elvsy ='60 % for placement of math accents +%\font\elvsyb = cmbsy10 \@halfmag % bold symbols + \font\elvit = ptmri at 11pt % text italic + \font\elvsl = ptmro at 11pt % slanted + \font\elvbf = ptmb at 11pt % exelvded bold +%\font\elvbfs = ptmbo at 11pt % exelvded bold slanted + \font\elvtt = pcrb at 11pt % typewriter + \hyphenchar\elvtt = -1 % suppress hyphenation in \tt font +%\font\elvtti = cmitt10 \@halfmag % italic typewriter +%\font\elvtts = pcrbo at 11pt % slanted typewriter + \font\elvsf = phvr at 11pt % sans serif +%\font\elvsfi = phvro at 11pt % italic sans serif +%\font\elvsfb = phvb at 11pt % bold sans serif +%\font\elvsc = ptmrc at 11pt % small caps + \font\elvly = lasy10 \@halfmag % LaTeX symbols +%\font\elvlyb = lasyb10 \@halfmag % bold LaTeX symbols +%\font\elvuit = ptmru at 11pt % unslanted italic + +% twelve point + \font\twlrm = ptmr at 12pt % roman + \font\twlmi = cmmi12 % math italic + \skewchar\twlmi ='177 % for placement of accents +%\font\twlmib = cmmib10 \@magscale1 % bold math italic + \font\twlsy = cmsy10 \@magscale1 % math symbols + \skewchar\twlsy ='60 % for placement of math accents +%\font\twlsyb = cmbsy10 \@magscale1 % bold symbols + \font\twlit = ptmri at 12pt % text italic + \font\twlsl = ptmro at 12pt % slanted + \font\twlbf = ptmb at 12pt % extended bold +%\font\twlbfs = ptmbo at 12pt % extended bold slanted + \font\twltt = pcrb at 12pt % typewriter + \hyphenchar\twltt = -1 % suppress hyphenation in \tt font +%\font\twltti = cmitt10 \@magscale1 % italic typewriter +%\font\twltts = pcrbo at 12pt % slanted typewriter + \font\twlsf = phvr at 12pt % sans serif +%\font\twlsfi = cmssi10 \@magscale1 % italic sans serif +%\font\twlsfb = phvb at 12pt % bold sans serif +%\font\twlsc = ptmrc at 12pt % small caps + \font\twlly = lasy10 \@magscale1 % LaTeX symbols +%\font\twllyb = lasyb10 \@magscale1 % bold LaTeX symbols +%\font\twluit = ptmru at 12pt % unslanted italic + +% fourteen point + \font\frtnrm = ptmr at 14pt % roman + \font\frtnmi = cmmi10 \@magscale2 % math italic + \skewchar\frtnmi ='177 % for placement of accents +%\font\frtnmib = cmmib10 \@magscale2 % bold math italic + \font\frtnsy = cmsy10 \@magscale2 % math symbols + \skewchar\frtnsy ='60 % for placement of math accents +%\font\frtnsyb = cmbsy10 \@magscale2 % bold symbols +%\font\frtnit = ptmri at 14pt % text italic +%\font\frtnsl = ptmro at 14pt % slanted + \font\frtnbf = ptmb at 14pt % extended bold +%\font\frtnbfs = ptmbo at 14pt % extended bold slanted +%\font\frtntt = pcrb at 14pt % typewriter +%\font\frtntti = cmitt10 \@magscale2 % italic typewriter +%\font\frtntts = pcrbo at 14pt % slanted typewriter +%\font\frtnsf = phvr at 14pt % sans serif +%\font\frtnsfi = cmssi10 \@magscale2 % italic sans serif +%\font\frtnsfb = phvb at 14pt % bold sans serif +%\font\frtnsc = ptmrc at 14pt % small caps + \font\frtnly = lasy10 \@magscale2 % LaTeX symbols +%\font\frtnlyb = lasyb10 \@magscale2 % bold LaTeX symbols +%\font\frtnuit = ptmru at 14pt % unslanted italic + +% seventeen point + \font\svtnrm = ptmr at 17pt % roman + \font\svtnmi = cmmi10 \@magscale3 % math italic + \skewchar\svtnmi ='177 % for placement of accents +%\font\svtnmib = cmmib10 \@magscale3 % bold math italic + \font\svtnsy = cmsy10 \@magscale3 % math symbols + \skewchar\svtnsy ='60 % for placement of math accents +%\font\svtnsyb = cmbsy10 \@magscale3 % bold symbols +%\font\svtnit = ptmri at 17pt % text italic +%\font\svtnsl = ptmro at 17pt % slanted + \font\svtnbf = ptmb at 17pt % extended bold +%\font\svtnbfs = ptmbo at 17pt % extended bold slanted +%\font\svtntt = pcrb at 17pt % typewriter +%\font\svtntti = cmitt10 \@magscale3 % italic typewriter +%\font\svtntts = pcrbo at 17pt % slanted typewriter +%\font\svtnsf = phvr at 17pt % sans serif +%\font\svtnsfi = cmssi10 \@magscale3 % italic sans serif +%\font\svtnsfb = phvb at 17pt % bold sans serif +%\font\svtnsc = ptmrc at 17pt % small caps + \font\svtnly = lasy10 \@magscale3 % LaTeX symbols +%\font\svtnlyb = lasyb10 \@magscale3 % bold LaTeX symbols +%\font\svtnuit = ptmru at 17pt % unslanted italic + +% twenty point + \font\twtyrm = ptmr at 20pt % roman + \font\twtymi = cmmi10 \@magscale4 % math italic + \skewchar\twtymi ='177 % for placement of accents +%\font\twtymib = cmmib10 \@magscale4 % bold math italic + \font\twtysy = cmsy10 \@magscale4 % math symbols + \skewchar\twtysy ='60 % for placement of math accents +%\font\twtysyb = cmbsy10 \@magscale4 % bold symbols +%\font\twtyit = ptmri at 20pt % text italic +%\font\twtysl = ptmro at 20pt % slanted +%\font\twtybf = ptmb at 20pt % extended bold +%\font\twtybfs = ptmbo at 20pt % extended bold slanted +%\font\twtytt = pcrb at 20pt % typewriter +%\font\twtytti = cmitt10 \@magscale4 % italic typewriter +%\font\twtytts = pcrbo at 20pt % slanted typewriter +%\font\twtysf = phvr at 20pt % sans serif +%\font\twtysfi = cmssi10 \@magscale4 % italic sans serif +%\font\twtysfb = phvb at 20pt % bold sans serif +%\font\twtysc = ptmrc at 20pt % small caps + \font\twtyly = lasy10 \@magscale4 % LaTeX symbols +%\font\twtylyb = lasyb10 \@magscale4 % bold LaTeX symbols +%\font\twtyuit = ptmru at 20pt % unslanted italic + +% twenty-five point + \font\twfvrm = ptmr at 25pt % roman +%\font\twfvmi = cmmi10 \@magscale5 % math italic +%\font\twfvmib = cmmib10 \@magscale5 % bold math italic +%\font\twfvsy = cmsy10 \@magscale5 % math symbols +%\font\twfvsyb = cmbsy10 \@magscale5 % bold symbols +%\font\twfvit = ptmri at 25pt % text italic +%\font\twfvsl = ptmro at 25pt % slanted +%\font\twfvbf = ptmb at 25pt % extended bold +%\font\twfvbfs = ptmbo at 25pt % extended bold slanted +%\font\twfvtt = pcrb at 25pt % typewriter +%\font\twfvtti = cmitt10 \@magscale5 % italic typewriter +%\font\twfvtts = pcrbo at 25pt % slanted typewriter +%\font\twfvsf = phvr at 25pt % sans serif +%\font\twfvsfi = cmssi10 \@magscale5 % italic sans serif +%\font\twfvsfb = phvb at 25pt % bold sans serif +%\font\twfvsc = ptmrc at 25pt % small caps +%\font\twfvly = lasy10 \@magscale5 % LaTeX symbols +%\font\twfvlyb = lasyb10 \@magscale5 % bold LaTeX symbols +%\font\twfvuit = ptmru at 25pt % unslanted italic + +% Math extension + \font\tenex = cmex10 + +% line & circle fonts +\font\tenln = line10 +\font\tenlnw = linew10 +\font\tencirc = lcircle10 % 21 Nov 89 : circle10 -> lcircle10 +\font\tencircw = lcirclew10 % 21 Nov 89 : circlew10 -> lcirclew10 + +% Change made 6 May 86: `\@warning' replaced by `\immediate\write 15' +% since it's not defined when lfonts.tex is read by lplain.tex. +% +\ifnum\fontdimen8\tenln=\fontdimen8\tencirc \else + \immediate\write 15{Incompatible thin line and circle fonts}\fi +\ifnum\fontdimen8\tenlnw=\fontdimen8\tencircw \else + \immediate\write 15{Incompatible thick line and circle fonts}\fi + + +% protected font names +\def\rm{\protect\prm} +\def\it{\protect\pit} +\def\bf{\protect\pbf} +\def\sl{\protect\psl} +\def\sf{\protect\psf} +\def\sc{\protect\psc} +\def\tt{\protect\ptt} + +%% FONT-CUSTOMIZING: The following definitions define certain commands +%% to be abbreviations for certain font names. These commands are used +%% below in \@getfont commands, which load the loaded-on-demand fonts. +%% This is done only to save space. To change the fonts that are loaded +%% on demand, one can either change these definitions or else change +%% the arguments of the \@getfont commands. +%% +\def\@mbi{cmmib10} +\def\@mbsy{cmbsy10} +\def\@mcsc{ptmrc} +\def\@mss{phvr} +\def\@lasyb{lasyb10} + +% families + +\newfam\itfam % \it is family 4 +\newfam\slfam % \sl is family 5 +\newfam\bffam % \bf is family 6 +\newfam\ttfam % \tt is family 7 +\newfam\sffam % \sf is family 8 +\newfam\scfam % \sf is family 9 +\newfam\lyfam % \ly is family 10 + +\def\cal{\fam\tw@} +\def\mit{\fam\@ne} + +\def\@setstrut{\setbox\strutbox=\hbox{\vrule \@height .7\baselineskip + \@depth .3\baselineskip \@width\z@}} + + +%% FONT-CUSTOMIZING: The commands \vpt, \vipt, ... , \xxvpt perform all +%% the declarations needed to change the type size to 5pt, 6pt, ... , +%% 25pt. To see how this works, consider the definition of \viipt, +%% which determines the fonts used in a 7pt type size. The command +%% \def\pit{\fam\itfam\sevit} +%% means that the \it command causes the preloaded \sevit font to +%% be used--this font was defined earlier with a \font\sevit... +%% command. The commands +%% \textfont\itfam\sevit +%% \scriptfont\itfam\sevit +%% \scriptscriptfont\itfam\sevit +%% tell TeX to use the \sevit font for all three math-mode sizes +%% (text, script, and scriptscript) for the 7pt size. +%% The fonts appearing in these commands must be preloaded. +%% +%% The command +%% \def\pbf{\@getfont\pbf\bffam\@viipt{ambx7}} +%% declares \bf to use a loaded-on-demand font--namely, the font +%% ambx7. +%% +%% The command +%% \def\ptt{\@subfont\tt\rm} +%% declares that the \tt font is unavailable in the 7pt size, so +%% the \rm font is used instead. (The substituted type style should +%% correspond to a preloaded size.) + +\def\vpt{\textfont\z@\fivrm + \scriptfont\z@\fivrm \scriptscriptfont\z@\fivrm +\textfont\@ne\fivmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\fivsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\prm{\fam\z@\fivrm}% +\def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\fam\@ne\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\pit{\@subfont\it\rm}% +\def\psl{\@subfont\sl\rm}% +\def\pbf{\@getfont\pbf\bffam\@vpt{ptmb at 5pt}}% +\def\ptt{\@subfont\tt\rm}% +\def\psf{\@subfont\sf\rm}% +\def\psc{\@subfont\sc\rm}% +\def\ly{\fam\lyfam\fivly}\textfont\lyfam\fivly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly +\@setstrut\rm} + +\def\@vpt{} + +\def\vipt{\textfont\z@\sixrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\sixrm +\textfont\@ne\sixmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\sixmi +\textfont\tw@\sixsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\sixsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\prm{\fam\z@\sixrm}% +\def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\pit{\@subfont\it\rm}% +\def\psl{\@subfont\sl\rm}% +\def\pbf{\@getfont\pbf\bffam\@vipt{ptmb at 6pt}}% +\def\ptt{\@subfont\tt\rm}% +\def\psf{\@subfont\sf\rm}% +\def\psc{\@subfont\sc\rm}% +\def\ly{\fam\lyfam\sixly}\textfont\lyfam\sixly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\sixly +\@setstrut\rm} + +\def\@vipt{} + +\def\viipt{\textfont\z@\sevrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm +\textfont\@ne\sevmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\sevsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\prm{\fam\z@\sevrm}% +\def\unboldmath{\everymath{}\everydisplay{}\@nomath +\unboldmath\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\pit{\fam\itfam\sevit}\textfont\itfam\sevit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit +\def\psl{\@subfont\sl\it}% +\def\pbf{\@getfont\pbf\bffam\@viipt{ptmb at 7pt}}% +\def\ptt{\@subfont\tt\rm}% +\def\psf{\@subfont\sf\rm}% +\def\psc{\@subfont\sc\rm}% +\def\ly{\fam\lyfam\sevly}\textfont\lyfam\sevly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} + +\def\@viipt{} + +\def\viiipt{\textfont\z@\egtrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm +\textfont\@ne\egtmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\egtsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\prm{\fam\z@\egtrm}% +\def\unboldmath{\everymath{}\everydisplay{}\@nomath +\unboldmath\@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\pit{\fam\itfam\egtit}\textfont\itfam\egtit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit +\def\psl{\@getfont\psl\slfam\@viiipt{ptmro at 8pt}}% +\def\pbf{\@getfont\pbf\bffam\@viiipt{ptmbo at 8pt}}% +\def\ptt{\@getfont\ptt\ttfam\@viiipt{pcrb at 8pt}\@nohyphens\ptt\@viiipt}% +\def\psf{\@getfont\psf\sffam\@viiipt{phvr at 8pt}}% +\def\psc{\@getfont\psc\scfam\@viiipt{\@mcsc \@ptscale8}}% +\def\ly{\fam\lyfam\egtly}\textfont\lyfam\egtly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} + +\def\@viiipt{} + +\def\ixpt{\textfont\z@\ninrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm +\textfont\@ne\ninmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\ninsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\prm{\fam\z@\ninrm}% +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\pit{\fam\itfam\ninit}\textfont\itfam\ninit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit +\def\psl{\@getfont\psl\slfam\@ixpt{ptmro at 9pt}}% +\def\pbf{\fam\bffam\ninbf}\textfont\bffam\ninbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf +\def\ptt{\fam\ttfam\nintt}\textfont\ttfam\nintt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt +\def\psf{\@getfont\psf\sffam\@ixpt{phvr at 9pt}}% +\def\psc{\@getfont\psc\scfam\@ixpt{\@mcsc \@ptscale9}}% +\def\ly{\fam\lyfam\ninly}\textfont\lyfam\ninly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} + +\def\@ixpt{} + +\def\xpt{\textfont\z@\tenrm + \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm +\textfont\@ne\tenmi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\tensy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\tenmi + \textfont\tw@\tensy \textfont\lyfam\tenly + \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{tenmib}{\global\font\tenmib\@mbi + \global\font\tensyb\@mbsy + \global\font\tenlyb\@lasyb\relax\@addfontinfo\@xpt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\tenmib \textfont\tw@\tensyb + \textfont\lyfam\tenlyb \@prtct\@boldtrue}}}{}\@xpt\boldmath}% +\def\prm{\fam\z@\tenrm}% +\def\pit{\fam\itfam\tenit}\textfont\itfam\tenit \scriptfont\itfam\sevit + \scriptscriptfont\itfam\sevit +\def\psl{\fam\slfam\tensl}\textfont\slfam\tensl + \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl +\def\pbf{\fam\bffam\tenbf}\textfont\bffam\tenbf + \scriptfont\bffam\tenbf \scriptscriptfont\bffam\tenbf +\def\ptt{\fam\ttfam\tentt}\textfont\ttfam\tentt + \scriptfont\ttfam\tentt \scriptscriptfont\ttfam\tentt +\def\psf{\fam\sffam\tensf}\textfont\sffam\tensf + \scriptfont\sffam\tensf \scriptscriptfont\sffam\tensf +\def\psc{\@getfont\psc\scfam\@xpt{\@mcsc}}% +\def\ly{\fam\lyfam\tenly}\textfont\lyfam\tenly + \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} + +\def\@xpt{} + +\def\xipt{\textfont\z@\elvrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm +\textfont\@ne\elvmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi +\textfont\tw@\elvsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\elvmi \textfont\tw@\elvsy + \textfont\lyfam\elvly \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{elvmib}{\global\font\elvmib\@mbi\@halfmag + \global\font\elvsyb\@mbsy\@halfmag + \global\font\elvlyb\@lasyb\@halfmag\relax\@addfontinfo\@xipt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\elvmib \textfont\tw@\elvsyb + \textfont\lyfam\elvlyb\@prtct\@boldtrue}}}{}\@xipt\boldmath}% +\def\prm{\fam\z@\elvrm}% +\def\pit{\fam\itfam\elvit}\textfont\itfam\elvit + \scriptfont\itfam\egtit \scriptscriptfont\itfam\sevit +\def\psl{\fam\slfam\elvsl}\textfont\slfam\elvsl + \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl +\def\pbf{\fam\bffam\elvbf}\textfont\bffam\elvbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf +\def\ptt{\fam\ttfam\elvtt}\textfont\ttfam\elvtt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt +\def\psf{\fam\sffam\elvsf}\textfont\sffam\elvsf + \scriptfont\sffam\tensf \scriptscriptfont\sffam\tensf +\def\psc{\@getfont\psc\scfam\@xipt{\@mcsc\@halfmag}}% +\def\ly{\fam\lyfam\elvly}\textfont\lyfam\elvly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly +\@setstrut \rm} + +\def\@xipt{} + +\def\xiipt{\textfont\z@\twlrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm +\textfont\@ne\twlmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi +\textfont\tw@\twlsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twlmi + \textfont\tw@\twlsy \textfont\lyfam\twlly + \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{twlmib}{\global\font\twlmib\@mbi\@magscale1\global + \font\twlsyb\@mbsy \@magscale1\global\font + \twllyb\@lasyb\@magscale1\relax\@addfontinfo\@xiipt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\twlmib \textfont\tw@\twlsyb + \textfont\lyfam\twllyb\@prtct\@boldtrue}}}{}\@xiipt\boldmath}% +\def\prm{\fam\z@\twlrm}% +\def\pit{\fam\itfam\twlit}\textfont\itfam\twlit \scriptfont\itfam\egtit + \scriptscriptfont\itfam\sevit +\def\psl{\fam\slfam\twlsl}\textfont\slfam\twlsl + \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl +\def\pbf{\fam\bffam\twlbf}\textfont\bffam\twlbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf +\def\ptt{\fam\ttfam\twltt}\textfont\ttfam\twltt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt +\def\psf{\fam\sffam\twlsf}\textfont\sffam\twlsf + \scriptfont\sffam\tensf \scriptscriptfont\sffam\tensf +\def\psc{\@getfont\psc\scfam\@xiipt{\@mcsc\@magscale1}}% +\def\ly{\fam\lyfam\twlly}\textfont\lyfam\twlly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly + \@setstrut \rm} + +\def\@xiipt{} + +\def\xivpt{\textfont\z@\frtnrm + \scriptfont\z@\tenrm \scriptscriptfont\z@\sevrm +\textfont\@ne\frtnmi \scriptfont\@ne\tenmi \scriptscriptfont\@ne\sevmi +\textfont\tw@\frtnsy \scriptfont\tw@\tensy \scriptscriptfont\tw@\sevsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\frtnmi \textfont\tw@\frtnsy + \textfont\lyfam\frtnly \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{frtnmib}{\global\font + \frtnmib\@mbi\@magscale2\global\font\frtnsyb\@mbsy\@magscale2 + \global\font\frtnlyb\@lasyb\@magscale2\relax\@addfontinfo\@xivpt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\frtnmib \textfont\tw@\frtnsyb + \textfont\lyfam\frtnlyb\@prtct\@boldtrue}}}{}\@xivpt\boldmath}% +\def\prm{\fam\z@\frtnrm}% +\def\pit{\@getfont\pit\itfam\@xivpt{ptmri at 14pt}}% +\def\psl{\@getfont\psl\slfam\@xivpt{ptmro at 14pt}}% +\def\pbf{\fam\bffam\frtnbf}\textfont\bffam\frtnbf + \scriptfont\bffam\tenbf \scriptscriptfont\bffam\ninbf +\def\ptt{\@getfont\ptt\ttfam\@xivpt{pcrb at 14pt}\@nohyphens\ptt\@xivpt}% +\def\psf{\@getfont\psf\sffam\@xivpt{\@mss\@magscale2}}% +\def\psc{\@getfont\psc\scfam\@xivpt{\@mcsc\@magscale2}}% +\def\ly{\fam\lyfam\frtnly}\textfont\lyfam\frtnly + \scriptfont\lyfam\tenly \scriptscriptfont\lyfam\sevly +\@setstrut \rm} + +\def\@xivpt{} + +\def\xviipt{\textfont\z@\svtnrm + \scriptfont\z@\twlrm \scriptscriptfont\z@\tenrm +\textfont\@ne\svtnmi \scriptfont\@ne\twlmi \scriptscriptfont\@ne\tenmi +\textfont\tw@\svtnsy \scriptfont\tw@\twlsy \scriptscriptfont\tw@\tensy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\svtnmi \textfont\tw@\svtnsy \textfont\lyfam\svtnly + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\prm{\fam\z@\svtnrm}% +\def\pit{\@getfont\pit\itfam\@xviipt{ptmri at 17pt}}% +\def\psl{\@getfont\psl\slfam\@xviipt{ptmro at 17pt}}% +\def\pbf{\fam\bffam\svtnbf}\textfont\bffam\svtnbf + \scriptfont\bffam\twlbf \scriptscriptfont\bffam\tenbf +\def\ptt{\@getfont\ptt\ttfam\@xviipt{pcrb at 17pt}\@nohyphens + \ptt\@xviipt}% +\def\psf{\@getfont\psf\sffam\@xviipt{\@mss\@magscale3}}% +\def\psc{\@getfont\psc\scfam\@xviipt{\@mcsc\@magscale3}}% +\def\ly{\fam\lyfam\svtnly}\textfont\lyfam\svtnly + \scriptfont\lyfam\twlly \scriptscriptfont\lyfam\tenly +\@setstrut \rm} + +\def\@xviipt{} + +\def\xxpt{\textfont\z@\twtyrm + \scriptfont\z@\frtnrm \scriptscriptfont\z@\twlrm +\textfont\@ne\twtymi \scriptfont\@ne\frtnmi \scriptscriptfont\@ne\twlmi +\textfont\tw@\twtysy \scriptfont\tw@\frtnsy \scriptscriptfont\tw@\twlsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\prm{\fam\z@\twtyrm}% +\def\pit{\@getfont\pit\itfam\@xxpt{ptmri at 20pt}}% +\def\psl{\@getfont\psl\slfam\@xxpt{ptmro at 20pt}}% +\def\pbf{\@getfont\pbf\bffam\@xxpt{ptmb at 20pt}}% +\def\ptt{\@getfont\ptt\ttfam\@xxpt{pcrb at 20pt}\@nohyphens\ptt\@xxpt}% +\def\psf{\@getfont\psf\sffam\@xxpt{\@mss\@magscale4}}% +\def\psc{\@getfont\psc\scfam\@xxpt{\@mcsc\@magscale4}}% +\def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\frtnly \scriptscriptfont\lyfam\twlly +\@setstrut \rm} + +\def\@xxpt{} + +\def\xxvpt{\textfont\z@\twfvrm + \scriptfont\z@\twtyrm \scriptscriptfont\z@\svtnrm +\textfont\@ne\twtymi \scriptfont\@ne\twtymi \scriptscriptfont\@ne\svtnmi +\textfont\tw@\twtysy \scriptfont\tw@\twtysy \scriptscriptfont\tw@\svtnsy +\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse +\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\prm{\fam\z@\twfvrm}% +\def\pit{\@subfont\it\rm}% +\def\psl{\@subfont\sl\rm}% +\def\pbf{\@getfont\pbf\bffam\@xxvpt{ptmb at 25pt}}% +\def\ptt{\@subfont\tt\rm}% +\def\psf{\@subfont\sf\rm}% +\def\psc{\@subfont\sc\rm}% +\def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\twtyly \scriptscriptfont\lyfam\svtnly +\@setstrut \rm} + +\def\@xxvpt{} + +% SPECIAL LaTeX character definitions + +% Definitions of math operators added by LaTeX +\mathchardef\mho"0A30 +\mathchardef\Join"3A31 +\mathchardef\Box"0A32 +\mathchardef\Diamond"0A33 +\mathchardef\leadsto"3A3B +\mathchardef\sqsubset"3A3C +\mathchardef\sqsupset"3A3D +\def\lhd{\mathbin{< \hbox to -.43em{}\hbox{\vrule + \@width .065em \@height .55em \@depth .05em}\hbox to .2em{}}} +\def\rhd{\mathbin{\hbox to .3em{}\hbox{\vrule \@width .065em \@height + .55em \@depth .05em}\hbox to -.43em{}>}} +\def\unlhd{\mathbin{\leq \hbox to -.43em{}\hbox + {\vrule \@width .065em \@height .63em \@depth -.08em}\hbox to .2em{}}} +\def\unrhd{\mathbin{ \hbox to .3em{}\hbox + {\vrule \@width .065em \@height .63em \@depth -.08em}\hbox to -.43em{}\geq}} + +% Definition of \$ to work in italic font (since it produces a pound sterling +% sign in the cmit font. + +\def\${\protect\pdollar} +\def\pdollar{{\ifdim \fontdimen\@ne\font >\z@ \sl \fi\char`\$}} + +% Definition of pound sterling sign. +% Modified 10 Apr 89 to work in math mode. + +\def\pounds{\protect\ppounds} +\def\ppounds{\relax\ifmmode\mathchar"424\else{\it \char'44}\fi} + + +% Definition of \copyright changed so it works in other type styles, +% and so it is robust +\def\copyright{\protect\pcopyright} +\def\pcopyright{{\rm\ooalign{\hfil + \raise.07ex\hbox{c}\hfil\crcr\mathhexbox20D}}} diff --git a/Build/source/texk/dvipsk/contrib/psfntmac/ps_plain.tex b/Build/source/texk/dvipsk/contrib/psfntmac/ps_plain.tex new file mode 100644 index 00000000000..702194102b7 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/psfntmac/ps_plain.tex @@ -0,0 +1,1235 @@ +% This is the plain TeX format that's described in The TeXbook. +% N.B.: A version number is defined at the very end of this file; +% please change that number whenever the file is modified! +% And don't modify the file under any circumstances. +% Modified for Postcript built-in fonts, 29 Apr 87, +% John Robinson (jr@bbn.com), version 1.6PS +% Modifications extended to version 2.3 by Larry Denenberg (larry@bbn.com) +% 5 Apr 88, and then to version 3.0 on 13 Feb 91. +% PS font names changed to use Karl Berry's names like dvips does, +% Stephen Gildea, Sep 92. + +\catcode`\{=1 % left brace is begin-group character +\catcode`\}=2 % right brace is end-group character +\catcode`\$=3 % dollar sign is math shift +\catcode`\&=4 % ampersand is alignment tab +\catcode`\#=6 % hash mark is macro parameter character +\catcode`\^=7 \catcode`\^^K=7 % circumflex and uparrow are for superscripts +\catcode`\_=8 \catcode`\^^A=8 % underline and downarrow are for subscripts +\catcode`\^^I=10 % ascii tab is a blank space +\chardef\active=13 \catcode`\~=\active % tilde is active +\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par" + +\message{Preloading the plain format: codes,} + +% We had to define the \catcodes right away, before the message line, +% since \message uses the { and } characters. +% When INITEX (the TeX initializer) starts up, +% it has defined the following \catcode values: +% \catcode`\^^@=9 % ascii null is ignored +% \catcode`\^^M=5 % ascii return is end-line +% \catcode`\\=0 % backslash is TeX escape character +% \catcode`\%=14 % percent sign is comment character +% \catcode`\ =10 % ascii space is blank space +% \catcode`\^^?=15 % ascii delete is invalid +% \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters +% \catcode`\a=11 ... \catcode`\z=11 % lowercase letters +% all others are type 12 (other) + +% Here is a list of the characters that have been specially catcoded: +\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} +% (not counting ascii null, tab, linefeed, formfeed, return, delete) +% Each symbol in the list is preceded by \do, which can be defined +% if you want to do something to every item in the list. + +% We make @ signs act like letters, temporarily, to avoid conflict +% between user names and internal control sequences of plain format. +\catcode`@=11 + +% INITEX sets up \mathcode x=x, for x=0..127, except that +% \mathcode x=x+"7100, for x = `A to `Z and `a to `z; +% \mathcode x=x+"7000, for x = `0 to `9. +% The following changes define internal codes as recommended +% in Appendix C of The TeXbook: +\mathcode`\^^@="2201 % \cdot +\mathcode`\^^A="3223 % \downarrow +\mathcode`\^^B="010B % \alpha +\mathcode`\^^C="010C % \beta +\mathcode`\^^D="225E % \land +\mathcode`\^^E="023A % \lnot +\mathcode`\^^F="3232 % \in +\mathcode`\^^G="0119 % \pi +\mathcode`\^^H="0115 % \lambda +\mathcode`\^^I="010D % \gamma +\mathcode`\^^J="010E % \delta +\mathcode`\^^K="3222 % \uparrow +\mathcode`\^^L="2206 % \pm +\mathcode`\^^M="2208 % \oplus +\mathcode`\^^N="0231 % \infty +\mathcode`\^^O="0140 % \partial +\mathcode`\^^P="321A % \subset +\mathcode`\^^Q="321B % \supset +\mathcode`\^^R="225C % \cap +\mathcode`\^^S="225B % \cup +\mathcode`\^^T="0238 % \forall +\mathcode`\^^U="0239 % \exists +\mathcode`\^^V="220A % \otimes +\mathcode`\^^W="3224 % \leftrightarrow +\mathcode`\^^X="3220 % \leftarrow +\mathcode`\^^Y="3221 % \rightarrow +\mathcode`\^^Z="8000 % \ne +\mathcode`\^^[="2205 % \diamond +\mathcode`\^^\="3214 % \le +\mathcode`\^^]="3215 % \ge +\mathcode`\^^^="3211 % \equiv +\mathcode`\^^_="225F % \lor +\mathcode`\ ="8000 % \space +\mathcode`\!="5021 +\mathcode`\'="8000 % ^\prime +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\,="613B +\mathcode`\-="2200 +\mathcode`\.="013A +\mathcode`\/="013D +\mathcode`\:="303A +\mathcode`\;="603B +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\>="313E +\mathcode`\?="503F +\mathcode`\[="405B +\mathcode`\\="026E % \backslash +\mathcode`\]="505D +\mathcode`\_="8000 % \_ +\mathcode`\{="4266 +\mathcode`\|="026A +\mathcode`\}="5267 +\mathcode`\^^?="1273 % \smallint + +% INITEX sets \uccode`x=`X and \uccode `X=`X for all letters x, +% and \lccode`x=`x, \lccode`X=`x; all other values are zero. +% No changes to those tables are needed in plain TeX format. + +% INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999 +% for uppercase letters. The following changes are needed: +\sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0 +% The \nonfrenchspacing macro will make further changes to \sfcode values. + +% Finally, INITEX sets all \delcode values to -1, except \delcode`.=0 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\/="02F30E +\delcode`\|="26A30C +\delcode`\\="26E30F +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +% To make the plain macros more efficient in time and space, +% several constant values are declared here as control sequences. +% If they were changed, anything could happen; so they are private symbols. +\chardef\@ne=1 +\chardef\tw@=2 +\chardef\thr@@=3 +\chardef\sixt@@n=16 +\chardef\@cclv=255 +\mathchardef\@cclvi=256 +\mathchardef\@m=1000 +\mathchardef\@M=10000 +\mathchardef\@MM=20000 + +% Allocation of registers + +% Here are macros for the automatic allocation of \count, \box, \dimen, +% \skip, \muskip, and \toks registers, as well as \read and \write +% stream numbers, \fam codes, \language codes, and \insert numbers. + +\message{registers,} + +% When a register is used only temporarily, it need not be allocated; +% grouping can be used, making the value previously in the register return +% after the close of the group. The main use of these macros is for +% registers that are defined by one macro and used by others, possibly at +% different nesting levels. All such registers should be defined through +% these macros; otherwise conflicts may occur, especially when two or more +% more macro packages are being used at once. + +% The following counters are reserved: +% 0 to 9 page numbering +% 10 count allocation +% 11 dimen allocation +% 12 skip allocation +% 13 muskip allocation +% 14 box allocation +% 15 toks allocation +% 16 read file allocation +% 17 write file allocation +% 18 math family allocation +% 19 language allocation +% 20 insert allocation +% 21 the most recently allocated number +% 22 constant -1 +% New counters are allocated starting with 23, 24, etc. Other registers are +% allocated starting with 10. This leaves 0 through 9 for the user to play +% with safely, except that counts 0 to 9 are considered to be the page and +% subpage numbers (since they are displayed during output). In this scheme, +% \count 10 always contains the number of the highest-numbered counter that +% has been allocated, \count 14 the highest-numbered box, etc. +% Inserts are given numbers 254, 253, etc., since they require a \count, +% \dimen, \skip, and \box all with the same number; \count 19 contains the +% lowest-numbered insert that has been allocated. Of course, \box255 is +% reserved for \output; \count255, \dimen255, and \skip255 can be used freely. + +% It is recommended that macro designers always use +% \global assignments with respect to registers numbered 1, 3, 5, 7, 9, and +% always non-\global assignments with respect to registers 0, 2, 4, 6, 8, 255. +% This will prevent ``save stack buildup'' that might otherwise occur. + +\count10=22 % allocates \count registers 23, 24, ... +\count11=9 % allocates \dimen registers 10, 11, ... +\count12=9 % allocates \skip registers 10, 11, ... +\count13=9 % allocates \muskip registers 10, 11, ... +\count14=9 % allocates \box registers 10, 11, ... +\count15=9 % allocates \toks registers 10, 11, ... +\count16=-1 % allocates input streams 0, 1, ... +\count17=-1 % allocates output streams 0, 1, ... +\count18=3 % allocates math families 4, 5, ... +\count19=0 % allocates \language codes 1, 2, ... +\count20=255 % allocates insertions 254, 253, ... +\countdef\insc@unt=20 % the insertion counter +\countdef\allocationnumber=21 % the most recent allocation +\countdef\m@ne=22 \m@ne=-1 % a handy constant +\def\wlog{\immediate\write\m@ne} % write on log file (only) + +% Here are abbreviations for the names of scratch registers +% that don't need to be allocated. + +\countdef\count@=255 +\dimendef\dimen@=0 +\dimendef\dimen@i=1 % global only +\dimendef\dimen@ii=2 +\skipdef\skip@=0 +\toksdef\toks@=0 + +% Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo +% and \foo will be defined (with \countdef) to be the next counter. +% To find out which counter \foo is, you can look at \allocationnumber. +% Since there's no \boxdef command, \chardef is used to define a \newbox, +% \newinsert, \newfam, and so on. + +\outer\def\newcount{\alloc@0\count\countdef\insc@unt} +\outer\def\newdimen{\alloc@1\dimen\dimendef\insc@unt} +\outer\def\newskip{\alloc@2\skip\skipdef\insc@unt} +\outer\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi} +\outer\def\newbox{\alloc@4\box\chardef\insc@unt} +\let\newtoks=\relax % we do this to allow plain.tex to be read in twice +\outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} +\outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi} +\outer\def\newread{\alloc@6\read\chardef\sixt@@n} +\outer\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\outer\def\newfam{\alloc@8\fam\chardef\sixt@@n} +\outer\def\newlanguage{\alloc@9\language\chardef\@cclvi} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2% make sure there's still room + \allocationnumber=\count1#1% + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\outer\def\newinsert#1{\global\advance\insc@unt by\m@ne + \ch@ck0\insc@unt\count + \ch@ck1\insc@unt\dimen + \ch@ck2\insc@unt\skip + \ch@ck4\insc@unt\box + \allocationnumber=\insc@unt + \global\chardef#1=\allocationnumber + \wlog{\string#1=\string\insert\the\allocationnumber}} +\def\ch@ck#1#2#3{\ifnum\count1#1<#2% + \else\errmessage{No room for a new #3}\fi} + +% Here are some examples of allocation. +\newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal +\newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow +\newskip\centering \centering=0pt plus 1000pt minus 1000pt +\newdimen\p@ \p@=1pt % this saves macro space and time +\newdimen\z@ \z@=0pt % can be used both for 0pt and 0 +\newskip\z@skip \z@skip=0pt plus0pt minus0pt +\newbox\voidb@x % permanently void box register + +% And here's a different sort of allocation: +% For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo. +\outer\def\newif#1{\count@\escapechar \escapechar\m@ne + \expandafter\expandafter\expandafter + \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}% + \expandafter\expandafter\expandafter + \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}% + \@if#1{false}\escapechar\count@} % the condition starts out false +\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname} +{\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required + +% Assign initial values to TeX's parameters + +\message{parameters,} + +% All of TeX's numeric parameters are listed here, +% but the code is commented out if no special value needs to be set. +% INITEX makes all parameters zero except where noted. + +\pretolerance=100 +\tolerance=200 % INITEX sets this to 10000 +\hbadness=1000 +\vbadness=1000 +\linepenalty=10 +\hyphenpenalty=50 +\exhyphenpenalty=50 +\binoppenalty=700 +\relpenalty=500 +\clubpenalty=150 +\widowpenalty=150 +\displaywidowpenalty=50 +\brokenpenalty=100 +\predisplaypenalty=10000 +% \postdisplaypenalty=0 +% \interlinepenalty=0 +% \floatingpenalty=0, set during \insert +% \outputpenalty=0, set before TeX enters \output +\doublehyphendemerits=10000 +\finalhyphendemerits=5000 +\adjdemerits=10000 +% \looseness=0, cleared by TeX after each paragraph +% \pausing=0 +% \holdinginserts=0 +% \tracingonline=0 +% \tracingmacros=0 +% \tracingstats=0 +% \tracingparagraphs=0 +% \tracingpages=0 +% \tracingoutput=0 +\tracinglostchars=1 +% \tracingcommands=0 +% \tracingrestores=0 +% \language=0 +\uchyph=1 +% \lefthyphenmin=2 \righthyphenmin=3 set below +% \globaldefs=0 +% \maxdeadcycles=25 % INITEX does this +% \hangafter=1 % INITEX does this, also TeX after each paragraph +% \fam=0 +% \mag=1000 % INITEX does this +% \escapechar=`\\ % INITEX does this +\defaulthyphenchar=`\- +\defaultskewchar=-1 +% \endlinechar=`\^^M % INITEX does this +\newlinechar=-1 +\delimiterfactor=901 +% \time=now % TeX does this at beginning of job +% \day=now % TeX does this at beginning of job +% \month=now % TeX does this at beginning of job +% \year=now % TeX does this at beginning of job +\showboxbreadth=5 +\showboxdepth=3 +\errorcontextlines=5 + +\hfuzz=0.1pt +\vfuzz=0.1pt +\overfullrule=5pt +\hsize=6.5in +\vsize=8.9in +\maxdepth=4pt +\splitmaxdepth=\maxdimen +\boxmaxdepth=\maxdimen +% \lineskiplimit=0pt, changed by \normalbaselines +\delimitershortfall=5pt +\nulldelimiterspace=1.2pt +\scriptspace=0.5pt +% \mathsurround=0pt +% \predisplaysize=0pt, set before TeX enters $$ +% \displaywidth=0pt, set before TeX enters $$ +% \displayindent=0pt, set before TeX enters $$ +\parindent=20pt +% \hangindent=0pt, zeroed by TeX after each paragraph +% \hoffset=0pt +% \voffset=0pt + +% \baselineskip=0pt, changed by \normalbaselines +% \lineskip=0pt, changed by \normalbaselines +\parskip=0pt plus 1pt +\abovedisplayskip=12pt plus 3pt minus 9pt +\abovedisplayshortskip=0pt plus 3pt +\belowdisplayskip=12pt plus 3pt minus 9pt +\belowdisplayshortskip=7pt plus 3pt minus 4pt +% \leftskip=0pt +% \rightskip=0pt +\topskip=10pt +\splittopskip=10pt +% \tabskip=0pt +% \spaceskip=0pt +% \xspaceskip=0pt +\parfillskip=0pt plus 1fil + +\thinmuskip=3mu +\medmuskip=4mu plus 2mu minus 4mu +\thickmuskip=5mu plus 5mu + +% We also define special registers that function like parameters: +\newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt +\newskip\medskipamount \medskipamount=6pt plus 2pt minus 2pt +\newskip\bigskipamount \bigskipamount=12pt plus 4pt minus 4pt +\newskip\normalbaselineskip \normalbaselineskip=12pt +\newskip\normallineskip \normallineskip=1pt +\newdimen\normallineskiplimit \normallineskiplimit=0pt +\newdimen\jot \jot=3pt +\newcount\interdisplaylinepenalty \interdisplaylinepenalty=100 +\newcount\interfootnotelinepenalty \interfootnotelinepenalty=100 + +% Definitions for preloaded fonts + +\def\magstephalf{1095 } +\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax} + +% Fonts assigned to \preloaded are not part of "plain TeX", +% but they are preloaded so that other format packages can use them. +% For example, if another set of macros says "\font\ninerm=cmr9", +% TeX will not have to reload the font metric information for cmr9. + +\message{fonts,} + +\font\tenrm=ptmr % roman text +\font\preloaded=ptmr at 9pt +\font\preloaded=ptmr at 8pt +\font\sevenrm=ptmr at 7pt +\font\preloaded=ptmr at 6pt +\font\fiverm=ptmr at 5pt + +\font\teni=cmmi10 % math italic +\font\preloaded=cmmi9 +\font\preloaded=cmmi8 +\font\seveni=cmmi7 +\font\preloaded=cmmi6 +\font\fivei=cmmi5 + +\font\tensy=cmsy10 % math symbols +\font\preloaded=cmsy9 +\font\preloaded=cmsy8 +\font\sevensy=cmsy7 +\font\preloaded=cmsy6 +\font\fivesy=cmsy5 + +\font\tenex=cmex10 % math extension + +\font\preloaded=phvr % sans serif +\font\preloaded=phvr at 8pt + +\font\preloaded=phvro % sans serif italic +\font\preloaded=phvro at 8pt + +\font\tenbf=ptmb % boldface extended +\font\preloaded=ptmb at 9pt +\font\preloaded=ptmb at 8pt +\font\sevenbf=ptmb at 7pt +\font\preloaded=ptmb at 6pt +\font\fivebf=ptmb at 5pt + +\font\tentt=pcrb % typewriter +\font\preloaded=pcrb at 9pt +\font\preloaded=pcrb at 8pt + +\font\preloaded=pcrbo % slanted typewriter + +\font\tensl=ptmro % slanted roman +\font\preloaded=ptmro at 9pt +\font\preloaded=ptmro at 8pt + +\font\tenit=ptmri % text italic +\font\preloaded=ptmri at 9pt +\font\preloaded=ptmri at 8pt +\font\preloaded=ptmri at 7pt + +\message{more fonts,} +\font\preloaded=cmu10 % unslanted text italic + +\font\preloaded=cmmib10 % bold math italic +\font\preloaded=cmbsy10 % bold math symbols + +\font\preloaded=ptmrc % caps and small caps + +\font\preloaded=phvb % sans serif bold extended + +\font\preloaded=cmdunh10 % Dunhill style + +\font\preloaded=ptmr at 14.5pt % for titles +\font\preloaded=pcrb at 14pt +\font\preloaded=phvb at 14pt + +\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols + +% Additional \preloaded fonts can be specified here. +% (And those that were \preloaded above can be eliminated.) + +\let\preloaded=\undefined % preloaded fonts must be declared anew later. + +\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177 +\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60 + +\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm +\def\rm{\fam\z@\tenrm} +\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei +\def\mit{\fam\@ne} \def\oldstyle{\fam\@ne\teni} +\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy +\def\cal{\fam\tw@} +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4 +\textfont\itfam=\tenit +\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5 +\textfont\slfam=\tensl +\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6 +\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf +\scriptscriptfont\bffam=\fivebf +\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7 +\textfont\ttfam=\tentt + +% Macros for setting ordinary text +\message{macros,} + +\def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m + \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m} +\def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000% + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 } + +\def\normalbaselines{\lineskip\normallineskip + \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit} + +\def\^^M{\ } % control = control +\def\^^I{\ } % same for + +\def\lq{`} \def\rq{'} +\def\lbrack{[} \def\rbrack{]} + +\let\endgraf=\par \let\endline=\cr + +\def\space{ } +\def\empty{} +\def\null{\hbox{}} + +\let\bgroup={ \let\egroup=} + +% In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}' +% since this allows, for example, `\let\par=\cr \obeylines \halign{...' +{\catcode`\^^M=\active % these lines must end with % + \gdef\obeylines{\catcode`\^^M\active \let^^M\par}% + \global\let^^M\par} % this is in case ^^M appears in a \write +\def\obeyspaces{\catcode`\ \active} +{\obeyspaces\global\let =\space} + +\def\loop#1\repeat{\def\body{#1}\iterate} +\def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next} +\let\repeat=\fi % this makes \loop...\if...\repeat skippable + +\def\thinspace{\kern .16667em } +\def\negthinspace{\kern-.16667em } +\def\enspace{\kern.5em } + +\def\enskip{\hskip.5em\relax} +\def\quad{\hskip1em\relax} +\def\qquad{\hskip2em\relax} + +\def\smallskip{\vskip\smallskipamount} +\def\medskip{\vskip\medskipamount} +\def\bigskip{\vskip\bigskipamount} + +\def\nointerlineskip{\prevdepth-1000\p@} +\def\offinterlineskip{\baselineskip-1000\p@ + \lineskip\z@ \lineskiplimit\maxdimen} + +\def\topglue{\nointerlineskip\vglue-\topskip\vglue} % for top of page +\def\vglue{\afterassignment\vgl@\skip@=} +\def\vgl@{\par \dimen@\prevdepth \hrule height\z@ + \nobreak\vskip\skip@ \prevdepth\dimen@} +\def\hglue{\afterassignment\hgl@\skip@=} +\def\hgl@{\leavevmode \count@\spacefactor \vrule width\z@ + \nobreak\hskip\skip@ \spacefactor\count@} + +\def~{\penalty\@M \ } % tie +\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-' + +\def\break{\penalty-\@M} +\def\nobreak{\penalty \@M} +\def\allowbreak{\penalty \z@} + +\def\filbreak{\par\vfil\penalty-200\vfilneg} +\def\goodbreak{\par\penalty-500 } +\def\eject{\par\break} +\def\supereject{\par\penalty-\@MM} + +\def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi} +\def\smallbreak{\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi} +\def\medbreak{\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi} +\def\bigbreak{\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi} + +\def\line{\hbox to\hsize} +\def\leftline#1{\line{#1\hss}} +\def\rightline#1{\line{\hss#1}} +\def\centerline#1{\line{\hss#1\hss}} + +\def\rlap#1{\hbox to\z@{#1\hss}} +\def\llap#1{\hbox to\z@{\hss#1}} + +\def\m@th{\mathsurround=\z@} +\def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@ + \m@th \underline{\box\z@}$} + +\newbox\strutbox +\setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@} +\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} + +\def\hidewidth{\hskip\hideskip} % for alignment entries that can stick out +\def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign +\newcount\mscount +\def\multispan#1{\omit \mscount#1 + \loop\ifnum\mscount>\@ne \sp@n\repeat} +\def\sp@n{\span\omit\advance\mscount\m@ne} + +\newif\ifus@ \newif\if@cr +\newbox\tabs \newbox\tabsyet \newbox\tabsdone + +\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null} +\def\settabs{\setbox\tabs\null \futurelet\next\sett@b} +\let\+=\relax % in case this file is being read in twice +\def\sett@b{\ifx\next\+\let\next\relax + \def\next{\afterassignment\s@tt@b\let\next}% + \else\let\next\s@tcols\fi\next} +\def\s@tt@b{\let\next\relax\us@false\m@ketabbox} +\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+ +\outer\def\+{\tabalign} +\def\s@tcols#1\columns{\count@#1\dimen@\hsize + \loop\ifnum\count@>\z@ \@nother \repeat} +\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@ + \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}% + \advance\dimen@-\dimen@ii \advance\count@\m@ne} + +\def\m@ketabbox{\begingroup + \global\setbox\tabsyet\copy\tabs + \global\setbox\tabsdone\null + \def\cr{\@crtrue\crcr\egroup\egroup + \ifus@\unvbox\z@\lastbox\fi\endgroup + \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}% + \setbox\z@\vbox\bgroup\@crfalse + \ialign\bgroup&\t@bbox##\t@bb@x\crcr} + +\def\t@bbox{\setbox\z@\hbox\bgroup} +\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column + \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet + \global\setbox\@ne\lastbox}% now \box\@ne holds its size + \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}% + \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi + \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi + \box\z@} + +\def\hang{\hangindent\parindent} +\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces} +\def\item{\par\hang\textindent} +\def\itemitem{\par\indent \hangindent2\parindent \textindent} +\def\narrower{\advance\leftskip\parindent + \advance\rightskip\parindent} + +\outer\def\beginsection#1\par{\vskip\z@ plus.3\vsize\penalty-250 + \vskip\z@ plus-.3\vsize\bigskip\vskip\parskip + \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent} +\outer\def\proclaim #1. #2\par{\medbreak + \noindent{\bf#1.\enspace}{\sl#2\par}% + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + +\def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax} +\def\ttraggedright{\tt\rightskip\z@ plus2em\relax} % for use with \tt only + +\chardef\%=`\% +\chardef\&=`\& +\chardef\#=`\# +\chardef\$=`\$ +\chardef\ss="19 +\chardef\ae="1A +\chardef\oe="1B +\chardef\o="1C +\chardef\AE="1D +\chardef\OE="1E +\chardef\O="1F +\chardef\i="10 \chardef\j="11 % dotless letters +\def\aa{\accent23a} +\def\l{\char32l} +\def\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}} + +\def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary +\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}} +\def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex% + \rlap{\raise.67\dimen@\hbox{\char'27}}A} + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} + +\def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex% + \ialign{##\crcr#1\crcr}}} % put characters over each other +\def\ooalign{\lineskiplimit-\maxdimen \oalign} +\def\d#1{\oalign{#1\crcr\hidewidth.\hidewidth}} +\def\b#1{\oalign{#1\crcr\hidewidth + \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}} +\def\c#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1% + \else{\ooalign{\hidewidth\char24\hidewidth\crcr\unhbox\z@}}\fi} +\def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\mathhexbox20D}}} + +\def\dots{\relax\ifmmode\ldots\else$\m@th\ldots\,$\fi} +\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX} + +\def\`#1{{\accent18 #1}} +\def\'#1{{\accent19 #1}} +\def\v#1{{\accent20 #1}} \let\^^_=\v +\def\u#1{{\accent21 #1}} \let\^^S=\u +\def\=#1{{\accent22 #1}} +\def\^#1{{\accent94 #1}} \let\^^D=\^ +\def\.#1{{\accent95 #1}} +\def\H#1{{\accent"7D #1}} +\def\~#1{{\accent"7E #1}} +\def\"#1{{\accent"7F #1}} +\def\t#1{{\edef\next{\the\font}\the\textfont1\accent"7F\next#1}} + +\def\hrulefill{\leaders\hrule\hfill} +\def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill} +\def\rightarrowfill{$\m@th\mathord-\mkern-6mu% + \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-6mu% + \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill + \mkern-6mu\mathord-$} +\mathchardef\braceld="37A \mathchardef\bracerd="37B +\mathchardef\bracelu="37C \mathchardef\braceru="37D +\def\downbracefill{$\m@th\braceld\leaders\vrule\hfill\braceru + \bracelu\leaders\vrule\hfill\bracerd$} +\def\upbracefill{$\m@th\bracelu\leaders\vrule\hfill\bracerd + \braceld\leaders\vrule\hfill\braceru$} + +\outer\def\bye{\par\vfill\supereject\end} + +% Macros for math setting +\message{math definitions,} + +\let\sp=^ \let\sb=_ +\def\,{\mskip\thinmuskip} +\def\>{\mskip\medmuskip} +\def\;{\mskip\thickmuskip} +\def\!{\mskip-\thinmuskip} +\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}} +{\catcode`\'=\active \gdef'{^\bgroup\prim@s}} +\def\prim@s{\prime\futurelet\next\pr@m@s} +\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t + \else\let\nxt\egroup\fi\fi \nxt} +\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup} +{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math + +{\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_ + +\mathchardef\alpha="010B +\mathchardef\beta="010C +\mathchardef\gamma="010D +\mathchardef\delta="010E +\mathchardef\epsilon="010F +\mathchardef\zeta="0110 +\mathchardef\eta="0111 +\mathchardef\theta="0112 +\mathchardef\iota="0113 +\mathchardef\kappa="0114 +\mathchardef\lambda="0115 +\mathchardef\mu="0116 +\mathchardef\nu="0117 +\mathchardef\xi="0118 +\mathchardef\pi="0119 +\mathchardef\rho="011A +\mathchardef\sigma="011B +\mathchardef\tau="011C +\mathchardef\upsilon="011D +\mathchardef\phi="011E +\mathchardef\chi="011F +\mathchardef\psi="0120 +\mathchardef\omega="0121 +\mathchardef\varepsilon="0122 +\mathchardef\vartheta="0123 +\mathchardef\varpi="0124 +\mathchardef\varrho="0125 +\mathchardef\varsigma="0126 +\mathchardef\varphi="0127 +\mathchardef\Gamma="7000 +\mathchardef\Delta="7001 +\mathchardef\Theta="7002 +\mathchardef\Lambda="7003 +\mathchardef\Xi="7004 +\mathchardef\Pi="7005 +\mathchardef\Sigma="7006 +\mathchardef\Upsilon="7007 +\mathchardef\Phi="7008 +\mathchardef\Psi="7009 +\mathchardef\Omega="700A + +\mathchardef\aleph="0240 +\def\hbar{{\mathchar'26\mkern-9muh}} +\mathchardef\imath="017B +\mathchardef\jmath="017C +\mathchardef\ell="0160 +\mathchardef\wp="017D +\mathchardef\Re="023C +\mathchardef\Im="023D +\mathchardef\partial="0140 +\mathchardef\infty="0231 +\mathchardef\prime="0230 +\mathchardef\emptyset="023B +\mathchardef\nabla="0272 +\def\surd{{\mathchar"1270}} +\mathchardef\top="023E +\mathchardef\bot="023F +\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr + \not\mathrel{\mkern14mu}\crcr + \noalign{\nointerlineskip} + \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}} +\mathchardef\triangle="0234 +\mathchardef\forall="0238 +\mathchardef\exists="0239 +\mathchardef\neg="023A \let\lnot=\neg +\mathchardef\flat="015B +\mathchardef\natural="015C +\mathchardef\sharp="015D +\mathchardef\clubsuit="027C +\mathchardef\diamondsuit="027D +\mathchardef\heartsuit="027E +\mathchardef\spadesuit="027F + +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 + +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F + +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\def\neq{\not=} \let\ne=\neq +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\subset="321A +\mathchardef\supseteq="3213 +\mathchardef\subseteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B + +\def\joinrel{\mathrel{\mkern-3mu}} +\def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as + +\def\Relbar{\mathrel=} +\mathchardef\lhook="312C \def\hookrightarrow{\lhook\joinrel\rightarrow} +\mathchardef\rhook="312D \def\hookleftarrow{\leftarrow\joinrel\rhook} +\def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft} +\def\models{\mathrel|\joinrel=} +\def\Longrightarrow{\Relbar\joinrel\Rightarrow} +\def\longrightarrow{\relbar\joinrel\rightarrow} +\def\longleftarrow{\leftarrow\joinrel\relbar} +\def\Longleftarrow{\Leftarrow\joinrel\Relbar} +\def\longmapsto{\mapstochar\longrightarrow} +\def\longleftrightarrow{\leftarrow\joinrel\rightarrow} +\def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow} +\def\iff{\;\Longleftrightarrow\;} + +\mathchardef\ldotp="613A % ldot as a punctuation mark +\mathchardef\cdotp="6201 % cdot as a punctuation mark +\mathchardef\colon="603A % colon as a punctuation mark +\def\ldots{\mathinner{\ldotp\ldotp\ldotp}} +\def\cdots{\mathinner{\cdotp\cdotp\cdotp}} +\def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@ + \kern6\p@\hbox{.}\hbox{.}\hbox{.}}} +\def\ddots{\mathinner{\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu + \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}} + +\def\acute{\mathaccent"7013 } +\def\grave{\mathaccent"7012 } +\def\ddot{\mathaccent"707F } +\def\tilde{\mathaccent"707E } +\def\bar{\mathaccent"7016 } +\def\breve{\mathaccent"7015 } +\def\check{\mathaccent"7014 } +\def\hat{\mathaccent"705E } +\def\vec{\mathaccent"017E } +\def\dot{\mathaccent"705F } +\def\widetilde{\mathaccent"0365 } +\def\widehat{\mathaccent"0362 } +\def\overrightarrow#1{\vbox{\ialign{##\crcr + \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}} +\def\overleftarrow#1{\vbox{\ialign{##\crcr + \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}} +\def\overbrace#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3\p@} + \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits} +\def\underbrace#1{\mathop{\vtop{\ialign{##\crcr + $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip} + \upbracefill\crcr\noalign{\kern3\p@}}}}\limits} +\def\skew#1#2#3{{#2{#3\mkern#1mu}\mkern-#1mu}{}} + +\def\lmoustache{\delimiter"4000340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"5000341 } % top from ), bottom from ( +\def\lgroup{\delimiter"400033A } % extensible ( with sharper tips +\def\rgroup{\delimiter"500033B } % extensible ) with sharper tips +\def\arrowvert{\delimiter"33C000 } % arrow without arrowheads +\def\Arrowvert{\delimiter"33D000 } % double arrow without arrowheads +\def\bracevert{\delimiter"33E000 } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert +\def\vert{\delimiter"26A30C } +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } + +\def\bigl{\mathopen\big} +\def\bigm{\mathrel\big} +\def\bigr{\mathclose\big} +\def\Bigl{\mathopen\Big} +\def\Bigm{\mathrel\Big} +\def\Bigr{\mathclose\Big} +\def\biggl{\mathopen\bigg} +\def\biggm{\mathrel\bigg} +\def\biggr{\mathclose\bigg} +\def\Biggl{\mathopen\Bigg} +\def\Biggm{\mathrel\Bigg} +\def\Biggr{\mathclose\Bigg} +\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} +\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} +\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} +\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} +\def\n@space{\nulldelimiterspace\z@ \m@th} + +\def\choose{\atopwithdelims()} +\def\brack{\atopwithdelims[]} +\def\brace{\atopwithdelims\{\}} + +\def\sqrt{\radical"270370 } + +\def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}% + {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}} +\newbox\rootbox +\def\root#1\of{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$} + \mathpalette\r@@t} +\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$} + \dimen@\ht\z@ \advance\dimen@-\dp\z@ + \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu \box\z@} +\newif\ifv@ \newif\ifh@ +\def\vphantom{\v@true\h@false\ph@nt} +\def\hphantom{\v@false\h@true\ph@nt} +\def\phantom{\v@true\h@true\ph@nt} +\def\ph@nt{\ifmmode\def\next{\mathpalette\mathph@nt}% + \else\let\next\makeph@nt\fi\next} +\def\makeph@nt#1{\setbox\z@\hbox{#1}\finph@nt} +\def\mathph@nt#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt} +\def\finph@nt{\setbox\tw@\null + \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi + \ifh@ \wd\tw@\wd\z@\fi \box\tw@} +\def\mathstrut{\vphantom(} +\def\smash{\relax % \relax, in case this comes first in \halign + \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh + \fi\next} +\def\makesm@sh#1{\setbox\z@\hbox{#1}\finsm@sh} +\def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh} +\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@} + +\def\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign +\def\@vereq#1#2{\lower.5\p@\vbox{\baselineskip\z@skip\lineskip-.5\p@ + \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}} +\def\notin{\mathrel{\mathpalette\c@ncel\in}} +\def\c@ncel#1#2{\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}} +\def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}} +\def\rlh@#1{\vcenter{\hbox{\ooalign{\raise2pt + \hbox{$#1\rightharpoonup$}\crcr + $#1\leftharpoondown$}}}} +\def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}} +\def\doteq{\buildrel\textstyle.\over=} + +\def\log{\mathop{\rm log}\nolimits} +\def\lg{\mathop{\rm lg}\nolimits} +\def\ln{\mathop{\rm ln}\nolimits} +\def\lim{\mathop{\rm lim}} +\def\limsup{\mathop{\rm lim\,sup}} +\def\liminf{\mathop{\rm lim\,inf}} +\def\sin{\mathop{\rm sin}\nolimits} +\def\arcsin{\mathop{\rm arcsin}\nolimits} +\def\sinh{\mathop{\rm sinh}\nolimits} +\def\cos{\mathop{\rm cos}\nolimits} +\def\arccos{\mathop{\rm arccos}\nolimits} +\def\cosh{\mathop{\rm cosh}\nolimits} +\def\tan{\mathop{\rm tan}\nolimits} +\def\arctan{\mathop{\rm arctan}\nolimits} +\def\tanh{\mathop{\rm tanh}\nolimits} +\def\cot{\mathop{\rm cot}\nolimits} +\def\coth{\mathop{\rm coth}\nolimits} +\def\sec{\mathop{\rm sec}\nolimits} +\def\csc{\mathop{\rm csc}\nolimits} +\def\max{\mathop{\rm max}} +\def\min{\mathop{\rm min}} +\def\sup{\mathop{\rm sup}} +\def\inf{\mathop{\rm inf}} +\def\arg{\mathop{\rm arg}\nolimits} +\def\ker{\mathop{\rm ker}\nolimits} +\def\dim{\mathop{\rm dim}\nolimits} +\def\hom{\mathop{\rm hom}\nolimits} +\def\det{\mathop{\rm det}} +\def\exp{\mathop{\rm exp}\nolimits} +\def\Pr{\mathop{\rm Pr}} +\def\gcd{\mathop{\rm gcd}} +\def\deg{\mathop{\rm deg}\nolimits} + +\def\bmod{\mskip-\medmuskip\mkern5mu + \mathbin{\rm mod}\penalty900\mkern5mu\mskip-\medmuskip} +\def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)} + +\def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th + \ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.} +\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th + \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr + \mathstrut\crcr\noalign{\kern-\baselineskip} + #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,} +\def\pmatrix#1{\left(\matrix{#1}\right)} +\newdimen\p@renwd +\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left ( +\def\bordermatrix#1{\begingroup \m@th + \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}% + \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil + &&\quad\hfil$##$\hfil\crcr + \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}% + #1\crcr\omit\strut\cr}}% + \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne + \global\setbox\@ne\vbox{\box\@ne\kern2\p@}% + \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}% + \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup} + +\def\openup{\afterassignment\@penup\dimen@=} +\def\@penup{\advance\lineskip\dimen@ + \advance\baselineskip\dimen@ + \advance\lineskiplimit\dimen@} +\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th + \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil + \crcr#1\crcr}}\,} +\newif\ifdt@p +\def\displ@y{\global\dt@ptrue\openup\jot\m@th + \everycr{\noalign{\ifdt@p \global\dt@pfalse + \vskip-\lineskiplimit \vskip\normallineskiplimit + \else \penalty\interdisplaylinepenalty \fi}}} +\def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y +\def\displaylines#1{\displ@y + \halign{\hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr + #1\crcr}} +\def\eqalignno#1{\displ@y \tabskip\centering + \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\llap{$\@lign##$}\tabskip\z@skip\crcr + #1\crcr}} +\def\leqalignno#1{\displ@y \tabskip\centering + \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr + #1\crcr}} + +% Definitions related to output + +\message{output routines,} + +\countdef\pageno=0 \pageno=1 % first page is number 1 +\newtoks\headline \headline={\hfil} % headline is normally blank +\newtoks\footline \footline={\hss\tenrm\folio\hss} + % footline is normally a centered page number in font \tenrm +\newif\ifr@ggedbottom +\def\raggedbottom{\topskip 10\p@ plus60\p@ \r@ggedbottomtrue} +\def\normalbottom{\topskip 10\p@ \r@ggedbottomfalse} % undoes \raggedbottom +\def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno \fi} +\def\nopagenumbers{\footline{\hfil}} % blank out the footline +\def\advancepageno{\ifnum\pageno<\z@ \global\advance\pageno\m@ne + \else\global\advance\pageno\@ne \fi} % increase |pageno| + +\newinsert\footins +\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + #1\@sf\vfootnote{#1}} +\def\vfootnote#1{\insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \textindent{#1}\footstrut\futurelet\next\fo@t} +\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} +\def\f@@t{\bgroup\aftergroup\@foot\let\next} +\def\f@t#1{#1\@foot} +\def\@foot{\strut\egroup} +\def\footstrut{\vbox to\splittopskip{}} +\skip\footins=\bigskipamount % space added when footnote is present +\count\footins=1000 % footnote magnification factor (1 to 1) +\dimen\footins=8in % maximum footnotes per page + +\newinsert\topins +\newif\ifp@ge \newif\if@mid +\def\topinsert{\@midfalse\p@gefalse\@ins} +\def\midinsert{\@midtrue\@ins} +\def\pageinsert{\@midfalse\p@getrue\@ins} +\skip\topins=\z@skip % no space added when a topinsert is present +\count\topins=1000 % magnification factor (1 to 1) +\dimen\topins=\maxdimen % no limit per page +\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox +\def\endinsert{\egroup % finish the \vbox + \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@ + \advance\dimen@\pagetotal \advance\dimen@-\pageshrink + \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi + \if@mid \bigskip\box\z@\bigbreak + \else\insert\topins{\penalty100 % floating insertion + \splittopskip\z@skip + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@\dp\z@ + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero + \else \box\z@\nobreak\bigskip\fi}\fi\endgroup} + +\output{\plainoutput} +\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}% + \advancepageno + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} +\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}} +\def\makeheadline{\vbox to\z@{\vskip-22.5\p@ + \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip} +\def\makefootline{\baselineskip24\p@\line{\the\footline}} +\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over + \line{}\kern-\topskip\nobreak\vfill\supereject\fi} + +\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi + \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255 + \ifvoid\footins\else % footnote info is present + \vskip\skip\footins + \footnoterule + \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} +\def\footnoterule{\kern-3\p@ + \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high + +% Hyphenation, miscellaneous macros, and initial values for standard layout +\message{hyphenation} + +\lefthyphenmin=2 \righthyphenmin=3 % disallow x- or -xx breaks +\input hyphen + +\def\magnification{\afterassignment\m@g\count@} +\def\m@g{\mag\count@ + \hsize6.5truein\vsize8.9truein\dimen\footins8truein} + +\def\tracingall{\tracingonline\@ne\tracingcommands\tw@\tracingstats\tw@ + \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne + \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne + \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode} + +\def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm + \pretolerance\m@ne\tolerance\m@ne\hbadness0\showboxdepth0\ #1}} + +\normalbaselines\rm % select roman font +\nonfrenchspacing % punctuation affects the spacing +\catcode`@=12 % at signs are no longer letters + +\def\fmtname{plain}\def\fmtversion{3.0PS} % identifies the current format diff --git a/Build/source/texk/dvipsk/contrib/pspic/pspic.readme b/Build/source/texk/dvipsk/contrib/pspic/pspic.readme new file mode 100644 index 00000000000..e26475abb4d --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/pspic/pspic.readme @@ -0,0 +1,40 @@ +Hello Thomas... + +For some time I've been working on a LaTeX-style, which replaces the +graphic-producing picture objects of LaTeX's picture environment +(line, vector, circle, circle* etc.) + This new implementation of the picture environment is based on your +`dvips' TeX-driver for PostScript printers. I thought you might +distribute it with your dvips, as it only works with this specific +driver (it uses your \special variants ! " and ps: ) + At the ending of this the entire style is enclosed. A few things +should be said about compability: + +linethickness when changing the linehickness this affects not only + the horizontal and vertical lines, but also slanted + ones. + +line The restrictions of wich angles you can make lines are + eliminated. + +vector As you may now make vectors at any linethickness I've + made a new definition of the vectorhead, so that the + size of vector heads are proportional to the + linethickness. + +circle(*) In default LaTeX circles can be only of certain sizes + (as they are predefined as graphics). with pspic you + may make circles at any size. + +I see all thiese things as improvements in comparison with the old +style, but you must off course be aware of them while using this style +(especially with old documents). + +You may specify a grayscale using the \shade operator, wich takes one +argument, a number from 0-100 setting the percentage of black. The +\scale operator affects all the graphic producing objects. + +I've tested this for some time, and there doesn't seem to be any bad +bugs. I will apreciate any response. + +/Kresten diff --git a/Build/source/texk/dvipsk/contrib/pspic/pspic.sty b/Build/source/texk/dvipsk/contrib/pspic/pspic.sty new file mode 100644 index 00000000000..54b1f925a4e --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/pspic/pspic.sty @@ -0,0 +1,168 @@ +\typeout{Document Style `PostScript PICTURE' .} +%---------------------------------------------------------------------- +% +% PostScript PICTURE +% +% For use with DVIPS (by Tomas Rokicki) +% +% +% By: Kresten Krab Thorup, University of Aalborg, Denmark +% +% January 1991 +% +%---------------------------------------------------------------------- +% +% ================================== +% psbox +% ================================== +% +\def\psbox#1{% + \vbox{% + \hbox{% + \special{" \number\unitlength.0 65781.75 div dup scale + picdict begin + /lwidth \number\@wholewidth.0 \number\unitlength.0 div def + lwidth setlinewidth + \moveto(0,0) #1 end}}}} +% +% ================================== +% Commands for use in \psbox +% ================================== +% +\def\moveto(#1,#2){ /x #1 def /y #2 def x y moveto} +\def\rline(#1,#2){ newpath + x y moveto + #1 #2 rlineto + linedash 0 setdash stroke + /x x #1 add def + /y y #2 add def} +% +% ================================== +% Commands for use in LaTeX +% ================================== +% +%---------------------------------------------------------------------- +% \line command of LaTeX +%---------------------------------------------------------------------- +\def\line(#1,#2)#3{\psbox{% + \@ccolour setgray + /linedash \linedash def + #1 0 eq + {/fac{#2 abs div #3 mul}def} + {/fac{#3 #1 abs div mul}def} + ifelse + \rline( #1 fac , #2 fac ) }} +%---------------------------------------------------------------------- +% \vector command of LaTeX +%---------------------------------------------------------------------- +\def\vector(#1,#2)#3{\psbox{% + \@ccolour setgray + /linedash \linedash def + #1 0 eq + {/fac{#2 abs div #3 mul}def} + {/fac{#3 #1 abs div mul}def} + ifelse + newpath + 0 0 #1 fac #2 fac lwidth lwidth \number\headwidth.0 mul + lwidth \number\headlength.0 mul arrow fill}} +%---------------------------------------------------------------------- +% \circle and \circle* commands of LaTeX +%---------------------------------------------------------------------- +\def\circle{\@ifstar{\@dot}{\@circle}} +\def\@circle#1{\psbox{ newpath + 0 0 #1 2 div 0 360 arc + [] 0 setdash + \@ccolour setgray stroke}} +\def\@dot#1{\psbox{newpath + 0 0 #1 2 div 0 360 arc + \@ccolour setgray fill}} +%---------------------------------------------------------------------- +% \bezier(x1,y1)(x2,y2)(x3,y3) +%---------------------------------------------------------------------- +\def\bezier(#1,#2)(#3,#4)(#5,#6){% +\psbox{#1 #2 #3 #4 #5 #6 curveto \@ccolour setgray \linedash 0 setdash stroke}% +}% +%---------------------------------------------------------------------- +% \oval command of LaTeX +%---------------------------------------------------------------------- +\def\oval(#1,#2){\@ifnextchar[{\@oval(#1,#2)}{\@oval(#1,#2)[full]}} +\def\@oval(#1,#2)[#3]{% + \begingroup + \@ovxx = #1\unitlength + \@ovyy =#2\unitlength + \@tempdimb \ifdim \@ovyy >\@ovxx =\@ovxx\else =\@ovyy \fi + \ifnum\@tempdimb>\maxovaldiam \@tempdimb=\maxovaldiam \fi + \psbox{/rad \number\@tempdimb.0 \number\unitlength.0 div 2 div def + /dx #1 2 div rad sub def + /dy #2 2 div rad sub def + \@ccolour setgray + newpath #3 [] 0 setdash stroke }% + \endgroup} +%---------------------------------------------------------------------- +% \ctext{...} Text to be written with the current grayscale +%---------------------------------------------------------------------- +\def\ctext#1{\special{ps:gsave \@ccolour + setgray}{}#1\special{ps:grestore}} +%---------------------------------------------------------------------- +% Customization +%---------------------------------------------------------------------- +\def\vectorhead#1#2{\headlength=#1 \headwidth=#2 } +\def\dashpattern[#1]{\xdef\linedash{[#1] }} +\def\colour#1{\def\@ccolour{\@nameuse{CC#1}}} +\def\shade#1{\def\@ccolour{ 1 #1 100 div sub }} +% +% ================================== +% Initialization +% ================================== +% +\newdimen\maxovaldiam +\maxovaldiam=14mm % Max diameter of LaTeX circle +% +\newcount\headlength % length of arrowhead in terms of + % linewidth +\newcount\headwidth % width of arrowhead in terms of linewidth +\vectorhead{9}{5} % default vectorhead dimentions +% +\dashpattern[] % set default type of linedashes +% +\def\CCwhite{1 } +\def\CCblack{0 } +\def\CCgray{.5 } +\def\CClightgray{.75 } +\def\CCdarkgray{.25 } +\colour{black} +%---------------------------------------------------------------------- +% The P*stScr*pt dictionary +%---------------------------------------------------------------------- +\special{!/picdict 200 dict def picdict begin +/tr { 0 0 moveto newpath dx dy rad 0 90 arc} def +/tl { 0 0 moveto newpath -1 dx mul dy rad 90 180 arc} def +/bl { 0 0 moveto newpath -1 dx mul -1 dy mul rad 180 270 arc} def +/br { 0 0 moveto newpath dx -1 dy mul rad 270 360 arc} def +/b { bl stroke newpath br -1 dx mul -1 dy mul rad sub moveto dx 2 mul + 0 rlineto} def +/t { tl stroke newpath tr -1 dx mul dy rad add moveto dx 2 mul 0 + rlineto } def +/l { bl stroke newpath tl -1 dx mul rad sub -1 dy mul moveto 0 dy 2 + mul rlineto } def +/r { tr stroke newpath br dx rad add -1 dy mul moveto 0 dy 2 mul + rlineto } def +/full { t stroke newpath r stroke newpath b stroke newpath l } def +/mtrx matrix def +% +/arrow { +/headlength exch def /halfheadthickness exch 2 div def +/halfthickness exch 2 div def /tipy exch def /tipx exch def /taily +exch def /tailx exch def /dx tipx tailx sub def /dy tipy taily sub def +/arrowlength dx dx mul dy dy mul add sqrt def /angle dy dx atan def +/base arrowlength headlength sub def /savematrix mtrx currentmatrix +def tailx taily translate angle rotate gsave newpath 0 0 moveto base 0 +lineto linedash 0 setdash stroke grestore base halfheadthickness neg +moveto arrowlength 0 lineto base halfheadthickness lineto base +halfthickness lineto closepath savematrix setmatrix +} def +%% +end} +%---------------------------------------------------------------------- +% end of pspic.sty +%---------------------------------------------------------------------- diff --git a/Build/source/texk/dvipsk/contrib/timesmat.sty b/Build/source/texk/dvipsk/contrib/timesmat.sty new file mode 100644 index 00000000000..94a4edd2044 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/timesmat.sty @@ -0,0 +1,291 @@ +\message{timesmat.sty - original by KHC, edited by DIL for pt sizes} +% This style uses Times Roman as much as possible in math mode. +% It is a replacement for times.sty, not an addition +% +\def\fileversion{PSNFSS 2.4} +\def\filedate{16.7.93} +\immediate\write\sixt@@n{File: `timesmat.sty' +\fileversion\ <\filedate> (KHC, DIL, SH)} +% Copyright 1993 by Kin Hoong Chung. +% +% You are allowed to distribute this file. You are not allowed to +% charge money for the distribution of this file. +% +% May need further hacking, depending on the version of Times encoding +% that you use. The version I use has the various capital Greek +% letters hacked in from Symbol. This is not fully tested... it may +% be missing some other maths characters or text characters for TeX. +% Seems to be compatible with AMS-LaTeX. +% +% Altered by Dave Laurenson (dil@castle.ed.ac.uk) to work with +% oldlfont.sty and 10pt, 11pt and 12pt document styles. +% The same changes also made by Sven Heemeyer. Thanks to both. +% +% merged together by S Rahtz July 1993 +% ------------------------------------------------------------ +% Known bugs: +% +% Times italic maths characters should have their own TFM, AFM, etc, for +% better spacing of fonts. +% +% Room for directly addressable maths mode fonts seems to be limited, I +% don't know why yet... +% +% Postscript accents behave in a different way to CMR accents, so that +% there is \mathaccent fails. Present correction merely replaces the +% Times accents with CMR ones. Accents in maths mode should be Times accents. + +% check if nfss exists +\@ifundefined{selectfont} + {\@latexerr{`timesmat' style option can only be used + with the new font selection scheme}\@eha + \endinput}{} +% +\ifx\declare@font\undefined + \input{psnfss.sup}\fi +% +% load required PostScript (tm) fonts. +\def\load@courier{% +\postscript@fontdef{Courier}{courier}% +{pcrr}{pcrro}{pcrb}{pcrbo}{pcrr}{pcrr} +} +\def\load@helvetica{% +\postscript@fontdef[.85333]{Helvetica}{helvetica}% +{phvr}{phvro}{phvb}{phvbo}{phvrc}{phvro} +} +\def\load@times{% +\postscript@fontdef{Times}{times}% +{ptmr}{ptmri}{ptmb}{ptmbi}{ptmrc}{ptmro} +} +% +\romanfont{times} %make default Roman font Times-Roman. +\sansfont{helvetica} %Sans serif is Helvetica +\typewriterfont{courier} %\tt is Courier + +\def\default@family{times} %Tell AMS-LaTeX that Times-Roman is default. + +% put back dotless i,j +% \def\i{{\family{cmr}\selectfont\char"10}} +\def\j{{\family{cmr}\selectfont\char"11}} + +% Make Times the default maths font. +\late@define@mathgroup\mv@normal{0} + {times}{m}{n} +\late@define@mathgroup\mv@normal{1} + {times}{m}{it} +% Tell TeX that Times is the default maths font. + +\expandafter\font\csname times/m/n/10\endcsname=ptmr +\textfont0=\csname times/m/n/10\endcsname +\scriptfont0=\csname times/m/n/10\endcsname +\scriptscriptfont0=\csname times/m/n/10\endcsname + +\expandafter\font\csname times/m/it/10\endcsname=ptmri +\textfont1=\csname times/m/it/10\endcsname +\scriptfont1=\csname times/m/it/10\endcsname +\scriptscriptfont1=\csname times/m/it/10\endcsname + +% make the \boldmath option work in Times. +\late@define@mathgroup\mv@bold{0} + {times}{bx}{n} +\late@define@mathgroup\mv@bold{1} + {times}{bx}{it} + +% Put cmmi back into TeX, as a new maths alphabet, so that we can get +% back the Greek & other characters missing in Times. +\def\cmmath{\protect\pcmmath} +\def\pcmmath{\RIfM@\expandafter\cmmath@\else + \expandafter\nonmatherr@\expandafter\cmmath\fi} +\late@newmathalphabet\cmmath@ +% find out which \textfont holds cmmi +\edef\@tempa{\number\cmmath@@group}% +% Tell TeX where cmmi is. +% Assumes \@ptsize is defined by article, report, book +\ifcase \@ptsize + \textfont\@tempa=\csname cmm/m/it/10\endcsname + \scriptfont\@tempa=\csname cmm/m/it/7\endcsname + \scriptscriptfont\@tempa=\csname cmm/m/it/5\endcsname +\or + \textfont\@tempa=\csname cmm/m/it/11\endcsname + \scriptfont\@tempa=\csname cmm/m/it/7\endcsname + \scriptscriptfont\@tempa=\csname cmm/m/it/5\endcsname +\or + \textfont\@tempa=\csname cmm/m/it/12\endcsname + \scriptfont\@tempa=\csname cmm/m/it/8\endcsname + \scriptscriptfont\@tempa=\csname cmm/m/it/6\endcsname +\fi +% make sure bold version gets bold characters +\late@define@mathgroup\mv@normal{\@tempa} + {cmm}{m}{it} +\late@define@mathgroup\mv@bold{\@tempa} + {cmm}{b}{it} +\edef\@tempa{\hexnumber@\cmmath@@group}% + +% cmmi and Times-italic have different positions for some punctuation marks +% \mathcode`\ ="8000 % \space +% \mathcode`\!="5021 +% \mathcode`\'="8000 % ^\prime +% \mathcode`\(="4028 +% \mathcode`\)="5029 +% \mathcode`\*="22.4 % \ast +% \mathcode`\+="202B +\mathcode`\,="602C +% \mathcode`\-="2200 +\mathcode`\.="002E +\mathcode`\/="002F +% \mathcode`\:="303A +% \mathcode`\;="603B +\mathcode`\<="303C +% \mathcode`\=="303D +\mathcode`\>="303E +% \mathcode`\?="503F +% \mathcode`\[="405B +% \mathcode`\\="026E % \backslash +% \mathcode`\]="505D +% \mathcode`\_="8000 % \_ +% \mathcode`\{="4266 +% \mathcode`\|="026A +% \mathcode`\}="5267 +\mathchardef\ldotp="602E % ldot as a punctuation mark + +% Put back the missing lowercase Greek characters. +\mathchardef\alpha="0\@tempa 0B +\mathchardef\beta="0\@tempa 0C +\mathchardef\gamma="0\@tempa 0D +\mathchardef\delta="0\@tempa 0E +\mathchardef\epsilon="0\@tempa 0F +\mathchardef\zeta="0\@tempa 10 +\mathchardef\eta="0\@tempa 11 +\mathchardef\theta="0\@tempa 12 +\mathchardef\iota="0\@tempa 13 +\mathchardef\kappa="0\@tempa 14 +\mathchardef\lambda="0\@tempa 15 +\mathchardef\mu="0\@tempa 16 +\mathchardef\nu="0\@tempa 17 +\mathchardef\xi="0\@tempa 18 +\mathchardef\pi="0\@tempa 19 +\mathchardef\rho="0\@tempa 1A +\mathchardef\sigma="0\@tempa 1B +\mathchardef\tau="0\@tempa 1C +\mathchardef\upsilon="0\@tempa 1D +\mathchardef\phi="0\@tempa 1E +\mathchardef\chi="0\@tempa 1F +\mathchardef\psi="0\@tempa 20 +\mathchardef\omega="0\@tempa 21 +\mathchardef\varepsilon="0\@tempa 22 +\mathchardef\vartheta="0\@tempa 23 +\mathchardef\varpi="0\@tempa 24 +\mathchardef\varrho="0\@tempa 25 +\mathchardef\varsigma="0\@tempa 26 +\mathchardef\varphi="0\@tempa 27 + +% Put back other missing characters. +\mathchardef\imath="0110 +\mathchardef\jmath="0\@tempa 7C +\mathchardef\ell="0\@tempa 60 +\mathchardef\wp="0\@tempa 7D +\mathchardef\partial="0\@tempa 40 +\mathchardef\flat="0\@tempa 5B +\mathchardef\natural="0\@tempa 5C +\mathchardef\sharp="0\@tempa 5D +\mathchardef\smile="3\@tempa 5E +\mathchardef\frown="3\@tempa 5F +\mathchardef\leftharpoonup="3\@tempa 28 +\mathchardef\leftharpoondown="3\@tempa 29 +\mathchardef\rightharpoonup="3\@tempa 2A +\mathchardef\rightharpoondown="3\@tempa 2B +\mathchardef\lhook="3\@tempa 2C \def\hookrightarrow{\lhook\joinrel\rightarrow} +\mathchardef\rhook="3\@tempa 2D \def\hookleftarrow{\leftarrow\joinrel\rhook} +\mathchardef\star="2\@tempa 3F +\mathchardef\vecMC="0\@tempa 7E +\def\vec{\mathaccent\the\vecMC } + +% Get all the missing cmr characters back for maths mode +\def\cmrmath{\protect\pcmrmath} +\def\pcmrmath{\RIfM@\expandafter\cmrmath@\else + \expandafter\nonmatherr@\expandafter\cmrmath\fi} +\late@newmathalphabet\cmrmath@ +% find out which \textfont holds cmr +\edef\@tempa{\number\cmrmath@@group}% +% Tell TeX where cmr is. +\ifcase\@ptsize + \textfont\@tempa=\csname cmr/m/n/10\endcsname + \scriptfont\@tempa=\csname cmr/m/n/7\endcsname + \scriptscriptfont\@tempa=\csname cmr/m/n/5\endcsname% +\or + \textfont\@tempa=\csname cmr/m/n/11\endcsname + \scriptfont\@tempa=\csname cmr/m/n/7\endcsname + \scriptscriptfont\@tempa=\csname cmr/m/n/5\endcsname% +\or + \textfont\@tempa=\csname cmr/m/n/12\endcsname + \scriptfont\@tempa=\csname cmr/m/n/8\endcsname + \scriptscriptfont\@tempa=\csname cmr/m/n/6\endcsname +\fi +% make sure bold version gets bold characters +\late@define@mathgroup\mv@normal{\@tempa} + {cmr}{m}{n} +\late@define@mathgroup\mv@bold{\@tempa} + {cmr}{bx}{n} +\edef\@tempa{\hexnumber@\cmrmath@@group}% + +% %Put back the missing capital Greek letters. +% \mathchardef\Gamma="7\@tempa 00 +% \mathchardef\Delta="7\@tempa 01 +% \mathchardef\Theta="7\@tempa 02 +% \mathchardef\Lambda="7\@tempa 03 +% \mathchardef\Xi="7\@tempa 04 +% \mathchardef\Pi="7\@tempa 05 +% \mathchardef\Sigma="7\@tempa 06 +% \mathchardef\Upsilon="7\@tempa 07 +% \mathchardef\Phi="7\@tempa 08 +% \mathchardef\Psi="7\@tempa 09 +% \mathchardef\Omega="7\@tempa 0A + +% Postscript accents behave differently to the way TeX expects... and +% \mathaccent is a primitive command, so it cannot be changed!!! +\mathchardef\acuteMC="7\@tempa 13 +\def\acute{\mathaccent\the\acuteMC } +\mathchardef\graveMC="7\@tempa 12 +\def\grave{\mathaccent\the\graveMC } +\mathchardef\ddotMC="7\@tempa 7F +\def\ddot{\mathaccent\the\ddotMC } +\mathchardef\tildeMC="7\@tempa 7E +\def\tilde{\mathaccent\the\tildeMC } +\mathchardef\barMC="7\@tempa 16 +\def\bar{\mathaccent\the\barMC } +\mathchardef\breveMC="7\@tempa 15 +\def\breve{\mathaccent\the\breveMC } +\mathchardef\checkMC="7\@tempa 14 +\def\check{\mathaccent\the\checkMC } +\mathchardef\hatMC="7\@tempa 5E +\def\hat{\mathaccent\the\hatMC } +\mathchardef\dotMC="7\@tempa 5F +\def\dot{\mathaccent\the\dotMC } + +\ifx\csname amstex.sty\endcsname\relax +{} +\else +\def\Makeacce@#1#2{\def#1{\RIfM@\DN@{\mathaccent@ + {#2 }}\else\DN@{\nonmatherr@{#1}}\fi\next@}} + +\Makeacce@\Hat{\the\hatMC } +\Makeacce@\Check{\the\checkMC } +\Makeacce@\Tilde{\the\tildeMC } +\Makeacce@\Acute{\the\acuteMC } +\Makeacce@\Grave{\the\graveMC } +\Makeacce@\Dot{\the\dotMC } +\Makeacce@\Ddot{\the\ddotMC } +\Makeacce@\Breve{\the\breveMC } +\Makeacce@\Bar{\the\barMC } +\def\Vec{\RIfM@\DN@{\mathaccent@{\the\vecMC }}} +\fi + +% fix \bold in AMS-LaTeX so it produces bold Times-Roman text rather than +% bold Computer-Modern-Roman. If you are not using AMS-LaTeX, you may get +% \bold as a new maths mode operator for free. +\late@newmathalphabet*{\timesrmbf}{times}{bx}{n} +\def\bold{\timesrmbf} + +\def\hbar{{\mathchar'26\mkern-7muh}} +\def\neq{{\not\mkern1.5mu=}} \let\ne=\neq +\endinput diff --git a/Build/source/texk/dvipsk/contrib/volker/README b/Build/source/texk/dvipsk/contrib/volker/README new file mode 100644 index 00000000000..f2138917eda --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/README @@ -0,0 +1,149 @@ +NOTE S Rahtz 1998/01/18: renamed files to suite 8+3 .cfg style +******************************************************************** + +Release 1.13, 21 Aug 1995 +Release 1.12, 02 Mar 1995 +Release 1.0, 20 Feb 1995 + +This is a set of files which can be used with dvips to control certain +parameters of the printer, like simplex/duplex printing, or screen +frequencies of images. + +Put together by Volker Kuhlmann, VOLKER@ELEC.CANTERBURY.AC.NZ. +No copyright. Freely distributable. If you make additions, please send +me a copy. + + +LIST OF FILES +============= + +README This file. +config.* Configuration files and header files for dvips. Special + format which serves both purposes. + + +INSTALLATION +============ + +Copy these files into a directory which is searched by dvips both for +configuration files and for header files. dvips looks in $TEXCONFIG for +configuration files, and in $DVIPSHEADERS for header files. For details +please see the dvips documentation. + + +USAGE +===== + +dvips reads the instructions in a configuration file +with the -P option: + + dvips -P + +All these configuration files contain the PostScript code for the +respective operation as well, and can be used as header file as they are. + +Now to the stuff provided: + +-P simplex On a duplex printer, force printing in simplex mode. On + a simplex printer, this will be ignored. +-P duplong On a duplex printer, force duplex printing with binding + on the long edge. On a simplex printer, this will be + ignored. +-P dupshort On a duplex printer, force duplex printing with binding + on the short edge. On a simplex printer, this will be + ignored. +-P a3 Print on A3 paper. + Note: this is just a demo - use "-t a3" instead! +-P inv Print all pages inverted, i.e. white letters on black + background. + Note: this currently does not work properly. Any + hints/fixes greatly appreciated! +-P screenN Print images with a screen frequency of N lpi at + 45 degrees. + N = {70, 80, 85, 90, 100, 110, 120, 130, 140, 150} +-P screen100-0 Print images with a screen frequency of 100lpi + at 0 degrees. + +Note: When working with screen frequencies, it is possible that + turning the printer off and back on solves the problem of the + screen commands not having any effect. + + +CONTROLLING SCREEN FREQUENCIES +============================== + +Various PostScript commands for controlling the screen frequencies of +images exist, but not all work on all printers. See fragments of +PostScript code and comments below. The form working on most printers is + + LPI DEGREES {FUNCTION} setscreen + +Insert numbers for LPI and DEGREES, and a function for FUNCTION about +which I only know (right or wrong?): + + "Should read 2 values from the stack (x, y coordinates in a + halftone cell), and return one in the range -1 to 1. The return + values determine the order in which pixels within a halftone + cell are whitened to produce any desired shade of gray." + +The simplest function is {pop}, creating a "linescreen" pattern. There +is also a function "Dot" (currently used) and "Ellipse". For any other +frequencies/angles/functions put the instructions in a file, and load +the file with + + dvips -h + +Thanks to osakari@unda.fi (Olavi Sakari) for some help, and the "Dot" +and "Ellipse" code. + +Notes follow: + + +%currentscreen 3 1 roll pop pop 70 45 3 -1 roll setscreen +% Works on HP LJ3Si, HP LJ4m. Ignored on HP LJ4mv (VK). + + +%currentscreen 3 1 roll pop pop 70 45 3 -1 roll sethalftone +% Ignored on HP LJ4mv (VK). + + +%70 45 {pop} setscreen +% Produces a funny, 1-diagonal pattern ("linescreen") on HP LJ4mv (VK). + + +% "Dot": +%70 45 {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 +% sub }{dup mul exch dup mul add 1 exch sub }ifelse} setscreen +% Works on HP LJ3Si, HP LJ4m, HP LJ4mv (VK). + + +% "Ellipse": +%70 45 {dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub} setscreen +% Works on HP LJ4mv (VK). + + +%70 45 +%<< +% /HalftoneType 1 + % 0 gives range check error, 2 gives undefined error (VK). +% /Frequency 150 +% /Angle 20 + % the values for /Frequency, /Angle are irrelevant +% /SpotFunction {pop} +%>> +%setscreen +% 70 45 seem to replace /Frequency and /Angle in dict +% - Note: NO curly braces around the dict! +% Works on HP LJ4m, produces errors with HP LJ3Si, +% Produces "linescreen" on HP LJ4mv caused by {pop} (VK). + + +%<< +% /HalftoneType 1 +% % 0 gives range check error, 2 gives undefined error (VK). +% /Frequency 70 +% /Angle 45 +% /SpotFunction {pop} +%>> +%sethalftone % Level 2 only +% Produces "linescreen" on HP LJ4mv caused by {pop} (VK). diff --git a/Build/source/texk/dvipsk/contrib/volker/a3.cfg b/Build/source/texk/dvipsk/contrib/volker/a3.cfg new file mode 100644 index 00000000000..380359026f7 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/a3.cfg @@ -0,0 +1,17 @@ +% config.a3 +% Configuration file for dvips. Load with: dvips -P a3. +% +% Forces printing on A3 paper. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 21 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + a3 +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.a3 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/duplong.cfg b/Build/source/texk/dvipsk/contrib/volker/duplong.cfg new file mode 100644 index 00000000000..4c5d1f7cff9 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/duplong.cfg @@ -0,0 +1,19 @@ +% config.duplong +% Configuration file for dvips. Load with: dvips -P duplong. +% +% Prints in duplex mode with binding on the long edge. +% Ignored on a simplex printer. +% Works on HP LaserJet IIISi. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + statusdict begin true setduplexmode false settumble end +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.duplong + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/dupshort.cfg b/Build/source/texk/dvipsk/contrib/volker/dupshort.cfg new file mode 100644 index 00000000000..b025ba95696 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/dupshort.cfg @@ -0,0 +1,19 @@ +% config.dupshort +% Configuration file for dvips. Load with: dvips -P dupshort. +% +% Prints in duplex mode with binding on the short edge. +% Ignored on a simplex printer. +% Works on HP LaserJet IIISi. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + statusdict begin true setduplexmode true settumble end +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.dupshort + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/inv.cfg b/Build/source/texk/dvipsk/contrib/volker/inv.cfg new file mode 100644 index 00000000000..7b6223c92d4 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/inv.cfg @@ -0,0 +1,21 @@ +% config.inv +% Configuration file for dvips. Load with: dvips -P inv. +% +% Invert the printing. +% This currently mucks up the first of the pages printed. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + %[{} + /exec load currenttransfer /exec load] cvx settransfer + [{1 exch sub} /exec load currenttransfer /exec load] cvx settransfer + %/fPP true def +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.inv + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr100-0.cfg b/Build/source/texk/dvipsk/contrib/volker/scr100-0.cfg new file mode 100644 index 00000000000..1f30f67010d --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr100-0.cfg @@ -0,0 +1,21 @@ +% config.screen100-0 +% Configuration file for dvips. Load with: dvips -P screen100-0. +% +% Sets screen frequency and angle for images to 100lpi/0degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 100 0 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen100-0 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr100.cfg b/Build/source/texk/dvipsk/contrib/volker/scr100.cfg new file mode 100644 index 00000000000..636a7c373d5 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr100.cfg @@ -0,0 +1,21 @@ +% config.screen100 +% Configuration file for dvips. Load with: dvips -P screen100. +% +% Sets screen frequency and angle for images to 100lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 100 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen100 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr110.cfg b/Build/source/texk/dvipsk/contrib/volker/scr110.cfg new file mode 100644 index 00000000000..6b3f4d19f00 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr110.cfg @@ -0,0 +1,21 @@ +% config.screen110 +% Configuration file for dvips. Load with: dvips -P screen110. +% +% Sets screen frequency and angle for images to 110lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 110 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen110 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr120.cfg b/Build/source/texk/dvipsk/contrib/volker/scr120.cfg new file mode 100644 index 00000000000..fe878ece24a --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr120.cfg @@ -0,0 +1,21 @@ +% config.screen120 +% Configuration file for dvips. Load with: dvips -P screen120. +% +% Sets screen frequency and angle for images to 120lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 120 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen120 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr130.cfg b/Build/source/texk/dvipsk/contrib/volker/scr130.cfg new file mode 100644 index 00000000000..aa8f96bc85d --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr130.cfg @@ -0,0 +1,21 @@ +% config.screen130 +% Configuration file for dvips. Load with: dvips -P screen130. +% +% Sets screen frequency and angle for images to 130lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 130 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen130 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr140.cfg b/Build/source/texk/dvipsk/contrib/volker/scr140.cfg new file mode 100644 index 00000000000..2dfc4acebf3 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr140.cfg @@ -0,0 +1,21 @@ +% config.screen140 +% Configuration file for dvips. Load with: dvips -P screen140. +% +% Sets screen frequency and angle for images to 140lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 140 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen140 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr150.cfg b/Build/source/texk/dvipsk/contrib/volker/scr150.cfg new file mode 100644 index 00000000000..2798e4e5081 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr150.cfg @@ -0,0 +1,21 @@ +% config.screen150 +% Configuration file for dvips. Load with: dvips -P screen150. +% +% Sets screen frequency and angle for images to 150lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 150 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen150 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr70.cfg b/Build/source/texk/dvipsk/contrib/volker/scr70.cfg new file mode 100644 index 00000000000..1d5fd85253f --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr70.cfg @@ -0,0 +1,21 @@ +% config.screen70 +% Configuration file for dvips. Load with: dvips -P screen70. +% +% Sets screen frequency and angle for images to 70lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 70 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen70 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr80.cfg b/Build/source/texk/dvipsk/contrib/volker/scr80.cfg new file mode 100644 index 00000000000..32c8ab16a31 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr80.cfg @@ -0,0 +1,21 @@ +% config.screen80 +% Configuration file for dvips. Load with: dvips -P screen80. +% +% Sets screen frequency and angle for images to 80lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 80 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen80 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr85.cfg b/Build/source/texk/dvipsk/contrib/volker/scr85.cfg new file mode 100644 index 00000000000..1fec0c09efa --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr85.cfg @@ -0,0 +1,21 @@ +% config.screen85 +% Configuration file for dvips. Load with: dvips -P screen85. +% +% Sets screen frequency and angle for images to 85lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 02 Mar 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 85 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen85 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/scr90.cfg b/Build/source/texk/dvipsk/contrib/volker/scr90.cfg new file mode 100644 index 00000000000..a02a707d1c5 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/scr90.cfg @@ -0,0 +1,21 @@ +% config.screen90 +% Configuration file for dvips. Load with: dvips -P screen90. +% +% Sets screen frequency and angle for images to 90lpi/45degree. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + 90 45 + % "Dot" function: + {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 + sub }{dup mul exch dup mul add 1 exch sub }ifelse} + setscreen +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.screen90 + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/volker/simplex.cfg b/Build/source/texk/dvipsk/contrib/volker/simplex.cfg new file mode 100644 index 00000000000..bdf5160430c --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/volker/simplex.cfg @@ -0,0 +1,19 @@ +% config.simplex +% Configuration file for dvips. Load with: dvips -P simplex. +% +% Forces printing in simplex mode on a duplex printer. +% Ignored on a simplex printer. +% Works on HP LaserJet IIISi. +% +% This file is built so it can be used both as the header file for +% PostScript and as the configuration file for dvips. +% (Note that dvips ignores any lines beginning with a space or a "%".) +% +% Volker Kuhlmann, 20 Feb 1995 +% VOLKER@ELEC.CANTERBURY.AC.NZ +% + statusdict begin false setduplexmode end +% + { % start a procedure so PostScript `ignores' the dvips options. +h config.simplex + } pop % PostScript cleanup diff --git a/Build/source/texk/dvipsk/contrib/whichinpath b/Build/source/texk/dvipsk/contrib/whichinpath new file mode 100644 index 00000000000..a45177bb212 --- /dev/null +++ b/Build/source/texk/dvipsk/contrib/whichinpath @@ -0,0 +1,13 @@ +#!/bin/sh +# +# Useful with the backtick execution special; helps to find PostScript +# files on TEXINPUTS. Contributed by S. P. Q. Rahtz. +# +pathList=`echo ${TEXINPUTS:=.:/usr/local/tex/inputs} | tr ':' ' '` +theFile=$1 + +for p in $pathList +do + test -f $p/$theFile && { echo $p/$theFile; exit 0; } +done +exit 1 -- cgit v1.2.3