summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/plain
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-11-28 01:04:47 +0000
committerKarl Berry <karl@freefriends.org>2009-11-28 01:04:47 +0000
commitc640640a7c7fd4928b8ecff3af70ce914c60807c (patch)
treea561f4db3af2b9fa7c7897c827f9bf75e75ad0aa /Master/texmf-dist/tex/plain
parent92339873dc7d35947a38f474e90666b524363add (diff)
rename jsmisc to js-misc per Catalogue
git-svn-id: svn://tug.org/texlive/trunk@16211 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/plain')
-rw-r--r--Master/texmf-dist/tex/plain/js-misc/cassette.tex166
-rw-r--r--Master/texmf-dist/tex/plain/js-misc/idverb.tex215
-rw-r--r--Master/texmf-dist/tex/plain/js-misc/js-misc.tex244
-rw-r--r--Master/texmf-dist/tex/plain/js-misc/schild.tex84
-rw-r--r--Master/texmf-dist/tex/plain/js-misc/sperr.tex116
-rw-r--r--Master/texmf-dist/tex/plain/js-misc/xfig.tex626
6 files changed, 1451 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/js-misc/cassette.tex b/Master/texmf-dist/tex/plain/js-misc/cassette.tex
new file mode 100644
index 00000000000..828260153bf
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/js-misc/cassette.tex
@@ -0,0 +1,166 @@
+% $Id: cassette.tex,v 1.2 1995/03/16 01:17:54 schrod Exp $
+%--------------------------------------------------------
+% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>.
+% Put into public domain.
+
+
+\catcode`\@=11
+
+\font\norm=cmss8
+\font\intfont=cmssi8
+\font\titfont@page=cmcsc10 scaled 800
+\font\titfont=cmss10
+\font\titintfont=cmssi10
+\font\cassfont=cmcsc10
+
+\newdimen\colwidth \colwidth=50 true mm
+\newdimen\backheight \backheight=10 true mm
+\newdimen\titheight \titheight=14 true mm
+\newdimen\pagheight \pagheight=66 true mm
+
+\def\@seite#1{%
+ \global\setbox\@page=\vbox{\hsize=\colwidth
+ \everypar={\global\hangindent=1em }%
+ \vskip \tw@\p@
+ #1\endgraf
+ \vfil
+ }%
+ }
+
+\def\cnt#1:{[#1]}
+\def\von#1:{{\intfont #1\/}:\penalty -100 } % <== Space!
+\def\nl{\hfill\break}
+
+\def\@titel#1{%
+ \global\setbox\@title=\vbox{\hsize=\colwidth
+ \let\intfont=\titintfont % Font fuer Interpret
+ \vfill
+ \unvbox\@title
+ \titfont #1\endgraf
+ \vfill
+ }%
+ {\titfont@page
+ \def\von##1:{\uppercase{##1}:\penalty -100 }% % <== Space!
+ #1%
+ }}
+
+
+\newbox\@seitea
+\newbox\@seiteb
+\newbox\@titela
+\newbox\@titelb
+\def\seitea{\let\@page=\@seitea \let\titel=\titela \obeylines \@seite}
+\def\seiteb{\let\@page=\@seiteb \let\titel=\titelb \obeylines \@seite}
+\def\titela{\let\@title=\@titela \@titel}
+\def\titelb{\let\@title=\@titelb \@titel}
+
+\def\titelcass#1{%
+ \global\setbox\@titela=\vbox{\hsize=\colwidth
+ \vfill
+ \unvbox\@titela
+ \titfont #1\endgraf
+ \vfill
+ }%
+ }
+
+
+
+
+\def\begincassette#1{%
+ \def\cassname{#1}%
+ \setbox\@seitea\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}%
+ \setbox\@seiteb\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}%
+ \setbox\@titela\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}%
+ \setbox\@titelb\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}%
+ \splittopskip\baselineskip
+ }
+
+\newif\if@text@left@
+\def\endcassette{%
+ \hbox{%
+ \vrule
+ \vbox{%
+ \hrule
+ \vbox to \backheight{\hsize2\colwidth \advance\hsize by 4.4\p@
+ \vfill
+ \centerline{\cassfont \cassname}%
+ \vfill
+ }%
+ \hrule
+ \col{\titheight}{@titel}%
+ \hrule
+ \loop
+ \global\@text@left@false
+ \one@page
+ \if@text@left@ \repeat
+ }%
+ \vrule
+ }%
+ }
+\def\one@page{%
+ \col{\pagheight}{@seite}%
+ \hrule
+ }%
+\def\col#1#2{%
+ \hbox{%
+ \hskip \p@
+ \split@col{#2a}{#1}%
+ \hskip \p@
+ \vrule
+ \hskip \p@
+ \split@col{#2b}{#1}%
+ \hskip \p@
+ }%
+ }
+\def\split@col#1#2{%
+ \expandafter \ifvoid \csname #1\endcsname
+ \vbox to #2{\hrule width\colwidth height\z@ depth\z@ \vfil}%
+ \else
+ \vbox to #2{\hsize\colwidth
+ \setbox\z@ \vsplit \csname #1\endcsname to #2\relax
+ \unvbox\z@
+ \vskip 2pt plus 1fil minus 2pt
+ }%
+ \expandafter \ifvoid \csname #1\endcsname
+ \else \global\@text@left@true
+ \fi
+ \fi
+ }
+
+
+\norm \baselineskip=9pt \lineskip=0pt \lineskiplimit=0pt
+\parindent=\z@ \parskip=\tw@\p@ minus \tw@\p@
+\rightskip=\z@ plus 0.7\colwidth \linepenalty=100
+\r@ggedbottomtrue
+\frenchspacing
+\nopagenumbers
+
+
+\endinput
+
+
+
+% ============================================================
+%
+% $Log: cassette.tex,v $
+% Revision 1.2 1995/03/16 01:17:54 schrod
+% Support for magnified typesetting.
+% Might be more changes as well, they looked sensible.
+%
+% Revision 1.1 1995/03/13 23:18:10 schrod
+% Started to manage this package with CVS. Made minor code cleanup.
+%
+
+%
+% Pre-CVS Log:
+%
+% 87-09-20 js Initial revision
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Local Variables:
+mode: plain-TeX
+TeX-master: t
+TeX-brace-indent-level: 4
+End:
diff --git a/Master/texmf-dist/tex/plain/js-misc/idverb.tex b/Master/texmf-dist/tex/plain/js-misc/idverb.tex
new file mode 100644
index 00000000000..f40dbf860cb
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/js-misc/idverb.tex
@@ -0,0 +1,215 @@
+% $Id: idverb.doc,v 1.1 1995/03/13 23:18:11 schrod Exp $
+%----------------------------------------------------------------------
+% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>.
+% Copyright conditions see below.
+
+%
+% idverb.doc --- typeset identifiers verbatim
+%
+% [plain TeX in MAKEPROG]
+% (history at end)
+
+
+%%%%
+%%%%
+%%%% These TeX macros were documented with the documentation system
+%%%% MAKEPROG and automatically converted to the current form.
+%%%% If you have MAKEPROG available you may transform it back to
+%%%% the original input: Remove every occurence of three percents
+%%%% and one optional blank from the beginning of a line and remove
+%%%% every line which starts with four percents. The following lex
+%%%% program will do this:
+%%%%
+%%%% %%
+%%%%
+%%%% ^%%%\ ? ;
+%%%% ^%%%%.*\n ;
+%%%%
+%%%% If you just want to print the documentation you may fetch
+%%%% the archive print-makeprog.tar.Z from ftp.th-darmstadt.de (directory
+%%%% pub/tex/latex). It contains *all* used styles -- but beware, they
+%%%% may not be in a documented form...
+%%%%
+%%%%
+%%% \input progdoc
+
+%%% \input names.sty
+%%% \def\v{{\tt \vbar\/}}
+
+
+
+%%% \title{Identifiers Verbatim \`a la {\ttitlefont WEB}}
+
+
+
+%%% \chap Introduction.
+
+%%% This macro files allows to write identifiers in a \WEB{} like style,
+%%% i.e.\ as {\tt \origvert identifier\origvert\/}. The identifiers are
+%%% typeset verbatim in the monospace type face. The macros
+%%% |\makevertother| and |\makevertactive| are available to activate and
+%%% deactivate the special behaviour of the vertical bar.
+
+
+%%% \sect This macro file uses the namespace |idv|.
+
+%%% \beginprog
+\ifx \IdvLoaded\undefined
+ \def\IdvLoaded{$Revision: 1.1 $}
+\else \endinput \fi % <-- one line!
+%%% \endprog
+
+
+%%% \sect These macros are supported. Send bug reports, comments and
+%%% repairs.
+
+%%% The reference version may be retrieved via anonymous ftp from
+%%% |ftp.th-darmstadt.de| [130.83.47.112], directory |pub/tex/plain|. It's
+%%% placed there as a gzipped tar file. (The information on the
+%%% IP~number is dated March 13, 1995. It might have changed, also this is very
+%%% unlikely. Use your friendly nameserver.)
+
+
+%%% \sect This is freely distributable software; you can redistribute it
+%%% and/or modify it under the terms of the GNU General Public License as
+%%% published by the Free Software Foundation; either version~2 of the
+%%% License, or (at your option) any later version.
+
+%%% This software is distributed in the hope that it will be useful, but
+%%% {\bf without any warranty\/}; without even the implied warranty of
+%%% {\bf merchantability\/} or {\bf fitness for a particular purpose}. See
+%%% the GNU General Public License for more details.
+
+%%% You should have received a copy of the GNU General Public License in
+%%% the file |License| along with this package; if not, write to the Free
+%%% Software Foundation, Inc., 675~Mass Ave, Cambridge, MA~02139,~USA.
+
+
+%%% \sect But before we start we declare some shorthands for category
+%%% codes. By declaring the at sign~(`|@|') as well as the
+%%% underscore~`(|_|)' as letters we can use them in our macros. (I agree
+%%% with D.~Knuth that |\identifier_several_words_long| is more readable
+%%% than |\IdentifierSeveralWordsLong| and in every case better than
+%%% |\p@@@s|.) With the at sign we can use the ``private'' Plain macros
+%%% and with the underscore we can make our own macros more readable. But
+%%% as we have to restore these category codes at the end of this macro
+%%% file we store their former values in control sequences. This method is
+%%% better than to use a group because not all macros have to be defined
+%%% global this way.
+
+%%% Only the first macro file read in defines the |Cat| cseqs.
+
+%%% \beginprog
+\ifx \CatEscape\undefined
+ \chardef\CatEscape=0
+ \chardef\CatOpen=1
+ \chardef\CatClose=2
+ \chardef\CatIgnore=9
+ \chardef\CatLetter=11
+ \chardef\CatOther=12
+ \chardef\CatActive=13 % \active of plain.tex
+ \chardef\CatInvalid=15
+
+ \chardef\CatAtCode=\catcode`\@
+ \chardef\CatUsCode=\catcode`\_
+\fi
+
+\catcode`\@=\CatLetter % top level macro file
+\catcode`\_=\CatLetter
+%%% \endprog
+
+
+%%% \sect Let's identify this macro file against the user and in the Log file.
+
+%%% \beginprog
+\begingroup
+ \catcode`\$=\CatIgnore
+ \catcode`\:=\CatIgnore
+ \message{Verbatim identifiers, $Revision: 1.1 $}
+\endgroup
+%%% \endprog
+
+
+%%% \sect The usual verbatim macros use |\dospecials| to change the
+%%% catcode of all special characters. We have to add `\v' to this list.
+%%% The old meaning is stored in |\idv_OrigDospecials|.
+
+%%% \beginprog
+\let\idv_OrigDospecials=\dospecials
+\begingroup
+ \def\do#1{\noexpand\do\noexpand#1}
+ \xdef\dospecials{\idv_OrigDospecials\do\|}
+\endgroup
+\let\idv_dospecials=\dospecials
+
+\def\makevertactive{\catcode`\|\CatActive \let\dospecials\idv_dospecials}
+\def\makevertother{\catcode`\|\CatOther \let\dospecials\idv_OrigDospecials}
+
+\makevertactive
+%%% \endprog
+
+
+%%% \sect Now we can define `\v'. This definition is a little bit tricky,
+%%% as it redefines itself to |\egroup| to close the hbox. But if the hbox
+%%% is ended, `\v' is restored to its original meaning. |\origvert| is
+%%% given the original meaning of `\v'. |\vbar| is the character from the
+%%% current font that has the ASCII code of a vertical bar, sometimes this
+%%% {\it is\/} a vertical bar.
+
+%%% \beginprog
+\let\origvert=|
+\chardef\vbar=`\|
+
+\def\idv_setup_verbatim{%
+ \def\do##1{\catcode`##1\CatOther}\idv_OrigDospecials
+ \parskip\z@skip \parindent\z@
+ \obeylines \obeyspaces \frenchspacing
+ \tt
+ }
+
+\def|{%
+ \leavevmode
+ \hbox\bgroup
+ \let\par\space \idv_setup_verbatim
+ \let|\egroup
+ }
+%%% \endprog
+
+
+%%% \sect We are finished;
+%%% restore the catcodes and prevent from following garbage.
+
+%%% \beginprog
+\catcode`\@=\CatAtCode
+\catcode`\_=\CatUsCode
+
+\endinput
+%%% \endprog
+
+
+%%% %% \sect {\it Acknowledgements:}\quad I would like to thank XXX
+
+
+%%% \bye
+
+%%%
+%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% %
+%%% % $Log: idverb.doc,v $
+%%% % Revision 1.1 1995/03/13 23:18:11 schrod
+%%% % Started to manage this package with CVS. Made minor code cleanup.
+%%% %
+
+%%% %
+%%% % Pre-CVS Log:
+%%% %
+%%% % 27 Jul 89 js Initial revision.
+
+
+%%%
+%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Local Variables:
+%%% mode: plain-TeX
+%%% TeX-master: t
+%%% TeX-brace-indent-level: 4
+%%% End:
diff --git a/Master/texmf-dist/tex/plain/js-misc/js-misc.tex b/Master/texmf-dist/tex/plain/js-misc/js-misc.tex
new file mode 100644
index 00000000000..c39e7c257f5
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/js-misc/js-misc.tex
@@ -0,0 +1,244 @@
+% $Id: js-misc.tex,v 1.1 1995/03/13 23:18:12 schrod Exp $
+%--------------------------------------------------
+% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>.
+
+% This is a german description for cassette.tex & schild.tex.
+
+
+% Manual fuer ``Kleine TeX-Makros, aufbauend auf PLAIN'':
+% Tonbandkassetten-Schilder
+% Buecherruecken-Schilder
+%
+% [Formate]
+
+
+\berichtformat
+
+\input idverb
+\def\.{$\bullet$}
+
+
+
+
+\titel{}{Kleine \TeX{}-Makros}{, aufbauend auf {\tt PLAIN}}
+\autor{Joachim Schrod}
+\datum{Rödermark, den 08.02.88}
+
+
+
+
+
+\kapitel{Beschriftung von Tonband-Kassetten}{}
+
+Die Beschriftung von Tonband-Kassetten wird durch
+|\input cassette| geladen.
+Durch diese Makros werden Schilder erzeugt, die
+in eine Kassettenhülle gelegt werden können.
+%Jedes Schild wird auf eine einzelne Seite gedruckt.
+Das Layout eines Schildes ist in Abb.~1.1 zu sehen.
+Das Schild wird an den äußeren Rändern ausgeschnitten
+und entlang der horizontalen Linien gefaltet.
+
+\abbvoll{
+{\input cassette
+\let\eject=\relax
+\begincassette{Kassettenname}
+\titelcass{Frontseite mit Titeln}
+\seitea{Musikstücke der Seite A}
+\seiteb{Musikstücke der Seite B}
+\endcassette
+}}{Layout eines Kassettenschildes}
+
+\noindent Folgende Befehle erzeugen das gewünschte Layout:
+
+\beginitemize
+
+\item{\.} |\begincassette|\quad (1 Parameter)\nl
+Mit diesem Befehl beginnt die Beschreibung eines Kassettenschilds.
+Der Parameter ist der Name der Kassette, der in |\cassfont|
+(Kapitälchen, 10pt) gesetzt wird.
+
+\item{\.} |\titelcass|\quad (1 Parameter)\nl
+Dieser Befehl gibt den Titel der Kassette an, der auf die
+Frontseite gesetzt wird.
+Der Titel wird in |\titfont| (Serifenlose, 10pt) gesetzt.
+Dieser Befehl ist optional, da Titel auch durch |\titel| (s.u.)\
+angegeben werden können.
+
+\item{\.} |\seitea|\quad (1 Parameter)\nl
+Durch den Parameter von |\seitea| wird die Seite~A der
+Kassette beschrieben.
+Diese Beschreibung umfaßt einen optionalen Titel und eine
+Folge von Musikstücken.
+Sie ist zeilenorientiert, d.h.\ jeweils ein Musikstück
+(mit eventuellem Interpret) steht auf einer Eingabezeile.
+Wenn der Text zu lang wird, kann durch die Angabe von |%|
+am Zeilenende die Folgezeile mitbenutzt werden.
+Innerhalb eines Musikstücks kann durch |\nl| gezielt
+umgebrochen werden, wenn man mit dem von \TeX{} gewähltem
+Umbruch nicht zufrieden ist.
+Die Musikstücke werden in |\norm| (Serifenlose, 8pt) gesetzt.
+Dieser Befehl ist optional.
+\itempar
+Folgende Hilfsbefehle stehen zur Beschreibung zur Verfügung:
+
+{\nextitemlevel\itemskip=0pt
+\item{--} |\cnt|\quad (1 Parameter, beendet durch |:|)\nl
+Mit |\cnt| kann die Zählerstellung des Beginns eines
+Musikstücks angegeben werden.
+Die angegebene Zahl wird in eckige Klammern gesetzt.
+
+\item{--} |\von|\quad (1 Parameter, beendet durch |:|)\nl
+Durch |\von| kann ein Interpret dem Musikstück vorgestellt werden.
+Ein Beispiel für eine vollständige Angabe eines Musikstücks
+kann also
+$$
+ \hbox{|\von Led Zeppelin: Stairway to heaven|}
+$$
+sein.
+Der Interpret wird in |\intfont| (Serifenlose Kursiv, 8pt) gesetzt.
+
+\item{--} |\titel|\quad (1 Parameter)\nl
+Mit diesem Befehl kann in die Seite eine Angabe eines Titels
+(z.B.~einer Schallplatte) übernommen werden.
+Dieser Titel wird gleichzeitig auf die Frontseite gesetzt.
+Innerhalb des Titels kann |\von| zur Angabe eines Interpreten
+benutzt werden.
+Dieser Befehl kann mehrmals vorkommen.
+Der Titel wird auf der Seite in |\titfont@page| (Kapitälchen, 8pt)
+gesetzt, wobei der Interpret in Versalien gesetzt wird.
+Auf der Frontseite wird der Titel in |\titfont| (Serifenlose, 10pt)
+gesetzt, wobei der Interpret in |\titintfont| (Serifenlose Kursiv, 10pt)
+gesetzt wird.
+\par}
+
+\item{\.} |\seiteb|\quad (1 Parameter)\nl
+Dieser Befehl beschreibt die Seite~B der Kassette.
+Die Beschreibungsmöglichkeiten sind mit denen von |\seitea|
+identisch.
+
+\item{\.} |\endcassette|\nl
+Durch diesen Befehl wird die Beschreibung des Kassettenschildes
+beendet und das Kassettenschild gesetzt.
+Gleichzeitig wird eine neue Seite begonnen.
+
+\enditemize
+
+
+
+
+
+\kapitel{Beschriftung von Bücherrücken}{}
+
+Die Beschriftung von Bücherrücken wird durch
+|\input schild| geladen.
+Durch diese Makrodatei ist es möglich Schilder für
+Bücherrücken zu erzeugen, die anschließend auf die Bücher
+geklebt werden können.
+Das Layout eines Schildes ist in der Abb.~2.1 gezeigt,
+es wird an den äußeren Rändern ausgeschnitten.
+
+\def\schild{%
+ \vbox{%
+ \hrule
+ \hbox{%
+ \vrule
+ \vbox to 10mm{%
+ \vfill
+ \hbox{\kern 25mm \svtnrm Name des Buches\kern 25mm}%
+ \vfill
+ }%
+ \vrule
+ }%
+ \hrule
+ }%
+ }
+
+\def\vertlen{%
+ \llap{%
+ \vbox to 10mm{%
+ \vfill
+ \hbox{{\tt \#1\/} mm }%
+ \vfill
+ }
+ }%
+ }
+\def\vertmass{%
+ \vbox{%
+ \hrule width 4mm
+ \hbox{%
+ \vertlen
+ \kern 2mm
+ \vrule height 10mm
+ }%
+ \hrule width 4mm
+ }%
+ }
+
+\def\horizmass{%
+ \hbox{%
+ \vrule height 2mm depth 2mm
+ \vtop{%
+ \hrule width 25mm
+ \kern 2mm
+ \hbox to 25mm{\ctr{\tt \char`\\rand}}%
+ }%
+ \vrule height 2mm depth 2mm
+ }%
+ }
+
+\abbvoll{
+ \offinterlineskip
+ \hbox{%
+ \llap{%
+ \vertmass
+ \hskip 2mm
+ }%
+ \schild
+ }%
+ \vskip 2mm
+ \hbox{%
+ \horizmass
+ \phantom{\svtnrm Name des Buches}%
+ \horizmass
+ }%
+}{Layout eines Buchrückenschildes}
+
+\noindent Um das Buchrückenschild zu erzeugen, existieren
+folgende Makros und Parameter:
+
+\beginitemize
+
+\item{\.} |\schild|\quad (2 Parameter)\nl
+Durch dieses Makro wird ein Schild erzeugt.
+Der erste Parameter ist die Höhe des Schildes, der zweite
+der Text, der auf das Buchrückenschild soll.
+
+\item{\.} |\rand|\nl
+|\rand| ist eine Dimensionsangabe, die beschreibt, wieviel
+Platz zwischen dem Buchnamen und dem Rand des Schildes
+horizontal verbleibt.
+
+\item{\.} |\namfont|\nl
+In |\namfont| wird der Buchname gesetzt.
+
+\enditemize
+
+
+
+
+
+\bye
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% $Log: js-misc.tex,v $
+% Revision 1.1 1995/03/13 23:18:12 schrod
+% Started to manage this package with CVS. Made minor code cleanup.
+%
+
+%
+% Pre-CVS Log:
+%
+% 88-02-08 js Initial revision
diff --git a/Master/texmf-dist/tex/plain/js-misc/schild.tex b/Master/texmf-dist/tex/plain/js-misc/schild.tex
new file mode 100644
index 00000000000..9bc3ef237b3
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/js-misc/schild.tex
@@ -0,0 +1,84 @@
+% $Id: schild.tex,v 1.1 1995/03/13 23:18:13 schrod Exp $
+%--------------------------------------------------------
+
+
+% Rueckenschild fuer ein gelumbacktes Buch:
+%
+% \buchschild#1#2 #1 == Breite in mm #2 == Name des Buches
+%
+%
+% Tuerschilder ITI:
+%
+% \tuerschild#1 #1 == Text (ueblicherweise in Grossbuchstaben)
+% falls zu lang, Font auf magstep3 reduzieren
+
+
+\newdimen\rand
+\rand=25mm
+
+\let\buchfont=\svtnrm
+\font\tuerfont=cmssdc10 scaled \magstep4 % magstep3, falls zu lang
+\let\tuerschildfont=\tuerfont
+
+
+
+\def\buchschild#1#2{%
+ \vbox{%
+ \offinterlineskip
+ \hrule
+ \hbox{%
+ \vrule
+ \vbox to #1mm{%
+ \vfill
+ \hbox{\kern\rand \buchfont #2\kern\rand}%
+ \vfill
+ }%
+ \vrule
+ }%
+ \hrule
+ }%
+ \vskip 2cm
+ }
+
+\def\tuerschild#1{%
+ \vbox{%
+ \offinterlineskip
+ \hrule
+ \hbox{%
+ \vrule
+ \vbox to 10mm{%
+ \rand=15mm
+ \vfill
+ \hbox to 155mm{\kern\rand \tuerschildfont #1\hfill}%
+ \vfill
+ }%
+ \vrule
+ }%
+ \hrule
+ }%
+ \vskip 2cm
+ }
+
+
+
+\raggedbottom
+\nopagenumbers
+
+
+\endinput
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% $Log: schild.tex,v $
+% Revision 1.1 1995/03/13 23:18:13 schrod
+% Started to manage this package with CVS. Made minor code cleanup.
+%
+
+%
+% Pre-CVS Log:
+%
+% 92-04-15 cd renamed \schild to \buchschild
+% introduced \tuerschild
+% 88-02-08 js first release
diff --git a/Master/texmf-dist/tex/plain/js-misc/sperr.tex b/Master/texmf-dist/tex/plain/js-misc/sperr.tex
new file mode 100644
index 00000000000..4e6b0902301
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/js-misc/sperr.tex
@@ -0,0 +1,116 @@
+% $Id: sperr.tex,v 1.2 1995/04/16 23:27:04 schrod Exp $
+%---------------------------------------------------------
+% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>.
+% This file is distributed without any copyright restriction.
+
+
+%
+% Makro-Datei zum Sperren von Zeichenfolgen.
+%
+% Bitte sperrt damit keine Gemeinen.
+%
+% Joachim Schrod
+%
+
+%
+% Benutzung: \sperr{TEXT}{KERNING}
+% Wenn in TEXT mehrere Token als eines behandelt werden sollen
+% (z.B. Umlaute), m\"ussen diese Tokens geklammert werden.
+%
+
+
+\ifx \CatEscape\undefined
+ \chardef\CatEscape=0
+ \chardef\CatOpen=1
+ \chardef\CatClose=2
+ \chardef\CatIgnore=9
+ \chardef\CatLetter=11
+ \chardef\CatOther=12
+ \chardef\CatActive=13 % \active of plain.tex
+ \chardef\CatInvalid=15
+
+ \chardef\CatAtCode=\catcode`\@
+ \chardef\CatUsCode=\catcode`\_
+\fi
+
+\catcode`\@=\CatLetter % top level macro file
+\catcode`\_=\CatLetter
+
+\begingroup
+ \catcode`\$=\CatIgnore
+ \catcode`\:=\CatIgnore
+ \message{Text sperren, $Revision: 1.2 $}
+\endgroup
+
+
+\let\end_list=\relax
+\edef\empty_list{\end_list}
+
+\def\split#1#2\end_list{%
+ \edef\sec_char{#1}%
+ \toks@={#2\end_list}%
+ }
+
+\def\do_split{%
+ \expandafter \split \the\toks@ \end_list
+ }
+
+\def\next_char{%
+ \edef\first_char{\sec_char}%
+ \do_split
+ }
+
+
+
+\newdimen\sperr_width
+
+\def\sperr#1#2{% % Text, Sperrbreite
+ \toks@={#1\end_list}%
+ \sperr_width=#2\relax
+ \do_split
+ \next_char % initialize pipeline
+ \ifx \sec_char\empty_list #1% % nur 1 Zeichen
+ \else \do_sperr
+ \fi
+ }
+
+
+\newif \if@loop
+
+\def\do_sperr{%
+ \loop
+ \set_char % Zeichen und nachfolgendes Kerning setzen
+ \next_char
+ \ifx \sec_char\empty_list
+ \first_char
+ \@loopfalse
+ \else \@looptrue
+ \fi
+ \if@loop
+ \repeat
+ }
+
+
+
+
+\newbox\kern_box
+\newdimen\kern_width
+
+\def\set_char{%
+ \setbox\kern_box=\hbox{\first_char\sec_char}%
+ \kern_width=\wd\kern_box
+ \setbox\kern_box=\hbox{\hbox{\first_char}\hbox{\sec_char}}%
+ \advance \kern_width by -\wd\kern_box
+ \advance \kern_width by \sperr_width
+ \first_char \kern\kern_width
+ }
+
+
+
+
+\catcode`\@=\CatAtCode
+\catcode`\_=\CatUsCode
+
+
+
+\endinput
diff --git a/Master/texmf-dist/tex/plain/js-misc/xfig.tex b/Master/texmf-dist/tex/plain/js-misc/xfig.tex
new file mode 100644
index 00000000000..95a86cff5e9
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/js-misc/xfig.tex
@@ -0,0 +1,626 @@
+% $Id: xfig.tex,v 1.4 1995/05/07 16:52:05 schrod Exp $
+%------------------------------------------------------------
+% Hacked together by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>
+% Put into public domain.
+
+%
+% Support for xfig pictures in plain TeX
+% orginally written for transfig 2.1.7
+% support last checked for transfig 3.1.3
+%
+
+
+% USAGE:
+%
+% To include xfig figures in plain TeX documents, just input these
+% macros and then input the (La)TeX file you got by exporting your
+% figure as `LaTeX picture' or by calling fig2dev with option `-L
+% latex'. No other ``language'' is supported by these macros; in
+% particular, `Combined PS/LaTeX' is not supported.
+
+% You can select the used types for text by redefining some macros:
+% \FigFontType<type> (with <type> equal `rm', `bf', `it', `sf', or
+% `tt') must expand to the external font name that's used for the
+% respective xfig font selection.
+% \FigFontDefault specifies the font that's used for the `Default'
+% font selection. That macro is only accessed if you use the new xfig,
+% or if you repaired the no-NFSS code of fig2dev (in texfonts.h, see
+% comments at \xfig@bindSetFigFont implementation below).
+%
+% At the start of each figure \pictureHook is evaluated, you might
+% want to bind that to some code that does document-specific setup.
+% Each figure is set in a group, so you can rebind other control
+% sequences in that hook.
+
+
+% ------------------------------------------------------------
+
+% IMPLEMENTATION NOTES:
+%
+% The macros might not work in all circumstances, it's updated and improved
+% by need...
+%
+% In particular:
+% -- The font selection in \SetFigFont could be improved.
+% -- The environment code (\begin/\end) is very rough and should
+% check for erroneous input.
+
+
+% Code structure:
+%
+% After general setup, code from DEK that implements most parts of
+% LaTeX's picture environment is used. Then we add definitions for the
+% missing and xfig-specific tags.
+%
+% In Emacs, each section starts on a new page.
+
+
+% ============================================================
+
+% standard setup:
+
+\ifx \CatEscape\undefined
+ \chardef\CatEscape=0
+ \chardef\CatOpen=1
+ \chardef\CatClose=2
+ \chardef\CatIgnore=9
+ \chardef\CatLetter=11
+ \chardef\CatOther=12
+ \chardef\CatActive=13 % \active of plain.tex
+ \chardef\CatInvalid=15
+
+ \chardef\CatAtCode=\catcode`\@
+ \chardef\CatUsCode=\catcode`\_
+\fi
+
+\catcode`\@=\CatLetter % top level macro file
+
+\begingroup
+ \catcode`\$=\CatIgnore
+ \catcode`\:=\CatIgnore
+ \message{xfig pictures, $Revision: 1.4 $}
+\endgroup
+
+
+% This macro file allocates registers and might be read in multiple
+% times, in groups. (Actually, this occured for the first time when we
+% wanted to use xfig pictures in Texinfo documents. There they are
+% typeset in a `tex' environment, and xfig is read in anew for each
+% figure.) As all register allocations are globally, we define some
+% macros that help us to define them only once.
+
+\def\xfig@newskip#1{%
+ \ifx #1\undefined \csname newskip\endcsname #1\fi
+ }
+\def\xfig@newdimen#1{%
+ \ifx #1\undefined \csname newdimen\endcsname #1\fi
+ }
+\def\xfig@newcount#1{%
+ \ifx #1\undefined \csname newcount\endcsname #1\fi
+ }
+\def\xfig@newbox#1{%
+ \ifx #1\undefined \csname newbox\endcsname #1\fi
+ }
+
+
+% ============================================================
+
+%% First comes an implementation of the picture environment's features,
+%% by the Grand Wizard of TeX Arcana himself. This is from picture.tex,
+%% I deleted the \cpic macro and the squines. \makebox did not support
+%% position specifiers, I substituted the definition by the one from
+%% LaTeX2e. In addition, all register allocations are made with the
+%% macros defined above.
+
+% --------------------------------------------------
+
+% Pictures (a subset of \LaTeX's conventions, plus squines)
+
+%% [start of change to DEK's code]
+%%
+%% At's catcode is changed above already.
+%% Allocation info for registers should go to log file.
+
+% \chardef\CatcodeAt=\catcode`\@
+% \catcode`\@=11 % enable private control sequences
+% \def\wlog#1{} % don't put allocation info into the log
+
+%% [end of change]
+
+\xfig@newskip\hsssglue \hsssglue=0pt plus 1fill minus 1fill
+\def\hsss{\hskip\hsssglue}
+
+\xfig@newdimen\unitlength \xfig@newdimen\linethickness
+\xfig@newdimen\@picheight \xfig@newdimen\@xdim \xfig@newdimen\@ydim \xfig@newdimen\@len
+\xfig@newdimen\@save
+\xfig@newcount\@multicount \xfig@newcount\@xarg \xfig@newcount\@yarg
+\xfig@newbox\@picbox \xfig@newbox\@mpbox
+
+\font\tenln=line10 \font\tenlnw=linew10
+\font\tencirc=lcircle10 \font\tencircw=lcirclew10
+
+\xfig@newdimen\@halfwidth
+
+\def\thinlines{\let\linefont=\tenln \let\circlefont=\tencirc
+ \linethickness=\fontdimen8\linefont \@halfwidth .5\linethickness}
+\def\thicklines{\let\linefont=\tenlnw \let\circlefont=\tencircw
+ \linethickness=\fontdimen8\linefont \@halfwidth .5\linethickness}
+\thinlines
+
+\def\beginpicture(#1,#2)(#3,#4){\@picheight=#2\unitlength
+ \setbox\@picbox=\hbox to#1\unitlength\bgroup \let\line=\@line
+ \kern-#3\unitlength \lower#4\unitlength\hbox\bgroup\ignorespaces}
+\def\endpicture{\egroup\hss\egroup
+ \ht\@picbox=\@picheight \dp\@picbox=\z@
+ \leavevmode\box\@picbox}
+
+\def\put(#1,#2)#3{\raise#2\unitlength\rlap{\kern#1\unitlength #3}\ignorespaces}
+
+\def\multiput(#1,#2)(#3,#4)#5#6{\@multicount=#5\relax
+ \@xdim=#1\unitlength \@ydim=#2\unitlength \setbox\@mpbox=\hbox{#6}%
+ \loop\ifnum\@multicount>0
+ \raise\@ydim\rlap{\kern\@xdim \unhcopy\@mpbox}%
+ \advance\@xdim#3\unitlength \advance\@ydim#4\unitlength
+ \advance\@multicount\m@ne \repeat\ignorespaces}
+
+\def\@ifnextchar#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet
+ \@tempc\@ifnch}
+\def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch
+ \else \ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi
+ \fi \@tempd}
+
+%% [start of change to DEK's code]
+%%
+%% \makebox is called with an optional argument, the position
+%% specifier. The code below is copied from the LaTeX2e beta-test
+%% release.
+
+\def\makebox(#1,#2){%
+ \@ifnextchar[{\@makebox(#1,#2)}{\@makebox(#1,#2)[]}}
+
+\def\@nnil{\@nil}
+\def\@fornoop#1\@@#2#3{}
+\def\@tfor#1:=#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\empty \else
+ \@tforloop#2\@nil\@nil\@@#1{#3}\fi}
+\def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
+ \let\@nextwhile\@fornoop \else
+ #4\relax\let\@nextwhile\@tforloop\fi\@nextwhile#2\@@#3{#4}}
+
+\long\def\@makebox(#1,#2)[#3]#4{%
+ \vbox to#2\unitlength
+ {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
+ \let\mb@t\vss
+ \@tfor\@tempa :=#3\do{%
+ \if s\@tempa
+ \let\mb@l\relax\let\mb@r\relax
+ \else
+ \expandafter\let\csname mb@\@tempa\endcsname\relax
+ \fi}%
+ \mb@t
+ \hbox to #1\unitlength{\mb@l #4\mb@r}%
+ \mb@b
+ \kern\z@}}
+
+%% [end of change]
+
+\newif\ifneg
+\def\@line(#1,#2)#3{\@xarg=#1 \@yarg=#2 \@len=#3\unitlength \leavevmode
+ \ifnum\@xarg<0 \reverseline \else \negfalse \@ydim=\z@\fi
+ \ifnum\@xarg=0 \@vline
+ \else\ifnum\@yarg=0 \@hline \else\@sline\fi\fi
+ \ifneg\kern-\@len\else\@save=\@ydim\fi}
+\def\reverseline{\negtrue \kern-\@len \@xarg=-\@xarg
+ \@ydim=\@len \multiply\@ydim\@yarg \divide\@ydim\@xarg \@yarg=-\@yarg}
+
+\def\@hline{\vrule height.5\linethickness depth.5\linethickness width\@len}
+\def\@vline{\kern-.5\linethickness\vrule width\linethickness
+ \ifnum\@yarg<0 height\z@ depth\else depth\z@ height\fi\@len
+ \kern-.5\linethickness}
+
+\def\@sline{\setbox\@picbox=\hbox{\linefont \count@=\@xarg \multiply\count@ 8
+ \ifnum\@yarg>0 \advance\count@\@yarg \advance\count@-9
+ \else \advance\count@-\@yarg \advance\count@ 55 \fi \char\count@}%
+ \ifnum\@yarg<0 \@picheight=-\ht\@picbox \advance\@ydim\@picheight
+ \else \@picheight=\ht\@picbox \fi
+ \@xdim=\wd\@picbox \@save=\@ydim
+ \loop\ifdim\@xdim<\@len \raise\@ydim\copy\@picbox
+ \advance\@xdim\wd\@picbox \advance\@ydim\@picheight \repeat
+ \advance\@xdim-\@len \kern-\@xdim
+ \multiply\@xdim\@yarg \divide\@xdim\@xarg \advance\@ydim-\@xdim
+ \raise\@ydim\box\@picbox}
+
+\def\vector(#1,#2)#3{\@line(#1,#2){#3}%
+ \ifnum\@xarg=0 \@vvector \else\ifnum\@yarg=0 \@hvector \else\@svector\fi\fi}
+\def\@hvector{\ifneg\rlap{\linefont\char27}\else
+ \smash{\llap{\linefont\char45}}\fi} % we have to smash because of font bug
+\def\@vvector{\ifnum\@yarg<0 \raise-\@len\rlap{\linefont\char63}%
+ \else\setbox\@picbox=\rlap{\linefont\char54}\advance\@len-\ht\@picbox
+ \raise\@len\box\@picbox\fi}
+
+\def\@svector{\setbox\@picbox=\hbox to\z@{\linefont
+ \ifnum\@yarg<0 \count@=55 \@yarg=-\@yarg \else\count@=-9 \fi
+ \ifneg\multiply\@xarg16 \multiply\@yarg2
+ \else\hss % \llap
+ \ifnum\@xarg>2 \multiply\@xarg9 \multiply\@yarg2 \advance\count@29
+ \else\ifnum\@yarg>2 \multiply\@xarg16 \multiply\@yarg9 \advance\count@-20
+ \else\multiply\@xarg24 \multiply\@yarg3 \fi\fi\fi
+ \advance\count@\@xarg \advance\count@\@yarg \char\count@
+ \ifneg\hss\fi}% \rlap
+ \raise\@save\box\@picbox}
+
+\def\disk#1{\@len=#1\unitlength \count@='160 \@diskcirc}
+\def\circle#1{\@len=#1\unitlength \count@='140 \@diskcirc}
+\def\@diskcirc{\setbox\@picbox=\hbox{\circlefont\char\count@}\@xdim=\wd\@picbox
+ \leavevmode \ifdim\@len>15.499\@xdim \@bigdc \else \@smalldc\fi}
+\def\@bigdc{\ifnum\count@<'160 \@bigcirc
+ \else \@len=15\@xdim \@diskcirc\fi}
+\def\@smalldc{{\advance\@len-.5\@xdim
+ \loop\ifdim\@xdim<\@len \advance\count@\@ne \advance\@xdim\wd\@picbox\repeat
+ \hbox{\circlefont\char\count@}}}
+\def\@bigcirc{{\circlefont\count@=15
+ \setbox\@picbox=\hbox{\char\count@}\@xdim=\wd\@picbox
+ \ifdim\@len>2.5\@xdim \@len=2.5\@xdim\fi
+ \advance\@len-.125\wd\@picbox
+ \loop\ifdim\@xdim<\@len \advance\count@ 4 \advance\@xdim.25\wd\@picbox\repeat
+ \@ydim=.5\@xdim \advance\@ydim.5\linethickness
+ \setbox\@picbox=\vbox{\hbox{\char\count@\advance\count@-3\char\count@}%
+ \nointerlineskip
+ \hbox{\advance\count@\m@ne\char\count@\advance\count@\m@ne\char\count@}}%
+ \kern-\@ydim\lower\@ydim\box\@picbox}}
+
+\newif\ifovaltl \newif\ifovaltr \newif\ifovalbl \newif\ifovalbr
+\ovaltltrue \ovaltrtrue \ovalbltrue \ovalbrtrue
+\def\oval(#1,#2){\@xdim=#1\unitlength \@ydim=#2\unitlength
+ {\circlefont \setbox\@picbox=\hbox{\char0}
+ \ifdim\@xdim<\wd\@picbox \@xdim=\wd\@picbox\fi
+ \ifdim\@ydim<\wd\@picbox \@ydim=\wd\@picbox\fi
+ \@save=\@xdim \ifdim\@ydim<\@save \@save=\@ydim \fi
+ \count@=39
+ \loop \setbox\@picbox=\hbox{\char\count@}\ifdim\@save<\wd\@picbox
+ \advance\count@-4 \repeat
+ \setbox\strutbox=\hbox{\vrule height\ht\@picbox depth\dp\@picbox width\z@
+ \kern\wd\@picbox}%
+ \@save=.5\wd\@picbox \advance\@save-.5\linethickness
+ \setbox0=\hbox to\@xdim{\ifovaltl\char\count@\else\strut\fi
+ \kern-\@save\leaders\hrule height\ifovaltl\linethickness\else\z@\fi\hfil
+ \leaders\hrule height\ifovaltr\linethickness\else\z@\fi\hfil\kern\@save
+ \ifovaltr\advance\count@-3\char\count@\else\strut\fi\kern-\wd\@picbox}%
+ \advance\count@\m@ne
+ \setbox2=\hbox to\@xdim{\ifovalbl\char\count@\else\strut\fi
+ \kern-\@save\leaders\hrule height\ifovalbl\linethickness\else\z@\fi\hfil
+ \leaders\hrule height\ifovalbr\linethickness\else\z@\fi\hfil\kern\@save
+ \ifovalbr\advance\count@\m@ne\char\count@\else\strut\fi\kern-\wd\@picbox}%
+ \@save=\@ydim \advance\@save-\wd\@picbox \divide\@save 2
+ \setbox\@picbox=\vbox{\box0\nointerlineskip
+ \hbox to\@xdim{\vrule height\@save width\ifovaltl\linethickness\else\z@\fi
+ \hfil\ifovaltr\vrule width\linethickness\kern-\linethickness\fi}%
+ \nointerlineskip
+ \hbox to\@xdim{\vrule height\@save width\ifovalbl\linethickness\else\z@\fi
+ \hfil\ifovalbr\vrule width\linethickness\kern-\linethickness\fi}%
+ \nointerlineskip\box2}%
+ \@save=.5\@ydim \advance\@save.5\linethickness \leavevmode
+ \kern-.5\@xdim \kern-.5\linethickness \lower\@save\box\@picbox}}
+
+% ============================================================
+
+%% More picture environment tags, output by fig2dev
+
+
+%% The framebox tag was missing in DEK's code. Below is a copy from
+%% the 1994/06/01 version of ltboxes.dtx. Actually, we need only the
+%% \@framepicbox tag.
+
+% \DescribeMacro\framebox
+% |\framebox| ... : like |\makebox|, except it puts a `frame' around
+% the box. The frame is made of lines of thickness
+% |\fboxrule|, separated by space |\fboxsep| from the
+% text -- except for |\framebox(X,Y)| ... , where the
+% thickness of the lines is as for the picture environment,
+% and there is no separation added.
+
+\def\framebox(#1,#2){%
+ \@ifnextchar[{\@framebox(#1,#2)}{\@framebox(#1,#2)[]}% ] (Emacs)
+ }
+\long\def\@framebox(#1,#2)[#3]#4{%
+ \frame{\makebox(#1,#2)[#3]{#4}}}
+
+\long\def\frame#1{%
+ \leavevmode
+ \hbox{%
+ \hskip-\linethickness
+ \vbox{%
+ \vskip-\linethickness
+ \hrule height\linethickness
+ \hbox{%
+ \vrule width\linethickness
+ #1%
+ \vrule width\linethickness}%
+ \hrule height\linethickness
+ \vskip -\linethickness}%
+ \hskip -\linethickness}}
+
+
+%% The dashbox tag was also missing. We copy it from ltpictur.dtx,
+%% 1994/05/22 v1.0e LaTeX Kernel (Picture Mode). The (missing)
+%% indentation is from there, not introduced by me. Sorry, but this
+%% must be emphasized.
+
+% \@wholewidth -> \linethickness
+% \@makepicbox -> \makebox
+
+\xfig@newdimen\@dashdim
+\xfig@newbox\@dashbox
+\xfig@newcount\@dashcnt
+
+\def\@whilenoop#1{}
+\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax
+ #2\relax}\fi}
+\def\@iwhilenum#1{\ifnum #1\let\@nextwhile\@iwhilenum
+ \else\let\@nextwhile\@whilenoop\fi\@nextwhile{#1}}
+
+\def\dashbox#1(#2,#3){\leavevmode\hbox to\z@{\baselineskip \z@skip
+\lineskip \z@skip
+\@dashdim #2\unitlength
+\@dashcnt \@dashdim \advance\@dashcnt 200
+\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt\@dashdim \z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox \hbox{\vrule height \@halfwidth depth \@halfwidth
+width \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(0,#3){\copy\@dashbox}%
+\put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
+\put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
+\multiply\@dashdim \thr@@
+\fi
+\setbox\@dashbox \hbox{\vrule height \@halfwidth depth \@halfwidth
+width #1\unitlength\hskip #1\unitlength}\count@\z@
+\put(0,0){\hskip\@dashdim \@whilenum \count@ <\@dashcnt
+\do{\copy\@dashbox\advance\count@ \@ne }}\count@\z@
+\put(0,#3){\hskip\@dashdim \@whilenum \count@ <\@dashcnt
+\do{\copy\@dashbox\advance\count@ \@ne }}%
+\@dashdim #3\unitlength
+\@dashcnt \@dashdim \advance\@dashcnt 200
+\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt \@dashdim \z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else
+\divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox\hbox{\hskip -\@halfwidth
+\vrule width \linethickness
+height \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(#2,0){\copy\@dashbox}%
+\put(0,#3){\lower\@dashdim\copy\@dashbox}%
+\put(#2,#3){\lower\@dashdim\copy\@dashbox}%
+\multiply\@dashdim \thr@@
+\fi
+\setbox\@dashbox\hbox{\vrule width \linethickness
+height #1\unitlength}\count@\z@
+\put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \count@ <\@dashcnt
+\do{\vskip #1\unitlength\copy\@dashbox\advance\count@ \@ne }%
+\vskip\@dashdim}}\count@\z@
+\put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \count@<\@dashcnt
+\do{\vskip #1\unitlength\copy\@dashbox\advance\count@ \@ne }%
+\vskip\@dashdim}}}\makebox(#2,#3)}
+
+
+% ============================================================
+
+%% Then we must supply the LaTeX tags that are inserted by fig2dev.
+
+% \setlength is the LaTeX PC way of setting a register.
+\def\setlength#1#2{#1=#2\relax}
+
+% --------------------------------------------------
+
+% \makeatletter is called to access private macros in the \SetFigFont
+% definition. Since we never expand that definition, we could ignore
+% the catcode change. But we should not define a macro with a nonsense
+% name...
+\ifx \makeatletter\undefined
+ \def\makeatletter{\catcode`\@=11 } % <-- Space
+\fi
+
+% --------------------------------------------------
+
+% The real hassle in that macro file is the font switch code. Once
+% there was an interface, in transfig 2.1.7 & 2.1.8: A macro named
+% \SetFigFont was used to select the type for texts. The macro
+% definition itself is written by fig2dev, it is part of the figure
+% code.
+%
+% Then transfig 3 was released and the interface disappeared. There's
+% still the macro \SetFigFont and the macro definition is still
+% written by fig2dev, but it may be defined with 3 arguments or with 5
+% arguments, one cannot determine what's used. The second form is used
+% when NFSS is added to the defines of fig2dev and should be the
+% default. (After all, LaTeX2e subsumed NFSS.) The first form must be
+% used for LaTeX 2.09 w/OFSS.
+%
+% \SetFigFont is not defined if it is defined already when the figure
+% code is read. OK, one might think, let's define a plain TeX version.
+% (Actually, xfig.tex up to revision 1.3 did so.) But which interface
+% shall we use for our definition? In a typical installation one has
+% old documents with xfig pictures that were created with an old
+% fig2dev, we must therefore support the three-arg-variant. Newly
+% created figures will use the five-arg-variant, though. There is no
+% obvious way to determine which variant will be used in the
+% respective figure.
+
+% Please note that the information above -- and the one below about
+% the actual possible interfaces of \SetFigFont -- was determined by
+% looking at the output of example files and the code in setfigfont.c
+% and texfonts.h, as not even the comments in these files got updated
+% when the new \SetFigFont interface was introduced. (Sigh.)
+%
+% The changes were not even marked in the list of changes, I learned
+% about them when folks from the Net sent me complaints about revision
+% 1.1 of xfig.tex. (I hadn't installed xfig 3 at this time.)
+%
+% Do I really have to tell you what I think about these kinds of
+% changes, in terms of software quality? (Don't ask me when I'm in a
+% bad mood if you want polite answers.)
+
+% Well, here's the solution: As told above, I've analyzed the possible
+% expansions of \SetFigFont. I'll define macros for every cseq that's
+% in the expansion, one of these macros will bind \SetFigFont to
+% \SetFigFontOFSS or \SetFigFontNFSS, respectively. Let's have a look:
+%
+% OFSS: evaluates \@setsize. This macro has supposed to have 4
+% arguments (type, baselineskip, font-setup, font-setup). Then the
+% type specifier is evaluated by a \csname. Passing nothing there will
+% effectively be a nop.
+%
+% NFSS: The \SetFigfont expansion uses more cseqs, but is more
+% regular, too. We may supply empty expansions for everything that
+% shall setup the font parameters: \reset@font, \fontsize (2 args),
+% \fontfamily & \fontseries & \fontshape (each 1 arg). Then
+% \selectfont is evaluated, here we bind the appropriate expansion of
+% \SetFigFont.
+
+% Now we may setup the macro definitions, evaluate one pseudo
+% \SetFigFont and \SetFigFont will be bound to the correct expansion.
+%
+% The first argument must be a number, as the OFSS \SetFigFont version
+% assigns it to a count register.
+\def\xfig@bindSetFigFont{%
+ % OFSS
+ \def\@setsize##1##2##3##4{\let\SetFigFont\SetFigFontOFSS}%
+ % NFSS
+ \let\reset@font\relax
+ \def\fontsize##1##2{}%
+ \def\fontfamily##1{}%
+ \def\fontseries##1{}%
+ \def\fontshape##1{}%
+ \def\selectfont{\let\SetFigFont\SetFigFontNFSS}%
+ % Now bind correct \SetFigFont by evaluating \SetFigFont.
+ \SetFigFont{0}{}{}{}{}%
+ }
+
+% --------------------------------------------------
+
+% The interface of \SetFigFontOFSS:
+% #1 is the size (w/o pt),
+% #2 the baselineskip (w/o pt),
+% #3 a plain TeX type specifier.
+% If #3 is empty we assume that a default font should be taken.
+% This default font can be named by \FigFontDefault. Note, that
+% this parameter is not empty if you choose the font `Default' in
+% xfig. You have to chang texfonts.h accordingly. I did it
+% already for 2.1.7 and sent the diffs to the maintainer, but
+% obviously he dumped them since they did not appear in 3.x.
+%
+% It's a pity, that we can't use the plain TeX type specifier. We
+% demand an appropriate font scaled to the correct size. This is not
+% the best solution, but nowadays most DVI drivers generate the fonts on
+% the fly anyhow.
+
+\def\FigFontDefault{cmr10}
+\def\FigFontType{\FigFontDefault\space}
+\def\FigFontTyperm{cmr10}
+\def\FigFontTypebf{cmbx10}
+\def\FigFontTypeit{cmti10}
+\def\FigFontTypesf{cmss10}
+\def\FigFontTypett{cmtt10}
+\def\SetFigFontOFSS#1#2#3{%
+ \font\FigFont \csname FigFontType#3\endcsname\space at #1pt
+ \FigFont
+ \baselineskip #2pt\relax
+ }
+
+% The interface of \SetFigFontNFSS:
+% #1 is the size (w/o pt),
+% #2 the baselineskip (w/o pt),
+% #3 the NFSS font family (as a cseq),
+% #4 the NFSS font series (as a cseq), and
+% #5 the NFSS font shape (as a cseq).
+%
+% The current font state is reset before the arguments take effect.
+% The call to \SetFigFont doesn't use the full possibilities of NFSS;
+% only fixed combinations of arguments are supplied, as xfig itself
+% knows only about a fixed set of fonts (default, roman, bold, italic,
+% sans serif, and typewriter).
+
+% We map that interface back to the one of \SetFigFontOFSS. To do that
+% we redefine the NFSS font specifiers locally to create plain TeX
+% font specifiers. That's mostly easy, medium density (`md') series
+% and upright (`up') shape are ignored in plain anyhow. The default is
+% explicitely specified by \familydefault, we don't need to infer it.
+% But there is one exception: bold is specified as `roman bold', ie,
+% as `rmbf'. For that exception we just define a new FigFontType macro.
+
+\def\FigFontTypermbf{\FigFontTypebf}
+\def\SetFigFontNFSS#1#2#3#4#5{%
+ \begingroup
+ \let\familydefault\empty
+ \def\rmdefault{rm}%
+ \def\sfdefault{sf}%
+ \def\ttdefault{tt}%
+ \let\mddefault\empty
+ \def\bfdefault{bf}%
+ \let\updefault\empty
+ \def\itdefault{it}%
+ \xdef\FigFontSpec{#3#4#5}%
+ \endgroup
+ \SetFigFontOFSS{#1}{#2}{\FigFontSpec}%
+ }
+
+% --------------------------------------------------
+
+% Environments are enclosed in \begin{foo} ... \end{foo}.
+% I don't check if the call is ok -- this file is specific for
+% machine-generated code, that shall be correct by definition.
+%
+% We need to setup the correct \SetFigFont binding, as explained above.
+% And let's evaluate a hook to enable document specific adaptions.
+
+\def\begin#1{%
+ \begingroup
+ \def\end##1{%
+ \csname end##1\endcsname
+ \endgroup
+ }%
+ \xfig@bindSetFigFont
+ \csname #1Hook\endcsname
+ \csname begin#1\endcsname
+ }
+
+
+% ============================================================
+
+\catcode`\@=\CatAtCode
+
+\endinput
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% $Log: xfig.tex,v $
+% Revision 1.4 1995/05/07 16:52:05 schrod
+% Determine \SetFigFont variant automatically. \OldXfig is not
+% looked at any more, \SetFigFontOld and \SetFigFontNew are renamed to
+% \SetFigFontOFSS and \SetFigFontNFSS.
+%
+% Revision 1.3 1995/04/17 00:01:08 schrod
+% Don't allocate registers anew if xfig.tex is read in the second
+% time.
+%
+% Revision 1.2 1995/03/16 01:15:51 schrod
+% Support output of transfig 3.1.1.
+%
+% Revision 1.1 1995/03/13 23:18:15 schrod
+% Started to manage this package with CVS. Made minor code cleanup.
+%
+
+% 94-06-10 js Initial revision.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Local Variables:
+mode: plain-tex
+TeX-master: t
+TeX-brace-indent-level: 4
+page-delimiter: "^% ==*$"
+End: