From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- obsolete/macros/latex209/contrib/misc/10pt.sty | 7 + obsolete/macros/latex209/contrib/misc/9pt.sty | 126 ++ obsolete/macros/latex209/contrib/misc/a4wide.sty | 36 + obsolete/macros/latex209/contrib/misc/a5.sty | 30 + .../macros/latex209/contrib/misc/algorithm.sty | 108 ++ obsolete/macros/latex209/contrib/misc/alltt.sty | 32 + obsolete/macros/latex209/contrib/misc/amsfonts.sty | 414 ++++++ .../macros/latex209/contrib/misc/amssymbols.sty | 292 +++++ .../macros/latex209/contrib/misc/askinclude.sty | 96 ++ obsolete/macros/latex209/contrib/misc/braille.sty | 49 + obsolete/macros/latex209/contrib/misc/briefdoc.tex | 283 ++++ obsolete/macros/latex209/contrib/misc/captcont.sty | 16 + .../macros/latex209/contrib/misc/changebar.sty | 155 +++ obsolete/macros/latex209/contrib/misc/chappg.sty | 15 + obsolete/macros/latex209/contrib/misc/citesort.sty | 56 + .../macros/latex209/contrib/misc/doublespace.sty | 208 +++ obsolete/macros/latex209/contrib/misc/endfloat.sty | 350 +++++ obsolete/macros/latex209/contrib/misc/endnote.sty | 34 + obsolete/macros/latex209/contrib/misc/endnotes.sty | 325 +++++ obsolete/macros/latex209/contrib/misc/float.sty | 815 ++++++++++++ obsolete/macros/latex209/contrib/misc/fnpara.sty | 138 ++ obsolete/macros/latex209/contrib/misc/index.doc | 1367 ++++++++++++++++++++ obsolete/macros/latex209/contrib/misc/nar.sty | 282 ++++ obsolete/macros/latex209/contrib/misc/natsci.sty | 61 + obsolete/macros/latex209/contrib/misc/nofm.sty | 56 + obsolete/macros/latex209/contrib/misc/preprint.sty | 149 +++ obsolete/macros/latex209/contrib/misc/refman.sty | 502 +++++++ obsolete/macros/latex209/contrib/misc/shadethm.sty | 187 +++ obsolete/macros/latex209/contrib/misc/shadow.sty | 84 ++ .../macros/latex209/contrib/misc/showlabels.sty | 28 + obsolete/macros/latex209/contrib/misc/spie.sty | 126 ++ .../macros/latex209/contrib/misc/subfigure.sty | 446 +++++++ obsolete/macros/latex209/contrib/misc/texnames.sty | 13 + .../macros/latex209/contrib/misc/threepart.sty | 40 + obsolete/macros/latex209/contrib/misc/twoup.sty | 20 + obsolete/macros/latex209/contrib/misc/varioref.sty | 168 +++ obsolete/macros/latex209/contrib/misc/xr.sty | 207 +++ 37 files changed, 7321 insertions(+) create mode 100644 obsolete/macros/latex209/contrib/misc/10pt.sty create mode 100644 obsolete/macros/latex209/contrib/misc/9pt.sty create mode 100644 obsolete/macros/latex209/contrib/misc/a4wide.sty create mode 100644 obsolete/macros/latex209/contrib/misc/a5.sty create mode 100644 obsolete/macros/latex209/contrib/misc/algorithm.sty create mode 100644 obsolete/macros/latex209/contrib/misc/alltt.sty create mode 100644 obsolete/macros/latex209/contrib/misc/amsfonts.sty create mode 100644 obsolete/macros/latex209/contrib/misc/amssymbols.sty create mode 100644 obsolete/macros/latex209/contrib/misc/askinclude.sty create mode 100644 obsolete/macros/latex209/contrib/misc/braille.sty create mode 100644 obsolete/macros/latex209/contrib/misc/briefdoc.tex create mode 100644 obsolete/macros/latex209/contrib/misc/captcont.sty create mode 100644 obsolete/macros/latex209/contrib/misc/changebar.sty create mode 100644 obsolete/macros/latex209/contrib/misc/chappg.sty create mode 100644 obsolete/macros/latex209/contrib/misc/citesort.sty create mode 100644 obsolete/macros/latex209/contrib/misc/doublespace.sty create mode 100644 obsolete/macros/latex209/contrib/misc/endfloat.sty create mode 100644 obsolete/macros/latex209/contrib/misc/endnote.sty create mode 100644 obsolete/macros/latex209/contrib/misc/endnotes.sty create mode 100644 obsolete/macros/latex209/contrib/misc/float.sty create mode 100644 obsolete/macros/latex209/contrib/misc/fnpara.sty create mode 100644 obsolete/macros/latex209/contrib/misc/index.doc create mode 100644 obsolete/macros/latex209/contrib/misc/nar.sty create mode 100644 obsolete/macros/latex209/contrib/misc/natsci.sty create mode 100644 obsolete/macros/latex209/contrib/misc/nofm.sty create mode 100644 obsolete/macros/latex209/contrib/misc/preprint.sty create mode 100644 obsolete/macros/latex209/contrib/misc/refman.sty create mode 100644 obsolete/macros/latex209/contrib/misc/shadethm.sty create mode 100644 obsolete/macros/latex209/contrib/misc/shadow.sty create mode 100644 obsolete/macros/latex209/contrib/misc/showlabels.sty create mode 100644 obsolete/macros/latex209/contrib/misc/spie.sty create mode 100644 obsolete/macros/latex209/contrib/misc/subfigure.sty create mode 100644 obsolete/macros/latex209/contrib/misc/texnames.sty create mode 100644 obsolete/macros/latex209/contrib/misc/threepart.sty create mode 100644 obsolete/macros/latex209/contrib/misc/twoup.sty create mode 100644 obsolete/macros/latex209/contrib/misc/varioref.sty create mode 100644 obsolete/macros/latex209/contrib/misc/xr.sty (limited to 'obsolete/macros/latex209/contrib/misc') diff --git a/obsolete/macros/latex209/contrib/misc/10pt.sty b/obsolete/macros/latex209/contrib/misc/10pt.sty new file mode 100644 index 0000000000..661bd79c25 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/10pt.sty @@ -0,0 +1,7 @@ +%%% Save file as: 10pt.sty Source: FILESERV@SHSU.BITNET +%%% The following checksum includes all SHSU-generated topmatter. +%%% checksum = "57724 7 44 319" +% A simple style file to give you 10pt text. It does nothing but makes +% \documentstyle[10pt]{article} +% equivalent to +% \documentstyle{article} diff --git a/obsolete/macros/latex209/contrib/misc/9pt.sty b/obsolete/macros/latex209/contrib/misc/9pt.sty new file mode 100644 index 0000000000..92cd1623b1 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/9pt.sty @@ -0,0 +1,126 @@ +% 9pt.sty 17-Apr-90 Patrick van der Smagt +% changed lines are preceded by a comment marker +% +% Available font sizes: vpt, vipt, viipt, viiipt, ixpt, xpt, +% xipt, xiipt, xivpt, xviipt, xxpt, xxvpt +% +\def\@normalsize{\@setsize\normalsize{10.8pt}\ixpt\@ixpt +\abovedisplayskip 8pt plus2pt minus4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 5pt plus3pt +minus3pt\let\@listi\@listI} +% +\def\small{\@setsize\small{9.6pt}\viiipt\@viiipt +\abovedisplayskip 7.5pt plus 3pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus2pt\belowdisplayshortskip 4pt plus2pt minus 2pt +\def\@listi{\leftmargin\leftmargini \topsep 3pt plus 2pt minus 2pt\parsep 2pt +plus 1pt minus 1pt +\itemsep \parsep}} +% +\def\footnotesize{\@setsize\footnotesize{7.5pt}\viipt\@viipt +\abovedisplayskip 5pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 3pt plus 1pt minus +2pt +% +\def\@listi{\leftmargin\leftmargini \topsep 2.5pt plus 1pt minus 1pt\parsep 2pt +plus 1pt minus 1pt +\itemsep \parsep}} +% +\def\scriptsize{\@setsize\scriptsize{7.2pt}\vipt\@vipt} +% +\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt} +% +\def\large{\@setsize\large{12pt}\xpt\@xpt} +% +\def\Large{\@setsize\Large{14.4pt}\xiipt\@xiipt} +% +\def\LARGE{\@setsize\LARGE{16.8pt}\xivpt\@xivpt} +% +\def\huge{\@setsize\huge{20.4pt}\xviipt\@xviipt} +% +\def\Huge{\@setsize\Huge{24pt}\xxpt\@xxpt} +\normalsize + +\if@twoside \oddsidemargin 44pt \evensidemargin 82pt \marginparwidth 107pt +\else \oddsidemargin 63pt \evensidemargin 63pt + \marginparwidth 90pt +\fi +\marginparsep 11pt + \topmargin 27pt \headheight 12pt \headsep 25pt \footskip 30pt + +\textheight = 43\baselineskip +\advance\textheight by \topskip +\textwidth 345pt \columnsep 10pt \columnseprule 0pt + +\footnotesep 6.65pt +\skip\footins 9pt plus 4pt minus 2pt +\floatsep 12pt plus 2pt minus 2pt \textfloatsep 20pt plus 2pt minus 4pt +\intextsep 12pt plus 2pt minus 2pt \@maxsep 20pt \dblfloatsep 12pt plus 2pt +minus 2pt \dbltextfloatsep 20pt plus 2pt minus 4pt \@dblmaxsep 20pt +\@fptop 0pt plus 1fil \@fpsep 8pt plus 2fil \@fpbot 0pt plus 1fil +\@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil +\marginparpush 5pt + +\parskip 0pt plus 1pt \parindent 15pt \partopsep 2pt plus 1pt minus 1pt +\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 +\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty +-\@lowpenalty + + +\def\part{\par \addvspace{4ex} \@afterindentfalse \secdef\@part\@spart} +\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne \refstepcounter{part} +\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else +\addcontentsline{toc}{part}{#1}\fi { \parindent 0pt \raggedright + \ifnum \c@secnumdepth >\m@ne \Large \bf Part \thepart \par \nobreak \fi \huge +\bf #2\markboth{}{}\par } \nobreak \vskip 3ex \@afterheading } +\def\@spart#1{{\parindent 0pt \raggedright + \huge \bf + #1\par} \nobreak \vskip 3ex \@afterheading } +\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus + -.2ex}{2.3ex plus .2ex}{\Large\bf}} +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\large\bf}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus +-1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\bf}} +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}} +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus + .2ex}{-1em}{\normalsize\bf}} + + +\setcounter{secnumdepth}{3} + +\def\appendix{\par + \setcounter{section}{0} + \setcounter{subsection}{0} + \def\thesection{\Alph{section}}} + + +\leftmargini 25pt +\leftmarginii 22pt \leftmarginiii 18.7pt \leftmarginiv 17pt \leftmarginv 10pt +\leftmarginvi 10pt +\leftmargin\leftmargini +\labelsep 5pt +\labelwidth\leftmargini\advance\labelwidth-\labelsep +% +\def\@listI{\leftmargin\leftmargini \parsep 3.5pt plus 2pt minus 1pt\topsep 6pt +plus 1pt minus 3pt\itemsep 2.5pt plus 2pt minus 1pt} +\let\@listi\@listI +\@listi +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep +% + \topsep 3.5pt plus 2pt minus 1pt + \parsep 2pt plus 1pt minus 1pt + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep 2pt plus 1pt minus 1pt + \parsep \z@ \partopsep 1pt plus 0pt minus 1pt + \itemsep \topsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv\advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} diff --git a/obsolete/macros/latex209/contrib/misc/a4wide.sty b/obsolete/macros/latex209/contrib/misc/a4wide.sty new file mode 100644 index 0000000000..2985221f9b --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/a4wide.sty @@ -0,0 +1,36 @@ +% +% "moretext" document style option. +% Jean-Francois Lamy, July 86 +% +% Redefines the margins so that they are more in line with +% what we are used to see. +% + +\input a4.sty + +\ifcase \@ptsize + % mods for 10 pt + \oddsidemargin 0.15 in % Left margin on odd-numbered pages. + \evensidemargin 0.35 in % Left margin on even-numbered pages. + \marginparwidth 1 in % Width of marginal notes. + \oddsidemargin 0.25 in % Note that \oddsidemargin = \evensidemargin + \evensidemargin 0.25 in + \marginparwidth 0.75 in + \textwidth 5.875 in % Width of text line. +\or % mods for 11 pt + \oddsidemargin 0.1 in % Left margin on odd-numbered pages. + \evensidemargin 0.15 in % Left margin on even-numbered pages. + \marginparwidth 1 in % Width of marginal notes. + \oddsidemargin 0.125 in % Note that \oddsidemargin = \evensidemargin + \evensidemargin 0.125 in + \marginparwidth 0.75 in + \textwidth 6.125 in % Width of text line. +\or % mods for 12 pt + \oddsidemargin -10 pt % Left margin on odd-numbered pages. + \evensidemargin 10 pt % Left margin on even-numbered pages. + \marginparwidth 1 in % Width of marginal notes. + \oddsidemargin 0 in % Note that \oddsidemargin = \evensidemargin + \evensidemargin 0 in + \marginparwidth 0.75 in + \textwidth 6.375 true in % Width of text line. +\fi diff --git a/obsolete/macros/latex209/contrib/misc/a5.sty b/obsolete/macros/latex209/contrib/misc/a5.sty new file mode 100644 index 0000000000..cf619734e5 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/a5.sty @@ -0,0 +1,30 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Mario Wolczko", +%%% version = "10", +%%% date = "21 May 1992", +%%% time = "20:51:10 BST", +%%% filename = "a5.sty", +%%% email = "mario@acm.org", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, A5 page size, page layout", +%%% supported = "no", +%%% docstring = "Sets page layout to A5 size, with equal +%%% spaces to left, middle and right and top:side:bottom space = +%%% 2:3:4. See also a5comb.sty, a4.sty" +%%% } +%%% ==================================================================== +% +% This file is in the public domain. +% +% based on ratios suggested by Dick Wakefield + +\headheight=12truept \headsep=18truept +\topmargin= -35.62truept % Nominal distance from top of paper to top of page +% top paper margin of 48.72pt +% (between top of page and top of text, excluding header) +\textwidth=313truept +\evensidemargin=-0.47truept \oddsidemargin=-35.77truept +\textheight=426truept % 10pt only (\baselineskip=12pt) + +\footskip=36truept \footheight=12truept diff --git a/obsolete/macros/latex209/contrib/misc/algorithm.sty b/obsolete/macros/latex209/contrib/misc/algorithm.sty new file mode 100644 index 0000000000..4ad31b578e --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/algorithm.sty @@ -0,0 +1,108 @@ +%%%%%%%%%%% ALGORITHMS STYLE %%%%%%%%%%% +% This style defines an environment for algorithms with the following +% features: +% +% 1) Defines an Theorem like environment (not exactly one) for +% algorithms called ``algorithm''. +% \begin{algorithm}{NAME} ... \end{algorithm} +% NAME is the NAME of the algorithm. +% Algorithms are numbered using a counter called ``algorithm''. +% +% 2) Inside this environment, the following commands are defined. +% +% \= Put the small left arrow commonly used for assignment. +% +% \invariant{INVARIANT} Use to describe invariants, put its parameter +% between ``{}'' in math mode. +% +% \begin{Block} ... \end{Block} Environment use to start a indented +% block of instructions \end{Block} put +% an ``end'' to close the block. +% +% \nextBlock{SEPARATOR} Inside a Block, it allows to put a separator +% of parts of the indented block. Usefull for +% constructions like ``IF..THEN..ELSE..END'' +% i.e. If cond then +% \begin{Block} +% then part +% \nextBlock{else} +% else part +% \end{Block} +% +% 3) \Blockindent and \algorithmindent are length that specify the +% indentention of Blocks and of the algorithm resp. +% +% 4) Instructions are separated by ``\\'', ``\par'' or by leaving a +% blank line. Before an ``\end{Block}'' a ``\\'' can't be used. +% +% +% Created by Jose Alberto Fernandez R. +% e-mail: alberto@cs.umd.edu +% + +% +\newcounter{algorithm} +\newtheorem{Alg@orithm}[algorithm]{Algorithm} +% Invariants +\newcommand{\inv@ariant}[1]{\mbox{$\{#1\}$}} +% Steps environment +\newenvironment{ste@ps}[1]{ +\begin{list}{} +{\setlength\labelsep{0in} +\addtolength\partopsep\topsep +\addtolength\partopsep\parsep +\setlength\parsep{0in} +\setlength\topsep{0in} +\setlength\itemsep{0in} +\setlength\labelwidth{0in} +\setlength\rightmargin{0in} +\setlength\leftmargin{#1}} +}{ +\end{list} +} + +% Block environment +% Indentation of the Block +\newlength{\Blockindent} +% NextBlock command +\newcommand{\next@Block}[1]{ +\end{ste@ps} +#1 +\begin{ste@ps}{\Blockindent} +\item +} + +\newenvironment{Blo@ck}{ +\let\nextBlock\next@Block +\begin{ste@ps}{\Blockindent} +\item +}{ +\end{ste@ps} +end +} +% Algorithm environment +% Assign command +\newcommand{\ass@ign}{\mbox{$\leftarrow$}} +% Indentation of the algorithm +\newlength{\algorithmindent} +% Algorithm definition +\newenvironment{algorithm}[1]{ +\let\=\ass@ign +\let\invariant\inv@ariant +\let\Block\Blo@ck +\let\endBlock\endBlo@ck +\begin{Alg@orithm} #1 +\rm\par +\begin{ste@ps}{\algorithmindent} +\item +}{ +\end{ste@ps} +\bf end +\end{Alg@orithm} +} + +% Setting default indentation +\setlength{\algorithmindent}{1em} +\setlength{\Blockindent}{2em} + +% End of algorithm.sty diff --git a/obsolete/macros/latex209/contrib/misc/alltt.sty b/obsolete/macros/latex209/contrib/misc/alltt.sty new file mode 100644 index 0000000000..b7290b7563 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/alltt.sty @@ -0,0 +1,32 @@ +% ALLTT DOCUMENT-STYLE OPTION - released 17 December 1987 +% for LaTeX version 2.09 +% Copyright (C) 1987 by Leslie Lamport + +% Defines the `alltt' environment, which is like the `verbatim' +% environment except that `\', `\{', and `\}' have their usual meanings. +% Thus, other commands and environemnts can appear within an `alltt' +% environment. Here are some things you may want to do in an `alltt' +% environment: +% +% * Change fonts--e.g., by typing `{\em empasized text\/}'. +% +% * Insert text from a file foo.tex by typing `input{foo}'. Beware that +% each stars a new line, so if foo.tex ends with a +% you can wind up with an extra blank line if you're not careful. +% +% * Insert a math formula. Note that `$' just produces a dollar sign, +% so you'll have to type `\(...\)' or `\[...\]'. Also, `^' and `_' +% just produce their characters; use `\sp' or `\sb' for super- and +% subscripts, as in `\(x\sp{2}\)'. + +\def\docspecials{\do\ \do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} + +\def\alltt{\trivlist \item[]\if@minipage\else\vskip\parskip\fi +\leftskip\@totalleftmargin\rightskip\z@ +\parindent\z@\parfillskip\@flushglue\parskip\z@ +\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par} +\obeylines \tt \catcode``=13 \@noligs \let\do\@makeother \docspecials + \frenchspacing\@vobeyspaces} + +\let\endalltt=\endtrivlist diff --git a/obsolete/macros/latex209/contrib/misc/amsfonts.sty b/obsolete/macros/latex209/contrib/misc/amsfonts.sty new file mode 100644 index 0000000000..754deb1baf --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/amsfonts.sty @@ -0,0 +1,414 @@ +% This style file makes it possible to work with the AmS fonts +% in LaTeX +% calling sequence: \documentstyle[...,amsfonts,...]{....} +% Slightly modified from a version snarfed from LISTSERV at DHDURZ1 +% One modification is that \Huge also uses the same sizes +% like the CMR family of fonts. +% The other modification is using the command \@addto to +% modify the virtual font size definitions later used +% by ARTxx.STY or REPxx.STy or so on. +% I found \@addto in VDM.STY by Mario Wolcko. +% The advantage is that using this trick you can add +% different families of fonts to the existing LATEX fonts +% and the later style options do not remove font families added +% by previous style option. SO you an add selectively +% e.g. the MSXMxx and MSYMxx families and later also +% the Euler Fraktur and the cyrillic fonts without anz changes +% in the style files. Without \@addto this is rather difficult +% to accomplish. +% Updates 11/20/1988 by E. Neuwirth (A4422DAB at AWIUNI11) + + \def\@addto#1#2{\ifx#1\undefined % do nothing + \else \toks0=\expandafter{#1}\toks1={#2}% + \global\edef#1{\the\toks0 \the\toks1 }\fi} + +\catcode`@=11 + + \font\twtymsx=msxm10 \@magscale4 + \font\svtnmsx=msxm10 \@magscale3 + \font\frtnmsx=msxm10 \@magscale2 + \font\twelvemsx=msxm10 \@magscale1 + \font\elevenmsx=msxm10 \@halfmag + \font\tenmsx=msxm10 + \font\ninemsx=msxm9 + \font\eightmsx=msxm8 + \font\sevenmsx=msxm7 + \font\sixmsx=msxm6 + \font\fivemsx=msxm5 + % + \font\twtymsy=msym10 \@magscale4 + \font\svtnmsy=msym10 \@magscale3 + \font\frtnmsy=msym10 \@magscale2 + \font\twelvemsy=msym10 \@magscale1 + \font\elevenmsy=msym10 \@halfmag + \font\tenmsy=msym10 + \font\ninemsy=msym9 + \font\eightmsy=msym8 + \font\sevenmsy=msym7 + \font\sixmsy=msym6 + \font\fivemsy=msym5 + + +\newfam\msxfam +\newfam\msyfam + +% Hier sind jetzt geaenderte LFONTS Definitionen (fuer LaTeX) + +\@addto\@vpt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\fivemsx}\textfont\msxfam=\fivemsx + \scriptfont\msxfam=\fivemsx \scriptscriptfont\msxfam=\fivemsx +\def\msy{\fam\msyfam\fivemsy}\textfont\msyfam=\fivemsy + \scriptfont\msyfam=\fivemsy \scriptscriptfont\msyfam=\fivemsy +\@setstrut\rm} + + +\@addto\@vipt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\sixmsx}\textfont\msxfam=\sixmsx + \scriptfont\msxfam=\sixmsx \scriptscriptfont\msxfam=\sixmsx +\def\msy{\fam\msyfam\sixmsy}\textfont\msyfam=\sixmsy + \scriptfont\msyfam=\sixmsy \scriptscriptfont\msyfam=\sixmsy +\@setstrut\rm} + + +\@addto\@viipt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\sevenmsx}\textfont\msxfam=\sevenmsx + \scriptfont\msxfam=\fivemsx \scriptscriptfont\msxfam=\fivemsx +\def\msy{\fam\msyfam\sevenmsy}\textfont\msyfam=\sevenmsy + \scriptfont\msyfam=\fivemsy \scriptscriptfont\msyfam=\fivemsy +\@setstrut \rm} + + +\@addto\@viiipt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\eightmsx}\textfont\msxfam=\eightmsx + \scriptfont\msxfam=\sixmsx \scriptscriptfont\msxfam=\fivemsx +\def\msy{\fam\msyfam\eightmsy}\textfont\msyfam=\eightmsy + \scriptfont\msyfam=\sixmsy \scriptscriptfont\msyfam=\fivemsy +\@setstrut \rm} + + +\@addto\@ixpt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\ninemsx}\textfont\msxfam=\ninemsx + \scriptfont\msxfam=\sixmsx \scriptscriptfont\msxfam=\fivemsx +\def\msy{\fam\msyfam\ninemsy}\textfont\msyfam=\ninemsy + \scriptfont\msyfam=\sixmsy \scriptscriptfont\msyfam=\fivemsy +\@setstrut \rm} + + +\@addto\@xpt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\tenmsx}\textfont\msxfam=\tenmsx + \scriptfont\msxfam=\sevenmsx \scriptscriptfont\msxfam=\fivemsx +\def\msy{\fam\msyfam\tenmsy}\textfont\msyfam=\tenmsy + \scriptfont\msyfam=\sevenmsy \scriptscriptfont\msyfam=\fivemsy +\@setstrut \rm} + + +\@addto\@xipt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\elevenmsx}\textfont\msxfam=\elevenmsx + \scriptfont\msxfam=\eightmsx \scriptscriptfont\msxfam=\sixmsx +\def\msy{\fam\msyfam\elevenmsy}\textfont\msyfam=\elevenmsy + \scriptfont\msyfam=\eightmsy \scriptscriptfont\msyfam=\sixmsy +\@setstrut \rm} + + +\@addto\@xiipt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\twelvemsx}\textfont\msxfam=\twelvemsx + \scriptfont\msxfam=\eightmsx \scriptscriptfont\msxfam=\sixmsx +\def\msy{\fam\msyfam\twelvemsy}\textfont\msyfam=\twelvemsy + \scriptfont\msyfam=\eightmsy \scriptscriptfont\msyfam=\sixmsy + \@setstrut \rm} + + +\@addto\@xivpt{\textfont\z@\frtnrm +% Hier AmS-Fonts +\def\msx{\fam\msxfam\frtnmsx}\textfont\msxfam=\frtnmsx + \scriptfont\msxfam=\tenmsx \scriptscriptfont\msxfam=\sevenmsx +\def\msy{\fam\msyfam\frtnmsy}\textfont\msyfam=\frtnmsy + \scriptfont\msyfam=\tenmsy \scriptscriptfont\msyfam=\sevenmsy +\@setstrut \rm} + + +\@addto\@xviipt{\textfont\z@\svtnrm +% Hier AmS-Fonts +\def\msx{\fam\msxfam\svtnmsx}\textfont\msxfam=\svtnmsx + \scriptfont\msxfam=\twelvemsx \scriptscriptfont\msxfam=\tenmsx +\def\msy{\fam\msyfam\svtnmsy}\textfont\msyfam=\svtnmsy + \scriptfont\msyfam=\twelvemsy \scriptscriptfont\msyfam=\tenmsy +\@setstrut \rm} + + +\@addto\@xxpt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\twtymsx}\textfont\msxfam=\twtymsx + \scriptfont\msxfam=\frtnmsx \scriptscriptfont\msxfam=\twelvemsx +\def\msy{\fam\msyfam\twtymsy}\textfont\msyfam=\twtymsy + \scriptfont\msyfam=\frtnmsy \scriptscriptfont\msyfam=\twelvemsy +\@setstrut \rm} + + +\@addto\@xxvpt{ +% Hier AmS-Fonts +\def\msx{\fam\msxfam\twtymsx}\textfont\msxfam=\twtymsx + \scriptfont\msxfam=\twtymsx \scriptscriptfont\msxfam=\svtnmsx +\def\msy{\fam\msyfam\twtymsy}\textfont\msyfam=\twtymsy + \scriptfont\msyfam=\twtymsy \scriptscriptfont\msyfam=\svtnmsy +\@setstrut \rm} + + +%\def\text{\relaxnext@\ifmmode\let\next\text@\else\let\next\text@@\fi\next} +%\def\text@@#1{\leavevmode\hbox{#1}} + +\def\relaxnext@{\let\next\relax} + +\def\accentfam@{7} +\def\noaccents@{\def\accentfam@{0}} + +\def\hexnumber@#1{\ifnum#1<10 \number#1\else + \ifnum#1=10 A\else\ifnum#1=11 B\else\ifnum#1=12 C\else + \ifnum#1=13 D\else\ifnum#1=14 E\else\ifnum#1=15 F\fi\fi\fi\fi\fi\fi\fi} + +\def\mathhexbox@#1#2#3{\hbox{$\m@th\mathchar"#1#2#3$}} + +\edef\msx@{\hexnumber@\msxfam} +\edef\msy@{\hexnumber@\msyfam} + +\mathchardef\boxdot="2\msx@00 +\mathchardef\boxplus="2\msx@01 +\mathchardef\boxtimes="2\msx@02 +\mathchardef\square="0\msx@03 +\mathchardef\blacksquare="0\msx@04 +\mathchardef\centerdot="2\msx@05 +\mathchardef\lozenge="0\msx@06 +\mathchardef\blacklozenge="0\msx@07 +\mathchardef\circlearrowright="3\msx@08 +\mathchardef\circlearrowleft="3\msx@09 +\mathchardef\rightleftharpoons="3\msx@0A +\mathchardef\leftrightharpoons="3\msx@0B +\mathchardef\boxminus="2\msx@0C +\mathchardef\Vdash="3\msx@0D +\mathchardef\Vvdash="3\msx@0E +\mathchardef\vDash="3\msx@0F +\mathchardef\twoheadrightarrow="3\msx@10 +\mathchardef\twoheadleftarrow="3\msx@11 +\mathchardef\leftleftarrows="3\msx@12 +\mathchardef\rightrightarrows="3\msx@13 +\mathchardef\upuparrows="3\msx@14 +\mathchardef\downdownarrows="3\msx@15 +\mathchardef\upharpoonright="3\msx@16 +\let\restriction\upharpoonright +\mathchardef\downharpoonright="3\msx@17 +\mathchardef\upharpoonleft="3\msx@18 +\mathchardef\downharpoonleft="3\msx@19 +\mathchardef\rightarrowtail="3\msx@1A +\mathchardef\leftarrowtail="3\msx@1B +\mathchardef\leftrightarrows="3\msx@1C +\mathchardef\rightleftarrows="3\msx@1D +\mathchardef\Lsh="3\msx@1E +\mathchardef\Rsh="3\msx@1F +\mathchardef\rightsquigarrow="3\msx@20 +\mathchardef\leftrightsquigarrow="3\msx@21 +\mathchardef\looparrowleft="3\msx@22 +\mathchardef\looparrowright="3\msx@23 +\mathchardef\circeq="3\msx@24 +\mathchardef\succsim="3\msx@25 +\mathchardef\gtrsim="3\msx@26 +\mathchardef\gtrapprox="3\msx@27 +\mathchardef\multimap="3\msx@28 +\mathchardef\therefore="3\msx@29 +\mathchardef\because="3\msx@2A +\mathchardef\doteqdot="3\msx@2B +\let\Doteq\doteqdot +\mathchardef\triangleq="3\msx@2C +\mathchardef\precsim="3\msx@2D +\mathchardef\lesssim="3\msx@2E +\mathchardef\lessapprox="3\msx@2F +\mathchardef\eqslantless="3\msx@30 +\mathchardef\eqslantgtr="3\msx@31 +\mathchardef\curlyeqprec="3\msx@32 +\mathchardef\curlyeqsucc="3\msx@33 +\mathchardef\preccurlyeq="3\msx@34 +\mathchardef\leqq="3\msx@35 +\mathchardef\leqslant="3\msx@36 +\mathchardef\lessgtr="3\msx@37 +\mathchardef\backprime="0\msx@38 +\mathchardef\risingdotseq="3\msx@3A +\mathchardef\fallingdotseq="3\msx@3B +\mathchardef\succcurlyeq="3\msx@3C +\mathchardef\geqq="3\msx@3D +\mathchardef\geqslant="3\msx@3E +\mathchardef\gtrless="3\msx@3F +\mathchardef\sqsubset="3\msx@40 +\mathchardef\sqsupset="3\msx@41 +\mathchardef\vartriangleright="3\msx@42 +\mathchardef\vartriangleleft ="3\msx@43 +\mathchardef\trianglerighteq="3\msx@44 +\mathchardef\trianglelefteq="3\msx@45 +\mathchardef\bigstar="0\msx@46 +\mathchardef\between="3\msx@47 +\mathchardef\blacktriangledown="0\msx@48 +\mathchardef\blacktriangleright="3\msx@49 +\mathchardef\blacktriangleleft="3\msx@4A +\mathchardef\vartriangle="0\msx@4D +\mathchardef\blacktriangle="0\msx@4E +\mathchardef\triangledown="0\msx@4F +\mathchardef\eqcirc="3\msx@50 +\mathchardef\lesseqgtr="3\msx@51 +\mathchardef\gtreqless="3\msx@52 +\mathchardef\lesseqqgtr="3\msx@53 +\mathchardef\gtreqqless="3\msx@54 +\mathchardef\Rrightarrow="3\msx@56 +\mathchardef\Lleftarrow="3\msx@57 +\mathchardef\veebar="2\msx@59 +\mathchardef\barwedge="2\msx@5A +\mathchardef\doublebarwedge="2\msx@5B +\mathchardef\angle="0\msx@5C +\mathchardef\measuredangle="0\msx@5D +\mathchardef\sphericalangle="0\msx@5E +\mathchardef\varpropto="3\msx@5F +\mathchardef\smallsmile="3\msx@60 +\mathchardef\smallfrown="3\msx@61 +\mathchardef\Subset="3\msx@62 +\mathchardef\Supset="3\msx@63 +\mathchardef\Cup="2\msx@64 +\let\doublecup\Cup +\mathchardef\Cap="2\msx@65 +\let\doublecap\Cap +\mathchardef\curlywedge="2\msx@66 +\mathchardef\curlyvee="2\msx@67 +\mathchardef\leftthreetimes="2\msx@68 +\mathchardef\rightthreetimes="2\msx@69 +\mathchardef\subseteqq="3\msx@6A +\mathchardef\supseteqq="3\msx@6B +\mathchardef\bumpeq="3\msx@6C +\mathchardef\Bumpeq="3\msx@6D +\mathchardef\lll="3\msx@6E +\let\llless\lll +\mathchardef\ggg="3\msx@6F +\let\gggtr\ggg +\mathchardef\circledS="0\msx@73 +\mathchardef\pitchfork="3\msx@74 +\mathchardef\dotplus="2\msx@75 +\mathchardef\backsim="3\msx@76 +\mathchardef\backsimeq="3\msx@77 +\mathchardef\complement="0\msx@7B +\mathchardef\intercal="2\msx@7C +\mathchardef\circledcirc="2\msx@7D +\mathchardef\circledast="2\msx@7E +\mathchardef\circleddash="2\msx@7F +\def\ulcorner{\delimiter"4\msx@70\msx@70 } +\def\urcorner{\delimiter"5\msx@71\msx@71 } +\def\llcorner{\delimiter"4\msx@78\msx@78 } +\def\lrcorner{\delimiter"5\msx@79\msx@79 } +\def\yen{{\mathhexbox@\msx@55 }} +\def\checkmark{{\mathhexbox@\msx@58 }} +\def\circledR{{\mathhexbox@\msx@72 }} +\def\maltese{{\mathhexbox@\msx@7A }} +\mathchardef\lvertneqq="3\msy@00 +\mathchardef\gvertneqq="3\msy@01 +\mathchardef\nleq="3\msy@02 +\mathchardef\ngeq="3\msy@03 +\mathchardef\nless="3\msy@04 +\mathchardef\ngtr="3\msy@05 +\mathchardef\nprec="3\msy@06 +\mathchardef\nsucc="3\msy@07 +\mathchardef\lneqq="3\msy@08 +\mathchardef\gneqq="3\msy@09 +\mathchardef\nleqslant="3\msy@0A +\mathchardef\ngeqslant="3\msy@0B +\mathchardef\lneq="3\msy@0C +\mathchardef\gneq="3\msy@0D +\mathchardef\npreceq="3\msy@0E +\mathchardef\nsucceq="3\msy@0F +\mathchardef\precnsim="3\msy@10 +\mathchardef\succnsim="3\msy@11 +\mathchardef\lnsim="3\msy@12 +\mathchardef\gnsim="3\msy@13 +\mathchardef\nleqq="3\msy@14 +\mathchardef\ngeqq="3\msy@15 +\mathchardef\precneqq="3\msy@16 +\mathchardef\succneqq="3\msy@17 +\mathchardef\precnapprox="3\msy@18 +\mathchardef\succnapprox="3\msy@19 +\mathchardef\lnapprox="3\msy@1A +\mathchardef\gnapprox="3\msy@1B +\mathchardef\nsim="3\msy@1C +\mathchardef\napprox="3\msy@1D +\mathchardef\varsubsetneq="3\msy@20 +\mathchardef\varsupsetneq="3\msy@21 +\mathchardef\nsubseteqq="3\msy@22 +\mathchardef\nsupseteqq="3\msy@23 +\mathchardef\subsetneqq="3\msy@24 +\mathchardef\supsetneqq="3\msy@25 +\mathchardef\varsubsetneqq="3\msy@26 +\mathchardef\varsupsetneqq="3\msy@27 +\mathchardef\subsetneq="3\msy@28 +\mathchardef\supsetneq="3\msy@29 +\mathchardef\nsubseteq="3\msy@2A +\mathchardef\nsupseteq="3\msy@2B +\mathchardef\nparallel="3\msy@2C +\mathchardef\nmid="3\msy@2D +\mathchardef\nshortmid="3\msy@2E +\mathchardef\nshortparallel="3\msy@2F +\mathchardef\nvdash="3\msy@30 +\mathchardef\nVdash="3\msy@31 +\mathchardef\nvDash="3\msy@32 +\mathchardef\nVDash="3\msy@33 +\mathchardef\ntrianglerighteq="3\msy@34 +\mathchardef\ntrianglelefteq="3\msy@35 +\mathchardef\ntriangleleft="3\msy@36 +\mathchardef\ntriangleright="3\msy@37 +\mathchardef\nleftarrow="3\msy@38 +\mathchardef\nrightarrow="3\msy@39 +\mathchardef\nLeftarrow="3\msy@3A +\mathchardef\nRightarrow="3\msy@3B +\mathchardef\nLeftrightarrow="3\msy@3C +\mathchardef\nleftrightarrow="3\msy@3D +\mathchardef\divideontimes="2\msy@3E +\mathchardef\varnothing="0\msy@3F +\mathchardef\nexists="0\msy@40 +\mathchardef\mho="0\msy@66 +\mathchardef\eth="0\msy@67 +\mathchardef\beth="0\msy@69 +\mathchardef\gimel="0\msy@6A +\mathchardef\daleth="0\msy@6B +\mathchardef\lessdot="3\msy@6C +\mathchardef\gtrdot="3\msy@6D +\mathchardef\ltimes="2\msy@6E +\mathchardef\rtimes="2\msy@6F +\mathchardef\shortmid="3\msy@70 +\mathchardef\shortparallel="3\msy@71 +\mathchardef\smallsetminus="2\msy@72 +\mathchardef\thicksim="3\msy@73 +\mathchardef\thickapprox="3\msy@74 +\mathchardef\approxeq="3\msy@75 +\mathchardef\succapprox="3\msy@76 +\mathchardef\precapprox="3\msy@77 +\mathchardef\curvearrowleft="3\msy@78 +\mathchardef\curvearrowright="3\msy@79 +\mathchardef\digamma="0\msy@7A +\mathchardef\varkappa="0\msy@7B +\mathchardef\hslash="0\msy@7D +\mathchardef\hbar="0\msy@7E +\mathchardef\backepsilon="3\msy@7F +\def\Bbb{\relaxnext@\ifmmode\let\next\Bbb@\else + \def\next{\Err@{Use \string\Bbb\space only in math mode}}\fi\next} +\def\Bbb@#1{{\Bbb@@{#1}}} +\def\Bbb@@#1{\noaccents@\fam\msyfam#1} +%\def\fontlist@{\\{\tenrm}\\{\sevenrm}\\{\fiverm}\\{\teni}\\{\seveni}% +%\\{\fivei}\\{\tensy}\\{\sevensy}\\{\fivesy}\\{\tenex}\\{\tenbf}\\{\sevenbf}% +%\\{\fivebf}\\{\tensl}\\{\tenit}% +% AmS-Fonts Anfang +%\\{\tenmsx}\\{\sevenmsx}\\{\fivemsx}\\{\tenmsy}\\{\sevenmsy}\\{\fivemsy }% +% AmS-Fonts Anfang + +\def\AmSTeX{{$\cal A$}\kern-.1667em\lower.5ex\hbox + {$\cal M$}\kern-.125em{$\cal S$}-\TeX} + +\catcode`@=12 % at signs are no longer letters diff --git a/obsolete/macros/latex209/contrib/misc/amssymbols.sty b/obsolete/macros/latex209/contrib/misc/amssymbols.sty new file mode 100644 index 0000000000..fda9335849 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/amssymbols.sty @@ -0,0 +1,292 @@ +% Adapted by Charles Karney (Karney%PPC.MFENET@NMFECC.ARPA) 1986/07/28. +% This style option loads up the AMS symbol fonts and associated symbol +% definitions. See the Nov 85 issue of TUGBoat for a listing of these +% symbols. Only \textfont, \scriptfont, and \scriptscriptfont sizes are +% provided. 10pt, 11pt, 12pt styles are supported. + +%% This is the LATEX version of MSSYMB.TEX. +%% Changes: +%% (1) take out the \catcode`\@ business (LaTeX takes care of this) +%% (2) Set font sizes according to \@ptsize + +% +% ***** MSSYMB.TeX ***** 4 Nov 85 +% +% This file contains the definitions for the symbols in the two +% "extra symbols" fonts created at the American Math. Society. + +%% \catcode`\@=11 + +%% \font\tenmsx=msxm10 +%% \font\sevenmsx=msxm7 +%% \font\fivemsx=msxm5 +%% \font\tenmsy=msym10 +%% \font\sevenmsy=msym7 +%% \font\fivemsy=msym5 + +\ifcase\@ptsize + \font\tenmsx=msxm10 + \font\sevenmsx=msxm7 + \font\fivemsx=msxm5 + \font\tenmsy=msym10 + \font\sevenmsy=msym7 + \font\fivemsy=msym5 +\or + \font\tenmsx=msxm10 scaled \magstephalf + \font\sevenmsx=msxm8 + \font\fivemsx=msxm6 + \font\tenmsy=msym10 scaled \magstephalf + \font\sevenmsy=msym8 + \font\fivemsy=msym6 +\or + \font\tenmsx=msxm10 scaled \magstep1 + \font\sevenmsx=msxm8 + \font\fivemsx=msxm6 + \font\tenmsy=msym10 scaled \magstep1 + \font\sevenmsy=msym8 + \font\fivemsy=msym6 +\fi + +\newfam\msxfam +\newfam\msyfam +\textfont\msxfam=\tenmsx \scriptfont\msxfam=\sevenmsx + \scriptscriptfont\msxfam=\fivemsx +\textfont\msyfam=\tenmsy \scriptfont\msyfam=\sevenmsy + \scriptscriptfont\msyfam=\fivemsy + +\def\hexnumber@#1{\ifnum#1<10 \number#1\else + \ifnum#1=10 A\else\ifnum#1=11 B\else\ifnum#1=12 C\else + \ifnum#1=13 D\else\ifnum#1=14 E\else\ifnum#1=15 F\fi\fi\fi\fi\fi\fi\fi} + +\def\msx@{\hexnumber@\msxfam} +\def\msy@{\hexnumber@\msyfam} +\mathchardef\boxdot="2\msx@00 +\mathchardef\boxplus="2\msx@01 +\mathchardef\boxtimes="2\msx@02 +\mathchardef\square="0\msx@03 +\mathchardef\blacksquare="0\msx@04 +\mathchardef\centerdot="2\msx@05 +\mathchardef\lozenge="0\msx@06 +\mathchardef\blacklozenge="0\msx@07 +\mathchardef\circlearrowright="3\msx@08 +\mathchardef\circlearrowleft="3\msx@09 +\mathchardef\rightleftharpoons="3\msx@0A +\mathchardef\leftrightharpoons="3\msx@0B +\mathchardef\boxminus="2\msx@0C +\mathchardef\Vdash="3\msx@0D +\mathchardef\Vvdash="3\msx@0E +\mathchardef\vDash="3\msx@0F +\mathchardef\twoheadrightarrow="3\msx@10 +\mathchardef\twoheadleftarrow="3\msx@11 +\mathchardef\leftleftarrows="3\msx@12 +\mathchardef\rightrightarrows="3\msx@13 +\mathchardef\upuparrows="3\msx@14 +\mathchardef\downdownarrows="3\msx@15 +\mathchardef\upharpoonright="3\msx@16 +\let\restriction=\upharpoonright +\mathchardef\downharpoonright="3\msx@17 +\mathchardef\upharpoonleft="3\msx@18 +\mathchardef\downharpoonleft="3\msx@19 +\mathchardef\rightarrowtail="3\msx@1A +\mathchardef\leftarrowtail="3\msx@1B +\mathchardef\leftrightarrows="3\msx@1C +\mathchardef\rightleftarrows="3\msx@1D +\mathchardef\Lsh="3\msx@1E +\mathchardef\Rsh="3\msx@1F +\mathchardef\rightsquigarrow="3\msx@20 +\mathchardef\leftrightsquigarrow="3\msx@21 +\mathchardef\looparrowleft="3\msx@22 +\mathchardef\looparrowright="3\msx@23 +\mathchardef\circeq="3\msx@24 +\mathchardef\succsim="3\msx@25 +\mathchardef\gtrsim="3\msx@26 +\mathchardef\gtrapprox="3\msx@27 +\mathchardef\multimap="3\msx@28 +\mathchardef\therefore="3\msx@29 +\mathchardef\because="3\msx@2A +\mathchardef\doteqdot="3\msx@2B +\let\Doteq=\doteqdot +\mathchardef\triangleq="3\msx@2C +\mathchardef\precsim="3\msx@2D +\mathchardef\lesssim="3\msx@2E +\mathchardef\lessapprox="3\msx@2F +\mathchardef\eqslantless="3\msx@30 +\mathchardef\eqslantgtr="3\msx@31 +\mathchardef\curlyeqprec="3\msx@32 +\mathchardef\curlyeqsucc="3\msx@33 +\mathchardef\preccurlyeq="3\msx@34 +\mathchardef\leqq="3\msx@35 +\mathchardef\leqslant="3\msx@36 +\mathchardef\lessgtr="3\msx@37 +\mathchardef\backprime="0\msx@38 +\mathchardef\risingdotseq="3\msx@3A +\mathchardef\fallingdotseq="3\msx@3B +\mathchardef\succcurlyeq="3\msx@3C +\mathchardef\geqq="3\msx@3D +\mathchardef\geqslant="3\msx@3E +\mathchardef\gtrless="3\msx@3F +\mathchardef\sqsubset="3\msx@40 +\mathchardef\sqsupset="3\msx@41 +\mathchardef\vartriangleright="3\msx@42 +\mathchardef\vartriangleleft="3\msx@43 +\mathchardef\trianglerighteq="3\msx@44 +\mathchardef\trianglelefteq="3\msx@45 +\mathchardef\bigstar="0\msx@46 +\mathchardef\between="3\msx@47 +\mathchardef\blacktriangledown="0\msx@48 +\mathchardef\blacktriangleright="3\msx@49 +\mathchardef\blacktriangleleft="3\msx@4A +\mathchardef\vartriangle="3\msx@4D +\mathchardef\blacktriangle="0\msx@4E +\mathchardef\triangledown="0\msx@4F +\mathchardef\eqcirc="3\msx@50 +\mathchardef\lesseqgtr="3\msx@51 +\mathchardef\gtreqless="3\msx@52 +\mathchardef\lesseqqgtr="3\msx@53 +\mathchardef\gtreqqless="3\msx@54 +\mathchardef\Rrightarrow="3\msx@56 +\mathchardef\Lleftarrow="3\msx@57 +\mathchardef\veebar="2\msx@59 +\mathchardef\barwedge="2\msx@5A +\mathchardef\doublebarwedge="2\msx@5B +\mathchardef\angle="0\msx@5C +\mathchardef\measuredangle="0\msx@5D +\mathchardef\sphericalangle="0\msx@5E +\mathchardef\varpropto="3\msx@5F +\mathchardef\smallsmile="3\msx@60 +\mathchardef\smallfrown="3\msx@61 +\mathchardef\Subset="3\msx@62 +\mathchardef\Supset="3\msx@63 +\mathchardef\Cup="2\msx@64 +\let\doublecup=\Cup +\mathchardef\Cap="2\msx@65 +\let\doublecap=\Cap +\mathchardef\curlywedge="2\msx@66 +\mathchardef\curlyvee="2\msx@67 +\mathchardef\leftthreetimes="2\msx@68 +\mathchardef\rightthreetimes="2\msx@69 +\mathchardef\subseteqq="3\msx@6A +\mathchardef\supseteqq="3\msx@6B +\mathchardef\bumpeq="3\msx@6C +\mathchardef\Bumpeq="3\msx@6D +\mathchardef\lll="3\msx@6E +\let\llless=\lll +\mathchardef\ggg="3\msx@6F +\let\gggtr=\ggg +\mathchardef\circledS="0\msx@73 +\mathchardef\pitchfork="3\msx@74 +\mathchardef\dotplus="2\msx@75 +\mathchardef\backsim="3\msx@76 +\mathchardef\backsimeq="3\msx@77 +\mathchardef\complement="0\msx@7B +\mathchardef\intercal="2\msx@7C +\mathchardef\circledcirc="2\msx@7D +\mathchardef\circledast="2\msx@7E +\mathchardef\circleddash="2\msx@7F +\def\ulcorner{\delimiter"4\msx@70\msx@70 } +\def\urcorner{\delimiter"5\msx@71\msx@71 } +\def\llcorner{\delimiter"4\msx@78\msx@78 } +\def\lrcorner{\delimiter"5\msx@79\msx@79 } +\def\yen{\mathhexbox\msx@55 } +\def\checkmark{\mathhexbox\msx@58 } +\def\circledR{\mathhexbox\msx@72 } +\def\maltese{\mathhexbox\msx@7A } +\mathchardef\lvertneqq="3\msy@00 +\mathchardef\gvertneqq="3\msy@01 +\mathchardef\nleq="3\msy@02 +\mathchardef\ngeq="3\msy@03 +\mathchardef\nless="3\msy@04 +\mathchardef\ngtr="3\msy@05 +\mathchardef\nprec="3\msy@06 +\mathchardef\nsucc="3\msy@07 +\mathchardef\lneqq="3\msy@08 +\mathchardef\gneqq="3\msy@09 +\mathchardef\nleqslant="3\msy@0A +\mathchardef\ngeqslant="3\msy@0B +\mathchardef\lneq="3\msy@0C +\mathchardef\gneq="3\msy@0D +\mathchardef\npreceq="3\msy@0E +\mathchardef\nsucceq="3\msy@0F +\mathchardef\precnsim="3\msy@10 +\mathchardef\succnsim="3\msy@11 +\mathchardef\lnsim="3\msy@12 +\mathchardef\gnsim="3\msy@13 +\mathchardef\nleqq="3\msy@14 +\mathchardef\ngeqq="3\msy@15 +\mathchardef\precneqq="3\msy@16 +\mathchardef\succneqq="3\msy@17 +\mathchardef\precnapprox="3\msy@18 +\mathchardef\succnapprox="3\msy@19 +\mathchardef\lnapprox="3\msy@1A +\mathchardef\gnapprox="3\msy@1B +\mathchardef\nsim="3\msy@1C +\mathchardef\napprox="3\msy@1D +\mathchardef\varsubsetneq="3\msy@20 +\mathchardef\varsupsetneq="3\msy@21 +\mathchardef\nsubseteqq="3\msy@22 +\mathchardef\nsupseteqq="3\msy@23 +\mathchardef\subsetneqq="3\msy@24 +\mathchardef\supsetneqq="3\msy@25 +\mathchardef\varsubsetneqq="3\msy@26 +\mathchardef\varsupsetneqq="3\msy@27 +\mathchardef\subsetneq="3\msy@28 +\mathchardef\supsetneq="3\msy@29 +\mathchardef\nsubseteq="3\msy@2A +\mathchardef\nsupseteq="3\msy@2B +\mathchardef\nparallel="3\msy@2C +\mathchardef\nmid="3\msy@2D +\mathchardef\nshortmid="3\msy@2E +\mathchardef\nshortparallel="3\msy@2F +\mathchardef\nvdash="3\msy@30 +\mathchardef\nVdash="3\msy@31 +\mathchardef\nvDash="3\msy@32 +\mathchardef\nVDash="3\msy@33 +\mathchardef\ntrianglerighteq="3\msy@34 +\mathchardef\ntrianglelefteq="3\msy@35 +\mathchardef\ntriangleleft="3\msy@36 +\mathchardef\ntriangleright="3\msy@37 +\mathchardef\nleftarrow="3\msy@38 +\mathchardef\nrightarrow="3\msy@39 +\mathchardef\nLeftarrow="3\msy@3A +\mathchardef\nRightarrow="3\msy@3B +\mathchardef\nLeftrightarrow="3\msy@3C +\mathchardef\nleftrightarrow="3\msy@3D +\mathchardef\divideontimes="2\msy@3E +\mathchardef\varnothing="0\msy@3F +\mathchardef\nexists="0\msy@40 +\mathchardef\mho="0\msy@66 +\mathchardef\thorn="0\msy@67 +\mathchardef\beth="0\msy@69 +\mathchardef\gimel="0\msy@6A +\mathchardef\daleth="0\msy@6B +\mathchardef\lessdot="3\msy@6C +\mathchardef\gtrdot="3\msy@6D +\mathchardef\ltimes="2\msy@6E +\mathchardef\rtimes="2\msy@6F +\mathchardef\shortmid="3\msy@70 +\mathchardef\shortparallel="3\msy@71 +\mathchardef\smallsetminus="2\msy@72 +\mathchardef\thicksim="3\msy@73 +\mathchardef\thickapprox="3\msy@74 +\mathchardef\approxeq="3\msy@75 +\mathchardef\succapprox="3\msy@76 +\mathchardef\precapprox="3\msy@77 +\mathchardef\curvearrowleft="3\msy@78 +\mathchardef\curvearrowright="3\msy@79 +\mathchardef\digamma="0\msy@7A +\mathchardef\varkappa="0\msy@7B +\mathchardef\hslash="0\msy@7D +\mathchardef\hbar="0\msy@7E +\mathchardef\backepsilon="3\msy@7F +% Use the next 4 lines with AMS-TeX: +%\def\Bbb{\relaxnext@\ifmmode\let\next\Bbb@\else +% \def\next{\Err@{Use \string\Bbb\space only in math mode}}\fi\next} +%\def\Bbb@#1{{\Bbb@@{#1}}} +%\def\Bbb@@#1{\noaccents@\fam\msyfam#1} +% Use the next 4 lines if NOT using AMS-TeX: +\def\Bbb{\ifmmode\let\next\Bbb@\else + \def\next{\errmessage{Use \string\Bbb\space only in math mode}}\fi\next} +\def\Bbb@#1{{\Bbb@@{#1}}} +\def\Bbb@@#1{\fam\msyfam#1} + +%% \catcode`\@=12 diff --git a/obsolete/macros/latex209/contrib/misc/askinclude.sty b/obsolete/macros/latex209/contrib/misc/askinclude.sty new file mode 100644 index 0000000000..ed0b74d1e8 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/askinclude.sty @@ -0,0 +1,96 @@ +% askinclude.sty - interactive asking of included files +% +% VERSION 1.0 November 7, 1991 +% +% (c) 1991 by Pablo A. Straub. Permission is granted to copy and use this +% in any way and for any purpose, except direct commercial advantage, +% provided that you retain this copyright notice. +% +% HISTORY +% +% 0.95 11/05/91 First beta-test version (asked two questions) +% 0.99 11/05/91 Second beta-test version (asks one question; uses * and -.) +% 1.0 11/07/91 Changed prompts (sent to comp.text.tex) +% +% Please send enhancements and corrections to straub@cs.umd.edu. +% +% USAGE +% +% \documentstyle[...,askinclude,...]{...} +% +% HOW IT WORKS +% +% The askinclude style option asks the user which files to include. If +% the user presses return, the files from the previous run are included +% automatically (except on the first run, in which case all files are +% included); if the answer is * all files are included; if the answer +% is - no files are included; otherwise the specified files (separated +% by commas, with no embedded spaces) are included. +% +% RESTRICTIONS +% +% This file redefines \document, the command executed with \begin{document}. +% It may be incompatible with other styles that also redefine \document. +% +% The user's input is not validated. Anything that is not a * or a - or an +% empty line is passed to \includeonly. +% +% ACKNOWLEDGEMENT +% +% Tom Scavo (scavo@cie.uoregon.edu) suggested saving the include file list +% from the previous run and a simplified user interface. + + +\def\@includeonly{\@gobble} % assume we do not include from last run + +\def\@inputs{*} % assume all files included + + +% determine which files to include + +\def\@star{*} % used for comparing user's answer +\def\@minus{-} % ditto + +\typeout { } +\typeout {Enter file(s) to include (separated by commas and no spaces),} +\typeout {or enter * for all files, or enter - for none, or} +\typein [\inputfiles]{press Return if this run is the same as the last.} + +\ifx\inputfiles\@star % all files included + % do nothing +\else \ifx\inputfiles\@minus % no files included + \includeonly{} + \def\@inputs{} +\else \ifx\inputfiles\empty % include according to previous run + \def\@includeonly#1{% + \gdef\@inputs{#1} + \ifx\@inputs\@star \else \global\@partswtrue\global\edef\@partlist{#1}\fi} +\else + \def\@inputs{\inputfiles} % include these files + \includeonly{\inputfiles} +\fi\fi\fi + + +% \document - redefinition of \begin{document} to handle last included files + +\def\document{\endgroup + \@colht\textheight \@colroom\textheight \vsize\textheight + \columnwidth\textwidth \@clubpenalty\clubpenalty + \if@twocolumn \advance\columnwidth -\columnsep + \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue + \fi + \hsize\columnwidth \linewidth\hsize + \begingroup\@floatplacement\@dblfloatplacement + \makeatletter\let\@writefile\@gobbletwo + \@input{\jobname.aux}\endgroup + \if@filesw \immediate\openout\@mainaux=\jobname.aux + \immediate\write\@mainaux{\relax}% + \immediate\write\@mainaux{\string\@includeonly\string{\@inputs\string}}%NEW + \fi + \def\@includeonly{} %NEW + \def\do##1{\let ##1\@notprerr} + \@preamblecmds + \let\do\noexpand + \@normalsize\everypar{}} + +% END OF FILE askinclude.sty diff --git a/obsolete/macros/latex209/contrib/misc/braille.sty b/obsolete/macros/latex209/contrib/misc/braille.sty new file mode 100644 index 0000000000..f8f974dc48 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/braille.sty @@ -0,0 +1,49 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% LaTeX-Style zur Definition der 6-Punkt Braille-Schrift-Umgebung +% V. 1.0 11.11.88 +% +% copyright FernUniversit\"at Hagen Nicht-kommerzielle +% Rechenzentrum Weitergabe an wissenschaft- +% J. Breuer / G. Barg liche Institutionen erlaubt +% EARN: RZB02 at DHAFEU11 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Zugeh\"orige Dateien: +% braille.sty diese Datei +% braille.tfm +% braille.pk (bzw. braille.1500pk) oder: +% braille.pxl (bzw. braille.1500pxl) +% Ausgabe-Zeichenvorrat: +% alle druckbaren Zeichen nach deutscher 7 Bit ASCII / +% 6-Punkt Braille-Zuordnung (also ohne Gro\ss{}buchstaben) +% Aufruf: +% \begin{braille} ... \end{braille} +% Eingabe: +% Gro\ss{}- und Kleinbuchstaben benutzbar, +% Umlaute und und Esszet nach der \"ublichen TeX-Konvention +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newenvironment{braille}% +{\font\braille=braille +\braille +\def\"##1{\if##1a\char91% +\else\if##1o\char92% +\else\if##1u\char93% +\else\if##1A\char91% +\else\if##1O\char92% +\else\if##1U\char93% +\else\if##1s\char126% +\fi\fi\fi\fi\fi\fi\fi}% +\def\ss##1{\char126}% +\begin{raggedright} +\spaceskip=18pt +\xspaceskip=18pt +\newcount\oldtolerance \oldtolerance=\tolerance +\newcount\oldpretolerance \oldpretolerance=\pretolerance +\newcount\oldhyphenpenalty \oldhyphenpenalty=\hyphenpenalty +\tolerance=10000\pretolerance=-10000\hyphenpenalty=0%trennt trotz flatterrand +}% +{ +\tolerance=\oldtolerance +\pretolerance=\oldpretolerance +\hyphenpenalty=\oldhyphenpenalty +\end{raggedright} +}% diff --git a/obsolete/macros/latex209/contrib/misc/briefdoc.tex b/obsolete/macros/latex209/contrib/misc/briefdoc.tex new file mode 100644 index 0000000000..315ae6b1e7 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/briefdoc.tex @@ -0,0 +1,283 @@ +\documentstyle[a4]{artikel1} + +\begin{document} +\title{De Nederlandse Briefstijl} +\author{Victor Eijkhout} +\maketitle + +\begin{abstract} +Een bescheiden handleiding voor de Nederlandse briefstijl, +met opmerkingen over het wat, hoe en waarom. +\end{abstract} + +\section{Verantwoording} + +De Nederlandse \LaTeX-stijl `brief' conformeert zich aan +NEN-normen\footnote{Mijn zeer grote dank aan Jan Grootenhuis +die mijn aandacht vestigde op het bestaan van de normbladen.} +1026 voor briefpapier, 3162 voor het indelen van documenten, +1025 voor enveloppen, en 3516 voor het ontwerp van formulieren. + +Briefontwerp is controversieel. Iedereen heeft een smaak, en +met name bij briefpapier is die vaak zeer uitgesproken. +Ik wil beklemtonen dat ik bij de implementatie van de briefstijl +bijna nergens mijn smaak nodig heb gehad. Dankzij de NEN-normen +is het ontwerp van briefpapier een zaak van exacte wetenschap, +niet van schone kunsten. + +Deze stijl is redelijk incompatibel met de \LaTeX\ `letter' stijl. +Hij is in bescheiden mate met opties in te stellen, +en de sleutelwoorden kunnen uit een aantal talen +gekozen worden. Alle teksten zijn verder geparametriseerd. +Het is dus goed mogelijk stijlopties te maken om deze stijl +aan een specifieke omgeving aan te passen. + +Als de gebruiker geen gebruik maakt van een voorgedrukt briefhoofd, +kan hij zijn eigen briefhoofd in \LaTeX\ implementeren, of +door de stijl een briefhoofd geleverd krijgen. Het ontwerp van +dit briefhoofd is de enige plaats waar mijn smaak zich heeft +doen gelden, maar zelfs dit ontwerp heb ik gejat uit een NEN-norm. + +Opmerking: zeker bij het gebruik van vensterenveloppen is het +voor de briefstijl +van cruciaal belang dat de gebruikte printer goed afgesteld +staat. Dit valt te controleren aan de hand van het adres: +dit dient op 33mm van de linker kantlijn te staan, terwijl +de `baseline' van de eerste regel zich 59mm onder de bovenrand +van het papier dient te bevinden. + +\section{Velden van het briefpapier} + +Deze sectie behandelt de indeling van brieven aan de hand +van NEN-norm~1026. + +\subsection{Marges} + +Alle marges conformeren zich aan NEN-1026, behalve de +rechtermarge die ik voor een evenwichtiger bladverdeling +gelijk gemaakt heb aan de linkermarge. +Met een gezette brief ziet dit er beduidend beter uit. + +De linkermarge is 33 millimeter; er zijn nog geen voorzieningen +voor de versmalde marge van 20 millimeter, die voor facturen +beter is. +Dit zal misschien ooit een optie worden. + +Om aan te sluiten by traditionele getypte briefopmaak +is `raggedright' bij verstek ingeschakeld. +Aangezien briefhoofd, referentieregels, en voetregel de brief +vrij breed kunnen maken, is de corpsgrootte bij verstek 11-punt. +10~en~12 zijn opties. + +\subsection{Briefhoofd} + +Het moeilijkste deel van een brief, en de voornaamste plek waar +de ontwerper van briefpapier zijn creativiteit kwijt kan +is het briefhoofd. +In de huidige stijl heeft de gebruiker drie mogelijkheden. + +Een. Hij gebruikt voorgedrukt briefpapier. Als dit zich een +beetje aan NEN-normen houdt is er verder niets aan de hand. + +Twee. De gebruiker kan zelf een macro \verb.\briefhoofd. schrijven. +Als dit binnen de hoogte van +\verb.\@headheight. blijft, is er niets aan de hand; +voorkeursbreedte is \verb.4\refveldbreedte., dat wil zeggen, de +breedte van de referentieregel. + +Drie. Er is een macro van twee argumenten, `maakbriefhoofd', +die een briefhoofd levert dat ge\"\i nspireerd is op de +voorbeeldbrief in NEN-1026. Voorbeeld: +\begin{verbatim} +\maakbriefhoofd{WG13}{Werkgroep 13\\ Mathematisch Instituut + \\ Toernooiveld 5\\ 6525 ED Nijmegen}\end{verbatim} +Het eerste argument levert +een tekst op die links boven een verticale lijn gezet wordt. +Het links aanlijnen gebeurt met \verb.\hfil., dus met een +\verb.\hfill. in het argument kan een deel van het hoofd naar +rechts worden geschoven. + +Het tweede argument van `maakbriefhoofd' wordt als een blokje tekst +rechts onder de lijn in het briefhoofd gehangen. +In principe is dit argument er voor het adres van de afzender. +Er is echter een mogelijkheid het antwoordadres +in het adresveld op te nemen, zie hier onder. +In het briefhoofd kan dan een omschrijving als +`adviesburo voor gespecialiseerde algemeenheden' staan. + +Het tekstblok in het tweede argument lijnt links met de datum en +het vierde voetitem (zie onder), en blijft idealiter binnen +de marge van de pagina. Er worden echter geen +`overfull box' meldingen gegeven als de tekst te breed is. + +Er is een `sterretje'-versie van `maakbriefhoofd'; +deze geeft op de vervolgbladen alleen het eerste argument +plus de streep. Dat maakt de kop van de pagina wat minder +zwaar. + +\subsection{Adresveld} + +Het adresveld wordt zodanig geplaatst dat het in het +venster van een vensterenvelop zichtbaar is als het +venster 5cm onder de bovenrand van de envelop begint. +Omdat er zowel vensterenveloppen zijn met het venster +links als rechts, is er een optie {\tt adresrechts} +die het adresveld rechts plaatst. De voorkeurspositie +is echter links; er blijft dan namelijk rechts een +`ontvangerruimte' waar de geadresseerde stempels (`binnen +gekomen dd.') en dergelijke kan zetten. + +Het adresveld komt op dezelfde manier tot stand als in de +oude `letter' stijl: de gebruiker geeft +\begin{verbatim} +\begin{brief}{Jan \TeX er\\ Overfullplein 10000 \\ Baselinestad} +\end{verbatim} +in, en hieruit destilleert \LaTeX\ de naam en het verdere +adres van de geadresseerde. +De naam komt nog voor op de vervolgbladen. + +Het schijnt van de PTT te mogen dat er (helemaal boven) in het ruitje +van de vensterenvelop een antwoordadres wordt opgenomen, +als dat maar gebeurt zodanig dat het geen verwarring +schept met het adres. Er is een commando \verb.\antwoordadres. +dat een adres als argument accepteert, +met de regels gescheiden door~\verb.\\.. +Voorbeeld: +\begin{verbatim} +\maakbriefhoofd{WG13}{De de facto standaard \\ in Vaderlandse + \\ \TeX verwerking} +\antwoordadres{Mathematisch Instituut \\ Toernooiveld 5 + \\ 6525 ED Nijmegen}\end{verbatim} + + +\subsection{De Referentieregels} + +Direct onder het adresveld volgt ruimte voor gegevens +van de geadresseerde, `Uw brief van' en `Uw kenmerk', +en van afzender, `Ons kenmerk' en `Datum'. + +Voor deze referentiegegevens staan de gebruiker +de commando's \verb.\uwbriefvan., \verb.\uwkenmerk., +\verb.\onskenmerk., en \verb.\datum. ter beschikking. +Deze macro's hebben elk \'e\'en argument tussen accolades. +De datum wordt automatisch ingevuld; niet ingevulde +gegevens worden niet opgenomen. + +De teksten die hier in de kopjes staan worden +in eerste instantie door de taalopties bepaald. +Verstekwaarde is natuurlijk `nederlands', maar er +zijn `engels', `amerikaans', en `duits' beschikbaar. +Ik houd me aanbevolen voor correcte terminologie +in andere talen; enkele fouten in de Duitse termen +zijn op aanwijzing van Marc van Woerkom verbeterd. +Wie geeft me de Franse termen? + +De teksten in de referentieregel +zijn waardes van de macros +\verb.\uwbriefvantekst., \verb.\uwkenmerktekst., +\verb.\onskenmerktekst., en \verb.\datumtekst.. +Het is dus mogelijk `doorkiesnummer' in plaats van `ons kenmerk' +te krijgen door deze tekst +als `onskernmerktekst' te declareren, bij voorbeeld +met \verb.\renewcommand. in het preamble. + + +\subsection{De tekst van de brief} + +Hier hoeft op deze plaats niets over gezegd te worden, +anders dan dat de aanhef, net als in de `letter' stijl +met \verb.\opening. gebeurt. Er is een `betreft' commando. + +Ook de afsluiting staat in het \LaTeX-boek beschreven, +maar de commandonamen zijn Nederlands geworden: +`ondertekening' (was `signature'), +`afsluiting' (was `closing'), `ps', en `cc' Dit is Engels, +maar bijna niemand weet wat het betekent. +Verder is er zowel een `bijlage' als +`bijlagen' (was~`encl'). + + +\subsection{Voetruimte} + +`In de voetruimte' (ik citeer NEN-1026) `komen die gegevens +van de afzender die niet reeds in het briefhoofd zijn +vermeld'. De keuze hiervan wordt aan de gebruiker overgelaten. +Enkele suggesties zijn: kantooradres, telefoonnummer van de +centrale, faxnummer, inschrijvingsnummer en -plaats in het +handelsregister. + +Er kunnen maximaal vier voetitems zijn. +Items verschijnen op de pagina in de volgorder waarin de +gebruiker ze gedeclareerd heeft. +Bij twee items of meer is het laatste rechtsgeplaatst. Goeie truc. + +Omdat hier beduidend meer keuze is dan bij de referentieregel, +moet de gebruiker zelf het hoofdje en de daaronder +geplaatste tekst van items in de voetregel voorschrijven. +De macro van twee argumenten \verb.\voetitem. staat +hem/haar daartoe ter beschikking. Elke van de argumenten +kan meer dan \'e\'en regel lang zijn, gebruik~\verb.\\.. +Voorbeeld: +\begin{verbatim} +\voetitem{fax:}{12345 Winat nl} +\voetitem{telefoon:}{080-613169\\ bgg: 612986} +\voetitem{telefoon\\ priv\'e:}{080-448664}\end{verbatim} + +\subsection{Hulplijntjes; vouwstreepjes} + +Door een optie `streepjes' in te schakelen, is het briefpapier +van hulpstreepjes te voorzien. + +Volgens NEN-1026 heeft briefpapier een instelstreepje halverwege, +niet voor vouwen in twee\"en zoals hele volksstammen denken, maar +voor het aanlijnen van de perforator. +Aan de rechterzijde van het blad zijn twee vouwstreepjes, een +voor vouwen in drie\"en, en een voor vouwen in twee\"en. +Geen van beide bevindt zich op de helft of een-derde van de +papierhoogte. Omdat enveloppen hoger zijn dan een A4-tje gedeeld +door 2 of~3 zou dat ook niet kunnen. Vensters, weet U wel? + +Ik ben uitgegaan van envelopformaten EN-C5 ($162\times229$mm +voor een A4 in twee\"en) en EN-DL ($110\times220$ voor +een A4 in drie\"en) volgens NEN-1025 en ISO 269-1979. +Vouwstreepjes bevinden zich op 105mm en 155mm onder de +bovenrand van het papier. + + +\section{Vervolgbladen} + +Boven elk vervolgblad komt het briefhoofd (mogelijk verkort, +zie boven) en een verkorte +vorm van de referentieregel; deze regel bevat het +bladnummer. + +Als het briefhoofd met daaronder de `vervolgreferentieregel' +(galgje! galgje!) te veel ruimte innemen, gaat de extra ruimte +af van de teksthoogte. Voor dit mechanisme durf ik niet +voor de volle achtien-en-een-half procent in te staan. +Het lijkt in ieder geval te werken. + + +\section{Opties} + +De optie `adresrechts' is boven al genoemd, evenals `streepjes'; +verder is er nog een optie `typhulp' die een +hulplijntje voor het aanlijnen van het adres zet. Misschien leuk +als je deze stijl gebruikt voor briefpapier dat daarna voor de +typmachine gebruikt wordt. + +Belangrijker zijn natuurlijk de taalopties. + +Voor mensen met te goede of slechte ogen zijn er de 10- en +12-punts opties. Let op: de kopjes in de referentie- en +voetregel blijven in {\tt cmssq8} staan. + +Puur voor het genoegen van de implementator van de briefstijl +is er de optie `USletter' die het papier 19.7 millimeter +korter maakt. + +\section{Labels} + +Pijnlijk punt. Dit moet nog gedaan worden. +\end{document} + diff --git a/obsolete/macros/latex209/contrib/misc/captcont.sty b/obsolete/macros/latex209/contrib/misc/captcont.sty new file mode 100644 index 0000000000..70f662ee25 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/captcont.sty @@ -0,0 +1,16 @@ +% SubStyle file to permit the use of captions in continuations of floats. +% +% \captcont is like \caption, except that it doesn't update the counter, and +% it doesn't make an entry in the list of figures or list of tables. + +\def\captcont{\@dblarg{\@captcont\@captype}} + +\long\def\@captcont#1[#2]#3{ +% \addcontentsline{\csname ext@#1\endcsname}{#1}{\protect\numberline{\csname +% the#1\endcsname}{\ignorespaces #2}} + \par + \begingroup + \@parboxrestore + \normalsize + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} diff --git a/obsolete/macros/latex209/contrib/misc/changebar.sty b/obsolete/macros/latex209/contrib/misc/changebar.sty new file mode 100644 index 0000000000..c0532ade63 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/changebar.sty @@ -0,0 +1,155 @@ +% Change bar document-style option for LaTeX. +% +% Copyright (C) 1990 by David B. Johnson (dbj@titan.rice.edu). + +% These macros draw a solid bar down the right margin of the output, +% covering a range of the input file that has been declared to be changed. +% +% The beginning and end of a change bar in the text are marked with +% \chgbarbegin and \chgbarend, respectively. For example, +% +% Here is some sample text \chgbarbegin that was +% changed\chgbarend{} and some that wasn't changed. +% +% The change bar is drawn continuously between the line of output +% containing the \chgbarbegin and the line of output containing the +% \chgbarend. These lines can end up on separate pages, and the +% division at page boundaries is handled automatically. + +% Two dimensions control the size and placement of the change bars: +% \chgbarwidth The width of a change bar +% \chgbarsep The distance between the text and the change bar + +% Warning: it does not appear to be possible to do this completely +% correctly, due to the time at which the verticle glue on a page is +% finally set, and the way that page breaks are decided. With +% \raggedbottom, this normally works fine. It hasn't been tested with +% \flushbottom, but will probably behave worse. In strange rare +% situations, a change bar might be drawn from the first line of a page +% up off the top of a page; this can usually be fixed by slightly moving +% the \chngbarend around, or by breaking a single change bar range +% into two ranges. + +\newdimen\chgbarwidth \newdimen\chgbarsep +\chgbarwidth 4pt +\chgbarsep .25in + +\def\chgbarbegin{\ifhmode\@chgbar{-2}\else\@chgbar{-3}\fi} +\def\chgbarend{\@chgbar{-4}} + +\marginparpush 0pt + +% The remainder of this is hacked up based on the LaTeX 2.09 latex.tex. + +% copied from \marginpar +\def\@chgbar#1{\ifhmode \@bsphack\@floatpenalty -\@Mii\else + \@floatpenalty-\@Miii\fi\ifinner + \@parmoderr\@floatpenalty\z@ + \else\@next\@currbox\@freelist{\global + \count\@currbox#1}{\@floatpenalty\z@ \@fltovf + \def\@currbox{\@tempboxa}}\fi + \setbox\@tempboxa\vbox + \bgroup\end@float\@esphack} + +\newdimen\@chgbarbegin +\newif\if@inchgbar \@inchgbarfalse + +\def\@addmarginpar{% +\ifnum\count\@currbox = -2 % change bar begin from hmode + \global\@chgbarbegin\@pageht \global\advance\@chgbarbegin -\baselineskip + \global\@inchgbartrue + \@cons\@freelist\@currbox +\else +\ifnum\count\@currbox = -3 % change bar begin not from hmode + \global\@chgbarbegin\@pageht + \global\@inchgbartrue + \@cons\@freelist\@currbox +\else +\ifnum\count\@currbox = -4 % change bar end + \if@inchgbar\else\@latexbug\fi + \@tempdima\@pageht \advance\@tempdima -\@chgbarbegin + \nointerlineskip + \@tempcnta\@ne + \if@twocolumn + \if@firstcolumn \@tempcnta\m@ne \fi + \else + \if@mparswitch + \ifodd\c@page \else\@tempcnta\m@ne \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \hbox to\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\chgbarsep + \else \hskip -\chgbarsep \fi +\hbox{\vbox to 0pt{\vss + \hrule \@height\@tempdima \@width\chgbarwidth \@depth\z@ +}} +\hss} + \nointerlineskip + \global\@inchgbarfalse + \@cons\@freelist\@currbox +\else + \@next\@marbox\@currlist{\@cons\@freelist\@marbox + \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne + \if@twocolumn + \if@firstcolumn \@tempcnta\m@ne \fi + \else + \if@mparswitch + \ifodd\c@page \else\@tempcnta\m@ne \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi + \@tempdima\@mparbottom \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox \ifdim\@tempdima >\z@ + \@warning{Marginpar on page \thepage\space moved}\else\@tempdima\z@ \fi + \global\@mparbottom\@pageht \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\ht\@marbox\z@ \global\dp\@marbox\z@ + \vskip -\@pagedp \vskip\@tempdima\nointerlineskip + \hbox to\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\marginparsep + \else \hskip -\marginparsep \hskip -\marginparwidth \fi + \box\@marbox \hss} + \vskip -\@tempdima + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp} +\fi\fi\fi} + +\def\@makecol{\setbox\@outputbox\box\@cclv + \if@inchgbar + \@tempcnta\@ne + \if@twocolumn + \if@firstcolumn \@tempcnta\m@ne \fi + \else + \if@mparswitch + \ifodd\c@page \else\@tempcnta\m@ne \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \@tempdima\ht\@outputbox \advance\@tempdima -\@chgbarbegin + \advance\@tempdima -\baselineskip + \setbox\@outputbox + \vbox{\boxmaxdepth \maxdepth + \unvbox\@outputbox \nointerlineskip \hbox to\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\chgbarsep + \else \hskip -\chgbarsep \fi + \hbox{\vbox to 0pt{\vss + \hrule \@height\@tempdima \@width\chgbarwidth \@depth\z@}}\hss}} + \global\@chgbarbegin 0pt +\fi + \ifvoid\footins\else\setbox\@outputbox + \vbox{\boxmaxdepth \maxdepth + \unvbox\@outputbox\vskip\skip\footins\footnoterule\unvbox\footins}\fi + \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats + \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth + \@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox + \vskip-\dimen128\@textbottom} + \global\maxdepth\@maxdepth} + + diff --git a/obsolete/macros/latex209/contrib/misc/chappg.sty b/obsolete/macros/latex209/contrib/misc/chappg.sty new file mode 100644 index 0000000000..8ed6c14249 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/chappg.sty @@ -0,0 +1,15 @@ +% Author: Max Hailperin +% Define \thepage to output chapter-page (such as 1-3, 5-2, etc.) +% and have each chapter's page number begin on 1. +% Original source: TeXMaG Vol. 5, No. 3 (part 1) +% +% \documentstyle[chappg]{report} or whatnot: + +\renewcommand{\thepage}{\arabic{chapter}-\arabic{page}}% chapter-page numbering +\@addtoreset{page}{chapter}% reset page number when chapter is stepped +% The next magic makes the page counter be reset to one rather than zero +\def\@stpelt#1{\global\csname c@#1\endcsname + \expandafter\ifx \csname#1\endcsname \page + \@ne + \else + \z@ \fi} diff --git a/obsolete/macros/latex209/contrib/misc/citesort.sty b/obsolete/macros/latex209/contrib/misc/citesort.sty new file mode 100644 index 0000000000..de21ebb252 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/citesort.sty @@ -0,0 +1,56 @@ +%NAME: citesort.sty +% A replacement for \@citex which sorts citation numbers as well as +% compressing and allowing breaks. Based on cite.sty by Donald +% Arseneau. +% +% for use in LaTeX say, \documentstyle[...,citesort,...]{...} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Allow, but strongly discourage, line breaks within a long +% series of citations. Compress lists of successive numbers +% to one number range, e.g., 5,6,7,8,9 --> 5--9. Compatible +% with versions of \@cite that use exponents. +% -- Donald Arseneau 1989 +% +% Modified to sort the numbers so they come out in increasing order, +% regardless of the way they appear in the source. O(N^2) sort! +% Ian Green, CUED, 10-Dec-1991. Improvements to img@eng.cam.ac.uk +% please. Version 1 + +\newcount\@minsofar +\newcount\@min +\newcount\@cite@temp +\def\@citex[#1]#2{% +\if@filesw \immediate \write \@auxout {\string \citation {#2}}\fi +\@tempcntb\m@ne \let\@h@ld\relax \def\@citea{}% +\@min\m@ne% +\@cite{% + \@for \@citeb:=#2\do {\@ifundefined {b@\@citeb}% + {\@h@ld\@citea\@tempcntb\m@ne{\bf ?}% + \@warning {Citation `\@citeb ' on page \thepage \space undefined}}% +{\@minsofar\z@ \@for \@scan@cites:=#2\do {% + \@ifundefined{b@\@scan@cites}% + {\@cite@temp\m@ne} + {\@cite@temp\number\csname b@\@scan@cites \endcsname \relax}% +\ifnum\@cite@temp > \@min% select the next one to list + \ifnum\@minsofar = \z@ + \@minsofar\number\@cite@temp + \edef\@scan@copy{\@scan@cites}\else + \ifnum\@cite@temp < \@minsofar + \@minsofar\number\@cite@temp + \edef\@scan@copy{\@scan@cites}\fi\fi\fi}\@tempcnta\@min + \ifnum\@minsofar > \z@ % some more + \advance\@tempcnta\@ne + \@min\@minsofar + \ifnum\@tempcnta=\@minsofar % Number follows previous--hold on to it + \ifx\@h@ld\relax + \edef \@h@ld{\@citea\csname b@\@scan@copy\endcsname}% + \else \edef\@h@ld{\ifmmode{-}\else--\fi\csname b@\@scan@copy\endcsname}% + \fi + \else \@h@ld\@citea\csname b@\@scan@copy\endcsname + \let\@h@ld\relax + \fi % no more +\fi}% +\def\@citea{,\penalty\@highpenalty\,}}\@h@ld}{#1}} + +% end of citesort.sty diff --git a/obsolete/macros/latex209/contrib/misc/doublespace.sty b/obsolete/macros/latex209/contrib/misc/doublespace.sty new file mode 100644 index 0000000000..34b33e1f0c --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/doublespace.sty @@ -0,0 +1,208 @@ +%% Copyright 1986 Stephen Page +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `unmaintained'. +% +% This work consists of the file doublespace.sty. +% +% The licence statement above was added by Clea F. Rees on behalf of +% Stephen Page on 2008/10/31. +%------------------------------------------------------------------------------ +% +% LaTeX Document style option "doublespace" +% -- usage: \documentstyle[...,doublespace,...]{...} +% +% This style option produces a double-spaced document by redefining +% the LaTeX parameter \baselinestretch to 2. +% +% It also fixes a number of problems with standard LaTeX, as follows: +% +% 1. A new environment "singlespace" is provided, within which single +% spacing will apply. +% JFL - changed so that it works in regular text and so that vertical +% space is before and after is correctly computed +% 2. Double spacing is turned off within footnotes and floats (figures +% and tables). +% 3. Proper double spacing happens below tabular environments and in other +% places where LaTeX uses a strut. +% 4. Slightly more space is inserted before footnotes. +% 5. JFL - fixes spacing before and after displayed math +% 6. MAR - fix to work with new font selection scheme if used +% 7. KPC - fix superfluous space bug. +% 8. HGS - fixed for use with NFSS2 +% +% Note: This version sets a baselinestretch of 2. If this is too much, +% put \setstretch{1.7} (or some appropriate value) before the +% \begin{document} command. To print the document with single spacing +% again, without removing "singlespace" environments, just put a +% \setstretch{1} at the top of the document. +% +% PLEASE REPORT ANY BUGS +% +% Modified by: Kaja P. Christiansen, kaja@daimi.aau.dk +% +% Modified by: Mark A. Roth, mroth@afit.af.mil +% +% Modified by: Jean-Francois Lamy +% lamy@ai.toronto.edu +% lamy@utai.uucp +% +% Modified by: Hendrik G. Seliger (HGS) +% hank@Blimp.automat.uni-essen.de +% +% Author: Stephen Page -- sdpage@prg.oxford.ac.uk +% sdpage%prg.oxford.ac.uk@cs.ucl.ac.uk +% +% Release date: 6 July 1986 - September 3, 1986 +% +% Known bugs: +% . It might be nice if spacing before the footnote rule (\footins) +% were provided in a tidier way. +% . Increasing struts may possibly cause some other obscure part of +% formatting to fall over. +% . \begin{singlespace}\begin{quote} produces the wrong spacing before +% the quote (extra glue is inserted), use \begin{quote}\begin{singlespace} +% . shouldn't @setsize stretch parskip as well? +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%---Set up double spacing + +\def\baselinestretch{2} + + +%---New command "\setstretch" (slightly more mnemonic... and easier to type) + +\def\setstretch#1{\renewcommand{\baselinestretch}{#1}} + +%---Stretch the baseline BEFORE calculating the strut size. This improves +% spacing below tabular environments etc., probably... +% Comments are welcomed. +% This change not needed with new font selection scheme-MAR + +\ifx\undefined\selectfont %then new font selection scheme not invoked-MAR +\def\@setsize#1#2#3#4{\@nomath#1%-KPC + \let\@currsize#1\baselineskip + #2\baselineskip\baselinestretch\baselineskip + \parskip\baselinestretch\parskip + \setbox\strutbox\hbox{\vrule height.7\baselineskip + depth.3\baselineskip width\z@}%-KPC + \normalbaselineskip\baselineskip#3#4} +\else %new font selection scheme is defined, set up way to change baselines-MAR + % NFSS2 does not have \setnew@baselineskip anymore - HGS +\def\@newbaseline{% + \ifx\undefined\setnew@baselineskip% HGS + \baselineskip\f@baselineskip\relax% + \else% HGS + \setnew@baselineskip% + \fi% HGS + \baselineskip\baselinestretch\baselineskip + \setbox\strutbox\hbox{\vrule\@height.7\baselineskip + \@depth.3\baselineskip \@width\z@}% + \normalbaselineskip\baselineskip}% -MAR +\fi %-MAR + + +%---Increase the space between last line of text and footnote rule. +% This is a very untidy way to do it! + +\skip\footins 20pt plus4pt minus4pt + + +%---Reset baselinestretch within footnotes and floats. Originally stolen +% from Stanford thesis style. + +\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else + \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner + \@parmoderr\@floatpenalty\z@ + \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname + \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n + \@tfor \@tempa :=#2\do + {\if\@tempa h\advance\@tempcnta \@ne\fi + \if\@tempa t\advance\@tempcnta \tw@\fi + \if\@tempa b\advance\@tempcnta 4\relax\fi + \if\@tempa p\advance\@tempcnta 8\relax\fi + }\global\count\@currbox\@tempcnta}\@fltovf\fi + \global\setbox\@currbox\vbox\bgroup + \def\baselinestretch{1} + \ifx\undefined\selectfont %then new font selection scheme not invoked-MAR + \small\normalsize + \else %else new font selection scheme is invoked-MAR + \@newbaseline %include new baselinestretch-MAR + \fi %-MAR + \boxmaxdepth\z@ + \hsize\columnwidth \@parboxrestore} +\long\def\@footnotetext#1{\insert\footins{\def\baselinestretch{1}\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext + {\rule{\z@}{\footnotesep}\ignorespaces + #1\strut}}} + +% Stolen from MIT. +% +% A single spaced quote (say) is done by surrounding singlespace with quote. +% +\def\singlespace{% +\vskip\parskip% +\vskip\baselineskip% +\def\baselinestretch{1}% +\ifx\undefined\selectfont %then new font selection scheme not invoked-MAR +\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi% +\else %else new font selection scheme is invoked-MAR +\@newbaseline %include new baselinestretch-MAR +\fi %-MAR +\vskip-\parskip% +\vskip-\baselineskip% +} + +\def\endsinglespace{\par} + +% spacing, doublespace and onehalfspace all are meant to INCREASE the +% spacing (i.e. calling onehalfspace from within doublespace will not +% produce a graceful transition between spacings) +% +\def\spacing#1{\par% + \begingroup % moved from \endspacing by PGBR 1-29-91 + \def\baselinestretch{#1}% + \ifx\undefined\selectfont %then new font selection scheme not invoked-MAR + \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi + \else %else new font selection scheme is invoked-MAR + \@newbaseline %include new baselinestretch-MAR + \fi %-MAR +} + +\def\endspacing{\par% + \vskip \parskip% + \vskip \baselineskip% + \endgroup% + \vskip -\parskip% + \vskip -\baselineskip% +} %\begingroup used to be here, PGBR 1-29-91 + +\def\onehalfspace{\spacing{1.5}} +\let\endonehalfspace=\endspacing + +\def\doublespace{\spacing{2}} +\let\enddoublespace=\endspacing %corrected--first end missing-MAR + +% Fix up spacing before and after displayed math +% (arraystretch seems to do a fine job for inside LaTeX displayed math, +% since array and eqnarray seem to be affected as expected) +% Changing \baselinestretch and doing a font change also works if done here, +% but then you have to change @setsize to remove the call to @nomath) +% +\everydisplay{ + \abovedisplayskip \baselinestretch\abovedisplayskip% + \belowdisplayskip \abovedisplayskip% + \abovedisplayshortskip \baselinestretch\abovedisplayshortskip% + \belowdisplayshortskip \baselinestretch\belowdisplayshortskip} + diff --git a/obsolete/macros/latex209/contrib/misc/endfloat.sty b/obsolete/macros/latex209/contrib/misc/endfloat.sty new file mode 100644 index 0000000000..8427156bc5 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/endfloat.sty @@ -0,0 +1,350 @@ +%% Save file as: ENDFLOAT.STY Source: FILESERV@SHSU.BITNET +% Name: endfloat.sty +% Description: LaTeX style to put figures and tables at end of article +% Keywords: LaTeX, style-option, float, figure, table +% Author: James Darrell McCauley +% Latest Version: Version 2.0 <02 Jun 1992> +% Archives: pasture.ecn.purdue.edu, shsu.edu or FILESERV@SHSU.BITNET +% Note: See USAGE, CHANGE LOG, and BUGS below. +% See also: comment.sty, endnotes.sty +% +% WHAT IS THIS STYLE FOR? +% The purpose of this style is to put all figures on pages by themselves +% at the end of an article in a section named Figures. Likewise for tables. +% Reference can be made in the text of where the figure should have been +% (only caption appears - see \markersintext [default] and \nomarkersintext +% below. \ref and \label always works on the ones at the end). This is +% usually required when preparing submissions to journals. +% +% WARNING! +% This creates two extra files: \jobname.fff and \jobname.ttt +% It may also necessitate another latex cycle because of the float +% movement (when you use \label and \ref) and bibtex. +% +% WHY WRITE THIS STYLE? +% Many journals require tables and figures to be separated from the text +% when you submit those ugly doublespaced copies. They also usually want +% a list of figures/tables before these sections (capability added in v2.0). +% +% I am writing a set of styles that look exactly like a journal, but just +% by adding one style option, I wanted the user to meet the requirements +% for formatting submissions. I encourage others to do the same. +% +% USAGE: +% if you use: \documentstyle{article} +% change it to: \documentstyle[endfloat]{article} +% That's all you have to do. This will produce two extra files with +% .ttt and .fff extensions (for tables and figures, respectively). +% +% This puts all figures and tables at the end of your document +% and creates a List of Figures and/or List of Tables section +% at the end (when appropriate). If you do not want a these, they +% can be turned off by putting \nofiglist and \notablist in the +% preamble of your document. +% +% It also leaves notes in the text (i.e., ``[Figure 4 about here.]''). +% If you would rather not have these, this can be turned off by +% putting \nomarkersintext in the preamble of your document. If you +% do not like this marker, you can change it by using \renewcommand +% (see PREPARING A FOREIGN LANGUAGE VERSION below). +% +% HOW DID I WRITE THIS? +% +% Overview: redefine the figure and table environment following % bj +% the \begin{comment} ... \end{comment} environment of % bj +% comment.sty by Victor Eijkhout . +% Instead of processing what was between \begin{...} and \end{...}, +% every line is written to a file (\jobname.fff for figures, \jobname.ttt +% for tables). Then, when you do an \end{document}, the figure section +% is processed, then the table section is processed. This could easily +% be reversed (tables first) if necessary. +% +% After initial versions, I received much help from Ronald Kappert +% and Brian Junker (see CHANGE LOG below). +% If anyone has any bugs/suggestions to report, mail them to +% jdm5548@diamond.tamu.edu. +% Darrell McCauley <02 Jun 1992> +% +% PREPARING A FOREIGN LANGUAGE VERSION +% +% 10-03-92: Announcements in any language can be generated with +% a \renewcommand{\figureplace} or \renewcommand{\tableplace} +% with default +%\def\figureplace{\bf\figurename~\thepostfig should be placed near here.} +% and +%\def\tableplace{\bf\tablename~\theposttbl should be placed near here.} +% The name of figures and tables is governed by standard +% LaTeX variables \figurename and \tablename. +% The name of the section with the figures can be governed with +% a \renewcommand{\figuresection}{...Name of Figs. section...} +% Ditto for \tablesection. Default is \def\tablesection{Tables} +% and \def\figuresection{Figures}. +% +% URC (RJHK) +% +% CHANGE LOG +% (if you make any changes to this, record them here) +% <25 Feb 1992> v0.1 - created by Darrell McCauley +% <01 Mar 1992> v1.0 - cleaned up and released +% +% <10 Mar 1992> v1.0 - some adaptions for LaTeX 2.09 <14-1-92> and +% international namegiving by Ronald Kappert +% . +% <13 Mar 1992> v1.1 - verified that floats were used before a section was +% created for them. +% <14 Mar 1992> v1.2 - corrected typo that may have caused figures not +% to be printed. +% +% <27 May 1992> ???? - (1) changed "comment" to "figure" and "komment" to +% "table" throughout, to avoid collisions with other +% style files' definitions of "\comment". Also +% fixes "\begin{table} ends with \end{komment}" +% error generated by my (older) version of PC TeX. +% +% (2) Fixed gobble of float position specifiers. +% There are two ways to do this: (a) \write +% \ifnextchar[{\gobbleuntilnext}{} into every +% environment written to \jobname.fff, etc.; (b) +% save LaTeX's old def's of \figure and \table +% and re-use them when processing fig's and tables. +% I chose the latter approach, for maximum +% consistency with LaTeX, other style files, etc. +% +% (3) Added def's of \tablename and \figurename, +% which my version of PC-TeX seemed to need. +% %jdm +% +% (4) Moved formatting of figure/table markers to +% \figureplace and \tableplace. +% +% (5) Style change: in-text markers are now +% centered reminders like "[Figure 4 about here.]". +% +% (6) Style change: added list of tables and +% figures to the table and figure sections. +% Change back to old format with \nofiglist and +% \notablist. +% +% (7) Changed default to \markersintext. +% +% (8) Fixed trivial typo in \@openposttbls +% +% All changes marked "% bj" at end of line. +% Brian Junker +% <02 Jun 1992> v2.0 - incorporated changes made by Junker (see above). +% Corrected problem of extra blank spaces in +% the output when \nomarkersintext was in effect +% (bug reported by ). +% +% BUGS: +% <14 Mar 1992> still needs to gobble float position specifiers. +% +\newif\if@domarkers +\def\markersintext{ + \@domarkerstrue } +\def\nomarkersintext{ + \@domarkersfalse +} +%\nomarkersintext +\markersintext % bj + +\newif\if@tablist % bj +\def\dotablist{\@tablisttrue} % bj +\def\notablist{\@tablistfalse} % bj +\dotablist % bj + +\newif\if@figlist % bj +\def\dofiglist{\@figlisttrue} % bj +\def\nofiglist{\@figlistfalse} % bj +\dofiglist % bj + +\newcounter{postfig} +\newwrite\@postfigs +\newif\if@postfigsopen \global\@postfigsopenfalse + \def\@openpostfigs{\immediate\openout\@postfigs=\jobname.fff\relax + \message{(\jobname.fff)}% + \global\@postfigsopentrue} + +\newcounter{posttbl} +\newwrite\@posttbls +\newif\if@posttblsopen \global\@posttblsopenfalse + +\def\@openposttbls{\immediate\openout\@posttbls=\jobname.ttt\relax + \message{(\jobname.ttt)}% % bj + \global\@posttblsopentrue} + +\def\makeinnocent#1{\catcode`#1=12 } + +%\def\figureplace{\bf\figurename~\thepostfig should be placed near here.} % bj +%\def\tableplace{\bf\tablename~\theposttbl should be placed near here.} % bj + +\@ifundefined{figurename}{\def\figurename{Figure}}{} % bj +\@ifundefined{tablename}{\def\tablename{Table}}{} % bj + +\def\figureplace{\begin{center} % bj +[\figurename~\thepostfig\ about here.] % bj +\end{center}} % bj +\def\tableplace{\begin{center} % bj +[\tablename~\theposttbl\ about here.] % bj +\end{center}} % bj + +\def\@gobbleuntilnext[#1]{} +%\let\eatarg\@gobbleuntilnext % bj +%\let\ifnextchar\@ifnextchar % bj + +\let\@bfig\figure % bj +\let\@efig\endfigure % bj +\let\@btab\table % bj +\let\@etab\endtable % bj +\let\endfigure\relax % bj +\let\endtable\relax % bj + +% +% the {blank space } appearing with \nomarkersintext was fixed by adding +% a percent sign (%) at strategic locations, determined by setting +% \tracingcommands=1 % Darrell +% + +\def\figure{% +% \if@nextchar[{ + \if@postfigsopen \else \@openpostfigs \fi% + \immediate\write\@postfigs{\string\begin{figure}}% +% \immediate\write\@postfigs{\string\ifnextchar[{\string\eatarg}{}} % bj + \if@domarkers% + \addtocounter{postfig}{1}% % bj + \figureplace% % bj + \fi% + \def\@currenvir{figure}% + \begingroup% + \let\do\makeinnocent \dospecials% + \makeinnocent\^^L% and whatever other special cases + \endlinechar`\^^M \catcode`\^^M=12 \xfigure}% +{\catcode`\^^M=12 \endlinechar=-1 % + \gdef\xfigure#1^^M{\def\test{#1}% + \ifx\test\endfiguretest% + \def\next{\endgroup\end{figure}% + \immediate\write\@postfigs{\string\end{figure}}% + \immediate\write\@postfigs{\string\clearpage}% + \immediate\write\@postfigs{ }}% + \else\ifx\test\enddblfiguretest% + \def\next{\endgroup\end{figure}% + \immediate\write\@postfigs{\string\end{figure}}% + \immediate\write\@postfigs{\string\clearpage}% + \immediate\write\@postfigs{ }}% + % skip over float position specifier (fps) + \else\@ifnextchar[% + \@whilesw \ifx\test\CB \fi% + \@gobble% + \else% + \if@postfigsopen \else \@openpostfigs \fi% + \immediate\write\@postfigs{#1}% + \let\next\xfigure% + \fi \fi \next}% +}% + +%hello +{\escapechar=-1% + \xdef\CB{]}% + \xdef\endfiguretest{\string\\end\string\{figure\string\}}% + \xdef\enddblfiguretest{\string\\end\string\{figure*\string\}}% +}% + +\def\table{\if@posttblsopen \else \@openposttbls \fi + \immediate\write\@posttbls{\string\begin{table}}% +% \immediate\write\@posttbls{\string\ifnextchar[{\string\eatarg}{}} % bj + \if@domarkers + \addtocounter{posttbl}{1} % bj + \tableplace % bj + \fi + \def\@currenvir{table}% + \begingroup + \let\do\makeinnocent \dospecials + \makeinnocent\^^L% and whatever other special cases + \endlinechar`\^^M \catcode`\^^M=12 \xtable} +{\catcode`\^^M=12 \endlinechar=-1 % + \gdef\xtable#1^^M{\def\test{#1} + \ifx\test\enddbltabletest + \def\next{\endgroup\end{table} + \immediate\write\@posttbls{\string\end{table}} + \immediate\write\@posttbls{\string\clearpage} + \immediate\write\@posttbls{ }} + \else\ifx\test\endtabletest + \def\next{\endgroup\end{table} + \immediate\write\@posttbls{\string\end{table}} + \immediate\write\@posttbls{\string\clearpage} + \immediate\write\@posttbls{ }} + \else + \if@posttblsopen \else \@openposttbls \fi + \immediate\write\@posttbls{#1}% + \let\next\xtable + \fi \fi \next} +} + +{\escapechar=-1 + \xdef\enddbltabletest{\string\\end\string\{table*\string\}} + \xdef\endtabletest{\string\\end\string\{table\string\}} +} +%% end of stuff from comment.sty + +% \let\figure=\figure +%\ let\table=\table +\@namedef{figure*}{\figure} +\@namedef{table*}{\table} +\def\endfloat{\endfigure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\figuresection{Figures} +\def\tablesection{Tables} + +\def\processfigures{ + \if@postfigsopen + \immediate\closeout\@postfigs \global\@postfigsopenfalse +% \let\figure={\@float{figure}} % bj +% \let\endfigure=\end@float % bj + \let\figure\@bfig % bj + \let\endfigure\@efig % bj + \clearpage % bj + \if@figlist % bj + {\normalsize\listoffigures} % bj + \clearpage % bj + \else % bj + \section*{\figuresection} % bj + \markboth{\uppercase{\figuresection}}{\uppercase{\figuresection}}% bj + \fi % bj + { % bj + \def\baselinestretch{1}\tiny\normalsize % bj + \@input{\jobname.fff} % bj + } % bj + \fi} + +\def\processtables{ +\if@posttblsopen + \immediate\closeout\@posttbls \global\@posttblsopenfalse +% \let\table={\@float{table}} % bj +% \let\endtable=\end@float % bj + \let\table\@btab % bj + \let\endtable\@etab % bj + \clearpage % bj + \if@tablist % bj + {\normalsize\listoftables} % bj + \clearpage % bj + \else % bj + \section*{\tablesection} % bj + \markboth{\uppercase{\tablesection}}{\uppercase{\tablesection}}% bj + \fi % bj + { % bj + \def\baselinestretch{1}\tiny\normalsize % bj + \@input{\jobname.ttt} % bj + } + \fi} + +\def\enddocument{\onecolumn\processfigures\clearpage\processtables +\@checkend{document}\clearpage\begingroup +\if@filesw \immediate\closeout\@mainaux +\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}% +\def\bibcite{\@testdef b}\@tempswafalse \makeatletter\input \jobname.aux +\if@tempswa \@warning{Label(s) may have changed. Rerun to get +cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end} + +\endinput diff --git a/obsolete/macros/latex209/contrib/misc/endnote.sty b/obsolete/macros/latex209/contrib/misc/endnote.sty new file mode 100644 index 0000000000..0a6f9af68e --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/endnote.sty @@ -0,0 +1,34 @@ +% Use \endnote{1}{text}. At the end of your document, type +% \producenotes to actually flush all end notes to be printed. +% +% macros for making endnotes instead of footnotes +% We make @ signs act like letters, temporarily, to avoid conflict +% between user names and internal control sequences of plain format. +\catcode`@=11 +\newbox\endnotebox + +\def\setendnotefont#1{\gdef\endnotefont{#1}} +\setendnotefont{\normalsize\rm} +\@definecounter{endnotei} +\def\theendnotei{\arabic{endnotei}} +\def\labelendnotei{(\theendnotei)} + +\def\endnote#1{\let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \stepcounter{endnotei} $^{\theendnotei}$\@sf% \vendnote + {\global\setbox\endnotebox= + \vbox{\parindent=0pt\endnotefont\unvbox\endnotebox\bgroup \theendnotei.\ + #1\@endnote}}} + +\def\no@te{\ifcat\bgroup\noexpand\next \let\next\n@@te + \else\let\next\n@t\fi }%\next} + +\def\n@@te{\bgroup\aftergroup\@endnote\let\next} + +\def\n@t#1{#1\@endnote} + +\def\@endnote{\strut\unskip\hfil \penalty -\@M\relax \egroup} % + +\def\producenotes{% +\ifvoid\endnotebox\else\medskip\unvbox\endnotebox\par\fi} +\catcode`@=12 % at signs are no longer letters diff --git a/obsolete/macros/latex209/contrib/misc/endnotes.sty b/obsolete/macros/latex209/contrib/misc/endnotes.sty new file mode 100644 index 0000000000..4d28e593ad --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/endnotes.sty @@ -0,0 +1,325 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Save file as: ENDNOTES.STY +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% **************************************** +% * ENDNOTES * +% **************************************** +% +% Date of this version: 24 September 1991. +% +% Based on the FOOTNOTES section of +% LATEX.TEX (VERSION 2.09 - RELEASE OF 19 April 1986), with +% "footnote" changed to "endnote" and "fn" changed to "en" (where +% appropriate), with all the minipage stuff pulled out, and with +% some small changes for the different operation of endnotes. +% +% Uses an extra external file, with .ENT extension, to hold the +% text of the endnotes. This may be deleted after the run; a new +% version is generated each time. +% +% This code does not obey \nofiles. Perhaps it should. +% +% John Lavagnino (lav@brandeis.bitnet), 9/23/88 +% Department of English and American Literature, +% Brandeis University +% +% To turn all the footnotes in your documents into endnotes, say +% +% \let\footnote=\endnote +% +% in your preamble, and then add something like +% +% \newpage +% \begingroup +% \parindent 0pt +% \parskip 2ex +% \def\enotesize{\normalsize} +% \theendnotes +% \endgroup +% +% as the last thing in your document. +% +% **************************************** +% * CHANGE LOG * +% **************************************** +% +% JL Modified to include \addtoendnotes. JL, 10/22/89. +% +% JK Modification by J"org Knappen 25. 2. 1991: +% JK +% JK Introduced \notesname in the spirit of international \LaTeX. +% JK \notesname is set per default to be {Notes}, but can easily +% JK be redifined, e.g. for german language +% JK \renewcommand{\notesname}{Anmerkungen} +% +% DW Modification by Dominik Wujastyk, London, 19 September 1991: +% DW +% DW Moved the line +% DW \edef\@currentlabel{\csname p@endnote\endcsname\@theenmark} +% DW out of the definition of \@endnotetext and into the definition +% DW of \@doanenote so that \label and \ref commands work correctly in +% DW endnotes. Otherwise, the \label just pointed to the last section +% DW heading (or whatever) preceding the \theendnotes command. +% +% JL Revised documentation and macros. 24 Sept 1991. +% +% **************************************** +% * ENDNOTE COMMANDS * +% **************************************** +% +% +% \endnote{NOTE} : User command to insert a endnote. +% +% \endnote[NUM]{NOTE} : User command to insert a endnote numbered +% NUM, where NUM is a number -- 1, 2, +% etc. For example, if endnotes are numbered +% *, **, etc. within pages, then \endnote[2]{...} +% produces endnote '**'. This command does not +% step the endnote counter. +% +% \endnotemark[NUM] : Command to produce just the endnote mark in +% the text, but no endnote. With no argument, +% it steps the endnote counter before generating +% the mark. +% +% \endnotetext[NUM]{TEXT} : Command to produce the endnote but no +% mark. \endnote is equivalent to +% \endnotemark \endnotetext . +% +% \addtoendnotes{TEXT} : Command to add text or commands to current +% endnotes file: for inserting headings, +% pagebreaks, and the like into endnotes +% sections. TEXT a moving argument: +% \protect required for fragile commands. +% +% **************************************** +% * ENDNOTE USER COMMANDS * +% **************************************** +% +% Endnotes use the following parameters, similar to those relating +% to footnotes: +% +% \enotesize : Size-changing command for endnotes. +% +% \theendnote : In usual LaTeX style, produces the endnote number. +% +% \@theenmark : Holds the current endnote's mark--e.g., \dag or '1' or 'a'. +% +% \@makeenmark : A macro to generate the endnote marker from \@theenmark +% The default definition is \hbox{$^\@theenmark$}. +% +% \@makeentext{NOTE} : +% Must produce the actual endnote, using \@theenmark as the mark +% of the endnote and NOTE as the text. It is called when effectively +% inside a \parbox, with \hsize = \columnwidth. For example, it might +% be as simple as +% $^{\@theenmark}$ NOTE +% +% +% **************************************** +% * ENDNOTE PSEUDOCODE * +% **************************************** +% +% \endnote{NOTE} == +% BEGIN +% \stepcounter{endnote} +% \@theenmark :=G eval (\theendnote) +% \@endnotemark +% \@endnotetext{NOTE} +% END +% +% \endnote[NUM]{NOTE} == +% BEGIN +% begingroup +% counter endnote :=L NUM +% \@theenmark :=G eval (\theendnote) +% endgroup +% \@endnotemark +% \@endnotetext{NOTE} +% END +% +% \@endnotetext{NOTE} == +% BEGIN +% write to \@enotes file: "\@doanenote{ENDNOTE MARK}" +% begingroup +% \next := NOTE +% set \newlinechar for \write to \space +% write to \@enotes file: \meaning\next +% (that is, "macro:->NOTE) +% endgroup +% END +% +% \addtoendnotes{TEXT} == +% BEGIN +% open endnotes file if not already open +% begingroup +% let \protect to \string +% set \newlinechar for \write to \space +% write TEXT to \@enotes file +% endgroup +% END +% +% \endnotemark == +% BEGIN \stepcounter{endnote} +% \@theenmark :=G eval(\theendnote) +% \@endnotemark +% END +% +% \endnotemark[NUM] == +% BEGIN +% begingroup +% endnote counter :=L NUM +% \@theenmark :=G eval(\theendnote) +% endgroup +% \@endnotemark +% END +% +% \@endnotemark == +% BEGIN +% \leavevmode +% IF hmode THEN \@x@sf := \the\spacefactor FI +% \@makeenmark % put number in main text +% IF hmode THEN \spacefactor := \@x@sf FI +% END +% +% \endnotetext == +% BEGIN \@theenmark :=G eval (\theendnote) +% \@endnotetext +% END +% +% \endnotetext[NUM] == +% BEGIN begingroup counter endnote :=L NUM +% \@theenmark :=G eval (\theendnote) +% endgroup +% \@endnotetext +% END +% +% **************************************** +% * ENDNOTE MACROS * +% **************************************** +% + +\@definecounter{endnote} +\def\theendnote{\arabic{endnote}} + +% Default definition +\def\@makeenmark{\hbox{$^{\@theenmark}$}} + +\newdimen\endnotesep + +\def\endnote{\@ifnextchar[{\@xendnote}{\stepcounter + {endnote}\xdef\@theenmark{\theendnote}\@endnotemark\@endnotetext}} + +\def\@xendnote[#1]{\begingroup \c@endnote=#1\relax + \xdef\@theenmark{\theendnote}\endgroup + \@endnotemark\@endnotetext} + +% Here begins endnote code that's really different from the footnote +% code of LaTeX. + +\let\@doanenote=0 +\let\@endanenote=0 + +\newwrite\@enotes +\newif\if@enotesopen \global\@enotesopenfalse + +\def\@openenotes{\immediate\openout\@enotes=\jobname.ent\relax + \global\@enotesopentrue} + +% The stuff with \next and \meaning is a trick from the TeXbook, 382, +% there intended for setting verbatim text, but here used to avoid +% macro expansion when the footnote text is written. \next will have +% the entire text of the footnote as one long line, which might well +% overflow limits on output line length; the business with \newlinechar +% makes every space become a newline in the \@enotes file, so that all +% of the lines wind up being quite short. + +\long\def\@endnotetext#1{% + \if@enotesopen \else \@openenotes \fi + \immediate\write\@enotes{\@doanenote{\@theenmark}}% + \begingroup + \def\next{#1}% + \newlinechar='40 + \immediate\write\@enotes{\meaning\next}% + \endgroup + \immediate\write\@enotes{\@endanenote}} + +% \addtoendnotes works the way the other endnote macros probably should +% have, requiring the use of \protect for fragile commands. + +\long\def\addtoendnotes#1{% + \if@enotesopen \else \@openenotes \fi + \begingroup + \newlinechar='40 + \let\protect\string + \immediate\write\@enotes{#1}% + \endgroup} + +% End of unique endnote code + +\def\endnotemark{\@ifnextchar[{\@xendnotemark + }{\stepcounter{endnote}\xdef\@theenmark{\theendnote}\@endnotemark}} + +\def\@xendnotemark[#1]{\begingroup \c@endnote #1\relax + \xdef\@theenmark{\theendnote}\endgroup \@endnotemark} + +\def\@endnotemark{\leavevmode\ifhmode + \edef\@x@sf{\the\spacefactor}\fi \@makeenmark + \ifhmode\spacefactor\@x@sf\fi\relax} + +\def\endnotetext{\@ifnextchar + [{\@xendnotenext}{\xdef\@theenmark{\theendnote}\@endnotetext}} + +\def\@xendnotenext[#1]{\begingroup \c@endnote=#1\relax + \xdef\@theenmark{\theendnote}\endgroup \@endnotetext} + + +% \theendnotes actually prints out the endnotes. + +% The user may want separate endnotes for each chapter, or a big +% block of them at the end of the whole document. As it stands, +% either will work; you just say \theendnotes wherever you want the +% endnotes so far to be inserted. However, you must add +% \setcounter{endnote}{0} after that if you want subsequent endnotes +% to start numbering at 1 again. + +% \enoteformat is provided so user can specify some special formatting +% for the endnotes. It needs to set up the paragraph parameters, start +% the paragraph, and print the label. The \leavemode stuff is to make +% and undo a dummy paragraph, to get around the games \section* +% plays with paragraph indenting. + +\def\notesname{Notes}% <------ JK +\def\enoteheading{\section*{\notesname + \@mkboth{\uppercase{\notesname}}{\uppercase{\notesname}}}% + \leavevmode\par\vskip-\baselineskip} + +\def\enoteformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em + \leavevmode\llap{\hbox{$^{\@theenmark}$}}} + +\def\enotesize{\footnotesize} + +% The definition of \ETC. is needed only for versions of TeX prior +% to 2.992. Those versions limited \meaning expansions to 1000 +% characters; in 2.992 and beyond there is no limit. At Brandeis the +% BIGLATEX program changed the code in the token_show procedure of +% TeX to eliminate this problem, but most ``big'' versions of TeX +% will not solve this problem. + +\def\theendnotes{\immediate\closeout\@enotes \global\@enotesopenfalse + \begingroup + \makeatletter + \def\@doanenote##1##2>{\def\@theenmark{##1}\par\begingroup + \edef\@currentlabel{\csname p@endnote\endcsname\@theenmark} %DW + \enoteformat} + \def\@endanenote{\par\endgroup}% + \def\ETC.{\errmessage{Some long endnotes will be truncated; % + use BIGLATEX to avoid this}% + \def\ETC.{\relax}} + \enoteheading + \enotesize + \@input{\jobname.ent}% + \endgroup} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput diff --git a/obsolete/macros/latex209/contrib/misc/float.sty b/obsolete/macros/latex209/contrib/misc/float.sty new file mode 100644 index 0000000000..3ff0fd8b81 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/float.sty @@ -0,0 +1,815 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% filename = "float.sty", +%%% version = "1.1c", +%%% date = "18 December 1992", +%%% time = "10:00:00 CET", +%%% author = "Anselm Lingnau", +%%% address = "Hochschulrechenzentrum/FB Mathematik +%%% Johann Wolfgang Goethe-Universit\"at +%%% Postfach 11 19 32 +%%% DW-6000 Frankfurt am Main +%%% Germany", +%%% telephone = "+49 798 2554", +%%% checksum = "56253 815 4764 35676" +%%% email = "lingnau@math.uni-frankfurt.de (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, figure, table, floats", +%%% supported = "yes", +%%% docstring = " +%%% +%%% float.sty +%%% +%%% A LaTeX style option which defines a \newfloat command +%%% to define new classes of floats in the spirit of \newtheorem. +%%% Floats can be defined to use any of various 'float styles'. +%%% float.sty also incorporates the functionality of David Carlisle's +%%% here.sty, giving floats a [H] option, meaning 'do not float', +%%% or 'PUT IT HERE'. +%%% +%%% Documentation requires Frank Mittelbach's doc.sty.", +%%% } +%%% ======================================================================== +% +% Beware of file version and date in banner at top of implementation below. +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% * Version 1.1a, added here.sty functionality. +% * Version 1.1b, \@Esphack in place of \@esphack. Removed spurious +% * whitespace. Fixed documentation. Thanks to David Carlisle. +% * Version 1.1c, \@Esphack hack for compatibility with old LaTeXes. Fixed +% * checksums. Removed spurious blank line at end of file. Thanks again. +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%<*x> +% This file may be used without modification as a style (.sty) file. +% +% If you have Mittelbach's doc.sty, this file may be formatted with a +% command like: +% latex float.sty +% +% If you have the Mittelbach/Duchier/Braams docstrip utility, you may +% produce a faster loading .sty file. Rename this file to: float.doc +% Then run this file through *plain* TeX: +% tex float.doc +% This should produce the file float.sty. +% If you do not have plain TeX on your system, you can trick LaTeX into +% doing the work as follows: +% latex \def\fmtname{plain} \input float.doc +% Note that you may need to quote the arguments here to stop your +% operating system treating the \ characters incorrectly. +% +% latex float.doc +% will produce a typeset version of the documentation, as above. +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname + \def\batchfile{float.doc} + \input docstrip + \preamble + Do not distribute the stripped version of this file. + + \endpreamble + \generateFile{float.sty}{t}{\from{float.doc}{}} + \endinput +\fi +% +\ifcat a\noexpand @\let\next\relax\else\def\next{% + \documentstyle[float,doc]{article}\MakePercentIgnore}\fi\next +% +%\def\eatmodule<#1>{}\eatmodule +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \textwidth=355pt ^^A Allow macrocode text with 72 columns +% \CodelineIndex ^^A Code lines numbered +% \EnableCrossrefs ^^A No Cross References +% \MakeShortVerb{\|} ^^A |\foo| works like \verb+|\foo| +% \CheckSum{467} +% +% \DoNotIndex{\@Esphack,\@Mii,\@Miv,\@cons,\@currlist,\@dblarg,\@dbldeferlist} +% \DoNotIndex{\@dblfloat,\@dottedtocline,\@eha,\@esphack,\@float} +% \DoNotIndex{\@floatpenalty,\@ifnextchar,\@ifundefined,\@latexerr} +% \DoNotIndex{\@mkboth,\@namedef,\@nameuse,\@parboxrestore,\@spaces} +% \DoNotIndex{\@starttoc,\@tempa,\@tempboxa,\@tempdima,\@warning} +% \DoNotIndex{\addcontentsline,\advance,\arabic,\bf,\bgroup,\box,\chapter} +% \DoNotIndex{\columnwidth,\csname,\def,\dimen,\docdate,\edef,\egroup,\else} +% \DoNotIndex{\endcsname,\endinput,\expandafter,\fi,\filedate,\fileversion} +% \DoNotIndex{\global,\hbadness,\hbox,\hfil,\hrule,\hsize,\ht,\if@twocolumn} +% \DoNotIndex{\ifdim,\iffalse,\ifnum,\iftrue,\ifvbox,\ifx,\ignorespaces} +% \DoNotIndex{\intextsep,\kern,\let,\long,\moveleft,\newbox,\newcount} +% \DoNotIndex{\newcounter,\newif,\noexpand,\normalsize,\numberline,\par} +% \DoNotIndex{\parindent,\penalty,\prevdepth,\protect,\refstepcounter,\relax} +% \DoNotIndex{\rm,\section,\setbox,\space,\textheight,\the,\typeout,\unvbox} +% \DoNotIndex{\uppercase,\vadjust,\vbox,\vrule,\vskip,\wd,\wlog,\z@} +% +% \title{An Improved Environment for Floats} +% \author{Anselm Lingnau\thanks{Hochschulrechenzentrum/Fachbereich Mathematik, +% Johann Wolfgang Goethe-Universit\"at, Postfach 11\,19\,32, +% DW-6000 Frankfurt am Main. +% E-Mail: {\tt lingnau@math.uni-frankfurt.de}}% +% \thanks{Part of this style option is based on +% {\tt here.sty} by David Carlisle ({\tt carlisle@cs.man.ac.uk}), +% who also provided helpful criticism.}} +% \date{8 October 1992} +% \floatstyle{ruled} +% \newfloat{Program}{tbp}{lop}[section] +% \floatstyle{plain} +% \newfloat{Example}{t}{lox}[section] +% \floatstyle{boxed} +% \restylefloat{table} +% \begin{document} +% \maketitle +% +% \begin{abstract} +% This style option improves the interface for defining floating +% objects such as figures and tables in \LaTeX{}. +% It adds the notion of a `float style' that governs appearance +% of floats. +% New kinds of floats may be defined using a |\newfloat| command +% analogous to |\newtheorem|. +% This style option also incorporates the functionality +% of David Carlisle's {\tt here.sty}, +% giving floating environments a {\tt [H]} option which means `PUT IT HERE' +% (as opposed to the standard {\tt [h]} option which means +% `You may put it here if you like'). +% \end{abstract} +% +% \section{Introduction} +% +% Among the features of \LaTeX\ are `floating' figures and tables +% that drift from where they appear in the input text to, say, the top +% of a page. The contents and formatting of floats is pretty much up +% to the user, except that there is a |\caption| command that +% governs formatting of the caption --- it is centered if it is short, +% and formatted as a paragraph if it is longer than a single line of text. +% Sometimes other types of floating objects, e.g., algorithms or programs, +% are desirable, but they must be defined by analogy to the existing +% floats since there is no simple command for doing this. This goes +% beyond the knowledge or inclination of the average \LaTeX\ user. +% +% In this style option, I present an interface to floating objects +% that attempts to fix some of these shortcomings. +% First of all, I introduce the notion of a `float style'. +% A float style governs the appearance of a class of floats like a page style +% governs the appearance of a page (\LaTeX\ has page styles {\tt plain}, +% {\tt empty} and {\tt headings}, among others). This style option +% provides some exemplary float styles: +% \begin{description} +% \item[plain] This is the float style that \LaTeX\ normally applies to +% its floats, i.e., nothing in particular. The only difference is +% that the caption comes out {\em below\/} the body of the float, +% regardless of where it is given in the text. +% \item[boxed] The body of the float is printed inside a box. The caption +% goes below that box. +% \item[ruled] This float style is patterned on the table style of +% {\sl Concrete Mathematics}. The caption is printed at the top of the +% float, surrounded by rules; another rule finishes off the float. +% \end{description} +% +% \begin{Program} +% \begin{verbatim} +% #include +% +% int main(int argc, char **argv) +% { +% int i; +% for (i = 0; i < argc; ++i) +% printf("argv[%d] = %s\n", i, argv[i]); +% return 0; +% } +% \end{verbatim} +% \caption{The first program. This hasn't got anything to do with the style +% but is included as an example. Note the {\tt ruled} float style.% +% \label{prog1.1}} +% \end{Program} +% To facilitate the definition of new floating objects, {\tt float.sty} +% supports the |\newfloat| command. This command is comparable to +% |\newtheorem| in that it allows the user to add a new class of floats +% at the document level. No style option hacking is necessary. +% There's also a |\listof| command that prints a listing of all the +% floats of a given type, like |\listoffigures| and |\listoftables| +% in vanilla \LaTeX. +% +% \section{The User Interface --- New Floats} +% +% \DescribeMacro{\newfloat} +% The most important command in {\tt float.sty} is the |\newfloat| +% command. As mentioned above, it is patterned on |\newtheorem|. +% The |\newfloat| command takes three required and one optional +% argument; it is of the form\\[2pt] +% \hspace*{\MacroIndent}|\newfloat{|\meta{type}|}{|^^A +% \meta{placement}|}{|\meta{ext}|}[|\meta{within}{\tt]}\\[2pt] +% \meta{type} is the `type' of the new class of floats, like {\tt program} +% or {\tt algorithm}. After the appropriate |\newfloat|, commands +% like |\begin{program}| or |\end{algorithm*}| will be available. +% \meta{placement} gives the default placement parameters for this class +% of floats. The placement parameters are the same as in standard \LaTeX, +% i.e., {\tt t}, {\tt b}, {\tt p} and {\tt h} for `top', `bottom', +% `page' and `here', respectively. +% When \LaTeX\ writes the captions to an auxiliary file for the list +% of figures (or whatever), it'll use the job name followed by \meta{ext} +% as a file name. +% Finally, the optional argument \meta{within} determines whether floats +% of this class will be numbered within some sectional unit of the document. +% For example, if \meta{within}$=${\tt chapter}, the floats will be numbered +% within chapters. (In standard \LaTeX, this happens with figures and tables +% in the {\tt report} and {\tt book} document styles.) +% As an example, Program~\ref{prog1.1} above was created by a command +% sequence similar to that shown in the following Example. +% \begin{Example}[H] +% \begin{verse} +% |\floatstyle{ruled}|\\ +% |\newfloat{Program}{tbp}{lop}[section]|\\ +% \dots\ loads o' stuff \dots\\ +% |\begin{Program}|\\ +% |\begin{verbatim}|\\ +% \dots\ program text \dots\\ +% |\end{verbatim}|\\ +% |\caption{|\dots\ caption \dots|}|\\ +% |\end{Program}| +% \end{verse} +% \caption{This is another silly floating Example. Except that this one +% doesn't actually float because it uses the {\tt[H]} optional parameter +% to appear {\bf Here}. (Gotcha.)} +% \end{Example} +% +% \DescribeMacro{\floatstyle} +% The |\floatstyle| command sets a default float style. This float style +% will be used for all the floats that are subsequently defined using +% |\newfloat|, until another |\floatstyle| command appears. +% The |\floatstyle| command takes one argument, the name of a float +% style. For instance, |\floatstyle{ruled}|. Specifying a string that +% does not name a valid float style is an error. +% +% \DescribeMacro{\floatname} +% The |\floatname| command lets you define the {\em float name\/} that +% \LaTeX\ uses in the caption of a float, i.e., `Figure' for a figure +% and so on. For example, |\floatname{program}{Program}|. +% The |\newfloat| command sets the float name to its argument +% \meta{type} if no other name has been specified before. +% +% \DescribeMacro{\floatplacement} +% The |\floatplacement| command resets the default placement specifier +% of a class of floats. E.g., |\floatplacement{figure}{tp}|. +% +% \DescribeMacro{\restylefloat} +% The |\restylefloat| command is necessary to change styles for the +% standard float types {\tt figure} and {\tt table}. Since these aren't +% usually defined via |\newfloat|, they don't have a style associated +% with them. Thus you have to say, for example,\\[2pt] +% \hspace*{\MacroIndent}|\floatstyle{ruled}|\\ +% \hspace*{\MacroIndent}|\restylefloat{table}|\\[2pt] +% to have tables come out {\tt ruled}. The command also lets you change +% style for floats that you define via |\newfloat|, although this +% is, typographically speaking, not a good idea. +% See table~\ref{table1} for an example. +% \DeleteShortVerb{\|} +% \begin{table} \def\B#1{$\displaystyle{n\choose#1}$} +% \begin{center} \begin{tabular}{c|ccccc} +% $n$&\B0&\B1&\B2&\B3&\B4\\ \hline +% 0 & 1\\ +% 1 & 1&1\\ +% 2 & 1&2&1\\ +% 3 & 1&3&3&1\\ +% 4 & 1&4&6&4&1 +% \end{tabular} \end{center} +% \caption{Pascal's triangle. This is a re-styled \LaTeX\ {\tt table}.% +% \label{table1}} +% \end{table} +% \MakeShortVerb{\|} +% +% \DescribeMacro{\listof} +% The |\listof| command produces a list of all the floats of a given +% class. Its syntax is\\[2pt] +% \hspace*{\MacroIndent}|\listof{|\meta{type}|}{|\meta{title}^^A +% |}|\\[2pt] +% \meta{type} is the float type given in the |\newfloat| command. +% \meta{title} is used for the title of the list as well as the headings +% if the current page style includes them. Otherwise, the |\listof| +% command is analogous to the built-in \LaTeX\ commands +% |\listoffigures| and |\listoftables|. +% +% \section{The User Interface --- {\tt[H]} Placement Specifier} +% +% Many people find \LaTeX's float placement specifiers too restrictive. +% A Commonly Uttered Complaint (CUC) calls for a way to place a float +% exactly at the spot where it occurs in the input file, i.e., to {\em not\/} +% have it float at all. +% It seems that the {\tt[h]} specifier should do that, but in fact it +% only suggests to \LaTeX\ something along the lines of ``put the float +% here if it's OK with you''. As it turns out, \LaTeX\ hardly ever feels +% inclined to actually do that. This situation can be improved by +% judicious manipulation of float style parameters. +% +% The same effect can be achieved by changing the actual method of +% placing floats. David Carlisle's {\tt here.sty} introduces a new float +% placement specifier, namely {\tt[H]}, which, when added to a float, +% tells \LaTeX\ to ``put it HERE, period''. If there isn't enough space +% left on the page, the float is carried over to the next page together +% with whatever follows, even though there might still be room left for +% some of that. +% This style option provides the {\tt[H]} specifier for newly defined +% classes of floats as well as the predefined {\tt figure}s and +% {\tt table}s, thereby superseding {\tt here.sty}. David suggests +% that the {\tt here.sty} be withdrawn from the archives in due course. +% +% The {\tt[H]} specifier may simply be added to the float as an optional +% argument, like all the other specifiers. +% It may {\em not\/} be used in conjunction with any other placement +% specifiers, so {\tt[Hhtbp]} is illegal. +% Neither may it be used as the default placement specifier for a whole +% class of floats. +% The following table is +% defined like this: +% \begin{verse} +% |\begin{table}[H]|\\ +% |\begin{tabular}{cl}|\\ +% |\tt t & Top of the page\\|\\ +% \dots\ more stuff \dots\\ +% \end{verse} +% (It seems that I have to add some extraneous chatter here just so that +% the float actually comes out right in the middle of a printed page. +% When I \LaTeX ed the documentation just now it turned out that there +% was a page break that fell exactly between the ``So now'' line and the +% float. This wouldn't Prove Anything. Bother.) +% So now we have the following float placement specifiers: +% \begin{table}[H] +% \begin{tabular}{cl} +% \tt t & Top of the page\\ +% \tt b & Bottom of the page\\ +% \tt p & Page of floats\\ +% \tt h & Here, if possible\\ +% \tt H & Here, definitely +% \end{tabular} +% ^^A\caption{Could it be that this just needs a caption?} +% \end{table} +% +% \typeout{End of the Introduction.} +% \typein[\answer]% +% {Do you want an annotated listing of the macro definitions (y/n) ?} +% \def\next{y}\ifx\answer\next\else\expandafter\stop\fi +% \StopEventually{\PrintIndex} +% +% \section{Implementation} +% +% As usual, the file identifies itself in the log file. +% But only if this file's macros aren't yet defined. +% `Old' versions of \LaTeX\ (those before March 1992) don't have |\@Esphack|. +% We do an |\@esphack| hack to get around that. +% \begin{macrocode} +\@ifundefined{newfloat}{}{\endinput} +\wlog{Style-Option: `float' 1.1c 18 Dec 92 (AL)} +\@ifundefined{@Esphack}{\let\@Esphack\@esphack}{} +% \end{macrocode} +% In \LaTeX, floats are assigned `type numbers' that are powers of two. +% Since there are only two classes of floats, their type numbers are +% hardwired into the document styles. We need to be somewhat more flexible, +% and thus we initialize a counter to hold the next type number to be +% assigned. This counter will be incremented appropriately later. +% \begin{macrocode} +\newcount\float@type +\@ifundefined{c@figure}{\float@type=1}{\float@type=4} +% \end{macrocode} +% To warm up, we'll look at some of the simpler commands first. +% \begin{macro}{\floatstyle} +% The |\floatstyle| command puts its argument into the +% |\float@style| macro as the name of the new float style. +% But if the argument doesn't denote a float style, an error message +% is output instead: Each float style \meta{style} has a corresponding command +% |\fs@|\meta{style} that contains the appropriate declarations. +% If the control sequence |\fs@|\meta{arg} (which goes with the +% argument \meta{arg} to |\floatstyle|) is undefined, i.e., +% equals |\relax| under |\ifx|, then the float style \meta{arg} +% is unknown, and we call |\float@error{|\meta{arg}|}| for the +% error message. +% \begin{macrocode} +\def\floatstyle#1{\expandafter\ifx\csname fs@#1\endcsname\relax + \float@error{#1}\else\def\float@style{#1}\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\float@error} +% Here's the error message. |\@eha| is the help message that says +% `Your command was ignored.' +% \begin{macrocode} +\def\float@error#1{\@latexerr{Unknown float style `#1'}\@eha} +% \end{macrocode} +% \end{macro} +% +% The next two commands are even simpler. \LaTeX\ says that +% |\fps@|\meta{float} contains the default placement specifier for +% the class of floats \meta{float}. |\fname@|\meta{float} expands +% to the name that appears in \meta{float} captions, e.g., `Figure'. +% (This is our own definition.) +% \begin{macrocode} +\def\floatname#1#2{\@namedef{fname@#1}{#2}} +\def\floatplacement#1#2{\@namedef{fps@#1}{#2}} +% \end{macrocode} +% +% \begin{macro}{\restylefloat} +% The |\restylefloat| command sets up everything so that subsequent +% commands like |\begin{|\meta{float}|}| use the appropriate +% float style. It defines |\fst@|\meta{float} to expand to a command +% that sets up the currently selected float style (|\fs@|\meta{style}). +% Then it defines the commands |\begin{|\meta{float}|}|, +% |\end{|\meta{float}|}|, |\begin{|\meta{float}|*}| and +% |\end{|\meta{float}|*}|. +% \begin{macrocode} +\def\restylefloat#1{\expandafter\edef\csname + fst@#1\endcsname{\expandafter\noexpand\csname + fs@\float@style\endcsname}% + \@namedef{#1}{\bgroup\@nameuse{fst@#1}\@float{#1}}% + \@namedef{#1*}{\bgroup\@nameuse{fst@#1}\@dblfloat{#1}}% + \expandafter\let\csname end#1\endcsname\float@end + \expandafter\let\csname end#1*\endcsname\float@dblend} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newfloat} +% Now we can explain how to define a new class of floats. Recall that +% the three required arguments to |\newfloat| are \meta{type}, +% \meta{placement} and \meta{ext}, respectively. First we save the +% latter two. +% \begin{macrocode} +\def\newfloat#1#2#3{\@namedef{ext@#1}{#3} + \floatplacement{#1}{#2}% +% \end{macrocode} +% Then we figure out a default value for the `caption name' of this +% class of floats. If the |\fname@|\meta{type} isn't already defined, +% we tentatively use \meta{type} as the name. This is convenient if +% \meta{type} is, say, {\tt Program}, since no |\floatname| command +% is necessary at all. +% \begin{macrocode} + \expandafter\ifx\csname fname@#1\endcsname\relax + \floatname{#1}{#1}\fi +% \end{macrocode} +% Then we set up the type number for \LaTeX\ in |\ftype@|\meta{type}. +% Afterwards we have to set the |\float@type| to the next greater power +% of two, so that it is ready for the next |\newfloat|. Fortunately, +% we just have to double it by adding. We don't bother to check for overflow +% since it is pretty unlikely that somebody will define 25 different classes +% of floats. Finally, we call |\restylefloat| to define the style and +% commands for this class of floats. +% \begin{macrocode} + \expandafter\edef\csname ftype@#1\endcsname{\the\float@type}% + \advance\float@type by\float@type + \restylefloat{#1}% +% \end{macrocode} +% Now all that's left is to assemble the |\fnum@|\meta{type} macro +% that \LaTeX\ wants to use in its captions. Basically it is just +% `caption name'${}+{}$`counter value', disguised so that the command +% {\em names\/} appear in the definition instead of their expansions. +% \begin{macrocode} + \expandafter\edef\csname fnum@#1\endcsname% + {\expandafter\noexpand\csname fname@#1\endcsname{} + \expandafter\noexpand\csname the#1\endcsname} +% \end{macrocode} +% Finally, we have to take care of the optional argument, \meta{within}. +% If the optional argument is present, we pass control to |\@xnewfloat|. +% Otherwise, we just define the counter for this class of floats. +% By default, the numbers come out |\arabic|. +% \begin{macrocode} + \@ifnextchar[{\@xnewfloat{#1}}% + {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}% + {}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@xnewfloat} +% Here we deal with the optional argument to |\newfloat|. We have +% to create a new counter as per |\newcounter{|\meta{type}|}| +% and add that counter to the list of counters to be reset whenever +% counter \meta{within} is stepped. The standard command +% |\newcounter{|\meta{type}|}[|\meta{within}{\tt]} takes care of that. +% However, we can't define the \meta{type} counter if it's already defined. +% While this case is simply ignored when \meta{within} is not present, +% we issue a warning here since what comes out is probably not what the user +% expects. +% \begin{macrocode} +\def\@xnewfloat#1[#2]{\@ifundefined{c@#1}{\newcounter{#1}[#2]% + \expandafter\edef\csname the#1\endcsname{% + \expandafter\noexpand\csname + the#2\endcsname.\noexpand\arabic{#1}}}% + {\@warning{Can't redefine counter variable for #1.}}} +% \end{macrocode} +% \end{macro} +% +% We have to adapt some of \LaTeX's internal macros to our needs. +% There are several things that have to be changed around +% in order to provide the functionality of David Carlisle's {\tt here.sty}. +% The following is thus lifted from {\tt here.sty}, with changes and with +% David's permission: +% +% \begin{macro}{\@Hxfloat} +% We save the original version of |\@xfloat|. (This macro is called from +% |\@float|, which we used above to define the environment commands for a +% new class of floats.) +% \begin{macrocode} +\let\@Hxfloat\@xfloat +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@xfloat} +% The new version of |\@xfloat| looks for a |[H]| argument. +% If it is present |\@HHfloat| is called, otherwise the original macro +% (renamed to |\@Hxfloat|) is called. +% \begin{macrocode} +\def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}} +% \end{macrocode} +% \end{macro} +% Later on we'll need a box to save a |[H]| float. +% \begin{macrocode} +\newbox\float@box +\newif\if@flstyle +% \end{macrocode} +% \begin{macro}{\@HHfloat} +% First gobble the |[H]|. Note that {\tt H} should not be used in +% conjunction with the other placement options, nor as the value of the +% default placement, as set in |\fps@|{\it type}. +% \begin{macrocode} +\def\@HHfloat#1[H]{% +% \end{macrocode} +% Locally redefine the end of the environment. +% \begin{macrocode} + \expandafter\let\csname end#1\endcsname\float@endH +% \end{macrocode} +% We don't get a |\@currbox| if we don't actually use the float mechanism. +% Therefore we fake one using the |\float@box| defined above. +% \begin{macrocode} + \let\@currbox\float@box +% \end{macrocode} +% Now we save the current float class name for use in constructing the +% |\caption|. The caption box (defined below) is initialised to an empty +% box to avoid trouble with floats not having a caption. Then we start the +% box that'll hold the float itself. +% |\parindent| is set to zero for compatibility with the standard {\tt [h]} +% option. +% \begin{macrocode} + \def\@captype{#1}\setbox\@floatcapt=\vbox{}% + \expandafter\ifx\csname fst@#1\endcsname\relax + \@flstylefalse\else\@flstyletrue\fi + \setbox\@currbox=\vbox\bgroup\parindent\z@ +% \end{macrocode} +% The final |\ignorespaces| is needed to gobble any spaces or newlines +% after the {\tt[H]} tokens. +% \begin{macrocode} + \ignorespaces} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\float@makebox} +% Basically, we must arrange for `style commands' to be executed +% at certain points during the generation of the float. +% \LaTeX\ puts a float into a vertical box |\@currbox| which it takes +% off a list of empty boxes for insertions. When the |\float@makebox| macro +% is called, |\@currbox| contains the complete float, minus the caption +% --- we'll see later that we use our own |\caption| command to +% put the caption into a |\vbox| of its own. This is the only way +% we can control the position of the caption by the float style, +% regardless of where the caption appears in the float's input text itself. +% So the `style commands' are |\@fs@pre|, which is inserted at the +% very beginning of the float, |\@fs@mid|, which comes between the +% float and the caption (or the caption and the float, if captions are put +% at the top), and |\@fs@post|, which finishes off the float. +% The caption may appear at the top or at the bottom of the float, +% as defined by |\@fs@iftopcapt|. Therefore, before we hand the +% float to \LaTeX\ for positioning, it is taken apart and reassembled +% using the style commands. +% \begin{macrocode} +\def\float@makebox{% + \vbox{\hsize\columnwidth \@parboxrestore + \@fs@pre\@fs@iftopcapt + \ifvbox\@floatcapt\unvbox\@floatcapt\par\@fs@mid\fi + \unvbox\@currbox + \else\unvbox\@currbox + \ifvbox\@floatcapt\par\@fs@mid\unvbox\@floatcapt\fi + \fi\par\@fs@post\vskip\z@}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\float@end} +% The internal macro |\end@float| appears here under the name of |\float@end|. +% The main thing which is changed is that we call |\float@makebox| to +% reconstruct the float according to the float style. +% \begin{macrocode} +\def\float@end{\egroup + \global\setbox\@currbox\float@makebox +% \end{macrocode} +% Now \LaTeX\ takes over again. +% \begin{macrocode} + \ifnum\@floatpenalty <\z@ \@cons\@currlist\@currbox + \ifdim \ht\@currbox >\textheight + \ht\@currbox\textheight \fi + \ifnum\@floatpenalty < -\@Mii + \penalty -\@Miv \@tempdima\prevdepth + \vbox{}\prevdepth \@tempdima \penalty\@floatpenalty + \else \vadjust{\penalty -\@Miv + \vbox{}\penalty\@floatpenalty}\@Esphack + \fi\fi\egroup} +% \end{macrocode} +% (The final |\egroup| is not present in the original definition; +% we need it to finish off the |\bgroup| that precedes the +% |\@nameuse| in the |\begin{|\meta{float}|}| commands. +% This is to keep the style commands local.) +% \end{macro} +% +% \begin{macro}{\float@endH} +% The |\float@endH| command is, again, derived from {\tt here.sty}. It'll +% deal correctly with a non-floating float, inserting the proper amounts +% of white space above and below. +% \begin{macrocode} +\def\float@endH{\egroup \vskip\intextsep + \if@flstyle\float@makebox\else\box\@currbox\fi + \vskip\intextsep\egroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\float@dblend} +% The |\float@dblend| macro is an almost-verbatim copy of +% |\end@dblfloat| but for the last part, from |\fi\egroup| on. +% The |\egroup| is, of course, necessary because of the |\bgroup| +% at the very beginning of the float. And we have to call |\float@end| +% instead of |\end@float|, naturally. +% \begin{macrocode} +\def\float@dblend{\if@twocolumn + \par\vskip\z@\egroup + \ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi + \ifnum \@floatpenalty =-\@Mii \@Esphack\fi\egroup\else\float@end\fi} +% \end{macrocode} +% \end{macro} +% +% Now for the caption routines. +% We use a box, |\@floatcapt|, to hold the caption while the float +% is assembled. +% \begin{macrocode} +\newbox\@floatcapt +% \end{macrocode} +% +% \begin{macro}{\caption} +% This is the only \LaTeX\ macro that this document style supersedes. +% Our |\caption| command checks whether there is a custom style +% defined for the current float (whose type can be found in |\@captype|). +% If so, the caption routines from {\tt float.sty} are used, otherwise +% we call the vanilla \LaTeX\ routines. +% The |\@flcapt| conditional is used to tell the float-assembly routines +% that there actually {\em is\/} a caption. We need this to properly handle +% {\tt figure}s and {\tt table}s that have been restyled. +% \begin{macrocode} +\def\caption{\refstepcounter\@captype + \expandafter\ifx\csname fst@\@captype\endcsname\relax + \let\@tempf\@caption + \else\let\@tempf\float@caption\fi \@dblarg{\@tempf\@captype}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\float@caption} +% The |\float@caption| macro takes care of entering the caption into +% the appropriate listing. It also controls the typesetting of the caption +% itself, although a style-dependent macro |\@fs@capt| is called +% to handle the specifics. Note that because the caption is saved in a box +% instead of being output to the float right away, you cannot simply put +% a legend after the caption proper; it has to follow the |\caption| +% command in an optional argument. +% +% First of all, we call |\addcontentsline| to update the list of +% floats of this class. Note that |\float@caption| is |\long| +% to allow for paragraph breaks in its arguments. +% \begin{macrocode} +\long\def\float@caption#1[#2]#3{\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}} +% \end{macrocode} +% Now we collect the caption proper. The caption name and number are +% taken from |\fnum@|\meta{float}, where \meta{float} is the class +% of float we're currently handling. +% \begin{macrocode} + \global\setbox\@floatcapt\vbox\bgroup\@parboxrestore + \normalsize\@fs@capt{\csname fnum@#1\endcsname}{\ignorespaces #3}% +% \end{macrocode} +% Finally we check for the presence of the optional argument. If there is +% one, we call |\float@ccon| to pick it up; otherwise, the |\egroup| +% finishes off the box. +% \begin{macrocode} + \@ifnextchar[{\float@ccon}{\egroup}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\float@ccon} +% The |\float@ccon| macro expands to the optional argument of a +% |\caption| command, followed by |\par\egroup|. Note that this +% precludes using |\verb| \& Co.\ in the optional argument; the +% interested reader is urged to fix this problem as an exercise. +% \begin{macrocode} +\long\def\float@ccon[#1]{#1\par\egroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\listof} +% The |\listof| command reads the desired list of floats from the +% appropriate auxiliary file. The file is then restarted. +% Currently the list appears at the chapter or the section level, depending +% on whether chapters are supported in the document style at all. +% First of all, we check whether the float style that's supposed to be +% listed is actually defined. If not, we output a |\float@error|. +% \begin{macrocode} +\def\listof#1#2{\expandafter\ifx\csname + ext@#1\endcsname\relax\float@error{#1}% +% \end{macrocode} +% All's well until now. We determine whether the list is going to be a +% chapter or a section, and we define the |\l@|\meta{float} command +% that \LaTeX\ needs for formatting the list. +% After that, we call |\@starttoc| with the correct file extension +% to do the actual work. +% \begin{macrocode} + \else + \@ifundefined{chapter}{\def\@tempa{\section*}}% + {\def\@tempa{\chapter*}}% + \@tempa{#2\@mkboth{\uppercase{#2}}{\uppercase{#2}}}% + \expandafter\def\csname + l@#1\endcsname{\@dottedtocline{1}{1.5em}{2.3em}}% + \@starttoc{\csname ext@#1\endcsname}\fi} +% \end{macrocode} +% \end{macro} +% +% \section{The Float Styles} +% +% Finally, we define the three standard float styles that were outlined +% in the Introduction. Every float style \meta{style} corresponds to a +% command |\fs@|\meta{style} which contains the definitions of the +% style commands, namely +% \begin{center}\begin{tabular}{rl} +% |\@fs@pre|&top of the float\\ +% |\@fs@mid|&between float and caption\\ +% |\@fs@post|&bottom of the float\\ +% |\@fs@capt|&formatting routine for caption\\ +% |\@fs@cfont|&font for caption name \& number +% \end{tabular}\end{center} +% +% \begin{macro}{\floatc@plain} +% The |\floatc@plain| macro formats a caption the way \LaTeX\ does +% it: if the caption is fairly short, it is centered, otherwise it is +% formatted as a paragraph. The only difference is that the portion +% containing the caption name and number uses the |\@fs@captfont|. +% \begin{macrocode} +\def\floatc@plain#1#2{\setbox\@tempboxa\hbox{{\@fs@cfont #1:} #2}% + \ifdim\wd\@tempboxa>\hsize {\@fs@cfont #1:} #2\par + \else\hbox to\hsize{\hfil\box\@tempboxa\hfil}\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\fs@plain} +% The {\tt plain} float style is similar to what \LaTeX\ does of its +% own accord; the only difference is that the caption is guaranteed +% to come out at the bottom of the float. +% \begin{macrocode} +\def\fs@plain{\def\@fs@cfont{\rm}\let\@fs@capt\floatc@plain + \def\@fs@pre{}\def\@fs@post{}\def\@fs@mid{\vskip10pt\relax}% + \let\@fs@iftopcapt\iffalse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\floatc@ruled} +% The |\floatc@ruled| command is even simpler than the +% |\floatc@plain| macro. The caption is simply printed `as is'. +% \begin{macrocode} +\def\floatc@ruled#1#2{{\@fs@cfont #1} #2\par} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fs@ruled} +% In the {\tt ruled} float style, the caption appears at the top of the +% float, preceded and followed by horizontal rules. +% Another rule followes the whole of the float. +% \begin{macrocode} +\def\fs@ruled{\def\@fs@cfont{\bf}\let\@fs@capt\floatc@ruled + \def\@fs@pre{\hrule height.8pt depth0pt \kern2pt}% + \def\@fs@post{\kern2pt\hrule\relax}% + \def\@fs@mid{\kern2pt\hrule\kern2pt}% + \let\@fs@iftopcapt\iftrue} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fs@boxed} +% The {\tt boxed} float style puts the float into a box (which is slightly +% larger than the usual |\textwidth|). The caption appears below +% the box. +% \begin{macrocode} +\@namedef{fs@boxed}{\def\@fs@cfont{\bf}\let\@fs@capt\floatc@plain + \def\@fs@pre{\dimen0=\hsize \advance\dimen0 by6.8pt \hbadness10000 + \moveleft3.4pt\vbox\bgroup\hsize=\dimen0\hrule + \hbox to\dimen0\bgroup\vrule\kern3pt\vbox\bgroup\kern3pt}% + \def\@fs@mid{\kern3pt\egroup\kern3pt\vrule\egroup + \hrule\egroup\kern2pt}% + \def\@fs@post{}\let\@fs@iftopcapt\iffalse} +% \end{macrocode} +% \end{macro} +% +% Before we finish, we set the float style to {\tt plain}. +% \begin{macrocode} +\floatstyle{plain} +% \end{macrocode} +% Other float styles can be added without much ado. +% If there are many more float styles, it should be worthwhile +% to invent a scheme similar to that used in Frank Mittelbach's +% {\tt theorem} option in order to conserve space, i.e., put the +% float styles into individual files that can be loaded on demand. +% I would like to hear from people who define interesting +% float styles. +% \Finale +% \end{document} +\endinput diff --git a/obsolete/macros/latex209/contrib/misc/fnpara.sty b/obsolete/macros/latex209/contrib/misc/fnpara.sty new file mode 100644 index 0000000000..03e909b7e3 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/fnpara.sty @@ -0,0 +1,138 @@ +% FNPARA.STY +% A LaTeX style to typeset footnotes in run-on paragraphs. +% See end of this file (after \endinput) for comments. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% From LaTeX.tex : +\long\def\@footnotetext#1{\insert\footins{\footnotesize +%CCCC ---the next four lines are probably redundant, since: +% the paragraphing takes place later; +% and this style of footnote never gets split. + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox +%CCCC ---these two lines will need to be reproduced when doing the unboxing. + \hsize\columnwidth + \@parboxrestore +%CCCC + \floatingpenalty \@MM +\edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark} +%CCCC --- need to set each footnote in an hbox and apply +% the fudge factor here: + \setbox0=\hbox{% + \@makefntext +%CCCC --- this needs a parameter +% --- the rule should be moved to the beginning of the footnote +% paragraph: +% --- but the \ignorespaces should be left here. +% \rule{\z@}{\footnotesep} + {\ignorespaces + #1\strut +%CCCC --- penalty to help line breaking in footnote para goes here: +% value from TeXbook. + \penalty -10 + \hskip\footglue + } % end of parameter + } % end of \hbox + \dp0=0pt \ht0=\fudgefactor\wd0 \box0 + } % end of \footins + } % end of \def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%CCCC --- from TeXbook +\newskip\footglue \footglue=1em plus.3em minus.3em +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Cut down from ARTICLE.TEX : +\long\def\@makefntext#1{{$^{\@thefnmark}$}\nobreak\hskip.5em\relax#1} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% From LaTeX.TEX: +\def\@makecol{\ifvoid\footins \setbox\@outputbox\box\@cclv + \else\setbox\@outputbox + \vbox{\boxmaxdepth \maxdepth + \unvbox\@cclv\vskip\skip\footins\footnoterule + \global\setbox1\vbox{\makefootnoteparagraph}\unvbox1}\fi + \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats + \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth + \@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox + \vskip-\dimen128\@textbottom} + \global\maxdepth\@maxdepth} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% From TeXbook, p.398 ff., AVOIDING the redefinition of \\ in LaTeX!! +{\catcode`p=12 \catcode`t=12 \gdef\@ennumber#1pt{#1}} + +{\footnotesize \newdimen\footnotebaselineskip +%CCCC --definitely needed: + \global + \footnotebaselineskip=\normalbaselineskip} + +\dimen0=\footnotebaselineskip \multiply\dimen0 by 1024 +\divide \dimen0 by \columnwidth \multiply\dimen0 by 64 +\xdef\fudgefactor{\expandafter\@ennumber\the\dimen0 } + +\def\makefootnoteparagraph{\unvbox\footins \makehboxofhboxes + \setbox0=\hbox{\unhbox0 \removehboxes} +%CCCC ---now we are ready to set the paragraph: + \hsize\columnwidth + \@parboxrestore + \baselineskip=\footnotebaselineskip + \noindent +%CCCC ---this is where the strut is needed: + \rule{\z@}{\footnotesep}% + \unhbox0\par} +\def\makehboxofhboxes{\setbox0=\hbox{} + \loop\setbox2=\lastbox \ifhbox2 \setbox0=\hbox{\box2\unhbox0}\repeat} +\def\removehboxes{\setbox0=\lastbox + \ifhbox0{\removehboxes}\unhbox0 \fi} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput + + FNPARA.STY + A LaTeX style to typeset footnotes in run-on paragraphs. + +History: + +A vain attempt at this LaTeX modification was tried in late +September 1988 by Dominik Wujastyk, and sent to TeXhax and UKTeX +for comment. Chris Rowley came up with a working +version a few days later, but it still needs thorough testing. + +The Style: + +This LaTeX style changes the way LaTeX does footnotes. With this +style invoked (\documentstyle[fnpara]{article}), footnotes will +be typeset in a running paragraph, instead of one above another. +It is suitable for texts such as critical editions, which contain +many short footnotes. + +This is based on the TeX macros described by Knuth in the +TeXbook, Dirty Tricks, pages 398--400. It is not tested beyond +some simple examples. In particular, it has not been tested +properly in connection with even the simplest of environments, nor with +other floats. + +(In fact, ordinary LaTeX footnotes sometimes do not work well +if they need splitting (e.g. producing blank pages, +or appearing in shufled form): but these +problems should not affect this style. +I --CR-- have sent in a Bug Report about some +of these problems.) + +Be aware of Knuth's note on the limitations of this method of +doing the job: the TeX stack is used four times per footnote, +and the stack is limited (TeXbook pp. 300--301). So if you have +very many footnotes (in the hundreds) and encounter + "! TeX capacity exceeded, sorry [... save size ...]" +errors, you may need to break your text into smaller sections. +Fortunately, this is very easy to do with LaTeX. And the +footnote counter can be reset to make the joins seamless. + +Chris Rowley +Office tel: (England) 01 794 0575 +Janet: CA_ROWLEY@UK.AC.OPEN.ACS.VAX + +Dominik Wujastyk +Office tel: (England) 01 387 4477 x 3013 +Janet: Wujastyk@UK.AC.UCL.EUCLID + + +October 3, 1988 diff --git a/obsolete/macros/latex209/contrib/misc/index.doc b/obsolete/macros/latex209/contrib/misc/index.doc new file mode 100644 index 0000000000..7060e05772 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/index.doc @@ -0,0 +1,1367 @@ +% \iffalse +% ==================================================================== +% @LaTeX-style-file{ +% author = "David M. Jones", +% version = "3.02", +% date = "15 September 1993", +% time = "15:11:39 EDT", +% filename = "index.doc", +% address = "MIT Laboratory for Computer Science +% Room NE43-316 +% 545 Technology Square +% Cambridge, MA 02139 +% USA", +% telephone = "(617) 253-5936", +% FAX = "(617) 253-3480", +% checksum = "61047 1367 6478 49767", +% email = "dmjones@theory.lcs.mit.edu", +% codetable = "ISO/ASCII", +% keywords = "LaTeX, index", +% supported = "yes", +% docstring = "This is a reimplementation of LaTeX's +% indexing macros to provide better support +% for indexing in LaTeX. For example, it +% supports multiple indexes in a single +% document and provides a more robust \index +% command. +% +% The checksum field above contains a CRC-16 +% checksum as the first value, followed by +% the equivalent of the standard UNIX wc +% (word count) utility output of lines, +% words, and characters. This is produced +% by Robert Solovay's checksum utility.", +% +% } +% ==================================================================== +% \fi +% +% \iffalse +% +% HOW TO INSTALL THIS FILE: +% +% If you have the latest versions of DocStrip and doc.sty installed on +% your system, type "tex index.doc" to unpack the files index.sty and +% sample.tex. Then install index.sty wherever style files belong on +% your system and read the comments at the beginning of sample.tex to +% see how to run the test. Finally, format the documentation by +% executing the following three commands: +% +% latex index.doc +% makeindex -s gind.ist index +% latex index.doc +% +% If you don't already have DocStrip and doc.sty installed on your +% system, you should get them from one of the following sources: +% +% ftp.uni-stuttgart.de:soft/tex/macros/latex/distribs/doc +% pip.shsu.edu:tex-archive/macros/latex/distribs/doc +% ftp.tex.ac.uk:tex-archive//macros/latex/distribs/doc +% +% If for some reason you really can't install the doc package on your +% system, then you can name this file index.sty and use it as a style +% file. However, you will likely notice some slowness in loading this +% file, due to the large number of comments that have to be skipped +% over. +% +% CAUTION: Use only as directed. Do not take internally. May cause +% rash if applied directly to skin. Federal law prohibits +% distributing without a proscription. +% +% __ __ +% / \ / \ +% / \ / \ +% / \ \ / \ \ +% / ) \ / ) \ +% \ ( / \ ( / +% \ \ / \ \ / +% \ / \ / +% \__/ \__/ +% || || +% || || +% ------ ------ +% +% Now the real fun starts. This file is designed to serve 4 (or 5, if +% you prefer) distinct functions: +% +% (1) In the absence of DocStrip, it can be named index.sty and used +% as a LaTeX style file. +% +% (2) It is a DocStrip batch file that can be used to unpack index.sty +% and sample.tex. This function is triggered when the file is used as +% an input file for plain TeX, i.e., when the command "tex index.doc" +% is executed. +% +% (3) It is the driver file for the documentation of index.sty. This +% function is triggered when the file is used as an input file for +% LaTeX, i.e., when the command "latex index.doc" is executed. +% +% (4) It is the source file for steps 2 and 3. +% +% To make this work, we have to be able to determine which of these +% cases we are in and take appropriate action. +% +% The next few lines of code accomplish this. First, note that if +% this file is used as input to the doc.sty \DocInput command, then +% the \iffalse ... \fi will cause this code to be ignored. Similarly, +% the guard prevents this code from being copied into any +% output files by DocStrip. +% +% Next comes the more interesting code. We need two auxiliary +% commands to make sure that the correct commands get executed at the +% correct time. In order to avoid impinging on the user's namespace, +% I use two macro names from index.sty. +% +% \proofmodetrue: This is a no-op, unless we are producing +% documentation (i.e., the user has typed "latex index.doc"), in +% which case it expands to the appropriate initialization code, +% namely a \documentstyle command, plus \MakePercentIgnore to set +% things up for doc.sty, and a call to \csname iffalse\endcsname +% to match the fi that follows. (The earlier iffalse was ignored +% because when that line was read, % was still a comment character +% and not an ignored character.) +% +% \renewindex: This eats its argument unless this file is being used +% as a DocStrip batchfile (i.e., the user has typed "tex +% index.doc"), in which case it simply regurgitates its argument. +% The commands inside the \renewindex commands are just normal +% DocStrip batchfile commands. +% +% Before doing anything else, we check to make sure that \newindex is +% not already defined. If it is, that means this file has already +% been loaded once as a style file (or else someone else has already +% defined a \newindex command), which means we should not load the +% file a second time. (This is the same test that will be used later +% to determine whether or not index.sty has already been loaded. So, +% if you are using index.doc as index.sty, this test will actually be +% made twice, but that should be ok.) +% +% Finally, we determine whether we are inside plain TeX or LaTeX by +% checking to see if \documentstyle is defined. If we are inside +% LaTeX, we check to see if we are being used as a style file or a +% documentation file by checking to see if the \catcode of @ is 11 +% (letter) or not. +% +% The braces around the first two blocks of code below are necessary +% because DocStrip will open this file and start reading it +% line-by-line. The braces ensure that the entire \ifx ... \fi +% structures are picked up at once. +% +% No doubt strange and terrible things will happen if you feed this +% file to any dialect of TeX other than plain TeX or LaTeX. +% +% The blame for much of the following code goes to David Wald +% , who forced me to adopt this approach +% after I had already come up with a safer alternative that was almost +% as easy to unpack. If anything goes wrong, it's his fault. +% +% \fi +% +% \iffalse +%<*install> +{\expandafter\ifx\csname newindex\endcsname\relax\else\endinput\fi} +{ + \global\let\proofmodetrue\relax + \expandafter\ifx\csname documentstyle\endcsname\relax + \gdef\renewindex#1{#1} + \else + \gdef\renewindex#1{} + \ifcat a\noexpand @\else + \gdef\proofmodetrue{% + \documentstyle[doc]{article}\MakePercentIgnore + \csname iffalse\endcsname + } + \fi + \fi +} +\renewindex{\def\batchfile{index.doc}} +\renewindex{\input docstrip.tex } +\renewindex{\generateFile{index.sty}{t}{\from{index.doc}{style}}} +\renewindex{\generateFile{sample.tex}{t}{\from{index.doc}{test}}} +\renewindex{\endinput} +\proofmodetrue +% +% \fi + +\def\fileversion{v3.02} +\def\filedate{15 September 1993} +\def\docdate {15 September 1993} + +%% \CheckSum{692} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +% +% \DoNotIndex{\!,\/,\?,\@,\^,\_} +% \DoNotIndex{\@@par,\@M,\@auxout,\@bsphack,\@esphack,\@depth,\@ehc} +% \DoNotIndex{\@for,\@flushglue,\@gobble,\@gobbletwo,\@height,\@idxitem} +% \DoNotIndex{\@ifnextchar,\@ifstar,\@ifundefined,\@input,\@latexerr} +% \DoNotIndex{\@makeschapterhead,\@namedef,\@nameuse,\@nil} +% \DoNotIndex{\@nobreakfalse,\@restonecolfalse,\@restonecoltrue} +% \DoNotIndex{\@tempa,\@tempf,\@temptokena,\@themark,\@width} +% \DoNotIndex{\active,\aindex,\baselineskip,\begin,\begingroup,\box} +% \DoNotIndex{\c@page,\catcode,\chapter,\char,\chardef,\closeout} +% \DoNotIndex{\CodelineIndex,\sp,\sb,\label,\leavevmode,\mark} +% \DoNotIndex{\mark,\newinsert,\newwrite,\newtoks,\xdef} +% \DoNotIndex{\columnsep,\columnseprule,\columnwidth,\csname,\def} +% \DoNotIndex{\dimen,\do,\DocInput,\documentstyle,\edef,\else,\em} +% \DoNotIndex{\EnableCrossrefs,\end,\endcsname,\endgroup,\endinput} +% \DoNotIndex{\everypar,\expandafter,\fi,\filedate,\fileversion} +% \DoNotIndex{\footnotesize,\gdef,\global,\glossary,\hangindent} +% \DoNotIndex{\if@filesw,\if@nobreak,\if@twocolumn,\if@twoside} +% \DoNotIndex{\hsize,\hskip,\ifhmode,\ifmmode,\ifodd,\ifvmode,\ifx} +% \DoNotIndex{\immediate,\insert,\item,\jobname,\long} +% \DoNotIndex{\let,\lineskip,\marginparsep,\marginparwidth,\maxdimen} +% \DoNotIndex{\makeatletter,\noexpand,\openout,\protect,\rlap} +% \DoNotIndex{\min,\newpage,\nobreak,\normalbaselineskip} +% \DoNotIndex{\normallineskip,\p@,\par,\parfillskip,\parindent,\parskip} +% \DoNotIndex{\penalty,\relax,\section,\sin,\sloppy,\space,\string} +% \DoNotIndex{\tableofcontents,\the,\thepage,\thispagestyle,\toks,\tt} +% \DoNotIndex{\twocolumn,\typeout,\uppercase,\vbox,\vrule,\vskip,\vss} +% \DoNotIndex{\write,\z@,\z@skip} +% +% \MakeShortVerb{\=} +% +% \setcounter{StandardModuleDepth}{1} +% +% \CodelineIndex +% +% \title{A new implementation of \LaTeX's indexing +% commands\thanks{This file has version number \fileversion, +% last revised \filedate, documentation dated \docdate. The +% definitive version of this file is +% {\tt theory.lcs.mit.edu:pub/tex/index.doc}.}} +% +% \author{David M. Jones} +% +% \date{\filedate} +% +% \begin{document} +% +% \maketitle +% +% \section{Introduction} +% +% This style file reimplements \LaTeX's indexing macros to provide +% better and more robust support for indexes. In particular, it +% provides the following features: +% \begin{enumerate} +% +% \item +% Support for multiple indexes. +% +% \item +% A $*$-variant of the =\index= command that, in addition to putting +% it's argument in the index, also typesets it in the running text. +% +% \item +% A =\shortindexingon= command that makes =^= and =_= shorthand for +% =\index= and =\index*=, respectively (but only outside of math mode, +% of course). This can be turned of with the =\shortindexingoff= +% command. +% +% \item +% The {\tt showidx} style option has been merged into this file. The +% command =\proofmodetrue= can be used to enable the printing of index +% entries in the margin of pages. The size and style of font can be +% controlled with the =\indexproofstyle= command. +% +% \item +% A two-stage process for creating the raw index files, similar to +% that used to create tables of contents. This means that if you have +% a large document consisting of several =\include='d files, you no +% longer lose the index if you format only part of the document with +% =\includeonly=. +% +% \item +% The =\index= command has been rewritten to be more robust. In +% particular, it no longer depends on =\catcode= changes to work +% properly, so the new =\index= command can be used in places that the +% original couldn't, such as inside the arguments of other macros. +% +% \end{enumerate} +% +% +% \section{Creating an index with \LaTeX} +% +% Conceptually, there are three stages to creating an index with +% \LaTeX. First, the raw index information has to be written out to a +% file. Then, the raw information needs to be processed and turned +% into a finished index. Finally, the finished index has to be read +% back in by \LaTeX\ and formated. +% +% In \LaTeX, this is accomplished with the commands =\makeindex=, +% =\index=, =\printindex=, and (most often) with the auxiliary program +% {\tt makeindex}. Assuming that your main file is called {\tt +% foo.tex}, =\makeindex= opens the file {\tt foo.idx} and initializes +% it for holding the raw index entries and =\index= is used to put raw +% index entries into {\tt foo.idx}. Then the raw index file is +% processed by {\tt makeindex}, which puts the finished index in {\tt +% foo.ind}. Finally, the =\printindex= command is used in your +% \LaTeX\ document to indicate where the file {\tt foo.idx} should be +% read back in, i.e., where the index should appear in your document. +% +% This style modifies the =\makeindex=, =\index=, and =\printindex= +% commands, as described below. +% +% +% \section{The user interface} +% +% There are four pieces of information associated with each index: +% \begin{enumerate} +% +% \item +% A short, unique tag that identifies the index. +% +% \item +% The extension of the output file where the raw index information +% will be put by \LaTeX. +% +% \item +% The extension of the input file where the processed information will +% be put by {\tt makeindex} to be read in later by \LaTeX. +% +% \item +% The title of the index. +% +% \end{enumerate} +% +% +% \DescribeMacro{\newindex} +% Correspondingly, the =\newindex= command takes four arguments. For +% example, if you wanted to declare an author index, you might use the +% following: +% \begin{verbatim} +% \newindex{aut}{adx}{and}{Name Index} +% \end{verbatim} +% Here, =aut= is the tag used to identify the author index, and ``Name +% Index'' is the title of the index. If the name of your main file is +% =root.tex=, then \LaTeX\ will write the raw index entries to the +% file =root.adx=, and you will execute the following {\tt makeindex} +% command to process the author index: +% \begin{verbatim} +% makeindex -o root.and root.adx +% \end{verbatim} +% +% +% \DescribeMacro{\renewindex} +% The =\renewindex= command takes the same four arguments as the +% =\newindex= command and can be used to redefine indexes that have +% been previously declared. +% +% +% \DescribeMacro{\makeindex} +% For backwards compatibility, the =\makeindex= command is redefined +% to use =\newindex=. It is essentially equivalent to +% \begin{verbatim} +% \newindex{default}{idx}{ind}{Index} +% \end{verbatim} +% The index labeled =default= is special: it is the one that will be +% used by =\index= and =\printindex= unless another index is +% specified (see below). +% +% +% \DescribeMacro{\printindex} +% The =\printindex= command is modified by the addition of an optional +% argument, which is the tag of the index that should be printed. +% +% +% \DescribeMacro{\index} +% The =\index= command is modified in two ways. First, there is a +% $*$-variant of the command that, in addition to putting its +% argument in an index, also typesets it on the page. Second, +% =\index= now takes an optional argument that should be the tag of +% the index where its argument should be put. If no such tag is +% supplied, the =default= index (such as that opened by =\makeindex= +% above) is used. +% +% +% \DescribeMacro{\shortindexingon} +% \DescribeMacro{\shortindexingoff} +% Perhaps the most dubious feature of =index.sty= is that it allows +% you to define the characters =^= and =_= to be abbreviations for +% =\index*= and =\index= outside of math mode. These abbreviations +% are enables by the =\shortindexingon= command and disabled by the +% =\shortindexingoff= command. Both of these commands make their +% changes locally rather than globally, so they can be used to enable +% or disable the abbreviations within a group. (This might be useful, +% for example, if you wanted the abbreviations turned on throughout +% most of the documentation, but turned off in one particular +% environment.) In addition, +% \DescribeMacro{shortindexingon}=shortindexingon= can be used as an +% environment if that seems appropriate. +% +% +% \DescribeMacro{\proofmodetrue} +% \DescribeMacro{\proofmodefalse} +% \DescribeMacro{\indexproofstyle} +% As mentioned above, the =showidx= document-style option has been +% merged into =index.sty=. It can be turned on with =\proofmodetrue= +% and turned off with =\proofmodefalse=. When it is turned on, +% all\footnote{Well, most, at least. There are some circumstances +% under which the index entries won't show up in the proofs, although +% they will show up in the index.} index entries will be put in the +% margin of the page where they appear. By default, they appear in +% the typewriter font at =\footnotesize=, but the user can override +% this with the =\indexproofstyle= command, for example, +% \begin{verbatim} +% \indexproofstyle{\footnotesize\it} +% \end{verbatim} +% will cause them to be put in italics instead. +% +% +% \DescribeMacro{\disableindex} +% There are some circumstances where it might be helpful to suppress +% the writing of a particular raw index file. The =\disableindex= +% command is provided for this purpose. It takes one argument, a +% comma-separated list of tags of the indexes that should be disabled. +% This command should come {\em before\/} the declarations for the +% indexes that are being disabled\footnote{This limits its usefulness +% somewhat, but since the output file for an index is opened when the +% index is declared, the damage has already been done. We could close +% the file, but we can't prevent a new output stream from being +% allocated and we can't keep the old file from being truncated.}. +% One situation where the =\disableindex= command might be useful is +% if you have so many indexes that you are exhausting \TeX's supply of +% output streams\footnote{\TeX\ only has 16 output streams, which are +% allocated with the {\tt\string\newwrite} command. The standard +% \LaTeX\ styles use from 3 to 7 of these, which should leave room for +% up to 9 indexes. Of course, if you have extra output files, then +% there will be fewer output streams left for indexes.}. For example, +% suppose you have 10 indexes, but only 5 output streams available for +% indexes. Then you could add a =\disableindex= command to the top of +% your file to suppress the writing of all but 5 of the indexes. +% (Note that the index entries would still get written to the =.aux= +% file; they just wouldn't get copied to the individual raw index +% files at the end of the run.) At the end of the run, you could then +% re-run your main file a couple of times with different indexes +% disabled until you had created all of the raw index files. This is +% somewhat clumsy, but safer than any alternative I've come up +% with\footnote{A less clumsy (for the user, at least) solution would +% be to read the =.aux= file multiple times at the end of the run, +% each time writing just one of the raw index files. The main +% disadvantage of this scheme is that it would require a modification +% of {\tt\string\enddocument}.}. +% +% +% \section{Caveats} +% +% In order to implement this style file, it's been necessary to modify +% a number of \LaTeX\ commands seemingly unrelated to indexing, +% namely, =\@starttoc=, =\raggedbottom=, =\flushbottom=, +% =\addcontentsline=, =\markboth=, and =\markright=. Naturally, this +% could cause incompatibilities between {\tt index.sty} and any style +% files that either redefine these same commands or make specific +% assumptions about how they operate. See Section~\ref{sec:thecode} +% for explanations of why these various commands needed modification. +% +% It's also been necessary to modify the =\theindex= environment, but +% I've tried to do so very conservatively. If your style file uses +% =\indexname= and your definition of =\theindex= doesn't take any +% arguments, you should be ok. Otherwise, you'll have to redefine the +% =\theindex= environment yourself if you don't want the \LaTeX\ {\tt +% book.sty} default. +% +% In the current implementation, {\tt index.sty} uses one output +% stream for each index. Since there are a limited number of output +% indexes, this means that there is a limit on the number of indexes +% you can have in a document. See the description of =\disableindex= +% for a fuller discussion of this problem and one way around it. +% +% +% \section{To do's} +% +% It might be nice if the =\index*= command parsed its argument so +% that, for example, instead of writing `=\index{sin@$\sin$}$\sin$=', +% one could write `=\index*{sin@$\sin$}='. However, this fraught with +% numerous dangers, and I'm both too lazy and too cowardly to +% undertake it now. +% +% Maybe the user should be given the option of deciding which +% characters are used for the shortindexing abbreviations +% +% The documentation should be carefully read, edited, and finished. +% (In particular, I should add some scathing comments about some of +% the problems that made it necessary to redefine so many of \LaTeX's +% commands.) +% +% Maybe it would be nice if this package were compatible with plain +% \TeX. +% +% \StopEventually{} +% +% \section{The code} +% \label{sec:thecode} +% +% As is customary, we first make sure the file is loaded only once. +% Then we print an identifying message to the terminal. +% loaded +% \begin{macrocode} +%<*style> +\@ifundefined{newindex}{}{\endinput} + +\typeout{Style-Option: `index' \fileversion\space <\filedate> (dmj)} +% \end{macrocode} +% +% \begin{macro}{\@ifundefined} +% We begin by redefining the \LaTeX\ command =\@ifundefined= to +% prevent it from expanding its arguments prematurely. This also +% requires us to redefine =\@leftmark= and =\@rightmark= to make them +% =\long=. The following three definitions are borrowed from {\tt +% amsart.sty}, v1.1b $\langle$31 Jul 1991$\rangle$. I rely heavily +% upon this more robust definition of =\@ifundefined=. +% \begin{macrocode} +\def\@ifundefined#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@leftmark + \else + \expandafter\@rightmark + \fi +} + +\long\def\@leftmark#1#2{#1} +\long\def\@rightmark#1#2{#2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\disableindex} +% The =\disableindex= should come before the declarations of the +% indexes it refers to. (Question: If an index has been disabled, +% should it show up in index proofs? Maybe there should be a separate +% command to disable index proofs on and index-by-index basis.) +% \begin{macrocode} +\def\disableindex#1{% + \@for\@tempa:=#1\do{% + \@namedef{disable@\@tempa}{}% + \@ifundefined{tf@\@tempa}{}{% + \typeout{index.sty> Warning! It's too late to disable the + `\@tempa' index; the output}% + \typeout{index.sty> file \jobname.\@tempa\space has already + been opened for output. You should}% + \typeout{index.sty> put the \string\disableindex\space + command before the declaration of the}% + \typeout{index.sty> `\@tempa' index.}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@newindex} +% \begin{macro}{\newindex} +% \begin{macro}{\renewindex} +% The =\newindex= and =\renewindex= commands are defined on analogy +% with the =\[re]newcommand= macros. Each index is identified by a +% unique tag, which is specified in the first argument of =\newindex=. +% Most of the information about the index labeled \meta{tag} is kept +% in the macro =\idx@=\meta{tag}, so we can check to see if a +% particular index has already been defined by checking whether +% =\idx@=\meta{tag} is defined. =\newindex= and =\renewindex= both +% check to see if their first argument is already associated with an +% index and then either issue an appropriate error message or call +% =\@newindex=. +% +% The =\if@newindex= flag will be used to keep =\renewindex= from +% re-allocating =\write= and =\toks= registers later. +% \begin{macrocode} +\newif\if@newindex + +\def\newindex#1{% + \@ifundefined{idx@#1}% + {\@newindextrue\@newindex{#1}}% + {% + \@latexerr{Index type `\string#1' already defined}\@ehc + \expandafter\@gobble\@gobbletwo + }% +} + +\def\renewindex#1{% + \@ifundefined{idx@#1}% + {% + \@newindextrue + \@latexerr{Index type `\string#1' not defined}\@ehc + }% + {\@newindexfalse}% + \@newindex{#1}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@preamblecmds} +% Neither =\newindex=, =\renewindex=, nor =\disableindex= should be +% used anywhere except inside style files or in the preamble of a +% document, so we add them to the =\@preamblecmds= list. +% \begin{macrocode} +\begingroup + \def\do{\noexpand\do\noexpand}% + \xdef\@preamblecmds{% + \@preamblecmds + \do\newindex + \do\renewindex + \do\disableindex + } +\endgroup +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@newindex} +% =\@newindex= does most of the work. First, it picks up the first +% three arguments of the =\[re]newindex= command and stores the second +% two in an appropriate =\idx@= macro. The title of the index is +% treated differently, however, since it is potentially fragile in a +% particularly odd way. To prevent mishaps, it is stored in a token +% register. In addition to stashing away the information about the +% index, =\@newindex= also opens an appropriate output files if we are +% writing auxiliary files (i.e., unless =\nofiles= has been called). +% +% \begin{macro}{\my@newtoks} +% Since we need to declare new token registers on the fly, we need a +% non-=\outer= version of =\newtoks=. +% \begin{macrocode} +\def\my@newtoks{\csname newtoks\endcsname} + +\def\@newindex#1#2#3{% + \@namedef{idx@#1}{#2:#3}% + \if@filesw + \@ifundefined{disable@#1}{% + \if@newindex + \expandafter\newwrite\csname tf@#1\endcsname + \expandafter\my@newtoks\csname idxtitle@#1\endcsname + \else + \immediate\closeout\@nameuse{tf@#1}% + \fi + \immediate\openout\@nameuse{tf@#1}=\jobname.#2 % + \typeout{index.sty> Writing index file \jobname.#2 }% + } + {\typeout{index.sty> Index `#2' disabled -- not opening + \jobname.#2 }}% + \fi + \expandafter\csname idxtitle@#1\endcsname +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@second} +% This is a useful macro for retreiving the second field of an index +% specification. +% \begin{macrocode} +\def\@second#1:#2\@nil{#2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@nearverbatim} +% \begin{macro}{\@meaning} +% =\@nearverbatim\foo= is much like =\meaning\foo=, except that it +% suppresses the ``=macro ->='' string produced when =\meaning= +% expands a macro. It is used by =\@wrindex= and =\@vwritefile= to +% produce an ``almost verbatim'' copy of their arguments. This method +% replaces the use of =\@sanitize= from latex.tex and allows indexing +% macros to be used in places (such as inside macro arguments) where +% the original =\index= command could not. Thanks to Donald Arseneau +% $\langle${\tt asnd@erich.triumf.ca}$\rangle$ for pointing out this +% trick to me. (For more information on this trick, see Dirty Trick +% \#3 of the \TeX book, page 382). +% +% As defined, \@nearverbatim only works on macros. It would be nice +% if it could work with other tokens, but it's more important that it +% work only by expansion, which means we can't put in tests to see +% what the next token is. +% \begin{macrocode}{\@nearverbatim} +\def\@nearverbatim{\expandafter\@meaning\meaning} + +\def\@meaning#1>{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Now we define the =\index= macro itself. The following definitions +% are adapted from {\tt latex.tex} v2.09 $\langle$25 March +% 1992$\rangle$. +% +% \begin{macro}{\makeindex} +% First we redefine =\makeindex= to define the default index using +% =\newindex=. We use =\edef= to make sure that =\indexname= gets +% expanded here. Otherwise we'll get into an infinite loop later on +% when we try to redefine =\indexname= inside the =\theindex= +% environment. +% \begin{macrocode} +\edef\makeindex{% + \noexpand\newindex{default}{idx}{ind}{% + \expandafter\ifx\csname indexname\endcsname\relax + Index% + \else + \indexname + \fi + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@silentindex} +% \begin{macro}{\if@addtoindex} +% \begin{macro}{\if@proofmode} +% We need three new flags. The first, =\if@silentindex=, indicates +% whether the entry should be typeset in running text, as well as +% written out to the index; this is used to implement the =\index*= +% command. The second, =\if@addtoindex=, indicates whether entries +% should be written to the index; this is used to disable the =\index= +% command inside of page headings and tables of contents. The third, +% =\ifproofmode=, indicates whether index entries should be put in the +% margin of the page for proofing purposes. +% \begin{macrocode} +\newif\if@silentindex\@silentindextrue + +\newif\if@addtoindex\@addtoindextrue + +\newif\ifproofmode\proofmodefalse +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\index} +% \begin{macro}{\p@index} +% \begin{macro}{\x@index} +% =\index= will be made self-protecting (a la =\em=, etc.) so it can +% be used inside, for example, sectioning commands. Unfortunately, to +% really make =\index= robust, we have to redefine some of \LaTeX's +% commands for dealing with tables of contents and page headings. +% (See below.) $*$sigh$*$ +% \begin{macrocode} +\def\index{\protect\p@index} + +\def\p@index{% + \if@silentindex\@bsphack\fi + \@ifstar{\@silentindexfalse\@xindex}{\@silentindextrue\@xindex}% +} + +\def\@xindex{\@ifnextchar[{\@index}{\@index[default]}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@index} +% \begin{macro}{\@@index} +% \begin{macro}{\@wrindex} +% The following is much more complicated than it should have to be. +% First, note the check to see if =\index= is equal to =\@gobble=. +% This is so I don't have to redefine =\@outputpage=, which +% temporarily disables =\label=, =\index=, and =\glossary= by +% =\let='ing them equal to =\@gobble=. (For this reason, we have to +% be very careful to make sure that =\index= has expanded to +% =\p@index= before it gets to =\@outputpage=.) Second, note that if +% =\if@addtoindex= is false, we don't complain about undefined index +% types. This is because if your page headings, for example, are +% being typeset in all uppercase, you might end up with something like +% =\index[AUT]{...}= instead of =\index[aut]{...}=. +% \begin{macrocode} +\def\@index[#1]{% + \ifx\index\@gobble + \@addtoindexfalse + \fi + \def\@tempf{\@@index{#1}}% + \if@addtoindex + \@ifundefined{idx@#1}% + {% + \def\@tempf{% + \@latexerr{Index type `\string#1' undefined}% + \@ehc + \@silentindextrue + \@gobble + }% + }% + {}% + \fi + \@tempf +} + +\def\@@index#1#2{% + \if@addtoindex + \if@filesw\@wrindex{#1}{#2}\fi + \ifproofmode\@showidx{#2}\fi + \fi + \if@silentindex\expandafter\@esphack\else\@silentindextrue#2\fi +} + +\def\@wrindex#1#2{% + \begingroup + \let\thepage\relax + \def\@tempa{#2}% + \edef\@tempa{% + \write\@auxout{% + \string\@vwritefile{#1}{% + \string\indexentry{\@nearverbatim\@tempa}{\thepage}% + }% + }% + }% + \expandafter\endgroup\@tempa + \if@nobreak\ifvmode\nobreak\fi\fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\seename} +% \begin{macro}{\see} +% \begin{macro}{\printindex} +% \begin{macro}{\@printindex} +% The following are adapted from {\tt makeidx.sty}, v2.09 $\langle$21 +% Oct 91$\rangle$. +% \begin{macrocode} +\@ifundefined{seename}{\def\seename{see}}{} + +\def\see#1#2{{\em \seename\/} #1} + +\def\printindex{\@ifnextchar [{\@printindex}{\@printindex[default]}} + +\def\@printindex[#1]{% + \def\@indextype{#1}% + \@ifundefined{idx@#1}% + {\@latexerr{Index type `\string#1' undefined}\@ehc}% + {% + \edef\@tempa{\@nameuse{idx@#1}}% + \@input{\jobname.\expandafter\@second\@tempa\@nil}% + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@indexstar@} +% Now we set things up for =\shortindexing=. First, we define a +% one-token shorthand for =\index*=. This will be needed in the +% definition of =\idx@activehat=. +% \begin{macrocode} +\def\@indexstar@{\index*} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\idx@activehat} +% \begin{macro}{\idx@activebar} +% Next, we define the values that =^= and =_= will have when +% shortindexing is turned on. +% \begin{macrocode} +\def\idx@activehat{% + \relax + \ifmmode\expandafter\sp\else\expandafter\@indexstar@\fi +} + +\def\idx@activebar{ + \relax + \ifmmode\expandafter\sb\else\expandafter\index\fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\shortindexingon} +% \begin{macro}{\shortindexingoff} +% Now we define the =\shortindexingon= and =\shortindexinoff= commands +% to turn shortindexing on and off (surprise!). =\shortindexingon= +% saves the old definitions and =\catcode='s of =^= and =_= so they +% can later be restored by =\shortindexingoff=. Both of these make +% their changes local to any enclosing group, so they can be used as +% declarations to disable or enable shortindexing temporarily. In +% addition, {\tt shortindexingon} can also be used as an environment. +% +% This is potentially very confusing. My basic rationale (if it can +% be described as such) was that under normal circumstances, one would +% put =\shortindexingon= in the preamble of one's document, and never +% want to turn it off. =\shortindexingoff= is an attempt to make +% allowance for the contingency that someone might want to turn +% shortindexing off, either permanently or temporarily. +% \begin{macrocode} +\newif\if@shortindexing + +\begingroup + + \catcode`\^=\active + \catcode`\_=\active + + \gdef\shortindexingon{% + \@shortindexingtrue + \chardef\old@idxhatcode=\catcode`\^\relax + \chardef\old@idxbarcode=\catcode`\_\relax + \catcode`\^=\active + \catcode`\_=\active + \let\old@idxhat=^% + \let\old@idxbar=_% + \let^\idx@activehat + \let_\idx@activebar + } + + \gdef\shortindexingoff{% + \if@shortindexing + \@shortindexingfalse + \let^=\old@idxhat + \let_=\old@idxbar + \catcode`\^=\old@idxhatcode + \catcode`\_=\old@idxbarcode + \fi + } + +\endgroup +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Now we redefine =\theindex=. We try to make the minimal possible +% change, but if the user's style doesn't know about =\indexname=, we +% have no alternative but to redefine the entire environment and issue +% a warning. +% +% Thanks to Alan Jeffrey $\langle${\tt +% alanje@cogs.sussex.ac.uk}$\rangle$ for pointing out how the package +% should behave when =\indexname= is already defined and for the code +% to implement that case. +% \begin{macrocode} +\expandafter\ifx\csname indexname\endcsname\relax + + \typeout{index.sty> Uh oh! It looks like your document style + doesn't use \string\indexname.} + \typeout{index.sty> I'll have to redefine the + \string\theindex\space environment, using} + \typeout{index.sty> the `book' style default.} + + \def\indexname{Index} +% \end{macrocode} +% The following is adapted from {\tt book.sty} v2.09 $\langle$14 Jan +% 92$\rangle$. +% \begin{macrocode} + \def\theindex{% + \@restonecoltrue + \if@twocolumn\@restonecolfalse\fi + \columnseprule\z@ \columnsep 35\p@ + \edef\@indexname{% + \expandafter\the\@nameuse{idxtitle@\@indextype}% + }% + \twocolumn[\@makeschapterhead{\@indexname}]% + \@mkboth{\uppercase{\@indexname}}{\uppercase{\@indexname}}% + \thispagestyle{plain}% + \parindent\z@ + \parskip\z@ plus .3\p@\relax\let\item\@idxitem + } + +\else + + \@temptokena={% + \edef\indexname{\the\@nameuse{idxtitle@\@indextype}}% + } + \toks0=\expandafter{\theindex} + \edef\theindex{\the\@temptokena\the\toks0} + +\fi +% \end{macrocode} +% +% \begin{macro}{\@vwritefile} +% \begin{macro}{\x@vwritefile} +% \begin{macro}{\y@vwritefile} +% Now we define the =\@vwritefile= macro, which copies information +% from the =aux= file to one of the other auxiliary files. +% =\@vwritefile= performs essentially the same function as +% =\@writefile=, except that it does not expand it second argument +% (i.e., it writes it out verbatim (well, almost verbatim)). +% +% NOTE: There doesn't seem to be any reason why =\@writefile= *should* +% expand its second argument and in fact, we later redefine +% =\addcontentsline= to use =\@vwritefile= instead of =\@writefile=. +% A slight extension of this idea could be used to solve the problem +% of fragility in sectioning commands. +% +% =\@vwritefile=, like =\@writefile=, should be disabled when the +% =aux= file is being read by =\begin{document}=. To avoid having to +% redefine =\document=, we make the behaviour of =\@vwritefile= +% conditional on the current meaning of =\@writefile=. +% \begin{macrocode} +\def\@vwritefile{% + \ifx\@writefile\@gobbletwo + \expandafter\@gobbletwo + \else + \expandafter\x@vwritefile + \fi +} + +\def\x@vwritefile#1{% + \@ifundefined{tf@#1}{\@gobbletwo}{\y@vwritefile}{#1}% +} + +\long\def\y@vwritefile#1#2{% + \def\@tempa{#2}% + \immediate\write\csname tf@#1\endcsname{\@nearverbatim\@tempa}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Now we take some code from {\tt showidx.sty} and merge it into our +% new system. There are four reasons for redefining the commands here +% rather than just inputting {\tt showidx.sty} (or requiring the user +% to do so). First, {\tt showidx.sty} ends with a call to +% =\flushbottom=, which I want to avoid. Second, the instructions for +% successfully using {\tt showidx.sty} along with {\tt index.sty} +% would be somewhat tricky. This way, I can just tell users not to +% use {\tt showidx.sty} at all. Third, I need to make some +% alterations to =\@showidx= anyway. In particular, (a) I need to add +% the =\@sanitizeat= command so this works correctly with AMS-\LaTeX\ +% and (b) I want to add the =\indexproofstyle= command so the user can +% customize the size and font used for the index proofs. Finally, +% {\tt showidx.sty} has at least two annoying bugs in it. See the +% edit-history for version 2.01 for a description. +% +% \begin{macro}{\@indexbox} +% This code is adapted from {\tt showidx.sty}, v2.09 $\langle$16 Jun +% 1991$\rangle$. +% \begin{macrocode} +\newinsert\@indexbox + +\dimen\@indexbox=\maxdimen +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@sanitizeat} +% The definition of =\@sanitizeat= is slightly tricky, since we need +% =@= to be active when this macro is defined, but we also need it to +% be part of the control sequence name. +% \begin{macrocode} +\begingroup + \catcode`\@=\active + \expandafter\gdef\csname\string @sanitizeat\endcsname + {\def @{\char`\@}} +\endgroup +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\indexproofstyle} +% \begin{macro}{\@showidx} +% \begin{macro}{\@leftidx} +% \begin{macro}{\@rightidx} +% \begin{macro}{\@mkidx} +% \begin{macro}{\raggedbottom} +% \begin{macro}{\flushbottom} +% \begin{macro}{\@texttop} +% Note the cautious way of calling =\reset@font=, which is necessary +% for this to work correctly under both the Old and New Font Selection +% Schemes. +% \begin{macrocode} +\newtoks\indexproofstyle + +\indexproofstyle{\footnotesize\csname reset@font\endcsname\tt} + +\def\@showidx#1{% + \insert\@indexbox{% + \@sanitizeat + \the\indexproofstyle + \hsize\marginparwidth + \hangindent\marginparsep \parindent\z@ + \everypar{}\let\par\@@par \parfillskip\@flushglue + \lineskip\normallineskip + \baselineskip .8\normalbaselineskip\sloppy + \raggedright \leavevmode + \vrule \@height .7\normalbaselineskip \@width \z@\relax#1\relax + \vrule \@height\z@ \@depth.3\normalbaselineskip \@width\z@\relax + }% + \ifhmode\penalty\@M \hskip\z@skip\fi +} + +\def\@leftidx{\hskip-\marginparsep \hskip-\marginparwidth} + +\def\@rightidx{\hskip\columnwidth \hskip\marginparsep} + +\def\@mkidx{% + \vbox to \z@{% + \rlap{% + \if@twocolumn + \if@firstcolumn \@leftidx \else \@rightidx \fi + \else + \if@twoside + \ifodd\c@page \@rightidx \else \@leftidx \fi + \else + \@rightidx + \fi + \fi + \box\@indexbox + }% + \vss + }% +} + +\def\raggedbottom{% + \def\@textbottom{\vskip\z@ plus.0001fil}% + \let\@texttop\@mkidx +} + +\def\flushbottom{\let\@textbottom\relax \let\@texttop\@mkidx} + +\let\@texttop\@mkidx +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Now, this next bit really gets up my nose. The only way to make +% sure that the =\index= command gets handled correctly when used +% inside of sectioning commands is to redefine a bunch of \LaTeX's +% table of contents and running-heads macros. $*$blech$*$ Fragility +% rears its ugly head again. (Incidentally, it should be possible to +% use the =\@nearverbatim= trick to make arguments of sectioning +% commands robust. I'll have to explore this.) +% +% These are based on {\tt latex.tex} 2.09 $\langle$25 March +% 1992$\rangle$. +% +% \begin{macro}{\addcontentsline} +% We need to redefine =\addcontentsline= to keep it from expanding +% =\index= commands too far. In particular, we have removed =\index= +% from the list of macros that are set equal to =\@gobble= and we +% substitute =\@vwritefile= for =\@writefile=. This latter change +% also means that we can simplify the definition of =\protect= +% somewhat. +% \begin{macrocode} +\def\addcontentsline#1#2#3{% + \if@filesw + \begingroup + \let\label\@gobble + \let\glossary\@gobble + \def\protect##1{\string##1\space}% + \@temptokena{\thepage}% + \edef\@tempa{% + \write\@auxout{% + \string\@vwritefile{#1}{\string\contentsline{#2}{#3}% + {\the\@temptokena}}% + }% + }% + \@tempa + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@starttoc} +% We need to redefine =\@starttoc= to =\@addtoindexfalse= so that items +% don't get written to the index from within tables of contents. The +% only change here is the addition of =\@addtoindexfalse=. +% \begin{macrocode} +\def\@starttoc#1{% + \begingroup + \@addtoindexfalse + \makeatletter + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi + \global\@nobreakfalse + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\markboth} +% \begin{macro}{\markright} +% Finally, we have to redefine =\markboth= and =\markright= to keep +% them from disabling the expansion of =\index= while putting section +% heads into the =\mark=. Otherwise, we'd end up with ``=\index='' in +% the mark, which would cause problems when =\@outputpage= redefines +% =\index= to be equal to =\@gobble=. Instead, we want =\index= to +% expand to =\p@index= in the =\mark=, so we retain control over what +% happens in \@outputpage. +% +% This time, the only change is to remove =\index= from the list of +% macros that are =\let= equal to =\relax=. +% \begin{macrocode} +\def\markboth#1#2{% + \gdef\@themark{{#1}{#2}}% + \begingroup + \let\protect\noexpand + \let\label\relax + \let\glossary\relax + \mark{\@themark}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi +} + +\def\markright#1{% + \begingroup + \let\protect\noexpand + \let\label\relax + \let\glossary\relax + \expandafter\@markright\@themark{#1}% + \mark{\@themark}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi +} +% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Edit history} +% +% \begin{description} +% +% \item[v1.00 (4 Mar 1993)] +% initial version, posted to comp.text.tex. +% +% \item[v1.01 (4 Mar 1993)] +% added =\renewindex= command and checking to make sure index is (or +% is not) defined in =\newindex=, =\index= and =\printindex=. Also +% tightened up the code in various places and added check to make sure +% file is only loaded once. +% +% \item[v2.00 (24 Mar 1993)] +% added support for =\index*=, proofmode, =\shortindexingon= and +% =\shortindexingoff=. +% +% \item[v2.01 (24 Jun 1993)] +% Fixed 3 bugs. (1) If proofmode was turned on, then something like +% ``=\index{WORD}WORD='' would suppress the hyphenation of WORD. This +% was fixed by adding ``=\penalty\@M\hskip\z@skip='' to the end of +% =\@showidx=. (This is just the definition of =\allowhyphens= +% borrowed from german.sty, v2 $\langle$4 Nov 1988$\rangle$). (2) The +% =\hbox= in =\@mkidx= was being set at its natural width, which had a +% tendency to interfere with the width of the page. The =\hbox= is +% now replaced by =\rlap=. (3) If the title of an index (i.e., the +% fourth argument of =\newindex=) contained a particularly fragile +% command like~=\d=, havoc would ensue when =\theindex= tried to +% extract the title. Titles are now kept in token registers to +% prevent such unpleasantness. Bugs (2) and (3) were reported by +% Dominik Wujastyk $\langle$D.Wujastyk@ucl.ac.uk$\rangle$ on 24 June +% 1993. Note that bugs (1) and (2) are actually bugs in showidx.sty, +% v2.09 $\langle$16 Jun 1991$\rangle$. +% +% \item[v2.02 (25 Jun 1993)] +% Rewrote the code that implements the short indexing commands (=^= +% and =_=) to make index.sty compatible with other style files that +% need to make =^= and =_= active in some contexts. See the code for +% more details. +% +% \item[v2.03 (30 Jun 1993)] +% Once again rewrote the code that implements the short indexing +% commands. Dumped the shortindexing environment and rewrote the +% =\shortindexingon= and =\shortindxingoff= commands to save and +% restore the =\catcode='s and meanings of =^= and =_= in the safest +% possible (I hope) order. Also added the =\if@shortindexing= flag to +% keep =\shortindexingoff= from doing anything if it is called outside +% of the scope of a =\shortindexingon= command. (Question: Should +% =\shortindexingon= check that flag before doing anything?) +% +% \item[v2.04 (beta) (14 Jul 1993)] +% Added =\disableindex= command. Added =\newindex= and =\renewindex= +% to =\@preamblecmds=. Add =\if@newindex= flag to =\@newindex= to +% prevent =\renewindex= from re-allocating new =\write= and =\toks= +% registers. Rewrote using {\tt doc.sty} and {\tt DocStrip}. Also +% cleaned up the code somewhat. +% +% \item[v3.00 (15 Jul 1993)] +% Made further minor tweaks to code and internal documentation. +% Booted version number up to 3.00 and released on the world. +% +% \item[v3.01 (19 Jul 1993)] +% Fixed {\tt DocStrip} CheckSum. +% +% \item[v3.02 (15 Sep 1993)] +% Corrected spelling of =\@shortindexingfalse= in definition of +% =\shortindexingoff=. Thanks to Hendrik G. Seliger $\langle +% hank@Blimp.automat.uni-essen.de\rangle$ for this bug report. Also +% added redefinitions of =\@leftmark= and =\@rightmark= to fix a bug +% reported by Dominik Wujastyk $\langle$D.Wujastyk@ucl.ac.uk$\rangle$. +% +% \end{description} +% +% \DisableCrossrefs +% +% \section{The sample file} +% +% \begin{macrocode} +%%% This is a sample file for index.sty. To run the sample, +%%% execute the following commands: +%%% +%%% latex sample.tex +%%% makeindex sample +%%% makeindex -o sample.and sample.adx +%%% makeindex -o sample.nnd sample.ndx +%%% latex sample.tex +% +%\documentstyle[index]{book} +% +%\makeindex +%\newindex{aut}{adx}{and}{Name Index} +%\newindex{not}{ndx}{nnd}{List of Notation} +% +%\shortindexingon +% +%\proofmodetrue +% +%\def\aindex{\index*[aut]} +% +%\begin{document} +% +%\tableofcontents +% +%\newpage +% +%\chapter{Here is a ^[aut]{chapter} title} +% +%\section{Section header\index[aut]{section}} +% +%Here is some text.\index{subject} +% +%Here is \index[not]{notation}some more \index[not]{sin@$\sin$} +%text. +% +%Here is some ^{more} _[not]{notation} text. +% +%Here is yet more \aindex{text}. +% +%\section{Another Section header _[aut]{section2}} +% +%And here is some math: $x^1_b$. +% +%Here is an ^[aut]{index} entry \fbox{inside an +%\index[not]{min@$\min$}fbox} +% +%\fbox{Here is an ^[aut]{entry} in a box.} +% +%\printindex[not] +% +%\printindex[aut] +% +%\printindex +% +%\end{document} +% \end{macrocode} +% +% \PrintIndex +% \PrintChanges +% +% \Finale +% +% \end{document} +\endinput diff --git a/obsolete/macros/latex209/contrib/misc/nar.sty b/obsolete/macros/latex209/contrib/misc/nar.sty new file mode 100644 index 0000000000..59a0a10766 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/nar.sty @@ -0,0 +1,282 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Tom Schneider", +%%% version = "2.00", +%%% date = "10 Sep 1991", +%%% filename = "nar.sty", +%%% address = "National Cancer Institute +%%% Laboratory of Mathematical Biology +%%% Frederick, Maryland 21701-1013 +%%% USA", +%%% checksum = "64913 282 628 9329", +%%% email = "toms@ncifcrf.gov (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "nucleic acid research", +%%% supported = "yes", +%%% docstring = "This LaTeX style file is for the journal +%%% Nucleic Acid Research. It should be used +%%% as a major style, with +%%% \documentstyle[...]{nar}. +%%% +%%% The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility." +%%% } +%%% ==================================================================== + +% version = 2.00 of nar.sty 1990 April 30 +% +% from: +% article.sty 16-Mar-88 + +% +% All cases of 'newcounter' were commented out because these +% were `already used' by LaTeX. Why this is necessary, I don't know! +% + +\typeout{Document Style `nar' <16 Mar 88>.} +%\typeout{Document Style `article' <16 Mar 88>.} + + +\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}} +\@namedef{ds@12pt}{\def\@ptsize{2}} +\def\ds@twoside{\@twosidetrue \@mparswitchtrue} \def\ds@draft{\overfullrule +5pt} +\@options +\input art1\@ptsize.sty\relax + + +\def\labelenumi{\theenumi.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\theenumii)} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\theenumiii.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\theenumiv.} +\def\theenumiv{\Alph{enumiv}} +\def\p@enumiv{\p@enumiii\theenumiii} + +\def\labelitemi{$\bullet$} +\def\labelitemii{\bf --} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + +\def\verse{\let\\=\@centercr + \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} +\let\endverse\endlist +\def\quotation{\list{}{\listparindent 1.5em + \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} +\let\endquotation=\endlist +\def\quote{\list{}{\rightmargin\leftmargin}\item[]} +\let\endquote=\endlist + +\def\descriptionlabel#1{\hspace\labelsep \bf #1} +\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} +\let\enddescription\endlist + + +\def\theequation{\arabic{equation}} + + +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} + +\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt +\tabbingsep \labelsep + +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt \fboxrule = .4pt + +%\newcounter{part} +%\newcounter {section} +%\newcounter {subsection}[section] +%\newcounter {subsubsection}[subsection] +%\newcounter {paragraph}[subsubsection] +%\newcounter {subparagraph}[paragraph] + +\def\thepart{\Roman{part}} \def\thesection {\arabic{section}} +\def\thesubsection {\thesection.\arabic{subsection}} +\def\thesubsubsection {\thesubsection .\arabic{subsubsection}} +\def\theparagraph {\thesubsubsection.\arabic{paragraph}} +\def\thesubparagraph {\theparagraph.\arabic{subparagraph}} + +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +\def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}} + \@starttoc{toc}} +\def\l@part#1#2{\addpenalty{\@secpenalty} + \addvspace{2.25em plus 1pt} \begingroup + \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip +-\@pnumwidth + {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par + \nobreak \endgroup} +\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt} +\@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip #1\nobreak\hfil +\nobreak\hbox to\@pnumwidth{\hss #2}\par + \endgroup} + +\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} +\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} +\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} +\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}} +\def\listoffigures{\section*{List of Figures\@mkboth + {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\def\listoftables{\section*{List of Tables\@mkboth + {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}} +\let\l@table\l@figure + + +% This next line alters the cite from [] to () (worked the first time!!!) +\def\@cite#1#2{({#1\if@tempswa , #2\fi})} +% Modified from line 6317 in the DEFAULT DEFINITIONS of the file latex.tex, +% which is: LATEX VERSION 2.09 - RELEASE OF 27 October 1986 + +\def\thebibliography#1{\section*{References\@mkboth + {REFERENCES}{REFERENCES}}\list + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + +\newif\if@restonecol +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{Index}] + \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ + \parskip\z@ plus .3pt\relax\let\item\@idxitem} +\def\@idxitem{\par\hangindent 40pt} +\def\subitem{\par\hangindent 40pt \hspace*{20pt}} +\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}} +\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi} +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} + +\def\footnoterule{\kern-3\p@ + \hrule width .4\columnwidth + \kern 2.6\p@} + +\long\def\@makefntext#1{\parindent 1em\noindent + \hbox to 1.8em{\hss$^{\@thefnmark}$}#1} + + +\setcounter{topnumber}{2} +\def\topfraction{.7} +\setcounter{bottomnumber}{1} +\def\bottomfraction{.3} +\setcounter{totalnumber}{3} +\def\textfraction{.2} +\def\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\def\dbltopfraction{.7} +\def\dblfloatpagefraction{.5} + +\long\def\@makecaption#1#2{ + \vskip 10pt + \setbox\@tempboxa\hbox{#1: #2} + \ifdim \wd\@tempboxa >\hsize #1: #2\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} + + +%\newcounter{figure} +\def\thefigure{\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{Figure \thefigure} +\def\figure{\@float{figure}} +\let\endfigure\end@float +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} +%\newcounter{table} +\def\thetable{\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{Table \thetable} +\def\table{\@float{table}} +\let\endtable\end@float +\@namedef{table*}{\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} + + +\def\maketitle{\par + \begingroup + \def\thefootnote{\fnsymbol{footnote}} + \def\@makefnmark{\hbox + to 0pt{$^{\@thefnmark}$\hss}} + \if@twocolumn + \twocolumn[\@maketitle] + \else \newpage + \global\@topnum\z@ \@maketitle \fi\thispagestyle{plain}\@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} +\def\@maketitle{\newpage + \null + \vskip 2em \begin{center} + {\LARGE \@title \par} \vskip 1.5em {\large \lineskip .5em +\begin{tabular}[t]{c}\@author + \end{tabular}\par} + \vskip 1em {\large \@date} \end{center} + \par + \vskip 1.5em} +\def\abstract{\if@twocolumn +\section*{Abstract} +\else \small +\begin{center} +{\bf Abstract\vspace{-.5em}\vspace{0pt}} +\end{center} +\quotation +\fi} +\def\endabstract{\if@twocolumn\else\endquotation\fi} + +\mark{{}{}} + +\if@twoside \def\ps@headings{\let\@mkboth\markboth +\def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{\rm \thepage\hfil \sl +\leftmark}\def\@oddhead{\hbox{}\sl \rightmark \hfil +\rm\thepage}\def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth +>\z@ + \thesection\hskip 1em\relax \fi ##1}}{}}\def\subsectionmark##1{\markright +{\ifnum \c@secnumdepth >\@ne + \thesubsection\hskip 1em\relax \fi ##1}}} +\else \def\ps@headings{\let\@mkboth\markboth +\def\@oddfoot{}\def\@evenfoot{}\def\@oddhead{\hbox {}\sl \rightmark \hfil +\rm\thepage}\def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth +>\z@ + \thesection\hskip 1em\relax \fi ##1}}}} +\fi +\def\ps@myheadings{\let\@mkboth\@gobbletwo +\def\@oddhead{\hbox{}\sl\rightmark \hfil +\rm\thepage}\def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox +{}}\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}} + + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + +\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi diff --git a/obsolete/macros/latex209/contrib/misc/natsci.sty b/obsolete/macros/latex209/contrib/misc/natsci.sty new file mode 100644 index 0000000000..9114409fcd --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/natsci.sty @@ -0,0 +1,61 @@ +%NAME: natsci.sty +% natsci.sty 22 Feb 89 + +% Correctly formats citations in the NATSCI bibliography style. +% You also need the file natsci.bst to get the most out of this. + +% Use with LaTeX version 2.09 article document style +% and the natsci bibliography style: +% \documentstyle[natsci]{article} +% \begin{document} +% \bibliographystyle{natsci} + +% Copyright (c) 1987 by Stephen Gildea +% Permission to copy all or part of this work is granted, provided +% that the copies are not made or distributed for resale, and that +% the copyright notice and this notice are retained. +% +% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO +% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, +% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS +% FOR ANY PARTICULAR PURPOSE. + +% If you make any improvements, I'd like to hear about them. + +% Stephen Gildea +% MIT Earth Resources Lab +% Cambridge, Mass. 02139 +% mit-erl!gildea +% gildea@erl.mit.edu + +% This definition has to be changed slightly for different document +% styles such as report. +\def\thebibliography#1{\section*{References\@mkboth + {REFERENCES}{REFERENCES}}\list + %% default is no labels, for those not using \cite or BibTeX + {}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}\@bibsetup} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} + +% Don't put the citation in an hbox. +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{\@citesep}\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} + +% undent first line of a reference by using negative \itemindent. +\def\@bibsetup{\itemindent=-\leftmargin \itemsep=0pt} + +% Use a semicolon instead of a comma between multiple citations. +\def\@citesep{; } + +% round parens instead of square brackets +\def\@cite#1#2{({#1\if@tempswa , #2\fi})} + +% Labels should not be printed in References +\def\@biblabel#1{\hfill} diff --git a/obsolete/macros/latex209/contrib/misc/nofm.sty b/obsolete/macros/latex209/contrib/misc/nofm.sty new file mode 100644 index 0000000000..062c1b6738 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/nofm.sty @@ -0,0 +1,56 @@ +% nofm.sty +% +% This is a LaTeX document style option for "n of m" style pagination. +% It produces a centered header in the above style, and no footer; +% variations to put the information elsewhere, incorporate other +% information, or include the word "page" should be easy. This option +% works by recording the last page's page number in the .aux file +% (using the standard label/pageref mechanism). Therefore, you will +% have to run LaTeX a second time if the number of pages changes, in +% order to get correct output. +% +% -- Max Hailperin, 9/27/88 +% +% 25 Feb 91 - Don't clobber \pagestyle, redefine \ps@plain. +% Define \@lastpageref to eliminate warnings. +% clayton@thumper.bellcore.com + + +% Make the plain page style be the same as the empty page style to +% avoid having a footer-centered page number on the first page and on +% index pages (in article style, anyway). + +\let \ps@plain = \ps@empty + + +% The below is reproduced from the latex.tex file, version 2.09 of 27 October +% 1986, Copyright (C) 1985 by Leslie Lamport, with the exception of the +% marked change in the first line----vvvvvvvvvvvvvvvvvv. + +\def\enddocument{\@checkend{document}\label{@lastpage}\clearpage\begingroup +\if@filesw \immediate\closeout\@mainaux +\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}% +\def\bibcite{\@testdef b}\@tempswafalse \makeatletter\input \jobname.aux +\if@tempswa \@warning{Label(s) may have changed. Rerun to get +cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end} + + +% Define a special-purpose \pageref to avoid having a "Reference +% @lastpage undefined" warning on every page. + +\def\@lastpageref{% + \@ifundefined{r@@lastpage}{{\bf ??}}% + {\edef\@tempa{\@nameuse{r@@lastpage}}% + \expandafter\@cdr\@tempa\@nil\null + }% +} + + +% The page number is centered in the header. Change the definitions +% to make it something else. + +\def \@oddhead{\rm\hfil\thepage\ of \@lastpageref\hfil} +\def \@evenhead{\@oddhead} +\def \@oddfoot{} +\def \@evenfoot{\@oddfoot} + diff --git a/obsolete/macros/latex209/contrib/misc/preprint.sty b/obsolete/macros/latex209/contrib/misc/preprint.sty new file mode 100644 index 0000000000..f6da168d40 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/preprint.sty @@ -0,0 +1,149 @@ +% aps12.sty +% March 12, 1989 version +\global\twelvepointontrue + +\lineskip 2pt \normallineskip 2pt%<== were 1pt each +\def\baselinestretch{1}% + +\def\@normalsize{\@setsize\normalsize{16pt%14.5pt +}\xiipt\@xiipt +\abovedisplayskip 12pt plus3pt minus7pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt +minus3pt} +\def\small{\@setsize\small{13.6pt}\xipt\@xipt +\abovedisplayskip 11pt plus3pt minus6pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt +minus3pt +\def\@listi{\parsep 4.5pt plus 2pt minus 1pt + \itemsep \parsep + \topsep 9pt plus 3pt minus 5pt}} +\def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt +\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt +\def\@listi{\topsep 6pt plus 2pt minus 2pt\parsep 3pt plus 2pt minus 1pt +\itemsep \parsep}} +\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt} +\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt} +\def\large{\@setsize\large{18pt}\xivpt\@xivpt} +\def\Large{\@setsize\Large{22pt}\xviipt\@xviipt} +\def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt} +\def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt} +\let\Huge=\huge +\normalsize + + + +\if@twoside \oddsidemargin 21pt \evensidemargin 59pt \marginparwidth 85pt +\else \oddsidemargin 39.5pt \evensidemargin 39.5pt + \marginparwidth 68pt +\fi +\marginparsep 10pt + \topmargin 27pt \headheight 12pt \headsep 25pt \footheight 12pt \footskip +30pt + +\textheight 536.5pt \textwidth 390pt \columnsep 10pt \columnseprule 0pt + +\footnotesep 8.4pt +\skip\footins 10.8pt plus 4pt minus 2pt +\floatsep 14pt plus 2pt minus 4pt \textfloatsep 20pt plus 2pt minus 4pt +\intextsep 14pt plus 4pt minus 4pt \@maxsep 20pt \dblfloatsep 14pt plus 2pt +minus 4pt \dbltextfloatsep 20pt plus 2pt minus 4pt \@dblmaxsep 20pt +\@fptop 0pt plus 1fil \@fpsep 10pt plus 2fil \@fpbot 0pt plus 1fil +\@dblfptop 0pt plus 1fil \@dblfpsep 10pt plus 2fil \@dblfpbot 0pt plus 1fil +\marginparpush 7pt + +\parskip 0pt plus 1pt \parindent 1.5em \topsep 10pt plus 4pt minus 6pt +\partopsep 3pt plus 2pt minus 2pt \itemsep 5pt plus 2.5pt minus 1pt +\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 +\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty +-\@lowpenalty + +\def\part{\cleardoublepage \thispagestyle{plain} \if@twocolumn \onecolumn +\@tempswatrue \else \@tempswafalse \fi \hbox{}\vfil \bgroup \centering +\secdef\@part\@spart} +\def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax \refstepcounter{part} +\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else +\addcontentsline{toc}{part}{#1}\fi \markboth{}{} + \ifnum \c@secnumdepth >-2\relax \huge\bf Part \thepart \par \vskip 20pt \fi +\Huge \bf #1\@endpart} +\def\@endpart{\par\egroup \vfil\newpage \if@twoside \hbox{} +\thispagestyle{empty} + \newpage + \fi \if@tempswa \twocolumn \fi} +\def\@spart#1{\Huge \bf #1\@endpart} + +\def\@makechapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright + \ifnum \c@secnumdepth >\m@ne \huge\bf \@chapapp{} \thechapter \par + \vskip 20pt \fi \Huge \bf #1\par + \nobreak \vskip 40pt } } + +\def\@makeschapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright + \Huge \bf #1\par + \nobreak \vskip 40pt } } + +\def\chapter{\clearpage \thispagestyle{plain} \global\@topnum\z@ +\@afterindentfalse \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter} + \typeout{\@chapapp\space\thechapter.} + \addcontentsline{toc}{chapter}{\protect + \numberline{\thechapter}#1}\else + \addcontentsline{toc}{chapter}{#1}\fi + \chaptermark{#1} + \addtocontents{lof}{\protect\addvspace{10pt}} +\addtocontents{lot}{\protect\addvspace{10pt}} \if@twocolumn +\@topnewpage[\@makechapterhead{#2}] + \else \@makechapterhead{#2} + \@afterheading \fi} +\def\@schapter#1{\if@twocolumn \@topnewpage[\@makeschapterhead{#1}] + \else \@makeschapterhead{#1} + \@afterheading\fi} + +\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus + -.2ex}{2.3ex plus .2ex}{\Large\bf}} +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\large\bf}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus + -1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\bf}} +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}} +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus + .2ex}{-1em}{\normalsize\bf}} + +\def\chaptermark#1{} + +\setcounter{secnumdepth}{2} + +\def\appendix{\par + \setcounter{chapter}{0} + \setcounter{section}{0} + \def\@chapapp{Appendix} + \def\thechapter{\Alph{chapter}}} + + +\leftmargini 2.5em +\leftmarginii 2.2em \leftmarginiii 1.87em \leftmarginiv 1.7em \leftmarginv 1em +\leftmarginvi 1em +\leftmargin\leftmargini +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\labelsep .5em +\parsep 5pt plus 2.5pt minus 1pt +\def\@listi{\leftmargin\leftmargini} +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep 5pt plus 2.5pt minus 1pt + \parsep 2.5pt plus 1pt minus 1pt + \itemsep \parsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep 2.5pt plus 1pt minus 1pt + \parsep \z@ \partopsep 1pt plus 0pt minus 1pt + \itemsep \topsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv\advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} + diff --git a/obsolete/macros/latex209/contrib/misc/refman.sty b/obsolete/macros/latex209/contrib/misc/refman.sty new file mode 100644 index 0000000000..02e177cdc7 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/refman.sty @@ -0,0 +1,502 @@ +% This is REFMAN.STY by H.Partl, TU Wien, Version 1.1 of 4 Oct 1989. +% Revised 30.08.93 +% -------------------------------------------------------------------------- +% Modifikations: +% 30.08.93 by Wolfgang Kaspar; kaspar@uni-muenster.de +% The correction of a LaTeX bug that occurs when marginpars and footnotes +% appear on the same page (by Chris Rowley, TUGboat 9/2 Aug.88) is +% no longer needed. +% -------------------------------------------------------------------------- +% Document Style Option to `article' and `report', +% for technical reference manuals, users' guides and articles, +% with a design similar to that of the PostScript Reference Manual: +% All pages have a wide left margin and no right margin, and section +% headings and other `guiding' material appear in that margin. +% Supports one-column only. REFMAN should be specified as the LAST +% optional argument of the \documentstyle command, e.g. +% \documentstyle[11pt,twoside,german,refman]{article} +% +% It CAN be used with twoside, fleqn and others. +% It can NOT be used with twocolumn, titlepage, fullpage, a4, a4wide +% and others. +% +% +-----------------------------------------------------------------+ +% ! This style file has been designed for reference manuals, users' ! +% ! guides, short instants, and related papers at the EDP centre of ! +% ! the Technical University of Vienna. It must be re-designed and ! +% ! changed before application at any other institution or for any ! +% ! other purpose. ! +% +-----------------------------------------------------------------+ +% Copyright H.Partl TU Wien 1988. + +% Process this file only once: +\@ifundefined{leftmarginwidth}{}{\endinput} + +\typeout{ TU Wien Refman Style - Version 1.1 as of 4 Oct 1989, revised 30.08.93 } + +\newdimen\leftmarginwidth % value of odd & evensidemargin, set below. +\newdimen\fullwidth % = \textwidth + \leftmarginwidth +\newdimen\emptyheadtopmargin % used by some pagestyles +\newdimen\emptyfoottopmargin % dto. + +% \longhrule and \longthickhrule are defined for \hrule's of width \fullwidth + +\def\longhrule{\par\hbox to \linewidth{\hss + \vrule width \fullwidth height 0.4pt depth 0pt}\par} +\def\longthickhrule{\par\hbox to \linewidth{\hss + \vrule width \fullwidth height 1.0pt depth 0pt}\par} + +% Re-definitions of the \section commands to use \fullwidth and smaller +% vertical skips and smaller fonts. +% (Note that the afterskip must be >zero, not =zero) + +\def\secshape{\leftskip=-\leftmarginwidth % use \fullwidth + \rightskip=\@flushglue % raggedright + \hyphenpenalty=2000} % no hyphenation + +\def\section{\@startsection {section}{1}{\z@}{-2ex plus -1ex minus + -.2ex}{0.5ex plus .2ex}{\secshape\large\bf}} +\def\subsection{\@startsection{subsection}{2}{\z@}{-1.5ex plus -.5ex minus + -.2ex}{0.5ex plus .2ex}{\secshape\normalsize\bf}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex plus +-.5ex minus -.2ex}{0.5ex plus .2ex}{\secshape\normalsize\rm}} +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{2ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}} +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{2ex plus 1ex minus + .2ex}{-1em}{\normalsize\bf}} + +% For ARTICLE: +% Re-definitions of \maketitle and \part (\clearpage, \fullwidth, \hrules). +% This \maketitle prints the \title only. +% A \makeauthor command is defined to print the \author (to be used either +% just after \maketitle or at the end of the article, without \thanks). + +\def\@redefinemaketitle{ + +\def\maketitle{\par + \begingroup + \if@twocolumn + \twocolumn[\@maketitle] + \else \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle \fi\thispagestyle{plain} + \endgroup + \setcounter{footnote}{0}} + +\def\@maketitle{\clearpage + \longthickhrule\bigskip + {\secshape\parskip\z@\parindent\z@ \Large\bf \@title\par} + \bigskip\longthickhrule\bigskip} + +\def\makeauthor{\par\nopagebreak\vskip 2ex plus 1ex minus 1ex + \begin{flushright}\normalsize\sl \@author \end{flushright}\par + \vskip 2ex plus 1ex minus 1ex\relax } + +\def\and{\\*} +\def\thanks{\footnote} + +% In \part, only \thepart (the Roman part number) is printed, without +% the word `Part' in front of it, and \markboth is replaced by \@mkboth +% to preserve the marks with the myheadings and myfootings page styles. + +\def\part{\par \clearpage \thispagestyle{plain} + \@afterindentfalse \secdef\@part\@spart} + +\def\@part[##1]##2{\ifnum \c@secnumdepth >\m@ne \refstepcounter{part} + \addcontentsline{toc}{part}{\thepart \hspace{1em}##1}\else + \addcontentsline{toc}{part}{##1}\fi + \longhrule\medskip + {\secshape\parskip\z@\parindent\z@ \Large\rm + \ifnum \c@secnumdepth >\m@ne \thepart.\quad \fi ##2\par} + \medskip\longhrule\bigskip \@mkboth{}{}\@afterheading } + +\def\@spart##1{\longhrule\medskip + {\secshape\parskip\z@\parindent\z@ \Large\rm ##1\par} + \medskip\longhrule\bigskip \@afterheading } + +} % end of \@redefinemaketitle + +% For REPORT: +% Re-definition of \chapter (\clearpage, \fullwidth, \hrules). +% However, \maketitle and \part remain unchanged. + +\def\@redefinechapter{ + +\def\@makechapterhead##1{\longthickhrule\bigskip + {\secshape\parskip\z@\parindent\z@ \Large\bf + \ifnum \c@secnumdepth >\m@ne \@chapapp{} \thechapter.\quad \fi + ##1\par} + \bigskip\longthickhrule\bigskip} + +\def\@makeschapterhead##1{\longthickhrule\bigskip + {\secshape\parskip\z@\parindent\z@ \Large\bf ##1\par} + \bigskip\longthickhrule\bigskip} + +% No word `Chapter'/`Kapitel' before the chapter number, but the word +% `Appendix'/`Anhang' will still be inserted after \appendix ! +\def\@chapapp{} + +% Note that \chapter itself is defined like this: +% \def\chapter{\clearpage \thispagestyle{plain} \global\@topnum\z@ +% \@afterindentfalse \secdef\@chapter\@schapter} +% This definition and those of \@chapter and \@schapter remain unchanged. + +} % end of \@redefinechapter + +% Now, do either the first one or the second one, depending on the main +% document style (article= \chapter undefined, or report= \chapter defined). +% (Note that \par must not appear inside \@ifundefined, therefore this +% indirect approach is taken.) + +\@ifundefined{chapter}{\@redefinemaketitle}{\@redefinechapter} + +% Re-defintion of the \marginpar command to use always the left margin +% (never the right margin). Be careful that Marginpars do not come to +% near to each other! + +\def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox + \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne +%- \if@twocolumn +%- \if@firstcolumn \@tempcnta\m@ne \fi +%- \else +%- \if@mparswitch +%- \ifodd\c@page \else\@tempcnta\m@ne \fi +%- \fi +%- \if@reversemargin \@tempcnta -\@tempcnta \fi +%- \fi + \@tempcnta\m@ne % always to left margin <--- + \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi + \@tempdima\@mparbottom \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox \ifdim\@tempdima >\z@ + \@warning{Marginpar on page \thepage\space moved}\else\@tempdima\z@ \fi + \global\@mparbottom\@pageht \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\ht\@marbox\z@ \global\dp\@marbox\z@ + \vskip -\@pagedp \vskip\@tempdima\nointerlineskip + \hbox to\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\marginparsep + \else \hskip -\marginparsep \hskip -\marginparwidth \fi + \box\@marbox \hss} + \vskip -\@tempdima + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}} + +% Special Marginpars: +% \marginlabel{X} puts X into a flushright Marginpar. +% To be used like description-items or short +% \subsubsection* headings. +% \attention puts ! --> to the left of the text. +% To mark an important piece of text. +% \seealso{X} puts a small ---> X to the very left. +% To mark a reference within the text. +% These three commands start with an empty \mbox, i.e. they can be used +% before the first word of a paragraph and still have the desired +% effect, namely that the marginal stuff appears next to the first +% line of this paragraph, not at the last line of the previous one. +% They end with \ignorespaces, i.e. blanks (spaces) after the argument's +% } are allowed and do NOT appear in the printed text. +% Like all \marginpar's, they cannot be used in math mode or inside boxes. + +\def\marginlabel#1{\mbox{}\marginpar{\raggedleft #1}\ignorespaces} +\def\attention{\mbox{}\marginpar{\raggedleft \large\bf ! $\rightarrow$}} +\def\seealso#1{\mbox{}\marginpar{\small $\rightarrow$ #1}\ignorespaces} + +% The description environment is redefined such that the item labels use +% the whole left margin (and are in roman, right bound, with colon). +% \labelwidth = \leftmarginwidth + previous\@totalleftmargin + +% + new\leftmargin - \labelsep +% \descriptioncolontrue and -false can be used to select whether a colon +% is added to the item label. +% \descriptionlefttrue and -false can be used to select whether the item labels +% are set left bound or right bound. + +\newif\ifdescriptioncolon \descriptioncolontrue +\newif\ifdescriptionleft \descriptionleftfalse +\def\descriptionlabel#1{\ifdescriptionleft\else \hfil \fi + \rm #1\ifdescriptioncolon :\fi + \ifdescriptionleft \hfil \fi} +\def\description{\list{}{\labelsep=\marginparsep + \labelwidth=\leftmarginwidth \advance\labelwidth by \@totalleftmargin + \advance\labelwidth by \leftmargin \advance\labelwidth by -\labelsep + \let\makelabel=\descriptionlabel}} +\let\enddescription=\endlist + +% The maxipage environment is a minipage that uses the \fullwidth, +% with \hrules above and below. Marginpars are not allowed. +% To be used for wide tables, long math equations, and the like. +% It cannot be split across pages. +% It can be used in floats, e.g. like +% \begin{table}\begin{maxipage} +% ... a wide table ... \caption{the caption} +% \end{maxipage}\end{table} +% \maxipageruletrue and -false can be used to select whether \hrule's are +% added to the minpage. + +\newif\ifmaxipagerule \maxipageruletrue +\def\maxipage{\par % (here a \vskip\parskip will happen by the final \par) + \mbox{}\kern-\leftmarginwidth \kern-\@totalleftmargin + \begin{minipage}{\fullwidth} + \medskip \ifmaxipagerule \hrule\medskip \fi + \parskip = 0.5\baselineskip % <--- same as outside minipage + \def\marginpar{\typeout{Marginpar not allowed within Maxipage.}}} +\def\endmaxipage{\par \vskip\parskip + \medskip \ifmaxipagerule \hrule\medskip \fi + \end{minipage}\par} + +% The fullpage environment changes the page layout such that normal text +% and all environments use the \fullwidth. Marginpars are not allowed. +% Both \begin{fullpage} and \end{fullpage} start a new page before switching +% to the other layout. +% To be used for one or several special pages where the full line length is +% needed. + +\def\fullpage{\clearpage \leftmarginwidth\z@ \textwidth=\fullwidth + \oddsidemargin=\z@ \evensidemargin\z@ + \hsize=\fullwidth \linewidth=\fullwidth \columnwidth=\fullwidth + \def\marginpar{\typeout{Marginpar not allowed within Fullpage.}}} +\def\endfullpage{\clearpage} + +% The example environment is a verse enironment with \tt font and with +% trying to avoid page breaks at the \begin{example}. Lines in the example +% should be separated by \\*. + +\def\example{\@beginparpenalty=\@highpenalty \verse \tt } +\let\endexample=\endverse + +% Page Styles: +% The pagestyles plain, headings and myheadings are redefined and new +% pagestyles footings and myfootings are defined, which all use the +% \fullwidth, with \thepage on the outer side of the (odd/even) page +% and some with a \hrule below the head line or above the foot line. +% My favourite is +% \pagestyle{myfootings} +% \markboth{the title of the paper}{the title of the paper} +% (Note that the \markboth is not destroyed by the new \part command.) + +% The pagestyles headings and myheadings set \topmargin to \emptyfoottopmargin. +% The pagestyles footings and myfootings set \topmargin to \emptyheadtopmargin. +% The pagestyles empty and plain do not change \topmargin. +% Therefore, within one document, +% - you may switch between headings, myheadings, empty, and plain, +% - or you may switch between footings, myfootings, empty, and plain, +% - but you should not mix (my)headings with (my)footings pages. + +% As a compromise between article (section+subsection) and report +% (chapter+section), \sectionmark (without uppercase) will be put on +% both side pages in the headings and footings style (neither chapter +% nor subsection). + +\def\ps@plain{\let\@mkboth\@gobbletwo + \def\@oddhead{}\def\@evenhead{}% + \def\@oddfoot{\rm\hfil\thepage}% + \def\@evenfoot{\hss \hbox to \fullwidth{\normalsize\rm\thepage\hfil}}} + +\if@twoside % If two-sided printing. +\def\ps@headings{\let\@mkboth\markboth \topmargin\emptyfoottopmargin +\def\@oddfoot{}\def\@evenfoot{}% No feet. +\def\@evenhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth + \hbox to \fullwidth{\normalsize\rm\thepage \hfil + \small\sl \leftmark}% + \vskip 3pt \hrule}}% +\def\@oddhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth + \hbox to \fullwidth{\small\sl \rightmark \hfil + \normalsize\rm\thepage}% + \vskip 3pt \hrule}}% +\def\sectionmark##1{\markboth + {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}% + {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}}% +\def\subsectionmark##1{}} +\else % If one-sided printing. +\def\ps@headings{\let\@mkboth\markboth \topmargin\emptyfoottopmargin +\def\@oddfoot{}\def\@evenfoot{}% No feet. +\def\@oddhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth + \hbox to \fullwidth{\small\sl \rightmark \hfil + \normalsize\rm\thepage}% + \vskip 3pt \hrule}}% +\def\sectionmark##1{\markright {{\ifnum \c@secnumdepth >\z@ + \thesection\hskip 1em\relax \fi ##1}}}} +\fi + +\if@twoside % If two-sided printing. +\def\ps@footings{\let\@mkboth\markboth \topmargin\emptyheadtopmargin +\def\@oddhead{}\def\@evenhead{}% No heads. +\def\@evenfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt + \hbox to \fullwidth{\normalsize\rm\thepage \hfil + \small\sl\leftmark}}}% +\def\@oddfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt + \hbox to \fullwidth{\small\sl\rightmark \hfil + \normalsize\rm\thepage}}}% +\def\sectionmark##1{\markboth + {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}% + {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}}% +\def\subsectionmark##1{}} +\else % If one-sided printing. +\def\ps@footings{\let\@mkboth\markboth \topmargin\emptyheadtopmargin +\def\@oddhead{}\def\@evenhead{}% No heads. +\def\@oddfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt + \hbox to \fullwidth{\small\sl\rightmark \hfil + \normalsize\rm\thepage}}}% +\def\sectionmark##1{\markright {{\ifnum \c@secnumdepth >\z@ + \thesection\hskip 1em\relax \fi ##1}}}} +\fi + +\def\ps@myheadings{\let\@mkboth\@gobbletwo \topmargin\emptyfoottopmargin +\def\@evenhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth + \hbox to \fullwidth{\normalsize\rm\thepage \hfil + \small\sl\leftmark}% + \vskip 3pt \hrule}}% +\def\@oddhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth + \hbox to \fullwidth{\small\sl\rightmark \hfil + \normalsize\rm\thepage}% + \vskip 3pt \hrule}}% +\def\@oddfoot{}\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}} + +\def\ps@myfootings{\let\@mkboth\@gobbletwo \topmargin\emptyheadtopmargin +\def\@evenfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt + \hbox to \fullwidth{\normalsize\rm\thepage \hfil + \small\sl\leftmark}}}% +\def\@oddfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt + \hbox to \fullwidth{\small\sl\rightmark \hfil + \normalsize\rm\thepage}}}% +\def\@oddhead{}\def\@evenhead{}\def\sectionmark##1{}\def\subsectionmark##1{}} + +% The \condbreak{length} command is defined for conditional pagebreaks: +% If less then length vertical space remains on the current page, then +% a new page is started. This means that the following stuff remains +% together (either on the current or the next page). + +\def\condbreak#1{\vskip 0pt plus #1\pagebreak[3]\vskip 0pt plus -#1\relax} + +% The \noparskip command is defined to take away the vertical Parskip, +% just like \noindent takes away the horizontal Parindent. + +\def\noparskip{\vskip-\parskip} + +% Correction of a LaTeX bug that occurs when marginpars and footnotes +% appear on the same page (by Chris Rowley, TUGboat 9/2 Aug.88) +% +% no longer needed. 30.08.93 kaspar@uni-muenster.de + +%\def\@specialoutput{\ifnum\outputpenalty > -\@Mii +% \@doclearpage +% \else +% \ifnum \outputpenalty <-\@Miii +% \ifnum\outputpenalty<-\@MM \deadcycles\z@\fi +% \global\setbox\@holdpg\vbox{\unvbox\@cclv} +% \else \setbox\@tempboxa\box\@cclv +% \@pagedp\dp\@holdpg \@pageht\ht\@holdpg +% \unvbox\@holdpg +%%- \ifvoid\footins\else\advance\@pageht\ht\footins +%%- \advance\@pageht\skip\footins \advance\@pagedp\dp\footins +%%- \insert\footins{\unvbox\footins}\fi +% \@next\@currbox\@currlist{\ifnum\count\@currbox >\z@ +%% moved ---> +% \ifvoid\footins\else\advance\@pageht\ht\footins +% \advance\@pageht\skip\footins \advance\@pagedp\dp\footins +% \insert\footins{\unvbox\footins}\fi +% \@addtocurcol\else +%% moved and changed ---> +% \ifvoid\footins\else +% \insert\footins{\unvbox\footins}\fi +% \@addmarginpar\fi}\@latexbug +% \ifnum \outputpenalty <\z@ \penalty \z@ \fi +% \fi\fi} + + +% Setting of the Layout Parameters and Dimensions: +% ------------------------------------------------ + +% Switch to \onecolumn and disable \twocolumn. +\onecolumn +\let\onecolumn=\relax +\def\twocolumn{\typeout{Twocolumn not allowed with Refman.}} + +% Horizontal Layout: +% \fullwidth = \leftmarginwidth + \textwidth +% \odd&evensidemargin = \leftmarginwidth - 3mm +% (DIN-A4 paper is about 6mm narrower than 8.5 Inch.) +% \marginparwidth = \leftmarginwidth - \marginparsep + +% \textwidth, \columnwidth, \linewidth remain unchanged from art10...rep12 +\fullwidth=6.5in +\leftmarginwidth=\fullwidth \advance\leftmarginwidth by -\textwidth +\oddsidemargin=\leftmarginwidth \advance\oddsidemargin by -3mm +\evensidemargin=\oddsidemargin +\marginparwidth=\leftmarginwidth \advance\marginparwidth by -\marginparsep + +% The horizontal layout can be changed in the preamble with the command +% \setleftmarginwidth{length} +% This sets \leftmarginwidth=length and \textwidth=\fullwidth- . +% Example: \setleftmarginwidth{2.5in} ---> 2.5 : 4 = 4 : 6.5 + +\newdimen\templength@ +\def\setleftmarginwidth#1{\templength@=#1\relax + \leftmarginwidth=\templength@ + \textwidth=\fullwidth \advance\textwidth by -\templength@ + \oddsidemargin=\leftmarginwidth \advance\oddsidemargin by -3mm + \evensidemargin=\oddsidemargin + \marginparwidth=\leftmarginwidth \advance\marginparwidth by -\marginparsep + \hsize=\textwidth \linewidth=\textwidth \columnwidth=\textwidth } + +% Vertical Layout (for DIN-A4 paper): +% The Top Margin is made smaller by 4.5 baselineskips, +% the Head and Foot separations are increased by 0.5 baselineskips each, +% the Textheight is increased by 10 lines. +% On DIN-A4 paper (which is about 2 lines higher than 11 Inch), this +% makes the Bootom Margin equal to the Top Margin. +% \raggedbottom is switched on (even for twoside). +% With some pagestyles, the page contents are shifted up or down a bit, +% by using \emptyheadtopmargin or \emptyfoottopmargin, respectively. + +\advance\topmargin by -4.5\baselineskip +\advance\headsep by 0.5\baselineskip +\advance\footskip by 0.5\baselineskip +\advance\textheight by 10\baselineskip +\@colht=\textheight \@colroom=\textheight +\emptyheadtopmargin=\topmargin \advance\emptyheadtopmargin by -1\baselineskip +\emptyfoottopmargin=\topmargin \advance\emptyfoottopmargin by 1\baselineskip +\raggedbottom + +% Zero minimal vertical separation between Marginpars (because we use a lot +% of them, and all must find room above each other). + +\marginparpush=\z@ + +% Paragraph Layout: +% Zero Parindent and non-zero Parskip. The stretchable glue in \parskip +% helps LaTeX in finding the best place for page breaks. + +\parskip=0.5\baselineskip \advance\parskip by 0pt plus 2pt +\parindent=\z@ + +% Redefinition of the vertical spacing in the list environments +% to use the same as \parskip in all relevant places (normalsize only): +% \parsep = \parskip +% \itemsep = \z@ % add nothing to \parskip between items +% \topsep = \z@ % add nothing to \parskip before first item + +\def\@listI{\leftmargin\leftmargini + \topsep\z@ \parsep\parskip \itemsep\z@} +\let\@listi\@listI +\@listi + +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep\z@ \parsep\parskip \itemsep\z@} + +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep\z@ \parsep\parskip \itemsep\z@} + +% Note that listiv, listv and listvi don't change vertical parameters. + + +% Switch on the new version of the plain pagestyle. +\pagestyle{plain} + +% This is the end of REFMAN.STY. +\endinput diff --git a/obsolete/macros/latex209/contrib/misc/shadethm.sty b/obsolete/macros/latex209/contrib/misc/shadethm.sty new file mode 100644 index 0000000000..a974cb7e21 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/shadethm.sty @@ -0,0 +1,187 @@ +\typeout{ LaTeX 2.09 substyle: ShadeThm <94/07/11 jh>} +% ShadeThm.sty +% Shaded theorem environments in LaTeX 2.09 with \newshadetheorem instead of +% \newtheorem. Requires PostScript. +% +% USAGE +% Used as a LaTeX substyle +% \documentstyle[...,shadethm,...]{...} +% it allows declarations like +% \newshadetheorem{theorem}{Theorem} +% so that +% \begin{theorem} $e=mc^2$ \end{theorem} +% will produce the usual theorem text, only placed in a shaded box. +% +% REMARKS +% (1) You can of course have non-shaded environments, also. The +% \newtheorem command still works (but see Remark (2)). +% (2) Numbering within: +% LaTeX allows you to say \newtheorem{guess}{Conjecture}[section] so +% that at each new section the conjectures are numbered starting again +% at 1. So does \newshadetheorem. +% LaTeX also allows you to say \newtheorem{remark}[guess]{Remark} so +% that remark and guess use the same counter: +% \begin{guess} +% Dinosaurs are small at one end, large in the middle, +% and very small again at the other end. +% \end{guess} +% \begin{remark} +% This conjecture is due to me. +% \end{remark} +% gets printed as +% Conjecture 1 Dinosaurs are small at one end, large in the middle, and +% very small again at the other end. +% Remark 2 This conjecture is due to me. +% The \newshadetheorem allows the same thing, but with one change. If you want +% to refer to a theorem environment `xxx' that was declared with +% \newshadetheorem{xxx}{Xxx} then you must call it `shadexxx': e.g., +% \newshadetheorem{thm}{Theorem} +% \newshadetheorem{note}[shadethm]{Note} +% (references to non-shaded theorem environments, of course, go as usual). +% (3) Uses fancybox.sty and pstricks.sty. They are available, for instance, +% in the TeX-archive at pip.shsu.edu. In particular, they require PostScript +% for the shade. If you want to figure out a way to, for example, use PiCTeX +% to shade, then that could work also. (I use dvips; PSTricks may work with +% other PS drivers but it definitely works with dvips.) +% +% INSTALLATION +% Put this where your TeX looks for .sty files. In emTeX that is probably +% c:\emtex\texinput\shadethm.sty. +% There are three parameters to set the default for (try it as it is, first). +% (i) thmshade the darkness of the shading +% (ii) shadeparindent the paragraph indentation inside the shaded text +% (iii) frameboxsep the length by which the shade box surrounds the text +% Find them by using your editor to find `PARAMETER'. +% If you want this file to input fancybox and pstricks (that is, you don't +% want to ask for them yourself) uncomment those lines. +% +% BUGS +% 1) Page breaks are a problem since it sets the theorem before it shades it. +% 2) I haven't tested it with the new LaTeX. +% +% HISTORY +% 94VII11 jim hefferon hefferon@smcvax.smcvt.edu. First written (after lots +% of sporadic tries, over months; I couldn't get any of the extant shading +% macros to work with theorems) from a hint in TvZ's Fancybox writeup. +% It's all so easy once you know how. +% +%\input{fancybox.sty} +%\input{pstricks.sty} + +% PARAMETER: thmshade +% Set the default darkness for the shading. +% I find .97 looks good out of my printer, but a darker shade like .92 is +% needed to make it copy well. (PostScript sets 0 as black and 1 as white.) +% This can be reset in each document, say with \newgray{thmshade}{.92} +% (or with \newrgbcolor{thmshade}{num1 num2 num3} for color, I think). +\newgray{thmshade}{.97} + +% PARAMETER: saveparindent +% Normally, in theorems, paragraphs retain their usual indent. But inside +% a minipage they lose their indent, so I need to restore it once I'm inside +% the minipage that is to be shaded. This can be changed inside of each +% document, say with \resetlength{\saveparindent}{0pt}. +\newlength{\saveparindent} %to have paragraphs default to their +\setlength{\saveparindent}{\parindent} %usual indent inside the minipage + +% PARAMETER: frameboxsep +% I think the shading looks best if the text doesn't run all the way to the +% exact edge of the gray. That is, I like the gray to overlap outside the text +% box a little. That amount is this number. This can be changed inside of +% each document, say with \resetlength{\frameboxsep}{.2ex}. +\newlength{\frameboxsep} % user can change in a .sty file or on +\setlength{\frameboxsep}{2pt} % a per-document basis. + +\newbox{\shadesavebox} % no `@'; users can redefine shadebox if they want +\newenvironment{shadebox}% % shadow boxes or something. +{\beginsbox{\shadesavebox}\begin{minipage}{\textwidth}% +\setlength{\parindent}{\saveparindent}}% +{\end{minipage}\endsbox% +{\begin{trivlist}\item[]% +\psframebox*[fillcolor=thmshade,boxsep=false,framesep=\frameboxsep]{% +\usebox{\shadesavebox}}% +\end{trivlist}}} + +% The definition of \newshadetheorem is modelled on the one for \newtheorem +% in latex.tex. +% The invocation possibilities are: +% \newshadetheorem{NAME}{TEXT}[COUNTER] +% e.g., \newshadetheorem{theorem}{Theorem}[section] meaning to allow +% one to say \begin{theorem} $e=mc^2$ \end{theorem} to produce +% Theorem 1.1.1 e=mc2 +% shaded and numbered by section. +% \newshadetheorem{NAME}[OLDNAME]{TEXT} +% e.g., \newshadetheorem{remark}[theorem]{Remark} meaning to allow +% one to say \begin{remark} Obvious. \end{remark} to produce +% Remark 1.1.2 Obvious. +% shaded and numbered with the same counter used for theorems. +% The flowchart for parsing the arguments goes like this. +% 1) \newshadetheorem{#1} (note #1<--NAME) +% 2) If the next character is `[' then we have the second case. This +% is handled by \shade@othm +% 3) If not, go to \shade@nthm. There are two cases here, either there +% is an optional argument (this is handled by \shade@xnthm) or there is +% not (this is handled by \shade@ynthm). +% (Possibly these cases could be folded somewhat as all use the same tail.) +% Notice I have to have different names for the theorem and the environment. +% I elected to call the theorem `xxx' by the name `shadexxx' so the user +% just says `\begin{xxx} ...' for the environment. (All this is, of course, +% just adapted from Lamport's code.) +% +\def\newshadetheorem#1{\@ifnextchar[{\shade@othm{#1}}{\shade@nthm{#1}}} + +\def\shade@othm#1[#2]#3{% +\newtheorem{shade#1}[#2]{#3}% +\newenvironment{#1}% +{\begin{shadebox}\begin{shade#1}}% +{\end{shade#1}\end{shadebox}}} + +\def\shade@nthm#1#2{\@ifnextchar[{\shade@xnthm{#1}{#2}}{\shade@ynthm{#1}{#2}}} + +\def\shade@xnthm#1#2[#3]{% +\newtheorem{shade#1}{#2}[#3]% +\newenvironment{#1}% +{\begin{shadebox}\begin{shade#1}}% +{\end{shade#1}\end{shadebox}}} + +\def\shade@ynthm#1#2{% +\newtheorem{shade#1}{#2}% +\newenvironment{#1}% +{\begin{shadebox}\begin{shade#1}}% +{\end{shade#1}\end{shadebox}}} + +\endinput %end shadethm.sty +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-test.tex-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +\documentstyle[fancybox,pstricks,shadethm]{article} + +\newshadetheorem{theorem}{Theorem} +\newshadetheorem{cor}[shadetheorem]{Corollary} +\newtheorem{remark}[shadetheorem]{Remark} + +\begin{document} +Here is some initial text before the shaded box. + +\begin{theorem} +This is the text to be shaded. +\end{theorem} + +This is some text after the first shade. +It is separated from the environments by a blank line; that is +all handled as usual in \LaTeX. + +\begin{cor} +This is more text to be shaded. +It is numbered with the same counter as the environment above. + +Multiple paragraphs will be handled with the usual paragraph indentation, +unless of course the user asks for a different paragraph indentation inside +the environment. +\end{cor} + +\begin{remark} +More text. +This time not set in shade, however it is numbered in the same sequence. +\end{remark} + +Finishing text. +\end{document} diff --git a/obsolete/macros/latex209/contrib/misc/shadow.sty b/obsolete/macros/latex209/contrib/misc/shadow.sty new file mode 100644 index 0000000000..4c4d5e76a6 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/shadow.sty @@ -0,0 +1,84 @@ +%%% ====================================================================== +%%% @LaTeX-style-file{ +%%% filename = "shadow.sty", +%%% version = "1.2.1", +%%% date = "16 September 1996", +%%% time = "16:26:21.52 MET", +%%% author = "Mauro Orlandini", +%%% address = "TeSRE Institute/CNR +%%% Area della Ricerca di Bologna +%%% Via Gobetti 101 +%%% 40129 Bologna - Italy", +%%% Email = "orlandini@tesre.bo.cnr.it (Internet) +%%% 38045::ORLANDINI (DECnet)", +%%% telephone = "+39 51 639-8667", +%%% FAX = "+39 51 639-8723", +%%% supported = "yes", +%%% archived = "TeX archive", +%%% keywords = "shadow", +%%% abstract = "The command \shabox has the same meaning of the +%%% LaTeX command \fbox except for the fact that a +%%% "shadow" is added to the bottom and the right side +%%% of the box. It computes the right dimension of the +%%% box, even if the text spans over more than one +%%% line; in this case a warning messagge is given.", +%%% codetable = "ISO/ASCII", +%%% checksum = "15806 84 430 4506", +%%% docstring = "There are three parameters governing: +%%% 1. the width of the lines delimiting the box: +%%% \sboxrule +%%% 2. the separation between the edge of the box and +%%% its contents: \sboxsep +%%% 3. the dimension of the shadow: \sdim +%%% Sintax: \shabox{} +%%% where is the text to be put in the +%%% framed box. It can be an entire paragraph. +%%% Adapted from the file dropshadow.tex by +%%% drstrip@cd.sandia.gov. +%%% V1.1 Works in a double column environment. +%%% V1.2 When there is an online shadow box, it +%%% will be centered on the line (in V1.1 the +%%% box was aligned with the baseline). +%%% (Courtesy by Mike Piff) +%%% V1.2.1 Dropped of unwanted CRs by Ralf Nitsch +%%% +%%% The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility." +%%% } +%%% ====================================================================== +\typeout{Style Option: `shadow' v1.2.1 <16 September 1996> (M.O.)} +\newdimen\txtwdth \newdimen\sht \newdimen\shw \newbox\shbox +\newdimen\sboxsep \newdimen\sboxrule \newdimen\sdim +\sboxsep = 10pt +\sdim = 4pt +\sboxrule = .4pt +\def\shabox#1{\setbox\@tempboxa\hbox{#1}% <-- V1.2.1 Added by R. Nitsch +\shw\wd\@tempboxa +\if@twocolumn\txtwdth\columnwidth\else\txtwdth\textwidth\fi +\ifdim\shw<\txtwdth + \leavevmode\setbox\@tempboxa\hbox{#1}% <-- V1.2.1 Added by R. Nitsch +\else + \typeout{Shadow Warning: Box dimension greater than textwidth.} + \setbox\@tempboxa\vbox{\hsize\txtwdth\advance\hsize-2\sboxsep + \advance\hsize-2\sboxrule \advance\hsize-2\sdim \advance\hsize-15pt#1} +\fi + \setbox\shbox\hbox{\@tempdima\sboxrule + \advance\@tempdima \sboxsep \advance\@tempdima \dp\@tempboxa + \hbox{\lower \@tempdima\hbox + {\vbox{\hrule \@height \sboxrule + \hbox{\vrule \@width \sboxrule \hskip\sboxsep + \vbox{\vskip\sboxsep \box\@tempboxa\vskip\sboxsep}\hskip + \sboxsep\vrule \@width \sboxrule} + \hrule \@height \sboxrule}}}}% <-- V1.2.1 Added by R. Nitsch +\sht\ht\shbox \advance\sht-\sdim +\leavevmode\vbox{\baselineskip0pt\lineskip0pt\vtop{%% V1.2 + %% Added \vtop + %% From M.Piff + \hbox{\copy\shbox\vrule width\sdim height\sht} + \hbox{\kern\sdim\vrule height\sdim width \wd\shbox}}}} + +\endinput diff --git a/obsolete/macros/latex209/contrib/misc/showlabels.sty b/obsolete/macros/latex209/contrib/misc/showlabels.sty new file mode 100644 index 0000000000..47d445c670 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/showlabels.sty @@ -0,0 +1,28 @@ +% showlabels.sty +% gil@svax.cs.cornell.edu (Gil Neiger) +% +% Change \label, \ref, and \pageref to show labels in line +% + +\def\ref#1{\@ifundefined{r@#1}{\mbox{\tt#1?}\@warning + {Reference `#1' on page \thepage \space + undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter + \@car\@tempa \@nil\null}} + +\def\pageref#1{\@ifundefined{r@#1}{\mbox{\tt#1?}\@warning + {Reference `#1' on page \thepage \space + undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter + \@cdr\@tempa\@nil\null}} + +\def\label#1{\@bsphack\if@filesw {\let\thepage\relax + \xdef\@gtempa{\write\@auxout{\string + \newlabel{#1}{{\@currentlabel}{\thepage}}}}}\@gtempa + \if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack + \mbox{\tt[#1]}} + +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{,}\@ifundefined + {b@\@citeb}{\mbox{\tt\@citeb?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +\hbox{\csname b@\@citeb\endcsname}}}{#1}} diff --git a/obsolete/macros/latex209/contrib/misc/spie.sty b/obsolete/macros/latex209/contrib/misc/spie.sty new file mode 100644 index 0000000000..d8c965cea3 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/spie.sty @@ -0,0 +1,126 @@ +\typeout{Document Style Option `spie proceedings style'.} +% +% Prepared by Rick Zaccone on 6/3/91. +% Modified by Adrian F Clark on 11-Jan-1992. +% +% Usage: +% \documentstyle[spie]{article} +% +% The user needs to make a few adjustments manually: +% +% 1. Section titles should be in upper case. +% 2. Title, subsection, subsubsection, etc. should be in lower case except +% for the first letter. +% 3. Format authors as follows +% \author{author1 \\[12pt] +% affiliation\\ +% affiliation\\[12pt] +% author2 \\[12pt] +% affiliation\\ +% affiliation\\[12pt]} +% +% 4. No date: use \date{} +% -------------------------------------------------------------------- + +% No headers or footers + +\oddsidemargin -.15in \evensidemargin -.15in \topmargin .1in +\headheight 0in \headsep 0in +\footheight 0in \footskip 0in +\pagestyle{empty} % No page numbers + + +% Page parameters + +\parskip 12pt +\textheight 8.8in \textwidth 6.8in +\floatsep 6pt plus 2pt minus 4pt \textfloatsep 30pt plus 20pt minus 10pt + + +% Center section headings and make them produce indexted next lines (ugh) + +\def\section{\@startsection {section}{1}{\z@}{3.5ex plus -1ex minus + -.2ex}{2.3ex plus .2ex}{\centering\Large\bf}} +\def\subsection{\@startsection{subsection}{2}{\z@}{3.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\large\bf}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.25ex plus +-1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\bf}} + + +% Add theorem, lemma, and definition environments + +\def\@begintheorem#1#2{\par\bgroup{\sc #1\ #2. }\it\ignorespaces} +\def\@opargbegintheorem#1#2#3{\par\bgroup{\sc #1\ #2\ (#3). }\it\ignorespaces} +\def\@endtheorem{\egroup} +\def\proof{\par{\it Proof}. \ignorespaces} +\def\endproof{{\ \vbox{\hrule\hbox{% + \vrule height1.3ex\hskip0.8ex\vrule}\hrule + }}\par} +\newtheorem{theorem}{Theorem}[section] +\newtheorem{lemma}[theorem]{Lemma} +\newtheorem{definition}[theorem]{Definition} + + +% The abstract + +\def\abstract{ +\section*{ABSTRACT} +} +\def\endabstract{} + +% Citations are superscripts (taken from aip.sty) + +% Superscript citations -- skip optional arg to \cite +% Move citation after period and comma. + +\def\@cite#1#2{\unskip\nobreak\relax + \def\@tempa{$\m@th^{\hbox{\the\scriptfont0 #1}}$}% + \futurelet\@tempc\@citexx} +\def\@citexx{\ifx.\@tempc\let\@tempd=\@citepunct\else + \ifx,\@tempc\let\@tempd=\@citepunct\else + \let\@tempd=\@tempa\fi\fi\@tempd} +\def\@citepunct{\@tempc\edef\@sf{\spacefactor=\the\spacefactor\relax}\@tempa + \@sf\@gobble} + +% \citenum emits the plain citation number without ornament +% \citea puts its argument into the ornamentation for citations +% thus \cite{foo} is equivalent to \citea{\citenum{foo}} + +\def\citenum#1{{\def\@cite##1##2{##1}\cite{#1}}} +\def\citea#1{\@cite{#1}{}} + +% Collapse citation numbers to ranges. Non-numeric and undefined labels +% are handled. No sorting is done. E.g., 1,3,2,3,4,5,foo,1,2,3,?,4,5 +% gives 1,3,2-5,foo,1-3,?,4,5 + +\newcount\@tempcntc +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@ifundefined + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% + \else + \advance\@tempcntb\@ne + \ifnum\@tempcntb=\@tempcntc + \else\advance\@tempcntb\m@ne\@citeo + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else\@citea\def\@citea{,}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else \def\@citea{--}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} + + +% Give the references section a section number + +\def\thebibliography#1{\section{REFERENCES\@mkboth + {REFERENCES}{REFERENCES}}\list + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist diff --git a/obsolete/macros/latex209/contrib/misc/subfigure.sty b/obsolete/macros/latex209/contrib/misc/subfigure.sty new file mode 100644 index 0000000000..b8a448e7f9 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/subfigure.sty @@ -0,0 +1,446 @@ +%$% subfigure.sty +%$% Subfigure/table command for use with the LaTeX figure environment. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (C) 1988-1995 Steven Douglas Cochran. +%%% +%%% The subfigure style is made available for academic and research +%%% purposes only. No commercial license is hereby granted. Copying +%%% and other reproduction is authorized only for research, education, +%%% and other non-commercial purposes. No warranties, either +%%% expressed or impiled, are made regarding the operation, use, or +%%% results of the subfigure style. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% @LaTeX-style-file{ +%%% Author = "Steven Douglas Cochran", +%%% Version = "2.0 (LaTeX209 version)", +%%% Date = "1995 Mar 06", +%%% Time = "12:43:14 EDT", +%%% Filename = "subfigure.sty", +%%% Address = "Digital Mapping Laboratory +%%% School of Computer Science +%%% Carnegie-Mellon University +%%% 5000 Forbes Avenue +%%% Pittsburgh, PA 15213-3891 +%%% USA", +%%% Telephone = "(412) 268-5654", +%%% FAX = "(412) 268-5576", +%%% checksum = "23098 438 1899 18286", +%%% Email = "sdc+@CS.CMU.EDU (Internet)", +%%% CodeTable = "ISO/ASCII", +%%% Keywords = "LaTeX, float, figure, table", +%%% Supported = "yes", +%%% Abstract = "LaTeX document-style option for +%%% providing support for the inclusion of +%%% small `sub' figures and tables. It +%%% simplifies the positioning, captioning +%%% and labeling of them within a single +%%% figure or table environment.", +%%% DocString = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by +%%% the equivalent of the standard UNIX wc +%%% (word count) utility output of lines, +%%% words, and characters. This is produced +%%% by Robert Solovay's checksum utility." +%%% } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% $Log: subfigure.sty,v $ +%$% Revision 2.0 95/03/06 12:43:14 sdc +%$% This version of `subfigure' is the first to be ported to LaTeX2e +%$% (with backward compatibility to LaTeX 2.09). "\subfigure" and +%$% "\subtable" are now identical and the environment controls +%$% internal differences between them. Now, the caption setting +%$% portion of "\@subfloat" is broken into the separate macros +%$% "\@makesubfigurecaption" and "\@makesubtablecaption" to allow a +%$% separate hook for the modification of how the caption is +%$% constructed and to allow the table and figure captions to be +%$% different. In addition, support of the `normal', `hang', +%$% `center', `centerlast', 'nooneline'; `scriptsize', \ldots, +%$% `Large'; `up', `it', `sl', `sc', `md', `bf', `rm', `sf', and `tt' +%$% package options were added for compatibility with the caption.sty +%$% by H.A. Sommerfeldt.} +%$% +%$% Revision 1.6 93/05/13 12:58:34 sdc +%$% Changed to use the \thefigure macro in building the referenced +%$% label. The old form caused a problem when used with the +%$% report.sty as pointed out by Andrew Anselmo +%$% (anselmo@cumesb.mech.columbia.edu). Also modified to restrict +%$% the scope of the subfigure \label to the body of the subfigure. +%$% Added \@thesubfigure to allow a separate labeling of the +%$% subfigure in the figure and in the text. By default it is the +%$% same as \thesubfigure with space appended. Added some hooks to +%$% print the subfigure captions to the list-of-figures file if +%$% desired. Finally, added the corresponding support for sub-tables +%$% as well as sub-figures. NOTE: the optional caption is now a +%$% moving argument and any fragile commands that appear in the +%$% caption must be preceded by a \protect (just like that of the +%$% \caption command). +%$% +%$% Revision 1.5 92/08/11 23:13:12 sdc +%$% Fixed a bug which caused an problem with captions that contained +%$% expressions like \sqrt; This was pointed out by Tom Scavo +%$% (scavo@cie.uoregon.edu). A separate bug was fixed which caused +%$% different sized captions to be misaligned; This problem was +%$% pointed out by Simon Marshall (S.Marshal@Hull.ac.uk). Also +%$% cleaned up the code a mite and *changed* the figure spacing so that +%$% if no optional section is given, then the figure is only followed +%$% by \subfigbottomskip and not that plus (\subfigcapskip + \strut +%$% height). This should make it easier to adjust spacing as desired. +%$% +%$% Revision 1.4 92/06/27 10:40:34 sdc +%$% Added a hack to allow the \label command to be used within the +%$% body of the subfigure giving a reference label in the form +%$% \arabic{thefigure}\thesubfigure. Added standard file header for +%$% style. +%$% +%$% Revision 1.3 90/10/22 17:04:28 cochran +%$% Changed test for empty caption inside of \@subfigure to compare +%$% tokens and not the caption vs. \@empty. The former (incorrect) +%$% test caused an error when the first two letters of the caption +%$% were the same. +%$% +%$% Revision 1.2 89/08/30 07:18:29 cochran +%$% Added a separate bottom margin and expanded the comments. +%$% +%$% Revision 1.1 88/11/02 11:03:46 cochran +%$% Initial revision. +%$% +%$% 05 Mar 86 cochran@dworkin.usc.edu (USC-IRIS) +%$% Created. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%$% Usage: \documentstyle[...,subfigure,...]{...} +%$% +%$% \subfigure[CAPTIONtext]{FIGUREbox} +%%% +%%% Creates a subfigure box with an optional CAPTION under a FIGURE. +%%% The FIGURE is centered with \subfigtopskip of vertical space added +%%% above. If there is a CAPTION, then \subfigcapskip vertical space +%%% is added below the FIGURE followed by the CAPTION. Finally, +%%% \subfigbottomskip of vertical space added at the bottom. +%%% +%%% If a CAPTION is given (including a null CAPTION `[]') then the +%%% subfigure is labeled with a counter formatted by the macro +%%% `\thesubfigure' which returns `(a)', `(b)', etc. If desired, +%%% this macro may be redefined. The counter used for labeling the +%%% subfigures is `subfigure' and is incremented for each subfigure +%%% regardless of whether a CAPTION was printed. +%%% +%$% \subfigure[CAPTIONtext]{FIGUREbox} +%%% +%%% The subtable command is symmetric to the subfigure command defined +%%% above. +%%% +%%% One example of use is to surround the figure in a center +%%% environment or to specifying \centering: +%%% +%%% *---------* +%%% \newcommand{\goodgap}{% | .. . | *---------* +%%% \hspace{\subfigtopskip}% | . . | | . . . | +%%% \hspace{\subfigbottomskip}} | .. . . | | . . .. | +%%% ... *---------* *---------* +%%% \begin{figure}% (a) First (b) Second +%%% \centering Figure +%%% \subfigure[First]{...}\goodgap +%%% \subfigure[Second Figure]{...}\\ *---------* +%%% \subfigure[Third]{\label{3figs-c}...}% | . .. . | +%%% \caption{Three Subfigures.} | . .. . | +%%% \label{3figs} *---------* +%%% \end{figure} (c) Third +%%% ... Figure 1. Three Subfigures. +%%% Figure~\ref{3figs} contains +%%% two top `subfigures' and Figure 1 contains two top `sub- +%%% Figure~\ref{3figs-c}. figures' and Figure 1(c). +%%% +%%% A second example is to change the way that the subfigures are labeled +%%% and to have the subfigure captions printed in the list-of-figures. +%%% +%%% \renewcommand{\thesubfigure}{\thefigure.\arabic{subfigure}} +%%% \makeatletter +%%% \renewcommand{\@thesubfigure}{\thesubfigure:\space} +%%% \renewcommand{p@subfigure}{} +%%% \makeatother +%%% ... +%%% \setcounter{lofdepth}{2} +%%% \listoffigures +%%% ... +%%% \begin{figure}% +%%% \begin{center}% +%%% \subfigure[First]{% *--------------* *--------------* +%%% \label{fig:first}% | .. . . | | . ... .. . . | +%%% ...}% | . . . . | | . . . . .. | +%%% \goodgap | .. . . . . | | . . . .. .. | +%%% \subfigure[Second]{% *--------------* *--------------* +%%% \label{fig:second}% +%%% ...}% 1.1: First 1.2: Second +%%% \end{center}% +%%% \caption{Two Subfigures.} Figure 1. Two Subfigures. +%%% \end{figure} +%%% ... See subfigures 1.1 and 1.2. +%%% See subfigures \ref{fig:first} +%%% and \ref{fig:second}. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Options: +%%% +%%% I. Subfloat caption shape. +%%% By default the caption paragraphs are centered under the +%%% subfigure or table with a little indentation at each side. +%%% There are three options that may be used to change the shape +%%% of the centered paragraph -- they only have an effect when the +%%% caption is more than one line long. These should be set in +%%% the preamble of your LaTeX file: +%%% +%%% \subcaphangtrue Causes the label to be a hanging +%%% indentation to the caption paragraph. +%%% \subcapcentertrue Causes each line of the paragraph +%%% to be separately centered. +%%% \subcapcenterlasttrue Causes the last line only to be +%%% centered. +%%% \subcapnooneline If a caption fits on one line it +%%% will, by default, be centered. +%%% This option left-justifies the one +%%% line caption. +%%% +%%% The hang option may be used in addition to either center +%%% option. (If both center options are true it is the same as if +%%% only the \subcapcenter was true.) +%%% +%%% +%%% II. Subfloat label font. +%%% The subfloat label font may be separately set by changing the +%%% definition of \subcaplabelfont. For example: +%%% +%%% \newcommand{\subcaplabelfont}{\it} +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% +%%% Identification +%%% +\ifx\if@compatibility\undefined\else + \NeedsTeXFormat{LaTeX2e} + \ProvidesPackage{subfigure}[1995/03/06 v2.0 subfigure package] + \typeout{Package: subfigure 1995/03/06 v2.0} +\fi + +%%% +%%% Initialization and Shared constants +%%% +\newif\ifsubcaphang +\newif\ifsubcapcenter +\newif\ifsubcapcenterlast +\newif\ifsubcapnooneline + +%% +%% Common values (mention of `subfig' in names is for upward compatibility) +%% +\newcommand{\subfigtopskip}{10pt} % Length from the top of the subfloat + % box to the begining of the FIGURE box. +\newcommand{\subfigbottomskip}{10pt} % Length from the bottom of the CAPTION + % to the bottom of the subfloat. +\newcommand{\subfigcapskip}{10pt} % Length from the bottom of the FIGURE box + % to the begining of the CAPTION. +\newcommand{\subfigcapmargin}{10pt} % Indentation of the caption from the + % sides of the subfloat box (This should + % always be positive). +\newcommand{\subcapsize}{} % Size of the CAPTION font. +\newcommand{\subcaplabelfont}{} % Font of the caption label. + +%% +%% Subfigure values +%% +\newcounter{subfigure}[figure] % Subfigure counter. +\def\thesubfigure{(\alph{subfigure})} % Generate CAPTION label (text). +\newcommand{\@thesubfigure}{% % Generate CAPTION label (figure). + {\subcaplabelfont\thesubfigure}\space} +\let\p@subfigure\thefigure % Figure number for \label. + +\let\ext@subfigure\ext@figure % Default SubFigure file extension. +\newcommand{\l@subfigure}{% % How to print an LOF subfigure line. + \@dottedxxxline{\ext@subfigure}{2}{3.9em}{2.3em}} +\newcounter{lofdepth} % LOF depth counter. +\setcounter{lofdepth}{1} % Default is to NOT print an LOF line. + +%% +%% Subtable values +%% +\newcounter{subtable}[table] % Subtable counter. +\def\thesubtable{(\alph{subtable})} % Generate CAPTION label (text). +\newcommand{\@thesubtable}{% % Generate CAPTION label (figure). + {\subcaplabelfont\thesubtable}\space} +\let\p@subtable\thetable % Figure number for \label. + +\let\ext@subtable\ext@table % Default SubTable file extension. +\newcommand{\l@subtable}{% % How to print an LOT subtable line. + \@dottedxxxline{\ext@subtable}{2}{3.9em}{2.3em}} +\newcounter{lotdepth} % LOT depth counter. +\setcounter{lotdepth}{1} % Default is to NOT print an LOT line. + + +%% +%% Declaration of options +%% +\ifx\if@compatibility\undefined + \subcaphangfalse + \subcapcenterfalse + \subcapcenterlastfalse + \subcapnoonelinefalse + \def\subcapsize{\footnotesize} +\else + \DeclareOption{normal}{% + \subcaphangfalse + \subcapcenterfalse + \subcapcenterlastfalse} + \DeclareOption{hang}{\subcaphangtrue} + \DeclareOption{center}{\subcapcentertrue} + \DeclareOption{centerlast}{\subcapcenterlasttrue} + \DeclareOption{nooneline}{\subcapnoonelinetrue} + \DeclareOption{isu}{\ExecuteOption{hang}} + \DeclareOption{anne}{\ExecuteOption{centerlast}} + + \DeclareOption{scriptsize}{\renewcommand{\subcapsize}{\scriptsize}} + \DeclareOption{footnotesize}{\renewcommand{\subcapsize}{\footnotesize}} + \DeclareOption{small}{\renewcommand{\subcapsize}{\small}} + \DeclareOption{normalsize}{\renewcommand{\subcapsize}{\normalsize}} + \DeclareOption{large}{\renewcommand{\subcapsize}{\large}} + \DeclareOption{Large}{\renewcommand{\subcapsize}{\Large}} + \DeclareOption{up}{\renewcommand{\subcaplabelfont}{\upshape}} + \DeclareOption{it}{\renewcommand{\subcaplabelfont}{\itshape}} + \DeclareOption{sl}{\renewcommand{\subcaplabelfont}{\slshape}} + \DeclareOption{sc}{\renewcommand{\subcaplabelfont}{\scshape}} + \DeclareOption{md}{\renewcommand{\subcaplabelfont}{\mdseries}} + \DeclareOption{bf}{\renewcommand{\subcaplabelfont}{\bfseries}} + \DeclareOption{rm}{\renewcommand{\subcaplabelfont}{\rmfamily}} + \DeclareOption{sf}{\renewcommand{\subcaplabelfont}{\sffamily}} + \DeclareOption{tt}{\renewcommand{\subcaplabelfont}{\ttfamily}} + + \ExecuteOptions{normal,footnotesize} + \ProcessOptions +\fi + + +%%% +%%% Define the subfigure and subtable commands +%%% +\newcommand{\subfigure}{% + \bgroup + % Since the table caption is usually generated later, we + % must locally anticipate the future value of its counter. + \advance\csname c@\@captype\endcsname\@ne + \refstepcounter{sub\@captype}% + \leavevmode + \@ifnextchar [% + {\@subfloat{sub\@captype}}% + {\@subfloat{sub\@captype}[\@empty]}} +\let\subtable\subfigure + +%%% +%%% Define the common subfloat macro +%%% +\def\@subfloat#1[#2]#3{% + \setbox\@tempboxa \hbox{#3}% + \@tempdima=\wd\@tempboxa + \vtop{% + %% Put the top spacing and the figure in the top box + \vbox{% + \vskip\subfigtopskip + \box\@tempboxa}% + %% Now skip down and add the caption paragraph + %% (unless #2 == \@empty) + \ifx \@empty#2\relax \else + \vskip\subfigcapskip + \@subcaption{#1}{#2}% + \fi + %% Finally add the bottom spacing. + \vskip\subfigbottomskip}% + \egroup} + +\newcommand{\@subfigcaptionlist}{} + +\newcommand{\@subcaption}[2]{% + \begingroup + \let\label\@gobble + \def\protect{\string\string\string}% + \xdef\@subfigcaptionlist{% + \@subfigcaptionlist,% + {\protect\numberline {\@currentlabel}% + \noexpand{\ignorespaces #2}}}% + \endgroup + \@nameuse{@make#1caption}{\@nameuse{@the#1}}{#2}} + +\newcommand{\@makesubfigurecaption}[2]{% + \setbox\@tempboxa \hbox{% + \subcapsize + \ignorespaces #1% + \ignorespaces #2}% + \@tempdimb=-\subfigcapmargin + \multiply\@tempdimb\tw@ + \advance\@tempdimb\@tempdima + \hbox to\@tempdima{% + \hfil + \ifdim \wd\@tempboxa >\@tempdimb + \subfig@caption{#1}{#2}% + \else\ifsubcapnooneline + \subfig@caption{#1}{#2}% + \else + \box\@tempboxa + \fi\fi + \hfil}} + +\let\@makesubtablecaption\@makesubfigurecaption + +\newcommand{\subfig@caption}[2]{% + \ifsubcaphang + \sbox{\@tempboxa}{% + \subcapsize + \ignorespaces #1}% + \addtolength{\@tempdimb}{-\wd\@tempboxa}% + \usebox{\@tempboxa}% + \subfig@captionpar{\@tempdimb}{#2}% + \else + \subfig@captionpar{\@tempdimb}{#1#2}% + \fi} + +\newcommand{\subfig@captionpar}[2]{% + \parbox[t]{#1}{% + \strut + \ifsubcapcenter + \setlength{\leftskip}{\@flushglue}% + \setlength{\rightskip}{\@flushglue}% + \setlength{\parfillskip}{\z@skip}% + \else\ifsubcapcenterlast + \addtolength{\leftskip}{0pt plus 1fil}% + \addtolength{\rightskip}{0pt plus -1fil}% + \setlength{\parfillskip}{0pt plus 2fil}% + \fi\fi + \subcapsize + \ignorespaces #2}} + +%%% +%%% Generalized wrapper for the \@dottedtocline macro. This checks for +%%% the level based on the output file (#1) and not using only +%%% \@tocdepth. +%%% +\newcommand{\@dottedxxxline}[6]{% + \ifnum #2>\@nameuse{c@#1depth}\else + \@dottedtocline{0}{#3}{#4}{#5}{#6} + \fi} + +%%% +%%% Finally, wrap the \@caption macro to dump any sub-captions saved +%%% after calling the standard \@caption. +%%% +\let\subfig@oldcaption\@caption + +\long\def\@caption#1[#2]#3{% + \subfig@oldcaption{#1}[{#2}]{#3}% + \@for \@tempa:=\@subfigcaptionlist \do {% + \ifx\@empty\@tempa\relax \else + \addcontentsline + {\@nameuse{ext@sub#1}}% + {sub#1}% + {\@tempa}% + \fi}% + \gdef\@subfigcaptionlist{}} +\endinput + +%%% +%%% End of file `subfigure.sty'. diff --git a/obsolete/macros/latex209/contrib/misc/texnames.sty b/obsolete/macros/latex209/contrib/misc/texnames.sty new file mode 100644 index 0000000000..7314a8de47 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/texnames.sty @@ -0,0 +1,13 @@ +\font\mf=logo10 +\hyphenchar\mf=-1 +\newcommand{\METAFONT}{{\mf METAFONT}} +\newcommand{\AMSTEX}{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em + $\cal S$-\TeX} +\newcommand{\AMSTeX}{\AMSTEX} +\newcommand{\BibTeX}{{\sc Bib}\TeX} +\newcommand{\VorTeX}{{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}\kern-2.6pt + T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}} +\newcommand\FergTeX{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX} +\font\gut=cminch +\hyphenchar\gut=-1 +\newcommand{\Gut}{{\gut GUT}{\Huge \kern-1em\hbox{enberg}}} diff --git a/obsolete/macros/latex209/contrib/misc/threepart.sty b/obsolete/macros/latex209/contrib/misc/threepart.sty new file mode 100644 index 0000000000..8d9104688d --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/threepart.sty @@ -0,0 +1,40 @@ +% Three part head and foot macros. 1/87 +% Lance Berc +% Olsen & Associates mcvax!unizh!olsen!lance@seismo.css.gov +% Seefeldstrasse 233 +% CH-8008 Zurich + +% How users can set the head and foot text. +\def\lhead#1{\gdef\@lhead{#1}} \def\lfoot#1{\gdef\@lfoot{#1}} +\def\chead#1{\gdef\@chead{#1}} \def\cfoot#1{\gdef\@cfoot{#1}} +\def\rhead#1{\gdef\@rhead{#1}} \def\rfoot#1{\gdef\@rfoot{#1}} + +% Initialization of the head and foot text. +% By default the page number is at the center of the foot and everything +% else is empty. +\def\@lhead{} \def\@lfoot{} +\def\@chead{} \def\@cfoot{{\rm \thepage}} +\def\@rhead{} \def\@rfoot{} + +% Put together a three part header or footer given the left, center and +% right text. The \lap commands put the text into an hbox of zero size, +% so overlapping text is not detected (it just overlaps). +\def\@threepart#1#2#3{\rlap{#1} \hfil {#2} \hfil \llap{#3}} + +% Swap the notices on odd and even pages when twosided. +\def\ps@threepartheadings + { + \def\@oddhead{\@threepart{\@lhead}{\@chead}{\@rhead}} + \def\@oddfoot{\@threepart{\@lfoot}{\@cfoot}{\@rfoot}} + + \if@twoside + \def\@evenhead{\@threepart{\@rhead}{\@chead}{\@lhead}} + \def\@evenfoot{\@threepart{\@rfoot}{\@cfoot}{\@lfoot}} + \else + \def\@evenhead{\@threepart{\@lhead}{\@chead}{\@rhead}} + \def\@evenfoot{\@threepart{\@lfoot}{\@cfoot}{\@rfoot}} + \fi + } + +% Default page style +\ps@threepartheadings diff --git a/obsolete/macros/latex209/contrib/misc/twoup.sty b/obsolete/macros/latex209/contrib/misc/twoup.sty new file mode 100644 index 0000000000..b9fb4796d0 --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/twoup.sty @@ -0,0 +1,20 @@ +% Gary Levin gary@sun.mcs.clarkson.edu +% +% to format files for two up printing use the following style file +% feel free to modify before you install. the units are pretty good, so +% don't fiddle much. leaves enough room for punching holes at the top. +% +% once latex'ed, reorganize the file using +% dvidvi '2:0(-0.35in,-0.25in),1(4.65in,-0.25in)' $1.dvi twoup.dvi +% then print using dvi2ps -L +% probably should package as a shell file +% +\newcommand\twoup{ +\topmargin 0.00in +\oddsidemargin 0.00in +\evensidemargin 0.00in +\headheight 0.25in +\headsep 0.20in +\textheight 6.50in +\pagestyle{headings} +} diff --git a/obsolete/macros/latex209/contrib/misc/varioref.sty b/obsolete/macros/latex209/contrib/misc/varioref.sty new file mode 100644 index 0000000000..0d895e04bc --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/varioref.sty @@ -0,0 +1,168 @@ +%% +%% This is file `varioref.sty', generated +%% on <1993/5/1> with the docstrip utility (2.1e). +%% +%% The original source files were: +%% +%% varioref.doc (with options: `style') +%% +%% +%% Copyright (C) 1992,1993 by Frank Mittelbach. All rights reserved. +%% +%% +%% IMPORTANT NOTICE: +%% +%% You are not allowed to change this file. You may however copy this +%% file to a file with a different name and then change the copy. +%% +%% You are NOT ALLOWED to distribute this file alone. You are NOT +%% ALLOWED to take money for the distribution or use of this file (or a +%% changed version) except for a nominal charge for copying etc. +%% +%% You are allowed to distribute this file under the condition that it is +%% distributed together with all files mentioned in readme.mz7. +%% +%% If you receive only some of these files from someone, complain! +%% +%% However, if these files are distributed by established suppliers as +%% part of a complete TeX distribution, and the structure of the +%% distribution would make it difficult to distribute the whole set of +%% files, *those parties* are allowed to distribute only some of the +%% files provided that it is made clear that the user will get a complete +%% distribution-set upon request to that supplier (not me). Notice that +%% this permission is not granted to the end user. +%% +%% For error reports in case of UNCHANGED versions see readme files. +%% +%% +%% + +\def\filename{varioref} +\def\fileversion{v0.1g} +\def\filedate{93/02/14} +\def\docdate {93/02/14} + +%% \CheckSum{257} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +%% Style-option varioref to use with LaTeX v2.09 +%% Copyright (C) 1992-1993 Frank Mittelbach, all rights reserved. +\@ifundefined{c@vrcnt}{}{\endinput} +\typeout{Style option: `varioref' + \fileversion\space <\filedate> (FMi)} +\typeout{English documentation + \@spaces\@spaces\space<\docdate> (FMi)} +\newcounter{vrcnt} +\def\vpageref{\protect\p@vpageref} +\def\p@vpageref{\@ifnextchar[% + \@vpageref{\@vpageref[\reftextcurrent]}% +} +\def\@vpageref[#1]{\@ifnextchar[% + \@@vpageref{\@@vpageref[#1][\unskip\space]}} +\def\@@vpageref[#1][#2]#3{% + \leavevmode\unskip + \global\advance\c@vrcnt\@ne + \@ifundefined{r@vr@\the\c@vrcnt}% + {\@namedef{r@vr@\the\c@vrcnt}{{??}{??}}}{}% + \edef\@tempa{\expandafter\expandafter\expandafter + \@cdr\csname r@vr@\the\c@vrcnt\endcsname + \@nil}% + \@ifundefined{r@xvr@\the\c@vrcnt}% + {\@namedef{r@xvr@\the\c@vrcnt}{{??}{??}}}{}% + \edef\@tempb{\expandafter\expandafter\expandafter + \@cdr\csname r@xvr@\the\c@vrcnt\endcsname + \@nil}% + {\let\@currentlabel\@empty\label{xvr@\the\c@vrcnt}}% + \ifx\@tempa\@tempb\else + \vref@err{***^^J% + * Warning: \noexpand\vref over page boundary + \@tempa-\@tempb\space (may loop)^^J% + ***}% + \fi + \@ifundefined{r@#3}{\@namedef{r@#3}{{??}{??}}}{}% + \edef\@tempb{\expandafter\expandafter\expandafter + \@cdr\csname r@#3\endcsname + \@nil}% + \space + \ifx\@tempa\@tempb + #1% + \else + #2% + \is@pos@number\@tempb + {% + \is@pos@number\@tempa + {\@tempcnta\@tempa + \advance\@tempcnta\@ne + }% + {\@tempcnta\maxdimen}% + \ifnum \@tempb =\@tempcnta + \ifodd\@tempcnta + \if@twoside + \reftextfaceafter + \else + \reftextafter + \fi + \else + \reftextafter + \fi + \else + \advance\@tempcnta-2 + \ifnum \@tempb =\@tempcnta + \ifodd\@tempcnta + \reftextbefore + \else + \if@twoside + \reftextfacebefore + \else + \reftextbefore + \fi + \fi + \else + \reftextfaraway{#3}% + \fi + \fi + }% + {\reftextfaraway{#3}}% + \fi + {\let\@currentlabel\@empty\label{vr@\the\c@vrcnt}}% +} +\def\vrefwarning{\let\vref@err\typeout} +\let\vref@err\errmessage +\def\vref{\protect\p@vref} +\def\p@vref#1{% + \unskip~\ref{#1}% + \@vpageref[\unskip]{#1}% +} +\def\is@pos@number#1{\is@pos@num0#1\space\@nil} +\def\is@pos@num{\afterassignment\is@pos@num@ \count@} +\def\is@pos@num@#1\@nil{% + \if0#10% + \expandafter\@firstarg \else + \expandafter\@secondarg \fi} +\def\@firstarg#1#2{#1} +\def\@secondarg#1#2{#2} +\def\reftextvario#1#2{\ifodd\c@vrcnt #1\else#2\fi} +\def\reftextfaceafter {on the \reftextvario{facing}{next} page} +\def\reftextfacebefore{on the \reftextvario{facing}{preceding} page} +\def\reftextafter {on the \reftextvario{following}{next} page} +\def\reftextbefore {on the \reftextvario{preceding page}{page before}} +\def\reftextcurrent {on \reftextvario{this}{the current} page} +\def\reftextfaraway#1{on page~\pageref{#1}} +\def\fullref#1{\ref{#1} on page~\pageref{#1}} +\endinput +%% +%% End of file `varioref.sty'. diff --git a/obsolete/macros/latex209/contrib/misc/xr.sty b/obsolete/macros/latex209/contrib/misc/xr.sty new file mode 100644 index 0000000000..b4b11da30c --- /dev/null +++ b/obsolete/macros/latex209/contrib/misc/xr.sty @@ -0,0 +1,207 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "David Carlisle", +%%% version = "5.01", +%%% date = "20 July 1993", +%%% time = "10:57:34 BST", +%%% filename = "xr.sty", +%%% address = "Computer Science Department +%%% Manchester University +%%% Oxford Road +%%% Manchester +%%% England +%%% M13 9PL", +%%% telephone = "+44 61 275 6139", +%%% FAX = "+44 61 275 6236", +%%% checksum = "04455 207 971 7348", +%%% email = "carlisle@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, \ref, \pageref, \label", +%%% supported = "yes", +%%% docstring = " +%%% +%%% xr.sty +%%% +%%% A style which allows the use \[page]ref in one file to access +%%% labels defined by \label in another document. +%%% Each such file which is to be cross referenced is declared with +%%% the \externaldocument command. +%%% +%%% Versions 1-4 of this style were written by Jean-Pierre Drucbert +%%% +%%% Version 5 re-implements the main mechanism, and adds an +%%% optional argument to allow the user to resolve conflicts if two +%%% files use the same \label. +%%% +%%% The checksum field above was produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% +% Version 5.00 07 July 1993 +% New mechanism (\read instead of \input). +% +% Version 5.01 20 July 1993 +% V5.00 did not import aux files of \include'ed files. (Reported by +% Jean-Pierre Drucbert.) +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%<*x> +% This file may be used without modification as a style (.sty) file. +% +% If you have Mittelbach's doc.sty, this file may be formatted with a +% command like: +% latex xr.sty +% +% If you have the Mittelbach/Duchier/Braams docstrip utility, you may +% produce a faster loading .sty file. Rename this file to: xr.doc +% Then run this file through *plain* TeX: +% tex xr.doc +% This should produce the file xr.sty. +% If you do not have plain TeX on your system, you can trick LaTeX into +% doing the work as follows: +% latex \def\fmtname{plain} \input xr.doc +% Note that you may need to quote the arguments here to stop your +% operating system treating the \ characters incorrectly. +% +% latex xr.doc +% Will produce a typeset version of the documentation, as above. +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname + \def\batchfile{xr.doc} + \input docstrip + \preamble + + Do not distribute the stripped version of this file. + The checksum in the header refers to the documented version. + + \endpreamble + \generateFile{xr.sty}{t}{\from{xr.doc}{}} + \endinput +\fi +% +\ifcat a\noexpand @\let\next\relax\else\def\next{% + \documentstyle[doc]{article}\MakePercentIgnore}\fi\next +% +%\def\eatmodule<#1>{}\eatmodule +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \textwidth=355pt ^^A Allow macrocode text with 72 columns. +% \CodelineIndex ^^A Code lines numbered. +% \DisableCrossrefs ^^A No Cross references. +% \MakeShortVerb{\"} ^^A "\foo" works like \verb+\foo+ +% +% \title{xr.sty} +% \author{D. P. Carlisle^^A +% \thanks{The Author of Versions 1--4 was Jean-Pierre Drucbert}} +% \date{20 July 1993} +% +% \begin{document} +% \maketitle +% +% This style implements a system for eXternal References. +% +% If one document needs to refer to sections of another, say "aaa.tex", +% then this style may be given as a "\documentstyle" option in the main +% file, and the command "\externaldocument{aaa}" given in the preamble. +% +% Then you may use "\ref" and "\pageref" to refer to anything which has +% been given a "\label" in either "aaa.tex" or the main document. +% You may declare any number of such external documents. +% +% If any of the external documents, or the main document, use the same +% "\label" then an error will occur as the label will be multiply +% defined. To overcome this problem "\externaldocument" has an optional +% argument. If you declare "\externaldocument[A-]{aaa}" Then all +% references from "aaa" are prefixed by "A-". So for instance, if a +% section of "aaa" had "\label{intro}", then this could be referenced +% with "\ref{A-intro}". The prefix need not be "A-", it can be any +% string chosen to ensure that all the labels imported from external +% files are unique. Note however that if your style declares certain +% active characters (":" in French, \verb|"| in German) then these +% characters can not usually be used in "\label", and similarly may not +% be used in the optional argument to "\externaldocument". +% +% \typeout{End of the Introduction and Examples.} +% \typein[\answer]% +% {Do you want an annotated listing of the macro definitions (y/n) ?} +% \def\next{y}\ifx\answer\next\else\expandafter\stop\fi +% +% \section{The macros} +% Check for the optional argument. +% \begin{macrocode} +\def\externaldocument{\@ifnextchar[{\XR@}{\XR@[]}} +% \end{macrocode} +% +% Save the optional prefix. Start processing the first "aux" file. +% \begin{macrocode} +\def\XR@[#1]#2{{% + \makeatletter + \def\XR@prefix{#1}% + \XR@next#2.aux\relax\\}} +% \end{macrocode} +% +% Process the next "aux" file in the list and remove it from the head of +% the list of files to process. +% \begin{macrocode} +\def\XR@next#1\relax#2\\{% + \edef\XR@list{#2}% + \XR@loop{#1}} +% \end{macrocode} +% +% Check whether the list of "aux" files is empty. +% \begin{macrocode} +\def\XR@aux{% + \ifx\XR@list\@empty\else\expandafter\XR@explist\fi} +% \end{macrocode} +% + +% Expand the list of aux files, and call "\XR@next" to process the first +% one. +% \begin{macrocode} +\def\XR@explist{\expandafter\XR@next\XR@list\\} +% \end{macrocode} +% +% If the "aux" file exists, loop through line by line, looking for +% "\newlabel" and "\@input". Otherwise process the next file in the +% list. +% \begin{macrocode} +\def\XR@loop#1{\openin\@inputcheck#1\relax + \ifeof\@inputcheck + \typeout{^^JNo file #1^^JLABELS NOT IMPORTED.^^J}% + \expandafter\XR@aux + \else + \typeout{IMPORTING LABELS FROM #1}% + \expandafter\XR@read\fi} +% \end{macrocode} +% +% Read the next line of the aux file. +% \begin{macrocode} +\def\XR@read{% + \read\@inputcheck to\XR@line +% \end{macrocode} +% The "..." make sure that "\XR@test" always has sufficient arguments. +% \begin{macrocode} + \expandafter\XR@test\XR@line...\XR@} +% \end{macrocode} +% +% Look at the first token of the line. +% If it is "\newlabel", do the "\newlabel". If it is "\@input", add the +% filename to the list of files to process. Otherwise ignore. +% Go around the loop if not at end of file. Finally process the next +% file in the list. +% \begin{macrocode} +\long\def\XR@test#1#2#3#4\XR@{% + \ifx#1\newlabel + \newlabel{\XR@prefix#2}{#3}% + \else\ifx#1\@input + \edef\XR@list{\XR@list#2\relax}% + \fi\fi + \ifeof\@inputcheck\expandafter\XR@aux + \else\expandafter\XR@read\fi} +% \end{macrocode} +% +% \end{document} +\endinput -- cgit v1.2.3