summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipsk/contrib
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-17 21:41:51 +0000
committerKarl Berry <karl@freefriends.org>2006-01-17 21:41:51 +0000
commit487ca4806cc046076293cf6cc5fbba0db282bac7 (patch)
tree847b412ab5158dd7bdd7ed7e5a4cc3fbca94be32 /Build/source/texk/dvipsk/contrib
parenta3d3111bfe26b8e5f5bc6049dfb2a4ca2edc7881 (diff)
texk 1
git-svn-id: svn://tug.org/texlive/trunk@1485 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/dvipsk/contrib')
-rw-r--r--Build/source/texk/dvipsk/contrib/MakeTeXPK.pl198
-rw-r--r--Build/source/texk/dvipsk/contrib/PSTricks352
-rw-r--r--Build/source/texk/dvipsk/contrib/afm-extra/ptmr.ed118
-rw-r--r--Build/source/texk/dvipsk/contrib/afm-extra/ptmro.ed130
-rw-r--r--Build/source/texk/dvipsk/contrib/bbfig/INSTALLATION16
-rw-r--r--Build/source/texk/dvipsk/contrib/bbfig/bb.ps579
-rw-r--r--Build/source/texk/dvipsk/contrib/bbfig/bbfig22
-rw-r--r--Build/source/texk/dvipsk/contrib/bbfig/bbfig.140
-rw-r--r--Build/source/texk/dvipsk/contrib/bbfig/vmsbbfig.c113
-rw-r--r--Build/source/texk/dvipsk/contrib/colorsep.lpro184
-rw-r--r--Build/source/texk/dvipsk/contrib/config.proto46
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/2a4.ps49
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/config.fax5
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/config.lino93
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/config.lj2p95
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/config.post3x328
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/config.rokicki62
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/loop.ps2
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/mkdvipspapers429
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/papersize.level2236
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/papersize.simple44
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/prepipe.ps1
-rw-r--r--Build/source/texk/dvipsk/contrib/configs/showpage.ps1
-rw-r--r--Build/source/texk/dvipsk/contrib/crop.lpr271
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/avantgarde.sty11
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/blackdvi.sty109
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/bookman.sty11
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/chancery.sty11
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/colordvi.sty162
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/lucida.sty12
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/ncs.sty11
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/palatino.sty11
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/psfonts.sty266
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/psgreek.sty38
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/rotate.sty53
-rw-r--r--Build/source/texk/dvipsk/contrib/latex209/times.sty11
-rw-r--r--Build/source/texk/dvipsk/contrib/psfntmac/ps_lfonts.tex888
-rw-r--r--Build/source/texk/dvipsk/contrib/psfntmac/ps_plain.tex1235
-rw-r--r--Build/source/texk/dvipsk/contrib/pspic/pspic.readme40
-rw-r--r--Build/source/texk/dvipsk/contrib/pspic/pspic.sty168
-rw-r--r--Build/source/texk/dvipsk/contrib/timesmat.sty291
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/README149
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/a3.cfg17
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/duplong.cfg19
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/dupshort.cfg19
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/inv.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr100-0.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr100.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr110.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr120.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr130.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr140.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr150.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr70.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr80.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr85.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/scr90.cfg21
-rw-r--r--Build/source/texk/dvipsk/contrib/volker/simplex.cfg19
-rw-r--r--Build/source/texk/dvipsk/contrib/whichinpath13
59 files changed, 6930 insertions, 0 deletions
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\" </dev/null\n";
+system("mf \"\\mode:=$MODE; mag:=$MAG; scrollmode; input $NAME\" </dev/null");
+
+# check that $GFNAME was created correctly.
+
+if (! -e $GFNAME ) { die "Metafont failed for some reason on $GFNAME\n";}
+
+print `gftopk -v ./$GFNAME ./$PKNAME`;
+
+# Install the PK file carefully, since others may be doing the same
+# as us simultaneously.
+
+`mv $PKNAME $DESTDIR/pktmp.$$`;
+chdir($DESTDIR) || die "Couldn't cd to $DESTDIR: $!\n";
+`mv pktmp.$$ $PKNAME`;
+
+# now we want to make sure only proper people can change this new font.
+
+`/etc/chown $OWNER $PKNAME`;
+`/bin/chmod 664 $PKNAME`;
+
+# this subroutine makes sure there are no funny control characters in
+# the arguements that have been passed to the program.
+
+sub untaint {
+ local($temp) = @_;
+ $temp =~ /^([-\/\(\)\.\w]*)$/ || die "Invalid arguement: $temp\n";
+ $temp = $1;
+ return($temp);
+}
+
+
+
+
+
+
+
+
diff --git a/Build/source/texk/dvipsk/contrib/PSTricks b/Build/source/texk/dvipsk/contrib/PSTricks
new file mode 100644
index 00000000000..5ec089d1947
--- /dev/null
+++ b/Build/source/texk/dvipsk/contrib/PSTricks
@@ -0,0 +1,352 @@
+This file contains the read-me file for the PSTricks package, including
+information on how to obtain PSTricks, and a PostScript file that
+gives an idea of what the package has to offer.
+
+
+***********************************************************************
+**** "readme" file for PSTricks package, v0.92, 92/10/02 ****
+***********************************************************************
+
+COPYRIGHT 1992, by Timothy Van Zandt, tvz@Princeton.EDU
+
+COPYING:
+
+ Copying of part or all of any file in the PSTricks package
+ is allowed under the following conditions only:
+
+
+ (1) You may freely distribute unchanged copies of the files. Please
+ include the documentation when you do so.
+ (2) You may modify a renamed copy of any file, but only for personal
+ use or use within an organization.
+ (3) You may copy fragments from the files, for personal use or for use
+ in a macro package for distribution, as long as credit is given
+ where credit is due.
+
+ You are NOT ALLOWED to take money for the distribution or use of
+ these files or modified versions or fragments thereof, except for
+ a nominal charge for copying etc.
+
+DESCRIPTION:
+
+ pstricks.tex is an extensive collection of PostScript macros that is
+ compatible with most TeX macro packages, including Plain TeX , LaTeX
+ AmSTeX and AmS-LaTeX. Included are macros for color, graphics, rotation,
+ trees and overlays. It has several special features:
+
+
+ * There is a wide variety of graphics (picture drawing) macros, with
+ a flexible interface and with color support. All lines and outlines
+ can be solid, dotted or dashed. Lines and curves can have arrowheads,
+ t-bars, brackets or circles on the ends. Regions can be filled
+ with solid colors, lines or crosshatch.
+ * There is support for polar and cartesian coordinate systems.
+ * There are macros for plots and axes.
+ * Nested rotations can be made with respect to the physical page.
+ * There are flexible node macros, useful for trees, mathematical
+ diagrams, and linking information of any kind.
+ * There is a powerful loop macro that is useful for making pictures.
+ * There are macros for coloring or shading the cells of tables.
+
+ PSTricks puts the icing (PostScript) on your cake (TeX)!
+
+GETTING PSTRICKS
+
+ The PSTricks package is available from the /pub directory at
+ Princeton.EDU, and at other archives.
+
+
+ A bug list pstricks.bug is kept up-to-date on Princeton.EDU.
+
+
+ Send requests to get on or off the PSTricks mailing list to the author.
+
+FILES:
+
+ Inputs:
+ pstricks.tex : The main macro file, for use with a header file.
+ pstricks.sty : The same as pstricks.tex, but the .sty extension.
+ pstricks.con : The configuration file for pstricks.tex.
+ multido.tex : Contains the \multido macro.
+ multido.sty : Same as multido.tex, but with .sty extension.
+
+
+ Contributed:
+ pallete.tex : A palette of RGB colors, by Fred Knight.
+ pallete.sty : The same as pallete.tex, but with .sty extension.
+
+
+ Documentation:
+ pst-usr1.ps : User's Guide, part I.
+ pst-usr2.ps : User's Guide, part II.
+ pst-quik.ps : Quick Reference.
+ samples.pst : A LaTeX file of samples.
+ pst-test.tex : A Plain TeX test file.
+ changes.pst : An ASCII list of changes.
+ multido.ps : Documentation for multido.tex.
+
+
+ Sources:
+ pstricks.doc : Documentation and code for pstricks.tex.
+ pst-code.tex : LaTeX file for typesetting pstricks.doc.
+ pst-user.tex : LaTeX source for User's Guide.
+ defaults.pst : List of parameter defaults, for pst-user.tex.
+ tvz-hax.sty : Macros for pst-user.tex and pst-code.tex.
+ npsfont.sty : Macros for pst-user.tex.
+ pst-make.tex : For making pstricks.tex and pstricks.pro from pstricks.doc
+
+
+ Other:
+ read-me.pst : This file.
+ pstricks.pro : A PostScript prologue (for use with dvips).
+
+PRINTING THE USER'S GUIDE:
+
+ The User's Guide is distributed in PostScript format as
+ pst-usr1.ps and pst-usr2.ps. There is also a quick reference,
+ pst-quik.ps.
+
+
+ Sun Newsprint/Pageview users: See relevant section below.
+
+ For printing on a4 paper: See relevant section below.
+
+ The User's Guide uses less than 150K of virtual memory, which is well
+ below the minimal PostScript configuration. If you run out of memory,
+ try turning off the printer to flush out stuff left in memory
+ from previous jobs.
+
+
+ Any other problems printing pst-usr1.ps and pst-usr2.ps should be
+ reported to me. However, you are on your own if you choose
+ to typeset the LaTeX source (pst-user.tex). LaTeXing pst-user.tex
+ is NOT a good way to test PSTricks, as there are too many other
+ macros involved.
+
+PRINTING THE USER'S GUIDE ON A4 PAPER:
+
+ You may find that it prints fine as is, but you might want to try making
+ the following changes to the .ps files (this stuff is printer dependent):
+
+
+ Change these lines:
+
+
+ OLD:
+ %%BoundingBox: 0 0 612 792
+ TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 134[33
+ NEW:
+ %%BoundingBox: 0 0 596 842
+ TeXDict begin 39158280 55380996 1000 300 300 @start /Fa 134[33
+
+
+ Add this just before %%EndComments:
+
+
+ %%DocumentPaperSizes: a4
+
+
+ Add these just before %%EndSetup.
+
+
+ %%BeginPaperSize: a4
+ a4
+ %%EndPaperSize
+
+
+INSTALLATION FOR USERS OF ROKICKI'S DVIPS:
+
+ 1. Put the input files where your TeX looks for inputs.
+
+
+ 2. Put the file pstricks.pro where dvips looks for headers.
+ Probably /usr/lib/tex/ps on unix systems.
+
+
+ 3. Typeset the LaTeX file samples.pst as a test and to see the samples.
+
+
+ 3. Have fun!
+
+INSTALLATION FOR USERS OF ARBORTEXT'S DVIPS AND TEXTURES:
+
+ 1. Examine the configuration file pstricks.con. Uncomment
+ the \iffalse...\fi surrounding the commands for Rokicki's dvips.
+ Comment out the \iffalse...\fi surrounding the commands for
+ Arbortext's dvips or Textures.
+
+
+ 2. If using Textures, decide whether you want to use a header file.
+ Uncomment the definition of \pstheader if you do.
+
+
+ 3. Run pst-make through Plain TeX or LaTeX. This generates
+ pstricks.tex and possibly pstricks.pro.
+
+
+ 4. Follow the instructions above for Rokicki's dvips, using
+ the pstricks.tex and pstricks.pro files that you generated
+ rather than the ones that came with the package.
+
+
+INSTALLATION FOR USERS OF OTHER DVI-TO-PS DRIVERS:
+
+ PSTricks should be adaptable to other drivers with similar capabilities.
+ Feel free to contact me for help.
+
+ 1. Use pstricks.doc as your input file for now (rather than pstricks.tex).
+
+
+ 2. Examine the configuration file pstricks.con. Uncomment
+ the \iffalse...\fi surrounding the commands for Rokicki's dvips.
+ Try to define the required commands appropriately for you driver,
+ but don't use a header file yet (i.e., leave \pstheader
+ undefined).
+
+
+ 3. Run pst-test.tex through Plain TeX until you get things to work
+ as well as possible. You may not be able to use all of PSTricks features,
+ but if you can define \pstverb and \pstunit, you at least can use
+ all the graphics objects.
+
+
+ 4. Decide whether your driver supports inclusion of a PostScript
+ header file. (PSTricks runs much more efficiently with a header,)
+ If so, define \pstheader appropriately in pstricks.con.
+
+
+ 5. Run pst-make through Plain TeX or LaTeX. This generates
+ pstricks.tex and possibly pstricks.pro.
+
+
+ 6. Follow the instructions above for Rokicki's dvips, using
+ the pstricks.tex and pstricks.pro files that you generated
+ rather than the ones that came with the package.
+
+UPGRADING FROM VERSION 0.91:
+
+ You need to reinstall the package in its entirety, including
+ pstricks.pro. There are a few incompatible changes, described in
+ changes.pst. The User's Guide is greatly improved -- check it out.
+
+
+UPGRADING FROM VERSION 0.9 OR EARLIER:
+
+ Much has changed. You should reinstall the package in its entirety.
+ \dbox and \rotate have been removed. \psput has been replaced by \rput,
+ with new syntax. However, the command \OldPsput defines \psput to work
+ with the old syntax; the command \NewPsput defines \psput to work with
+ the new syntax. See the pst-chan.ges for more information.
+
+
+TIPS FOR HACKERS:
+
+ The file pstricks.doc contains the documentation and code, using
+ Frank Mittelbach's doc system. You can typeset this, if desired,
+ by running LaTeX on pst-code.tex. See pst-code.tex for details.
+ Don't expect too much from the documentation.
+
+
+ If you want to modify the internals of PSTricks, don't use a
+ PostScript header file (i.e., don't define \pstheader in pstricks.con)
+ and use pstricks.doc as your input file. This allows you to modify
+ both the TeX and the PostScript macros.
+
+
+ When you don't expect to make more changes for a while, run
+ pst-make to generate a new compact macro file and a new
+ PostScript header file (if desired). If using a header file,
+ don't forget to redefine \pstheader in pstricks.con.
+
+ Beware that the internal code in PSTricks is still unstable.
+
+
+USING PSTRICKS WITH SUN'S PAGEVIEW/NEWSPRINT/OPENWINDOWS
+
+ Sun's PageView/NeWSPrint/OpenWindows have many bugs.
+ Workarounds for several known problems of these have been coded into
+ PSTricks. A workaround for another bug is described below. Report other
+ problems to me.
+
+ A bug under Sun's PageView/NeWSprint 3.0 (perhaps fixed in 3.0.1),
+ causes arrows to disturb the lines. To see if you have this problem,
+ try previewing the section in pst-usr2.ps on axes. Here is a workaround:
+
+
+ If using a header, append the following to pstricks.pro:
+
+ /EndArrow { x2 y2 currentpoint grestore angle matrix identmatrix
+ rotate transform y1 add exch x1 add exch end } def
+
+ Do this in pst-usr1.ps and pst-usr2.ps as well.
+
+ If not using a header file, add the following to the end of pstricks.con:
+
+
+ \pst@def{EndArrow}<%
+ x2 y2 currentpoint grestore
+ angle matrix identmatrix rotate transform
+ y1 add exch x1 add exch end>
+
+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 <argn> <argn-1> ... <arg1> n <string> debug <argn> ... <arg1>
+% (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=<wherever> # 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 <stdio.h>
+#include <ssdef.h> /* System status codes */
+#include <unixlib>
+
+#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
+% <piet@cs.ruu.nl> 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 <Yves.Arrouye@imag.fr> [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
+#
+# <width> <height> <orient> setpage --
+#
+# where <orient> is 0 for portrait and 1 for landscape (in which case <width>
+# and <height> 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 <<EPD
+@ $papername $width $height
+@+ ! %%DocumentPaperSizes: $dscname
+@+ %%PaperSize: $dscname
+@+ %%BeginPaperSize: $dscname
+@+ /setpagedevice where {
+@+ pop 1 dict dup /PageSize [ $pswidth $psheight$exch ] put setpagedevice
+@+ } {
+@+ statusdict /$trayname known {
+@+ statusdict begin $trayname end
+@+ /$psname where { pop $psname } if
+@+ } {
+@+ /$psname where {
+@+ pop $psname
+@+ } {
+@+ statusdict /setpage known {
+@+ statusdict begin
+@+ $pswidth $psheight $orient setpage
+@+ end
+@+ } if
+@+ } ifelse
+@+ } ifelse
+@+ } ifelse
+@+ %%EndPaperSize
+
+EPD
+}
+
+if (!&GetOptions("standard|s", "non-standard|n", "dvips|d", "gs|g", "extra|e",
+ "local|l", "all|a", "paper|p=s", "help|h", "version")) {
+ &usage(1);
+} elsif ($#ARGV != -1) {
+ &usage(1);
+} elsif ($opt_help) {
+ &usage(0);
+} elsif ($opt_version) {
+ print &basename($0),
+ " version 1.2, by Yves Arrouye <Yves.Arrouye\@imag.fr>\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
+ %
+ % <string> AddToLogo <string width>
+ %
+ /LogoWidth 0 def
+ /AddToLogo
+ {
+ dup show % leaving <string> on stack
+ stringwidth pop % <swidth> 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 <colordvi.[tex,sty]>.
+%
+\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 <dimen>
+\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 <return> = control <space>
+\def\^^I{\ } % same for <tab>
+
+\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' <jan 22 1991>.}
+%----------------------------------------------------------------------
+%
+% PostScript PICTURE
+%
+% For use with DVIPS (by Tomas Rokicki)
+%
+%
+% By: Kresten Krab Thorup, University of Aalborg, Denmark
+% <krab@iesd.auc.dk>
+% 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 <name>.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 <configfilename>
+with the -P option:
+
+ dvips -P <configfilename>
+
+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 <filename>
+
+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