diff options
author | Karl Berry <karl@freefriends.org> | 2009-11-28 01:04:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-11-28 01:04:47 +0000 |
commit | c640640a7c7fd4928b8ecff3af70ce914c60807c (patch) | |
tree | a561f4db3af2b9fa7c7897c827f9bf75e75ad0aa /Master/texmf-dist/tex/plain | |
parent | 92339873dc7d35947a38f474e90666b524363add (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.tex | 166 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/js-misc/idverb.tex | 215 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/js-misc/js-misc.tex | 244 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/js-misc/schild.tex | 84 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/js-misc/sperr.tex | 116 | ||||
-rw-r--r-- | Master/texmf-dist/tex/plain/js-misc/xfig.tex | 626 |
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: |