diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex209/contrib/misc |
Initial commit
Diffstat (limited to 'macros/latex209/contrib/misc')
250 files changed, 41019 insertions, 0 deletions
diff --git a/macros/latex209/contrib/misc/QED.sty b/macros/latex209/contrib/misc/QED.sty new file mode 120000 index 0000000000..937f00d227 --- /dev/null +++ b/macros/latex209/contrib/misc/QED.sty @@ -0,0 +1 @@ +../../../generic/proofs/taylor/QED.sty
\ No newline at end of file diff --git a/macros/latex209/contrib/misc/STYLE_descriptions b/macros/latex209/contrib/misc/STYLE_descriptions new file mode 100644 index 0000000000..cba039f246 --- /dev/null +++ b/macros/latex209/contrib/misc/STYLE_descriptions @@ -0,0 +1,287 @@ +File Description + +a4.sty Set page size to A4 + +a4wide.sty Set page size to A4 with narrow margins + +a5.sty sets A5 page size (use only with 10pt) + +a5comb.sty sets A% page style but for spirally-bound documents + (bigger inner margins) + +aaai.sty Style file for AAAI conference 1988 +aaai-doc.tex (BibTeX style in bibtex-style and bibtex-style-0.98) + +agugrl.sty AGU Geophysical Research Letters style +agugrl-sample.tex + +agujgr.sty AGU Journal of Geophysical Research style +agujgr-sample.tex + +aip.sty for American Institute of Physics journals + +album Style for printing cassette labels + +alleqno.sty makes all displayed equations numbered by default + +alltt.sty Like verbatim, but permits other commands inside + +amssymbols.sty Load AMS font + +apalike.sty LaTeX and BibTeX style files for a APA-like + style (APA = Amer. Psychological Association) + +apsabstract.sty for formatting abstracts for American + Physical Society meetings + +biihead.sty Underlined heading + +boxedminipage.sty puts a box round a minipage + +breakcites.sty allows citations to break across lines + +bsf.sty Provide access to bold san serif fonts in LaTeX + +captcont.sty Auxiliary file needed + +cd.sty Commutative diagram macros +cd-doc.tex + +changebar.sty changebars for LaTeX + +chapterbib.sty Allow LaTeX & BibTeX to produce separate + bibliographies for each chapter. + +cite.sty Compress lists of numbers in citations to ranges, and + allow linebreaks with difficulty + +cup.sty a document style for books in the Cambridge + University Press, British Computer Society + Workshop series. + +cyrillic.sty Load Cyrillic font + +deproc.sty DECUS proceedings style and +deproc-doc.tex documentation +deproc.readme + +doublespace.sty Double spacing in text + +draft.sty Draft option for documents for "debugging" + +drafthead.sty Prints DRAFT in heading + +drop.sty Style for making large dropped initials for + starting paragraphs + +eepic A picture environment that used tpic specials + +env.sty style files to print on envelopes + + +epic an extended picture environment + +equations.sty marcros to to aid in constructing displayed + equations in LaTeX + +espo.sty Style file for Esperanto + +fancyheadings.sty modify the headers and footers + +farticle.sty French version of article.sty + +figplace.tex TeX macros to handle floating insertion + +fixup.sty Fixup Plain's \bigl, etc. to track LaTeX size changes + +flowchart.sty macros to write flow charts + +fnpara.sty sets footnotes as parapraphs + +format.sty Print FP numbers in fixed format + +frenchponct.sty french punctuation + +frontiers.sty for Frontiers '88 symposium and other IEEE conferences + +fullpage.sty Get more out of a page + +geophysics.sty Geophysics journal style + +german.sty Style file for German + +hackalloc.sty make allocation local for LaTeX + +headerfooter.sty adds the capability of underlining the heading, ala + the LaTeX manual + +icassp.sty This is a document style option, for cammera-ready copy + for the ICASSP '89 conference (and other IEEE + conferences???), to be used with the article document + style and the proc document style option. + +ijcai89.sty Conference Style for IJCAI-89 +ijcai89.tex + +insertplot.sty Macros for inserting PostScript in files printed with +insertplot.readme Arbortext's DVIPS. + +iso.sty for use by those writing ISO standards +iso9.sty +iso-doc.tex + +ist21.sty IST21 document style option for cover page + +jbs.sty for the Journal of Business Strategies + +jeep.sty usefull modifications of the article style +jeep.tex + +layout.tex Prints nice diagram showing page parameters +layout.readme of LaTeX + +lablst.sty for printing label definitions at the end of + the document + +lcustom.tex Useful macros and definitions for LaTeX + +lfonts_ams.tex Use AMS symbols in LaTeX +lfonts_ams.readme + +local-suppl.tex Supplement to local guide that describes + lcustom.tex sfwmac.sty tgrind.sty trademarks.sty + xxxcustom.tex xxxslides.sty + +ltugbot.sty for articles to tugboat + +manual Like ``book'' but for manuals + Need to look at ``book'' for documentation + +memo.sty Memo and memo for the record style option +mfr.sty + +merge.sty Form letter option to LaTeX letter style + +mf.sty make Metafont logo's at all sizes + +mitpress.sty a simple MIT Press format + +mitthesis.sty Massachusetts Institute of Technology thesis format +mitthesis-sample.tex + +multibox.sty provides multiple boxes in pictures + +named.sty for use with named.bst + +natsci.sty natural sciences stle style + (BibTeX file in bibtex-style-0.98) + +nl.sty style file customized for Dutch + +nofm.sty for "n of M" style pagination + +nopagenumbers.sty remove page numbers + +overcite.sty Give superscript numbers for citations, compressing + lists to ranges, and move past punctuation + +pagefoots.sty puts footnotes at the bottom of each page + +parskip.sty sets parindent to 0 and puts some glue into + parskip to aid page breaks + +portland.sty environments to switch between portrait mode + and landscape mode + +pslatex Macros to build pslatex, a LaTeX that uses printer + resident PostScript fonts. Requires dvi2ps that + understands PostScript fonts. + +refman.sty document style for reference manuals similar to + the PostScript manual + +remark.sty Like newtheorem but no \it + +res.sty a format for doing resumes by Michael DeCorte +res-sample.tex + +resume.sty a format for doing resumes by Stephen Gildea +resume-sample.tex + +romanneg.sty roman-numbered pages get negative page numbers (useful + when selecting only part of a document to be printed) + +rotate.sty Rotation of TeX output with TeXtures + (and maybe? other PostScript drivers) + +sc21.sty ISO/TC97/SC21 document style option for cover page +sc21-wg1.sty + +schedule.sty Style for generating schedule sheets + +screen.sty helps create a document suitable for screen previewing + +semitic.sty used to set Semitic languages + +sfwmac.sty Useful macros for Unix documentation + +showlabels.sty Shows labels and references to them + +siam SIAM LaTeX style + (BibTeX style in bibtex-style) + +slem.sty Change \sl to \em + +spacecites.sty Modified to give spacing between citations + +subeqn.sty allows related equations to be numbered with the same + number but is further qualified by a,b,c etc. + +subeqnarray.sty allows related eqnarrays to be numbered with the same + number but is further qualified by a,b,c etc. + +subfigure.sty allows related figures to be numbered with the same + number but is further qualified by a,b,c etc. + +supertab.sty allows multipage tabulars + +suthesis.sty Stanford U thesis style + +svma.sty Style for Springer-Verlag reports, multi-author +svsa.sty ditto for single author +svma-doc.tex + +tables.sty Ruled and unruled tables made easy +tables-doc.tex + +tabls.sty Simulate minimum-lineskip glue in tablar environments + +tape files to setup tape libraries + +texnames.sty Define a couple more TeX names + +tgrind.sty Tgrind macros for LaTeX instead of TeX + +threepart.sty Three part page headers + +trademarks.sty Definitions of common trademarks + +twoup.sty change the page sizes so that 2 pages can fit + onto one with the help of dvidvi + +ucthesis U of California thesis style + +ukdate.sty changes the \today command to UK style + +ulem.sty Use underlining for \em-phasis + +usenix.sty For Usenix conference proceedings + +vdm.sty Vienna Development Method LaTeX style +vdm-doc.tex Documentation on above + +verbatimfiles.sty include a file in a verbatim mode + +xxxcustom.tex Supplementary macros for xxx-tex, for some xxx + +xxxslides.sty Supplementary macros for SliTeX, includes slides.sty diff --git a/macros/latex209/contrib/misc/a4letter.sty b/macros/latex209/contrib/misc/a4letter.sty new file mode 100644 index 0000000000..eb0d4f720a --- /dev/null +++ b/macros/latex209/contrib/misc/a4letter.sty @@ -0,0 +1,457 @@ +% This is LETTER.STY in text format, as of April, 14, 1988, +% by D. Heinrich (TH Karlsruhe). +% +% Last modified May, 04, 1988. +% +% According to the german DIN. +% It gives the possibility to add a backaddress to the information +% given in the window and to include a huge address (sender). +% \windowrules and \nowindowrules are possible. +% It's also possible to adapt captions to other languages. +% +% It is based on A4LETTER.STY in text format, as of June 16, 1987. +% letter.sty 17-Jan-86 with modifications +% for DIN-A4 paper + window envelopes, by H.Partl (Wien) +% + +\typeout{} +\typeout{Document Style `letter'.} +\typeout{Modified at University of Karlsruhe - 04. May 1988.} +\typeout{} +\typeout{If you really want to use Lamport's original letter format,} +\typeout{please use the style `aletter'.} +\typeout{} + +{\catcode`\_=12 \gdef\jobname@aux{\jobname.aux}} % .aux or _aux or ... + +\def\@ptsize{0} +\@namedef{ds@10pt}{\def\@ptsize{0}} +\@namedef{ds@11pt}{\def\@ptsize{1}} +\@namedef{ds@12pt}{\def\@ptsize{2}} +\@twosidefalse +\def\ds@draft{\overfullrule 5pt} + +\@options + +\lineskip 1pt \normallineskip 1pt +\def\baselinestretch{1} + +\ifcase \@ptsize\relax + \def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt + \abovedisplayskip 10pt plus2pt minus5pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ plus3pt + \belowdisplayshortskip 6pt plus3pt minus3pt} + \def\small{\@setsize\small{11pt}\ixpt\@ixpt + \abovedisplayskip 8.5pt plus 3pt minus 4pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ plus2pt + \belowdisplayshortskip 4pt plus2pt minus 2pt} + \def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt + \abovedisplayskip 6pt plus 2pt minus 4pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ plus 1pt + \belowdisplayshortskip 3pt plus 1pt minus 2pt} + \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} + \def\tiny{\@setsize\tiny{6pt}\vpt\@vpt} + \def\large{\@setsize\large{14pt}\xiipt\@xiipt} + \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} + \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt} + \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} + \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} +\or + \def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt + \abovedisplayskip 11pt plus3pt minus6pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ plus3pt + \belowdisplayshortskip 6.5pt plus3.5pt minus3pt} + \def\small{\@setsize\small{12pt}\xpt\@xpt + \abovedisplayskip 10pt plus2pt minus5pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ plus3pt + \belowdisplayshortskip 6pt plus3pt minus3pt} + \def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt + \abovedisplayskip 8pt plus 2pt minus 4pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ plus 1pt + \belowdisplayshortskip 4pt plus 2pt minus 2pt} + \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt} + \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt} + \def\large{\@setsize\large{14pt}\xiipt\@xiipt} + \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} + \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt} + \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} + \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} +\or + \def\@normalsize{\@setsize\normalsize{15pt}\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\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt + \abovedisplayskip 10pt plus2pt minus5pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \z@ plus3pt + \belowdisplayshortskip 6pt plus3pt minus3pt} + \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 +\fi + +\normalsize + +% \oddsidemargin 53pt \evensidemargin 53pt +% \marginparwidth 90pt \marginparsep 11pt +% \marginparpush 5pt \topmargin 27pt +% \headheight 12pt \headsep 45pt +% \footheight 12pt \footskip 25pt +% \textheight 505pt \textwidth 365pt +% \columnsep 10pt \columnseprule 0pt +% The above values (letter.sty) are replaced by the following values: + +\oddsidemargin 0in +\evensidemargin 0in +\marginparwidth .08in +\marginparsep .01in +\marginparpush 5pt +\topmargin -35pt +\headheight 12pt +\headsep 25pt +\footheight 12pt +\footskip 25pt +\textheight 8.9in +\textwidth 6.5in +\columnsep 10pt +\columnseprule 0pt +% (Note that these new values use all of the paper, like in Plain TeX, +% but disable the writing of marginpar's. + +\raggedbottom + +\footnotesep 12pt +\skip\footins 10pt plus 2pt minus 4pt + +\floatsep 12pt plus 2pt minus 2pt +\textfloatsep 20pt plus 2pt minus 4pt +\intextsep 12pt plus 2pt minus 2pt +\dblfloatsep 12pt plus 2pt minus 2pt +\dbltextfloatsep 20pt plus 2pt minus 4pt +\@maxsep 20pt +\@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 + +% window for toaddress +\def\@windowrules#1{\gdef\@@windowrules{#1}} +\def\windowrules{\@windowrules{yes}} +\def\nowindowrules{\@windowrules{}} +\windowrules + +\def\backaddress#1{\gdef\@backaddress{#1}} +\backaddress{} + +% \opening is quite different from the original one: +\def\opening#1{\thispagestyle{empty} + \vspace*{-2cm} % upper edge of window <---- + \ifx\@empty\fromaddress \else + \setbox0=\vbox{\raggedright \fromaddress \par \bigskip} + \vbox{\raggedright \fromaddress \par \bigskip} + \vspace{-\ht0} + \vspace{-\dp0} + \vspace{2.25cm} + \ifx\@empty\@@windowrules \hrule width 0pt + \else \hrule width 8cm + \fi + \ifx\@empty\@backaddress \else + \vspace{.75cm} + \setbox1=\vbox{ + \hbox to 8cm{\hss{\scriptsize \@backaddress}\hss}} + \vbox{ + \hbox to 8cm{\hss{\scriptsize \@backaddress}\hss} + \hrule width 8cm} + \vspace{-\ht1} + \vspace{-\dp1} + \hrule width 0pt + \fi + \fi + \ifx\@empty\@backaddress \vspace{5cm} \else % height of window <---- + \vspace{4.25cm} % height of window <---- + \fi + \vbox to 0pt{\vss \raggedright \toname \\ \toaddress \par + \vspace{.75cm}} % vorher .25cm + \bigskip + \ifx\@empty\fromaddress \else + \ifx\@empty\@@windowrules \hrule width 0pt + \else \hrule width 8cm + \fi + \vspace{0.85cm}% vorher 1.4cm + \hspace*{-2cm}\vbox{\hrule width .3cm}\par + \fi + \vspace{1cm} + {\raggedleft \@place\space\@date \par} + \medskip + \vspace{0pt plus 1cm} % to help with page break + #1\par\nobreak} + +\long\def\closing#1{\par\nobreak\vspace{\parskip} + \stopbreaks + {\raggedright + \ignorespaces #1\\[6\parskip] + \ifx\@empty\fromsig + \fromname + \else \fromsig \fi\strut} + \par\bigskip} + +%\def\ps{\par\startbreaks} +\def\ps#1{\par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\rm P.S.: }% + \ignorespaces #1\strut}\par} +\def\cc#1{\par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\rm \ccname: }% <----- + \ignorespaces #1\strut}\par} +\def\ccname{cc} % <----- +\def\encl#1{\par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\rm \enclname: }% <----- + \ignorespaces #1\strut}\par} +\def\enclname{encl} % <----- +\def\stopletter{} + +\def\returnaddress{} +\newcount\labelcount +\def\place#1{\gdef\@place{#1,}} +\def\@place{} +\def\date#1{\gdef\@date{#1}} +\def\@date{\today} + +\def\startlabels{ + \labelcount=0 \baselineskip=0pt \lineskip=0pt + \pagestyle{empty} + \let\@texttop=\relax + \topmargin -50pt + \headsep 0pt + \oddsidemargin -35pt + \evensidemargin -35pt + \textheight 10in + \@colht\textheight \@colroom\textheight \vsize\textheight + \textwidth 550pt + \columnsep 25pt + \xpt + \baselineskip=0pt + \lineskip=0pt + \boxmaxdepth=0pt + \twocolumn\relax} +\def\mlabel#1#2{\setbox0\vbox{\parbox[b]{3.6in}{% + \strut\ignorespaces #2}} + \vbox to 2in{\vss \box0 \vss}} + + + +\long\def\letter#1{\clearpage + \c@page\@ne + \interlinepenalty=200 \@processto{#1}} +\def\endletter{\stopletter\@@par\pagebreak\@@par + \if@filesw + \begingroup + \def\protect{\string} + \let\\=\relax + \def\protect##1{\string##1\space} + \immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname + \\\toaddress}} + \endgroup + \fi} +\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty + \else \@yproc #1@@@\fi} +\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}} +\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}} +\def\stopbreaks{\interlinepenalty \@M + \def\par{\@@par\nobreak}\let\\=\@nobreakcr + \let\vspace\@nobreakvspace} +\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} +\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} +\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}} +\def\startbreaks{\let\\=\@normalcr + \interlinepenalty 200\def\par{\@@par\penalty 200}} + +\def\name#1{\def\fromname{#1}} +\def\fromname{} +\def\signature#1{\def\fromsig{#1}} +\def\fromsig{} +\long\def\address#1{\def\fromaddress{#1}} +\def\fromaddress{} +\def\location#1{\def\fromlocation{#1}} +\def\fromlocation{} +\def\telephone#1{\def\telephonenum{#1}} +\def\telephonenum{} + +\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\endgroup + \if@filesw \immediate\openout\@mainaux=\jobname@aux + \immediate\write\@mainaux{\string\startlabels\string\@startlabels}\fi + \def\do##1{\let ##1\@notprerr} + \@preamblecmds + \let\do\noexpand + \@normalsize\everypar{}} +\def\enddocument{\@checkend{document}\newpage\begingroup + \if@filesw \immediate\closeout\@mainaux + \makeatletter\input \jobname@aux\clearpage + \fi\endgroup\deadcycles\z@\@@end} + +\def\makelabels{\@fileswtrue} +\def\@startlabels{} + + + +% \def\@texttop{\ifnum\c@page=1\vskip 0pt plus .00006fil\relax\fi} +\let\@texttop=\relax + +\def\ps@headings{ + \def\@oddhead{\sl \headtoname\ \ignorespaces\toname \hfil \today % <-- + \hfil Seite \thepage}\def\@oddfoot{}} +\def\headtoname{To} % <----- +\def\ps@empty{ + \def\@oddhead{}\def\@oddfoot{}\def\@evenhead{}\def\@evenfoot{}} + +\def\ps@firstpage{\def\@oddhead{}\def\@oddfoot{\raisebox + {-45pt}[0pt]{\hbox to \textwidth + {\hspace*{100pt}\xpt\fromlocation \hfill + \telephonenum}}\hss}\def\@evenhead{}\def\@evenfoot{}} + +\def\ps@plain{ + \def\@oddhead{}\def\@oddfoot{\rm\hfil\thepage + \hfil}\def\@evenhead{}\let\@evenfoot\@oddfoot} + +\parskip .7em +\parindent 0pt +\topsep .4em +\partopsep 0pt +\itemsep .4em + +\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty + + + +\leftmargini 2.5em +\leftmarginii 2.2em +\leftmarginiii 1.87em +\leftmarginiv 1.7em +\leftmarginv 1em +\leftmarginvi 1em +\leftmargin\leftmargini +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\labelsep 5pt +\parsep 0pt + +\let\@listi\relax +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep .2em + \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} + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\Alph{enumiv}.} +\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 -15pt\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 15pt}\item[]} +\let\endverse\endlist +\def\quotation{\list{}{\listparindent 1.5em + \itemindent\listparindent + \rightmargin\leftmargin}\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}} + +\arraycolsep 5pt +\tabcolsep 6pt +\arrayrulewidth .4pt +\doublerulesep 2pt +\tabbingsep \labelsep +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt \fboxrule = .4pt + +\def\footnoterule{\kern-1\p@ + \hrule width .4\columnwidth + \kern .6\p@} + +\long\def\@makefntext#1{\noindent \hangindent 5pt\hbox + to 5pt{\hss $~{\@thefnmark}$}#1} + + +\c@topnumber=2 +\def\topfraction{.7} +\c@bottomnumber=1 +\def\bottomfraction{.3} +\c@totalnumber=3 +\def\textfraction{.2} +\def\floatpagefraction{.5} +\c@dbltopnumber= 2 +\def\dbltopfraction{.7} +\def\dblfloatpagefraction{.5} + +\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} + + +\smallskipamount=.5\parskip +\medskipamount=\parskip +\bigskipamount=2\parskip + +\ps@plain +\pagenumbering{arabic} +\onecolumn +\@fileswfalse + diff --git a/macros/latex209/contrib/misc/accarticle.sty b/macros/latex209/contrib/misc/accarticle.sty new file mode 100644 index 0000000000..f284020dc7 --- /dev/null +++ b/macros/latex209/contrib/misc/accarticle.sty @@ -0,0 +1,184 @@ +% ACCarticle.sty 6-FEB-92 balemi@aut.ethz.ch + +\typeout{Document Style `ACCarticle' <6-FEB-92>.} +% +% use with +% \title{} \author{} \maketitle \begin{abstract}..\end{abstract} + +% change sizes and margins +\input article.sty +%\input IEEE1\@ptsize.sty\relax +%\twocolumn + +\textheight 238mm +\textwidth 177mm +\columnsep 15mm +\voffset -20mm +\hoffset -30mm +\twocolumn +\sloppy +\flushbottom +\parindent 0pt +\parskip 1em +%\oddsidemargin 1.2truein +%\evensidemargin 1.2truein +%\topmargin .6 truein + +% added \firstpagestyle so maketitle doesn't output a number if you +% don't want it to +\newcommand{\firstpagestyle}[1]{\def\fpgstyle{\thispagestyle{#1}}} +\firstpagestyle{plain} +\def\maketitle{\par + \begingroup +% \def\thefootnote{\fnsymbol{footnote}} +% fnsymbol box size changed 9/9/89 rhr +% \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} + \def\@makefnmark{\hbox{$^{\@thefnmark}$\hss}} + \if@twocolumn + \twocolumn[\@maketitle] + \else \newpage + \global\@topnum\z@ \@maketitle \fi\fpgstyle\@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\bf \@title \par} \vskip 1.5em {\large \lineskip .5em + \begin{tabular}[t]{c}\@author + \end{tabular}\par} +% \vskip 1em {\@date} + \end{center} + \par + \vskip 1.5em} + +\def\abstract{\begin{center}{\bf Abstract}\end{center} \vskip -\parskip} +\def\endabstract{\par} + +\def\thepart{\Roman{part}} +\def\thesection {\arabic{section}.} +\def\thesubsection {\thesection\arabic{subsection}.} +\def\thesubsubsection {\thesubsection\arabic{subsubsection}} + +\def\@sect#1#2#3#4#5#6#7[#8]#9{\ifnum #2>\c@secnumdepth + \def\@svsec{}\else + \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 0.5em }\fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \setbox1=\hbox{\@svsec #8} +% changed to center sect titles + \ifdim \wd1>\columnwidth + \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8} + \else + \ifnum #2 > 1 + {\@svsec #8} + \else + \centerline{\@svsec #8} + \fi + \fi + \endgroup + \csname #1mark\endcsname{#8}\addcontentsline + {toc}{#1}{\ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}\fi + #8}\else + \def\@svsechd{#6\hskip #3\@svsec #9#7\csname #1mark\endcsname + {#8}\addcontentsline + {toc}{#1}{\ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}\fi + #8}}\fi + \@xsect{#5}} + +\def\@startsection#1#2#3#4#5#6#7{\if@noskipsec \leavevmode \fi + \par \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi + \if@nobreak \everypar{}\else + \addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi + \vskip -\parskip + \@ifstar + {\@ssect{#1}{#2}{#3}{#4}{#5}{#6}{#7}} + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}{}{#7}}}} + +\def\@ssect#1#2#3#4#5#6#7#8{\@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6 +% \@hangfrom{\hskip #3}{\interlinepenalty \@M #8#7} + \setbox1=\hbox{\@svsec #8} +% changed to center sect titles + \ifdim \wd1>\columnwidth + \@hangfrom{\hskip #3}{\interlinepenalty \@M #8#7} + \else + \ifnum #2 > 1 + \vskip -\parskip + \leftline{#8#7} + \else + \centerline{#8#7} + \fi + \fi + \endgroup + \else \def\@svsechd{#6\hskip #3\relax #8#7}\fi + \@xsect{#5}} + +\def\@xsect#1{\@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \vskip -\parskip + \@afterheading + \else \global\@nobreakfalse \global\@noskipsectrue + \everypar{\if@noskipsec \global\@noskipsecfalse + \clubpenalty\@M \hskip -\parindent + \begingroup \@svsechd \endgroup \unskip + \hskip -#1 + \else + \clubpenalty \@clubpenalty + \everypar{}\fi}\fi\ignorespaces} + +\def\section{\@startsection{section}{1}{\z@} +{6.5ex plus 0.5ex minus 0.5ex}{3ex plus 0.3ex}{\bf}{}} +\def\subsection{\@startsection{subsection}{2}{\z@}{3.0ex plus +.3ex minus .1ex}{0.01ex plus .0ex}{\hskip -.7ex\bf}{}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.0ex plus +.3ex minus .1ex}{0ex plus .0ex}{\hskip 2em\bf}{:\ \ \ }} + + +\def\QED{~\rule[-1pt]{5pt}{5pt}\par\medskip} +\newenvironment{proof}{{\bf Proof: \ }}{ \hfill \QED} +\def\@begintheorem#1#2{\vskip -\parskip\it \trivlist + \item[\hskip \labelsep{\bf #1\ #2:}]} +\def\@opargbegintheorem#1#2#3{\vskip -\parskip\it \trivlist + \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]} + + + +\def\thebibliography#1{\subsection*{References\@mkboth + {REFERENCES}{REFERENCES}}\parskip 0pt \list + {[\arabic{enumi}]\hfill}{\labelwidth 7mm \leftmargin\labelwidth + \itemindent 9mm +\advance\leftmargin -7mm +\itemsep -1mm + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + +\def\ps@plain{\let\@mkboth\@gobbletwo + \def\@oddhead{}\def\@oddfoot{\hfil + \@footernote\ \qquad \thepage} +\def\@evenhead{}\def\@evenfoot{ +\thepage\qquad \@footernote\ \hfil } +} + +\def\footernote#1{\def\@footernote{#1}} +\footernote{} + + +% set up default pagestyle +\pagestyle{plain} + + diff --git a/macros/latex209/contrib/misc/acmproc.sty b/macros/latex209/contrib/misc/acmproc.sty new file mode 100644 index 0000000000..f4092a3dfe --- /dev/null +++ b/macros/latex209/contrib/misc/acmproc.sty @@ -0,0 +1,186 @@ +% ACMproc.sty +% PROC DOCUMENT STYLE -- Released 4 September 1986 +% for LaTeX version 2.09 +% Copyright (C) 1985 by Leslie Lamport +% +% This is a style option for use with the article style to produce +% camera-ready conference proceedings. + +\typeout{Document Style Option 'ACMproc'} + + + +% **************************************** +% * PAGE LAYOUT * +% **************************************** +% +% All margin dimensions measured from a point one inch from top and side +% of page. Dimensions shrink by about 2 percent + +% SIDE MARGINS (ACM instructions) + \oddsidemargin -0.25in % Note that \oddsidemargin = \evensidemargin + \evensidemargin -0.25in +% to print on a 8.5''x11'' page manually feeded through the +% LaserWriter +\advance\oddsidemargin by -4.5mm +\advance\evensidemargin by -4.5mm + +% VERTICAL SPACING (ACM instructions) + % Top of page: +\topmargin -0.25in % Nominal distance from top of page to top of + % box containing running head. +\headheight 12pt % Height of box containing running head. +\headsep 25pt % Space between running head and text. +\advance\topmargin by -37pt % subtract \headheight and \headsep from \topmargin +\advance\topmargin by -1.7cm % ??? +% \topskip = 10pt % '\baselineskip' for first line of page. + % Bottom of page: +\footskip 100pt % Distance from baseline of box containing foot + % to baseline of last line of text. + + +% DIMENSION OF TEXT (ACM instructions) + +\textheight 9in % Height of text (including footnotes and figures, + % excluding running head and foot). +\advance\textheight by 5mm +\textwidth 7in % Width of text line. + % For two-column mode: +\columnsep .333in % Space between columns +\columnseprule 0pt % Width of rule between columns. + +% ADJUSTMENT FOR A4 PAGE SIZE 900403/BjL + +\hoffset=3mm +\voffset=18mm + + +% **************************************** +% * PAGE STYLES * +% **************************************** +% +% Use \markright (or \markboth) to put an identification in the +% lower left. The page number is printed in the lower right. + + +\def\@oddhead{}\def\@evenhead{} +\def\@oddfoot{\rm\rightmark \hfil Page \thepage} +\def\@evenfoot{\@oddfoot} + + +% **************************************** +% * TITLE * +% **************************************** +% + +% This definition of \maketitle taken from article.sty, except +% it does not do a \thispagestyle{plain}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%% ATTENTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%% JJL HACK %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Un hack horrible qui change 2.25 en 1.20 pour faire des titres +% moins hauts REVISED to 1.50 % MJ: revised to 6cm +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\maketitle{\par + \begingroup + \def\thefootnote{\fnsymbol{footnote}} + \def\@makefnmark{\hbox + to 0pt{$^{\@thefnmark}$\hss}} + \twocolumn[\@maketitle] + \@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} + +\def\@maketitle{\vbox to 6cm{\hsize\textwidth + \linewidth\hsize \vfil \centering + {\LARGE \@title \par} % Title set in \LARGE size. MJ: correction + % de la correction + \vskip 2em % Vertical space after title. + {\large \begin{tabular}[t]{c}\@author \end{tabular}\par} + \vskip 2em % MJ: leave at least that place after authors + \vfil}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%% fin du hack %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The \copyrightspace command is used to produce a blank space in the first +% column where a copyright notice belongs. It works by producing a +% blank footnote of the appropriate size. Note that it should appear +% after any \footnote commands that produce footnotes for the first +% column. + +% modified from 97pt to .75in, to satisfy acm requirement [0] +% changed to 1in after \advance'ing\textheight by 5mm +\def\copyrightspace{\footnotetext{\mbox{}\vrule height 1in width 0pt}} + +% Section commands changed (smaller font, smaller spaces around) 900403/BjL + +\def\section{\@startsection {section}{1}{\z@}{-3.25ex plus -1ex minus +-.2ex}{1.5ex plus .2ex}{\bf}} + +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\bf}} + +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus +-1ex minus -.2ex}{1.5ex plus .2ex}{\bf}} + +% The abstract Environment (changed 900403/BjL) + +\def\abstract{\section*{ABSTRACT}} +\def\endabstract{\par} + +% Bibliography 900403/BjL + +\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} + +% Table of contents 900403/BjL + +\def\tableofcontents{\section*{CONTENTS\@mkboth{CONTENTS}{CONTENTS}} + \@starttoc{toc}} + +% List of figures 900403/BjL + +\def\listoffigures{\section*{LIST OF FIGURES\@mkboth + {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}} + +% List of tables 900403/BjL + +\def\listoftables{\section*{LIST OF TABLES\@mkboth + {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}} + +% Index 900403/BjL + +\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} + + +% **************************************** +% * INITIALIZATION * +% **************************************** +% +% Default initializations + +\twocolumn +\sloppy +\parindent 1em +\leftmargini 2em +\leftmargin\leftmargini +\leftmarginv .5em +\leftmarginvi .5em +\flushbottom diff --git a/macros/latex209/contrib/misc/acronym.sty b/macros/latex209/contrib/misc/acronym.sty new file mode 100644 index 0000000000..2d21d2b557 --- /dev/null +++ b/macros/latex209/contrib/misc/acronym.sty @@ -0,0 +1,105 @@ +% @(#)acronym.sty 1.2 9/11/90 Copyright 1989 ICL +% +% Author: John Kewley +% +% This style file contains macros for acronyms. +% +% Two styles are supported - footnote and parenthesised. +% This can be switched using \foottrue for footnotes or +% \footfalse (default) for parenthesised. +% +% Parenthesised acronyms are used as follows: +% Declare acronym using: +% \newacronym{latex name}{expanded name}[printed name] +% (The printed name defaults to latex name). +% e.g. \acronym{GNU}{GNU Not Unix}[\sc{gnu}] +% When acronym is first used (\GNU), the following is printed: +% expanded name (printed name) +% GNU Not Unix (GNU) +% Subsequent use yields only the printed name. +% +% Footnote acronyms work in the same way except when they are first used: +% printed name\footnote{expanded name} +% +% Acronyms can be followed by an optional argument: +% \newacronym{PE}{Processing Element} +% \PE['s] gives +% Processing Element's (PE's) +% +% They can also be followed by s to signify the plural: +% \newacronym{PE}{Processing Element} +% \PEs gives +% Processing Elements (PEs) +% +% If they are to be referred to before they are first used, in a title say +% When full expansion might not look good, or in a section heading where +% the definition would not be wanted in the contents list, short and long forms +% of the acronym are defined. +% +% e.g. \section{\GNUshort\ Comings} +% +% The long version can be used where a repetition of the full name is required. +% +% Quite often acronyms are defined in a Glossary, Terminology or +% Table of Acronyms. The item command is provided for this: +% +% \GNUitem gives +% \item[GNU] GNU Not Unix +% +% Whenever an acronym is defined using \newacronym, all the above forms are +% available. +% +% John Kewley ICL +% +% jk@r6.cs.man.ac.uk or +% jk@nw.stl.stc.co.uk + +% Auxiliary definitions: + +% \ifnextchar +%\def\ifnextchar#1#2#3{\@ifnextchar#1{#2}{#3}} + +\def\namegdef#1{\expandafter\gdef\csname #1\endcsname} +\def\namedef#1{\expandafter\def\csname #1\endcsname} +\def\nameuse#1{\csname #1\endcsname} + +\newif\iffoot \footfalse + +\def\acitemx#1#2[#3]{\item [#1#3] #2#3} +\def\acitem#1#2{\@ifnextchar [{\acitemx{#1}{#2}}{\acitemx{#1}{#2}[]}} +\def\acfootx#1#2[#3]{#1#3\footnote{#2#3}} +\def\acfoot#1#2{\@ifnextchar [{\acfootx{#1}{#2}}{\acfootx{#1}{#2}[]}} +\def\aclongx#1#2[#3]{#1#3 (#2#3)} +\def\aclong#1#2{\@ifnextchar [{\aclongx{#1}{#2}}{\aclongx{#1}{#2}[]}} +\def\acshortx#1[#2]{#1#2} +\def\acshort#1{\@ifnextchar [{\acshortx{#1}}{\acshortx{#1}[]}} +\def\acronx#1#2[#3]{\iffoot\acfoot{#1}{#2}[#3]\else\aclong{#1}{#2}[#3]\fi} +\def\acron#1#2{\@ifnextchar [{\acronx{#1}{#2}}{\acronx{#1}{#2}[]}} + +\def\newacaux#1#2{\namegdef{#1x}[##1]{#2##1}% + \namegdef{#1}{\protect\@ifnextchar [{\protect\nameuse{#1x}}{#2}}} +\def\newac#1#2[#3]{% + \namegdef{#1item}{\acitem{#3}{#2}} + \namegdef{#1items}{\acitem{#3s}{#2s}} + \namegdef{#1long}{\protect\aclong{#2}{#3}} + \namegdef{#1longs}{\protect\aclong{#2s}{#3s}} + \namegdef{#1short}{\protect\acshort{#3}} + \namegdef{#1shorts}{\protect\acshort{#3s}} + \namegdef{#1foot}{\protect\acfoot{#3}{#2}} + \namegdef{#1foots}{\protect\acfoot{#3s}{#2s}} + \namegdef{#1x}[##1]{\acron{#2##1}{#3##1}\newacaux{#1}{#3}} + \namegdef{#1s}{\protect\nameuse{#1x}[s]} + \namegdef{#1}{\protect\@ifnextchar [{\protect\nameuse{#1x}}% + {\protect\acronx{#2}{#3}[]\protect\newacaux{#1}{#3}}}} + +\def\termit#1#2[#3]{\newac{#1}{#2}[#3]\acitem{#3}{#2}} +\def\termitem#1#2{\@ifnextchar [{\termit{#1}{#2}}{\termit{#1}{#2}[#1]}} + +\def\newte#1#2[#3]{\namegdef{#1item}{\acitem{#3}{#2}}} +\def\newterm#1#2{\protect\@ifnextchar [{\newte{#1}{#2}}{\newte{#1}{#2}[#1]}} + +% \newacronym +% #1 : short name +% #2 : long name +% [#3] : optional printed name +\def\newacronym#1#2{\@ifnextchar [{\newac{#1}{#2}}{\newac{#1}{#2}[#1]}} diff --git a/macros/latex209/contrib/misc/add-wes.sty b/macros/latex209/contrib/misc/add-wes.sty new file mode 100644 index 0000000000..857ca00398 --- /dev/null +++ b/macros/latex209/contrib/misc/add-wes.sty @@ -0,0 +1,802 @@ +% Save file as: ADD-WES.STY Source: FILESERV@SHSU.BITNET +% Posted by pauld@cs.washington.edu (Paul Barton-Davis) to comp.text.tex +% on 23 Aug 91 20:09:12 GMT +% Original text accompanying post follows \endinput at bottom of file +%% addison-wesley.sty +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% A `book' style conforming (just!) to the Addison-Wesley house style +%% Paul Barton-Davis <pauld@cs.washington.edu> December 1988 +%% +%% v1.05 nmm 29-jun-89 - include notes at head of index +%% v1.04 nmm 21-jun-89 - change 'part' handling +%% v1.03 pad 25-feb-89 - added `cexample' and `wexample' environments; fixed +%% error in `mycaption' which dropped figure +%% number when caption length > hsize. +%% v1.02 pad 15-feb-89 - added 'rhfig' to produce figures with captions +%% alongside instead of underneath, and 'mycaption' to +%% give nice captions. +%% v1.01 pad xx-jan-89 - change indents for display envts. +%% +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Copyright (c): +%% Freely copy, modify and redistribute on condition that this +%% copyright notice remains on all such copied, modified or +%% distributed versions. +%% +%% Portions of this file derived from material written by +%% Leslie Lamport. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% NOTE: +%% +%% The author disclaims more or less all responsibility for the design +%% decisions implicitly represented in this file. This LaTeX +%% documentstyle was implememented to meet an external design +%% specification, and its existence neither condones or decries that +%% specification. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% TO DO: +%% +%% right floating figures (properly) +%% references +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\typeout% +{Document Style `Addison-Wesley Book' v1.05 nmm 29-jun-89} + +%% MATERIAL FROM BOOK.STY + +\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}} +\@namedef{ds@12pt}{\def\@ptsize{2}} +\@twosidetrue \@mparswitchtrue \def\ds@draft{\overfullrule 5pt} +\@options +\input bk1\@ptsize.sty\relax + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\Alph{enumiv}.} +\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\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 {chapter} +\newcounter {section}[chapter] +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] + +\def\thepart {\arabic{part}} +\def\thechapter {\arabic{chapter}} +\def\thesection {\thechapter.\arabic{section}} +\def\thesubsection {\thesection.\arabic{subsection}} +\def\thesubsubsection {\thesubsection .\arabic{subsubsection}} +\def\theparagraph {\thesubsubsection.\arabic{paragraph}} +\def\thesubparagraph {\theparagraph.\arabic{subparagraph}} +\def\@chapapp{Chapter} + +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{2} + +\def\tableofcontents{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{Contents\@mkboth{CONTENTS}{CONTENTS}} + \@starttoc{toc}\if@restonecol\twocolumn\fi} +\def\l@part#1#2{\addpenalty{-\@highpenalty} + \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\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else +% \vskip \z@ plus .2pt + {\hangindent #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + #4\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep + mu$}\hfill \nobreak \hbox to\@pnumwidth{\hfil\rm #5}\vskip -\parskip +\par}\fi} + +\def\l@chapter#1#2{\pagebreak[3] + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par + \endgroup} +\def\l@section{\@dottedtocline{1}{1.5em}{2.3em}} +\def\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}} +\def\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} +\def\l@paragraph{\@dottedtocline{4}{10em}{5em}} +\def\l@subparagraph{\@dottedtocline{5}{12em}{6em}} +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{List of Figures\@mkboth + {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}\if@restonecol\twocolumn + \fi} +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{List of Tables\@mkboth + {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}\if@restonecol\twocolumn + \fi} +\let\l@table\l@figure + +\def\thebibliography#1{\chapter*{Bibliography\@mkboth + {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\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@ +\chaptermark{Index}\columnsep 35pt\twocolumn[\@makeschapterhead{Index}In this index, page numbers are shown +in {\bf bold} type to indicate a major source of information about the item +being indexed. Page numbers in {\it italics} indicate a definition.\vskip 1.5cm] + \@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@} +\@addtoreset{footnote}{chapter} +\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}[chapter] +\def\thefigure{\thechapter.\@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}[chapter] +\def\thetable{\thechapter.\@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{\begin{titlepage} + \let\footnotesize\small + \let\footnoterule\relax + \setcounter{page}{0} + \null + \vfil + \vskip 60pt + {\Huge\sf \@title} \vskip 36pt + {\large \@author} + \vfil + \end{titlepage} + \setcounter{footnote}{0} + \let\maketitle\relax} + +\mark{{}{}} + +\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} + +\@addtoreset{equation}{chapter} +\def\theequation{\thechapter.\arabic{equation}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FONTS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Use PostScript fonts (Times as default) +%% For newer LaTeX's, you can simply insert a new version of +%% the font definitions here. + +\input{psdef.sty} +\input{times.sty} + +%% redefine \LARGE to be 24pt (more in line with A-W's font sizes) + +\def\LARGE{\@setsize\LARGE{24pt}\xxpt\@xxpt} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PAGE DIMENSIONS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\textwidth 15truecm +\textheight 22.5truecm +\baselineskip 14truept +\oddsidemargin 1cm +\evensidemargin 1cm +\topmargin 0cm + +%% skip sizes + +\parskip 5pt plus 1pt minus 0.5pt + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% RUNNING HEADERS & FOOTERS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\headerfont{\normalsize\it} +\newdimen\headerspacer +\headerspacer 1truecm + +\def\ps@headings + { + \let\@mkboth=\@gobbletwo + \def\@oddhead{\hbox to \textwidth + {\hfil {\headerfont \@chaptername% + \hskip \headerspacer \thepage}}} + \def\@oddfoot{\relax} + + \if@twoside + \def\@evenhead{\hbox to \textwidth + {{\headerfont \thepage% + \hskip \headerspacer \the@title} \hfil}} + \def\@evenfoot{\relax} + \else + \def\@evenhead{\relax} + \def\@evenfoot{\relax} + \fi + } + +%% Addison-Wesley `plain' headings (for chapter pages - just put the +%% page number in the bottom right corner) + +\def\ps@plain + { + \let\@mkboth=\@gobbletwo + \def\@oddhead{\relax} + \def\@oddfoot{\hbox to \textwidth {\hfil \headerfont \thepage}} + + \if@twoside + \def\@evenhead{\relax} + \def\@evenfoot{\hbox to \textwidth {\headerfont \thepage \hfil}} + \else + \def\@evenhead{\relax} + \def\@evenfoot{\hbox to \textwidth {\headerfont \thepage \hfil}} + \fi + } + +\def\the@title{\@title} +\def\@title{} %% This is reset by a \title command in the text +\def\@chaptername{} %% This is reset by a \chapter command in the text + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% ENVIRONMENTS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% new environments, or new definitions of old ones +%% +%% - example : for displaying computer interaction +%% - wexample : as above, but full width +%% - cexample : as above, but centered +%% - pseudocode : for displaying pseudo-code +%% - outputstuff : for displaying computer output +%% - description : like description, but with equal left & right indents +%% - itemize : as above, for itemized lists +%% - enumerate : as above, for enumerated lists +%% - preface : for prefaces +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% EXAMPLE environment +%% + +\def\examplefont{\tb} %% font (& style) used for all example environments +\newdimen\exampletopsep %% white space to leave above an example +\exampletopsep\parskip + +\def\example{\list{}{% +\topsep\exampletopsep +\rightmargin\leftmargin +\examplefont} +\item[]} + +\let\endexample\endlist + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% FULL WIDTH EXAMPLE ENVIRONMENT +%% + +\def\wexample{\list{}{% +\topsep\exampletopsep +\leftmargin 0pt +\rightmargin \leftmargin +\examplefont} +\item[]} + +\let\endwexample\endlist + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% CENTERED EXAMPLE ENVIRONMENT +%% + +\def\cexample{% +\begin{center} +\examplefont} + +\def\endcexample{\end{center}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% PSEUDO-PSUEDOCODE ENVIRONMENT +%% +%% usage: + +%% \begin{pseudocode} +%% if (test clause) \\ +%% \> action statement \\ +%% else \\ +%% \> alternative \\ +%% endif +%% \end{pseudocode} + +%% extra levels of indentation can be achieved with additional \>'s. + +\def\pseudocode{\list{}{% +\topsep \exampletopsep +\rightmargin \leftmargin +\examplefont} +\item[] +\begin{tabbing} +\hskip 1cm \= \hskip 1cm \= \hskip 1cm \= \hskip 1cm \= \hskip 1cm \= \kill} + +\def\endpseudocode{\endtabbing\endlist} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% OUTPUTSTUFF ENVIRONMENT +%% +%% for displaying the output from computer interaction + +\def\outputfont{\op} %% font to use for outputstuff +\newdimen\outputstufftopsep %% space to leave above outputstuff +\outputstufftopsep\parskip + +\def\outputstuff{\list{}{% +\rightmargin \leftmargin +\topsep\outputstufftopsep +\outputfont} +\item[]} + +\let\endoutputstuff\endlist + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% DESCRIPTION ENVIRONMENT +%% +%% redefine the `description' environment +%% to give equal right and left margins, +%% and parametize its topsep + +\newdimen\lrdesctopsep %% space to leave above a description +\lrdesctopsep\parskip + +\def\description{\list{}{% +\topsep\lrdesctopsep +\rightmargin\leftmargin +\itemindent -\leftmargin +\divide\itemindent by 2 +\labelwidth\z@ +\let\makelabel\descriptionlabel +}} + +\let\enddescription\endlist + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% ITEMIZED LIST ENVIRONMENT +%% + +\def\itemize{% +\ifnum \@itemdepth >3% + \@toodeep% +\else% + \advance\@itemdepth \@ne% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \list{\csname\@itemitem\endcsname}% + {\def\makelabel##1{\hss\llap{##1}}% + \rightmargin\leftmargin}% +\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% ENUMERATED LIST ENVIRONMENT +%% + +\def\enumerate{% +\ifnum \@enumdepth >3% + \@toodeep% +\else + \advance\@enumdepth \@ne% + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \list{\csname label\@enumctr\endcsname}% + {\usecounter{\@enumctr}% + \def\makelabel##1{\hss\llap{##1}}% + \rightmargin\leftmargin}% +\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% PREFACE ENVIRONMENT +%% +%% basically just uses roman page numbering, with a plain +%% pagestyle, and ships out the page(s) when done. +%% +%% NB. should really save current pagenumbering and style, +%% rather than just switching back to arabic/headings +%% when done + +\def\preface{% +\clearpage +\pagenumbering{roman} +\vbox to \chapterboxsize {% + \noindent + {\LARGE\hb Preface} + \vfill} +\pagestyle{plain} +\noindent + +} + +\def\endpreface{% +\clearpage +\pagenumbering{arabic} +\pagestyle{headings} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% SECTIONING +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Boiler plate material for sectioning, parametizing all +%% spacing, style and font information for users who want +%% to modify these on the fly (not that they're encouraged to). + +\newdimen\abovesectionskip +\newdimen\belowsectionskip +\newdimen\abovesubsectionskip +\newdimen\belowsubsectionskip +\newdimen\abovesubsubsectionskip +\newdimen\belowsubsubsectionskip +\newdimen\baselineskiptwice + +\baselineskiptwice=\baselineskip +\multiply\baselineskiptwice by 2 + +\abovesectionskip=-\baselineskiptwice +\belowsectionskip=\baselineskip + +\abovesubsectionskip=-\baselineskip +\belowsubsectionskip=6pt + +\abovesubsubsectionskip=-\baselineskip +\belowsubsubsectionskip=4truept + +\def\sectionfont{\large\hb} +\def\subsectionfont{\normalsize\hb} +\def\subsubsectionfont{\normalsize\ho} + +%% prevent subsubsections and below being numbered + +\setcounter{secnumdepth}{2} + +%% now define the sectioning commands + +%% PART is an exception, in that it doesn't use +%% \@startsection, but instead just throws out a recto +%% page with a Part number and associated rubbish with it. + +\def\part#1{% +\cleardoublepage +\thispagestyle{empty} +\refstepcounter{part} +\vbox to \vsize{% + \vskip 60pt + \hbox to \textwidth{\hfil\Huge\hb Part \thepart \hfil} + \vskip 2cm + \begin{center} + {\LARGE\hb #1} + \end{center} + \vfill} +\newpage +} + +\def\section%% +{\@startsection{section}{1}% + {\z@}{\abovesectionskip}{\belowsectionskip}% + {\sectionfont}} + +\def\subsection%% +{\@startsection{subsection}{2}% + {\z@}{\abovesubsectionskip}{\belowsubsectionskip}% + {\subsectionfont}} + +\def\subsubsection%% +{\@startsection{subsubsection}{3}% + {\z@}{\abovesubsubsectionskip}{\belowsubsubsectionskip}% + {\subsubsectionfont}} + +%% \chapter - redefine to ensure chapters begin on a recto +%% page; use `awplain' for chapter pages; define the@chapter as the +%% chapter + +\def\cleartoversopage{\clearpage \ifodd\c@page \hbox{} \newpage\fi} + +\def\chapter{%% + \cleardoublepage%% + \thispagestyle{plain}%% + \global\@topnum\z@ + \@afterindentfalse%% + \secdef\@chapter%% + \@schapter} + +\def\chaptermark#1{\gdef\@chaptername{#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% CAPTIONS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \mycaption{figure number}{subnumber}{caption} +%% +%% Mysteriously, this macro seems to use absolute figure numbers +%% rather than relying on LaTeX to figure it out. Now, in 1991, I +%% don't know why this is. It was probably part of the general +%% book production scheme, which need to refer to figures by +%% and not by number; I just don't know. It does, however, allow +%% subnumbers (like 1.a, 1.b and 1.c). + +\def\mycaption#1#2#3{% + \setcounter{\@captype}{#1} + \addcontentsline{\csname + ext@\@captype\endcsname}{\@captype}{\protect\numberline{\csname + the\@captype\endcsname}{\ignorespaces #3}} + \par + \begingroup + \@parboxrestore + \vskip 10pt + \setbox\@tempboxa\hbox{{\bf Figure \csname the\@captype\endcsname#2} + #3} + \ifdim \wd\@tempboxa > \hsize + \setbox\@tempboxa\hbox{% + \bf Figure \csname the\@captype\endcsname#2\ }% + \@tempdima \textwidth + \advance\@tempdima by -\wd\@tempboxa + \hbox{% + \box\@tempboxa + \vtop{\hsize \@tempdima #3}} + \else + \par \hbox to \hsize{% + \hfil\box\@tempboxa\hfil} + \fi + \endgroup} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% RIGHT-HAND INDENTED FIGURES +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newdimen\@txtwd +\newdimen\@figwd +\newdimen\rhfigindent +\rhfigindent 1cm + +%% \rhfig{HEIGHT}{WIDTH}{FIGURE NUMBER}{SUBNUMBER}{CAPTION} + +\def\rhfig#1#2#3#4#5{% + \begin{figure}[htb] +%% +%% set up the figure counter and add stuff to the aux file +%% + \setcounter{\@captype}{#3} + \addcontentsline{\csname + ext@\@captype\endcsname}{\@captype}{\protect\numberline{\csname + the\@captype\endcsname}{\ignorespaces #5}} +%% +%% now adjust \@txtwd to give the width of the caption +%% + \@txtwd \textwidth + \@figwd #2 + \advance \@txtwd by -\@figwd + \advance \@txtwd by -\rhfigindent + \setbox\@tempboxa\hbox{\bf Figure \csname the\@captype\endcsname#4\ } + \advance \@txtwd by -\wd\@tempboxa +%% +%% now set up a pair of hboxed vboxes with the caption in the right hand +%% one and the figure (space) in the left. +%% + \hbox to \textwidth{% + \hbox{\hskip \rhfigindent% + \vtop to #1{\vfill + \hbox{% + \box\@tempboxa + \vtop{\hsize\@txtwd #5}} + \vfill}} + \hfill + \hbox to \@figwd{ + \vtop{\vskip #1}}} + \end{figure}} + +\newdimen\@figwd +\newdimen\@txtwd +\newdimen\@blah + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% CHAPTER HEADINGS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newdimen\chapterboxsize +\newdimen\chapternumberwidth +\newdimen\chaptertitlewidth + +%% set total depth of chapter heading to be 14 lines + +\chapterboxsize \baselineskip \multiply\chapterboxsize by 14 + +\chapternumberwidth 4cm %% width for "Chapter <number>" +\chaptertitlewidth \textwidth +\advance \chaptertitlewidth by -\chapternumberwidth + +\def\chapterheadfont{\LARGE\hb}% +\def\chapternumfont{\LARGE\ho}% + +\def\@makechapterhead#1{% + \vbox to \chapterboxsize {% + \parindent=0pt% + \hbox to \textwidth{% + \vtop{\hsize \chapternumberwidth \chapternumfont + \@chapapp{} \thechapter} + \hss + \vtop{\baselineskip=26pt \hsize \chaptertitlewidth + \chapterheadfont \raggedright #1}} + \vfill}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% BOXES (for buttons and such things) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% First a useful construct for putting `struts' into hboxes +%% to fix their height properly for boxing up. +%% + +\newbox\@adbox%% box with ascenders and descenders present. +\def\@adstrut{% +\setbox\@adbox\hbox{bp}%% do this here to make sure we get the current font +\vrule height \ht\@adbox width 0pt depth \dp\@adbox} + +%% \fbox - a new version with better spacing than lamport's +%% +%% We just set up two boxes - one the same as the argument, +%% and the other with its height adjusted to include ascenders and +%% descenders. It is this box that is used to set the dimensions +%% of the frame around the first (I hope). + +\long\def\fbox#1{\leavevmode\setbox\@tempboxa\hbox{#1\@adstrut} + \@tempdima 0pt \advance\@tempdima \fboxsep + \advance\@tempdima \dp\@tempboxa + \hbox{\lower \@tempdima\hbox + {\vbox{\hrule \@height \fboxrule + \hbox{\vrule \@width \fboxrule \hskip\fboxsep + \vbox{\vskip\fboxsep \box\@tempboxa\vskip\fboxsep}\hskip + \fboxsep\vrule \@width \fboxrule} + \hrule \@height \fboxrule}}}} + +%% STUFF TO START WITH + +\ps@headings +\pagenumbering{arabic} +\onecolumn + +\endinput + +From: pauld@cs.washington.edu (Paul Barton-Davis) +Newsgroups: comp.text.tex +Subject: Addison-Wesley.sty (documentstyle provided) +Message-ID: <1991Aug23.200912.1556@beaver.cs.washington.edu> +Date: 23 Aug 91 20:09:12 GMT +Sender: news@beaver.cs.washington.edu (USENET News System) +Organization: Computer Science & Engineering, U. of Washington, Seattle +Lines: 790 +Originator: pauld@stowe.cs.washington.edu + +Below is a documentstyle I wrote for a book called "The X Window +System - A User's Guide" by Niall Mansfield, published in 1989 by +Addison-Wesley. As such, it is a style that closely (but not exactly) +matches A-W's house style for computer-related texts. This is the very +same file used to format the book, and it was written for this purpose +only. I have just gone through and added a few comments here and there +to help anyone else who might want to use it. I haven't used it in a +long time, and neither has Niall: we're both at work on a new style +called "STOP", based on the Hughes "STOP" format for user +documentation. I hope to be posting that within a month or so, but I +might wait until the new book that uses it is with A-W. If you have +problems with it, please send me mail. Note that it currently inputs +two files that set up PostScript Times Roman as the default font +family. These are not included, since I have posted them before. + +Please remember that I know LaTeX a little better now than back then +(and still not well enough to hack floating indented figures). There +are several things in the style that I would change if I wrote it +again; I merely thought that some folks might like a chance to use a +"real book" documentstyle. + +-- enjoy + paul +-- diff --git a/macros/latex209/contrib/misc/ailetter.tex b/macros/latex209/contrib/misc/ailetter.tex new file mode 100644 index 0000000000..95770970b1 --- /dev/null +++ b/macros/latex209/contrib/misc/ailetter.tex @@ -0,0 +1,43 @@ +% This can be used to print letters on AI Lab letterhead on those printers +% which have them in the third tray. It will also put the extension number +% in the appropriate place at the bottom of the page; due to feeding +% variability in the printer, this may sometimes be off. Second and +% subsequent pages are printed on standard paper; copy to blank bonded +% paper if you so desire. + +% Extension numbers are defined with other personal parameters by the +% declaration +% +% \extension{xxxx} +% +% Send bug messages to Yishai@OZ. + +\makeatletter +\let\@origshipout=\shipout +\def\@testvbox{\vbox} +\def\@aishipout#1#2{% + \def\@foo{#1} + \ifx\@foo\@testvbox + \@origshipout\vbox to 9.19in{\vskip\@origvoffset + \moveright\@orighoffset#1{#2}% + \vss + \hbox{\hskip 4.9in\ninrm\@extension}} + \else\errmessage{Bug in \string\ailetterhead!} + \@origshipout#1#2\fi + \special{tray 1}% + \voffset=\@origvoffset + \hoffset=\@orighoffset + \global\let\shipout=\@origshipout} + +\def\ailetterhead{% + \special{tray 3} + \xdef\@origvoffset{\the\voffset} + \xdef\@orighoffset{\the\hoffset} + \hoffset=0pt + \voffset=0pt + \let\shipout=\@aishipout} + +\def\@extension{} +\def\extension#1{\def\@extension{#1}} +\makeatother + diff --git a/macros/latex209/contrib/misc/aimemo.sty b/macros/latex209/contrib/misc/aimemo.sty new file mode 100644 index 0000000000..b165645cab --- /dev/null +++ b/macros/latex209/contrib/misc/aimemo.sty @@ -0,0 +1,71 @@ +% Use the full page +% +\oddsidemargin 18pt +\evensidemargin 18pt +\topmargin 0pt +\textheight 595pt +\textwidth 432pt + +% Topheading supplies left and right flushed headings for the +% lrheading command. +% +\def\topheadings#1#2{\def\@toplefthead{#1}\def\@toprighthead{#2}} + +% Page style: lrheadings +% put text suplied by the topheadings command in the left and +% right corners of the topheading. +% +\def\ps@lrheadings{% +\def\@oddhead{\hbox{}\sl\@toplefthead\hfil\sl\@toprighthead}% +\def\@evenhead{\sl\@toplefthead\hfil\sl\@toprighthead\hbox{}}% +\def\@oddfoot{\hbox{}\hfil\rm\thepage\hfil}% +\def\@evenfoot{\hbox{}\hfil\rm\thepage\hfil}} + +% Page style: footpagenumber +% put nothing in header and center the page number in the footer. +% +\def\ps@footpagenumber{% +\def\@oddhead{}\def\@evenhead{}% +\def\@oddfoot{\hbox{}\hfil\rm\thepage\hfil}% +\def\@evenfoot{\hbox{}\hfil\rm\thepage\hfil}} + +% \skipline leaves a blank line realitive to the size of the current +% font. +% +\def\skipline{\vskip 2em} + +% stuff to change the format of figures +% +\def\@float#1{\@ifnextchar[{\@xfloat{#1}}{\edef\@tempa{\noexpand\@xfloat + {#1}[\csname fps@#1\endcsname]}\@tempa}} + +\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 + \boxmaxdepth\z@ + \hsize\columnwidth \@parboxrestore} + +\def\end@float{\egroup + \ifnum\@floatpenalty <\z@ + \@cons\@currlist\@currbox + \ifdim \ht\@currbox >\textheight + \ht\@currbox\textheight \fi + \global\@outputdonefalse + \ifnum\@floatpenalty < -\@Mii + \penalty\@floatpenalty + \if@outputdone\else\global\@outputdonetrue + \vbox{}\penalty\@floatpenalty\fi + \else \vadjust{\penalty \@floatpenalty}\@esphack\fi\fi} + +\def\@dblfloat#1{\if@twocolumn\else\@latexerr{Two-column float +on one-column page}\@ehd\fi +\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tp]}} diff --git a/macros/latex209/contrib/misc/alleqno.sty b/macros/latex209/contrib/misc/alleqno.sty new file mode 100644 index 0000000000..5ebce6ad95 --- /dev/null +++ b/macros/latex209/contrib/misc/alleqno.sty @@ -0,0 +1,49 @@ +% alleqno.sty -- LaTeX style file to make displayed equations numbered +% by default. +% +% This document style option makes all displayed equations numbered by +% default. In particular, it defines things so that \[, \], \[[, and +% \]] may be used as follows: +% +% \[ ... \] ==> \begin{equation} ... \end{equation} +% \[[ ... \]] ==> \begin{eqnarray} ... \end{eqnarray} +% +% These new commands are short, and they stand out clearly from the +% surrounding text on a terminal screen. +% +% Note that \begin{displaymath} ... \end{displaymath} should *not* be +% used with this style file -- use \[ ... \] instead. To override the +% default and get an unnumbered displayed equation, use a one-line +% \begin{eqnarray} ... \end{eqnarray}. +% +% - Jonathan Thornburg, 25/Sept/88 +% +% Dept of Geophysics & Astronomy thornburg@mtsg.ubc.ca +% The University of British Columbia userbkis@ubcmtsg.bitnet +% Vancouver BC V6T 1W5 userbkis%ubc@um.cc.umich.edu +% Canada ubc-vision!ubcmtsg.bitnet!thornburg +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Thanks to Donald Arseneau for help with the following macro. +\def\mygobbletoken{\let\myjunktoken= }%%% +% +\def\[{\futurelet\mydisplayselect\mydisplay}%%% +\def\mydisplay{%%% + \if\mydisplayselect[%%% + \begin{eqnarray}\let\mynextcommand=\mygobbletoken%%% + \else%%% + \begin{equation}\let\mynextcommand=\relax%%% + \fi%%% + \mynextcommand +}%%% +% +\def\]{\futurelet\mydisplayselect\myenddisplay}%%% +\def\myenddisplay{%%% + \if\mydisplayselect]%%% + \end{eqnarray}\let\mynextcommand=\mygobbletoken%%% + \else%%% + \end{equation}\let\mynextcommand=\relax%%% + \fi%%% + \mynextcommand +}%%% diff --git a/macros/latex209/contrib/misc/alltt2.sty b/macros/latex209/contrib/misc/alltt2.sty new file mode 100644 index 0000000000..6c5988553b --- /dev/null +++ b/macros/latex209/contrib/misc/alltt2.sty @@ -0,0 +1,47 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Mario Wolczko", +%%% version = "2", +%%% date = "21 May 1992", +%%% time = "20:53:23 BST", +%%% filename = "alltt2.sty", +%%% address = "Dept of Computer Science +%%% The University of Manchester +%%% Oxford Road +%%% Manchester M13 9PL +%%% UK", +%%% telephone = "+44-61-275-6146", +%%% FAX = "+44-61-275-6236", +%%% checksum = "29088 47 178 1848", +%%% email = "mario@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, verbatim", +%%% supported = "no", +%%% docstring = "Modification of the alltt style to indent +%%% alltt environments by \allttindent parameter", +%%% } +%%% ==================================================================== + +% ALLTT2 DOCUMENT-STYLE OPTION - modified from alltt of 17 December 1987 +% for LaTeX version 2.09 +% Copyright (C) 1987 by Leslie Lamport + +% same as alltt (q.v.), but has a parameter length (\allttindent) that +% controls how much an allt environment is indented wrt it's context. + +\newdimen\allttindent \allttindent=0pt % set this to change the indent + +\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 \advance\leftskip\allttindent \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/macros/latex209/contrib/misc/altnline.sty b/macros/latex209/contrib/misc/altnline.sty new file mode 100644 index 0000000000..7ca6e6f281 --- /dev/null +++ b/macros/latex209/contrib/misc/altnline.sty @@ -0,0 +1,189 @@ +% altnline.sty Version - 1.1 +% +% Disclaimer - Use at your own risk. +% +% James Fortune +% Oakland University +% jafortun@vela.acs.oakland.edu +% +% Based upon the TUGboat article ``Output Routines: Examples and Techniques.'' +% that appeared in Volume 11 (1990), Nos. 1, 3 and 4. +% +% This version incorporates suggestions made by Michal Jaegermann, namely: +% +% * Include explicit reference to the TUGboat article +% * ``You can use \def in style files without violating LaTeX spirit. +% If you are writing style it is assumed that you know what you are +% doing. :-)'' --- I don't know what I'm doing so I left the \newcommand +% and \renewcommand commands as is. +% * Internal macros from style file should be protected against name conflicts +% with user stuff by inclusion of '@' character in names. --- This is quite +% reasonable so command names that the user is not expected to use in a +% LaTeX file have been changed to include the '@' character. +% * He sent a new appendline command that adds numbers on a left margin +% only that was also inspired by the Salomon article. He left it as an +% exercise for me to modify it for two-sided printing. I probably shouldn't +% have picked something from the double dangerous bend signs for my first +% serious attempt at hacking on a style file :-). +% * A global linesSoFar so that lineCount may be set to linesSoFar to deal +% with box255 being broken from the bottom up. countlines (or its +% equivalent) advances linesSoFar by a count of lines on a current page. +% * Use of a decremented remainder variable to determine when to add a number +% to a line. --- I'm trying to get all the lines first. +% * He advised not trying to combine the countlines and duplicate operations +% into a single loop. ``I am afraid that you really have to first count +% how many lines you have on a page and later use this value to produce +% line numbers.'' +% +% Changes to version 1.1 - Michal Jaegermann, ntomczak@vega.math.ualberta.ca +% +% * Added logic to print line numbers only every \lineCountInterval +% * Added a way to set up ONE range of numbered lines; use \nlinesBoundary +% to do that. (It is possible to sprinkle your text with \nlinesBoundary +% commands and they may even do the right thing if you will put them +% in right places - but this is a hack.) +% * Miscellaneous cleanup +% * Every implicit or explicit \clearpage will still cause +% 'Output routine didn't use all of \box255' message. Any volunteers +% who know enough about LaTeX output routine to repair that? +% + +% \font\sevenrm=cmr7 + +% Rainer showed me how to save the previous \output. Thanks Rainer. +\newtoks\LaTeX@output +\LaTeX@output = \expandafter{\the\output} + +\newcommand\zero@ToSp{\parskip=\@ne sp plus\@ne pt + \renewcommand\vfil{\vskip1sp plus1fil} + \renewcommand\vfill{\vskip1sp plus1fill} + \abovedisplayshortskip=\@ne sp plus3pt + \postdisplaypenalty=\@ne + \interlinepenalty=\@ne} + +\zero@ToSp + + +\newcount\lin@CountInit % used to establish lineCount of first line on page +\lin@CountInit=\z@ +\newcount\lineCountInterval % used to determine how often lin@Count is printed +\lineCountInterval=5 +% +\newcount\lin@CountStart % don't print line numbers below this value +\lin@CountStart=\@ne +\newcount\lin@CountFinish % don't print line numbers higher than this +\lin@CountFinish=\m@ne +% +% A command to set boundaries for line numbering. Use as: +% \nlinesBoundary{12}, or \nlinesBoundary[50]{12} +% \nlinesBoundary[<optional upper limit>]<lower limit> +% Any negative number for an upper limit means number to the very end. +% This is a default! +% +\def\nlinesBoundary{\@ifnextchar[{\nlin@sBoundary}{\nlin@sBoundary[\m@ne]}} +\edef\nlin@sBoundary[#1]#2{% + \global\lin@CountFinish=#1\relax + \global\lin@CountStart=#2\relax} + +\newif\ifa@@lnum % do we really want to print that line number? + +\newcount\lin@sSoFar +% remainder from division of \lin@sSoFar by \lineCountInterval +\newcount\total@Rem +% current value of remainder used to produce line numbers +\newcount\lin@rem +% these calculations allow to start with \lin@CountInit different from 0 +\newcommand\resetlin@sSoFar{% + \global\lin@sSoFar=\lin@CountInit + \total@Rem=\lin@CountInit + \divide\total@Rem by\lineCountInterval + \multiply\total@Rem by-\lineCountInterval + \global\advance\total@Rem by\lin@CountInit} + +\resetlin@sSoFar + +\newcount\lin@Count +\newif\ifAnyleft \newcount\pen +\newcommand\count@lines{% + \global\lin@Count=\lin@sSoFar + \loop \Anyleftfalse + \ifdim\lastskip=\z@ \ifdim\lastkern=\z@ \ifnum\lastpenalty=\z@ + \setbox0=\lastbox + \ifvoid0 + \else \Anylefttrue \global\advance\lin@Count by\@ne + \global\advance\total@Rem by\@ne + \ifnum\total@Rem=\lineCountInterval + \global\total@Rem=\z@ + \fi\fi + \else \Anylefttrue \unpenalty \fi + \else \Anylefttrue \unkern \fi + \else \Anylefttrue \unskip \fi + \ifAnyleft \repeat} + +\newcommand\@duplicate{% + \loop \Anyleftfalse + \ifdim\lastskip=\z@ \ifdim\lastkern=\z@ \ifnum\lastpenalty=\z@ + \global\setbox0=\lastbox \ifvoid0 % end of breakup loop + \else \Anylefttrue % box present + \ifnum\lin@rem=0 % if remainder non-zero we do not care + \lin@rem=\lineCountInterval + \ifnum\lin@Count<\lin@CountStart + \a@@lnumfalse + \else + \ifnum\lin@CountFinish<0 % no upper bound + \a@@lnumtrue % print it + \else + \ifnum\lin@Count>\lin@CountFinish + \a@@lnumfalse + \else + \a@@lnumtrue % this is the ticket + \fi + \fi + \fi + \else + \a@@lnumfalse + \fi + \ifa@@lnum + \append@line + \else + \global\setbox1=\vbox{\box0\unvbox1} + \fi + \advance\lin@Count\m@ne + \advance\lin@rem by\m@ne\fi + \else \Anylefttrue % penalty present + \pen=\lastpenalty + \global\setbox1=\vbox{\penalty\pen\unvbox1}\unpenalty\fi + \else \Anylefttrue % kern present + \dimen0=\lastkern + \global\setbox1=\vbox{\kern\dimen0\unvbox1}\unkern \fi + \else \Anylefttrue % skip present + \skip0=\lastskip + \global\setbox1=\vbox{\vskip\skip0\unvbox1}\unskip \fi + \ifAnyleft \repeat} + +\newcommand\append@line{% attach line number + \setbox2=\vbox to \z@{\smash{\footnotesize\the\lin@Count}} + \wd2=25pt % that much of space for a line number + \ifodd\count0 % on the right margin for odd pages + \setbox0=\hbox{\box0\rlap{\rule{\wd2}{\z@}\box2}} + \else % and on the left for even + \setbox0=\hbox{\llap{\box2}\box0} + \fi + \global\setbox1=\vbox{\box0\unvbox1}} % add this to a reconstructed page + +\newbox\brk % Use old output definition if page is not to be output +\output={\ifnum\outputpenalty <-\@M + \output={\LaTeX@output} +\else + \lin@Count=\lin@sSoFar + \setbox\brk=\vbox{\unvcopy\@cclv\count@lines} + \global\setbox1=\vbox{} + \lin@rem=\total@Rem + \global\lin@sSoFar=\lin@Count + \setbox\brk=\vbox{\unvcopy\@cclv\@duplicate} + \ifdim\ht\brk>\z@\message{Incomplete breakup}\fi + \ht1=\z@\dp1=\z@ + \global\setbox\@cclv=\vbox to\vsize{\unvbox1}% attempt to get glues back + \@makecol\@opcol +\fi} +\endinput diff --git a/macros/latex209/contrib/misc/annotation.sty b/macros/latex209/contrib/misc/annotation.sty new file mode 100644 index 0000000000..7758cbbb26 --- /dev/null +++ b/macros/latex209/contrib/misc/annotation.sty @@ -0,0 +1,62 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% File "annotation.sty" (by Tom Hofmann, E-mail: wtho@cgch.UUCP) +% 1989-10-30 +% +% This File contains the definition of a LaTeX environment "annotation" +% which allows to alternatively print or suppress parts of the document. +% +% +% Usage: +% +% - Declare "annotation" as documentstyle option or include this file +% by "\input{annotation.sty}" +% - Embed annotations in "\begin{annotation}" and "\end{annotation}" +% - To print the document including the annotations write "\printnotes" +% before the first annotation. Alternatively, write "\suppressnotes" +% to print without annotations. +% - The default setting is "\printnotes". +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% (1) Definition of the environment "annotation" when notes are +% to be printed. + +\def\printnotes{\def\annotation{}} % "\endannotation" can be missing + +% (2) Definition of the environment "annotation" when notes are not +% to be printed. + +% Make '{' and '}' "other characters" and make '(' and ')' +% "begingroup" and "endgroup" resp. Thus make it possible +% to have "\end{annotation}" as part of a macro definition. + +\begingroup\makeatletter % since the catcodes of '{' and '}' +\catcode`{=12\relax\catcode`}=12\relax % will change, use \begingroup and +\catcode`(=1\relax \catcode`)=2\relax % \endgroup instead. + +\gdef\suppressnotes(% + +% Make '{' and '}' searchable when expanding the macro by giving them +% the same catcode in the subsequent text as in the macro definition. + + \gdef\annotation(\catcode`{=12\relax\catcode`}=12\relax\@NOTE) + +% Skip text between "\begin{annotaion}" and "\end{annotation}" +% (inclusive), but return an "\end{annotation}" command to LaTeX for +% the correct environment handling (see below). + + \long\gdef\@NOTE##1\end{annotation}(\@ENDNOTE)) + + +\endgroup % End of the enchantment. + +% Generate an environment-end command conformable to LaTeX. + +{\makeatletter\gdef\@ENDNOTE{\end{annotation}}} + +\printnotes % This is the default setting. + +%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + diff --git a/macros/latex209/contrib/misc/answers.sty b/macros/latex209/contrib/misc/answers.sty new file mode 100644 index 0000000000..e1e253b570 --- /dev/null +++ b/macros/latex209/contrib/misc/answers.sty @@ -0,0 +1,155 @@ + +%% This is ANSWERS.STY +%% Copyright (C) 1992 by Mike Piff. +%% All rights reserved. +%% Copying of this file is authorized only if +%% you make absolutely no changes to your copy. +%% +%% +%%Name: ANSWERS.STY +%%Description: A style option to LaTeX that allows answers to problems to +%% be included adjacent to the problems in the source file. +%% The answers are written out to a subsidiary file, ready to +%% be included later in the document. +%% An example is appended to the end of the style file. +%%Keywords: answers,solutions,problems,exercises +%%Author: "Mike Piff" <M.Piff@sheffield.ac.uk> +%%Latest version: 10/27/92 02:43pm +%%Supported: Yes + + + +%% Usage +%% \documentstyle[answers]{article} %% in LaTeX + + + +\let\@@it=\it %% save meaning of \it +\def\RestoreIt{\global\let\it\@@it} +\def\Noit{\global\let\it\RestoreIt} %%let \it revert to old meaning +%% this is useful in, for instance, +%% \newtheorem{exercise}{Exercise\Noit} +%% \newtheorem{Solution}{Solution\Noit} +%% which gives an upright rather than italic style + +\newwrite\@ns + +{\catcode`\<=1 \catcode`\>=2 \catcode`\{=12 \catcode`\}=12 + \gdef\LBRACE<{>\gdef\RBRACE<}> + \catcode`\|=0 |catcode`|\=12 |gdef|END<\end>> + +%% This defines the conventions +%% #1 = \Solution, say +%% #2 = environment name to use in solution file +%% #3 = environment terminating solution in problems file +%% The line that ends the solution must consist only of \end{#3}, +%% with no leading spaces. +\def\SolutionMarker#1#2#3{% + \let#1=\ExSolution + \def\solutionmark{#2}% + \def\exercisemark{#3}% + \edef\DefineEnd{\gdef\noexpand\@ndexercise{\END\LBRACE#3\RBRACE}}% + \DefineEnd +} +\newif\ifhint +\def\HintMarker#1{\def#1{\global\hinttrue\ExSolution}} + +\def\newsolution#1#2{% + \expandafter\def\csname#1\endcsname##1##2{% + \trivlist\item[\hskip\itemsep{\bf#2 ##1% + \def\temp{##2}% + \ifx\temp\empty\else\ (##2)\fi}]}% + \expandafter\def\csname end#1\endcsname{\endtrivlist}% +} + +%%Write directly to solution file +\def\Write#1{{\let\protect\string \immediate\write\@ns{#1}}} + +\outer\def\Opensolutionfile#1{% #1=filename + \immediate\openout\@ns=#1 + \Write{\string\BeginSolutions}% + \OpenHook +} + +\def\Closesolutionfile{% + \Write{\string\EndSolutions}% + \immediate\closeout\@ns + \CloseHook +} +%%Note that \OpenHook and \CloseHook may be redefined to take parameters, in +%%which case, say +%%\OpenSolutionFile{FileName}{Param1}{Param2}... +%%\OpenHook might also write parameters to \BeginSolutions to the \@ns file + +%%This is similar to The TeXbook. However, a solution is allowed to contain +%%blank lines here. +\def\PreSolutionSpacer{\Write{}} +\def\ExSolution{\PreSolutionSpacer + \Write{\string\begin{\solutionmark}% + {\csname the\exercisemark\endcsname}{\ifhint Hint\fi}}% + \global\hintfalse + \c@pytoendEx} +\def\c@pytoendEx{\begingroup\s@tupcopy\c@pyans} +\def\s@tupcopy{\def\do##1{\catcode`##1=12}\dospecials% + \catcode`\|=12 \makeatother\obeylines\let\n@xt\empty} + +\def\@Ndgroup{\endgroup\expandafter\end\expandafter{\exercisemark}% + \PostSolutionSpacer} +\def\PostSolutionSpacer{} + +{\obeylines \gdef\c@pyans#1 + {\def\n@xt{#1}% + \ifx\n@xt\@ndexercise\Write{\string\end{\solutionmark}}\let\n@xt=\@Ndgroup% + \else\Write{\n@xt}\let\n@xt=\c@pyans\fi\n@xt}} + +%% Default values +\def\OpenHook{} +\def\CloseHook{} +\def\BeginSolutions{} +\def\EndSolutions{} +\SolutionMarker\Solution{solution}{exercise} + +\endinput + + + + +%% Example of usage +\documentstyle[12pt,answers]{article} + +\newtheorem{exercise}{Exercise\Noit}[section] +\newsolution{solution}{Solution} + +\SolutionMarker\Solution{solution}{exercise} +\HintMarker\Hint + +%%\renewcommand{\OpenHook}[1]{\Write{\protect\section{#1}}} +\renewcommand{\OpenHook}{\Write{\protect\section*{Solutions to Section \thesection}}} +\renewcommand{\CloseHook}{} + +\renewcommand{\BeginSolutions}{\clearpage\small} +\renewcommand{\EndSolutions}{\clearpage\normalsize} + +\begin{document} +\section{Problems} +\Opensolutionfile{testsol}%%{Solutions} +\begin{exercise} + Question +\Solution Answer +\end{exercise} +\begin{exercise} + Another Question +\Hint A Hint +\end{exercise} +\Closesolutionfile +\input{testsol} +\end{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Dr M J Piff %% e-mail: +%% Department of Pure Mathematics %% +%% University of Sheffield %% M.Piff@sheffield.ac.uk +%% Hicks Building %% +%% Hounsfield Road %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% SHEFFIELD S3 7RH %% Telephone: SHEFFIELD (0742) 768555 +%% England %% Ext. 4431 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex209/contrib/misc/apalike-plus.readme b/macros/latex209/contrib/misc/apalike-plus.readme new file mode 100644 index 0000000000..2c5ff00ac5 --- /dev/null +++ b/macros/latex209/contrib/misc/apalike-plus.readme @@ -0,0 +1,18 @@ +apalike-plus.sty - This is for people who want something like apalike.sty + (perhaps because they are using apalike.bst), but who + want the extra features described below. + +With this style-option: +- the default title is "References", but can be changed by putting a + \renewcommand{\bibtitle}{...} command before \begin{thebibliography} +- if the document style is such that \pagestyle{headings} is used, + "REFERENCES" goes in the page-heading by default, but can be changed + with \renewcommand{\bibheadtitle}{...} +- thebibliography gives an \addcontentsline command, so that \tableofcontents + puts the bibliography (with appropriate title) in the table of contents. + +authordate1-4.sty - This is for people who are using one of the BibTeX + author-date style files authordate1.bst, ... , + authordate4.bst. It redefines \cite and thebibliography, + and also defines a \shortcite command such that if \cite + gives "(Smith, 1970)", \shortcite gives "(1970)". diff --git a/macros/latex209/contrib/misc/apalike-plus.sty b/macros/latex209/contrib/misc/apalike-plus.sty new file mode 100644 index 0000000000..2405fd2ce6 --- /dev/null +++ b/macros/latex209/contrib/misc/apalike-plus.sty @@ -0,0 +1,68 @@ +% This style-option file, apalike-plus.sty, is based on apalike.sty. +% As such, it can be used to redefine \cite and thebibliography for: +% - production of do-it-yourself author-date bibliographies +% - use with BibTeX, with \bibliographystyle{apalike}. +% +% It differs from apalike.sty in that: +% - a command \bibtitle is defined, to generate the bibliography title +% - a command \bibheadtitle is defined, to generate the text to be used +% by \pagestyle{headings} +% - \bibtitle and \bibheadtitle are set to generate "References" and +% "REFERENCES" respectively. +% - an \addcontentsline{toc}{...}{\bibtitle} command is issued. +% Thus: +% - the default bibliography title is "References", but can be changed by +% having \renewcommand{\bibtitle}{...} before \begin{thebibliography} +% or \bibliography +% - the default page header text is "REFERENCES", but can be changed by +% \renewcommand{\bibheadtitle}{...} +% - \tableofcontents will give a table of contents that mentions the +% bibliography. +% +% David Rhead +% Cripps Computing Centre +% Nottingham University +% February 1990 + +% Use parens instead of brackets for \cite, and no label in the bibliography +% +\def\@cite#1#2{(#1\if@tempswa , #2\fi)} +\def\@biblabel#1{} + +% Set length of hanging indentation for bibliography entries +% +\newlength{\bibhang} +\setlength{\bibhang}{2em} + +% Define default title and page-head text. +% +\def\bibtitle{References} +\def\bibheadtitle{REFERENCES} + +\@ifundefined{chapter}{\def\thebibliography#1{\section*{\bibtitle\@mkboth + {\bibheadtitle}{\bibheadtitle}} + \addcontentsline{toc}{section}{\bibtitle}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}}% +{\def\thebibliography#1{\chapter*{\bibtitle\@mkboth + {\bibheadtitle}{\bibheadtitle}} + \addcontentsline{toc}{chapter}{\bibtitle}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}} + +% `; ' goes between cites, and there's no \hbox around individual cites +% +\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}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} diff --git a/macros/latex209/contrib/misc/apeqnum.sty b/macros/latex209/contrib/misc/apeqnum.sty new file mode 100644 index 0000000000..12ed2cf20d --- /dev/null +++ b/macros/latex209/contrib/misc/apeqnum.sty @@ -0,0 +1,21 @@ +% This is apeqnum.sty +% 8-November-1990 +% Don Hosek +% Style option for article.sty and derivatives; causes equations +% to be numbered A1, A2, A3, B1, etc. in a document. + +% First save a copy of the old meaning of \appendix +\let\apeqnum@appendix=\appendix + +% Now, we will redefine \appendix so that it does the following: +% (1) The old functions of \appendix (\apeqnum@appendix) +% (2) Causes equations to be numbered beginning from one at +% the beginning of each appendix (this is accomplished +% for the article style with the command +% \@addtoreset{equation}{section}) +% (3) Change the definition of \theequation (which prints the +% equation numbers) so that the appendix letter is prepended. +\def\appendix{% + \apeqnum@appendix % (1) + \@addtoreset{equation}{section} % (2) + \def\theequation{\thesection\arabic{equation}}} % (3) diff --git a/macros/latex209/contrib/misc/apguide.tex b/macros/latex209/contrib/misc/apguide.tex new file mode 100644 index 0000000000..30be4ac53e --- /dev/null +++ b/macros/latex209/contrib/misc/apguide.tex @@ -0,0 +1,1484 @@ +% Save file as: APGUIDE.TEX Source: FILESERV@SHSU.BITNET +% This is the file APGUIDE.TEX +% from version 2.0 of the REVTEX macro package. +% +% This file is part of a compuscript toolbox distributed by +% the American Physical Society in conjunction with +% the TeX author-prepared program. +% +% All rights not specifically granted are reserved, +% American Physical Society, 1991. +% +% Permission is granted to make and distribute verbatim +% copies of the complete toolbox provided that the README file +% and copyright notices are preserved on all copies. +% Permission is granted to use the style files provided that +% neither the content of the style files nor their names are changed. +% APS macros may be used and distributed provided each use is +% accompanied by an appropriate acknowledgment. +% +% For more information, see the README file. +% +\documentstyle[revtex]{aps} +\begin{document} +\def\SNG{{\em Physical Review Style and Notation Guide}} +\def\UG {{\em \LaTeX\ User's Guide \& Reference Manual}} +\def\btt#1{{\tt$\backslash$\string#1}}% +\begin{title} +Input Guide for \TeX\ Author-Prepared Compuscripts +\end{title} +\vskip .5in +\narrowtext + +\section{INTRODUCTION} +\label{sec:intro} + +In 1987, the Council of The American Physical Society authorized +acceptance of \TeX -formatted author-prepared compuscripts to be +submitted to the {\em Physical~Review A, B, C,} and {\em D\/} +in machine-readable +form. It +is essential that author-prepared input be consistent and +standardized so that the compuscripts can become part of the normal +production procedures. It is only by routinely handling +author-prepared files that this +method of production will be economically feasible. + + +This input guide contains basic instructions for keyboarding +compuscripts using the {\em REVTEX\/} macro package, which works +in a \LaTeX\ environment. +This guide is part of the ``\TeX\ compuscript toolbox''; +other items in the toolbox are the +{\em REVTEX\/} macro package (several style files), test files, +a README file (which contains details regarding installation and +copying of the style files), and hard copy +of the {\em Physical Review Style and Notation Guide}. +For correct notation and style practices, authors should read the +{\em Physical Review Style and Notation Guide}, furnished with +the toolbox; +authors also should be guided +by recent issues of {\em Physical~Review.} + +%You may wish to supplement this input guide with +%the excellent documentation available for \LaTeX : namely, +%the {\em User's Guide \& Reference Manual}. +%It is important that this input guide be followed +%whenever possible. + +Compuscripts +that do not comply closely with these instructions will be +returned to the author for changes. + +{\bf Contents of this Guide.} +In Sec.\ \ref{sec:gensubmit} we describe procedures for +making an original submission (review purposes) to the Editorial +Offices. Sections\ \ref{sec:conmailsub} and \ref{sec:e-mail} detail +procedures for conventional mail and electronic mail submissions, +respectively. + +Section \ref{sec:process} briefly describes author proofs. + +Section \ref{sec:filesubmit} discusses the specifications +for file submittal (floppy, tape, electronic mail). + +In Sec.\ \ref{sec:instruct} we describe in detail +several aspects of compuscript creation: +the input of front matter and how to switch from +galley to preprint format; +paragraph formatting, hyphenation, quotes, and textwidth issues; +section headings; +basic input for in-text math and displayed equations; special +character issues; footnotes and references; figure captions; +and tables. + +In Sec.\ \ref{sec:xrefs} we have described the various +autonumbering features of {\em REVTEX}; these features +can be used to autonumber equations, figures, tables, +references, and section heads. + +Finally, Sec.\ \ref{sec:samples} +contains two sample compuscripts, input and output, +preprint format and galley format. These two samples +(one brief and +descriptive, and another an actual published +{\em Physical Review\/} manuscript) +illustrate many {\em REVTEX} and \LaTeX\ features that +are necessary to create a compuscript. + +Appendix \ref{sec:commands} is a handy list of some +necessary commands that will be found in a {\em REVTEX} +compuscript. This command list supplements the \LaTeX\ {\em User's +Guide and Reference Manual}. + +Appendix \ref{sec:upgrade} itemizes the differences +between v1 and v2 of {\em REVTEX}, for current users of +v1. + +Authors who have not ever participated in the author-prepared +program may wish to read Appendix \ref{sec:fastfacts} +and Appendix \ref{sec:macros} +at this point. +There we give a brief +overview of the author-prepared program and answer some +frequently asked author questions. + +Appendix \ref{sec:contacts} lists the people and places +to contact if you have questions about any services +described herein. To obtain the most proper and expedient +answer to your question, please consult Appendix E before calling +or e-mailing the APS. + +{\bf Note on participating journals}. +The compuscript program is open to all {\em Physical +Review A, B, C,} and {\em D\/} authors. At press time, project +development efforts had begun to expand the program to include +{\em Physical Review Letters\/} and {\em Reviews of Modern Physics}. +It is anticipated that {\em Physical +Review Letters\/} authors +will be able to participate in a compuscript program by December of +1991 (possibly earlier). Procedures for participation in the +{\em Physical Review Letters\/} compuscript program will differ +from those detailed in this guide, however, use of {\em REVTEX\/} +will remain essentially the same. Please contact the authors of +this guide for information on project development status for +either {\em Physical Review Letters\/} or {\em Reviews of Modern +Physics}. + +% + + Unless specified in Appendix \ref{sec:contacts}, + questions regarding this Input Guide should be directed + to Peggy C. Sutherland, APS Publications Liaison Office, + 500 Sunnyside Blvd., Woodbury, NY 11797. + + +\section{GENERAL COMPUSCRIPT SUBMISSION\\ PROCEDURES} +\label{sec:gensubmit} + +Original submissions to the editorial offices can be made via +conventional mail or electronic mail. Both methods are +described below. Conventional mail submission is +described, unless otherwise specified. + +When the {\em REVTEX\/} compuscript is ready to go, it +should should be submitted to the Editorial Offices in +conformance with the +printed procedures in the first issue of each volume of {\em Physical +Review A, B, C,} and {\em D}. The following procedures +are those unique to compuscript processing. + +It should be stated in the communication accompanying the manuscript +that the paper is to be considered as a +\TeX -formatted author-prepared compuscript and the preference +for file medium (floppy, e-mail, tape). See Sec.\ +\ref{sec:filesubmit} for detailed +file submittal specifications. + +The manuscript will go through the usual refereeing process +and normal editorial functions. Frequently there are manuscript +changes needed in response to referee and editor +questions/suggestions. All such changes should be indicated +in the correspondence that accompanies a revised manuscript +and/or file. + + +{\bf It is very important} that no undocumented changes be made to the +file after the manuscript has been sent to the +editor's office. The importance of this +cannot be overemphasized. Publication delays will be experienced +if there are any discrepancies, {\bf however minor they may +be,} between the compuscript file +and the manuscript that has been given to the editor's +office. + + +\subsection{Conventional mail submissions} +\label{sec:conmailsub} + +Original submissions +that involve paper copies of the manuscript and +the postal system are conventional mail submissions. + +If the author has submitted conventionally, +then the +author should await word from the Editorial Office +before sending the compuscript file; conventional +submissions require that compuscript files be forwarded only +after formal acceptance of the manuscript by the APS Editorial +Offices. + +When received by conventional mail at the editor's office, +the manuscript will begin the usual editorial +processing route. The special handling needed for +compuscript processing will be initiated. See Fig.\ 1. + +%%%Figure 1 is not in TeX format, therefore it +%%%cannot be included in this file. + +As part of routine preprocessing +for compuscripts, the author will be contacted to establish that +the compuscript file meets the necessary requirements for +inclusion in the author-prepared program. The author will +be asked several questions related to the file. + +It is important that the author respond promptly to these queries. +This information is critical for a compuscript to be included +in the author-prepared program. It is not in the spirit +of the author-prepared program to delay processing +of a manuscript solely for the purpose of including +the manuscript in the program. Therefore, if critical information +is not available at the time the manuscript +is given editorial approval for publication, then +the manuscript will not be included in +the program. + + +In most cases, when/if accepted for publication by the % +scientific editor, the author will be asked to send the compuscript +file. (The exceptional case exists when the author opts to +make manuscript corrections; see Sec.\ \ref{sec:process}.) +%SHOULD GO ELSEWHERE The author should (1) modify front matter +% for galley output, and +%(2) \LaTeX\ the paper to evaluate equation lengths, shortening +%or ``breaking'' equations where necessary before +%providing the file. + +Frequently there are manuscript changes +needed in response to referee and editor +questions/suggestions. All such changes must be indicated +in the correspondence that accompanies a revised manuscript. +The file must be exactly represented by the +latest (hard copy) manuscript that was sent to the Editorial Offices. +If there are known differences, +these should be itemized in communication +accompanying the file. Delays will result if these instructions +are not followed. + +\subsection{Electronic mail submissions} +\label{sec:e-mail} + +Original submissions that involve +machine readable files of the manuscript and an +electronic mail system are electronic mail submissions. +See Fig.\ 2. + +All such submissions and inquiries should be addressed +to {\tt tex@apsedoff}. Manuscript submissions must include a covering +message stating to which journal the paper is submitted +and must provide a conventional mailing address. + +Figures must be forwarded by FAX at the same time that the manuscript +is sent by electronic mail. The FAX number is (516) 924-5294; +the FAX transmission should be marked for the attention of +Debbie Stuart. Readable FAX copies of figures are sufficient +for reviewing purposes only. Original figures should be +forwarded by +conventional or overnight mail as soon as possible. + +The file must be in ASCII and not contain any control characters. +Line lengths should +be kept to 70 characters or less. + +If the transmissions of the \TeX\ file and figures have been +successful, an acknowledgment will be sent by electronic mail. +If any problems are encountered by Editorial Services staff, +the author will be contacted +immediately via electronic mail and informed of the problem. If +no acknowledgment is received within 24 hours, it should +be assumed that the file was not received. + +Copies of the manuscript must {\bf not} be sent by +conventional mail. Only original figures should be sent +via conventional mail. + +A copy of the manuscript that has been generated by +Editorial Services staff will be forwarded to the +author. + +\section{PRODUCTION OF AUTHOR PROOFS} +\label{sec:process} + +Ordinarily, editor and copyeditor changes are made +to the file at the production site. +(If the author opts to make all file changes, +it should be so indicated in the cover letter +that accompanies the manuscript. Please contact the authors +of this guide for procedural details.) + +When/if a manuscript is accepted for publication, the +manuscript and the compuscript file will be forwarded to +production. +Standard procedures for production will be in effect, and the +author will receive the correspondence associated with routine +manuscript publication. The manuscript will be returned to the +author with the galleys. The manuscript will be thoroughly marked +to indicate where file changes were needed, +and the author will +be responsible for thorough proofreading of galleys. + +Although the author has assumed the keyboarding responsibility +and the proofreading +responsibility, the production staff will still perform a complete +proofreading of the article and will insert necessary +changes. Requested tabular additions also will be +inserted. Page proofs therefore should +be carefully checked. Return the marked manuscript and the +proofed galley to the address indicated on the galley and +the necessary corrections will be handled by the production staff. + +\section{FILE SUBMITTAL SPECIFICATIONS} +\label{sec:filesubmit} + +Please see Sec.\ \ref{sec:gensubmit} for important submittal +procedures. + + +Compuscripts should be submitted (1) on a DOS-formatted +floppy disk, (2) on a UNIX-generated +nine-track magnetic tape, or (3) via electronic mail. The tape/floppy +should be labeled to +indicate the code number of the manuscript, the names +of all the files on the tape, and the return +address of the submitting author. The following list indicates the +acceptable formats and densities for the tape. + +\smallskip + +\indent\hbox to19mm{Formats:\hfil} tp, tar. + +\indent\hbox to19mm{Densities:\hfil} 800 bpi, 1600bpi. + +\smallskip + +The tape/floppy may contain one large file, e.g., +BB1010, or may contain +a series of separately named files, e.g., BB1010, +BB1010caps, BB1010tabs. +The code number of the compuscript does not have to +be used as the file +name or names; smithpaper, smithcaps, smithfigs, etc., will suffice. + +Upon receipt of the file(s) by the production +office, the contents will be +concatenated and assigned the appropriate production code number. +The compuscript file will then be evaluated for various +potential problems and compliance with the input +instructions. Compuscripts may be returned to the author at this +time if extensive changes are necessary. + + +All bitnet receipts will be acknowledged. + +\section{COMPUSCRIPT INSTRUCTIONS} +\label{sec:instruct} + +Author-prepared compuscripts should include the following parts +in this order: title, authors, byline, +abstract, suggested PACS numbers (1990 Physics and +Astronomy Classification), main manuscript body, +references, figure captions, and tables. The production staff will +add verified PACS numbers. +Specific instructions pertaining to various parts of the compuscript +are listed below as well as a short annotated example of compuscript +input. Formatting commands (macros) are indicated where necessary. + +Manuscripts should not contain any author-defined macros. Macros which +are simple text substitutions can be ``expanded'' by the author before +submittal. More complicated macros can create problems when the file +is edited for production and should also be avoided. +See Appendix \ref{sec:macros} +for further information. + +\subsection{Front matter} + +{\bf Preprints vs Galley form.} The {\em REVTEX\/} macro package +has been developed to accommodate the preprint needs of the author +as well as the production needs of the APS. +If you use {\em REVTEX\/} to prepare a manuscript for submission +to the Editorial Offices, only minor changes are needed +to participate in the author-prepared program. +These minor changes are (1) modifying the first +line of the file and (2) breaking long equations +where needed. Guidelines +for equation breaking are outlined later; front +matter is discussed below. + +The editors of {\em Physical Review\/} require a large typeface with +adequate space between typed lines for technical editing marks and +wide margins for editor and author comments. This {\bf preprint +format} can be obtained with the following front matter: + +\begin{verbatim} +\documentstyle[preprint,revtex]{aps} +\begin{document} +\draft +\end{verbatim} + +{\bf Galley format}, which is needed for production of the +page that goes to the printer, is produced by +the following front matter: + +\begin{verbatim} +\documentstyle[revtex]{aps} +\begin{document} +\draft +\end{verbatim} + + +\subsection{Text} + +{\bf Paragraphs} always begin with a blank input line. +{\bf Do not hyphenate} words at the end of a line; \TeX\ will do +this. Continue to hyphenate modifiers within a line of text, e.g., +``author-prepared copy.'' + +{\bf Use curly quotes} for quotation marks +around quoted text ({\tt ``xxx''}) +not straight quotes ({\tt "xxx" }). [For +opening quotes, this is two octal 140 characters (hex 60); +for closing quotes, +this is two octal 047 (hex 27) characters.] + +There are two commands that control the width of +the text across the page in the galley +format; \btt{narrowtext} will set +the column width to 3$\case3/8$ in., and the \btt{widetext} +command will set the text 7 in.\ wide. The \btt{widetext} command +is needed to set very long equations. See the section on +displayed math, below. + +Neither \btt{narrowtext} or \btt{widetext} +have any effect on the output if the front matter calls for +the preprint form. The preprint output is a uniform +6 in.\ throughout. + +Don't use \btt{smallskip}, \btt{bigskip}, or any other vertical motion +commands. Horizontal motion commands are unnecessary as well. + +\subsection{Section headings} + +Three levels of headings are provided in {\em REVTEX\/}: +{\tt section}, {\tt subsection}, +and {\tt subsubsection}. +Precede the section heading with the \btt{nonum} command to suppress +the automatic numbering; e.g., +\begin{verbatim} + \nonum\section{Introduction} +\end{verbatim} + +To label a section heading for cross +referencing use the \btt{label} command {\em after\/} +the heading; e.g., +\begin{verbatim} + \section{Introduction} + \label{sec:intro} +\end{verbatim} + +\subsection{In-text math} + +{\em Physical Review\/} uses the delimiter \$ +for any \TeX\ in-line math, e.g., +\begin{quote} + {the quantity $a^z$} +\end{quote} +is obtained from the input + \begin{verbatim} + the quantity $a^z$ + \end{verbatim} + +Another example of in-line math is + +\smallskip + + \leftline{\bf input:} + \begin{verbatim} + ... difference between $\langle J_z \rangle + (t)$ and $\langle J_z\rangle_{\rm HF}(t) ...$ + \end{verbatim} +\leftline{\bf output:} + \begin{quote} + ... difference between $\langle J_z \rangle (t)$ and $\langle + J_z \rangle_{\rm HF}(t) ...$ + \end{quote} + +\smallskip + +Standard mathematical style conventions are followed +for in-line math such as smaller point size for +superscripts/subscripts, appropriate use of roman, +italic, and Greek fonts, and the use of special math symbols. +(See the {\em Style and Notation Guide} for help.) +\TeX\ will take care of setting the point size appropriately +for variables and numbers in the superscript/subscript position. +To get the appropriately sized superscript/subscript in the +roman font, use the \btt{rm} command: +\smallskip +\begin{quote} + \leftline{\bf input:} + \begin{verbatim} + $... J_{\rm HF}(t) ...$ + \end{verbatim} +\end{quote} +\leftline{\bf output:} +\begin{quote} + $... J_{\rm HF}(t) ...$ +\end{quote} +\smallskip +\TeX\ will assume that you want the superscript or subscript +to consist of the first {\em token\/} (generally a single +character or command) following the \^{} or \_, {\em unless\/} +you use curly brackets to delimit the subscript/superscript. It is +safest to use the curly brackets if unsure. +The curly brackets here also serve to limit the scope of the +{\tt\string\rm} command. +Again, don't use any vertical motion commands in math; horizontal +motion commands are unnecessary as well. + +\subsection{Displayed equations} + +The most common (and preferred) type of +displayed equation in {\em Physical +Review\/} is a narrow, {\bf indented single-line equation, with an +equation number on the same line}. Try to set as many equations as you +can in this way. Because some equations are longer +than this type of styling will allow, there are other types of +displays to accommodate longer equations. + +Equations can be set flush left with the margin if they do not +fit in the column; dropping the equation numbers to the line +below the equation will also help and is handled automatically +by {\em REVTEX\/} for single-line equations. +Breaking the equation into multiline format may be necessary for very +long equations. + +If an equation needs to be broken into more than four lines, it should +be set in a wide column for ease of reading, using the \btt{widetext} +command. The author should return to \btt{narrowtext} as soon +as possible after one or more very long equations. + + +In Sample Compuscript A, we have +illustrated how to obtain each of the above. + + +\subsubsection{Numbering displayed equations} + +The {\em REVTEX\/} macro package allows two methods for numbering +equations: you can assign your own equation numbers +or you can allow {\em REVTEX\/} to number for you. + +Use the command \btt{eqnum}$\{${\em thenumber}$\}$ +to number your own equations. You can also use this command to +produce a specific equation number not normally obtainable; $(1')$, +for example. + +For automatically numbered single-line and multiline equations, use +the {\tt equation} and {\tt eqnarray} environments. +You can use the \btt{[},\btt{]} +commands and the {\tt eqnarray$\ast$} environment for unnumbered +single-line and +multiline equations, respectively. The command \btt{nonumber} will +suppress the numbering on a single line of an eqnarray. + +If you wish a series of equations to be a lettered sequence, e.g., +(1a), (1b), and (1c), just include the equations or eqnarray within +the {\tt mathletters} environment. + +Finally, to have {\em REVTEX\/} number equations by section, +use the {\tt eqsecnum} style option. + +See Sample Compuscript A to see examples of how all this works. + +\subsubsection{Cross-referencing displayed equations} + +Authors will probably not cross-reference every equation +in text. When a numbered equation needs to be +referred to in text by its number, +the \btt{label\{{\em tag}\}} and \btt{ref\{{\em tag}\}} +commands should be used. The +\btt{label} command is used within the equation or the eqnarray line +to be referenced: + +\smallskip + +\leftline{\bf input:} +\begin{verbatim} +\begin{equation} +A=B \label{pauli} +\end{equation} +... It follows from Eq.\ (\ref{pauli}) +that this is the case ... +\end{verbatim} +\leftline{\bf output:} +\begin{equation} +A=B \label{pauli} +\end{equation} +... It follows from Eq.\ (\ref{pauli}) that this +is the case ... + +\smallskip + +Please note the parentheses surrounding the command. +They are necessary for proper output. +You can also label individual lines in an eqnarray. +Numbers produced with \btt{eqnum} can also be cross-referenced: +just follow the \btt{eqnum} command with a \btt{label} command. +Please see Sec.\ \ref{sec:xrefs} +for further information about cross-referencing. + +\subsection{Special Characters} + +Authors should avoid the use of specially designed ``define +characters'' and choose symbols from those shown in the {\em +\LaTeX\ User's Guide \& Reference Manual}. +There is no guarantee that a specially designed definition +will produce the desired results at the production installation. +If a special symbol is required and not listed in the \UG , +please request special consideration +in the cover letter accompanying the file submittal. The +copyeditor will make note of it and the production staff +will attempt to accommodate the author. + +Unusual characters are subject to approval by the editor. + +\subsection{Footnotes and references} + +The list of references should appear after the main +body of the paper. Please refer to the \SNG\ and +recent issues of {\em Physical Review\/} for current style. +Sample Compuscript A shows +examples of a variety of reference entries, e.g., journal, book, +byline, and private communication. + +References will be listed in the reference section using the +\btt{bibitem} command, and they will be cited in text using +the \btt{cite} command. + +A byline footnote and the first reference cited +may appear in the reference section like this: + +\smallskip + +\begin{verbatim} +\begin{references} +\bibitem[*]{AAAuth}Present Address: Brookhaven +National Laboratory, Upton, New York, 11973. +\bibitem{tal82}Y. Tal and L. J. Bartolotti, +J. Chem. Phys. {\bf 76}, 4056 (1982). +\end{references} +\end{verbatim} + +\smallskip + +The {\tt [*]} represents an optional, author-specified +reference label. If a reference label is not +present, {\em REVTEX\/} will assign +the next available reference number. + +{\tt$\{$tal82$\}$} is a tag; it can be any string of +letters and numbers that you will easily associate with the +reference. This tag will be used in text to tell \TeX\ what +reference you want to cite. See the example below. + +\bigskip + +\leftline{\bf input:} +\begin{verbatim} +... This has been noted previously \cite{tal82}. +\end{verbatim} +\leftline{\bf output:} +\begin{quote} +... This has been noted previously \cite{tal82}. +\end{quote} +\smallskip +Input for an author name with a byline footnote +is similar, but the output is different: + +\bigskip + +\leftline{\bf input:} +\begin{verbatim} +\author{A. A. Author\cite{AAAuth}} +\end{verbatim} +\leftline{\bf output:} +\author{A. A. Author\cite{AAAuth}} + +\bigskip + +(See the +\SNG\ for details on proper usage of byline footnotes.) +Output (galley form) in the reference section for +the footnote and reference +samples above will look like this: + +\begin{references} +\bibitem[*]{AAAuth}Present Address: Brookhaven +National Laboratory, Upton, New York, 11973. +\bibitem{tal82}Y. Tal and L. J. Bartolotti, +J. Chem. Phys. {\bf 76}, 4056 (1982). +\end{references} + + +\bigskip + +\leftline{\bf Quick guide to references:} + +\smallskip + +$\bullet$ The \btt{bibitem} command begins a reference. + +$\bullet$ References should be listed in the reference section +in the order in which they are first cited in the text. +(See next item.) + +$\bullet$ References will automatically be numbered by {\em REVTEX\/} +in the order in which they occur in the reference section, unless the +author provides his/her own label. + +$\bullet$ The {\tt$\{$tal82$\}$} is a tag; it can be any string of +letters and numbers that you will easily associate with the +reference. This tag will be used in text to tell \TeX\ what +reference you want to cite. + +$\bullet$ Footnotes to the byline should precede the +references and should not be numbered. Provide a label in +square brackets following the \btt{label} command. +For {\em Physical Review A, B, C,} and {\em D,} +use [{\tt*}], [\btt{dag}], [\btt{ddag}], [\btt{S}], [{\tt**}], +[\btt{dag}\btt{dag}], [\btt{ddag}\btt{ddag}], [\btt{S}\btt{S}] +in the order listed. This conforms to the requirements +detailed in {\em The Style and Notation Guide}. + +\bigskip + +\subsection{Figure captions} + +Figure captions are a part of the compuscript and should appear after +the references. They should be input +sequentially in the order in which they are +cited in the text; \LaTeX\ will label and number the captions +FIG.~1, FIG.~2, etc. + +Note below the use of +the \btt{label} command; this is used to cross-reference +figures in text. The \btt{label} command should be inserted +after the text of the figure caption, before the final +curly bracket. + +\smallskip + +\leftline{\bf input:} +\begin{verbatim} +\figure{Text of first caption.\label{fig1}} + +\figure{This is the second caption: +comparison of the differential cross sections +for the subprocess $qg \rightarrow qggg$ of our +approximation (dotted line) versus the +approximation of Maxwell together with the use +of the effective structure function +approximation(solid line).\label{fig2}} + +\end{verbatim} +\leftline{\bf output:} + +\figure{Text of first caption.\label{fig1}} + +\figure{This is the second caption: +comparison of the differential cross sections +for the subprocess $qg \rightarrow qggg$ of our +approximation (dotted line) versus the approximation +of Maxwell together with the use of the +effective structure function approximation +(solid line).\label{fig2}} + +\bigskip + +Figures are cited in text with the use of the \btt{ref} command: + +\smallskip + +\leftline{\bf input:} +\begin{verbatim} +...It can be seen from Fig.\ \ref{fig1} that +the data are inconsistent with this +conclusion... +\end{verbatim} + +\leftline{\bf output:} + +\smallskip + +...It can be seen from Fig.\ \ref{fig1} that +the data are inconsistent with this conclusion... + +\smallskip + +\noindent +Further information on cross-referencing can be found +in Sec.~\ref{sec:xrefs}. + +Figures and illustrations are submitted as originals or glossy prints. +Follow the rules in the \SNG\ for style and specifications. + +\subsection{Tables} + +Tables are a part of the compuscript and should appear at the end of +the file. Every table must have a complete caption and the correct +number of descriptive column headings. Tables may be narrow +(8.6~cm or 3.4~in.\ wide), medium (14~cm or 5.5~in.\ wide), +or wide (17.8~cm or 7.0~in.\ wide), in galley format. +An example of each appears in the sample compuscript input. +Tables will be sized at the production site to be set narrow, medium, +or wide (according to the number of columns, type of material, etc.). +(When using the preprint form for {\em REVTEX\/}, all tables will +be set 6~in.\ wide. {\em REVTEX\/} will ignore \btt{narrowtext}, +\btt{mediumtext}, and \btt{widetext} commands if the front matter +of the file calls for the preprint form.) + +Each table must begin with \btt{begin}$\{${\tt table}$\}$, +and end with \btt{end}$\{${\tt table}$\}$. +Follow current {\em Physical Review\/} +style concerning placement of table lines. (See examples in this +guide and recent issues of {\em Physical Review}.) The table +commands will set double horizontal +lines appearing at the beginning and end of the table; +a single horizontal rule should be set after the column headings with +the use of the \btt{tableline} command. +Extra sets of column headings within the table will require another +\btt{tableline} to separate the headings from the column entries. +Do not insert any other horizontal or vertical +lines in the body of the table. + +Since tables are automatically numbered, +the \btt{label} command is used with the \btt{ref} command +to cite tables in text. The \btt{label} command should +appear after the \btt{end}{\tt $\{$tabular$\}$ }and +before the \btt{end}{\tt$\{$table$\}$} command. +\bigskip + +\leftline{\bf Some special table considerations:} + +\smallskip + + +$\bullet$ {\em Numerical columns\/} should align on the decimal point +(or decimal points if more than one is +present). See Sample Compuscript A. + +$\bullet$ Use \$ delimiters for all math in +a table (no displayed equation commands). See Sample Compuscript A. + +$\bullet$ {\em Footnotes\/} in a table must be labeled a, b, c, etc. +See Sample Compuscript A. + +$\bullet$ {\em Extra wide tables\/} +that will not fit into the 17.8-cm or 7.0-in.\ designation +can be manipulated by the production staff to produce a turned table +that will appear lengthwise on a page. A cover letter requesting +this special handling should accompany tape submittal. +The author can use the \btt{squeezetable} command with tables that +do not fit on the page. + +\bigskip +Authors should consider the feasibility of depositing extensive +tabular material in the Physics Auxiliary Publication Service +of the American Institute of Physics. This material will usually +be included in the Microfilm edition of the {\em Physical~Review}. +For details, please write to the Editorial Office. + +\section{CROSS-REFERENCING} +\label{sec:xrefs} + +{\em REVTEX\/} has built-in features for autonumbering of +section headings, equations, tables, and figures. +This section contains a simplified explanation of +cross-referencing features. The format for using these +features with section headings, equations, tables, and figures +is discussed in the appropriate section. + +Cross-referencing depends upon the use of ``tags,'' which +are defined by the user. The \btt{label} command is used +to identify tags for \TeX . Tags are strings of characters that +serve to label equations, tables, and figures, so that +you don't need to know what number {\em REVTEX\/} has assigned to +the item in order to talk about it in text. + +You will need to \LaTeX\ the original file more than once to +ensure that the tags have been properly +linked to appropriate numbers. If you add any tags, +you will need to \LaTeX\ more than once in subsequent work sessions: + \LaTeX\ will +display an error message that ends with {\tt ... Rerun +to get cross-references right}. +If you see that message, \LaTeX\ the file again. +If the error message appears after two \LaTeX ings, +please check your labels; you probably have referred to +an item in text without tagging the item. + +You may not need to know (or care to know) all about what +\LaTeX\ is doing for autonumbering; however, you may want to know that +when you \LaTeX\ the file for the first time, an +auxiliary file with the {\tt .aux} filename extension will be +created that connects numbers with their tags. Subsequent +\LaTeX ing accesses the auxiliary file to put the proper number +in the text. + +Sample Compuscript A illustrates the use of cross-referencing. + + +\widetext + + +\section{COMPUSCRIPT SAMPLES} +\label{sec:samples} + +In the following pages is a short annotated sample compuscript +(Sample A) in input and output form. The various parts +of the compuscript are explained as well +as the associated galley formatting commands (macros). +The input follows the output. + +The {\em REVTEX\/} galley macro package produces +single-column galleys (sometimes double-column width for +long equations, wide figures, +and tables). The galleys are sent to +the art department where the output +and figures are combined in a two-column format onto camera-ready +boards that are then sent to the printer. + +Please review the various sections of the output and compare +to the input. + +For a more comprehensive example of compuscript input, see +Sample Compuscript B (galley format and preprint format). + + +\subsection{Sample Compuscript A} +%% NOTE: +%% The compuscript sample that appears here in the Input Guide +%% is actually the file SMPLEA.TEX, and is included separately in the +%% toolbox. + +\subsection{Sample Compuscript B -- Galley Format} +%% NOTE: +%% The compuscript sample that appears here in the Input Guide +%% is actually the file SMPLEB.TEX, and is included separately in the +%% toolbox. + +\subsection{Sample Compuscript B -- Preprint Format} +%% NOTE: +%% The compuscript sample that appears here in the Input Guide +%% is actually the file SMPLEC.TEX, and is included separately in the +%% toolbox. + +\mediumtext +\appendix{Command list} +\label{sec:commands} + +In the following pages is a brief description of some +necessary commands. +Those commands that are unique to {\em REVTEX\/} are so noted +with {\tt (R)}. Please consult the \LaTeX\ {\em User's Guide and +Reference Manual\/} if you have further questions +regarding \LaTeX\ commands. + +If commands require arguments, they are so noted +with \#{\tt 1}, \#{\tt 2}, etc. +The commands are in order of their probable occurrence in a file. + +\vskip .5in +\begin{verbatim} +\documentstyle[#1]{aps} Will allow for proper formatting of paper; use + [preprint,revtex] for #1 if preprint format + is desired, and use [revtex] for #1 if galley + format is desired. To number equations by + section, use the eqsecnum option: + [revtex,eqsecnum]. + +\tightenlines Preprint style outputs a double-spaced + manuscript. When used in preprint style, + this command reverts to single spacing to + save paper. Has no effect in galley style. + Use before \begin{document}. (R) + +\begin{document}, Necessary in the beginning and end of file. +\end{document} + +\preprint{#1} When used as the first command of a document, + places #1 at the top right corner of the first + page in preprint style. Used for site-specific + preprint numbers. (R) + +\draft Omission of this command will cause printing + of PACS numbers to be stifled. (R) + +\begin{title}, Signals beginning or end of title. The title +\end{title} should be broken with the \\ command. + +\author{#1} #1 represents a list of authors. Use \\ to force + linebreaks. + +\begin{instit}, Signals beginning or end of an author's address +\end{instit} (institution). The address should be + broken with \\ if necessary. + +\receipt{#1} #1 represents the date of receipt at the + Editorial Offices. This date will be + inserted at the production site. (R) + +\begin{abstract}, Signals the beginning or end of the abstract. +\end{abstract} + +\pacs{#1} #1 represents valid PACS numbers. This command + should be used after the abstract, even if + #1 is empty. (R) + +\narrowtext For galley format, will set all text that + follows into a 3 3/8 in. column. Does not + affect preprint output. (R) + +\mediumtext For galley format, will set figure captions + and tables 5 1/2 in. wide. Does not + affect preprint output. (R) + +\widetext For galley format, will set all text that + follows into a 7 in. wide column. Does not + affect preprint output. (R) + +\section{#1} #1 represents a primary heading. Fragile + commands should be preceded by \protect. + +\subsection{#1} #1 represents a secondary heading. Fragile + commands should be preceded by \protect. + +\subsubsection{#1} #1 represents a third-level heading. Fragile + commands should be preceded by \protect. + +\cite{#1} Sets a reference or byline footnote citation. + #1 represents a list of reference tags used with + \bibitem. Lists of consecutive numbers will + be collapsed; e.g., 1,2,3 will become 1-3. + +\case{#1}/{#2} Sets textstyle (smaller) fractions in displayed + equations. #1 is the numerator, #2 is + denominator. (R) + +\openone Produces an openface one. (R) + +\alt,\agt Produce "approximately less than" and + "approximately greater than" signs, + respectively, in math mode. (R) + +\FL Sets the displayed equation that follows + flush left with the margin. (R) + +\FR Sets the displayed equation that follows + flush right. (R) + +\[,\] Signals beginning or end of unnumbered + displayed equation. + +\begin{eqnarray}, Signals beginning or end of multiline +\end{eqnarray} displayed equation. + +\nonumber Suppresses the numbering of a single + line in a multiline equation. + +\begin{quasitable}, Environment to produce tables in text. See +\end{quasitable} Sample B in the REVTEX guide for an example. + +\label{#1} #1 represents the tag. This command appears in + displayed equations that need cross-referencing, + all tables, and all figure captions. Also used + following section headings that need + cross-referencing. + +\ref{#1} #1 represents the tag. This command appears + in text wherever sections, equations, tables, + or figures are cited. + +\nonum Stifles numbering of the immediately following + section heading. + +\acknowledgments Sets a section heading for the acknowledgment + section. + +\appendix{#1} Sets #1 as a lettered appendix heading. + #1 can be empty. To be used when there are + multiple appendixes. \protect should be used + for fragile commands. Appendixes should not + be started with \section{#1}. + +\unletteredappendix{#1} Same as \appendix, but produces no letter. + To be used when there is only one appendix. + +\begin{references}, Signals beginning or end of reference section. +\end{references} + +\bibitem[#1]{#2} Sets a reference in the reference section. + #1 represents an optional, author-specified + reference symbol. This is used for byline + footnotes, which are not numbered in + Physical Review. + #2 represents the reference tag. + +\figure{#1\label{#2}} Sets the figure caption. + #1 represents the text of the caption. + #2 represents the figure caption tag. + +\newpage Signals start of new page. + +\begin{table}, Signals the beginning or end of a table. +\end{table} + +\dec #1.#2 This command may be used for simple + decimal-point alignments in tables. + #1.#2 represents a number to be aligned + by the decimal point. The decimal point and a + space after #2 are mandatory. \dec uses + constant-width boxes for #1 and #2. For + best results you can set the widths with + \setdec. See Sample A. (R) + +\setdec #1.#2 This command is used to set the amount of space + reserved on each side of the decimal point by + the \dec command. Use \setdec inside a table + to set the size of \dec for the numbers used + in that table only, or outside a table to set + the size globally. \setdec 000.000 is the + default. See Sample Compuscript A. (R) + +\squeezetable Used immediately after \begin{table}, shrinks + tables that would not otherwise fit. (R) + +\caption{#1} Sets the table caption. #1 represents the + text of the caption. + +\begin{tabular}{#1} Signals the beginning of the tabular material. + #1 represents formatting commands for + the columns. + +\tableline Sets a horizontal rule, separating column + headings from data. (R) + +\end{tabular} Signals end of tabular material. + +\tablenotes{#1} Sets footnotes to the table. #1 represents + text of footnote. These footnotes are not + autonumbered: text of footnote must be + preceded by a roman letter in a superscript to + coincide with the citation in table. (R) + +\end{verbatim} + +\widetext +\newpage +\appendix{Upgrading to {\em REVTEX\/} 2.0} +\label{sec:upgrade} + +\catcode`\@=11 +\def\alt{\mathrel{\mathpalette\vereq<}} +\def\vereq#1#2{\lower3pt\vbox{\baselineskip1.5pt \lineskip1.5pt +\ialign{$\m@th#1\hfill##\hfil$\crcr#2\crcr\sim\crcr}}} +\def\agt{\mathrel{\mathpalette\vereq>}} +\def\openone{\leavevmode + \hbox{\small1\kern\iftwelvepointon-3.8pt\else-3.3pt\fi\@normalsize1}% +} +\def\xxx{\leavevmode\hbox{\tt\char`\ }} % visible space +\catcode`\@=12 +% + +\begin{table} +\caption{This table is a summary of the new commands and capabilities +of {\em REVTEX\/} 2.0. \xxx\ denotes an input space. See the +{\em REVTEX\/} 2.0 manual for examples of usage. +{\bf Note}: if you wish to run {\em REVTEX\/} 2.0 on +files formatted with an old version, you should first delete the +{\tt.aux} file. The auxiliary-file formats are incompatible.} +\begin{tabular}{lp{12cm}} + \tt\string eqsecnum& This style option replaces the old +\verb+\math-with-secnums+ command. \\[4pt] + \tt\string \tightenlines& This command has been added since + the preprint style now produces double-spaced output. This command, + placed before the \verb+\begin{document}+, will give + {\em single}-spaced output in the preprint style. This may be more + convenient for the author while the paper is being written. \\[4pt] + \tt\string \preprint\{\#1\}&This command should be used just before + the title. It will place its argument in the upper-right corner of + the page. To be used for site-specific information + (e.g., preprint numbers).\\[4pt] + title environment& You now need to break the lines of the title with +\verb=\\=. The title is not set in boldface. \\[4pt] + \tt\string \author\{\#1\}& The author list will be broken + automatically if +it does not fit on one line. Breaks can be forced with +\verb+\\+. \\[4pt] + \tt\string \moreauthors\{\#1\}& This command is no longer needed. + It has been set equal to {\tt\string\authors\{\#1\}}. \\[4pt] + instit environment& Line breaks must now be forced with + \verb+\\+.\\[4pt] + \tt\string \onlinecite\{\#1\}& This will produce a reference + citation with the number on line with the text. Can also be used as +{\tt\string\citenum\{\#1\}}. These commands and \verb+\cite+ all +collapse lists automatically. \\[4pt] + \tt\string \overlay\{\#1\}\{\#2\} & To print two symbols on + top of each other.\\[4pt] + \tt\string \FR & This command will flush an equation or eqnarray +to the right in galley mode.\\[4pt] + \tt\string\eqnum\{\#1\}& Now accepts any legal number as an argument, +including primes, etc. Can be used in eqnarrays and equations +and with \verb+\label+ and \verb+\ref+. This is +transparent to the normal autonumbering.\\[4pt] + mathletters environment & +This is an environment to ``number'' equations with letters; +e.g., (1a),(1b),(1c). Works with equations and eqnarrays. \\[4pt] + \verb+\openone+& Produces an openface one (\openone).\\[4pt] + \verb+\alt,\agt+ & Produce $\alt$,$\agt$ in math mode.\\[4pt] + \vtop{\hbox{\verb+\begin{quasitable},+} +\vskip2pt\hbox{\verb+\end{quasitable}+}} & +Environment to produce tables in text. +See Sample B in the {\em REVTEX} guide for an example.\\[4pt] + \vtop{\hbox{\tt\string\section\{\#1\}, \string\subsection\{\#1\},} +\vskip2pt +\hbox{\tt\string\subsubsection\{\#1\}}}& +All can now be broken with \verb+\\+, and all +work with \verb+\label+ and \verb+\ref+. {\tt\string\protect} is +needed (and works) with fragile commands in headings. Not bold.\\[4pt] + \tt\string \acknowledgments& +Produces a heading for the acknowledgments. \\[4pt] + \tt\string \appendix\{\#1\}& +Used for the appendix headings in a paper with more than one appendix. +Automatically produces letters in sequence, and uses the letter in +equation numbers. Works with \verb+\label+ and \verb+\ref+. Fragile +commands need to be {\tt\string\protect}'d. The curly brackets must +be present, but may be empty. Not bold.\\[4pt] + \tt\string \unletteredappendix\{\#1\}& Similar to \verb+\appendix+, +but produces no letter. Should be used when there is a +single appendix in a paper. \\[4pt] + \tt\string \bibitem & The optional argument is now truly optional. +The references will now all be numbered automatically, and no +arguments in square brackets should be used except +where byline footnotes are needed. \\[4pt] + table environment & LaTeX's @ command for specifying a tabular format +has been re-enabled inside a table environment. This allows authors to +align columns by the LaTeX trick of smashing two columns together (see +Sample Compuscript A). +Tables no longer produce monolithic boxes. Instead the output +is much more like lines of regular text, allowing +tables to break over pages. \\[4pt] + \tt\string \setdec\xxx \#1.\#2\xxx & This command is used to set + the amount of space reserved on each side of the period by the + \verb+\dec+ command. See Sample Compuscript A.\\[4pt] +\tt\string\squeezetable & There may be tables that will not fit in the +width provided by the preprint style. Inserting this command right +after the table environment begins will shrink the type in a table, +helping it to fit. + %\tt\string & \\[4pt] + %\tt\string & \\ +\end{tabular} +\end{table} + + +\narrowtext +\newpage + +\appendix{FAST FACTS FOR NEW PARTICIPANTS} +\label{sec:fastfacts} + +Since 1980 the American Physical Society has been accepting +computer files from authors and using those files (``compuscripts'') +in the preparation of their galleys. In 1987 a research and +development effort was launched to expand this service to include +\TeX -formatted compuscripts. We have been publishing +\TeX\ compuscripts since 1988. + +\medskip +{\bf Benefits to Author: Reduced Proofreading}. Since +galleys are composed from virtually the same file that produced +the manuscript, proofreading time can be reduced significantly. + +\medskip +{\bf How to Qualify: Use {\em REVTEX} or \LaTeX\ Macros}. +The APS has developed a ``compuscript toolbox,'' which is +composed of macros, a {\em Physical Review Input Guide +for \TeX\ Author-Prepared Compuscripts}, a {\em Style +and Notation Guide}, and complete instructions on how to +install the macros. The toolbox is designed to guide the author +in the preparation of a manuscript for the {\em Physical +Review}. + +\medskip + + +{\bf Which Journals are Participants?} Papers +submitted to {\em Physical Review A, B, C,\/} or {\em D\/} +may qualify. + +\medskip +{\bf Media for Compuscripts}. We can process +files received via electronic mail, DOS formatted floppy disk, and +even magnetic tapes from UNIX systems. + +\medskip +{\bf How to Participate}. Indicate your interest +in your cover letter when you make your {\bf original} submission. +We will contact you to confirm file qualification. Then we will +contact you if your manuscript is accepted for publication to +arrange file transfer. + +\medskip +{\bf Obtaining the Toolbox and More Information}. Contact + +\medskip +Peggy Sutherland + +APS Liaison Office + +500 Sunnyside Boulevard + +Woodbury, New York~~11797 + +\medskip +(516) 349-7800, ext.\ 674 + +\medskip +E mail address: {\tt mis@apsedoff} + + +\appendix{COMMON AUTHOR QUESTIONS} +\label{sec:macros} + +{\bf Page Charges.} +Historically, page charges for compuscripts have +fluctuated. The Council has, at various points +over the ten-year history of the program, voted +for reduced page charges, the elimination +of page charges, and full page charges for compuscripts. +At press time, compuscripts were subject +to full page charges. + +\bigskip +{\bf Macros.} +Some authors use specialized definitions, or macros, +in their files. These definitions serve different +purposes: some macros save the author from typing +a long character string repetitively (Type 1), and some macros +act as commands to the \TeX\ program or the troff +program (Type 2). + +\smallskip +{\bf How macros become problematic.} +Type-1 macros enable the author to define a frequently +occurring string of characters as a shorter string, in +order to save typing time. These macros become +problematic at production stage when the frequently +occurring string needs stylistic or grammatical changes. +At that point, the production of the compuscript requires +either (1) evaluation by a staff member who is fluent in +macro construction, because the macro will need to +changed, or (2) additional attention by a staff member +who will change every occurrence of the string manually +in the file. + +Neither one of the two alternatives is in the +spirit of the compuscript program: the author of +the compuscript will need to proofread the galleys +very carefully, and production time/cost has become +inflated by processing as a compuscript! + +Type-2 macros enable the author to give commands to the \TeX\ +program. Authors need to do this when the +macro package they are using does not contain a command +that they need. + +Type-2 macros frequently occur in \LaTeX\ compuscripts. +This is because the macros do not provide for certain +elements of {\em Physical Review} style; for instance, +letters in equation numbers. Authors who are using \LaTeX\ to +compose their compuscripts would need to develop +a command that would number their equations (1a), (1b), etc. + +Type-2 macros should not occur in {\em REVTEX\/} compuscripts. The +{\em REVTEX\/} macros ideally represent a complete command set, +allowing the author to do anything that Physical Review style +allows. + +Since our first release of {\em REVTEX\/}, some +authors have given us feedback on macros that they +would like included in the {\em REVTEX\/} package, as well +as changes they would like made. Some of +these suggestions are feasible (accurate double +spacing) and some are not (the ability to draw +many horizontal lines within the tabular environment). +Relevant suggestions have been incorporated in +v2.0 of {\em REVTEX\/}. The APS will review compuscripts +containing Type-2 +macros when authors feel that they have found a deficiency +in {\em REVTEX\/}. + +{\bf Authors should remove all macros from their +compuscripts.} Type-1 macros are easy to remove, with +the aid of a word processor which is equipped to +do global substitutions. Type-2 macros are +not easy to remove; authors may not be able to +do so and therefore will be ineligible for the compuscript +program. This of course does not prevent them from +making their original submission electronically. + +This represents the current policy for compuscript +page charges and macro usage, which is subject to +change. If you have any questions regarding +these issues please contact the authors of this guide. + + +\appendix{CONTACTS} +\label{sec:contacts} + +\vskip.5pc +\begin{quasitable} +\begin{tabular}{p{1.5in}p{1.5in}} +\noindent{\bf REVTEX \mbox{questions/}\par technical support$^*$}\par +\vskip4pt\hrule width1.5in\vskip4pt +C.\ Hamlin \par +{\tt mis@apsedoff}\par +\vskip4pt +P.\ Sutherland\par +{\tt mis@apsedoff}\par +& +\noindent{\bf Electronic mail\par submissions$^{**}$}\par +\vskip4pt\hrule width1.5in\vskip4pt +L.\ Siddons \par +{\tt tex@apsedoff}\par +\\[.75pc] +\noindent{\bf \mbox{Policy questions$^*$}\par} +\vskip4pt\hrule width1.5in\vskip4pt +C.\ Hamlin \par +P.\ Sutherland\par +& +\noindent{\bf Manuscript status\par queries$^{**}$}\par +\vskip4pt\hrule width1.5in\vskip4pt +\tt +pra@apsedoff\par prb@apsedoff\par prc@apsedoff\par prd@apsedoff\par +\\[.75pc] +\noindent{\bf MIS project\par development questions$^*$}\par +\vskip4pt\hrule width1.5in\vskip4pt +P.\ Sutherland\par +& +\end{tabular} +\end{quasitable} + +\noindent $^*$American Physical Society Liaison Office, 500 Sunnyside +Boulevard, Woodbury NY 11797. + +\smallskip + +\noindent$^{**}$Editorial Offices, 1 Research Road, Ridge, NY 11961. + + + +\end{document} +% +% +% diff --git a/macros/latex209/contrib/misc/aps.sty b/macros/latex209/contrib/misc/aps.sty new file mode 100644 index 0000000000..f848af657d --- /dev/null +++ b/macros/latex209/contrib/misc/aps.sty @@ -0,0 +1,138 @@ +%March 16, 1989 version + +\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} + +\newif\iftwelvepointon %% larger bold math in 12pt style + +\@options +\iftwelvepointon\else +\input aps10.sty\fi + +\long\def\@makefntext#1{\parindent 1em\noindent + \hbox to 1.8em{\hss$^{\@thefnmark}$}#1} + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\Alph{enumiv}.} +\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 +\newdimen\descriptionmargin +\descriptionmargin=3em + + + + +\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt +\tabbingsep \labelsep +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt \fboxrule = .4pt + +\newcounter{part} +\newcounter {chapter} +\newcounter {section}[chapter] +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] + +\def\thepart {\Roman{part}} +\def\thechapter {\arabic{chapter}} +\def\thesection {\thechapter.\arabic{section}} +\def\thesubsection {\thesection.\arabic{subsection}} +\def\thesubsubsection {\thesubsection .\arabic{subsubsection}} +\def\theparagraph {\thesubsubsection.\arabic{paragraph}} +\def\thesubparagraph {\theparagraph.\arabic{subparagraph}} +\def\@chapapp{Chapter} + + +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{2} + +\def\l@chapter#1#2{\pagebreak[3] + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par + \endgroup} + +\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 \unhbox\@tempboxa\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} + + +\mark{{}{}} + +\if@twoside +\def\ps@headings{\def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{\rm +\thepage\hfil \sl \leftmark}\def\@oddhead{\hbox{}\sl \rightmark \hfil +\rm\thepage}\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth +>\m@ne + \@chapapp\ \thechapter. \ \fi ##1}}{}}\def\sectionmark##1{\markright +{\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi ##1}}}} +\else \def\ps@headings{\def\@oddfoot{}\def\@evenfoot{}\def\@oddhead{\hbox +{}\sl \rightmark \hfil \rm\thepage}\def\chaptermark##1{\markright +{\uppercase{\ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ \fi ##1}}}} +\fi +\def\ps@myheadings{\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} +\@addtoreset{equation}{chapter} + + + +\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi + diff --git a/macros/latex209/contrib/misc/aps10.sty b/macros/latex209/contrib/misc/aps10.sty new file mode 100644 index 0000000000..c0ca61cc6c --- /dev/null +++ b/macros/latex209/contrib/misc/aps10.sty @@ -0,0 +1,145 @@ +% Version: March 16, 1989 +% rep10.sty 23 Sep 85 +\lineskip 1pt \normallineskip 1pt +\def\baselinestretch{1} + +\def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt +\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt} + +\def\small{\@setsize\small{11pt}\ixpt\@ixpt +\abovedisplayskip 8.5pt plus 3pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus2pt\belowdisplayshortskip 4pt plus2pt minus 2pt +\def\@listi{\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt +\itemsep \parsep}} +\def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt +\abovedisplayskip 6pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 3pt plus 1pt minus +2pt +\def\@listi{\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt +\itemsep \parsep}} +\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} +\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt} +\def\large{\@setsize\large{14pt}\xiipt\@xiipt} +\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} +\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt} +\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} +\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} +\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 \footheight 12pt \footskip +30pt + +\textheight 528pt \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 \topsep 8pt plus 2pt minus 4pt +\partopsep 2pt plus 1pt minus 1pt \itemsep 4pt plus 2pt 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 25pt +\leftmarginii 22pt \leftmarginiii 18.7pt \leftmarginiv 17pt \leftmarginv 10pt +\leftmarginvi 10pt +\leftmargin\leftmargini +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\labelsep 5pt +\parsep 4pt plus 2pt minus 1pt +\def\@listi{\leftmargin\leftmargini} +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep 4pt 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/macros/latex209/contrib/misc/apsabstract.sty b/macros/latex209/contrib/misc/apsabstract.sty new file mode 100644 index 0000000000..7425139d1f --- /dev/null +++ b/macros/latex209/contrib/misc/apsabstract.sty @@ -0,0 +1,428 @@ +% APS abstract style. June 26, 1989. +% Written by +% Charles Karney +% Plasma Physics Laboratory Phone: +1 609 243 2607 +% Princeton University MFEnet: Karney@PPC.MFEnet +% PO Box 451 Internet: Karney%PPC.MFEnet@NMFECC.LLNL.GOV +% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@LBL.Bitnet +% with contributions from Cris Barnes and Tom Murphy. + +\typeout{Document Substyle 'APS abstract'. Released 26 June 1989} + +% ******************** User documentation ******************** + +% APSABSTRACT: LaTeX style for abstracts submitted to American Physical +% Society conferences. + +% Summary. This following is a minimal abstract. + +% \documentstyle[11pt,apsabstract,dpp1989]{article} + +% \submittedby{Charles F. F. Karney} +% \submittedaddress{Princeton Plasma Physics Laboratory\\ +% P.O. Box 451\\Princeton, NJ 08543-0451} +% \category{1.6/T} +% \theory % or \experiment or both +% \preferposter % or \preferoral or \nopreference +% \title{Current drive efficiency in a hot plasma\thanks +% {This work supported by DoE contract No.\ DE--AC02--76--CHO--3073.}} +% \author{C. F. F. Karney and B. J. Braams} +% \affiliation{Princeton University} + +% \begin{document} +% \maketitle +% Body of abstract. (This can include equations, bibliography, etc.) +% \end{document} + +% Details. + +% Specify apsabstract,dpp1989 (in this order) as optional arguments to +% \documentstyle, e.g., +% \documentstyle[11pt,apsabstract,dpp1989]{article} +% (apsabstract contains the formatting commands. dpp1989 includes the +% information specific by the 1989 DPP meeting.) 11pt is the prefered size. + +% Place various declarations between \documentstyle and \begin{document}. +% These are mostly self explanatory: + +% \invitedabstract: If this is an invited abstract (print in landscape +% mode). Many of the fields (\category, \preferposter, etc.) are +% irrelevant and are ignored. + +% \submittedby{name}: Name of APS member submitting abstract +% \submittedaddress{address}: and his address (lines separated with \\) +% \category{number}: The subject category number + +% \theory or \experiment or both: To get one of the experiment/theory +% boxes checked (optional) +% \preferposter or \preferoral or \nopreference: Ditto + +% \placement{placment instructions}: optional +% \specialfacilities{special facilities}: optional +% \otherrequests{other requests}: optional + +% \title{title}: The title of the abstract. Probably should include +% something like +% \thanks{This work supported by DoE contract +% No.\ DE--AC02--76--CHO--3073.} +% \author{authors}: Author list punctuated with commas (and `and') +% \affiliation{Princeton University}: Affiliation + +% For papers with authors from more than one institution, you can use +% footnotes to indicate the affiliation of the minorities (via \thanks). If +% you want to list multiple affiliations in the heading, then use +% \affiliation to specify the last institution and include the other +% institutions in the author list (in italics). Thus +% \author{A. Shadrack, B. Misheck, +% C. Abednego, {\it Princeton University}, and +% N. Nebuchadnezzar} +% \affiliation{Babylonian Institute of Furnaces} + +% Stick \maketitle between \begin{document} and the body of the abstract. + +% Pretty much anything can go into the body of the abstract. LaTeX thinks +% you are merely typing an ordinary paper that happens to have a small +% \textheight and \texwidth. + +% LaTeX normally sets footnotes in \footnotesize. This is probably too +% small considering that APS abstracts get reduced when printed in the +% Bulletin of the APS. Therefore, both footnotes and references are set in +% \referencesize, which apsabstract.sty defines to be \normalsize. If you +% would like these set smaller, try +% \renewcommand{\referencesize}{\small} + +% You'll know if your abstract is too long if it spills over onto a second +% page. Try changing to 10pt type. Or else, reduce the baseline separation +% with \renewcommand{\baselinestretch}{0.9}. + +% A complete abstract is given in tex$doc:apstest.tex. + +% ******************** End of user documentation ******************** + +% SEE END OF FILE FOR INSTALLER'S INSTRUCTIONS + +\textwidth=120mm \textheight=105mm % APS rules + +\oddsidemargin=25mm \topmargin=-15mm +\parskip=0pt +\headheight=31mm +\headsep=5ex +\onecolumn \raggedbottom \sloppy +\def\baselinestretch{1} + +\newif\if@invited \@invitedfalse +\def\invitedabstract{\@invitedtrue + \textheight=4.7in \textwidth=8.2in % Invited abstracts are larger + \headsep=2ex % The title etc. is part of the header + \parindent=0pt % First line of body is not indented + \headheight=40mm + \topmargin=0mm + \oddsidemargin=11mm +} + +% All the field declarations + +\def\conference#1{\gdef\@conference{#1}} \conference{} +\def\location#1{\gdef\@location{#1}} \location{} +\def\date#1{\gdef\@date{#1}} \date{} +\def\mailto#1{\gdef\@mailto{#1}} \mailto{} +\def\receiptdate#1{\gdef\@receiptdate{#1}} \receiptdate{} + +\def\category#1{\gdef\@category{#1}} \category{} +\def\submittedby#1{\gdef\@submittedby{#1}} \submittedby{} +\def\submittedaddress#1{\gdef\@submittedaddress{#1}} \submittedaddress{} + +\def\title#1{\gdef\@title{#1}} \title{} +\def\author#1{\gdef\@author{#1}} \author{} +\def\affiliation#1{\gdef\@affiliation{#1}} \affiliation{} + +\def\experiment{\gdef\@experiment{y}} +\def\theory{\gdef\@theory{y}} +\gdef\@experiment{}\gdef\@theory{} + +\def\preferposter + {\gdef\@preferposter{y}\gdef\@preferoral{}\gdef\@nopreference{}} +\def\preferoral + {\gdef\@preferposter{}\gdef\@preferoral{y}\gdef\@nopreference{}} +\def\nopreference + {\gdef\@preferposter{}\gdef\@preferoral{}\gdef\@nopreference{y}} +\gdef\@preferposter{}\gdef\@preferoral{}\gdef\@nopreference{} + +\def\placement#1{\gdef\@placement{#1}} \placement{} +\def\specialfacilities#1{\gdef\@specialfacilities{#1}}\specialfacilities{} +\def\otherrequests#1{\gdef\@otherrequests{#1}} \otherrequests{} + +% Most of the formatting goes into the header and footer. +% Define the myheadings to get the top and bottom typeset + +\def\ps@myheadings{\let\@mkboth\@gobbletwo +\def\@oddhead{\@maketop}\def\@oddfoot{\@makebottom}% +\def\@evenhead{}\def\@evenfoot{}} +\pagestyle{myheadings} + +% Need to define \pagenumbering even though pagestyle is empty +% in order to get \thepage defined + +\pagenumbering{arabic} + +% Boxes with/without X's + +\newbox\@emptybox \newbox\@fullbox + +\setbox\@emptybox=\hbox{\lower1.5pt + \hbox{\unitlength=10pt\begin{picture}(1,1)(0,0) + \put(0,0){\framebox(1,1){}}\end{picture}}} +\setbox\@fullbox=\hbox{\lower1.5pt + \hbox{\unitlength=10pt\begin{picture}(1,1)(0,0) + \put(0,0){\line(1,1){1}}\put(1,0){\line(-1,1){1}} + \put(0,0){\framebox(1,1){}}\end{picture}}} + +\def\@checkedbox{\copy\@fullbox} +\def\@uncheckedbox{\copy\@emptybox} + +\def\@choosebox#1{\ifx\@empty#1\@uncheckedbox\else\@checkedbox\fi} + +% Top matter + +\def\@maketop{\hbox to \hsize{\hss + \vbox{\if@invited\else\hsize=180 mm \fi + \xpt\baselineskip=12pt\maketop}\hss}} +\def\maketop{% + {\centering + {\xipt\bf\if@invited Invited \fi\@conference\\[1ex] + \ifx\@empty\@location \else\@location, \fi % Location field is optional + \@date}\\[2ex] + \if@invited\vspace{7ex}\noindent\box\@titlebox\else + Category Number and Subject% + \ifx\@empty\@category\ \rule{5cm}{0.4pt} \relax\else + : {\xipt \@category} \fi\\[1ex] + \noindent + \@choosebox{\@theory}\ Theory\qquad + \@choosebox{\@experiment}\ Experiment \\ \fi + }} + +% Bottom matter + +\def\@makebottom{\if@invited\else\hbox to \hsize{\hss + \vbox{\hsize=180 mm \xpt\baselineskip=12pt \makebottom}\hss}\fi} +\def\makebottom{% + {\vspace{\headsep} + \def\rrule{\penalty0 + \rule{0pt}{15pt}\rule{57mm}{0.4pt}}\parindent=0pt\parskip=0pt + \hspace{18mm} + \begin{minipage}[t]{65mm}\raggedright\sloppy + \def\@para##1{\par\noindent\hangindent=6mm + \hbox to \hangindent{##1\hfil}} + \@para{\@choosebox{\@preferposter}}Prefer Poster Session + \@para{\@choosebox{\@preferoral}}Prefer Oral Session + \@para{\@choosebox{\@nopreference}}No Preference + \@para{\@choosebox{\@placement}}This poster/oral should be + placed in the following grouping: + \@para{}\ifx\@empty\@placement\rrule\rrule\else + {\xipt\bf \@placement}\fi + \@para{\@choosebox{\@specialfacilities}}Special Facilities Requested + \@para{}\ifx\@empty\@specialfacilities\rrule\rrule\else + {\xipt\bf \@specialfacilities}\fi + \@para{\@choosebox{\@otherrequests}}Other Special Requests + \@para{}\ifx\@empty\@otherrequests\rrule\rrule\else + {\xipt\bf \@otherrequests}\fi + \end{minipage}% + \hspace{25mm}% + \begin{minipage}[t]{65mm} + Submitted by:\par + \vspace{30pt}\hrule + (\strut Signature of APS Member) \par + \begin{flushleft} + \@submittedby\\\@submittedaddress + \end{flushleft} + \end{minipage} + } + \par\vspace{10pt}\noindent + {\xipt + This form, or a reasonable facsimile, plus {\large\bf TWO XEROX COPIES}, + must be received by {\large\bf NO LATER THAN NOON}, \@receiptdate\ + at the following address:\par} + \begin{flushleft}\leftskip=18mm\relax + \@mailto + \end{flushleft} +} + +\let\abstract\relax % So text can optionally be put in abstract environment + +% Set the title + +\def\maketitle{\par + \begingroup + \def\@makefnmark{\hbox + to 0pt{$^{\@thefnmark}$\hss}} + \if@twocolumn + \twocolumn[\@maketitle] + \else \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle \fi\thispagestyle{myheadings}\@thanks + \endgroup + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax\@gobblecr} + +\long\def\@gobble#1{} % So gobble can discard a \par + +\newbox\@titlebox + +\def\@maketitle{\if@invited + \newpage\par\global\setbox\@titlebox + \vbox{\hsize\columnwidth \@parboxrestore + {\large\bf \@title.}\strut\par + {\sc\@author}, {\it\@affiliation}\strut\par} +\else + \newpage\par\noindent\kern .67in % 8 spaces at 12 chars/in + \relax{\large\bf\@title}\@. + {\sc\@author}, {\it\@affiliation}---% +\fi} + +% Footnotes are handled by putting them in \box\@footins. This is spat out +% either by the bibliography or by \end{document} + +\newbox\@footins % Declare a box for the footnotes + +\def\thefootnote{\fnsymbol{footnote}} % Use symbols for footnotes + +% Redefine \LaTeX's \@footnotetext +\long\def\@footnotetext#1{\global\setbox\@footins + \vbox{\unvbox\@footins + \referencesize + \hsize\columnwidth \@parboxrestore + \edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}\@makefntext + {\rule{\z@}{\footnotesep}\ignorespaces #1\strut}}} + +\long\def\@makefntext#1{\parindent 1em\noindent + $^{\@thefnmark}$#1} + +% The citations handled with superscript numbers as in aip style. +% In addition, we have to put out the footnotes. + +\def\newblock{} + +\def\thebibliography#1{\vskip\skip\footins\footnoterule\unvbox\@footins +\setcounter{biblionum}{0}\frenchspacing\referencesize} +\let\endthebibliography=\par + +\@definecounter{biblionum} +\def\@bibnum{\arabic{biblionum}} +\def\bibitem#1{\stepcounter{biblionum}\par\noindent + $\m@th^{\@bibnum}$% + \if@filesw \immediate\write\@auxout + {\string\bibcite{#1}{\@bibnum}}\fi\ignorespaces} +% Still using aip style citations +\def\@cite#1#2{\unskip\nobreak\relax + \def\@tempa{$\m@th^{\hbox{\the\scriptfont0 #1}}$}% + \futurelet\@tempc\@citexx} +\let\citea=\@cite +\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} +\def\citenum#1{{\def\@cite##1{##1}\cite{#1}}} + +% Add check for \@footins in \enddocument +\def\enddocument{\@checkend{document} +\ifvoid\@footins\else\vskip\skip\footins\footnoterule\unvbox\@footins\fi +\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} + +\let\referencesize\normalsize + +\endinput + +******************** INSTALLER'S INSTRUCTIONS ******************** + +Put this file, apsabstract.sty into your standard texinputs directory. You +might want to extract the user documentation from the top of this file, +edit it where appropriate and place it somewhere canonical (in your Local +Guide, INFO system, or wherever). You need to create a file describing the +conference. Here is a typical example, dpp1989.sty, for the 1989 Division +of Plasma Physics meeting. The format should be obvious. + +******************** dpp1989.sty ******************** + +\conference{Abstract Submitted for the Thirty-first Annual Meeting\\ + Division of Plasma Physics} + +\date{November 13--17, 1989} + +\location{Anaheim, California} % This is optional + +\mailto{Saralyn Stewart \\ +Institute for Fusion Studies \\ +RLM 11.234 \\ +The University of Texas at Austin \\ +Austin, TX\ \ 78712\\ +Telephone: (512) 471-4378} + +\receiptdate{Monday, July 10, 1989} + +******************** End of dpp1989.sty ******************** + +Here is the example refered to in the user documentation, +tex$doc:apstest.tex: + +******************** apstest.tex ******************** + +% Test of APS abstract styles + +\documentstyle[11pt,apsabstract,dpp1989]{article} + +\newcommand{\DOEcredit}{This work supported by DoE contract +No.\ DE--AC02--76--CHO--3073.} + +\submittedby{Charles F. F. Karney} +\submittedaddress{Princeton Plasma Physics Laboratory\\ +P.O. Box 451\\Princeton, NJ 08543-0451} + +\category{1.6/T} + +\theory % one or both of \theory or \experiment +\preferposter % one of \preferposter or \preferoral or \nopreference + +% These three are optional +\placement{next to paper by B. J. Braams and C. F. F. Karney} +\specialfacilities{35mm movie projector} +\otherrequests{Please schedule on Monday morning} + + +\title{Current drive efficiency in a hot plasma\thanks{\DOEcredit}} + +\author{C. F. F. Karney and B. J. Braams} + +\affiliation{Princeton University} + +\begin{document} + +\maketitle + +The efficiency of current drive by rf waves may be computed by means of a +response function \cite{AntChu82}. Here we use the response function +calculated for a relativistic plasma \cite{BraKar87} to calculate the +efficiency of current drive by lower-hybrid and electron-cyclotron waves in +a hot reactor plasma. The results are compared to those obtained by +neglecting either relativistic effects or the self-consistent reaction of +the bulk on the tail electrons. + +\begin{thebibliography}{1} + +\bibitem{AntChu82} T. M. Antonsen and K. R. Chu, Phys.\ Fluids {\bf 25}, +1295 (1982). + +\bibitem{BraKar87} B. J. Braams and C. F. F. Karney, Phys.\ Rev.\ Lett.\ +{\bf 59}, 1817 (1987). + +\end{thebibliography} + +\end{document} + +******************** End of apstest.tex ******************** diff --git a/macros/latex209/contrib/misc/astyped.sty b/macros/latex209/contrib/misc/astyped.sty new file mode 100644 index 0000000000..4ad22ba567 --- /dev/null +++ b/macros/latex209/contrib/misc/astyped.sty @@ -0,0 +1,23 @@ +%%%%%%%%%%%%%%%%%%%%%% @(#)astyped.sty 1.3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ASTYPED DOCUMENT-STYLE OPTION - released 88/06/30 +% for LaTeX version 2.09 +% Based on Leslie Lamport's verbatim environment in latex.tex. + +% Defines the `astyped' environment, which is like the `verbatim' +% environment except most of the special characters have their usual meanings. +% Space, ^K, and ^A are the only specials changed. + +\def\astyped{\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 \do\ \do\^^K\do\^^A + \frenchspacing\@vobeyspaces} + +\let\endastyped=\endtrivlist + +% Used inside astyped environments for normal formatting of a line. +% I wish I could give space its normal catcode within \notastyped. +\def\notastyped#1{\mbox{\rm #1}} + diff --git a/macros/latex209/contrib/misc/at.sty b/macros/latex209/contrib/misc/at.sty new file mode 100644 index 0000000000..50f9899e2c --- /dev/null +++ b/macros/latex209/contrib/misc/at.sty @@ -0,0 +1,52 @@ +% at.sty Colin Hogben (chah@jet.uk) +% 12-Aug-91 First version +% 20-Mar-92 Fixed to allow for \headheight +% 06-Jul-93 \@useat only used in case of any \at material (B.Gaulle) +% +% \at(HPOS,VPOS){TEXT} +% Positions TEXT at an absolute distance of HPOS from the left edge +% and VPOS from the top edge of the current page. +% +% Example: +% \at(2cm,5cm){\parbox[t]{10cm}{ +% Name\\ % Recipient's name and address positioned +% Address\\etc.}} % suitably for a windowed envelope +% ----------------------------------------------------------------- +% +% First create a box in which to store absolute positioned material. +% +\newbox\@atbox +\newif\ifat\atfalse% --bg +% +% at(HPOS,VPOS){TEXT} +% Add the TEXT to the box with suitable offsets applied. +% +\long\def\at(#1,#2)#3{\setbox\@atbox=\hbox + {\unhbox\@atbox + \vtop to 0pt{\kern #2\hbox to 0pt{\kern #1\relax #3\hss}\vss}}% + \attrue}% --bg +% +% Unload the saved absolute-positioned material. +% Teleport to the actual top corner of the page by undoing the header +% separation, the top and side margins, and the mysterious 1 inch +% offset applied to each. Then make it look like a singularity (zero +% height, depth and width). +% +\def\@useat{\ifat% --bg + \vtop to 0pt{\kern-\headsep \kern-\topmargin \kern-\headheight \kern-1in + \hbox to 0pt{\kern-\@themargin \kern-1in \unhbox\@atbox \hss}\vss}% + \fi\atfalse}% --bg +% +% The following is a copy of the latex.tex \output routine except for +% line 1: this prepends the shifted absolute material to the current +% page. A little unsafe to copy code like this, but I couldn't work +% out where else to insert the box. +% +\output{\setbox255=\vbox{\@useat \unvbox255}% + \ifnum\outputpenalty <-\@M\@specialoutput\else% + \@makecol\@opcol\@floatplacement\@startcolumn% + \@whilesw\if@fcolmade \fi{\@opcol\@startcolumn}\fi% + \global\vsize\ifnum\outputpenalty >-\@Miv \@colroom% + \else \maxdimen\fi}% +% +\endinput% --bg diff --git a/macros/latex209/contrib/misc/balanced.sty b/macros/latex209/contrib/misc/balanced.sty new file mode 100644 index 0000000000..ae5244253d --- /dev/null +++ b/macros/latex209/contrib/misc/balanced.sty @@ -0,0 +1,61 @@ +% The twocolumns environment can be used anywhere in a one column document to +% produce two column output. The twocolumns environment may extend for an +% unlimited number of pages, and start and finish mid-page. Columns are +% always balanced. The code works very hard to avoid two-column ``widows'' +% and ``orphans''. No inserts are supported (haven't worked out where to put +% them yet). + +\newbox\partialpage +\newbox\leftcolumn +\newdimen\dimen@ +\newdimen\colsize +\newdimen\lastpageshrink +\newdimen\dimend +\newenvironment{twocolumns}{\begingroup \global\@twocolumntrue +\def\fps@table{t} + \pagegoal=2\textheight + \lastpageshrink=\pageshrink + \output={\global\setbox\partialpage=\vbox{\unvbox255}}\penalty-10000% + \def\columnout{\trycolumnout}% + \output={\columnout}% + \hsize=\textwidth \advance\hsize-\columnsep \divide\hsize by 2 + \columnwidth=\hsize \linewidth=\hsize + \global\colsize=\textheight + \global\advance\colsize by-\ht\partialpage + \vsize=\colsize + \global\advance\vsize by\lastpageshrink + \multiply\vsize by2}% +% \end{twocolumns} + {\pagegoal=4\textheight + \output={\balancecolumns\pagesofar}\break + \endgroup \global\vsize=\textheight \pagegoal=\vsize} + +\def\pagesofar{\unvbox\partialpage% + \wd0=\hsize \wd2=\hsize \hbox to\textwidth{\box0\hfil\box2}} +\def\balancecolumns{\setbox0\vbox{\unvbox255} \dimen@=\ht0 + \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip + \divide\dimen@ by2 \splittopskip=\topskip + {\vbadness=10000 \loop \global\setbox3=\copy0 + \global\setbox1=\vsplit3 to\dimen@ + \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt\repeat} + \ifdim\dimen@>\textheight \dimen@=\textheight\fi + \setbox0=\vbox to \dimen@{\unvbox1} \setbox2=\vbox to \dimen@{\unvbox3} + \if\ht0>\ht2\setbox2=\vbox to\ht0{\unvbox2}\else + \if\ht2>\ht0\setbox0=\vbox to\ht2{\unvbox0}\fi\fi} + +\def\trycolumnout{% +% \@dblfloatplacement + \global\def\columnout{\leftcolumnout} + \global\vsize=\colsize + \unvbox255\penalty\outputpenalty} +\def\leftcolumnout{% + \global\def\columnout{\rightcolumnout} + \global\setbox\leftcolumn=\vbox to\vsize{\unvbox255}} +\def\rightcolumnout{% + \global\def\columnout{\trycolumnout} + \setbox0=\box\leftcolumn + \setbox2=\vbox to \vsize{\unvbox255} + \setbox\@outputbox=\vbox{\pagesofar}\@outputpage + \global\colsize=\textheight + \global\vsize=2\colsize} + diff --git a/macros/latex209/contrib/misc/bar.sty b/macros/latex209/contrib/misc/bar.sty new file mode 100644 index 0000000000..c8271ca86e --- /dev/null +++ b/macros/latex209/contrib/misc/bar.sty @@ -0,0 +1,548 @@ +% BAR.STY --- Style File zum Setzen von Balkendiagrammen +% Autor: J. Bleser, E. Lang +% Hochschulrechenzentrum +% Technische Hochschule Darmstadt +% !!! Dieses Style-File ist urheberrechtlich geschuetzt !!! +% !!! Aenderungen nur mit Zustimmung der Autoren !!! +\typeout{Option BAR, Version 1.0 Sep. 92, J.Bleser, TH Darmstadt, HRZ} +\typeout{bug fix for CTAN April 1994 (SPQR, for David Carlisle)} +\newcount\breite \newcount\hoehe \newcount\tiefe +\newcount\lhoehe \newcount\anzbar \newcount\hbarI +\newcount\xpos \newcount\lxpos \newcount\halfbreite +\newcount\ypos \newcount\lypos +\newcount\tmpa \newcount\tmpb \newcount\tmpc +\newcount\tmpd \newcount\tmpe +\newcount\xmin \newcount\xmax \newcount\xstep +\newcount\deltax \newcount\yhoehe % +\newcount\ymin \newcount\ymax \newcount\ystep +\newcount\yminII \newcount\ymaxII \newcount\deltay +\newcount\ymove \newcount\xmove \newcount\inter +\newcount\exact \newcount\xexact +\newdimen\dtmpa \newdimen\dtmpb +\newdimen\dmin \newdimen\dmax \newdimen\dstep +\newdimen\dxmin \newdimen\dxmax \newdimen\dxstep +\newdimen\faktor \newdimen\dinter +\newbox\mybox \newbox\xbox \newbox\ybox +\newif\if@xaxis \newif\if@yaxis +\newif\if@hlineon +\newif\iffaktor\faktorfalse + + +\def\setnumberpos#1{\def\my@number{\expandafter\csname my@#1\endcsname}} +\def\my@number{\my@outside} + + +\def\m@nth{month}\def\d@y{day} +\def\setxvaluetyp#1{\gdef\x@value{#1}% + \ifx\x@value\m@nth\let\myx@value\Monat@% + \else\ifx\x@value\d@y\let\myx@value\Tag@% + \else\let\myx@value\Zahl@n% + \fi% + \fi% +} + + +\def\solid{solid}\gdef\l@style{\relax} +\def\setlinestyle#1{\gdef\l@style{#1}% + \ifx\l@style\solid\let\my@lstyle=\mylinebox% + \else\let\my@lstyle=\mydotbox% + \fi% +} + + +\def\setwidth#1{\global\breite=#1% + \ifdim\dinter>0pt\inter\dinter\multiply\inter\breite\divide\inter65536\fi% + \halfbreite\breite\divide\halfbreite2% +} + + +\def\setdepth#1{\ifnum#1<10\global\tiefe=0\else\global\tiefe=#1\fi} + + +\def\setstretch#1{\global\faktor=#1pt\faktortrue} + + +\def\setstyle#1{\def\my@style{#1}} +\def\my@style{\tt} + + +\def\setprecision#1{\global\exact=#1} +\exact=0 + + +\def\sethspace#1{\dinter#1pt\dtmpa#1pt\multiply\dtmpa\breite% + \inter\dtmpa\divide\inter65536% +} + + +\def\setxname{\@ifnextchar [{\isetxname}{\isetxname[]}} +\def\isetxname[#1]#2{\global\setbox\xbox=\hbox{\makebox(0,0)[#1]{#2}}} + + +\def\setyname{\@ifnextchar [{\isetyname}{\isetyname[l]}} +\def\isetyname[#1]#2{\global\setbox\ybox=\hbox{\makebox(0,0)[#1]{#2}}} + + +\newcount\vorz % +\def\setyaxis{\@ifnextchar [{\i@setyaxis}{\i@setyaxis[0]}} +\def\i@setyaxis[#1]#2#3#4{% + \dmin#2\faktor\ymin\dmin\divide\ymin by65536% + \dmax#3\faktor\ymax\dmax\divide\ymax by65536% + \ifnum\ymin>\ymax\vorz-1\else\vorz1\fi% + \ifnum\ymin>0\ymin-\ymin\fi% + \ifnum\ymax<0\ymax-\ymax\fi% + \dstep#4\faktor\ystep\dstep\divide\ystep by65536% + \ifnum\ystep<0\ystep-\ystep\fi% + \@yaxistrue% + \setbox0=\hbox{\the\ymax}\setbox1=\hbox{\the\ymin} + \ifdim\wd0>\wd1\xmove=\wd0\else\xmove=\wd1\fi% + \divide\xmove by65536\advance\xmove by4% + \global\xmove=\the\xmove% + \deltay\ymax\advance\deltay-\ymin\tmpb\deltay% + \divide\deltay\ystep% + \advance\deltay by1% + \dmin=#2pt\dstep=#4pt% + \thicklines% + \multiput(0,\ymin)(0,\ystep){\deltay}{\line(-1,0){4}% + \put(-6,0){\makebox(0,0)[r]{{\my@style\dimIIreal\dmin}}% + \global\advance\dmin by\dstep}}% + \dtmpa=#1\faktor\ymove\dtmpa\divide\ymove by65536\ifnum\ymove<0\ymove=0\fi% + \tmpa\ymin\advance\tmpa by-\ymove\advance\tmpb by\ymove% + \global\yhoehe\tmpb % + \put(0,\tmpa){\line(0,1){\tmpb}}% + \thinlines% +} + + +\def\setxaxis#1#2#3{% + \dxmin#1pt\dxmax#2pt\dxstep#3pt\global\xexact\exact% + \@xaxistrue\let\mytmp@style=\my@style% +} + + +\def\hlineon{\global\@hlineontrue} + + +\def\bar#1#2{\@ifnextchar [{\@bar{#1}{#2}}{\@bar{#1}{#2}[]}} +\def\@bar#1#2[#3]{% + \dtmpa#1\faktor\hoehe\dtmpa\divide\hoehe by65536% + \multiply\hoehe\vorz% + \ypos0\def\@user{#1}% + \ifnum\hoehe<\yminII\yminII=\hoehe\fi\ifnum\hoehe>\ymaxII\ymaxII=\hoehe\fi% + \ifnum\anzbar=0\hbarI=\hoehe\fi% + \ifnum#2>-1% + \ifnum\hoehe<0\ypos=\hoehe\tmpa=-\hoehe\else\tmpa=\hoehe\fi% + \ifnum #2=1\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}\fi% + \ifnum #2=2\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}% + \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1% + \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}% + \fi + \ifnum #2=3\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}% + \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1% + \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}% + \fi + \ifnum #2=4\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}% + \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1% + \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}% + \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1% + \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}% + \fi + \ifnum #2=5\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}% + \tmpc=\breite\divide\tmpc by4\tmpb=\xpos\advance\tmpb by1% + \multiput(\tmpb,\ypos)(4,0){\tmpc}{\rule{2pt}{\tmpa pt}}% + \tmpc=\tmpa\divide\tmpc by4\tmpb=\ypos\advance\tmpb by1% + \multiput(\xpos,\tmpb)(0,4){\tmpc}{\rule{\breite pt}{2pt}}% + \fi + \ifnum #2=6\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}% + \tmpb=\breite\divide\tmpb by-2% + \ifnum\hoehe>0\advance\tmpb by\tmpa\fi% + \tmpc=\tmpa\divide\tmpc by4% + \multiput(\xpos,\ypos)(0,4){\tmpc}{% + \ifdim\@ydim<\tmpb pt\line(2,1){\breite}% + \else\tmpd=\@ydim\divide\tmpd by65536% + \ifnum\tmpd<0\else\advance\tmpd by-\tmpa\fi% + \multiply\tmpd by-2\line(2,1){\tmpd}% + \fi% + }% + \tmpb=\breite\divide\tmpb by8\tmpc=\breite\advance\tmpc by-8% + \tmpd=\tmpa\multiply\tmpd 2\advance\xpos by 8% + \multiput(\xpos,\ypos)(8,0){\tmpb}{% + \ifnum\tmpc<\tmpd\line(2,1){\tmpc}\else\line(2,1){\tmpd}\fi% + \global\advance\tmpc by-8% + }% + \advance\xpos by -8% + \fi% + \ifnum #2=7\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}% + \tmpb=\breite\divide\tmpb by2% + \ifnum\hoehe>0\ypos=\hoehe\else\ypos=0\advance\tmpb by-\tmpa\fi% + \tmpc=\tmpa\divide\tmpc by4% + \multiput(\xpos,\ypos)(0,-4){\tmpc}{% + \ifdim\@ydim<\tmpb pt\tmpd=\@ydim\divide\tmpd by65536% + \ifnum\tmpd<0\advance\tmpd by\tmpa\fi% + \multiply\tmpd by2\line(2,-1){\tmpd}% + \else\line(2,-1){\breite}% + \fi% + }% + \tmpb=\breite\divide\tmpb by8\advance\tmpb by 1\tmpc=\breite% + \tmpd=\tmpa\multiply\tmpd 2% + \multiput(\xpos,\ypos)(8,0){\tmpb}{% + \ifnum\tmpc>\tmpd\line(2,-1){\tmpd}\else\line(2,-1){\tmpc}\fi% + \global\advance\tmpc by-8% + }% + \fi% + \ifnum #2=8\put(\xpos,\ypos){\rule{\breite pt}{\tmpa pt}}\fi + \my@number% + \fi% + \tmpc-\baselineskip\divide\tmpc 65536% + \divide\tmpc 2% + \put(\xpos,\ypos){\put(0,\tmpc){\makebox(\breite,0){#3}}}% + \ifnum\anzbar>0 + \ifnum\tiefe>0 + \ifnum\lhoehe<\hoehe + \ifnum\lhoehe>0\machDachI(\lxpos,\lhoehe) + \else\machDachI(\lxpos,0) + \fi + \else + \ifnum\lhoehe>0\machDachII(\lxpos,\lhoehe) + \else\machDachII(\lxpos,0) + \fi + \fi% + \fi% + \if@hlineon\machHLines\fi% + \fi% + \lxpos\xpos\advance\xpos\breite\advance\xpos\inter% + \advance\anzbar1\lhoehe\hoehe% +} + + +\newenvironment{barenv}% +{\par% + \xpos0\breite40\halfbreite20\tiefe0\lhoehe0\anzbar0% + \yminII0\ymaxII0\inter0\dinter0pt\vorz1% + \exact0\ymove0\xmove0\unitlength1pt\@xaxisfalse\@yaxisfalse\@hlineonfalse% + \let\my@lstyle=\mydotbox\let\myx@value=\Zahl@n% + \faktor1pt% + \def\vline{\my@vline}% + \def\hspace{\my@hspace}% + \setbox\@tempboxa=\hbox\bgroup% + \begin{picture}(0,0)\thinlines% +}% +{% + \advance\xpos by-\inter% + \ifnum\tiefe>0 + \put(\xpos,0){\line(1,1){\tiefe}}% +%%%DPC CHANGE +% \put(\xpos,\hoehe){\line(1,1){\tiefe}\put(0,\tiefe){\line(0,1){-\hoehe}}}% + \put(\xpos,\hoehe){\line(1,1){\tiefe}% + \put(0,\tiefe){\ifnum\hoehe<\z@\line(0,1){-\hoehe}\fi}}% +%%%END DPC CHANGE + \fi% + \deltax=\lhoehe\bar{0}{-1}\lhoehe=\deltax% + \thicklines% + \if@yaxis\else\tmpa=\ymaxII\advance\tmpa by-\yminII\advance\tmpa by\tiefe% + \put(0,\yminII){\line(0,1){\tmpa}}% + \fi% + \if@xaxis% + \advance\ymin by-\ymove% + \tmpe=\exact\global\exact=\xexact% + \put(0,\ymin){\line(1,0){\lxpos}}% + \xstep=\dxstep\divide\xstep by65536% + \dtmpa=\dxmax\advance\dtmpa by-\dxmin% + \deltax=\dtmpa\divide\deltax by65536\divide\deltax by\xstep% + \advance\deltax by1% + \tmpa=\breite\divide\tmpa by2% + \tmpb=\breite\advance\tmpb by\inter% + \multiput(\tmpa,\ymin)(\tmpb,0){\deltax}{% + \line(0,-1){4}\myx@value\dxmin% + \global\advance\dxmin by\dxstep}% + \global\exact=\tmpe% + \fi% + \put(0,0){\line(1,0){\lxpos}}% + \if@xaxis\tmpa=-20\else\tmpa=-10\fi% + \ifvoid\xbox\else\put(\lxpos,\ymin){\put(0,\tmpa){\box\xbox}}\fi% + \tmpa=\ymax\advance\tmpa by6\advance\tmpa by\tiefe% + \ifvoid\ybox\else\put(\tiefe,\tmpa){\box\ybox}\fi% + \if@hlineon% + \ifnum\lhoehe<0% + \tmpb=-\ymin\advance\tmpb by\lhoehe% + \advance\tmpb by\ymove\divide\tmpb by\ystep% + \tmpa=\ymin\advance\tmpa by\tiefe\advance\tmpa by\ymove% + \multiput(\lxpos,\tmpa)(0,\ystep){\tmpb}{% + \ifdim\@ydim<\lhoehe pt% + \else\ypos=-\@ydim\divide\ypos by65536% + \advance\ypos by\lhoehe\advance\ypos by\tiefe% + \tmpe=\tiefe\advance\tmpe by-\ypos% + \ifnum\ypos>0\put(\tmpe,0){\thinlines\my@lstyle\ypos}\fi% + \fi% + }% + \fi% + \put(0,\ymin){\line(1,0){\lxpos}}% + \tmpa=\ymax\advance\tmpa by-\ymin% + \ifnum\tiefe>0 + \put(0,\ymax){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\lxpos}% + \line(0,-1){\tmpa}\put(0,-\tmpa){\line(-1,-1){\tiefe}}}}% + \else\put(0,\ymax){\line(1,0){\lxpos}\line(0,-1){\tmpa}}% + \fi% + \thinlines% + \ifnum\hbarI<0\tmpa=-\ymin\advance\tmpa by\hbarI\advance\tmpa by-\tiefe% + \put(\tiefe,\tiefe){\line(0,1){\ymax}}% + \put(\tiefe,\hbarI){\line(0,-1){\tmpa}}% + \else\tmpa=\ymax\advance\tmpa by-\hbarI\advance\ymax by\tiefe% + \put(\tiefe,\ymax){\line(0,-1){\tmpa}}% + \ifnum\ymin<0\tmpa=\ymin% + \advance\tmpa by\tiefe\put(\tiefe,\tmpa){\line(0,1){-\tmpa}}% + \fi% + \fi% + \ifnum\hbarI<0\tmpa=\hbarI\tmpb=0\else\tmpa=0\tmpb=\hbarI\fi% + \tmpc=-\ymin\advance\tmpc \tmpa% + \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi + \ifnum\ymove>0\put(0,\ymin){\line(1,1){\tmpc}}\fi% + \advance\ymin by\ymove% + \multiput(0,\ymin)(0,\ystep){\deltay}{% + \ifdim\@ydim<\tmpa pt% + \tmpc=-\@ydim\divide\tmpc by65536\advance\tmpc by\tmpa% + \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi% + \ifx\l@style\solid\line(1,1){\tmpc}% + \else\divide\tmpc by 3\multiput(0,0)(3,3){\tmpc}{.}% + \fi% + \else\ifdim\@ydim>\tmpb pt% + \ifx\l@style\solid\line(1,1){\tiefe}% + \else\tmpe=\tiefe\divide\tmpe by3\multiput(0,0)(3,3){\tmpe}{.}% + \fi% + \fi% + \fi% + }% + \fi% + \thinlines% + \ifnum\ymaxII<\ymax\global\ymaxII=\ymax\else\global\ymaxII=\ymaxII\fi% + \ifnum\yminII>\ymin\global\yminII=\ymin\else\global\yminII=\yminII\fi% + \global\advance\yminII by-\ymove% + \global\xpos=\the\xpos\global\advance\xpos by20% + \end{picture} + \egroup% + \global\advance\ymaxII by\tiefe\advance\ymaxII by-\yminII% + \advance\xpos by-\breite% + \begin{picture}(\the\xpos,\the\ymaxII) + \put(\xmove,-\yminII){\box\@tempboxa} + \end{picture} + \faktorfalse +} + + +\def\legend#1#2{% + \begin{picture}(20,10) + \put(0,0){\framebox(20,10){}} + \ifnum #1=2\multiput(1,0)(3,0){7}{\line(0,1){10}}\fi% + \ifnum #1=3\multiput(0,1)(0,3){3}{\line(1,0){20}}\fi% + \ifnum #1=4\multiput(1,0)(3,0){7}{\line(0,1){10}}% + \multiput(0,1)(0,3){3}{\line(1,0){20}}% + \fi% + \ifnum #1=5\multiput(1,0)(4,0){5}{\rule{2pt}{10pt}}% + \multiput(0,2)(0,4){2}{\rule{20pt}{2pt}}% + \fi% + \ifnum #1=6% + \put(0,0){\line(2,1){20}}\put(0,4){\line(2,1){13}}\put(8,0){\line(2,1){12}}% + \fi% + \ifnum #1=7% + \put(0,10){\line(2,-1){20}}\put(0,6){\line(2,-1){12}}% + \put(8,10){\line(2,-1){12}}% + \fi% + \ifnum #1=8\put(0,0){\rule{20\unitlength}{10\unitlength}}\fi% + \end{picture}% + \quad#2% +} + + + +\def\my@vline{% + \tmpa\ymin\advance\tmpa-\ymove% + \put(\xpos,\tmpa){\line(0,1){\yhoehe}} +} + + +\def\my@hspace#1{% + \dtmpa#1pt\multiply\dtmpa\breite% + \tmpa\dtmpa\divide\tmpa65536% + \global\advance\xpos\tmpa +} + + + +\def\mydotbox#1{\tmpe=#1\advance\tmpe by2\lower0.8pt\hbox to\tmpe pt{\dotfill}} + + +\def\mylinebox#1{\line(1,0){#1}} + + +% Parameter: umzuwandelnde Dimension. +\def\dimIIreal#1{% + \dtmpa=#1\tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt% + \the\tmpa\ifnum\exact>0,\fi% + \tmpb=\exact% + \@whilenum\tmpb>0\do{% + \advance\dtmpa by0.05pt\dtmpa=10\dtmpa\advance\dtmpa by-0.5pt% + \tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt% + \the\tmpa\advance\tmpb by-1}% +} + + +\def\machDachI(#1,#2){% + \tmpa=\hoehe\advance\tmpa by-#2\tmpd=\tmpa\ifnum\tmpd<0\tmpd=-\tmpd\fi% + \ifnum\hoehe<0\machDachII(#1,#2)% + \else + \tmpb=\breite\advance\tmpb by-\tiefe% + \advance\tmpb by\inter% + \ifnum\tmpa<\tiefe\advance\tmpa by-\tiefe\advance\tmpb by-\tmpa\fi% + \ifnum\tmpb>\breite\tmpb=\breite\fi% + \ifnum\breite<\tiefe\put(#1,#2){\line(1,1){\breite}}% + \else\put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\tmpb}}}% + \fi% + \fi% + \tmpa=#1\advance\tmpa by\breite% + \ifnum\inter>0% + \ifnum\tmpd<\inter\tmpb=\tiefe\else\tmpb=\inter\fi% + \put(\tmpa,\lhoehe){\line(1,1){\tmpb}}% + \fi% + \ifnum\lhoehe<0\put(\tmpa,\lhoehe){% + \ifnum\hoehe<0\tmpb=-\lhoehe\advance\tmpb by\hoehe% + \ifnum\tmpb>\tiefe\tmpa=\tiefe\else\tmpa=\tmpb\tmpb=0\fi% + \line(1,1){\tmpa}\put(0,\tmpa){\advance\tmpb by-\tiefe\line(0,1){\tmpb}}% + \else\tmpa=-\lhoehe\advance\tmpa by-\tiefe% + \ifnum-\lhoehe<\tiefe\tmpb=-\lhoehe\else\tmpb=\tiefe\fi% + \line(1,1){\tmpb}\put(0,\tmpb){\line(0,1){\tmpa}}% + \fi% + }% + \fi +} + + +\def\machDachII(#1,#2){% + \tmpa=#1\advance\tmpa by\breite\tmpb=0% + \ifnum\hoehe>0\ifnum\lhoehe<0\tmpb=\lhoehe\fi + \put(\tmpa,\tmpb){\line(1,1){\inter}} + \else\put(\tmpa,0){\line(1,1){\tiefe}} + \fi + \ifnum\hoehe<0\tmpa=\lhoehe\else\tmpa=\lhoehe\advance\tmpa by-\hoehe\fi + \ifnum\tmpa<0\tmpa=\inter\else\advance\tmpa by\inter\fi% + \put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\breite}% + \line(0,-1){\tmpa}\line(-1,-1){\tiefe}}}% +} + + +\def\machHLinesI{% + \tmpc=\breite\advance\tmpc by2% + \setbox\mybox=\hbox to\tmpc pt{\dotfill} + \multiput(\lxpos,\ymin)(0,\ystep){\deltay}{% + \ifdim\@ydim<\tmpa pt\lower0.8pt\copy\mybox\fi% + \ifdim\@ydim>\tmpb pt\lower0.8pt\copy\mybox\fi% + } +} + + +\def\machHLinesII{% + \multiput(\lxpos,\lypos)(0,\ystep){\deltay}{% + \ifdim\@ydim<\tmpa pt% + \ifdim\@ydim>\tmpc pt\ypos=\breite\advance\ypos by-\tiefe% + \else\ypos=\breite% + \fi% + \my@lstyle\ypos + \else% + \ifdim\@ydim>\tmpc pt% + \else% + \ypos=-\@ydim\divide\ypos by65536% + \advance\ypos by\lhoehe\advance\ypos by\tiefe% + \tmpe=\breite\advance\tmpe by-\ypos% + \ifnum\ypos>0\ifnum\tmpe>0\put(\tmpe,0){\my@lstyle\ypos}\fi\fi% + \fi% + \fi% + \ifdim\@ydim>\tmpb pt% + \ypos=\breite\advance\ypos by-\tiefe% + \ifdim\@ydim>\tmpd pt\ypos=\breite% + \else\ifdim\@ydim<\hoehe pt% + \else\tmpe=\@ydim\divide\tmpe by65536\advance\tmpe by-\hoehe% + \advance\ypos by\tmpe% + \fi% + \fi% + \my@lstyle\ypos + \fi% + }% +\ifnum\ymove>0% + \tmpb=\ymin\advance\tmpb by-\ymove\advance\tmpb by\tiefe% + \ifnum\lhoehe>\tmpb\ypos=\breite% + \ifnum\hoehe<\tmpb\advance\ypos by-\tiefe\fi% + \put(\lxpos,\tmpb){\line(1,0){\ypos}} + \fi% +\fi% +} + + +\def\machHLines{% + \tmpe=\baselineskip\divide\tmpe by65536\advance\tmpe by3% + \ifnum\lhoehe<0\tmpa=\lhoehe\tmpb=0\else\tmpa=0\tmpb=\lhoehe\fi% + \ifnum\hoehe<0\tmpc=\hoehe\tmpd=0\else\tmpc=0\tmpd=\hoehe\fi% + \advance\tmpb by\tiefe\advance\tmpd by\tiefe% + \advance\lxpos by\tiefe% + \lypos=\ymin\advance\lypos by\tiefe% + \machHLinesII% +} + + +\def\@user{} +\def\my@empty{} +\def\my@inside{% + \ifnum\hoehe<0\put(\xpos,\hoehe){\makebox(\breite,\tmpa){{\my@style\@user}}}% + \else\put(\xpos,0){\makebox(\breite,\tmpa){{\my@style\@user}}}% + \fi% +} +\def\my@outside{% + \tmpa=\hoehe% + \ifnum\hoehe<0\advance\tmpa by-6\else\advance\tmpa by\tiefe\advance\tmpa by6% + \fi% + \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos% + \ifnum\hoehe>0\advance\tmpb by\tiefe\fi% + \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}% +} +\def\my@up{% + \ifnum\hoehe>0\tmpa=\hoehe\advance\tmpa by\tiefe\advance\tmpa by8% + \else\tmpa=\tiefe\advance\tmpa by8% + \fi% + \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos\advance\tmpb by\tiefe% + \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}% +} +\def\my@down{% + \ifnum\hoehe>0\tmpa=-6\else\tmpa=\hoehe\advance\tmpa by-6\fi% + \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos% + \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}% +} +\def\my@axis{% + \ifnum\hoehe>0\tmpa=-6\else\tmpa=6\fi% + \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos% + \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}% +} + + +\def\Monat@#1{% + \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd% + \tmpc=\tmpd\divide\tmpc by12\multiply\tmpc by12\advance\tmpd -\tmpc% + \put(0,-10){\makebox(0,0){{\mytmp@style% + \ifcase\tmpd Dez\or Jan\or Feb\or M\"ar\or Apr\or Mai\or Jun\or Jul% + \or Aug\or Sep\or Okt\or Nov% + \fi% + }}}% +} + + +\def\Tag@#1{% + \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd% + \tmpc=\tmpd\divide\tmpc by7\multiply\tmpc by7\advance\tmpd -\tmpc% + \put(0,-10){\makebox(0,0){{\mytmp@style% + \ifcase\tmpd Son\or Mon\or Die\or Mit\or Don\or Fre\or Sam\fi% + }}}% +} + + +\def\Zahl@n#1{% + \dtmpa=#1% + \put(0,-10){\makebox(0,0){{\mytmp@style\dimIIreal\dxmin}}}% +} +\endinput diff --git a/macros/latex209/contrib/misc/bibmods.sty b/macros/latex209/contrib/misc/bibmods.sty new file mode 100644 index 0000000000..068dd3c981 --- /dev/null +++ b/macros/latex209/contrib/misc/bibmods.sty @@ -0,0 +1,65 @@ +% -*-latex-*- +%% /u/sy/beebe/tex/bib/bibmods.sty, Mon Jul 9 08:40:33 1990 +%% Edit by Nelson H.F. Beebe <beebe at plot79.math.utah.edu> + +%% ===================================================================== +%% @LaTeX-style-file{ +%% author = "Nelson H. F. Beebe <beebe at science.utah.edu>", +%% version = "1.01", +%% date = "10 September 1991", +%% filename = "bibmods.sty", +%% address = "Center for Scientific Computing +%% and Department of Mathematics +%% South Physics Building +%% University of Utah +%% Salt Lake City, UT 84112 +%% USA +%% Tel: (801) 581-5254", +%% checksum = "14420 65 318 2830", +%% email = "beebe at science.utah.edu (Internet)", +%% codetable = "ISO/ASCII", +%% supported = "yes", +%% docstring = "This LaTeX style file provides a modification +%% to the thebibliography environment to improve +%% spacing. +%% +%% 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." +%% } +%% ===================================================================== + +% The standard LaTeX \bibliography definition invokes \sloppy, which in turn +% sets \tolerance to 10000. This gives spacing that is too stretchable, +% with the result that wide white spaces appear in order to give right- +% justified output in two-column mode. We redefine \thebibliography +% to invoke the original definition, then reset the tolerance to a more +% reasonable value. We also allow a little \emergencystretch (a TeX 3.0 +% feature) to allow individual lines to be slightly longer; if that +% name is unknown, the code avoids its use, so as to work with earlier +% versions of TeX. + +% TeXbook, p. 308: +\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} + +\let\oldthebibliography=\thebibliography +\renewcommand{\thebibliography}[1]{\oldthebibliography{#1} + \hyphenpenalty=1 + % \emergencystretch is a new feature of TeX 3.0; use it only if known + \ifundefined{emergencystretch} + \relax + \else + \emergencystretch=3pt + \fi + \if@twocolumn + \tolerance=6000 %need looser tolerances in two-column mode + \else + \tolerance=2000 + \fi +\hbadness=10000 \relax} + +\overfullrule=3pt % to catch problems in the output. + diff --git a/macros/latex209/contrib/misc/bigtabular.sty b/macros/latex209/contrib/misc/bigtabular.sty new file mode 100644 index 0000000000..62c3eb99e1 --- /dev/null +++ b/macros/latex209/contrib/misc/bigtabular.sty @@ -0,0 +1,99 @@ +% Save file as: TABULAR.STY or BIGTABULAR.STY Source: FILESERV@SHSU.BITNET +% Tabular.sty +% Denys Duchier, Yale University, July 1990 +% +% This file defines a \Tabular environment which is essentially +% similar to the \tabular environment but is able to handle very +% large tables which have to be split across pages. +% +% The major distinction is that \Tabular doesn't take an optional +% argument. It behaves much like \begin{tabular*}{\linewidth} with +% \Tabularleftskip and \Tabularrightskip used as the stretchable glue +% on either side. Also, instead of contributing the table as a large +% box, it performs a \unvbox so that individual rows are contributed +% instead and page breaks can occur between them. +% +% \begin{Tabular}{...} ... \end{Tabular} +% +% has essentially the same effect as: +% +% \begin{center}\begin{tabular}{...} ... \end{tabular}\end{center} +% +% but may be split across pages. +% +% {\Tabularleftskip = 0pt +% \Tabularrightskip = 0pt +% \begin{Tabular}{@{}l@{\extracolsep{\fill}}cr@{}} +% ... +% \end{Tabular}} +% +% will produce a 3 column table with the left column flushed left, +% the right column flushed right, and equal spacing between the +% columns. + +\newskip\Tabularleftskip \Tabularleftskip\@flushglue +\newskip\Tabularrightskip \Tabularrightskip\@flushglue + +\newbox\Tabularbox + +% let's count the number of columns so that we know how many columns +% hlines must span. + +\newcount\Tabularcount +\newcount\Tabularcolumns +\def\@Tabclassz{\global\advance\Tabularcount\@ne\@tabclassz} +\let\@latexclassiii\@classiii +\def\@Tabclassiii{\global\advance\Tabularcount\@ne\@latexclassiii} + +% allow page breaks between rows + +\def\@Tabularcr{{\ifnum0=`}\fi\@ifstar{\@xTabularcr}{\@xTabularcr}} +\def\@xTabularcr{\@ifnextchar[{\@argTabularcr}{\ifnum0=`{\fi}\cr + \noalign{\pagebreak[1]}}} + +\def\@argTabularcr[#1]{\ifnum0=`{\fi}\ifdim #1>\z@ + \unskip\@xargarraycr{#1}\else \@yargarraycr{#1}\fi + \noalign{\pagebreak[1]}} + +% \hline is redefined to output 2 lines one on top of the other, with +% a slightly more encouraging \pagebreak than between normal rows. +% Thus, if a page break must occur, there will a line at the bottom, +% and it will be repeated at the top of the next page too. This is +% visually much more appealing. + +\let\@latexhline\hline +\let\@latextabarray\@tabarray +\def\@tabarray{\let\hline\@latexhline\@latextabarray} +\def\Tabularhline{\multispan{\Tabularcolumns}{\unskip\leaders\hrule + height\arrayrulewidth\hfill}\cr + \noalign{\vskip-\arrayrulewidth\pagebreak[2]}% + \multispan{\Tabularcolumns}{\unskip\leaders\hrule + height\arrayrulewidth\hfill}\cr} + +\def\Tabular#1{\trivlist\item[]\noindent + \setbox\Tabularbox\vbox\bgroup + \let\@acol\@tabacol + \let\@classz\@Tabclassz + \let\@classiii\@Tabclassiii + \let\@classiv\@tabclassiv + \let\\\@Tabularcr + \setbox\@arstrutbox=\hbox{\vrule + height\arraystretch \ht\strutbox + depth\arraystretch \dp\strutbox + width\z@}% + \global\Tabularcount\z@ + \@mkpream{#1}% + \Tabularcolumns\Tabularcount + \let\hline\Tabularhline + \let\@classiii\@latexclassiii + \tabskip\Tabularleftskip + \edef\@preamble{\halign to\linewidth\bgroup + \tabskip\z@ \@arstrut \@preamble + \tabskip\Tabularrightskip \cr}% + \let\@starpbox\@@startpbox + \let\@endpbox\@@endpbox + \let\@sharp##\let\protect\relax + \lineskip\z@\baselineskip\z@ + \@preamble} + +\def\endTabular{\crcr\egroup\egroup\unvbox\Tabularbox\endtrivlist} diff --git a/macros/latex209/contrib/misc/biihead.sty b/macros/latex209/contrib/misc/biihead.sty new file mode 100644 index 0000000000..bbb60f2570 --- /dev/null +++ b/macros/latex209/contrib/misc/biihead.sty @@ -0,0 +1,21 @@ +%BIIHEAD.STY If this is included after \documentstyle{report}, it adds +% an underlined heading style to the LaTeX report style. +% \pagestyle{biiheadings} will put underlined headings at the top +% of each page. The right page headings are the Chapter titles and +% the left page titles are supplied by \def\lefthead{text}. + +% Ted Shapin, Dec. 17, 1986 + +\makeatletter +\def\ps@biiheadings{\let\@mkboth\markboth +\def\@oddhead{\protect\makebox[0pt][l]{\protect\underline + {\protect\makebox[\textwidth][l]{\sl\rightmark\hfill\rm\thepage}}}} +\def\@oddfoot{} +\def\@evenhead{\protect\makebox[0pt][l]{\protect\underline + {\protect\makebox[\textwidth][l] + {\rm\thepage\hfill\sl\lefthead}}}} +\def\lefthead{} +\def\chaptermark##1{\markright {\uppercase{% +\@chapapp\ \thechapter.\ ##1}}} +\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}} +\makeatother diff --git a/macros/latex209/contrib/misc/boxit.sty b/macros/latex209/contrib/misc/boxit.sty new file mode 100644 index 0000000000..8b0a9f9f1d --- /dev/null +++ b/macros/latex209/contrib/misc/boxit.sty @@ -0,0 +1,91 @@ +%%From: marcel@cs.caltech.edu (Marcel van der Goot) +%%Newsgroups: comp.text.tex +%%Subject: illegal modification of boxit.sty +%%Date: 28 Feb 92 01:10:02 GMT +%%Organization: California Institute of Technology (CS dept) +%%Nntp-Posting-Host: andromeda.cs.caltech.edu +%% +%% +%%Quite some time ago I posted a file boxit.sty; maybe it made it +%%to some archives, although I don't recall submitting it. It defines +%% \begin{boxit} +%% ... +%% \end{boxit} +%%to draw a box around `...', where the `...' can contain other +%%environments (e.g., a verbatim environment). Unfortunately, it had +%%a problem: it did not work if you used it in paragraph mode, i.e., it +%%only worked if there was an empty line in front of \begin{boxit}. +%%Luckily, that is easily corrected. +%% +%%HOWEVER, apparently someone noticed the problem, tried to correct it, +%%and then distributed this modified version. That would be fine with me, +%%except that: +%%1. There was no note in the file about this modification, it only has my +%% name in it. +%%2. The modification is wrong: now it only works if there is *no* empty +%% line in front of \begin{boxit}. In my opinion this bug is worse than +%% the original one. +%% +%%In particular, the author of this modification tried to force an empty +%%line by inserting a `\\' in the definition of \Beginboxit. If you have +%%a version of boxit.sty with a `\\', please delete it. If you have my +%%old version of boxit.sty, please also delete it. Below is an improved +%%version. +%% +%%Thanks to Joe Armstrong for drawing my attention to the bug and to the +%%illegal version. +%% +%% Marcel van der Goot +%% .--------------------------------------------------------------- +%% | Blauw de viooltjes, marcel@cs.caltech.edu +%% | Rood zijn de rozen; +%% | Een rijm kan gezet +%% | Met plaksel en dozen. +%% | + + +% boxit.sty +% version: 27 Feb 1992 +% +% Defines a boxit environment, which draws lines around its contents. +% Usage: +% \begin{boxit} +% ... (text you want to be boxed, can contain other environments) +% \end{boxit} +% +% The width of the box is the width of the contents. +% The boxit* environment behaves the same, except that the box will be +% at least as wide as a normal paragraph. +% +% The reason for writing it this way (rather than with the \boxit#1 macro +% from the TeXbook), is that now you can box verbatim text, as in +% \begin{boxit} +% \begin{verbatim} +% this better come out in boxed verbatim mode ... +% \end{verbatim} +% \end{boxit} +% +% Marcel van der Goot +% marcel@cs.caltech.edu +% + +\def\Beginboxit + {\par + \vbox\bgroup + \hrule + \hbox\bgroup + \vrule \kern1.2pt % + \vbox\bgroup\kern1.2pt + } + +\def\Endboxit{% + \kern1.2pt + \egroup + \kern1.2pt\vrule + \egroup + \hrule + \egroup + } + +\newenvironment{boxit}{\Beginboxit}{\Endboxit} +\newenvironment{boxit*}{\Beginboxit\hbox to\hsize{}}{\Endboxit} diff --git a/macros/latex209/contrib/misc/breakcites.sty b/macros/latex209/contrib/misc/breakcites.sty new file mode 100644 index 0000000000..9b083df8dc --- /dev/null +++ b/macros/latex209/contrib/misc/breakcites.sty @@ -0,0 +1,10 @@ +% breakcites.sty +% Style file to allow citations to be broken across lines. +% -Don Hosek 3/14/89 +% +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{,\penalty\@m\ }\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\csname b@\@citeb\endcsname}}}{#1}} diff --git a/macros/latex209/contrib/misc/bsf.sty b/macros/latex209/contrib/misc/bsf.sty new file mode 100644 index 0000000000..9df8e535f0 --- /dev/null +++ b/macros/latex209/contrib/misc/bsf.sty @@ -0,0 +1,97 @@ +% Provide access to the boldface san serif type style for LaTeX. Once you +% have included "bsf" as a style option, you can use the \bsf command to +% select the boldface san serif style, just as you would select the usual +% boldface Roman style with \bf, EXCEPT: +% +% The various fonts defined here are all "loaded on demand". As +% discussed in the LaTeX book, Section C.14.4, a loaded on demand +% font is subject to two restrictions when used in math mode: +% +% - The font must be used OUTSIDE of math mode before it is used +% INSIDE of math mode. The \load command can be used to get +% around this restriction. +% +% - Only a single font size is available within math mode - the +% display, text, script and scriptscriptfonts will all be the +% same. This can be avoided ONLY by changing the definitions +% given here to pre-load the appropriate fonts; see LFONTS.TEX +% for further information. (Alternatively, \@getfont could be +% made more clever.) Note that pre-loading the fonts could cause +% you to fill font space with fonts you never really use. +% +% In order to allow other style files that need access to \bsf to input this +% file safely, it is designed so that an attempt to input it a second time - +% or, more exactly, when command "\bsf" is already defined - is ignored. +% +% This file can be adapted easily to define other font type styles. The real +% limit is likely to come from the requirement that each style so defined must +% be given a unique family number - TeX only supports 16 families and LaTeX +% as usually configured already uses 10. The right way to avoid this problem +% is to modify \@getfont so that it ignores a family number of -1. Fonts +% so specified would not be usable in math mode, but that's no big deal; you +% don't WANT to use tons of non-math fonts in math mode anyway. +% +% As currently written, this file assumes that you have boldface san serif +% fonts available at the following point sizes: +% +% lcmssb8 +% lcmssb8 at 9pt +% cmssbx10 +% cmssbx10 at 11pt +% cmssbx10 at 12pt +% cmssbx10 at 17pt +% cmssbx10 at 25pt +% +% All but the last of these should be commonly available. I'm not sure about +% the last one; LFONTS.TEX does not assume the availability of ANY 25 pt fonts +% other than Roman. If necessary, change the definition of \bsfxxv@ to +% \@subfont\bsf\rm. (Alternatively, if you have boldface sans serif fonts +% at sizes smaller than 8pt, you might want to change the definitions of +% \bsfv@, \bsfvi@, and \bsfvii@.) +% +% Technical note: It is possible to do without the \bsf<size>@ macros by +% including their contents, with a whole bunch of \@prtct's, within the +% \@addfontinfo definitions. This is a pain to do, and probably doesn't end +% up saving any space anyway. This way costs you a bunch of extra macros, +% but it's a LOT easier to understand! +% +% Written by Jerry Leichter (LEICHTER-JERRY@CS.YALE.EDU) +% Modified, 27-Jan-89 by Jerry Leichter +% Fixed typos in file name for lcmssb8. +% Modified, 16-Jun-89 by Jerry Leichter +% Changed family name for consistency. Fixed a typo in the definition +% for 9pt, introduced by the 27-Jan fix. Sigh, such a *simple* file.... + +\expandafter\ifx\csname bsf\endcsname\relax %Once only, please +% Note: It's a pain to use \@ifundefined here - we don't want to pass the +% rest of the definitions as an argument, but we can't easily use \endinput +% since, with docsty, we can't control where the line breaks occur. + +\typeout{Document Option `bsf': 16 Jun 89} +\def\bsf{\protect\pbsf} +\newfam\bsffam +\@addfontinfo\@vpt{\@prtct\bsfv@} + \def\bsfv@{\def\pbsf{\@subfont\bsf\bf}} +\@addfontinfo\@vipt{\@prtct\bsfvi@} + \def\bsfvi@{\def\pbsf{\@subfont\bsf\bf}} +\@addfontinfo\@viipt{\@prtct\bsfvii@} + \def\bsfvii@{\def\pbsf{\@subfont\bsf\bf}} +\@addfontinfo\@viiipt{\@prtct\bsfviii@} + \def\bsfviii@{\def\pbsf{\@getfont\pbsf\bsffam\@viiipt{lcmssb8}}} +\@addfontinfo\@ixpt{\@prtct\bsfx@} + \def\bsfx@{\def\pbsf{\@getfont\pbsf\bsffam\@ixpt{lcmssb8\@halfmag}}} +\@addfontinfo\@xpt{\@prtct\bsfx@} + \def\bsfx@{\def\pbsf{\@getfont\pbsf\bsffam\@xpt{cmssbx10}}} +\@addfontinfo\@xipt{\@prtct\bsfxi@} + \def\bsfxi@{\def\pbsf{\@getfont\pbsf\bsffam\@xipt{cmssbx10\@halfmag}}} +\@addfontinfo\@xiipt{\@prtct\bsfxii@} + \def\bsfxii@{\def\pbsf{\@getfont\pbsf\bsffam\@xiipt{cmssbx10\@magscale1}}} +\@addfontinfo\@xivpt{\@prtct\bsfxiv@} + \def\bsfxiv@{\def\pbsf{\@getfont\pbsf\bsffam\@xivpt{cmssbx10\@magscale2}}} +\@addfontinfo\@xviipt{\@prtct\bsfxvii@} + \def\bsfxvii@{\def\pbsf{\@getfont\pbsf\bsffam\@xviipt{cmssbx10\@magscale3}}} +\@addfontinfo\@xxpt{\@prtct\bsfxx@} + \def\bsfxx@{\def\pbsf{\@getfont\pbsf\bsffam\@xxpt{cmssbx10\@magscale4}}} +\@addfontinfo\@xxvpt{\@prtct\bsfxxv@} + \def\bsfxxv@{\def\pbsf{\@getfont\pbsf\bsffam\@xxvpt{cmssbx10\@magscale5}}} +\fi diff --git a/macros/latex209/contrib/misc/bsl.sty b/macros/latex209/contrib/misc/bsl.sty new file mode 100644 index 0000000000..4432e0fb74 --- /dev/null +++ b/macros/latex209/contrib/misc/bsl.sty @@ -0,0 +1,97 @@ +% Save file as: BSL.STY Source: FILESERV@SHSU.BITNET +% Provide access to the boldface slanted type style for LaTeX. Once you +% have included "bsl" as a style option, you can use the \bsl command to +% select the boldface slanted style, just as you would select the usual +% boldface Roman style with \bf, EXCEPT: +% +% The various fonts defined here are all "loaded on demand". As +% discussed in the LaTeX book, Section C.14.4, a loaded on demand +% font is subject to two restrictions when used in math mode: +% +% - The font must be used OUTSIDE of math mode before it is used +% INSIDE of math mode. The \load command can be used to get +% around this restriction. +% +% - Only a single font size is available within math mode - the +% display, text, script and scriptscriptfonts will all be the +% same. This can be avoided ONLY by changing the definitions +% given here to pre-load the appropriate fonts; see LFONTS.TEX +% for further information. (Alternatively, \@getfont could be +% made more clever.) Note that pre-loading the fonts could cause +% you to fill font space with fonts you never really use. +% +% In order to allow other style files that need access to \bsl to input this +% file safely, it is designed so that an attempt to input it a second time - +% or, more exactly, when command "\bsl" is already defined - is ignored. +% +% This file can be adapted easily to define other font type styles. The real +% limit is likely to come from the requirement that each style so defined must +% be given a unique family number - TeX only supports 16 families and LaTeX +% as usually configured already uses 10. The right way to avoid this problem +% is to modify \@getfont so that it ignores a family number of -1. Fonts +% so specified would not be usable in math mode, but that's no big deal; you +% don't WANT to use tons of non-math fonts in math mode anyway. +% +% As currently written, this file assumes that you have boldface san serif +% fonts available at the following point sizes: +% +% cmbxsl10 at 9pt +% cmbxsl10 +% cmbxsl10 at 11pt +% cmbxsl10 at 12pt +% cmbxsl10 at 14pt +% cmbxsl10 at 17pt +% cmbxsl10 at 20pt +% cmbxsl10 at 25pt +% +% All but the last of these should be commonly available. I'm not sure about +% the last one; LFONTS.TEX does not assume the availability of ANY 25 pt fonts +% other than Roman. If necessary, change the definition of \bslxxv@ to +% \@subfont\bsl\rm. (Alternatively, if you have boldface slanted fonts +% at sizes smaller than 8pt, you might want to change the definitions of +% \bslv@, \bslvi@, and \bslvii@.) +% +% Technical note: It is possible to do without the \bsl<size>@ macros by +% including their contents, with a whole bunch of \@prtct's, within the +% \@addfontinfo definitions. This is a pain to do, and probably doesn't end +% up saving any space anyway. This way costs you a bunch of extra macros, +% but it's a LOT easier to understand! +% +% Written by GEorge D. Greenwade (BED_GDG@SHSU.BITNET) +% as a variation from BSF.STY written by Jerry Leichter +% (LEICHTER-JERRY@CS.YALE.EDU) +% April 5, 1990 + +\expandafter\ifx\csname bsl\endcsname\relax %Once only, please +% Note: It's a pain to use \@ifundefined here - we don't want to pass the +% rest of the definitions as an argument, but we can't easily use \endinput +% since, with docsty, we can't control where the line breaks occur. + +\typeout{Document Option 'bsl' for Bold Slanted Fonts -- April 5, 1990 -- GDG} +\def\bsl{\protect\pbsl} +\newfam\bslfam +\@addfontinfo\@vpt{\@prtct\bslv@} + \def\bslv@{\def\pbsl{\@subfont\bsl\bf}} +\@addfontinfo\@vipt{\@prtct\bslvi@} + \def\bslvi@{\def\pbsl{\@subfont\bsl\bf}} +\@addfontinfo\@viipt{\@prtct\bslvii@} + \def\bslvii@{\def\pbsl{\@subfont\bsl\bf}} +\@addfontinfo\@viiipt{\@prtct\bslviii@} + \def\bslviii@{\def\pbsl{\@subfont\bsl\bf}} +\@addfontinfo\@ixpt{\@prtct\bslx@} + \def\bslx@{\def\pbsl{\@getfont\pbsl\bslfam\@ixpt{cmbxsl10\@halfmag}}} +\@addfontinfo\@xpt{\@prtct\bslx@} + \def\bslx@{\def\pbsl{\@getfont\pbsl\bslfam\@xpt{cmbxsl10}}} +\@addfontinfo\@xipt{\@prtct\bslxi@} + \def\bslxi@{\def\pbsl{\@getfont\pbsl\bslfam\@xipt{cmbxsl10\@halfmag}}} +\@addfontinfo\@xiipt{\@prtct\bslxii@} + \def\bslxii@{\def\pbsl{\@getfont\pbsl\bslfam\@xiipt{cmbxsl10\@magscale1}}} +\@addfontinfo\@xivpt{\@prtct\bslxiv@} + \def\bslxiv@{\def\pbsl{\@getfont\pbsl\bslfam\@xivpt{cmbxsl10\@magscale2}}} +\@addfontinfo\@xviipt{\@prtct\bslxvii@} + \def\bslxvii@{\def\pbsl{\@getfont\pbsl\bslfam\@xviipt{cmbxsl10\@magscale3}}} +\@addfontinfo\@xxpt{\@prtct\bslxx@} + \def\bslxx@{\def\pbsl{\@getfont\pbsl\bslfam\@xxpt{cmbxsl10\@magscale4}}} +\@addfontinfo\@xxvpt{\@prtct\bslxxv@} + \def\bslxxv@{\def\pbsl{\@getfont\pbsl\bslfam\@xxvpt{cmbxsl10\@magscale5}}} +\fi diff --git a/macros/latex209/contrib/misc/buscard.sty b/macros/latex209/contrib/misc/buscard.sty new file mode 100644 index 0000000000..8b9d632637 --- /dev/null +++ b/macros/latex209/contrib/misc/buscard.sty @@ -0,0 +1,226 @@ +%buscard.sty version 1.5 30 Apr 93 +%changes: 1.1: now works if empty entries present, can even print a blank card +% 1.2: uses psfig macros to set seal, +% new command to specify organization name and seal file +% 1.3: puts small cut marks instead of boxes around cards +% 1.4: adds specifications for sealwidth, sealheight, and sealoffset +% 1.5: made more robust for non-NFSS users (by edwin@cs.ucla.edu) +%business card style by Mark A. Roth, 22 Dec 92. Email: mroth@afit.af.mil +%see end of file for example of use. +\documentstyle{article} +\nofiles +\makeatletter +%I need a 7pt sans serif font, which the standard LaTeX NFSS set doesn't have +\@ifundefined{new@fontshape} + {\errmessage{Sorry. The default fonts in this style require the new font + selection scheme. You'll have to modify it to work with old + style LaTeX.}} + {\new@fontshape{cmss}{m}{n}{% + <5>cmss8 at5pt% + <6>cmss8 at6pt% + <7>cmss8 at7pt% + <8>cmss8% + <9>cmss9% + <10>cmss10% + <11>cmss10 at10.95pt% + <12>cmss12% + <14>cmss12 at14.4pt% + <17>cmss17% + <20>cmss17 at20.74pt% + <25>cmss17 at24.88pt% + }{}} +\pagestyle{empty} +\oddsidemargin -.25in \evensidemargin -.25in \marginparsep 0pt +\textwidth 7.1in \textheight 11in \topmargin -54pt \tabcolsep 0pt +\newdimen\cardwidth \newdimen\cardcontentheight \newdimen\cardcontentwidth +\newdimen\psfigsealheight \newdimen\psfigsealwidth +\cardwidth 3.5in \cardcontentheight 108.5pt \cardcontentwidth 225pt +\newdimen\headerwidth \headerwidth\cardcontentwidth +\headheight 0pt \headsep 0pt \parindent 0pt \parskip 0pt \footheight 0pt +% +%new def of @iframebox to get partial tic marks instead of boxes +%comment this out if you want whole boxes as in version 1.2 +%if there's a better way please let me know +% +\long\def\@iframebox[#1][#2]#3{\leavevmode + \savebox\@tempboxa[#1][#2]{\kern\fboxsep #3\kern\fboxsep}\@tempdima\fboxrule + \advance\@tempdima \fboxsep \advance\@tempdima \dp\@tempboxa + \hbox{\lower \@tempdima\hbox + {\vbox{\hrule \@height \fboxrule \@width 3pt + \hbox{\vrule \@height 3pt \@width \fboxrule \hskip-\fboxrule + \vbox{\vskip\fboxsep \box\@tempboxa\vskip\fboxsep}\hskip + -\fboxrule\vrule \@height 3pt \@width \fboxrule}% + \hrule \@height \fboxrule \@width 3pt}}}} +% +\def\bc@e{} +\def\bc@organization{\mbox{}\\[2pt]} +\def\organization#1{\ifx\bc@e#1\else\def\bc@organization{#1\\[2pt]}\fi} +\def\bc@department{\mbox{}\\} +\def\department#1{\ifx\bc@e#1\else\def\bc@department{#1\\}\fi} +\def\bc@name{} +\def\name#1{\ifx\bc@e#1\else\def\bc@name{\ \\[-20pt]#1\\}\fi} +\def\bc@rank{} +\def\rank#1{\ifx\bc@e#1\else\def\bc@rank{#1\\}\fi} +\def\bc@title{} +\def\title#1{\ifx\bc@e#1\else\def\bc@title{#1\\}\fi} +\def\bc@right{} +\def\right#1{\def\bc@right{#1}} +\def\bc@left{} +\def\left#1{\def\bc@left{#1}} +\def\bc@email{} +\def\email#1{\def\bc@email{#1}} +\def\bc@workphone{} +\def\workphone#1{\def\bc@workphone{#1}} +\def\bc@fax{} +\def\fax#1{\def\bc@fax{#1}} +\def\bc@address{} +\def\address#1{\def\bc@address{#1}} +\def\bc@sealheight{0pt}\def\bc@sealwidth{0pt} +\def\bc@sealfile{}\def\bc@sealoffset{0pt} +\newif\if@sealhere \@sealherefalse +\def\seal#1{\ifx\bc@e#1\else% +\def\bc@sealfile{#1}\if@sealhere\else\input psfig \pssilent\@sealheretrue\fi\fi} +\def\sealwidth#1{\ifx\bc@e#1\else\def\bc@sealwidth{#1}% +\setlength{\psfigsealwidth}{\bc@sealwidth}% +\addtolength{\psfigsealwidth}{2.3pt}% +\addtolength{\headerwidth}{-\psfigsealwidth}\fi} +\def\sealheight#1{\ifx\bc@e#1\else\def\bc@sealheight{#1}% +\setlength{\psfigsealheight}{\bc@sealheight}% +\addtolength{\psfigsealheight}{2.3pt}\fi} +\def\sealoffset#1{\ifx\bc@e#1\else\def\bc@sealoffset{#1}\fi} +\fboxsep 17pt +\def\bc@makecard{\ \hspace*{-10.4pt}\vspace*{-.7pt} +\ifx\bc@right\bc@e\def\bc@right{\bc@email\hspace*{2pt}\\\bc@workphone\\% +\ifx\bc@fax\bc@e\else FAX: \bc@fax\fi}\fi +\ifx\bc@left\bc@e\def\bc@left{\bc@address}\fi +\framebox[\cardwidth]{% +\begin{minipage}{\cardcontentwidth} +\vbox to \cardcontentheight{ +\if@sealhere +\ifx\bc@sealwidth\bc@e\errmessage{You must specify sealwidth and sealheight.}\fi +\vspace*{-8pt} +%print the seal scaled to fit specified width +\vbox to \psfigsealheight{\hbox to \psfigsealwidth{ +\psfig{figure=\bc@sealfile,height=\bc@sealheight,width=\bc@sealwidth}% +} +\vspace*{-\bc@sealheight}\hspace*{\bc@sealwidth}% +\begin{minipage}[t]{\headerwidth} +\begin{center} +{\footnotesize\sf \bc@organization} +{\scriptsize\sf \bc@department} +\end{center} +\end{minipage} +} +\vfill +\vspace*{\bc@sealoffset} +\else %if no seal +\begin{center} +{\footnotesize\sf \bc@organization} +{\scriptsize\sf \bc@department} +\end{center} +\fi %end of if@sealhere +% +\vfill +%if name, rank, and title all empty then print a blank +\ifx\bc@name\bc@e\ifx\bc@rank\bc@e\ifx\bc@title\bc@e\def\bc@name{\mbox{}}% +\fi\fi\fi +\begin{center} +{\large\rm\bc@name} +{\scriptsize\sf\bc@rank} +{\scriptsize\sf\bc@title} +\end{center} +\vfill + +\hbox to \cardcontentwidth{ +\scriptsize\sf +\begin{tabular}[b]{l} +\bc@left +\end{tabular} +\hfill +\begin{tabular}[b]{r} +\bc@right +\end{tabular} +} %end hbox to cardcontentwidth +} %end vbox to cardcontentheight +\end{minipage} %end of minipage +} %end of framebox +} %end \bc@makecard + +\newdimen\twocardwidth\twocardwidth2\cardwidth +\addtolength{\twocardwidth}{-\fboxrule} +\def\bc@topvertcut{\ \hspace*{-13.7pt} +\hbox to \twocardwidth{% +\vrule height 3pt width \fboxrule\hfill +\vrule height 3pt width \fboxrule\hfill +\vrule height 3pt width \fboxrule}\vskip-1pt} +\newcounter{card} \newcounter{printedcard} \newcounter{pagecard} +\def\makecard#1{% +\bc@topvertcut\par% +\ \hspace*{-6.7pt}% +\setcounter{card}{#1}\setcounter{printedcard}{0}\setcounter{pagecard}{0}% +\@whilenum\c@card>\c@printedcard\do% + {\bc@makecard\bc@makecard\newline% + \addtocounter{printedcard}{2}% + \addtocounter{pagecard}{1}% + \ifnum\c@pagecard=5% + \ifnum\c@card>\c@printedcard% + \newpage\setcounter{pagecard}{0}\bc@topvertcut\ \hspace*{-6.7pt}% + \fi% + \fi% + }%end while +}%end makecard +\makeatother +\endinput +%sample file to create business cards; change this file to +%hold your information and feed it to your favorite LaTeX processor. +%send comments/problems to Mark Roth, mroth@afit.af.mil +% +%Fill in the following with your info, \address gets printed in the +%lower left corner, \email, \workphone and \fax in the lower right corner. +%If you want to do your own thing in the corners use commands \left and +%\right, separating lines with \\ +% +\documentstyle{buscard} +% +%the seal is an encapsulated PostScript file, leave out it you don't have one +\seal{sealname.eps} +%the desired seal width and height must be specified, the style will scale +%your seal image to this width and height. Make sure your image specifies +%the minimal bounding box. An adjustment for vertical height of the seal +%can be made by specifying a dimension for sealoffset. +\sealheight{dimen} %specify height of seal, e.g., .5in, 50pt, ... +\sealwidth{dimen} %specify width of seal, e.g., .5in, 50pt, ... +\sealoffset{dimen} %specify vertical adjustment after seal, e.g., .5in, -50pt + %make this space adjustment if your name, etc. doesn't look centered +% +%the department is printed under the organization name at the top of the card +%leave them out if you don't want them +\organization{UNIVERSITY OF TYPESETTING} +\department{Dept. of Electrical and Computer Engineering} +% +%the next three entries are centered in the middle of the card +\name{JOHN J. DOE, Ph.D.} %this format is up to you! +\rank{MAJOR, USAF} %all fields are optional +\title{PROFESSOR OF ELECTRICAL ENGINEERING} +% +%lower left corner +\address{First Line\\ Second Line\\ Third Line} +% +%lower right corner +\email{doe@somewhere} +\workphone{(555) 555-5555, DSN 555-5555} +\fax{(555) 555-5555, DSN 555-5555} %word FAX is automatically supplied +% +%this is the same info using \right +%\right{doe@somewhere\\ +% (555) 555-5555, DSN 555-5555\\ +% FAX: (555) 555-5555, DSN 555-5555} %you have to supply word FAX +% +%if you don't want cut marks around the cards uncomment the following line +%\fboxrule 0pt +\begin{document} + %this command prints the cards, 10 per page, in even numbers +\makecard{2} %change the number here to the number of cards you want + %don't try more than 10 to start, just in case don't like + %your cards on the first attempt +\end{document} diff --git a/macros/latex209/contrib/misc/calendar.sty b/macros/latex209/contrib/misc/calendar.sty new file mode 100644 index 0000000000..bccbd0bca3 --- /dev/null +++ b/macros/latex209/contrib/misc/calendar.sty @@ -0,0 +1,549 @@ +% calendar.sty - print calendar +% Copyright (C) 1991 J"urgen Stuber +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 1, or (at your option) +% any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have a copy of the GNU General Public License; +% if not, write to the Free Software Foundation, Inc., +% 675 Mass Ave, Cambridge, MA 02139, USA. +% +% History: +% 10.4.1991 js - posted +% +% Description: +% This will generate a calendar in the following format: +% +----------+----------+ ... +----------+ +% | Januar | Februar | | Dezember | +% +----------+----------+ ... +----------+ +% + 1 DI | 1 FR | | 1 SO | +% +----------+----------+ ... +----------+ +% + 2 MI | 2 SA | | 2 MO | +% +----------+----------+ ... +----------+ +% . +% . +% . +% +% +----------+----------+ ... +----------+ +% |31 DO | | |31 DI | +% +----------+----------+ ... +----------+ +% +% Because of space limitations the calendar is printed on 3 pages. +% +% Features: +% - number of week in year +% - handles holidays and birthdays in a flexible way +% - computes day of week & easter date +% +% Limitations: +% - does not print year due to lack of space +% - number of annotations per date is limited to two due to lack of space +% - does not compute moon phases +% - does not compute beginning of spring, summer, etc. +% +% Usage: +% generate a LaTex file calendar.tex like the following: +% +%--- beginning of calendar.tex ------------------------------ +% \documentstyle[german]{calendar} +% +% \def\weekdayname#1{% +% \ifcase#1 \relax +% MO\or DI\or MI\or DO\or FR\or SA\or SO% +% \fi +% } +% +% \def\monthname#1{% +% \ifcase#1 \relax +% Januar\or Februar\or M"arz\or April\or Mai\or Juni\or +% Juli\or August\or September\or Oktober\or November \or Dezember% +% \fi +% } +% +% \begin{document}% +% \setYear{1991}% +% \input{holiday}% +% \input{birthday}% +% \typesetYear% +% \end{document} +%--- end of calendar.tex ------------------------------ +% +% holiday.tex and birthday.tex contain declarations in the following +% formats: +% +% \annual{text}{day.month.}{holidayflag} +% \annualMovable{text}{day.month.}{dayOfWeek}{holidayflag} +% \easterRelative{text}{offset}{holidayflag} +% \anniversary{text}{day.month.year}{holidayflag} +% +% \annual will generate an annotation for the specified day containing +% the given text. If holidayflag is 1 the day will be marked as +% a holiday, i.e., printed in boldface. +% \annualMovable will generate the annotation for the next day with +% matching day of the week on or after the specified date. +% The day of the week is encoded as 0 for monday up to 6 for sunday. +% \easterRelative will generate the annotation for the day with +% the specified offset from easter. +% \anniversary will generate an annotation consisting of text and the +% number of the anniversary. +% +% Here is a sample file containing declarations of holidays for +% Northrhine-Westfalia. Some other german holidays are included but +% commented out. +% +%--- beginning of holiday.tex ------------------------------ +% \annual{Neujahr}{1.1.}{1}% +% \annual{Heilige Drei K"onige}{6.1.}{0}% +% %\annual{Valentinstag}{14.2.}{0}% +% \easterRelative{Rosenmontag}{-48}{0}% +% %\easterRelative{Fastnacht}{-47}{0}% +% \easterRelative{Aschermittwoch}{-46}{0}% +% \easterRelative{Karfreitag}{-2}{1}% +% \easterRelative{Ostern}{0}{1}% +% \easterRelative{Ostern}{1}{1}% +% \annual{Tag der Arbeit}{1.5.}{1}% +% \easterRelative{Himmelfahrt}{39}{1}% +% \easterRelative{Pfingsten}{49}{1}% +% \easterRelative{Pfingsten}{50}{1}% +% \easterRelative{Fronleichnam}{60}{1}% +% %\annual{Mari"a Himmelfahrt}{15.8.}{0}% +% %\annual{Reformationstag}{31.10.}{0}% +% \annual{Allerheiligen}{1.11.}{1}% +% %\annualMovable{Volkstrauertag}{13.11.}{6}{0}% +% \annualMovable{Bu"s- und Bettag}{16.11.}{2}{1}% +% %\annualMovable{Totensonntag}{20.11.}{6}{0}% +% %\annualMovable{1. Advent}{27.11.}{6}{0}% +% %\annualMovable{2. Advent}{4.12.}{6}{0}% +% %\annualMovable{3. Advent}{11.12.}{6}{0}% +% %\annualMovable{4. Advent}{18.12.}{6}{0}% +% %\annual{Mari"a Empf"angnis}{8.12.}{0}% +% \annual{Heiligabend}{24.12.}{0}% +% \annual{Weihnachten}{25.12.}{1}% +% \annual{Weihnachten}{26.12.}{1}% +% \annual{Silvester}{31.12.}{0}% +%--- end of holiday.tex ------------------------------ +% +% You may change the following parameters: +% \columnheight height of the entire column, including title +% \titleheight height of title containing month name +% \itemwidth width of one column +% \daywidth position of right edge of day number in column +% \weekdaywidth width reserved for day of week +% +%---------------------------------------------------------------------- +\input{article.sty} +\pagestyle{empty}% +\evensidemargin=0pt +\oddsidemargin=\evensidemargin +\topmargin=0pt +\topmargin 0pt +\headheight 0pt +\headsep 0pt +\footskip 0pt +% +\textheight 280mm +%---------------------------------------------------------------------- +% list macros (see TeXBook, Dirty Tricks) + +\let\sep\relax + +\toksdef\tb=2 + +\def\leftlist#1{% + \def\sep##1{\relax##1\cr}% + \vbox{\halign{##\hfil\cr#1}}% +} + +\def\@ifundef#1{\expandafter\ifx\csname#1\endcsname\relax} +\def\@nameedef#1{\expandafter\edef\csname #1\endcsname} + +\newcount\tmpcnt + +\def\remainder#1by#2{% + \tmpcnt=#1 % + \divide\tmpcnt by #2 % + \multiply\tmpcnt by #2 % + \advance #1 by -\tmpcnt} + +%---------------------------------------------------------------------- + +\newcount\curday % day +\newcount\curmonth % month +\newcount\curweekday % day of week, 0=Monday +\newcount\curyear % year +\newcount\daycount % day of year +\newcount\weekcount % week of year +\newcount\leapyear % 0=normal year, 1=leap year +\newcount\easter % easter date, as day of year +\newcount\startweekday % first day of week in year + +\def\setYear#1{ + \global\curyear=#1 % + {% compute leap year + \newcount\rf \rf=\curyear \remainder\rf by{4}% + \newcount\rh \rh=\curyear \remainder\rh by{100}% + \newcount\rfh \rfh=\curyear \remainder\rfh by{400}% + \ifnum\rfh=0 % + \global\leapyear=1 % + \else + \ifnum\rh=0 % + \global\leapyear=0 % + \else + \ifnum\rf=0 % + \global\leapyear=1 % + \else + \global\leapyear=0 % + \fi + \fi + \fi + }% + {% compute easter date + % this is the easter formula by C.F.Gauss -- valid up to 8201 + % (no limitation, considering the current rate of environmental destruction) + \newcount\tmpa \tmpa=\curyear \remainder\tmpa by{19}% + \newcount\tmpb \tmpb=\curyear \remainder\tmpb by{4}% + \newcount\tmpc \tmpc=\curyear \remainder\tmpc by{7}% + \newcount\yh \yh=\curyear \divide\yh by 100 % + \newcount\yfh \yfh=\curyear \divide\yfh by 400 % + \newcount\m \m=\yh + \multiply\m by 8 % + \advance\m by 13 % + \divide\m by 25 % + \advance\m by -2 % + \newcount\s \s=\yh \advance\s by -\yfh \advance\s by -2 % + \newcount\M \M=15 % + \advance\M by \s + \advance\M by -\m + \remainder\M by{30}% + \newcount\N \N=6 % + \advance\N by \s + \remainder\N by{7}% + \newcount\d \d=\tmpa + \multiply\d by 19 % + \advance\d by \M + \remainder\d by{30}% + \newcount\D + \ifnum\d=29 % + \D=28 % + \else + \ifnum\d=28 % + \ifnum\d>10 % + \D=27 % + \else + \D=\d + \fi + \else + \D=\d + \fi + \fi + \multiply\tmpb by 2 % + \multiply\tmpc by 4 % + \newcount\e \e=\D + \multiply\e by 6 % + \advance\e by \tmpb + \advance\e by \tmpc + \advance\e by \N + \remainder\e by{7}% + \advance\e by 80 % + \advance\e by \leapyear + \advance\e by \D + \global\easter=\e + }% pooh -- done it + {% compute starting day of week --- we know easter is on a sunday + \newcount\fsd \fsd=\easter \remainder\fsd by{7}% + \newcount\wd \wd=6 \advance\wd by -\fsd + \global\startweekday=\wd + }% +} + +%---------------------------------------------------------------------- + +\def\monthlength#1{% + \ifnum\leapyear=0 + \ifcase#1 % + 31\or28\or31\or30\or31\or30\or + 31\or31\or30\or31\or30\or31% + \fi + \else + \ifcase#1 % + 31\or29\or31\or30\or31\or30\or + 31\or31\or30\or31\or30\or31% + \fi + \fi +} + +\def\monthoffset#1{% + \ifnum\leapyear=0 % + \ifcase#1 % + 0\or31\or59\or90\or120\or151\or + 181\or212\or243\or273\or304\or334% + \fi + \else + \ifcase#1 % + 0\or31\or60\or91\or121\or152\or + 182\or213\or244\or274\or305\or335% + \fi + \fi +} + +%---------------------------------------------------------------------- +% typesetting individual days + +% #1 : day in month +% #2 : Holiday flag (0=workday, 1=holiday) +\def\typesetDay#1#2{\relax% + \ifnum#2=0 % + {#1}% + \else + {\bf #1}% + \fi +} + +% #1 : weekday code 0..7, 0=Monday +% #2 : Holiday flag (0=workday, 1=holiday) +\def\typesetWeekday#1#2{% + \ifnum#2=0 % + {\weekdayname{#1}}% + \else + {\bf\weekdayname{#1}}% + \fi +} + +% #1 : annotations, format a1\sepa 2\sep..\sep an +\def\typesetAnnotations#1{{\leftlist{#1}}} + +\newdimen\columnheight \columnheight=247mm +\newdimen\titleheight \titleheight=10mm +\newdimen\itemwidth \itemwidth=43mm +\newdimen\daywidth \daywidth=6mm +\newdimen\weekdaywidth \weekdaywidth=9mm + +\newdimen\itemheight \itemheight=\columnheight + \advance\itemheight by -\titleheight + \divide\itemheight by 31 + \advance\itemheight by -2.4pt + +\def\typesetItem{% + \@ifundef{ann\the\daycount}% + \def\ann{}% + \else + \def\ann{\@nameuse{ann\the\daycount}}% + \fi + \@ifundef{hol\the\daycount}% + \ifnum\curweekday=6 % + \def\hol{1}% + \else + \def\hol{0}% + \fi + \else + \def\hol{\@nameuse{hol\the\daycount}}% + \fi + \vbox{% + \kern1pt% + \hbox to \itemwidth{% + \vbox to \itemheight{% + \vfil + \hbox to\daywidth{\hfil{\large\typesetDay{\the\curday}{\hol}}}% + \vfil}% + \kern2mm% + \vbox to \itemheight{% + \vfil + \hbox to\weekdaywidth{% + {\large\typesetWeekday{\the\curweekday}{\hol}}% + \hfil}% + \vfil}% + \vbox to \itemheight{% + {\scriptsize\typesetAnnotations{\ann}}% + \vfil + }% + \hfil + \ifnum\curweekday=0 % + \vbox to \itemheight{% + \kern1pt% + \hbox{{\scriptsize\the\weekcount}\kern1pt}% + \vfil + }% + \global\advance \weekcount by 1 % + \else\relax\fi + }% + \kern1pt% + \hrule}} + +\def\typesetDummyItem{% + \vbox{% + \kern1pt% + \hbox to \itemwidth{% + \vbox to \itemheight{% + \vfil + }% + \hfil + }% + \kern1pt + \hrule}} + +\newcount\lastday + +% #1 : number of month, 1=January +\def\typesetMonth#1{% + \vbox{% + \vbox to \titleheight{% + \hrule + \kern2pt% + \vfil + \hbox to \itemwidth{\hfil{\LARGE\bf\strut\monthname{#1}}\hfil}% + \vfil + \hrule height0.8pt% + } + \curday=0 % + \edef\lastday{\monthlength{#1} }% + \loop\ifnum\curday<\lastday + \global\advance \curday by 1 % + \typesetItem + \global\advance \daycount by 1 % + \global\advance \curweekday by 1 % + \ifnum\curweekday>6 % + \global\advance \curweekday by -7 % + \else\relax\fi + \repeat + \loop\ifnum\curday<31 % + \global\advance \curday by 1 % + \typesetDummyItem + \repeat + \vfil + }% +} + +% #2 : first month +% #3 : last month+1 +\def\typesetPartialYear#1#2{% + \hrule + \hbox{% + \curmonth=#1 % + \loop\ifnum\curmonth<#2 % + \vrule % + \typesetMonth{\the\curmonth}% + \global\advance\curmonth by 1 % + \repeat + \vrule + }% + \hrule +} + +\def\typesetYear{% + \curweekday=\startweekday + \weekcount=1 % + \daycount=0 % + \newcount\firstmonth + \newcount\endmonth + \firstmonth=0 % + \loop\ifnum\firstmonth<12 % + \endmonth=\firstmonth \advance\endmonth by 4 % + \typesetPartialYear{\the\firstmonth}{\the\endmonth}% + \eject + \advance\firstmonth by 4 % + \repeat +} + +%---------------------------------------------------------------------- + +\def\dayOf#1.#2.#3 {#1} +\def\monthOf#1.#2.#3 {#2} +\def\yearOf#1.#2.#3 {#3} + +\def\addAnn#1#2#3{% + \@ifundef{ann#1}% + \@namedef{ann#1}{}% + \else + \relax + \fi + \tb=\expandafter{#2}% + \@nameedef{ann#1}{\@nameuse{ann#1}\noexpand\sep{\the\tb#3}}% +} + +\def\addHol#1#2{% + \ifnum#2=1 % + \@namedef{hol#1}{1}% + \else\relax\fi +} + +%---------------------------------------------------------------------- +% entries for holidays + +% #1 : text +% #2 : date in format d.m. +% #3 : holiday flag +\def\annual#1#2#3{% + \edef\dof{\dayOf#2 }% + \edef\mof{\monthOf#2 }% + \tmpcnt=\mof + \advance\tmpcnt by -1 % + \edef\moff{\monthoffset{\the\tmpcnt}}% + \tmpcnt=\moff + \advance\tmpcnt by \dof + \advance\tmpcnt by -1 % + \edef\doy{\the\tmpcnt}% + \addAnn{\doy}{#1}{}% + \addHol{\doy}{#3}% +} + +% #1 : text +% #2 : date in format d.m. +% #3 : day of week +% #4 : holiday flag +\def\annualMovable#1#2#3#4{% + \edef\dof{\dayOf#2 }% + \edef\mof{\monthOf#2 }% + \curday=\mof + \advance\curday by -1 % + \edef\moff{\monthoffset{\the\curday}}% + \curday=\moff % + \advance\curday by \dof + \advance\curday by -1 % + \curweekday=700 % + \advance\curweekday by -\curday + \advance\curweekday by -\startweekday + \advance\curweekday by#3 % + \remainder\curweekday by{7}% + \advance\curday by \curweekday + \edef\doy{\the\curday}% + \addAnn{\doy}{#1}{}% + \addHol{\doy}{#4}% +} + +% #1 : text +% #2 : offset to easter (may be negative) +% #3 : holiday flag +\def\easterRelative#1#2#3{% + \tmpcnt=\easter % + \advance\tmpcnt by #2 % + \edef\doy{\the\tmpcnt}% + \addAnn{\doy}{#1}{}% + \addHol{\doy}{#3}% +} + +% #1 : text +% #2 : date in format d.m.y +% #3 : holiday flag +\def\anniversary#1#2#3{% + \edef\dof{\dayOf#2 }% + \edef\mof{\monthOf#2 }% + \edef\yof{\yearOf#2 }% + \tmpcnt=\mof + \advance\tmpcnt by -1 % + \edef\moff{\monthoffset{\the\tmpcnt}}% + \tmpcnt=\moff + \advance\tmpcnt by \dof + \advance\tmpcnt by -1 % + \edef\doy{\the\tmpcnt}% + \tmpcnt=\curyear % + \advance\tmpcnt by -\yof + \addAnn{\doy}{#1 }{\the\tmpcnt}% + \addHol{\doy}{#3}% +} diff --git a/macros/latex209/contrib/misc/calorie.sty b/macros/latex209/contrib/misc/calorie.sty new file mode 100644 index 0000000000..859839c1f9 --- /dev/null +++ b/macros/latex209/contrib/misc/calorie.sty @@ -0,0 +1,989 @@ +% calorie.sty --- LaTeX macro of calorie checking for who goes on a diet. +% +% Note: +% This file is distributed WITHOUT ANY WARRANTY. +% No author or distributor accepts responsibility +% to anyone for the consequences of using it. +% I am NOT a dietitian nor a medical doctor. +% +% Copyright (c) 1994 by Shuji Aonuma. +% Reports or requests to aonuma@kodama.issp.u-tokyo.ac.jp +% +% Unchanged copies of this file may be freely distributed. +% You may modify a renamed copy of this file. +% +% Calorie data are taken from +% ``Karorii chekku nouto (Calorie Check Notebook)'', Fusosha Publishing (1994) +% (in Japanese). +% +% Documentation is not ready, but +% example calorie data, TeX, PostScript files are added at end of this file. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%% RCS +\def\RCS@HEADER$#1: #2.#3 #4 #5 #6 #7 #8${% + \def\RCS@NAME{#2}% + \def\RCS@REVISION{#4}\def\RCS@DATE{#5}% + \def\RCS@AUTHOR{#7} + \typeout{\RCS@NAME\@spaces********* Version: \RCS@REVISION\space(\RCS@DATE).} + } +\RCS@HEADER$Header: calorie.stv 1.3 94/12/22 19:26:06 noteASC2-issp Brief $ +%RCS information file name release date time machine status(or Brief when auto check in on a Brief Editor) + +% new skips, counters, ifs +\newskip\Cat@a \newskip\Cat@b \newskip\Cat@c \newskip\Cat@d \newskip\Cat@e% +\newskip\Cat@f \newskip\Cat@g \newskip\Cat@h \newskip\Cat@i \newskip\Cat@j% +\newskip\Cat@k \newskip\Cat@l \newskip\Cat@m \newskip\Cat@n \newskip\Cat@o% + +\newif\ifCat@a@ \newif\ifCat@b@ \newif\ifCat@c@ \newif\ifCat@d@ \newif\ifCat@e@% +\newif\ifCat@f@ \newif\ifCat@g@ \newif\ifCat@h@ \newif\ifCat@i@ \newif\ifCat@j@% +\newif\ifCat@k@ \newif\ifCat@l@ \newif\ifCat@m@ \newif\ifCat@n@ \newif\ifCat@o@% + +\newskip\Total@bf \newskip\Total@lu \newskip\Total@tb% +\newskip\Total@su \newskip\Total@mm \newskip\Total@all% +\newskip\Total@tmp% + +\newskip\Cal@tmp% +\newcount\Rd@a \newcount\Rd@b +\newcount\Year \newcount\Month \newcount\Day +\newcount\CDtmpa \newcount\CDtmpb \newcount\CDtmpc \newcount\WDay +\newskip\CalorieWd + +\newskip\StdCalorie\StdCalorie\z@ +\newskip\LimitCalorie\LimitCalorie\z@ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%default column width% +\CalorieWd\columnwidth + + +%Set standard calorie limit. Warned when exceeded. +\def\SetCalorie#1{\StdCalorie#1pt}% +% for example +% \SetCalorie{2200}%Japanese male, 30 years-old, light job, 170cm height, 65kg + + % Standard required calorie (kcal) t=one's height in cm + % age female male + % 20-29 15.50t-636 20.00t-1150 + % 30-39 15.00t-611 19.17t-1054 + % 40-49 15.00t-611 18.57t-998 + % 50-59 16.00t-788 20.00t-1300 + % 60- 16.00t-858 18.21t-1132 + +%date +\def\YE@#1#2#3#4#5#6{19#1#2}% +\def\DY@#1#2#3#4#5#6{\if#50#6\else#5#6\fi}% +\def\MN@#1#2#3#4#5#6{% + \if #30\ifcase#4\or Jan.\or Feb.\or Mar.\or Apr.\or May\or Jun.\or% + Jul.\or Aug.\or Sep.\fi\fi% + \if #31\ifcase#4 Oct.\or Nov.\or Dec.\fi\fi +} +\def\CalcDay#1#2#3#4#5#6{%Stolen without permission from dayofweek.sty on CTAN + % by Martin Minow of DEC (minow%bolt.dec@decwrl.dec.com). + \Month=#3#4\relax\Day=#5#6\relax\Year=19#1#2\relax% + \CDtmpa=\Month \advance\CDtmpa-14 \divide\CDtmpa12% + \advance\CDtmpa\Year + \WDay=\Month \advance\WDay10 + \CDtmpc=\WDay \divide\CDtmpc13 + \multiply\CDtmpc12 + \advance\WDay-\CDtmpc\relax \multiply\WDay13 \advance\WDay-1 + \divide\WDay5 \advance\WDay\Day \advance\WDay77 + \CDtmpb=\CDtmpa \CDtmpc=\CDtmpb \divide\CDtmpc100 \multiply\CDtmpc100 + \advance\CDtmpb-\CDtmpc + \multiply\CDtmpb5 \divide\CDtmpb4 \advance\WDay\CDtmpb + \CDtmpb=\CDtmpa \divide\CDtmpb400 \advance\WDay\CDtmpb + \CDtmpb=\CDtmpa \divide\CDtmpb100 \multiply\CDtmpb2 \advance\WDay-\CDtmpb + \CDtmpb=\WDay \divide\CDtmpb7 \multiply\CDtmpb7 \advance\WDay-\CDtmpb + \ifcase\WDay Sun.\or Mon.\or Tue.\or Wed.\or + Thu.\or Fri.\or Sat.\fi +} + + +%%%%% +\def\Hrule{\rule[.5ex]{\CalorieWd}{.3pt}\\} +\def\Vskip{\vskip1ex} + +%%%%% +%make dimension to real (e.g. 12.5pt -> 12.5) +{\catcode`\p=12\catcode`\t=12% +\gdef\REAL@In#1.#2pt{\Rd@a#1\relax}\gdef\REAL@Fl#1.#2pt{\Round@#2/}} + +\def\Rd#1{\expandafter\REAL@In\the#1\expandafter\REAL@Fl\the#1% + \the\Rd@a\hbox to 2ex{.\the\Rd@b\hss}} + +\def\Round@#1{\@ifnextchar/{\Round@@#10}{\Round@@#1}} +\def\Round@@#1#2{\@ifnextchar/{\Round@@@#1#20}{\Round@@@#1#2}} +\def\Round@@@#1#2#3/{% + \Rd@b#1\relax\@tempcntb#2\relax% + \ifnum\@tempcntb>4\advance\Rd@b1\relax\fi% + \ifnum\Rd@b=10\advance\Rd@a1\relax\Rd@b0\relax\fi% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\begin{Calorie}{date} date -> 941224 +% | +% | +%\end{Calorie} + +\def\Calorie#1{% + \parindent\z@% + %date + \hbox to \CalorieWd{{\NameDate \CalcDay#1, \MN@#1\space\DY@#1, \YE@#1}\hfill kcal} + \Vskip + %initialize + \LimitCalorie\StdCalorie% + \Cat@a\z@ \Cat@b\z@ \Cat@c\z@ \Cat@d\z@ \Cat@e\z@ \Cat@f\z@% + \Cat@g\z@ \Cat@h\z@ \Cat@i\z@ \Cat@j\z@ \Cat@k\z@ \Cat@l\z@% + \Cat@m\z@ \Cat@n\z@ \Cat@o\z@% + \Cat@a@false \Cat@b@false \Cat@c@false \Cat@d@false \Cat@e@false \Cat@f@false% + \Cat@g@false \Cat@h@false \Cat@i@false \Cat@j@false \Cat@k@false \Cat@l@false% + \Cat@m@false \Cat@n@false \Cat@o@false% + \Total@bf\z@ \Total@lu\z@ \Total@tb\z@ \Total@su\z@ \Total@mm\z@% + \Total@all\z@ \Total@tmp\z@% +} + +\def\endCalorie{% + \Total@all\Total@bf%sum for a whole day. + \advance\Total@all\Total@lu% + \advance\Total@all\Total@tb% + \advance\Total@all\Total@su% + \advance\Total@all\Total@mm% + \Hrule\PrintCat\Hrule%print items + \hbox to \CalorieWd{\null\hfill\NameTotal\dotfill\Rd\Total@all}\\%print total + \hbox to \CalorieWd{\null\hfill\NameLimit\null\hfill\Rd\LimitCalorie}\\% + \ifdim\Total@all>\LimitCalorie%warning + \Vskip\advance\Total@all-\LimitCalorie% + \fbox{\hbox to \CalorieWd% + {\bf\NameWarning\hfill{\Large\bf\Rd\Total@all} kcal\hfill\NameOver}}% + \fi% +} + +\def\TotalCat#1{%partial sum + \csname Total@#1\endcsname\Cat@a% + \advance\csname Total@#1\endcsname\Cat@b% + \advance\csname Total@#1\endcsname\Cat@c% + \advance\csname Total@#1\endcsname\Cat@d% + \advance\csname Total@#1\endcsname\Cat@e% + \advance\csname Total@#1\endcsname\Cat@f% + \advance\csname Total@#1\endcsname\Cat@g% + \advance\csname Total@#1\endcsname\Cat@h% + \advance\csname Total@#1\endcsname\Cat@i% + \advance\csname Total@#1\endcsname\Cat@j% + \advance\csname Total@#1\endcsname\Cat@k% + \advance\csname Total@#1\endcsname\Cat@l% + \advance\csname Total@#1\endcsname\Cat@m% + \advance\csname Total@#1\endcsname\Cat@n% + \advance\csname Total@#1\endcsname\Cat@o% +} + +\def\Print@Cat#1{%print data + \hbox to \CalorieWd{% + \hskip.3\CalorieWd\hbox to 5ex{\hss(#1)\hss}% + \hbox to 3ex{\hss\csname ifCat@#1@\endcsname$\circ$\else$\times$\fi\hss}% + \csname CatName#1\endcsname% + \hfill\Rd{\csname Cat@#1\endcsname} + }\\ +} + +\def\PrintCat{%print item + \NameDetail\\ + \Print@Cat{a} \Print@Cat{b} \Print@Cat{c} \Print@Cat{d} \Print@Cat{e} + \Print@Cat{f} \Print@Cat{g} \Print@Cat{h} \Print@Cat{i} \Print@Cat{j} + \Print@Cat{k} \Print@Cat{l} \Print@Cat{m} \Print@Cat{n} \Print@Cat{o} +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% I usually have five meals, breakfast, lunch, tea-break snack, +% supper, and finally a light snack with drinking liquor or beer +% at midnight. +% +% So I prepared five environments which work inside the Calorie environment. +% Breakfast +% Lunch +% TeaBreak +% Supper +% NightSnack +% + + +\def\Breakfast{\Vskip\Total@tmp\z@\Hrule} +\def\endBreakfast{% + \global\Total@bf\Total@tmp\Hrule% + \hbox to \CalorieWd{\NameBreakfast\dotfill\Rd\Total@bf}% +} + +\def\Lunch{\Vskip\Total@tmp\z@\Hrule} +\def\endLunch{% + \global\Total@lu\Total@tmp\Hrule% + \hbox to \CalorieWd{\NameLunch\dotfill\Rd\Total@lu}% +} + +\def\TeaBreak{\Vskip\Total@tmp\z@\Hrule} +\def\endTeaBreak{% + \global\Total@tb\Total@tmp\Hrule% + \hbox to \CalorieWd{\NameTeaBreak\dotfill\Rd\Total@tb}% +} + +\def\Supper{\Vskip\Total@tmp\z@\Hrule} +\def\endSupper{% + \global\Total@su\Total@tmp\Hrule% + \hbox to \CalorieWd{\NameSupper\dotfill\Rd\Total@su}% +} + +\def\NightSnack{\Vskip\Total@tmp\z@\Hrule} +\def\endNightSnack{% + \global\Total@mm\Total@tmp\Hrule% + \hbox to \CalorieWd{\NameNightSnack\dotfill\Rd\Total@mm}% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \Cal{name of material}{category}{unit calorie}{unit}{amount} +% +\def\Cal#1#2#3#4#5{\Cal@tmp#3pt% + \Cal@tmp#5\Cal@tmp% + \def\Tmp@{#1} + \global\advance\csname Cat@#2\endcsname\Cal@tmp% + \global\csname Cat@#2@true\endcsname% + \advance\Total@tmp\Cal@tmp% + \hbox to \CalorieWd{% + \hbox to 5ex{\hss(#2)\hss} + \ifx\Tmp@\@empty% + \hfill\else#1, #5\ \ifx#51#4\else#4\PlChar\fi\dotfill\ + \fi% + \Rd\Cal@tmp}\\} + + + +% To define daily material +% \cdef{name}{category}{unit calorie}{unit} +% is equivalent to +% \def\name#1{\Cal{category}{unit calorie}{unit}#1} +% +\def\cdef#1#2#3#4{% + \expandafter\ifx\csname #1\endcsname\relax% + \expandafter\def\csname#1\endcsname##1{\Cal{#1}{#2}{#3}{#4}{##1}}% + \else% + \@latexerr{Command name `#1' already used}\@eha + \fi% +} + +%%%%%%%%%%%%%% +% \Cons{name of exercise}{unit calorie}{unit}{amount} +% calories of additional exercise, +% which inflate the calorie limit, \LimitCalorie. +% + +\def\Cons#1#2#3#4{\Cal@tmp#2pt% + \Cal@tmp#4\Cal@tmp% + \global\advance\LimitCalorie\Cal@tmp% + \hbox to \CalorieWd{% + \hfill#1, #4\ \ifx#41#3\else#3s\fi\dotfill% + $-$\Rd\Cal@tmp}} + +% To define daily exercise. +% Similar to \cdef + +\def\sdef#1#2#3{% + \expandafter\ifx\csname #1\endcsname\relax% + \expandafter\def\csname#1\endcsname##1{\Cons{#1}{#2}{#3}{##1}} + \else% + \@latexerr{Command name `#1' already used}\@eha + \fi% +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Japanese version, which may be more satisfying, will be sent by an email on request. +% +\def\NameDate{\large\bf Date: } +\def\NameTotal{{\bf Total }} +\def\NameLimit{{\bf Limit }} +\def\NameDetail{{\bf Items }} +\def\NameWarning{{Warning}} +\def\NameOver{{ Exceeded!!}} +\def\PlChar{s}%plural char +\def\NameBreakfast{{\bf Breakfast} \hfill total} +\def\NameLunch{{\bf Lunch} \hfill total} +\def\NameTeaBreak{{\bf Tea Break} \hfill total} +\def\NameSupper{{\bf Supper} \hfill total} +\def\NameNightSnack{{\bf Night Snack} \hfill total} + +% Categories of materials +% I am unfamiliar with nutrition. +% I hope someone teach me suitable terminology. +\def\CatNamea{Cereals} +\def\CatNameb{Meats} +\def\CatNamec{Seafoods} +\def\CatNamed{Eggs} +\def\CatNamee{Dairy products} +\def\CatNamef{Beans} +\def\CatNameg{Potatoes} +\def\CatNameh{Green vegetables} +\def\CatNamei{Other vegetables} +\def\CatNamej{Dry goods}%Laver, dried fish etc +\def\CatNamek{Fruits} +\def\CatNamel{Oils \& seasonings} +\def\CatNamem{Confectioneries} +\def\CatNamen{Drinks} +\def\CatNameo{Miscellaneous} + + +% if calorie.dat file exists, load it in. +\openin1 calorie.dat +\ifeof1\else\closein1 \relax\@@input calorie.dat\fi + + + +\endinput + +Following are two files, calorie.dat (sample data file) and +example.tex (example). +To obtain an example, +save as in separated files, and compile example.tex + + +calorie.dat --- sample data file for calorie.sty +----------------cut here---------------- +%% calorie.dat +% Calorie data for daily materials. +% +% +\cdef{Rice}{a}{200}{cup} +\cdef{Noodles}{a}{210}{cup} +\cdef{Soba}{a}{240}{cup} +\cdef{ChinaNoodles}{a}{370}{cup} +\cdef{Bread}{a}{160}{slice} +\cdef{CalorieMate}{a}{100}{piece}%eutrophic +\cdef{VitaminSalad}{a}{23.333}{piece}%eutrophic +\cdef{Yogurt}{e}{0.6}{gram} +\cdef{Tofu}{f}{240}{chou} +\cdef{Egg}{d}{80}{piece}%egg +\cdef{Carrot}{i}{0.32}{gram} +\cdef{Beer}{n}{0.4}{ml} +\cdef{Coffee}{n}{0}{cup} +\cdef{Fried}{l}{2}{cm$^3$} + +%Set + +\def\Sushi#1{% + \Cal{Sushi rice}{a}{40}{piece}{#1} + \Cal{Raw fish}{c}{15}{piece}{#1} + \Cal{Vinegar}{l}{0}{ml}{#1} +} +\cdef{Quail}{d}{18}{piece}%egg of quail +\cdef{Nattoh}{f}{2}{gram} +\cdef{Laver}{j}{0}{sheet} + +\def\Quixote{% Curry lunch at Quixote + \Cal{Curry (Quixote)}{o}{50}{dish}{1} + \Cal{}{a}{70}{}{1} + \Cal{}{g}{40}{}{1} + \Cal{}{i}{20}{}{1} + \Cal{}{l}{50}{}{1} + \Cal{Rice}{a}{1}{gram}{200} + \Cal{Cabbage}{h}{.1}{gram}{30} +} + + +% exercise +\sdef{Jog}{4}{min} +\sdef{Walk}{1.6}{min} +\sdef{Tennis}{5.33}{min} + +\endinput +----------------cut here---------------- + + + +example.tex --- example of calorie.sty +----------------cut here---------------- +%example.tex +\documentstyle[% + a4,% + calorie% +]{article} +\begin{document} + \SetCalorie{2200} + %Standard for a Japanese male, + %170cm height, light job + + \begin{Calorie}{941221} + \Tennis{30} + + \begin{Breakfast} + \VitaminSalad{3} + \CalorieMate{4} + \Coffee{1} + \end{Breakfast} + + \begin{Lunch} + \Quixote%Curry set at Restaurant Quixote + \Cal{Scallop}{o}{1.11}{gram}{50} + \Fried{20} + \Coffee{1} + \end{Lunch} + + \Jog{20} + + \begin{Supper} + \Sushi{20} + \Egg{.3} + \Quail{1} + \Nattoh{10} + \Laver{5} + \end{Supper} + + \begin{NightSnack} + \Yogurt{60} + \Beer{700} + \end{NightSnack} + + \end{Calorie} +\end{document} +----------------cut here---------------- + + +example.tex --- example of calorie.sty +----------------cut here---------------- +%!PS-Adobe-2.0 +%%Creator: dvips 5.54 Copyright 1986, 1994 Radical Eye Software +%%Title: CALORIE.DVI +%%CreationDate: Thu Dec 22 19:37:36 1994 +%%Pages: 2 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%EndComments +%DVIPSCommandLine: C:\DRIVERS\DVIPS\DVIPS.EXE CALORIE.DVI +%DVIPSParameters: dpi=600, compressed, comments removed +%DVIPSSource: TeX output 1994.12.22:1936 +%%BeginProcSet: texc.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N +/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 +mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} +ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale +isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div +hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul +TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get +round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{ +statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 +0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn +begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X +array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo +setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx +FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ +pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} +B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup +length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B +/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type +/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp +0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 +index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff +ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice +ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id +ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{ +rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get +/gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp +X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X +adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup +255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv} +B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv +S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string +putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval +adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} +{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ +adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 +chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] +}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup +length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ +cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul +add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage +userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook +known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X +/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for +65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 +0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V +{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 +getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} +ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley +false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley +scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath +transform round exch round exch itransform moveto rulex 0 rlineto 0 +ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta +0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} +B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ +3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p +-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ +3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end +%%EndProcSet +TeXDict begin 39158280 55380996 1000 600 600 +(C:\DRIVERS\DVIPS/CALORIE.DVI) @start /Fa 3 55 df<EA03F8EA0FFE487E481380 +4813C0A2B512E0A76C13C0A26C13806C13006C5AEA03F81313779226>46 +D<91380FFFC091B512FE0107ECFFC0011F15F04915FC90267FF8077F9026FFC0007F4848 +C76C138048486E13C0486C6E13E0486C6C15F08082486D15F8A380A25CA26C5D4A15F06C +5B6C90C7FCC64816E090C85A18C04C138018004C5A4B5B4B5B030F5B037F13C0027FB55A +04FCC7FC16F016FEEEFFC0DA000713F0030113FC6F6CB4FC7013807013C018E07013F018 +F818FCA27013FEA3D801E016FFEA0FFC487E487E487FA2B57EA318FEA25E18FC6C5B18F8 +91C75A6C4816F0D81FF84A13E06D4A13C06CB449B512806CD9F00714006C90B65AC616F8 +013F15E0010F1580010102FCC7FCD9001F13C0384F7ACD45>51 D<923807FF80037F13F0 +0203B512FC021F14FF027F158091B5000113C001039039F8003FE04901E0130F490180EB +3FF04990C712FF49485B494815F849485B5A5C5A485BA2486F13F05C486F13E0EF3F8094 +C7FC5AA25C5AA2ED3FF80281B57E028314E0B5008714F8028F80DA9FC07F9139BF001FFF +02FC6D13807013C04A6D13E04A15F018F84A7F18FCA24A15FEA44A15FFA37EA67EA46C17 +FE80A26C17FCA26C4B13F8806C17F06C6D15E06C5D6E4913C0D97FFE4913806D6C6CB512 +006D90B512FC01075D6D5D010015C0021F49C7FC020313E0384F7ACD45>54 +D E /Fb 1 52 df<13FF000313E0380F01F8381C007C0030137E003C133E007E133FA412 +3CC7123E147E147C5C495AEB07E03801FF8091C7FC380001E06D7E147C80143F801580A2 +1238127C12FEA21500485B0078133E00705B6C5B381F01F03807FFC0C690C7FC19277DA5 +21>51 D E /Fc 28 121 df<EA0F80EA3FE0EA7FF0EAFFF8A8EA7FF0A7EA3FE0A7EA1FC0 +A7EA0F80A7C7FCA7EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D3B78BA +1D>33 D<B812C017FC17FF18C028007FF000037F04007F717E717E171F84A2717EA74D5A +A260173F4D5A4D5A4C13C0040F5B91B600FCC7FCA2EFFF8002F0C713F0EF3FF8717E717E +717E19807113C0A319E0A719C0A25F4D138019005FEF7FFE4C485AB912F018C095C7FC17 +F03B397DB844>66 D<B912F0A426007FF8C7FCEF1FF8170717031701A21700A21878A304 +3C137C183CA41800167CA216FC150391B5FCA4ECF8031500167CA2163C180FA3181EA293 +C7FCA2183EA2183C187CA218FCA2EF01F81703170F173FEE01FFB9FC18F0A338397DB83F +>69 D<B612FCA439007FF800B3B3ADB612FCA41E397DB824>73 D<B7FCA426007FF8C9FC +B3ACEF0780A5170F1800A35FA25FA25F5F5E5EEE0FFE167FB8FCA431397DB839>76 +D<B500FC0203B512F0A28080C66C6D90390003F0006F6E5A81017B7F13798101787F6E7E +6E7E6E7F6E7FA26E7F6E7F6E7F6E7F6F7E153F826F13806F13C06F13E06F13F06F13F881 +17FCEE7FFEEE3FFF7013817013C17013E18218F17013F97013FDEF7FFF8383A283838383 +83187FA2183F181F01FC160FB500FC150718031801A244397DB84B>78 +D<D907FF130E013FEBE01E90B5EAF83E0003ECFE7E3A07FC01FFFE390FF0001F4848130F +48481303491301007F140090C8FC167E5A163EA27F161E7F7F6D91C7FC13FC387FFFE014 +FEECFFF06C14FE6F7E6C816C15F06C816C81C681133F010F801301D9000F1480EC007F03 +0F13C01503818100F0157FA3163FA27E17807E167F6C16007E6D14FE01E0495A01F81303 +9039FF801FF800FC90B512E0D8F83F5CD8F00749C7FC39E0007FF02A3B7BB935>83 +D<003FB91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA2007C1707A200 +781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>I<B6D8E01FB500 +FC90383FFFFCA4000101F0C7D83FFCC8EA7E006C71153C171F6E197C017F701578836E70 +14F8013F6F5E6E1801011F4B6D5CA26E18036D4B6D5CA26D6D496D495A173C6F170F6D03 +7C6D91C7FCEF787F6F5F6D4B6C6C131E816D02016E5BEFE01F03F8177C027F01036E1378 +4D7E03FCEE80F8023F49486C5C15FE021F010FEDC1E04D7E03FF16C36E49EDE3C0041E7F +049E15F76E01BC6D5C04FC15FF6E95C8FC4C80A26E5F4C143F6E5F4C141FA2037F5E4C14 +0FA26F486E5AA2031F5E93C812036F5E5E3A7EB863>87 D<EB3FFE0003B512E0000F14F8 +391FF00FFE003FEB03FF6D6C7F6E7FA26F7EA26C5A6C5AEA0380C8FCA2EC3FFF010FB5FC +137F3901FFF87F00071380380FFE00EA3FF85B485A12FF5BA415FF6D5A127F263FF00713 +F83B1FFC1FBFFFC0390FFFFE1F0003EBF80F39003FE0032A257DA42E>97 +D<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF8121F13F012 +3F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6CEB07C06C +6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>99 +D<EE7F80ED7FFFA4150381AF903801FF81010F13F1013F13FD9038FFC07F0003EB001FD8 +07FC1307000F8048487F5B123FA2485AA312FFAA127FA27F123FA26C6C5B000F5C6C6C5B +6C6C4913C02701FF80FD13FE39007FFFF9011F13E1010313012F3A7DB935>I<903803FF +80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003F +EC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D +14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C> +I<EC1FF0903801FFFC010713FF90391FF87F8090383FE0FFD9FFC113C0A2481381A24813 +016E1380A2ED3E0092C7FCA8B6FCA4000390C8FCB3ABB512FEA4223A7DB91D>I<161FD9 +07FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C138F003F15CF +4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B5 +12F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C81 +6C815A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81F +F0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA4 +12077EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25C +A291C7FCB3A3B5D8FC3F13FFA4303A7DB935>I<EA01F0EA07FC487EA2487EA56C5AA26C +5AEA01F0C8FCA913FF127FA412077EB3A9B512F8A4153B7DBA1B>I<13FFB5FCA412077E +AF92380FFFE0A4923803FC0016F0ED0FE0ED1F804BC7FC157E5DEC03F8EC07E04A5A141F +EC7FE04A7E8181A2ECCFFEEC0FFF496C7F806E7F6E7F82157F6F7E6F7E82150F82B5D8F8 +3F13F8A42D3A7EB932>107 D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FE +D97FE0EB0FFC00FF902601FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA +3C00903887801F000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3 +A3B5D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91 +381F03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FF +A430257DA435>I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48 +486D7E48486D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F +5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA4 +30>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113800003496C13C00280 +EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E0 +6EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FC +A42F357EA435>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C +5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>114 +D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E +7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE +140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F81400 +38E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7 +FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB425> +I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90 +387FFFFC011F13F00103138030257DA435>I<B539F01FFFF0A4000390398003F8006C01 +C013E06C1407D97FE05B6D6C485A6E48C7FC90381FFC3E010F5B903807FEFC6D6C5A5D6D +5B6D5B6E7E6E7E814A7EA24A7E903801F3FFD903E37FD907C17FEB0FC049486C7E4A6C7E +013E80496D7E49130F00016E7EB590383FFFF8A42D257EA432>120 +D E /Fd 3 15 df<007FB81280B912C0A26C17803204799641>0 +D<0060150600F8150F6C151F007E153F6C157E6C6C14FC6C6CEB01F86C6CEB03F06C6CEB +07E06C6CEB0FC06C6CEB1F80017EEB3F006D137E6D6C5A90380FC1F8903807E3F0903803 +F7E06DB45A6D5B6EC7FCA24A7E497F903803F7E0903807E3F090380FC1F890381F80FC90 +383F007E017E7F49EB1F804848EB0FC04848EB07E04848EB03F04848EB01F84848EB00FC +48C8127E007E153F48151F48150F00601506282874A841>2 D<EB0FE0EB7FFC497E0003 +EBFF803907F83FC0390FC007E0391F8003F0393F0001F8003E130048147CA20078143C00 +F8143EA248141EA46C143EA20078143C007C147CA26C14F8003F1301391F8003F0390FC0 +07E03907F83FC06CB51280C6EBFE006D5AEB0FE01F207BA42A>14 +D E /Fe 1 59 df<121C127FEAFF80A5EA7F00121C0909798817>58 +D E /Ff 59 122 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F90 +3B1F8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8 +A32801F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11 +D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B +A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5 +12C0A32A3B7FBA2E>I<141FEC7FC0903801F0E0903803C0600107137090380F80309038 +1F00381518A25BA2133E133F15381530A215705D5D140190381F838092CAFC1487148E02 +DC49B51280EB0FF85C4A9039003FF8000107ED0FC06E5D71C7FC6E140E010F150CD91DFC +141C01391518D970FE143801E015302601C07F1470D803805D00076D6C5BD80F00EBC001 +48011F5C4890380FE003003E6E48C8FC007E903807F8060203130E00FE6E5A6E6C5A1400 +ED7F706C4B13036F5A6F7E6C6C6D6C5B7013066C6C496C130E6DD979FE5B281FF001F07F +133C3C07F80FE03FC0F86CB539800FFFF0C69026FE000313C0D91FF0D9007FC7FC393E7D +BB41>38 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B12 +0F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C +7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40 +D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F +A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2 +5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0 +A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>44 +D<121C127FEAFF80A5EA7F00121C0909798817>46 D<EB03F8EB1FFF90387E0FC09038F8 +03E03901E000F0484813780007147C48487FA248C77EA2481580A3007EEC0FC0A600FE15 +E0B3007E15C0A4007F141F6C1580A36C15006D5B000F143EA26C6C5B6C6C5B6C6C485A6C +6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A>48 D<EB01C013031307131F13FFB5 +FCA2131F1200B3B3A8497E007FB512F0A31C3879B72A>I<EB0FF0EB7FFE48B57E3903E0 +3FE0390F000FF0000E6D7E486D7E486D7E123000706D7E126012FCB4EC7F807FA56CC7FC +121CC8FCEDFF00A34A5A5D14035D4A5A5D140F4A5A4A5A92C7FC147C5C495A495A495A49 +5A91C8FC011EEB01805B5B49130348481400485A485A000EC75A000FB6FC5A5A485CB6FC +A321387CB72A>I<EB07F8EB3FFF4913C03901F80FF03903C007F848486C7E380E000100 +0F80381FE0006D7FA56C5A6C5AC85A1401A25D4A5AA24A5A5DEC0F80027EC7FCEB1FFCEC +FF809038000FE06E7EEC01FC816E7EED7F80A216C0A2153F16E0A2121EEA7F80487EA416 +C049137F007F1580007EC7FC0070ECFF006C495A121E390F8003F83907F00FF00001B512 +C06C6C90C7FCEB0FF8233A7DB72A>I<1538A2157815F8A2140114031407A2140F141F14 +1B14331473146314C313011483EB030313071306130C131C131813301370136013C01201 +EA038013005A120E120C5A123812305A12E0B712F8A3C73803F800AB4A7E0103B512F8A3 +25397EB82A>I<0006140CD80780133C9038F003F890B5FC5D5D158092C7FC14FC38067F +E090C9FCABEB07F8EB3FFE9038780F803907E007E090388003F0496C7E12066E7EC87EA2 +8181A21680A4123E127F487EA490C71300485C12E000605C12700030495A00385C6C1303 +001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE0213A7CB72A>I<EC3FC090 +3801FFF0010713FC90380FE03E90383F800790387E001F49EB3F804848137F485AA2485A +000FEC3F0049131E001F91C7FCA2485AA3127F90C9FCEB01FC903807FF8039FF1E07E090 +383801F0496C7E01607F01E0137E497FA249148016C0151FA290C713E0A57EA56C7E16C0 +A2121FED3F807F000F15006C6C5B15FE6C6C5B6C6C485A3900FE07F090383FFFC06D90C7 +FCEB03FC233A7DB72A>I<12301238123E003FB612E0A316C05A168016000070C7120600 +60140E5D151800E01438485C5D5DC712014A5A92C7FC5C140E140C141C5CA25CA214F049 +5AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8FC131E233B7BB82A>I<EB03F8 +EB1FFF017F13C09038FC07F03901E001F848486C7E4848137C90C77E48141E000E141F00 +1E80A3121FA27F5D01E0131E6C6C133E01FC133C6D5B6C6C6C5AECC1E06CEBF3C06C01FF +C7FC6C5BEB3FFF6D13C081017F13F801F07F3903E07FFE3907801FFF48486C1380481303 +003E6D13C0003CEB007F007C143F0078EC0FE000F814075A1503A21501A36C15C0127815 +03007C15806CEC07006C5C6C6C131ED807E0137C3903F803F0C6B55A013F1380D907FCC7 +FC233A7DB72A>I<EB03F8EB1FFF017F13C09038FC07E03903F803F048486C7E48486C7E +49137E121F48487FA2007F158090C7FCA248EC1FC0A616E0A56C143FA27F123F001F147F +A26C6C13FF6C6C13DF000313013901F0039F3900FC0F1FD93FFC13C0EB07F090C7FC153F +1680A316005D000F147E487E486C5BA24A5A4A5A49485A6C48485A001C495A260F807FC7 +FC3807FFFC000113F038003FC0233A7DB72A>I<B712E016FC16FF0001903980007FC06C +90C7EA1FE0707E707E707EA2707EA283A75F16035F4C5A4C5A4C5A4C5AEEFF8091B500FC +C7FCA291C7EA7F80EE1FE0EE07F0707E707E83707EA21880177F18C0A7188017FFA24C13 +005F16034C5AEE1FF8486DEB7FF0B812C094C7FC16F832397DB83B>66 +D<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03FC000F0FD90FF0EB03 +9F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F4848150FA248481507A2 +485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F160318006C +7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03C0D903FC +EB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D7BBA3C>I<B712C016 +F816FE000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E177FA2EF3F8018C017 +1F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F18C0EF3F80A2EF7F00 +17FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397DB83F>I<B812FCA300 +01903880000F6C90C71201EE007E173E171E170EA31706A317078316C0A394C7FCA31501 +A21503150F91B5FCA3EC000F15031501A21500A21860A318E093C712C0A41701A3EF0380 +A21707A2170F173F177F486D903807FF00B9FCA333397DB839>I<B812F8A30001903880 +001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED0180A21700A41503A215 +07151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612C0A32F397DB836>I< +DBFF8013C0020FEBF001023F13FC9139FF803F03903A03FC000787D90FF0EB03CF4948EB +00EF4948147F4948143F49C8121F485A4848150F48481507A248481503A2485A1701123F +5B007F1600A448481600AB93B6FCA26C7E9338007FE0EF3FC0A2123F7F121FA26C7EA26C +7EA26C7E6C7E6C6C157F6D7E6D6C14FF6D6C14EFD90FF8EB03C7D903FEEB0783903A00FF +C03F0191393FFFFC00020F01F0130002001380383D7CBA41>I<013FB512E0A39039001F +FC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49 +C7FC380781FC3801FFF038007F80233B7DB82B>74 D<B612E0A3000101C0C8FC6C90C9FC +B3AD1718A517381730A31770A317F0A216011603160FEE1FE0486D13FFB8FCA32D397DB8 +34>76 D<B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F015 +63A3D9C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318 +A26E6C1330A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F +8CA2ED1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045 +397DB84C>I<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EB +C7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED7FC0 +16E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE +0FFEA216071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA217063739 +7DB83E>I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80 +EB07F049C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0A2001F +17E049150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F17F0A2 +6C6CED1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F4A5A6D +6C495A6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE0020390C8FC +363D7BBA41>I<B712C016F816FE000190398001FF806C90C7EA3FC0EE0FE0EE07F0EE03 +F817FC17FE1601A217FFA717FEA2EE03FCA2EE07F817F0EE0FE0EE3FC0923801FF0091B5 +12FC16F091C9FCB3A5487FB6FCA330397DB839>I<EC03FF021F13E09138FE01FC903901 +F8007ED907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE6E7E48486E7EA24848157F +0007178049153F000F17C049151F001F17E0A24848ED0FF0A3007F17F8A2491507A200FF +17FCAC007F17F8A26D150FA2003F17F0A26C6CED1FE0A36C6CED3FC00007027C14804AB4 +FC3C03F80383807F003B01FC0701C0FEEC0E002600FE0CEBE1FC017FEC63F8D93F8CEB77 +F0D91FCCEB3FE0D907EE14806DB449C7FC0100D981FC130CEC1FFF0203131C91C7001E13 +1C161F183CEF807CEFC0F8EE0FFFA318F08218E07013C07013809338007E00364B7BBA41 +>I<B612FEEDFFE016F8000190388007FE6C90C76C7EEE3FC0707E707E707EA2707EA283 +A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07FC91B512E05E9138000FF0ED03F8ED00FE +82707E707EA2161F83A583A6F00180A217F8160F1803486D01071400B66D6C5A04011306 +933800FE0ECAEA3FFCEF07F0393B7DB83D>I<D90FF813C090383FFE0190B512813903F8 +07E33907E000F74848137F4848133F48C7121F003E140F007E1407A2007C140312FC1501 +A36C1400A37E6D14006C7E7F13F86CB47E6C13F8ECFF806C14E06C14F86C14FEC680013F +1480010714C0EB007F020713E0EC007FED3FF0151F150FED07F8A200C01403A21501A37E +A216F07E15036C15E06C14076C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE13FE39E03F +FFF8010F13E0D8C00190C7FC253D7CBA2E>I<003FB812E0A3D9C003EB001F273E0001FE +130348EE01F00078160000701770A300601730A400E01738481718A4C71600B3B0913807 +FF80011FB612E0A335397DB83C>I<B500FC91387FFF80A30003018091380FFC006C90C8 +EA07E0715A6C705A6E1403017F93C7FCA280013F1506A26E140E011F150C80010F5DA280 +01075DA26E147001031560A26D6C5CA2806D4A5AA2ED8003027F91C8FCA291383FC006A2 +15E0021F5BA2EDF01C020F1318A26E6C5AA215FC02035BA2EDFEE002015BA26E6C5AA36F +C9FCA3153EA2151CA3393B7EB83E>86 D<B500FE91383FFFE0A3000301E0913807FE00C6 +49EC03F0017F6F5A606D6C5D6D6C140395C7FC6D6C1406A26D6C5C6D6C141C17186D6C14 +3817306D6D5B6E6C13E05F91383FE0015F91381FF003DA0FF890C8FC1606913807FC0E16 +0C913803FE1C913801FF185E6E13B016E0157F6F5AB3A24B7E023FB512C0A33B397FB83E +>89 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A +6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FE +A31401A26C13036CEB077C903980063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F +8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3 +801F809039F7000FC001FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA16 +7E16FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E +903800FFF8C7EA1FC0283B7EB92E>I<EB03FC90381FFF8090387E03E03901F800704848 +13F83907E001FC380FC003A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E +127FA26C14067F001F140E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090 +381FFF00EB07F81F277DA525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E +078F9038F801EF3903F0007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FE +AA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C07 +8F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF90387C0FC03901F803E03903 +F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8 +FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D131CD801F013386C6C1370 +90387E03E090381FFF80903803FC0020277EA525>I<147E903803FF8090380FC1E0EB1F +8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387F +FFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE0 +3903E007C03A07C003E010000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D48 +5A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF80 +4815C03A0F80007FE048C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC +03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387E +A52A>I<EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0 +EBF70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A3293A7EB92E>I<EA0380EA +0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717 +>I<EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A212 +3C127E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>I<EA +03F012FFA3120F1203B1913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC14 +1E1438147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E +157F811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012FFA3120F1203 +B3B3AD487EB512C0A3123A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F +01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0F +C0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00F +F000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3 +486C497EB500C1B51280A329257EA42E>I<EB03FE90380FFF8090383E03E09038F800F8 +4848137C48487F48487F4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15 +F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137E +C66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000FFEB7FF8 +9038F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC15 +0016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F +009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>I<3807E01F00 +FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300 +A45BB3A2487EB512F0A31C257EA421>114 D<EBFF03000313E7380F80FF381E003F487F +487F00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F0107 +1380EB007F141F00C0EB0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C +38E1FFF038C03F801A277DA521>I<1318A51338A31378A313F8120112031207001FB5FC +B6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347F +B220>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D13 +3F0000EC77F86D9038E7FF8090383F03C790381FFF87903A03FC07E00029267EA42E>I< +B538803FFEA33A0FF8000FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D +130E017E130CA26D5BA2EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901 +FBC7FCA214FF6D5AA2147CA31438A227257EA32C>I<B53A1FFFE03FFEA3260FF8009038 +000FF86C48017EEB03E018C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2 +017E9038EFC00C15C7A2D93F016D5A15830281EBF038D91F831430150102C3EBF8709026 +0FC6001360A2D907E66D5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100 +141E4A130E0260130C37257EA33C>I<B538807FFFA33A03FE003FF00001EC1F80000092 +C7FC017E131C6D13186D6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F +804A7E8114CF903801C7E090380383F090380703F8EB0601496C7E011C137E49137F0178 +7F496D7E486C80000FEC3FF0D8FFFE90B51280A329247FA32C>I<B538803FFEA33A0FF8 +000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2 +ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A214 +30A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC0 +27357EA32C>I E /Fg 14 117 df<EA07C0EA1FF0EA3FF8EA7FFC12FF13FEA213FFA47E +7E7EEA07CFEA000FA2131F131EA2133EA2133C137C13F8A2EA01F0120313E0EA07C0EA1F +801300121E120C1022788E1F>44 D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3F +F8EA1FF0EA07C00F0F788E1F>46 D<EC03C01407141F147FEB03FF133FB6FCA413C3EA00 +03B3B3ADB712FCA5264177C038>49 D<ECFFE0010F13FE013F6D7E90B612E0000315F826 +07FC0313FE3A0FE0007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13 +F07F17F881A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E +4B5A4B5A4A90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014 +F0495A495A49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038 +>I<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F0714 +3E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F +5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>52 +D<EC7FF0903807FFFE011F6D7E017F14E09039FFE03FF0489038800FF848496C7E484880 +48486D7E001F80003F1680A2484815C08117E0A212FF17F0A617F8A45D127FA3003F5CA2 +6C7E5D6C6C5B12076C6C131E6CEBC07C6CEBFFF8013F5B010F01C013F00101130090C8FC +A217E05DA2EA03C0D80FF015C0487E486C491380A217004B5A150F5E49495A6C48495A01 +C0EBFFE0260FF0035B6CB65A6C4AC7FC6C14F86C6C13E0D907FEC8FC2D427BC038>57 +D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C0C7FCAEEA07C0EA +1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F2C78AB1F>I<B9FC18F018 +FE727E19E026003FFEC7001F13F805017F9438003FFF060F7F727F727F727F84737E737E +A2737EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B006162193F624F5A19FF62 +4E5B06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18F095C9FC4B447CC356 +>68 D<B600FE017FB691B512FEA526007FFCC8D83FFEC9EA7C006E82013F701778807415 +F86D705F6F7014016D705FA26F7014036D64814E6D14076D646F70140F6D041E94C7FCA2 +6F023E6D5C6DDC3C7F151E81027F037C6D5CF0783F6F70147C023F4B6C1578A26F01016F +13F86E4B6C5D16806E02036F485A4E7E04C0EEE0036E4A486C5DA2DCE00FEDF0076E4B6C +5D16F06E4A6F48C8FC051E7F04F8705A6E4A027F131EA2DCFC7CEDFE3E037F0178023F13 +3C04FE16FF033F01F85E4D8004FF17F86F496E5BA36F496E5BA26F604D80A26F90C86C5B +A36F486F90C9FCA26F48167EA30478163C6F457EC374>87 D<903801FFE0011F13FE017F +6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00 +F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F1380381FFE0048 +5A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EB +FFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 D<EC3FFC49B512C0010F14F001 +3F14FC90397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F130000 +7F6E5AED00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C +6DEB1F006C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A +2F7CAD32>99 D<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14 +CF9039FFF807FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F +5BA212FFAC127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC +6C9038F01FEF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E>I<EC3F +F80103B57E010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D13 +80485A001FED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127F +A27FA2123F17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090 +397FFE01FE011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>I<EB01E0A513 +03A41307A2130FA2131FA2133F137F13FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED +01E0A9150302F013C0137F150790393FF80F8090391FFC1F006DB5FC6D13FC01015B9038 +003FE023407EBE2C>116 D E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%PaperSize: a4 + +%%EndSetup +%%Page: 1 1 +1 0 bop 330 390 a Fg(Date:)50 b(W)-9 b(ed.,)38 b(Dec.)49 +b(21,)38 b(1994)1413 b Ff(k)n(cal)1347 526 y(T)-7 b(ennis,)27 +b(30)g(mins)17 b Fe(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)j +Fd(\000)p Ff(159.9)p 330 643 2865 3 v 366 761 a(\(a\))64 +b(VitaminSalad,)28 b(3)f(pieces)19 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:) +g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h +(:)g(:)47 b Ff(70.0)366 860 y(\(a\))64 b(CalorieMate,)26 +b(4)i(pieces)23 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f +(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)51 +b Ff(400.0)364 960 y(\(n\))62 b(Co\013ee,)28 b(1)f(cup)15 +b Fe(:)f(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:) +g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:) +h(:)g(:)g(:)42 b Ff(0.0)p 330 1042 V 330 1159 a Fc(Breakfast)1065 +b Ff(total)8 b Fe(:)14 b(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:) +f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)8 +b Ff(470.0)p 330 1277 V 366 1394 a(\(o\))64 b(Curry)27 +b(\(Quixote\),)h(1)f(dish)20 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)48 +b Ff(50.0)366 1494 y(\(a\))2568 b(70.0)366 1593 y(\(g\))g(40.0)376 +1693 y(\(i\))2577 b(20.0)376 1793 y(\(l\))g(50.0)366 +1892 y(\(a\))64 b(Rice,)28 b(200)e(grams)12 b Fe(:)h(:)h(:)g(:)g(:)g(:) +g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:) +g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)40 b Ff(200.0)364 +1992 y(\(h\))62 b(Cabbage,)27 b(30)f(grams)15 b Fe(:)e(:)h(:)g(:)g(:)g +(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:) +g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)43 b Ff(3.0)366 2091 +y(\(o\))64 b(Scallop,)27 b(50)g(grams)21 b Fe(:)14 b(:)g(:)g(:)f(:)h(:) +g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f +(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)50 b Ff(55.5)376 2191 +y(\(l\))73 b(F)-7 b(ried,)28 b(20)f(cm)990 2161 y Fb(3)1027 +2191 y Ff(s)d Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:) +f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g +(:)g(:)f(:)h(:)52 b Ff(40.0)364 2291 y(\(n\))62 b(Co\013ee,)28 +b(1)f(cup)15 b Fe(:)f(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h +(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:) +g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g +(:)g(:)g(:)f(:)h(:)g(:)g(:)42 b Ff(0.0)p 330 2372 V 330 +2490 a Fc(Lunc)m(h)1136 b Ff(total)25 b Fe(:)14 b(:)g(:)g(:)f(:)h(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:) +h(:)g(:)g(:)g(:)g(:)25 b Ff(528.5)1423 2590 y(Jog,)i(20)g(mins)19 +b Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g +(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k +Fd(\000)p Ff(80.0)p 330 2707 V 366 2825 a(\(a\))64 b(Sushi)28 +b(rice,)f(20)g(pieces)13 b Fe(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f +(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g +(:)40 b Ff(800.0)369 2924 y(\(c\))66 b(Ra)n(w)27 b(\014sh,)h(20)f +(pieces)13 b Fe(:)h(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f +(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)41 +b Ff(300.0)376 3024 y(\(l\))73 b(Vinegar,)27 b(20)g(mls)21 +b Fe(:)14 b(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:) +h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g +(:)48 b Ff(0.0)364 3123 y(\(d\))62 b(Egg,)27 b(.3)g(pieces)19 +b Fe(:)14 b(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h +(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:) +g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g +(:)g(:)47 b Ff(24.0)364 3223 y(\(d\))62 b(Quail,)27 b(1)h(piece)18 +b Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:) +g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h +(:)g(:)46 b Ff(18.0)371 3323 y(\(f)6 b(\))70 b(Nattoh,)28 +b(10)f(grams)22 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f +(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g +(:)g(:)51 b Ff(20.0)374 3422 y(\(j\))73 b(La)n(v)n(er,)26 +b(5)h(sheets)18 b Fe(:)c(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:) +g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:) +g(:)g(:)g(:)g(:)g(:)45 b Ff(0.0)p 330 3504 V 330 3622 +a Fc(Supp)s(er)1093 b Ff(total)23 b Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:) +g(:)g(:)g(:)23 b Ff(1162.0)p 330 3739 V 369 3857 a(\(e\))66 +b(Y)-7 b(ogurt,)27 b(60)g(grams)8 b Fe(:)13 b(:)h(:)g(:)f(:)h(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:) +h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g +(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)36 b Ff(36.0)364 3956 +y(\(n\))62 b(Beer,)27 b(700)f(mls)18 b Fe(:)d(:)e(:)h(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:) +g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h +(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)46 b Ff(280.0)p +330 4038 V 330 4155 a Fc(Nigh)m(t)31 b(Snac)m(k)1009 +b Ff(total)17 b Fe(:)d(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g +(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)j +Ff(316.0)p 330 4237 V 330 4355 a Fc(Items)1226 4454 y +Ff(\(a\))69 b Fd(\016)32 b Ff(Cereals)1189 b(1540.0)1223 +4554 y(\(b\))56 b Fd(\002)21 b Ff(Meats)1359 b(0.0)1228 +4654 y(\(c\))72 b Fd(\016)32 b Ff(Seafo)r(o)r(ds)1179 +b(300.0)1223 4753 y(\(d\))68 b Fd(\016)32 b Ff(Eggs)1363 +b(42.0)1228 4853 y(\(e\))72 b Fd(\016)32 b Ff(Dairy)27 +b(pro)r(ducts)988 b(36.0)1230 4952 y(\(f)6 b(\))76 b +Fd(\016)32 b Ff(Beans)1320 b(20.0)1226 5052 y(\(g\))69 +b Fd(\016)32 b Ff(P)n(otato)r(es)1220 b(40.0)1223 5152 +y(\(h\))68 b Fd(\016)32 b Ff(Green)c(v)n(egetables)962 +b(3.0)1235 5251 y(\(i\))79 b Fd(\016)32 b Ff(Other)27 +b(v)n(egetables)926 b(20.0)1234 5351 y(\(j\))78 b Fd(\016)32 +b Ff(Dry)c(go)r(o)r(ds)1202 b(0.0)1224 5451 y(\(k\))57 +b Fd(\002)21 b Ff(F)-7 b(ruits)1365 b(0.0)1235 5550 y(\(l\))79 +b Fd(\016)32 b Ff(Oils)27 b(&)h(seasonings)896 b(90.0)1212 +5650 y(\(m\))44 b Fd(\002)21 b Ff(Confectioneries)1026 +b(0.0)1809 5919 y(1)p eop +%%Page: 2 2 +2 1 bop 1223 390 a Ff(\(n\))68 b Fd(\016)32 b Ff(Drinks)1254 +b(280.0)1226 490 y(\(o\))69 b Fd(\016)32 b Ff(Miscellaneous)998 +b(105.5)p 330 572 2865 3 v 1519 689 a Fc(T)-8 b(otal)44 +b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)d +Ff(2476.5)1514 789 y Fc(Limit)1214 b Ff(2439.9)p 330 +936 2921 4 v 330 1079 4 144 v 358 1038 a Fc(W)-8 b(arning)793 +b Fa(36.6)31 b Fc(k)m(cal)825 b(Exceeded!!)p 3247 1079 +V 330 1082 2921 4 v 1809 5919 a Ff(2)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/macros/latex209/contrib/misc/calprog.sty b/macros/latex209/contrib/misc/calprog.sty new file mode 100644 index 0000000000..424aca37ad --- /dev/null +++ b/macros/latex209/contrib/misc/calprog.sty @@ -0,0 +1,102 @@ +%% Save file as: CALPROG.STY Source: FILESERV@SHSU.BITNET +%% Author: Michael Barr <barr@triples.Math.McGill.CA> +%% Original Source: Posted to INFO-TeX@SHSU.edu on Thu, 2 Jan 92 18:33:54 EST +% +%After seeing how complicated a calendar program can be, I was moved to +%fix the one I had been using. Although I haven't tested it extensively, +%I believe it gives the correct Gregorian dates from whenever the +%Gregorian began (which is different in defferent countries and in Russia +%was not until after 1917) until the year 4000 when a leap year is supposed +%to be omitted. A better correction would have been to omit leap years +%in all years divisible by 2000 and not by 6000, but this would have +%required immediate agreement and I guess that seemed too difficult. +% +%Obviously, the top line has to be edited to give the desired year. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%% Start here %%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcount\yearnum \yearnum=1992 + +\documentstyle{article} +\textwidth 7.05in \oddsidemargin-.255in +\textheight=9in \headheight =0pt \topmargin=0pt\headsep=0pt +\footheight=0pt\footskip=0pt +\pagestyle{empty}\thispagestyle{empty} + +\newcount\febdays \febdays=28 +\newcount\yearnuma +\newcount\yearnumb +\newcount\firstdate \newcount \lastdate \newcount \datenum + +\def\month#1#2#3{\initialdate{#1}{#2}% +\begin{tabular}{|rrrrrrr|} \hline +\multicolumn{7}{|c|}{#3}\\ \hline +Su&Mo&Tu&We&Th&Fr&Sa\\ \hline +\day{ 1}&\day{ 2}&\day{ 3}&\day{ 4}&\day{ 5}&\day{ 6}&\day{ 7}\\ +\day{ 8}&\day{ 9}&\day{10}&\day{11}&\day{12}&\day{13}&\day{14}\\ +\day{15}&\day{16}&\day{17}&\day{18}&\day{19}&\day{20}&\day{21}\\ +\day{22}&\day{23}&\day{24}&\day{25}&\day{26}&\day{27}&\day{28}\\ +\day{29}&\day{30}&\day{31}&\day{32}&\day{33}&\day{34}&\day{35}\\ +\day{36}&\day{37}&\day{38}&\day{39}&\day{40}&\day{41}&\day{42}\\ \hline +\end{tabular}\global\advance\firstdate by #2 +\ifnum\firstdate>35 \global\advance\firstdate by -35 + \else\global\advance \firstdate by -28 \fi} +\def\day#1{\advance \datenum by#1 + \ifnum\datenum>0 \ifnum\datenum>\lastdate\else\number\datenum \fi\fi} +\def\initialdate#1#2{\datenum=1 \advance\datenum by -#1 \lastdate=#2} +\newcount\xa\newcount\xb\newcount\xc +\newcount\ya\newcount\yb\newcount\yc\newcount\yd +\xa=0 \xb=235 {\multiply \xb by 2 \global\xc=\xb } +\yd=0 \yc=136 {\multiply \yc by 2 \global \yb=\yc } +{\multiply \yc by 3 \global \ya=\yc } + +\begin{document} +\font\gross=cminch + +\def\setup{\yearnuma=\yearnum{% +\divide\yearnuma by 100 +\multiply\yearnuma by 100 +\ifnum\yearnum=\yearnuma \divide \yearnum by 100 \fi +\ifodd\yearnum\relax +\else \divide\yearnum by 2 + \ifodd\yearnum\relax + \else \global\febdays=29 + \fi +\fi +}% +{% +\advance\yearnum by -1 +\yearnuma=\yearnum +\divide\yearnuma by 400 \multiply \yearnuma by -400 +\advance\yearnuma by \yearnum % \yearnuma=\yearnum mod 400 +\firstdate=\yearnuma +\yearnumb=\yearnuma +\divide\yearnumb by 100 \divide\yearnuma by 4 +\advance\yearnuma by -\yearnumb % correct leapyear count by centuries +\advance\firstdate by \yearnuma % add number of leapyears +\yearnuma=\firstdate +\divide\yearnuma by 7 \multiply\yearnuma by 7 +\advance\firstdate by -\yearnuma % \firstdate = #leapyears mod 7 +% Now do final correction for year 0. +\global\firstdate=\ifcase\firstdate2 \or3 \or4 \or5 \or6 \or7 \or1 \fi +}% +}% + +\setup +\begin{center}{\gross \number\yearnum }\end{center} +\unitlength.01in +\begin{picture}(705,543) +\put(\xa,\ya){\month{\firstdate}{31}{January}} +\put(\xb,\ya){\month{\firstdate}{\febdays}{February}} +\put(\xc,\ya){\month{\firstdate}{31}{March}} +\put(\xa,\yb){\month{\firstdate}{30}{April}} +\put(\xb,\yb){\month{\firstdate}{31}{May}} +\put(\xc,\yb){\month{\firstdate}{30}{June}} +\put(\xa,\yc){\month{\firstdate}{31}{July}} +\put(\xb,\yc){\month{\firstdate}{31}{August}} +\put(\xc,\yc){\month{\firstdate}{30}{September}} +\put(\xa,\yd){\month{\firstdate}{31}{October}} +\put(\xb,\yd){\month{\firstdate}{30}{November}} +\put(\xc,\yd){\month{\firstdate}{31}{December}} +\end{picture}\newpage + +\end{document}} diff --git a/macros/latex209/contrib/misc/card-set.sty b/macros/latex209/contrib/misc/card-set.sty new file mode 100644 index 0000000000..b25f713ff1 --- /dev/null +++ b/macros/latex209/contrib/misc/card-set.sty @@ -0,0 +1,288 @@ +% card.sty by R. Potu\v cek jr. March 6, 1992 % +% % +\message{Card style Version 2.04, March 6, 1992 by R. Potu\v cek jr.} % +% % +% This style allows you to print text formatted for cardfile cards. As it % +% is a problem to print on such cards anyway, the text ist formatted into % +% groups of consecutive boxes, so as to allow cutting it out and glueing % +% together to cardfiles. % +% % +% Card size can be manipulated at will and card pages will be enumerated % +% optionally and independently for each card, so as to allow texts longer % +% than one card. % +% % +% The style should work with plain \TeX\ as well es with \LaTeX. % +% % +% % +% % +% % +% If you have any suggestions, questions or comments, please e-mail (with a % +% Version number please) to: % +% % +% potucek@winx06.informatik.uni-wuerzburg.de % +% % +% ---------------------------------------------------------------------------- % +% % +% For use with \LaTeX\ use the environment `card', which expects a parameter % +% containing material supposed to be set in the header: % +% % +% \begin{card}{heading} % +% ... % +% \end{card} % +% % +% For use with plain \TeX\ÿenclose the actual text between `\card' and % +% `\endcard': % +% % +% \card{heading} % +% ... % +% \endcard % +% % +% ---------------------------------------------------------------------------- % +% % +% The text within the environment will be formatted as follows: % +% % +% +---------------------------+---------------------------+ % +% | heading page | heading page | % +% +---------------------------+---------------------------+ % +% | Text, broken into small | allow usage of all other | % +% | pages of their own, so as | \LateX\ commands. | % +% | to allow comfortable usage| | % +% | as an environment, an to | | % +% +---------------------------+---------------------------+ % +% % +% ---------------------------------------------------------------------------- % +% % +% The size of the card is set by \cardheight and \cardwidth. The distance of % +% the text from the borders is set by \cardfreespace. Pagenubers can be % +% selected by setting: % +% % +% \let\cardpageno\on % turn on pagenumbers % +% \let\cardpageno\off % turn off pagenumbers % +% % +% Before each card and between two boxes \cardfreespace will be inserted. % +% Furthermore there is a token register called `\everycard' that is executed % +% at the beginning of every card, so as to allow a general style definition % +% for every card, which then may be dependent on the environment you use. % +% % +% If you don't like empty pages to be printed, i.e. pages that have a header % +% but don't contain any text, you can suppress printing by setting: % +% % +% \let\cardprtempty\off % suppress empty pages % +% \let\cardprtempty\on % print emty pages % +% % +% ---------------------------------------------------------------------------- % +% % +% These are the parameters you may change, however you should modify them in % +% your source file rather than changing these global presets! % +% % +\edef\on{1 }\edef\off{0 } + +\let\cardpageno\on +\let\cardprtempty\on + +\newdimen\cardwidth \cardwidth74mm +\newdimen\cardheight \cardheight52mm +\newdimen\cardfreespace \cardfreespace5pt +\newdimen\cardsepamount \cardsepamount\medskipamount + +\newtoks\everycard \everycard{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Don't change anything that follows! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Allow `@' in command names; +% +\ifcat @a \def\card@atdef{1} \else \catcode`\@=11 \def\card@atdef{0} \fi + +% Declare registers needed: +% +\newdimen\card@height \card@height\cardheight +\newdimen\card@headheight \card@headheight12pt +\newdimen\card@tmpdim +\newdimen\card@ghsize +\newdimen\card@gvsize + +\newbox\card@textboxone +\newbox\card@textboxtwo +\newbox\card@pagebox +\newbox\card@strutbox + +\newtoks\origout +\newtoks\card@lhead \card@lhead={} +\newtoks\card@rhead \card@rhead={} + +\newcount\card@pagecount \card@pagecount0 +\newcount\card@lcount \card@lcount1 +\newcount\card@rcount \card@rcount2 +\newcount\card@lrf \card@lrf0 + +\def\on{1} +\def\off{0} +% Message macro for debugging: +% +\def\card@db#1#2{ + \ifnum#1<0 \message{#2} \fi +} + +% Define strut for cardhead. Default is \strut. It shouldn't be needed but +% let's make sure: +% +\def\card@strut{\strut} +\def\card@makestrut#1{ + \global\def\card@strut{\copy\card@strutbox} + \global\setbox\card@strutbox=\hbox{\vphantom{#1}} + \card@tmpdim=\ht\card@strutbox \advance\card@tmpdim 1.4pt\global\ht\card@strutbox=\card@tmpdim + \card@tmpdim=\dp\card@strutbox \advance\card@tmpdim 1.4pt\global\dp\card@strutbox=\card@tmpdim +} + +% Flush contents of \TeX's vertical list: +% +\def\card@preflush{ + \origout=\output + \card@tmpdim\vsize \vsize2\vsize + \global\setbox\card@pagebox=\vbox{} + \output={ + \card@db1{:} + \global\setbox\card@pagebox=\vbox{ + \unvbox\card@pagebox + \par\noindent\vskip\cardsepamount + \ifvbox255\unvbox255 + \else\box255\fi + } + } + \par\penalty-\@M + \output=\origout + \vsize\card@tmpdim + \ifvbox\card@pagebox \else + \global\setbox\card@pagebox=\vbox{\box\card@pagebox} + \fi +} + +% Initialize all local parameters of a card with those infos available. +% Furthermore change \output temporarily to allow page breaking within a card. +% +\def\card@init#1{ + \card@preflush + \origout=\output + \output={\card@output} + \card@ghsize\hsize + \card@gvsize\vsize + \card@makestrut{#1} + \card@lhead={#1\ifnum\on=\cardpageno\hfill\the\card@lcount\hskip\cardfreespace\else\fi} + \card@rhead={#1\ifnum\on=\cardpageno\hfill\the\card@rcount\hskip\cardfreespace\else\fi} + \global\card@headheight0pt + \global\advance\card@headheight \ht\card@strutbox + \global\advance\card@headheight \dp\card@strutbox + \global\card@tmpdim\cardheight + \global\advance\card@tmpdim -\card@headheight + \global\card@height\card@tmpdim + \global\advance\card@tmpdim -2\cardfreespace + \vsize\card@tmpdim + \global\card@tmpdim\cardwidth + \global\advance\card@tmpdim -2\cardfreespace + \hsize\card@tmpdim + \global\card@pagecount0 + \global\card@lcount1 + \global\card@rcount2 + \global\card@lrf0 + \topskip0pt + \card@db0{(} +} + +% Restore \hsize, \vsize and \output to previous values: +% +\def\card@exit{ + \global\advance\card@lrf 2 + \the\output + \hsize\card@ghsize %globa? + \vsize\card@gvsize + \output=\origout + \origout={} + \card@db0{)} +} + +% Make cardfile-card with global dimensions and {lhead}{rhead}{lbody}{rbody} +% +\def\makecard#1#2#3#4{ + \vbox to \cardheight{ + \hrule + \hbox to 2\cardwidth{\vrule + \hbox to \cardwidth{\card@strut\hskip\cardfreespace#1\hss}\hss\vrule + \hbox to \cardwidth{\card@strut\hskip\cardfreespace#2\hss}\hss\vrule} + \hrule + \hbox to 2\cardwidth{\vrule\hbox to \cardwidth{\hskip\cardfreespace + \vbox to \card@height{\vskip\cardfreespace#3\vss}\hss + \hss}\hss\vrule\hbox to \cardwidth{\hskip\cardfreespace + \vbox to \card@height{\vskip\cardfreespace#4\vss}\hss + \hss}\hss\vrule} + \vss + \hrule + } +} + +% Test whether left box contains any material +% +\newif\ifcard@page +\def\ifpage{ + \ifnum\the\card@lrf>0 \card@pagetrue % Create output + \else \card@pagefalse \fi % unless regular left + \ifnum\the\card@lrf=2 + \ifvbox\card@textboxone\else % or empty + \card@pagefalse + \fi + \ifnum\cardprtempty=\on\relax + \ifnum\the\card@lcount=1 + \card@pagetrue + \fi + \fi + \fi + \ifcard@page +} + +% Actual \output routine. This routine does not create any output. Rather it +% writes such boxes as it wishes to output into \card@pagebox, which then is +% passed to the regular output routine! +% +\def\card@output{ + \global\advance\card@pagecount 1 + \ifcase\the\card@lrf + \global\setbox\card@textboxone=\box255\global\card@lcount\card@pagecount \card@db0{ (0,<\the\card@pagecount>) } + \or \global\setbox\card@textboxtwo=\box255\global\card@rcount\card@pagecount \card@db0{ (1,<\the\card@pagecount>) } + \or \global\setbox\card@textboxone=\box255\global\card@lcount\card@pagecount \card@db0{ (2,<\the\card@pagecount>) } + \or \global\setbox\card@textboxtwo=\box255\global\card@rcount\card@pagecount \card@db0{ (3,<\the\card@pagecount>) } + \fi + \ifpage + \global\setbox\card@pagebox=\vbox{\unvbox\card@pagebox + \par\noindent\vskip\cardsepamount + \makecard{\the\card@lhead}{\the\card@rhead} + {\box\card@textboxone}{\box\card@textboxtwo} + } + \fi +% Test routines: +% \ifnum\the\card@lrf>1 \shipout\box\card@pagebox \fi % for testing only +% \ifnum\the\card@lrf>1 \shipout\copy\card@pagebox \fi % for testing only + \ifnum\the\card@lrf>0 \global\card@lrf0 \else \global\card@lrf1 \fi +} + +% The actual definition of the environment comes here, so as to allow use +% with plain \TeX\ as well: +% +\long\def\card#1{ + \begingroup + \card@db2{#1} + \card@init{#1} + \the\everycard + \par +} +\long\def\endcard{ + \vfill + \penalty-\@M + \card@exit + \unvbox\card@pagebox + \endgroup +} + +% Restore `@' to catcode `other' if needed: +% +\ifx0\card@atdef \catcode`@=12 \else \fi diff --git a/macros/latex209/contrib/misc/card.sty b/macros/latex209/contrib/misc/card.sty new file mode 100644 index 0000000000..b08f037237 --- /dev/null +++ b/macros/latex209/contrib/misc/card.sty @@ -0,0 +1,96 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Silvano Balemi", +%%% version = "1.0", +%%% date = "12-APR-1993", +%%% filename = "card.sty", +%%% address = "Automatic Control Laboratory +%%% Swiss Federal Institute of Technology (ETH) +%%% Zurich, +%%% 8092 Zurich, +%%% Switzerland", +%%% telephone = "+41 (1) 256.55.35", +%%% FAX = "+41 (1) 262.43.62", +%%% email = "balemi@aut.ee.ethz.ch (Internet)", +%%% keywords = "LaTeX, Visiting cards +%%% supported = "yes", +%%% docstring = "This is a LaTeX substyle file for producing +%%% 10 visiting cards in credit card format +%%% (european standard) on A4 pages +%%% +%%% Usage: +%%% \documentstyle[card]{article} +%%% \begin{document} +%%% \card{ +%%% \put(5,26){Name} +%%% \put(5,15){street} +%%% \put(5,10){City} +%%% \put(5,05){Tel: XXXX} +%%% } +%%% \starmarkings % default, or +%%% %% \flatmarkings % markings not on cards, or +%%% %% \nomarkings % no markings +%%% \visitingcards +%%% \end{document} +%%% } +%%% ==================================================================== + +\typeout{Document substyle 'card.sty' for creating visiting cards <12 Apr 93>} + +\def\es{} % eat space for nice formatting +\setlength{\unitlength}{1mm} +\setlength{\headheight}{0mm} +\setlength{\headsep}{0mm} +\setlength{\footheight}{0mm} +\setlength{\footskip}{0mm} +\setlength{\topmargin -12mm} +\setlength{\textheight 270mm} +\setlength{\oddsidemargin -11.3mm} +\setlength{\textwidth 177mm} +\pagestyle{empty} + +\def\card{} + +\def\visitingcard{\es +\newsavebox{\visitingbox} +\sbox{\visitingbox}{\es +\begin{picture}(85.5,54) +\card +\end{picture} +}} + +%% Create no markings. Useful when printing double-sided cards. +\def\nomarkings{\def\@markings{}} + +%% Draws the full frame around each card. Useful for designing a card. +\def\fullframe{\def\@markings{% +\multiput(0,0)(0,54){6}{\line(1,0){171}} +\multiput(0,0)(85.5,0){3}{\line(0,1){270}}}} + +%% Creates small star at all corners of all cards +\def\starmarkings{\def\@markings{% +\multiput(0,0)(0,54){6}{\makebox(0.0,0.1)[c]{{\tiny +}}} +\multiput(85.5,0)(0,54){6}{\makebox(0.0,0.1)[c]{{\tiny +}}} +\multiput(171,0)(0,54){6}{\makebox(0.0,0.1)[c]{{\tiny +}}}}} + +%% These markings are not invasive. Markings are not put on the cards. +\def\flatmarkings{\def\@markings{% +\thinlines +\multiput(0,-.5)(85.5,0){3}{\line(0,-1){5}} +\multiput(0,270.5)(85.5,0){3}{\line(0,1){5}} +\multiput(-.5,0)(0,54){6}{\line(-1,0){5}} +\multiput(171.5,0)(0,54){6}{\line(1,0){5}}}} + +%% Default markings are starmarkings +\starmarkings + +\def\visitingcards{ +\visitingcard +\begin{picture}(171,270)(0,0) + \multiput(0,0)(0,54){5}{\usebox{\visitingbox}} + \multiput(85.5,0)(0,54){5}{\usebox{\visitingbox}} + % draw markings + \@markings +\end{picture} +} + diff --git a/macros/latex209/contrib/misc/catmac-doc.tex b/macros/latex209/contrib/misc/catmac-doc.tex new file mode 100644 index 0000000000..1f4885b926 --- /dev/null +++ b/macros/latex209/contrib/misc/catmac-doc.tex @@ -0,0 +1,536 @@ +%Please reply to inhb@mcgillb.bitnet. +%For this semester only, to barr@linc.cis.upenn.edu. +%Michael Barr +%Math Dept +%McGill Univ. +%805 Sherbrooke St W +%Montreal, QC +%Canada H3P 1S4 +\documentstyle[12pt,catmac]{article} +\textheight=9in \topmargin=0pt\headheight=0pt\headsep=0pt +\textwidth=6.5in \oddsidemargin=0pt +\begin{document} +{\catcode`\ =13\global\let =\ \catcode`\^^M=13 +\gdef^^M{\par\noindent}} +\def\verbatim{\tt +\catcode`\^^M=13 +\catcode`\ =13 +\catcode`\\=12 +\catcode`\{=12 +\catcode`\}=12 +\catcode`\_=12 +\catcode`\^=12 +\catcode`\&=12 +\catcode`\~=12 +\catcode`\#=12 +\catcode`\%=12 +\catcode`\$=12 +\catcode`|=0 +} + +All commercial rights reserved. May be freely distributed +and used with the following exceptions:\\ +1. No commercial use without explicit permission.\\ +2. It may not be used by any employee of a telephone company.\\ +3. It may not be distributed without this notice. + +\def\\{{\tt \char 92}} + +\section*{The catmac macros} +The file catmac includes a number of macros for drawing commutative +diagrams in special shapes as well as more flexible macros to paste +together more complicated diagrams. + +In general, there are two kinds of macros. The first kind has the +following form +{\tt \\shapename[shape\_parameters]} and is intended to be used in the +following way: +{\verbatim +\begin{center} +\resetparms +\shapename[shape_parameters] +\end{center} +|egroup + +This will create a shape with the given parameters. It operates by +building its own picture environment. + +The second kind of procedure must be used inside a picture environment +and allows the user to put a diagram of a given size and shape at a +given place. The usual way in which this is used is: + +{\verbatim +\begin{center} +%code to be explained later +\begin{picture}(xext,yext) +\putshape1(x1,y1)[shape_parameters1] +|dots +\putshape(xn,yn)[shape_parametersn] +\end{picture} +\end{center} +|egroup + +Here is an example of the first kind of macro. I will have to explain a +few details before giving examples of the second. The code +{\verbatim +\begin{center} +\resetparms +\square[A`B`C`D;f`g`h`k] +\end{center} +|egroup +produces the diagram +\begin{center} +\resetparms +\square[A`B`C`D;f`g`h`k] +\end{center} +and the code +{\verbatim +\begin{center} +\resetparms +\Atriangle[A`B`C;f`g`h] +\end{center} +|egroup +produces the diagram +\begin{center} +\resetparms +\Atriangle[A`B`C;f`g`h] +\end{center} +The reason for the shape name will be explained later. + +If an arrow label extends especially high or low, the space +automatically expands to match. For example, +{\verbatim +\begin{center} +\resetparms +\square[A`B`C`D;\sum_{i=1}^{\infty}`g`h`\Psi^A_k] +\end{center} +|egroup +will get the diagram +\begin{center} +\resetparms +\square[A`B`C`D;\sum_{i=1}^{\infty}`g`h`\Psi^A_k] +\end{center} +and so on. + +Before going on, I will explain about the parameters. Any shape will +have one or two parameters for height and/or length as well as one +parameter for each arrow in the diagram. These are in addition to the +parameters used in the actual procedures. For example, the procedure +{\verbatim +\begin{center} +\setsqparms[-1`0`2`-3;1000`700] +\square[A`B`C`D;f`g`h`k] +\end{center} +|egroup +gives the square: +\begin{center} +\setsqparms[-1`0`2`-3;1000`700] +\square[A`B`C`D;f`g`h`k] +\end{center} +The meaning is as follows. The first four parameters refer to four +arrows in linguistic order (top, left, right, bottom). A negative +number gives a backward arrow, while a zero causes it to be omitted. A +parameter with an absolute value of 1 is ordinary, while 2 gives an +arrow with a tail (monomorphism) and 3 a double headed arrow +(epimorphism). The last two parameters determine the width and height, +respectively, in units of 0.01 em (an em is the width of an M, the +widest letter in a font). + +Although {\tt \\resetparms} works with any of the shapes (and simply +chooses +the default values of 1 for all arrows and 500 for height and width), +the remaining shapes use different names. The various parameter setting +procedures are +{\verbatim +\setsqparms[#1`#2`#3`#4;#5`#6] +\settriparms[#1`#2`#3;#4] +\settripairparms[#1`#2`#3`#4`#5;#6] +\setrecparms[#1`#2] +|egroup +With the exception of the last, the parameters before the semicolon set +the arrow types and the one or two after set lengths. In the last one, +both parameters are lengths. + +Here are the shapes. We have already seen the shape {\tt \\square}. +There are eight different triangles, all isoceles right triangles in +different orientations. The names all have the form {\tt +\\xtriangle}, where x is the letter that most closely resembles the +actual shape of the triangle. + +Here are the names, followed by a sample of each one: +\begin{list}{}{} +\item{\tt \\btriangle}\samepage +\begin{center} +\resetparms +\btriangle[A`B`C;f`g`h] +\end{center} +\pagebreak[0] +\item{\tt \\dtriangle}\samepage +\begin{center} +\resetparms +\dtriangle[A`B`C;f`g`h] +\end{center} +\pagebreak[0] +\item{\tt \\ptriangle}\samepage +\begin{center} +\resetparms +\ptriangle[A`B`C;f`g`h] +\end{center} +\pagebreak[0] +\item{\tt \\qtriangle}\samepage +\begin{center} +\resetparms +\qtriangle[A`B`C;f`g`h] +\end{center} +\pagebreak[0] +\item{\tt \\Atriangle}\samepage +\begin{center} +\resetparms +\Atriangle[A`B`C;f`g`h] +\end{center} +\pagebreak[0] +\item{\tt \\Vtriangle}\samepage +\begin{center} +\resetparms +\Vtriangle[A`B`C;f`g`h] +\end{center} +\pagebreak[0] +\item{\tt \\Ctriangle}\samepage +\begin{center} +\resetparms +\Ctriangle[A`B`C;f`g`h] +\end{center} +\pagebreak[0] +\item{\tt \\Dtriangle}\samepage +\begin{center} +\resetparms +\Dtriangle[A`B`C;f`g`h] +\end{center} +\end{list} + +In addition, there are two special diagrams that come up often enough to +be worth having a special macros for. +\begin{list}{}{} +\item{\tt \\Atrianglepair}\samepage +\begin{center} +\resetparms +\Atrianglepair[A`B`C`D;f`g`h`k`l] +\end{center} +\item{\tt \\Vtrianglepair}\samepage +\begin{center} +\resetparms +\Vtrianglepair[A`B`C`D;f`g`h`k`l] +\end{center} +\end{list} +Finally, there is one special shape that is probably not used by very +many mathematicians. Still I have it and the user might as well share +it. + +{\verbatim +\recurse[A`B`R`C;s`f_0`f`t_0`t] +|egroup +\begin{center} +\resetparms +\recurse[A`B`R`C;s`f_0`f`t_0`t] +\end{center} + +Notice what happens if the first parameter is empty: +{\verbatim +\recurse[`B`R`C;s`f_0`f`t_0`t] +|egroup +\begin{center} +\resetparms +\recurse[`B`R`C;s`f_0`f`t_0`t] +\end{center} + +This takes care of the simple procedures. The remaining procedures are +there as building blocks for more complicated diagrams. + +These take the form +\vskip0pt\noindent +{\tt \\putshape(xpos,ypos)[shape\_parameters]} +\vskip0pt\noindent +where +shape is one of the 11 shapes (excluding {\tt \\recurse}) described +above +and the parms are as described there. The parameters {\tt xpos} and +{\tt ypos} are the offsets from the lower left corner of the picture +measured in umits of .01 em in the usual \LaTeX\ fashion. + +There is one +more shape which is simply an arrow with an attached label. This is +called {\tt \\putmorphism} and it is used with the syntax +\vskip0pt\noindent +{\tt +\\putmorphism(xpos,ypos)(run,rise)[node1`node2`label]\{dist\}\{type\}\{loc\}} +\vskip0pt\noindent +Here the parameters {\tt xpos} and +{\tt ypos} are as above. The slope is {\tt rise/run} where {\tt rise} +and {\tt run} are two numbers that give the slope in accordance with the +\LaTeX\ rules. That is rise and run must have no common divisor and +must not exceed 4 in absolute value. In addition, these procedures are +defined so that rise must not be positive and if it is zero, then run +must be positive. In other words, all arrows must go in the linguistic +direction, downwards or to the right. Arrows can be made to go in the +reverse direction as explained below. + +The next three parameters are the node that appears first (in linguistic +order), the one that appears second and the arrow label. The next +paramater is the distance in the sense of \LaTeX\ between the centers of +the nodes. This means it is the horizontal component of the distance, +unless that is negative, in which case it is the vertical distance. The +second parameter is the code for the arrowtype, an integer between -3 +and 3 with the same meaning as explained above. Using negative values +of this parameter allows one to draw an arrow that goes upwards or left. +Note, however, that node1 is always the node that is above or to the +left of node2. The last parameter should have the value a,b,l,r or m. +The values a and b are used only for horizontal arrows and direct the +arrow label to be placed above or below the arrow. The values l and r +are used for all other arrows and direct the label to be left or right +of the arrow. Finally, a vertical arrow only can be given the parameter +m, in which case the arrow will be gapped and the label placed in the +middle of the gap. + +In general, the simple macros are designed to be used as indicated +either in the {\tt \\begin\{center\} \ldots \\end\{center\}} environment +or in one of the others, usually +{\verbatim +\begin{equation}\begin{array}{c} +|dots +\end{array}\end{equation}|egroup + +The \\putshape macros must be used inside a picture environment that is +normally placed inside a centering or similar environment. The +reference point for the positioning parameters is determined as the +lower left corner of the smallest rectangle with sides parallel to the +coordinate axes that includes the center points of all nodes on its +border. This rectangle will be degenerate in the case of a horizontal +or vertical morphism. The reference point may either be on or outside +the actual figure. For example, in the case of the btriangle, it is the +center of the lower left node, while for a qtriangle it is outside the +triangle itself being the fourth corner of the enclosing square. + +The macros are made so that they fit together well. That is why all +distances are from node centers to node centers. If a vertex is part of +two shapes, it is probably best not to repeat it, since it is +conceivable that round-off errors will cause its two appearances to be +slightly offset. It can either be omitted or, since the width is used +to determine the amount to shorten horizontal arrows, replaced by {\tt +\\phantom} versions. Both methods are illustrated in the example given +at the end. + +One more thing has to be described. when beginning picture mode, you +have to allocate both a horizontal and vertical space. the vertical +space is crucial and, while the horizontal is not as critical, it still +determines whether the figure is properly centered. This partially +automated as follows. You begin by giving values to two variables, +called {\tt \\xext} and {\tt\\yext} (for x-extent and y-extent, resp.). +This is done by the declarations +{\tt\\xext=xparm, \\yext=yparm}, where {\tt xparm} and {\tt yparm} are +the sum of all the horizontal and vertical distances used in the +procedures. Of course, if two shapes are put side by side, the +x-extents will be the sum plus the space between them if any, while the +y-extent will be that of the larger one. In figuring out these extents, +ignore the heights and widths of the vertices and arrow labels. So what +these really measure is the distance between the two most distantly +separated arrows in the diagram, or rather it would if none was omitted. + +These must be adjusted for the space occupied by the labels and nodes. +There are procedures to do this automatically, but they require an +assist from the user. First, there are six raw procedures that can +carry out these adjustments. They are {\verbatim \topadjust, +\botadjust, \leftadjust, \rightadjust, \leftsladjust, \rightsladjust +|egroup that take 3 parameters each and adjust {\tt\\xext} and +{\tt\\yext} for the heights and widths of the nodes. They all take as +parameters two nodes and one arrow and figure out which one stands the +highest or sticks out the furthest and makes the appropriate adjustment. +The first four can be given the nodes in either order and the arrow +label comes third. In the case of the last two, making adjustment for +slnat arrows of a triangle, the first parameter is the node that sticks +out the further, the second is the other node (which is the rarely the +determining one) and the third is the label. If it is clear that a node +or label cannot possibly be the salient one, then it may safely be +omitted. + +In practice, it is hardly ever necessary to use these procedures. There +is a single procedure called {\tt\\adjust} that is used as follows: +{\verbatim +\adjust[tnode`tlabel;lnode`llabel;rnode`rlabel;bnode`blabel] +|egroup +It is usually necessary to specify only four parameters leaving the +remainder blank. For example, if the top label is empty, then some node +(if there is more than one, always use the tallest; if in doubt use them +both concatenated). If the label is not blank, it will almost stick up +further than the node. If in doubt, give them both, but this should +rarely happen. Similar remarks apply to the other pairs of parameters. + +These adjustment procedures adjust not only {\tt\\xext} and {\tt\\yext} +but another pair of variables called {\tt\\xpos} and {\tt\\ypos}. When +this has all been done, you can now begin picture mode with +{\verbatim +\begin{picture}(\xext,\yext)(\xoff,\yoff) +|dots +\end{picture} +|egroup + +A somewhat baroque (but taken from an actual text) example illustrates +most of these points. +{\verbatim +\begin{center} +\xext=2100 \yext=2100 +\adjust[`\mu;`T\eta'T;`\sigma;`T'T\eta'] +\begin{picture}(\xext,\yext)(\xoff,\yoff) +\putmorphism(0,2100)(0,-1)[``T\eta'T]{1400}1l +\putmorphism(0,2100)(1,0)[TT`T`\mu]{700}1a +\putmorphism(0,2100)(1,-1)[`TTT'`TT\eta']{700}1l +\putmorphism(700,2100)(1,-1)[`TT'`T\eta]{700}1r +\put(700,1750){\makebox(0,0){1}} +\putmorphism(700,1420)(1,0)[\phantom{TTT'}`\phantom{TT'}`\mu + T']{700}1a +\putmorphism(700,1380)(1,0)[\phantom{TTT'}`% + \phantom{TT'}`T\sigma]{700}1b +\setsqparms[0`1`1`1;700`700] +\putsquare(700,700)[TTT'`TT'`TT'TT'`TT'T';`T\eta'TT'``] +\putmorphism(700,700)(1,0)[\phantom{TT'TT'}`% + \phantom{TT'T'}`TT'\sigma]{700}1a +\put(300,1400){\makebox(0,0){2}} +\put(950,1050){\makebox(0,0){3}} +\settriparms[0`1`0;700] +\putbtriangle(1400,700)[``TT';T\eta'T'`id`] +\putmorphism(1400,700)(1,0)[\phantom{TT'T'}`% + \phantom{TT'}`T\mu']{700}1a +\put(1600,1050){\makebox(0,0){6}} +\setsqparms[1`1`0`1;700`700] +\putsquare(0,0)[TT'T`\phantom{TT'TT'}`T'T`T'TT';% + TT'T\eta'`\sigma T``T'T\eta'] +\putmorphism(700,0)(1,0)[\phantom{T'TT'}`% + \phantom{T'T'}`T'\sigma]{700}1b +\setsqparms[0`0`1`1;700`700] +\putsquare(1400,0)[``T'T'`T';``\sigma`\mu'] +\putmorphism(700,700)(0,-1)[``\sigma TT']{700}1m +\putmorphism(1400,700)(0,-1)[``\sigma T']{700}1m +\put(300,350){\makebox(0,0){4}} +\put(1050,350){\makebox(0,0){5}} +\put(1750,350){\makebox(0,0){7}} +\end{picture} +\end{center} +|egroup +which produces +\begin{center} +\xext=2100 \yext=2100 +\adjust[`\mu;`T\eta'T;`\sigma;`T'T\eta'] +\begin{picture}(\xext,\yext)(\xoff,\yoff) +\putmorphism(0,2100)(0,-1)[``T\eta'T]{1400}1l +\putmorphism(0,2100)(1,0)[TT`T`\mu]{700}1a +\putmorphism(0,2100)(1,-1)[`TTT'`TT\eta']{700}1l +\putmorphism(700,2100)(1,-1)[`TT'`T\eta]{700}1r +\put(700,1750){\makebox(0,0){1}} +\putmorphism(700,1420)(1,0)[\phantom{TTT'}`\phantom{TT'}`\mu + T']{700}1a +\putmorphism(700,1380)(1,0)[\phantom{TTT'}`% + \phantom{TT'}`T\sigma]{700}1b +\setsqparms[0`1`1`1;700`700] +\putsquare(700,700)[TTT'`TT'`TT'TT'`TT'T';`T\eta'TT'``] +\putmorphism(700,700)(1,0)[\phantom{TT'TT'}`% + \phantom{TT'T'}`TT'\sigma]{700}1a +\put(300,1400){\makebox(0,0){2}} +\put(950,1050){\makebox(0,0){3}} +\settriparms[0`1`0;700] +\putbtriangle(1400,700)[``TT';T\eta'T'`id`] +\putmorphism(1400,700)(1,0)[\phantom{TT'T'}`% + \phantom{TT'}`T\mu']{700}1a +\put(1600,1050){\makebox(0,0){6}} +\setsqparms[1`1`0`1;700`700] +\putsquare(0,0)[TT'T`\phantom{TT'TT'}`T'T`T'TT';% + TT'T\eta'`\sigma T``T'T\eta'] +\putmorphism(700,0)(1,0)[\phantom{T'TT'}`% + \phantom{T'T'}`T'\sigma]{700}1b +\setsqparms[0`0`1`1;700`700] +\putsquare(1400,0)[``T'T'`T';``\sigma`\mu'] +\putmorphism(700,700)(0,-1)[``\sigma TT']{700}1m +\putmorphism(1400,700)(0,-1)[``\sigma T']{700}1m +\put(300,350){\makebox(0,0){4}} +\put(1050,350){\makebox(0,0){5}} +\put(1750,350){\makebox(0,0){7}} +\end{picture} +\end{center} + +Here is a page of samples of the results from the various +{\tt\\putshapes}. The code +{\verbatim +\begin{center} +\xext=3000 \yext=3500 +\begin{picture}(\xext,\yext)(\xoff,\yoff) +\resetparms +\putsquare(0,0)[A`B`C`D;f`g`h`k] +\putbtriangle(0,1500)[A`B`C;f`g`h] +\putdtriangle(2200,1500)[A`B`C;f`g`h] +\putptriangle(0,3000)[A`B`C;f`g`h] +\putqtriangle(1000,500)[A`B`C;f`g`h] +\putCtriangle(1500,750)[A`B`C;f`g`h] +\putDtriangle(700,1000)[A`B`C;f`g`h] +\putAtriangle(2000,2200)[A`B`C;f`g`h] +\putAtrianglepair(0,2500)[A`B`C`D;f`g`h`k`l] +\putVtriangle(2000,3000)[A`B`C;f`g`h] +\putVtrianglepair(1000,2500)[A`B`C`D;f`g`h`k`l] +\end{picture} +\end{center} +|egroup +produces the diagram: +\begin{center} +\xext=3000 \yext=3500 +\begin{picture}(\xext,\yext)(\xoff,\yoff) +\resetparms +\putsquare(0,0)[A`B`C`D;f`g`h`k] +\putbtriangle(0,1500)[A`B`C;f`g`h] +\putdtriangle(2200,1500)[A`B`C;f`g`h] +\putptriangle(0,3000)[A`B`C;f`g`h] +\putqtriangle(1000,500)[A`B`C;f`g`h] +\putCtriangle(1500,750)[A`B`C;f`g`h] +\putDtriangle(700,1000)[A`B`C;f`g`h] +\putAtriangle(2000,2200)[A`B`C;f`g`h] +\putAtrianglepair(0,2500)[A`B`C`D;f`g`h`k`l] +\putVtriangle(2000,3000)[A`B`C;f`g`h] +\putVtrianglepair(1000,2500)[A`B`C`D;f`g`h`k`l] +\end{picture} +\end{center} + + +Added material: + +The catdoc file is out-of-date in two ways. Most important is that all +the basic shapes (square and triangles) now accept optional arguments. +For example, the code +{\verbatim +\resetparms\square[A`B`C`D;f`g`h`k] +|egroup +is equivalent to simply +{\verbatim +|egroup +\square[A`B`C`D;f`g`h`k] +The code +{\verbatim +\settriparms[1`-1`2;750]\ptriangle[A`B`C;f`g`h] +|egroup +is equivalent to +{\verbatim +\ptriangle<1`-1`2;750>[A`B`C;f`g`h] +|egroup +and the code +{\verbatim +\settripairparms[1`-1`0`2`-3;1000] +\putAtrianglepair(500,750)[A`B`C`D;f`g`h`k`l] +|egroup +is equivalent to +{\verbatim +\putAtrianglepair<1`-1`0`2`-3;1000>(500,750)[A`B`C`D;f`g`h`k`l] +|egroup +Note that both the old and new syntax work. + +The second new things are various shapes that I have found useful enough +to add over the last few months. For example, I have both vertical and +horizontal coequalizers. Had I had the need, I would have added +equalizers, and no doubt will at some future date. Or maybe you will +and can send it to me. These can all be found by reading the source +file, where they are sort of documented. +\end{document} diff --git a/macros/latex209/contrib/misc/catmac.sty b/macros/latex209/contrib/misc/catmac.sty new file mode 100644 index 0000000000..43a36455b2 --- /dev/null +++ b/macros/latex209/contrib/misc/catmac.sty @@ -0,0 +1,1013 @@ +% This should appear in a file named catmac.sty +% Copyright 1988,1989 Michael Barr +% Department of Mathematics and Statistics +% McGill University +% 805 Sherbrooke St., W +% Montreal, Quebec, Canada +% H3P 1S4 +% +% inhb@mcgillb.bitnet +% +% All commercial rights reserved. May be freely distributed +% and used with the following exceptions: +% 1. No commercial use without explicit permission. +% 2. It may not be used by any employee of a telephone +% company. +% 3. It may not be distributed without this notice. +% +% Last revised 89-12-11 + + +\newcount \coefa +\newcount \coefb +\newcount \coefc +\newcount\tempcounta +\newcount\tempcountb +\newcount\tempcountc +\newcount\tempcountd +\newcount\xext +\newcount\yext +\newcount\xoff +\newcount\yoff +\newcount\gap% +\newcount\arrowtypea +\newcount\arrowtypeb +\newcount\arrowtypec +\newcount\arrowtyped +\newcount\arrowtypee +\newcount\height +\newcount\width +\newcount\xpos +\newcount\ypos +\newcount\run +\newcount\rise +\newcount\arrowlength +\newcount\halflength +\newcount\arrowtype +\newdimen\tempdimen +\newdimen\xlen +\newdimen\ylen +\newsavebox{\tempboxa}% +\newsavebox{\tempboxb}% +\newsavebox{\tempboxc}% + + +\newcount \repetitions +\def\repto#1{% +\mathrel{ +\hbox{$ +\repetitions=0% +\loop\ifnum\repetitions<#1% + \advance \repetitions by 1% + \relbar\joinrel +\repeat +\rightarrow +$}}} +\def\to{\repto0} +\def\To{\repto1} +\def\two{\reptwo0} +\def\Two{\reptwo1} +\def\tofro{\mathrel{\vcenter{\hbox{\oalign +{$\longrightarrow$\crcr$\longleftarrow$}}}}} + +\def\epi{\mathrel{\mathchar"221\mkern -12mu\mathchar"221}} +\def\leftepi{\mathrel{\mathchar"220\mkern -12mu\mathchar"220}} +\def\mon{\mathrel{\m@th\hbox to + 14.6pt{\lasyb\char'51\hskip-2.1pt$\arrext$\hss +$\mathord\rightarrow$}}} % width of \epi +\def\leftmono{\mathrel{\m@th\hbox to +14.6pt{$\mathord\leftarrow$\hss$\arrext$\hskip-2.1pt\lasyb\char'50% +}}} % width of \epi +\font\lasyb=lasyb10 scaled \magstephalf % for \mon +\mathchardef\arrext="0200 % amr minus for arrow extension (see \into) + + +\setlength{\unitlength}{.01em}% +\def\settypes(#1,#2,#3){\arrowtypea#1 \arrowtypeb#2 \arrowtypec#3} +\def\settoheight#1#2{\setbox\@tempboxa\hbox{#2}#1\ht\@tempboxa\relax}% +\def\settodepth#1#2{\setbox\@tempboxa\hbox{#2}#1\dp\@tempboxa\relax}% +\def\settokens[#1`#2`#3`#4]{% + \def\tokena{#1}\def\tokenb{#2}\def\tokenc{#3}\def\tokend{#4}} +\def\setsqparms[#1`#2`#3`#4;#5`#6]{% +\arrowtypea #1 +\arrowtypeb #2 +\arrowtypec #3 +\arrowtyped #4 +\width #5 +\height #6 +} +\def\setpos(#1,#2){\xpos=#1 \ypos#2} + +\def\bfig{\begin{picture}(\xext,\yext)(\xoff,\yoff)} +\def\efig{\end{picture}} + +\def\putbox(#1,#2)#3{\put(#1,#2){\makebox(0,0){$#3$}}} + +\def\settriparms[#1`#2`#3;#4]{\settripairparms[#1`#2`#3`1`1;#4]}% + +\def\settripairparms[#1`#2`#3`#4`#5;#6]{% +\arrowtypea #1 +\arrowtypeb #2 +\arrowtypec #3 +\arrowtyped #4 +\arrowtypee #5 +\width #6 +\height #6 +} + +\def\resetparms{\settripairparms[1`1`1`1`1;500]\width 500}%default values% + +\resetparms + +\def\mvector(#1,#2)#3{%% +\put(0,0){\vector(#1,#2){#3}}% +\put(0,0){\vector(#1,#2){30}}% +} +\def\evector(#1,#2)#3{{%% +\arrowlength #3 +\put(0,0){\vector(#1,#2){\arrowlength}}% +\advance \arrowlength by-30 +\put(0,0){\vector(#1,#2){\arrowlength}}% +}} + +\def\horsize#1#2{% +\settowidth{\tempdimen}{$#2$}% +#1=\tempdimen +\divide #1 by\unitlength +} + +\def\vertsize#1#2{% +\settoheight{\tempdimen}{$#2$}% +#1=\tempdimen +\settodepth{\tempdimen}{$#2$}% +\advance #1 by\tempdimen +\divide #1 by\unitlength +} + +\def\vertadjust[#1`#2`#3]{% +\vertsize{\tempcounta}{#1}% +\vertsize{\tempcountb}{#2}% +\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi +\divide\tempcounta by2 +\vertsize{\tempcountb}{#3}% +\ifnum \tempcountb>0 \advance \tempcountb by20 \fi +\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi +} + +\def\horadjust[#1`#2`#3]{% +\horsize{\tempcounta}{#1}% +\horsize{\tempcountb}{#2}% +\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi +\divide\tempcounta by20 +\horsize{\tempcountb}{#3}% +\ifnum \tempcountb>0 \advance \tempcountb by60 \fi +\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi +} + +% In this procedure, #1 is the paramater that sticks out all the way, +% #2 sticks out the least and #3 is a label sticking out half way. #4 is +% the amount of the offset. + +\def\sladjust[#1`#2`#3]#4{% +\tempcountc=#4 +\horsize{\tempcounta}{#1}% +\divide \tempcounta by2 +\horsize{\tempcountb}{#2}% +\divide \tempcountb by2 +\advance \tempcountb by-\tempcountc +\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb\fi +\divide \tempcountc by2 +\horsize{\tempcountb}{#3}% +\advance \tempcountb by-\tempcountc +\ifnum \tempcountb>0 \advance \tempcountb by80\fi +\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb\fi +\advance\tempcounta by20 +} + +\def\putvector(#1,#2)(#3,#4)#5#6{{% +\xpos=#1 +\ypos=#2 +\run=#3 +\rise=#4 +\arrowlength=#5 +\arrowtype=#6 +\ifnum \arrowtype<0 + \ifnum \run=0 + \advance \ypos by-\arrowlength + \else + \tempcounta \arrowlength + \multiply \tempcounta by\rise + \divide \tempcounta by\run + \ifnum\run>0 + \advance \xpos by\arrowlength + \advance \ypos by\tempcounta + \else + \advance \xpos by-\arrowlength + \advance \ypos by-\tempcounta + \fi + \fi + \multiply \arrowtype by-1 + \multiply \rise by-1 + \multiply \run by-1 +\fi +\ifnum \arrowtype=1 + \put(\xpos,\ypos){\vector(\run,\rise){\arrowlength}}% +\else\ifnum \arrowtype=2 + \put(\xpos,\ypos){\mvector(\run,\rise)\arrowlength}% +\else\ifnum\arrowtype=3 + \put(\xpos,\ypos){\evector(\run,\rise){\arrowlength}}% +\fi\fi\fi +}} + +\def\putsplitvector(#1,#2)#3#4{%% +\xpos #1 +\ypos #2 +\arrowtype #4 +\halflength #3 +\arrowlength #3 +\gap 140 +\advance \halflength by-\gap +\divide \halflength by2 +\ifnum \arrowtype=1 + \put(\xpos,\ypos){\line(0,-1){\halflength}}% + \advance\ypos by-\halflength + \advance\ypos by-\gap + \put(\xpos,\ypos){\vector(0,-1){\halflength}}% +\else\ifnum \arrowtype=2 + \put(\xpos,\ypos){\line(0,-1)\halflength}% + \put(\xpos,\ypos){\vector(0,-1)3}% + \advance\ypos by-\halflength + \advance\ypos by-\gap + \put(\xpos,\ypos){\vector(0,-1){\halflength}}% +\else\ifnum\arrowtype=3 + \put(\xpos,\ypos){\line(0,-1)\halflength}% + \advance\ypos by-\halflength + \advance\ypos by-\gap + \put(\xpos,\ypos){\evector(0,-1){\halflength}}% +\else\ifnum \arrowtype=-1 + \advance \ypos by-\arrowlength + \put(\xpos,\ypos){\line(0,1){\halflength}}% + \advance\ypos by\halflength + \advance\ypos by\gap + \put(\xpos,\ypos){\vector(0,1){\halflength}}% +\else\ifnum \arrowtype=-2 + \advance \ypos by-\arrowlength + \put(\xpos,\ypos){\line(0,1)\halflength}% + \put(\xpos,\ypos){\vector(0,1)3}% + \advance\ypos by\halflength + \advance\ypos by\gap + \put(\xpos,\ypos){\vector(0,1){\halflength}}% +\else\ifnum\arrowtype=-3 + \advance \ypos by-\arrowlength + \put(\xpos,\ypos){\line(0,1)\halflength}% + \advance\ypos by\halflength + \advance\ypos by\gap + \put(\xpos,\ypos){\evector(0,1){\halflength}}% +\fi\fi\fi\fi\fi\fi +} + +\def\putmorphism(#1)(#2,#3)[#4`#5`#6]#7#8#9{{% +\run #2 +\rise #3 +\ifnum\rise=0 + \puthmorphism(#1)[#4`#5`#6]{#7}{#8}{#9}% +\else\ifnum\run=0 + \putvmorphism(#1)[#4`#5`#6]{#7}{#8}{#9}% +\else +\setpos(#1)% +\arrowlength #7 +\arrowtype #8 +\ifnum\run=0 +\else\ifnum\rise=0 +\else +\ifnum\run>0 + \coefa=1 +\else + \coefa=-1 +\fi +\ifnum\arrowtype>0 + \coefb=0 + \coefc=-1 +\else + \coefb=\coefa + \coefc=1 + \arrowtype=-\arrowtype +\fi +\width=2 +\multiply \width by\run +\divide \width by\rise +\ifnum \width<0 \width=-\width\fi +\advance\width by60 +\if l#9 \width=-\width\fi +\putbox(\xpos,\ypos){#4}% %node 1 +{\multiply \coefa by\arrowlength% %node 2 +\advance\xpos by\coefa +\multiply \coefa by\rise +\divide \coefa by\run +\advance \ypos by\coefa +\putbox(\xpos,\ypos){#5} }% +{\multiply \coefa by\arrowlength% %label +\divide \coefa by2 +\advance \xpos by\coefa +\advance \xpos by\width +\multiply \coefa by\rise +\divide \coefa by\run +\advance \ypos by\coefa +\if l#9% + \put(\xpos,\ypos){\makebox(0,0)[r]{$#6$}}% +\else\if r#9% + \put(\xpos,\ypos){\makebox(0,0)[l]{$#6$}}% +\fi\fi }% +{\multiply \rise by-\coefc% %arrow +\multiply \run by-\coefc +\multiply \coefb by\arrowlength +\advance \xpos by\coefb +\multiply \coefb by\rise +\divide \coefb by\run +\advance \ypos by\coefb +\multiply \coefc by70 +\advance \ypos by\coefc +\multiply \coefc by\run +\divide \coefc by\rise +\advance \xpos by\coefc +\multiply \coefa by140 +\multiply \coefa by\run +\divide \coefa by\rise +\advance \arrowlength by\coefa +\ifnum \arrowtype=1 + \put(\xpos,\ypos){\vector(\run,\rise){\arrowlength}}% +\else\ifnum\arrowtype=2 + \put(\xpos,\ypos){\mvector(\run,\rise){\arrowlength}}% +\else\ifnum\arrowtype=3 + \put(\xpos,\ypos){\evector(\run,\rise){\arrowlength}}% +\fi\fi\fi}\fi\fi\fi\fi}} + +\def\puthmorphism(#1,#2)[#3`#4`#5]#6#7#8{{% +\xpos #1 +\ypos #2 +\width #6 +\arrowlength #6 +\putbox(\xpos,\ypos){#3\vphantom{#4}}% +{\advance \xpos by\arrowlength +\putbox(\xpos,\ypos){\vphantom{#3}#4}}% +\horsize{\tempcounta}{#3}% +\horsize{\tempcountb}{#4}% +\divide \tempcounta by2 +\divide \tempcountb by2 +\advance \tempcounta by30 +\advance \tempcountb by30 +\advance \xpos by\tempcounta +\advance \arrowlength by-\tempcounta +\advance \arrowlength by-\tempcountb +\putvector(\xpos,\ypos)(1,0){\arrowlength}{#7}% +\divide \arrowlength by2 +\advance \xpos by\arrowlength +\vertsize{\tempcounta}{#5}% +\divide\tempcounta by2 +\advance \tempcounta by20 +\if a#8 % + \advance \ypos by\tempcounta + \putbox(\xpos,\ypos){#5}% +\else + \advance \ypos by-\tempcounta + \putbox(\xpos,\ypos){#5}% +\fi}} + +\def\putvmorphism(#1,#2)[#3`#4`#5]#6#7#8{{% +\xpos #1 +\ypos #2 +\arrowlength #6 +\arrowtype #7 +\settowidth{\xlen}{$#5$}% +\putbox(\xpos,\ypos){#3}% +{\advance \ypos by-\arrowlength +\putbox(\xpos,\ypos){#4}}% +{\advance\arrowlength by-140 +\advance \ypos by-70 +\ifdim\xlen>0pt + \if m#8% + \putsplitvector(\xpos,\ypos){\arrowlength}{\arrowtype}% + \else + \putvector(\xpos,\ypos)(0,-1){\arrowlength}{\arrowtype}% + \fi +\else + \putvector(\xpos,\ypos)(0,-1){\arrowlength}{\arrowtype}% +\fi}% +\ifdim\xlen>0pt + \divide \arrowlength by2 + \advance\ypos by-\arrowlength + \if l#8% + \advance \xpos by-40 + \put(\xpos,\ypos){\makebox(0,0)[r]{$#5$}}% + \else\if r#8% + \advance \xpos by40 + \put(\xpos,\ypos){\makebox(0,0)[l]{$#5$}}% + \else + \putbox(\xpos,\ypos){#5}% + \fi\fi +\fi +}} + +\def\topadjust[#1`#2`#3]{% +\yoff=10 +\vertadjust[#1`#2`{#3}]% +\advance \yext by\tempcounta +\advance \yext by 10 +} +\def\botadjust[#1`#2`#3]{% +\vertadjust[#1`#2`{#3}]% +\advance \yext by\tempcounta +\advance \yoff by-\tempcounta +} +\def\leftadjust[#1`#2`#3]{% +\xoff=0 +\horadjust[#1`#2`{#3}]% +\advance \xext by\tempcounta +\advance \xoff by-\tempcounta +} +\def\rightadjust[#1`#2`#3]{% +\horadjust[#1`#2`{#3}]% +\advance \xext by\tempcounta +} +\def\rightsladjust[#1`#2`#3]{% +\sladjust[#1`#2`{#3}]{\width}% +\advance \xext by\tempcounta +} +\def\leftsladjust[#1`#2`#3]{% +\xoff=0 +\sladjust[#1`#2`{#3}]{\width}% +\advance \xext by\tempcounta +\advance \xoff by-\tempcounta +} +\def\adjust[#1`#2;#3`#4;#5`#6;#7`#8]{% +\topadjust[#1``{#2}] +\leftadjust[#3``{#4}] +\rightadjust[#5``{#6}] +\botadjust[#7``{#8}]} + +\def\putsquarep<#1>(#2)[#3;#4`#5`#6`#7]{{% +\setsqparms[#1]% +\setpos(#2)% +\settokens[#3]% +\puthmorphism(\xpos,\ypos)[\tokenc`\tokend`{#7}]{\width}{\arrowtyped}b% +\advance\ypos by \height +\puthmorphism(\xpos,\ypos)[\tokena`\tokenb`{#4}]{\width}{\arrowtypea}a% +\putvmorphism(\xpos,\ypos)[``{#5}]{\height}{\arrowtypeb}l% +\advance\xpos by \width +\putvmorphism(\xpos,\ypos)[``{#6}]{\height}{\arrowtypec}r% +}} + +\def\putsquare{\@ifnextchar <{\putsquarep}{\putsquarep% + <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>}} +\def\square{\@ifnextchar< {\squarep}{\squarep + <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>}} + % #6 +\def\squarep<#1>[#2`#3`#4`#5;#6`#7`#8`#9]{{% % #2------>#3 +\setsqparms[#1]% % | | +\xext=\width % | | +\yext=\height % #7| |#8 +\topadjust[#2`#3`{#6}]% % | | +\botadjust[#4`#5`{#9}]% % | | +\leftadjust[#2`#4`{#7}]% % v v +\rightadjust[#3`#5`{#8}]% % #4------>#5 +\begin{picture}(\xext,\yext)(\xoff,\yoff)% #9 +\putsquarep<\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>% +(0,0)[#2`#3`#4`#5;#6`#7`#8`{#9}]% +\end{picture}% +}} + +\def\putptrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +\advance\ypos by \height +\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a% +\putvmorphism(\xpos,\ypos)[`#6`{#8}]{\height}{\arrowtypeb}l% +\advance\xpos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r% +}} + +\def\putptriangle{\@ifnextchar <{\putptrianglep}{\putptrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\ptriangle{\@ifnextchar <{\ptrianglep}{\ptrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\ptrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% #5 +\settriparms[#1]% +\width=\height % #2----->#3 +\xext=\width % | / +\yext=\width % | / +\topadjust[#2`#3`{#5}]% % #6| /#7 +\botadjust[#3``]% % | / +\leftadjust[#2`#4`{#6}]% % | / +\rightsladjust[#3`#4`{#7}]% % v v +\begin{picture}(\xext,\yext)(\xoff,\yoff)% #4 +\putptrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\putqtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +\advance\ypos by\height +\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a% +\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}l% +\advance\xpos by\height +\putvmorphism(\xpos,\ypos)[`#6`{#9}]{\height}{\arrowtypec}r% +}} + +\def\putqtriangle{\@ifnextchar <{\putqtrianglep}{\putqtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\qtriangle{\@ifnextchar <{\qtrianglep}{\qtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\qtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% +\settriparms[#1]% #5 +\width=\height % #2----->#3 +\xext=\width % \ | +\yext=\height % \ | +\topadjust[#2`#3`{#5}]% % #6\ |#7 +\botadjust[#4``]% % \ | +\leftsladjust[#2`#4`{#6}]% % \ | +\rightadjust[#3`#4`{#7}]% % v v +\begin{picture}(\xext,\yext)(\xoff,\yoff)% #4 +\putqtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\putdtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b% +\advance\xpos by \height \advance\ypos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[``{#7}]{\height}{\arrowtypea}l% +\putvmorphism(\xpos,\ypos)[#4``{#8}]{\height}{\arrowtypeb}r% +}} + +\def\putdtriangle{\@ifnextchar <{\putdtrianglep}{\putdtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\dtriangle{\@ifnextchar <{\dtrianglep}{\dtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\dtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% +\settriparms[#1]% #2 +\width=\height % / | +\xext=\width % / | +\yext=\height % #5/ |#6 +\topadjust[#2``]% % / | +\botadjust[#3`#4`{#7}]% % / | +\leftsladjust[#3`#2`{#5}]% % v v +\rightadjust[#2`#4`{#6}]% % #3----->#4 +\begin{picture}(\xext,\yext)(\xoff,\yoff)% #7 +\putdtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\putbtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b% +\advance\ypos by\height +\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}r% +\putvmorphism(\xpos,\ypos)[#4``{#7}]{\height}{\arrowtypea}l% +}} + +\def\putbtriangle{\@ifnextchar <{\putbtrianglep}{\putbtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\btriangle{\@ifnextchar <{\btrianglep}{\btrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\btrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% +\settriparms[#1]% #2 +\width=\height % | \ +\xext=\width % | \ +\yext=\height % #5| \#6 +\topadjust[#2``]% % | \ +\botadjust[#3`#4`{#7}]% % | \ +\leftadjust[#2`#3`{#5}]% % v v +\rightsladjust[#4`#2`{#6}]% % #3----->#4 +\begin{picture}(\xext,\yext)(\xoff,\yoff)% #7 +\putbtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\putAtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +{\multiply \height by2 +\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b}% +\advance\xpos by\height \advance\ypos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[#4``{#7}]{\height}{\arrowtypea}l% +\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}r% +}} + +\def\putAtriangle{\@ifnextchar <{\putAtrianglep}{\putAtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\Atriangle{\@ifnextchar <{\Atrianglep}{\Atrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\Atrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% +\settriparms[#1]% #2 +\width=\height % / \ +\xext=\width % / \ +\yext=\height % #5/ \#6 +\topadjust[#2``]% % / \ +\botadjust[#3`#4`{#7}]% % / \ +\multiply \xext by2 % % v v +\leftsladjust[#3`#2`{#5}]% % #3------------>#4 +\rightsladjust[#4`#2`{#6}]% % #7 +\begin{picture}(\xext,\yext)(\xoff,\yoff)% +\putAtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\putAtrianglepairp<#1>(#2)[#3;#4`#5`#6`#7`#8]{{% +\settripairparms[#1]% +\setpos(#2)% +\settokens[#3]% +\puthmorphism(\xpos,\ypos)[\tokenb`\tokenc`{#7}]{\height}{\arrowtyped}b% +\advance\xpos by\height +\advance\ypos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[\tokena``{#4}]{\height}{\arrowtypea}l% +\putvmorphism(\xpos,\ypos)[``{#5}]{\height}{\arrowtypeb}m% +\putmorphism(\xpos,\ypos)(1,-1)[``{#6}]{\height}{\arrowtypec}r% +}} + +\def\putAtrianglepair{\@ifnextchar <{\putAtrianglepairp}{\putAtrianglepairp% + <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} +\def\Atrianglepair{\@ifnextchar <{\Atrianglepairp}{\Atrianglepairp% + <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} + +\def\Atrianglepairp<#1>[#2;#3`#4`#5`#6`#7]{{% +\settripairparms[#1]% +\settokens[#2]% +\width=\height +\xext=\width +\yext=\height +\topadjust[\tokena``]% +\vertadjust[\tokenb`\tokenc`{#6}]% % #2a +\tempcountd=\tempcounta % / | \ +\vertadjust[\tokenc`\tokend`{#7}]% % / | \ +\ifnum\tempcounta<\tempcountd % #3/ #4 \#5 +\tempcounta=\tempcountd\fi % / | \ +\advance \yext by\tempcounta % / | \ +\advance \yoff by-\tempcounta % v v v +\multiply \xext by2 % % #2b---->#2c---->#2d +\leftsladjust[\tokenb`\tokena`{#3}]% % #6 #7 +\rightsladjust[\tokend`\tokena`{#5}]% +\begin{picture}(\xext,\yext)(\xoff,\yoff)% +\putAtrianglepairp +<\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>% +(0,0)[#2;#3`#4`#5`#6`{#7}]% +\end{picture}% +}} + +\def\putVtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +\advance\ypos by\height +{\multiply\height by2 +\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a}% +\putmorphism(\xpos,\ypos)(1,-1)[`#6`{#8}]{\height}{\arrowtypeb}l% +\advance\xpos by\height +\advance\xpos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r% +}} + +\def\putVtriangle{\@ifnextchar <{\putVtrianglep}{\putVtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\Vtriangle{\@ifnextchar <{\Vtrianglep}{\Vtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\Vtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% +\settriparms[#1]% #5 +\width=\height % #2------------->#3 +\xext=\width % \ / +\yext=\height % \ / +\topadjust[#2`#3`{#5}]% % #6\ /#7 +\botadjust[#4``]% % \ / +\multiply \xext by2 % % \ / +\leftsladjust[#2`#3`{#6}]% % v v +\rightsladjust[#3`#4`{#7}]% % #4 +\begin{picture}(\xext,\yext)(\xoff,\yoff)% +\putVtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\putVtrianglepairp<#1>(#2)[#3;#4`#5`#6`#7`#8]{{ +\settripairparms[#1]% +\setpos(#2)% +\settokens[#3]% +\advance\ypos by\height +\putmorphism(\xpos,\ypos)(1,-1)[`\tokend`{#6}]{\height}{\arrowtypec}l% +\puthmorphism(\xpos,\ypos)[\tokena`\tokenb`{#4}]{\height}{\arrowtypea}a% +\advance\xpos by\height +\putvmorphism(\xpos,\ypos)[``{#7}]{\height}{\arrowtyped}m% +\advance\xpos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[``{#8}]{\height}{\arrowtypee}r% +}} + +\def\putVtrianglepair{\@ifnextchar <{\putVtrianglepairp}{\putVtrianglepairp% + <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} +\def\Vtrianglepair{\@ifnextchar <{\Vtrianglepairp}{\Vtrianglepairp% + <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} + +\def\Vtrianglepairp<#1>[#2;#3`#4`#5`#6`#7]{{% +\settripairparms[#1]% +\settokens[#2]% #3 #4 +\xext=\height % #2a---->#2b---->#2c +\width=\height % \ | / +\yext=\height % \ | / +\vertadjust[\tokena`\tokenb`{#4}]% #5\ #6 /#7 +\tempcountd=\tempcounta % \ | / +\vertadjust[\tokenb`\tokenc`{#5}]% \ | / +\ifnum\tempcounta<\tempcountd% v v v +\tempcounta=\tempcountd\fi% #2d +\advance \yext by\tempcounta +\botadjust[\tokend``]% +\multiply \xext by2 +\leftsladjust[\tokena`\tokend`{#6}]% +\rightsladjust[\tokenc`\tokend`{#7}]% +\begin{picture}(\xext,\yext)(\xoff,\yoff)% +\putVtrianglepairp +<\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>% +(0,0)[#2;#3`#4`#5`#6`{#7}]% +\end{picture}% +}} + + +\def\putCtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +\advance\ypos by\height +\putmorphism(\xpos,\ypos)(1,-1)[``{#9}]{\height}{\arrowtypec}l% +\advance\xpos by\height +\advance\ypos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[#4`#5`{#7}]{\height}{\arrowtypea}l% +{\multiply\height by 2 +\putvmorphism(\xpos,\ypos)[`#6`{#8}]{\height}{\arrowtypeb}r}% +}} + +\def\putCtriangle{\@ifnextchar <{\putCtrianglep}{\putCtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\Ctriangle{\@ifnextchar <{\Ctrianglep}{\Ctrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\Ctrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% +\settriparms[#1]% #2 +\width=\height % / | +\xext=\width % / | +\yext=\height % #5/ | +\multiply \yext by2 % % / | +\topadjust[#2``]% % / | +\botadjust[#4``]% % v | +\sladjust[#3`#2`{#5}]{\width}% % #3 |#6 +\tempcountd=\tempcounta % \ | +\sladjust[#3`#4`{#7}]{\width}% % \ | +\ifnum \tempcounta<\tempcountd % #7\ | +\tempcounta=\tempcountd\fi % \ | +\advance \xext by\tempcounta % \ | +\advance \xoff by-\tempcounta % v v +\rightadjust[#2`#4`{#6}]% % #4 +\begin{picture}(\xext,\yext)(\xoff,\yoff)% +\putCtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\putDtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% +\settriparms[#1]% +\xpos=#2 \ypos=#3 +\advance\xpos by\height \advance\ypos by\height +\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r% +\advance\xpos by-\height \advance\ypos by\height +\putmorphism(\xpos,\ypos)(1,-1)[`#5`{#8}]{\height}{\arrowtypeb}r% +{\multiply\height by 2 +\putvmorphism(\xpos,\ypos)[#4`#6`{#7}]{\height}{\arrowtypea}l}% +}} + +\def\putDtriangle{\@ifnextchar <{\putDtrianglep}{\putDtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} +\def\Dtriangle{\@ifnextchar <{\Dtrianglep}{\Dtrianglep + <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} + +\def\Dtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% +\settriparms[#1]% #2 +\width=\height % | \ +\xext=\height % | \ +\yext=\height % | \#6 +\multiply \yext by2 % % | \ +\topadjust[#2``]% % | \ +\botadjust[#4``]% % | v +\leftadjust[#2`#4`{#5}]% % #5| #3 +\sladjust[#3`#2`{#5}]{\height}% % | / +\tempcountd=\tempcountd % | / +\sladjust[#3`#4`{#7}]{\height}% % | /#7 +\ifnum \tempcounta<\tempcountd % | / +\tempcounta=\tempcountd\fi % | / +\advance \xext by\tempcounta % v v +\begin{picture}(\xext,\yext)(\xoff,\yoff)% #4 +\putDtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>% +(0,0)[#2`#3`#4;#5`#6`{#7}]% +\end{picture}% +}} + +\def\setrecparms[#1`#2]{\width=#1 \height=#2}% +% #4 +% #3b<-------#3a x #3b +% ^ | | +% / | | +% #5/ | | +% / | | +% / | | +% / | | +% #3c |#6 |#3a x #5 +% \ | | +% \ | | +% #8\ | | +% \ | | +% \ | | +% v v v +% #3d<-------#3a x #3d +% #8 + +\def\recursep<#1`#2>[#3;#4`#5`#6`#7`#8]{{% +\width=#1 \height=#2 +\settokens[#3] +\settowidth{\tempdimen}{$\tokena$} +\ifdim\tempdimen=0pt + \savebox{\tempboxa}{\hbox{$\tokenb$}}% + \savebox{\tempboxb}{\hbox{$\tokend$}}% + \savebox{\tempboxc}{\hbox{$#6$}}% +\else + \savebox{\tempboxa}{\hbox{$\hbox{$\tokena$}\times\hbox{$\tokenb$}$}}% + \savebox{\tempboxb}{\hbox{$\hbox{$\tokena$}\times\hbox{$\tokend$}$}}% + \savebox{\tempboxc}{\hbox{$\hbox{$\tokena$}\times\hbox{$#6$}$}}% +\fi +\ypos=\height +\divide\ypos by 2 +\xpos=\ypos +\advance\xpos by \width +\xext=\xpos \yext=\height +\topadjust[#3`\usebox{\tempboxa}`{#4}]% +\botadjust[#5`\usebox{\tempboxb}`{#8}]% +\sladjust[\tokenc`\tokenb`{#5}]{\ypos}% +\tempcountd=\tempcounta +\sladjust[\tokenc`\tokend`{#5}]{\ypos}% +\ifnum \tempcounta<\tempcountd +\tempcounta=\tempcountd\fi +\advance \xext by\tempcounta +\advance \xoff by-\tempcounta +\rightadjust[\usebox{\tempboxa}`\usebox{\tempboxb}`\usebox{\tempboxc}]% +\bfig +\putCtrianglep<-1`1`1;\ypos>(0,0)[`\tokenc`;#5`#6`{#7}]% +\puthmorphism(\ypos,0)[\tokend`\usebox{\tempboxb}`{#8}]{\width}{-1}b% +\puthmorphism(\ypos,\height)[\tokenb`\usebox{\tempboxa}`{#4}]{\width}{-1}a% +\advance\ypos by \width +\putvmorphism(\ypos,\height)[``\usebox{\tempboxc}]{\height}1r% +\efig +}} + +\def\recurse{\@ifnextchar <{\recursep}{\recursep<\width`\height>}} + +\def\puttwohmorphisms(#1,#2)[#3`#4;#5`#6]#7#8#9{{% +% 1 and 2 are position, 3 and 4 are the nodes, 5 and 6 the labels, +% 7 the distance between node centers and 8 & 9 are the arrow types. +% #5 +% #3 ===========> #4 +% #6 +% +\puthmorphism(#1,#2)[#3`#4`]{#7}0a +\ypos=#2 +\advance\ypos by 20 +\puthmorphism(#1,\ypos)[\phantom{#3}`\phantom{#4}`#5]{#7}{#8}a +\advance\ypos by -40 +\puthmorphism(#1,\ypos)[\phantom{#3}`\phantom{#4}`#6]{#7}{#9}b +}} + +\def\puttwovmorphisms(#1,#2)[#3`#4;#5`#6]#7#8#9{{% +% 1 and 2 are position, 3 and 4 are the nodes, 5 and 6 the labels, +% 7 the distance between node centers and 8 & 9 are the arrow types. +% +% #3 +% || +% || +% #5 || #6 +% || +% || +% vv +% #4 +% +\putvmorphism(#1,#2)[#3`#4`]{#7}0a +\xpos=#1 +\advance\xpos by -20 +\putvmorphism(\xpos,#2)[\phantom{#3}`\phantom{#4}`#5]{#7}{#8}l +\advance\xpos by 40 +\putvmorphism(\xpos,#2)[\phantom{#3}`\phantom{#4}`#6]{#7}{#9}r +}} + +\def\puthcoequalizer(#1)[#2`#3`#4;#5`#6`#7]#8#9{{% +% #1 is (\xpos,\ypos), the next 6 are the nodes and arrow labels +% #8 is the distance between each pair of nodes and #9 is the pos of #7 +% either a (above) or b (below) +% #5 #7 +% #2 ===========> #3 --------> #4 +% #6 +% +\setpos(#1)% +\puttwohmorphisms(\xpos,\ypos)[#2`#3;#5`#6]{#8}11% +\advance\xpos by #8 +\puthmorphism(\xpos,\ypos)[\phantom{#3}`#4`#7]{#8}1{#9} +}} + +\def\putvcoequalizer(#1)[#2`#3`#4;#5`#6`#7]#8#9{{% +% #1 is (\xpos,\ypos), the next 6 are the nodes and arrow labels +% #8 is the distance between each pair of nodes and #9 is the pos of #7 +% either l (left) or r (right) +% +% #2 +% | | +% | | +% #5 | | #6 +% | | +% | | +% v v +% #3 +% | +% | +% #7 | +% | +% v +% #4 +% +\setpos(#1)% +\puttwovmorphisms(\xpos,\ypos)[#2`#3;#5`#6]{#8}11% +\advance\ypos by -#8 +\putvmorphism(\xpos,\ypos)[\phantom{#3}`#4`#7]{#8}1{#9} +}} + +\def\putthreehmorphisms(#1)[#2`#3;#4`#5`#6]#7(#8)#9{{% +% Use: \putthreehmorphisms(xpos,ypos)[lnode`rnode;toplabel`midlabel% +% botlabel]{distance}(toparrowtype,midarrowtype,botarrowtype){position} +\setpos(#1) \settypes(#8) +\if a#9 % + \vertsize{\tempcounta}{#5}% + \vertsize{\tempcountb}{#6}% + \ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi +\else + \vertsize{\tempcounta}{#4}% + \vertsize{\tempcountb}{#5}% + \ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi +\fi +\advance \tempcounta by 60 +\puthmorphism(\xpos,\ypos)[#2`#3`#5]{#7}{\arrowtypeb}{#9} +\advance\ypos by \tempcounta +\puthmorphism(\xpos,\ypos)[\phantom{#2}`\phantom{#3}`#4]{#7}{\arrowtypea}{#9} +\advance\ypos by -\tempcounta \advance\ypos by -\tempcounta +\puthmorphism(\xpos,\ypos)[\phantom{#2}`\phantom{#3}`#6]{#7}{\arrowtypec}{#9} +}} + +%\def\putarc(#1,#2)[#3`#4`#5]#6#7#8{{% +%\xpos #1 +%\ypos #2 +%\width #6 +%\arrowlength #6 +%\putbox(\xpos,\ypos){#3\vphantom{#4}}% +%{\advance \xpos by\arrowlength +%\putbox(\xpos,\ypos){\vphantom{#3}#4}}% +%\horsize{\tempcounta}{#3}% +%\horsize{\tempcountb}{#4}% +%\divide \tempcounta by2 +%\divide \tempcountb by2 +%\advance \tempcounta by30 +%\advance \tempcountb by30 +%\advance \xpos by\tempcounta +%\advance \arrowlength by-\tempcounta +%\advance \arrowlength by-\tempcountb +%\halflength=\arrowlength \divide\halflength by 2 +%\divide\arrowlength by 5 +%\put(\xpos,\ypos){\bezier{\arrowlength}(0,0)(50,50)(\halflength,50)} +%\ifnum #7=-1 \put(\xpos,\ypos){\vector(-3,-2)0} \fi +%\advance\xpos by \halflength +%\put(\xpos,\ypos){\xpos=\halflength \advance\xpos by -50 +% \bezier{\arrowlength}(0,50)(\xpos,50)(\halflength,0)} +%\ifnum #7=1 {\advance \xpos by +% \halflength \put(\xpos,\ypos){\vector(3,-2)0}} \fi +%\advance\ypos by 50 +%\vertsize{\tempcounta}{#5}% +%\divide\tempcounta by2 +%\advance \tempcounta by20 +%\if a#8 % +% \advance \ypos by\tempcounta +% \putbox(\xpos,\ypos){#5}% +%\else +% \advance \ypos by-\tempcounta +% \putbox(\xpos,\ypos){#5}% +%\fi +%}} + diff --git a/macros/latex209/contrib/misc/chapref.sty b/macros/latex209/contrib/misc/chapref.sty new file mode 100644 index 0000000000..c3e16ff573 --- /dev/null +++ b/macros/latex209/contrib/misc/chapref.sty @@ -0,0 +1,108 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Chaprefs.sty - Style file to produce Reference sections on a per +% Chapter bases (using BibTeX) +% +% Author: Peter J. Knaggs, School of Computing and Mathematics, +% Teesside Polytechnic, Middlesbrogh, Cleveland, England. +% +%======================================================================= + +% +% Define two variables: +% \bib@sty - Holds the selected bibliography style +% \bib@name - Holds the name of the current \include file +% + +\def\bib@sty{plane} +\def\bib@name{\jobname} + +% +% Redefine \include to save the name of the included file in the variable +% \bib@name. This definition simply extends the LaTeX definition by +% redefining \include to call \@include, this is taken from the \include +% definition in LaTeX.TeX +% + +\def\include#1{\include@#1 } +\def\include@#1 {\def\bib@name{#1}\@include#1 } + +% +% Define a new `Preamble' flag to indicate chapter reference are required. +% This is required as the contents of the .aux files is diferent dependent +% on the state of this flag. +% +% The flag is initilay set to false. Ie., do not produce chapter reference, +% but do produce a bibliography chapter. +% +% The preable command \chaprefs is defined to switch the flag to true. Ie., +% produce chapter reference, but not a bibliography chapter. +% + +\newif\if@chpref \@chpreffalse +\def\chaprefs{\@chpreftrue} + +% +% Redefine \bibliographystyle to save the selected style in the variable +% \bib@sty. This will be ouput to the .aux file for each included file. +% Hence only one \bibliographystyle command is required. +% + +\def\bibliographystyle#1{ + \if@filesw\immediate\write\@auxout{\string\bibstyle{#1}}\fi + \def\bib@sty{#1} +} + +% +% Redefine \bibliography to use new factoring of the command. +% It redefineds the constant \@Ref as used in \thebiblography to add a +% "References" section, such that it now adds a "Biblography" chapter. +% + +\def\bibliography#1{\if@filesw\immediate\write\@auxout{\string\bibdata{#1}} + \def\@Ref{\@bib} \@input{\jobname.bbl} \fi } + +% +% define \references to write the \bibstyle and \bibdata commands to the +% current .aux file. It then inputs the current .bbl file if it exists. +% + +\def\references#1{\if@filesw\if@chpref\immediate\write\@auxout + {\string\bibstyle{\bib@sty}} \write\@auxout{\string\bibdata{#1}} + \fi \@input{\bib@name.bbl} \fi } + +% +% Define two functions: +% \@Ref to add a "References" section to the current % chapter. +% \@bib to add a "Bibliography" chapter to the document. +% +% It is assumed that the bibliography will be at the end of the document. +% Ie., no \references commands are given after the \bibliography command. +% + +\def\@Ref{\section{References}} +\def\@bib{\chapter*{Bibliography\@mkboth{BIBLIOGRAPHY}{BIBLIOGRAPHY}} + \addcontentsline{toc}{chapter}{Bibliography} } + +% +% At the start of a .bbl file is the command \thebibliography. This has +% been modified to add a "References" section to the current chapter. Note, +% the definition of \thebibliography is taken from the ucthesis document +% style. +% +% When the \bibliography command is used the definition of \@Ref is altered +% to add a "Bibliography" chapter. This definition is not changed back, +% thus the \bibliography command must only be given after all \references +% commands have been processed. +% + +\def\thebibliography#1{\@Ref\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} + +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex209/contrib/misc/chessboard.tex b/macros/latex209/contrib/misc/chessboard.tex new file mode 100644 index 0000000000..ebb3f20c09 --- /dev/null +++ b/macros/latex209/contrib/misc/chessboard.tex @@ -0,0 +1,162 @@ +\documentstyle[times,array]{csart} +\begin{document} +% chessboard.tex +% sebastian rahtz august 29th 1989 +% +% from Clark's cheq.sty, and article by W. Appelt in Tugboat 9.2, +% 284--287, 1988 +%--------------- +% fonts +% Derived from cheq.pl by Adrian F. Clark, 11th July 1989. +% Can be used by LaTeX or by plain TeX. +\font\Cheq=Cheq at 18pt % design size is 1pt; characters just legible at this size + +\def\CheqBBOnBlack{\Cheq\char 241 } +\def\CheqBB{\Cheq\char 76 } +\def\CheqBXOnBlack{\Cheq\char 240 } +\def\CheqBX{\Cheq\char 75 } +\def\CheqBKOnBlack{\Cheq\char 234 } +\def\CheqBK{\Cheq\char 83 } +\def\CheqBPOnBlack{\Cheq\char 184 } +\def\CheqBP{\Cheq\char 80 } +\def\CheqBQOnBlack{\Cheq\char 206 } +\def\CheqBQ{\Cheq\char 81 } +\def\CheqBROnBlack{\Cheq\char 229 } +\def\CheqBR{\Cheq\char 84 } +\def\CheqBSquare{\Cheq\char 120 } +\def\CheqWBOnBlack{\Cheq\char 186 } +\def\CheqWB{\Cheq\char 98 } +\def\CheqWXOnBlack{\Cheq\char 251 } +\def\CheqWX{\Cheq\char 107 } +\def\CheqWKOnBlack{\Cheq\char 167 } +\def\CheqWK{\Cheq\char 115 } +\def\CheqWPOnBlack{\Cheq\char 185 } +\def\CheqWP{\Cheq\char 112 } +\def\CheqWQOnBlack{\Cheq\char 182 } +\def\CheqWQ{\Cheq\char 113 } +\def\CheqWROnBlack{\Cheq\char 160 } +\def\CheqWR{\Cheq\char 116 } +%-------------- +\newif\ifblackchess +\newif\ifblackplaying +\def\BB{\ifblackchess\CheqBBOnBlack\else\CheqBB\fi} +\def\BX{\ifblackchess\CheqBXOnBlack\else\CheqBX\fi} +\def\BK{\ifblackchess\CheqBKOnBlack\else\CheqBK\fi} +\def\BP{\ifblackchess\CheqBPOnBlack\else\CheqBP\fi} +\def\BQ{\ifblackchess\CheqBQOnBlack\else\CheqBQ\fi} +\def\BR{\ifblackchess\CheqBROnBlack\else\CheqBR\fi} +\def\WB{\ifblackchess\CheqWBOnBlack\else\CheqWB\fi} +\def\WX{\ifblackchess\CheqWXOnBlack\else\CheqWX\fi} +\def\WK{\ifblackchess\CheqWKOnBlack\else\CheqWK\fi} +\def\WP{\ifblackchess\CheqWPOnBlack\else\CheqWP\fi} +\def\WQ{\ifblackchess\CheqWQOnBlack\else\CheqWQ\fi} +\def\WR{\ifblackchess\CheqWROnBlack\else\CheqWR\fi} +% +% Appelt's move macros, amended +% +\newcounter{chessmove} +\setcounter{chessmove}{0} +\def\Move#1#2#3#4#5#6{ +% [XQKBRP][a-h][1-9][-x][a-h][1-8] +\def\hashthree{\ifcase#3\relax\or A\or B\or C\or D\or E\or F\or G\or H\fi} +\def\hashsix{\ifcase#6\relax\or A\or B\or C\or D\or E\or F\or G\or H\fi} +\ifblackplaying\relax\else\addtocounter{chessmove}{1}\par\thechessmove. +\fi +#1#2#3#4#5#6 +\typeout{#1 #2#3(\hashthree) #4 #5#6(\hashsix)} +\expandafter% +\def\csname #2@\hashthree\endcsname{\void}% +\ifblackplaying\expandafter% +\def\csname #5@\hashsix\endcsname{\csname B#1\endcsname}% +\else\expandafter% +\def\csname #5@\hashsix\endcsname{\csname W#1\endcsname}% +\fi +} +% +\def\move#1#2#3#4#5#6 { +% [XQKBRP][a-h][1-8][-x][a-h][1-8] +\if#3- +\Move P#1#2#3#4#5 +\else\if#3x +\Move P#1#2#3#4#5% +\else +\Move #1#2#3#4#5#6 +\fi\fi +\ifblackplaying\blackplayingfalse\else\blackplayingtrue\fi +} +%------------------- +\def\void{\ifblackchess\CheqBSquare\else\hfill\fi} +%------ Initial settings of board ------------- +\makeatletter +\def\a@H{\BR} +\def\b@H{\BK}\def\c@H{\BB}\def\d@H{\BQ} +\def\e@H{\BX}\def\f@H{\BK}\def\g@H{\BB} +\def\h@H{\BR} +% ps +\def\a@G{\BP}\def\b@G{\BP}\def\c@G{\BP} +\def\d@G{\BP}\def\e@G{\BP}\def\f@G{\BP} +\def\g@G{\BP}\def\h@G{\BP} +% blank squares +% +\def\a@F{\void}\def\b@F{\void}\def\c@F{\void}\def\d@F{\void} +\def\e@F{\void}\def\f@F{\void}\def\g@F{\void}\def\h@F{\void} +\def\a@E{\void}\def\b@E{\void}\def\c@E{\void}\def\d@E{\void} +\def\e@E{\void}\def\f@E{\void}\def\g@E{\void}\def\h@E{\void} +\def\a@D{\void}\def\b@D{\void}\def\c@D{\void}\def\d@D{\void} +\def\e@D{\void}\def\f@D{\void}\def\g@D{\void}\def\h@D{\void} +\def\a@C{\void}\def\b@C{\void}\def\c@C{\void}\def\d@C{\void} +\def\e@C{\void}\def\f@C{\void}\def\g@C{\void}\def\h@C{\void} +% +\def\a@B{\WP}\def\b@B{\WP}\def\c@B{\WP}\def\d@B{\WP}\def\e@B{\WP}\def\f@B{\WP} +\def\g@B{\WP}\def\h@B{\WP} +% +\def\a@A{\WR}\def\b@A{\WK}\def\c@A{\WB}\def\d@A{\WX} +\def\e@A{\WQ}\def\f@A{\WB}\def\g@A{\WK}\def\h@A{\WR} +%--------------------------------------------------- +% +\def\blacksquare#1{\blackchesstrue#1\blackchessfalse} +% +\def\Showboard{ +\par\vspace{1cm} +\centerline{Board after move \thechessmove\ of \ifblackplaying White +\else Black \fi player} +\par\vspace{1cm} +\tabcolsep=0pt +\centerline{\begin{tabular}{lcccccccc} +\cline{2-9} +8 \vline& \a@H\vline&\blacksquare{\b@H}\vline&\c@H\vline&\blacksquare{\d@H}\vline&\e@H\vline&\blacksquare{\f@H}\vline& +\g@H\vline&\blacksquare{\h@H}\vline\\ +\cline{2-9} +7 \vline& \blacksquare{\a@G}\vline&\b@G\vline&\blacksquare{\c@G}\vline&\d@G\vline&\blacksquare{\e@G}\vline&\f@G\vline&\blacksquare{\g@G}\vline&\h@G\vline\\ +\cline{2-9} +6 \vline& \a@F\vline&\blacksquare{\b@F}\vline&\c@F\vline&\blacksquare{\d@F}\vline&\e@F\vline&\blacksquare{\f@F}\vline& +\g@F\vline&\blacksquare{\h@F}\vline\\ +\cline{2-9} +5 \vline& \blacksquare{\a@E}\vline&\b@E\vline&\blacksquare{\c@E}\vline&\d@E\vline&\blacksquare{\e@E}\vline&\f@E\vline&\blacksquare{\g@E}\vline&\h@E\vline\\ +\cline{2-9} +4 \vline& \a@D\vline&\blacksquare{\b@D}\vline&\c@D\vline&\blacksquare{\d@D}\vline&\e@D\vline&\blacksquare{\f@D}\vline& +\g@D\vline&\blacksquare{\h@D}\vline\\ +\cline{2-9} +3 \vline& \blacksquare{\a@C}\vline&\b@C\vline&\blacksquare{\c@C}\vline&\d@C\vline&\blacksquare{\e@C}\vline&\f@C\vline&\blacksquare{\g@C}\vline&\h@C\vline\\ +\cline{2-9} +2 \vline& \a@B\vline&\blacksquare{\b@B}\vline&\c@B\vline&\blacksquare{\d@B}\vline&\e@B\vline&\blacksquare{\f@B}\vline& +\g@B\vline&\blacksquare{\h@B}\vline\\ +\cline{2-9} +1 \vline& \blacksquare{\a@A}\vline&\b@A\vline&\blacksquare{\c@A}\vline&\d@A\vline&\blacksquare{\e@A}\vline&\f@A\vline&\blacksquare{\g@A}\vline&\h@A\vline\\ +\cline{2-9} +&a&b&c&d&e&f&g&h\\ +\end{tabular}} +\par +} +\makeatother + +\Showboard + +\move e2-e4 \move c7-c6 \move c2-c4 +\move d7-d5 +\move Kb1-d2 \move d5xe4 \move Kd2xe4 \move Kb8-d7 +\move Kg1-f3 + +\Showboard + +\end{document} diff --git a/macros/latex209/contrib/misc/chgbar.sty b/macros/latex209/contrib/misc/chgbar.sty new file mode 100644 index 0000000000..c49e8be18c --- /dev/null +++ b/macros/latex209/contrib/misc/chgbar.sty @@ -0,0 +1,157 @@ +% Change bar document-style option for LaTeX. +% +% Copyright (C) 1990 by David B. Johnson. +% +% dbj@titan.rice.edu (Dave Johnson) + +% 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}\relax} + +\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} + +\newenvironment{changebar}{\chgbarbegin}{\chgbarend} diff --git a/macros/latex209/contrib/misc/chomsky.sty b/macros/latex209/contrib/misc/chomsky.sty new file mode 100644 index 0000000000..6d33a27c14 --- /dev/null +++ b/macros/latex209/contrib/misc/chomsky.sty @@ -0,0 +1,158 @@ +% % chomsky.sty by Michael Barr. From TeXhax 1989, issue 54. +% % See below, after \endinput, for documentation. +% \documentstyle{article} +% \textwidth=6.5in \leftmargin=0in +% \begin{document} +\unitlength=.001em + +\newcount\xa \newcount\xb \newcount\xc +\newcount\ya \newcount\yb \newcount\yc \newcount\ym +\newcount\Xa \newcount\Xb \newcount\Xc +\newcount\Ya \newcount\Yb \newcount\Yc +\newcount\hsep \newcount\vsep +\newcount\tempa \newcount\tempb \newcount\tempc +\newbox\boxa \newbox\boxb \newbox\boxc +\newcount\offset \newcount\offseta \newcount\offsetb \newcount\offsetc +\newcount \hsep \newcount \vsep +\hsep=3000 +\newcount \wide \newcount \high +\newcount\correction +\newdimen\tempdimen +\tempdimen=3.3333333pt +\divide\tempdimen by \unitlength +\correction=\tempdimen + +\def\chomsky{\bgroup\catcode`\/=\active \catcode`\[=1 \catcode`\]=2} +\def\endchomsky{\egroup} + +\chomsky + +\gdef/#1;#2,#3/{{% +\setbox\boxa=\hbox{${\rm#1}$} +\offset=0 \setbox\boxb=\hbox{\strut#2}\offsetb=\offset +\offset=0 \setbox\boxc=\hbox{\strut#3}\offsetc=\offset +\xa=\wd\boxa \divide \xa by \unitlength +\ya=\ht\boxa \divide \ya by \unitlength +\xb=\wd\boxb \divide \xb by \unitlength +\yb=\ht\boxb \divide \yb by \unitlength +\xc=\wd\boxc \divide \xc by \unitlength +\yc=\ht\boxc \divide \yc by \unitlength +\ifnum\offsetb=0 \offsetb=\xb \divide \offsetb by 2 \fi +\ifnum\offsetc=0 \offsetc=\xc \divide \offsetc by 2 \fi +\ifnum\xc=0 \onebox \else \twobox \fi}} + +\gdef\onebox{{% +\Xa=\offsetb +\vsep=2000 +\Ya=\yb \advance \Ya by \vsep +\wide=\xb +\high=\yb \advance \high by \vsep {\divide \ya by 2 \global\advance + \high by \ya} +\advance\wide by -\correction +\begin{picture}(\wide,\high) +\put(\Xa,\Ya){\makebox(0,0){\usebox{\boxa}}} +\put(0,0){\usebox{\boxb}} +\global\offset=\Xa +\advance \Ya by -\ya \advance \Ya by -100 +\advance \vsep by -\ya \advance \vsep by -400 +\put(\Xa,\Ya){\line(0,-1){\vsep}} +\end{picture} +}} + +\gdef\twobox{{% +\ifnum\yb<\yc \ym=\yc \else \ym=\yb \fi +\Yb=\ym \advance \Yb by -\yb +\Yc=\ym \advance \Yc by -\yc +\Xc=\xb \advance \Xc by \hsep +\vsep=\xb \advance \vsep by -\offsetb \advance \vsep by \offsetc + \advance \vsep by \hsep \divide \vsep by 2 +\Xa=\offsetb \advance \Xa by \vsep \advance\Xa by \correction +\Ya=\ym \advance \Ya by \vsep +\wide=\xb \advance \wide by \xc \advance \wide by \hsep +\advance\wide by -\correction +\high=\Ya {\divide \ya by 2 \global\advance \high by \ya} +\begin{picture}(\wide,\high)(\correction,0) +\put(\Xa,\Ya){\makebox(0,0){\usebox{\boxa}}} +\put(0,\Yb){\usebox{\boxb}} +\put(\Xc,\Yc){\usebox{\boxc}} +\global\offset=\Xa +\advance \Ya by -\ya \advance \Ya by -200 +\advance \vsep by -\ya \advance \vsep by -500 +{\advance\Xa by -\ya \advance\Xa by -200 +\put(\Xa,\Ya){\line(-1,-1){\vsep}}} +\advance\Xa by \ya \advance \Xa by 200 +\put(\Xa,\Ya){\line(1,-1){\vsep}} +\end{picture} +}} + +\endchomsky +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput +% \end{document} +% \gdef/#1;#2,#3/{\lbrack$_{\rm#1}\,$#2 #3\rbrack$_{\rm#1}\,$} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + Usage: \chomsky [/;,/] \endchomsky. + Can recurse. + E.g., + + \chomsky + [/S;[/NP;[/Det;The,/],[/N;man,/]/],% + [/VP;[/V_t;bit,/],[/NP;[/Det;a,/],[/N;dog,/]/]/]/] + \endchomsky + + Gives: + S + / \ + / \ + / \ + / \ + / \ + NP VP + / \ / \ + / \ / \ + Det N / \ + | | Vt NP + The man | / \ + bit Det N + | | + a dog + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Date: Mon, 22 May 89 22:49:14 EDT +From: INHB000 <INHB%MCGILLC.BITNET@UWAVM.ACS.WASHINGTON.EDU> +Subject: Macro to help display parsing trees +Keywords: macros, parsing trees + +Paul Krause wanted some macros to help him display parsing trees. The +enclosed is not the best possible solution, but it is a start. It can +be improved in various ways. The most important is to reduce the number +3000 that \hsep defaults to. It is that large only so that very short +two word phrases will still have their parse lines; with a smaller value +you come up to a shorter distance than latex can draw a slant line. The +best thing is to use a smaller value, 1500 looks good, and increase it +if the resultant line is too short. Then the positioning is not +perfect. This appears to be the result of the boxes produced by the +\picture environment being too wide by 3.333333pt. It might be better +if the lines lower in the tree had steeper slope. This would introduce +all sorts of complications. + +Some might object to the syntax. It was chosen to make the rather ugly +recursive structure as readable as possible and, not coincidentally, +come as close as possible to the alternate notation used in Chomsky's +``Aspects of Syntax''. In fact, a different definition that reproduces +that alternate notation appears at the end. I would have preferred the +syntax without the slashes, but I could not figure out how to implement +that. A couple of caveats. Since I have changed their \catcode's, [,] +and / cannot be used inside the trees. Since I have never seen them so +used, this seems safe. Of course, the brackets can all be replaced by +braces and the opening slashes changed to \tree or something. + +The only sane way to use this macro is to define a key in your editor +that produces the string [/;,/] and four backspaces with a single +keystroke and leaves you in insert mode. This will help enormously in +getting the syntax correct. + +Michael Barr diff --git a/macros/latex209/contrib/misc/cites.sty b/macros/latex209/contrib/misc/cites.sty new file mode 100644 index 0000000000..8e2ed5eacd --- /dev/null +++ b/macros/latex209/contrib/misc/cites.sty @@ -0,0 +1,137 @@ +% +% CITES (style option to DARTICLE) is an extracted and changed +% part of the AIP style written by Charles Karney (Karney@PPC.MFEnet). +% CITES DOCUMENT SUBSTYLE -- released 15 March 1988 +% +% To use this give CITES as an optional argument to \documentstyle. The +% main style should be DARTICLE. E.g., +% \documentstyle[12pt,german,cites]{darticle} + +% This provides +% (1) Superscript reference numbers in citation and bibliography. +% This is done by calling \numcite after \begin{document}. +% You should put the references in the logically correct place, e.g. +% "... as is given by Landau \cite{landau}. Next sentence ..." +% \cite takes care of removing the preceding spaces and putting the +% reference after the punctuation (e.g, "... Landau.$~7$ ..."). + +% (2) Three or more consecutive reference numbers are represented as a +% range. Thus 1,3,4,5,6,8,9 is printed as 1,3--6,8,9. No sorting is +% performed; i.e., 1,3,2 is printed as such. +% The cites style does this by default. + +% (3) \citenum and \citea give you more control over the appearance of +% the citations. \citenum emits the plain citation number without +% ornament as in "... as shown in Ref.~\citenum{foo}.". \citea puts +% it's argument into the ornamentation for citations. +% Thus \cite{foo} is equivalent to \citea{\citenum{foo}}. + +% (4) \bibnum{p} prints entries of the thebibliography environment in the +% form #. +% \bibnum{k} prints entries of the thebibliography environment in the +% form [#] +% \bibnum{h} prints entries of the thebibliography environment in the +% form $^{#1}$ +% Default is \bibnum{k}. +% If \numcite is used, \bibnum should appear after it. +% G. Kruljac, MPI Stuttgart, kruljac@ds0mpi11, 13.03.89 + +% CHANGES +% 06.04.89 G. Kruljac, kruljac@ds0mpi11 +% - inserted commands \refincount and \@refincount to +% offer a possibility for citation numbering inside +% chapters, sections,... +% Initially it is empty. The user can define it by i.e. +% \refincount{\thechapter.} or \refincount{\thesubsection.} +% +% - corrections inside thebibliography for leftmargin +% evaluations +% +% + +%\typeout{Document Substyle 'CITES'. Released 15 March 1988} +\typeout{Document Substyle `CITES' modified by MPI FKF, Version 1.1, 06.04.89} + +% here we define the counter which should preceed the reference number +\def\@refincount{} +\def\refincount#1{\gdef\@refincount{#1}} + +% Superscript citations -- skip optional arg to \cite +% Move citation after period and comma. +\def\@cite#1#2{[{\@refincount#1\if@tempswa , #2\fi}]} + +\gdef\numcite{\bibnum{h} + \def\@cite##1##2{\unskip\nobreak\relax + \def\@tempa{$\m@th^{\hbox{\the\scriptfont0 + \@refincount##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}} + +\def\bibnumh{\hfil$\m@th^{\@refincount\arabic{enumi}}$} +\def\bibnump{\hfil\@refincount\arabic{enumi}.} +\def\bibnumk{\hfil[\@refincount\arabic{enumi}]} +\def\bibnum#1{\if\string#1h \global\let\@bibnum=\bibnumh\else + \if\string#1k \global\let\@bibnum=\bibnumk\else + \if\string#1p \global\let\@bibnum=\bibnump\else + \global\let\@bibnum=\bibnumh% + \fi\fi\fi} +\let\@bibnum=\bibnumk + +\def\thebibliography#1{\par%\clearpage% + \section*{\refname\@mkboth + {\uppercase{\refname}}{\uppercase{\refname}}}% + \list +% {\@bibnum}{\settowidth\labelwidth{$\m@th{##1}$} + {\@bibnum}% + {\ifx\@bibnum\bibnumk% + \settowidth\labelwidth{[\@refincount#1]} + \else\ifx\@bibnum\bibnumh + \settowidth\labelwidth{$\m@th^{\@refincount#1}$} + \labelsep0pt\itemindent\labelwidth + \else\settowidth\labelwidth{\@refincount#1.} + \fi\fi + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \ifnum\itemindent=0\else\advance\itemindent-\leftmargin\fi + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus -.07em} + \sloppy + \sfcode`\.=1000\relax} + +% \citenum emits the plain citation number without ornament +% \citea puts it's 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{,\@refincount}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne% + \ifnum\@tempcnta=\@tempcntb + \else \def\@citea{--\@refincount}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} + + diff --git a/macros/latex209/contrib/misc/colors.sty b/macros/latex209/contrib/misc/colors.sty new file mode 100644 index 0000000000..47d5ce9a4b --- /dev/null +++ b/macros/latex209/contrib/misc/colors.sty @@ -0,0 +1,89 @@ +%% Save file as: COLORS.STY Source: FILESERV@SHSU.BITNET +%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +% Name: +% colors.sty +% Author: Fred Knight <knight@ll.mit.edu> +% Purpose: +% Implement grayscale or color selection from LaTeX for PostScript. +% Works with black-and-white and color PostScript printers. +% A rainbow of colors is defined by default; you can add any +% color if you know its RGB values, e.g., from $OPENWINHOME/lib/rgb.txt. +% NOTE: RGB.TXT is stored as STY.COLORS_RGB_TXT on FILESERV and is in the +% [.STY] directory on Niord.SHSU.edu (192.92.115.8) +% +% Examples: +%-----1. +% \documentstyle[colors,...]{...} +% +% \begin{verse} +% \psred Roses are red;\\ +% \psblue The sky is blue;\\ +% \psgreen Pickles are green;\\ +% \psorange Colors are new.\\ \psblack +% +% \red{Strawberries are red too;}\\ +% \violet{But violets are never blue;}\\ +% \end{verse} +%-----2. +% \documentstyle[colors,...]{...} +% +% \def\psLightGoldenrod{\pssetrgbcolor{0.93}{0.86}{0.51}} +% \def\LightGoldenrod#1{\psgsave\psLightGoldenrod#1\psgrestore} +% \LightGoldenrod{I like Light Goldenrod for a border color.} +% I like \psLightGoldenrod Light Goldenrod\psblack for a border color. +% Usage: +% \ps<color> : changes to <color>, +% : e.g., \psred red \psblue not blue +% \<color>{text} : outputs text in <color>, +% : e.g., \red{strawberries} +% +% \pssetgray{f} : changes color to shade of gray +% : f = 0 (black) to 1 (white) +% Restrictions: +% Only for Postscript---black & white or color! +% Only for dvi-to-ps driver that understands: +% \special{ps:: <Postscript commands>} +% Modification History: +% write, 19 Oct 90, FKK +% alter \psred, \psorange, etc.; make a bw rainbow, 13 Nov 90, FKK +% omit pscolor and psbw booleans, 26 Jun 91, FKK +% add macros with arguments (see usage), 26 Jun 91, FKK +% remove \tan (conflicts with tangent) but keep \pstan, 15 Apr 92, FKK +%------------------------------------------------------------------- +% +% =====>> BASIC ACCESS TO POSTSCRIPT COLORS +% +% =====>> Usage: \pssetrgbcolor{red}{green}{blue} +% where: 0 < red < 1, etc. +% =====>> Note: B&W ps printers understand setrgbcolor! +% +\def\pssetrgbcolor#1#2#3{\immediate\special{ps:: #1 #2 #3 setrgbcolor}} +\def\pssetgray#1{\immediate\special{ps:: #1 setgray}} +\def\psgsave{\immediate\special{ps:: gsave}} +\def\psgrestore{\immediate\special{ps:: grestore}} +% +% =====>> COMMANDS DERIVED FROM \pssetrgbcolor AND \pssetgray +% =====>> TWO TYPES: SET A NEW COLOR (NO ARGUMENT), e.g., \psred +% =====>> COLOR AN ARGUMENT, e.g., \red{Roses are red;} +% +\def\psgray#1{\pssetgray{#1}} +\def\psblack{\psgray{0}} +\def\black#1{\psgsave\psblack#1\psgrestore} +\def\psred{\pssetrgbcolor{1}{0}{0}} +\def\red#1{\psgsave\psred#1\psgrestore} +\def\psorange{\pssetrgbcolor{1}{.65}{0}} +\def\orange#1{\psgsave\psorange#1\psgrestore} +\def\psyellow{\pssetrgbcolor{1}{1}{0}} +\def\yellow#1{\psgsave\psyellow#1\psgrestore} +\def\psgreen{\pssetrgbcolor{0}{1}{0}} +\def\green#1{\psgsave\psgreen#1\psgrestore} +\def\psblue{\pssetrgbcolor{0}{0}{1}} +\def\blue#1{\psgsave\psblue#1\psgrestore} +\def\psviolet{\pssetrgbcolor{.72}{.33}{.83}} +\def\violet#1{\psgsave\psviolet#1\psgrestore} +\def\pstan{\pssetrgbcolor{.5}{.5}{.2}} +%conflicts with tangent%\def\tan#1{\psgsave\pstan#1\psgrestore} +\def\psbrown{\pssetrgbcolor{.5}{.3}{.3}} +\def\brown#1{\psgsave\psbrown#1\psgrestore} +\def\pswhite{\psgray{1}} +\def\white#1{\psgsave\pswhite#1\psgrestore} diff --git a/macros/latex209/contrib/misc/commtest.tex b/macros/latex209/contrib/misc/commtest.tex new file mode 100644 index 0000000000..6eb0ce3d02 --- /dev/null +++ b/macros/latex209/contrib/misc/commtest.tex @@ -0,0 +1,56 @@ +% An illustration of comment.sty by Victor Eijkhout. +% This file belongs to comment.sty version 3.0 or later, +% it is both plain TeX and LaTeX compatible. + +\def\plainname{plain} +\ifx\fmtname\plainname + \input comment.sty +\else + \documentstyle[comment]{article} + \begin{document} +\fi + +\includecomment{thisone} +\excludecomment{notthisone} + +This sentence +\comment +has +\endcomment +no verb. + +Check for\notthisone +superfluous +\endnotthisone +spaces, and +\thisone +inclusion +\endthisone +of proper texts. + +% a test of the special comments +\newcount\comlines +\specialcomment{countedcomment} + {\comlines=-1\relax %note that the rest of the first line is also comment + \def\ThisComment##1{\global\advance\comlines1\relax}} + {\endgraf **Comment: \number\comlines\ line(s) removed**\endgraf} + +This is a line of text +\countedcomment +Oneline +\endcountedcomment +another line of text +\countedcomment +One line +Two line +Three line +\endcountedcomment +last line of text + +\edef\byebye{ +\if\fmtname\plainname + \noexpand\csname bye\noexpand\endcsname +\else + \noexpand\end{document} +\fi} +\byebye
\ No newline at end of file diff --git a/macros/latex209/contrib/misc/cprog.sty b/macros/latex209/contrib/misc/cprog.sty new file mode 100644 index 0000000000..0fb80c6076 --- /dev/null +++ b/macros/latex209/contrib/misc/cprog.sty @@ -0,0 +1,230 @@ +% cprog.tex (or cprog.sty) - formatting of C programs +% By \'Eamonn McManus <emcmanus@cs.tcd.ie>. This file is not copyrighted. +% $Id: cprog.tex,v 1.4 90/09/12 23:21:26 emcmanus Exp $ + +% This allows C programs to be formatted directly by TeX. It can be +% invoked by \cprogfile{filename} or (in LaTeX) \begin{cprog} ... +% \end{cprog} or (in plain TeX) \cprog ... \end{cprog}. In LaTeX, the +% alternative form \begin{cprog*} is allowed, where spaces in C strings +% are printed using the `square u' character (like LaTeX {verbatim*}). +% In plain TeX, you have to use \csname cprog*\endcsname for this (sorry). +% If you are using \cprogfile, say \cprogttspacetrue beforehand if you +% want this effect. + +% The formatting is (necessarily) simple. C text is set in a normal Roman +% font, comments in a slanted font, and strings in a typewriter font, with +% spaces optionally made visible as the `square u' symbol. Tabs are +% expanded to four spaces (this does not look good when comments are +% aligned to the right of program text). Some pairs of input characters +% appear as single output characters: << <= >> >= != -> are respectively +% TeX's \ll \le \gg \ge \ne \rightarrow. Say \cprogpairsfalse to disable +% this. + +% You can escape to TeX within cprog text by defining an escape character. +% The character @ is suitable for C and Pascal. I have not tested other +% characters so they may interact badly with their existing definitions here. +% To define @ as the escape character, do \cprogescape@. Then within text +% you can do @ followed by TeX commands. These commands will be in a TeX +% group with the \catcodes of \{}% as normal. The commands are terminated +% by a newline, which is not considered part of the program text. + +% The fonts below can be changed to alter the setting of the various parts +% of the program. The \cprogbaselineskip parameter can be altered to +% change the line spacing. LaTeX's \baselinestretch is taken into account +% too. The indentation applied to the whole program is \cprogindent, +% initially 0. Before and after the program there are skips of +% \beforecprogskip and \aftercprogskip; the default values are \parskip +% and 0 respectively (since there will often be a \parskip after the +% program anyway). + +% If the source text is Pascal or Modula-2, say \pascaltrue or \modulatrue +% (respectively) before formatting it. This makes (* *) be recognised for +% comments instead of /* */. Braces {} are also recognised for Pascal. +% \pascalfalse or \modulafalse as appropriate restores the default of C. + +% This package works by making a large number of characters active. Since +% even spaces are active, it is possible to examine the next character in +% a macro by making it a parameter, rather than using \futurelet as one +% would normally do. This is more convenient, but the coding does mean +% that if the next character itself wants to examine a character it may +% look at a token from the macro rather than the input text. I think that +% all cases that occur in practice have been looked after. + +% The macros could still do with some work. For example, the big macro +% defined with [] taking the place of {} could be recoded to use {} and so +% be more legible. The internal macros etc should have @ in their names, +% and should be checked against LaTeX macros for clashes. + +% Allow multiple inclusion to go faster. + +\ifx\undefined\cprogsetup % The whole file. + +% Define the fonts used for program text, comments, and strings. +% Note that if \it is used for \ccommentfont, something will need to +% be done about $ signs, which come out as pounds sterling. +\let\ctextfont=\rm \let\ccommentfont=\sl \let\cstringfont=\tt + +% Parameters. Unfortunately \newdimen is \outer (\outerness is a mistake) +% so we need a subterfuge in case we are skipping the file. +\csname newdimen\endcsname\cprogbaselineskip \cprogbaselineskip=\baselineskip +\csname newdimen\endcsname\cprogindent \cprogindent=0pt +\csname newdimen\endcsname\cprogwidth % Gets default=\hsize when cprog invoked. +\csname newskip\endcsname\beforecprogskip \beforecprogskip=\parskip +\csname newskip\endcsname\aftercprogskip \aftercprogskip=0pt +\csname newif\endcsname\ifcprogttspace +\csname newif\endcsname\ifcprogpairs \cprogpairstrue +\csname newif\endcsname\ifpascal +\csname newif\endcsname\ifmodula % Same as Pascal but no {comments}. +{\def\junk{\fi\fi\fi\fi}} % If skipping. + +\let\cprogesc\relax +\begingroup \catcode`~=\active +\gdef\cprogescape#1{% + {\catcode`~=\active \uccode`~=`#1 \aftergroup\cprogescont + \uppercase{\aftergroup~}}} +\gdef\cprogescont#1{% + \def\cprogesc{% + \makeactive#1\def#1{% + \begingroup \catcode`\\0 \catcode`{1 \catcode`}2 \catcode`\%14 + \catcode` 10 \clinegroup{}}}} +\endgroup + +\def\makeactive#1{\catcode`#1=\active} \def\makeother#1{\catcode`#1=12} +{\obeyspaces\gdef\activespace{ } \obeylines\gdef\activecr{^^M}} +{\catcode`|=\catcode`\\ \makeactive\\ |gdef|activebackslash{\}} +{\catcode9=\active \gdef\activetab{^^I}} + +% The following group makes many characters active, so that their catcodes +% in the \cprogchars macro are active, allowing them to be defined. We +% could alternatively define more stuff like \activebackslash and use +% \expandafter or (carefully) \edef to expand these in the macro. +\begingroup +\catcode`[=\catcode`{ \catcode`]=\catcode`} +\makeactive! \makeactive" \makeactive' \makeactive( \makeactive* \makeactive- +\makeactive/ \makeactive< \makeactive> \makeactive? \makeactive^ \makeactive_ +\makeactive\{ \makeactive| \makeactive\} +\gdef\activestar[*] +\gdef\cprogchars[% + \makeother##\makeother$\makeother&\makeother\%\makeother^% + \makeactive"\makeactive'\makeactive*\makeactive?\makeactive{\makeactive}% + \makeactive}\makeactive\\\makeactive_\expandafter\makeactive\activetab% + \makeactive!\makeactive<\makeactive>\makeactive-\makeactive|% + \ifcprogpairs + \def!##1[\ifx=##1$\ne$\else\string!\null##1\fi]% + \def-##1[\ifx>##1$\rightarrow$\else$\string-$##1\fi]% + % We use \aftergroup in < and > to deal with the fact that #1 might + % itself examine the following character. + \def<##1[[$\ifx<##1\ll$\else\ifx=##1\le$\else + \ifx>##1\ifpascal\ne$\else\string<$\aftergroup>\fi + \else \string<$\aftergroup##1\fi\fi\fi]]% + \def>##1[[$\ifx>##1\gg$\else\ifx=##1\ge$\else + \string>$\aftergroup##1\fi\fi]]% + \else \def![\string!\null]% Avoid !` ligature. + \def-[$\string-$]\def<[$\string<$]\def>[$\string>$]% + \fi + \def?[\string?\null]% Avoid ?` ligature. + \def"[\cquote"[\tt\string"]]\def'[\cquote'[\tt\ttquote]]\def*[$\string*$]% + \ifmodula \pascaltrue \fi % Except that {...} is used for sets. + \ifpascal + \ifmodula \dulllbrace \else + \def{[\begingroup \dulllbrace{\ccommentsetup\def}[\/\endgroup }]]% + \fi \makeactive(\let(=\pascalcomment \makeactive^\def^[$\uparrow$]% + \else \dulllbrace\makeactive/\let/=\ccomment + \fi + \def}[$\}$]\def|[$\string|$]\def~[$\sim$]\let_\_% + \expandafter\def\activebackslash[$\backslash$]% + \obeyspaces \expandafter\def\activespace[\leavevmode\space]% + \expandafter\def\activetab[\ \ \ \ ]% + \obeylines \expandafter\def\activecr[\strut\par]] +\gdef\cprogarg[\expandafter\def\activebackslash##1[\ifx##1e\let\next\cprogend + \else$\backslash$\let\next##1\fi\next]\eatcr] +\gdef\cprogend nd#1{cprog#2}[\endcprogarg] % #1 can be space, #2 *. +\gdef\dulllbrace[\def{[$\{$]] +\endgroup + +\chardef\ttquote=13 % Undirected single quote. +\begingroup \makeactive" \makeactive' \makeactive! +\gdef\cquote#1#2{% #1 is the quote, " or ', #2 how to set it. + \begingroup #2\cstringfont \makeactive\\% + \ifpascal \makeother\\\makeother^% + \else \expandafter\let\activebackslash\quotebackslash + \fi + \expandafter\edef\activespace{\ifcprogttspace\char`\ \else\ \fi}% + \expandafter\let\activecr=\unclosedstring + \def!{\string!\null}% No !` ligature. + \makeother*\makeother-\makeother/\makeother<\makeother>% + \makeother_\makeother\{\makeother\}\makeother|\makeother~% + \ifx"#1\let'\ttquote \else \makeother"\fi + \def#1{#2\endgroup}} +\endgroup +\csname newhelp\endcsname\cprogunclosedstr{% +A string or character constant earlier in the line was unclosed.^^JSo +I'm closing it now.} +\def\unclosedstring{% + \escapechar-1% + \errhelp\cprogunclosedstr + \errmessage{Unclosed string}% + \endgroup} +\newlinechar=`^^J +\def\quotebackslash#1{\char`\\% + \expandafter\ifx\activecr#1\strut\par + \else\if'\noexpand#1\ttquote\else\string#1\fi\fi} + +% In a comment, we shrink the width of the opening / to that of a space so +% that the stars in multiline comments will line up. We also shrink the +% closing * for symmetry, but not in Pascal where it looks nasty. +% Note that \end{cprog} is not recognised in strings or comments. +\def\spacebox#1{\leavevmode \hbox to \spaceskip{#1\hss}} + +\begingroup \makeactive* \makeactive! \makeother/ +\gdef\ccommentsetup{\ccommentfont \makeother-\makeother'\makeother"\makeother/% + \def!{\string!\null}\expandafter\def\activebackslash{$\backslash$}} +\gdef\ccomment#1{% + \let\next\relax + \ifx#1*\bgroup \ccommentsetup + \spacebox{\ctextfont\string/}*% + \makeactive*\def*{\commentstar/}% + \else\if\noexpand#1/\begingroup //\ccommentsetup \clinegroup\activecr + \else \string/\let\next#1% + \fi\fi\next} +\gdef\pascalcomment#1{% + \ifx#1*\bgroup \ccommentsetup \let\next\dulllbrace \makeother(% + \spacebox{\ctextfont\string(}*\makeactive*\def*{\commentstar)}% + \else (\let\next#1\fi \next} +\obeylines \long\gdef\clinegroup#1#2^^M{#2\endgroup#1}% +\endgroup +\def\commentstar#1#2{% + {\if#1\noexpand#2\egroup \ifpascal\else\aftergroup\spacebox\fi\fi}{$*$}#2} + +% We usually have an active ^^M after \cprog or \begin{cprog}. +\def\eatcr#1{{\expandafter\ifx\activecr#1\else\aftergroup#1\fi}} + +% Expand to stretch and shrink (plus and minus) of parameter #1. +\def\stretchshrink#1{\expandafter\eatdimenpart\the#1 \end} +\def\eatdimenpart#1 #2\end{#2} + +\ifx\undefined\baselinestretch \def\baselinestretch{1}\fi + +\def\cprogsetup{\ctextfont \cprogchars \parskip=0pt\stretchshrink\parskip + \ifdim \cprogwidth=0pt \else \hsize\cprogwidth \fi + \cprogesc \spaceskip\fontdimen2\font \xspaceskip\spaceskip + \baselineskip=\baselinestretch\cprogbaselineskip \parindent=\cprogindent + \vskip\beforecprogskip} +\def\endcprog{\endgroup \vskip\aftercprogskip} +\def\cprogfile#1{\begingroup \cprogsetup \input#1\endcprog} +\def\cprog{\begingroup \cprogttspacefalse \cprogsetup \cprogarg} +% Like {verbatim*}, {cprog*} uses `square u' for spaces in quoted strings. +\expandafter\def\csname cprog*\endcsname{% + \begingroup \cprogttspacetrue \cprogsetup \cprogarg} +\expandafter\let\csname endcprog*\endcsname=\endcprog +% In LaTeX we need to call \end{cprog} properly to close the environment, +% whereas in plain TeX this will end the job. The test for LaTeX is not +% bulletproof, but most plain TeX documents don't refer to the LaTeX logo. +\ifx\undefined\LaTeX \let\endcprogarg=\endcprog +\else \def\endcprogarg{\ifcprogttspace\end{cprog*}\else\end{cprog}\fi} +\fi + +\fi % \ifx\undefined\cprogsetup + +\endinput + diff --git a/macros/latex209/contrib/misc/cup.sty b/macros/latex209/contrib/misc/cup.sty new file mode 100644 index 0000000000..ab53a7f491 --- /dev/null +++ b/macros/latex209/contrib/misc/cup.sty @@ -0,0 +1,1053 @@ +% SVLNCS DOCUMENT STYLE -- Released 23 march 1989 +% by Marc Shapiro shapiro@sor.inria.fr +% Adapted from ARTICLE.STY and ART12.STY released 4 September 1986 +% for LaTeX version 2.09, Copyright (C) 1986 by Leslie Lamport + +% Use like this: +% \documentsyle{svlncs} % no options +% \begin{document} +% \title{The Story of my Life} % Capitalized +% \author{F. Bar\and L. User} % no space before \and +% \affiliation{The University of Nowhere} +% \maketitle +% \begin{abstract} +% ... +% \end{abstract} +% \section{INTRODUCTION} % SECTION TITLES IN UPPER CASE +% ... +% \subsection{This is an Interesting Subsection} % Capitalized +% ... +% \subsubsection{Proof 1} % \subsubsection for proofs only, +% ... % in math works only ! +% \bibliography{...} % no \bibliographystyle ! +% \end{document} +% Uses the `paren' bibliography style. If you don't have it, retrieve file +% btxbst.doc from the latex-style repository; it tells you how to +% build paren.bst + +\typeout{Document Style SVLNCS, for conference proceedings printed in +`Springer-Verlag Lecture Notes in Computer Science'} + + +% PREPARING A FOREIGN LANGUAGE VERSION: +% (shapiro@inria 18-jan-88) +% +% This document style is for documents prepared in the English language. +% To prepare a version for another language, various English words must +% be replaced. To do so, just change the definition of the following +% macros (may be done in an option file): +% \contentsname +% \listfigurename +% \listtablename +% \indexname +% \refname +% \figurename +% \figuresepname +% \tablename +% also change the definition of \today +% also change titlepage.sty +% for French, add \frenchspacing + +% Only one type size: 12 pt +\def\@ptsize{2} + +% Two-side or one-side printing. +% +% \@twosidefalse % Default is one-sided printing. +\def\ds@twoside{\@twosidetrue % Defines twoside option. + \@mparswitchtrue} % Marginpars go on outside of page. +% draft option +% +% \overfullrule = 0pt % Default is don't mark overfull hboxes. +\def\ds@draft{\overfullrule 5pt} % Causes overfull hboxes to be marked. + +% The \@options command causes the execution of every command \ds@FOO +% which is defined and for which the user typed the FOO option in his +% \documentstyle command. For every option BAR he typed for which +% \ds@BAR is not defined, the file BAR.sty will be read after the present +% (main) .STY file is executed. + +\@options + +% **************************************** +% * FONTS * +% **************************************** +% + +\lineskip 1pt % \lineskip is 1pt for all font sizes. +\normallineskip 1pt +\def\baselinestretch{1} + +% Each size-changing command \SIZE executes the command +% \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE +% where: +% BASELINESKIP = Normal value of \baselineskip for that size. (Actual +% value will be \baselinestretch * BASELINESKIP.) +% +% \FONTSIZE = Name of font-size command. The currently available +% (preloaded) font sizes are: \vpt (5pt), \vipt (6pt), +% \viipt (etc.), \viiipt, \ixpt, \xpt, \xipt, \xiipt, +% \xivpt, \xviipt, \xxpt, \xxvpt. +% \@FONTSIZE = The same as the font-size command except with an +% '@' in front---e.g., if \FONTSIZE = \xivpt then +% \@FONTSIZE = \@xivpt. +% +% For reasons of efficiency that needn't concern the designer, +% the document style defines \@normalsize instead of \normalsize . This is +% done only for \normalsize, not for any other size-changing commands. + +\def\@normalsize{\@setsize\normalsize{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 % Choose the normalsize font. + + +% **************************************** +% * PAGE LAYOUT * +% **************************************** +% +% All margin dimensions measured from a point one inch from top and side +% of page. + +% SIDE MARGINS: +\oddsidemargin 0.2 cm % Note that \oddsidemargin = \evensidemargin +\evensidemargin 0.2 cm +\marginparwidth 2cm +\marginparsep 10pt % Horizontal space between outer margin and + % marginal note + + +% VERTICAL SPACING: + % Top of page: +\topmargin -68pt % Nominal distance from top of page to top of + % box containing running head. +\headheight 12pt % Height of box containing running head. +\headsep 25pt % Space between running head and text. +% \topskip = 10pt % '\baselineskip' for first line of page. + % Bottom of page: +\footheight 12pt % Height of box containing running foot. +\footskip 75pt % Distance from baseline of box containing foot + % to baseline of last line of text. + +% DIMENSION OF TEXT: +% \textheight is the height of text (including footnotes and figures, +% excluding running head and foot). + +\textheight = 23.5cm +\advance\textheight by \topskip +\textwidth 15.6cm % Width of text line. + % For two-column mode: +\columnsep 10pt % Space between columns +\columnseprule 0pt % Width of rule between columns. + +% A \raggedbottom command causes 'ragged bottom' pages: pages set to +% natural height instead of being stretched to exactly \textheight. + +% FOOTNOTES: + +\footnotesep 8.4pt % Height of strut placed at the beginning of every + % footnote = height of normal \footnotesize strut, + % so no extra space between footnotes. + +\skip\footins 10.8pt plus 4pt minus 2pt % Space between last line of text and + % top of first footnote. + +% FLOATS: (a float is something like a figure or table) +% +% FOR FLOATS ON A TEXT PAGE: +% +% ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE: +\floatsep 14pt plus 2pt minus 4pt % Space between adjacent floats moved + % to top or bottom of text page. +\textfloatsep 20pt plus 2pt minus 4pt % Space between main text and floats + % at top or bottom of page. +\intextsep 14pt plus 4pt minus 4pt % Space between in-text figures and + % text. +\@maxsep 20pt % The maximum of \floatsep, + % \textfloatsep and \intextsep (minus + % the stretch and shrink). +% TWO-COLUMN FLOATS IN TWO-COLUMN MODE: +\dblfloatsep 14pt plus 2pt minus 4pt % Same as \floatsep for double-column + % figures in two-column mode. +\dbltextfloatsep 20pt plus 2pt minus 4pt % \textfloatsep for double-column + % floats. +\@dblmaxsep 20pt % The maximum of \dblfloatsep and + % \dbltexfloatsep. + +% FOR FLOATS ON A SEPARATE FLOAT PAGE OR COLUMN: +% ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE: +\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be + % 0pt plus ...) +\@fpsep 10pt plus 2fil % Space between floats on float page/column. +\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be + % 0pt plus ... ) + +% DOUBLE-COLUMN FLOATS IN TWO-COLUMN MODE. +\@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...) +\@dblfpsep 10pt plus 2fil % Space between floats on float page. +\@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be + % 0pt plus ... ) +% MARGINAL NOTES: +% +\marginparpush 7pt % Minimum vertical separation between two marginal + % notes. + + +% **************************************** +% * PARAGRAPHING * +% **************************************** +% +\parskip=2.5ex plus 1pt minus 1pt % Extra vertical space between paragraphs. +\parindent 0em % Width of paragraph indentation. +\topsep 10pt plus 4pt minus 6pt % Extra vertical space, in addition to + % \parskip, added above and below list and + % paragraphing environments. +\partopsep 3pt plus 2pt minus 2pt % Extra vertical space, in addition to + % \parskip and \topsep, added when user + % leaves blank line before environment. +\itemsep 5pt plus 2.5pt minus 1pt % Extra vertical space, in addition to + % \parskip, added between list items. + +% The following page-breaking penalties are defined + +\@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1] +\@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2] +\@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3] + +\@beginparpenalty -\@lowpenalty % Before a list or paragraph environment. +\@endparpenalty -\@lowpenalty % After a list or paragraph environment. +\@itempenalty -\@lowpenalty % Between list items. + +% \clubpenalty % 'Club line' at bottom of page. +% \widowpenalty % 'Widow line' at top of page. +% \displaywidowpenalty % Math display widow line. +% \predisplaypenalty % Breaking before a math display. +% \postdisplaypenalty % Breaking after a math display. +% \interlinepenalty % Breaking at a line within a paragraph. +% \brokenpenalty % Breaking after a hyphenated line. + + +% **************************************** +% * SECTIONS * +% **************************************** +% + +% \secdef{UNSTARCMDS}{STARCMDS} : +% When defining a sectionioning command without using +% \@startsection, you can use \secdef as follows: +% \def\part { ... \secdef \CMDA \CMDB } +% \def\CMDA [#1]#2{ ... } % Command to define \part[...]{...} +% \def\CMDB #1{ ... } % Command to define \part*{...} + +% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE} +% optional * [ALTHEADING]{HEADING} +% Generic command to start a section. +% NAME : e.g., 'subsection' +% LEVEL : a number, denoting depth of section -- e.g., section=1, +% subsection = 2, etc. A section number will be printed if +% and only if LEVEL < or = the value of the secnumdepth +% counter. +% INDENT : Indentation of heading from left margin +% BEFORESKIP : Absolute value = skip to leave above the heading. +% If negative, then paragraph indent of text following +% heading is suppressed. +% AFTERSKIP : if positive, then skip to leave below heading, +% else - skip to leave to right of run-in heading. +% STYLE : commands to set style +% If '*' missing, then increments the counter. If it is present, then +% there should be no [ALTHEADING] argument. A sectioning command +% is normally defined to \@startsection + its first six arguments. + +\def\section{\@startsection {section}{1}{\z@}{-2.5ex plus -1ex minus + -.2ex}{1pt plus 1pt}{\large\bf}} +\def\subsection{\@startsection{subsection}{2}{\z@}{-2.25ex plus -1ex minus + -.2ex}{1pt plus 1pt}{\large\bf}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.25ex plus + 1ex minus .2ex}{-1em}{\normalsize\it}} + +% Default initializations of \...mark commands. (See below for their +% us in defining page styles. +% + +% \def\sectionmark#1{} % Preloaded definitions +% \def\subsectionmark#1{} +% \def\subsubsectionmark#1{} +% \def\paragraphmark#1{} +% \def\subparagraphmark#1{} + +% The value of the counter secnumdepth gives the depth of the +% highest-level sectioning command that is to produce section numbers. +% + +\setcounter{secnumdepth}{2} + +% APPENDIX +% +% The \appendix command must do the following: +% -- reset the section and subsection counters to zero +% -- redefine the section counter to produce appendix numbers +% -- redefine the \section command if appendix titles and headings are +% to look different from section titles and headings. + +\def\appendix{\par + \setcounter{section}{0} + \setcounter{subsection}{0} + \def\thesection{\Alph{section}}} + + +% **************************************** +% * LISTS * +% **************************************** +% + +% The following commands are used to set the default values for the list +% environment's parameters. See the LaTeX manual for an explanation of +% the meanings of the parameters. Defaults for the list environment are +% set as follows. First, \rightmargin, \listparindent and \itemindent +% are set to 0pt. Then, for a Kth level list, the command \@listK is +% called, where 'K' denotes 'i', 'ii', ... , 'vi'. (I.e., \@listiii is +% called for a third-level list.) By convention, \@listK should set +% \leftmargin to \leftmarginK. +% +% For efficiency, level-one list's values are defined at top level, and +% \@listi is defined to set only \leftmargin. + +\leftmargini 2.5em +\leftmarginii 2.2em % > \labelsep + width of '(m)' +\leftmarginiii 1.87em % > \labelsep + width of 'vii.' +\leftmarginiv 1.7em % > \labelsep + width of 'M.' +\leftmarginv 1em +\leftmarginvi 1em + +\leftmargin\leftmargini +\labelsep .5em +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\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} + + + + +% **************************************** +% * LISTS * +% **************************************** +% + +% ENUMERATE +% Enumeration is done with four counters: enumi, enumii, enumiii +% and enumiv, where enumN controls the numbering of the Nth level +% enumeration. The label is generated by the commands \labelenumi +% ... \labelenumiv. The expansion of \p@enumN\theenumN defines the +% output of a \ref command. + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} + +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} + +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} + +\def\labelenumiv{\Alph{enumiv}.} +\def\theenumiv{\Alph{enumiv}} +\def\p@enumiv{\p@enumiii\theenumiii} + +% ITEMIZE +% Itemization is controlled by four commands: \labelitemi, \labelitemii, +% \labelitemiii, and \labelitemiv, which define the labels of the various +% itemization levels. + +\def\labelitemi{$\bullet$} +\def\labelitemii{\bf --} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + + +% VERSE +% The verse environment is defined by making clever use of the +% list environment's parameters. The user types \\ to end a line. +% This is implemented by \let'in \\ equal \@centercr. +% +\def\verse{\let\\=\@centercr + \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} +\let\endverse\endlist + +% QUOTATION +% Fills lines +% Indents paragraph +% +\def\quotation{\list{}{\listparindent 1.5em + \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} +\let\endquotation=\endlist + +% QUOTE -- same as quotation except no paragraph indentation, +% +\def\quote{\list{}{\rightmargin\leftmargin}\item[]} +\let\endquote=\endlist + +% DESCRIPTION +% +% To change the formatting of the label, you must redefine +% \descriptionlabel. + +\def\descriptionlabel#1{\hspace\labelsep \bf #1} +\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + +\let\enddescription\endlist + +%\newdimen\descriptionmargin +%\descriptionmargin=3em + +% **************************************** +% * OTHER ENVIRONMENTS * +% **************************************** +% +% +% THEOREM +% \@begintheorem ... \@endtheorem are the commands executed at the +% beginning and end of a (user-defined) theorem-like environment. +% Except \@opargbegintheorem is executed when an optional argument is +% given. Cf. LATEX.TEX. +% +% \def\@begintheorem#1#2{\it \trivlist \item[\hskip \labelsep{\bf #1\ #2}]} +% \def\@opargbegintheorem#1#2#3{\it \trivlist +% \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]} +% \def\@endtheorem{\endtrivlist} + + +% EQUATION and EQNARRAY +% +% \newcounter{equation} +% Default is for left-hand side of equations to be flushleft. +% To make them flushright, do: +% \let\@eqnsel = \hfil +% + +\def\theequation{\arabic{equation}} + +% \jot = 3pt % Extra space added between lines of an eqnarray environment + +% The macro \@eqnnum defines how equation numbers are to appear in equations. +% +% \def\@eqnnum{(\theequation)} +% + +% TITLEPAGE +% In the normal environments, the titlepage environment does nothing but +% start and end a page, and inhibit page numbers. It also resets the +% page number to zero. +% + +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} + +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} + +% ARRAY AND TABULAR +% + +\arraycolsep 5pt % Half the space between columns in an array environment. +\tabcolsep 6pt % Half the space between columns in a tabular environment. +\arrayrulewidth .4pt % Width of rules in array and tabular environment. +\doublerulesep 2pt % Space between adjacent rules in array or tabular env. + +% TABBING +% +\tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.) + +% MINIPAGE +% \@minipagerestore is called upon entry to a minipage environment to +% set up things that are to be handled differently inside a minipage +% environment. In the current styles, it does nothing. + +% \skip\@mpfootins : plays same role for footnotes in a minipage as +% \skip\footins does for ordinary footnotes + +\skip\@mpfootins = \skip\footins + +% FRAMEBOX +% +\fboxsep = 3pt % Space left between box and text by \fbox and \framebox. +\fboxrule = .4pt % Width of rules in box made by \fbox and \framebox. + + +% **************************************** +% * SECTIONS * +% **************************************** +% +% DEFINE COUNTERS: +% +% \newcounter{NEWCTR}[OLDCTR] : Defines NEWCTR to be a counter, which is +% reset to zero when counter OLDCTR is stepped. +% Counter OLDCTR must already be defined. + +\newcounter {section} +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] + +% For any counter CTR, \theCTR is a macro that defines the printed version +% of counter CTR. It is defined in terms of the following macros: +% +% \arabic{COUNTER} : The value of COUNTER printed as an arabic numeral. +% \roman{COUNTER} : Its value printed as a lower-case roman numberal. +% \Roman{COUNTER} : Its value printed as an upper-case roman numberal. +% \alph{COUNTER} : Value of COUNTER printed as a lower-case letter: +% 1 = a, 2 = b, etc. +% \Alph{COUNTER} : Value of COUNTER printed as an upper-case letter: +% 1 = A, 2 = B, etc. +% + +\def\thesection {\arabic{section}} +\def\thesubsection {\thesection.\arabic{subsection}} +\def\thesubsubsection {\thesubsection .\arabic{subsubsection}} + + +% **************************************** +% * TABLE OF CONTENTS, ETC. * +% **************************************** +% +% A \subsection command writes a +% \contentsline{subsection}{TITLE}{PAGE} +% command on the .toc file, where TITLE contains the contents of the +% entry and PAGE is the page number. If subsections are being numbered, +% then TITLE will be of the form +% \numberline{NUM}{HEADING} +% where NUM is the number produced by \thesubsection. Other sectioning +% commands work similarly. +% +% A \caption command in a 'figure' environment writes +% \contentsline{figure}{\numberline{NUM}{CAPTION}}{PAGE} +% on the .lof file, where NUM is the number produced by \thefigure and +% CAPTION is the figure caption. It works similarly for a 'table' environment. +% +% The command \contentsline{NAME} expands to \l@NAME. So, to specify +% the table of contents, we must define \l@section, +% \l@subsection, ... ; to specify the list of figures, we must define +% \l@figure; and so on. Most of these can be defined with the +% \@dottedtocline command, which works as follows. +% +% \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE} +% LEVEL : An entry is produced only if LEVEL < or = value of +% 'tocdepth' counter. Note that \section is level 1, +% \subsection is level 2, etc. +% INDENT : The indentation from the outer left margin of the start of +% the contents line. +% NUMWIDTH : The width of a box in which the section number is to go, +% if TITLE includes a \numberline command. +% +% This command uses the following three parameters, which are set +% with a \def (so em's can be used to make them depend upon the font). +% \@pnumwidth : The width of a box in which the page number is put. +% \@tocrmarg : The right margin for multiple line entries. One +% wants \@tocrmarg > or = \@pnumwidth +% \@dotsep : Separation between dots, in mu units. Should be \def'd to +% a number like 2 or 1.7 + +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + + +% TABLEOFCONTENTS +% +% ++++ Multilingual (shapiro@inria 19-jan-88) +\def\contentsname{Contents} +\def\tableofcontents{\section*{\contentsname\@mkboth{\uppercase + {\contentsname}}{\uppercase{\contentsname}}} + \@starttoc{toc}} + +\def\l@part#1#2{\addpenalty{\@secpenalty} + \addvspace{2.25em plus 1pt} % space above part line + \begingroup + \@tempdima 3em % width of box holding part number, used by + \parindent \z@ \rightskip \@pnumwidth %% \numberline + \parfillskip -\@pnumwidth + {\large \bf % set line in \large boldface + \leavevmode % TeX command to enter horizontal mode. + #1\hfil \hbox to\@pnumwidth{\hss #2}}\par + \nobreak % Never break after part entry + \endgroup} + +\def\l@section#1#2{\addpenalty{\@secpenalty} % good place for page break + \addvspace{1.0em plus 1pt} % space above toc entry + \@tempdima 1.5em % width of box holding section number + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \bf % Boldface. + \leavevmode % TeX command to enter horizontal mode. + #1\hfil \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}} + +% LIST OF FIGURES +% +% ++++ Multilingual (shapiro@inria 19-jan-88) +\def\listfigurename{List of Figures} +\def\listoffigures{\section*{\listfigurename\@mkboth + {\uppercase{\listfigurename}}{LISTE DES FIGURES\uppercase + {\listfigurename}}}\@starttoc{lof}} + +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} + +% LIST OF TABLES +% +% ++++ Multilingual (shapiro@inria 19-jan-88) +\def\listtablename{List of Tables} +\def\listoftables{\section*{\listtablename\@mkboth + {\uppercase{\listtablename}}{\uppercase{\listtablename}}}\@starttoc{lot}} +\let\l@table\l@figure + + + +% **************************************** +% * BIBLIOGRAPHY * +% **************************************** +% +% The thebibliography environment executes the following commands: +% +% \def\newblock{\hskip .11em plus .33em minus -.07em} -- +% Defines the `closed' format, where the blocks (major units of +% information) of an entry run together. +% +% \sloppy -- Used because it's rather hard to do line breaks in +% bibliographies, +% +% \sfcode`\.=1000\relax -- +% Causes a `.' (period) not toproduce an end-of-sentence space. +% ++++ Multilingual (shapiro@inria 19-jan-88) +\def\refname{References} +\def\thebibliography#1{\section*{\refname\@mkboth + {\uppercase{\refname}}{\uppercase{\refname}}}\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 + +\def\@biblabel#1{#1\hfill} % Produces the label for a \bibitem[...] + % command. +\def\@cite#1{#1} % Produces the output of the \cite command. + +% extra space produced between multiple citations, e.g. +% \cite{foo87,bar88} --> Foo (1987), Bar (1988a) +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{, \penalty\@m}\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +\hbox{\csname b@\@citeb\endcsname}}}{#1}} + +% \bibliographystyle{paren} % Foo (1987), Foo and Bar (1988) style +\immediate\write\@auxout{\string\bibstyle{paren}} + +% **************************************** +% * THE INDEX * +% **************************************** +% +% THE THEINDEX ENVIRONMENT +% Produces double column format, with each paragraph a separate entry. +% The user commands \item, \subitem and \subsubitem are used to +% produce the entries, and \indexspace adds an extra vertical space +% that's the right size to put above the first entry with a new letter +% of the alphabet. + +\newif\if@restonecol + +% ++++ Multilingual (shapiro@inria 22-jan-88) +\def\indexname{Index} +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{\indexname}] + \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}\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} + + +% **************************************** +% * FOOTNOTES * +% **************************************** +% +% \footnoterule is a macro to draw the rule separating the footnotes from +% the text. It should take zero vertical space, so it needs a negative +% skip to compensate for any positive space taken by the rule. (See +% PLAIN.TEX.) + +\def\footnoterule{\kern-3\p@ + \hrule width .4\columnwidth + \kern 2.6\p@} % The \hrule has default height of .4pt . + +% \newcounter{footnote} + +% The numbering style (arabic, alph, etc.) for ordinary footnotes +% is defined by the macro \thefootnote. +% +% \@makefntext{NOTE} : +% Must produce the actual footnote, using \@thefnmark as the mark +% of the footnote and NOTE as the text. It is called when effectively +% inside a \parbox of width \columnwidth (i.e., with \hsize = +% \columnwidth). +% +% The following macro indents all lines of the footnote by 10pt, and +% indents the first line of a new paragraph by 1em. To change these +% dimensions, just substitute the desired value for '10pt' [in both +% places] or '1em'. The mark is flushright against the footnote. +% \long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize +% \advance\@tempdima-10pt\parshape \@ne 10pt \@tempdima}\par +% \parindent 1em\noindent \hbox to \z@{\hss$^{\@thefnmark}$}#1} +% +% A simpler macro is used, in which the footnote text is +% set like an ordinary text paragraph, with no indentation except +% on the first line of a paragraph, and the first line of the +% footnote. Thus, all the macro must do is set \parindent +% to the appropriate value for succeeding paragraphs and put the +% proper indentation before mark. + +\long\def\@makefntext#1{\parindent 1em\noindent + \hbox to 1.8em{\hss$^{\@thefnmark}$}#1} + +% \@makefnmark : A macro to generate the footnote marker that goes +% in the text. Default definition used. + + + +% **************************************** +% * FIGURES AND TABLES * +% **************************************** +% +% Float placement parameters. See LaTeX manual for their definition. +% +\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} + +% \@makecaption{NUMBER}{TEXT} : Macro to make a figure or table caption. +% NUMBER : Figure or table number--e.g., 'Figure 3.2' +% TEXT : The caption text. +% Macro should be called inside a \parbox of right width, with \normalsize. +% changed 25 Jun 86 to fix according to Howard Trickey: +% instead of \unhbox\@tempboxa\par we do #1: #2\par +% ++++ Multilingual (shapiro 30-mar-88) +\def\figuresepname{: } +\long\def\@makecaption#1#2{ + \vskip 10pt + \setbox\@tempboxa\hbox{#1{\figuresepname}#2} + \ifdim \wd\@tempboxa >\hsize % IF longer than one line: + #1{\figuresepname}#2\par % THEN set as ordinary paragraph. + \else % ELSE center. + \hbox to\hsize{\hfil\box\@tempboxa\hfil} + \fi} + +% To define a float of type TYPE (e.g., TYPE = figure), the document style +% must define the following. +% +% \fps@TYPE : The default placement specifier for floats of type TYPE. +% +% \ftype@TYPE : The type number for floats of type TYPE. Each TYPE has +% associated a unique positive TYPE NUMBER, which is a power +% of two. E.g., figures might have type number 1, tables type +% number 2, programs type number 4, etc. +% +% \ext@TYPE : The file extension indicating the file on which the +% contents list for float type TYPE is stored. For example, +% \ext@figure = 'lof'. +% +% \fnum@TYPE : A macro to generate the figure number for a caption. +% For example, \fnum@TYPE == Figure \thefigure. +% +% The actual float-making environment commands--e.g., the commands +% \figure and \endfigure--are defined in terms of the macros \@float +% and \end@float, which are described below. +% +% \@float{TYPE}[PLACEMENT] : Macro to begin a float environment for a +% single-column float of type TYPE with PLACEMENT as the placement +% specifier. The default value of PLACEMENT is defined by \fps@TYPE. +% The environment is ended by \end@float. +% E.g., \figure == \@float{figure}, \endfigure == \end@float. + + +% FIGURE + +\newcounter{figure} +\def\thefigure{\@arabic\c@figure} + +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +% ++++ Multilingual (shapiro@inria 11-mar-88) +\def\figurename{Figure} +\def\fnum@figure{\figurename{} \thefigure} +\def\figure{\@float{figure}} +\let\endfigure\end@float +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} + +% TABLE +% +\newcounter{table} +\def\thetable{\@arabic\c@table} + +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +% ++++ Multilingual (shapiro@inria 11-mar-88) +\def\tablename{Table} +\def\fnum@table{\tablename{} \thetable} +\def\table{\@float{table}} +\let\endtable\end@float +\@namedef{table*}{\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} + + +% **************************************** +% * TITLE AND ABSTRACT * +% **************************************** +% + +% \maketitle == +% BEGIN +% \par +% \begingroup +% redefine \@makefnmark so footnote marks take zero space (this make +% centering look better) +% \thefootnote == \fnsymbol{footnote} % to number by *, dagger, etc. +% if @twocolumn = true +% then \twocolumn[\@maketitle] +% else \@maketitle +% fi +% \thispagestyle{plain} +% \@thanks % \thanks defines \@thanks to have \footnotetext commands for +% % producing footnotes. +% \endgroup +% END + +\def\affiliation#1{\gdef\@affiliation{#1}} + +\def\and{, } + +\def\maketitle{\par + \begingroup + \def\thefootnote{\fnsymbol{footnote}} + \def\@makefnmark{\hbox + to 0pt{$^{\@thefnmark}$\hss}} + \if@twocolumn + \twocolumn[\@maketitle] + \else \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle \fi\thispagestyle{plain}\@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@affiliation{}\let + \thanks\relax} + +\def\@maketitle{\newpage + \null + \vskip 2em % Vertical space above title. + \begin{flushleft} + {\LARGE \@title \par} % Title set in \LARGE size. + \vskip 1.5em % Vertical space after title. + {\large % Authors aligned on a single line, + \lineskip .5em % in upper case + \uppercase{\@author}} + \vskip 1em % Vertical space after author. + \@affiliation % Affiliation of author + \end{flushleft} % No date + \par + \vskip 1.5em} % Vertical space after date. + +\def\abstract{\if@twocolumn +\section*{Abstract} +\else \small +\begin{center} +{\bf Abstract\vspace{-.5em}\vspace{0pt}} +\end{center} +\list{}{\listparindent 0pt + \itemindent\listparindent + \rightmargin\leftmargin \parsep 2ex plus 1pt}\item[] +\fi} + +\def\endabstract{\if@twocolumn\else\endlist\fi} + + +% **************************************** +% * PAGE STYLES * +% **************************************** +% +% The page style 'foo' is defined by defining the command \ps@foo. This +% command should make only local definitions. There should be no stray +% spaces in the definition, since they could lead to mysterious extra +% spaces in the output. +% +% The \ps@... command defines the macros \@oddhead, \@oddfoot, +% \@evenhead, and \@evenfoot to define the running heads and +% feet---e.g., \@oddhead is the macro to produce the contents of the +% heading box for odd-numbered pages. It is called inside an \hbox of +% width \textwidth. +% +% To make headings determined by the sectioning commands, the page style +% defines the commands \sectionmark, ... , where +% \sectionmark{TEXT} is called by \section to set a mark, and so on. +% The \...mark commands and the \...head macros are defined with the +% help of the following macros. (All the \...mark commands should be +% initialized to no-ops.) +% +% MARKING CONVENTIONS: +% LaTeX extends TeX's \mark facility by producing two kinds of marks +% a 'left' and a 'right' mark, using the following commands: +% \markboth{LEFT}{RIGHT} : Adds both marks. +% \markright{RIGHT} : Adds a 'right' mark. +% \leftmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot +% macro, gets the current 'left' mark. Works like TeX's +% \botmark command. +% \rightmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot +% macro, gets the current 'right' mark. Works like TeX's +% \firstmark command. +% The marking commands work reasonably well for right marks 'numbered +% within' left marks--e.g., the left mark is changed by a \section command and +% the right mark is changed by a \subsection command. However, it does +% produce somewhat anomalous results if two \bothmark's occur on the same page. +% +% Commands like \tableofcontents that should set the marks in some page styles +% use a \@mkboth command, which is \let by the pagestyle command (\ps@...) +% to \markboth for setting the heading or \@gobbletwo to do nothing. + +\mark{{}{}} % Initializes TeX's marks + +% \ps@empty and \ps@plain defined in LATEX.TEX + +% Definition of 'headings' page style +% Note the use of ##1 for parameter of \def\sectionmark inside the +% \def\ps@headings. +% + +\if@twoside % If two-sided printing. +\def\ps@headings{\let\@mkboth\markboth +\def\@oddfoot{}\def\@evenfoot{}% No feet. +\def\@evenhead{\rm \thepage\hfil \sl \leftmark}% Left heading. +\def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}% Right heading. +\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 % If one-sided printing. +\def\ps@headings{\let\@mkboth\markboth +\def\@oddfoot{}\def\@evenfoot{}% No feet. +\def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}% Heading. +\def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection\hskip 1em\relax \fi ##1}}}} +\fi + +% Definition of 'myheadings' page style. +% +\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{}} + + + +% **************************************** +% * MISCELLANEOUS * +% **************************************** +% +% DATE +% +\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} + + +% **************************************** +% * INITIALIZATION * +% **************************************** +% +% Default initializations + +\ps@plain % 'plain' page style +\pagenumbering{arabic} % Arabic page numbers +\onecolumn % Single-column. +\if@twoside\else\raggedbottom\fi % Ragged bottom unless twoside option. diff --git a/macros/latex209/contrib/misc/currency.sty b/macros/latex209/contrib/misc/currency.sty new file mode 100644 index 0000000000..be495ea26e --- /dev/null +++ b/macros/latex209/contrib/misc/currency.sty @@ -0,0 +1,17 @@ +% This file includes some useful hacks to include currency symbols other +% than the standard \$ and \pounds of LaTeX. It is a collection from kind +% individuals who have provided this code. +% +% If you have other currency symbols or fixes to enhance those in this file, +% please send them to the archist responsible for this collection: +% George D. Greenwade, Department of Economics and Business Analysis, Sam +% Houston State University, Huntsville, TX 77341 (409) 294-1265 +% BED_GDG@SHSU.BITNET +% +% Japanese Yen - provided by <sommer@binah.cc.brandeis.edu>, 17-APR-1991 +\newcommand{\yen}{{\ooalign{Y\crcr$=$}}} +% +% Alternate British Pounds Sterling - upright instead of italic - provided +% by <XITIJSCH@DDATHD21.BITNET>, 15-APR-1991 +\def\Pounds{{\rm \char'44}} + diff --git a/macros/latex209/contrib/misc/custombib.sty b/macros/latex209/contrib/misc/custombib.sty new file mode 100644 index 0000000000..9f03fa9bb7 --- /dev/null +++ b/macros/latex209/contrib/misc/custombib.sty @@ -0,0 +1,39 @@ +% custombib.sty - thebibliography with customizable text and sectioning +% +% This is a small modification of the standard command made by L. Lamport. +% +% Pablo A. Straub, University of Maryland, straub@cs.umd.edu +% +% 11/08/91 Posted to comp.text.tex +% 11/09/91 Add \bibliogrphyitem for extra customization +% 11/10/91 Posted again to comp.text.tex with extra customization +% +% An example of use: To use in report or book style, you should redefine +% \theblibliographysection. If you want it to be like an unnumbered chapter +% with an entry in the table of contents, the following will do. +% +% \renewcommand{\bibliographysection}{\addcontentsline +% {toc}{chapter}{\bibliographytext}\chapter*} +% +% Another example: To make the list appear as an enumeration (a number and a +% a period, instead of the number in square brackets), the following will do. +% +% \renewcommand{\bibliographyitem}[1]{#1.\hfil} + + +\newcommand{\bibliographysection}{\section*} + +\newcommand{\bibliographytext}{References} + +\newcommand{\bibliographyitem}[1]{[#1]} + +\def\thebibliography#1{\bibliographysection{\bibliographytext\@mkboth + {\uppercase{\bibliographytext}}{\uppercase{\bibliographytext}}}\list + {\bibliographyitem{\arabic{enumi}}} + {\settowidth\labelwidth{\bibliographyitem{#1}}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} + diff --git a/macros/latex209/contrib/misc/cyrillic.sty b/macros/latex209/contrib/misc/cyrillic.sty new file mode 100644 index 0000000000..a0218c7522 --- /dev/null +++ b/macros/latex209/contrib/misc/cyrillic.sty @@ -0,0 +1,26 @@ +% Written by Charles Karney (Karney%PPC.MFENET@NMFECC.ARPA) 1986/07/28. +% The cyrillic style option loads up the cyrillic fonts. It is assumed that +% cyracc.def is on the system. Only \textfont, \scriptfont, and +% \scriptscriptfont sizes are provided. 10pt, 11pt, 12pt styles are +% supported. The fonts are accessed via \cyr. E.g., {\cyr Zhurnal}. + +\input cyracc.def +\ifcase\@ptsize + \font\tencyr=mcyr10 + \font\sevencyr=mcyr7 + \font\fivecyr=mcyr6 +\or + \font\tencyr=mcyr10 scaled \magstephalf + \font\sevencyr=mcyr8 + \font\fivecyr=mcyr6 +\or + \font\tencyr=mcyr10 scaled \magstep1 + \font\sevencyr=mcyr8 + \font\fivecyr=mcyr6 +\fi + +\newfam\cyrfam +\textfont\cyrfam=\tencyr \scriptfont\cyrfam=\sevencyr + \scriptscriptfont\cyrfam=\fivecyr + +\def\cyr{\fam\cyrfam\tencyr\cyracc} diff --git a/macros/latex209/contrib/misc/dates.sty b/macros/latex209/contrib/misc/dates.sty new file mode 100644 index 0000000000..607d45d0ae --- /dev/null +++ b/macros/latex209/contrib/misc/dates.sty @@ -0,0 +1,288 @@ +% --- ------------------------------------------------------------------ +% --- dates.sty +% --- Flexible Date Macros for LaTeX, version 1.00--1 +% --- ------------------------------------------------------------------ +% --- Adrian F. Clark (alien@uk.ac.essex) 4-Aug-1992 +% --- ------------------------------------------------------------------ +% +% --- \today generates today's date. Alter this to suit +% --- the way you want it to appear. It is currently +% --- set up to generate dates in the form +% --- `Thursday 4th October 1066' +% +% --- \thisdayofweek generates today's day name (`Sunday', etc). +% --- \thisday generates today's day (`1', `2', etc). +% --- \thisdayth generates today's day (`1st', `2nd', etc), +% --- where the `st' etc are generated by \st etc. +% --- \thismonth generates today's month (`January', etc). +% --- \thisyear generates today's year. +% --- \thisphaseofmoon generates the current phase of the moon. +% +% --- \dayofweek{year}{month}{day} generates the day of the week for +% the given date. +% +% --- \phaseofmoon{year}{month}{day} generates the phase of the moon +% for the given date. +% +% --- \Sunday (etc) generates `Sunday' (etc). +% --- \January (etc) generates 'January' (etc). +% --- \NewMoon (etc) generates `new' (etc). +% +% --- \st generates a raised, reduced, underlined `st', as in 1st. +% --- \nd generates a raised, reduced, underlined `nd', as in 2nd. +% --- \rd generates a raised, reduced, underlined `rd', as in 3rd. +% --- \th generates a raised, reduced, underlined `th', as in 4th. + +% --- ------------------------------------------------------------------ +% --- The actual date macros. + +% --- As distributed, \today generates today's date in the style +% --- `Thursday 4th October 1066'. + +\def\today{\thisdayofweek\ \thisdayth\ \thismonth\ \thisyear} + +\def\thisday{\number\day} + +\def\thisdayth{\thisday \ifcase\day + \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th + \or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th + \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\st\fi} + +\def\thisdayofweek{\dayofweek{\year}{\month}{\day}} + +\def\thismonth{\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} + +\def\thisyear{\number\year} + +\def\thisphaseofmoon{\phaseofmoon{\year}{\month}{\day}} + +% --- ------------------------------------------------------------------ +% --- Names of days of the week, the months, and the phases of the moon. +% --- This makes it easier to change them for languages other than English. +% --- (And that's why they're not \@Sunday, etc). + +\def\Sunday{Sunday} +\def\Monday{Monday} +\def\Tuesday{Tuesday} +\def\Wednesday{Wednesday} +\def\Thursday{Thursday} +\def\Friday{Friday} +\def\Saturday{Saturday} + +\def\January{January} +\def\February{February} +\def\March{March} +\def\April{April} +\def\May{May} +\def\June{June} +\def\July{July} +\def\August{August} +\def\September{September} +\def\October{October} +\def\November{November} +\def\December{December} + +\def\NewMoon{new} +\def\WaxCresMoon{waxing crescent} +\def\FirstQuarterMoon{in its first quarter} +\def\WaxGibMoon{waxing gibbous} +\def\FullMoon{full} +\def\WaneGibMoon{waning gibbous} +\def\LastQuarterMoon{in its last quarter} +\def\WaneCresMoon{waning crescent} + + +% --- ------------------------------------------------------------------ +% --- Counters. Note that we use the same registers as TeX holds other +% --- things in (e.g., \count0 holds the page number). This requires +% --- that \@savestyle, \@setstyle, \dayofweek and \phaseofmoon perform +% --- all their register manipulations within a group. This may seem +% --- a bit messy, but it saves having eight registers permanently set +% --- aside just for date calculation. + +\def\@cent{\count0 } % century number (1979 == 20) +\def\@diy{\count1 } % day in the year +\def\@dow{\count2 } % gets day of the week +\def\@epact{\count3 } % age of the moon on Jan. 1 +\def\@golden{\count4 } % Moon's golden number +\def\@leap{\count5 } % leap year fingaler +\def\@x{\count6 } % temp register +\def\@y{\count7 } % another temp register + +% --- ------------------------------------------------------------------ +% --- For `old' (pre version 2.10) LaTeX, these macros ensure the +% --- smaller text comes out in the right font by saving the font +% --- family before reducing the size, then restoring it. +% --- (This hack was suggested by Leslie Lamport.) Of course, it +% --- requires that the font in use when the caller is invoked has +% --- a sensible family. + +% --- For LaTeX 2.10 onwards, which uses the font selection scheme due +% --- to Mittelbach and Shoepf, such a hack is not necessary. The +% --- macros detect which version is in use automagically. + +\def\st{\alien@up{st}} +\def\nd{\alien@up{nd}} +\def\rd{\alien@up{rd}} +\def\th{\alien@up{th}} + +\def\alien@up#1{{\@savestyle\thinspace$^{\underline{\hbox{% + \scriptsize\@setstyle#1\fam=-1 }}}$}} + +% --- Macros to save and restore the font family. + +\def\@savestyle{\count0=\the\fam} + +\def\@setstyle{\ifcase\count0\rm\or\mit\or\cal\or\rm% what's family 3? + \or\it\or\sl\or\bf\or\tt\fi} + +% --- ------------------------------------------------------------------ +% --- The nitty-gritty. + +% --- The day of the week (\Sunday, etc.) is inserted into the text +% --- by \dayofweek. (This uses registers \@dow, \@leap, \@x and \@y.) +% --- I acquired this from elsewhere; it was apparently written by +% --- Martin Minow, now a DEC employee. The algorithms is: +% --- leap = year + (month - 14)/12; +% --- dow = (13 * (month + 10 - (month + 10)/13*12) - 1)/5 +% --- dow += day + 77 + 5 * (leap % 100)/4 +% --- dow += leap / 400 +% --- dow -= leap / 100 * 2 +% --- dow = (dow % 7) + +\def\dayofweek#1#2#3{{\@leap=#2\advance\@leap by -14\divide\@leap by 12\relax + \advance\@leap by #1\relax + \@dow=#2\advance\@dow by 10\relax + \@y=\@dow \divide\@y by 13\multiply\@y by 12\relax + \advance\@dow by -\@y \multiply\@dow by 13\relax + \advance\@dow by -1 \divide\@dow by 5\relax + \advance\@dow by #3\advance\@dow by 77\relax + \@x=\@leap \@y=\@x \divide\@y by 100\multiply\@y by 100\relax + \advance\@x by -\@y \relax + \multiply\@x by 5\divide\@x by 4\advance\@dow by \@x + \@x=\@leap \divide\@x by 400\advance\@dow by \@x + \@x=\@leap \divide\@x by 100\multiply\@x by 2\advance\@dow by -\@x + \@x=\@dow \divide\@x by 7\multiply\@x by 7\advance\@dow by -\@x + \ifcase\@dow \Sunday\or \Monday\or \Tuesday\or \Wednesday\or + \Thursday\or \Friday\or \Saturday\fi}} + +\endinput + +% +% --- Likewise, \phaseofmoon inserts the phase of the moon into the +% --- text. This was written by the same person as \dayofweek. +% --- The routine calculates the year's epact (the age of the moon on Jan 1.), +% --- adds this to the number of days in the year, and calculates the phase +% --- of the moon for this date. It returns the phase as a string, e.g., +% --- \NewMoon, \FullMoon, etc. +% +% --- In the algorithm: +% --- diy is the day of the year - 1 (i.e., Jan 1 is day 0). +% --- golden is the number of the year in the Mentonic cycle, used to +% --- determine the position of the calender moon. +% --- epact is the age of the calender moon (in days) at the beginning +% --- of the year. To calculate epact, two century-based +% --- corrections are applied: +% --- Gregorian: (3 * cent)/4 - 12 +% --- is the number of years such as 1700, 1800 when +% --- leap year was not held. +% --- Clavian: (((8 * cent) + 5) / 25) - 5 +% --- is a correction to the Mentonic cycle of about +% --- 8 days every 2500 years. Note that this will +% --- overflow 16 bits in the year 409600. Beware. +% --- The algorithm is accurate for the Gregorian calender only. +% +% --- The magic numbers used in the phase calculation are: +% --- 29.5 The moon's period in days. +% --- 177 29.5 scaled by 6 +% --- 22 (29.5 / 8) scaled by 6 (this gets the phase) +% --- 11 ((29.5 / 8) / 2) scaled by 6 +% +% --- Theoretically, this should yield a number in the range 0 .. 7. However, +% --- two days per year, things don't work out too well. +% +% --- Epact is calculated by the algorithm given in Knuth vol. 1 (Calculation +% --- of Easter). See also the article on Calenders in the Encyclopaedia +% --- Britannica and Knuth's algorithm in CACM April 1962, page 209. +% +\def\phaseofmoon#1#2#3{{% + \@diy=#3 \advance\@diy by \ifcase#2 % Jan 1 == 0 + -1\or -1\or 30\or 58\or 89\or 119\or 150\or % Jan .. Jun + 180\or 211\or 241\or 272\or 303\or 333\fi % Jul .. Dec +% if ((month > 2) && ((year % 4 == 0) && +% ((year % 400 == 0) || (year % 100 != 0)))) +% diy++; /* Leapyear fixup */ + \ifnum #2>2 + \@x=#1 \@y=\@x \divide\@y by 4 \multiply\@y by 4 \advance\@x by -\@y + \ifnum \@x=0 % month > 2 and maybe leap year + \@x=#1 \@y=\@x \divide\@y by 400 \multiply\@y by 400 \advance\@x by -\@y + \ifnum \@x=0 % 2000 is a leap year + \advance\@diy by 1 % so it's one day later + \else % not 2000, check other '00's + \@x=#1 \@y=\@x \divide\@y by 100 \multiply\@y by 100 \advance\@x by -\@y + \ifnum \@x>0 % not some other '00' year + \advance\@diy by 1 % it's still one day later + \fi % not odd century + \fi % not 2000-type century + \fi % not leapish year + \fi % not march or later +% cent = (year / 100) + 1; /* Century number */ +% golden = (year % 19) + 1; /* Golden number */ + \@cent=#1 \divide\@cent by 100 \advance\@cent by 1 + \@golden=#1 + \@y=#1 \divide\@y by 19 \multiply\@y by 19 \advance\@golden by -\@y + \advance\@golden by 1 +% epact = ((11 * golden) + 20 /* Golden number */ +% + (((8 * cent) + 5) / 25) - 5 /* 400 year cycle */ +% - (((3 * cent) / 4) - 12)) % 30; /* Leap year correction */ + \@epact=11 \multiply\@epact by \@golden + \advance\@epact by 20 + \@x=8 \multiply\@x by \@cent \advance\@x by 5 + \divide\@x by 25 \advance\@x by -5 + \advance\@epact by \@x + \@x=3 \multiply\@x by \@cent \divide\@x by 4 \advance\@x by -12 + \advance\@epact by -\@x + \@y=\@epact \divide\@y by 30 \multiply\@y by 30 \advance\@epact by -\@y +% if (epact <= 0) +% epact += 30; /* Age range is 1 .. 30 */ +% if ((epact == 25 && golden > 11) || epact == 24) +% epact++; + \ifnum \@epact<0 + \advance\@epact by 30 + \fi + \ifnum \@epact=25 + \ifnum \@golden>11 + \advance \@epact by 1 + \fi + \else + \ifnum \@epact=24 + \advance \@epact by 1 + \fi + \fi +% +% --- Calculate the phase, using the magic numbers defined above. +% --- Note that phase may be equal to 8 (== 0) on two days of the year +% --- due to the way the algorithm was implemented. +% --- phase = (((((diy + epact) * 6) + 11) % 177) / 22) & 7; +% + \@x=\@diy \advance\@x by \@epact \multiply\@x by 6 \advance\@x by 11 + \@y=\@x \divide\@y by 177 \multiply\@y by 177 \advance\@x by -\@y + \divide\@x by 22 + \ifcase\@x \NewMoon\or \WaxCresMoon\or \FirstQuarterMoon\or + \WaxGibMoon\or \FullMoon\or \WaneGibMoon\or + \LastQuarterMoon\or \WaneCresMoon\or \NewMoon\fi}} + +REVISION HISTORY + +1.00--0 3-Aug-1990 First version +1.00--1 4-Aug-1992 Corrected \dayofweek: it was generating + additional spaces before the day-name: this was + significant in {tabular} environments, and + screwed up alignment no end. Disabled the + \phaseofmoon definitions, which are of little + interest to most people. + +% --- End of dates.sty + diff --git a/macros/latex209/contrib/misc/dayofweek.sty b/macros/latex209/contrib/misc/dayofweek.sty new file mode 120000 index 0000000000..64ffeb4e3c --- /dev/null +++ b/macros/latex209/contrib/misc/dayofweek.sty @@ -0,0 +1 @@ +../../../generic/misc/dayofweek.tex
\ No newline at end of file diff --git a/macros/latex209/contrib/misc/db.sty b/macros/latex209/contrib/misc/db.sty new file mode 100644 index 0000000000..983152823f --- /dev/null +++ b/macros/latex209/contrib/misc/db.sty @@ -0,0 +1,236 @@ + +%%%%%%%%%%%%%%% DATABASE STYLE %%%%%%%%%%%%%%%%%% + +% db.sty +% +% Style to generate listings, to send out letters, etc. using +% a database. +% +% Version 2.1 (11/20/91) +% +% Written by George Panagopoulos (georgios@umiacs.umd.edu) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\long\def\DOCCOMMENT#1\ENDDOCCOMMENT{} + +\DOCCOMMENT + +%%%%%%%%%%%% SAMPLE DATABASE FILE mydb.tdb: + +% Schema definition + +\fields{FName, LName, + Email, Addr, + local} + +% Database + +\tuple{FName= George, + LName= Panagopoulos, + Addr= {CS Dept., U of MD, College Park 20742}, + Email= {\tt georgios@umiacs.umd.edu}, + local= 1} + +\tuple{FName= Somebody, + LName= Else, + Email= {\tt sb@elsewhere}} % all other fields empty + +\tuple{FName= Ten, + LName= \FirstName} + +%%%%%%%%%%%%% SAMPLE USE FILE mydb.tex: + +\documentstyle[db]{article} + +\begin{document} + +% List 1 + +\newcommand{\tupletext}{\thetuplectr & \FName\ \LName & \Email \\} +\begin{tabular}{rll} + \db{mydb} % Lists all +\end{tabular} +=== +\thetuplectr\ person(s) listed + +% List 2 + +\renewcommand{\tupletext}{\FName\ (\Email)} +\ref{num:tuples} local person(s): + +\begin{enumerate} + \db{mydb}[local] % lists all that have nonempty \local + \label{num:tuples} +\end{enumerate} + +\end{document} + +%%%%%%%%%%%%% OUTPUT of mydb.tex: + +1 George Panagopoulos georgios@umiacs.umd.edu +2 Somebody Else sb@elsewhere +3 Ten Ten +=== +3 person(s) listed + +1 person(s) below: + +1. George (georgios@umiacs.umd.edu) + +%%%%%%%%%%%%%% NOTES (refer to example above) + +Database files have the extension ".tdb". + +Field order is irrelevant. + +A subset of the fields may be given as argument in the \tuple command. +The rest become empty. + +TeX/LaTeX commands are valid inside field values. + +Other fields are valid inside field values. + +A field value must not contain a comma, unless the comma is enclosed +in braces. + +White space is insignificant outside \fields and \tuple commands in +the database file. + +White space is insignificant inside a \fields or a \tuple command, +except between the first letter of a field name and the following +equal sign, and between the first letter of a field value and the +following comma or closing brace. +Therefore: + In a \fields command, *there must be no space between the field name + and the following comma or closing brace*: + \fields{ Name, Addr} + is valid, but + \fields{Name ,Addr} + is invalid, and so is + \fields{Name,Addr } + In a \tuple command, *there must be no space between the field name + and the equal sign, and no unwanted spaces between the field value + and the following comma or closing brace*: + \tuple{ Name= x xx , Addr= yy y } + is equivalent to + \tuple{Name={x xx },Addr={yy y }}, + but + \tuple{Name =xxx,Addr=yyy} + is invalid. + +Beware of conflicts between field names and other TeX macros. The +\fields command issues a warning if your field name conflicts with an +already defined macro, but goes on to redefine it anyway. + +The field macros become undefined after the execution of the the \db +command. The old values (if applicable) are NOT restored. + +The same database and more than one databases may be included in the +same document. + +The counter {tuplectr} is used to count tuples. The macro \thetuplectr +may be used and/or modified at wish. The value of the counter is saved +in the \ref variable in the end of the \db command. + +\ENDDOCCOMMENT + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcounter{tuplectr} + +%%%%%%%%%%%% USEFUL MACROS + +\def\ignorewhitespace{\catcode`\ =9\catcode`\^^M=9} +\def\noignorewhitespace{\catcode`\ =10\catcode`\^^M=5} + +\ignorewhitespace + +\def\db@ifb#1{ % trim one space from #1, if needed + \ifx \space #1 + \else #1 \fi} + +%%%%%%%%%%%% SCHEMA READING + +\def\chk@fld@name#1{ % check fldname #1 for conflict with other macros + \expandafter\ifx \csname#1\endcsname \relax % if undefined + \else + \global\expandafter\let\csname#1\endcsname\relax % undefine macro + \typeout{Warning: \space field \space name \space + \expandafter\string\csname#1\endcsname + \space redefines \space a \space TeX \space macro} + \fi} + +\def\@field#1,{ % expand \init@fields with: \gdef\#1{} (#1=fldname) + % and \undef@fields with: \global\let\#1\relax + \edef\fld@name{\db@ifb#1} + \chk@fld@name{\fld@name} + \xdef\init@fields{ + \init@fields + \expandafter\gdef\csname\fld@name\endcsname{}} + \xdef\undef@fields{ + \undef@fields + \global\expandafter\let\csname\fld@name\endcsname\relax}} + +\def\parse@fld@names#1{ % set \init@fields to clear all fields + % and \undef@fields to undef all field macros + \@for\@args:=#1 + \do {\expandafter\@field\@args,}} + +\def\fields#1{ % read field names (keeps ignoring whitespace) + \xdef\init@fields{} + \xdef\undef@fields{} + \parse@fld@names{#1}} + +%%%%%%%%%%%% TUPLE PARSING + +\def\@setfield#1=#2,{ + \expandafter\xdef\csname\db@ifb#1\endcsname{#2}} + +\def\parse@fields#1{ + \@for\@args:=#1 + \do {\expandafter\@setfield\@args,}} + +\def\print@tuple{ % print tuple value as requested + % \db@flag is not expanded and contains the name of a field + \edef\db@flag@val{\db@flag} % eval \db@flag + \ifx \db@flag@val \empty % ignore tuple if \db@flag=\empty + \else + \refstepcounter{tuplectr} + \tupletext + \fi} + +%%%%%%%%%%%% TUPLE READING + +\def\@tuple#1{ % parse tuple and call \print@tuple + \init@fields % empty field values + \parse@fields{#1} + \print@tuple + \ignorewhitespace} + +\def\tuple{ % read tuple, print \tupletext if \db@flag not empty + \noignorewhitespace % will be restored by \@tuple + \@tuple} + +\def\notuple#1{} % ignore entry + +%%%%%%%%%%%% DB READING + +\def\@db#1[#2]{ % #1=file, #2=field not to be empty for \tupletext + \ifx . #2 + \gdef\db@flag{1} % always nonempty + \else + \xdef\db@flag{\csname#2\endcsname} + \fi + \setcounter{tuplectr}{0} + \ignorewhitespace + \@input{#1.tdb} + \undef@fields + \noignorewhitespace} + +\def\db#1{ % read database, print \tupletext for each included tuple + \@ifnextchar [ + {\@db#1} + {\@db#1[.]}} + +\noignorewhitespace diff --git a/macros/latex209/contrib/misc/dblitem.sty b/macros/latex209/contrib/misc/dblitem.sty new file mode 100644 index 0000000000..778f5fae67 --- /dev/null +++ b/macros/latex209/contrib/misc/dblitem.sty @@ -0,0 +1,45 @@ +\topmargin -.5in +\oddsidemargin -.1in +\textheight 8.9in +\textwidth 6.5in +\overfullrule=0pt +\def\header#1#2{\parindent0em {#1 \hfill #2} \vskip.2in \parindent1.7em} +\def\@oddfoot{\rm SYNCH User's Guide \hfil \thepage \hfil \today} +\def\section{\@startsection {section}{1}{\z@}{+3.5ex plus +1ex minus + +.2ex}{2.3ex plus .2ex}{\normalsize\rm}} +\def\nbrlineone{\par\smallskip \noindent +\verb=----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8= \\} +\def\nbrlinetwo{\verb=----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8= \\ } +\def\char{{\sf (CHAR) }} +\def\int{{\sf (INTEGER) }} +\def\flpt{{\sf (FL PT) }} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Macros for "double items" % +% Modified version of \item macro and context on % +% p. 355 of TeXBook % +% % +% Norman J. Richert March 1990 % +% Univ. of Houston-Clear Lake % +% e-mail: richert@cl.uh.edu % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newskip\dblskip % Box register w/dblskip width +\dblskip=5pc % Dblskip width of 6 picas +\newskip\firstdbl % Box register w/firstdbl width +\firstdbl=4pc % Firstdbl width of 4 picas +\newskip\seconddbl % Box register w/seconddbl width +\seconddbl=2pc % Seconddbl width of 1 picas +\def\dblhang{\hangindent\dblskip} % Indent width of dblskip +\def\dbltextindent#1#2{\noindent\hskip\dblskip + % No indent, horiz. skip of dblskip +\llap{\hbox to\dblskip{\hbox to\firstdbl{#1\hfil}% + % left lap with 2 hbox spreads to arg1 +\hbox to \seconddbl{#2\hfil}}}\ignorespaces} + % hbox spread to arg2 +\def\dblitem{\vskip6pt\dblhang\dbltextindent} +\def\dblitemi{\vskip-.1pc\dblhang\dbltextindent} + % Definition of dblitem +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/macros/latex209/contrib/misc/dectab.sty b/macros/latex209/contrib/misc/dectab.sty new file mode 100644 index 0000000000..e9892f9f90 --- /dev/null +++ b/macros/latex209/contrib/misc/dectab.sty @@ -0,0 +1,49 @@ +% DECTAB.STY (April 27, 1991) +% Allows decimal alignment in tabular environment +% \dec definitions taken from REVTEX.STY +% by Charles Franklin, April 27, 1991 +% (C38871CF@WUVMD.WUSTL.EDU or C38871CF@WUVMD.Bitnet) +% +% USAGE: For decimal alignment in a table, use \dec 3.14 for +% the cell entry. The column should be center aligned +% to achieve the desired effect. +% For example: +% +% \begin{tabular}{lcc} +% +% Constant & \dec -1.461 & \dec -0.724 \\ +% Standard Error & \dec (0.422) & \dec (0.455) \\ +% +% Note that a `.' MUST appear for the alignment to work. +% Use `\dec 520.' NOT `\dec 520' for integers. +% +% DECTAB also defines \ra, \la, \ca for easy modification of +% global alignments. These produce local right, left and center +% alignments of the cell entry. If there are spaces in the cell +% entry, enclose the contents in {...}, eg \la {This Column} +% +\typeout{Document Style Option `dectab', version April 27, 1991} + +\newdimen\@Ldec \newdimen\@Rdec + +\def\dec #1.#2 {\hbox to\@Ldec{\hss#1}\def\test{#2}% +\ifx\test\empty\hbox to\@Rdec{\hfill}\else\hbox to\@Rdec{.#2\hss}\fi +} + +\def\setdec #1.#2 {\relax% + \bgroup + \setbox0\hbox{\kern1pt\relax#1}\setbox1\hbox{\kern1pt\relax#2}% + \global\@Ldec\wd0\global\@Rdec\wd1% + \egroup +} + +\setdec 000.000 % default size of 3 digits on each side + +% Following defs allow easy modification of global alignment in +% tables. \ra, \la, \ca for right, left and center alignments. + +\def\ra #1 {\multicolumn{1}{r}{#1}} +\def\la #1 {\multicolumn{1}{l}{#1}} +\def\ca #1 {\multicolumn{1}{c}{#1}} + +% end DECTAB.STY diff --git a/macros/latex209/contrib/misc/deflist.sty b/macros/latex209/contrib/misc/deflist.sty new file mode 100644 index 0000000000..621e466472 --- /dev/null +++ b/macros/latex209/contrib/misc/deflist.sty @@ -0,0 +1,16 @@ +% *** DEFLIST **** +% +% Aufruf: \begin{deflist}{Label} +% \item[label] TeX +% \end{deflist} +% erzeugt: Liste, bei der das laengste Label die Einrueckungstiefe bestimmt +% +%\def\deflabel#1{\bf #1\hfill} +\def\deflabel#1{#1\hfill} +\def\deflist#1{ +% \list{}{\settowidth{\labelwidth}{\bf #1} + \list{}{\settowidth{\labelwidth}{#1} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \let\makelabel \deflabel}} +\let\enddeflist\endlist diff --git a/macros/latex209/contrib/misc/deleq.sty b/macros/latex209/contrib/misc/deleq.sty new file mode 100644 index 0000000000..1b3df7c671 --- /dev/null +++ b/macros/latex209/contrib/misc/deleq.sty @@ -0,0 +1,359 @@ +% The style option file "deleq.sty" is found after these instructions, +% right before the .sty-file is a line with 30 percentage-signs. +% +% +% LaTeX Macro for Partial Numbering of Equations +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +% +% by Mats Dahlgren, <matsd@physchem.kth.se> +% or <mats@fenk.wau.nl>, June 1994 +% +% Version 3.0, June 22, 1994 +% Version 3.02, Sept. 8, 1994 +% +% NOTICE: This version of deleq.sty (3.02) is the last which runs +% under LaTeX 2.09. It is not maintained any longer. All +% improvements and changes are done to the file for LaTeX2e, +% which have a version number of 4.0 (or higher). Useres +% are urged to change to LaTeX2e and a newer version of deleq.sty. +% +% CHANGES: A few font-testings have been included, which - hopefully - +% makes deleq.sty v.3.02 compatible with also other font +% selection schemen than NFSS2. +% +% deleq.sty is a LaTeX macro makes partial numbering of equations +% possible. It is meant to be used when numbering such as 3a, 3b, etc. +% is desired. The default is to give an equation number like '3a' +% without period and with the 'a' typeset in roman font. It can be used +% in 'article' as well as 'book' and 'report' document styles. The +% examples given below are valid for 'article' styled documents. +% Both right aligned and left aligned equation numbers are avaliable. +% Equations can be numbered either 3, 3a, 3b, ..., or 2, 3a, 3b, .... +% Also, if equation numbers within eqnarray-like environments can be +% numbered 3, 3a, 3b,... or starting at 3a, which can follow both after +% equation 2b or 3. An array environment can have its first equation +% numbered 3b if the nearest previous equation is 3a. Within the +% array environment, equations can be numbered 3a, 3b, 4, 4a, 4b, 5a, 5b, +% etc., and also not numbered lines are possible ('\nonumber' works). +% Furthermore, equation numbers can be "recycled". If equation 3 is repeated +% after equation 8, it can still have the numbering set to 3, and be +% followed by (a new) equation 9. "Recycled" equation numbers can +% receive partial numbers (3a, 3b, ...); partially numbered equations +% can also be "recycled" (but at this stage, the latter can not receive +% new partial numbers neatly, it will come out like '3ba' if eqution 3b +% is the "recycled" equation). A command for using references in mathmode +% which avoids the eroor message "Don't use \bf in mathmode" when processed +% is also included. +% +% deleq.sty version 3.0 has been tested with LaTeX 2.09 under UNIX. Please +% send bug reports, corrections, additions, suggestions, etc to me at +% <matsd@physchem.kth.se>. Use the file at your own pleasure and risk. +% (Command names are a mixture of LaTeX, Swedish and a bit of the author's +% fantasy...) +% +% Enjoy your LaTeX! +% mats d. +% +% +% Requirements: The file 'deleq.sty' must be available in the user's +% 'TEXINPUTS' directories. +% +% Usage: The macro is included by stating 'deleq' as one of the +% options with the '\documentstyle' command. +% +% Environments: The macro defines the following eight environments: +% deqn environment for automatic numbering of the +% first equation of type 3a +% dleqn 'deqn' for left-aligned numbers +% ddeqn used for automatic numbering of the +% equations following the one in 'deqn'; +% see also details below +% ddleqn 'ddeqn' for left-aligned numbers +% deqarr environment for automatic partial equation +% numbering used in 'eqnarray' environment +% dleqarr 'deqarr' for left-aligned numbers +% ddeqar similar to 'deqarr' environment, but more +% flexible, see details below +% ddleqar 'ddeqar' for left-aligned numbers +% +% Commands: The macro defines the following thirteen commands: +% \nydeqno +% \heqno +% \nydeleqno +% \nydelleqno +% \deleqno +% \delleqno +% \reqno{FOO} +% \rleqno{FOO} +% \rndeqno{FOO} +% \rndleqno{FOO} +% \rdeqno{FOO} +% \rdleqno{FOO} +% \mthref{FOO} +% +% Notice: 1. If you use '\nydeleqno', '\nydelleqno', '\deleqno', +% '\delleqno', \nydeqno', '\heqno', '\reqno', '\rleqno' +% '\rndeqno', '\rndleqno', '\rdeqno', or '\rdleqno' in +% combination with '\label{FOO}', '\label{FOO}' should +% appear after the 'deleq'-command; +% 2. If you change the appearance of equation numbers (e.g. use +% '[2]' instead of '(2)'), deleq':s commands may not typeset +% the partial equation numbers like your ordinary ones. +% +% Syntax: Here follows a more detailed description of the different +% environments and commands. +% +% \begin{deqn} typesets an equation just like \begin{equation} .. +% ..\end{deqn} \end{equation} does, but gives it a number such as +% '3a' instead of '3' (always 'a'). +% +% \begin{dleqn} typesets an equation just like \begin{deqn} .. \end{deqn} +% ..\end{dleqn} does, but with the equation number left-aligned. +% +% \begin{ddeqn} typesets an equation just like \begin{equation} .. +% ..\end{ddeqn} \end{equation} does, but gives it a number such as +% '3b', '3c'... instead of '3', '4'... when following after +% another partially numbered equation. When following +% after an ordinarily numbered equation ('3') it gives +% a partial equation number with the last used ordinary +% equation number, e.g. '3a'. Can be made to produce the +% result of 'deqn' environment by the use of '\nydeqno'. +% +% \begin{ddleqn} typesets an equation just like \begin{ddeqn} .. \end{ddeqn} +% ..\end{ddleqn does, but with the equation number left-aligned. +% +% \begin{deqarr} typesets an equation array just like \begin{eqnarray} .. +% ..\end{deqarr} \end{eqnarray} does, but gives the first numbered +% equation a number like '3a' instead of '3' (always 'a'), +% and the following '3b', '3c' etc. The '\nonumber' command +% works just like in the 'equationarray' environment. +% +% \begin{dleqarr} typesets an equation array just like \begin{dleqarr} .. +% ..\end{dleqarr} \end{dleqarr} does, but with the equation numbers +% left-aligned. +% +% \begin{ddeqar} typesets an equation array just like \begin{eqnarray} .. +% ..\end{ddeqar} \end{eqnarray} does, but gives the equation numbers such +% as '3a' if following after an equation numbered '3' +% (ordinary equation number) and numbers such as '3c' if +% following after a partially numbered equation '3b'. +% Can be made to produce the result of 'deqarr' environment +% by the use of '\nydeqno'. The '\nonumber' command +% works just like in the 'equationarray' environment. +% +% \begin{ddleqar} typesets an equation array just like \begin{ddleqar} .. +% ..\end{ddleqar} \end{ddleqar} does, but with the equation numbers +% left-aligned. +% +% \nydeqno Used within 'deqarr', 'dleqarr', 'ddeqar', or 'ddleqar' +% environments to step the main equation number by one +% and reset the partial equation number to 'a'; thus, +% '\nydeqno' gives equation number '4a' when following +% equation '3c'. +% +% \heqno Used within 'deqarr', 'dleqarr', 'ddeqar', or 'ddleqar' +% environments to step the main equation number by one and +% to produce an ordinary equation number; thus, gives +% equation number '4' when following equation '3c'. +% Equations following the '\heqno'-ed will be partially +% numbered with the '\heqno'-ed equation's number as the +% main number, e.g. '4a' (unless it has a '\nydeqno' +% command, which in this case would produce the equation +% number '5a'). +% +% \nydeleqno gives a new partial equation number when used in $$ ... $$. +% Thus, writing '$$ ... \nydeleqno $$' is equivalent to +% writing '\begin{deqn} ... \end{deqn}'. +% +% \nydelleqno gives a new partial left-aligned equation number when +% used in $$ ... $$. Thus, writing '$$ ... \nydelleqno $$' +% is equivalent to writing '\begin{dleqn} ... \end{dleqn}'. +% +% \deleqno gives a partial equation number when used in $$ ... $$. +% Thus, writing '$$ ... \deleqno $$' is equivalent to +% writing '\begin{ddeqn} ... \end{ddeqn}'. +% +% \delleqno gives a partial left-aligned equation number when +% used in $$ ... $$. Thus, writing '$$ ... \delleqno $$' +% is equivalent to writing '\begin{ddleqn} ... \end{ddleqn}'. +% +% \reqno{FOO} is used when repeating equations with its original number. +% '\reqno' takes the argument 'FOO', which has to be defined +% by a '\label{FOO}' in the original equation. It can +% only be used within $$ ... $$. It does not affect the +% equation number counter, nor the partial equation number +% counter. However, it resets the partial equation number +% counter for the '\rndeqno', '\rndleqno', '\rdeqno', and +% '\rdleqno' commands. If used with a '\label{FOOO}' +% command, the .aux-file will only contain the page number +% of label {FOOO}. +% +% \rleqno{FOO} same as '\reqno{FOO}' but left-aligns the equation number. +% +% \rndeqno{FOO} adds a partial equation number to an old equation number, +% specified by the FOO label. If FOO refers to equation +% '4', '\rdeqno{FOO}' will result in equation number '4a' +% (always 'a'). It can only be used within +% $$ ... $$. It does not affect the equation number counter, +% nor the partial equation number counter. However, it +% resets the partial equation number counter for the +% '\rndeqno', '\rndleqno', '\rdeqno', and '\rdleqno' commands. +% The argument of '\rndeqno' follows the same rules as that of +% '\reqno'. When used with the '\label{FOOO}' command, a +% reference to FOOO will only return the partial equation +% number. To make a complete reference to an equation +% which has a '\rndeqno' command, say '\ref{FOO}\ref{FOOO}'. +% +% \rndleqno{FOO} same as '\rndeqno{FOO}' but left-aligns the equation number. +% +% \rdeqno{FOO} same as '\rndeqno{FOO}' but without resetting any +% equation number counter and giving consecutive partial +% equation numbers ('4b', '4c', etc.). +% NOTE: There is nothing preventing the repeated use of +% '\rndeqno{FOO}' and '\rdeqno{FOO}' for the same label +% FOO. This will result in numbering such as '3a' (if +% FOO refers to equation '3') occuring several times. +% +% \rdleqno{FOO} same as '\rdeqno{FOO}' but left-aligns the equation number. +% +% \mthref{FOO} same as ordinary '\ref{FOO}' but does not type-set the +% '??' in '\bf' font if occurring within mathmode. +% 'deleq.sty' makes use of this to avoid interruptions when +% LaTeX-ing documents containing '\reqno', '\rleqno', +% '\rndeqno', '\rndleqno', '\rdeqno', or '\rdleqno'. It +% can be used also outside mathmode, and behaves then +% just like '\ref{FOO}'. Warnings are the same as +% when using '\ref{FOO}'. +% +% +% The file itself begins here +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% deleq.sty Version 3.02, Sept. 8, 1994 +% (c) 1994 by Mats Dahlgren (matsd@physchem.kth.se or mats@fenk.wau.nl) +% +\typeout{deleq.sty included, version 3.02 (Sept. 8, 1994). (c) 1994 by Mats Dahlgren} +%% Part 0: Compatibility with older TeX/LaTeX versions than 3.141/2.09 +\@ifundefined{mathrm}{\def\mathrm{\rm}}{\def\rm{\mathrm}} +\@ifundefined{mathcal}{\def\mathcal{\cal}}{} +\@ifundefined{reset@font}{\def\reset@font{\hspace*{0pt}}}{} +\def\deleqver{{\tt deleq.sty} version 3.02 (Sept.~8, 1994)} +%% Part 1: Counters etc. +\newcounter{deleq}[equation] +\newcounter{Deleq} +\newcount\@deqpen +\newcount\@deqcnt +\def\aLph#1{\@aLph{\@nameuse{c@#1}}} +\def\@aLph#1{\ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or + z\else\@ctrerr\fi} +\def\thedeleq {\theequation\mathrm{\aLph{deleq}}} +\def\theDeleq {\mathrm{\aLph{Deleq}}} +\def\@deleqnnum{{\reset@font\rm (\thedeleq)}} +\def\@delleqnnum{\hbox to .01\p@{}\rlap{\reset@font\rm + \hskip -\displaywidth(\thedeleq)}} +\def\mthref#1{\@ifundefined{r@#1}{\ifmmode \mathrm{??} \else + {\reset@font\bf ??} \fi\@warning {Reference `#1' on page \thepage \space + undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter + \@car\@tempa \@nil\null}} +%% Part 2: \nydeleqno and \deleqno, with leftists +\def\nydeleqno{\refstepcounter{equation}\refstepcounter{deleq} + \let\@currentlabel\thedeleq \eqno (\thedeleq)} +\def\deleqno{\refstepcounter{deleq} \let\@currentlabel\thedeleq + \eqno (\thedeleq)} +\def\nydelleqno{\refstepcounter{equation}\refstepcounter{deleq} + \let\@currentlabel\thedeleq \leqno (\thedeleq)} +\def\delleqno{\refstepcounter{deleq} \let\@currentlabel\thedeleq + \leqno (\thedeleq)} +%% Part 3: \reqno, \rndeqno, and \rdeqno, with leftists +\newcommand{\reqno}[1]{\setcounter{Deleq}{-1}\refstepcounter{Deleq} + \eqno (\mthref{#1}) } +\newcommand{\rdeqno}[1]{\refstepcounter{Deleq} + \eqno (\mthref{#1}\theDeleq)} +\newcommand{\rndeqno}[1]{\setcounter{Deleq}{0}\refstepcounter{Deleq} + \eqno (\mthref{#1}\theDeleq)} +\newcommand{\rleqno}[1]{\setcounter{Deleq}{-1}\refstepcounter{Deleq} + \leqno (\mthref{#1}) } +\newcommand{\rdleqno}[1]{\refstepcounter{Deleq} + \leqno (\mthref{#1}\theDeleq)} +\newcommand{\rndleqno}[1]{\setcounter{Deleq}{0}\refstepcounter{Deleq} + \leqno (\mthref{#1}\theDeleq)} +%% Part 4: 'deqarr' environment +\def\@deqncr{{\ifnum0=`}\fi\@ifstar{\global\@deqpen\@M + \@ydeqncr}{\global\@deqpen\interdisplaylinepenalty \@ydeqncr}} +\def\@ydeqncr{\@ifnextchar [{\@xdeqncr}{\@xdeqncr[\z@]}} +\def\@xdeqncr[#1]{\ifnum0=`{\fi}\@@deqncr + \noalign{\penalty\@deqpen\vskip\jot\vskip #1\relax}} +\def\@@deqncr{\let\@tempa\relax + \ifcase\@deqcnt \def\@tempa{& & &}\or \def\@tempa{& &}% + \else \def\@tempa{&}\fi + \@tempa \if@eqnsw\@deleqnnum\stepcounter{deleq}\fi + \global\@eqnswtrue\global\@deqcnt\z@\cr} +\def\deqarr{\stepcounter{equation}\stepcounter{deleq} + \let\@currentlabel\thedeleq + \global\@eqnswtrue\m@th + \global\@deqcnt\z@\tabskip\@centering\let\\\@deqncr + $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering + $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne + \hskip 2\arraycolsep \hfil${##}$\hfil + &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} +\def\enddeqarr{\@@deqncr\egroup + \global\advance\c@deleq\m@ne$$\global\@ignoretrue} +%% Part 4b: 'dleqarr' environment +\def\@dleqncr{{\ifnum0=`}\fi\@ifstar{\global\@deqpen\@M + \@ydleqncr}{\global\@deqpen\interdisplaylinepenalty \@ydleqncr}} +\def\@ydleqncr{\@ifnextchar [{\@xdleqncr}{\@xdleqncr[\z@]}} +\def\@xdleqncr[#1]{\ifnum0=`{\fi}\@@dleqncr + \noalign{\penalty\@deqpen\vskip\jot\vskip #1\relax}} +\def\@@dleqncr{\let\@tempa\relax + \ifcase\@deqcnt \def\@tempa{& & &}\or \def\@tempa{& &}% + \else \def\@tempa{&}\fi + \@tempa \if@eqnsw\@delleqnnum\stepcounter{deleq}\fi + \global\@eqnswtrue\global\@deqcnt\z@\cr} +\def\dleqarr{\stepcounter{equation}\stepcounter{deleq} + \let\@currentlabel\thedeleq + \global\@eqnswtrue\m@th + \global\@deqcnt\z@\tabskip\@centering\let\\\@dleqncr + $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering + $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne + \hskip 2\arraycolsep \hfil${##}$\hfil + &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} +\def\enddleqarr{\@@dleqncr\egroup + \global\advance\c@deleq\m@ne$$\global\@ignoretrue} +%% Part 5: 'ddeqar' environment +\def\ddeqar{\stepcounter{deleq} + \let\@currentlabel\thedeleq + \global\@eqnswtrue\m@th + \global\@deqcnt\z@\tabskip\@centering\let\\\@deqncr + $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering + $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne + \hskip 2\arraycolsep \hfil${##}$\hfil + &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} +\def\endddeqar{\enddeqarr} +%% Part 5b: 'ddleqar' environment +\def\ddleqar{\stepcounter{deleq} + \let\@currentlabel\thedeleq + \global\@eqnswtrue\m@th + \global\@deqcnt\z@\tabskip\@centering\let\\\@dleqncr + $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering + $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne + \hskip 2\arraycolsep \hfil${##}$\hfil + &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} +\def\endddleqar{\enddleqarr} +%% Part 6: 'deqn' and 'ddeqn' environments, with leftists +\def\deqn{$$\refstepcounter{equation}\stepcounter{deleq} + \let\@currentlabel\thedeleq} +\def\enddeqn{\eqno \hbox{\@deleqnnum} $$\global\@ignoretrue} +\def\ddeqn{$$\refstepcounter{deleq} \let\@currentlabel\thedeleq} +\def\endddeqn{\eqno \hbox{\@deleqnnum} $$\global\@ignoretrue} +\def\dleqn{\deqn} +\def\enddleqn{\leqno \hbox{\@deleqnnum} $$\global\@ignoretrue} +\def\ddleqn{\ddeqn} +\def\endddleqn{\leqno \hbox{\@deleqnnum} $$\global\@ignoretrue} +%% Part 7: \nydeqno and \heqno +\def\nydeqno{\stepcounter{equation}\stepcounter{deleq}} +\def\heqno{\stepcounter{equation}} +%% END of it all! diff --git a/macros/latex209/contrib/misc/diagmac.sty b/macros/latex209/contrib/misc/diagmac.sty new file mode 120000 index 0000000000..6cf14e4009 --- /dev/null +++ b/macros/latex209/contrib/misc/diagmac.sty @@ -0,0 +1 @@ +../../../latex/contrib/diagmac/diagmac.sty
\ No newline at end of file diff --git a/macros/latex209/contrib/misc/diagramdoc.tex b/macros/latex209/contrib/misc/diagramdoc.tex new file mode 100644 index 0000000000..3995d54999 --- /dev/null +++ b/macros/latex209/contrib/misc/diagramdoc.tex @@ -0,0 +1,968 @@ +% This document should be typeset with LaTeX; +% it gives a basic user's information about the diagram macros. +% Those macros are necessary for this typesetting, +% so make sure the "diagram" document is in your TeX file. +% Print the document in the "landscape" position +% or remove the instructions \oddsidemargin168mm and +% evensidemargin29mm from the preamble. +% The size of the output has been choosen so that two pages +% of the document can fit nicely on a A4 page. + +%% Lines with two %-signs were commented away by Nico verwer, +%% to make this document a4-sized. +%% To restore this file to its original, search for all lines +%% containing %%. +%% \documentstyle[twoside]{article} +\documentstyle[a4]{article} %% remove this line to restore original. + +\input{diagram} + +%% \hoffset-23.5mm +%% \voffset-20mm +%% \oddsidemargin168mm +%% \evensidemargin27mm +%% \textheight 454pt +%% \textwidth 283pt +\pagestyle{myheadings} +\markboth{}{} + + +\newcommand{\bs}{$\backslash$} +\newcommand{\p}{\hspace{14pt}} +\newcommand{\vb}{\verb} +\newcommand{\tab}{\begin{tabular}} +\newcommand{\TAB}{\end{tabular}} +\newcommand{\D}{{\em Diagram}} +\newcommand{\tc}[1]{\par\noindent#1} + +\title{User's guide for the {\em Diagram} Macros} +\author{Francis Borceux} +\date{UCL, Louvain-la-Neuve,Belgium. +\thanks{bitnet:FBORCEUX@BUCLLN11}} + +\begin{document} + + +\maketitle + +\thispagestyle{empty} + +%\LARGE\bf\noindent Contents\vspace{10pt} +% +%\normalsize +% +% +%\tc{\makebox[6mm][r]{1.} What are the {\em Diagram} +%Macros?\dotfill2} +%\tc{\makebox[6mm][r]{2.} Inserting in-text arrows.\dotfill2} +%\tc{\makebox[6mm][r]{3.} Backward in-text arrows.\dotfill3} +%\tc{\makebox[6mm][r]{4.} Naming the in-text arrows.\dotfill4} +%\tc{\makebox[6mm][r]{5.} Emphasizing an arrow.\dotfill5} +%\tc{\makebox[6mm][r]{6.} Primary diagram arrows.\dotfill5} +%\tc{\makebox[6mm][r]{7.} Secondary diagram arrows.\dotfill6} +%\tc{\makebox[6mm][r]{8.} Ternary diagram arrows.\dotfill7} +%\tc{\makebox[6mm][r]{9.} Naming the diagram arrows.\dotfill9} +%\tc{\makebox[6mm][r]{10.} Conceiving a diagram.\dotfill10} +%\tc{\makebox[6mm][r]{11.} Typing a diagram.\dotfill12} +%\tc{\makebox[6mm][r]{12.} The variable length option.\dotfill14} +%\tc{\makebox[6mm][r]{13.} Superposing items in a +%diagram.\dotfill16} +%\tc{\makebox[6mm][r]{14.} Drawing curved arows.\dotfill17} +%\tc{\makebox[6mm][r]{15.} The free slope arrows.\dotfill19} +%\tc{\makebox[6mm][r]{16.} The scaling option.\dotfill21} +%\tc{\makebox[6mm][r]{17.} Final adjustments.\dotfill22} +%\tc{\makebox[6mm][r]{18.} Some special characters.\dotfill24} + +\tableofcontents +\pagebreak + + +\section{What are the {\em Diagram} Macros?} + +\p{\em Diagram} is a series of Macros intended to produce +easily rather sophisticated diagrams which can appear when typing +category theory. The range of arrows which can be produced includes +plain morphisms, dotted morphisms, monomorphisms, epimorphisms, +bimorphisms, isomorphisms, equalities, pairs of parallel arrows +and pairs of adjoint arrows. Most arrows can be drawned in the +sixteen basic directions of the compass-card (and this inspires +the terminology). Some curved arrows are also available. All +these arrows can be given a name, on either side of the arrow. +For emphasizing, arrows can be printed in bold-face type. Except +for some special features, the Macros will take care of choosing +the correct length of each arrow as well as positioning +correctly the various elements which appear in the diagram. The +final result will be a diagram with rows and columns at a +distance of 80 points (1.1in, 28mm) from each other; this +standard distance can be changed for every individual diagram +just by giving a scaling factor. + + +{\em Diagram} includes also a list of in-text symbols containing in +particular the same variety of arrows in both the forward and the +backward directions. + +The {\em Diagram} Macros are \LaTeX\ Macros which make an +intensive use of the \LaTeX\ picture environment and in +particular of the \vb+\vector+ command. To use them for producing +a document, it suffices to have in your \TeX\ file a copy of the +file {\em diagram} and to call it with the command +\vb+\input{diagram}+, in the preamble of your new document. The +{\em Diagram} macros will give good results with 10pt, 11pt and +12pt styles.The following sections should provide you with full +information on how to use the {\em Diagram} macros for producing +your documents. + + +\section{Inserting in-text arrows.} + +\p An in-text arrow is one which you include in a line of text, like +for example when you write: +\begin{quote}Let $f:A\mono B$ be a monomorphism \ldots \end{quote} +Here are the available in-text arrows and the corresponding +commands. The length of an in-text arrow is 20pt. + +\begin{tabular}{lll} +plain arrow&\vb+\ar+&\ar\\ +dotted arrow&\vb+\dotar+&\dotar\\ +monomorphism&\vb+\mono+&\mono\\ +epimorphism&\vb+\epi+&\epi\\ +bimorphism&\vb+\bimo+&\bimo\\ +isomorphism&\vb+\iso+&\iso\\ +pair of parallel arrows&\vb+\biar+&\biar\\ +equality&\vb+\eql+&\eql\\ +pair of adjoint arrows&\vb+\adjar+&\adjar +\end{tabular} + +\vspace{3pt} + +When you insert an in-text arrow, the {\em Diagram} Macros will +take care of the spacing at both ends of the arrow. The in-text +arrow commands can be used both in paragraph and in Math mode, but +normally you should use them in Math mode to print the surrounding +characters in Math italic. Compare indeed\\ +%\hspace*{-10mm}% +\begin{tabular}{ll} +\vb+Let f:A\epi B be an epimorphism + +&Let f:A\epi B be an epimorphism \TAB + +\noindent with\\ +%\hspace*{-10mm}% +\tab{ll} +\vb+Let $f:A\epi B$ be an epimorphism+ +&Let $f:A\epi B$ be an epimorphism +\TAB + +\section{Backward in-text arrows.} + +\p It is a general rule of the {\em Diagram} Macros that to draw an +arrow in some given direction, it suffices to preceed the name of +the arrow by a code for the direction. To draw an in-text arrow in +the backward direction, it suffices to add the prefix \vb+bk+ to +the command for that arrow. + +\begin{tabular}{lll} +backward plain arrow&\vb+\bkar+&\bkar\\ +backward dotted arrow&\vb+\bkdotar+&\bkdotar\\ +backward monomorphism&\vb+\bkmono+&\bkmono\\ +backward epimorphism&\vb+\bkepi+&\bkepi\\ +backward bimorphism&\vb+\bkbimo+&\bkbimo\\ +backward isomorphism&\vb+\bkiso+&\bkiso\\ +backward pair of parallel arrows&\vb+\bkbiar+&\bkbiar\\ +backward equality&\vb+\bkeql+&\bkeql\\ +backward pair of adjoint arrows&\vb+\bkadjar+&\bkadjar +\end{tabular} + +\section{Naming the in-text arrows.} + +\p In a line of text, it is probably a better idea to type +\mbox{$f:A\bimo B$} than $A\Bimo{f}B$. Nevertheless the \D\ Macros +allow you to give an upper name to the single in-text arrows as well +as an upper-lower name to the double in-text arrows. It is a general +rule of the \D\ Macros that to give an upper name to a single arrow +or an upper-lower name to a double arrow, it suffices \nolinebreak +to + +\begin{enumerate} +\item type the first letter of the corresponding command as an +upper-case letter +\item give the name(s) of the arrow(s) as argument(s) of the +command. +\end{enumerate} +Here is a list of the available named in-text arrows:\vspace{5pt} + +%\hspace*{-7mm}% +\begin{tabular}{lll} +plain arrow $f$&\vb+\Ar{f}+&\Ar{f}\\ +dotted arrow $f$&\vb+\Dotar{f}+&\Dotar{f}\\ +monomorphism $f$&\vb+\Mono{f}+&\Mono{f}\\ +epimorphism $f$&\vb+\Epi{f}+&\Epi{f}\\ +bimorphism $f$&\vb+\Bimo{f}+&\Bimo{f}\\ +isomorphism $f$&\vb+\Iso{f}+&\Iso{f}\\ +pair of parallel arrows $f, g$&\vb+\Biar{f}{g}+&\Biar{f}{g}\\ +pair of adjoint arrows $f, g$&\vb+\Adjar{f}{g}+&\Adjar{f}{g}\\ +backward plain arrow $f$&\vb+\Bkar{f}+&\Bkar{f}\\ +backward dotted arrow $f$&\vb+\Bkdotar{f}+&\Bkdotar{f}\\ +backward monomorphism $f$&\vb+\Bkmono{f}+&\Bkmono{f}\\ +backward epimorphism $f$&\vb+\Bkepi{f}+&\Bkepi{f}\\ +backward bimorphism $f$&\vb+\Bkbimo{f}+&\Bkbimo{f}\\ +backward isomorphism $f$&\vb+\Bkiso{f}+&\Bkiso{f}\\ +pair of parallel backward arrows $f,g$ +&\vb+\Bkbiar{f}{g}+&\Bkbiar{f}{g}\\ +backward pair of adjointarrows $f, g$ +&\vb+\Bkadjar{f}{g}+&\Bkadjar{f}{g} \end{tabular} +\vspace{5pt} + +The name of an arrow will always be processed in Math mode at the +scripstyle size; therefore the text characters will be printed in +Math italic and you should not type any \$ sign to introduce a +mathematical symbol in the name of an arrow. + +\section{Emphasizing an arrow.} + +\p The dotted arrows are a first type of emphasized arrows; their +construction is rather slow. It will be easier for \LaTeX\ to +print an arrow in bold face style: to realize this, just preceed +the command for the arrow by the command \vb+\B+; thus +\vb+$A\B\Mono{f}B$+ produces $A\B\Mono{f}B$. That ``bolding'' +process applies to both the ``in text'' and the ``diagram'' +arrows. + +\section{Primary diagram arrows.} + +\p The {\em diagram arrows} are those arrows specially designed to +fit nicely in a diagram; their variety and their names are the same +as those of in-text arrows: plain arrow (\vb+ar+), dotted arrow +(\vb+dotar+), monomorphism (\vb+mono+), epimorphism (\vb+epi+), +bimorphism (\vb+bimo+), isomorphism (\vb+iso+), pair of parallel +arrows (\vb+biar+), equality (\vb+eql+) and pair of adjoint arrows +(\vb+adjar+). You should never use an in-text arrow in a diagram +nor a diagram arrow in a line of text: the technical +characteristics of those pictures are just incompatible! + +While an in-text arrow is always horizontal, the possibility must +exist to give a diagram arrow a rather arbitrary direction. For +that reason the name of a diagram arrow starts {\em always} with +the prefix indicating its direction, even in the case of an +horizontal right pointing arrow. The direction of an arrow is +indicated by a direction of the compass-card, using the +classical abbreviations: + +\tab{llll} +north( \vb+n+ )&south( \vb+s+ )&east( \vb+e+ )&west( \vb+w+ ) +\TAB + +The command for producing a primary arrow is obtained by +typing the abbreviation for its direction followed by the +abbreviation for the type of arrow. For example the command +\vb+\wbimo+ will produce a west pointing bimorphism. Here are +other examples. +\DIAG +{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \nn +{} \n {} \n {\naR{\mbox{\bs\tt nar}}} \n {} \n {}J\nn +{\bullet} \n {\Wmono{\mbox{\bs\tt wmono}}} \n {\bullet}\n +{\Eepi{\mbox{\bs\tt eepi}}} \n {\bullet} \nn +{} \n {} \n {\Sbiar{}{\mbox{\bs\tt sbiar}}} \n {} \n {} \nn +{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} +\diag + +The case of adjoint arrows requires a comment. For east and west +pairs of adjoint arrows, the direction is that of the lower arrow; +for north and south pairs of adjoint arrows, the direction is that +of the left arrow. + +The standard length of a primary arrow is 50pt, but the length of +an {\em horizontal} arrow is automatically adjusted when the +adjacent vertices have too long names. + +\section{Secondary diagram arrows.} + +\p The secondary diagram arrows are those which are oriented in +the secondary directions of the compass-card; here are thus the +possible directions and the corresponding abbreviations: + +\tab{ll} +north-east ( \vb+ne+ )&south-east ( \vb+se+ )\\ +north-west ( \vb+nw+ )&south-west ( \vb+sw+ ) +\TAB + +The variety of available arrows is the same as for primary arrows: +plain arrow (\vb+ar+), dotted arrow (\vb+dotar+), monomorphism +(\vb+mono+), epimorphism (\vb+epi+), bimorphism (\vb+bimo+), +isomorphism (\vb+iso+), pair of parallel arrows (\vb+biar+), +equality (\vb+eql+) and pair of adjoint arrows (\vb+adjar+). +Just as for primary arrows, a secondary arrow is obtained by +typing the abbreviation for its direction followed by the +abbreviation for the type of arrow. For example the command +\vb+\swbiar+ will produce a pair of sout-west pointing arrows. +Here are some examples of what you can produce as secondary +diagram arrows: + + +\DIAG +{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \nn +{} \n {\nwbimO{\mbox{\bs\tt nwbimo}}} \n {} +\n {\Neadjar{}{\mbox{\bs\tt neadjar}}} \n {}J\nn +{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \nn +{} \n {\Swiso{\mbox{\bs\tt swiso}}} \n {} +\n {\Sedotar{\mbox{\bs\tt sedotar}}} \n {} \nn +{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} +\diag + +The case of a pair of adjoint arrows requires again a comment. The +direction is always that of the lower arrow. + +The secondary diagram arrows have a standard horizontal extent +equal to 58pt. + +\section{Ternary diagram arrows.} + +\p The ternary diagram arrows are those which are oriented along +the diagonals of a rectangle of sides 1,2. Taking some liberty with +trigonometry and geography, we shall name them after the ternary +directions of the compass-card. Thus, here are the available +directions and the corresponding abbreviations: +\begin{center} +\tab{ll} +north-north-east ( \vb+nne+ )&east-north-east ( \vb+ene+ )\\ +east-south-east ( \vb+ese+ )&south-south-east ( \vb+sse+ )\\ +south-south-west ( \vb+ssw+ )&west-south-west ( \vb+wsw+ )\\ +west-north-west ( \vb+wnw+ )&north-north-west ( \vb+nnw+ ) +\TAB +\end{center} + +The only type of ternary arrows provided by the \D\ Macros are the +plain arrows. Again you will obtain the command for a ternary arrow +by preceeding the abbreviation \vb+ar+ with the prefix indicating the +direction of the arrow. Here are thus the eight available ternary +arrows:\\ +%\hspace*{-10mm}% +\begin{minipage}{12cm} +\DIAG +{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \n {} \n +{\bullet} \n {} \n {\bullet} \nn +{} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \nn +{\bullet} \n {} \n {\bullet} \n {\nnwaR{\mbox{\bs\tt nnwar}}} \n +{\bullet} \n {\nneaR{\mbox{\bs\tt nnear}}} \n {\bullet} \n {} \n +{\bullet} \nn +{} \n {} \n {\wnwaR{\mbox{\bs\tt wnwar}}} \n {} \n {} \n {} \n +{\eneaR{\mbox{\bs\tt enear}}} \n {} \n {} \nn +{\bullet} \n {} \n{\bullet} \n {} \n {\bullet} \n {} \n +{\bullet} \n {} \n {\bullet} \nn +{} \n {} \n {\Wswar{\mbox{\bs\tt wswar}}} \n {} \n {} \n {} \n +{\Esear{\mbox{\bs\tt esear}}} \n {} \n {} \nn +{\bullet} \n {} \n {\bullet} \n {\Sswar{\mbox{\bs\tt sswar}}} \n +{\bullet} \n {\Ssear{\mbox{\bs\tt ssear}}} \n {\bullet} \n {} \n +{\bullet} \nn +{} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \nn +{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \n {} \n +{\bullet} \n {} \n {\bullet} +\diagv{23}{0}{0} +\end{minipage} + +A ternary diagram arrow has a standard horizontal extent equal to +66pt or 132pt according to the case. + +\section{Naming the diagram arrows.} + +\p The rules for naming the diagram arrows are analogous to those +for naming the in-text arrows, with the additional possibility of +naming the arrow on either of its sides. It suffice to type the +first or the last letter of the command as an upper-case letter +and give the name of the arrow as an argument. Here is an exhaustive +list of the available possibilities. + +\begin{description} +\item[Eql:] An equality cannot be named +\item[Vertical ar, mono, epi, bimo:] A first upper-case letter +produces a left name and a last upper-case letter produces a +right name; thus type \vb+\Smono{f}+ to draw a south monomorphism +with left name $f$ and \vb+\nepI{g}+ to draw a north epimorphism +with right name $g$. +\item[Non-vertical ar, mono, epi, bimo:] A first upper-case letter +produces an upper name and a last upper-case letter produces a +lower name; thus type \vb+\War{f}+ to draw a west arrow with upper +name $f$ and \vb+\nebimO{g}+ to draw a north-east bimorphism with +lower name $g$. +\item[Horizontal iso:] A first upper-case letter +produces an upper name and a last upper-case letter produces a +lower name; thus type \vb+\Wiso{f}+ to draw a west isomorphism with +upper name $f$ and \vb+\eisO{g}+ to draw an east isomorphism +with lower name $g$. +\item[Non-horizontal iso:] Type a first upper-case letter to name +it; the name will appear on one side of the arrow and the +``isomorphism symbol'' on the other side; thus \vb+\Nwiso{f}+ draws +a north-west isomorphism with name $f$. +\item[Vertical biar, adjar:] Type a first upper-case letter to name +them and give successively the name of the left arrow and that of +the right arrow; thus \vb+\Sbiar{f}{g}+ draws a pair of south +arrows with left name $f$ and right name $g$. +\item[Non-vertical biar, adjar:] Type a first upper-case letter to +name them and give successively the name of the upper arrow and +that of the lower arrow; thus \vb+\Seadjar{f}{g}+ will produce a +south-east pair of adjoint arrows with upper name $f$ and lower +name $g$. +\end{description} + +The name of an arrow will always be processed in Math mode at the +textstyle size; therefore the text characters will be printed in +Math italic and you should not type any \$ sign to introduce a +mathematical symbol in the name of an arrow. The name of an arrow +will automatically be positioned in order not to bump into the +corresponding arrow. + +\section{Conceiving a diagram.} + +\p We are now arriving at the central section of this user's guide: +the one which describes the basic principle for realizing a +diagram. This will be better explained on an example. Let us +therefore suppose you want to construct the following diagram. +\DIAG +{X} \n {} \n {} \n {} \n {} \nn +{} \n {\Sedotar{z}} \n {\Esear{y}} \n {} \n {} \nn +{} \n {\sseaR{x}} \n {P} \n {\Eepi{k}} \n {B} \nn +{} \n {} \n {\Smono{h}} \n {} \n {\smonO{g}} \nn +{} \n {} \n {A} \n {\eepI{f}} \n {C} +\diag + +This diagram contains several items: five vertices $A,B,C,P,X$, +four primary arrows, one secondary arrow and two ternary arrows; +one of the arrows is emphasized. All those items are very different +in nature, size, orientation, position \ldots The first basic rule +for conceiving a diagram is to ignore completely all those +differences and just treat equally all those items; this allows a +maximum of flexibility and simplicity. To realize this, the \D\ +Macros consider a formal pattern of points, at a 40pt distance from +each other, both horizontally and vertically. Then each item of the +diagram is {\em centered} at one of the points of the pattern, using +the {\em picture} environment. + +Let us for example visualize the pattern of points on which the +previous diagram has been constructed. +\newcommand{\pat} +{\begin{picture}(0,0) +\multiput(-8000,-8000)(4000,0){5}{\circle*{300}} +\multiput(-8000,-4000)(4000,0){5}{\circle*{300}} +\multiput(-8000,0)(4000,0){5}{\circle*{300}} +\multiput(-8000,4000)(4000,0){5}{\circle*{300}} +\multiput(-8000,8000)(4000,0){5}{\circle*{300}} +\end{picture}} + +\DIAG +{X} \n {} \n {} \n {} \n {} \nn +{} \n {\Sedotar{z}} \n {\Esear{y}} \n {} \n {} \nn +{} \n {\sseaR{x}} \n {\cross{P}{\pat}} \n {\Eepi{k}} \n {B} \nn +{} \n {} \n {\Smono{h}} \n {} \n {\smonO{g}} \nn +{} \n {} \n {A} \n {\eepI{f}} \n {C} +\diag + +The complete pattern needs not be a square nor even a rectangle. It +is just compulsory to start all the lines from a same (left) column +and leave no hole at all in any line; but lines need not be of equal +length. To fill in the holes which could appear inside a line, it +suffices to attach empty items at the corresponding points of the +pattern. Here is for example the set of items corresponding to the +previous diagram. +\vspace{10pt} + +\begin{center} +\begin{picture}(200,200) +\thicklines +\put(0,0){\line(1,0){200}} +\put(0,40){\line(1,0){200}} +\put(0,80){\line(1,0){200}} +\put(0,120){\line(1,0){200}} +\put(0,160){\line(1,0){120}} +\put(0,200){\line(1,0){40}} +\put(0,0){\line(0,1){200}} +\put(40,0){\line(0,1){200}} +\put(80,0){\line(0,1){160}} +\put(120,0){\line(0,1){160}} +\put(160,0){\line(0,1){120}} +\put(200,0){\line(0,1){120}} +\put(20,180){\makebox(0,0){$X$}} +\put(60,140){\makebox(0,0) +{\normalsize\bs\tt\scriptsize Sedotar\{z\}}} +\put(60,100){\makebox(0,0){\bs\tt\scriptsize +sseaR\{x\}}} \put(100,140){\makebox(0,0){\bs\tt\scriptsize +Esear\{y\}}} \put(100,100){\makebox(0,0){$P$}} +\put(100,60){\makebox(0,0){\bs\tt\scriptsize Smono\{h\}}} +\put(100,20){\makebox(0,0){$A$}} +\put(140,100){\makebox(0,0){\bs\tt\scriptsize Eepi\{k\}}} +\put(140,20){\makebox(0,0){\bs\tt\scriptsize eepI\{f\}}} +\put(180,100){\makebox(0,0){$B$}} +\put(180,60){\makebox(0,0){\bs\tt\scriptsize smonO\{g\}}} +\put(180,20){\makebox(0,0){$C$}} +\end{picture} +\end{center}\vspace{10pt} + +\section{Typing a diagram.} + +\p Let us assume you have determined the nature and the position of +each item of your diagram. Here is what you should type in order to +give that information to the \D\ Macros. + +\begin{enumerate} +\item Type the command \vb+\DIAG+ to start the typing of the +diagram; +this command will in particular start a {\em center} environment; +it can be given both in paragraph and in math mode. +\item Type between curly brackets the description of {\em every} +item; this description will automatically be processed in Math mode. +The empty items will thus appear as \{\} in your input. +\item {\em Separate} two consecutive items in a same row by the +``next item command'', which is \vb+\n+. The command \vb+\n+ may +not appear before the first item of a row nor after the last item of +a row. +\item {\em Separate} two consecutive rows of items by the ``next +row command'' which is \vb+\nn+. The command \vb+\nn+ may not appear +before the first row of items nor after the last row of items. +\item Type the command \vb+\diag+ to indicate the end of the +diagram typing. +\end{enumerate} + +When you type a diagram using the procedure just indicated, notice +that between the two commands \vb+\DIAG+ and \vb+\diag+ +\begin{itemize} \item You can put as much space as you want in a +line to make your input file easier to read; +\item You should never use a \$ sign to type a mathematical symbol, +except if you did include that symbol in a box. +\end{itemize} + +With all that in mind, the diagram of the +previous section can be typed as follows +\begin{verbatim} +\DIAG +{X} \nn +{} \n{\Sedotar{z}}\n{\Esear{y}} \nn +{} \n{\sseaR{x}} \n{P} \n{\Eepi{k}}\n{B} \nn +{} \n{} \n{\Smono{h}}\n{} \n{\smonO{g}}\nn +{} \n{} \n{A} \n{\eepI{f}}\n {C} +\diag +\end{verbatim} +or equivalently as +\begin{verbatim} +\DIAG{X}\n{}\n{}\n{}\n{}\nn{}\n{\Sedotar{z}} +\n{\Esear{y}}\n{}\n{}\nn{}\n{\sseaR{x}}\n{P} +\n{\Eepi{k}}\n{B}\nn{}\n{}\n{\Smono{h}}\n{} +\n{\smonO{g}}\nn{}\n{}\n{A}\n{\eepI{f}}\n{C}\diag +\end{verbatim} + +The \D\ Macros will automatically center the diagram horizontally +on the page and will take care of the spacing with the preceeding +and the following text. When a diagram is rather big, you should +make it a figure or a table (see \LaTeX book, 3.5.1 page 60) to +improve the quality of the page-making. If you want to align +horizontally various small diagrams, consider these just as a +unique wide diagram where some columns are completely empty. + +\section {The variable length option.} + +\p Suppose you want to produce the following diagram: +\DIAG +{A} \n {} \n {\Earv{f}{130}} \n {} \n {C} \nn +{} \n {\seepI{p}} \n {} \n {\nemonO{i}} \n {} \nn +{} \n {} \n {B} \n {} \n {} +\diag +Following the instructions of the previous sections you will +type: +\begin{verbatim} +\DIAG +{A}\n{} \n{\Ear{f}}\n{} \n{C}\nn +{} \n{\seepI{p}}\n{} \n{\nemonO{i}}\nn +{} \n{} \n{B} \nn +\diag +\end{verbatim} +and you will get +\DIAG +{A} \n {} \n {\Ear{f}} \n {} \n {C} \nn +{} \n {\seepI{p}} \n {} \n {\nemonO{i}} \n {} \nn +{} \n {} \n {B} \n {} \n {} +\diag +which is not exactly what you wanted! + +The \D\ Macros assume that a primary arrow connects two vertices +attached at the two horizontally adjacent points of the pattern, and +a corresponding assumption is made for the secondary and the ternary +arrows. The east arrow of the previous diagram does not satisfy +that assumption: it connects vertices situated at a four intervals +distance. The \D\ Macros provide you with a {\em variable length +option} which allows you to modify the length of an arrow in order +to take care of such particularities. The ``variable length +option'' is a special feature, which means that the \D\ Macros need +your help to handle the problem. In fact, what you have to do is to +decide the new length of the arrow. + +Not all arrows have been provided with a ``variable length +option''; here are the possibilities: +\begin{itemize} +\item All the primary arrows, named or unamed, admit a variable +length option. +\item The four secondary plain arrows, named or unamed, admit a +variable length option; the other secondary arrows are not provided +with the variable length option. +\item The ternary arrows do not have the variable length option. +\end{itemize} + +To take advantage of the variable length option, it suffices to +follow the name of the corresponding command with the lower-case +letter \vb+v+ and give to that command an additional last argument +which will be +\begin{itemize} +\item The new length of the arrow in the case of a primary arrow +\item The new horizontal extent of the arrow in the case of a +secondary arrow; +\end{itemize} +those two lengthes must be expressed in points. The new arrow will +still be centered with respect to the corresponding point of the +pattern. For example typing \vb+\Earv{f}{130}+ for the east +arrow of the previous diagram will produce the desired result as in +the first diagram. Typing \vb+\smonOv{g}{30}+ will produce a south +monomorphism with right name $g$ and length 30 points, typing +\vb+\Wadjarv{f}{g}{100}+ will produce a west pair of adjoint arrows +with names $f,g$ and length 100 points and typing \vb+\near{82.5}+ +will produce an unamed north-east arrow with horizontal extent 82.5 +points. + +The standard length of a primary arrow is 50pt; since each +interval of the pattern has length 40pt, the new length of a primary +arrow will be $$50+(n\times 40)$$ +where $n$ is the number of intervals the arrow crosses. In the +same way the horizontal extent of a secondary arrow is 58pt, +so that the new horizontal extent of a secondary arrow will be +$$58+(n\times 40)$$ +where n is the number of horizontal intervals the arrow crosses. + +\section{Superposing items in a diagram.} + +\p Sometimes you will like to superpose two items at the same point +of the pattern underlying your diagram, like in the following +example: +\DIAG +{A} \n {\ear} \n {B} \nn +{\nar} \n {\cross{\near}{\sear}} \n {\sar} \nn +{C} \n {\ear} \n {D} +\diag +The command for superposing two items is \vb+\cross{1}{2}+ where 1 +and 2 stand for the two items; the two arguments 1 and 2 are +automatically processed in Math mode. The previous diagram can thus +be typed as +%% \pagebreak %% Removed for a4 sized document! +\begin{verbatim} +\DIAG +{A} \n {\ear} \n {B} \nn +{\nar} \n {\cross{\near}{\sear}} \n {\sar} \nn +{C} \n {\ear} \n {D} +\diag +\end{verbatim} + +When superposing two arrows, the \vb+\cross+ command can have the +undesired effect that one of the arrows will bump into the name of +the other arrow. A special command has been designed to correct +such a defect and is explained in section~17. For that reason, the +``cross'' option could be considered as a special feature of the +\D\ Macros: one which requires your help. + +\section{Drawing curved arrows.} + +\p Drawing curved arrows is another special feature of the +\D\ Macros, thus a process where the \D\ Macros need you help. In +fact you will have to decide the length of the curved arrow and +possibly you will have to adjust the spacing around the diagram (an +easy procedure for that will be described in section~17). + +Just plain curved arrows in the primary directions are provided by +the \D\ Macros. The first letter of the command indicates where, +with respect to the diagram, the arrow has to stand (this +determines the concavity of the arrow); the second letter indicates +the overall direction of the arrow; then follows the abbreviation +\vb+curve+ for ``curved arrow''. As usual, the two first +indications are given using the compass-card terminology: +\vb+n,s,e,w+. Typing the first letter as an upper-case letter will +produce a named arrow, the name being given as a first argument of +the command. It is compulsory to give the length of the arrow as a +last argument. By length of the arrow we mean clearly its +horizontal or vertical extent (according to the case), expressed in +points. For example \vb+\Necurve{f}{160}+ will produce a curved +arrow with name $f$ and length 160 points, to be positioned at the +north side of a diagram and with overall east direction. + +For more clarity, here are the eight unamed curved arrows (of +length 80 points) and the corresponding commands. The bullets +indicate the position of the formal centers (?!) of these arrows; +each bullet corresponds thus to the point which will coincide with +the corresponding point of the pattern. +\vspace{15pt} +\DIAG +{} \n {\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}} +\end{picture}}{\Necurve{\mbox{\bs\tt necurve}}{80}}} \n {} \n {} +\n +{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}} +{\Nwcurve{\mbox{\bs\tt nwcurve}}{80}}} \n {} \diagv{10}{0}{-5} +\DIAG +{} \n {\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}} +\end{picture}}{\Securve{\mbox{\bs\tt securve}}{80}}} \n {} \n {} +\n +{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}} +{\Swcurve{\mbox{\bs\tt swcurve}}{80}}}\n {} \nn {} \n {} \n {} \n {} +\n {} \n {} \nn +{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}} +{\Wscurve{\mbox{\bs\tt wscurve}}{80}}} \n {} \n +{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}} +{\Wncurve{\mbox{\bs\tt wncurve}}{80}}} \n +{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}} +{\Escurve{\mbox{\bs\tt escurve}}{80}}} \n {} \n +{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}} +{\Encurve{\mbox{\bs\tt encurve}}{80}}} \diagv{0}{0}{40} + +Most often you will have to include a curved arrow at a point of +the pattern which is already occupied by another item, a vertex or an +arrow; just use the \vb+\cross+ command of the previous section to +superpose the two items. The length of a curved arrow will generally +be a multiple of 80 points, since this is the normal distance +between two vertices, in a primary direction. Here is an example of +a diagram containing curved arrows: +\DIAG +{A} \n {\Ear{a}} \n {\cross{B}{\Necurve{l}{160}}} \n {\Ear{b}} +\n {C} \nn +{\cross{\Wncurve{e}{80}}{\Sbiar{f}{g}}} \n {} +\n {\saR{h}} \n {} \n {\saR{k}} \nn +{D} \n {\eaR{c}} \n {E} \n {\eaR{d}} \n {F} +\diagv{25}{0}{0} +It should thus be typed as follows: +\begin{verbatim} +\DIAG +{A}\n{\Ear{a}} \n{\cross{B}{\Necurve{l}{160}}} + \n{\Ear{b}}\n{C} \nn +{\cross{\Wncurve{e}{80}}{\Sbiar{f}{g}}} + \n{} \n{\saR{h}}\n{} \n{\saR{k}}\nn +{D}\n {\eaR{c}}\n{E} \n{\eaR{d}}\n{F} +\diagv{25}{13}{0} +\end{verbatim} + +\section{The free slope arrows.} + +\p When you have to produce a given diagram of vertices and arrows, +you must clearly choose adequately the position of each vertex so +that all the arrows will be in one of the sixteen directions +considered by the \D\ Macros. Anybody who has read this user's guide +will easily produce an example of a diagram where this requirement +cannot be fulfilled. Nevertheless such a situation is rather +unusual since, for example, the most popular book on category +theory {\em (Saunders MAC LANE -- Categories for the working +mathematician -- Springer,1971)} \ldots does not contain any such +diagram! [Well, I have been lucky: Saunders did not draw the +connecting morphism in the snake lemma!] + +The slope of an arrow is a pair $(n,m)$ of integers: when you +move $n$ points left, you move $m$ points up; as usual, a +negative value of $n$ or $m$ indicates a movement in the +opposite direction. For example, here are the slopes of the various +diagram arrows: +\begin{itemize} +\item The primary arrows have slope $(\pm1,0)$ [horizontal arrows] +or $(0,\pm1)$ [vertical arrows]; +\item The secondary arrows have slope $(\pm1,\pm1)$; +\item The ternary arrows have slope $(\pm1,\pm2)$ or $(\pm2,\pm1)$ +according to the case. +\end{itemize} +In fact, \LaTeX allows you to draw arrows in thirty two other +directions, using the picture environment and the commands +\vb+\put+ and \vb+\vector+; the corresponding available slopes are +$(\pm1,\pm3)$, $(\pm3,\pm1)$, $(\pm1,\pm4)$, $(\pm4,\pm1)$, +$(\pm2,\pm3)$, $(\pm3,\pm2)$, $(\pm3,\pm4)$, $(\pm4,\pm3)$. +The length of an arrow is always specified by giving the horizontal +extent of the arrow, except in the case of vertical arrows where +the actual length is given. So you can just design any arrow or set +of arrows using the picture environment and choose the corresponding +picture as an item of your diagram; the center of your picture will +be positioned automatically at the corresponding point of the +pattern. This is exactly what the \D\ Macros are doing any time you +ask them to draw an arrow. + +You can avoid some typing (but just that!), by using the ``free slope +arrow Macro'' to produce directly a diagram arrow, like for +primary, secondary and ternary arrows. It has the following form +where, as a matter of convention, the origin of the coordinates is +the point of the pattern at which you want to include the free slope +arrow: + +\vb+\Freear{n}{a}{b}{x}{y}{u}{v}{l}+\\ +where +\begin{itemize} +\item \vb+n+ is the name of the arrow; +\item \vb+(a,b)+ are the coordinates (in points) of the place where +you want the lower left corner of that name to be positioned; +\item \vb+(x,y)+ are the coordinates of the origin of the arrow; +\item \vb+(u,v)+ is the slope of the arrow (it must be one of the +slopes just indicated); +\item \vb+l+ is the horizontal extent (in points) of the arrow, or +its length in the case of a vertical arrow. +\end{itemize} +If you do not want to name the arrow, just type, following the +usual \D\ Macros convention: + +\vb+\freear{x}{y}{u}{v}{l}+\\ +Clearly, the ``free slope arrow'' option is not a \D\ Macros +feature: it is just plain \LaTeX\ job. + + +\section{The scaling option.} + +\p The ``variable length'' option has allowed us to design properly +the diagram of \S 12. But you can possibly not be satisfied with +the final product, because the resulting diagram is unusually big +for the few arrows it does contain. This is easily corrected! + +Replacing the initial command \vb+\DIAG+ by the corresponding +``variable scale'' command \vb+\DIAGV{n}+ will scale the original +pattern of points by n\% and adjust correspondingly the length of +every arrow in the diagram. For example typing +\begin{verbatim} +\DIAGV{50} +{A}\n{} \n{\Earv{f}{130}}\n{} \n{C}\nn +{} \n{\seepI{p}}\n{} \n{\nemonO{i}}\nn +{} \n{} \n{B} +\diag +\end{verbatim} +will produce the following result +\DIAGV{50} +{A} \n {} \n {\Earv{f}{130}} \n {} \n {C} \nn +{} \n {\seepI{p}} \n {} \n {\nemonO{i}} \nn +{} \n {} \n {B} +\diag + +Since text characters (and various other things) are unaffected by +the scaling process, you should avoid reducing exagerately a +diagram. In most cases, a reduction up to 50\% gives excellent +results. On the other hand, an enlargement can be helpful when +handling vertices with very long names. + +This ``variable scale'' option is particularly useful when +designing ``three dimensional'' diagrams, which require very often a +rather dense pattern of reference points and many ``long'' arrows +produced via the ``variable length'' option. For example to design +the following cube + +\DIAGV{50} +{} \n{} \n{B} \n{} \n{\Earv{b}{130}} \n{} \n{D} \nn +{} \n{\Near{a}} \n{} \n{} \n{} \n{\Near{d}} \n{} \nn +{A} \n{} \n{\cross{\Earv{\movename{c}{10}{0}}{130}} + {\Sarv{\movename{f}{0}{-8}}{130}}} + \n{} \n{C} \n{} \n{\saRv{h}{130}} \nn +{} \nn +{\Sarv{e}{130}} \n{} \n{F} \n{} + \n{\cross{\eaRv{\movename{j}{-10}{0}}{130}} + {\saRv{\movename{g}{0}{8}}{130}}} + \n{} \n{H} \nn +{} \n{\Near{i}} \n{} \n{} \n{} \n{\neaR{l}} \nn +{E} \n{} \n{\eaRv{k}{130}} \n{} \n{G} +\diag +it suffices to type +\begin{verbatim} +\DIAGV{50} +{} \n{} \n{B} \n{} \n{\Earv{b}{130}} \n{} \n{D} \nn +{} \n{\Near{a}} \n{} \n{} \n{} \n{\Near{d}} \n{} \nn +{A} \n{} \n{\cross{\Earv{\movename{c}{10}{0}}{130}} + {\Sarv{\movename{f}{0}{-13}}{130}}} + \n{} \n{C} \n{} \n{\saRv{h}{130}} \nn +{} \nn +{\Sarv{e}{130}} \n{} \n{F} \n{} + \n{\cross{\eaRv{\movename{j}{-10}{0}}{130}} + {\saRv{\movename{g}{0}{13}}{130}}} + \n{} \n{H} \nn +{} \n{\Near{i}} \n{} \n{} \n{} \n{\neaR{l}} \nn +{E} \n{} \n{\eaRv{k}{130}} \n{} \n{G} +\diag +\end{verbatim} +where the \vb+\movename+ command is explained in the next section. + +\section{Final adjusments.} + +\p The \D\ Macros are intended to provide you with a powerful tool +for designing diagrams, so in normal circumstances, no adjusment at +all should be necessary. But in some unusual cases, for example +when you use the special features of the \D\ Macros, you can want to +interact for correcting some imperfections. Some Macros have been +designed to help you realizing this. + +If the vertices of a same row have names of different heights, +those names will no longer stand at the same altitude since they +are centered at the corresponding points of the pattern. There is a +``normalizing'' command \vb+\N+ which you can apply to the ``high +vertices'' in order to correct this defect: instead of typing +\vb+{vertex}+ type \vb+{\N{vertex}}+, where \vb+vertex+ stands here +for the name of the vertex. + +You can want to move the name of an arrow, especially when you have +used the \vb+\cross+ command to superpose two named arrows. If $f$ +is the name of the arrow, instead of \vb+{f}+ you just type +\vb+{\movename{f}{n}{m}}+ where n and m are integers (positive or +negative); the name of the arrow will be moved \vb+n+ pt right +and \vb+m+ pt up. In the same way the +commands \vb+\movearrow{\Ear{f}}{n}{m}+ and +\vb+\moveverterx{A}{n}{m}+ will +move respectively the east arrow $f$ and the vertex $A$, \vb+n+ +pt right and \vb+m+ pt up. + +Because the curved arrows are very ``excentric'' with respect to +their formal center, they will cause problems of spacing when drawn +along an outer edge of a diagram. Drawing a curved arrow along the +upper or the lower edge of a diagram will generally cause the +diagram to overlap the surrounding text; drawing a curved arrow +along just one vertical side of a diagram will cause bad horizontal +centering. Those defects can be corrected by using the ``variable +spacing'' option of the diagram commands. Just replace the final +command \vb+\diag+ by the corresponding ``variable spacing'' +command \vb+\diagv{t}{l}{b}+ where +\begin{itemize} +\item \vb+t+ is the vertical space, expressed in points, to be +added at the top of the diagram; +\item \vb+l+ is the horizontal space, expressed in points, to be +added left of the diagram; +\item \vb+b+ is the vertical space, expressed in points, to be +added at the bottom of the diagram. +\end{itemize} +This command will not work properly if your diagram is wider than +the textwidth; in that case, include the diagram in a mini-page +environment (see \LaTeX book, page 98) wide enough to contain it and +position this mini-page in your document using, for example, the +commands \vb+\hspace*+ and \vb+\vspace*+. + +Finally, some unexpected troubles can occur if you +introduce in a diagram items which have not been designed in a +way which is compatible with the internal structure of the \D\ +Macros. You will most often get rid of the problem by including the +new item in a box of formal dimensions (0,0). + +\section{Some special characters.} + +\p This last section contains some {\em text} symbols which you can +want to use in connection with the \D\ Macros. + +The ``commutative diagram'' symbol \com\ can be produced by giving +the command \vb+\com+ and the ``adjoint'' symbol \adj\ is obtained +via the command \vb+\adj+. + +Finally here are some commands for designing natural +transformations, with or without name.\vspace{10pt} + +\begin{tabular}{ll} +{\bs\tt nat} & \nat \\ & \\ +{\bs\tt Nat\{F\}\{$\alpha$\}\{G\}} & \Nat{F}{\alpha}{G} \\ & \\ +{\bs\tt binat} & \binat \\ & \\ +{\bs\tt Binat\{F\}\{$\alpha$\}\{G\}\{$\beta$\}\{H\}} & +\Binat{F}{\alpha}{G}{\beta}{H} +\end{tabular} + +\vspace{10pt} + +In the case of named natural transformations, the names of the +functors and the natural transformations are processed in Math +mode; thus do not include any \$ sign for putting a mathematical +symbol in those names. Here is how those symbols will be positioned +in a line of text:\\ +$$A\nat B\binat C$$ + + +\end{document} diff --git a/macros/latex209/contrib/misc/diagtest.tex b/macros/latex209/contrib/misc/diagtest.tex new file mode 100644 index 0000000000..7673ae4129 --- /dev/null +++ b/macros/latex209/contrib/misc/diagtest.tex @@ -0,0 +1,403 @@ +%TESTS OF DIAGRAM MACROS - J. C. Reynolds - December 1987 + +%This is an input file for LATEX that inputs the macros in diagmac.tex +%and tests them. A user's manual for these macros is in diagmac.doc + +\documentstyle[12pt]{article} +\oddsidemargin=0in +\evensidemargin=0in +\textwidth=6.5in +\begin{document} + +\thispagestyle{empty} + +\begin{centering} +{\large\bf TESTS OF DIAGRAM MACROS} \\[14 pt] +\today \\[21 pt] +\end{centering} + +\input diagmac + +%These are the two examples given in the user's manual. + +$$\diagram{ +\vertex 0,100:{A}{\border{3pt}{4pt}\rect} +\vertex 150,100:{B}{\border{3pt}{4pt}\rect} +\vertex 0,0:{A'}{\border{3pt}{4pt}\rect} +\vertex 150,0:{B'}{\border{3pt}{4pt}\rect} +\setedge 0,100,150,100: +\shadeedge +\drawsolidedge +\drawedgehead{100}10 +\abutabove 75:{\textstyle c}{\border{2pt}{2pt}\octagon{3pt}} +\setedge 0,0,150,0: +\shadeedge +\drawsolidedge +\drawedgehead{100}10 +\abutbelow 75:{\textstyle c'}{\border{2pt}{2pt}\octagon{3pt}} +\setedge 0,100,0,0: +\shadeedge +\drawsolidedge +\drawedgehead{100}10 +\abutleft 50:{\textstyle a}{\border{2pt}{2pt}\octagon{3pt}} +\setedge 150,100,150,0: +\shadeedge +\drawsolidedge +\drawedgehead{100}10 +\abutright 50:{\textstyle b}{\border{2pt}{2pt}\octagon{3pt}} +}$$ + +$$\ctdiagram{ +\ctv 0,100:{A} +\ctv 150,100:{B} +\ctv 0,0:{A'} +\ctv 150,0:{B'} +\ctet 0,100,150,100:{c} +\cteb 0,0,150,0:{c'} +\ctel 0,100,0,0:{a} +\cter 150,100,150,0:{b} +}$$ + +\newpage + +%This gives a thorough workout to the general macros for diagrams. +%The result looks like an eye-chart for Martians. + +$$\diagram{ +\vertex -150,0:{X+Y}{\border{4pt}{3pt}\rorect{2pt}01\outline} +\vertex 0,-50:Y{\border{10pt}{10pt}\hexagon\outline} +\vertex 150,0:\sum{\border{10pt}{10pt}\octagon{10pt}\outline + \border{5pt}{5pt}\octagon{12pt}\thicklines\outline\thinlines} +\vertex -100,150:\alpha{\border{4pt}{3pt}\diamond\outline} +\vertex 100,150:\sum{\border{10pt}{10pt}\rorect{20pt}00\outline + \border{5pt}{5pt}\rorect{24pt}00\thicklines\outline\thinlines} +\vertex 0,200:{X^2+Y^2}{\border{4pt}{3pt}\rect\outline} +\place -150,-150:{X+Y^{Z^2}} + {\leftghost X\symmetrize\borderto{0pt}{0pt}\border{4pt}{3pt}\rect\outline + \setcircle{16pt}{\xcenter}{\bexpr}\drawcircle0110 + \drawcirclehead{0}{-1}1 + \abutcirclebelow{-10pt}\alpha{\border{2pt}{2pt}\rect\outline} + \abutcirclebelow{10pt}\alpha{\border{2pt}{2pt}\rect\outline}} +\placed{150pt}{-150pt}{X+Y} + {\rightghost Y\symmetrize\borderto{0pt}{26pt}\border{4pt}{0pt}\rect\outline + \placed{\lexpr}{\ycenter}{\vrule height3.2pt depth-2.8pt width10pt}{} + \place 0,-3:{\vrule height3.2pt depth-2.8pt width10pt}{\xcenter=\lexpr} + \setcircle{16pt}{\rexpr}{\texpr}\shiftcircle{8pt}{8pt}\drawcircle1101 + \drawcirclehead{0}{-1}1\drawcirclehead{-1}00 + \abutcircleabove{0pt}\alpha{\border{2pt}{2pt}\rect\outline}} +\vertex 0,-150:{}{\setcircle{40pt}{\xcenter}{\ycenter}\drawcircle1111 + \drawcirclehead231\drawcirclehead{-2}30 + \drawcirclehead6{-9}0\drawcirclehead{-4}{-6}1 + \abutcircleleft{0pt}\alpha{\border{2pt}{2pt}\rect\outline} + \abutcircleright{20pt}\alpha{\border{2pt}{2pt}\rect\outline} + \abutcircleright{0pt}\alpha{\border{2pt}{2pt}\rect\outline} + \abutcircleright{-20pt}\alpha{\border{2pt}{2pt}\rect\outline}} +\setedge 0,200,-100,150:\shadeedge\drawsolidedge\drawedgehead{100}10 + \abutleft 185:{\alpha+\beta}{\border{2pt}{2pt}\rorect{5pt}01\outline} +\setedge 0,200,100,150:\shadeedge\drawsolidedge\drawedgehead{100}10 + \abutright 185:{\alpha+\beta}{\border{2pt}{2pt}\rorect{5pt}01\outline} +\setedge -150,0,0,-50:\shadeedge\drawdashedge{11pt}{10pt}01\drawedgehead{80}01 + \abutleftd{-25pt}{\alpha\beta} + {\border{2pt}{2pt}\borderto{25pt}{0pt}\rect\outline} +\setedge -150,0,150,0:\drawedgehead{50}01\shadeedge\drawsolidedge + \abutabove -10:\rho{\border{2pt}{2pt}\diamond\outline} +\setedge -150,0,-100,150:\shadeedge\drawsolidedge\drawedgehead{100}10 + \abutleft 75:\rho{\border{10pt}{10pt}\octagon{10pt}\outline} +\setedge -150,0,100,150:\shadeedge\drawdotedge{7pt}1 + \abutaboved{-100pt}\rho{\border{10pt}{10pt}\hexagon\outline} +\setedge 0,-50,150,0:\shadeedge\drawsolidedge\drawedgehead{20}11 + \abutrightd{-25pt}\rho{\border{2pt}{2pt}\borderto{25pt}{0pt}\rect\outline} +\setedge 0,-50,-100,150:\shadeedge\drawsolidedge +\setedge 0,-50,100,150:\shadeedge\drawsolidedge +\setedge 150,0,-100,150:\shadeedge\drawsolidedge + \abutbelowd{100pt}\rho{\border{10pt}{10pt}\hexagon\outline} +\setedge 150,0,100,150:\shadeedge\drawdashedge{40pt}{40pt}11\drawedgehead000 + \abutleft 75:\rho{\border{10pt}{10pt}\hexagon\outline} + \shiftedge{-10pt}\shadeedge\drawdashedge{30pt}{30pt}10\drawedgehead000 + \shiftedge{-10pt}\shadeedge\drawdashedge{11pt}{5pt}01\drawedgehead000 + \shiftedge{-10pt}\shadeedge\drawdotedge{8pt}0\drawedgehead{100}10 + \abutright 75:\rho{\border{5pt}{5pt}\rorect{5pt}11\outline} +\setedge -100,150,100,150:\drawedgehead{50}11\shadeedge\drawsolidedge + \abutbelow 0:\rho{\border{2pt}{2pt}\rect\outline} +\setedge 0,-50,-150,-150:\thicklines\drawedgehead{50}01\thinlines + \shadeedge\drawdashedge{13pt}{3pt}01\drawedgehead{50}11 + \abutbelow -50:{X \atop Y}{\border{2pt}{2pt}\rorect{5pt}10\outline} +\setedge 0,-50,0,-150:\thicklines\shadeedge\drawsolidedge\thinlines +\setedge 0,-50,150,-150:\shadeedge\drawsolidedge + \abutabove 75:{X \atop Y}{\border{2pt}{2pt}\rorect{5pt}10\outline} +\setedge -175,-50,-175,-100:\drawdashedge{10pt}{31pt}11 +\setedge -165,-100,-165,-50:\drawdashedge{15pt}{15pt}01 +\setedge -155,-50,-155,-100:\drawdashedge{5pt}{5pt}11 +\setedge -145,-100,-145,-50:\drawdotedge{26pt}1 +\setedge -135,-50,-135,-100:\drawdotedge{25pt}1 +\setedge -125,-100,-125,-50:\drawdotedge{5pt}1 +\setedge 125,-50,175,-50:\drawdashedge{10pt}{31pt}11 +\setedge 175,-60,125,-60:\drawdashedge{15pt}{15pt}01 +\setedge 125,-70,175,-70:\drawdashedge{5pt}{5pt}11 +\setedge 175,-80,125,-80:\drawdotedge{26pt}1 +\setedge 125,-90,175,-90:\drawdotedge{25pt}1 +\setedge 175,-100,125,-100:\drawdotedge{5pt}1 +}$$ + +\newpage + +%These three diagrams test the macros for category-theory diagrams. + +$$\ctdiagram{ +\ctvg0,0:{Y'}{\ctlpbl{I_{Y'}}} +\ctvg150,0:{Z=Z_0}{\ctgl{Z}\ctlpbr{I_Z}} +\ctvg0,100:{X_0=X}{\ctgr{X}\ctlptl{I_X}} +\ctvg150,100:{Y}{\ctlptr{I_Y}} +\ctet0,100,150,100:\alpha +\cteb0,0,150,0:{\beta'} +\ctel0,100,0,0:{\alpha'} +\cter150,100,150,0:\beta +\ctetb0,100,150,0:11{\alpha;\beta}{\alpha';\beta'} +}$$ + +$$\ctdiagram{\ctdash +\ctvg0,0:{Y'}{\ctlpblcc{I_{Y'}}} +\ctvg150,0:{Z=Z_0}{\ctgl{Z}\ctlpbrcc{I_Z}} +\ctvg0,100:{X_0=X}{\ctgr{X}\ctlptlcc{I_X}} +\ctvg150,100:{Y}{\ctlptrcc{I_Y}} +\ctet0,100,150,100:\alpha +\ctnohead\cteb0,0,150,0:{\beta'}\cthead +\ctel0,100,0,0:{\alpha'} +\cter150,100,150,0:\beta +\ctelr0,100,150,0:11{\alpha';\beta'}{\alpha;\beta} +}$$ + +$$\ctdiagram{ +\ctv0,0:{Y'} +\ctvg150,0:{Z=Z_0}{\ctgl{Z}} +\ctvg0,100:{X_0=X}{\ctgr{X}} +\ctv150,100:Y +\ctetg0,100,150,100;50:\alpha +\ctebg0,0,150,0;50:{\beta'} +\ctelg0,100,0,0;30:{\alpha'} +\cterg150,100,150,0;30:\beta +\ctetbg0,100,150,0;50,100:10{\rho}{\rho'} +\ctelrg0,0,150,100;70,30:01{\theta}{\theta'} +}$$ + +\newpage + +%The next two diagrams are further tests of the macros for drawing +%double edges. + +$$\ctdiagram{ +\ctv0,0:X +\ctv-100,100:Y\ctv-100,0:Y\ctv-100,-100:Y +\ctv100,100:Z\ctv100,0:Z\ctv100,-100:Z +\ctetb0,0,-100,100:10\alpha\beta +\ctdash\ctetb0,0,-100,0:00\alpha\beta\ctsolid +\ctetb0,0,-100,-100:01\alpha\beta +\ctetb0,0,100,100:10\alpha\beta +\ctdash\ctetb0,0,100,0:11\alpha\beta\ctsolid +\ctetb0,0,100,-100:01\alpha\beta +}$$ + +$$\ctdiagram{ +\ctv0,0:X +\ctv-100,100:Y\ctv0,100:Y\ctv100,100:Y +\ctv-100,-100:Z\ctv0,-100:Z\ctv100,-100:Z +\ctelr0,0,-100,100:10\alpha\beta +\ctelr0,0,0,100:00\alpha\beta +\ctelr0,0,100,100:01\alpha\beta +\ctelr0,0,-100,-100:10\alpha\beta +\ctelr0,0,0,-100:11\alpha\beta +\ctelr0,0,100,-100:01\alpha\beta +}$$ + +\newpage + +%These two diagrams test the usage of \ctinnermid and \ctoutermid. + +$$\ctdiagram{\ctv 0,0:{ +{\displaystyle\sum_{i=0}^{100}x_i\cdot y_i}\over +{\displaystyle\sqrt{\biggl(\sum_{i=0}^{100}x_i^2\biggr) ++\biggl(\sum_{i=0}^{100}y_i^2\biggr)}}} +\ctv0,150:A\ctv150,150:B\ctv150,0:C\ctv150,-150:D +\ctv0,-150:E\ctv-150,-150:F\ctv-150,0:G\ctv-150,150:H +\cter0,0,0,150:A\ctinnermid\cter0,0,0,150:a\ctoutermid +\cter150,150,0,0:B\ctinnermid\cter150,150,0,0:b\ctoutermid +\cteb0,0,150,0:C\ctinnermid\cteb0,0,150,0:c\ctoutermid +\cteb150,-150,0,0:D\ctinnermid\cteb150,-150,0,0:d\ctoutermid +\ctel0,0,0,-150:E\ctinnermid\ctel0,0,0,-150:e\ctoutermid +\ctel-150,-150,0,0:F\ctinnermid\ctel-150,-150,0,0:f\ctoutermid +\ctet0,0,-150,0:G\ctinnermid\ctet0,0,-150,0:g\ctoutermid +\ctet-150,150,0,0:H\ctinnermid\ctet-150,150,0,0:h +}$$ + +$$\ctdiagram{\ctv 0,0:{ +{\displaystyle\sum_{i=0}^{100}x_i\cdot y_i}\over +{\displaystyle\sqrt{\biggl(\sum_{i=0}^{100}x_i^2\biggr) ++\biggl(\sum_{i=0}^{100}y_i^2\biggr)}}} +\ctv-150,150:A\ctv0,150:C\ctv150,150:E\ctv150,0:G +\ctelr0,0,-150,150:11AB\ctinnermid +\ctelr0,0,-150,150:11ab\ctoutermid +\ctelr0,150,0,0:11CD\ctinnermid +\ctelr0,150,0,0:11cd\ctoutermid +\ctetb0,0,150,150:11EF\ctinnermid +\ctetb0,0,150,150:11ef\ctoutermid +\ctetb150,0,0,0:11GH\ctinnermid +\ctetb150,0,0,0:11gh +}$$ + +\newpage + +%This is a ``real'' diagram, relating directed complete relations to +%Scott's inverse limit construction. It is sufficiently crowded +%that it has been necessary to place some of the abutted expressions +%carefully to avoid ambiguity. + +$$\ctdiagram{ +\ctvg0,0:{D_0}{\border{2pt}{0pt}} +\ctv72,0:{D_1} +\ctv144,0:{D_2} +\ctv216,0:{\quad\cdots} +\ctvg288,144:{D_\infty}{\advance\ycenter by 5pt\border{50pt}{10pt}} +\ctv234,36:{\cdots} +\ctetbg0,0,72,0;48,48:10{\phi_0}{\psi_0} +\ctetbg72,0,144,0;114,114:10{\phi_1}{\psi_1} +\ctetb144,0,216,0:10{\phi_2}{\psi_2} +\ctelrg0,0,288,144;42,30:10{\Phi_0}{\Psi_0} +\ctelrg72,0,288,144;42,30:10{\Phi_1}{\Psi_1} +\ctelrg144,0,288,144;42,30:10{\Phi_2}{\Psi_2} +\ctvg0,-72:{D'_0}{\border{2pt}{0pt}} +\ctv72,-72:{D'_1} +\ctv144,-72:{D'_2} +\ctv216,-72:{\quad\cdots} +\ctvg288,-216:{D'_\infty}{\advance\ycenter by -5pt\border{50pt}{10pt}} +\ctv234,-108:{\cdots} +\ctetbg0,-72,72,-72;48,48:10{\phi'_0}{\psi'_0} +\ctetbg72,-72,144,-72;114,114:10{\phi'_1}{\psi'_1} +\ctetb144,-72,216,-72:10{\phi'_2}{\psi'_2} +\ctelrg0,-72,288,-216;-114,-102:10{\Phi'_0}{\Psi'_0} +\ctelrg72,-72,288,-216;-114,-102:10{\Phi'_1}{\Psi'_1} +\ctelrg144,-72,288,-216;-114,-102:10{\Phi'_2}{\Psi'_2} +\cter0,0,0,-72:{\alpha_0} +\cter72,0,72,-72:{\alpha_1} +\cter144,0,144,-72:{\alpha_2} +\ctv216,-36:{\cdots} +\ctdash +\cter288,144,288,-216:{\alpha_\infty} +}$$ + +\newpage + +%This shows how a macro can be defined and then used to give two different +%views of the same diagram. + +\def\testcube#1#2#3#4#5#6#7#8{ +$$\ctdiagram{ +\ctv#1,#3:{A_1} +\ctv#2,#3:{B_1} +\ctv#1,#4:{A_2} +\ctv#2,#4:{B_2} +\ctv#5,#7:{A'_1} +\ctv#6,#7:{B'_1} +\ctv#5,#8:{A'_2} +\ctv#6,#8:{B'_2} +\ctet#1,#3,#2,#3:{\gamma_1} +\ctet#1,#4,#2,#4:{\gamma_2} +\cter#1,#3,#1,#4:{\alpha} +\cter#2,#3,#2,#4:{\beta} +\ctet#5,#7,#6,#7:{\gamma'_1} +\ctet#5,#8,#6,#8:{\gamma'_2} +\cter#5,#7,#5,#8:{\alpha'} +\cter#6,#7,#6,#8:{\beta'} +\cter#1,#3,#5,#7:{a_1} +\cter#2,#3,#6,#7:{b_1} +\cter#1,#4,#5,#8:{a_2} +\cter#2,#4,#6,#8:{b_2} +}$$} + +\testcube{0}{200}{200}{0}{50}{150}{150}{50} + +\testcube{0}{150}{150}{0}{100}{250}{200}{50} + +\newpage + +%An example of a partial ordering with a limit point. + +$${\def\diagramunit{0.25in} +\ctdiagram{\ctnohead +\ctv0,0:{\geq 0} +\ctv2,2:{\geq 1} +\ctv4,4:{\geq 2} +\ctv7,7:\infty +\ctv-2,2:{=0} +\ctv0,4:{=1} +\ctv2,6:{=2} +\cten0,0,2,2: +\cten2,2,4,4: +\cten0,0,-2,2: +\cten2,2,0,4: +\cten4,4,2,6: +\ctdot +\cten4,4,7,7: +}}$$ + +%An example of a binary tree, produced by user macros. + +\newcount\cnx\newcount\cny\newcount\cnxx\newcount\cnyy + +\def\treea#1{\cnxx=\cnx\cnyy=\cny +\ctv\cnx,\cny:{\scriptstyle #1} +\advance\cnx by -1\advance\cny by 4 +\ctdot +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by 2 +\cten\cnxx,\cnyy,\cnx,\cny: +\ctsolid +\cnx=\cnxx\cny=\cnyy} + +\def\treeb#1{\ctv\cnx,\cny:{\scriptstyle #1} +\advance\cnx by -2\advance\cny by 4 +\treea{#10} +\cnxx=\cnx\advance\cnxx by 2\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by 4 +\treea{#11} +\cnxx=\cnx\advance\cnxx by -2\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by -2\advance\cny by -4} + +\def\treec#1{\ctv\cnx,\cny:{\scriptstyle #1} +\advance\cnx by -4\advance\cny by 4 +\treeb{#10} +\cnxx=\cnx\advance\cnxx by 4\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by 8 +\treeb{#11} +\cnxx=\cnx\advance\cnxx by -4\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by -4\advance\cny by -4} + +\def\treed#1{\ctv\cnx,\cny:{\scriptstyle #1} +\advance\cnx by -8\advance\cny by 4 +\treec{#10} +\cnxx=\cnx\advance\cnxx by 8\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by 16 +\treec{#11} +\cnxx=\cnx\advance\cnxx by -8\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by -8\advance\cny by -4} + +\def\tree{\ctv\cnx,\cny:\bot\def\centerheight{2pt} +\advance\cnx by -16\advance\cny by 4 +\treed{0} +\cnxx=\cnx\advance\cnxx by 16\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by 32 +\treed{1} +\cnxx=\cnx\advance\cnxx by -16\cnyy=\cny\advance\cnyy by -4 +\cten\cnxx,\cnyy,\cnx,\cny: +\advance\cnx by -16\advance\cny by -4} + +$${\def\diagramunit{7.5pt} +\ctdiagram{\ctnohead\cnx=0\cny=0\tree}}$$ + +\end{document} diff --git a/macros/latex209/contrib/misc/dina4.sty b/macros/latex209/contrib/misc/dina4.sty new file mode 100644 index 0000000000..8ed259ac31 --- /dev/null +++ b/macros/latex209/contrib/misc/dina4.sty @@ -0,0 +1,4 @@ +% DINA4-Format +\oddsidemargin 6pt\evensidemargin 6pt\marginparwidth 48pt\marginparsep 10pt +\topmargin -18pt\headheight 12pt\headsep 25pt\footheight 12pt\footskip 30pt +\textheight 625pt\textwidth 431pt\columnsep 10pt\columnseprule 0pt diff --git a/macros/latex209/contrib/misc/disstyle.sty b/macros/latex209/contrib/misc/disstyle.sty new file mode 100644 index 0000000000..cdaf6e1622 --- /dev/null +++ b/macros/latex209/contrib/misc/disstyle.sty @@ -0,0 +1,42 @@ +% Das ist ein Style, wie er fuer Diessertationen hilfreich sein koennte +% +% Gabriele Kruljac, MPI + +\typeout{Document Substyle `DISSTYLE' by MPI FKF, Version 1.2, 15.06.89} + + +% Hier wird die Seitenzahl defaultm"a"sig oben in die Mitte gesetzt +\def\ps@plain{\def\@oddhead{\hfil\thepage\hfil}\def\@oddfoot{}% +\def\@evenhead{\hfil\thepage\hfil}\def\@evenfoot{}} +\def\ps@mypage{\def\@oddhead{\hfil\thepage\hfil}\def\@oddfoot{}% +\def\@evenhead{\hfil\thepage\hfil}\def\@evenfoot{}} +\pagestyle{plain} + +% Hiermit werden Gleichungen mit Kapitel.Gleichung numeriert und +% der Gleichungszaehler bei Beginn eines neuen Kapitels initialisiert. +\@addtoreset{equation}{section} +\def\theequation{\thesection.\arabic{equation}} + +% Hiermit werden Abbildungen mit Kapitel.Abbildung numeriert und +% der Abbildungszaehler bei Beginn eines neuen Kapitels initialisiert. +\@addtoreset{figure}{section} +\def\thefigure{\thesection.\arabic{figure}} + +% Hiermit werden Tafeln mit Kapitel.Tafel numeriert und +% der Tafelzaehler bei Beginn eines neuen Kapitels initialisiert. +\@addtoreset{table}{section} +\def\thetable{\thesection.\arabic{table}} + +% Die folgenden Definitionen ueberschreiben die Voreinstellung +% fuer den \paragraph Befehl, und stellt ihn als vierte Gliederungsebene +% zur Verf"ugung. +% Standardmaessig wird die Ueberschrift eines Paragraphs ohne Nummer +% in bold und der folgende Text in die gleiche Zeile gesetzt. +% Jetzt wird paragraph mit numeriert, danach eine neue Zeile begonnen +% und der Titel des paragraph mit ins Inhaltsverzeichnis uebernommen + +\def\paragraph{\@startsection {paragraph}{4}{\z@} + {-3.25ex plus -1ex minus-.2ex}{1.5ex plus .2ex} + {\normalsize\bf}} +\setcounter{secnumdepth}{4} +\setcounter{tocdepth}{4} diff --git a/macros/latex209/contrib/misc/dpccyr.sty b/macros/latex209/contrib/misc/dpccyr.sty new file mode 100644 index 0000000000..3dd96abd66 --- /dev/null +++ b/macros/latex209/contrib/misc/dpccyr.sty @@ -0,0 +1,262 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "David Carlisle", +%%% version = "1.00", +%%% date = "09 December 1991", +%%% time = "17:33:06 BST", +%%% filename = "dpccyr.sty", +%%% address = "Computer Science Department +%%% Manchester University +%%% Oxford Road +%%% Manchester +%%% England +%%% M13 9PL", +%%% telephone = "+44 61 275 6139", +%%% FAX = "+44 61 275 6236", +%%% checksum = "39898 262 918 8382", +%%% email = "carlisle@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, cyrillic, NFSS", +%%% supported = "yes", +%%% docstring = " +%%% +%%% dpccyr.sty (cyrillic.sty) +%%% +%%% Loads the UWcyr fonts for the NFSS. +%%% This file may be installed as cyrillic.sty but should be +%%% distributed as dpccyr.sty to avoid name clashes with other, +%%% possibly better, cyrillic options. +%%% +%%% The checksum field above was produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%<*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 dpccyr.sty +% +% If you have the Mittelbach/Duchier/Braams docstrip utility, you may +% produce a faster loading .sty file. Rename this file to: dpccyr.doc +% Then run this file through *plain* TeX: +% tex dpccyr.doc +% This should produce the file dpccyr.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 dpccyr.doc +% Note that you may need to quote the arguments here to stop your +% operating system treating the \ characters incorrectly. +% +% latex dpccyr.doc +% Will produce a typeset version of the documentation, as above. +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname + \def\batchfile{dpccyr.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{dpccyr.sty}{t}{\from{dpccyr.doc}{fontdef}} +% ======= +% You do not need the fontdef option if you LaTeX format already has +% the cyrillic fontdefs (eg fontdef.max). So you may just need: +% \generateFile{dpccyr.sty}{t}{\from{dpccyr.doc}{}} + \endinput +\fi +% +\ifcat a\noexpand @\let\next\relax\else\def\next{% + \documentstyle[dpccyr,doc]{article}\MakePercentIgnore}\fi\next +% +%\def\eatmodule<#1>{}\eatmodule +%</x> +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \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{dpccyr.sty\\(cyrillic.sty)} +% \author{D. P. Carlisle} +% \date{09 December 1991} +% \begin{document} +% \maketitle +% +% This file defines the commands:\\ +% |\cyr| normal weight upright cyrillic\\ +% |\cyr\it| normal weight italic cyrillic\\ +% |\cyr\sc| normal weight caps and small caps cyrillic\\ +% |\cyr\bf| bold weight upright cyrillic\\ +% |\cyrss| normal weight sans-serif cyrillic\\ +% |\mathcyr| same as |\cyr|, but set up for math-mode +% +% It should perhaps be noted that I know nothing at all about the +% Cyrillic alphabet, this is just a basic set of declarations to allow +% these fonts to be used in a \LaTeX\ based on the NFSS. +% +% This file may be installed as {\tt cyrillic.sty}, however it should be +% distributed as {\tt dpccyr.sty} to avoid name clashes with other, +% possibly better Cyrillic styles. +% +% \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} +% +% If your \LaTeX\ format is built with a fontdef file, like {\tt +% fontdef.max}, which contains the cyrillic font definitions, you may +% modify the |\generateFile| command in the preamble to this document, +% not to include the {\tt fontdef} option. {\tt docstrip} will then +% remove the following section from the stripped {\tt .sty} version of +% this file. +% +% \begin{macrocode} +%<*fontdef> +\new@fontshape{UWCyr}{m}{n}{% + <5>wncyr5% + <6>wncyr6% + <7>wncyr7% + <8>wncyr8% + <9>wncyr9% + <10>wncyr10% + <11>wncyr10 at10.95pt% + <12>wncyr10 at12pt% + <14>wncyr10 at14.4pt% + <17>wncyr10 at17.28pt% + <20>wncyr10 at20.74pt% + <25>wncyr10 at24.88pt}{} + +\new@fontshape{UWCyr}{m}{it}{% + <5>wncyi5% + <6>wncyi6% + <7>wncyi7% + <8>wncyi8% + <9>wncyi9% + <10>wncyi10% + <11>wncyi10 at10.95pt% + <12>wncyi10 at12pt% + <14>wncyi10 at14.4pt% + <17>wncyi10 at17.28pt% + <20>wncyi10 at20.74pt% + <25>wncyi10 at24.88pt}{} + +\new@fontshape{UWCyr}{m}{sc}{% + <5>wncysc10 at5pt% + <6>wncysc10 at6pt% + <7>wncysc10 at7pt% + <8>wncysc10 at8pt% + <9>wncysc10 at9pt% + <10>wncysc10% + <11>wncysc10 at10.95pt% + <12>wncysc10 at12pt% + <14>wncysc10 at14.4pt% + <17>wncysc10 at17.28pt% + <20>wncysc10 at20.74pt% + <25>wncysc10 at24.88pt}{} + +\new@fontshape{UWCyr}{b}{n}{% + <5>wncyb5% + <6>wncyb6% + <7>wncyb7% + <8>wncyb8% + <9>wncyb9% + <10>wncyb10% + <11>wncyb10 at10.95pt% + <12>wncyb10 at12pt% + <14>wncyb10 at14.4pt% + <17>wncyb10 at17.28pt% + <20>wncyb10 at20.74pt% + <25>wncyb10 at24.88pt}{} + +\extra@def{UWCyr}{}{} + +\new@fontshape{UWCyss}{m}{n}{% + <5>wncyss8 at5pt% + <6>wncyss8 at6pt% + <7>wncyss8 at7pt% + <8>wncyss8% + <9>wncyss9% + <10>wncyss10% + <11>wncyss10 at10.95pt% + <12>wncyss10 at12pt% + <14>wncyss10 at14.4pt% + <17>wncyss10 at17.28pt% + <20>wncyss10 at20.74pt% + <25>wncyss10 at24.88pt}{} + +\extra@def{UWCyss}{}{} +%</fontdef> +% \end{macrocode} +% +% The main definitions: +% \begin{macrocode} +\input cyracc.def +% \end{macrocode} +% +% Set up the user level font commands: +% \begin{macrocode} +\extra@def{UWCyr}{}{\mathcyracc} +\def\cyr{\fontfamily{UWCyr}\cyracc\selectfont} +\def\cyrss{\fontfamily{UWCyss}\cyracc\selectfont} + +\subst@fontshape{UWCyr}{bx}{n}{UWCyr}{b}{n} + +\newmathalphabet{\mathcyr} +\addtoversion{normal}{\mathcyr}{UWCyr}{m}{n} +\addtoversion{bold}{\mathcyr}{UWCyr}{b}{n} +% \end{macrocode} + +% A version of |\cyracc| using |\mathchar| instead of +% |\char|, so the symbols come from the correct font. Can use +% |\fam=7| trick rather than get the cyrillic fontfamily out of +% |\mathcyr@group| as these symbols are only used within the scope (or +% argument) of |\mathcr|. This ought to be in {\tt cyrac.def} +% as it applies to any math-mode use of these fonts, not just \LaTeX. + +% \begin{macrocode} +\def\mathcyracc{% + \def\cydot{{\kern0pt}}% + \mathchardef\cprime"707E + \mathchardef\Cprime"705E + \mathchardef\cdprime"707F + \mathchardef\Cdprime"705F + \def\dbar{dj}\def\Dbar{Dj}% + \mathchardef\dz"701E + \mathchardef\Dz"7016 + \mathchardef\dzh"700A + \mathchardef\Dzh"7002 + \def\'##1{\if c##1\mathchar"700F + \else \if C##1\mathchar"7007 + \else \mathaccent"7026 ##1\fi \fi }% + \def\`##1{\if e##1\mathchar"700B + \else \if E##1\mathchar"7003 + \else \errmessage{accent \string\` not defined in cyrillic}% + ##1\fi \fi }% + \def\=##1{\if e##1\mathchar"700D + \else \if E##1\mathchar"7005 + \else \if \i##1\mathchar"700C + \else \if I##1\mathchar"7004 + \else \errmessage{accent \string\= not defined in cyrillic}% + ##1\fi \fi \fi \fi }% + \def\u##1{\if \i##1\mathaccent"7024 i% + \else \mathaccent"7024 ##1\fi }% + \def\"##1{\if \i##1\mathaccent"7020 \mathchar"703D + \else \if I##1\mathaccent"7020 \mathchar"7004 + \else \mathaccent"7020 ##1\fi \fi }% + \def\!{\mskip-\thinmuskip}} +% \end{macrocode} + +% \end{document} +\endinput
\ No newline at end of file diff --git a/macros/latex209/contrib/misc/draft.sty b/macros/latex209/contrib/misc/draft.sty new file mode 100644 index 0000000000..e494f9dcf8 --- /dev/null +++ b/macros/latex209/contrib/misc/draft.sty @@ -0,0 +1,253 @@ +% +% new email address: jeb@risc.com +% +% NAME THIS FILE: draft.sty (or name it draft.doc and run it through +% doc2sty) AND PUT IT IN YOUR MACROS OR TEXFORMATS DIRECTORY +% +% This is a first attempt at a draft option for the standard LaTeX styles. +% It still has several problems, which are detailed below. +% The draft option attempts to accomplish the following: +% Without requiring any changes to a LaTeX file (other than specifying +% the draft option :-) and without changing the formatting of the +% ``real'' text , mark the spots where \label, \cite, \ref, \index, +% or \glossary commands occur in text, and print the command arguments +% in the margin. +% +% USAGE: +% Specify draft as an optional argument to the documentstyle command +% e.g., \documentstyle[11pt,draft]{book} +% +% JUSTIFICATION: +% Why am I submitting this, even though it still has some problems? +% +% 1) Even in its present shape, I think it is fairly useful. +% I was going crazy before, trying to remember labels, keys, +% and so forth. I am still going crazy, but now for different +% reasons. +% 2) I'm just learning TeX, and don't expect to know enough to do this +% correctly for a while. Hopefully, someone who knows TeX will +% agree this is a useful option, and will point out my mistakes. +% Since the changes to the standard LateX routines are fairly minor, +% and my mistakes are probably silly and quite obvious, this +% may be easy to do. +% 3) I am interested in hearing ideas for other features for this +% option. This option includes some of the ideas of Dr. Rouben +% Rostamian (rostamia@umbc3.UMD.EDU) and I am interested in +% hearing from others. +% 4) Because of 2) and 3), I think we will end up with a better +% draft option if I post this in its present form and ask for +% help. +% +% Please send bugs, fixes, and suggestions to: +% Joe Baker +% 6731 Boelter Hall UCLA L.A., CA 90024 (213) 825-7079, 825-2327 +% INTERNET: jbaker@ee.ucla.edu +% UUCP: {ucbvax, or other backbone}!ucla-cs!uclaee!jbaker +% +% FINALLY, THE DETAILS +% +% The option marks \label,\cite,\ref,\index, and \glossary commands in the +% text with a scriptsize calligraphic letter in the interline space +% (L for label, +% C for cite, R for ref, I for index and G for glossary. +% The label, citation, is printed in the margin in scriptsize bold letters. +% +% For items which are input in horizontal mode, a \marginpar box holding +% the text is put in the right margin (if there are no free boxes left, +% the next option is used.) +% +% Items which are input in display math mode are shoved into the left +% margin (parboxes are not used, so it is possible for one label to +% overwrite another, or for a label to run off the left edge of the page.) +% +% Items which are input in non-display math mode and equation arrays +% are giving me problems. The left margin code works fine for equations +% in the middle of text, but doesn't produce anything for equation arrays. +% Unfortunately, I haven't found a way to distinguish between the two +% cases. For now, I simply raise the item and print it in small letters, +% and hope to avoid hitting any superscripts. +% +% Right now, a space or extra bit of glue is getting inserted where the +% item is, and thus the ``real'' text is not formatted quite the same in +% draft mode. On the tests I've run so far, there hasn't been enough +% added space to actually change any of the linebreaks, so it doesn't +% seem to be a serious problem. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Okay, here it is %%%%%%%%%%%%%%%%%%%%%%%%%% +% NOTE THIS: +% force all marginpar items into the right margin, to leave the left +% margin for calls to marginalnote. +\@mparswitchfalse +% +% +% MARGINALNOTE +% +% The following is a slightly rewritten version of Knuth's marginalstar stuff +% from the TeXBook, pg. 316. It is used to put a marginalnote in the left +% margin. The note is just shoved out and made right justified w.r.t. the +% left margin. Two calls to marginalnote for the same line of text will +% be written one over the other. Long marginal notes will extend off the +% page to the left. +% +\def\strutdepth{\dp\strutbox}% +\def\marginalnote#1{\strut\vadjust{\kern-\strutdepth\specialnote{#1}}}% +\def\specialnote#1{\vtop to \strutdepth{\baselineskip% +\strutdepth\vss\llap{\hbox{\scriptsize \bf #1}}\null}}% +% +% NOTEMARK +% This is used to put a little calligraphic letter in the text to mark +% the spot where the item occurred. +% +\def\notemark#1{\rlap{% +\specialnote{\raise8pt\hbox{$\scriptscriptstyle\cal#1$}}}} +% +% Since I haven't found one approach that works in all modes, I +% have set up the makenote routine to use the following options +% (draftimm, draftdmm, draftinm, drafthm) in inner math mode, +% display math mode, inner non-math mode, and horizontal mode. +% If you don't like one, redefine it before the begin{document} +% line. +\def\draftimm#1{\hbox{\bf \scriptsize #1}} +\def\draftdmm#1{\marginalnote{#1}} +\def\draftinm#1{\notemark{\bf \scriptsize #1}} +\def\drafthm#1{\ifx\@freelist\@empty % if there are no boxes for a marginpar, + \marginalnote{#1} % use a marginalnote + \else + {\marginpar{\scriptsize \bf #1}} + \fi} + +% +% MAKENOTE +% this routine prints the command argument. It tries to do the best it +% can for the given mode. +% +%\def\makenote#1{ +% +% +% \ifmmode % In math mode, we can't use +% % \marginpar, so we use marginalnote +% % in display mode, and for now, +% % just use bold print in inner mode +% % marginalnote works okay in regular +% % non-display math, but not in +% % eqnarrays. By redefining draft... +% % you can change this behavior. +% \ifinner +% \draftimm{#1} +% \else +% \draftdmm{#1} +% \fi +% \else +% \ifinner +% \draftinm{#1} +% \else +% \drafthm{#1} +% \fi +% \fi} +\def\makenote#1{\ifmmode\ifinner\draftimm{#1}% +\else\draftdmm{#1}\fi% +\else\ifinner\draftinm{#1}% +\else% +\drafthm{#1}% +\fi\fi} +% +% MODIFIED LATEX ROUTINES +% We add the \notemark and \makenote routines to the \ref, \pageref, +% \label, \index, \glossary, and \cite commands. +% +% REF +% +% \ref{FOO} == +% BEGIN +% make a reference mark in the text (calligraphic R) +% if \r@foo undefined +% then ?? +% Warning: 'reference foo on page ... undefined' +% else \@car \eval(\r@FOO)\@nil +% fi +% make a reference note (hopefully in the margin) listing the +% reference key +% END +% +\def\ref#1{\notemark{R}% +\@ifundefined{r@#1}{{\bf ??}\@warning% +{Reference `#1' on page \thepage \space % +undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter% +\@car\@tempa \@nil\null}\makenote{R:#1}} +% +% PAGEREF +% +% \pageref{foo} = +% BEGIN +% make a page reference mark in the text (calligraphic PR) +% if \r@foo undefined +% then ?? +% Warning: 'reference foo on page ... undefined' +% else \@cdr \eval(\r@FOO)\@nil +% fi +% make a reference note (hopefully in the margin) listing the +% page reference key +% END +% +\def\pageref#1{\notemark{PR}% +\@ifundefined{r@#1}{{\bf ??}\@warning% +{Reference `#1' on page \thepage \space % +undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter% +\@cdr\@tempa\@nil\null}\makenote{PR:#1}}% +% +% LABEL +% +% same story for the label routine +\def\label#1% +{\notemark{L}\makenote{L:#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} +% +% INDEX +% note that \@wrindex is normally used by both the index and the +% glossary commands. We will make a new version for the glossary +% command that differs only in putting out a G instead of an I. +% +% \@wrindex{ITEM} == +% BEGIN +% make an I mark in the text, and put the index item in the margin +% write of {\indexentry{ITEM}{page number}} +% \endgroup +% \@esphack +% END +% +\def\@wrindex#1#2{\notemark{I}\makenote{I:#2}% +\let\thepage\relax% +\xdef\@gtempa{\write#1{\string \indexentry{#2}{\thepage}}}\endgroup\@gtempa% +\if@nobreak \ifvmode\nobreak\fi\fi\@esphack}% +% +% GLOSSARY +% version for use by glossary commands +% +\def\@wrindexg#1#2{\notemark{G}\makenote{G:#2}% +\let\thepage\relax% +\xdef\@gtempa{\write#1{\string \indexentry{#2}{\thepage}}}\endgroup\@gtempa% +\if@nobreak \ifvmode\nobreak\fi\fi\@esphack}% +% +% new version of the glossary stuff: just changed @wrindex to @wrindexg +% +\def\makeglossary{\if@filesw \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup\@sanitize\@wrindexg\@glossaryfile}\typeout + {Writing glossary file \jobname.glo }\fi} +% +% CITE +% +% citex is used by the bibliography citation routines +% the second argument is the citation key +% +\def\@citex[#1]#2{\notemark{C}\makenote{C:#2}% +\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi% +\def\@citea{}\@cite{\@for\@citeb:=#2\do% +{\@citea\def\@citea{,}\@ifundefined% +{b@\@citeb}{{\bf ?}\@warning% +{Citation `\@citeb' on page \thepage \space undefined}}% +\hbox{\csname b@\@citeb\endcsname}}}{#1}} + diff --git a/macros/latex209/contrib/misc/draftcopy.sty b/macros/latex209/contrib/misc/draftcopy.sty new file mode 100644 index 0000000000..3338a7e0d7 --- /dev/null +++ b/macros/latex209/contrib/misc/draftcopy.sty @@ -0,0 +1,8 @@ + +% Prints a large "DRAFT" diagonally across each page +% Does not show up in TeXview + +\typeout{Prints "DRAFT" on each page; does not show in TeXView} +\special{!userdict begin /bop-hook{gsave 200 30 translate +65 rotate /Times-Roman findfont 216 scalefont setfont +0 0 moveto 0.85 setgray (DRAFT) show grestore}def end} diff --git a/macros/latex209/contrib/misc/drafthead.sty b/macros/latex209/contrib/misc/drafthead.sty new file mode 100644 index 0000000000..b257a557d9 --- /dev/null +++ b/macros/latex209/contrib/misc/drafthead.sty @@ -0,0 +1,40 @@ +% Document style option "drafthead" +% -- usage: \documentstyle[...,drafthead,...]{...} +% -- puts "DRAFT" with date and time at top of each page. +% +% Author: Stephen Page - sdpage@uk.ac.oxford.prg +% sdpage%prg.oxford.ac.uk@ucl-cs.arpa +% sdpage%prg.oxford.ac.uk@cs.ucl.ac.uk +% Released 23 June 1986 +% +% Sets \pagestyle{myheadings} and installs a header. +% +% Bugs: +% -- LaTeX supplies free page number in a nonzero-width box at r.h. edge, +% so the word DRAFT is not exactly centered. It's near enough, though! +% -- Always sets headers, destroying any user-supplied ones. +%---------------------------------------------------------------------------- + +% +% compute the time in hours and minutes; make new variables \timehh and \timemm +% +\newcount\timehh\newcount\timemm +\timehh=\time +\divide\timehh by 60 \timemm=\time +\count255=\timehh\multiply\count255 by -60 \advance\timemm by \count255 +% +% now put in header +\markboth% +%--- Left mark +{\hspace*{\fill}{\protect\small\bf \fbox{DRAFT}} +\hspace*{\fill} +\protect\makebox[0pt][r]{\protect\small\sl\today\ -- +\ifnum\timehh<10 0\fi\number\timehh\,:\,\ifnum\timemm<10 0\fi\number\timemm} +}%--- right mark +{\protect\makebox[0pt][l]{\protect\small\sl\today\ -- +\ifnum\timehh<10 0\fi\number\timehh\,:\,\ifnum\timemm<10 0\fi\number\timemm} +\hspace*{\fill} +{\protect\small\bf \fbox{DRAFT}} +\hspace*{\fill}} + +\pagestyle{myheadings} diff --git a/macros/latex209/contrib/misc/drafts.sty b/macros/latex209/contrib/misc/drafts.sty new file mode 100644 index 0000000000..b1cbdb44f6 --- /dev/null +++ b/macros/latex209/contrib/misc/drafts.sty @@ -0,0 +1,154 @@ +%% +%% drafts.sty -- Release: Sept. 3, 1992 +%% Author: H. Saiedian, U. of Nebraska at Omaha, hossein@unocss.unomaha.edu +%% Usage: +%% \documentstyle[...,drafts,...] +%% ... +%% \pagestyle{drafts} +%% +%% This style puts the word |DRAFT| on the top and bottom of each page and +%% then surrounds it with horizontal rule on both sides. Also date and +%% time of when the drafts were printed are shown on the bottom of each +%% each. +%% +%% A slightly-modified version of fancyheading.sty is used. drafts.sty has +%% three parts: fancyheadings stuff developed by Piet van Oostrum (Dept +%% of Computer Science, University of Utrecht, The Netherlands), TeX code +%% for getting the time, and the initializations. The initialization part +%% at the end allows for customization. +% +%%-------------------------------------------------------------------------- +%% +%% Slightly modified fancyheading.sty (developed by Piet van Oostrum) +% +\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}} +\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}} +\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}} + +\def\chead{\@ifnextchar[{\@xchead}{\@ychead}} +\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}} +\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}} + +\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}} +\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}} +\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}} + +\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}} +\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}} +\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}} + +\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}} +\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}} +\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}} + +\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}} +\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}} +\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}} + +\newdimen\headrulewidth +\newdimen\footrulewidth +\newdimen\plainheadrulewidth +\newdimen\plainfootrulewidth +\newdimen\headwidth +\newif\if@drafts \@draftsfalse +\def\drafts#1#2{\if@drafts#1\else#2\fi} + +% Initialization of the head and foot text. + +\headrulewidth 0pt +\footrulewidth\z@ + +\plainheadrulewidth\z@ +\plainfootrulewidth\z@ + +\lhead{} +\chead{} +\rhead{} +% +\lfoot{} +\cfoot{} +\rfoot{} + +% Put together a header or footer given the left, center and +% right text, fillers at left and right and a rule. +% The \lap commands put the text into an hbox of zero size, +% so overlapping text does not generate an errormessage. + +\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\hbox +{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill +\parbox[b]{\headwidth}{\centering#3\strut}\hfill +\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5} + + +\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\footrule +\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill +\parbox[t]{\headwidth}{\centering#3\strut}\hfill +\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5} + +\def\headrule{{\if@drafts\headrulewidth\plainheadrulewidth\fi +\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} + +\def\footrule{{\if@drafts\footrulewidth\plainfootrulewidth\fi +\vskip-0.3\normalbaselineskip\vskip-\footrulewidth +\hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}} + +\def\ps@fancy{ +\let\@mkboth\markboth +\@ifundefined{chapter}{\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}}} +{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne + \@chapapp\ \thechapter. \ \fi ##1}}{}} +\def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi ##1}}}} +\def\@oddhead{\@fancyhead\relax\@olhead\@ochead\@orhead\hss} +\def\@oddfoot{\@fancyfoot\relax\@olfoot\@ocfoot\@orfoot\hss} +\def\@evenhead{\@fancyhead\hss\@elhead\@echead\@erhead\relax} +\def\@evenfoot{\@fancyfoot\hss\@elfoot\@ecfoot\@erfoot\relax} +\headwidth\textwidth} +\def\ps@drafts{\ps@fancy \let\ps@plain\ps@plain@fancy} +\def\ps@plain@fancy{\@draftstrue\ps@fancy} +% +%%-------------------------------------------------------------------------- +% +%% Getting the time and using it via \now +% +\newcount\hour +\newcount\minute +\hour=\time +\divide \hour by 60 +\minute=\time +\loop \ifnum \minute > 59 \advance \minute by -60 \repeat +\def\now{% +\ifnum \hour<13 +\ifnum \hour<1 12:\else\number\hour:\fi +\ifnum \minute<10 0\fi +\number\minute% +\ifnum \hour<12 \ AM \else \ PM \fi +\else \advance \hour by -12 \number\hour:% +\ifnum \minute<10 0\fi +\number\minute% +\ PM \fi% +} +% +%%-------------------------------------------------------------------------- +% +%% Initializations +% +\headrulewidth 0pt +\footrulewidth 0pt +\plainheadrulewidth 0pt +\plainfootrulewidth 0pt +% +\lhead{} +\chead{.\hrulefill\fbox{\large\sf DRAFT}\hrulefill} +\rhead{} +% +\lfoot{} +\cfoot{.\hrulefill\fbox{\large\sf DRAFT}\hrulefill \\ + \sf \today \hspace{1mm} \now \hfill \thepage} +\rfoot{} +%%-------------------------------------------------------------------------- +\endinput diff --git a/macros/latex209/contrib/misc/draftstamp.sty b/macros/latex209/contrib/misc/draftstamp.sty new file mode 100644 index 0000000000..89b9007597 --- /dev/null +++ b/macros/latex209/contrib/misc/draftstamp.sty @@ -0,0 +1,127 @@ +% DRAFTSTAMP.sty +% +% Put a big DRAFT (or anything) across each page (or only the first page), +% using PostScript. +% +% USAGE +% Bring it in with +% \input draftstamp.sty +% (LaTeX users can instead say \documentstyle[...,draftstamp,...]{...}). +% The default it to print DRAFT without the user doing anything. +% +% RESTRICTIONS +% 1) Expects the DVI to PostScript driver to be DVIPS. +% +% REMARKS +% 1) The angle, position, font, and typesize can be changed inside each +% document if you comment out the \draftstamp just up from the bottom of +% this file. The price is that you have to say \draftstamp yourself, +% after you (optionally) redefine these values (obviously at the +% start of the document). Example: for LaTeX, the line after +% \documentstyle[..,draftstamp,..]{..} +% could read +% \def\drafttext{INTERNAL ONLY}\def\draftPSscalefont{ 100 }\draftstamp +% (note the \draftstamp). See also Installation (3). +% 2) The number before setgray describes lightness or darkness of the text. +% This is white area/total area, so white=1, black=0. +% 3) Called draftstamp.sty and not draftstamp.tex (i) so LaTeX users can +% include it in the list of substyles, if desired, and (ii) so a person +% on the nets can tell from the directory listing alone that it is +% a drop-in file, and not a document. +% +% INSTALLATION +% 0) Put this where your TeX looks for files. For emTeX that is probably +% c:\emtex\texinputs. +% 1) Run as described in Usage and check the darkness of DRAFT. Tip: check +% if it reproduces on your favorite copier. See Remark (2). +% 2) Have the next line be uncommented if you want a warning when the +% stamp is on. +\message{ Substyle DRAFTSTAMP <93-Jul-07 jh>.} +% 3) Some people may want DRAFT only on the first page. Or they may want +% some other text. They need to change this file (or, if this file is in +% an inaccessable shared area, change a copy of this file in their home +% area). +% Here are their options. +% (i) Go to the bottom. +% Change the commenting so that \draftfirstpageonlytrue is the +% default. Now every document will put DRAFT on only the first page. +% Or, change \drafttext to \def\drafttext{v. 1.01}. Now every +% document will have v. 1.01 on the pages. Of course, non-English +% documents will need something like this. +% Or, change any default in this way. +% (ii) To decide values on a per-document basis, go to the bottom and +% comment out the \draftstamp invocation. Inside eacy document, +% any changes made to the defaults must be followed by \draftstamp: +% for instance, DRAFT only on the first page with +% \draftfirstpageonlytrue\draftstamp +% (naturally you can, for instance, combine the \input draftstamp.sty +% line and the above into a personal macro). +% (iii) Modify this file to either prompt the user or to look for a +% user's (configuration or profile) file to set defaults on a +% per-user basis. I (jh) thought these were both big solutions to +% a small problem, so I didn't do them. +% +% HISTORY +% 93-Jul-07 jh Lones Smith (lones@lones.mit.edu) suggests an option for +% printing only on the first page. I made some internal changes so +% that could be done at document-processing time, instead of set +% by a system manager. +% 93-Jul-01 jh Added Installation (1) tip. Posted to SHSU. +% 93-May-18 jh Changed setgray number from .99 to .94 to make DRAFT darker +% so it will reproduce on my copier. +% 93-Mar-05 jim hefferon (hefferon@smcvax.smcvt.edu) Typed in from an note +% given by Vivek Khera (khera@cs.duke.edu) on comp.text.tex, who said it +% came first from Anita Marie Hoover (anita@brahms.udel.edu). ?Derives +% first from the dvips manual? +% +% macro: \draftstamp Insert raw PostScript via a dvips \special. +% The dvips manual under Other Bells and Whistles suggests printing a DRAFT +% across each page with essentially: +% \special{! userdict +% begin /bop-hook{ +% gsave 200 30 translate +% 65 rotate /Times-Roman findfont 220 scalefont setfont +% 0 0 moveto 0.94 setgray (DRAFT) show grestore +% }def end}}% +% (`bop-hook' for `beginning of page'?). I (jh) turned these numbers +% into variables and buried it inside a \def\draftstamp so the numbers are +% set when the \draftstamp command is issued, instead of when this file is +% read. +\newif\ifdraftfirstpageonly +% Now either \draftfirstpageonlytrue or \draftfirstpageonlyfalse +% puts DRAFT only on the first page, or on every page. Omitting both +% amounts to `false'. See the discussion of \newif (p. 211 in TeXbook). +% (I (jh) chose \newif instead of an optional argument so plain TeX works, +% not just LaTeX.) +\def\draftstamphook{\ifdraftfirstpageonly/start% + \else/bop% + \fi} +\def\draftstamp{\special{! userdict + begin \draftstamphook-hook{ + gsave \draftPStranslate translate + \draftPSrotate rotate \draftPSfont findfont + \draftPSscalefont scalefont setfont + \draftPSmoveto moveto \draftPSgraylevel setgray + (\drafttext) show grestore + }def end}}% +% +% DEFAULTS +\def\drafttext{DRAFT} +\def\draftPStranslate{ 200 30 } +\def\draftPSscalefont{ 220 } +\def\draftPSgraylevel{ 0.94 } % See Remarks (2) and Installation (1). +\def\draftPSrotate{ 65 } +\def\draftPSmoveto{ 0 0 } +\def\draftPSfont{ /Times-Roman } +% Comment out whichever of these you don't want to make the default. +\draftfirstpageonlyfalse % do all pages +%\draftfirstpageonlytrue % do first page only +% +% The next command activates \draftstamp. If you want to activate +% differently for each document (say, by sometimes changing DRAFT to +% SECRET) you need to comment this line out. (It +% is here for compatibility with old versions of this style.) See also +% Installation (3). +\draftstamp + +\endinput diff --git a/macros/latex209/contrib/misc/drop.sty b/macros/latex209/contrib/misc/drop.sty new file mode 100644 index 0000000000..f4a5d773f9 --- /dev/null +++ b/macros/latex209/contrib/misc/drop.sty @@ -0,0 +1,67 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DROP.DOC <February 17, 1988> +% Macro for dropping and enlarging the first letter(s) of a paragraph. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Macro written by David G. Cantor, and published Fri, 12 Feb 88, in +% TeXhax, 1988 #16. +% Internet: dgc@math.ucla.edu +% UUCP: ...!{ihnp4, randvax, sdcrdcf, ucbvax}!ucla-cs!dgc +% +% Modified for use with LaTeX by Dominik Wujastyk, February 17, 1988 +% Internet: dow@wjh12.harvard.edu +% Bitnet: dow@harvunxw.bitnet +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This LaTeX macro is for dropping and enlarging the first letter(s) of a +% paragraph. The argument may be one or more letters. +% +% Here is an example of its usage: +% +% \documentstyle[drop]{article} +% \begin{document} +% \drop{IN} THE beginning God created the heaven and the earth. Now the +% earth was unformed and void, and darkness was upon the face of the +% deep; and the spirit of God hovered over the face of the waters. +% \end{document} +% +% Which will produce something along these lines: +% +% I I\ I THE beginning God created the heaven and the earth. +% I I \ I Now the earth was unformed and void, and darkness was +% I I \I upon the face of the deep; and the spirit of God hov- +% ered over the face of the waters. +% +% In the first instance the macro will pause during LaTeX processing and +% ask you for the font you wish to use for you drop capital. When you +% have something that looks good, then comment out box one in DROP.STY, +% and comment in box two, replacing "cmr10 scaled \magstep5" with the font +% of your choice. +% +% In my opinion (DW) there are no fonts available in the standard +% TeX/LaTeX set that are ideal for this use, unless you go down to 9pt or +% 8pt for your text face, and this is too small. If you have Metafont you +% should consider generating a cmr17 font at a magstep of two (about 25pt) +% or three (about 30pt), or even more, depending on the point size of your +% main text. Why not go the whole hog and design some really fancy +% capitals from scratch! +% +%%%%%%%%%%%%%%%%%%%%% BOX ONE %%%%%%%%%%%%%%%%%%%%%%%%% +\typein[\dropinitialfont]{Font for Dropped initial:} % +\font\largefont \dropinitialfont % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%%%%%%%%%%%%%%%%%%%%% BOX TWO %%%%%%%%%%%%%%%%%%%%%%%%% +%\font\largefont= cmr10 scaled \magstep5 % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\drop#1#2{{\noindent + \setbox0\hbox{\largefont #1}\setbox1\hbox{#2}\setbox2\hbox{(}% + \count0=\ht0\advance\count0 by\dp0\count1\baselineskip + \advance\count0 by-\ht1\advance\count0by\ht2 + \dimen1=.5ex\advance\count0by\dimen1\divide\count0 by\count1 + \advance\count0 by1\dimen0\wd0 + \advance\dimen0 by.25em\dimen1=\ht0\advance\dimen1 by-\ht1 + \global\hangindent\dimen0\global\hangafter-\count0 + \hskip-\dimen0\setbox0\hbox to\dimen0{\raise-\dimen1\box0\hss}% + \dp0=0in\ht0=0in\box0}#2} diff --git a/macros/latex209/contrib/misc/ebnf.sty b/macros/latex209/contrib/misc/ebnf.sty new file mode 100644 index 0000000000..8915794b77 --- /dev/null +++ b/macros/latex209/contrib/misc/ebnf.sty @@ -0,0 +1,72 @@ +%From: Damian.Cugley@prg.oxford.ac.uk (Damian Cugley) +%Subject: Re: Styles for lispcode and grammars wanted... +%Date: 11 Jul 90 18:34:23 GMT +% +%Here's one I threw together for my own use. It does EBNF, in LaTeX, in +%the style I like - catagory names italicized in angle brackets, and +%`::=' introducing productions. +% +%Example of use: +%------------------------------------------------------------------------ +%Generally glue is quoted using this notation~\TBcite[\p271]: +%\begin{EBNF} +% \item[glue] +% \<dimen> [~`plus' \<stretch>~] [~`minus' \<stretch>~]. +% \item[stretch] +% \<dimen> | \<fil dimen>. +% \item[fil dimen] +% \<factor> (~`fil' | `fill' | `filll'~). +%\end{EBNF} +%A \<stretch> which is a \<dimen> ... +%------------------------------------------------------------------------ +% +%This is "list" environment in the style of "description" etc (Sec. 5.7). +%Thus, productions start with +% +% \item[LHS] +% +%which produces +% +% <LHS> ::= +% +%in the document. (This was so I can alter the ::= to something else if +%I really want to.) Each production is in LR (horizontal) mode. The +%whole thing is indented to \parindent, with turnover lines indented a +%further 2 em. +% +%`|' produces a vertical line. +% +%\<FOO> or \Cat{FOO} produces <FOO>, with FOO italicized. +% +%You might prefer {\tt plus} instead of `plus' etc. +% +% +%Here's the code: +%------------------------------------------------------------------------ +% Damian Cugley <Damian.Cugley@prg.oxford.ac.uk> Wed 11 Jul 1990 + +\begingroup \catcode`\|=13 + \gdef\EBNF + {\list{???}% + {% + \catcode`\|=13 \def|{$\mid$}% + \def\makelabel##1{\<##1> ::=}% + \parsep=0pt \itemsep=\smallskipamount + \leftmargin=\parindent \advance\leftmargin+2em + \labelsep=0.5em \labelwidth=1.5em + \raggedright + }% + } +\endgroup + +\let\endEBNF\endlist + +\def\Cat#1{\hbox{$\langle${\it #1\/}$\rangle$}} +\def\<#1>{Cat{#1}} +\endinput +------------------------------------------------------------------------ + + /--------------------------------------------------------------------\ + | Damian Cugley, Programming Research Group, 11 Keble Rd, Oxford, UK | + | Damian.Cugley@prg.oxford.ac.uk =or= ...@oxford.prg in UK | + \--------------------------------------------------------------------/ diff --git a/macros/latex209/contrib/misc/editbar.sty b/macros/latex209/contrib/misc/editbar.sty new file mode 100644 index 0000000000..3214dc108b --- /dev/null +++ b/macros/latex209/contrib/misc/editbar.sty @@ -0,0 +1,615 @@ +\iffalse % + + LaTeX Style: editbar.sty 2.0 + + Written by: Michael R. Van Geest + Unisys Corp. + M.S. 4522 + 2276 Highcrest Road + Roseville, MN 55113 + + Internet: mrv@unirsvl.rsvl.unisys.com + + Date: August 17, 1994 + + TeX Drivers Supported: DVIPS + + + General Information: + + editbar.sty is a LaTeX style to be used to print edit bars + (change bars) with PostScript as the final output. + + DVIPS is the only driver currently supported, but others could + be used. + + Generation of edit bars on one page and/or spanning + multiple pages. + + The output routine of LaTeX is modified to include the edit + bar commands to span multiple pages. + + + Macro usage: + + ebarsetup - Place after \begin{document} + + ebarcleanup - Place before \end{document} + It is adviseable to put a \clearpage before + \ebarcleanup. + + genebaron - Start generating edit bars. + + Put in a \hbox to 0pt to not affect letter spacing. + + Example: \hbox to 0pt{\genebaron\hss} + + If the first item in a sentence or data item, + put \hskip0pt before it. + + Example: \hskip0pt\hbox to 0pt{\genebaron\hss} + + genebaroff - End generating edit bars. + + + Counters that can be modified are: + + \ebaroddside - Distance in points from the left side of the + paper to where the edit bar on the odd side + of the paper is placed. + + Currently set to 508. + + \ebarevenside - Distance in points from the left side of the + paper to where the edit bar on the even side + of the paper is placed. + + Currently set to -30. + + \ebarbarheight - Height of edit bar in points on current line. + Currently set to 12 (1 pica). + + \ebarbarwidth - Edit bar width in points, currently set to 2. + + + Auxilary files that are created are: + + \jobname.ebo - Edit bar out file. + + \count0 is written to this file in the output + routine by the \write command. + + \jobname.ebi - Edit bar in file. The contents of \jobname.ebo + are copied to this file after 1 pass of LaTeX. + This file is used as input to the genebaron + and genebaroff macros to find out which page(s) + to place the edit bars. + + Notes: 1. The .ebo and .ebi files must be deleted if revisions + are made to the original .tex file. + + 2. Three passes must be run to ensure correct ebar + generation. + + Pass 1 - Write editbar on and off to .ebo file + + Pass 2 - Read editbar on and offs from .ebi file + generated on pass one. + + If spanning pages, write ebar span on and + off macros to the aux file. + + The reason this is done, is because TeX reads + ahead a couple of pages, and will set count + registers incorrectly, resulting in incorrect + page spanning. + + By writing edit bar page span macros to the aux + file, the next pass can do an ifx to check + that the edit bar is spanning the correct pages. + + Pass 3 - Read editbar on and offs from pass two. + Also check for macros written to aux file + from pass 2 for edit bar page spanning. + + + Restrictions: + + - Does not span multiple chapters. The edit bar must + end at the chapter. This is because count0 is used + as the edit bar counter to place on odd or even sides + if two sided styles are used. If one sided styles + are used, the odd side edit bar code is used. + + - Nested edit bars are not supported. + + Examples: + + \genebaron Text \genebaron text \genebaroff + + \genebaron Text \genebaroff text \genebaroff + + - Does support paper resolution. The DVIPS + PostScript def Resolution is used. + + - Edit bars in Longtable.sty should work. + + + Sample Usage: + + \documentstyle[editbar]{book} + % + \begin{document} + % + \ebarsetup{}% + % + Paragraph on page 1 + % + \newpage + This paragraph \hbox to 0pt{\genebaron\hss}has an edit bar on it. + % + \newpage + % + This is a paragraph that has an edit bar around it. + % + This \genebaroff{}is a paragraph with end edit bar that ends it. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + More stuff. + % + \clearpage\ebarcleanup{}% + \end{document} + +\fi % + +\def\fileversion{v2.0} +\def\filedate{17AUG94} +\wlog{Style-Option: `editbar' \fileversion \space\space <\filedate> (M.R.V.G.)} + +% Dimen Register - truepagetotal +% +% This is set in the sample output routine. Must be used for edit bars +% to work correctly. +% +\newdimen\truepagetotal +% +% +% Read Register - ebarin +% Edit Bar read in file +% +\newread\ebarin + +% Write Register - ebarout +% Edit Bar write out file +% +\newwrite\ebarout + +% Count Register - ebarnest +% +\newcount\ebarnest +\ebarnest=0 + +% Count Register - ebarcount +% +\newcount\ebarcount +\ebarcount=0 + +% Count Register - ebaroddside +% +\newcount\ebaroddside +\ebaroddside=508 + +% Count Register - ebarevenside +% +\newcount\ebarevenside +\ebarevenside=-30 + +% Count Register - ebarbarwidth +% +\newcount\ebarbarwidth +\ebarbarwidth=2 + +% Count Register - ebarbarheight +% +\newcount\ebarbarheight +\ebarbarheight=12 + +% Count Register - ebarpagesspan +% +\newcount\ebarpagesspan +\ebarpagesspan=0 + +% Count Register - ebaroncapture +% +\newcount\ebaroncapture +\ebaroncapture=0 + +% Count Register - ebaroncapturesave +% +\newcount\ebaroncapturesave +\ebaroncapturesave=0 + +% Count Register - ebaroffcapture +% +\newcount\ebaroffcapture +\ebaroffcapture=0 + +% Count Register - ebarsubtract +% +\newcount\ebarsubtract +\ebarsubtract=0 + +% If - ifebarfileopen +% Checks to see if the ebarfile is open +% +\newif\ifebarfileopen +% +% If - ifebarspanpages +% Checks for ebar spanning pages +% +\newif\ifebarspanpages +\ebarspanpagesfalse % +% +% Def - Text for ifx checking on ebar page spanning +% +\def\ebarcheckonmsg{ebarspanon} +\def\ebarcheckoffmsg{ebarspanoff} +% +% ebarsetup +% +% Sets up the input and output ebar files +% +% Place at the top of the document +% +\globaldefs1% +\def\ebarsetup{% +\immediate\openin\ebarin=\jobname.ebi % +\ifeof\ebarin% + \typeout{No file \jobname.ebi}% + \global\ebarfileopenfalse% +\else% + \global\ebarfileopentrue% +\fi% +\immediate\openout\ebarout=\jobname.ebo % +}% +% +% ebarcleanup +% +% Closes the ebar output file, then opens the ebar output file for read, +% then copies the ebar output file to the ebar input file for the next +% pass to read the ebar input file +% +% Place at the end of the document +% +\def\ebarcleanup{% +\immediate\closein\ebarin% +\immediate\closeout\ebarout% +%% +\immediate\openin\ebarin=\jobname.ebo % +\immediate\openout\ebarout=\jobname.ebi % +%% +\ebarfileopentrue% +%% +\loop% + \immediate\read\ebarin to \ebarinin% + \ifeof\ebarin% + \ebarfileopenfalse% + \fi% + \ifebarfileopen% + \immediate\write\ebarout{\ebarinin}% +\repeat% +%% +\closein\ebarin% +\closeout\ebarout% +}% +% +% ebargeton +% +% Gets the next ebar reference from the ebar input file +% +% Specifically, gets the relative page number output from the prior +% pass of genebar macro +% +\def\ebargeton{% +\immediate% +\ifeof\ebarin% +% +\else% + \immediate\read\ebarin to \ebarinon% + \global\ebaroncapture=\ebarinon% + \global\ebaroncapturesave=\ebarinon% +\fi% +} +% +% ebargetoff +% +% Gets the next ebar reference from the ebar input file +% +% Specifically, gets the relative page number output from the prior +% pass of genebar macro +% +\def\ebargetoff{% +\immediate% +\ifeof\ebarin% +% +\else% + \immediate\read\ebarin to \ebarinoff% + \global\ebaroffcapture=\ebarinoff% +\fi% +} +% +% endebarthispage +% +% Check edit bar status to end an edit bar on this page +% +\def\endebarthispage{% + \expandafter\ifx\csname EBARSPANONat% + Count\romannumeral\ebarcount% + Page\romannumeral\count0% + \endcsname% + \ebarcheckonmsg +% +% TRUE Statement, Macro is defined +% + \message{Ebar Spanning Pages On} + \global\ebarspanpagestrue + \fi % +% + \ifebarspanpages + \genebaroffpage{}% + \fi% +}% +% +% beginebarnextpage +% +% Check edit bar status to begin an edit bar on next page +% +\def\beginebarnextpage{% + \ifebarspanpages + \genebaronpage{}% + \fi% + \expandafter\ifx\csname EBARSPANOFFat% + Count\romannumeral\ebarcount% + Page\romannumeral\count0% + \endcsname% + \ebarcheckoffmsg +% +% TRUE Statement, Macro is defined +% + \message{Ebar Spanning Pages Off} + \global\ebarspanpagesfalse + \fi +}% +% +% ebarspecialstart, ebarspecialodd, ebarspecialeven, and ebarspecialend +% +% Start, Odd and even pages, and end special macros +% +\newtoks\ebarendline +\ebarendline={ }% +% +% +\def\ebarspecialstart{% + \special{ps:% + /SPECIALSTART pop % FOR DEBUGGING PostScript + Resolution 72 div /Point exch def % Get points conversion + currentpoint exch pop % Get current Y point + Point \the\ebarbarheight\the\ebarendline % + mul sub /Y1point exch def % Get current Y point + % minus ebar height + }% +}% +% +\def\ebarspecialodd{% + \special{ps:% + /SPECIALODD pop % FOR DEBUGGING PostScript + Point \the\ebaroddside\the\ebarendline % + mul /Xpoint exch def % Get X point + }% +}% +% +\def\ebarspecialeven{% + \special{ps:% + /SPECIALEVEN pop % FOR DEBUGGING PostScript + Point \the\ebarevenside\the\ebarendline % + mul /Xpoint exch def % Get X point + }% +}% +% +\def\ebarspecialend{% + \special{ps:% + /SPECIALEND pop % FOR DEBUGGING PostScript + gsave % + Point \the\ebarbarwidth\the\ebarendline % + mul setlinewidth % Edit Bar width + currentpoint exch pop \the\ebarsubtract\the\ebarendline % + % Get current Y point + Point mul sub /Y2point exch def % minus adjustment + Xpoint Y1point moveto % + Xpoint Y2point lineto stroke % + grestore}% +}% +% +% genebaron +% +% Writes the relative page number to the ebar output file, +% reads from the ebar input file if open and generates the ebar on +% +% Place where the ebar will occur +% +\def\genebaron{% + \write\ebarout{\the\count0}% + \global\advance\ebarcount by 1 % +\ifeof\ebarin% +\else% + \global\advance\ebarnest by 1 % +% + \ifnum\ebarnest=1 % + \else% + \@latexerr{Edit bar are nested, bad results can occur.}% + {Please use genebaroff before using genebaron}% + \fi% +% + \ebargeton% % Get ebar on page + \ebargetoff% % Get ebar off page +% + \global\ebarpagesspan=\ebaroffcapture% % Get page span + \global\advance\ebarpagesspan by -\ebaroncapture% +% + \ifnum\ebarpagesspan>0% +% + \immediate\write \@auxout{\gdef\string\EBARSPANONat% + Count\romannumeral\ebarcount% + Page\romannumeral\ebaroncapture{ebarspanon}} + \immediate\write \@auxout{\gdef\string\EBARSPANOFFat% + Count\romannumeral\ebarcount% + Page\romannumeral\ebaroffcapture{ebarspanoff}} +% + \fi % +% + \special{ps:% + /GENEBARON pop % FOR DEBUGGING PostScript + }% +% + \ebarspecialstart% +% + \if@twoside% + \ifodd\ebaroncapture% + \ebarspecialodd% + \else% + \ebarspecialeven% + \fi% + \else% + \ebarspecialodd% + \fi% +\fi% +}% +% +% genebaronpage +% +% Fake ebar on for page begin +% +% +\def\genebaronpage{% +\ifeof\ebarin% +\else% + \special{ps:% + /GENEBARONPAGE pop % FOR DEBUGGING PostScript + }% + \ebarspecialstart% +% + \if@twoside% + \ifodd\count0% + \ebarspecialodd% + \else% + \ebarspecialeven% + \fi% + \else% + \ebarspecialodd% + \fi% +\fi% +}% +% +% genebaroff +% +% Writes the relative page number to the ebar output file, and +% generates special code for end +% +% Place where the ebar will occur +% +\def\genebaroff{\write\ebarout{\the\count0}% +\ifeof\ebarin% +\else% + \global\ebarsubtract=0 % + \global\advance\ebarnest by -1 % +% + \ifnum\ebarnest=0 % + \else% + \@latexerr{Edit bar are nested, bad results can occur.}% + {Please use genebaron before using genebaroff}% + \fi% +% + \special{ps:% + /GENEBAROFF pop % FOR DEBUGGING PostScript + }% + \ebarspecialend% +\fi% +}% +% +% genebaroffpage +% +% Fake ebar off for page end +% +\def\genebaroffpage{% +\ifeof\ebarin% +\else% + \global\ebarsubtract=\pagegoal % Get pagegoal + \ifdim\truepagetotal < \pagegoal % + \global\advance\ebarsubtract by -\truepagetotal % subtract truepagetotal + \else + \global\advance\ebarsubtract by -\pagegoal % subtract pagegoal + \fi +% + \global\divide\ebarsubtract by 65536 % Divide by scaled points +% + \special{ps:% + /GENEBAROFFPAGE pop % FOR DEBUGGING PostScript + }% + \ebarspecialend% +\fi% +}% +% +% +\globaldefs0% +% +% Sample shipout routine changes +% +\def\@outputpage{\begingroup\catcode`\ =10 + \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii + \if@specialpage + \global\@specialpagefalse\@nameuse{ps@\@specialstyle}\fi + \if@twoside + \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot + \let\@themargin\oddsidemargin + \else \let\@thehead\@evenhead + \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \fi\fi +% + {\setbox0=\vbox{\unvcopy\@outputbox} % MRV 07JAN94 + \global\truepagetotal=\ht0} % Get true page total +% + \shipout + \vbox{\normalsize \baselineskip\z@ \lineskip\z@ + \let\par\@@par %% 15 Sep 87 + \vskip \topmargin \moveright\@themargin + \vbox{\setbox\@tempboxa + \vbox to\headheight{\vfil \hbox to\textwidth + {\let\label\@gobble \let\index\@gobble + \@thehead}} %% 22 Feb 87 + \dp\@tempboxa\z@ + \box\@tempboxa + \vskip \headsep +% + \box\@outputbox +% + \endebarthispage% +% + \baselineskip\footskip + \hbox to\textwidth{\let\label\@gobble + \let\index\@gobble %% 22 Feb 87 + \@thefoot}}}\global\@colht\textheight + \endgroup\stepcounter{page}\let\firstmark\botmark% +% + \beginebarnextpage{}} +% diff --git a/macros/latex209/contrib/misc/enumspec.sty b/macros/latex209/contrib/misc/enumspec.sty new file mode 100644 index 0000000000..05726d9d0c --- /dev/null +++ b/macros/latex209/contrib/misc/enumspec.sty @@ -0,0 +1,56 @@ +%% ENUMSPEC.STY -- Enumerate environment with special leading character for +%% LaTeX version 2.09 (\documentstyle[enumspec]{...}) +%% January 13, 1988 +%% George D. Greenwade (BED_GDG@SHSU), Center for Business & Economic +%% Research, Sam Houston State University, Huntsville, TX 77341-2056 +%% +%% Allows for a leading character on the enumi ... enumiv labels. Default +%% character (\leadchar) is $\ast$, but may easily be changed on the first +%% line of the code, in the preamble of the LaTeX document (using \def), +%% or in the body of the LaTeX document (using \renewcommand). Instead of +%% \item in the enumerate environment, use \itemn for normal enumeration and +%% \items for special character enumeration, as these switch between the +%% enumeration labels (NOTE: \item may be used, but once \items is invoked, +%% enumi ... enumiv are globally redefined, until reset using \itemn.) +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Define leading character %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\leadchar{$\ast$} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Define special labels %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\stardefs{\def\labelenumi{\leadchar \arabic{enumi}.} + \def\theenumi{\arabic{enumi}} + \def\labelenumii{\leadchar (\alph{enumii})} + \def\theenumii{\alph{enumii}} + \def\p@enumii{\theenumi} + \def\labelenumiii{\leadchar \roman{enumiii}.} + \def\theenumiii{\roman{enumiii}} + \def\p@enumiii{\theenumi(\theenumii)} + \def\labelenumiv{\leadchar \Alph{enumiv}.} + \def\theenumiv{\Alph{enumiv}} + \def\p@enumiv{\p@enumiii\theenumiii}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Define normal labels %% +%% (from ARTICLE.STY) %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\normaldefs{\def\labelenumi{\arabic{enumi}.} + \def\theenumi{\arabic{enumi}} + \def\labelenumii{(\alph{enumii})} + \def\theenumii{\alph{enumii}} + \def\p@enumii{\theenumi} + \def\labelenumiii{\roman{enumiii}.} + \def\theenumiii{\roman{enumiii}} + \def\p@enumiii{\theenumi(\theenumii)} + \def\labelenumiv{\Alph{enumiv}.} + \def\theenumiv{\Alph{enumiv}} + \def\p@enumiv{\p@enumiii\theenumiii}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Define \items and \itemn %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\items{\stardefs \item} +\def\itemn{\normaldefs \item} diff --git a/macros/latex209/contrib/misc/env.sty b/macros/latex209/contrib/misc/env.sty new file mode 100644 index 0000000000..4b14401cdd --- /dev/null +++ b/macros/latex209/contrib/misc/env.sty @@ -0,0 +1,126 @@ +%From: <DLV%CUNYVMS1.BITNET@uwavm.acs.washington.edu> + +%\documentstyle[12pt,env]{article} +%\nofiles +%\begin{document} +%\sf +% +%\from{Dimitri Vulis} %fills the blank in the return address on our stationery +% +%\begin{envelope} +%Dimitri Vulis\\ +%Department of Mathematics/Box 330\\ +%City University of New York Graduate Center\\ +%33 West 33 St.\\ +%New York, NY 10036 +%\ZipBar{10036-8099} +%\end{envelope} +% +%\begin{envelope} +%American Mathematical Society\\ +%P. O. Box 6248\\ +%Providence, RI 02940 +%\ZipBar{02940-9943} +%\end{envelope} +% +%\begin{envelope} +%Acad.\ Stanislav P. Merkuriev, Rector\\ +%Leningrad State University\\ +%Universitetskaya Naberezhnaya, 7/9\\ +%Leningrad 199034\\ +%USSR +%\end{envelope} +% +%\end{document} +% +%Evidently, the envilope environment contains the address, and \ZipBar produces +%an optional bar code on the bottom right corner. +% +%Assuming that you are facing the LaserWriter, and the cables are toward the +%wall, feed the envelope into the slot on your right (opposite the paper +%cassette) face up, so that its bottom is flush with the edge of the slot +%closest to the wall. If this is consufing, just try all possible combinations. +% +%When you are printing multiple envelopes, there is an approx. 2 second time +%window to feed the next envelope; if you do it too early, or too late, it jams. +%Wait about 2 seconds before the previous envelope disappears. Here, practice +%only makes perfect. +% +%Manual feeding won't work if your paper cassette is empty, and it's normal for +%a blank sheet of paper to be dragged out together with the envelope. + + +\textwidth9.5in +\textheight6.675in +\pagestyle{empty} +\special{ps: landscape} + +\def\@from{} +\def\from#1{\def\@from{#1}} + +\newbox\ZipBarL +\newbox\ZipBarS %1/64" 1/32" +\setbox\ZipBarL\hbox{\vrule height.125in width.015625in\hskip.03125in} +\setbox\ZipBarS\hbox{\vrule height.05in width.015625in\hskip.03125in} +%each black bar is about 4.6 dots wide on a 300dpi printer +\newcount\ZipBarm +\newcount\ZipBarn +\newif\ifzipcode +\chardef\ten=10 + +%Almost like using \ifcase... except `-' is ignored. +\def\ZipBar@@@#1#2{\expandafter\def\csname ZipBar@@#1\endcsname% +{#2\advance\ZipBarn#1\relax}} + +\ZipBar@@@0{\copy\ZipBarL\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarS} +\ZipBar@@@1{\copy\ZipBarS\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarL} +\ZipBar@@@2{\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarL} +\ZipBar@@@3{\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarL\copy\ZipBarS} +\ZipBar@@@4{\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL} +\ZipBar@@@5{\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS} +\ZipBar@@@6{\copy\ZipBarS\copy\ZipBarL\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS} +\ZipBar@@@7{\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL} +\ZipBar@@@8{\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS} +\ZipBar@@@9{\copy\ZipBarL\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS} + +\def\ZipBar@@#1{\csname ZipBar@@#1\endcsname} + +\def\ZipBar@#1{% + \ifx#1\null% + \let\next\relax% + \else% + \ZipBar@@{#1}% + \let\next\ZipBar@% + \fi% + \next} + +\def\ZipBar#1{% + \zipcodetrue% + \par\vspace{.5in}% + \hfill\hbox{% + \copy\ZipBarL% start with a long bar + \ZipBarn\z@% + \ZipBar@#1\null% + \ZipBarm\ZipBarn% + \divide\ZipBarm\ten% + \multiply\ZipBarm\ten% + \advance\ZipBarm-\ZipBarn% + \ifnum\ZipBarm<0% + \advance\ZipBarm\ten% + \fi% + \ZipBar@@{\the\ZipBarm}% last digit, so that the sum is divisible by ten + \copy\ZipBarL% end with a long bar + }\hspace*{1.5in}\vspace*{.375in}} + +\def\envelope{ +\newpage \zipcodefalse +\special{ps::[asis] statusdict /manualfeed true put} +\raggedright +\vspace*{3.175in} %Fill in the blank on our stationary---change as needed +{\parindent.32in\@from\ \par} +\vfill +\parindent3.5in} +%A fancier way would be to put the street address in a box and to center it +\def\endenvelope{\par +\ifzipcode \else \vspace*{1in} \fi +\special{ps::[asis] statusdict /manualfeed false put}} diff --git a/macros/latex209/contrib/misc/epac.sty b/macros/latex209/contrib/misc/epac.sty new file mode 100644 index 0000000000..a45f612646 --- /dev/null +++ b/macros/latex209/contrib/misc/epac.sty @@ -0,0 +1,234 @@ +% This is epac.sty in text format, as of 23 October 1991. +% This is the official style file of the +% European Particle Accelerator Conference. +% +% It is a style option of the standard LaTeX 'article' style, i.e. +% the usage is: +% \documentstyle[epac]{article} +% Instructions for authors are provided in a separate file epac.tex +% which can be used as a model for papers to be submitted to the +% conference. +% +% This file will produce a camera-ready manuscript for the EPAC if +% used with LaTeX, Version 2.09. +% +% *** DO NOT MODIFY THIS FILE IN ANY WAY WHATSOEVER. *** +% HOWEVER DO DISTRIBUTE IT FREELY TO OTHER USERS/INSTITUTIONS +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Much of this file is based upon: % +% % +% % PROC DOCUMENT STYLE -- Released 4 September 1986 % +% % for LaTeX version 2.09 % +% % Copyright (C) 1985 by Leslie Lamport % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% + +\typeout{Document Style Option 'EPAC', Version of 23 October 1991} +\typeout{-------------------------------------------} +\typeout{-- This is the official style for} +\typeout{-- papers to be submitted to the} +\typeout{-- European Particle Accelerator Conference} +\typeout{-------------------------------------------} + + +% **************************************** +% * PAGE LAYOUT * +% **************************************** +% +% All margin dimensions measured from a point one inch from top and side +% of page. + +% SIDE MARGINS: + \oddsidemargin -13mm % Note that \oddsidemargin = \evensidemargin + \evensidemargin -13mm + +% VERTICAL SPACING: + % Top of page: +\topmargin -47pt % Nominal distance from top of page to top of + % box containing running head. +\headheight 12pt % Height of box containing running head. +\headsep 25pt % Space between running head and text. +% \topskip = 10pt % '\baselineskip' for first line of page. + % Bottom of page: +\footskip 75pt % Distance from baseline of box containing foot + % to baseline of last line of text. + + +% DIMENSION OF TEXT: + +\textheight 24.6cm % Height of text (including footnotes and figures, + % excluding running head and foot). +\textwidth 18.229cm % Width of text line. + % For two-column mode: +\columnsep 5mm % Space between columns +\columnseprule 0pt % Width of rule between columns. + + + +% **************************************** +% * PAGE STYLES * +% **************************************** +% +% Use \markright (or \markboth) to put an identification in the +% lower left. The page number is printed in the lower right. + + +\def\@oddhead{}\def\@evenhead{} +\def\@oddfoot{} +\def\@evenfoot{\@oddfoot} + +%----------------------------------------------------------------------- +% +% We acknowledge the borrowing of the clever part of +% Steven Gildea's definition of \section +% from geophysi.sty. +% +% \section is tricky because we want to both support \section* and have +% the section title uppercased. + +\def\section{\secdef\@sectionb\@sections} +\def\@sectionb[#1]#2{\@sections{#2}} +\def\@sections#1{\@startsection {section}{1}{\z@} + {-2.8ex plus -0.8ex minus -.1ex}{1.5ex plus .2ex} + {\large\bf\centering}{\uppercase{#1}}} +% Should there be any problem with this, we can revert to the following +% but then the onus is on the user to type the argument of \section in +% uppercase in the input file. +% +%\def\section{\@startsection {section}{1}{\z@}{-2.8ex plus -0.8ex minus +% -.1ex}{1.5ex plus .2ex}{\large\bf\centering}} + +\def\subsection{\@startsection{subsection}{2}{\z@}{-2.6ex plus -.8ex minus + -.17ex}{1.2ex plus .17ex}{\large\sl}} +\def\subsubsection{\@startsection{subsubsection}{3}{\parindent} + {-2.5ex plus -.7ex minus -.17ex}{-1em}{\normalsize\bf}} +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{2.5ex plus .7ex minus .17ex}{-1em}{\normalsize\sl}} +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{2.25ex plus .7ex minus + .17ex}{-1em}{\normalsize\bf}} + +\setcounter{secnumdepth}{2} + +%----------------------------------------------------------------------- + +% **************************************** +% * TITLE * +% **************************************** +% + +% This definition of \maketitle taken from article.sty, and has been +% somewhat modified. + +\def\maketitle{\par + \begingroup + \def\thefootnote{\fnsymbol{footnote}} + \def\@makefnmark{\hbox + to 0pt{$^{\@thefnmark}$\hss}} + \twocolumn[\@maketitle] + \@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} + +\newlength{\titleblockheight} % so user can change it if need be +\setlength{\titleblockheight}{4cm} + + +\def\@maketitle{\vbox to \titleblockheight {\hsize\textwidth + \linewidth\hsize \vfil \centering + {\Large\bf \@title \par} + \vskip 2em % Vertical space after title. + {\large\begin{tabular}[t]{c}\@author \end{tabular}\par} + \vfil}} + + +% The \copyrightspace command is used to produce a blank space in the first +% column where a copyright notice may go. It works by producing a +% blank footnote of the appropriate size. Note that it should appear +% after any \footnote commands that produce footnotes for the first +% column. Adjusted to leave just 1cm. + +\def\copyrightspace{\footnotetext[0]{\mbox{}\vrule height 1cm width 0pt}} + +% The abstract Environment + +\def\abstract{\subsection*{Abstract}} +\def\endabstract{\par} + +% Redefine to use smaller fonts +\def\thebibliography#1{\setlength{\itemsep}{0pt}\setlength{\parsep}{0pt} + \section*{REFERENCES\@mkboth + {REFERENCES}{REFERENCES}}\small\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 + + +% **************************************** +% * INITIALIZATION * +% **************************************** +% +% Default initializations + +\twocolumn +\sloppy +\parindent 1em +\leftmargini 2em +\leftmargin\leftmargini +\leftmarginv .5em +\leftmarginvi .5em +\flushbottom +%----------------------------------------------------------------------- +%----------------------------------------------------------------------- +% Here are some useful commands which facilitate correct formatting: +% +% To give a numerical value with units, e.g. \QTY{ 4.2 }{ MV\,n^{-1} } +% (this takes care that the units in an equation are in a roman font +% and not in math-italic which is used for symbols, IMPORTANT!!) +% +\newcommand{\QTY}[2]{\mbox{\(#1\rm\,#2\)}} +%----------------------------------------------------------------------- +% +% To express a number in scientific notation, e.g. \Enum{1.7}{32} +\newcommand{\Enum}[2]{\mbox{\(#1\times10^{#2}\)}} +% +%----------------------------------------------------------------------- +% numerical formula e.g. \NQTY{E}{GeV} gives [E/GeV] +\newcommand{\NQTY}[2]{\mbox{$[#1/{\rm #2}]$}} % symbol with units in +% +%----------------------------------------------------------------------- +% Expectation value or average, e.g. \EV{ x^2 } gives <x^2> +\newcommand{\EV}[1]{\left\langle #1 \right\rangle}% expectation value +% +%----------------------------------------------------------------------- +% These are convenient for quoting luminosity: +\newcommand{\LUMI}[1]{\QTY{#1}{cm^{-2}s^{-1}}} +\newcommand{\LUM}[2]{\LUMI{#1\times10^{#2}}} +% +% thus a B-factory design might quote \LUM{3.0}{33} +%----------------------------------------------------------------------- +\def\gappeq{\mathrel{ \rlap{\raise.5ex\hbox{$>$}} + {\lower.5ex\hbox{$\sim$}} } } +% +% \gappeq is a compound symbol made out of a > sign on top of a tilde +% usually used to mean "greater than or approximately equal to" +% or "vaguely greater than" by physicists. +% It behaves as a mathematical relation in TeX's math modes, e.g. +% $ a \gappeq b $ in the text and +% $$ a \gappeq b $$ as a display. +% +\def\lappeq{\mathrel{ \rlap{\raise.5ex\hbox{$<$}} + {\lower.5ex\hbox{$\sim$}} } } +%----------------------------------------------------------------------- +% End of epac.sty diff --git a/macros/latex209/contrib/misc/epigram.sty b/macros/latex209/contrib/misc/epigram.sty new file mode 120000 index 0000000000..e0a99de4ce --- /dev/null +++ b/macros/latex209/contrib/misc/epigram.sty @@ -0,0 +1 @@ +../../../generic/misc/epigram.tex
\ No newline at end of file diff --git a/macros/latex209/contrib/misc/eqnarray.sty b/macros/latex209/contrib/misc/eqnarray.sty new file mode 100644 index 0000000000..bac573c7c8 --- /dev/null +++ b/macros/latex209/contrib/misc/eqnarray.sty @@ -0,0 +1,99 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "David M. Jones", +%%% version = "1.0", +%%% date = "06 May 1992", +%%% time = "16:30:57 EDT", +%%% filename = "eqnarray.sty", +%%% 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 = "36087 99 481 4448", +%%% email = "dmjones@theory.lcs.mit.edu (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, eqnarray", +%%% supported = "yes", +%%% docstring = "This file reimplements the LaTeX eqnarray +%%% environment to fix two problems: (1) the +%%% standard definition places far too much +%%% space around the second column (10 points +%%% in the standard styles) and (2) the macro +%%% \@eqnsel (see below) does not work as +%%% documented in latex.tex. If used in +%%% conjunction with fleqn.sty, eqnarray must +%%% appear after fleqn in the document-style +%%% option list. +%%% +%%% I know of no bugs in this implementation, +%%% but would be happy to hear of any problems +%%% that arise with it. +%%% +%%% Oh, by the way, all of this would be +%%% unnecessary if you used AMS-LaTeX. +%%% +%%% 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. This +%%% program, as well as Nelson Beebe's proposal +%%% for standard file headers, is available via +%%% anonymous ftp from math.utah.edu.", +%%% } +%%% ==================================================================== + +%% The default is for left-hand side of equations to be flushright. +%% To make them flushleft, \let\@eqnsel = \relax + +\let\@eqnsel\hfil + +%% There are two main modifications. First, I removed the +%% \hskip\@centering from the beginning of the preamble. This \hskip +%% was, as far as I can tell, superfluous and was crippling \@eqnsel. +%% Second, I removed the two occurences of \hskip 2\arraycolsep and +%% change the template for the second column to ${{}##{}}$. This +%% restores the proper amount of space around the second column of the +%% eqnarray. I also introduced the parameters \@eqnmar and \@eqnhook +%% to provide support for the flush left equation style. + +\newskip\@eqnmar +\@eqnmar\@centering + +\let\@eqnhook\relax + +\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation +\global\@eqnswtrue +\global\@eqcnt\z@\tabskip\@eqnmar\let\\=\@eqncr +\@eqnhook +$$\halign to \displaywidth\bgroup\@eqnsel + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + \hfil${{}##{}}$\hfil&\global\@eqcnt\tw@ + $\displaystyle{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + +%% Since we've removed the \arraycolsep's from \eqnarray, we have to +%% redefine \lefteqn to put that space back in. It seems unlikely +%% that \arraycolsep is really what should be used here, but the +%% following definition maintains compatibility with the old +%% definition of eqnarray. + +\def\lefteqn#1{\hbox to 4\arraycolsep{$\displaystyle #1$\hss}} + +%% Finally, if fleqn.sty has been invoked earlier, we set +%% \@eqnmar=\mathindent and redefine \@eqnhook to futz around with +%% \abovedisplayskip and friends. Hopefully no-one else will define +%% \mathindent. + +\@ifundefined{mathindent}{}{\@eqnmar\mathindent + \def\@eqnhook{\abovedisplayskip\topsep + \ifvmode\advance\abovedisplayskip\partopsep\fi + \belowdisplayskip\abovedisplayskip + \belowdisplayshortskip\abovedisplayskip + \abovedisplayshortskip\abovedisplayskip}} + +\endinput diff --git a/macros/latex209/contrib/misc/eqsecnum.sty b/macros/latex209/contrib/misc/eqsecnum.sty new file mode 100644 index 0000000000..fe47db81b1 --- /dev/null +++ b/macros/latex209/contrib/misc/eqsecnum.sty @@ -0,0 +1,26 @@ +% Save file as: EQSECNUM.STY Source: FILESERV@SHSU.BITNET +% This is the file EQSECNUM.STY +% from version 2.0 of the REVTEX macro package. +% +% This file is part of a compuscript toolbox distributed by +% the American Physical Society in conjunction with +% the TeX author-prepared program. +% +% All rights not specifically granted are reserved, +% American Physical Society, 1991. +% +% Permission is granted to make and distribute verbatim +% copies of the complete toolbox provided that the README file +% and copyright notices are preserved on all copies. +% Permission is granted to use the style files provided that +% neither the content of the style files nor their names are changed. +% APS macros may be used and distributed provided each use is +% accompanied by an appropriate acknowledgment. +% +% For more information, see the README file. +% +\global\secnumberstrue +% +% +% +% diff --git a/macros/latex209/contrib/misc/equation.sty b/macros/latex209/contrib/misc/equation.sty new file mode 100644 index 0000000000..8f85d8b08a --- /dev/null +++ b/macros/latex209/contrib/misc/equation.sty @@ -0,0 +1,272 @@ +%------------------------------------------------------------------------ +% This is equations.sty (August 1988). Written by +% Charles Karney +% Plasma Physics Laboratory Phone: +1 609 243 2607 +% Princeton University MFEnet: Karney@PPC.MFEnet +% PO Box 451 ARPAnet: Karney%PPC.MFEnet@NMFECC.ARPA +% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@ANLVMS.Bitnet +% with some ideas and macros borrowed from John Hobby and Stephen Gildea. + +% --------------------USER DOCUMENTATION-------------------- + +% Use this as a style option, e.g., +% \documentstyle[equations]{article} +% These probably don't work in conjunction with the leqno option. + +% This implements the following: + +% (1) \yesnumber turns on an equation number in an eqnarray* environment +% (just as \nonumber turns it off in an eqnarray environment). E.g., +% \begin{eqnarray*} +% a &=& b \\ +% & & + c \\ +% & & + d \\ +% & & + e \\ +% & & + f \\ +% & & + g \yesnumber +% \end{eqnarray*} + +% (2) The eqalign environment is just like Plain TeX's \eqalign. E.g., +% \begin{equation} +% \begin{eqalign} +% a &= b, \\ +% c &= d. +% \end{eqalign} +% \end{equation} +% Note that \begin{equation} \end{equation} or equivalent is needed. + +% (3) The eqalignno environment is just like Plain TeX's \eqalignno. E.g., +% \begin{eqalignno} +% a &= b, \label{foo}\\ +% c &= d. \label{bar} +% \end{eqalignno} +% Note the absence of \begin{equation} \end{equation}. \nonumber can be used +% to suppress the equation number. eqalignno* is the same except that the +% equation numbers are suppressed (unless a \yesnumber appears). + +% (4) The eqaligntwo environment is a two-equation per line equivalent of +% eqalignno. E.g., +% \begin{eqaligntwo} +% a &= b, & x &= y, \label{foo} \\ +% c &= d, & z &= w. \label{bar} +% \end{eqalign} +% eqaligntwo* is defined similarly. + +% (5) The cases environment is just like Plain TeX's \cases. E.g., +% \begin{equation} +% u(x) = +% \begin{cases} +% 0, & for $x < 0$, +% 1, & for $x \ge 0$. +% \end{cases} +% \end{equation} +% Note the first column is treated as math, the second column as text. + +% (6) I've borrowed John Hobby's modifications to the eqnarray environment +% (to fix up the spacing around the operator), and to the \big, \bigg, etc. +% operators (to make them scale with the point size). + +% (7) I've borrowed Stephen Gildea's subequations environment, and fixed it +% so that it ignores spaces after the environment and so that you can refer +% both to the overall set of equations and to individual subequations. E.g., +% \begin{subequations} \label{foo} +% \begin{eqalignno} +% a &= b, \label{foo-a} \\ +% c &= d, \label{foo-b} +% \end{eqalignno} +% text text text text ... +% \begin{equation} +% e = f. \label{foo-c} +% \end{equation} +% \end{subequations} +% Now \ref{foo}, \ref{foo-a}, \ref{foo-b}, \ref{foo-c}, produce 1, 1a, 1b, +% 1c. + +% --------------------END OF USER DOCUMENTATION-------------------- + +\typeout{Document Substyle `EQUATION', modified by MPI, Version 1.0, 09.03.89} + + +% Fix up eqnarray* so that \yesnumber and \nonumber do the obvious things +\newif\if@defeqnsw \@defeqnswtrue + +% This is John Hobby's (hobby@research.att.com) version to fix up the spacing. +\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation +\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi +%\global\@eqnswtrue inactivated march 89 G. Kruljac +\tabskip\@centering\let\\=\@eqncr +$$\halign to \displaywidth\bgroup\hfil\global\@eqcnt\z@ + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + \hfil$\displaystyle{{}##{}}$\hfil + &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + +% Here's the eqnarray* environment: + +%\let\@seqncr=\@eqncr +\@namedef{eqnarray*}{\@defeqnswfalse\eqnarray} +\@namedef{endeqnarray*}{\endeqnarray} + +\def\yesnumber{\global\@eqnswtrue} + +\def\@@eqncr{\let\@tempa\relax\global\advance\@eqcnt by \@ne + \ifcase\@eqcnt \def\@tempa{& & & &}\or \def\@tempa{& & &}\or + \def\@tempa{& &}\or \def\@tempa{&}\else\fi + \@tempa \if@eqnsw\@eqnnum\stepcounter{equation}\fi + \if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi + \global\@eqcnt\z@\cr} + +% Several formulas like \eqalign (to go inside \begin{equation} +% \end{equation} or $$ $$. + +\def\@eqnacr{{\ifnum0=`}\fi\@ifstar{\@yeqnacr}{\@yeqnacr}} + +\def\@yeqnacr{\@ifnextchar [{\@xeqnacr}{\@xeqnacr[\z@]}} + +\def\@xeqnacr[#1]{\ifnum0=`{\fi}\cr \noalign{\vskip\jot\vskip #1\relax}} + +\def\eqalign{\null\,\vcenter\bgroup\openup1\jot \m@th \let\\=\@eqnacr +\ialign\bgroup\strut +\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\crcr} +\def\endeqalign{\crcr\egroup\egroup\,} + +% \cases + +\def\cases{\left\{\,\vcenter\bgroup\normalbaselines\m@th \let\\=\@eqnacr + \ialign\bgroup$##\hfil$&\quad##\hfil\crcr} +\def\endcases{\crcr\egroup\egroup\right.} + +% Several formulas like \eqalignno (doesn't need the $$ $$) + +\def\eqalignno{\stepcounter{equation}\let\@currentlabel=\theequation +\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi +\let\\=\@eqncr +$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup + \global\@eqcnt\@ne\hfil + $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\tw@ + $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering& + \llap{\@lign##}\tabskip\z@skip\crcr} + +\def\endeqalignno{\@@eqncr\egroup + \global\advance\c@equation\m@ne$$\global\@ignoretrue} + + +% Here's the eqalignno* environment: + +\@namedef{eqalignno*}{\@defeqnswfalse\eqalignno} +\@namedef{endeqalignno*}{\endeqalignno} + +% Two formulas like \eqalignno (doesn't need the $$ $$) + +\def\eqaligntwo{\stepcounter{equation}\let\@currentlabel=\theequation +\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi +\let\\=\@eqncr +$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup + \global\@eqcnt\m@ne\hfil + $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\z@ + $\@lign\displaystyle{{}##}$\hfil\qquad&\global\@eqcnt\@ne + \hfil$\@lign\displaystyle{##}$&\global\@eqcnt\tw@ + $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering& + \llap{\@lign##}\tabskip\z@skip\crcr} + +\def\endeqaligntwo{\@@eqncr\egroup + \global\advance\c@equation\m@ne$$\global\@ignoretrue} + +\@namedef{eqaligntwo*}{\@defeqnswfalse\eqaligntwo} +\@namedef{endeqaligntwo*}{\endeqaligntwo} + +% subequations +%%% File: subeqn.sty +%%% The subequations environment %%% +% +% Within the subequations environment, the only change is that +% equations are labeled differently. The number stays the same, +% and lower case letters are appended. For example, if after doing +% three equations, numbered 1, 2, and 3, you start a subequations +% environmment and do three more equations, they will be numbered +% 4a, 4b, and 4c. After you end the subequations environment, the +% next equation will be numbered 5. +% +% Both text and equations can be put inside the subequations environment. +% +% 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 +% +\newtoks\@stequation + +\def\subequations{\refstepcounter{equation}% + \edef\@savedequation{\the\c@equation}% + \@stequation=\expandafter{\theequation}% %only want \theequation + \edef\@savedtheequation{\the\@stequation}% %expanded once + \edef\oldtheequation{\theequation}% + \setcounter{equation}{0}% + \def\theequation{\oldtheequation\alph{equation}}} + +\def\endsubequations{% + \setcounter{equation}{\@savedequation}% + \@stequation=\expandafter{\@savedtheequation}% + \edef\theequation{\the\@stequation}% + \global\@ignoretrue} + +% More from John Hobby +% Fix Plain's \bigl, \Bigl, etc. macros so that they try to scale with +% LaTeX size changes. This uses the fact that \@setsize sets \ht\strutbox +% to be 70% of the normal unstretched baselineskip. + +\def\big#1{{\hbox{$\left#1\vcenter to1.428\ht\strutbox{}\right.\n@space$}}} +\def\Big#1{{\hbox{$\left#1\vcenter to2.142\ht\strutbox{}\right.\n@space$}}} +\def\bigg#1{{\hbox{$\left#1\vcenter to2.857\ht\strutbox{}\right.\n@space$}}} +\def\Bigg#1{{\hbox{$\left#1\vcenter to3.571\ht\strutbox{}\right.\n@space$}}} + +% More from Schaefer-Siebert / Kruljac +% kruljac@ds0mpi11 + +\def\@leqncr{{\ifnum0=`}\fi\@ifstar{\global\@eqpen\@M + \@yeqncr}{\global\@eqpen\interdisplaylinepenalty \@lyeqncr}} + +\def\@lyeqncr{\@ifnextchar [{\@lxeqncr}{\@lxeqncr[\z@]}} + +\def\@lxeqncr[#1]{\ifnum0=`{\fi}\@@leqncr + \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}} + + +\def\@@leqncr{\let\@tempa\relax\global\advance\@eqcnt by \@ne + \ifcase\@eqcnt \def\@tempa{& & & &}\or \def\@tempa{& & &}\or + \def\@tempa{& &}\or \def\@tempa{&}\else\fi + \@tempa \if@eqnsw\@leqnnum\stepcounter{equation}\fi + \if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi + \global\@eqcnt\z@\cr} + + \def\@leqnnum{{\hspace{\fill}\hbox{\normalsize (\theequation)}}} + +\def\lequation#1{\bgroup#1$$ % $$ BRACE MATCHING HACK +\refstepcounter{equation}} + +\def\endlequation{\eqno \@leqnnum % $$ BRACE MATCHING HACK +$$\egroup\global\@ignoretrue} + +\def\leqnarray#1{\stepcounter{equation}\let\@currentlabel=\theequation +\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi +\tabskip\@centering\let\\=\@leqncr +\bgroup#1 +$$\halign to \displaywidth\bgroup\hfil\global\@eqcnt\z@ + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + \hfil$\displaystyle{{}##{}}$\hfil + &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + +\def\endleqnarray{\@@leqncr\egroup + \global\advance\c@equation\m@ne$$\egroup\global\@ignoretrue} + +% Here's the leqnarray* environment: + +\@namedef{leqnarray*}{\@defeqnswfalse\leqnarray} +\@namedef{endleqnarray*}{\endleqnarray} + +\endinput + diff --git a/macros/latex209/contrib/misc/equationarray.sty b/macros/latex209/contrib/misc/equationarray.sty new file mode 100644 index 0000000000..07f6aaf9c9 --- /dev/null +++ b/macros/latex209/contrib/misc/equationarray.sty @@ -0,0 +1,88 @@ +% Equationarray.doc +% +% Combine the capabilities of the eqnarray environment and the array +% environment. +% +% Problem: The eqnarray environment is too restrictive in that it is +% only prepared to accept three part equations. Some applications +% require more sophisticated mathematics, so three parts aren't +% enough. Simultaneously, we would like to have our equations +% numbered. If the equations aren't to be numbered, then the array +% environment suffices. If the equations aren't to be aligned with +% each other, then the equation environment is preferred. +% +% Usage: +% +% \begin{equationarray}{rrcl} +% % Equations go here, in the same format as you would use +% % for arrays. +% \end{equationarray} +% +% Written by: +% Tony Li, University of Southern California, <tli@sargas.usc.edu> +% Started 6/15/88. +% Yes, I know this is a kludge. Suggestions accepted, flames to +% /dev/null. I never said that I knew what I was doing. +% + +\def\equationarray{\stepcounter{equation} \let\@currentlabel=\theequation + \global\@eqnswtrue \global\@eqcnt\z@ \global\@eqargcnt \z@ \let\\=\@equationcr + \let\@acol\@arrayacol \let\@classz\@eqnclassz \def\@halignto{to\displaywidth} + \@equationarray} + +\def\@equationarray#1{\setbox\@arstrutbox=\hbox{\vrule + height\arraystretch \ht\strutbox + depth\arraystretch \dp\strutbox + width\z@} + \@mkpream{#1} + \edef\@preamble{\halign \noexpand\@halignto + \bgroup \tabskip\z@ \@arstrut \@preamble + \hfill\tabskip\@centering &\llap{\@sharp}\tabskip\z@\cr}% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \bgroup \let\par\relax + \let\@sharp## \let\protect\relax \lineskip\z@ \baselineskip\z@ + \tabskip\@centering $$ % $$ BRACE MATCHING HACK + \@preamble +} + +\def\@eqnclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or + \or \or \@addamp \or + \@acolampacol \or \@firstampfalse \@acol \fi + \global\advance\@eqargcnt\@ne + \edef\@preamble{\@preamble + \ifcase \@chnum + \hfil$\relax\displaystyle\tabskip\z@\@sharp$\hfil \or + $\relax\displaystyle\tabskip\z@\@sharp$\hfil \or + \hfil$\relax\displaystyle\tabskip\z@\@sharp$\fi + \global\advance\@eqcnt\@ne}} + +\def\endequationarray{\@equationcr +\egroup\global\advance\c@equation\m@ne % $$ BRACE MATCHING HACK +$$\tabskip\@centering\egroup\global\@ignoretrue} + +\def\@equationcr{${\ifnum0=`}\fi\@ifstar{\@xequationcr}{\@xequationcr}} +\def\@xequationcr{ + \@ifnextchar[{\@argequationcr}{\ifnum0=`{\fi}${}\@zequationcr + \global\@eqnswtrue\global\@eqcnt\z@\cr}} + +\def\@argequationcr[#1]{\ifnum0=`{\fi}${}\ifdim #1>\z@ + \@xargequationcr{#1}\else + \@yargequationcr{#1}\fi} + +\def\@xargequationcr#1{ + \@tempdima #1\advance\@tempdima \dp \@arstrutbox + \vrule \@height\z@ \@depth\@tempdima \@width\z@ \@zequationcr + \global\@eqnswtrue\global\@eqcnt\z@ \cr} + +\def\@yargequationcr#1{ \@zequationcr + \global\@eqnswtrue\global\@eqcnt\z@ \cr\noalign{\vskip #1}} + +\def\@zequationcr{\@wargequationcr\if@eqnsw\@eqnnum + \stepcounter{equation}\global\@eqcnt\z@\fi} + +\def\@wargequationcr{\ifnum\@eqcnt<\@eqargcnt + \@amper \@wargequationcr\fi} + +\def\@amper{&} + +\newcount\@eqargcnt diff --git a/macros/latex209/contrib/misc/equations.sty b/macros/latex209/contrib/misc/equations.sty new file mode 100644 index 0000000000..1f1364ceea --- /dev/null +++ b/macros/latex209/contrib/misc/equations.sty @@ -0,0 +1,217 @@ +% This file, equations.sty (August 1988), contains a collection of macros +% to aid in constructing displayed equations in LaTeX. Written by +% Charles Karney +% Plasma Physics Laboratory Phone: +1 609 243 2607 +% Princeton University MFEnet: Karney@PPC.MFEnet +% PO Box 451 ARPAnet: Karney%PPC.MFEnet@NMFECC.ARPA +% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@ANLVMS.Bitnet +% with some ideas and macros borrowed from John Hobby and Stephen Gildea. + +% --------------------USER DOCUMENTATION-------------------- + +% Use this as a style option, e.g., +% \documentstyle[equations]{article} +% These probably don't work in conjunction with the leqno option. + +% This implements the following: + +% (1) \yesnumber turns on an equation number in an eqnarray* environment +% (just as \nonumber turns it off in an eqnarray environment). E.g., +% \begin{eqnarray*} +% a &=& b \\ +% & & + c \\ +% & & + d \\ +% & & + e \\ +% & & + f \\ +% & & + g \yesnumber +% \end{eqnarray*} + +% (2) The eqalign environment is just like Plain TeX's \eqalign. E.g., +% \begin{equation} +% \begin{eqalign} +% a &= b, \\ +% c &= d. +% \end{eqalign} +% \end{equation} +% Note that \begin{equation} \end{equation} or equivalent is needed. + +% (3) The eqalignno environment is just like Plain TeX's \eqalignno. E.g., +% \begin{eqalignno} +% a &= b, \label{foo}\\ +% c &= d. \label{bar} +% \end{eqalignno} +% Note the absence of \begin{equation} \end{equation}. \nonumber can be used +% to suppress the equation number. eqalignno* is the same except that the +% equation numbers are suppressed (unless a \yesnumber appears). + +% (4) The eqaligntwo environment is a two-equation per line equivalent of +% eqalignno. E.g., +% \begin{eqaligntwo} +% a &= b, & x &= y, \label{foo} \\ +% c &= d, & z &= w. \label{bar} +% \end{eqaligntwo} +% eqaligntwo* is defined similarly. + +% (5) The cases environment is just like Plain TeX's \cases. E.g., +% \begin{equation} +% u(x) = +% \begin{cases} +% 0, & for $x < 0$, +% 1, & for $x \ge 0$. +% \end{cases} +% \end{equation} +% Note the first column is treated as math, the second column as text. + +% (6) I've borrowed John Hobby's modifications to the eqnarray environment +% (to fix up the spacing around the operator), and to the \big, \bigg, etc. +% operators (to make them scale with the point size). + +% (7) I've borrowed Stephen Gildea's subequations environment, and fixed it +% so that it ignores spaces after the environment and so that you can refer +% both to the overall set of equations and to individual subequations. E.g., +% \begin{subequations} \label{foo} +% \begin{eqalignno} +% a &= b, \label{foo-a} \\ +% c &= d, \label{foo-b} +% \end{eqalignno} +% text text text text ... +% \begin{equation} +% e = f. \label{foo-c} +% \end{equation} +% \end{subequations} +% Now \ref{foo}, \ref{foo-a}, \ref{foo-b}, \ref{foo-c}, produce 1, 1a, 1b, +% 1c. + +% --------------------END OF USER DOCUMENTATION-------------------- + +% Fix up eqnarray* so that \yesnumber and \nonumber do the obvious things +\newif\if@defeqnsw \@defeqnswtrue + +% This is John Hobby's (hobby@research.att.com) version to fix up the spacing. +\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation +\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi +\global\@eqnswtrue +\tabskip\@centering\let\\=\@eqncr +$$\halign to \displaywidth\bgroup\hfil\global\@eqcnt\z@ + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + \hfil$\displaystyle{{}##{}}$\hfil + &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + +\def\yesnumber{\global\@eqnswtrue} + +\def\@@eqncr{\let\@tempa\relax\global\advance\@eqcnt by \@ne + \ifcase\@eqcnt \def\@tempa{& & & &}\or \def\@tempa{& & &}\or + \def\@tempa{& &}\or \def\@tempa{&}\else\fi + \@tempa \if@eqnsw\@eqnnum\stepcounter{equation}\fi + \if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi + \global\@eqcnt\z@\cr} + +% Several formulas like \eqalign (to go inside \begin{equation} +% \end{equation} or $$ $$. + +\def\@eqnacr{{\ifnum0=`}\fi\@ifstar{\@yeqnacr}{\@yeqnacr}} + +\def\@yeqnacr{\@ifnextchar [{\@xeqnacr}{\@xeqnacr[\z@]}} + +\def\@xeqnacr[#1]{\ifnum0=`{\fi}\cr \noalign{\vskip\jot\vskip #1\relax}} + +\def\eqalign{\null\,\vcenter\bgroup\openup1\jot \m@th \let\\=\@eqnacr +\ialign\bgroup\strut +\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\crcr} +\def\endeqalign{\crcr\egroup\egroup\,} + +% \cases + +\def\cases{\left\{\,\vcenter\bgroup\normalbaselines\m@th \let\\=\@eqnacr + \ialign\bgroup$##\hfil$&\quad##\hfil\crcr} +\def\endcases{\crcr\egroup\egroup\right.} + +% Several formulas like \eqalignno (doesn't need the $$ $$) + +\def\eqalignno{\stepcounter{equation}\let\@currentlabel=\theequation +\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi +\let\\=\@eqncr +$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup + \global\@eqcnt\@ne\hfil + $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\tw@ + $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering& + \llap{\@lign##}\tabskip\z@skip\crcr} + +\def\endeqalignno{\@@eqncr\egroup + \global\advance\c@equation\m@ne$$\global\@ignoretrue} + + +% Here's the eqalignno* environment: + +\@namedef{eqalignno*}{\@defeqnswfalse\eqalignno} +\@namedef{endeqalignno*}{\endeqalignno} + +% Two formulas like \eqalignno (doesn't need the $$ $$) + +\def\eqaligntwo{\stepcounter{equation}\let\@currentlabel=\theequation +\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi +\let\\=\@eqncr +$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup + \global\@eqcnt\m@ne\hfil + $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\z@ + $\@lign\displaystyle{{}##}$\hfil\qquad&\global\@eqcnt\@ne + \hfil$\@lign\displaystyle{##}$&\global\@eqcnt\tw@ + $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering& + \llap{\@lign##}\tabskip\z@skip\crcr} + +\def\endeqaligntwo{\@@eqncr\egroup + \global\advance\c@equation\m@ne$$\global\@ignoretrue} + +\@namedef{eqaligntwo*}{\@defeqnswfalse\eqaligntwo} +\@namedef{endeqaligntwo*}{\endeqaligntwo} + +% subequations +%%% File: subeqn.sty +%%% The subequations environment %%% +% +% Within the subequations environment, the only change is that +% equations are labeled differently. The number stays the same, +% and lower case letters are appended. For example, if after doing +% three equations, numbered 1, 2, and 3, you start a subequations +% environmment and do three more equations, they will be numbered +% 4a, 4b, and 4c. After you end the subequations environment, the +% next equation will be numbered 5. +% +% Both text and equations can be put inside the subequations environment. +% +% 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 +% +\newtoks\@stequation + +\def\subequations{\refstepcounter{equation}% + \edef\@savedequation{\the\c@equation}% + \@stequation=\expandafter{\theequation}% %only want \theequation + \edef\@savedtheequation{\the\@stequation}% %expanded once + \edef\oldtheequation{\theequation}% + \setcounter{equation}{0}% + \def\theequation{\oldtheequation\alph{equation}}} + +\def\endsubequations{% + \setcounter{equation}{\@savedequation}% + \@stequation=\expandafter{\@savedtheequation}% + \edef\theequation{\the\@stequation}% + \global\@ignoretrue} + +% More from John Hobby +% Fix Plain's \bigl, \Bigl, etc. macros so that they try to scale with +% LaTeX size changes. This uses the fact that \@setsize sets \ht\strutbox +% to be 70% of the normal unstretched baselineskip. + +\def\big#1{{\hbox{$\left#1\vcenter to1.428\ht\strutbox{}\right.\n@space$}}} +\def\Big#1{{\hbox{$\left#1\vcenter to2.142\ht\strutbox{}\right.\n@space$}}} +\def\bigg#1{{\hbox{$\left#1\vcenter to2.857\ht\strutbox{}\right.\n@space$}}} +\def\Bigg#1{{\hbox{$\left#1\vcenter to3.571\ht\strutbox{}\right.\n@space$}}} + +\endinput diff --git a/macros/latex209/contrib/misc/esperant.sty b/macros/latex209/contrib/misc/esperant.sty new file mode 100644 index 0000000000..1c6df8ab3c --- /dev/null +++ b/macros/latex209/contrib/misc/esperant.sty @@ -0,0 +1,342 @@ +% This is ESPERANT.TEX or ESPERANT.DOC or ESPERANT.STY, +% Vers. 1.1.a 10-DEC-1991, +% +% (c) 1991 J"org Knappen +% knappen@vkpmzd.kph.uni-mainz.de +% +% Usage conditions: GNU-licence, Version 1.0 +% This includes the right to copy this file free and distribute the +% copies, as long as no money is taken for it and as long as this file +% remains unchanged. +% +% by J. Knappen, Uni Mainz, using GERMAN.STY 2.3d, collected by +% H. Partl, TU Wien, deutsch.sty by J. Schrod, Darmstadt, +% and espo.sty (anonymous). +% Contributers to these files are included by reference. +% +% Thanks to Derk Ederveen and E. T. Grimley-Evans for correcting the terms +% in \captionsesperanto +% +% DOCUMENT STYLE OPTION for writing esperanto texts +% with TeX version 2.x (Plain TeX) or with LaTeX version 2.09. +% +% It can be called via +% \input esperant +% or (with LaTeX) via +% \documentstyle[esperant]{anystyle} +% +% The name ``esperant.sty'' (without o) is choosen purposefully, because +% there are a lot of computers out there, which cannot handle filenames +% consisting of more than 8 letters. +% +% This file is different from ``esperanto.sty'' by J. L. Braams, to be used +% with the babel system +% +% Commands to be used by the end users: +% +% ^c, ^g, ^h, ^j, ^s create the esperanto circumflexed consonants +% ^C, ^G, ^H, ^J, ^S ditto, uppercase versions +% ^u, ^U create the esperanto u-breve (\u{u}) +% if you need an u-circumflex, write \^u +% ^| Morpheme boundary to assist correct hyphenation +% +% \captionsesperanto switches the captions to esperanto +% \dateesperanto switches \today to produce the date in e-o +% \hodiau produces the current date in esperanto +% \hodiaun produces the current date in esperanto, accusative +% +% \captionsenglish switches the captions back to english +% \dateUSenglish does the same for the date +% \dateenglish switches to british english date +% +% You can change each caption if you want. E. g. if you prefer +% ``vd. anka^u'' instead of ``vidu anka^u'', say +% \renewcommand{\seealsoname}{vd.~anka\u{u}} +% +% \Esper, \esper allow you to count by the letters of the esperanto +% alphabet (A, B, C, ^C, D, ...). You can redefine +% \Alph into \Esper by +% \let\Alph=\Esper % I leave this purposefully to +% you as the end user and don't turn it on as default +% +% Notes: +% +% This file can be used both with Plain TeX and with LaTeX and other +% macro packages, and with the original TeX and LaTeX fonts. Usage +% of esperanto hyphenation patterns is recommended to accompany this +% style file when writing esperanto texts. +% +% Derk Ederveen (D.Ederveen@pttrl.nl) has prepared esperanto hyphenation +% patterns, supporting the ``cx''-notation. Obviously, these ones are not +% optimal, but a good try. Alternatively, you might try +% italian or portugese hyphenation patterns. (Both are available on several +% servers.) +% +% The file should be read in vertical mode only (usually at the +% beginning of the document) to avoid spurious spaces. +% +% \undefined must be an undefined control sequence. +% +% Multiple calls of this file (e.g. at the beginning of each subfile) +% will do no harm. Only the first call (i.e., if \EsperantoOn is undefined) +% performs all the definitions and settings. Later calls only switch +% to \EsperantoOn. +% +% The catcode of @ remains unchanged after processing of this file. +% All definitions are global, the switching on of the esperanto options +% is local. +% +% The commands \EsperantoOn, \EsperantoOff, \modifiedhaton, modifiedhatoff and +% \selectlanguage are ``fragile'' with LaTeX and should not be used +% within arguments of macro calls. +% +% In Plain TeX, `\protect' should be \let to `\relax' normally and to +% something like `\string' inside the arguments of `\write' or `\message' +% (see LaTeX.TEX for all the details). +% +% The current version has been designed for TeX versions 1 and 2. +% When used with TeX version 3 or with MLTeX by M.Ferguson, the +% setting of the \language counter and/or calls of \setlanugage +% have to be inserted into the definition of the \selectlanguage +% command, with values that are appropriate for the hyphenation patterns +% loaded into the FMT file by IniTeX. +% +% Since ^ has a different catcode (\active) and a different meaning +% than in original TeX, special care has to be taken if ^ is to be +% used in its original meaning. +% +% WARNINGS: +% +% If you want to use `verbatim.sty' by R. Schoepf, this must be read before +% you read in `esperant.sty'. The same is true for every style option which +% makes use of the ^^-Notation. +% +% If you use `endnotes.sty' by J. Lavigno, you should read it before +% esperant.sty. Otherwise, it will overwrite \notesname again. +% +% \ifundefined{EsperantoOn} or \EsperantoOn=\relax +\expandafter\ifx\csname EsperantoOn\endcsname\relax +% \then go ahead \else do nothing +\else \endinput \fi + +\message{Document Style Option `esperant' Version 1.1a of 10-OKT-1991} + +% \ifundefined{protect} (plain TeX) +\ifx\protect\undefined +% \then define it +\let\protect=\relax \fi + +{% begin a group ... + \catcode`\@=11 % \makeatletter + +% Part one: +% Define the \allowhyphens hack +\gdef\allowhyphens{\penalty\@M \hskip\z@skip} +% {\nobreak \hskip 0pt plus 0pt\relax} +% +% Part two +% add the ^ to the definitions of dospecials and sanitize: +% Don't ask me on the meaning of this! (JK) +% +\begingroup +\def\do{\noexpand\do\noexpand}% +% note that "\xdef" means "\global\edef" +\xdef\dospecials{\dospecials\do\^}% +% not ( \ifundefined{@sanitize} or \@sanitize=\relax ) = if LaTeX +\expandafter\ifx\csname @sanitize\endcsname\relax \else + \def\@makeother{\noexpand\@makeother\noexpand}% + \xdef\@sanitize{\@sanitize\@makeother\^}% +\fi +\endgroup + +% Part three: +% define all the funny things the hat does + +\gdef\modifiedhaton{\catcode`\^\active} +\gdef\modifiedhatoff{\catcode`\^7 } + +{\modifiedhaton +\gdef^{\protect\ph@t} +\gdef\ph@t#1{\ifmmode\sp{#1} + \else\ifx#1u\u u\allowhyphens% ^u gives breve on u + \else\ifx#1U\u U\allowhyphens% and ^U gives one on U (rare) + \else\ifx#1h{h\llap{\^{}}}\allowhyphens% ^h mustn't be too tall + \else\ifx#1j{\^\j}\allowhyphens% ^j requires undotted j + \else\ifx#1|\discretionary{-}{}{}\allowhyphens% morpheme boundary + \else{\^{#1}}\allowhyphens% Normal circumflexing +\fi\fi\fi\fi\fi\fi} +} % end of \modifiedhaton + +% Part four: +% Define the date and the captions of LaTeX + +\gdef\dateesperanto{\def\today{la \number\day a de \ifcase\month\or + januaro\or februaro\or marto\or aprilo\or majo\or junio\or + julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or decembro\fi,\space + \number\year}% +\global\let\hodiau=\today} +\gdef\hodiaun{la \number\day an de \ifcase\month\or + januaro\or februaro\or marto\or aprilo\or majo\or junio\or + julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or decembro\fi,\space + \number\year} + +\gdef\dateUSenglish{\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}} + +\gdef\dateenglish{\def\today{\ifcase\day\or + 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or + 11th\or 12th\or 13th\or 14th\or 15th\or + 16th\or 17th\or 18th\or 19th\or 20th\or + 21st\or 22nd\or 23rd\or 24th\or 25th\or + 26th\or 27th\or 28th\or 29th\or 30th\or + 31st\fi + ~\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\year}} + +% Skip this block, if you allready have LaTeX 2.09 from 1-DEC-1991 or +% any newer version. If not, read it carefully. +% +% Here is, how you can modify the LaTeX document style files and option +% files, to benefit from the following \captionsxxxxx commands. Def's like +% \def\tableofcontents{\section*{Contents\markboth{CONTENTS}{CONTENTS}} +% \@starttoc{toc}} +% should be redefined by def's like +% \def\contentsname{Contents} % <--- +% \def\tableofcontents{\section*{\contentsname +% \markboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}} +% \@starttoc{toc}} +% +% (it's best to put all these new lines to the end of the original files), +% and of course, you should modify the change date in the file header and +% in the \typeout command. +% You need not do this yourself - rather, retrieve "International LaTeX" +% (e.g. from the DANTE server LISTSERV@DHDURZ1 on Bitnet) ! +% Or via ftp from 129.69.1.12 (Stuttgart) or any other of the well-known +% TeXservers. +% +% If your LaTeX dates from 1-Dec-1991 or later, you don't need ILateX +% any longer -- and if not, update your LaTeX. +% +% The list of names is based on the proposal of H. Partl, but is enlarged +% by the following ones +% \seename, \seealsoname, and prefacename (J. Schrod, deutsch.sty) +% \subjectname, +% and \notesname. +% +\gdef\captionsesperanto{% +\def\contentsname{Enhavo}% +\def\listfigurename{Listo de figuroj}% +\def\listtablename{Listo de tabeloj}% +\def\abstractname{Resumo}% +\def\partname{Parto}% +\def\chaptername{\^Capitro}% +\def\prefacename{Anta\u{u}parolo}% +\def\appendixname{Apendico}% +\def\refname{Cita\^joj}% +\def\bibname{Bibliografio}% +\def\indexname{Indekso}% +\def\figurename{Figuro}% +\def\tablename{Tabelo}% +\def\pagename{Pa\^go}% +\def\seename{vidu}% a^u: vd. +\def\alsoname{vidu anka\u{u}}% a^u: vd. anka\u{u} +\def\notesname{Rimarkoj}% endnotes.sty +\def\enclname{Aldono(j)}% +\def\ccname{Kopie al}% +\def\headtoname{Al}% +\def\subjectname{Temo}% +} + +\gdef\captionsenglish{% +\def\prefacename{Preface}% +\def\refname{References}% +\def\abstractname{Abstract}% +\def\bibname{Bibliography}% +\def\chaptername{Chapter}% +\def\appendixname{Appendix}% +\def\contentsname{Contents}% +\def\listfigurename{List of Figures}% +\def\listtablename{List of Tables}% +\def\indexname{Index}% +\def\figurename{Figure}% +\def\tablename{Table}% +\def\partname{Part}% +\def\enclname{encl}% +\def\ccname{cc}% +\def\headtoname{To}% +\def\pagename{Page}% +\def\seename{see}% +\def\alsoname{see also}% +\def\notesname{Notes}% +\def\subjectname{Subject}% +} + +% Part four a: +% Define \Esper and \esper +\gdef\esper#1{\@esper{\@nameuse{c@#1}}} +\gdef\Esper#1{\@Esper{\@nameuse{c@#1}}} +\gdef\@esper#1{\ifcase#1\or a\or b\or c\or \^c\or d\else\@iesper{#1}\fi} +\gdef\@iesper#1{\ifcase#1\or \or \or \or \or \or + \or e\or f\or g\or \^g\or h\or h\llap\^{}\or i\or j\or \^\j\or k% + \or l\or m\or n\or o\or p\or r\or s\or \^s\or t\or u\or \u{u}\or v% + \or z\else\@ctrerr\fi} +\gdef\@Esper#1{\ifcase#1\or A\or B\or C\or \^C\or D\else\@Iesper{#1}\fi} +\gdef\@Iesper#1{\ifcase#1\or \or \or \or \or \or E\or F\or G\or \^G\or H% + \or \^H\or I\or J\or \^J\or K\or L\or M\or N\or O\or P\or R\or S\or \^S\or T% + \or U\or \u{U}\or V\or Z\else\@ctrerr\fi} + + +% Part five: +% Define the new counter language to switch date and captions +\newcount\l@nguage +% +% This will be re-declared as \language if the latter has not yet been +% declared neither by Ferguson's ``Multilingual T^eX'' nor by TeX 3: +% \ifundefined{language} +\expandafter\ifx\csname language\endcsname\relax +\global\let\language=\l@nguage +\fi +% +\newcount\USenglish \global\USenglish=0 +\newcount\esperanto \global\esperanto=1 +\newcount\english \global\english=2 +% +\gdef\selectlanguage#1{% + \expandafter\ifcase #1\relax + \dateUSenglish \captionsenglish \or + \dateesperanto \captionsesperanto \or + \dateenglish \captionsenglish \fi} +% Note: If used with TeX version 3 or with multi-lingual TeX by M.Ferguson, +% commands like +% \language=#1\relax +% and/or +% \setlanguage{...} +% should be inserted into the above definition in order to switch on the +% correct hyphenation patterns. +% +% \ifundefined{setlanguage} (= TeX version < 3 ) +\expandafter\ifx\csname setlanguage\endcsname\relax +\global\let\setlanguage=\selectlanguage +\fi +% + +% Part six: +% Define the switches between esperanto and original TeX + +\gdef\EsperantoOff{\modifiedhatoff} +\gdef\EsperantoOn{\modifiedhaton} + +} % ... return to previous catcodes +% +% Now, switch on what is appropriate for esperanto: +% +\EsperantoOn +\selectlanguage{\esperanto} + +% This is the end of ESPERANTO.STY/DOC/TEX. +\endinput diff --git a/macros/latex209/contrib/misc/espo.sty b/macros/latex209/contrib/misc/espo.sty new file mode 100644 index 0000000000..62c01ec553 --- /dev/null +++ b/macros/latex209/contrib/misc/espo.sty @@ -0,0 +1,52 @@ +% +% To produce an accented c, type ^c. +% the uparrow is also used for the breve, +% to keep finger-training down. +% +\def\^#1{\ifx#1u\u u% ^u gives breve on u + \else\ifx#1U\u U% and ^u gives one on U (rare) + \else\ifx#1h{\rlap{\accent 94{}}h}%^h mustn't be too tall + \else\ifx#1j{\accent 94 \j}% ^j requires undotted j + \else{\accent 94 #1}\fi\fi\fi\fi} % Normal circumflexing +\let\superscript=^ % Save current binding of ^ +\catcode`\^=\active % ^ now active +\def^{\ifmmode\let\ACC=\superscript\else\let\ACC=\^\fi\ACC} +% Does auto-accent iff not math +% +% Some de-anglicizations. The input is the same, however, +% to preserve the integrity of the documentation. +% +\def\tableofcontents{\section*{Enhavoj\@mkboth{ENHAVOJ}{ENHAVOJ}} + \@starttoc{toc}} +\def\listoffigures{\section*{Listo de Figuroj\@mkboth + {LISTO DE FIGUROJ}{LISTO DE FIGUROJ}}\@starttoc{lof}} +\def\listoftables{\section*{Listo de Tabeloj\@mkboth + {LISTO DE TABELOJ}{LISTO DE TABELOJ}}\@starttoc{lot}} +\def\thebibliography#1{\section*{Aludoj\@mkboth + {ALUDOJ}{ALUDOJ}}\list + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus -.07em} + \sloppy + \sfcode`\.=1000\relax} +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{Indekso}] + \@mkboth{INDEKSO}{INDEKSO}\thispagestyle{plain}\parindent\z@ + \parskip\z@ plus .3pt\relax\let\item\@idxitem} +\def\fnum@figure{Figuro \thefigure} +\def\fnum@table{Tabelo \thetable} +\def\abstract{\if@twocolumn +\section*{Resumo} +\else \small +\begin{center} +{\bf Resumo\vspace{-.5em}\vspace{0pt}} +\end{center} +\quotation +\fi} + +\def\today{la \number\day a de \ifcase\month\or + januaro\or februaro\or marto\or aprilo\or majo\or junio\or + julio\or a^ugusto\or septembro\or oktobro\or novembro\or decembro\fi,\space + \number\year} diff --git a/macros/latex209/contrib/misc/etcetera.tex b/macros/latex209/contrib/misc/etcetera.tex new file mode 100644 index 0000000000..d119a38176 --- /dev/null +++ b/macros/latex209/contrib/misc/etcetera.tex @@ -0,0 +1,45 @@ +% -*- Mode: TeX -*- + +\ifx\thisfileis\anUndefinedMacro\input maybeload \fi + +\thisfileis{<eb.tex.texlocal>etcetera} % abort loading if we're already loaded + +% This file defines a few abbreviations for convenience. +% Usage: +% \sectref{foo-section} % if you have \label{foo-section} somewhere; +% % inserts a section symbol and the section +% % number +% blah blah~$\threedots$ +% blah blah~$\fourdots$ +% $x_1 \spdots x_n$ % for a string; dots at the bottom +% $x_1+\spcdots+x_n$ % for a sum or whatever; dots in the middle +% \etc. +% \ie. +% \eg. +% \cf. +% \ibid. +% \opcit. +% \etal. +% + +\input redefine % from texlocal + +% You may want to redefine \sectref as follows: +% \renewcommand{\sectref}{section~\ref} +% +\newcommand{\sectref}{\S\ref} + +\newcommand{\threedots}{\nolinebreak[4]\mathinner{\ldotp\ldotp\ldotp}} +\newcommand{\fourdots}{\nolinebreak[4]\mathinner{\ldotp\ldotp\ldotp\ldotp}} +\newcommand{\spdots}{\;\ldots\;} +\newcommand{\spcdots}{\;\cdots\;} +\newdef\etc.{\mbox{\it etc.}} +\newdef\ie.{\mbox{\it i.e.}} +\newdef\eg.{\mbox{\it e.g.}} +\newdef\cf.{\mbox{\it cf.}} +\newdef\ibid.{\mbox{\it ibid.}} +\newdef\opcit.{\mbox{\it op. cit.}} +\newdef\etal.{\mbox{\it et al.}} + +\newdef\vs.{\mbox{vs.}} % perhaps not italic? + diff --git a/macros/latex209/contrib/misc/euler.sty b/macros/latex209/contrib/misc/euler.sty new file mode 100644 index 0000000000..407405fcce --- /dev/null +++ b/macros/latex209/contrib/misc/euler.sty @@ -0,0 +1,146 @@ +% The following lines establish the use of the Euler Fraktur font. +% Calling sequence: \documentstyle[...,euler,...]{....} +% Slightly modified from a version snarfed from LISTSERV at DHDURZ1 +% The 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 can add selectively +% e.g. the MSXMxx and MSYMxx families and later also +% the Euler Fraktur and the cyrillic fonts without any 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 + +\def\relaxnext@{\let\next\relax} + +%\font\twfveuf=eufm10 \@magscale5 +\font\twtyeuf=eufm10 \@magscale4 +\font\svtneuf=eufm10 \@magscale3 +\font\frtneuf=eufm10 \@magscale2 +\font\twelveeuf=eufm10 \@magscale1 +\font\eleveneuf=eufm10 \@halfmag +\font\teneuf=eufm10 +\font\nineeuf=eufm9 +\font\eighteuf=eufm8 +\font\seveneuf=eufm7 +\font\sixeuf=eufm6 +\font\fiveeuf=eufm5 + +\newfam\euffam + +% Hier sind jetzt geaenderte LFONTS Definitionen (fuer LaTeX) + +\@addto\@vpt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\fiveeuf}\textfont\euffam=\fiveeuf + \scriptfont\euffam=\fiveeuf \scriptscriptfont\euffam=\fiveeuf +\@setstrut\rm} + + +\@addto\@vipt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\sixeuf}\textfont\euffam=\sixeuf + \scriptfont\euffam=\sixeuf \scriptscriptfont\euffam=\sixeuf +\@setstrut\rm} + + +\@addto\@viipt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\seveneuf}\textfont\euffam=\seveneuf + \scriptfont\euffam=\fiveeuf \scriptscriptfont\euffam=\fiveeuf +\@setstrut \rm} + + +\@addto\@viiipt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\eighteuf}\textfont\euffam=\eighteuf + \scriptfont\euffam=\sixeuf \scriptscriptfont\euffam=\fiveeuf +\@setstrut \rm} + + +\@addto\@ixpt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\nineeuf}\textfont\euffam=\nineeuf + \scriptfont\euffam=\sixeuf \scriptscriptfont\euffam=\fiveeuf +\@setstrut \rm} + + +\@addto\@xpt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\teneuf}\textfont\euffam=\teneuf + \scriptfont\euffam=\seveneuf \scriptscriptfont\euffam=\fiveeuf +\@setstrut \rm} + + +\@addto\@xipt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\eleveneuf}\textfont\euffam=\eleveneuf + \scriptfont\euffam=\eighteuf \scriptscriptfont\euffam=\sixeuf +\@setstrut \rm} + + +\@addto\@xiipt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\twelveeuf}\textfont\euffam=\twelveeuf + \scriptfont\euffam=\eighteuf \scriptscriptfont\euffam=\sixeuf + \@setstrut \rm} + + +\@addto\@xivpt{\textfont\z@\frtnrm +% Hier AmS-Fonts +\def\euf{\fam\euffam\frtneuf}\textfont\euffam=\frtneuf + \scriptfont\euffam=\teneuf \scriptscriptfont\euffam=\seveneuf +\@setstrut \rm} + + +\@addto\@xviipt{\textfont\z@\svtnrm +% Hier AmS-Fonts +\def\euf{\fam\euffam\svtneuf}\textfont\euffam=\svtneuf + \scriptfont\euffam=\twelveeuf \scriptscriptfont\euffam=\teneuf +\@setstrut \rm} + + +\@addto\@xxpt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\twtyeuf}\textfont\euffam=\twtyeuf + \scriptfont\euffam=\frtneuf \scriptscriptfont\euffam=\twelveeuf +\@setstrut \rm} + + +\@addto\@xxvpt{ +% Hier AmS-Fonts +\def\euf{\fam\euffam\twtyeuf}\textfont\euffam=\twtyeuf + \scriptfont\euffam=\twtyeuf \scriptscriptfont\euffam=\svtneuf +\@setstrut \rm} + + + + + + + + +\def\frak{\relaxnext@\ifmmode\let\next\frak@\else + \def\next{\Err@{Use \string\frak\space only in math mode}}\fi\next} +\def\goth{\relaxnext@\ifmmode\let\next\frak@\else + \def\next{\Err@{Use \string\goth\space only in math mode}}\fi\next} +\def\frak@#1{{\frak@@{#1}}} +\def\frak@@#1{ %\noaccents@ +\fam\euffam#1} +% End definition of Euler Fraktur font. + +\catcode`@=12 % at signs are no longer letters + diff --git a/macros/latex209/contrib/misc/exam.sty b/macros/latex209/contrib/misc/exam.sty new file mode 100644 index 0000000000..80ced00c27 --- /dev/null +++ b/macros/latex209/contrib/misc/exam.sty @@ -0,0 +1,394 @@ +%% EXAM.STY -- Examination Style (article version) for LaTeX version 2.09 +%% History: July 21, 1989; Original version (MCTF.STY) July 25, 1988 +%% Author: George D. Greenwade (BED_GDG@SHSU.BITNET) +%% Center for Business and Economic Research +%% Sam Houston State University, Huntsville, TX 77341-2056 +%% Huntsville, Texas, USA 77341-2056 +%% (409) 294-1518 +%% +%% Includes ART11.STY, FULLPAGE.STY, and FANCYHEADINGS.STY as default. +%% Usage: \documentstyle[exam]{article} +%% %\key % remove leading comment if key is desired, see below +%% %\listing % remove leading comment if listing is desired, see below +%% \courseno{ECO 530} % specify the course number in this field +%% \examno{One} % specify the exam number in this field +%% \date{Exam Date} % specify exam date (my preference is to use +%% % semester and year); default is \today +%% \prof{Greenwade} % specify the professor's name in this field +%% \intro{Instruction text} % specify the instruction text in this +%% % field. Note that this version does NOT +%% % provide a line for the student's name. +%% \begin{document} +%% \maketitle % generate a first page with information +%% % provided above +%% \startquestions +%% %See below for specifics of operation +%% +%% % multiple choice example +%% \qtem{A}{03.015} This is a multiple choice question and: +%% \startanswers +%% \atem this is the correct answer. +%% \atem this is an incorrect answer. +%% \atem this is another incorrect answer. +%% \finishanswers +%% +%% % true-false example +%% \qtem{T}{05.027} This is a true statement. \endtf +%% +%% % essay example, with a 2 inch blank response area +%% \ltem{2}{11.045} You have two inches to respond to this. \endessay +%% +%% % fill-in-the-blank example +%% \ftem{missing}{15.23} There is a word \_\_\_\_\_\_\_\_\_\_\_\_\_ . +%% \endfitb +%% +%% \finishquestions +%% \end{document} +%% +%% NOTES +%% All questions are within a minipage environment to ensure that questions +%% are not broken across pages. +%% +%% A variation of the enumi counter is employed (\qcount) to ensure proper +%% enumeration of questions. +%% +%% There are useful variations of \item within the file to assist in the +%% generation of exams: +%% +%% Exam questions are delimited by \startquestions ... \finishquestions +%% QUESTION TYPES +%% -- \qtem{X}{Y} creates a question item for multiple choice and +%% true/false items, with a blank leading line for responses. In this +%% case, {X} represents the correct response (\qtema) and {Y} represents +%% the question number from within the master question data file +%% (\qmasno). BOTH X AND Y MUST BE SPECIFIED, EVEN IF AS \qtem{}{} +%% -- \ltem{X}{Y} creates a question item for essay and fill-in-the-blank +%% items, without a blank leading line for responses. In this case, {X} +%% represents the vertical blank space for the response (\qtema) and +%% {Y} represents the question number from within the master question +%% data file (\qmasno). +%% BOTH X AND Y MUST BE SPECIFIED, WITH X POSSESSING AN EXPLICIT NUMBER. +%% THE MINIMAL ENTRY IS \ltem{0}{} +%% ANSWER TYPES +%% Answers to question are delimited by: +%% -- MULTIPLE CHOICE: (Following \qtem{X}{Y} The question text...) a +%% delimited range begining with \startanswers and ended by \finishanswers; +%% each answer item is identified with \atem. This creates an enumerated +%% list (\enumii) of a., b., c., ... +%% -- TRUE/FALSE: (Following \qtem{X}{Y} The question text...) terminate +%% text with \endtf , which automatically generates a. True b. False +%% -- ESSAY/FILL-IN-THE-BLANK: (Following \ltem{X}{Y} The question text...) +%% terminate test with \endessay , which provides X inches of specified +%% vertical space for the response. In the case of Fill-in questions, +%% specify X to zero +%% +%% There are two useful preamble declarations (\key and \listing) used to +%% produce different reports from a .TEX file: +%% -- no declaration creates an exam, with leading blanks, as specified by +%% \qtem or \ltem. +%% -- \key creates an answer key, with the correct answer placed where the +%% leading blank space was on the exam form. The key format is +%% identical to the corresponding exam. +%% -- \listing creates a listing of questions similar to \key, but the +%% master question number is also provided. This option is handy in +%% maintaining the master database of questions. In the case of the +%% \listing output for \ltem items, a note is provided informing of the +%% vertical space provided for the answer, rather than the physical space +%% for the answer to conserve printed output. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Get ART11.STY from local collection +\input{art11.sty} + +% This is FULLPAGE.STY, version 2 +% (hardcoded to ensure consistency between users) +% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988. +\topmargin 0pt +\headheight 13.6pt % necessary variation to avoid overfull vboxes +\headsep 30pt % necessary variation to provide nicer tops of pages +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep + +\textheight 9.2in + +\oddsidemargin 0pt +\evensidemargin \oddsidemargin +\marginparwidth 0.5in + +\textwidth 6.5in +% end of FULLPAGE.STY + +% This is FANCYHEADINGS.STY +% (hardcoded to ensure consistency between users) +% fancyheadings.sty version 1.0 +% Fancy headers and footers. +% Piet van Oostrum, Dept of Computer Science, University of Utrecht +% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands +% Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!hp4nl!ruuinf!piet) +% March, 1989. +\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}} +\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}} +\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}} + +\def\chead{\@ifnextchar[{\@xchead}{\@ychead}} +\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}} +\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}} + +\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}} +\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}} +\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}} + +\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}} +\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}} +\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}} + +\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}} +\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}} +\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}} + +\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}} +\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}} +\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}} + +\newdimen\headrulewidth +\newdimen\footrulewidth +\newdimen\plainheadrulewidth +\newdimen\plainfootrulewidth +\newdimen\headwidth +\newif\if@fancyplain \@fancyplainfalse +\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} + +\headrulewidth 0.4pt +\footrulewidth\z@ +\plainheadrulewidth\z@ +\plainfootrulewidth\z@ + +\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}} +\chead{} +\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}} +\lfoot{} +\cfoot{\rm\thepage} % page number +\rfoot{} + +\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\hbox +{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill +\parbox[b]{\headwidth}{\centering#3\strut}\hfill +\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5} + +\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\footrule +\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill +\parbox[t]{\headwidth}{\centering#3\strut}\hfill +\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5} + +\def\headrule{{\if@fancyplain\headrulewidth\plainheadrulewidth\fi +\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} + +\def\footrule{{\if@fancyplain\footrulewidth\plainfootrulewidth\fi +\vskip-0.3\normalbaselineskip\vskip-\footrulewidth +\hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}} + +\def\ps@fancy{ +\let\@mkboth\markboth +\@ifundefined{chapter}{\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}}} +{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne + \@chapapp\ \thechapter. \ \fi ##1}}{}} +\def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi ##1}}}} +\def\@oddhead{\@fancyhead\relax\@olhead\@ochead\@orhead\hss} +\def\@oddfoot{\@fancyfoot\relax\@olfoot\@ocfoot\@orfoot\hss} +\def\@evenhead{\@fancyhead\hss\@elhead\@echead\@erhead\relax} +\def\@evenfoot{\@fancyfoot\hss\@elfoot\@ecfoot\@erfoot\relax} +\headwidth\textwidth} +\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} +\def\ps@plain@fancy{\@fancyplaintrue\ps@fancy} +% end of FANCYHEADINGS.STY + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% \def's for \prof, \examno, and \courseno %% +%% \date and \intro %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\prof#1{\edef\prof{#1}} +\def\examno#1{\edef\examno{#1}} +\def\courseno#1{\edef\courseno{#1}} +\def\intro#1{\gdef\intro{#1}} +\def\date#1{\gdef\@date{#1}} +\gdef\@date{\today} %Default is today's date + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% \newifs for key and listing of questions %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\ifkey +\newif\iflisting + +\global\keyfalse +\global\listingfalse + +\def\key{\global\keytrue \global\listingfalse} +\def\listing{\global\listingtrue \global\keytrue} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Create leading blank answer line %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\ansline{ +\iflisting{\qmasno\ \underline{$\bullet$ \qtema\ $\bullet$}} \else +\ifkey{\underline{\rule{.15in}{.0mm}$\bullet$ \qtema\ + $\bullet$\rule{.15in}{.0mm}}} \else + \ifnum\qcount<9 {\rule{.5in}{.3mm} \kern 5mm} + \else\ifnum\qcount>8 {\rule{.5in}{.3mm} \kern 3mm} + \else {\rule{.5in}{.3mm} \kern 3mm} +\fi \fi \fi \fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Make following period for answer options %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\labelenumii{\alph{enumii}.} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Questions use enumi counter and are %% +%% inserted appropriately using minipage %% +%% leading blank line is used and redefined %% +%% to original status upon exit; define %% +%% \endtf for questions without subitems %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcount\qcount +\qcount=-1 + +%%% QUESTIONS WITH A LEADING BLANK RESPONSE LINE + +%% \startquestions is used to create question items WITH a blank answer +%% line for responses to be entered. +\def\startquestions{\qcount=-1\def\labelenumi{\ansline \arabic{enumi}.} + \ \\ } + +%% \qtem is a question and answer set placed on a minipage which HAS a leading +%% blank line for responses. +\def\qtem#1#2{\advance \qcount by 1 \noindent + \hspace*{.7in} \begin{minipage}{5.7in} \edef\qtema{#1} \edef\qmasno{#2} + \begin{enumerate} \setcounter{enumi}{\qcount} \item} + +%% \finishquestions is used to end questions and reset \labelenumi so that the +%% leading blank space is removed (used with \startquestions) +\def\finishquestions{\def\labelenumi{\arabic{enumi}.}} + +%% \ltem is a question and answer set placed on a minipage which does NOT have +%% a leading blank line for responses. +\def\ltem#1#2{\advance \qcount by 1 \noindent + \hspace*{.7in} \begin{minipage}{5.7in} \edef\qtema{#1} \edef\qmasno{#2} +\let\ansline\essayline + \begin{enumerate} \setcounter{enumi}{\qcount} \item} + +\def\essayline{ +\iflisting{\qmasno\ \rule{.25in}{0pt}} \else + \ifnum\qcount<9 {\rule{.5in}{0mm} \kern 5mm} + \else\ifnum\qcount>8 {\rule{.5in}{0mm} \kern 3mm} + \else {\rule{.5in}{.3mm} \kern 3mm} +\fi \fi \fi} + +%% \ftem is a question and answer set placed on a minipage which does NOT have +%% a leading blank line for responses. +\def\ftem#1#2{\advance \qcount by 1 \noindent + \hspace*{.7in} \begin{minipage}{5.7in} \edef\qtema{#1} \edef\qmasno{#2} +\let\ansline\essayline + \begin{enumerate} \setcounter{enumi}{\qcount} \item} + +\def\fillblankline{ +\iflisting{\qmasno\ \qtema} \else +\ifkey{\underline{\qtema}}\else + \ifnum\qcount<9 {\rule{.5in}{0mm} \kern 5mm} + \else\ifnum\qcount>8 {\rule{.5in}{0mm} \kern 3mm} + \else {\rule{.5in}{.3mm} \kern 3mm} +\fi \fi \fi \fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Answers use enumii counter and are %% +%% inserted appropriately using minipage %% +%% optional "atem" is defined to tighten up %% +%% vertical space between answers %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newdimen\mcitemsep +\mcitemsep 0pt + +%% \startanswers is used to start an answer set of multiple choice answers +\def\startanswers{ \vspace*{-2mm} \begin{enumerate} \let\itemsep\mcitemsep} + +%% \finishanswers is used to end the answer list and close the minipage +\def\finishanswers{\ \\ \end{enumerate} \end{enumerate} \end{minipage} } + +%% \endtf is used to end a true-false statement which has no multiple choice +%% answers present (primarily, close the minipage) +\def\endtf{\begin{enumerate} \atem True \rule{.5in}{0pt} b. False \ \\ + +\end{enumerate} \end{enumerate} \end{minipage} } + +\def\endessay{\ \\ \iflisting{{\sl A vertical space of \qtema\ inches is left +for this response}\\ + +} \else +{\rule{0pt}{\qtema in}} \fi +\end{enumerate} \end{minipage}} + +\def\endfitb{\ \\ \ifkey{{\sl \qtema }\\ + +} \else {\ \\} \fi \end{enumerate} \end{minipage}} + +%% \atem is an answer item used following \startanswers. Note the negative +%% \vspace* added to tighten up the appearance of the answer set. +%% Can use \item if happy with standard LaTeX spacing for enumii. +\def\atem{%\vspace*{-1.5mm} + \item} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% \maketitle for test, list, and key headers %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\maketitle{ +\typeout{ } + +\iflisting\typeout{Processing a Listing of Questions for \courseno } \else +\ifkey\typeout{Processing Answer Key for Exam \examno , \courseno} \else +\typeout{Processing Exam \examno , \courseno , for Professor \prof } \fi\fi + +\typeout{ } +\iflisting{\noindent {\bf \courseno \hfill \today \\ +Listing of Questions \hfill \prof }\\ +\vspace*{2mm} + +This is a listing of questions in your exam database. The first number in the +left column represents the question number in the master database, with a +number such as 05.012 representing question 12 in chapter 5. The second entry +in the left column represents the correct answer from among the choices +presented. The third number in the left column represents the running question +count for the range of questions in the database specified (this is handy once +questions are deleted from your database). Finally, the question, as it would +appear on an exam, is presented.\\ \rule{0pt}{4mm}} +\else +\ifkey +{\noindent {\bf \courseno \hfill \@date \\ +Exam \examno \hfill $\bullet$ ANSWER KEY $\bullet$ \hfill \prof }\\ +\vspace*{2mm} + +\intro \ \\ \rule{0pt}{4mm}} +\else %\ifexam +{\noindent {\bf \courseno \hfill \@date \\ +Exam \examno \hfill \prof }\\ +\vspace*{2mm} + +\intro \ \\ \rule{0pt}{4mm}} +\fi \fi } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Headers for pages other than first %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\lhead{\iflisting{\sl \courseno\ Listing of Questions} + \else\ifkey{\sl \courseno, Exam \examno\ Answer Key} + \else{\sl \courseno, Exam \examno}\fi \fi} +\chead{\sl \prof} +\rhead{\sl Page \thepage} +\lfoot{} +\cfoot{} +\rfoot{} +\pagestyle{fancy} +\thispagestyle{empty} + diff --git a/macros/latex209/contrib/misc/example.sty b/macros/latex209/contrib/misc/example.sty new file mode 100644 index 0000000000..bdab7fa192 --- /dev/null +++ b/macros/latex209/contrib/misc/example.sty @@ -0,0 +1,412 @@ +% example.sty 20 May 91 +%------------------------------------------------------------ +% Copyright (c) 1988, 1991 by J.Schrod. +% Distributed under the terms of the GNU General Public License. + +% +% LaTeX style option example +% tested with style article, should also work with other styles +% don't use it with twoside or twocolumn option +% +% [LaTeX in MAKEPROG] + + +% +% Author +% js: Joachim Schrod <xitijsch@ddathd21.bitnet> +% Contributors +% (** enough place for your name **) +% + +% +% VERSION HISTORY (MSCF -- most significant change first) +% +% DATE WHO REMARKS +% 91-05-20 js documentation added for distribution +% 88-06-29 js created it for THD LaTeX tutorial + + + + +%%%% +%%%% +%%%% These TeX macros were documented with the documentation system +%%%% MAKEPROG and automatically converted to the current form. +%%%% If you have MAKEPROG available you may transform it back to +%%%% the original input: Remove every occurence of three percents +%%%% and one optional blank from the beginning of a line and remove +%%%% every line which starts with four percents. The following lex +%%%% program will do this: +%%%% +%%%% %% +%%%% +%%%% ^%%%\ ? ; +%%%% ^%%%%.*\n ; +%%%% +%%%% MAKEPROG may be obtained over the net from the Bitnet-Listserver +%%%% LISTSERV@DHDURZ1 (filelist WEBWARE), from tuglib@science.utah.edu, +%%%% or via ftp from june.cs.washington.edu. +%%%% +%%%% +%%% \documentstyle[progltx,example]{article} + + +%%% \nofiles % don't need an aux file +%%% \hfuzz=18pt % expected overfull hboxes in code + + +%%% \begin{document} + + +%%% \title{The {\tt example\/} Style Option} +%%% \author{% % LaTeX does not discard unnecessary glue... +%%% Joachim Schrod% +%%% \thanks{% +%%% TU~Darmstadt, Alexanderstr.~10, D-6100 Darmstadt, Germany.\hfil\break +%%% Email: {\tt xitijsch@ddathd21.bitnet}.% +%%% }% +%%% } +%%% \date{20 May 91} + +%%% \maketitle + + + +%%% \chap What's this style option for?. + +%%% This style option makes it easier to produce examples for \TeX{} +%%% courses. It realizes an |example| environment; the text within such +%%% an environment is typeset two times: On the left side just like any +%%% ordinary text, on the right side verbatim. So an author can be sure +%%% that the verbatim and the typeset part of an \TeX{} example is +%%% consistent. The usage is simple: Type +%%% % +%%% \begin{quote} +%%% |\begin{example}| +%%% |Some \TeX{} text.| +%%% |\end{example}| +%%% \end{quote} +%%% % +%%% and you get +%%% % +%%% \begin{example} +%%% Some \TeX{} text. +%%% \end{example} +%%% % +%%% Just note one important point: {\it The end of the environment must +%%% be on a line of it's own, there must be no space in front of the +%%% |\end|, and there must be no text -- even no comment -- behind}. For +%%% further information have a look at the section on possible +%%% enhancements. + + +%%% \sect This program is free software; you can redistribute it and/or +%%% modify it under the terms of the GNU General Public License as +%%% published by the Free Software Foundation; either version~1, or (at your +%%% option) any later version. + +%%% This program is distributed in the hope that it will be useful, but +%%% {\bf without any warranty\/}; without even the implied warranty of +%%% {\bf merchantability\/} or {\bf fitness for a particular purpose}. See +%%% the GNU General Public License for more details. + +%%% You should have received a copy of the GNU General Public License +%%% along with this program; if not, write to the Free Software Foundation, +%%% Inc., 675~Mass Ave, Cambridge, MA~02139, USA. + + +%%% \sect The implementation uses an auxiliary file. This file has the +%%% extension |tmp|. Be aware of this if you use such a file name in other +%%% options. The file is not needed outside of the environment. + +%%% All public markups start with |Example|, all private ones with +%%% |example_|. These two prefixes are reserved. + +%%% The width of an example column is available for inspection and change +%%% in the dimension register |\ExampleWidth|. + + +%%% \sect This style option still has at least one problem which you +%%% should be aware of: I've encountered false indentation while I've +%%% used it within an item of a |list| environment. I remember that there +%%% was a difference if it was used with or without text in front of it. +%%% But I didn't needed this stuff so I decided not to look at. + +%%% Might be, that |\everypar| is not handled correctly or that some flags +%%% should be looked at. (Remember that an |\item| in \LaTeX{} does not +%%% set anything -- it just stores it away until the start of the next +%%% paragraph!) + +%%% Furthermore I set |\oddsidemargin| and |\evensidemargin| to 0\,pt, but +%%% I do not remember why. Is this really necessary? (I should have +%%% documented it in the beginning, nothing lives longer than a +%%% provision\,\dots) + + +%%% \sect And some future enhancements would be easy to make: +%%% % +%%% \begin{itemize} + +%%% \item The algorithm for typesetting the verbatim text should be those +%%% of |progltx|. Then tabulators and all those stuff would be handled +%%% right. + +%%% \item The algorithm for detecting the environment end should be those +%%% of |progltx|, too. It would allow for comments; a markup which forbids +%%% a comment behind it should be forbidden. + +%%% \item There should be a way to specify texts which are only printed in +%%% the \TeX{} part resp.\ the verbatim part. This would be helpful for +%%% inserting help lines, additional information etc. (Implementation is +%%% straightforward.) + +%%% \item The implementation does not care for the |twoside| option. Then +%%% the order should be mirrored. I.e., verbatim left and \TeX{} text +%%% right. + +%%% \item Other arrangements of \TeX{} text and verbatim text should be +%%% possible. E.g., on a slide there should not be beside each other but +%%% below. Perhaps also on a multi-column layout. + +%%% \end{itemize} + + +%%% \sect Before we start we declare some shorthands for category codes. +%%% By declaring the underscore~`(|_|)' as letters we can use it in our +%%% macros. (I agree with {\sc D.~Knuth} that +%%% |\identifier_several_words_long| is more readable than +%%% |\IdentifierSeveralWordsLong| and in every case better than +%%% |\p@@@s|.) As this is a \LaTeX{} style option the at sign is a letter +%%% anyhow; so we can use the ``private'' Plain and \LaTeX{} macros; and +%%% with the underscore we can make our own macros more readable. But as +%%% we have to restore this category code at the end of this macro file +%%% we store its former value in the control sequence |\uscode|. This +%%% method is better than to use a group because not all macros have to +%%% be defined global this way. + +%%% \beginprog +\chardef\escape=0 +\chardef\open=1 +\chardef\close=2 +\chardef\letter=11 +\chardef\other=12 +%\chardef\active=13 % is defined in Plain already + +\chardef\uscode=\catcode`\_ % top level macro file! + +\catcode`\_=\letter +%%% \endprog + + +%%% \sect Now some setup where I don't remember why I've done them, +%%% perhaps it was only needed in our tutorials. -- But never change a +%%% running program by yourself, let others do the work\,\dots + +%%% \beginprog +\oddsidemargin=0pt +\evensidemargin=\oddsidemargin +%%% \endprog + + + + +%%% \chap The Work is Simple. + +%%% Guess, the problem of implementation is no problem: We write the whole +%%% stuff to a file and read it back twice. One time for typesetting it as +%%% it is, second time for typesetting it verbatim. That's all. + +%%% So let's define our file variable and name first: + +%%% \beginprog +\newwrite\example_file +\def\example_name{\jobname.tmp } % <-- space! +%%% \endprog + + +%%% \sect Both parts of one example will be placed besides each other. We +%%% use the margin for the example, too. (There is not much place anyhow.) +%%% Between the two parts there is |\columnsep| space left. + +%%% \beginprog +\newdimen\ExampleWidth + \ExampleWidth=\textwidth + \advance\ExampleWidth by \marginparwidth % stick into margins + \advance\ExampleWidth by -\columnsep % between columns + \divide\ExampleWidth by 2 +%%% \endprog + + +%%% \sect When we're about, we may specify how to set the two parts. We +%%% may assume that the complete text is in the file |\example_name|. Both +%%% parts are typeset as minipages (it's better than vtop's for +%%% |\footnote| examples and such like). Sectioning markups and other +%%% stuff which setup things must behave as if they were not there -- +%%% nobody wants an entry in his table of contents because he has used a +%%% |\section| markup in an example. + +%%% The horizontal rules are needed for a better (still not correct) +%%% interline spacing. + +%%% {\it FIXME: How about index and glossary entries?} + +%%% \beginprog +\def\ExampleSet{% + \begin{minipage}[t]{\ExampleWidth}% + \hrule height\z@ + \def\markboth##1##2{}% + \def\markright##1{}% + \def\addcontentsline##1##2##3{}% + \input \example_name + \par + \hrule height\z@ + \end{minipage}% + } +%%% \endprog + + +%%% \sect Grmpfh, the \LaTeX{} |verbatim| environment is sloppy +%%% implemented (to say it polite). I will establish at least that a tab +%%% is typeset as 8~spaces; this will help some people. + +%%% {\it FIXME: other\/ |verbatim| implementation!} + +%%% \beginprog +\begingroup + \catcode`\^^I=\active + \gdef\@vobeytabs{\catcode`\^^I\active \let^^I\@xobeytab} + \global\let^^I=\@xobeytab% % for \write's +\endgroup +\def\@xobeytab{\space\space\space\space\space\space\space\space} +%%% \endprog + + +%%% \sect The verbatim code is taken from \LaTeX{}: + +%%% \beginprog +\def\ExampleVerb{% + \begin{minipage}[t]{\ExampleWidth}% + \hrule height\z@ + \begingroup + \small + \parindent\z@ + \rightskip\@flushglue + \@makeother\"\@verbatim + \frenchspacing \@vobeyspaces \@vobeytabs + \input \example_name + \endverbatim + \endgroup + \hrule height\z@ + \end{minipage}% + } +%%% \endprog + + + + +%%% \chap Writing the example to the auxiliary file. + +%%% Now we come to the real environment: We open our auxiliary file and +%%% start copying line by line afterwards. When we see the environment +%%% end we will finish. As a convenience for input we will ignore empty +%%% lines at the beginning of the example, this is flagged by |@ignore|. + +%%% \beginprog +\def\example{ + \par + \immediate\openout\example_file\example_name + \begingroup + \@makeother\"\let\do\@makeother \dospecials + \obeylines \obeyspaces + \@ignoretrue \copy_line + } +%%% \endprog + + +%%% \sect We need a reference line of the example end to compare against. +%%% This line we call |\end_of_example|. Of course all catcodes have to +%%% set up appropriately. + +%%% \beginprog +\begingroup + \catcode`\|=\escape % | is temporary escape character + \catcode`\[=\open % [ and ] are temporary grouping symbols + \catcode`\]=\close + \catcode`\{=\other % these are `other' in verbatim mode + \catcode`\}=\other + \catcode`\\=|other + |gdef|end_of_example[\end{example}] +|endgroup +%%% \endprog + + +%%% \sect Following the ``golden rules of \TeX{} macro coding,'' we will +%%% split gathering of the next line and working with it. If the line +%%% equals our reference line we will stop our envirenment. Of course, we +%%% must call |\end| ourselves as we have just read it from the input and +%%% it is already tokenized. + +%%% If we are inmidst the example we write the line to the auxiliary file, +%%% if we shall not skip empty lines as indicated by |@ignore|. + +%%% {\it FIXME: The comparison should not be so rude!} + +%%% \beginprog +\begingroup + \obeylines \gdef\copy_line#1^^M{\write_line{#1}}% +\endgroup + +\def\write_line#1{% + \def\next{#1}% + \ifx \next\end_of_example + \def\next{\end{example}}% % finish example + \else + \ifx \next\empty + \if@ignore % ignore empty lines at the beginning + \else % but write them out later + \immediate\write\example_file{\next}% + \fi + \else + \immediate\write\example_file{\next}% + \@ignorefalse % at least one non-empty line written + \fi + \let\next\copy_line % next line of example + \fi + \next + } +%%% \endprog + + +%%% \sect Now we may handle our real work: The example text is written +%%% out, we just have to set it two times. But first we must close the +%%% file. Both parts are set by a |\leftline| which inserts glue by |\hss| +%%% and will not yield an overfull hbox this way, it just sticks out to +%%% the right. + +%%% We try to mimic a displayed equation in spacing -- it's better than +%%% nothing (polishing needed). + +%%% \beginprog +\def\endexample{% + \endgroup + \immediate\closeout\example_file + \penalty \predisplaypenalty + \vskip \abovedisplayskip + \leftline{\ExampleSet \hskip\columnsep \ExampleVerb}% + \penalty \postdisplaypenalty + \vskip \belowdisplayskip + } +%%% \endprog + + +%%% \sect We must restore our catcode and are finished. + +%%% \beginprog +\catcode`\_=\uscode + +\endinput +%%% \endprog + + + +%%% \end{document} diff --git a/macros/latex209/contrib/misc/exercise.mac b/macros/latex209/contrib/misc/exercise.mac new file mode 100644 index 0000000000..93c7b61521 --- /dev/null +++ b/macros/latex209/contrib/misc/exercise.mac @@ -0,0 +1,57 @@ +% Subject: exercise-macros +% author : Alan R. Rogers + +% These macros are modified versions of the \exercise and \answer macros +% on p. 422 of the TeXbook. The modifications are to make them work under +% LaTeX. +% Usage: +% \documentstyle [12pt,twoside]{report} +% \input exercise +% \begin{document} +% \chapter{Text} +% \exercise In what season of the year did George Washington spend the +% winter in Valley forge? +% \answer 1776 +% +% \exercise In what year did George Washington spend the winter there? +% \answer Winter +% +% \chapter{Answers} +% \listanswers % The answers are inserted here. +% \end{document} +% BUG: The blank lines after the \answer macros are *mandatory*. If you leave +% them out TeX will exhaust the file looking for them. +% Alan R. Rogers (rogers@anthro.utah.edu), U. of Utah, 10/23/88 + +\newcounter{exno}[chapter] + +%\newenvironment{exercise}{\begin{list}{\small\llap{$\bullet$\kern.15em}% +% {\footnotesize EXERCISE \bf\thechapter.\theexno}}{ +% \usecounter{exno}\small +% \setlength{\labelwidth}{5em} \setlength{\labelsep}{1em} +% \setlength{\leftmargin}{6em} +% \setlength{\itemsep}{0em} \setlength{\topsep}{\parsep}}} +% {\end{list}\normalsize} + +\outer\def\exercise{\addtocounter{exno}{1} + \par\small\noindent\llap{$\bullet$\kern.15em}% bullet in margin + {\footnotesize EXERCISE \bf\thechapter.\theexno}\par\nopagebreak\noindent} + +\def\ansno#1.#2:{\par\noindent + \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces} +\chardef\other=12 +\newwrite\ans +\immediate\openout\ans=answers +\outer\def\answer{\normalsize\par + \immediate\write\ans{} + \immediate\write\ans{\string\ansno\thechapter.\theexno:} + \copytoblankline} +\def\copytoblankline{\begingroup\setupcopy\copyans} +\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials + \catcode`\|=\other \obeylines} +{\obeylines \gdef\copyans#1 + {\def\next{#1}% + \ifx\next\empty\let\next=\endgroup % + \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}} + +\def\listanswers{\immediate\closeout\ans\input answers} diff --git a/macros/latex209/contrib/misc/exercise.sty b/macros/latex209/contrib/misc/exercise.sty new file mode 100644 index 0000000000..34da48b709 --- /dev/null +++ b/macros/latex209/contrib/misc/exercise.sty @@ -0,0 +1,56 @@ +% Original author: Alan R. Rogers <rogers@anthro.utah.edu> +% Example usage follows style file +\newcounter{exno}[chapter] + +%\newenvironment{exercise}{\begin{list}{\small\llap{$\bullet$\kern.15em}% +% {\footnotesize EXERCISE \bf\thechapter.\theexno}}{ +% \usecounter{exno}\small +% \setlength{\labelwidth}{5em} \setlength{\labelsep}{1em} +% \setlength{\leftmargin}{6em} +% \setlength{\itemsep}{0em} \setlength{\topsep}{\parsep}}} +% {\end{list}\normalsize} + +\outer\def\exercise{\addtocounter{exno}{1} + \par\small\noindent\llap{$\bullet$\kern.15em}% bullet in margin + {\footnotesize EXERCISE \bf\thechapter.\theexno}\par\nopagebreak\noindent} + +\def\ansno#1.#2:{\par\noindent + \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces} +\chardef\other=12 +\newwrite\ans +\immediate\openout\ans=answers +\outer\def\answer{\normalsize\par + \immediate\write\ans{} + \immediate\write\ans{\string\ansno\thechapter.\theexno:} + \copytoblankline} +\def\copytoblankline{\begingroup\setupcopy\copyans} +\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials + \catcode`\|=\other \obeylines} +{\obeylines \gdef\copyans#1 + {\def\next{#1}% + \ifx\next\empty\let\next=\endgroup % + \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}} + +\def\listanswers{\immediate\closeout\ans\input answers} + +%============================================================================ +% These macros are modified versions of the \exercise and \answer macros +% on p. 422 of the TeXbook. The modifications are to make them work under +% LaTeX. +% Usage: +% \documentstyle [12pt,twoside,exercise]{report} +% \begin{document} +% \chapter{Text} +% \exercise In what season of the year did George Washington spend the +% winter in Valley forge? +% \answer 1776 +% +% \exercise In what year did George Washington spend the winter there? +% \answer Winter +% +% \chapter{Answers} +% \listanswers % The answers are inserted here. +% \end{document} +% BUG: The blank lines after the \answer macros are *mandatory*. If you leave +% them out TeX will exhaust the file looking for them. +% Alan R. Rogers (rogers@anthro.utah.edu), U. of Utah, 10/23/88 diff --git a/macros/latex209/contrib/misc/exercise.tex b/macros/latex209/contrib/misc/exercise.tex new file mode 100644 index 0000000000..8521d93ea1 --- /dev/null +++ b/macros/latex209/contrib/misc/exercise.tex @@ -0,0 +1,54 @@ +% These macros are modified versions of the \exercise and \answer macros +% on p. 422 of the TeXbook. The modifications are to make them work under +% LaTeX. +% Usage: +% \documentstyle [12pt,twoside]{report} +% \input exercise +% \begin{document} +% \chapter{Text} +% \exercise In what season of the year did George Washington spend the +% winter in Valley forge? +% \answer 1776 +% +% \exercise In what year did George Washington spend the winter there? +% \answer Winter +% +% \chapter{Answers} +% \listanswers % The answers are inserted here. +% \end{document} +% BUG: The blank lines after the \answer macros are *mandatory*. If you leave +% them out TeX will exhaust the file looking for them. +% Alan R. Rogers (rogers@anthro.utah.edu), U. of Utah, 10/23/88 + +\newcounter{exno}[chapter] + +%\newenvironment{exercise}{\begin{list}{\small\llap{$\bullet$\kern.15em}% +% {\footnotesize EXERCISE \bf\thechapter.\theexno}}{ +% \usecounter{exno}\small +% \setlength{\labelwidth}{5em} \setlength{\labelsep}{1em} +% \setlength{\leftmargin}{6em} +% \setlength{\itemsep}{0em} \setlength{\topsep}{\parsep}}} +% {\end{list}\normalsize} + +\outer\def\exercise{\addtocounter{exno}{1} + \par\small\noindent\llap{$\bullet$\kern.15em}% bullet in margin + {\footnotesize EXERCISE \bf\thechapter.\theexno}\par\nopagebreak\noindent} + +\def\ansno#1.#2:{\par\noindent + \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces} +\chardef\other=12 +\newwrite\ans +\immediate\openout\ans=answers +\outer\def\answer{\normalsize\par + \immediate\write\ans{} + \immediate\write\ans{\string\ansno\thechapter.\theexno:} + \copytoblankline} +\def\copytoblankline{\begingroup\setupcopy\copyans} +\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials + \catcode`\|=\other \obeylines} +{\obeylines \gdef\copyans#1 + {\def\next{#1}% + \ifx\next\empty\let\next=\endgroup % + \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}} + +\def\listanswers{\immediate\closeout\ans\input answers} diff --git a/macros/latex209/contrib/misc/extradefs.tex b/macros/latex209/contrib/misc/extradefs.tex new file mode 100644 index 0000000000..c7ac99e5ad --- /dev/null +++ b/macros/latex209/contrib/misc/extradefs.tex @@ -0,0 +1,58 @@ +% +% Supplied by Kent McPherson +% +\def\trademark{{\ooalign + {\tiny \hfill \raise .085ex\hbox{R}\hfill \crcr + \scriptsize \mathhexbox20D}}} +% +% Supplied by Kent McPherson +% +\newlength{\ulength} +\newcommand{\uline}[2]{ + \settowidth{\ulength}{#2} + \parbox{\ulength}{ + {#2} \\ [-.75\baselineskip] + \rule{\ulength}{#1}} +} +% +% Supplied by Kent McPherson +% +\newcount\@outlinedepth \@outlinedepth = 0 + +\@definecounter{outlinei} +\@definecounter{outlineii} +\@definecounter{outlineiii} +\@definecounter{outlineiv} + +\def\outline{\ifnum \@outlinedepth >3 \@toodeep\else + \advance\@outlinedepth \@ne + \edef\@outlinectr{outline\romannumeral\the\@outlinedepth}\list + {\csname label\@outlinectr\endcsname}{\usecounter + {\@outlinectr}\def\makelabel##1{\hss\llap{##1}}}\fi} + +\let\endoutline =\endlist + +\def\labeloutlinei{\Roman{outlinei}.} +\def\theoutlinei{\Roman{outlinei}} +\def\labeloutlineii{\Alph{outlineii}.} +\def\theoutlineii{\Alph{outlineii}} +\def\p@outlineii{\theoutlinei} +\def\labeloutlineiii{\arabic{outlineiii}.} +\def\theoutlineiii{\arabic{outlineiii}} +\def\p@outlineiii{\theoutlinei(\theoutlineii)} +\def\labeloutlineiv{\alph{outlineiv}.} +\def\theoutlineiv{\alph{outlineiv}} +\def\p@outlineiv{\p@outlineiii\theoutlineiii} +% +% Supplied by Kent McPherson +% +% +% Produce a list of MIL documents +\def\documentlabel#1{\def\\{\egroup\hbox\bgroup} + \raisebox{0pt}[2.5ex][0ex]{\vtop{\hbox\bgroup#1\egroup}} \hfill} +\def\documentlist{\list{}{\labelwidth=10em + \advance\labelwidth\labelsep + \leftmargin\labelwidth \advance\leftmargin\labelsep + \advance\leftmargin 2\parindent + \let\makelabel\documentlabel \raggedright}} +\let\enddocumentlist=\endlist diff --git a/macros/latex209/contrib/misc/fancychapters.sty b/macros/latex209/contrib/misc/fancychapters.sty new file mode 100644 index 0000000000..d9ae87b12e --- /dev/null +++ b/macros/latex209/contrib/misc/fancychapters.sty @@ -0,0 +1,107 @@ +% $Id: fancychapters.sty,v 1.1 1992/07/10 07:40:27 joke Exp $ +% +% A macro for fancy chapter headings for use with LaTeX 2.09 +% +% Copyright (C) 1992 by Joerg Heitkoetter +% Systems Analysis Group, University of Dortmund, Germany. +% (joke@ls11.informatik.uni-dortmund.de). +% +% This is modified code from bk11.sty, I received from TeXpert +% Gerd Neugebauer 8/7/92 (gerd@intellektik.informatik.th-darmstadt.de). +% Thank's for the q&d hack, Gerd! +% +% Corrections of typos, \newdimensions, and everything, to handle +% things relatively by joke. +% +% Enjoy! + + +% DESCRIPTION +% +% This style option provides the macro \Chapter. It requires the style +% book (report works as well :-) +% +% The first argument is typeset in a \parbox on the right top of the +% chapter page, using an \emphasized font. The second argument is the +% chapter's title. +% An optional argument between, corresponds to the optional argument of +% the \chapter command. Thus +% +% \Chapter{<quote>}{<title>} or \Chapter{<quote>}[<abbrev>]{<title>} +% +% are both valid constructs. +% +% Two new dimension counters, \fancychapwidth and \fancychapsep handle +% the width of the quote's \parbox, and it's distance to the begin +% of the `Chapter X' mark, respectively. See the EXAMPLE below to `grok' +% how things work. Please note that the real distance between quote +% and `Chapter X' mark is actually \fancychapsep + 50pt, as the latter +% is always inserted, before a chapter starts. You could simply use +% negative values (e.g. \fancychapsep=-50pt) to get around this, but +% you shouldn't do, unless you're a fan of \uglychapters ;-) + + +% Some new dimensions... +\newdimen\fancychapwidth +\newdimen\fancychapsep + +% ... and their defaults +\fancychapwidth=0.5\textwidth +\fancychapsep=10pt + +% the \Chapter ... +\long\def\Chapter#1{\cleardoublepage + \thispagestyle{plain}% + \global\@topnum\z@ + + \@afterindentfalse + \hfill\parbox{\fancychapwidth}{\em #1} % put quotation in a box + % flushed right + \vspace{\fancychapsep}\par % add distance to chapter head + \secdef\@chapter\@schapter} + +% That's all folks. +\endinput + + +% EXAMPLE +% +% (1) uncomment the following %%% marked lines +% (2) save them to a file +% (3) LaTeX it! + +%%%\documentstyle[fancychapters]{report} +%%% +%%%\begin{document} +%%%\Chapter{ +%%%{\scriptsize (Sung to the tune of ``The Impossible Dream'' from MAN OF +LA MANCHA)}\\[5pt] +%%% To code the impossible code, \\ +%%% To bring up a virgin machine, \\ +%%% To pop out of endless recursion, \\ +%%% To grok what appears on the screen, \\[5pt] +%%% To right the unrightable bug, \\ +%%% To endlessly twiddle and thrash, \\ +%%% To mount the unmountable magtape, \\ +%%% To stop the unstoppable crash! +%%% +%%% \begin{center} +%%% {\tt /usr/games/fortune} +%%% \end{center} +%%% }{Building Operating Systems} +%%% +%%%\fancychapwidth=2in +%%%\fancychapsep=0pt +%%%\Chapter{``Nobody feels as helpless as the owner of a sick goldfish.'' +%%%}{Building More Operating Systems} +%%% +%%%\fancychapwidth=0.75\textwidth +%%%\fancychapsep=10pt +%%%\Chapter{ +%%%``Parents of young organic life forms should be warned, that +%%%towels can be harmful, if swallowed in large quantities.'' +%%%\\[5pt] +%%%\rightline{{\rm --- Douglas Adams}} +%%%}[No More]{Building No More Operating Systems} +%%% +%%%\end{document} diff --git a/macros/latex209/contrib/misc/farticle.sty b/macros/latex209/contrib/misc/farticle.sty new file mode 100644 index 0000000000..c8581d3b2e --- /dev/null +++ b/macros/latex209/contrib/misc/farticle.sty @@ -0,0 +1,244 @@ +% This is FARTICLE.STY in text format, as of May 15, 1988. +% article.sty 16-Mar-88 +% B.L. 06/12/88 + +\typeout{Document Style 'farticle' <16 Mar 88>.} +\typeout{Francisation de 'farticle'} + + +\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 sty(art1\@ptsize)\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*{Table des mati\`eres} +\markboth{TABLE DES MATI\`ERES}{TABLE DES MATI\`ERES} + \@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*{Liste des Figures\@mkboth + {LISTE DES FIGURES}{LISTE DES FIGURES}}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\def\listoftables{\section*{Liste des Tableaux\@mkboth + {LISTE DES TABLEAUX}{LISTE DES TABLEAUX}}\@starttoc{lot}} +\let\l@table\l@figure + + +\def\thebibliography#1{\section*{Bibliographie\@mkboth + {BIBLIOGRAPHIE}{BIBLIOGRAPHIE}}\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 + +\newcounter{theindex} + +\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{Tableau \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{\number\day\space\ifcase\month\or + Janvier\or F\'evrier\or Mars\or Avril\or Mai\or Juin\or + Juillet\or Ao\|ut\or Septembre\or Octobre\or Novembre\or D\'ecembre\fi + \space \number\year} + +\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi diff --git a/macros/latex209/contrib/misc/fixup.sty b/macros/latex209/contrib/misc/fixup.sty new file mode 100644 index 0000000000..0c9ed889bb --- /dev/null +++ b/macros/latex209/contrib/misc/fixup.sty @@ -0,0 +1,169 @@ +% FIXUP DOCUMENT STYLE OPTION +% for LaTeX Version 2.09 <25 Jan 1988> +% by John Hobby (hobby@research.att.com) +% +% If the fleqn style option is also used, it should precede this one. + + +\hyphenation{bi-dif-fer-en-tial buzz-word data-path equi-vari-ant gauss-ian + hexa-dec-i-mal le-gendre mass-a-chu-setts non-smooth + qua-si-smooth stand-alone time-stamp wave-guide white-space} + + + + +% Fix Plain's \bigl, \Bigl, etc. macros so that they try to scale with +% LaTeX size changes. This uses the fact that \@setsize sets \ht\strutbox +% to be 70% of the normal unstretched baselineskip. + +\def\big#1{{\hbox{$\left#1\vcenter to1.428\ht\strutbox{}\right.\n@space$}}} +\def\Big#1{{\hbox{$\left#1\vcenter to2.142\ht\strutbox{}\right.\n@space$}}} +\def\bigg#1{{\hbox{$\left#1\vcenter to2.857\ht\strutbox{}\right.\n@space$}}} +\def\Bigg#1{{\hbox{$\left#1\vcenter to3.571\ht\strutbox{}\right.\n@space$}}} + + + + + +% Fix \sbox and \mbox so that they do not take the box contents as a parameter. +% This makes environments that depend on catcode changes work inside + +\def\sbox#1{\setbox#1\hbox} +\def\mbox{\leavevmode\hbox} + + + + + + + + +% Apply \addpenalty's trick for not confusing \addvspace so that the \write +% from \addtocontents or \addcontentsline will not mess up vertical spacing + +\def\addvstuff#1{% + \ifvmode\ifdim\lastskip=\z@ #1% + \else \@tempskipb\lastskip + \vskip -\lastskip #1\vskip\@tempskipb + \fi + \else #1\fi} + +\def\addpenalty#1{\ifvmode + \if@minipage\else\if@nobreak\else + \addvstuff{\penalty#1}% + \fi\fi + \else\@noitemerr\fi} + +\long\def\addtocontents#1#2{% + \if@filesw \begingroup + \let\label\@gobble \let\index\@gobble + \def\protect##1{\string\string\string##1\string\space\space}% + \edef\@tempa{\write \@auxout {\string\@writefile{#1}{#2}}}% + \addvstuff{\@tempa \if@nobreak \ifvmode\nobreak\fi\fi}% + \endgroup\fi} + +\def\addcontentsline#1#2#3{% + \if@filesw \begingroup + \let\label\@gobble \let\index\@gobble + \def\protect##1{\string\string\string##1\string\space\space}% + \@temptokena{\thepage}% + \edef\@tempa{\write \@auxout{\string\@writefile{#1}% + {\protect\contentsline{#2}{#3}{\the\@temptokena}}}}% + \addvstuff{\@tempa \if@nobreak \ifvmode\nobreak\fi\fi}% + \endgroup\fi} + + + + +% Make floats use the trick from the minipage environment to avoid extraneous +% space at the top. e.g., "\begin{figure} \begin{center}..." + +\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 + \hsize\columnwidth \@parboxrestore + \@minipagetrue + \everypar{\global\@minipagefalse\everypar{}}} + + + + +% We now redefine the eqnarray environment to correct the space around +% the operator. Since the fleqn document style option also redefines +% this environment, we carefully check the previous definition before +% making any changes. Any changes to the definition in LaTeX itself +% or in the fleqn document style option will cause the `Warning: unable...' +% message to appear. If this happens it will be necessary to update the +% definitions of \@tempa and \@tempb below and incorperate the changes into +% the new definitions of \eqnarray. + + +% This is the current definition of \eqnarray for the fleqn document style +% option: + +\def\@tempa{\stepcounter{equation}\let\@currentlabel=\theequation +\global\@eqnswtrue +\global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr +\abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi +\belowdisplayskip\abovedisplayskip +\belowdisplayshortskip\abovedisplayskip +\abovedisplayshortskip\abovedisplayskip +$$\halign to +\linewidth\bgroup\@eqnsel\hskip\@centering$\displaystyle\tabskip\z@ +{##}$&\global\@eqcnt\@ne \hskip 2\arraycolsep \hfil${##}$\hfil +&\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle{##}$\hfil +\tabskip\@centering&\llap{##}\tabskip\z@\cr} + + +% Here is the corresponding defintion from latex.tex: + +\def\@tempb{\stepcounter{equation}\let\@currentlabel=\theequation +\global\@eqnswtrue +\global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr +$$\halign to \displaywidth\bgroup\@eqnsel\hskip\@centering + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + \hskip 2\arraycolsep \hfil${##}$\hfil + &\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + + +\ifx\eqnarray\@tempa % If the fleqn document style option is in effect + + \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation + \global\@eqnswtrue + \global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr + \abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi + \belowdisplayskip\abovedisplayskip + \belowdisplayshortskip\abovedisplayskip + \abovedisplayshortskip\abovedisplayskip + $$\halign to \linewidth\bgroup\hfil + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + \hfil$\displaystyle{{}##{}}$\hfil + &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + +\else\ifx\eqnarray\@tempb % Else try the default eqnarray environment + + \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation + \global\@eqnswtrue + \global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr + $$\halign to \displaywidth\bgroup\hfil + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + \hfil$\displaystyle{{}##{}}$\hfil + &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + +\else \typeout{Warning: Unable to fix unknown version of \string\enarray.} +\fi\fi + +\def\@tempa{} % Free up TeX's memory +\def\@tempb{} diff --git a/macros/latex209/contrib/misc/fllater.sty b/macros/latex209/contrib/misc/fllater.sty new file mode 100644 index 0000000000..22cb45944a --- /dev/null +++ b/macros/latex209/contrib/misc/fllater.sty @@ -0,0 +1,55 @@ +\def\filename{fllater} + + +\def\next{\@insertfalse \@textmin \textfraction\@colht + \@tempdima\@pageht \advance\@tempdima\@pagedp + \ifdim \@textmin >\@tempdima \@tempdima\@textmin \fi + \advance\@tempdima\ht\@currbox \advance\@tempdima\@maxsep + \ifdim\@colroom >\@tempdima + \ifnum\@colnum >\z@ + \@currtype\count\@currbox \divide\@currtype\@xxxii + \multiply\@currtype\@xxxii + \@bitor\@currtype\@deferlist + \if@test\else + \@bitor\@currtype\@botlist + \if@test \@addtobot \else + \ifodd\count\@currbox + \global\advance\@colnum\m@ne + \@cons\@midlist\@currbox + \vskip\intextsep \box\@currbox + \penalty\interlinepenalty \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty\z@ + \@inserttrue + \else \@addtotoporbot + \fi\fi\fi\fi\fi + \if@insert\else\@cons\@deferlist\@currbox\fi} + +\ifx\@addtocurcol\next +\let\next\relax +\def\@addtocurcol{\@insertfalse \@textmin \textfraction\@colht + \@tempdima\@pageht \advance\@tempdima\@pagedp + \ifdim \@textmin >\@tempdima \@tempdima\@textmin \fi + \advance\@tempdima\ht\@currbox \advance\@tempdima\@maxsep + \ifdim\@colroom >\@tempdima + \ifnum\@colnum >\z@ + \@currtype\count\@currbox \divide\@currtype\@xxxii + \multiply\@currtype\@xxxii + \@bitor\@currtype\@deferlist + \if@test\else + \@bitor\@currtype\@botlist + \if@test \@addtobot \else + \ifodd\count\@currbox + \global\advance\@colnum\m@ne + \@cons\@midlist\@currbox + \vskip\intextsep \box\@currbox + \penalty\interlinepenalty \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty\z@ + \@inserttrue + \else \@addtobot + \fi\fi\fi\fi\fi + \if@insert\else\@cons\@deferlist\@currbox\fi} +\else +\errmessage{Style \filename\space is out of date} +\fi diff --git a/macros/latex209/contrib/misc/floatnohead.sty b/macros/latex209/contrib/misc/floatnohead.sty new file mode 100644 index 0000000000..7c29b5d915 --- /dev/null +++ b/macros/latex209/contrib/misc/floatnohead.sty @@ -0,0 +1,13 @@ +% if there are floats around +% then set pagestyle to be empty +% Original version posted to comp.text.tex Sebastian Rahtz +% Modified by Don Hosek so that message is done with \message rather than +% \typeout--this causes the message to appear when the page is output rather +% than when it is processed. +\def\@tryfcolumn #1{\global\@fcolmadefalse \xdef\@trylist{#1}\xdef\@failedlist + {}\begingroup \let\@elt\@xtryfc \@trylist \endgroup + \if@fcolmade + \message{Page with floats and nothing else} + \thispagestyle{empty} +\@vtryfc #1 +\fi} diff --git a/macros/latex209/contrib/misc/flowchart.sty b/macros/latex209/contrib/misc/flowchart.sty new file mode 100644 index 0000000000..0df4442fef --- /dev/null +++ b/macros/latex209/contrib/misc/flowchart.sty @@ -0,0 +1,185 @@ +% +%From: chase@orc.olivetti.com (David Chase) +%Subject: re: Flow charts in LaTeX +%Date: Mon, 24 Oct 88 15:34:42 -0700 +% +%Here is a tool that might be useful; you can use it to get lines +%which bend (90 degrees) ending in arrows, and you can study it (ha ha) +%to figure out how it might be extended to do a flow chart. +%It is included within a program to test demonstrate it. It uses only +%the LaTeX picture macros for graphics. +% +%Note the use of dirty tricks to turn points into dimensionless +%numbers. There may be a better way, but I couldn't find it. My +%difficulties with this lead me to believe that either +%(1) TeX should really provide dimensionless real numbers +%or +%(2) Maybe LaTeX should use real lengths instead of dimensionless +%numbers in the picture environment. I might get tired of always +%attaching a dimension to things, but it would be LOTS easier to write +%interesting macros. +% +%If anyone can point out to me an easier way to do this, I'd be happy +%to hear it. People on TeXhax tried to help me a couple of years ago +%with this, but nothing seemed to work. +% +%---------------- BEGINNING OF MACROS ---------------- +% First, a dirty trick + +{\catcode`p=12 \catcode`t=12 \gdef\bogusmacro#1pt{#1}} +\let\getfactor=\bogusmacro +\def\unpt#1{\expandafter\getfactor\the#1} + +% A macro to get us out of the iteration. + +\def\gobbleemup#1,#2,#3,{} + +% TWAI does all the work, and could probably be rewritten +% to be much prettier. + +\def\twai#1,#2,#3,#4,#5,{ +% \typeout{Twisty arrow increment of |#1| |#2| |#3| |#4| |#5|} + +% Turn parameters into PT quantities so we can do simple arithmetic. + \xco#1pt\relax + \yco#2pt\relax + \len#4pt\relax + \advance\len -\firstshrink\relax +% We get \taoval dynamically from our caller + \def\firstshrink{\taoval pt}\relax +% Set things up for selection and iteration + \let\drawcommand=\line + \def\this{#3} + \def\xvec{0} + \def\yvec{0} + \let\next=\twai +% Figure out which way we're going now + \if\this\uu + \addtolength{\yloc}{\len} + \def\yvec{1} + \corner=0 + \else + \if\this\dd + \addtolength{\yloc}{-\len} + \def\yvec{-1} + \corner=1 + \else + \if\this\ll + \addtolength{\xloc}{-\len} + \def\xvec{-1} + \corner=0 + \else + \if\this\rr + \addtolength{\xloc}{\len} + \def\xvec{1} + \corner=2 + \else + \if\this\ee + \relax + \else + \typeout{Twisty Arrow Increment--arg 2 (\this) not one of {udlre}} + \fi\fi\fi\fi\fi + \if#5\ee +% \typeout{Ending vector} + \let\drawcommand=\twaiend + \advance\len\tarad + \fi +% \typeout{New XL \unpt\xloc\space YL \unpt\yloc} +% Here we emit the line or ending command + \put(\unpt\xco,\unpt\yco){\drawcommand(\xvec,\yvec){\unpt\len}} + % Figure out the next line + \if#5\uu + \advance\yloc \tarad + \advance\corner 1 + \else + \if#5\dd + \advance\yloc -\tarad + \advance\corner 0 + \else + \if#5\ll + \advance\xloc -\tarad + \advance\corner 2 + \else + \if#5\rr + \advance\xloc \tarad + \advance\corner 0 + \else + \if#5\ee + \let\next=\gobbleemup + \corner=4 + \else + typeout{Twisty Arrow Increment--arg 5 (#5) not one of {udlre}} + \fi\fi\fi\fi\fi +% \typeout{Corner center XL \unpt\xloc\space YL \unpt\yloc} + \ifcase\corner + % case 0 TL + \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[tl]} + \or + % case 1 BL + \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[bl]} + \or + % case 2 TR + \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[tr]} + \or + % case 3 BR + \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[br]} + \or + % case 4 END + \relax + \fi + \advance\xloc \xvec\tarad + \advance\yloc \yvec\tarad +% \typeout{Final XL \unpt\xloc\space YL \unpt\yloc} +% iterate or finish, depending upon value of 'next' + \next\unpt\xloc,\unpt\yloc,#5, + } +\def\twistyarrowgen(#1,#2,#3,#4)#5{{ + \def\uu{u} + \def\dd{d} + \def\ll{l} + \def\rr{r} + \def\ee{e} + \countdef\corner=255 + \newskip{\xco}\newskip{\yco}\newskip{\len} + \newskip{\xloc}\newskip{\yloc} + \newskip{\tarad}\setlength{\tarad}{#3pt} + \newskip{\dummylen} + \let\twaiend=#4 + \setlength{\dummylen}{\tarad} + \advance\dummylen \dummylen + \def\taoval{\unpt\dummylen} + \setlength{\xloc}{#1pt}\setlength{\yloc}{#2pt} + \def\firstshrink{\tarad}\relax + \twai #1,#2,#5,e,}} +% +\def\twistyarrow(#1,#2){\twistyarrowgen(#1,#2,2,\vector)} +\def\twistyarrowrad(#1,#2,#3){\twistyarrowgen(#1,#2,#3,\vector)} +%---------------- END OF MACROS ---------------- +%\documentstyle[flowchart]{article} +%\begin{document} +%\unitlength=.1in +%\begin{center} +%\begin{picture}(30,30) +%\twistyarrowrad(0,0,1){% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11,r,11,d,10,l,10,% +%u,11} +%\end{picture} +%\end{center} +%\end{document} diff --git a/macros/latex209/contrib/misc/font-nostalgia.sty b/macros/latex209/contrib/misc/font-nostalgia.sty new file mode 100644 index 0000000000..a94c730073 --- /dev/null +++ b/macros/latex209/contrib/misc/font-nostalgia.sty @@ -0,0 +1,51 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Mario Wolczko", +%%% version = "2", +%%% date = "21 May 1992", +%%% time = "20:55:58 BST", +%%% filename = "font-nostalgia.sty", +%%% address = "Dept of Computer Science +%%% The University of Manchester +%%% Oxford Road +%%% Manchester M13 9PL +%%% UK", +%%% telephone = "+44-61-275-6146", +%%% FAX = "+44-61-275-6236", +%%% checksum = "47224 51 137 1962", +%%% email = "mario@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, NFSS, fonts", +%%% supported = "yes", +%%% docstring = "For New Font Selection Scheme users -- +%%% provides commands with the pre-NFSS meanings of \rm, \bf, etc.", +%%% } +%%% ==================================================================== + +\@ifundefined{extract@font} + {\let\oldrm\rm + \let\oldbf\bf + \let\oldtt\tt + \let\oldsf\sf + \let\oldsl\sl + \let\oldit\it + \let\oldsc\sc} + {\newcommand\oldrm{\reset@font} + \newcommand\oldtt{\family\ttdefault\series\default@series + \shape{n}\selectfont} + \newcommand\oldsf{\family\sfdefault\series\default@series + \shape{n}\selectfont} + \def\@psfmtname{pslplain} + \ifx\fmtname\@psfmtname % pslatex + \newcommand\oldbf{\family\rmdefault\series{b}% + \shape{n}\selectfont} + \else + \newcommand\oldbf{\family\rmdefault\series{bx}% + \shape{n}\selectfont} + \fi + \newcommand\oldit{\family\rmdefault\series\default@series + \shape{it}\selectfont} + \newcommand\oldsl{\family\rmdefault\series\default@series + \shape{sl}\selectfont} + \newcommand\oldsc{\family\rmdefault\series\default@series + \shape{sc}\selectfont}} diff --git a/macros/latex209/contrib/misc/fontstyl.txt b/macros/latex209/contrib/misc/fontstyl.txt new file mode 100644 index 0000000000..d81591fb3e --- /dev/null +++ b/macros/latex209/contrib/misc/fontstyl.txt @@ -0,0 +1,27 @@ +Die drei Style-Files AMSFONTS.STY, EULER.STY und CYRFONT.STY machen +Fonts, die standardm"a"sig nur unter AmSTeX verf"ugbar sind, auch +unter LaTeX zug"anglich. + +AMSFONTS.STY bindet den erweiterten mathematischen Zeichensatz in +LaTeX ein und zwar so, da"s einfach die ganzen in AmSTeX zus"atzlich +definierten Macros auch in LaTeX verwendbar sind. + +EULER.STY macht ganz analog den Fraktur-Zeichensatz verf"ugbar. +Dieser Zeichensatz wird mit den Macros \frak oder \goth verf"ugbar. +Zu beachten ist aber, da"s dieser Zeichensatz nur f"ur den +Mathematikmodus entworfen wurde und im normalen Textmodus praktisch +nicht verwendbar ist. + +CYRFONTS.STY macht den cyrillischen Zeichsatz verf"ugbar, die +entsprechenden Macros wurden aus der AmSTeX-Erweiterung "ubernommen. + +Die fr"uheren Versionen dieser files konnten nicht gleichzeitig +verwendet werden. Verwendete man n"amlich EULER.STY nach +AMSFONTS.STY, dann wurde ein Teil der AMSFONTS.STY-Definitionen +wieder gel"oscht. Die neuen Versionen haben dieses Problem nicht, sie +k"onnen also auch gemeinsam verwendet werden. + +Weiters wurde im file AMSFONTS.STY die Definition f"r das \AmSTeX Logo +eingef"ugt. + + diff --git a/macros/latex209/contrib/misc/format.sty b/macros/latex209/contrib/misc/format.sty new file mode 100644 index 0000000000..f63725248e --- /dev/null +++ b/macros/latex209/contrib/misc/format.sty @@ -0,0 +1,28 @@ +% Written by Charles Karney (Karney%PPC.MFENET@NMFECC.ARPA) 1986/04/29. +% Format is a style option which allows the printing of floating point +% numbers in fixed format. The argument is the counter to use. The +% optional first argument if the power of ten to multiply counter by. The +% default is 0. An integer is produced if power is nonnegative. +% Otherwise, at least one digit appears before decimal point and exactly +% -power digits after decimal point. Restriction: abs(power)<=6. +% +% Example: label an axis with -1.0, -0.8, -0.6, ... 1.0 +% \newcounter{axis} \setcounter{axis}{-10} +% \multiput(...)(...){11}{\format[-1]{axis}\addtocounter{axis}{2}} + +\def\format{\@ifnextchar[{\format@}{\format@[0]}} +\def\format@[#1]#2{\@tempcnta#1 \@format{\@nameuse{c@#2}}} +\def\@format#1{\hbox{$ + \ifnum #1<0 - #1-#1\fi % Here's where to insert a + + \ifnum\@tempcnta<0 + \@tempcnta-\@tempcnta + \@tempcnta\ifcase\@tempcnta\or 10 \or 100 \or 1000 \or + 10000 \or 100000 \else 1000000 \fi + \@tempcntb#1 \divide\@tempcntb \@tempcnta + \number\@tempcntb . \multiply\@tempcntb \@tempcnta + \advance\@tempcntb -#1 \advance\@tempcnta -\@tempcntb + \expandafter\@gobble\number\@tempcnta + \else + \number #1 + \ifcase\@tempcnta\or 0\or 00\or 000\or + 0000\or 00000\else 000000\fi\fi$}} diff --git a/macros/latex209/contrib/misc/frenchponct.sty b/macros/latex209/contrib/misc/frenchponct.sty new file mode 100644 index 0000000000..e8f5cb1904 --- /dev/null +++ b/macros/latex209/contrib/misc/frenchponct.sty @@ -0,0 +1,23 @@ +%%%%%%%%%%%%%%%%%%%%%%%% FRENCHPONCT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\catcode`\@=11 +% Origine brochcod.tex Y.Roy +% Les caracteres de double ponctuation (!?;:) sont +% saisis precedes d'un espace. +\catcode`\;=\active +\catcode`\:=\active +\catcode`\!=\active +\catcode`\?=\active +\def;{\relax\ifhmode\ifdim\lastskip>\z@ + \unskip\kern\fontdimen2\font \kern-1.4\fontdimen3\font + \fi\fi\string;} +\def:{\relax\ifhmode\ifdim\lastskip>\z@ + \unskip\penalty\@M\ \fi\fi\string:} +\def!{\relax\ifhmode\ifdim\lastskip>\z@ + \unskip\kern\fontdimen2\font + \kern-1.4\fontdimen3\font\fi\fi\string!} +\def?{\relax\ifhmode\ifdim\lastskip>\z@ + \unskip\kern\fontdimen2\font + \kern-1.4\fontdimen3\font\fi\fi\string?} + +\frenchspacing +\catcode`\@=12 diff --git a/macros/latex209/contrib/misc/frenchquote.sty b/macros/latex209/contrib/misc/frenchquote.sty new file mode 100644 index 0000000000..92523f022b --- /dev/null +++ b/macros/latex209/contrib/misc/frenchquote.sty @@ -0,0 +1,5 @@ +\def\frlquote{\vbox{\offinterlineskip + \hbox{${\scriptscriptstyle\langle\!\langle}$}\kern-0.1pt}\hskip + -.6pt plus.3pt minus.2pt~} +\def\frrquote{~\hskip -.6pt plus.3pt minus.2pt\vbox{\offinterlineskip + \hbox{$\scriptscriptstyle\rangle\!\rangle$}\kern-0.1pt}} diff --git a/macros/latex209/contrib/misc/frontiers.sty b/macros/latex209/contrib/misc/frontiers.sty new file mode 100644 index 0000000000..bfc8da8a72 --- /dev/null +++ b/macros/latex209/contrib/misc/frontiers.sty @@ -0,0 +1,203 @@ +% FRONTIERS DOCUMENT STYLE -- released 27 September 1988 +% for LaTeX version 2.09 +% Copyright (C) 1988 by Max Hailperin, except portions +% Copyright (C) 1985 by Leslie Lamport, or otherwise indicated. +% 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. +% +% This is a document style option, for cammera-ready copy for the +% Frontiers '88 symposium (and other IEEE conferences???), to be +% used with the article document style and the proc document style option. +% Note that it is will only work if your device can actually produce 11x14 +% output (e.g. an Imagen 3320 with ledger-size paper), or if you convince +% your dvi driver to scale the output down (and then do an enlargement of +% the output to send in) -- this results in lower quality, of course. +% +% WARNING: The visual design of this style is rather poor. The conference +% specifications forced some of this, and as a result it didn't seem +% worth worrying about the rest. Be forewarned however. + +\typeout{Document Style Option 'Frontiers' -- released 27 September 1988} + +% **************************************** +% * KEYWORDS * +% **************************************** + +% \keywords{foo, bar, baz} should go at the end of the abstract + +\def\keywords#1{\begin{list}{}{\setlength{\leftmargin}{0pt}\setlength +{\rightmargin}{0pt}\setlength{\topsep}{\baselineskip}\setlength +{\partopsep}{0pt}}\item[]Keywords: #1\end{list}} + +% **************************************** +% * FOOTNOTES * +% **************************************** +\def\@fnsymbol#1{\ifcase#1\or *\or **\or +\or ++\else\@ctrerr\fi\relax} + +\def\thefootnote{\fnsymbol{footnote}} + +% **************************************** +% * SECTIONING * +% **************************************** +% Slight modification of the geophysics.sty file, +% 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. + +% Headings: +% for principal heading use \section +% for lower rank heading use \subsection +% for still lower rank heading use \subsubsection +\setcounter{secnumdepth}{0} + +% \section is tricky because we want to both support \section* and have +% the section title uppercased. +\def\section{\secdef\@sectionb\@sections} +\def\@sectionb[#1]#2{\@sections{#2}} +\def\@sections#1{\@startsection + {section}{1}{\z@}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus .2ex}{\Large +\bf}{\uppercase{#1}}} + +% the below is modeled on the above, plus the paragraph def from art10.doc +\def\subsubsection{\secdef\@subsubsectionb\@subsubsections} +\def\@subsubsectionb[#1]#2{\@subsubsections{#2}} +\def\@subsubsections#1{\@startsection + {subsubsection}{3}{\z@}{3.25ex plus 1ex minus .2ex}{-1sp}{\normalsize + \bf}{#1---}} + +% the below is less closely modeled on the geophysical stuff, plus art10.doc +\def\subsection{\secdef\@subsectionb\@subsections} +\def\@subsectionb[#1]#2{\@subsections{#2}} +\def\@subsections#1{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\large\bf}{#1}} + +% in case people nest more deeply than allowed --- perhaps should be error +\def\paragraph{\subsubsection} +\def\subparagraph{\subsubsection} + + +% **************************************** +% * PAGE LAYOUT * +% **************************************** +% +% All margin dimensions measured from a point one inch from top and side +% of page. Lamport claims that for some unspecified device(s) dimensions +% shrink by about 2 percent. + +% SIDE MARGINS: + \oddsidemargin 0pt % Note that \oddsidemargin = \evensidemargin + \evensidemargin 0pt + +% VERTICAL SPACING: + % Top of page: +\topmargin -48pt % Nominal distance from top of page to top of + % box containing running head. +\headheight 12pt % Height of box containing running head. +\headsep 36pt % Space between running head and text. +% \topskip = 10pt % '\baselineskip' for first line of page. + % Bottom of page: +\footheight 12pt % Height of box containing running foot. +\footskip 150pt % Distance from baseline of box containing foot + % to baseline of last line of text. + + +% DIMENSION OF TEXT: + +\textheight 11.55in % Height of text (including footnotes and figures, + % excluding running head and foot). +\textwidth 9in % Width of text line. + % For two-column mode: +\columnsep 1cm % Space between columns +\columnseprule 0pt % Width of rule between columns. + + + +% **************************************** +% * PAGE STYLES * +% **************************************** +% +% The page number is printed in the top center, in "n of m" form. + + +\def\@oddhead{\rm\hfil \thepage\ of \pageref{@last-page} \hfil} +\def\@evenhead{\@oddhead} +\def\@oddfoot{}\def\@evenfoot{\@oddfoot} + +% This is from latex.tex, except for-vvvvvvvvvvvvvvvvvv +\def\enddocument{\@checkend{document}\label{@last-page}\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} + +% **************************************** +% * TITLE * +% **************************************** +% +% This @maketitle is from proc.doc, except for the uppercasing +\def\@maketitle{\vbox to 2.25in{\hsize\textwidth + \linewidth\hsize \vfil \centering + {\LARGE \uppercase\expandafter{\@title} \par} % TITLE set in \LARGE size. + \vskip 2em % Vertical space after title. + {\large \begin{tabular}[t]{c}\@author \end{tabular}\par} + \vfil}} + +% **************************************** +% * BIBLIOGRAPHY * +% **************************************** +% Some fancy footwork to get Ref. vs. Refs. depending on how many citeations +\newif\if@multicitesw +\newif\if@multiciteauxsw + +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@multiciteswfalse\@multiciteauxswfalse\@for\@citeb:=#2\do +{\if@multiciteauxsw\@multiciteswtrue\fi\@multiciteauxswtrue}\@cite +{\@for\@citeb:=#2\do + {\@citea\def\@citea{, \penalty\@m}\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +\hbox{\csname b@\@citeb\endcsname}}}{#1}} + +\def\@cite#1#2{{(Ref\if@multicitesw s\fi.\ {#1\if@tempswa , #2\fi})}} + +% This is the stuff to change the reference list to 1. instead of [1]. +% Except for the relevant minor differences, it is straight from article.doc. +\def\@biblabel#1{#1.\hfill} + +\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} + +% **************************************** +% * CAPTIONS * +% **************************************** + +% This makes captions use a period rather than a colon. It is a minor +% change to code from article.doc. +\long\def\@makecaption#1#2{ + \vskip 10pt + \setbox\@tempboxa\hbox{#1. #2} + \ifdim \wd\@tempboxa >\hsize % IF longer than one line: + #1. #2\par % THEN set as ordinary paragraph. + \else % ELSE center. + \hbox to\hsize{\hfil\box\@tempboxa\hfil} + \fi} diff --git a/macros/latex209/contrib/misc/ftn.sty b/macros/latex209/contrib/misc/ftn.sty new file mode 100644 index 0000000000..dde117846c --- /dev/null +++ b/macros/latex209/contrib/misc/ftn.sty @@ -0,0 +1,46 @@ +% ftn.sty - footnotes inside tabular/array environments +% Kresten Krab Thorup <krab@iesd.auc.dk> 1991-06-25 + +\def\inner@ftn{% + \@ifnextchar[{\in@xftn}{\in@ftn{}}} + +\def\in@xftn[#1]#2{% + \in@ftn{[#1]}{#2}} + +\def\in@ftn#1#2{% + \@temptokena={\footnotetext#1{#2}}% + \@temptokenb=\expandafter{\ftn@list}% + \xdef\ftn@list{\the\@temptokenb\the\@temptokena}% + \footnotemark#1} + +\def\exec@ftn{% + \let\@temptokena=\ftn@list + \let\ftn@list=\empty + \@temptokena} + +\def\ftn#1{% + \expandafter\let\csname o@#1\expandafter\endcsname + \expandafter=\csname #1\endcsname + \expandafter\let\csname o@end#1\expandafter\endcsname + \expandafter=\csname end#1\endcsname + \expandafter\def\csname #1\endcsname{\bgroup + \let\footnote\inner@ftn\csname o@#1\endcsname} + \expandafter\def\csname end#1\endcsname{\csname o@end#1\endcsname + \exec@ftn\egroup}} + +% +% INITIALIZING +% + +\newtoks\@temptokenb +\def\ftn@list{} + +% add more to this list... + +\ftn{tabular} +\ftn{array} +\ftn{minipage} +\ftn{eqnarray} + + + diff --git a/macros/latex209/contrib/misc/fullpage.sty b/macros/latex209/contrib/misc/fullpage.sty new file mode 100644 index 0000000000..67824e30ae --- /dev/null +++ b/macros/latex209/contrib/misc/fullpage.sty @@ -0,0 +1,29 @@ +% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988. +% Document Style Option to fill the paper just like Plain TeX. + +\typeout{Style Option FULLPAGE Version 2 as of 15 Dec 1988} + +\topmargin 0pt +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep + +\textheight 8.9in + +\oddsidemargin 0pt +\evensidemargin \oddsidemargin +\marginparwidth 0.5in + +\textwidth 6.5in + + +% For users of A4 paper: The above values are suited for american 8.5x11in +% paper. If your output driver performs a conversion for A4 paper, keep +% those values. If your output driver conforms to the TeX standard (1in/1in), +% then you should add the following commands to center the text on A4 paper: + +% \advance\hoffset by -3mm % A4 is narrower. +% \advance\voffset by 8mm % A4 is taller. + +\endinput + + diff --git a/macros/latex209/contrib/misc/gart11.sty b/macros/latex209/contrib/misc/gart11.sty new file mode 100644 index 0000000000..953657f594 --- /dev/null +++ b/macros/latex209/contrib/misc/gart11.sty @@ -0,0 +1,109 @@ +% This is ART11.STY in text format, as of May 5, 1986. +% art11.sty 23 Sep 85 +\lineskip 1pt \normallineskip 1pt +\def\baselinestretch{1} + +\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt +\abovedisplayskip 11pt plus3pt minus6pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt +minus3pt} +\def\small{\@setsize\small{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\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt +\abovedisplayskip 8pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 4pt plus 2pt minus +2pt +\def\@listi{\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt +\itemsep \parsep}} +\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt} +\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt} +\def\large{\@setsize\large{14pt}\xiipt\@xiipt} +\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} +\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt} +\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} +\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} +\normalsize + +\if@twoside \oddsidemargin 14pt \evensidemargin 14pt \marginparwidth 0pt +\else \oddsidemargin 14pt \evensidemargin 14pt + \marginparwidth 0pt +\fi +\marginparsep 0pt + \topmargin -28pt +\headheight 25pt \headsep 25pt \footheight 12pt \footskip 30pt + +\textheight 640pt \textwidth 425pt \columnsep 10pt \columnseprule 0pt + +\footnotesep 7.7pt +\skip\footins 10pt 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 9pt plus 1pt minus 1pt \parindent 0pt \topsep 0pt +\partopsep 0pt \itemsep 0pt +\@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 Teil \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 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 4.5pt plus 2pt minus 1pt +\def\@listi{\leftmargin\leftmargini} +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep 4.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/macros/latex209/contrib/misc/garticle.sty b/macros/latex209/contrib/misc/garticle.sty new file mode 100644 index 0000000000..ac03cc3f50 --- /dev/null +++ b/macros/latex209/contrib/misc/garticle.sty @@ -0,0 +1,233 @@ +% This is GARTICLE.STY in text format, as of June 8, 1987 (PA, TU Wien) +% garticle.sty 5 Sep 8 +\typeout{Document Style `garticle'. Version vom 8. Juni 1987} + +\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 gart1\@ptsize.sty\relax + + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\Alph{enumiv}.} +\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*{Inhalt\markboth{INHALT}{INHALT}} + \@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 #1\hfil \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*{Abbildungsverzeichnis\markboth + {ABBILDUNGSVERZEICHNIS}{ABBILDUNGSVERZEICHNIS}}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +\def\listoftables{\section*{Tabellenverzeichnis\markboth + {TABELLENVERZEICHNIS}{TABELLENVERZEICHNIS}}\@starttoc{lot}} +\let\l@table\l@figure + + +\def\thebibliography#1{\section*{Literatur\markboth + {LITERATUR}{LITERATUR}}\list + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus -.07em} + \sloppy + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + +\newif\if@restonecol +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{Index}] + \markboth{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 \unhbox\@tempboxa\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{Abbildung \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{Tabelle \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*{Zusammenfassung} +\else \small +\begin{center} +{\bf Zusammenfassung\vspace{-.5em}\vspace{0pt}} +\end{center} +\quotation +\fi} +\def\endabstract{\if@twocolumn\else\endquotation\fi} + +\mark{{}{}} + +\if@twoside \def\ps@headings{\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{\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{\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{\number\day . \ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi + \space\number\year} + +\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi diff --git a/macros/latex209/contrib/misc/geophysics.sty b/macros/latex209/contrib/misc/geophysics.sty new file mode 100644 index 0000000000..21c39d887a --- /dev/null +++ b/macros/latex209/contrib/misc/geophysics.sty @@ -0,0 +1,105 @@ +% geophysics.sty +% For Geophysics, a publication of the Society of Exploration Geophysicists. +% +% This style option is designed to work with the article document +% style of LaTeX version 2.09. Use +% \documentstyle[geophysics]{article} +% +% The rules here are from "Instructions to authors" Geophysics January 1986. + +% 15 Jan 87 + +% 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 + + +\oddsidemargin=.25in +\topmargin=0in +\textwidth=6in + +% set \textheight to about 8in. Must be multiple of \baselineskip. +\ifcase \@ptsize + % 10 pt (\baselineskip=12pt) + \textheight=576pt +\or % 11 pt (\baselineskip=13.6pt) + \textheight=584.8pt +\or % 12 pt (\baselineskip=15pt) + \textheight=585pt +\fi + +%everything is to be double spaced, and 1.5 looks double spaced. +\def\baselinestretch{1.5} + +\parindent=1em +\parskip=0in + +\def\fnum@figure{{\sc Fig.}\ \thefigure} + +% Use period instead of colon +\long\def\@makecaption#1#2{ + \vskip 10pt + \setbox\@tempboxa\hbox{#1.\ #2} + \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi} + +\def\thebibliography#1{\section*{References\markboth + {REFERENCES}{REFERENCES}}\list + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}\@bibsetup} + \def\newblock{\hskip .11em plus .33em minus -.07em} + \sloppy + \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 reference by using negative \itemindent. +\def\@bibsetup{\itemindent=-\leftmargin} + +% 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} + +% Headings: +% for principal heading use \section +% for lower rank heading use \subsection +% for still lower rank heading use \subsubsection +\setcounter{secnumdepth}{0} + +% \section is tricky because we want to both support \section* and have +% the section title uppercased. +\def\section{\secdef\@sectionb\@sections} +\def\@sectionb[#1]#2{\@sections{#2}} +\def\@sections#1{\@startsection + {section}{1}{\z@}{14pt}{14pt}{\centering\bf}{\uppercase{#1}}} +\def\subsection{\@startsection {subsection}{2}{\z@}{14pt}{14pt}{\bf}} +\def\subsubsection#1{\par\addvspace{14pt}{\bf #1.---\/}\ignorespaces} + +\def\acknowledgments{\section{Acknowledgments}} diff --git a/macros/latex209/contrib/misc/hackalloc.sty b/macros/latex209/contrib/misc/hackalloc.sty new file mode 100644 index 0000000000..9c26b42d64 --- /dev/null +++ b/macros/latex209/contrib/misc/hackalloc.sty @@ -0,0 +1,17 @@ +% -*-LaTeX-*- +% hackalloc.sty: make allocation local for LaTeX. +% This redefines the allocation primitive so _all_ allocation becomes +% block-local after this is loaded; no idea what the side-effects of this +% may be. If it breaks, change \alloc@ to \localloc@, and either redefine +% just what you need to use \alloc@, or define \locnew* for local +% allocation, as in the commented lines. +% NOTE: lying again... this doesn't work for inserts which are still +% global. + +%\def\locnewdimen{\localloc@1\dimen\dimendef\insc@unt} +%\def\localloc@#1#2#3#4#5{\advance\count1#1 by 1 +\def\alloc@#1#2#3#4#5{\advance\count1#1 by 1 + \ch@ck#1#4#2% Check room + \allocationnumber=\count1#1 + #3#5=\allocationnumber + \wlog{Locally \string#5=\string#2\the\allocationnumber}} diff --git a/macros/latex209/contrib/misc/hackarray.sty b/macros/latex209/contrib/misc/hackarray.sty new file mode 100644 index 0000000000..9dad530466 --- /dev/null +++ b/macros/latex209/contrib/misc/hackarray.sty @@ -0,0 +1,64 @@ +%From: bjnw@castle.ed.ac.uk (Brian Wylie) +%Subject: \bbegin{eqnarray}{rllccl} +%Keywords: equation+array != eqnarray + +%I've been looking for a successor to the LaTeX eqnarray environment +%which allowed more control over the format and number of "columns", as +%one might naturally expect to be specified by + +% \begin{eqnarray}{rlc|cl} +% right & left & centre & vline & centre & left \label{eqn2a} \\ +% right & left & centre & vline & centre & left \label{eqn2b} +% \end{eqnarray} + +%Having scoured Clarkson, etc, and failing to come find anything hopeful +%I've finally plucked up the courage to have a go at it and see what I +%could come up with (I don't really know any TeX but it tends to frighten +%me when I look through latex.tex :-). + +%I've been pfaffing with it for a bit and haven't really managed to get +%it completely together. I've included a copy of my attempts for your +%perusal, and hope that you don't die laughing at the horrible nastiness +%of this total abortion. + +%=========================>8 hackarray.sty 8<============================ +% hackarray.sty +% +% Bastard offspring of the eqnarray and tabular environments +% +% (Only tested with fleqn.sty, probably won't work with anything else) + +\newlength{\tmp} +\setlength{\tmp}{\textwidth} +\addtolength{\tmp}{-\mathindent} + +\newcommand{\num}{\stepcounter{equation}\makeatletter +\let\@currentlabel=\theequation{\rm (\theequation)}} + +\newenvironment{hackarray}[1]{\begin{displaymath}% +\begin{tabular*}{\tmp}{#1@{\extracolsep{\fill}}l@{\protect\num}}}% +{\end{tabular*}\end{displaymath}} + +% Use like a tabular environment BUT include an extra column of &'s at end +% (which aren't specified in the column format) or put a label there. +% Also remember that all text is formatted in text mode NOT math mode ! +% e.g. +% \begin{hackarray}{rlc|cl} +% right & left & centre & vline & centre & left & \label{} \\ +% right & left & centre & vline & centre & left & +% \end{hackarray} +\endinput +=========================>8 hackarray.sty 8<============================ + +I realise that as a "eqnarray" substitute it's a bit lame to have each +array element formatted in text mode (rather than math mode), however, +for my immediate needs this wasn't a serious problem (most of it wasn't +maths anyway) while there were other more worrying problems (like the +need for the trailing null column). + +As you see, it has a few problems. These may be fixable, but I think +I've done as much as I can. Any suggestions greatly appreciated, +including any pointers to code which does things properly. + + Slainte, "Since parallel programming tools exist, + Brian. MIMD machines are easy to use". -- Meiko 04/90 diff --git a/macros/latex209/contrib/misc/hangcaption.sty b/macros/latex209/contrib/misc/hangcaption.sty new file mode 100644 index 0000000000..6a7e3fb5b6 --- /dev/null +++ b/macros/latex209/contrib/misc/hangcaption.sty @@ -0,0 +1,113 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% filename = "hangcaption.sty", +%%% version = "2.00", +%%% date = "27 August 1992", +%%% time = "22:23:46 EDT", +%%% author = "David M. Jones", +%%% 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 = "57880 113 520 5319", +%%% email = "dmjones@theory.lcs.mit.edu", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, caption", +%%% supported = "no", +%%% abstract = "Defines a variant of the caption command to +%%% produce captions with hanging +%%% indentation.", +%%% docstring = "This is the debugged version of a modified +%%% caption macro, \hangcaption, to produce +%%% captions with hanging indentation, like +%%% this: +%%% +%%% Figure 1.1: XXXXX XXX XXXX XXXX XXX +%%% XXX XXX XXX XXX XX XXX +%%% +%%% The length variable \captionwidth controls +%%% how the caption is typeset. If the width +%%% of the caption is less than \captionwidth, +%%% the \hangcaption is typeset the same way a +%%% short \caption would be (usually centered). +%%% Otherwise, it is set as shown above, with a +%%% total width equal to \captionwidth. +%%% \captionwidth is set to \hsize normally, +%%% but you may want to change it temporarily +%%% to match the width of a \tabular* +%%% environment, for example. +%%% +%%% \hangcaption is used in the same way as +%%% \caption. To retain compatibility with +%%% previous versions of this style, the +%%% \hangcaption is also available under the +%%% name \isucaption. +%%% +%%% I did not write this file. The original +%%% author is unknown. However, I did fix a bug, +%%% namely, I removed a superflous "^^" that was +%%% causing one of the close braces to be +%%% interpreted as an equals sign, thus messing +%%% up the brace balancing. I also tacked an +%%% "\endinput" on to the end of the file and +%%% added this header, and incorporated a few +%%% changes suggested by Harm Bakker, George +%%% Greenwade, and Rainer Schoepf. +%%% +%%% v2.00 (27 Aug 1992): altered \numberline to +%%% use \the... instead of \fnum@... (fix due to +%%% Harm Bakker <bakker@cs.rulimburg.nl>). +%%% Changed \isucaption to \hangcaption at George +%%% Greenwade's <bed_gdg@SHSU.edu> suggestion. +%%% +%%% v1.03 (12 August 1992): minor changes to +%%% header. +%%% +%%% v1.02 (12 August 1992): patches by Rainer +%%% Schoepf <schoepf@sc.ZIB-Berlin.DE> to (a) +%%% work around a bug in LaTeX and (b) measure +%%% the caption correctly by including room for +%%% the colon and the space. +%%% +%%% 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.", +%%% } +%%% ==================================================================== + +\newlength\captionwidth \captionwidth=\hsize + +\def\hangcaption{\refstepcounter\@captype\@dblarg{\@hangcaption\@captype}} + +\long\def\@hangcaption#1[#2]#3{% + \baselineskip 14.5\p@ + \addcontentsline{\csname ext@#1\endcsname}{#1}% + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% + \par + \begingroup + \@parboxrestore + \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname: #3}% + \ifdim \wd\@tempboxa > \captionwidth + \begingroup + \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname: }% + \advance \captionwidth by -\wd\@tempboxa + \@makecaption{\csname fnum@#1\endcsname}% + {\ignorespaces{\protect\parbox[t]{\captionwidth}{\leavevmode#3}}}% + \endgroup + \else + \begingroup + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}% + \endgroup + \fi + \par\vspace{1.7ex}% + \endgroup} + +\let\isucaption\hangcaption + +\endinput diff --git a/macros/latex209/contrib/misc/headerfooter.sty b/macros/latex209/contrib/misc/headerfooter.sty new file mode 100644 index 0000000000..9ddac2cc6e --- /dev/null +++ b/macros/latex209/contrib/misc/headerfooter.sty @@ -0,0 +1,75 @@ +% headerfooter.sty 13 Apr 89 + +% Use with LaTeX version 2.09: +% \documentstyle[headerfooter]{article} + +% 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 + +% \pageheader{LEFT}{CENTER}{RIGHT} +% \pagefooter{LEFT}{CENTER}{RIGHT} + +% There is no reason why these commands should not be available +% to the user. Of course, I did fancy up the interface a bit. +% By mit-erl!gildea 11 October 1986 +% minor changes 14 Oct 87 gildea +% added \pageheaderlinetrue feature 9 Dec 88 gildea +% added \pagefooterlinetrue feature 13 Apr 89 gildea + +% All of these commands take three arguments, which are printed at +% the left, center, and right of each page. All three args must be +% provided even if some of them are empty. The odd and even +% variations are only useful if you are using the twoside option. + +% Example: \pagefooter{}{\thepage}{} + +% Say \pageheaderlinetrue if you want the header underlined. +% Say \pagefooterlinetrue if you want a rule above the footer. + +\newif\ifpageheaderline \pageheaderlinefalse +\newif\ifpagefooterline \pagefooterlinefalse + +\newdimen\pageheaderlineskip \pageheaderlineskip=1.5pt + +\newdimen\pagefooterlineskip \pagefooterlineskip=\pageheaderlineskip + +\def\@headerline#1#2#3{% + \ifpageheaderline + \vbox{\hbox to \textwidth{\rlap{#1}\hss{#2}\hss\llap{#3}}% + \vskip\pageheaderlineskip \hrule}% + \else{\rlap{#1}\hss{#2}\hss\llap{#3}}\fi} + +\def\@footerline#1#2#3{% + \ifpagefooterline + \vbox{\hrule \vskip\pagefooterlineskip + \hbox to \textwidth{\rlap{#1}\hss{#2}\hss\llap{#3}}}% + \else{\rlap{#1}\hss{#2}\hss\llap{#3}}\fi} + +\newcommand\oddpageheader[3]{\def\@oddhead{\@headerline{#1}{#2}{#3}}} + +\newcommand\evenpageheader[3]{\def\@evenhead{\@headerline{#1}{#2}{#3}}} + +\newcommand\oddpagefooter[3]{\def\@oddfoot{\@footerline{#1}{#2}{#3}}} + +\newcommand\evenpagefooter[3]{\def\@evenfoot{\@footerline{#1}{#2}{#3}}} + +\newcommand\pageheader[3]{% + \oddpageheader{#1}{#2}{#3}\evenpageheader{#1}{#2}{#3}} + +\newcommand\pagefooter[3]{% + \oddpagefooter{#1}{#2}{#3}\evenpagefooter{#1}{#2}{#3}} diff --git a/macros/latex209/contrib/misc/hex.sty b/macros/latex209/contrib/misc/hex.sty new file mode 100644 index 0000000000..123507c4cd --- /dev/null +++ b/macros/latex209/contrib/misc/hex.sty @@ -0,0 +1,31 @@ +%% Save file as: HEX.STY Source: FILESERV@SHSU.BITNET +%% From: domen@euler.crin.fr (Eric Domenjoud) +%% Date: 7 Oct 91 14:07:20 GMT +%% Organization: CRIN, Nancy, France + +%% \documentstyle[....,hex,....]{......} +%% +%% \hex{ctr} gives then the value of ctr in hexadecimal. If you want lowercase +%% letters, just change A,B,C,D,E,F to lowercase in the definition below. + +%------------------------------------------------------- + +\newcount\@decnum +\newcount\@digit +\def\@hex#1{{\@decnum=#1 + \ifnum\@decnum>15 + \@digit=\@decnum + \divide\@decnum 16 + \@hex\@decnum + \multiply\@decnum -16 + \advance\@decnum\@digit + \fi + \ifnum\@decnum=10 A\else + \ifnum\@decnum=11 B\else + \ifnum\@decnum=12 C\else + \ifnum\@decnum=13 D\else + \ifnum\@decnum=14 E\else + \ifnum\@decnum=15 F\else + \number\@decnum\fi\fi\fi\fi\fi\fi}} + +\def\hex#1{\@hex{\nameuse{c@#1}}} diff --git a/macros/latex209/contrib/misc/hndout.sty b/macros/latex209/contrib/misc/hndout.sty new file mode 100644 index 0000000000..fed2d72235 --- /dev/null +++ b/macros/latex209/contrib/misc/hndout.sty @@ -0,0 +1,75 @@ +% Plymouth Polytechnic Computing Service - HANDOUT Document style +% Jon Warbrick January 1988 + +% Copyright (C) Jon Warbrick and Plymouth Polytechnic 1989 +% Permission is granted to reproduce the document in any way providing +% that it is distributed for free, except for any reasonable charges for +% printing, distribution, staff time, etc. Direct commercial +% exploitation is not permitted. Extracts may be made from this +% document providing an acknolwledgment of the original source is +% maintained. + +% This option re-defines the \maketitle command to generate a standard +% Computing Service handout banner. It currently only works for an +% 11pt article (though I may fix it oneday) + +% Just modify the textwidth a bit to center the text on the page + +\setlength{\textwidth}{6.5in} +\setlength{\oddsidemargin}{0in} +\setlength{\evensidemargin}{0in} + +% The title is made up of information supplied by the \title, \author +% and \date commands, along with an extra command \docnumber. The +% date defaults to the current month and year. + +\def\docnumber#1{\gdef\@docnumber{#1}} +\gdef\@docnumber{X99.99--999} +\gdef\@title{There and Back Again} +\gdef\@author{Bilbo Baggins} +\def\@date{\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\year} + +% Commented maketitle to avoid use of postscript printer Yin Kean. +% \def\maketitle{ +% \begin{picture}(0,100)(55,-8) +% \put(0,36){\framebox(214,84){Computing Service Logo}} % dummy logo +% \put(0,120){\special{include TeX>inputs>hologo.ps}} +% \put(234,112){\parbox[t]{234pt}{\centering\Large\bf\@title}} +% \put(234,60){\parbox[t]{234pt}{\centering +% \@docnumber \\\relax \@date \\[1em] \@author}} +% \put(0,0){\line(1,0){468}} +% \end{picture} +% \let\maketitle\relax +% \gdef\@author{}\gdef\@title{}\gdef\@docnumber{}\gdef\@date{} +% } + +% Technical documents don't look very good with indented paragraphs, +% so set parindent to zero, and increse parskip. To do this job properly, +% the space above and below all of the list making enviroments should be +% reduced by this ammount as well - again I may do this someday. + +\setlength{\parindent}{0pt} +\setlength{\parskip}{7pt plus 2pt minus 1pt} + +% Some extra help with including examples of computer input/output is rather +% handy. Here is a definition of the alltt enviroment (like verbatim, but +% still recognises \, { and }) and example (like alltt, but indented) + +\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 + +\newenvironment{example}% + {\nopagebreak[3]\begin{quote}\begin{alltt}}% + {\end{alltt}\end{quote}} + diff --git a/macros/latex209/contrib/misc/hvdashln.sty b/macros/latex209/contrib/misc/hvdashln.sty new file mode 100644 index 0000000000..33e1e8ba57 --- /dev/null +++ b/macros/latex209/contrib/misc/hvdashln.sty @@ -0,0 +1,50 @@ +% hvdashln.sty : h(orizontal and )v(ertical )dash(ed )l(i)n(e).sty +% Copyright (C) 1993, 1999 Hiroshi Nakashima +% (Kyoto Univ. / Toyohashi Univ. of Tech.) +% (nakasima@tutics.tut.ac.jp) +% +% This program can be redistributed and/or modified under the terms of the +% LaTeX Project Public License Distributed from CTAN archives in directory +% macros/latex/base/lppl.txt; either version 1 of the License, or any later +% version. +% +% \hdashline is a dashed counterpart of \hline and +% \vdashline is a dashed counterpart of \vline of LaTeX's "array" environment. +% +% The following parameters are available to control the shape of dashed lines. +% +% \hdashlinewidth : length of each dash segment +% \hdashlinegap : amout of each gap between dash segments +% +% Both parameters have a common default value, 4 pt, and thus the shape of a +% horizontal dashed line will be the following. +% +% 4pt +% |--- --- --- ---| +% 4pt +% +% NOTE: +% \vdashline will be broken if an array contains tall rows. This problem +% is fixed in the advanced style named "arydshln" written by the author, +% which also has new features such as allowing `:' to specify vertical +% dashed line in preamble and \cdashline being a counterpart of \cline. +% +\newcount\hdl@columns \let\hdl@mkpream\@mkpream +\def\@mkpream{\hdl@columns\@ne \hdl@mkpream} +\def\@addamp{\if@firstamp\@firstampfalse \else\edef\@preamble{\@preamble +&}\advance\hdl@columns\@ne\fi} +\def\hdashline{\multispan{\hdl@columns}\unskip +\vrule\@height\arrayrulewidth\@width\hdashlinewidth \hskip.5\hdashlinegap +\xleaders\hbox{\hskip.5\hdashlinegap +\vrule\@height\arrayrulewidth\@width\hdashlinewidth +\hskip.5\hdashlinegap}\hfill \hskip.5\hdashlinegap +\vrule\@height\arrayrulewidth\@width\hdashlinewidth\cr +\noalign{\vskip-\arrayrulewidth}} \newdimen\hdashlinewidth +\hdashlinewidth4pt % \newdimen\hdashlinegap \hdashlinegap4pt % +\def\vdashline{\hskip\arraycolsep \@tempdima\ht\@arstrutbox +\advance\@tempdima\dp\@arstrutbox \lower\dp\@arstrutbox\vbox to\@tempdima{ +\hrule\@height.5\hdashlinewidth\@width\arrayrulewidth \vskip.5\hdashlinegap +\xleaders\vbox{\vskip.5\hdashlinegap +\hrule\@height\hdashlinewidth\@width\arrayrulewidth +\vskip.5\hdashlinegap}\vfil \vskip.5\hdashlinegap +\hrule\@height.5\hdashlinewidth\@width\arrayrulewidth}% \hskip\arraycolsep} diff --git a/macros/latex209/contrib/misc/icassp.sty b/macros/latex209/contrib/misc/icassp.sty new file mode 100644 index 0000000000..f7d93513a3 --- /dev/null +++ b/macros/latex209/contrib/misc/icassp.sty @@ -0,0 +1,231 @@ +% ICASSP DOCUMENT STYLE -- released 15 December 1988 +% for LaTeX version 2.09 +% Copyright (C) 1988 bt John Vlontzos, except portions +% Copyright (C) 1988 by Max Hailperin, except portions +% Copyright (C) 1985 by Leslie Lamport, or otherwise indicated. +% Modified by John Vlontzos +% 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. +% +% This is a document style option, for cammera-ready copy for the +% ICASSP '89 conference (and other IEEE conferences???), to be +% used with the article document style and the proc document style option. +% +% WARNING: The visual design of this style is rather poor. The conference +% specifications forced some of this, and as a result it didn't seem +% worth worrying about the rest. Be forewarned however. + +\typeout{Document Style Option 'icassp' -- released 13 December 1988} +% ************************************************************************ +% BRIEF DESCRIPTION +% ************************************************************************ +% * This is a documentstyle that will print your paper +% in a form suitable for ICASSP or other IEEE conferences (hopefully) +% * Just take your {article} file and make a few changes detailed +% below +% * All columns set to 11truecm +% * The first two pages are 10in long and cover the first mat +% * The title is centered on a wide page so it should be printed in +% landscape mode +% * If there is only one author use the standard \author macro from {article} +% if there are 2 authors, use the new macro \authors described below +% * A macro for thanks is provided (\thanksu{thanks text}) +% * The second page MUST be identified by placing the macro \thisissecondpage +% anywhere in the second page +% * The second and subsequent mats are broken into 4 pages each 6.44in long +% * Section titles are centered, Capitalized and numbered +% (if you don't want numbering just set \secnumdepth{0}) +% * Sub(sub)sections are lowercase and boldface, flush left +% * Some notes are included in the macro definitions to make use more clear +% **************************************** +% * KEYWORDS * +% **************************************** + +% \keywords{foo, bar, baz} should go at the end of the abstract + +\def\keywords#1{\begin{list}{}{\setlength{\leftmargin}{0pt}\setlength +{\rightmargin}{0pt}\setlength{\topsep}{\baselineskip}\setlength +{\partopsep}{0pt}}\item[]Keywords: #1\end{list}} + + +% **************************************** +% * SECTIONING * +% **************************************** +% Slight modification of the geophysics.sty file, +% Copyright (c) 1987 by Stephen Gildea +% Slight modification of above by John Vlontzos +% 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. + +% Headings: +% for principal heading use \section +% for lower rank heading use \subsection +% for still lower rank heading use \subsubsection +\setcounter{secnumdepth}{3} +%If you don't want section numbers, set secnumdepth to 0 +% \section is tricky because we want to both support \section* and have +% the section title uppercased. +\def\section #1{\begin{center} \sectionc{#1} \end{center}} +\def\sectionc{\secdef\@sectionb\@sections} +\def\@sectionb[#1]#2{\@sections{#2}} +\def\@sections#1{\@startsection + {section}{1}{\z@}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus .2ex}{\large + \bf}{\uppercase{#1}}} + +% the below is modeled on the above, plus the paragraph def from art10.doc +\def\subsubsection{\secdef\@subsubsectionb\@subsubsections} +\def\@subsubsectionb[#1]#2{\@subsubsections{#2}} +\def\@subsubsections#1{\@startsection + {subsubsection}{3}{\z@}{3.25ex plus 1ex minus .2ex}{-1sp}{\normalsize + \bf}{#1---}} + +% the below is less closely modeled on the geophysical stuff, plus art10.doc +\def\subsection{\secdef\@subsectionb\@subsections} +\def\@subsectionb[#1]#2{\@subsections{#2}} +\def\@subsections#1{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\large\bf}{#1}} + +% in case people nest more deeply than allowed --- perhaps should be error +\def\paragraph{\subsubsection} +\def\subparagraph{\subsubsection} + +% ************************************************* +% Abstract definition (centered and capitalized) +% dont forget to \begin{abstract}...\end{abstract} +% ************************************************* + +\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\vspace{.1truein}} +% **************************************** +% * PAGE LAYOUT * +% **************************************** +% +% All margin dimensions measured from a point one inch from top and side +% of page. Lamport claims that for some unspecified device(s) dimensions +% shrink by about 2 percent. + +% SIDE MARGINS: + \oddsidemargin 0pt % Note that \oddsidemargin = \evensidemargin + \evensidemargin 0pt + +% VERTICAL SPACING: + % Top of page: +\topmargin -48truept % Nominal distance from top of page to top of + % box containing running head. +\headheight 0truept % Height of box containing running head. +\headsep 10truept % Space between running head and text. +% \topskip = 10pt % '\baselineskip' for first line of page. + % Bottom of page: +\footheight 0pt % Height of box containing running foot. +\footskip 300pt % Distance from baseline of box containing foot + % to baseline of last line of text. + + +% DIMENSION OF TEXT: +\textheight 10truein % Height of text (including footnotes and figures, + % excluding running head and foot). +\textwidth 10.5truecm % Width of text line. + % For two-column mode: +\columnsep .92truecm % Space between columns +\columnseprule 0truept % Width of rule between columns. + + +% **************************************** +% * PAGE STYLES * +% **************************************** +% +% The page number is printed in the top center, in "n of m" form. + + +\def\@oddhead{\rm\hfil \thepage\ of \pageref{@last-page} \hfil} +\def\@evenhead{\@oddhead} +\def\@oddfoot{}\def\@evenfoot{\@oddfoot} + +% This is from latex.tex, except for-vvvvvvvvvvvvvvvvvv +\def\enddocument{\@checkend{document}\label{@last-page}\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} +% **************************************** +% * TITLE * +% **************************************** +% +% This @maketitle is from proc.doc, except for the uppercasing +% **************************************** +%AUTHORS is a macro for more than one authors +% used as \authors {name 1\\ dept1 \\ univ1}{name 2 \\ dept2 \\ univ2} +% *************************************** +\def\authors#1#2{\hbox to \hsize{\@tablebox{#1}\hfil\@tablebox{#2}}} + +\def\@tablebox#1{\begin{tabular}[t]{@{}l@{}}#1\end{tabular}} +% ************************************** +%THANKSU is a macro that replacing \thanks. +%It permits placing of the \thanks in ANY page +%useful when the first printed page is smaller than the mat provided. +% just define your footnote using \thanksu and then place it +% in the appropriate page by using \putthanks anywhere in the page. +% **************************************** +\def\thanksu #1{\textwidth 11truecm \newsavebox{\thankw}\savebox + {\thankw}[11cm]{\parbox{10.5truecm}{#1}}} +\def\putthanks{\footnotetext{\leftskip=-25truept \rightskip=25truept + \usebox{\thankw}\par}} +\def\@maketitle{\textwidth 32.8truecm \vbox to 5.9cm{\hsize\textwidth + \linewidth\hsize \vfil \centering {\Large \bf \uppercase + \expandafter{\@title} \par} % TITLE set in \Large size. + \vskip .4cm % Vertical space after title. + {\large \begin{tabular}[t]{c}\@author \end{tabular}\par} + \vfil}\newpage\textwidth 11truecm} +% **************************************** +% Since the first two pages can be printed in a way that +% covers the whole mat, mark the second page by +% placing \thisissecondpage ANYWHERE in the second page +% *************************************** +\def\thisissecondpage{\textheight 6.44truein} +% **************************************** +% * CAPTIONS * +% **************************************** + +% This makes captions use a period rather than a colon. It is a minor +% change to code from article.doc. +\long\def\@makecaption#1#2{ + \vskip 10pt + \setbox\@tempboxa\hbox{#1. #2} + \ifdim \wd\@tempboxa >\textwidth % IF longer than one line: + #1. #2\par % THEN set as ordinary paragraph. + \else % ELSE center. + \hbox to\textwidth{\hfil\box\@tempboxa\hfil} + \fi} +% ***************************************** +% the following macro produces the references heading in capitals +% and without a section number +% ***************************************** +\def\thebibliography#1{\setcounter{secnumdepth}{0}\sectionc*{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 + \sfcode`\.=1000\relax} diff --git a/macros/latex209/contrib/misc/ieeconf.sty b/macros/latex209/contrib/misc/ieeconf.sty new file mode 100644 index 0000000000..4e6500e027 --- /dev/null +++ b/macros/latex209/contrib/misc/ieeconf.sty @@ -0,0 +1,102 @@ +% -------------------------------------------------------------------------- +% I E E C O N F -- style option for IEE Conference proceedings +% -------------------------------------------------------------------------- +% Version 1.00--0 Adrian F Clark <alien@uk.ac.essex> 20-Aug-1991 +% -------------------------------------------------------------------------- + +\typeout{IEE Conference Proceedings style v1.00--0 20-Aug-1991} + + +% Page dimensions. + +\@twosidetrue % two-sided document +\twocolumn % two columns of type +\sloppy % make those columns justify +\columnsep 11mm % space between columns +\columnwidth 80mm % width of each column +\parindent 15pt % paragraph indent +\parskip 10pt plus 1pt minus 1pt % paragraph skip +\baselineskip 11pt plus 0.1pt minus 0.1pt % baseline skip + +\textheight 254mm % height of text on a page +\textwidth 171mm % total width of a page +\oddsidemargin -5mm % shift the page leftwards +\evensidemargin -5mm % shift the page leftwards +\topmargin -2mm % shift the page upwards +\headheight 0pt % no running heads... +\headsep 0pt % ...so no separation from text +\marginparwidth 48pt % don't use marginal notes... +\marginparsep 10pt % ...in conference proceedings + + +% Additional macro, to output the authors' affiliation. Make it +% default to Essex (since that's where I am!). + +\def\affiliation#1{\def\@affiliation{#1}} +\def\@affiliation{University of Essex, UK} + + +% Macro for outputting the title of the paper, resetting macros and +% counters, etc. + +\def\maketitle{\par + \begingroup + \def\thefootnote{\fnsymbol{footnote}} + \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} + \twocolumn[\@maketitle] + \@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\relax + \gdef\@affiliation{}\let\thanks\relax} + + +% Output the actual title, author and affiliation according to the IEE +% guidelines. + +\def\@maketitle{\vbox to 44mm{\hsize\textwidth + \linewidth\hsize \vfil \raggedright + {\large \uppercase\expandafter{\@title} \par} + \vskip -\parskip\vskip 6mm\relax + \noindent\@author\par + \vskip -\parskip\vskip 9mm\relax + \noindent\@affiliation\par + \vskip -\parskip\vskip 15mm\relax}} + + +% Miscellania + +\def\copyrightspace{\footnotetext[0]{\mbox{}\vrule height 97pt width 0pt}} + +\def\abstract{\section*{Abstract}} +\def\endabstract{\par} + +\pagestyle{empty} % no page numbers + + +% Sectioning macros, since the default ones are too big for this page +% layout (we also ensure they're set ragged-right). +% These are modified from the definitions in art10.sty. + +% (Arguments to \@startsection: name level indent beforeskip afterskip +% style.) + +\def\section{\@startsection {section}{1}{\z@}{-1.5ex plus -.5ex minus + -.2ex}{1ex plus .1ex}{\large\bf\raggedright}} + +\def\subsection{\@startsection{subsection}{2}{\z@}{-1.25ex plus -.5ex minus + -.2ex}{0.8ex plus .1ex}{\normalsize\bf\raggedright}} + +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.25ex plus + -.5ex minus -.2ex}{0.8ex plus .1ex}{\normalsize\bf\raggedright}} + +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{1.25ex plus .5ex minus + .2ex}{-1em}{\normalsize\bf\raggedright}} + +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{1.25ex plus .5ex minus + .2ex}{-1em}{\normalsize\bf\raggedright}} + +% End of ieeconf.sty. diff --git a/macros/latex209/contrib/misc/ieeeconf.sty b/macros/latex209/contrib/misc/ieeeconf.sty new file mode 100644 index 0000000000..71425fb62a --- /dev/null +++ b/macros/latex209/contrib/misc/ieeeconf.sty @@ -0,0 +1,56 @@ +% ---------------------------------------------------------------------- +% I E E E C O N F -- style option for IEEE Conferences, including the +% International Conferences on Pattern Recognition +% ---------------------------------------------------------------------- +% Based on the template produced by Matthew Ward of Worcester +% Polytechnic Institute. +% Version 1.00--0 Adrian F. Clark <alien@essex.ac.uk> 17-Apr-1992 +% ---------------------------------------------------------------------- + +\typeout{IEEE Conference Proceedings style v1.00--0 17-Apr-1992} + + +% ---------------------------------------------------------------------- +% Other style files. +% ---------------------------------------------------------------------- + +\input twocolumn.sty + +% ---------------------------------------------------------------------- +% Page dimensions. +% ---------------------------------------------------------------------- + +\setlength{\textheight}{8.75in} +\setlength{\columnsep}{2.0pc} +\setlength{\textwidth}{6.8in} +\setlength{\footheight}{0pt} +\setlength{\topmargin}{0.25in} +\setlength{\headheight}{0pt} +\setlength{\headsep}{0pt} +\setlength{\oddsidemargin}{-.19in} +\setlength{\parindent}{1pc} + +% ---------------------------------------------------------------------- +% Fiddle about with the appearence of the page, etc. +% ---------------------------------------------------------------------- + +\pagestyle{empty} + +\def\title#1{\gdef\@title{\Large\bf#1}} +\date{} +\def\abstract{\thispagestyle{empty}\relax + \subsection*{\centering Abstract}\bgroup\em} +\def\endabstract{\egroup} + +\def\subsize{\@setsize\subsize{12pt}\xipt\@xipt} + +\def\section{\@startsection{section}{1}{\z@}{2ex plus 1ex minus + .2ex}{1ex plus .2ex}{\large\bf}} + +\def\subsection{\@startsection{subsection}{2}{\z@}{1ex plus 1ex} + {.2ex plus .2ex}{\subsize\bf}} + +% ---------------------------------------------------------------------- +% End of ieeeconf.sty. +% ---------------------------------------------------------------------- + diff --git a/macros/latex209/contrib/misc/ifthen-addi.sty b/macros/latex209/contrib/misc/ifthen-addi.sty new file mode 100644 index 0000000000..c7092375a3 --- /dev/null +++ b/macros/latex209/contrib/misc/ifthen-addi.sty @@ -0,0 +1,22 @@ +% +% small extension for ifthen style -- TeX \newif's +% +% e.g., \ifthen{\boolean{@twoside}}{}{} +% +\def\boolean#1{1=1\fi\noexpand\csname if#1\endcsname\def\noexpand\@tempa{1=1}% +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} +% +% +% +% \ifthenelse{\dimenequal{10pt}{20pt}}{}{} like #1 = #2 +% \ifthenelse{\dimenless{10pt}{20pt}}{}{} like #1 < #2 +% \ifthenelse{\dimengreater{10pt}{20pt}}{}{} like #1 > #2 +% +\def\dimenequal#1#2{1=1\fi\noexpand\ifdim #1=#2 \def\noexpand\@tempa{1=1} +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} +% +\def\dimenless#1#2{1=1\fi\noexpand\ifdim #1<#2 \def\noexpand\@tempa{1=1} +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} +% +\def\dimengreater#1#2{1=1\fi\noexpand\ifdim #1>#2 \def\noexpand\@tempa{1=1} +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} diff --git a/macros/latex209/contrib/misc/ifthenpl.sty b/macros/latex209/contrib/misc/ifthenpl.sty new file mode 100644 index 0000000000..c7092375a3 --- /dev/null +++ b/macros/latex209/contrib/misc/ifthenpl.sty @@ -0,0 +1,22 @@ +% +% small extension for ifthen style -- TeX \newif's +% +% e.g., \ifthen{\boolean{@twoside}}{}{} +% +\def\boolean#1{1=1\fi\noexpand\csname if#1\endcsname\def\noexpand\@tempa{1=1}% +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} +% +% +% +% \ifthenelse{\dimenequal{10pt}{20pt}}{}{} like #1 = #2 +% \ifthenelse{\dimenless{10pt}{20pt}}{}{} like #1 < #2 +% \ifthenelse{\dimengreater{10pt}{20pt}}{}{} like #1 > #2 +% +\def\dimenequal#1#2{1=1\fi\noexpand\ifdim #1=#2 \def\noexpand\@tempa{1=1} +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} +% +\def\dimenless#1#2{1=1\fi\noexpand\ifdim #1<#2 \def\noexpand\@tempa{1=1} +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} +% +\def\dimengreater#1#2{1=1\fi\noexpand\ifdim #1>#2 \def\noexpand\@tempa{1=1} +\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa} diff --git a/macros/latex209/contrib/misc/indent.sty b/macros/latex209/contrib/misc/indent.sty new file mode 100644 index 0000000000..02d8650f4d --- /dev/null +++ b/macros/latex209/contrib/misc/indent.sty @@ -0,0 +1,120 @@ +%%% Save file as: INDENT.STY Source: FILESERV@SHSU.BITNET +%%% The following checksum includes all SHSU-generated topmatter. +%%% checksum = "65425 120 759 5150" +% +% \subsection{Environments for Indented Text} +% +% \DescribeEnv{indentation} +% The indentation environment allows us to temporarily reset the margins. +% This environment takes two arguments, which are the left and right indents. +% Usually either both will be the same (for a centered indent) or else +% the right indent will be 0pt (for left indent only). +% +% Examples: +% +% \begin{verbatim} +% \begin{indentation}{1.5em}{1.5em} +% This text will be set in a justified paragraph with narrower +% margins than usual. The paragraph will be indented 1.5em on +% each side from the surrounding margins. +% \end{indentation} +% +% \begin{indentation}{.5in}{0pt} +% This text will be set in a justified paragraph indented at +% the left but not the right. +% \end{indentation} +% +% +% \begin{indentation}{1.5em}{1.5em} +% This text will be indented. +% \begin{indentation}{1.5em}{1.5em} +% The indentation environment can be nested, giving indents +% within indents, so this text will be indented some more. +% \end{indentation} +% Now we return to the first indentation level. +% \end{indentation} +% \end{verbatim} +% +% The method of margin-changing implemented here is identical to that +% used by \LaTeX's "list" environment. Indeed, this code was written +% by making a copy of the "list" environment's code, studying it closely, +% and carefully paring out everything that didn't relate to setting margins. +% This means that if another +% environment (such as "center" or "quote") that uses the "list" environment +% is nested inside the "indentation" environment, or if an "indentation" +% environment is used inside a "list" environment, everything should +% work just fine. +% +% \begin{macro}{\indentation} +% The "indentation" environment begins and ends by executing "\par". +% The first one guarantees that a paragraph that began before the +% environment will not be affected by the new margins the environment +% sets up, and that the last paragraph inside the environment will be. +% The code for resetting the margins uses "\parshape" to maintain the +% modified margin settings, rather than using "\leftskip" and "\rightskip". +% This is rather clever, since it leaves us free to use the skip values +% to produce other special effects (such as centering or ragged right). +% But because \TeX\ normally resets "\parshape" declarations at the +% end of each paragraph, we redefine "\par" to perform its usual +% actions {\em inside a group}. The group is opened, "\@@par" ends +% the paragraph, the "\parshape" setting is canceled {\em within the +% group}, and the group ends, restoring the "\parshape" setting. +% \begin{macrocode} +\newenvironment{indentation}[2]% +{% + \par + \setlength{\leftmargin}{#1}% + \setlength{\rightmargin}{#2}% + \advance\linewidth -\leftmargin + \advance\linewidth -\rightmargin + \advance\@totalleftmargin\leftmargin + \@setpar{{\@@par}}% + \parshape 1 \@totalleftmargin \linewidth + \ignorespaces +}% +{\par} +% \end{macrocode} +% An earlier version of this code used the "list" environment directly. +% Using the "indentation" environment actually caused a "list" environment +% with one item to be created. The formatting parameters for the "list" +% environment were set to make the list appear just like the surrounding +% text, except for the margin change. That is, "\topsep" was given +% the value "0pt", "\parsep" was set to "\parskip", and "\listparindent" +% and "\itemindent" were both set to "\parindent". This worked tolerably +% well as a first approximation, but ultimately it was unsatisfactory for +% several reasons, the most important being that an empty "list" environment +% generates a \LaTeX\ error ("\@noitemerr", to be specific). Instead of +% choosing special values and writing extra code to overcome the setup +% that the "list" environment performs that isn't needed for our purposes, +% I finally decided to simply figure out how the "list" environment resets +% margins and re-implement just that part in the "indentation" environment. +% \end{macro} +% +% \DescribeEnv{ctrindent} +% The ctrindent environment uses the indentation environment +% (defined above) and the standard "\centering" declaration to typeset +% centered text in reduced margins. This environment takes two +% arguments, which are the left and right indents. Usually +% both will be the same, but in principle you could have a paragraph +% whose lines were centered around a point that was off-center with +% respect to the surrounding column of text. +% +% Example: +% +% \begin{verbatim} +% \begin{ctrindent}{.5in}{.5in} +% This text will be set in a centered paragraph with narrower +% margins than usual. +% \end{ctrindent} +% \end{verbatim} +% +% \begin{macro}{\ctrindent} +% The "\ctrindent" environment is just an "indentation" environment +% inside which a "\centering" declaration is in effect. +% \begin{macrocode} +\newenvironment{ctrindent}[2]% +{\begin{indentation}{#1}{#2}\centering}% +{\end{indentation}} +% \end{macrocode} +% \end{macro} +% diff --git a/macros/latex209/contrib/misc/inputfile.sty b/macros/latex209/contrib/misc/inputfile.sty new file mode 100644 index 0000000000..5fa26e2fa4 --- /dev/null +++ b/macros/latex209/contrib/misc/inputfile.sty @@ -0,0 +1,43 @@ +% +% Inputfile style : Designed by R.Tucci, Ciba-Geigy AG Basle, June 29, 1990 +% modified by R.Tucci Feb. 21, 1991 +% +% The following commands are defined for internal use +% +% \@fileindex : To keep the current level of \input{} +% \@iinput : Redefines the \@iinput command of \latex.tex to +% save the filename of \input{...} +% \inputfilename : Returns the filename depending on \@fileindex +% \@filenamei : Contains the filename for \@fileindex=1 +% \@filenameii : Contains the filename for \@fileindex=2 +% \@filenameiii : Contains the filename for \@fileindex=3 +% \@filename... : ... etc. +% This Style should be used in the following manner +% +% 1. add this file to the \documentstyle[...] +% 2. use the command \inputfilename somewhere in the text and the current +% input file name will be substituted +\typeout{filename environment loaded. WRTC , Version 1.1 22.02.91} + % + % Redefine \@iinput from latex.tex to keep the filename + % available +\newcount\@fileindex % defines the pointer to the current filename +\@fileindex=0 % and initialize it. +\def\@iinput#1{\advance\@fileindex by 1 % increment the pointer + % save the filename + % the following line dose this Job: + % 1. \expandafter prevents to redefine \csname, so + % 2. \csname filename\romannumeral\@fileindex\endcsname + % expands to the control sequence \filename<x> where <x> is + % the roman character representation of \@fileindex. (e.g ii) + % 3. \def defines the resulted control sequence of 2. to be #1 + \expandafter\def\csname filename\romannumeral\@fileindex\endcsname +{#1} + \@@input#1 % now read the file + \ifnum\@fileindex>0 % check for end of stack + \advance\@fileindex by -1 \fi} % and decrement the pointer + % read the current filename if an \input + % has been performed, otherwise use \jobname +\def\inputfilename{\ifnum\@fileindex=0\jobname + \else\csname filename\romannumeral\@fileindex\endcsname + \fi} diff --git a/macros/latex209/contrib/misc/invertedparagraphs.tex b/macros/latex209/contrib/misc/invertedparagraphs.tex new file mode 100644 index 0000000000..f0d510632e --- /dev/null +++ b/macros/latex209/contrib/misc/invertedparagraphs.tex @@ -0,0 +1,25 @@ +% -*- Mode: TeX -*- + +\ifx\thisfileis\anUndefinedMacro\input maybeload \fi + +\thisfileis{<eb.tex.texlocal>invertedparagraphs} % abort loading if we're already loaded + +% This file defines a \begin{invertedparagraphs}...\end{invertedparagraphs} +% environment that's useful in bibliographies. + +\input redefine % from texlocal + +% Inverted paragraphs. + +\newdimen\invertedparindent +\invertedparindent=20pt + +\newenvironment{invertedparagraphs}{% +\list{}% +{\setlength{\listparindent}{-\invertedparindent}% +\setlength{\leftmargin}{\invertedparindent}% +\setlength{\labelwidth}{0pt}% +\setlength{\labelsep}{0pt}% +\setlength{\itemindent}{0pt}}% +{\item{}\hspace{-\invertedparindent}}}{\endlist} + diff --git a/macros/latex209/contrib/misc/isf.sty b/macros/latex209/contrib/misc/isf.sty new file mode 100644 index 0000000000..6c30a2d72a --- /dev/null +++ b/macros/latex209/contrib/misc/isf.sty @@ -0,0 +1,95 @@ +% Save file as: ISF.STY Source: FILESERV@SHSU.BITNET +% Provide access to the italic san serif type style for LaTeX. Once you +% have included "isf" as a style option, you can use the \isf command to +% select the italic san serif style, just as you would select the usual +% italic style with \it, EXCEPT: +% +% The various fonts defined here are all "loaded on demand". As +% discussed in the LaTeX book, Section C.14.4, a loaded on demand +% font is subject to two restrictions when used in math mode: +% +% - The font must be used OUTSIDE of math mode before it is used +% INSIDE of math mode. The \load command can be used to get +% around this restriction. +% +% - Only a single font size is available within math mode - the +% display, text, script and scriptscriptfonts will all be the +% same. This can be avoided ONLY by changing the definitions +% given here to pre-load the appropriate fonts; see LFONTS.TEX +% for further information. (Alternatively, \@getfont could be +% made more clever.) Note that pre-loading the fonts could cause +% you to fill font space with fonts you never really use. +% +% In order to allow other style files that need access to \isf to input this +% file safely, it is designed so that an attempt to input it a second time - +% or, more exactly, when command "\isf" is already defined - is ignored. +% +% This file can be adapted easily to define other font type styles. The real +% limit is likely to come from the requirement that each style so defined must +% be given a unique family number - TeX only supports 16 families and LaTeX +% as usually configured already uses 10. The right way to avoid this problem +% is to modify \@getfont so that it ignores a family number of -1. Fonts +% so specified would not be usable in math mode, but that's no big deal; you +% don't WANT to use tons of non-math fonts in math mode anyway. +% +% As currently written, this file assumes that you have boldface san serif +% fonts available at the following point sizes: +% +% lcmssi8 +% lcmssi8 at 9pt +% cmssi10 +% cmssi10 at 11pt +% cmssi10 at 12pt +% cmssi10 at 17pt +% cmssi10 at 20pt +% cmssi10 at 25pt +% +% All but the last of these should be commonly available. I'm not sure about +% the last one; LFONTS.TEX does not assume the availability of ANY 25 pt fonts +% other than Roman. If necessary, change the definition of \isfxxv@ to +% \@subfont\isf\it. (Alternatively, if you have italic sans serif fonts +% at sizes smaller than 8pt, you might want to change the definitions of +% \isfv@, \isfvi@, and \isfvii@.) +% +% Technical note: It is possible to do without the \isf<size>@ macros by +% including their contents, with a whole bunch of \@prtct's, within the +% \@addfontinfo definitions. This is a pain to do, and probably doesn't end +% up saving any space anyway. This way costs you a bunch of extra macros, +% but it's a LOT easier to understand! +% +% Written by George D. Greenwade (BED_GDG@SHSU.BITMET) as a variation of +% BSF.STY Written by Jerry Leichter (LEICHTER-JERRY@CS.YALE.EDU) + +\expandafter\ifx\csname isf\endcsname\relax %Once only, please +% Note: It's a pain to use \@ifundefined here - we don't want to pass the +% rest of the definitions as an argument, but we can't easily use \endinput +% since, with docsty, we can't control where the line breaks occur. + +\typeout{Document Option `isf' 25 August 1989 (GDG)} +\def\isf{\protect\pisf} +\newfam\sfifam +\@addfontinfo\@vpt{\@prtct\isfv@} + \def\isfv@{\def\pisf{\@subfont\isf\it}} +\@addfontinfo\@vipt{\@prtct\isfvi@} + \def\isfvi@{\def\pisf{\@subfont\isf\it}} +\@addfontinfo\@viipt{\@prtct\isfvii@} + \def\isfvii@{\def\pisf{\@subfont\isf\it}} +\@addfontinfo\@viiipt{\@prtct\isfviii@} + \def\isfviii@{\def\pisf{\@getfont\pisf\sfifam\@viiipt{lsmssi8}}} +\@addfontinfo\@ixpt{\@prtct\isfx@} + \def\isfx@{\def\pisf{\@getfont\pisf\sfifam\@ixpt{lsmssi8\@halfmag}}} +\@addfontinfo\@xpt{\@prtct\isfx@} + \def\isfx@{\def\pisf{\@getfont\pisf\sfifam\@xpt{cmssi10}}} +\@addfontinfo\@xipt{\@prtct\isfxi@} + \def\isfxi@{\def\pisf{\@getfont\pisf\sfifam\@xipt{cmssi10\@halfmag}}} +\@addfontinfo\@xiipt{\@prtct\isfxii@} + \def\isfxii@{\def\pisf{\@getfont\pisf\sfifam\@xiipt{cmssi10\@magscale1}}} +\@addfontinfo\@xivpt{\@prtct\isfxiv@} + \def\isfxiv@{\def\pisf{\@getfont\pisf\sfifam\@xivpt{cmssi10\@magscale2}}} +\@addfontinfo\@xviipt{\@prtct\isfxvii@} + \def\isfxvii@{\def\pisf{\@getfont\pisf\sfifam\@xviipt{cmssi10\@magscale3}}} +\@addfontinfo\@xxpt{\@prtct\isfxx@} + \def\isfxx@{\def\pisf{\@getfont\pisf\sfifam\@xxpt{cmssi10\@magscale4}}} +\@addfontinfo\@xxvpt{\@prtct\isfxxv@} + \def\isfxxv@{\def\pisf{\@getfont\pisf\sfifam\@xxvpt{cmssi10\@magscale5}}} +\fi diff --git a/macros/latex209/contrib/misc/isolatin1.sty b/macros/latex209/contrib/misc/isolatin1.sty new file mode 100644 index 0000000000..9a6850979d --- /dev/null +++ b/macros/latex209/contrib/misc/isolatin1.sty @@ -0,0 +1,174 @@ +% 1-Jun-1992 +% +% File bases on iso1ibm.tex Version 1.0 of May, 9 1990 +\message{ISO-latin-1 input coding, version 0.9 of 1-Jun-1992.} +% +% For input of 8 bits character. +% This allows reading ISO-8859 Latin-1 codes. +% +\chardef \atcode = \the \catcode `\@ +\catcode `\@ = 11 +% +\catcode160=13 \def^^a0{{\bf?}} % 160 '240, "a0 +\catcode161=13 \def^^a1{!`} % 161 '241, "a1 +\catcode162=13 \def^^a2{{\bf?}} % 162 '242, "a2 +\catcode163=13 \def^^a3{\pounds{}} % 163 '243, "a3 +\catcode164=13 \def^^a4{{\bf?}} % 164 '244, "a4 +\catcode165=13 \def^^a5{{\bf?}} % 165 '245, "a5 +\catcode166=13 \def^^a6{$\vert$} % 166 '246, "a6 +\catcode167=13 \def^^a7{\S{}} % 167 '247, "a7 \S{} ISO-1, +\catcode168=13 \def^^a8{\"{ }} % 168 '250, "a8 +\catcode169=13 \def^^a9{\copyright{}}% 169, '251, "a9 +\catcode170=13 \def^^aa{{\bf?}} % 170 '252, "aa +\catcode171=13 % 171 '253, "ab, +\@ifundefined{lguill}{\def^^ab{$<<$}}{\def^^ab{\lguill}} +\catcode172=13 \def^^ac{{\bf?}} % 172 '254, "ac +\catcode173=13 \def^^ad{{\bf?}} % 173 '255 "ad +\catcode174=13 \def^^ae{{\bf?}} % 174 '256, "ae +\catcode175=13 \def^^af{{\bf?}} % 175 '257, "af +\catcode176=13 \def^^b0{{\bf?}} % 176 '260, "b0 ?? \No +\catcode177=13 \def^^b1{$\pm$} % 177 '261, "b1 ISO-1 plus-minus +\catcode178=13 \def^^b2{${}^2$} % 178, '262, "b2 +\catcode179=13 \def^^b3{${}^3$} % 179, '263, "b3 +\catcode180=13 \def^^b4{\'{ }} % 180, '264, "b4 +\catcode181=13 \def^^b5{{\bf?}} % 181, '265, "b5 +\catcode182=13 \def^^b6{\P{}} % 182, '266, "b6 +\catcode183=13 \def^^b7{$\cdot$} % 183, '267, "b7 +\catcode184=13 \def^^b8{\c{ }} % 184, '270, "b8 +\catcode185=13 \def^^b9{${}^1$} % 185, '271, "b9 +\catcode186=13 \def^^ba{{\bf?}} % 186, '272, "ba +\catcode187=13 % 187, '273, "bb +\@ifundefined{rguill}{\def^^bb{$>>$}}{\def^^bb{\rguill}} +\catcode188=13 \def^^bc{$\frac 1 4$} % 188, '274, "bc +\catcode189=13 \def^^bd{$\frac 1 2$} % 189, '275, "bd +\catcode190=13 \def^^be{$\frac 3 4$} % 190, '276, "be +\catcode191=13 \def^^bf{?`} % 191, '277, "bf +\catcode192=13 \def^^c0{\`A} % 192, '300, "c0 +\@ifundefined{@grave@A@grave@}{\def^^c0{\`A}}{\let^^c0=\@grave@A@grave@} +\catcode193=13 \def^^c1{\'A} % 193, '301, "c1 +\@ifundefined{@acute@A@acute@}{\def^^c1{\'A}}{\let^^c1=\@acute@A@acute@} +\catcode194=13 \def^^c2{\^A} % 194, '302, "c2 +\@ifundefined{@circflx@A@circflx@}{\def^^c2{\^A}}{\let^^c2=\@circflx@A@circflx@} +\catcode195=13 \def^^c3{\~A} % 195, '303, "c3 +\@ifundefined{@tileda@A@tilda@}{\def^^c3{\~A}}{\let^^c3=\@tileda@A@tilda@} +\catcode196=13 \def^^c4{\"A} % 196, '304, "c4 +\@ifundefined{@Umlaut@A@Umlaut@}{\def^^c4{\"A}}{\let^^c4=\@Umlaut@A@Umlaut@} +\catcode197=13 \def^^c5{\AA{}} % 197, '305, "c5 +\@ifundefined{@A@A@}{\def^^c5{\AA{}}}{\let^^c5=\@A@A@} +\catcode198=13 \def^^c6{\AE{}} % 198, '306, "c6 +\@ifundefined{@A@E@}{\def^^c6{\AE{}}}{\let^^c6=\@A@E@} +\catcode199=13 \def^^c7{\c{C}} % 199, '307, "c7 +\@ifundefined{@cedilla@C@cedilla}{\def^^c7{\c{C}}}{\let^^c7=\@cedilla@C@cedilla} +\catcode200=13 \def^^c8{\`E} % 200, '310, "c8 +\@ifundefined{@grave@E@grave@}{\def^^c8{\`E}}{\let^^c8=\@grave@E@grave@} +\catcode201=13 \def^^c9{\'E} % 201, '311, "c9 +\@ifundefined{@acute@E@acute@}{\def^^c9{\'E}}{\let^^c9=\@acute@E@acute@} +\catcode202=13 \def^^ca{\^E} % 202, '312, "ca +\@ifundefined{@circflx@E@circflx@}{\def^^ca{\^E}}{\let^^ca=\@circflx@E@circflx@} +\catcode203=13 \def^^cb{{\"E}} % 203, '313, "cb +\@ifundefined{@Umlaut@E@Umlaut@}{\def^^cb{\"E}}{\let^^cb=\@Umlaut@E@Umlaut@} +\catcode204=13 \def^^cc{\`I} % 204, '314, "cc +\@ifundefined{@grave@I@grave@}{\def^^cc{\`I}}{\let^^cc=\@grave@I@grave@} +\catcode205=13 \def^^cd{\'I} % 205, '315, "cd +\@ifundefined{@acute@I@acute@}{\def^^cd{\'I}}{\let^^cd=\@acute@I@acute@} +\catcode206=13 \def^^ce{\^I} % 206, '316, "ce +\@ifundefined{@circflx@I@circflx@}{\def^^ce{\^I}}{\let^^ce=\@circflx@I@circflx@} +\catcode207=13 \def^^cf{{\"I}} % 207, '317, "cf +\@ifundefined{@Umlaut@I@Umlaut@}{\def^^cf{\"I}}{\let^^cf=\@Umlaut@I@Umlaut@} +\catcode208=13 \def^^d0{\rlap{\raise0.3ex\hbox{--}}D} % 208, '320, "d0 +\@ifundefined{@Eth@}{}{\let^^d0=\@Eth@} +\catcode209=13 \def^^d1{¥} % 209, '321, "d1 +\@ifundefined{@tileda@N@tilda@}{\def^^d1{\~N}}{\let^^d1\@tileda@N@tilda@} +\catcode210=13 \def^^d2{\`O} % 210, '322, "d2 +\@ifundefined{@grave@O@grave@}{\def^^d2{\`O}}{\let^^d2=\@grave@O@grave@} +\catcode211=13 \def^^d3{\'O} % 211, '323, "d3 +\@ifundefined{@acute@O@acute@}{\def^^d3{\'O}}{\let^^d3\@acute@O@acute@} +\catcode212=13 \def^^d4{\^O} % 212, '324, "d4 +\@ifundefined{@circflx@O@circflx@}{\def^^d4{\^O}}{\let^^d4=\@circflx@O@circflx@} +\catcode213=13 \def^^d5{\~O} % 213, '325, "d5 +\@ifundefined{@tileda@O@tilda@}{\def^^d5{\~O}}{\let^^d5\@tileda@O@tilda@} +\catcode214=13 \def^^d6{\"O} % 214, '326, "d6 +\@ifundefined{@Umlaut@O@Umlaut@}{\def^^d6{\"O}}{\let^^d6=\@Umlaut@O@Umlaut@} +\catcode215=13 \def^^d7{$\times$}% 215, '327, "d7 +\catcode216=13 \def^^d8{\O{}} % 216, '330, "d8 +\@ifundefined{@OOO@}{\def^^d8{\O{}}}{\let^^d8=\@OOO@} +\catcode217=13 \def^^d9{\`U} % 217, '331, "d9 +\@ifundefined{@grave@U@grave@}{\def^^d9{\`U}}{\let^^d9=\@grave@U@grave@} +\catcode218=13 \def^^da{\'U} % 218, '332, "da +\@ifundefined{@acute@U@acute@}{\def^^da{\'U}}{\let^^da=\@acute@U@acute@} +\catcode219=13 \def^^db{\^U} % 219, '333, "db +\@ifundefined{@circflx@U@circflx@}{\def^^db{\^U}}{\let^^db=\@circflx@U@circflx@} +\catcode220=13 \def^^dc{\"U} % 220, '334, "dc +\@ifundefined{@Umlaut@U@Umlaut@}{\def^^dc{\"U}}{\let^^dc=\@Umlaut@U@Umlaut@} +\catcode221=13 \def^^dd{{\'Y}} % 221, '335, "dd +\@ifundefined{@acute@Y@acute@}{\def^^dd{\'Y}}{\let^^dd=\@acute@Y@acute@} +\catcode222=13 \def^^de{\lower 0.7ex \hbox{l}\hskip-1ex\relax b} % 222, '336, "de +\@ifundefined{@Thorn@}{}{\let^^de=\@Thorn@} +\catcode223=13 \def^^df{\ss{}} % 223, '337, "df +\@ifundefined{@sss@}{\def^^df{\ss{}}}{\let^^df=\@sss@} +\catcode224=13 \def^^e0{\`a} % 224, '340, "e0 +\@ifundefined{@grave@a@grave@}{\def^^e0{\`a}}{\let^^e0=\@grave@a@grave@} +\catcode225=13 \def^^e1{\'a} % 225, '341, "e1 +\@ifundefined{@acute@a@acute@}{\def^^e1{\'a}}{\let^^e1=\@acute@a@acute@} +\catcode226=13 \def^^e2{\^a} % 226, '342, "e2 +\@ifundefined{@circflx@a@circflx@}{\def^^e2{\^a}}{\let^^e2=\@circflx@a@circflx@} +\catcode227=13 \def^^e3{\~a} % 227, '343, "e3 +\@ifundefined{@tileda@a@tilda@}{\def^^e3{\~a}}{\let^^e3=\@tileda@a@tilda@} +\catcode228=13 \def^^e4{\"a} % 228, '344, "e4 +\@ifundefined{@Umlaut@a@Umlaut@}{\def^^e4{\"a}}{\let^^e4=\@Umlaut@a@Umlaut@} +\catcode229=13 \def^^e5{\aa{}} % 229, '345, "e5 +\@ifundefined{@a@a@}{\def^^e5{\aa{}}}{\let^^e5=\@a@a@} +\catcode230=13 \def^^e6{\ae{}} % 230, '346, "e6 +\@ifundefined{@a@e@}{\def^^e6{\ae{}}}{\let^^e6=\@a@e@} +\catcode231=13 \def^^e7{\c{c}} % 231, '347, "e7 +\@ifundefined{@cedilla@c@cedilla}{\def^^e7{\c{c}}}{\let^^e7=\@cedilla@c@cedilla} +\catcode232=13 \def^^e8{\`e} % 232, '350, "e8 +\@ifundefined{@grave@e@grave@}{\def^^e8{\`e}}{\let^^e8=\@grave@e@grave@} +\catcode233=13 \def^^e9{\'e} % 233, '351, "e9 +\@ifundefined{@acute@e@acute@}{\def^^e9{\'e}}{\let^^e9=\@acute@e@acute@} +\catcode234=13 \def^^ea{\^e} % 234, '352, "ea +\@ifundefined{@circflx@e@circflx@}{\def^^ea{\^e}}{\let^^ea=\@circflx@e@circflx@} +\catcode235=13 \def^^eb{\"e} % 235, '353, "eb +\@ifundefined{@Umlaut@e@Umlaut@}{\def^^eb{\"e}}{\let^^eb=\@Umlaut@e@Umlaut@} +\catcode236=13 \def^^ec{\`{\i}} % 236, '354, "ec +\@ifundefined{@grave@i@grave@}{\def^^ec{\`{\i}}}{\let^^ec=\@grave@i@grave@} +\catcode237=13 \def^^ed{\'{\i}} % 237, '355, "ed +\@ifundefined{@acute@i@acute@}{\def^^ed{\'{\i}}}{\let^^ed=\@acute@i@acute@} +\catcode238=13 \def^^ee{\^{\i}} % 238, '356, "ee +\@ifundefined{@circflx@i@circflx@}{\def^^ee{\^{\i}}}{\let^^ee=\@circflx@i@circflx@} +\catcode239=13 \def^^ef{\"{\i}} % 239, '357, "ef +\@ifundefined{@Umlaut@i@Umlaut@}{\def^^ef{\"{\i}}}{\let^^ef=\@Umlaut@i@Umlaut@} +\catcode240=13 \def^^f0{$\partial$} % 240, '360, "f0 +\@ifundefined{@eth@}{\def^^f0{$\partial$}}{\let^^f0=\@eth@} +\catcode241=13 \def^^f1{\~n} % 241, '361, "f1 +\@ifundefined{@tileda@n@tilda@}{\def^^f1{\~n}}{\let^^f1\@tileda@n@tilda@} +\catcode242=13 \def^^f2{\`o} % 242, '362, "f2 +\@ifundefined{@grave@o@grave@}{\def^^f2{\`o}}{\let^^f2=\@grave@o@grave@} +\catcode243=13 \def^^f3{\'o} % 243, '363, "f3 +\@ifundefined{@acute@o@acute@}{\def^^f3{\'o}}{\let^^f3\@acute@o@acute@} +\catcode244=13 \def^^f4{\^o} % 244, '364, "f4 +\@ifundefined{@circflx@o@circflx@}{\def^^f4{\^o}}{\let^^f4=\@circflx@o@circflx@} +\catcode245=13 \def^^f5{\~o} % 245, '365, "f5 +\@ifundefined{@tileda@o@tilda@}{\def^^f5{\~o}}{\let^^f5\@tileda@o@tilda@} +\catcode246=13 \def^^f6{\"o} % 246, '366, "f6 +\@ifundefined{@Umlaut@o@Umlaut@}{\def^^f6{\"o}}{\let^^f6=\@Umlaut@o@Umlaut@} +\catcode247=13 \def^^f7{$\div$} % 247, '367, "f7 +\catcode248=13 \def^^f8{\o{}} % 248, '370, "f8 +\@ifundefined{@ooo@}{\def^^f8{\o{}}}{\let^^f8=\@ooo@} +\catcode249=13 \def^^f9{\`u} % 249, '371, "f9 +\@ifundefined{@grave@u@grave@}{\def^^f9{\`u}}{\let^^f9=\@grave@u@grave@} +\catcode250=13 \def^^fa{\'u} % 250, '372, "fa +\@ifundefined{@acute@u@acute@}{\def^^fa{\'u}}{\let^^fa=\@acute@u@acute@} +\catcode251=13 \def^^fb{\^u} % 251, '373, "fb +\@ifundefined{@circflx@u@circflx@}{\def^^fb{\^u}}{\let^^fb=\@circflx@u@circflx@} +\catcode252=13 \def^^fc{\"u} % 252, '374, "fc +\@ifundefined{@Umlaut@u@Umlaut@}{\def^^fc{\"u}}{\let^^fc=\@Umlaut@u@Umlaut@} +\catcode253=13 \def^^fd{\'y} % 253, '375, "fd +\@ifundefined{@acute@y@acute@}{\def^^fd{\'y}}{\let^^fd=\@acute@y@acute@} +\catcode254=13 \def^^fe{\lower 0.8ex\hbox{l}\hskip-1ex\relax b} % 254, '376, "fe +\@ifundefined{@thorn@}{}{\let^^fe=\@thorn@} +\catcode255=13 \def^^ff{\"y} % 255, '377, "ff +\@ifundefined{@Umlaut@y@Umlaut@}{\def^^ff{\"y}}{\let^^ff=\@Umlaut@y@Umlaut@} +\catcode `\@ = \the \atcode +\endinput +% End of iso-latin-1.tex diff --git a/macros/latex209/contrib/misc/ist21.sty b/macros/latex209/contrib/misc/ist21.sty new file mode 100644 index 0000000000..487a2d28b7 --- /dev/null +++ b/macros/latex209/contrib/misc/ist21.sty @@ -0,0 +1,39 @@ +% IST21 DOCUMENT-STYPE OPTION - Wed May 20 17:07:56 BST 1987 +% +% derived from +% +% TITLEPAGE DOCUMENT-STYLE OPTION - released 27 January 1985 +% for LaTeX version 2.09 +% Copyright (C) 1985 by Leslie Lamport +% +% This style option produces a title appropriate for BSI IST/21 documents, +% and general memos. +% +% In addition to the normal \title, \author (will give rise to the +% source of the document) and \date commands, two further values +% should be set. These are: +% +% \project{Project Reference} +% The project reference for the document. For example, +% \project{97.21.23} or \project{97.21.9 Q45} +% +% \status{Document Status} +% For example \status{UK Position} or \status{UK Expert Contribution} + +\def\project#1{\def\@project{{#1}}} \project{\em 97.21.NN} +\def\status#1{\def\@status{{#1}}} \status{\em status unset} + +\def\maketitle{ + \setcounter{page}{0} + \begin{Large} + \begin{description} + \item[TITLE:] \@title + \item[SOURCE:] \@author + \item[DATE:] \@date + \item[PROJECT:] \@project + \item[STATUS:] \@status + \end{description} + \end{Large} +\bigskip +\null +} diff --git a/macros/latex209/contrib/misc/isucaption.sty b/macros/latex209/contrib/misc/isucaption.sty new file mode 100644 index 0000000000..10823eb3ed --- /dev/null +++ b/macros/latex209/contrib/misc/isucaption.sty @@ -0,0 +1,39 @@ +%NAME: isucaption.sty +% written by gagac@isumvs.bitnet +% +%Figure 1.1: This is the debugged version of a modified caption macro +% to produce captions with hanging indentation (like this). +% If the caption is less than a full line, it will be +% centered. \isucaption is used in the same way as \caption +% (the name may be changed). +% The variable \captionwidth may be set to match the width +% of a \tabular* environment. If set inside a table or +% figure environment, it will affect only that environment. + +\def\isucaption{\refstepcounter\@captype + \@dblarg{\@isucaption\@captype}} + +\newlength\captionwidth \captionwidth=\hsize +\long\def\@isucaption#1[#2]#3{ + \baselineskip 14.5 pt + \addcontentsline {\csname ext@#1\endcsname}{#1} + {\protect\numberline{\csname fnum@#1\endcsname}{\ignorespaces #2}} + \par + \begingroup + \@parboxrestore + \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname #3} + \ifdim \wd\@tempboxa >\captionwidth + \begingroup + \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname^^} + \advance \captionwidth by -\wd\@tempboxa + \@makecaption{\csname fnum@#1\endcsname} + {\ignorespaces{\protect\parbox[t]{\captionwidth}{#3}}}% + \endgroup + \else + \begingroup + \@makecaption{\csname fnum@#1\endcsname} + {\ignorespaces #3} + \endgroup + \fi + \par\vspace{1.7ex} + \endgroup} diff --git a/macros/latex209/contrib/misc/ital.sty b/macros/latex209/contrib/misc/ital.sty new file mode 100644 index 0000000000..41c0f5c548 --- /dev/null +++ b/macros/latex209/contrib/misc/ital.sty @@ -0,0 +1,73 @@ +% This is ITAL.STY, from TeXmag v3n1, by Dan Bernstein +% bernsten@phoenix.princeton.edu +% +% Italics-without-tears (or how to avoid doing italic correction!) +% +% To use the macros, simply type \ital{text} where you would normally +% type {\it text}, and similarly for \upright. \slant is like \ital. +% These are not \long macros and are meant for text within a paragraph, +% so stick to {\it...} for many-paragraph italicisation. +% +% First come the basic definitions. +% +\newif\if@corr\newif\if@nonzero +{\@tempskipa 0pt plus 0pt minus 0pt\xdef\zero@skip{\the\@tempskipa}} +% Now come the macros for dealing with italics. Notice the use of +% \futurelet to see what token comes after the \ital{...}. These macros +% aren't perfect; the worst problem is that they can't really look ahead +% to see if a period or a comma will be added next to the text, and they +% only see if the next token after the } is a period or a comma. If you +% have some other macro or character that should also force the italic +% correction to disappear, add \do{\themacroname} to \no@corr. +\def\ital#1{{\it #1}\begingroup\futurelet\@tempa\@corr} +\def\slant#1{{\sl #1}\begingroup\futurelet\@tempa\@corr} +\def\no@corr{\do{.}\do{,}} +\def\@corr{\def\do##1{\ifx\@tempa##1\@corrfalse\fi}\@corrtrue\no@corr +\if@corr\/\fi\endgroup} +% +% The problem of roman type within italic type is quite different. The +% italic correction will always be added at the beginning (if you're +% typing \ital{... something\upright{,} ...} then you have a very weird +% idea of the logical structure of your document). However, \upright will +% almost always be preceded by a space, and maybe even some kerns, +% penalties, and other glue; so we must ``unspace'' past these items, +% add the italic correction, and put the spaces back. The \upright macro +% reflects this; \@unspace removes as many glue/kern/penalty items as +% possible from the current horizontal list and sets \@tempa to a control +% sequence that dumps all the glue/kern/penalty items right back on. +% +\def\upright#1{\begingroup\@unspace\/\@tempa\endgroup{\@uprightfont #1}} +\def\@unspace{% +\def\@tempa{}\loop\@nonzerofalse +\@tempskipa\lastskip\unskip +\@tempdima\lastkern\unkern +\@tempcnta\lastpenalty\unpenalty +\edef\@tempb{\the\@tempskipa}% +\ifx\@tempb\zero@skip +\else\edef\@tempa{\hskip\@tempb\@tempa}\@nonzerotrue\fi +\ifdim\@tempdima=0pt\else\edef\@tempa{\kern\the\@tempdima\@tempa}\@nonzerotrue\fi +\ifnum\@tempcnta=0\else\edef\@tempa{\penalty\the\@tempcnta\@tempa}\@nonzerotrue\fi +\if@nonzero\repeat} +% +% \upright (because of \@unspace) has many more caveats than \ital and +% \slant. As described in the TeXbook, \lastskip and its friends take +% the last such item off the current list, returning zero if the last item +% is not such an item. This makes it easy for \@unspace to keep going back, +% removing skips, kerns, and penalties until they are all zero, but it +% leads to two problems. The first is that a zero item that you really +% put in explicitly (probably for some obscure line-breaking reasons) +% will not be passed through to \@tempa and thus will not be put back. The +% second is that if you have a sequence of a few such zero items, \@unspace +% will stop there and won't get all the way back to where it should. +% Furthermore, a whatsit or similar weird item will also stop \@unspace. +% The solution to the first two problems is to replace \hskip0pt with +% \hskip1sp, \kern0pt with \kern1sp, and \penalty0 with \penalty1. Any +% DVI program that shows a difference of 1sp doesn't round correctly. +% +% +% the font to be used for upright text +\def\uprightfont#1{\def\@uprightfont{#1}} +\uprightfont{\rm} +% +% and here's a crib of LaTeX' \em (without the protection): +\def\emph#1{\ifdim \fontdimen\@ne\font >\z@ \upright{#1}\else \ital{#1}\fi} diff --git a/macros/latex209/contrib/misc/italic.sty b/macros/latex209/contrib/misc/italic.sty new file mode 100644 index 0000000000..8c47825ac2 --- /dev/null +++ b/macros/latex209/contrib/misc/italic.sty @@ -0,0 +1,38 @@ +% Save file as: ITALIC.STY Source: FILESERV@SHSU.BITNET +% +% File: ITALIC.STY +% +% Author: Hunter Goatley +% goathunter@WKUVX1.BITNET +% +% Date: August 21, 1991 +% +% Abstract: +% +% The macros \ital and \slant are defined to typeset tex in italic +% (\it) and slanted (\sl) fonts, automatically inserting the italic +% correction (\/) if necessary. The correction is not inserted if +% the token following the parameter is a period or a comma, as +% suggested on page 14 of _The TeXbook_. +% +% Based on the \predict macro presented in _TeX for the Impatient_, +% p. 233. +% +% These macros use \toks0 as a temporary. +% +% The \futurelet\it@next in \ital and \slant defines \it@next to be +% whatever the character following the parameter is. \d@slant checks +% to see if \it@next is a comma or period; if it is neither, the +% italic correction (\/) is included. +% +\catcode`\@=11 % Temporarily make @ a letter +\def\ital#1{\toks0={#1}\let\slf@nt=\it\futurelet\it@next\d@slant} +\def\slant#1{\toks0={#1}\let\slf@nt=\sl\futurelet\it@next\d@slant} +\def\d@slant{{\slf@nt\the\toks0}% + \ifx\it@next,% % If \it@next is not a comma + \else\ifx\it@next.% % ... and is not a period + \else\/% % ... insert the correction (\/) + \fi\fi% % ... + \let\it@next=\relax% % "Undefine" \it@next + } +\catcode`\@=12 % Reset @ as other diff --git a/macros/latex209/contrib/misc/jbs.sty b/macros/latex209/contrib/misc/jbs.sty new file mode 100644 index 0000000000..f2ee96dab3 --- /dev/null +++ b/macros/latex209/contrib/misc/jbs.sty @@ -0,0 +1,200 @@ +% Article sub-style JBS.STY +% Usage: \documentstyle[jbs]{article} +% REQUIRED COMMANDS LISTED BELOW +% optional commands listed below +% \setcounter{page}{foo} --`foo' is first page number for article +% \begin{document} +% \leadpagelayout +% blank line +% Text as usual +% +\typeout { } +\typeout{Article document style `jbs' for the Journal of Business Strategies} +\typeout { } +% Basic layouts for Journal of Business Strategies--released July 3, 1988 +% +% Copyright (c) 1988 by George D. Greenwade (BED_GDG@SHSU.BITNET) +% Center for Business and Economic Research +% Sam Houston State University +% Huntsville, Texas 77341-2056 +% +% Must include the following definitions in the preamble of the document: +%% \vol{foo} -- `foo' is Volume number for the article +%% \no{foo} -- `foo' is Number in the Volume +%% \issue{foo} -- `foo' is issue (i.e., Spring or Fall) +%% \yr{foo} -- `foo' is year of publication +%% \runhead{foo} -- `foo' is running head for odd-numbered (right-hand) pages +%% \title{foo} -- `foo' is titlepage title (insert breaks with \cr) +%% \author{foo} -- `foo' is lead author's name +%% \affil{foo} -- `foo' is lead author's affiliation (insert breaks with \cr) +%% Defaults intentionally not specified as each article is +%% unique in these aspects. Failure to specify any of these +%% results in "command not specified" error. +% Optional entries in preamble: +%% Present design allows for up to two additional co-authors with unique +%% affiliations (total of three authors and affiliations). +%% \authorii{foo} -- `foo' is first co-author (second author) +%% \affilii{foo} -- `foo' is authorii's affiliation +%% \authoriii{foo} -- `foo' is second co-author (third author) +%% \affiliii{foo} -- `foo' is authoriii's affiliation + +% BASIC SETUPS AND LAYOUTS +\ds@twoside % First, we use two-sided layout for the JBS. +\input{art12.sty} % To generate photo-ready copy for reduction to a +\textwidth6in % finished 6X9 book, we print in 12 point using a +\textheight9in % 6X9 text definition. This reduces nicely. We +\topmargin-12pt % have found that virtually all stray toner marks +\oddsidemargin.75in % are essentially erased out in the reduction process. +\evensidemargin.75in +\headheight11pt +\headsep7mm +\pagestyle{empty} +\thispagestyle{plain} + +% CREATE BOXES +\newbox\topheadlinebox % These are the boxes which are utilized in +\newbox\titlebox % the various centering processes defined below. +\newbox\bottomheadlinebox +\newbox\authorbox +\newbox\affilbox + +% DEFINE VARIOUS ARTICLE SPECIFIC VARIABLES +\def\vol#1{\edef\vol{#1}} % Volume number +\def\no#1{\edef\no{#1}} % Number within the Volume +\def\issue#1{\edef\issue{#1}} % Issue (Fall or Spring) +\def\yr#1{\edef\yr{#1}} % Year of publication +\def\runhead#1{\edef\runhead{#1}} % Running header (Author: Title) + +% DEFINE PAGE HEADERS \evenpageheader and \oddpageheader +% A variation from HEADERFOOTER.STY, copyright (c) 1987 by Stephen Gildea +\newcommand\evenpageheader[3]{\def\@evenhead + {\rlap{#1}\hss{#2}\hss\llap{#3}}} +\newcommand\oddpageheader[3]{\def\@oddhead + {\rlap{#1}\hss{#2}\hss\llap{#3}}} + +% PAGE HEADERS AND LEAD FOOTNOTE +\evenpageheader{\bf \thepage}{\large\em Journal of Business Strategies} +{\bf Vol.~\vol, No.~\no} +\oddpageheader{\bf \issue\ \yr}{\large\em \runhead}{\bf \thepage} +\long\def\leadfn{\footnotetext[0]{\hspace*{-6mm}\small {\em Journal of Business +Strategies}, +Volume \vol, Number \no\ (\issue\ \yr)}} + +% CENTERING COMMAND \CenterBox +% A variation from VERTEX.TEX, copyright (c) 1987 by Hal R. Varian +%% #1 - name of box +%% #2 - font used in box +%% #3 - baselineskip for box +%% #4 - text of box, separated by \cr +\def\CenterBox#1#2#3#4{% +\global\setbox#1=\vbox{\baselineskip=#3\halign{#2\hfil##\hfil\cr#4\crcr}}} + +% SPECIAL FONT DEFINITIONS USED IN CENTERING OF LEAD PAGE ELEMENTS +\def\titlefont{\Large\sc} +\def\authorfont{\large\sl} +\def\affilfont{\twlrm} + +% MAKE NEEDED CENTERED ELEMENTS FOR LEAD PAGE +\def\CenteredTitle#1{ + \CenterBox + \titlebox + \titlefont + {20pt} + {#1}} + +\def\CenteredAuthor#1{ + \CenterBox + \authorbox + \authorfont + \normalbaselineskip + {#1}} + +\def\CenteredAffil#1{ + \CenterBox + \affilbox + \affilfont + {14pt}%\normalbaselineskip + {#1}} + +% MAKE CENTERED RULES FOR ABOVE AND BELOW TITLEBOX +%% Upper rule +\global\setbox\topheadlinebox\vbox{\baselineskip\normalbaselineskip +\halign{\titlefont\hfil#\hfil\cr{\vrule width6in height.7mm}\crcr}} +%% Lower rule +\global\setbox\bottomheadlinebox\vbox{\baselineskip\normalbaselineskip +\halign{\titlefont\hfil#\hfil\cr{\vrule width6in height.7mm}\crcr}} + +% IF MULTIPLE AUTHORS +\newif\ifauthorii +\global\authoriifalse +\newif\ifauthoriii +\global\authoriiifalse + +\def\CenteredAuthorII#1{ +\global\authoriitrue +\newbox\authoriibox + \CenterBox + \authoriibox + \authorfont + \normalbaselineskip + {#1}} + +\def\CenteredAffilII#1{ +\newbox\affiliibox + \CenterBox + \affiliibox + \affilfont + {14pt}%\normalbaselineskip + {#1}} + +\def\CenteredAuthorIII#1{ +\global\authoriiitrue +\newbox\authoriiibox + \CenterBox + \authoriiibox + \authorfont + \normalbaselineskip + {#1}} + +\def\CenteredAffilIII#1{ +\newbox\affiliiibox + \CenterBox + \affiliiibox + \affilfont + {14pt}%\normalbaselineskip + {#1}} + +% DEFINE AND PLACE IN BOXES: TITLE, AUTHOR, AND AFFILIATION +\long\def\title#1{\CenteredTitle{#1}} +\def\author#1{\CenteredAuthor{#1}} +\long\def\affil#1{\CenteredAffil{#1}} +\def\authorii#1{\CenteredAuthorII{#1}} +\long\def\affilii#1{\CenteredAffilII{#1}} +\def\authoriii#1{\CenteredAuthorIII{#1}} +\long\def\affiliii#1{\CenteredAffilIII{#1}} + +% DEFINE \leadpagelayout TO INVOKE THE LEAD PAGE LAYOUT +\def\leadpagelayout{{\vbox{ +\@@line{\hfil\box\topheadlinebox\hfil} % Centered line +\vskip.3pc +\@@line{\hfil\box\titlebox\hfil} % Centered title +\vskip-.2pc +\@@line{\hfil\box\bottomheadlinebox\hfil} % Centered line +\vskip.8pc +\@@line{\hfil\box\authorbox\hfil} % Author's name (centered) +\vskip.2pc +\@@line{\hfil\box\affilbox\hfil} % Author's affiliation (centered) +\ifauthorii +{\vskip.6pc +\@@line{\hfil\box\authoriibox\hfil} % 2nd Author's name (centered) +\vskip.2pc +\@@line{\hfil\box\affiliibox\hfil}} % 2nd Author's affiliation (centered) +\fi +\ifauthoriii +{\vskip.6pc +\@@line{\hfil\box\authoriiibox\hfil} % 3rd Author's name (centered) +\vskip.2pc +\@@line{\hfil\box\affiliiibox\hfil}} % 3rd Author's affiliation (centered) +\fi +\vskip1pc}} +\leadfn} % Generate lead-page footnote diff --git a/macros/latex209/contrib/misc/jmb.sty b/macros/latex209/contrib/misc/jmb.sty new file mode 100644 index 0000000000..7c3240d726 --- /dev/null +++ b/macros/latex209/contrib/misc/jmb.sty @@ -0,0 +1,62 @@ +% jmb.sty is identical to apalike.sty 1989 June 19 +% +% apalike.sty style, used in conjunction with apalike.bst, +% will produce an apa-like bibliography style: +% +% 1) Bibliography entries formatted alphabetically, last name +% first, each entry having a hanging indentation and no label. +% 2) References in the following formats: +% (Author, 1986) +% (Author and Author, 1986) +% (Author et al., 1986). +% 3) Multiple references in the form (Author1, 1986; Author2, 1987) +% +% To be used as an optional argument to the \documentstyle command; for example +% \documentstyle[11pt,apalike]{book} +% +% 16-Sep-86, original version by Susan King and Oren Patashnik. +% 13-Oct-87 changes: +% Fixed bug in last line by adding the {} that disappeard when +% the \hbox{} was removed from the pre-APALIKE definition; +% added club and widow penalties; +% patched the \newblock LaTeX bug from `-.07em' to simply `.07em'; +% and made this work for document styles that don't define `chapter'. +% +% +% Use parens instead of brackets for \cite, and no label in the bibliography +% +\def\@cite#1#2{(#1\if@tempswa , #2\fi)} +\def\@biblabel#1{} + +% Set length of hanging indentation for bibliography entries +% +\newlength{\bibhang} +\setlength{\bibhang}{2em} + +% \thebibliography environment depends on whether or not `chapter's can exist +% +\@ifundefined{chapter}{\def\thebibliography#1{\section*{References\@mkboth + {REFERENCES}{REFERENCES}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}}% +{\def\thebibliography#1{\chapter*{Bibliography\@mkboth + {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list + {\relax}{\setlength{\labelsep}{0em} + \setlength{\itemindent}{-\bibhang} + \setlength{\leftmargin}{\bibhang}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax}} + +% `; ' goes between cites, and there's no \hbox around individual cites +% +\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}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} diff --git a/macros/latex209/contrib/misc/joe.sty b/macros/latex209/contrib/misc/joe.sty new file mode 100644 index 0000000000..00b9fae0f5 --- /dev/null +++ b/macros/latex209/contrib/misc/joe.sty @@ -0,0 +1,151 @@ +% Article sub-style JOE.STY 1-MAR-1989 17:17:32 +% Updated 2-FEB-1990 09:51:35 +\typeout{Article documentstyle option 'joe' for the Journal of Economics.} + +% BASIC SETUPS AND LAYOUTS +\ds@twoside % First, we use two-sided layout for the JoE. +\twocolumn % Second, impose two columns +\sloppy % TeX's sloppy looks better than LaTeX's fussy! +\flushbottom % Flushbottom since this is for production +\parindent 1em % Indents, margins, widths, and seps +\leftmargini 2em % " " " " " " " " " " " " " " " " " +\leftmarginv .5em % " " " " " " " " " " " " " " " " " +\leftmarginvi .5em % " " " " " " " " " " " " " " " " " +\marginparwidth 48pt % V V V V V V V V V V V V V V V V V +\marginparsep 10pt % --------------------------------- +\voffset-.4in % Offset the page to fit +\parskip=0pt plus 1pt % Allow for stretchy paragraph skips +\textwidth6.6in % Text is 6.6 inches wide +\textheight9.1in % Text is 9.1 inches high +\oddsidemargin.2in % Offset for odd-numbered pages +\evensidemargin.1in % Offset for odd-numbered pages +\headheight8.2pt % Allow 7.1 points for header text +\headsep4.5mm % Separate text from headers 4.4 millimeters +\columnsep.3in % Separate columns .3 inches +\arraycolsep 2.5pt % Separate columns in arrays by 5 pt total +\nofiles % Don't use .AUX files, so why create them? +\renewcommand{\textfraction}{.12} +\renewcommand{\floatpagefraction}{.8} +\renewcommand{\dblfloatpagefraction}{.8} +\newskip\holdsep % New skip for listing environments +\holdsep 4.5pt plus 2pt minus 1pt % which is defined to standard \itemsep +\def\shortseps{\itemsep=\parskip} % Use \shortseps to get \itemsep of \parskip +\def\normalseps{\itemsep=\holdsep} % Use \normalseps to get standard \itemsep +\pagestyle{empty} % Empty pagestyle, but we will customize below + +% DEFINE ARTICLE-SPECIFIC HEADING INFORMATION +\def\vol#1{\edef\vol{#1}} % Volume number +\def\yr#1{\edef\yr{#1}} % Year of publication +\def\runhead#1{\edef\runhead{#1}} % Running header (Author: Title) + +% \prelim OPTION TO IDENTIFY PROOF DRAFTS AWAITNG FINAL EDITORIAL APPROVAL +\newif\ifprelim +\global\prelimfalse +\def\prelim{\global\prelimtrue\typeout{Proof Draft}} + +% DEFINE PAGE HEADERS \evenpageheader AND \oddpageheader +% A variation from HEADERFOOTER.STY, copyright (c) 1987 by Stephen Gildea +\newcommand\evenpageheader[3]{\def\@evenhead + {\rlap{#1}\hss{#2}\hss\llap{#3}}} +\newcommand\oddpageheader[3]{\def\@oddhead + {\rlap{#1}\hss{#2}\hss\llap{#3}}} + +% PAGE HEADERS AND LEAD FOOTNOTE +\evenpageheader{\bf \thepage}{\large\sl The Journal of Economics, \vol , \yr} +{\ifprelim{\bf Proof Draft} \else {}\fi} +\oddpageheader{\ifprelim{\bf Proof Draft} \else {}\fi}{\large\sl \runhead}{\bf + \thepage} + +% DEFINE NECESSARY DEMERITS AND OTHER STUFF TO MAKE IT LOOK RIGHT +\doublehyphendemerits=100000 % No consecutive line hyphens +\brokenpenalty=10000 % No broken words across columns/pages +\widowpenalty=10000 % No widows at bottom of page +\clubpenalty=10000 % No orphans at top of page + +% DEFINE \leadpagelayout +\date{} +\let\school\thanks +\let\leadpagelayout\maketitle +\let\section\subsection +\def\thesubsection{\Roman{subsection}.} +\let\subsection\subsubsection +\def\thesubsubsection{\Alph{subsubsection}.} +\let\subsubsection\paragraph +\def\theparagraph{\arabic{paragraph}.} + +% DECALIGN.STY included directly in whole +%\typeout{Document Style option 'decalign'. Released 1 October 1987} +\def\dsep{} % This is necessary for some unknown reason. +\def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4 \else + \ifnum \@lastchclass=3 5 \else + \z@ \if #1c\@chnum \z@ \else + \if #1l\@chnum \@ne \else + \if #1r\@chnum \tw@ \else + \@chclass \if #1|\@ne \else + \if #1@\tw@ \else + \if #1p3 \else + \if #1d7 \else + \ifnum \@lastchclass=7 8 \else \z@ \@preamerr 0\fi + \fi \fi \fi \fi \fi \fi \fi \fi +\fi} +% Additions to these macros handle the extra classes. +\def\@mkpream#1{\@firstamptrue\@lastchclass6 +\def\@preamble{}\def\protect{\noexpand\protect\noexpand}\let\@sharp\relax +\let\@startpbox\relax\let\@endpbox\relax +\@expast{#1}\expandafter\@tfor \expandafter + \@nextchar \expandafter:\expandafter=\@tempa\do{\@testpach\@nextchar + \ifnum \@lastchclass=7 \ifnum \@chclass=8 \else\@classviii{.}\fi\fi + \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii + \or \@classiv \or\@classv \or \or\@classvii \or\@classviii{\@nextchar}% + \fi\@lastchclass\@chclass}% +\ifcase \@lastchclass \@acol + \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi} +\def\@tabular{\leavevmode \hbox \bgroup $\let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv + \let\@classviii\@tabclassviii + \let\\\@tabularcr\@tabarray} +\def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz + \let\@classiv\@arrayclassiv + \let\@classviii\@arrayclassviii + \let\\\@arraycr\def\@halignto{}\@tabarray} +\def\@arrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or + \or \or \@addamp \or + \@acolampacol \or \@firstampfalse \@acol \or + \@acolampacol \or \@acolampacol + \fi +\edef\@preamble{\@preamble + \ifcase \@chnum + \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil + \or \hfil$\relax\@sharp$\fi}} +\def\@tabclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or + \or \or \@addamp \or + \@acolampacol \or \@firstampfalse \@acol \or + \@acolampacol \or \@acolampacol + \fi +\edef\@preamble{\@preamble + \ifcase \@chnum + \hfil\ignorespaces\@sharp\unskip\hfil + \or \ignorespaces\@sharp\unskip\hfil + \or \hfil\hskip\z@ \ignorespaces\@sharp\unskip\fi}} +\def\@classi{\ifcase \@lastchclass \@acol \@arrayrule \or + \@addtopreamble{\hskip \doublerulesep}\@arrayrule\or + \or \or \@arrayrule \or + \@acol \@arrayrule \or \@arrayrule \or + \@acol \@arrayrule \or \@acol \@arrayrule + \fi} +\def\@classiii{\ifcase \@lastchclass \@acolampacol \or + \@addamp\@acol \or + \or \or \@addamp \or + \@acolampacol \or \@ampacol \or + \@acolampacol \or \@ampacol + \fi} +\def\@classvii{\ifcase \@lastchclass \@acolampacol \or + \@addamp\@acol \or + \or \or \@addamp \or + \@acolampacol \or \@ampacol \or + \@acolampacol \or \@acolampacol \fi} +\def\@tabclassviii#1{\@addtopreamble{\catcode`#1=4 \hfil\ignorespaces\@sharp + \unskip\@sharp\unskip\hfil}} +\def\@arrayclassviii#1{\@addtopreamble{\catcode`#1=4 \hfil$\relax\@sharp$& + $\relax.\@sharp$\hfil}} diff --git a/macros/latex209/contrib/misc/kalender.tex b/macros/latex209/contrib/misc/kalender.tex new file mode 100644 index 0000000000..cb5b2293f7 --- /dev/null +++ b/macros/latex209/contrib/misc/kalender.tex @@ -0,0 +1,327 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Tages-Termin-Kalender erstellen % +% von Andreas Schrell % +% Windhoevel 2 % +% 5600 Wuppertal 2 % +% Tel. 0202/666889 % +% E-Mail: ma107 at dhafeu11.bitnet % +% Version 1.0 vom 9.10.1991 % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentstyle{article} + +% +% Wochentag zu einem Datum ermitteln +% +\makeatletter +\newcount\@tag \newcount\@monat \newcount\@jahr +\newcount\@ja \newcount\@jb \newcount\@ha +\newcount\@hb \newcount\@hc \newcount\@b \newcount\@f +\newcount\Tag \newcount\Monat \newcount\Jahr \newcount\WT +\newcount\Woche \newcount\JT \newcount\RT \newcount\MAXT +\newcount\WTM + +\def\Wochentag #1.#2.#3.{\@tag=#1\@monat=#2\@jahr=#3 +\Tag#1\Monat#2\Jahr#3 +\ifnum\@jahr<100\advance\@jahr by 1900\else\fi +\ifnum\@monat<3 % if monat<3 + \advance\@monat by 10 % monat:=monat+10 + \advance\@jahr by -1 % jahr:=jahr-1 +\else % else + \advance\@monat by -2 % monat:=monat-2 +\fi % fi +\@ja=\@jahr\divide\@ja by 100 % ja:=jahr/100 +\@jb=-\@ja\multiply\@jb by 100 +\advance \@jb by \@jahr % jb:=jahr-ja*100 +\@ha=\@monat\multiply\@ha by 13 +\advance\@ha by -1 % ha:=13*monat-1 +\divide\@ha by 5 % ha:=ha/5 +\@hb=\@jb\divide\@hb by 4 % hb:=jb/4 +\@hc=\@ja\divide\@hc by 4 % hc:=ja/4 +\@b=\@ha\advance\@b by \@hb +\advance\@b by \@hc % b:=ha+hb+hc +\@f=\@b\advance\@f by \@jb +\advance\@f by \@tag % f:=b+jb+tag +\multiply \@ja by 2 +\advance\@f by -\@ja % f:=f-2*ja +\maketag} + +\newif\ifFeiertag +\newif\ifMK \MKfalse +\def\FTT #1 #2 #3 {\ifnum\Monat=#2 \ifnum\Tag=#1 + \Feiertagtrue\def\Feiertagname{#3}% +\fi\fi} +\def\FTM #1 #2 #3 {\ifnum\Monat=#2 \ifnum\WTC=#1 + \Feiertagtrue\def\Feiertagname{#3}% +\fi\fi} +\def\testFeiertage{\Feiertagfalse + \ifMK\let\FT\FTM\else\let\FT\FTT\fi + \FT 1 1 Neujahr + \FT 1 5 Maifeiertag + \FT 3 10 {Tag der deutschen Einheit} + \FT 1 11 Allerheiligen + \FT 25 12 1.~Weihnachtstag + \FT 26 12 2.~Weihnachtstag +\ifnum\Jahr=1991 + \FT 20 11 Bu\ss-~und~Bettag +\fi +\ifnum\Jahr=1992 + \FT 17 4 Karfreitag + \FT 19 4 Ostern + \FT 20 4 Ostern + \FT 28 5 Himmelfahrt + \FT 7 6 Pfingsten + \FT 8 6 Pfingsten + \FT 18 6 Fronleichnam + \FT 18 11 Bu\ss-~und~Bettag +\fi +\ifnum\Jahr=1993 + \FT 9 4 Karfreitag + \FT 11 4 Ostern + \FT 12 4 Ostern + \FT 20 5 Himmelfahrt + \FT 30 5 Pfingsten + \FT 31 5 Pfingsten + \FT 10 6 Fronleichnam + \FT 17 11 Bu\ss-~und~Bettag +\fi +\ifnum\Jahr=1994 + \FT 1 4 Karfreitag + \FT 3 4 Ostern + \FT 4 4 Ostern + \FT 12 5 Himmelfahrt + \FT 22 5 Pfingsten + \FT 23 5 Pfingsten + \FT 2 6 Fronleichnam + \FT 16 11 Bu\ss-~und~Bettag +\fi +} + +\def\MAXTberechnen{ + \MAXT= + \ifcase\Monat + -1\or 31\or 28\or 31\or 30\or 31\or 30\or 31\or 31\or + 30\or 31\or 30\or 31\else \ddt \fi\relax + \ifnum\Monat=2 + \@ha=\Jahr \divide\@ha by 4 \multiply \@ha by 4 + \ifnum\@ha=\Jahr \advance \MAXT by 1\fi + \@ha=\Jahr \divide\@ha by 100 \multiply \@ha by 100 + \ifnum\@ha=\Jahr \advance \MAXT by -1\fi + \@ha=\Jahr \divide\@ha by 400 \multiply \@ha by 400 + \ifnum\@ha=\Jahr \advance \MAXT by 1\fi + \fi\relax} + +\def\maketag{\@ha=\@f +\divide\@ha by 7 +\multiply\@ha by 7 +\advance\@f by -\@ha % f:= f mod 7 +\WT=\@f +\edef\Tagname{\ifcase\@f + Sonntag\or Montag\or Dienstag\or Mittwoch\or Donnerstag\or + Freitag\or Samstag\else ????????\fi} +\edef\Monatname{\ifcase\Monat \ddt\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or + Dezember\else ????????\fi}} + +\def\nexttag{\advance\@f by 1 + \advance\JT by 1 \advance\RT by -1 + \advance\Tag by 1 + \ifnum\Tag>\MAXT + \Tag=1 + \advance\Monat by 1 + \ifnum\Monat>12 \Monat=1 \advance\Jahr by 1 \fi + \MAXTberechnen + \fi\relax + \maketag + \ifnum\WT=1\advance\Woche by 1\fi\relax + \ifnum\Tag=1 \WTM=\WT\fi} + +\newcount\Malc \newcount\WTC + +\newbox\Monatsbox + +\def\Monatskalender{\maketag\MKtrue + \WTC=\WTM \ifnum\WTC=0\relax\WTC=7\fi + \global\Malc=\WTC +\setbox\Monatsbox=\vbox{\hsize=4cm\small + \noindent\setbox0\hbox{00}\underline{\strut + \hbox to \wd0{\hss Mo\hss}\ \ \hbox to \wd0{\hss Di\hss}\ \ + \hbox to \wd0{\hss Mi\hss}\ \ \hbox to \wd0{\hss Do\hss}\ \ + \hbox to \wd0{\hss Fr\hss}\ \ \hbox to \wd0{\hss Sa\hss}\ \ + \hbox to \wd0{\hss\bf So\hss}}\vskip 1mm + \noindent + \loop + \ifnum\WTC>1\relax + \advance\WTC by -1 + \phantom{00}\ \ + \repeat + \WTC=1 + \loop + {\testFeiertage + \ifFeiertag\global\let\FTF\it\else\global\let\FTF\relax\fi}% + \ifnum\WTC<\MAXT\relax + {\ifnum\Malc=7\bf\fi\FTF + \ifnum\WTC<10\relax\phantom{0}\fi + \ifnum\Tag=\WTC\underline{\the\WTC}\else\the\WTC\fi}% + {\ifnum\Malc=7\relax \\ \global\Malc=0\else\ \ \fi}% + \global\advance\Malc by 1 + \advance\WTC by 1 + \repeat{\ifnum\Malc=7\bf\fi\FTF + \ifnum\Tag=\WTC\underline{\the\WTC}\else\the\WTC\fi}\par}\MKfalse} + +\arrayrulewidth=0.00333in +\tabcolsep=2pt \doublerulesep=0pt +\fboxrule=\arrayrulewidth +\fboxsep=-\fboxrule +\pagestyle{empty} +\oddsidemargin=-1cm +\topmargin=-1cm +\advance\vsize by 1cm +\headheight=0pt +\headsep=0pt + +\def\Initialisierung{\newbox\BoxA + \setbox\BoxA\hbox{\begin{tabular*}{12cm}% + {|l|@{\extracolsep{\fill}}l@{\extracolsep{0pt}}*{6}{|c}|} + \hline + \vrule height11pt width0pt + Uhr & T\"atigkeit & P & T & S & Pri & Zeit & ok \\ + \hline\hline + \phantom{0}\lower1pt\hbox{7:}\phantom{00} + & \hbox to 7cm{\hss} & & & & & & \\ \hline + \phantom{0}\lower1pt\hbox{8:} & & & & & & & \\ \hline + \phantom{0}\lower1pt\hbox{9:} & & & & & & & \\ \hline + \lower1pt\hbox{10:} & & & & & & & \\ \hline + \lower1pt\hbox{11:} & & & & & & & \\ \hline + \lower1pt\hbox{12:} & & & & & & & \\ \hline + \lower1pt\hbox{13:} & & & & & & & \\ \hline + \lower1pt\hbox{14:} & & & & & & & \\ \hline + \lower1pt\hbox{15:} & & & & & & & \\ \hline + \lower1pt\hbox{16:} & & & & & & & \\ \hline + \lower1pt\hbox{17:} & & & & & & & \\ \hline + \lower1pt\hbox{18:} & & & & & & & \\ \hline + \lower1pt\hbox{19:} & & & & & & & \\ \hline + \lower1pt\hbox{20:} & & & & & & & \\ \hline + \lower1pt\hbox{21:} & & & & & & & \\ \hline + \lower1pt\hbox{22:} & & & & & & & \\ \hline \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \multicolumn{2}{|l|}{} & & & & & & \\ \hline + \end{tabular*}}} + +\def\Tageskalender{\Monatskalender + \testFeiertage + \vbox{\ifFeiertag\vglue-7mm\fi + \ifFeiertag\hbox{\framebox{\vbox to 7mm{\vss\hbox to 12cm{\hss + \bf\Feiertagname\hss}\vss}}}\nointerlineskip\fi + \hbox{% + \framebox{\vbox to 7mm{\vss\hbox to 4cm{\hss + \Large\bf\vrule height13pt width0pt\Tagname\hss}\vss}}% + \framebox{\vbox to 7mm{\vss\hbox to 8cm{\hss + \Large\bf\vrule height13pt width0pt\relax \the\Tag. + \Monatname\ (\the\Monat)\ \ \the\Jahr\hss}\vss}}}% + \nointerlineskip + \hbox{\bf + \framebox{\vbox to 7mm{\vss + \hbox to 4cm{\hss\vrule height12pt width0pt + \the\Woche. Woche\hss}\vss}}% + \framebox{\vbox to 7mm{\vss\hbox to 4cm{\hss\vrule height12pt width0pt + \the\JT. Tag\hss}\vss}}% + \framebox{\vbox to 7mm{\vss\hbox to 4cm{\hss\vrule height12pt width0pt + \the\RT\ Resttage + \hss}\vss}}}% + \vskip 3mm + \copy\BoxA + \vskip 3mm + \hbox{\vbox{\hbox{% + \framebox{\vbox to 2cm{\hbox to 7cm{\ Gedenktage: + \vrule height11pt width0pt\strut\hss} + \hrule height 0.00333in\vss + \hrule height 0.00333in\vss + \hrule height 0.00333in\vss + \hrule height 0.00333in\vss +}}}% + \offinterlineskip + \hbox{% + \framebox{\vbox to 2cm{\hbox to 7cm{\ Notizen: + \vrule height11pt width0pt\strut\hss} + \hrule height 0.00333in\vss + \hrule height 0.00333in\vss + \hrule height 0.00333in\vss + \hrule height 0.00333in\vss +}}}}% + \framebox{\vbox to 4cm{\vss + \hbox to 5cm{\hss\vbox{\hsize=4cm + \hbox{\bf\Monatname\ \the\Jahr}\vskip 4mm + \copy\Monatsbox\par}\hss}\vss}}}}% +} + + +%%%%%%%%%%%%%%%% +% Es geht los: % +%%%%%%%%%%%%%%%% + +\message{Anfangsdatum (xx.xx.xxxx): } +\read-1 to \AFD + +\newcount\AT +\message{Anzahl der Tage (eine Seite pro Tag!): } +\read-1 to \AZT +\AT=\AZT + +\newcount\startt \newcount\startm +\newif\ifweiter + +\expandafter\Wochentag \AFD. + +\startt=\Tag\startm=\Monat +\Tag=1\Monat=1\JT=1\Woche=1 +\Wochentag 1.1.\the\Jahr. +\MAXTberechnen + +\RT=364 +\@ha=\Jahr \divide\@ha by 4 \multiply \@ha by 4 +\ifnum\@ha=\Jahr \advance \RT by 1\fi +\@ha=\Jahr \divide\@ha by 100 \multiply \@ha by 100 +\ifnum\@ha=\Jahr \advance \RT by -1\fi +\@ha=\Jahr \divide\@ha by 400 \multiply \@ha by 400 +\ifnum\@ha=\Jahr \advance \RT by 1\fi + +\message{Ich berechne die Daten des ersten Tages. } +\message{Bitte etwas Geduld. } +\loop +{\global\weitertrue + \ifnum\Monat=\startm + \ifnum\Tag=\startt + \global\weiterfalse + \fi + \fi}% +\ifweiter %\fi + \nexttag +\repeat + +\Initialisierung + +\makeatother + +\begin{document} + +\loop +\ifnum\AT>0 %\fi + \advance\AT by -1 + \message{(\Tagname, \the\Tag. \Monatname\space \the\Jahr, + noch zu setzen: \the\AT\space\ifnum\AT=1 Tag\else Tage\fi) ........ } + \Tageskalender\clearpage + \nexttag +\repeat + +\end{document} diff --git a/macros/latex209/contrib/misc/labels.sty b/macros/latex209/contrib/misc/labels.sty new file mode 100644 index 0000000000..2b2f4e5022 --- /dev/null +++ b/macros/latex209/contrib/misc/labels.sty @@ -0,0 +1,80 @@ +%%% ====================================================================== +%%% @LaTeX-style{ +%%% filename = "labels.sty", +%%% version = "1.0", +%%% date = "17 July 1992", +%%% time = "13:39:24.74 +0100", +%%% author = "Norman Gray", +%%% address = "Department of Physics +%%% Open University +%%% Milton Keynes +%%% MK7 6AA, UK", +%%% e-mail = "N.O.Gray@open.ac.uk (Internet)", +%%% telephone = "+44 908 652279", +%%% FAX = "+44 908 653744", +%%% archived = "Aston, SHSU", +%%% keywords = "Labels, cross-referencing", +%%% abstract = "If this style file is included amongst the +%%% \documentstyle options, all uses of the \label +%%% command within the LaTeX file will have the label +%%% name printed in the margin (except when used in +%%% a \caption, when it appears in the text).", +%%% codetable = "ISO/Ascii", +%%% checksum = "60488 80 330 3319", +%%% docstring = "Display label names in margin +%%% +%%% 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." +%%% } +%%% ====================================================================== + +\let\@@eqnnum=\@eqnnum +\def\@eqnnum{\@@eqnnum +% + |\@eqnnum| will produce a note, sticking into the margin beside +% the equation number, which has the equation's label and number. +% |\labeln@me| is initialised to |\relax|, redefined within the +% |\label| macro, and reset to |\relax| here. If it's already equal +% to |\relax| here, the equation number hasn't been labelled, and so +% `???' is put in the margin. \- +\if\labeln@me\relax + \margintext{???}% +\else + \margintext{\labeln@me}\global\def\labeln@me{\relax}% +\fi} + +\let\@@makecaption\@makecaption +\let\@label\label +\def\@gobblethree#1#2#3{} +\def\prlabelname#1{% expansion is label name #1 with all catcodes `other' +\expandafter\expandafter\expandafter\@gobblethree + \expandafter\string\csname r@#1\endcsname} + % use \r@#1, rather then just \#1 to avoid defining new control sequence + +\long\def\@makecaption#1#2{{\def\label##1{{\nintt\{\prlabelname{##1}\}\space + }\@label{##1}}\@@makecaption{#1}{#2}}} +\def\label#1{\@bsphack\@label{#1}% +\ifmmode + \xdef\labeln@me{\prlabelname{#1}}% label name produced with equation number +\else +{\setbox0=\vbox to 0pt{\vss\hbox to \hsize{\hfill + \margintext{\prlabelname{#1}}}}\dp0=0pt% +\ifvmode + \nointerlineskip\box0\nobreak % fix this box to next one +\else + \vadjust{\box0\nobreak}% +\fi}% +\fi +\@esphack} + +%\if@twoside +% \def\margintext#1{\ifodd\c@page\rlap{\nintt\quad\{#1\}}\else +% \llap{\nintt\{#1\}\quad\hskip\textwidth}\fi} +%\else +% \def\margintext#1{\rlap{\nintt\quad\{#1\}}} +%\fi +\def\margintext#1{\rlap{\sevit\quad\{#1\}}} +\global\def\labeln@me{\relax} diff --git a/macros/latex209/contrib/misc/lablst.sty b/macros/latex209/contrib/misc/lablst.sty new file mode 100644 index 0000000000..bacd7e8787 --- /dev/null +++ b/macros/latex209/contrib/misc/lablst.sty @@ -0,0 +1,55 @@ +% LABLST.STY -- A document style option for printing label definitions at +% the end of the document. Use with + +% \documentstyle[11pt,lablst]{article} + +% for example. WARNING: This redefines \end{document} which may break +% some document styles. + +% This borrows heavily from: +% LABLST.TEX -- A LaTeX input file for printing label definitions. +% Copyright (c) 1985 by Leslie Lamport (5 January 1985). + +% Putting this functionality into a style option turns out to be much more +% convenient for users of TeXtures, because of the way files are organized +% with that system. + +% This file was put together on October 18, 1989 by: +% Charles Karney Phone: +1 609 243 2607 +% Plasma Physics Laboratory FAX: +1 609 243 2160 +% Princeton University MFEnet: Karney@PPC.MFENET +% PO Box 451 Internet: Karney%PPC.MFENET@CCC.NMFECC.GOV +% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFENET@LBL.BITNET + + +\def\enddocument{\@checkend{document}\clearpage\begingroup +\if@filesw \immediate\closeout\@mainaux +\@lablst % This line is the sole modification to \enddocument +\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} + +\def\@lablst{ + \parindent 0pt \parskip 0pt + \xpt \baselineskip 12pt + \newwrite \labfile \relax + \immediate\openout \labfile =\jobname.lab\relax + {\def\toc{toc} + \def\@writefile##1##2{\def\temp{##1}\ifx\temp\toc + \immediate\write\labfile{##2}\fi} + \def\newlabel##1##2{\immediate\write\labfile{\string\newlabel{##1}{##2}}} + \def\bibcite##1##2{\immediate\write\labfile{\string\bibcite{##1}{##2}}} + \makeatletter + \input \jobname.aux } + \immediate\closeout\labfile + \def\newlabel##1##2{\par \hbox to \textwidth + {\hfill\makebox[10em][l]{\tt ##1}\makebox[3.5em][l]{\first + ##2}\hspace{1em}Page:\makebox[3em][r]{\second ##2}\hspace{4em}}} + \def\first##1##2{##1} + \def\second##1##2{##2} + \def\bibcite##1##2{\par\makebox[2in][l]{\tt ##1}[##2]} + \input \jobname.lab + \clearpage +} +\endinput diff --git a/macros/latex209/contrib/misc/laioobr.sty b/macros/latex209/contrib/misc/laioobr.sty new file mode 100644 index 0000000000..2749aa7e35 --- /dev/null +++ b/macros/latex209/contrib/misc/laioobr.sty @@ -0,0 +1,800 @@ +% laioobr.sty +% briefstijl voor laioo +% +% Auteur: Werenfried Spit +% First Version: 2 januari 1990 +% Complete revision, including work from brief.sty +\def\stijlversie{1.3}\def\stijldatum{6 november 1990} +\gdef\at{\makeatletter @\makeatother} +% +% 1.3 verbeteringen uit brief.sty <1.1> ingevoerd (WS) +% +\typeout{Document Style 'LaiooBrief'. Versie <\stijlversie>, <\stijldatum>} + +\overfullrule 0pt +\def\@ptsize{0} +\@namedef{ds@10pt}{\def\@ptsize{0}} +\@namedef{ds@11pt}{\def\@ptsize{1}} +\@namedef{ds@12pt}{\def\@ptsize{2}} +\@namedef{ds@twoside}{\@twosidetrue} +\@twosidefalse +\def\ds@draft{\overfullrule 15pt} +\@namedef{ds@a4}{\message{De A4-optie is niet nodig: ik doe de papierafmetingen zelf.}} +\@namedef{ds@A4}{\relax} +\@namedef{ds@dutch}{\message{De dutch-optie is niet nodig}} +\@namedef{ds@dutch}{\relax} +\@namedef{ds@sober}{\message{De sober-optie is niet nodig}} +\@namedef{ds@sober}{\relax} +\@namedef{ds@datehead}{\message{De datehead-optie is niet nodig}} +\@namedef{ds@datehead}{\relax} + + +\newif\if@typhulp \def\ds@typhulp{\@typhulptrue} +\newif\if@streepjes \def\ds@streepjes{\@streepjestrue} +\newif\if@typhulp \def\ds@notyphulp{\@typhulpfalse} +\newif\if@streepjes \def\ds@nostreepjes{\@streepjesfalse} +\newif\if@adresrechts \def\ds@adresrechts{\@adresrechtstrue} +\newif\if@muchfonts \def\ds@muchfonts{\@muchfontstrue} % (WS) ivm ruimte + \def\ds@notmuchfonts{\@muchfontsfalse} +\@muchfontstrue +\newif\if@onepage \def\ds@onepage{\@onepagetrue} +\@onepagefalse + +\newcount\language \language=0 + \input dutch.sty % Nederlands +\def\ds@engels{\language=1 \input english.sty} +\def\ds@USengels{\language=2 \input english.sty} +\def\ds@duits{\language=3 \input german.sty} + +\@options + + + + +\lineskip 1pt \normallineskip 1pt +\def\baselinestretch{1} + +%%%%%%%%%%%%%%%%%%%%%%% point size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifcase \@ptsize\relax +\def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt +\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt} +\def\small{\@setsize\small{11pt}\ixpt\@ixpt +\abovedisplayskip 8.5pt plus 3pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus2pt\belowdisplayshortskip 4pt plus2pt minus 2pt} +\def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt +\abovedisplayskip 6pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 3pt plus 1pt minus +2pt} +\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} +\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt} +\def\large{\@setsize\large{14pt}\xiipt\@xiipt} +\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} +\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt} +\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} +\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} +\or +\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt +\abovedisplayskip 11pt plus3pt minus6pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt +minus3pt} +\def\small{\@setsize\small{12pt}\xpt\@xpt +\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt} +\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt +\abovedisplayskip 8pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 4pt plus 2pt minus +2pt} +\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt} +\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt} +\def\large{\@setsize\large{14pt}\xiipt\@xiipt} +\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} +\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt} +\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} +\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} +\or +\def\@normalsize{\@setsize\normalsize{15pt}\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\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt +\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt} +\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 +\fi +\normalsize + +%%%%%%%%%%%%%%%%%%%%%% Paper Size %%%%%%%%%%%%%%%%%%%%%%%%%% +\oddsidemargin=7.6mm +\evensidemargin=\oddsidemargin +%V rechter marge is volgens NEN 10mm; voor symmetrie lijkt 33 mij beter. +\textwidth=134mm +% \@rightskip=0cm plus 5cm \rightskip=\@rightskip % uitgevulde paragrafen (WS) +\marginparwidth=0pt \marginparsep=0pt \marginparpush=0pt +\topmargin-12.4mm +%V het briefhoofd komt tot 43mm van de bovenkant van het papier +\headheight=15mm \headsep=0mm +\newdimen\@firstheadheight \@firstheadheight=39mm +\newdimen\@otherheadheight \@otherheadheight=\headheight +\newdimen\@otherheadsep \@otherheadsep=2mm +\newdimen\@vervolgsep +\newdimen\footsep \footsep=2.5cm %%analoog aan headsep +\newdimen\@firsttextheight \@firsttextheight=243mm % eigenlijk 203mm: +\newdimen\@firstpageskip \@firstpageskip=40mm +\newdimen\@othertextheight \@othertextheight=243mm +\textheight=\@firsttextheight % op het timmermansoog +\if@onepage\@othertextheight=\textheight\fi +\columnsep 10pt \columnseprule 0pt %V twee koloms brieven? belachelijk! +\raggedbottom %% hm! zonder raggedbottom gaat het slot mis. +\footnotesep 12pt \skip\footins 10pt plus 2pt minus 4pt +\floatsep 12pt plus 2pt minus 2pt +\textfloatsep 20pt plus 2pt minus 4pt +\intextsep 12pt plus 2pt minus 2pt +\dblfloatsep 12pt plus 2pt minus 2pt +\dbltextfloatsep 20pt plus 2pt minus 4pt +\@maxsep 20pt +\@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 + + +\newdimen\longindentation +\longindentation=0.4\textwidth +\newdimen\indentedwidth +\indentedwidth=\textwidth +\advance\indentedwidth -\longindentation + +%%%%%%%%%%%%%%%%%%%%%%%%%%% opening / afsluiting %%%%%%%%%%%%%%%%%%%%% +\if@muchfonts \gdef\refkopfont{\footnotesize\sf} % (WS) + \gdef\kleinvet{\footnotesize\sf} + \gdef\headfont{\large\sf} +\else \font\refkopfont=cmssq8 + \font\kleinvet=cmbx7 + \gdef\headfont{\Large\sf} +\fi + +\def\opening#1{\thispagestyle{firstpage} + \begin{figure}[b]{\vskip \@firstpageskip}\end{figure} % de laatste 4cm moeten leeg zijn ivm de vergrote kop en voet + \adresveld + \prevdepth=-1000pt %% ???? + \vskip 2mm + \if@typhulp \referentieregels \else \referentieblok \fi + \vskip 10mm + \relax#1 + \par\vspace*{4.5mm}\nobreak} +\def\ondertekening#1{\def\fromsig{#1}}\def\fromsig{} +%V een aanzienlijke verbetering op de LL constructie: nu kun je +%V de ondertekening na de afsluiting geven. +\long\def\afsluiting#1{\par\nobreak\vspace{\parskip} + \stopbreaks \noindent + \ifx\@empty\fromsig + \def\ondertekening##1{\def\fromsig{##1} + \hskip\longindentation \parbox{.5\textwidth}{\raggedright + \ignorespaces #1 \\[2\baselineskip] \fromsig \strut}} + \else \parbox{.5\textwidth}{\raggedright + \hskip\longindentation \ignorespaces #1 \\[2\parskip] + \fromsig \strut} + \fi \par} + + +\def\betreft#1{\def\@subject{#1}} \def\@subject{} +\def\ps{\par\startbreaks} +\def\cc#1{\par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\rm cc: }\ignorespaces + #1\strut}\par} +\def\bijlage#1{\par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\rm \bijlagetekst\ }\ignorespaces + #1\strut}\par} +\def\bijlagen#1{\par\noindent + \parbox[t]{\textwidth}{\@hangfrom{\rm \bijlagentekst\ }\ignorespaces + #1\strut}\par} +\def\stopletter{} + + +\def\returnaddress{} +\newcount\labelcount + +\def\startlabels{\labelcount=0 \baselineskip=0pt \lineskip=0pt +\pagestyle{empty} +\let\@texttop=\relax +\topmargin -25mm +\headsep 0pt +\oddsidemargin -35pt +\evensidemargin -35pt +\textheight 297mm +\@colht\textheight \@colroom\textheight \vsize\textheight +\textwidth 210mm +\columnsep 3.79mm +\baselineskip=0pt +\lineskip=0pt +\boxmaxdepth=0pt +\twocolumn\relax} +% \def\mlabel#1#2{\setbox0\vbox{% +% \parbox[b]{3.6in}{\strut\ignorespaces #2}} +% \vbox to 2in{\vss \box0 \vss}} +\def\mlabel#1#2{\setbox0\vbox{% +\parbox[b]{90mm}{\raggedright\strut\ignorespaces #2}} + \vbox to 37.125mm{\vss \box0 \vss}} + +\long\def\brief#1{\newpage + \c@page\@ne + \interlinepenalty=200 \@processto{#1} + \@defrefveld{\@Ad}{\geadresseerdetekst}{\toname} + \ifdim\wd\@Dt=0cm \@defrefveld{\@Dt}{\datumtekst}{\vandaag}\fi +%% misschien headheight opvoeren en textheight verminderen +%% voor de vervolgbladen. Nb: op het eerste blad mag niet met +%% de textheight geklooid worden, omdat dan het adres op de +%% verkeerde hoogte kan komen. + {\setbox\@tempboxa=\vervolghoofd + \@tempdima=\ht\@tempboxa + \advance\@tempdima by -\@otherheadheight + \ifdim\@tempdima>0cm + \global\advance\@otherheadheight by \@tempdima + \global\advance\@othertextheight by -\@tempdima \fi} +%% idem voetregel bekijken + {\setbox\@tempboxa=\vbox{\voetregel} + \global\footskip=\ht\@tempboxa %%moet de teksthoogte niet minder worden? + \global\advance\footskip by \footsep} + } %V maar niet als die er als is!!! +\def\endbrief{\stopletter\@@par\pagebreak\@@par + \if@filesw \begingroup + \def\protect{\string} \let\\=\relax + \def\protect##1{\string##1\space} + \immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname + \\\toaddress}} + \endgroup \fi + %% en nu forceren dat elke brief zijn eigen referenties heeft. + \begingroup \setbox\@tempboxa=\box\@UB \setbox\@tempboxa=\box\@UK + \setbox\@tempboxa=\box\@OK \endgroup + } + +\long\def\brief#1{\newpage + \c@page\@ne + \interlinepenalty=200 \@processto{#1}} +\def\endletter{\stopletter\@@par\pagebreak\@@par +\if@filesw +\begingroup +\def\protect{\string} +\let\\=\relax +\def\protect##1{\string##1\space} +\immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname +\\\toaddress}} +\endgroup +\fi} +\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty + \else \@yproc #1@@@\fi} +\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}} +\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}} +\def\stopbreaks{\interlinepenalty \@M + \def\par{\@@par\nobreak}\let\\=\@nobreakcr + \let\vspace\@nobreakvspace} +\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} +\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else + \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} +\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}} +\def\startbreaks{\let\\=\@normalcr + \interlinepenalty 200\def\par{\@@par\penalty 200}} + +\def\name#1{\def\fromname{#1}} +\def\signature#1{\def\fromsig{#1}} +\def\fromsig{} +\long\def\address#1{\def\fromaddress{#1}} +\def\fromaddress{} +\def\stuknummer#1{ + \def\@stuknummer{#1} + \def\@stuknummerbox{ + \raisebox{18mm}{\hbox to 4\refveldbreedte{ \hfill \fbox{\footnotesize\sf \@stukname ~ #1} }} + }} +\def\@stuknummer{} +\def\@stuknummerbox{} + +%%%%%%%%%%%%%%%%%%%%%%%% adresveld %%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\gdef\@hss{\hskip 0cm plus 1filll minus 1filll\relax} + +\newdimen\adresveldbreedte +\newif\if@antwoordadres +\def\antwoordadres#1{\@antwoordadrestrue\def\@antwoordadres{#1}} +\def\@antwoordadres{} +\def\adresveld{\hbox{}\kern-\topskip + \kern-12mm + \bgroup% \baselineskip=0pt %% dit voorkomt tonnen problemen. + \lineskip=0pt %% tonnetjes. + \if@adresrechts \adresveldbreedte=4\refveldbreedte + \advance\adresveldbreedte by -76mm + \def\@tempa{\moveright 76mm} + \else \let\@tempa\relax \adresveldbreedte=83mm\fi + \setbox\@tempboxa= % geadresseerde plus adres + \vtop{\hsize=\adresveldbreedte \@normalsize + \rightskip=0cm plus \adresveldbreedte + \let\\=\@nobreakcr \toname \\ \toaddress} + \if@typhulp {\footnotesize\sf\hrule \@height.05ex \@width\adresveldbreedte} \fi + \if@antwoordadres\@tempa\vbox to 0cm{ + \hbox to \adresveldbreedte{\kleinvet + \def\\{\unskip\enspace$\bullet$\enspace\ignorespaces}% + \@antwoordadres\hfil}\kern2pt + \hrule \vss}\fi +% \if@typhulp \@tempa\llap{\vbox to 0cm +% {\vskip9mm\streepje\vss}} \fi + \kern 7mm \kern-\ht\@tempboxa \@tempdima=\dp\@tempboxa% + \if \@tempboxa > 27mm \typeout{Overfull addressbox}\fi + \@tempa\box\@tempboxa \kern-\@tempdima + \vskip27mm % totale hoogte adresbox 34mm + \hrule \@height.05ex \@width4\refveldbreedte + \egroup} + + +%%%%%%%%%%%%%%%%%%%%%% referentieblok %%%%%%%%%%%%%%%%%%%%%%%%%% +\newdimen\refveldbreedte +\refveldbreedte=38mm %% 3/2 inch. zie NEN 3516 +\newdimen\halfrefveldbreedte +\halfrefveldbreedte=25mm + +\def\@defrefveld#1#2#3{\setbox#1=\@horrefveld{#2}{#3}} +\def\@defverrefveld#1#2#3{\setbox#1=\@verrefveld{#2}{#3}} +\def\@horrefveld#1#2{\hbox{\refkopfont + \hbox to\halfrefveldbreedte{#1 \hss} + \hbox{#2} }} +% \def\@refveld#1#2{\vtop{\hsize=\refveldbreedte \parskip=0cm +% \lineskiplimit=0cm \baselineskip=12pt +% \rightskip=0cm plus \refveldbreedte +% minus .5\refveldbreedte +% \vbox{\refkopfont\baselineskip=10pt #1\strut} +% #2}} +\def\@verrefveld#1#2{\hbox to\refveldbreedte{ + \vtop{\hsize=\refveldbreedte\parskip=0cm% + \refkopfont% + \hbox to \hsize{#1 \hfil\strut} + \viiipt\sf #2 }\hss}} +\newbox\@UB \newbox\@UK \newbox\@OK \newbox\@Dt \newbox\@Su +\def\uwbriefvan#1{\@defrefveld{\@UB}{\uwbrieftekst}{#1}} +\def\uwkenmerk#1{\@defrefveld{\@UK}{\uwkenmerktekst}{#1}} +\def\onskenmerk#1{\@defrefveld{\@OK}{\onskenmerktekst}{#1}} +\def\onderwerp#1{\@defrefveld{\@Su}{\betrefttekst}{#1}} +\def\datum#1{\def\@tempa{}\def\@tempb{#1}\ifx\@tempa\@tempb + \setbox\@Dt\hbox{ }\else\@defrefveld{\@Dt}{\datumtekst}{#1}\fi\def\@datum{#1}} +%V Datum word geinitialiseerd op \vandaag in \brief +%V als de gebruiker verder niets doet, als hij een leeg argument opgeeft +%V verschijnt er in het geheel geen datum. + +\def\referentieblok{\vbox{\raggedright\refkopfont + {\copy\@Dt} + {\copy\@UB} + {\copy\@UK} + {\copy\@OK} + {\copy\@Su} + }} +\def\referentieregels{\vbox{ + \hbox{\@verrefveld{\uwbrieftekst}{\vskip 9mm} \@verrefveld{\uwkenmerktekst}{} + \@verrefveld{\onskenmerktekst}{} \@verrefveld{\datumtekst}{} \@hss} + \@horrefveld{\betrefttekst:}{} } + \vskip 2mm} + +\newbox\@Ad %V Geadresseerde: geinitialiseerd in \brief +\def\vervolgreferentieregel{\vbox + {\hbox to 4\refveldbreedte + {\normalsize\sf \@datum \hfill \thepage\hss}}} + +%%%%%%%%%%%%%%%%%%%%%%%%% headers / footers %%%%%%%%%%%%%%%%%%%%%%% +\def\briefhoofd{}\def\vervolghoofd{\vbox{}} +\def\oddvervolghoofd{\vbox{}}\def\evenvervolghoofd{\vbox{}} +\def\maakbriefhoofd + {\@ifstar {\@kortvervolgbriefhoofd}{\@langvervolgbriefhoofd}} +\def\@kortvervolgbriefhoofd + #1#2{ \gdef\@stukname{#1} + \@maakbriefhoofd{\xxpt\sf #1}{\normalsize\sf #2} + \def\oddvervolghoofd{\normalsize\sf + \vbox{\hsize=\textwidth %4\refveldbreedte + \hbox to \hsize{\strut\hfil #2} + {\footnotesize\sf \hrule \@height 0.3ex \@width \hsize} + \kern2mm }} + \let\vervolghoofd=\oddvervolghoofd + \def\evenvervolghoofd{\normalsize\sf + \vbox{\hsize=\textwidth %4\refveldbreedte + \hbox to \hsize{#1\strut\hfil} + {\footnotesize\sf \hrule \@height 0.3ex \@width \hsize} + \kern2mm }} +} + +\def\@langvervolgbriefhoofd + #1#2{ \gdef@stukname{#1} + \@maakbriefhoofd{\xxpt\sf #1}{\normalsize\sf #2} + \def\oddvervolghoofd{\normalsize\sf + \vbox{\briefhoofd\vskip2mm + \vbox{}}} + \let\vervolghoofd=\oddvervolghoofd + \def\evenvervolghoofd{\normalsize\sf + \vbox{\briefhoofd\vskip2mm + \vbox{}}} +} +\def\@maakbriefhoofd#1#2{\def\briefhoofd{% + \vbox{\normalsize\sf + \hsize=4\refveldbreedte + \hbox to \hsize{#1\strut\hfil} + \vskip 1.5mm + \hrule \@height.3ex \@width 4\refveldbreedte + \vskip 1.5mm + \hbox to \hsize {\strut \hfill \hbox{#2} } + }}} +\maakbriefhoofd*{LAIOO}{Landelijk AiO Overleg} +\gdef\@stukname{laioo} % vanwege de kleine letters +\newbox\@voetruimte \setbox\@voetruimte=\hbox{} +\newcount\@voetteller +\def\voetregel{\hbox to 4.1\refveldbreedte{\leftskip=0pt\parskip=0pt + \vtop{\footnotesize\sf + \kern-\@firstpageskip + \hrule \@height 0.05ex \@width 4\refveldbreedte + \vskip 2mm + \if\@voetteller>0\copy\@voetruimte\else\defaultbox\fi} \hss}} +\def\oddvervolgvoetregel{\vbox + {\hrule + \vskip 2mm + \hbox to \textwidth{\footnotesize\sf \@datum \hfill \thepage\hss}}} +\def\evenvervolgvoetregel{\vbox + {\hrule + \vskip 2mm + \hbox to \textwidth{\footnotesize\sf \thepage \hfill \strut \hss}}} +\let\vervolgvoetregel=\oddvervolgvoetregel +\def\voetitem#1#2{\advance\@voetteller by 1 + \setbox\@voetruimte=\hbox to 4\refveldbreedte + {\unhbox\@voetruimte + \ifcase\@voetteller \relax \or \relax \or + \hfil \else \hfill \fi + \@verrefveld{#1}{#2}\hskip0cm plus 3\refveldbreedte}} +\def\ps@empty{ + \def\@oddhead{}\def\@oddfoot{} + \def\@evenhead{}\def\@evenfoot{}} +\def\ps@plain{ + \def\@oddhead{}\def\@evenhead{} + \def\@oddfoot{\rm\hfil\thepage} + \let\@evenfoot=\@oddfoot} +%% @hss omdat de kop en voet te breed zijn. +\def\ps@headings{ + \if@twoside\def\@oddhead{\vbox to \@otherheadheight + {\oddvervolghoofd\vfill + \if@streepjes\streepjes{\@otherheadheight}\fi}% + \hss} + \def\@evenhead{\vbox to \@otherheadheight + {\evenvervolghoofd\vfill}% + \hss} + \else\def\@oddhead{\vbox to \@otherheadheight + {\evenvervolghoofd\vfill + \if@streepjes\streepjes{\@otherheadheight}\fi}% + \hss} + \let\@evenhead=\@oddhead\fi + \def\@oddfoot{\oddvervolgvoetregel\@hss} + \def\@evenfoot{\evenvervolgvoetregel\@hss} +} +\def\ps@firstpage{ +\headheight=\@firstheadheight +\global\textheight=\@othertextheight +\global\headsep=\@otherheadsep + \def\@oddhead{\vbox to \@firstheadheight + {\briefhoofd\vfill + \hbox{\@stuknummerbox\@hss} + \if@streepjes\streepjes{\@firstheadheight}\fi}% + \hss} + \def\@evenhead{} + \def\@oddfoot{\voetregel\@hss} + \let\@evenfoot=\@oddfoot} + +%%%%%%%%%%%% default footing + +\def\location#1#2{\voetitem{Afzender:}{#1}\voetitem{}{#2} } +\def\@Secretariaat{Secretariaat:} +\def\@afzender{W.F.M. Spit} +\def\@fromlocation{R.J. v.d. Graafflaboratorium \\ + Postbus 80.000 \\ + 3508~TA~~Utrecht} +\def\telefoon#1{\def\@phonenr{#1}} +\def\@phonenr{030--532330} +\def\email#1{\def\@email{Email: #1}} +\def\fax#1{\def\@fax{Telefax: #1}} +\def\telex#1{\def\@telex{Telex: #1}} +\def\@email{Email: nspit\at fys.ruu.nl} +\def\@fax{Telefax: 030--518689} + + +% \voetitem{\protect\@Secretariaat}{\protect\@afzender \\ \protect\@fromlocation} +% \voetitem{}{\protect\telefoon: \protect\@phonenumber \\ +% \@fax \\ +% \@email } + +\def\defaultbox{\hbox to 4\refveldbreedte +{ %\hfil + \@verrefveld{\@Secretariaat \hskip.2em}{\protect\@afzender} + \hskip-12mm + \@verrefveld{}{\protect\@fromlocation} + \@verrefveld{}{\protect\telefoon: \protect\@phonenr \\ + \protect\@fax \\ + \protect\@email } + \hfil +}} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vouwstreepjes %%%%%%%%%%%%%%%%%%%%%%%%%% +%% momenteel alleen envelop EN-DL-V geimplementeerd +\def\streepje{\hbox to 2mm{\hrulefill}} +\def\streepjes#1{\vbox to 0cm + {\kern-#1 %% dit brengt ons bovenin het briefhoofd, 13mm onder + \hbox to \textwidth %% de rand van het papier + {\llap{\perfstreepje\kern24mm}\hfill %% 7mm van rand op 33mm + \rlap{\kern18mm\vouwstreepjes}} %% 7mm van rand op 33mm + \vss}} %% zie textwidth boven. +\def\perfstreepje {\vtop{\kern\z@ + \kern 135mm %% 297/2 - 13 + \streepje}} +\def\vouwstreepjes{\vtop{\kern\z@ + \kern 91mm % 92mm %% 105-13 + \streepje %% denk maar dat dit geen dikte heeft + \kern 50mm %% 155-150 + \streepje}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\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\endgroup + \if@filesw \immediate\openout\@mainaux=\jobname.aux + \immediate\write\@mainaux{\string\startlabels\string\@startlabels}\fi + \def\do##1{\let ##1\@notprerr} + \@preamblecmds + \let\do\noexpand + \@normalsize\everypar{}} +\def\enddocument{\@checkend{document}\newpage\begingroup +\if@filesw \immediate\closeout\@mainaux +\makeatletter\input \jobname.aux\clearpage +\fi\endgroup\deadcycles\z@\@@end} + +\def\makelabels{\@fileswtrue} +\def\@startlabels{} + + +\def\@texttop{\ifnum\c@page=1\vskip 0pt % plus 0.00006fil +\relax\fi} +%\def\p@sheadings{\def\@oddhead{\sl To \ignorespaces\toname \hfil \today +%\hfil Page \thepage}\def\@oddfoot{}} +% \def\ps@headings{% +% \def\@oddhead{\sl\ignorespaces\toname \hfil \@date\hfil --\ \thepage}% +% \def\@evenhead{\sl\ignorespaces\toname \hfil \@date\hfil --\ \thepage}% +% \def\@oddfoot{}\def\@evenfoot{}} +\def\ps@empty{% +\def\@oddhead{}\def\@oddfoot{}\def\@evenhead{}\def\@evenfoot{}} +\def\ps@plain{% +\def\@oddhead{}\def\@oddfoot{\rm\hfil\thepage \hfil}% +\def\@evenhead{}\let\@evenfoot\@oddfoot} + +\parskip 0.7em \parindent 0pt \topsep 0.4em \partopsep 0pt \itemsep 0.4em +\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 +\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty +-\@lowpenalty + +\leftmargini 2.5em +\leftmarginii 2.2em +\leftmarginiii 1.87em +\leftmarginiv 1.7em +\leftmarginv 1em +\leftmarginvi 1em +\leftmargin\leftmargini +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\labelsep 5pt +\parsep 0pt +\let\@listi\relax +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep 0.2em + \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} + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\Alph{enumiv}.} +\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 -15pt\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 15pt}\item[]} +\let\endverse\endlist +\def\quotation{\list{}{\listparindent 1.5em + \itemindent\listparindent + \rightmargin\leftmargin}\item[]} +\let\endquotation=\endlist +\def\quote{\list{}{\rightmargin\leftmargin}\item[]} +\let\endquote=\endlist + +\def\descriptionlabel#1{\hspace\labelsep \it #1} +\def\description{\list{}{\leftmargin\descriptionmargin + \labelwidth\leftmargin \advance\labelwidth -\labelsep + \let\makelabel\descriptionlabel}} +\let\enddescription\endlist +\newdimen\descriptionmargin +\descriptionmargin=3em + +\def\theequation{\arabic{equation}} + +\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth 0.4pt \doublerulesep 2pt +\tabbingsep \labelsep +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt \fboxrule = 0.4pt +\def\footnoterule{\kern-1\p@ + \hrule width 0.4\columnwidth + \kern 0.6\p@} + +\long\def\@makefntext#1{\noindent \hangindent 5pt\hbox + to 5pt{\hss $^{\@thefnmark}$}#1} + +\c@topnumber=2 +\def\topfraction{0.7} +\c@bottomnumber=1 +\def\bottomfraction{0.3} +\c@totalnumber=3 +\def\textfraction{0.2} +\def\floatpagefraction{0.5} +\c@dbltopnumber= 2 +\def\dbltopfraction{0.7} +\def\dblfloatpagefraction{0.5} + + +\smallskipamount=.5\parskip \medskipamount=\parskip +\bigskipamount=2\parskip +\frenchspacing +\ps@empty \pagenumbering{arabic} \onecolumn \@fileswfalse +% \raggedright + + +% definities die eigenlijk wel in de preamble zouden kunnen +% + +\newcommand{\ij}{i\hspace{-0.12em}j} +\newcommand{\bau}{{\sc bau}} +\newcommand{\aio}{{\sc aio}} +\newcommand{\oio}{{\sc oio}} +\newcommand{\ruu}{{\sc ruu}} +\newcommand{\rug}{{\sc rug}} +\newcommand{\rul}{{\sc rul}} +\newcommand{\eur}{{\sc eur}} +\newcommand{\uva}{{\sc uva}} +\newcommand{\kun}{{\sc kun}} +\newcommand{\kub}{{\sc kub}} +\newcommand{\tud}{{\sc tud}} +\newcommand{\tue}{{\sc tue}} +\newcommand{\ut}{{\sc ut}} +\newcommand{\rl}{{\sc rl}} +\newcommand{\vu}{{\sc vu}} +\newcommand{\luw}{{\sc luw}} +\newcommand{\dcp}{{\sc dcp}} +\newcommand{\nwo}{{\sc nwo}} +\newcommand{\fom}{{\sc fom}} +\newcommand{\cor}{{\sc cor}} +\newcommand{\stw}{{\sc stw}} +\newcommand{\laioo}{{\sc laioo}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% talen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifcase\language % 0: Nederlands + \def\uwbrieftekst{Uw brief van} + \def\uwkenmerktekst{Uw kenmerk} + \def\onskenmerktekst{Ons kenmerk} + \def\datumtekst{Datum} + \def\geadresseerdetekst{Geadresseerde} + \def\bladnummertekst{Bladnummer} + \def\vandaag{\number\day~\ifcase\month\or + januari\or februari\or maart\or april\or mei\or juni\or juli\or + augustus\or september\or oktober\or november\or december\fi + \space \number\year} + \def\betrefttekst{Onderwerp} + \def\bijlagetekst{Bijlage:} + \def\bijlagentekst{Bijlagen:} + \def\telefoon{Telefoon} +\or % 1: Engels + \def\uwbrieftekst{Your letter of} + \def\uwkenmerktekst{Your reference} + \def\onskenmerktekst{Our reference} + \def\datumtekst{Date} + \def\geadresseerdetekst{To} + \def\bladnummertekst{Page} + \def\vandaag{\ifcase\day\or + 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or + 11th\or 12th\or 13th\or 14th\or 15th\or + 16th\or 17th\or 18th\or 19th\or 20th\or + 21st\or 22nd\or 23rd\or 24th\or 25th\or + 26th\or 27th\or 28th\or 29th\or 30th\or + 31st\fi~\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\year} + \def\betrefttekst{Subject} + \def\bijlagetekst{Enclosure:} + \def\bijlagentekst{Enclosures:} + \def\telefoon{Telephone} +\or % 2: Amerikaans + \def\uwbrieftekst{Your letter of} + \def\uwkenmerktekst{Your reference} + \def\onskenmerktekst{Our reference} + \def\datumtekst{Date} + \def\geadresseerdetekst{To} + \def\bladnummertekst{Page} + \def\vandaag{\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} + \def\betrefttekst{Subject} + \def\bijlagetekst{Enclosure:} + \def\bijlagentekst{Enclosures:} + \def\telefoon{Telephone} +\or % 3: Duits + \def\uwbrieftekst{Ihr Brief von} + \def\uwkenmerktekst{Ihr Zeichen} + \def\onskenmerktekst{Unser Zeichen} + \def\datumtekst{Datum} + \def\geadresseerdetekst{An} + \def\bladnummertekst{Zettel} + \def\vandaag{\number\day.~\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi + \space\number\year} + \def\betrefttekst{Betrifft} + \def\bijlagetekst{Anlage:} + \def\bijlagentekst{Anlagen:} + \def\telefoon{Telephoon} +\fi +% et qui parle Fran\c{c}ais, nowadays? + +\newcounter{figure} +% \def\fnum@figure{\figurename{} \thefigure} %V from Dutch +\def\thefigure{} +% \def\fps@figure{tbp} +\def\ftype@figure{1} +% \def\ext@figure{lof} +\def\figure{\@float{figure}} +\let\endfigure\end@float +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} + + + +% +\def\today{\vandaag} +\ps@headings +\ds@streepjes +\datum{\vandaag} + diff --git a/macros/latex209/contrib/misc/landscape.sty b/macros/latex209/contrib/misc/landscape.sty new file mode 100644 index 0000000000..3a71b8bc89 --- /dev/null +++ b/macros/latex209/contrib/misc/landscape.sty @@ -0,0 +1,12 @@ +% Landscape style file +% Don Hosek 2/5/88 +\marginparwidth 0pt +\oddsidemargin 0pt +\evensidemargin 0pt +\marginparsep 0pt + +\topmargin 0pt + +\textwidth 9in +\textheight 6in + diff --git a/macros/latex209/contrib/misc/latex-go-board.tex b/macros/latex209/contrib/misc/latex-go-board.tex new file mode 100644 index 0000000000..b44b676d7c --- /dev/null +++ b/macros/latex209/contrib/misc/latex-go-board.tex @@ -0,0 +1,68 @@ +%% A Sample of LaTeX Go Board +%% Youyi Chen +%% University of Waterloo, Dept. of Statistics and Actuarial Science +%% ychen@aftermath.waterloo.edu +%% Sept. 1990 +%% +\documentstyle[12pt]{article} +\pagestyle{empty} + +\begin{document} +\centerline{{\Huge No Way Out?}} +\vspace{.5in} +\begin{center} +\setlength{\unitlength}{5mm} +\begin{picture}(18,18)(1,1) + +%% moves +\put(6,3){\circle*{1}} +\put(7,3){\circle*{1}} +\put(8,3){\circle*{1}} +\put(5,4){\circle*{1}} +\put(9,4){\circle*{1}} +\put(5,6){\circle*{1}} +\put(9,6){\circle*{1}} +\put(7,6){\circle*{1}} +\put(7,7){\circle*{1}} + +\put(6,4){\circle{1}} +\put(7,4){\circle{1}} +\put(8,4){\circle{1}} +\put(6,5){\circle{1}} +\put(8,5){\circle{1}} +%% the board +%% horizontal +\multiput(1,1)(0,1){3}{\line(1,0){18}} + +\put(1,4){\line(1,0){4}} +\put(9,4){\line(1,0){10}} + +\put(1,5){\line(1,0){4.5}} +\put(6.5,5){\line(1,0){1}} +\put(8.5,5){\line(1,0){10.5}} + +\multiput(1,6)(0,1){14}{\line(1,0){18}} + +%%vertical +\multiput(1,1)(1,0){5}{\line(0,1){18}} + +\put(6,1){\line(0,1){2}} +\put(6,5.5){\line(0,1){13.5}} + +\put(7,1){\line(0,1){2}} +\put(7,4.5){\line(0,1){14.5}} + +\put(8,1){\line(0,1){2}} +\put(8,5.5){\line(0,1){13.5}} + +\multiput(9,1)(1,0){11}{\line(0,1){18}} + +%% the stars +\multiput(4,4)(6,0){3}{\circle*{0.3}} +\multiput(4,10)(6,0){3}{\circle*{0.3}} +\multiput(4,16)(6,0){3}{\circle*{0.3}} + +\end{picture} +\end{center} +\end{document} + diff --git a/macros/latex209/contrib/misc/lcaption.sty b/macros/latex209/contrib/misc/lcaption.sty new file mode 100644 index 0000000000..eb1714782d --- /dev/null +++ b/macros/latex209/contrib/misc/lcaption.sty @@ -0,0 +1,50 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% lcaption.sty 1.0 +% +% Provides smart formatting of long captions. The captions are +% formatted like: +% Figure 1: This is a +% long text. +% +% <-----\CapSize-----> +% +% If \CapSize is set to ZERO, it will fit the caption to \hsize +% (the width of the surrounding text) +% +% The syntax is \lcaption[short]{long} just like LaTeX's caption command. +% the [short] argument may be omitted. +% +% The command \smartcap will make \caption act like \lcaption. It +% should be used only once. +% +% \CapSize defaults to ZERO, and may be set by a command like: +% +% \CapSize=5in +% +% Based on original by Lars P. Fischer <fischer@iesd.auc.dk> +% Parts of the code is taken from latex.tex (c) by Leslie Lamport +% Put together by Kresten Krab Thorup <Krab@iesd.auc.dk> january 1991 +% You may not redistribute modified versions of this code, unless +% you name it to something else than lcaption.sty +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{Style Option `lcaption' r1.0 <01/06/91> (KKT)} + +\newdimen\CapSize\CapSize\z@ + +\long\def\@lmakecaption#1#2{ + \vskip 10pt + \setbox\@tempboxa\hbox{#1:\ } + \@tempdima\hsize\advance\@tempdima-\wd\@tempboxa + \ifdim\CapSize=\z@\else + \ifdim\@tempdima>\CapSize \@tempdima\CapSize\fi\fi + \setbox\@tempboxa\hbox{#1: #2} + \ifdim\wd\@tempboxa<\hsize\hfil #1: #2\hfil\par\else + \hbox to\hsize{\hfil #1: \parbox[t]\@tempdima{#2}\hfil} + \fi} + +\def\lcaption{\let\@makecaption\@lmakecaption\caption} + +\def\smartcap{\def\caption{\let\@makecaption\@lmakecaption +\refstepcounter\@captype \@dblarg{\@caption\@captype}}} + + diff --git a/macros/latex209/contrib/misc/lcustom.tex b/macros/latex209/contrib/misc/lcustom.tex new file mode 100644 index 0000000000..c76a75ad8e --- /dev/null +++ b/macros/latex209/contrib/misc/lcustom.tex @@ -0,0 +1,429 @@ +% LaTeX customization + + +\makeatletter % for a little while + +\def\inputverbatim#1{% +\begingroup \catcode``=13 \@noligs \tt \let\do\@makeother \dospecials +\obeylines \obeyspaces \frenchspacing \input #1 \endgroup } + +% plain TeX compatibility + +\def\oldstyle{\xdef\@oldstyle{\the\textfont\@ne}\mit\@oldstyle} + + +% PhD-TeX compatibility + +\def\showsummary{% + \begingroup + \def\note##1{% + \ifcase\value{##1}no ##1s\or + 1 ##1\else + \the\value{##1} ##1s\fi + }% + \typeout{LaTeX summary: \note{figure}, \note{table}, \note{footnote}.}% + \endgroup +} + +\def\smaller{\footnotesize} + + +% Float Support + +\def\topfraction{0.85} +\def\textfraction{0.20} +\def\floatpagefraction{0.85} +\def\dbltopfraction{0.85} +\def\dblfloatpagefraction{0.85} + + +% \tagfigure*[FLOAT]{FILE}{CAPTION}{LABEL} +% * optional +% FLOAT float options +% FILE reads TPIC output in file figureFILE +% CAPTION for list of figures +% LABEL for \ref and \pageref +\def\tagfigure{\@ifstar{\@stagfigure}{\@tagfigure}} +\def\@tagfigure{\@ifnextchar[{\@@tagfigure}{\@@tagfigure[t]}} +\def\@stagfigure{\@ifnextchar[{\@@stagfigure}{\@@stagfigure[t]}} + +\def\@@tagfigure[#1]#2{% + \@@@tagfigure[#1]{\input figure#2\relax\centerline{\box\graph}}} +\def\@@stagfigure[#1]#2{% + \@@@stagfigure[#1]{\input figure#2\relax\centerline{\box\graph}}} + + +% \tagdiagram*[FLOAT]{FILE}{CAPTION}{LABEL} +% * optional +% FLOAT float options +% FILE reads LaTeX input in file diagramFILE +% CAPTION for list of figures +% LABEL for \ref and \pageref +\def\tagdiagram{\@ifstar{\@stagdiagram}{\@tagdiagram}} +\def\@tagdiagram{\@ifnextchar[{\@@tagdiagram}{\@@tagdiagram[t]}} +\def\@stagdiagram{\@ifnextchar[{\@@stagdiagram}{\@@stagdiagram[t]}} + +\def\@@tagdiagram[#1]#2{\@@@tagfigure[#1]{\input diagram#2\relax}} +\def\@@stagdiagram[#1]#2{\@@@stagfigure[#1]{\input diagram#2\relax}} + + +% \tagverbatim*[FLOAT]{FILE}{CAPTION}{LABEL} +% * optional +% FLOAT float options +% FILE reads LaTeX input in file FILE and inserts in in verbatim mode. +% CAPTION for list of figures +% LABEL for \ref and \pageref +\def\tagverbatim{\@ifstar{\@stagverbatim}{\@tagverbatim}} +\def\@tagverbatim{\@ifnextchar[{\@@tagverbatim}{\@@tagverbatim[t]}} +\def\@stagverbatim{\@ifnextchar[{\@@stagverbatim}{\@@stagverbatim[t]}} + +\def\@@tagverbatim[#1]#2{\@@@tagfigure[#1]{\inputverbatim{#2}}} +\def\@@stagverbatim[#1]#2{\@@@stagfigure[#1]{\inputverbatim{#2}}} + + +\def\@@@tagfigure[#1]#2#3#4{% + \begin{figure}[#1] + \hrule + \vskip .5\baselineskip + \begin{minipage}\columnwidth + \small#2% + \end{minipage} + \vskip .5\baselineskip plus .5\baselineskip + \begingroup + \setbox\z@=\hbox{#4}% + \ifdim\wd\z@>\z@ + \caption{#3}% + \label{#4}% + \else + \captcont{#3}% + \fi + \endgroup + \vskip 2pt + \hrule + \end{figure} +} + +\def\@@@stagfigure[#1]#2#3#4{% + \begin{figure*}[#1] + \hrule + \vskip .5\baselineskip + \begin{minipage}\textwidth + \small#2% + \end{minipage} + \vskip .5\baselineskip plus .5\baselineskip + \begingroup + \setbox\z@=\hbox{#4}% + \ifdim\wd\z@>\z@ + \caption{#3}% + \label{#4}% + \else + \captcont{#3}% + \fi + \endgroup + \vskip 2pt + \hrule + \end{figure*} +} + + +% \tagtable*[FLOAT]{FILE}{CAPTION}{LABEL} +% * optional +% FILE read LaTeX input in file tableFILE +% FLOAT float options +% CAPTION for list of tables +% LABEL for \ref and \pageref +\def\tagtable{\@ifstar{\@stagtable}{\@tagtable}} +\def\@tagtable{\@ifnextchar[{\@@tagtable}{\@@tagtable[t]}} +\def\@stagtable{\@ifnextchar[{\@@stagtable}{\@@stagtable[t]}} + +\def\@@tagtable[#1]#2#3#4{% + \begin{table}[#1] + \hrule + \vskip .5\baselineskip + \begin{minipage}\textwidth + \small\input table#2\relax + \end{minipage} + \vskip .5\baselineskip plus .5\baselineskip + \begingroup + \setbox\z@=\hbox{#4}% + \ifdim\wd\z@>\z@ + \caption{#3}% + \label{#4}% + \else + \captcont{#3}% + \fi + \endgroup + \vskip 2pt + \hrule + \end{table} +} + +\def\@@stagtable[#1]#2#3#4{% + \begin{table*}[#1] + \hrule + \vskip .5\baselineskip + \begin{minipage}\columnwidth + \small\input table#2\relax + \end{minipage} + \vskip .5\baselineskip plus .5\baselineskip + \begingroup + \setbox\z@=\hbox{#4}% + \ifdim\wd\z@>\z@ + \caption{#3}% + \label{#4}% + \else + \captcont{#3}% + \fi + \endgroup + \vskip 2pt + \hrule + \end{table*} +} + + +% Environments: + +% DESCRIBE - similar to DESCRIPTION, but indents extra on left margin of +% outer list + +\def\describe{\list{}{\labelwidth\z@ \itemindent-\leftmargin + \ifnum\@listdepth=1 \advance\leftmargin by2em\fi + \let\makelabel\descriptionlabel}} +\let\enddescribe=\endlist + + +% Document style options: +% 10pt - Makes ten-point type the normal (default) type size +% draftnote - Customized draft option + +\@namedef{ds@10pt}{\def\@ptsize{0}} %%% for orthogonality + + +\newif\ifdraft \draftfalse + +\def\draftstring{{\ifdraft \tt Draft\fi}} + +\def\draftext{% + \ifdraft + \begingroup + \tt + \ifodd\c@page + \LaTeX set \today\ with \fmtname\ v\fmtversion + \else + Draft \versiontag/ of \versiondate/ + \fi + \endgroup + \fi +} + +\def\ds@draftnote{% + \drafttrue + \@ifundefined{ds@draft}{}{\ds@draft}% + \def\ps@plain{% + \let\@mkboth=\@gobbletwo + \def\@oddhead{\draftext\hfil}% + \def\@oddfoot{\draftstring\hfil\rm\thepage\hfil\draftstring}% + \def\@evenhead{\hfil\draftext}% + \let\@evenfoot=\@oddfoot + }% + \let\ps@@headings=\ps@headings + \def\ps@headings{% + \ps@@headings + \def\@oddfoot{\draftext\hfil}% + \def\@evenfoot{\hfil\draftext}% + }% +} + + +% Page Styles + +% \pagestyle{myfootings} similar to the myheadings command but also permits +% the user to define foot information as well as head information +% \markleftfoot{left_foot} specifies the foot for odd-numbered +% pages +% \markrightfoot{right_foot} specifies the foot for even-numbered +% pages +% N.B. DOES NOT USE MARKS TO ACCOMPLISH THIS, OWING TO CONFLICT WITH HEADING +% ROUTINES + +\def\ps@myfootings{\ps@myheadings} + +\def\markleftfoot#1{\def\@evenfoot{\hbox{}\sl#1\hfil}} +\def\markrightfoot#1{\def\@oddfoot{\hfil\sl#1\hbox{}}} + + +% \pagestyle{reprint} similar to plain page style in draft mode + +\let\reprintext=\draftext +\let\reprintstring=\draftstring + +\def\ps@reprint{% + \def\draftext{% + \ifdraft + \begingroup + \tt + \ifodd\c@page + \LaTeX set \today + \else + Draft \versiontag/ + \fi + \endgroup + \fi + }% + \def\@oddhead{\reprintext\hfil\draftext}% + \def\@oddfoot{\reprintstring\hfil\rm\thepage}% + \def\@evenhead{\draftext\hfil\reprintext}% + \def\@evenfoot{\rm\thepage\hfil\reprintstring}% +} + + +% The Title + +\def\title#1{% + \gdef\@title{#1}% + \gdef\banner{% + \newpage\setcounter{page}{1}% + \begin{center}\Large#1\end{center}% + }% +} + + +% Miscellany + +\def\implies{\quad\supset\ } + +\def\tdots{\ldots\thinspace} + +\def\boxit#1{\fbox{\sc#1}} + +\def\note#1{\ifdraft\marginpar{\tt#1}\fi} + + +% Fractions (from The TUGboat v6 n1, 1985) + +\def\myfrac#1/#2{% + \leavevmode\kern.1em + \raise.5ex\mbox{\the\scriptfont\z@ #1}\kern-.1em + /\kern-.15em\lower.25ex\mbox{\the\scriptfont\z@ #2}% +} + + +% Trademarks... + +\input trademark.sty + + +% Continuation Captions... + +\input captcont.sty + + +% Startup + +\xdef\today{% + \ifcase\month + \number\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\else + \number\month\fi + \space\number\day, {\noexpand\mit\number\year}% +} + +\begingroup + \count0=\time + \count1=\count0 + \divide\count0 by 60 + \count2=\count0 + \multiply\count0 by 60 + \advance\count1 by -\count0 + \ifnum\count2>11 + \ifnum\count2>12 \advance\count2 by -12\fi + \def\ampm{pm}% + \else + \ifnum\count2=0 \advance\count2 by 12\fi + \def\ampm{am}% + \fi + \xdef\daytime{% + \ifnum\count2<10 0\fi \the\count2:% + \ifnum\count1<10 0\fi \the\count1 + \ampm + }% +\endgroup + + +\makeatother % back to normal + +% +%Mail-From: BEEBE created at 3-Dec-86 11:41:39 +%Date: Wed 3 Dec 86 11:41:39-MST +%From: "Nelson H.F. Beebe" <Beebe@UTAH-SCIENCE.ARPA> +%Subject: Funny behaviour of itemize with long item keys +%To: jrp%nplpsg%uucp@CS.UCL.AC.UK +%cc: BEEBE@UTAH-SCIENCE.ARPA +%X-US-Mail: "Center for Scientific Computation, South Physics, +%University of Utah, Salt Lake City, UT 84112" +%X-Telephone: (801) 581-5254 +%Message-ID: <12259892637.20.BEEBE@UTAH-SCIENCE.ARPA> +%ReSent-Date: Wed 3 Dec 86 16:31:14-MST +%ReSent-From: "Nelson H.F. Beebe" <Beebe@UTAH-SCIENCE.ARPA> +%ReSent-To: jrp%nplpsg%uucp@SEISMO.CSS.GOV +%ReSent-Message-ID: <12259945355.20.BEEBE@UTAH-SCIENCE.ARPA> +% +%In TeXHaX #10 you ask for a solution for the itemize +%environment where long keys do not cause a line break, when +%they would look nicer if they did. +% +%I met this problem in writing my TECO manual, and here is my +%solution. First, I have two environments: +% +%% ====================================================================== +%% commandtable generates a list with the item entered into the index +%% and the item label flush left in \tt font. It is intended for +%% documenting TECO commands. +%\newcommand{\tablelabel}[1]{\mbox{\tt#1}\hfil\INDEX{{\string\tt\space #1}}{#1}} +%\newenvironment{commandtable}{ +% \begin{list}{} +% { +% \let\makelabel\tablelabel +% \setlength{\labelwidth}{30pt} +% \setlength{\leftmargin}{1.1\labelwidth} +% } +% }{\end{list}} +% +%% ====================================================================== +%% commandentry generates a list with the item label flush left in \sf +%% font. It is intended for the TECO command descriptions. +% +%\newcommand{\entrylabel}[1]{\mbox{\sf#1:}\hfil} +%\newenvironment{commandentry}{ +% \begin{list}{} +% { +% \let\makelabel\entrylabel +% \setlength{\labelwidth}{40pt} +% \setlength{\leftmargin}{1.1\labelwidth} +% } +% }{\end{list}} +% +%Then I have a newline macro: +%\newcommand{\NEWLINE}{\mbox{}\\ \vspace*{-\baselineskip}} +% +%Here is how they are used: +% \begin{commandtable} +% \item[\protect\CTL{\BS{}}]\NEWLINE{} +% \begin{commandentry} +% \item[Action] +% Returns from a function. If issued at top-level, +% the interpreter simply terminates, just as if +% end of input had been reached. +% \item[Errors] +% None. +% \item[Return values] +% Any arguments in effect are passed back to the +% caller. +% \end{commandentry} +% ...etc... +% \end{commandtable} +% +%The other two macros listed are unimportant, but here they are: +%\newcommand{\BS}{{\tt\symbol{92}}} % ASCII backslash +%\newcommand{\NEWLINE}{\mbox{}\\ \vspace*{-\baselineskip}} diff --git a/macros/latex209/contrib/misc/listoftheorem.sty b/macros/latex209/contrib/misc/listoftheorem.sty new file mode 100644 index 0000000000..905167dacd --- /dev/null +++ b/macros/latex209/contrib/misc/listoftheorem.sty @@ -0,0 +1,123 @@ +%% +%% LaTeX Style sheet to permit theorem environments to generate +%% table-of-contents-like entries similar to those produced +%% bye the \listoffigures command. +%% ...Art Mulder, July/90 art@maccs.DCSS.mcmaster.ca +%% ...!uunet!utai!utgpu!maccs!art +%% +%% Permission granted to do whatever you want with this style +%% file. Use at your own risk, it works for me, but I make no +%% warranty as to its performance. + +%% STEP ONE: +%% modify one of the 'begin theorem' commands so that it executes an +%% \addcontentsline, on a file called whatever the theorem is. ie: if +%% this is a "theo" type theorem, them write on a file called foo.theo + +%% %% based on \@thm macro found in latex.tex and modified to suit +%% %% my purposes +%% +%% % \@thm{NAME}{TEXT} == +%% % BEGIN +%% % \addcontentsline{NAME}{figure}{\theNAME} +%% %% ^ above line added by art mulder +%% % \refstepcounter{NAME} +%% % if next char = [ +%% % then \@ythm{NAME}{TEXT} +%% % else \@xthm{NAME}{TEXT} +%% % fi +%% % END +%% +%% \def\@thm#1#2{\addcontentsline{#1}{figure}{\protect +%% \numberline{\csname the#1\endcsname}} +%% \refstepcounter +%% {#1}\@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}} +%% +%% THIS ABOVE CODE WORKS, HOWEVER IT MAKES NO PROVISION FOR INCLUDING +%% THE OPTIONAL ARGUMENT IN THE LISTING. THIS NEXT CODE (UP TO STEP TWO) +%% DOES INCLUDE THE OPTIONAL ARGUMENT IN THE LISTING. + +%% based on \@xthm and \@ythm macros found in latex.tex + +% \@xthm{NAME}{TEXT} == +% BEGIN +% \addcontentsline{NAME}{figure}{\theNAME} +%% ^ above line added by art mulder +% \@begintheorem{TEXT}{\theNAME} +% \ignorespaces +% END +% +% \@ythm{NAME}{TEXT}[OPARG] == +% BEGIN +% \addcontentsline{NAME}{figure}{\theNAME OPARG} +%% ^ above line added by art mulder +%% Put the Optional Argument into the List-Of file +% \@opargbegintheorem{TEXT}{\theNAME}{OPARG} +% \ignorespaces +% END + +\def\@xthm#1#2{\addcontentsline{#1}{figure}{\protect + \numberline{\csname the#1\endcsname}} + \@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@ythm#1#2[#3]{\addcontentsline{#1}{figure}{\protect + \numberline{\csname the#1\endcsname}{\ignorespaces #3}} + \@opargbegintheorem{#2}{\csname + the#1\endcsname}{#3}\ignorespaces} + +%% STEP TWO: +%% write \listof{}{} macro to generate lists of desired theorem +%% environments. + +%% based on listoffigures macro from book.doc (or book.sty) + +\def\listof#1#2{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{List of #1\@mkboth + {LIST OF \uppercase{#1}}{LIST OF \uppercase{#1}}} + \@starttoc{#2}\if@restonecol \twocolumn\fi} + +%\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em} + +%%-------------------- +%% INSTRUCTIONS FOR USE: +%% - read the sections in the LaTeX manual in regards to: +%% \addcontentsline, \newtheorem +%% - use a theorem envornment as usual (all changes there are "behind the +%% scenes" so you don't have to do anything different) +%% - insert a \listof command in your document wherever you want a +%% listing to go (DISCLAIMER: I have only tried this at the +%% front of the book, following the Table of Contents) +%% - the listof command has the following form: +%% \listof{HEADING}{THEOREM_ENV_NAME} +%% where: +%% HEADING = whatever you want to follow the words +%% "List Of" in the heading. +%% THEOREM_ENV_NAME = the environment name that you gave +%% to your theorem environment. + +%% EXAMPLE USAGE: +%% - define a theorem environment: +%% \newtheorem{lem}{Lemma}[section] +%% ^ define a "Lemma" theorem environment, numbered within +%% chapters (NO CHANGE from before use of +%% listoftheorem.sty) +%% +%% - request a list of theorems +%% \listof{Lemmas}{lem} +%% ^ will now get a listing similar to a "list of figures" +%% entitled "List Of Lemmas". +%% +%% - use the lemma theorem environment +%% \begin{lem} +%% blah blah +%% \end{lem} +%% ^ In addition to what the theorem environment would +%% normally do, this will write a "list of lemmas" +%% entry on a file entitled foo.lem, where foo is the name +%% of the document (as in foo.tex). +%% Note there is NO CHANGE in use from before use of +%% listoftheorem.sty + +%% BUGS: +%% - two theorem environments can share a counter (see numbered_like +%% option in definition of Theorem environments in LaTeX manual) +%% But there is no way for two theorem environments to share listing. diff --git a/macros/latex209/contrib/misc/local-suppl.tex b/macros/latex209/contrib/misc/local-suppl.tex new file mode 100644 index 0000000000..d62e4b0a50 --- /dev/null +++ b/macros/latex209/contrib/misc/local-suppl.tex @@ -0,0 +1,105 @@ +\subsubsection{The {\tt a4} and {\tt a4wide} Style Options} + +By default, the output page is designed to be printed on US paper. +The {\tt a4} and {\tt a4wide} style options result in output +that fits better onto A4 size pages. +It is sometimes convenient to be able to fit more text onto an A4 page. +The {\tt a4wide} option accomplishes this by using narrower margins. + +\subsubsection{The {\tt tgrind} Style Option}{\label{tagrind}} + +It is useful to be able to include program fragments as figures in a +text. The {\tt tgrind} style option can be used to accomplish this +fairly painlessly by defining the \verb|\tagrind| command. + +The \verb|\tagrind| command has the following proforma: +\begin{itemize} \tt +\item[] +\verb|\tagrind*|[{\it loc\/}]\{{\it file\/}\}\{{\it caption \/}\}\{{\it +label \/}\} +\end{itemize} + +As usual, +\begin{itemize} +\item in two-column format, the ordinary form produces a +single-column listing and the $\ast$-forms produces a double-column listing; + +\item {\it loc\/} +is a sequence of one to four of the letters \verb|h| ({\it here\/}), +\verb|t| ({\it top\/}), \verb|b| ({\it bottom\/}) and \verb|p| ({\it +page\/}) specifying where the listing may be placed. + +\item {\it file} specifies the file from which the ground listing +is to be taken. + +\item {\it caption} produces a numbered caption. + +\item {\it label} assigns a label to the listing, so that it may be +referred to by means to the \verb|\ref{|{\it label\/}\verb|}| command. + +\end{itemize} + +The listing file should be generated using {\tt tgrind} and removing +the first and last lines of the resulting file. For example, if the C +source file {\tt file.c} were to be used as a listing, +\begin{verbatim} + tgrind -f -lc file.c | sed -e 1d -e \$d >file.tex +\end{verbatim} +would generate a file {\tt file.tex} suitable for use +with \verb|tagrind|. For example, +\begin{verbatim} +\tagrind{file}{This is an example}{eg} +\end{verbatim} + +\subsubsection{The {\tt sfwmac} Style Option} + +The {\tt sfwmac} style option defines a set of macros which are +useful when writing program documentation. The \verb|\pgm{|{\it +program\/}\verb|}| command expects a program name as an argument. +The name in printed (in italics) and an index entry is made for it. +Similarly, the \verb|\man{|{\it program\/}\verb|}(|{\it +section\/}\verb|)| command may be used to produce references to +manual page entries. +The \verb|\arg{|{\it argument\/}\verb|}|, \verb|\switch{|{\it +switch\/}\verb|}| and \verb|\file{|{\it file\/}\verb|}| commands may be +used when referring to program arguments and switches and to +filenames. These produce no index entry. + +This style also defines a number of common program names such as +\latex/, \slitex/, etc. These are produced by means of +\verb|\LaTeX|, \verb|\SLiTeX| commands and indexed. + +Suggestions for additions to the list of defined program names are +welcome. + +\subsubsection{The {\tt trademark} Style Option} + +The {\tt trademark} style option defines a number of trademarks and +trade names. For example, \Unix/ (note the automatically defined +footnote) was produced by a \verb|\Unix/| command. Note that there +is no need to append \verb*|\ | or \verb|{}| to prevent the +swallowing up of succeeding spaces. + +Suggestions for additions to the list of trademarks are welcome. + +\subsubsection{The {\tt lcustom} Style Option} + +This style contains a whole bunch of useful little command +definitions. The \verb|\inputverbatim{|{\it file\/}\verb|}| +command inserts the file in verbatim mode. However, it is usually +better to use the \verb|\tagrind| command described in section +\ref{tagrind} for this purpose. A number of further commands +provide a clean way of introducing diagrams and tables from +subsidiary files. They are similar in form and usage to the to the +\verb|\tagrind| command. + +\subsubsection{The {\tt vdm} Style Option} + +The {\tt vdm} style option aids typesetting of VDM specifications: it +provides macros for typesetting formulae, data types, functions, +operations and proofs in whatever the currently approved VDM manner +happens to be. A copy of the user manual for the {\tt vdm} style option +can be obtained by typing +\begin{verbatim} + latex /usr/lib/tex/macros/vdm.tex +\end{verbatim} diff --git a/macros/latex209/contrib/misc/losymbol.sty b/macros/latex209/contrib/misc/losymbol.sty new file mode 100644 index 0000000000..8325dc6cdb --- /dev/null +++ b/macros/latex209/contrib/misc/losymbol.sty @@ -0,0 +1,65 @@ +%------------------8<--------------------8<------------8<-------------- +%losymbol.sty by gerry van dooren, may 1992, revised august 1992. +% elecgd@urc.tue.nl +% +%definition is nearly analogous to the setup for list of figures +%and list of tables; use same definition using \@starttoc, +%however default extension is now .los +% +%MODIFICATIONS: +% +%1. losymbol.sty can now always be used, without paying attention to the +% style file used in de main document (using if undefined) <aug 1992>. +% +%2. It appeared that, if the list of symbols is larger than one page, +% the pagenumber of the list in the table of contents was the last page +% of the list of symbols. This is also repaired by interchanging the +% \addcontentsline{} and the \starttoc{} statements <july 1992>. +% +%PROBLEMS ENCOUNTERED: +% +%1. If the explanation of the symbols is longer than the width of the +% right column, the linespacing is not uniform anymore. The solution +% to this problem is not yet found <july 1992>. +% +\def\losymbolsname{List of symbols} +\def\listofsymbols{\@ifundefined{chapter}{% + \section*{\losymbolsname \@mkboth + {\uppercase{\losymbolsname}}{\uppercase{\losymbolsname}}} + \addcontentsline{toc}{section}{\losymbolsname}\@starttoc{los} + }{% + \chapter*{\losymbolsname \@mkboth + {\uppercase{\losymbolsname}}{\uppercase{\losymbolsname}}} + \addcontentsline{toc}{chapter}{\losymbolsname}\@starttoc{los} + } +} +% +%command for putting text in file \jobname.loa is \addsymbol +%command that is used for actually producing text is called +%\makenicesymbolline +\def\addsymbol#1#2{% +\addtocontents{los}{\protect \makenicesymbolline{#1}{#2}}} +% +%physical dimensions of columns +% +\newdimen\@lcsym %width of left column +\@lcsym=3cm %default 3cm +% +\newdimen\@mcsym %width of mid column (space) +\@mcsym=2cm %default 2cm +% +\newdimen\@rcsym %width of right column +\@rcsym=\hsize %initial width=textwidth +% +\advance\@rcsym by -\@lcsym %subtract lcsym +\advance\@rcsym by -\@mcsym %subtract mid +% +%command for producing the actual line uses standard minipages +%to cope with long definitions +% +\def\makenicesymbolline#1#2{% +\begin{minipage}[t]{\@lcsym}#1\end{minipage}% +$\hspace{\@mcsym}$% +\begin{minipage}[t]{\@rcsym}#2\end{minipage}\newline} +% +%end of losymbol.sty diff --git a/macros/latex209/contrib/misc/lslide.sty b/macros/latex209/contrib/misc/lslide.sty new file mode 100644 index 0000000000..925e6688e4 --- /dev/null +++ b/macros/latex209/contrib/misc/lslide.sty @@ -0,0 +1,707 @@ +%% Save file as: LSLIDE.STY Source: FILESERV@SHSU.BITNET +% lslide.sty - version 2.0.1 (April 1992) +% by Young U. Ryu +% +% o There is a sample file in the end of the commented area. +% LaTeX (or AmSLaTeX) it at least twice and print. +% ^^^^^ +% The remainder of the original header information and example file are +% in the file STY.LSLIDE_TEX on FILESERV/Niord. +% +% Noted modifications by Keith Farkas <farkas@eecg.toronto.edu> posted +% to comp.text.tex on 21 Apr 92 15:43:52 GMT: +% I have added a new vertical centering option to the slide style file +% writen by Yong Ryu. The new option is \vertgroup and is like \vertcenter +% with the exception that \vspace{2em} is placed after \subsection +% rather than \vspace{\vfill}. + +\typeout{Presentation Slide Style File for LaTeX/AmSLaTeX, version 2.0.1} +\typeout{by Young. U. Ryu - March 1992; modified by Keith Farkas - April 1992} + +\def\landscape{% + \sloppy + \textwidth 8.8in + \textheight 6in + \topmargin -.6in + \oddsidemargin -.18in + \evensidemargin\oddsidemargin} + +\def\portrait{% + \sloppy + \textwidth 6in + \textheight 8.8in + \topmargin -.65in + \oddsidemargin -.3in + \evensidemargin\oddsidemargin} + +% +% Frame for the whole page +% \@my@box@frame{thinkness}{hspace}{vspace}{...} +% +\newdimen \@tempdimc +\newdimen \@tempdimd + +\def\@my@box@frame#1#2#3#4{\vbox{% + \setbox\@tempboxa\hbox{#4}% + \@tempdima#3 + \advance\@tempdima #1 \advance\@tempdima \dp\@tempboxa + \hbox{\lower \@tempdima% + \hbox{\vbox{\hrule depth0pt height #1% + \hbox{\vrule depth0pt width #1% + \hskip#2% + \vbox{\vskip#3 \box\@tempboxa\vskip#3}% + \hskip#2% + \vrule depth0pt width #1} + \hrule depth0pt height #1}}}}} + +% +% Shadow Frame for the whole page: +% \@my@shadow@box@frame{frame thinkness}{shade thickness}{hspace}{vspace}{...} +% + +\def\@my@shadow@box@frame#1#2#3#4#5{\vbox{% + \setbox\@tempboxa\hbox{#5}% + \@tempdima#4 + \advance\@tempdima #1 \advance\@tempdima \dp\@tempboxa + \setbox\@tempboxa% + \hbox{\lower \@tempdima% + \hbox{\vbox{\hrule depth0pt height #1% + \hbox{\vrule depth0pt width #1% + \hskip#3% + \vbox{\vskip#4 \box\@tempboxa\vskip#4}% + \hskip#3% + \vrule depth0pt width #1} + \hrule depth0pt height #1}}}% + \@tempdimc\ht\@tempboxa \advance\@tempdimc-#2 + \advance\@tempdimc\@tempdima + \@tempdimd\wd\@tempboxa + \hbox{\box\@tempboxa\relax% + \lower\@tempdima\hbox{\vrule width#2 height\@tempdimc depth0pt}} + \nointerlineskip\moveright#2 + \vbox{\hrule height#2 width\@tempdimd depth0pt}}} + +% +% Oval frame: by Tomoki Shiratori +% \@my@oval@frame{thickness}{hspace}{vspace}{...} +% thickness = \thinlines or \thicklines + +\def\@my@oval@frame#1#2#3#4{\vbox{% + #1% + \setbox0 = \vbox{% + \vskip#3\relax + #4\relax + \vskip#3\relax}% + \@tempdimc \ifdim \ht0 >\wd0 \wd0\else \ht0 \fi% + \divide\@tempdimc 10\relax + \@getcirc{\@tempdimc}% + \@tempdimc\ht0% + \advance\@tempdimc -\@tempdima% + \advance\@tempdimc 2\@wholewidth% + \@tempdimd .5\@tempdima \advance\@tempdimd -\@wholewidth% + \setbox0 = \hbox{% + \raise\@tempdimd\hbox{\vrule height\@tempdimc width\@wholewidth}% + \hskip#2\relax + \box0\relax + \hskip#2\relax + \raise\@tempdimd\hbox{\vrule height\@tempdimc width\@wholewidth}}% + \@tempdimd\wd0 \@tempdimc\@tempdimd% + \advance\@tempdimc -\@tempdima% + \vskip -.5\@tempdima \vskip\@wholewidth% + \hbox to\@tempdimd{% + \@tempcntb\@tempcnta \advance\@tempcntb 3\relax + {\@circlefnt \char\@tempcntb\kern -.5\@tempdima}% + \vbox{\hrule height\@wholewidth width\@tempdimc}% + {\@circlefnt \kern .5\@tempdima \kern -\@wholewidth \char\@tempcnta% + \kern -\@tempdima \kern\@wholewidth}}% + \vskip -.5\@tempdima% + \box0\relax + \vskip -.5\@tempdima% + \hbox to\@tempdimd{% + \@tempcntb\@tempcnta \advance\@tempcntb\tw@\relax + {\@circlefnt \char\@tempcntb\kern -.5\@tempdima}% + \vbox{\hrule height\@wholewidth width\@tempdimc}% + {\advance\@tempcntb\m@ne% + \@circlefnt \kern .5\@tempdima \kern -\@wholewidth \char\@tempcntb% + \kern -\@tempdima \kern \@wholewidth}}% + \vskip -.5\@tempdima \vskip\@wholewidth}}% + +% +% modification of \@outputpage (from latex.tex) +% +\def\@outputpage{\begingroup\catcode`\ =10 + \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii + \if@specialpage + \global\@specialpagefalse\@nameuse{ps@\@specialstyle}\fi + \if@twoside + \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot + \let\@themargin\oddsidemargin + \else \let\@thehead\@evenhead + \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \fi\fi + \shipout + \vbox{\normalsize \baselineskip\z@ \lineskip\z@ + \let\par\@@par %% 15 Sep 87 + \vskip \topmargin \moveright\@themargin + \my@frame{% + \vbox{\setbox\@tempboxa + \vbox to\headheight{\vfil \hbox to\textwidth + {\let\label\@gobble \let\index\@gobble + \@thehead}} %% 22 Feb 87 + \dp\@tempboxa\z@ + \box\@tempboxa + \vskip \headsep + \box\@outputbox + \baselineskip\footskip + \hbox to\textwidth{\let\label\@gobble + \let\index\@gobble %% 22 Feb 87 + \@thefoot}}% + }% end of my@frame + }% + \global\@colht\textheight + \endgroup\stepcounter{page}\let\firstmark\botmark} + +% +% Heading and Footing +% In part, from fancyheading.sty +% + +\def\lhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}} +\def\chead#1{\gdef\@echead{#1}\gdef\@ochead{#1}} +\def\rhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}} + +\def\lfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}} +\def\cfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}} +\def\rfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}} + +\def\@slidehead#1#2#3#4#5{#1\hbox to\textwidth% + {\vbox{\hbox{\rlap{\parbox[b]{\textwidth}% + {\raggedright#2\strut}}\hfill\parbox[b]{\textwidth}% + {\centering#3\strut}\hfill\llap{\parbox[b]{\textwidth}% + {\raggedleft#4\strut}}}}}#5} + +\def\@slidefoot#1#2#3#4#5{#1\hbox to\textwidth% + {\vbox{\hbox{\rlap{\parbox[t]{\textwidth}% + {\raggedright#2\strut}}\hfill\parbox[t]{\textwidth}% + {\centering#3\strut}\hfill\llap{\parbox[t]{\textwidth}% + {\raggedleft#4\strut}}}}}#5} + +\def\ps@slide{% + \def\@oddhead{\@slidehead\relax\@olhead\@ochead\@orhead\hss}% + \def\@oddfoot{\@slidefoot\relax\@olfoot\@ocfoot\@orfoot\hss}% + \def\@evenhead{\@slidehead\hss\@elhead\@echead\@erhead\relax}% + \def\@evenfoot{\@slidefoot\hss\@elfoot\@ecfoot\@erfoot\relax}% + } + +\def\ps@empty{% + \def\@oddhead{\@slidehead\relax\space\space\space\hss}% + \def\@oddfoot{\@slidefoot\relax\space\space\space\hss}% + \def\@evenhead{\@slidehead\hss\space\space\space\relax}% + \def\@evenfoot{\@slidefoot\hss\space\space\space\relax}% + } + +% +% by modifying \fbox in latex.tex +% \Fbox{box sep}{box rule width/height}{...} +% +\def\Fbox#1#2#3{\@my@box@frame{#2}{#1}{#1}{#3}} + +% +% Places a shadow box +% \SFbox{box sep}{box rule width/height}{shade rule width/height}{...} +% +\def\SFbox#1#2#3#4{\@my@shadow@box@frame{#2}{#3}{#1}{#1}{#4}} + +% +% by modifying \fbox in latex.tex +% \Underline & \Underbar +% +\def\Underline#1{% + \leavevmode% + \setbox\@tempboxa\hbox{#1}% + \@tempdima1pt + \advance\@tempdima 3pt + \advance\@tempdima \dp\@tempboxa + \hbox{\lower \@tempdima% + \hbox{\vbox{\hbox{\vbox{\box\@tempboxa\vskip3pt}}% + \hrule height1pt}}}} + +% from plain.tex +\def\Underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@ + \m@th \Underline{\box\z@}$} + +% +% Things to be entered in texts +% +\def\title{\@ifnextchar[{\@@Title}{\@Title}} +\def\@Title#1{\def\slide@title{\uppercase{#1}} + \def\slidetitle{#1}} +\def\@@Title[#1]#2{\def\slide@title{\uppercase{#2}} + \def\slidetitle{#1}} +\def\slide@title{\hspace*{1pt}} +\def\slidetitle{\hspace*{1pt}} + +\def\author{\@ifnextchar[{\@@Author}{\@Author}} +\def\@@Author[#1]#2{\def\slide@author{#2}% + \def\slideauthor{#1}} +\def\@Author#1{\def\slide@author{#1} + \def\slideauthor{#1}} +\def\slide@author{\hspace*{1pt}} +\def\slideauthor{\hspace*{1pt}} + +\def\organization#1{\def\authororga{#1}} +\def\authororga{\hspace*{1pt}} + +\def\date#1{\def\slidedate{#1}} +\def\slidedate{\today} + +% +% section and subsection +% +\newcounter{sec@ctr} +\setcounter{sec@ctr}{1} + +\def\section{\@ifnextchar[{\@@Section}{\@Section}} + +\def\@Section#1{\clearpage + \thispagestyle{empty} + \vspace*{\fill} + \begin{center} + \Hugesize\uppercase{#1} + \end{center} + \vspace*{\fill} + \def\sectiontitle{#1} + \Add@@secitem{toc}{\thesec@ctr}{#1} + \addtocounter{sec@ctr}{1} + \clearpage} + +\def\@@Section[#1]#2{\clearpage + \thispagestyle{empty} + \vspace*{\fill} + \begin{center} + \Hugesize\uppercase{#2} + \end{center} + \vspace*{\fill} + \def\sectiontitle{#1} + \Add@@secitem{toc}{\thesec@ctr}{#1} + \addtocounter{sec@ctr}{1} + \clearpage} + +\def\sectiontitle{\relax} + +\def\Add@@secitem#1#2#3{\if@filesw \begingroup +\let\label\@gobble \let\index\@gobble \let\glossary\@gobble +\def\protect##1{\string\string\string##1\string\space + \space}\@temptokena{\thepage}% +\edef\@tempa{\write \@auxout{\string\@writefile{#1}{\protect + \secitem{#2}{#3}{\the\@temptokena}}}}\@tempa + \if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi} + +\def\subsection#1{\subsec@begin@vspace + \addtocounter{sec@ctr}{-1} + \Add@@subsecitem{toc}{\thesec@ctr}{#1} + \addtocounter{sec@ctr}{1} + \hspace*{\fill} + \sub@section@frame{\Largesize #1} + \hspace*{\fill} + \subsec@end@vspace} + +\def\Add@@subsecitem#1#2#3{\if@filesw \begingroup +\let\label\@gobble \let\index\@gobble \let\glossary\@gobble +\def\protect##1{\string\string\string##1\string\space + \space}\@temptokena{\thepage}% +\edef\@tempa{\write \@auxout{\string\@writefile{#1}{\protect + \subsecitem{#2}{#3}{\the\@temptokena}}}}\@tempa + \if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi} + +% +% titlepage +% +\def\titlepage{\thispagestyle{empty} + \vspace*{\fill} + \begin{center} + \Hugesize \slide@title \\ [2em] + \Normalsize\slide@author \\ [.5em] + \Normalsize\authororga \\ [1em] + \Normalsize\slidedate + \end{center} + \vspace*{\fill} + \setcounter{page}{0} + \clearpage} + +% +% tables of contents +% +\def\contentsname{CONTENTS} + +\newcounter{@@@dum@@@} +\setcounter{@@@dum@@@}{0} + +\def\slidecontents{\@ifnextchar*{\@@slidecontents}{\@slidecontents}} + +\def\@slidecontents{\openin1 \jobname.toc \ifeof1 \typeout + {No file \jobname.toc}\else\closein1\relax + \def\secitem##1##2##3{% + \ifnum\value{@@@dum@@@}=0% + \setcounter{@@@dum@@@}{1}% + \begin{citemize}\contsize\fi + \item[$\bullet$] ##2 \dotfill\ ##3\ignorespaces} + \def\subsecitem##1##2##3{\ignorespaces} + \clearpage + \thispagestyle{empty} + \addtocounter{page}{-1} + \subsec@begin@vspace + \hspace*{\fill} + \sub@section@frame{\Largesize\contentsname} + \hspace*{\fill} + \subsec@end@vspace + \input{\jobname.toc} + \ifnum\value{@@@dum@@@}=1% + \setcounter{@@@dum@@@}{0}% + \end{citemize}\fi + \vspace*{\fill} + \clearpage + \fi} + +\def\@@slidecontents*{\openin1 \jobname.toc \ifeof1 \typeout + {No file \jobname.toc}\else\closein1\relax + \def\secitem##1##2##3{% + \ifnum\value{@@@dum@@@}=0% + \setcounter{@@@dum@@@}{1}% + \begin{citemize}\contsize\fi + \item[$\bullet$] ##2 \hspace{\fill}} + \def\subsecitem##1##2##3{\ignorespaces} + \clearpage + \thispagestyle{empty} + \addtocounter{page}{-1} + \subsec@begin@vspace + \hspace*{\fill} + \sub@section@frame{\Largesize\contentsname} + \hspace*{\fill} + \subsec@end@vspace + \input{\jobname.toc} + \ifnum\value{@@@dum@@@}=1% + \setcounter{@@@dum@@@}{0}% + \end{citemize}\fi + \vspace*{\fill} + \clearpage + \fi} + +\def\sectioncontents{\@ifnextchar*{\@@sectioncontents}{\@sectioncontents}} + +\newcounter{@@@dummy@@@} +\setcounter{@@@dummy@@@}{0} + +\@ifundefined{checkmark}% + {\def\mycheckmark{\surd}}% + {\def\mycheckmark{\checkmark}} + +\def\mysecpointer{\Rightarrow} + +\def\@sectioncontents{\openin1 \jobname.toc \ifeof1 \typeout + {No file \jobname.toc}\else\closein1\relax + \def\secitem##1##2##3{% + \ifnum\value{@@@dum@@@}=0% + \setcounter{@@@dum@@@}{1}% + \begin{citemize}\contsize\fi + \ifnum\value{@@@dummy@@@}=1% + \setcounter{@@@dummy@@@}{0}% + \end{ccitemize}\fi + \item[\ifnum\value{sec@ctr}>##1$\mycheckmark\;\bullet$% + \else\ifnum\value{sec@ctr}=##1$\mysecpointer\bullet$% + \else$\bullet$\fi\fi] ##2 \dotfill\ ##3\ignorespaces} + \def\subsecitem##1##2##3{% + \ifnum\value{sec@ctr}=##1% + \ifnum\value{@@@dummy@@@}=0 + \setcounter{@@@dummy@@@}{1} + \begin{ccitemize}\contsizesize\fi + \item[$\bullet$] ##2 \hspace*{\fill}\fi} + \clearpage + \thispagestyle{empty} + \addtocounter{page}{-1} + \subsec@begin@vspace + \hspace*{\fill} + \sub@section@frame{\Largesize\contentsname} + \hspace*{\fill} + \subsec@end@vspace + \input{\jobname.toc} + \ifnum\value{@@@dummy@@@}=1% + \setcounter{@@@dummy@@@}{0}% + \end{ccitemize}\fi + \ifnum\value{@@@dum@@@}=1% + \setcounter{@@@dum@@@}{0}% + \end{citemize}\fi + \vspace*{\fill} + \clearpage + \fi} + +\def\@@sectioncontents*{\openin1 \jobname.toc \ifeof1 \typeout + {No file \jobname.toc}\else\closein1\relax + \def\secitem##1##2##3{% + \ifnum\value{@@@dum@@@}=0% + \setcounter{@@@dum@@@}{1}% + \begin{citemize}\contsize\fi + \ifnum\value{@@@dummy@@@}=1% + \setcounter{@@@dummy@@@}{0}% + \end{ccitemize}\fi + \item[\ifnum\value{sec@ctr}>##1$\mycheckmark\;\bullet$% + \else\ifnum\value{sec@ctr}=##1$\mysecpointer\bullet$% + \else$\bullet$\fi\fi] ##2 \hspace{\fill}} + \def\subsecitem##1##2##3{% + \ifnum\value{sec@ctr}=##1% + \ifnum\value{@@@dummy@@@}=0 + \setcounter{@@@dummy@@@}{1} + \begin{ccitemize}\contsizesize\fi + \item[$\bullet$] ##2 \hspace{\fill}\fi} + \clearpage + \thispagestyle{empty} + \addtocounter{page}{-1} + \subsec@begin@vspace + \hspace*{\fill} + \sub@section@frame{\Largesize\contentsname} + \hspace*{\fill} + \subsec@end@vspace + \input{\jobname.toc} + \ifnum\value{@@@dummy@@@}=1% + \setcounter{@@@dummy@@@}{0}% + \end{ccitemize}\fi + \ifnum\value{@@@dum@@@}=1% + \setcounter{@@@dum@@@}{0}% + \end{citemize}\fi + \clearpage + \vspace*{\fill} + \fi} + +\def\citemize{\list{\relax}% + {\leftmargin=2.5em + \rightmargin=.5em + \labelwidth=2em + \labelsep=.5em + \def\makelabel##1{\hss\llap{##1}}}} +\let\endcitemize =\endlist + +\def\ccitemize{\list{\relax}% + {\leftmargin=1em + \rightmargin=0em + \labelwidth=.5em + \labelsep=.5em + \def\makelabel##1{\hss\llap{##1}}}} +\let\endccitemize =\endlist + +% +% modifications to enumerate env. +% +\def\labelenumi{\theenumi.} + \def\theenumi{\arabic{enumi}} +\def\labelenumii{\theenumi.\theenumii.} + \def\theenumii{\arabic{enumii}} + \def\p@enumii{\theenumi.} +\def\labelenumiii{\theenumi.\theenumii.\theenumiii.} + \def\theenumiii{\arabic{enumiii}} + \def\p@enumiii{\theenumi.\theenumii.} +\def\labelenumiv{\theenumi.\theenumii.\theenumiii.\theenumiv.} + \def\theenumiv{\arabic{enumiv}} + \def\p@enumiv{\theenumi.\theenumii.\theenumiii.} + +\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter{\@enumctr} + \labelsep = .2em + \ifnum \@enumdepth = 1 + \labelwidth = 1em + \leftmargin=\leftskip + \advance\leftmargin1.8em + \else \ifnum \@enumdepth = 2 + \labelwidth = 1.6em + \leftmargin = 1.8em %\leftmargin = \labelwidth+\labelsep + \else \ifnum \@enumdepth = 3 + \labelwidth = 2.4em + \leftmargin = 2.6em + \else + \labelwidth = 3.2em + \leftmargin = 3.4em + \fi + \fi + \fi + \def\makelabel##1{\rlap{##1}\hss}}\fi} + +% +% Font sizes +% +\def\Hugesize{\Huge} % in art12.sty, \Huge = \huge +\def\Largesize{\huge} % in art11.sty, \Huge > \huge +\def\Normalsize{\LARGE} +\def\Smallsize{\Large} + +\def\contsize{\LARGE} +\def\contsizesize{\Large} +\def\smallcontentsfonts{% + \def\contsize{\Large} + \def\contsizesize{\large}} + +\def\smallerfonts{% + \def\Hugesize{\huge} + \def\Largesize{\LARGE} + \def\Normalsize{\Large} + \def\Smallsize{\large} + \def\contsize{\Large} + \def\contsizesize{\large} + \def\smallcontentsfonts{% + \def\contsize{\large} + \def\contsizesize{\normalsize}}% + } +% +% modifications to document env. +% + +\let\@@@@document\document +\def\document{\@@@@document + \Normalsize} +\let\@@end@@document\enddocument +\def\enddocument{% +\if@filesw \newwrite\tf@toc + \immediate\openout\tf@toc=\jobname.toc + \typeout{Writing toc file \jobname.toc}\fi + \@@end@@document} + +% +% slide environment +% +\newdimen\defaultskip +\def\slide{\@ifnextchar[{\@@Slide}{\@Slide}} +\def\@Slide{\@@Slide[0pt]} +\def\@@Slide[#1]{\slide@begin@vspace + \begingroup + \advance\leftskip\defaultskip + \advance\rightskip\defaultskip + \advance\leftskip#1 + \advance\rightskip#1 + \advance\leftmargini\leftskip} +\def\endslide{\par\endgroup + \slide@end@vspace + \clearpage} + +% +% Page vertical spacing types +% +\def\vertcenter{% + \def\subsec@begin@vspace{\vspace*{\fill}} + \def\subsec@end@vspace{\vspace*{\fill}} + \def\slide@begin@vspace{\vspace*{\fill}} + \def\slide@end@vspace{\vspace*{\fill}}% + } +\def\vertgroup{% + \def\subsec@begin@vspace{\relax} + \def\subsec@end@vspace{\vspace*{2em}} + \def\slide@begin@vspace{\vspace*{\fill}} + \def\slide@end@vspace{\vspace*{\fill}}% + } +\def\verttop{% + \def\subsec@begin@vspace{\relax} + \def\subsec@end@vspace{\vspace*{2em}} + \def\slide@begin@vspace{\relax} + \def\slide@end@vspace{\relax}% + } + +% +% Page Frame Definitions +% +\def\doubleboxframe{% + \def\my@frame##1{% + \@my@box@frame{.4em}{.3em}{.3em}% + {\@my@box@frame{1.6pt}{.8em}{.8em}{##1}}}} + +\def\shadowframe{% + \def\my@frame##1{% + \@my@shadow@box@frame{1.6pt}{3.2pt}{.8em}{.8em}{##1}}} + +\def\ovalframe{% + \def\my@frame##1{\@my@oval@frame{\thicklines}{.4em}{.3em}{##1}}} + +% +% Subsection frames +% +\def\boxsecframe{\def\sub@section@frame##1{\Fbox{3pt}{1pt}{##1}}} +\def\shadowsecframe{\def\sub@section@frame##1{\SFbox{3pt}{1pt}{2pt}{##1}}} + +% +% defaults +% +% slide head and foot +\lhead{\slidetitle} +\chead{\relax} % empty +\rhead{\sectiontitle} +\lfoot{\slideauthor} +\cfoot{\relax} % empty +\rfoot{\thepage} + +% +\defaultskip=1em +% +\pagestyle{slide} + +% \portrait vs. \landspace +\portrait + +% no parindent +\parindent 0pt + +% \vertcenter vs. \verttop +\vertcenter % vertical centering + +% \doubleboxframe vs. \shadowframe vs. \ovalframe +\shadowframe + +% \boxsecframe vs. \shadowsecframe +\shadowsecframe + +% hyphenation off. Comment the following line if you want hyphenation on +\pretolerance=10000 + +% right-justification off +% Comment the following two lines if you want right-justification on +\@rightskip\@flushglue +\rightskip\@rightskip + +% +% use pointing hand +% +%\font\handsfont=hands scaled\magstep5 +%\def\handright{{\handsfont \char"41}} +%\def\handleft{{\handsfont \char"42}} +%\def\mysecpointer{\mbox{\handright}\,} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% hands fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%%Do ftp login: +%% +%% anonymous@ymir.claremont.edu +%% +%%Go to the directory of hands.dir: +%% +%% cd tex +%% cd mf +%% cd hands +%% +%%Get all files: +%% +%% mget * +%% +%%Modifications to hands.mf +%%^^^^^^^^^^^^^^^^^^^^^^^^^ +%% ... ... +%% size=10pt#; +%% ... ... +%% thinline#:=6/100em#; +%% +%%Run metafont on hands.mf with magnification of: +%% +%% 1.2**5 +%% +%%which is used in lslide.sty +%%Probably, you may want to generate hands fonts with +%%all magnifications: +%% +%% 1, root(1.2), 1.2, 1.2**2, 1.2**3, 1.2**4, 1.2**5 +%% diff --git a/macros/latex209/contrib/misc/lslide.tex b/macros/latex209/contrib/misc/lslide.tex new file mode 100644 index 0000000000..c68fcb9379 --- /dev/null +++ b/macros/latex209/contrib/misc/lslide.tex @@ -0,0 +1,412 @@ +%% Save file as: LSLIDE.TEX Source: FILESERV@SHSU.BITNET +% by Young U. Ryu +% +% o There is a sample below. All original header material follows +% \end{document} +% LaTeX (or AmSLaTeX) it at least twice and print. +% ^^^^^ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\documentstyle[12pt,lslide]{article} +%\documentstyle[12pt,amssymbols,lslide]{article} + % <- if amssymbols.sty is available +%\documentstyle[12pt,amstex,amssymb,lslide]{article} + % <- if you use AmSLaTeX + +%\landscape + % <- if your driver can rotate 90 degrees. + % e.x. in emTeX derivers: + % hp filename /tr2 + % \portrait is default. + +% Addjust page dimenstions here if necessary. For example: +%\addtolength{\textwidth}{-.3in} +%\addtolength{\textheight}{.5in} +%\addtolength{\topmargin}{.02in} +%\addtolength{\oddsidemargin}{-.03in} +%\addtolength{\evensidemargin}{-.03in} + +%\verttop + % compare it with \vertcenter that is the default + +%\doubleboxframe % or \ovalframe + % compare them with \shadowframe that is the default + +%\boxsecframe + % compare it with \shadowsecframe that is the default + +\begin{document} + +\title[Sample Slides with {\tt lslide.sty}]% + {Sample Slides \\ + with {\tt lslide.sty}} + +\author{Thomas Magnum} + +\organization{Private Investigator's Association} + +\date{March 1992} + +\titlepage + +\slidecontents + +\sectioncontents + +\section{Introduction} + +\begin{slide} +\subsection{Problems of Truth-Functional Logic} + +\Underbar{Case 1} + +\begin{enumerate} +\item $\neg A$ \\ + Therefore $A \rightarrow B$ +\item The Padre beach is not poluted. \\ + Therefore, if the Padre beach is poluted, it is good for surfing. +\end{enumerate} + +\vspace*{\fill} + +\Underbar{Case 2} + +\begin{enumerate} +\item $B$ \\ + Therefore $A \rightarrow B$ +\item The Padre beach is good for surfing. \\ + Therefore, if the Padre beach is poluted, it is good for surfing. +\end{enumerate} +\end{slide} + +\begin{slide}[.5in] +\Underbar{Case 3} + +\begin{enumerate} +\item $A \rightarrow B$ \\ + $C \rightarrow \neg B$ \\ + $C \rightarrow A$ \\ + $C$ \\ + Therefore $B \wedge \neg B$ +\item If it is a bird, then it can fly. \\ + If it is penguin, then it cannot fly. \\ + If it is penguin, then it is a bird. \\ + It is a bird \\ + Therefore, it cannot fly. +\end{enumerate} +\end{slide} + +\sectioncontents + +\section{Next Section} + +\begin{slide}[1in] +Whatever it is. What ever it is. +Whatever it is. What ever it is. + +\vspace*{1.5em} + +\begin{enumerate} +\item Item 1 with Normalsize. + \begin{enumerate}\Smallsize + \item Item 1.1 with Smallsize. + \item Item 1.2 with Smallsize. + \end{enumerate} +\item Item 2 with Normalsize. +\end{enumerate} +\end{slide} + +\end{document} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% End of the sample file%%% +% +% Noted modifications by Keith Farkas <farkas@eecg.toronto.edu> posted +% to comp.text.tex on 21 Apr 92 15:43:52 GMT: +% I have added a new vertical centering option to the slide style file +% writen by Yong Ryu. The new option is \vertgroup and is like \vertcenter +% with the exception that \vspace{2em} is placed after \subsection +% rather than \vspace{\vfill}. +% +% o lslide.sty is a LaTeX/AmSLaTeX style file for +% presentation slide typesetting. +% It was developed for my personal use. That is, +% it is a prototype. It may be improved in the future. +% See Final Notes, Bugs, Comments, etc. +% +% o It generates a title page, tables of contents, +% separate section heading pages, and slides +% with heads and foots inside a nice frame. +% +% o No hyphenations: +% Hyphenated words are not easily readable +% in presentation slides, in my opinion. +% No right-justifications +% Right justifications may place too big spaces +% between words, when hyphenations are turned off. +% +% If you want hyphenations and/or right-justifications +% go to the "defaults" section in the end of this style file +% and comment commands to make them. +% +% o A postscript driver is NOT required. +% ^^^ +% +% o Version 2.0.1 Update +% A. added a third vertical centering option \vertgroup. \vertgroup +% is like \vertcenter with the exception that \vspace{2em} is +% placed after \subsection rather than \vspace{\vfill}. +% Keith Farkas (farkas@eecg.toronto.edu April 21 1992) +% +% o Version 2.0 Update +% A. Frame macros are simplified and redundant macros are removed. +% B. A bug in \slidecontents & \sectioncontents is fixed. +% Bug: When filename.toc exists but is empty, the previous +% version reports `\item ...' missing error. +% C. Thanks to Tomoki Shiratori, an oval frame is added. +% D. \typeA & \typeB are renamed to \vertcenter & \verttop. +% E. \pframeA & \pframeB are renamed to \doubleboxframe & \shadowframe. +% F. \sframeA & \sframeB are renamed to \boxsecframe & \shadowsecframe. +% +% o Version 1.2 Update +% A. A shadow page frame added. +% B. \SFbox changed. +% C. \vertcenter and \verttop def. changed. +% D. Extra spaces following page no. in tables of contents are removed. +% +% o Version 1.1 Update +% A. Default page dimensions changed. +% B. \leftmargini of itemize env.: \leftskip is always added. +% The left skip of itemize env. is (almost) same as +% that of enumerate env. +% C. \SFbox added - places a shadow box. +% +% o How to use it: +% A. \documentstyle[12pt,lslide]{article} % <- Minimal Req. +% \documentstyle[12pt,amssymbols,lslide]{article} +% % <- use amssymbols.sty for LaTeX if available +% \documentstyle[12pt,amstex,amssymb,lslide]{article} +% % <- may be used with AmSLaTeX +% % Personally, I prefer it because it can +% % easily handle various shapes/styles of fonts. +% +% Or you may use art11.sty to make the whole slide fonts smaller. +% \documentstyle[11pt,lslide]{article} +% \documentstyle[11pt,amssymbols,lslide]{article} +% \documentstyle[11pt,amstex,amssymb,lslide]{article} +% (To make fonts smaller, you may also use \smallerfonts. See B.) +% Note: There is no font size difference between art10.sty +% and art11.sty, when fonts >= \large are used. +% If you use art10.sty, head and foot fonts of slides +% become too small. +% +% B. \portrait (default) +% \landscape +% (Should be placed before \begin{document}) +% If your print driver allows the 90 degree rotation of the +% output pages: +% e.g., emTeX drivers - /tr1 or /tr3 +% e.x., hp myslide /tr1 +% e.g., dvi2ps - -elandscape (???) +% or your printer has a sideway printing mode, +% you may use \landscape. +% +% Probably, you must modify the page dimensions. +% Place those modifications after \portrait or +% \landscape. If you use the default (i.e., do not +% use \portrait or \landscape), place them just after +% \documentstyle[...]{...}. +% e.g., \addtolength{\textwidth}{...in} +% \addtolength{\textheight}{...in} +% \addtolength{\topmargin}{...in} +% \addtolength{\oddsidemargin}{...in} +% \addtolength{\evensidemargin}{...in} +% +% \defaultskip=...in or ...pt or ...em or ...... +% horizontal spaces at the left and the right of slide +% bodies (within the slide frame) +% The default is: +% \defaultskip=1em +% +% \vertcenter (default) +% \verttop +% (Should be placed before \begin{document}) +% \vertcenter option places \vspace*{\fill} on the top and bottom +% of each slide page and after \subsection. (Vertical centering) +% \verttop option places \vspace*{.5em} before \subsection and +% \vspace*{1em} after \subsection; not \vspace on the top +% or bottom of each slide page. +% \vertgroup is like \vertcenter but places \vspace{2em} after +% \subsection +% +% \doubleboxframe +% \shadowframe (default) +% (Should be placed before \begin{document}) +% \doubleboxframe option places double boxes around each page. +% \shadowframe option places a shadow box around each page. +% \ovalframe option places an oval around each page. +% +% \boxsecframe +% \shadowsecframe (default) +% (Should be placed before \begin{document}) +% \boxsecframe option places a single box around subsection title. +% \shadowsecframe option places a shadow box around subsection title. +% +% \contentsname{...} +% (Placed before or after \begin{document}) +% Heading of tables of contents. Default is: +% \contentsname{CONTENTS} +% +% \smallerfonts +% (Placed before \begin{document}) +% Make fonts smaller thoughout the whole file. +% If you think the default fonts are too big, +% use this command. +% Or, you may use art11.sty to make fonts smaller. (See A.) +% +% \smallcontentsfonts +% (Placed before or after \begin{document}) +% Makes fonts for tables of contents smaller. +% Use when the table of content occupies more than one page. +% If it is used with \smallerfonts, it must placed after +% \smallerfonts. +% +% C. \title{T} or \title[T1]{T2} +% (Placed before or after \begin{document}) +% T or T2 goes to the title page. +% T or T1 goes to the left head of each page. +% \author{A} +% (Placed before or after \begin{document}) +% A goes to the title page and left foot of each page. +% \organization{O} +% (Placed before or after \begin{document}) +% O goes to the title page. +% \date{D} +% (Placed before or after \begin{document}) +% D goes to the title page. +% \titlepage +% (Placed after \begin{document}) +% Generates the title page. +% +% From now on, everything should be placed after \begin{document} +% +% D. \slidecontents or \slidecontents* +% (Placed outside \begin{slide} ... \end{slide}) +% Generates a Table of Contents that Consists of Section Headings. +% Usually placed after \titlepage +% If * is placed, no page numbers will appear. +% +% \sectioncontents or sectioncontents* +% (Placed outside \begin{slide} ... \end{slide}) +% Generates a Table of Contents that Consists of Section Headings +% and Subsection Heading of the Following Section. +% Usually placed before \section{...} +% If * is placed, no page numbers will appear. +% +% E. \section{A} or \section[A1]{A2} +% (Placed outside \begin{slide} ... \end{slide}) +% A or A2 goes to a separate page of section heading +% A or A1 goes to a table of contents and the right head of each page. +% +% F. \subsection{A} +% (Placed inside \begin{slide} ... \end{slide}) +% A frame box surrounds A. +% A goes to a table of contents for the section. +% +% G. \begin{slide} ... \end{slide} +% Generates a page of slide. +% Your slide bodies are to be placed here. +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +% \begin{slide}[dimension] ... \end{slide} +% Adds horizontal spaces by "dimension (e.g. 1in, 3em, etc.)" +% at the left and the right of the text body (within +% the frame). +% Only for that page of slide. +% cf. \defaultskip = dimension +% for all pages of slide +% +% H. \Underbar{...} and \Underline{...} +% Same as \underbar and \underline except that the rule +% is thicker. +% +% I. Font size (Notice that all start with a capital letter) +% \Hugesize +% \Largesize +% \Normalsize - default for slides +% \Smallsize +% +% J. Slide head and foot +% \lhead{...} default: \lhead{\slidetitle} +% \chead{...} default: \chead{\relax} % empty +% \rhead{...} default: \rhead{\sectiontitle} +% \lfoot{...} default: \lfoot{\slideauthor} +% \cfoot{...} default: \cfoot{\relax} % empty +% \rfoot{...} default: \rfoot{\thepage} +% +% K. Miscellaneous +% \slidetitle - prints slide title (default: \hspace*{1pt}) +% \slideauthor - prints author name (default: \hspace*{1pt}) +% \authororga - prints organization (default: \hspace*{1pt}) +% \slidedate - prints date (default: \today) +% \sectiontitle - prints section heading +% +% \pagestyle{slide} is default for slides +% note: \ps@slide is defined in this style file +% \pagestyle{empty} is default for the title page, +% tables of contents, and section heading pages. +% +% \Fbox{box sep}{rule thickness}{...} +% Places a box around ... +% box sep = spaces between ... and box rules +% rule thickness = as you can guess +% e.x., \Fbox{3pt}{1pt}{Box Me} +% +% \SFbox{box sep}{rule thickness}{shade thickness}{...} +% Places a shadow box around ... +% box sep = spaces between ... and box rules +% e.x., \SFbox{3pt}{1pt}{2pt}{Box Me} +% +% L. Final Notes, Bugs, Comments, etc. +% This is a prototype. It will be extended in the future: +% - Various types of slide frames are desirable. +% Users may select. +% - \begin{note} ... \end{note} is useful. +% - Top-bottom centering (vertical centering) can be done by \vertcenter. +% Left-right centering (horizontal centering) may be implemented. +% - Postscript specific features ??? +% With postscript, lots of things can be done easily (?!). +% But, I personally discourage postscript specific features, +% because I myself use non-postscript printers more often. +% - Probably, new font definitions are needed, instead of +% using those (i.e. defaults) of LaTeX/AmSLaTeX, 'cause +% many of them are not used at all and we may need +% big fonts with various shapes. +% +% How to get (bold) sans serif fonts instead of roman fonts: +% - If you use AmSLaTeX (with the new font scheme), it's simple: +% \begin{document}\sf +% \begin{document}\sf\bf +% Or something more ... (especially to get bold math) +% - If you use LaTeX, it's not simple. +% ``\begin{document}\sf\Normalsize'' or +% ``\begin{document}\sf\Normalsize\bf'' +% handles many (but not all) cases. +% The best way is to define a style file (or using +% one if available) which sets \sf (or \sf\bf) as default. +% Or you may create a .fmt file after modifying +% lfonts.sty. +% - Personally, I modified a font file (fontdef.max) for AmSLaTeX +% and created a lslide.fmt file so that bold sans serif +% is default for text and bold symbol fonts are +% default for math. +% However, unfortunately, not all AmS bold fonts +% are available!!! +% +% Bugs +% - Probably a few (or many???). +% - I can't locate them. I need your help... +% +% E-mail bugs and comments to +% young@emx.utexas.edu +% youngryu@bongo.cc.utexas.edu +% +% diff --git a/macros/latex209/contrib/misc/ltgtsim.sty b/macros/latex209/contrib/misc/ltgtsim.sty new file mode 100644 index 0000000000..7294ea4fba --- /dev/null +++ b/macros/latex209/contrib/misc/ltgtsim.sty @@ -0,0 +1,15 @@ +% Save file as: LTGTSIM.STY Source: FILESERV@SHSU.BITNET +% Posted by thompson@stars.gsfc.nasa.gov (BILL THOMPSON) to comp.text.tex +% on 29 Jul 91 15:41:26 GMT + +% The commands \ltsim and \gtsim combine the symbols < ~ and > ~ respectively. +% The commands \ltsimscript and \gtsimscript do the same in subscripts. + +\newcommand{\ltsim}{\protect\raisebox{-0.5ex}{$\:\stackrel{\textstyle <} + {\sim}\:$}} +\newcommand{\gtsim}{\protect\raisebox{-0.5ex}{$\:\stackrel{\textstyle >} + {\sim}\:$}} +\newcommand{\ltsimscript}{\protect\raisebox{-0.5ex}{$\stackrel{\scriptstyle <} + {\sim}$}} +\newcommand{\gtsimscript}{\protect\raisebox{-0.5ex}{$\stackrel{\scriptstyle >} + {\sim}$}} diff --git a/macros/latex209/contrib/misc/makerobust.sty b/macros/latex209/contrib/misc/makerobust.sty new file mode 100644 index 0000000000..114531cfeb --- /dev/null +++ b/macros/latex209/contrib/misc/makerobust.sty @@ -0,0 +1,112 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "David Carlisle", +%%% version = "1.01", +%%% date = "04 May 1993", +%%% time = "13:48:42 BST", +%%% filename = "makerobust.sty", +%%% address = "Computer Science Department +%%% Manchester University +%%% Oxford Road +%%% Manchester +%%% England +%%% M13 9PL", +%%% telephone = "+44 61 275 6139", +%%% FAX = "+44 61 275 6236", +%%% checksum = "63663 112 477 4231", +%%% email = "carlisle@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, fragile, robust", +%%% supported = "yes", +%%% docstring = " +%%% +%%% makerobust.sty +%%% +%%% A LaTeX style option defining the \makerobust command. +%%% \makerobust{\cs} makes the control sequence \cs robust. +%%% +%%% If you put \makerobust{\cite} in the preamble, you can write: +%%% \caption{Taken from \cite{foo}} rather than +%%% \caption{Taken from \protect\cite{foo}} +%%% +%%% The checksum field above was produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% +% Version 1.00: 19 May 1991 +% Version 1.01: 04 May 1993 (Xiaoming Cai) remove `\` from the internal +% command names, so that they work when read +% from a file. +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%<*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 makerobust.sty +% +% If you have the Mittelbach/Duchier/Braams docstrip utility, you may +% produce a faster loading .sty file. +% Rename this file to: makerobust.doc +% Then run this file through *plain* TeX: +% tex makerobust.doc +% This should produce the file makerobust.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 makerobust.doc +% Note that you may need to quote the arguments here to stop your +% operating system treating the \ characters incorrectly. +% +% latex makerobust.doc +% Will produce a typeset version of the documentation, as above. +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname + \def\batchfile{makerobust.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{makerobust.sty}{t}{\from{makerobust.doc}{}} + \endinput +\fi +% +\ifcat a\noexpand @\let\next\relax\else\def\next{% + \documentstyle[doc]{article}\MakePercentIgnore}\fi\next +% +%\def\eatmodule<#1>{}\eatmodule +%</x> +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \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{makerobust.sty} +% \author{D. P. Carlisle} +% \date{04 May 93} +% \begin{document} +% \maketitle +% +% \begin{macro}{\makerobust} +% |\makerobust| may be used to make a fragile command robust.\\ +% So if in the preamble you have |\makerobust{\cite}| then you may use +% |\cite| rather than |\protect\cite| in a moving argument, like +% that of |\caption|. +% \begin{macrocode} +\def\makerobust#1{% + \@ifundefined{fr@gile\expandafter\@gobble\string#1}% + {\expandafter + \let\csname fr@gile\expandafter\@gobble\string#1\endcsname#1% + \edef#1{\noexpand\protect\expandafter\noexpand + \csname fr@gile\expandafter\@gobble\string#1\endcsname}}% + {\@warning{\string#1 is already robust (command ignored)}}}% +% \end{macrocode} +% \end{macro} +% \end{document} +\endinput diff --git a/macros/latex209/contrib/misc/marginote.sty b/macros/latex209/contrib/misc/marginote.sty new file mode 100644 index 0000000000..940d5c2fd1 --- /dev/null +++ b/macros/latex209/contrib/misc/marginote.sty @@ -0,0 +1,75 @@ +%%% ====================================================================== +%%% @LaTeX-style-file{ +%%% filename = "marginote.sty", +%%% version = "2.0", +%%% date = "1 July 1993", +%%% time = "09:07:08 CDT", +%%% author = "George D. Greenwade", +%%% address = "Department of Economics and Business Analysis +%%% College of Business Administration +%%% P. O. Box 2118 +%%% Sam Houston State University +%%% Huntsville, Texas, USA 77341-2118", +%%% email = "bed_gdg@SHSU.edu (Internet) +%%% BED_GDG@SHSU (BITNET) +%%% SHSU::BED_GDG (THENET)", +%%% telephone = "(409) 294-1266", +%%% FAX = "(409) 294-3712", +%%% supported = "yes", +%%% archived = "SHSU*", +%%% keywords = "LaTeX, marginal notes", +%%% codetable = "ISO/ASCII", +%%% abstract = "Create command \marginote{text} to use marginal +%%% notes in a document. Each marginal note is +%%% denoted by the fnsymbol sequence and does not +%%% alter any know counters other than those created. +%%% Original version September 12, 1989.", +%%% modifications = "Modified 1 July 1993 in response to report from +%%% Bradley C. Kuszmaul <bradley@theory.lcs.mit.edu> +%%% via David M. Jones <dmjones@theory.lcs.mit.edu> +%%% that a `gratuitous space' was introduced in the +%%% \stepcounter{marginalnote} (dumb mistake on my +%%% part!). Also added this file header and added +%%% \endinput at the end of the file.", +%%% checksum = "11442 75 385 3712", +%%% 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." +%%% } +%%% ====================================================================== +\typeout{LaTeX document substyle 'marginote.sty' July 1, 1993 (GDG)} + +\topmargin 0pt %% this code from FULLPAGE.STY +\advance \topmargin by -\headheight %% +\advance \topmargin by -\headsep %% + +\textheight 8.9in %% + +\oddsidemargin 0pt %% +\evensidemargin \oddsidemargin %% +\marginparwidth 1.1in %% changed (+.6in) to allow for notes + +\textwidth 5.9in %% changed (-.6in) to allow for notes + %% end of FULLPAGE.STY + +\newcounter{marginalnote} +\def\themarginalnote{\fnsymbol{marginalnote}} +\newcount\marginalnotecounter +\marginalnotecounter=0 + +\def\marginote#1{\ifmmode %% Can't use \marginpar in math mode, thus ... +\typeout{ } +\typeout{\string \marginote \space error. Cannot use \string \marginote \space +in math mode. Ignoring text.} +\typeout{ } +\else \ifnum \marginalnotecounter=9 \setcounter{marginalnote}{0} +\marginalnotecounter= 0 \fi %% fnsymbol only goes to 9 +\stepcounter{marginalnote}% -- line split -- GDG 1-JUL-1993 +\advance\marginalnotecounter 1 +{$^{\themarginalnote}$\ \marginpar{\raggedright %% \raggedright just looks +\footnotesize $\themarginalnote.$\ #1}} %% better in such a small space +\fi} +\endinput % -- added -- GDG 1-JUL-1993 diff --git a/macros/latex209/contrib/misc/marnote.sty b/macros/latex209/contrib/misc/marnote.sty new file mode 100644 index 0000000000..3246beca44 --- /dev/null +++ b/macros/latex209/contrib/misc/marnote.sty @@ -0,0 +1,61 @@ +% marnote.sty - MarNote 0.1 <03 Jan 92> +% macros to print a short note vertically in left or right margin on all pages. +% literal text is rotated appropriately. +% +% requires psfig and dvips +% +% James Darrell McCauley <jdm5548@diamond.tamu.edu> +% Department of Agricultural Engineering +% Texas A&M University +% College Station, Texas 77843-2117, USA +% +% useful for: +% o printing full citation on pre-prints of papers (so if +% you give copies to friends, they know where to find +% it published later). +% o easily identifying documents in folders or notebooks +\ifx\undefined\leftnote\else\endinput\fi +\typeout{MarNote 0.1 <03 Jan 92>} % identity +\input{psfig} % latest psfig.tex makes sure that this is read only once +% +\def\leftnote#1{ + \special{!userdict begin /bop-hook{gsave 20 50 translate 90 rotate + /Times-Roman findfont 11 scalefont setfont + 0 0 moveto (#1) + show grestore}def end + } +} +% +\def\rightnote#1{ + \special{!userdict begin /bop-hook{gsave 590 50 translate 90 rotate + /Times-Roman findfont 11 scalefont setfont + 0 0 moveto (#1) + show grestore}def end + } +} +% +% Special bonus!! a macro to lightly write the word "draft" +% across a page. Use only one of \leftnote, \rightnote, & \draftcp +\def\draftcp{ + \special{!userdict begin /bop-hook{gsave 200 30 translate + 65 rotate /Times-Roman findfont 216 scalefont setfont + 0 0 moveto 0.99 setgray (DRAFT) show grestore}def end + } +} +\endinput +\documentstyle[marnote]{article} +\title{Example of ``marnote.sty''} +\author{James Darrell McCauley} +\date{03 January 1992} +\begin{document} +%\draftcp % specifies a draft copy +\rightnote{``Example of MarNote Style File.'' 1992. McCauley, J.D. + To appear in: Style Archives Everywhere.} +\maketitle +\end{document} + + +-- +James Darrell McCauley, Grad Res Asst, Spatial Analysis Lab +Dept of Ag Engr, Texas A&M Univ, College Station, TX 77843-2117, USA +(Darrell.McCauley@tamu.edu, jdm5548@tamagen.bitnet) diff --git a/macros/latex209/contrib/misc/mathtext.sty b/macros/latex209/contrib/misc/mathtext.sty new file mode 100644 index 0000000000..3d54d9fcf0 --- /dev/null +++ b/macros/latex209/contrib/misc/mathtext.sty @@ -0,0 +1,12 @@ +% MATHTEXT.STY +% Author: George D. Greenwade, Director, Center for Business and Economic +% Research, Sam Houston State University, Huntsville, TX 77341-2056 +% Voice: (409) 294-1518 BITNET: BED_GDG@SHSU +% Purpose: Brief style file which allows the issuance of \text{foo} to insert +% text in mathmode, and warns (but processes fragilely) when +% encountered outside mathmode. +% Date: January 14, 1989 (GDG) +\typeout{Document substyle 'mathtext.sty' January 14, 1989 (GDG)} +\def\text#1{\ifmmode\leavevmode\hbox{#1}\else + \typeout{Warning: \string\text \space used outside math mode!} + \begingroup\hbox{#1}\endgroup\fi} diff --git a/macros/latex209/contrib/misc/meparticle.sty b/macros/latex209/contrib/misc/meparticle.sty new file mode 100644 index 0000000000..6d90a700d0 --- /dev/null +++ b/macros/latex209/contrib/misc/meparticle.sty @@ -0,0 +1,324 @@ +% MEParticle.sty 26-Mar-92 balemi@aut.ee.ethz.ch +% For articles according to the formatting instructions for the +% proceedings of Mechanical Engineering Publications Limited +% +% use with \title{} \author{} \abstract{} \maketitle + + +\typeout{Document Style `MEParticle' <26 Mar 92>.} + + +\def\abstract#1{\gdef\@abstract{#1}} +\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 + + +\def\thebibliography#1{\section*{REFERENCES\@mkboth + {REFERENCES}{REFERENCES}}\list + {(\arabic{enumi})}{\settowidth\labelwidth{[#1]} + \labelwidth 8mm \leftmargin 8mm + \itemsep -1.5mm + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + +\def\@mklab#1{#1 \hfil} + + +\newif\if@restonecol +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{Index}] + \@mkboth{INDEX}{INDEX}\thispagestyle{MEPheadings}\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{MEPheadings}\@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax + \let\@maketitle\relax +\let\thanks\relax} +\def\@maketitle{\newpage +\vskip 55mm \noindent {\bf SYNOPSIS. }\@abstract + \par + \vskip 1em} + +\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 + + +\twocolumn + +% FROM art10.sty 22-Dec-87 +\def\section{\@startsection {section}{1}{\z@}{-2.5ex plus -1ex minus + -.2ex}{2.3ex plus .2ex}{\bf}} +\def\subsection{\@startsection{subsection}{2}{\z@}{-2.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\bf}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.25ex plus + -1ex minus -.2ex}{1.5ex plus .2ex}{\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}} + + +\setlength{\columnsep}{6mm} +\setlength{\topmargin}{-2cm} +\setlength{\headheight}{23mm} +\setlength{\headsep}{0.8cm} +\setlength{\textheight}{240mm} +\setlength{\oddsidemargin}{0.5cm} +\setlength{\textwidth}{161mm} + +\pagestyle{MEPheadings} +\newdimen\headwidth +\newdimen\headrulewidth +\headrulewidth 0.4pt +\headwidth \textwidth +\addtolength\headwidth{-10mm} +\def\footnoterule{\kern-3\p@ + \hrule width \columnwidth + \kern 2.6\p@} + +\def\footernote#1{\def\@footernote{#1}} +\footernote{} +\def\@oddfoot{\hfill\@footernote}\def\@evenfoot{\@footernote\hfill} + +\def\ps@MEPheadings{\let\@mkboth\@gobbletwo +\def\@oddhead{\hbox{}\sl\rightmark \hfil +\rm\thepage}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox{}} +\def\@oddfoot{\hfill\@footernote}\def\@evenfoot{\@footernote\hfill} +\def\sectionmark##1{}\def\subsectionmark##1{}} + +% Definition for the running heads. The standard command +% \markboth{author's name}{title of the paper} +% can be used to manually set the headers +\def\@evenhead{\hbox to\headwidth{\vbox{\hbox +{\rlap{\parbox[b]{\headwidth}{\leftmark \strut}\hfil \thepage}}}}\hss} +\def\@oddhead{\hbox to\headwidth{\vbox{\hbox +{\rlap{\parbox[b]{\headwidth}{\rightmark\strut}\hfil \thepage}}}}\hss} +\def\rightmark{\@author\\\@title \gdef\@title{} +} +\def\leftmark{\@author\\@title \gdef\@title{} +} +\def\markboth#1#2{\def\leftmark{#1}\def\rightmark{#2}} + + + +\long\def\@makecaption#1#2#3{ +\ifx\figurestring#3 + \vskip 10pt + \setbox\@tempboxa\hbox{#1.~ #2} + \ifdim \wd\@tempboxa >\hsize + \setbox\@tempboxa\hbox{#1.~ } + \parbox{\hsize}{\raggedright\hangindent \wd\@tempboxa \hangafter=1% + \unhbox\@tempboxa#2} + \else \hbox to\hsize{\hfil\box\@tempboxa\hfil} + \fi +\else + \setbox\@tempboxa\hbox{#1~~ #2} + \ifdim \wd\@tempboxa >\hsize + \setbox\@tempboxa\hbox{#1~~ } + \parbox{\hsize}{\raggedright\hangindent \wd\@tempboxa \hangafter=1% + \unhbox\@tempboxa#2} + \else \hbox to\hsize{\hfil\box\@tempboxa\hfil} + \fi + \vskip 10pt +\fi +} + + + + diff --git a/macros/latex209/contrib/misc/merge.sty b/macros/latex209/contrib/misc/merge.sty new file mode 100644 index 0000000000..b3f033869e --- /dev/null +++ b/macros/latex209/contrib/misc/merge.sty @@ -0,0 +1,178 @@ +%% [merge.sty] +%% +%% MERGE -- A Form Letter Option to the LaTeX Letter Style +%% +%% by +%% +%% Graeme McKinstry +%% Computing Services Centre +%% University of Otago +%% P O Box 56 +%% Dunedin, New Zealand +%% +%% graeme%otago.ac.nz@relay.cs.net +%% +%% A version of these macros appeared in TUGboat 8 #1, April 1987. +%% +%% Merge is a substyle [option] under the Latex style 'Letter' which +%% merges a standard letter with a separate file containing addresses +%% and opening lines. Merge will read {address}{opening} pairs from a +%% specified file and merge them with a form letter by producing a separate +%% letter environment (containing unique "\begin{letter}{address}" and +%% "\opening{opening}" commands) for each pair. +%% +%% Detailed instructions for preparation of the form letter and the +%% separate address file appear below, after the macros. +%% +%% +%% 27 July 1988 +%% Special Thanks go to B. Beeton (BNB@SEED.AMS.COM) for +%% -- supplying the raw TeX and documentation from the TUGBoat article; +%% -- adding some documentation; +%% -- and for placing this file in the <tex.tugboat> archives at score. +%% +%% 28 July 1988 +%% C. Roberson (csrobe@icase.[arpa|edu], csrobe@[wm]cs.wm.edu) +%% -- some additional documentation (mostly cleanup for .sty file); +%% -- changed ID message to a form more similar to LaTeX's; +%% -- changed "Could not open file" to "Could not open address file" +%% so user would better understand for which filename TeX +%% was prompting with the string "\@mergefile="; +%% -- tested merge.sty; It works! Thanks, Graeme! +%% -- submitted file to /public/latex-style archives @ cs.rochester.edu. +%% +%% 6 September 1988 +%% G. McKinstry +%% -- enhanced the macros to handle running headlines properly; +%% -- fixed some other problems from the original version not addressed +%% fully by C. Roberson; +%% -- submitted new file to the latex-style archives. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% csr - changed next line to conform more to LaTeX greeting. +\typeout{Letter Sub-Style 'Merge'. Release 6 October 1986 by Graeme McKinstry} + +%% The basic algorithm is: +%% 1. Open the address file. +%% 2. Read the addresses file getting the address and opening line. +%% 3. Process the contents of the MERGE environment and store it +%% in a box (\@store). This is the standard part of the letter. +%% 4. Produce the start of the letter (your address (including date), +%% their address, and the opening line). +%% 5. Make a copy of the standard letter (\@store) and unbox this copy. +%% 6. Repeat steps 2, 4, and 5 (not 3) until there are no more addresses. + + +\newbox\@store +\long\def\@contents{\global\setbox\@store=\vbox\bgroup} % store the contents +\long\def\@endcontents{\egroup} % of the letter + +\def\@sendaddress{test} +\def\@openingtext{test} +\newif\if@firsttime % For storing the standard letter +\@firsttimetrue % the first time through. + +\newread\@addrfile % allocate an input stream + +\def\@openfile{\openin\@addrfile=\@mergefile % open the address file +\ifeof\@addrfile % i.e., didn't open successfully + \loop + \immediate\write16{Could not open address file \@mergefile} + \closein\@addrfile % close the input stream + \read16 to \@mergefile % get another file name + \openin\@addrfile=\@mergefile % open up input stream + \ifeof\@addrfile + \repeat % repeat until successfully opened +\fi} + +% The merge environment (used as the \begin{merge}. The argument (#1) is +% the name of the file containing the addresses (a default of .tex extension) +% This file is opened (\@openfile), read (\@readfile), and then the box +% containing the contents of the standard letter is started (\@contents). + +\def\merge#1{\def\@mergefile{#1 }\@openfile + \@readfile + \@contents} + +% Read address file getting the address and opening line. If this is the +% first through then there is no reason to call \endmerge as this will +% be called later on (when \end{merge} is used). + +\def\@getopeningline{\global\read\@addrfile + to\@openingtext} % get the opening line + +\def\@readfile{\global\read\@addrfile to\@sendaddress % get the address + \ifeof\@addrfile + \let\next=\relax + \else + \@getopeningline + \if@firsttime + \let\next=\relax + \else + \let\next=\endmerge + \fi + \fi\next} + +\newbox\@letterbox % For copy of \@store (the box containing the standard + % letter. +\def\endmerge{\if@firsttime\@endcontents\global\@firsttimefalse\fi % + % end contents if it is the first time + \bgroup\let\oldletter=\letter + \def\letter##1\@relax{\oldletter{##1}} % redefines letter + \expandafter\letter\@sendaddress\@relax % need to expand \@sendaddress + \opening{\@openingtext\vskip2\parskip} + \setbox\@letterbox=\copy\@store % copy the contents of the letter + \unvbox\@letterbox + \endletter\egroup + \ifeof\@addrfile + \message{End of file} + \let\next=\relax + \else + \let\next=\@readfile % loop round yet again + \fi\next} + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% A letter, say LETTER.TEX, would be set up as follows: + +%% \documentstyle[merge]{letter} +%% +%% \address{...} % your address +%% \signature{...} % your signature +%% +%% \begin{document} +%% \begin{merge}{myaddresses} % MYADDRESSES.TEX contains addresses+openings +%% +%% With regard to .... % letter starts +%% +%% \closing{...} % closing +%% \ps{...} % \ps, \encl, \cc, etc. +%% +%% \end{merge} +%% \end{document} + +%% The address file, MYADDRESSES.TEX, would contain: + +%% {Computing Services Centre, \\ % first address +%% University of Otago, \\ +%% Dunedin, \\ +%% New Zealand} +%% {Dear Graeme,} % \opening for first address +%% {Charles S. Roberson\\ % next address +%% Dept. of Computer Science\\ +%% College of William and Mary\\ +%% Williamsburg, VA 23185} +%% {Dear Chip,} % next \opening +%% .... % etc. + +%% NOTES: +%% Braces are matched, except that if the input is only one line then it +%% is not necessary to contain it within braces. +%% It is important to leave NO BLANK LINES at the end of the address file. +%% Be sure to supply the "\\" for breaking the addresses. -csr + +%% [merge.sty] diff --git a/macros/latex209/contrib/misc/mf.sty b/macros/latex209/contrib/misc/mf.sty new file mode 100644 index 0000000000..40ce64705a --- /dev/null +++ b/macros/latex209/contrib/misc/mf.sty @@ -0,0 +1,37 @@ +% mf.sty: +% Document style option to define Metafont logo in all sizes +% Author: Don Hosek +% Revision Date: 3/27/89 +% User macros defined: \mf (print Metafont logo) +% \logo (select MF logo font + +% Define \logo in terms of \plogo so that it isn't fragile (see lfonts.tex) +\def\logo{\protect\plogo} + +% We need a family too. [I think this is a waste on LaTeX's part] +\newfam\logofam + +% Define font that will be loaded for logo font here: +\def\@logof{logo10} +\def\@logoix{logo9} +\def\@logoviii{logo8} + +% Insert messages for attempted use of \logo at 5-7pt: +\@addfontinfo\@vpt{\def\plogo{\@prtct\@subfont\@prtct\logo\@prtct\rm}} +\@addfontinfo\@vipt{\def\plogo{\@prtct\@subfont\@prtct\logo\@prtct\rm}} +\@addfontinfo\@viipt{\def\plogo{\@prtct\@subfont\@prtct\logo\@prtct\rm}} + +% actually get the font for sizes 8-25pt: +\@getfont\plogo\logofam\@viiipt{\@logoviii} +\@getfont\plogo\logofam\@ixpt{\@logoix} +\@getfont\plogo\logofam\@xpt{\@logof} +\@getfont\plogo\logofam\@xipt{\@logof\@halfmag} +\@getfont\plogo\logofam\@xiipt{\@logof\@magscale1} +\@getfont\plogo\logofam\@xivpt{\@logof\@magscale2} +\@getfont\plogo\logofam\@xviipt{\@logof\@magscale3} +\@getfont\plogo\logofam\@xxpt{\@logof\@magscale4} +\@getfont\plogo\logofam\@xxvpt{\@logof\@magscale5} + +\def\MF{{\logo META}\-{\logo FONT}} + +\endinput diff --git a/macros/latex209/contrib/misc/misc.sty b/macros/latex209/contrib/misc/misc.sty new file mode 100644 index 0000000000..9720b4f5dc --- /dev/null +++ b/macros/latex209/contrib/misc/misc.sty @@ -0,0 +1,62 @@ +% podar@sbcs (Sunil Podar) July 14, 1986 +% following commands implemented here (see the comments below for more info): +% \pmb +% \timeofday +% \verbfile +% \listing +%---------------------------------------------------------------------------- +% poor man's bold. from pp. 386 of TeXbook. 1.732*0.025=0.0433 (the ratio of +% em to ex) +\newdimen\pmboffset +\pmboffset 0.025em +\def\pmb#1{\setbox0=\hbox{#1}% + \kern-\pmboffset\copy0\kern-\wd0 + \kern 2\pmboffset\copy0\kern-\wd0 + \kern-\pmboffset\raise 1.732\pmboffset\box0 } +%---------------------------------------------------------------------------- +% \timeofday is just like \today; it gives the current time of day in the form +% hh:mm as in the military style. It eats up a blank so normally one would +% say: \timeofday\ (i.e. a \<space>. +\def\timeofday{{\@tempcnta=\time \divide\@tempcnta by 60 \@tempcntb=\@tempcnta +\multiply\@tempcntb by 60 \advance\@tempcntb by -\time %@tempcntb is -ve here +\ifnum\@tempcntb < -9 \number\@tempcnta:\number-\@tempcntb + \else\number\@tempcnta:0\number-\@tempcntb\fi}} +%---------------------------------------------------------------------------- +%From: Tim Morgan <morgan@uci-icsa> +%Subject: verbatim macros +%Here are some macros which I mostly stole from the TeXbook source and +%other places. You can say +% +% \verbfile{filename} +%to \input all of "filename" in verbatim mode. The end of the file is the +%only thing that gets you back out of verbatim -- no characters are special. +%\listing is the same except that each line of the file is automatically +%numbered. +%Tim +% +% Produce verbatim listings of various sorts + +\def\uncatcodespecials{\def\do##1{\catcode`##1=12 } \dospecials} + +\def\setupverbatim{% + \par \tt \spaceskip=0pt % Make sure we get fixed tt spacing + \obeylines\uncatcodespecials\obeyspaces\verbatimdefs +} +{\catcode`\^^M=13{\catcode`\ =13\gdef\verbatimdefs{\def^^M{\ \par}\let =\ }} + \gdef\verbatimgobble#1^^M{}} +% +% Input a file in verbatim mode. Sometimes useful for including +% real-life examples into a paper. +\def\verbfile#1{\begingroup\setupverbatim + \parskip=0pt plus .05\baselineskip \parindent=0pt + \input#1 \endgroup +} + +% This is the same as the above, but it adds line numbers to each +% line of the file printed. +\newcount\lineno +\def\listing#1{\lineno=0\begingroup\setupverbatim + \parskip=0pt plus .05\baselineskip \parindent=20pt + \everypar{\advance\lineno by 1 \llap{\the\lineno\ \ }}\input#1 + \endgroup +} diff --git a/macros/latex209/contrib/misc/moreverb.readme b/macros/latex209/contrib/misc/moreverb.readme new file mode 100644 index 0000000000..e3d3c29fa6 --- /dev/null +++ b/macros/latex209/contrib/misc/moreverb.readme @@ -0,0 +1,7 @@ +% NOTE FROM CTAN ADMINISTRATOR: moreverb.sty requires verbatim.sty. +%Verbatim.sty is no longer supported for LaTeX 2.09, but a verbatim +%package is available in tex-archive/macros/latex/packages/tools/verbatim.dtx. +%If you are unable to upgrade to latex2e, a verbatim.sty which MAY work +%is available in tex-archive/fonts/ams/amsltx11/inputs/verbatim.sty. Do not +%under any circumstances bother the author of this latter file with any +%problems you may have. diff --git a/macros/latex209/contrib/misc/multicolpar.sty b/macros/latex209/contrib/misc/multicolpar.sty new file mode 100644 index 0000000000..ade42b1585 --- /dev/null +++ b/macros/latex209/contrib/misc/multicolpar.sty @@ -0,0 +1,69 @@ +%% Save file as: MULTICOLPAR.STY Source: FILESERV@SHSU.BITNET +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% File multicolpar.sty +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% by +% Mauro Orlandini <orlandini@lheavx.gsfc.nasa.gov> +% Modified by Max Hailperin <max@nic.gac.edu> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This LaTeX style, writes different paragraphs in different columns +% the number of columns is free), as +% This is the first paragraph | This is the second paragraph and its +% and text follows... | own text follows... +% +% This is the third paragraph | This is the fourth paragraph... +% and text follows... | +% +% This format is useful for translated articles, in which there is the +% original language in the first column and the translated version in +% the second. +% +% Usage: \begin{multicolpar}{N} +% ... text ... +% \end{multicolpar} +% +% where N is the number of columns in which the text will be displayed. +% Warning: Inside the environment, each blank line (ie a \par) will correspond +% to a paragraph, therefore do not leave blank lines soon after the +% \begin{multicolpar}{N} command and soon before the \end{multicolpar} +% command (unless you want so). +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newenvironment{multicolpar}[1]{\begin{trivlist}\item[]% +\multicolumnparallelparagraphs{#1}{2em}}% +{\endmulticolumnparallelparagraphs\end{trivlist}} + +\newcount\columnsleft \newcount\totalcolumns \newdimen\separation + +\def\multicolumnparallelparagraphs#1#2{% + \hbadness5000 \vbadness9999 \tolerance9999 + \totalcolumns=#1 \separation=#2 \let\xpar=\par + \vskip\parskip + \columnsleft=#1\relax + \hbox to\hsize\bgroup + \let\par\nextmulticolumnparallelparagraph + \dimen0=#2\advance\hsize-\columnsleft\dimen0 \advance\hsize\dimen0 + \divide\hsize\columnsleft\relax + \vtop\bgroup} +\def\nextmulticolumnparallelparagraph{% + \egroup + \advance\columnsleft-1 + \ifnum\columnsleft>0 + \hfil\vtop\bgroup + \else + \egroup + \xpar\vskip\baselineskip\xpar + \multicolumnparallelparagraphs\totalcolumns\separation + \fi} + +\def\endmulticolumnparallelparagraphs{% + \egroup + \advance\columnsleft-1 + \ifnum\columnsleft>0 + \hfil\vtop\bgroup\hbox to \hsize{} + \endmulticolumnparallelparagraphs + \else + \egroup + \xpar + \fi} diff --git a/macros/latex209/contrib/misc/multind.sty b/macros/latex209/contrib/misc/multind.sty new file mode 100644 index 0000000000..ef91c28df0 --- /dev/null +++ b/macros/latex209/contrib/misc/multind.sty @@ -0,0 +1,65 @@ +% indexes document style option for producing multiple indexes +% for use with the modified bbok style, CHbook.sty +% Written by F.W. Long, Version 1.1, 12 August 1991. + +% Modified by F.W. Long, Version 1.1a, 29 August 1991 +% to get the index heading correctly spaced. + +% Modified by F.W. Long, Version 1.1b, 31 August 1991 +% to remove the abbreviation \ix (which should be in the document, not here). + +% Modified \makeindex and \index commands to allow multiple indexes +% in both cases the first parameter is the index name. +% They now work more like \@starttoc and \addcontentsline. +% \index is no longer defined inside \makeindex but determines +% whether the appropriate file is defined before writing to it. + +\def\makeindex#1{\begingroup + \makeatletter + \if@filesw \expandafter\newwrite\csname #1@idxfile\endcsname + \expandafter\immediate\openout \csname #1@idxfile\endcsname #1.idx\relax + \typeout{Writing index file #1.idx }\fi \endgroup} + +\def\index#1{\@bsphack\begingroup + \def\protect##1{\string##1\space}\@sanitize + \@wrindex{#1}} + +% \@wrindex now checks that the appropriate file is defined. + +\def\@wrindex#1#2{\let\thepage\relax + \xdef\@gtempa{\@ifundefined{#1@idxfile}{}{\expandafter + \write\csname #1@idxfile\endcsname{\string + \indexentry{#2}{\thepage}}}}\endgroup\@gtempa + \if@nobreak \ifvmode\nobreak\fi\fi\@esphack} + +% Modified \printindex command to allow multiple indexes. +% This now takes over much of the work of \theindex. +% Again, the first parameter is the index name. +% The second parameter is the index title (as printed). + +\newif\if@restonecol +\def\printindex#1#2{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi + \columnseprule \z@ \columnsep 35pt + \newpage \twocolumn[{\Large\bf #2 \vskip4ex}] + \markright{\uppercase{#2}} + \addcontentsline{toc}{section}{#2} + \@input{#1.ind}} + +% The following index commands are taken from book.sty. +% \theindex is modified to not start a chapter. + +\def\theindex{\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} + +% the command \ix allows an abbreviation for the general index + +%\def\ix#1{#1\index{general}{#1}} + +% define the \see command from makeidx.sty + +\def\see#1#2{{\em see\/} #1} diff --git a/macros/latex209/contrib/misc/newequation.sty b/macros/latex209/contrib/misc/newequation.sty new file mode 100644 index 0000000000..cd0714c4d8 --- /dev/null +++ b/macros/latex209/contrib/misc/newequation.sty @@ -0,0 +1,28 @@ +% newequation.sty +% +% 12 Jan 91 Created. +% clayton@thumper.bellcore.com +% +% newequation.sty defines the \newequation command, which defines +% new equation environments. The command format is +% +% \newequation{name}{format} +% +% where "name" is the name of the new equation environment and "format" +% is the format of the equation number. For example, +% +% \newequation{define}{(D\arabic{define})} +% +% The new environment follows Latex's numbered sections convention: +% there's a counter called "name" and a command called \the"name" with +% "format" as its initial definition. See section 5.3 in the Latex +% user's guide for more on numbering. + +\def \newequation#1#2{ + \@definecounter{#1} + \@namedef{the#1}{\hbox{#2}} + \@namedef{#1}{$$\refstepcounter{#1}} + \@namedef{end#1}{ + \eqno \csname the#1\endcsname $$\global\@ignoretrue + } + } diff --git a/macros/latex209/contrib/misc/nextslide.sty b/macros/latex209/contrib/misc/nextslide.sty new file mode 100644 index 0000000000..b9d7e3ac3a --- /dev/null +++ b/macros/latex209/contrib/misc/nextslide.sty @@ -0,0 +1,47 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Mario Wolczko", +%%% version = "3", +%%% date = "21 May 1992", +%%% time = "20:58:09 BST", +%%% filename = "nextslide.sty", +%%% address = "Dept of Computer Science +%%% The University of Manchester +%%% Oxford Road +%%% Manchester M13 9PL +%%% UK", +%%% telephone = "+44-61-275-6146", +%%% FAX = "+44-61-275-6236", +%%% checksum = "48653 47 228 1860", +%%% email = "mario@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "SliTeX, page control", +%%% supported = "yes", +%%% docstring = "Adds \newslide command to SliTeX, allowing +%%% (some) other environments (e.g. lists) to span multiple slides.", +%%% } +%%% ==================================================================== +%If you, like me, are driven crazy by slitex's insistence that you +%delimit each and every slide with a \begin{slide}..\end{slide} +%environment, then some relief is at hand. +% +%This style option defines a single command, \newslide, than +%you can use to replace the sequence +% \end{slide} +% \begin{slide}{} +% +%It's better than \newpage, because that doesn't increment the page +%count, and gives you a "slide too long" error -- \newslide doesn't. +%And unlike \end{slide}\begin{slide}{} you can use \newslide within an +%environment, eg +% \begin{enumerate} +% \item foo +% \item bar +% \newslide +% \item baz +% \end{enumerate} +% +%Given that the functioning part of newslide.sty is only 32 characters +%long, I don't know why it isn't provided in the first place! + +\def\newslide{\endslide\slide{}} diff --git a/macros/latex209/contrib/misc/nf.sty b/macros/latex209/contrib/misc/nf.sty new file mode 100644 index 0000000000..c0632061d9 --- /dev/null +++ b/macros/latex209/contrib/misc/nf.sty @@ -0,0 +1,170 @@ +%%% Save file as: nf.sty Source: FILESERV@SHSU.BITNET +%%% The following checksum includes all SHSU-generated topmatter. +%%% checksum = "41408 170 486 6458" +% NF (style option to ARTICLE) for Nuclear Fusion +% NF DOCUMENT SUBSTYLE -- released 17 January 1989 +% Written by Charles Karney (Karney@Princeton.EDU). + +% This document style is designed for manuscripts to be submitted to +% Nuclear Fusion. +% To use this give NF as an optional argument to \documentstyle. The +% main style should be ARTICLE. E.g., +% \documentstyle[12pt,nf]{article} +% This provides all the same facilities as the AIP style, except: + +% (1) Sections are numbered with arabic numerals, e.g., 2.3.1 (the +% ARTICLE default). + +% (2) Reference numbers in citation and bibliography are enclosed in []'s +% (the ARTICLE default). + +% (3) The style of the subsections, etc. is different. + +% (4) Use Fig. instead of FIG. in figure captions, etc. + +\typeout{Document Substyle 'NF'. Released 17 January 1989} + +\def\thebibliography#1{\par\clearpage\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 + \sfcode`\.=1000\relax} + +% \citenum emits the plain citation number without ornament +% \citea puts it's 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{,\penalty\@m\ }{\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{,\penalty\@m\ }\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{,\penalty\@m\ }% + \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} + +% Title page +\def\@maketitle{\newpage + \null + \vskip 1em plus 2em minus 1em % Vertical space before date. + \ifx\@date\@empty\else + \begin{flushright} + {\normalsize \@date} % Date set in \large size. + \end{flushright} + \vskip 2em plus 2em minus 1em % Vertical space above title. + \fi + \begin{center} + {\Large\bf \@title \par} % Title set in \Large size. + \vskip 1.5em plus 0em minus .5em % Vertical space after title. + {\large % each author set in \large, in a + \lineskip .5em plus 0em minus .3em % tabular environment + \begin{tabular}[t]{c}\@author + \end{tabular}\par} +\end{center} + \par + \vskip 1.5em plus .5em minus .5em} % Vertical space after author. + +\newif\if@starvariant \@starvariantfalse + +\def\abstract{\if@starvariant\else\section*{Abstract}\fi} +\def\endabstract{\par\clearpage} + +\@namedef{abstract*}{\@starvarianttrue\abstract} +\@namedef{endabstract*}{\endabstract} + +\parskip 1.5pt plus 1.5pt % Extra vertical space between paragraphs. +\tabcolsep 12pt % Double column separation in tables + +\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\sl}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.25ex plus +1ex minus .2ex}{1.5ex plus .2ex}{\normalsize\sl}} + +\newif\if@numbersec \@numbersectrue +\def\appendix{\par\clearpage + \setcounter{section}{0} + \setcounter{subsection}{0} + \@addtoreset{equation}{section} + \def\theequation{\thesection\arabic{equation}} + \def\thesection{\Alph{section}} + \def\thesubsection{\arabic{subsection}} + \@ifstar{\def\@sectname{Appendix}\@numbersecfalse} + {\def\@sectname{Appendix~}\@numbersectrue}} + +% Figures +\def\thefigures#1{\par\clearpage + \if@starvariant\section*{Figure\@mkboth + {FIGURE}{FIGURE}}\else + \section*{Figures\@mkboth + {FIGURES}{FIGURES}}\fi + \list + {Fig.~\arabic{enumi}.}{\labelwidth\parindent\advance\labelwidth -\labelsep + \leftmargin\parindent\usecounter{enumi}}} +\def\figitem#1{\item\label{#1}} +\let\endthefigures=\endlist + +\@namedef{thefigures*}{\@starvarianttrue\thefigures} +\@namedef{endthefigures*}{\endthefigures} + +% Tables +\def\thetables#1{\par\clearpage + \if@starvariant\section*{Table\@mkboth + {TABLE}{TABLE}}\else + \section*{Tables\@mkboth + {TABLES}{TABLES}}\fi + \list + {Table~\Roman{enumi}.}{\labelwidth-\labelsep + \leftmargin0pt\usecounter{enumi}}} +\def\tableitem#1{\item\label{#1}} +\let\endthetables=\endlist + +\@namedef{thetables*}{\@starvarianttrue\thetables} +\@namedef{endthetables*}{\endthetables} + +% Put period after section number and allow for APPENDIX prefix. +\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth + \def\@svsec{}\else + \refstepcounter{#1}\edef\@svsec{\ifnum #2=1 \@sectname + \if@numbersec\csname the#1\endcsname\fi.\else + \csname the#1\endcsname.\fi + \hskip 1em }\fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par} + \endgroup + \csname #1mark\endcsname{#7}\addcontentsline + {toc}{#1}{\ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}\fi + #7}\else + \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname + {#7}\addcontentsline + {toc}{#1}{\ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}\fi + #7}}\fi + \@xsect{#5}} + +\def\@sectname{} + +\endinput diff --git a/macros/latex209/contrib/misc/nl.sty b/macros/latex209/contrib/misc/nl.sty new file mode 100644 index 0000000000..d7a241e9cf --- /dev/null +++ b/macros/latex209/contrib/misc/nl.sty @@ -0,0 +1,113 @@ +% Met ========== onderstreept nederlandse teksten +\@ifundefined{chapter} +{%%%%%%%%%%%%%%% dit is voor article style %%%%%%%%%%%%%%%%%%%%% +\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 Deel \thepart \par \nobreak \fi \huge +% ==== +\bf #2\markboth{}{}\par } \nobreak \vskip 3ex \@afterheading } +\def\tableofcontents{\section*{Inhoud\markboth{INHOUD}{INHOUD}} +% ====== ====== ====== + \@starttoc{toc}} +\def\listoffigures{\section*{Lijst van figuren\markboth +% ================== + {LIJST VAN FIGUREN}{LIJST VAN FIGUREN}}\@starttoc{lof}} +% ================= ================= +\def\listoftables{\section*{Lijst van tabellen\markboth +% ================== + {LIJST VAN TABELLEN}{LIJST VAN TABELLEN}}\@starttoc{lot}} +% ================== ================== +\def\thebibliography#1{\section*{Referenties\markboth +% =========== + {REFERENTIES}{REFERENTIES}}\list +% =========== =========== + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus -.07em} + \sloppy + \sfcode`\.=1000\relax} +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\section*{Index}] +% ===== + \markboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ +% ===== ===== + \parskip\z@ plus .3pt\relax\let\item\@idxitem} +\def\abstract{\if@twocolumn +\section*{Samenvatting} +% ============ +\else \small +\begin{center} +{\bf Samenvatting\vspace{-.5em}\vspace{0pt}} +% ============ +\end{center} +\quotation +\fi}} +{%%%%%%%%%%%%%% Dit is voor report en book style %%%%%%%%%%%%%%% +\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 Deel \thepart \par \vskip 20pt \fi +% ==== +\Huge \bf #1\@endpart} +\def\@chapapp{Hoofdstuk} +% ========= +\def\appendix{\par + \setcounter{chapter}{0} + \setcounter{section}{0} + \def\@chapapp{Appendix} +% ======== + \def\thechapter{\Alph{chapter}}} +\def\tableofcontents{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{Inhoud\@mkboth{INHOUD}{INHOUD}} +% ====== ====== ====== + \@starttoc{toc}\if@restonecol\twocolumn\fi} +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{Lijst van figuren\@mkboth +% ================= + {LIJST VAN FIGUREN}{LIJST VAN FIGUREN}}\@starttoc{lof}\if@restonecol\twocolumn +% ================= ================= + \fi} +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{Lijst van tabellen\@mkboth +% ================== + {LIJST VAN TABELLEN}{LIJST VAN TABELLEN}}\@starttoc{lot}\if@restonecol +% ================== ================== + \twocolumn\fi} +\def\thebibliography#1{\chapter*{Referenties\@mkboth +% =========== + {REFERENTIES}{REFERENTIES}}\list +% ============ ============ + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus -.07em} + \sloppy + \sfcode`\.=1000\relax} +\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi +\columnseprule \z@ +\columnsep 35pt\twocolumn[\@makeschapterhead{Index}] +% ===== + \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ +% ===== ===== + \parskip\z@ plus .3pt\relax\let\item\@idxitem} +\def\abstract{\titlepage +\null\vfil +\begin{center} +{\bf Samenvatting} +% ============ +\end{center}} +} +%%%%%%%%%%%%%%%%%%% dit is voor allebei %%%%%%%%%%%%%%%%%%%%%%%%%% +\def\today{\number\day\space\ifcase\month% +\or jan\or feb\or maart\or apr\or mei\or juni% +% === === ===== === === ==== +\or juli\or aug\or sept\or okt\or nov\or dec\fi +% ==== === ==== === === === +\space\number\year} +\def\fnum@figure{Figuur \thefigure} +% ====== +\def\fnum@table{Tabel \thetable} +% ===== diff --git a/macros/latex209/contrib/misc/nnfootnote.sty b/macros/latex209/contrib/misc/nnfootnote.sty new file mode 100644 index 0000000000..3b84844356 --- /dev/null +++ b/macros/latex209/contrib/misc/nnfootnote.sty @@ -0,0 +1,33 @@ +% T Mark Ellison 26 Jun 1991 +% +% This style file defines the command \nnfoottext +% which allows the user to at any time insert footnote +% text material without adding a footnote number +% to either the main page or the note. +% +% Sample Use: +% +% ..... +% \begin{document} +% ..... +% \nnfoottext{This is a witty and interesting +% numberless footnote. Thank-you.} +% ..... +% \end{document} +% +% This was originally developed for the acknowledgement +% notes similar to the style used by the journal +% Linguistic Inquiry. The code was adapted from the latex +% source. +% +\long\def\nnfoottext#1{\insert\footins{\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \edef\@thefnmark{} + \edef\@currentlabel{}\@makefntext + {\rule{\z@}{\footnotesep}\ignorespaces + #1\strut}}} + + diff --git a/macros/latex209/contrib/misc/nopagenumbers.sty b/macros/latex209/contrib/misc/nopagenumbers.sty new file mode 100644 index 0000000000..6a96bf7a99 --- /dev/null +++ b/macros/latex209/contrib/misc/nopagenumbers.sty @@ -0,0 +1,15 @@ +% +% A tiny style file to suppress page numbers on LaTeX pages. I can never +% remember {\em what} LaTeX calls it! +% +% Richard Furuta +% Department of Computer Science +% University of Maryland +% College Park, MD 20742 +% +% furuta@mimsy.umd.edu +% seismo!umcp-cs!furuta +% +% October 22, 1986, first release +% +\pagestyle{empty} diff --git a/macros/latex209/contrib/misc/noprot.sty b/macros/latex209/contrib/misc/noprot.sty new file mode 100644 index 0000000000..43d346bb2e --- /dev/null +++ b/macros/latex209/contrib/misc/noprot.sty @@ -0,0 +1,188 @@ +% Style file noprot.sty by Sami Sozuer. (June 1994) +% This style file eliminates the need for \protect'ion in: +% +% 1 - Argument of \thanks +% 2 - Argument (or optional argument) of \caption +% 3 - Optional argument of \bibitem +% 4 - Arguments of \addcontentsline and \addtocontents +% 5 - Sectioning commands (\chapter \section etc) +% EXCEPT when the argument of a sectioning command appears in +% a page heading (as for example is the case with \chapter and \section +% commands in the book style). +% +% The remaining problem of fragile commands within the headings +% will be addressed later. +% +% The elimination of \protect within \caption and sectioning commands +% is made possible by suppressing the expansion of the arguments +% of these commands and by writing them into the .aux +% file as literal strings. This means that values of dynamic quantities +% cannot be included in these commands any more. If you need to reference +% a page, use \pageref instead of \the\page or something similar in the +% argument of \caption and/or sectioning commands. +% Thanks to David Carlisle for pointing this out. +% +% The following is a remedy for such rare cases: +% =================================================================== +% Let's assume you have a List of Figures, and that you MUST expand +% something at the point where \caption is issued, so that its value +% appears in the List of Figures entry. In the old scheme, you would say: +% +% \caption{First part of Caption \value{\MyCounter} Second part of Caption} +% +% and the value of the \MyCounter would appear in the List of Figures. +% But with this style file, you need to use a somewhat more complicated +% construct similar to the following: +% +% \def\CaptionI{First part of Caption} +% \def\CaptionII{Second part of Caption} +% \edef\temp{\noexpand\caption{\CaptionI \value{\MyCounter} \CaptionII}} +% \temp +% +% Here, we need the current value of a user-defined counter \MyCounter +% to be written into the .aux file which is read in the second run +% of latex to produce the List of Figures. Since its value presumably +% changes throughout the document, we want its value at the point that +% the \caption command is issued, rather than its value at the point +% that the List of Figures is typeset, to appear in the List of Figures. +% If you don't have a list of figures, then of course you needn't +% worry about any of this. The same considerations apply also for +% the arguments of sectioning commands that appear in the Table of Contents. +% +% The rationale for using this style file, of course, is that such +% cases are extremely rare! For one thing, most books/articles +% rarely contain a List of Figures and/or a List of Tables, and even +% when you do use one, the chances of needing an immediate expansion +% in a \caption command are small. +% =================================================================== +%%%% Use : in private commands to reduce chances of conflict +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Remember the catcode of : +\expandafter\edef\csname X:Old:Cat\endcsname{\the\catcode`\:}% +\catcode`\:=11\relax% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%BEGIN:PROTECT etc +\long\def\@caption#1[#2]#3{\par +\X:addcontline{\csname ext@#1\endcsname}{#1}% +{\string\numberline{\csname the#1\endcsname}}% +{\ignorespaces #2}% + \begingroup + \@parboxrestore + \normalsize + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth + \def\@svsec{}\else + \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 1em }\fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}% + \endgroup + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth + \addcontentsline{toc}{#1}{#7} + \else + \X:addcontline{toc}{#1}{\string\numberline{\csname the#1\endcsname}}{#7} + \fi + \else + \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname{#7} + \ifnum #2>\c@secnumdepth + \addcontentsline{toc}{#1}{#7} + \else + \X:addcontline{toc}{#1}{\string\numberline{\csname the#1\endcsname}}{#7} + \fi} + \fi + \@xsect{#5}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #1,#2,#3 expanded; #4 is passed as string +\def\X:addcontline#1#2#3#4{\if@filesw \begingroup +\edef\X:argone{#1}% +\edef\X:argtwo{#2}% +\edef\X:argtri{#3}% +\X:STRING{#4}{\argfor}% +\let\label\@gobble \let\index\@gobble \let\glossary\@gobble +\def\protect{}% +\@temptokena{\thepage}% +%---------------use \edef because #2 and \the\@temptokena should be expandad +%---------------before passed on to \@writefile, which does *not* expand +\edef\@tempa% +{\write \@auxout% +{%---------------------\contentsline should not be expanded here +\string\@writefile{\X:argone}{\string\contentsline{\X:argtwo}{\X:argtri\argfor}{\the\@temptokena}}% +}% +}\@tempa +\if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\@writefile#1#2{% +\X:STRING{#2}{\X:argtu}% +\@ifundefined{tf@#1}{}{\expandafter + \immediate\write\csname tf@#1\endcsname{\X:argtu}}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\X:STRING#1#2{\def\X:STRIP##1>{}\def\X:NEXT{#1}\edef#2{\expandafter\X:STRIP\meaning\X:NEXT}}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #1,#2 expanded; #3 is passed as string +\def\addcontentsline#1#2#3{\if@filesw \begingroup +\edef\X:argone{#1}% +\edef\X:argtwo{#2}% +\X:STRING{#3}{\X:argtri}% +\let\label\@gobble \let\index\@gobble \let\glossary\@gobble +\def\protect{}% +\@temptokena{\thepage}% +%---------------use \edef because #2 and \the\@temptokena should be expandad +%---------------before passed on to \@writefile, which does *not* expand +\edef\@tempa% +{\write \@auxout% +{%---------------------\contentsline should not be expanded here +\string\@writefile{\X:argone}{\string\contentsline{\X:argtwo}{\X:argtri}{\the\@temptokena}}% +}% +}\@tempa + \if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\long\def\addtocontents#1#2{\if@filesw \begingroup +\X:STRING{#2}{\X:argtwo}\relax% +\edef\X:argone{#1}% +\let\label\@gobble \let\index\@gobble \let\glossary\@gobble +\def\protect##1{\string\string\string##1\string\space\space}% +\edef\@tempa{\write \@auxout {\string\@writefile{\X:argone}{\X:argtwo}}}\@tempa +\if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\thanks#1{\footnotemark% +\begingroup% +\gdef\X:thanks{#1}%-----------this \gdef should stay +\def\protect{\noexpand\protect\noexpand}% +\xdef\@thanks{\@thanks\protect\footnotetext[\the\c@footnote]% +{\noexpand\X:thanks}}% +\endgroup}% +\def\@thanks{}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\@lbibitem[#1]#2{\item[\@biblabel{#1}]% +\if@filesw +{% +\X:STRING{#1}{\X:argone} +\def\protect##1{}% +\immediate\write\@auxout{\string\bibcite{#2}{\X:argone}} +}% +\fi\ignorespaces}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%% The following code is needed for the \label command in a \caption +%%%% or section argument to work properly, since the argument of +%%%% a \section or a \caption command is written verbatim into +%%%% the .aux file without being expanded. +\let\X:tableofcontents\tableofcontents% +\def\tableofcontents{\begingroup% +\let\label\@gobble\let\index\@gobble\let\glossary\@gobble% +\X:tableofcontents\endgroup}% +% +\let\X:listoffigures\listoffigures% +\def\listoffigures{\begingroup% +\let\label\@gobble\let\index\@gobble\let\glossary\@gobble% +\X:listoffigures\endgroup}% +% +\let\X:listoftables\listoftables% +\def\listoftables{\begingroup% +\let\label\@gobble\let\index\@gobble\let\glossary\@gobble% +\X:listoftables\endgroup}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%END:PROTECT etc +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Restore catcode of : +\catcode`\:=\csname X:Old:Cat\endcsname\relax% +\expandafter\global\expandafter\let\csname X:Old:Cat\endcsname\undefined% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%that's it! diff --git a/macros/latex209/contrib/misc/nosecnumbers.sty b/macros/latex209/contrib/misc/nosecnumbers.sty new file mode 100644 index 0000000000..c630100b9a --- /dev/null +++ b/macros/latex209/contrib/misc/nosecnumbers.sty @@ -0,0 +1,42 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Mario Wolczko", +%%% version = "2", +%%% date = "21 May 1992", +%%% time = "20:59:56 BST", +%%% filename = "nosecnumbers.sty", +%%% address = "Dept of Computer Science +%%% The University of Manchester +%%% Oxford Road +%%% Manchester M13 9PL +%%% UK", +%%% telephone = "+44-61-275-6146", +%%% FAX = "+44-61-275-6236", +%%% checksum = "09542 42 160 1796", +%%% email = "mario@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, section numbers", +%%% supported = "yes", +%%% docstring = "Suppresses section numbers in \sections, +%%% \subsections, etc (but still writes entries for a table of +%%% contents).", +%%% } +%%% ==================================================================== +% nosecnumbers ... equivalent to a global replace of \section, +% \subsection, etc, with \section* (except that you still get entries in +% the table of contents). + +\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth + \def\@svsec{}\else + \refstepcounter{#1}\edef\@svsec{}\fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par} + \endgroup + \csname #1mark\endcsname{#7}\addcontentsline + {toc}{#1}{#7}\else + \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname + {#7}\addcontentsline + {toc}{#1}{#7}}\fi + \@xsect{#5}} diff --git a/macros/latex209/contrib/misc/npsfont.sty b/macros/latex209/contrib/misc/npsfont.sty new file mode 100644 index 0000000000..b9b48bef63 --- /dev/null +++ b/macros/latex209/contrib/misc/npsfont.sty @@ -0,0 +1,193 @@ +%% BEGIN npsfont.sty +%% +\def\fileversion{v1.0} +\def\filedate{91/11/20} +%% +%% Style option npsfont.sty, for use with LaTeX 2.09 +%% and the New Font Selection Scheme. +%% +%% COPYRIGHT 1992, by Timothy Van Zandt, tvz@Princeton.EDU +%% +%% Copying of part or all of this file is allowed under the following +%% conditions only: +%% (1) You may freely distribute unchanged copies of the file. Please +%% include the documentation when you do so. +%% (2) You may modify a renamed copy of the file, but only for personal +%% use or use within an organization. +%% (3) You may copy fragments from the file, for personal use or for use +%% in a macro package for distribution, as long as credit is given +%% where credit is due. +%% +%% You are NOT ALLOWED to take money for the distribution or use of +%% this file or modified versions or fragments thereof, except for +%% a nominal charge for copying etc. +%% +% DESCRIPTION: +% +% Defining new PostScript fonts with the New Font Selection Scheme is easy, +% but these macros make it easier. They save on keystrokes, and most +% importantly, they make it easy to change the file names used for fonts +% because you only have to type the file name once instead of 12 times (for +% the 12 standard LaTeX sizes). An optional argument lets you scale the fonts. +% +% These macros are substitutes for the NFSS's \new@fontshape command. For +% information on the purpose of this command, and on how to select fonts that +% are defined with it, see the documentation of the NFSS. If you don't have +% the NFSS, it is available from +% rusmv1.rus.uni-stuttgart.de +% in +% soft/tex/latex-style-supported/New-Font-Selection +% and from +% ymir.claremont.edu +% in +% [.anonymous.tex.inputs.latex-mainz] +% The NFSS is undoubtably the best way to use PostScript fonts (or any non- +% standard fonts) with LaTeX, and is well worth upgrading to. +% +% USAGE: +% +% \newpsfont[<scaling>]{<family>}{<series>}{<shape>}{<filename>} +% +% \newpsfamily[<scaling>]{<family>}{ +% {<series 1>}{<shape 1>}{<filename 1>}, +% {<series 2>}{<shape 2>}{<filename 2>}, +% . . . +% {<series n>}{<shape n>}{<filename n>}} +% +% The scaling argument is optional. Like the \new@fontshape command, these +% commands can only be used in the preamble. +% +% EXAMPLE: +% +% Suppose the Helvetica-Oblique virtual font on your system has the name +% phvro.vf. The following defines the <helvetica> family, <m>edium series, and +% <it>alic shape to be the Helvetica-Oblique font, at the standard LaTeX +% font sizes, scaled by .82: +% +% \newpsfont[.82]{helvetica}{m}{it}{phvro} +% +% This is equivalent to: +% +% \new@fontshape{helvetica}{m}{it}{% +% <5>phvro at 4.1pt% +% <6>phvro at 4.92pt% +% <7>phvro at 5.74pt% +% <8>phvro at 6.56pt% +% <9>phvro at 7.38pt% +% <10>phvro at 8.2pt% +% <11>phvro at 8.979pt% +% <12>phvro at 9.84pt% +% <14>phvro at 11.808pt% +% <17>phvro at 14.1696pt% +% <20>phvro at 17.0068pt% +% <25>phvro at 20.4016pt}{} +% +% The following command sets up the standard Helvetica family: +% +% \newpsfamily[.82]{helvetica}{% +% {m}{n}{phvr}, %Helvetica +% {m}{it}{phvro}, %Helvetica-Oblique +% {m}{sl}{phvro}, %Helvetica-Oblique +% {bx}{n}{phvb}, %Helvetica-Bold +% {bx}{it}{phvbo}, %Helvetica-BoldOblique +% {bx}{sl}{phvbo}} %Helvetica-BoldOblique +% +% (Don't forget the commas.) It is equivalent to: +% +% \newpsfont[.82]{helvetica}{m}{n}{phvr} %Helvetica +% \newpsfont[.82]{helvetica}{m}{it}{phvro} %Helvetica-Oblique +% \newpsfont[.82]{helvetica}{m}{sl}{phvro} %Helvetica-Oblique +% \newpsfont[.82]{helvetica}{bx}{n}{phvb} %Helvetica-Bold +% \newpsfont[.82]{helvetica}{bx}{it}{phvbo} %Helvetica-BoldOblique +% \newpsfont[.82]{helvetica}{bx}{sl}{phvbo} %Helvetica-BoldOblique +% \extra@def{helvetica}{}{} +% +% WHY SCALE FONTS?: +% +% Disclaimer: The suggestions that follow come from someone who doesn't know +% anything about fonts. +% +% Mixing fonts that are not designed to be used together is not for purists, +% but many of us do it anyway. Scaling the fonts can at least correct for +% differences in the x-heights. This is important if you use Computer +% Modern fonts for in-line math and some other fonts for text. +% +% To find out the x-height of the 10pt size of a font, load this style and +% use the command +% +% \showxheight{<filename>} +% +% E.g., \showxheight{phvr} and \showxheight{cmr10} displays +% +% x-height of cmr10 at 10pt is 4.30554pt +% x-height of phvr at 10pt is 5.24998pt +% +% on the terminal. Scaling the Helvetica fonts by 4.30554/5.24990 = .82 +% gets the x-heights of these fonts in line. It is best to set the x-heights +% the same for the medium weight, normal shaped fonts, and then scale the +% rest of the fonts in the same family by the same amount. +% +% David Jones has a psfonts.sty that sets up the standard PostScript fonts, +% all scaled so that the x-heights match that of the Computer Modern medium +% roman font. It is available via anonymous ftp from theory.lcs.mit.edu in +% /pub/dmjones. +% +% IMPLEMENTATION: +% +% \scale@stdsizes has at its argument a scaling factor. It uses \font@scale +% to define \scaled@sizes to be the macro whose argument is the name of a +% font, and which expands to the definitions of the standard \LaTeX{} sizes +% for New Font Selection Schemes \new@fontshape command. +% +\message{\space\space\fileversion\space\space\filedate + \space\space<tvz>} +\@ifundefined{new@psfontshape}{}{\endinput} +\def\font@scale#1#2#3{\dimen@=#2\dimen@=#3\dimen@ + \edef\scaled@sizes##1{\scaled@sizes{##1}<#1>##1 at\number\dimen@ sp}} +\def\scale@stdsizes#1{% + \edef\scaled@sizes##1{}% + \font@scale{5}{5pt}{#1}% + \font@scale{6}{6pt}{#1}% + \font@scale{7}{7pt}{#1}% + \font@scale{8}{8pt}{#1}% + \font@scale{9}{9pt}{#1}% + \font@scale{10}{10pt}{#1}% + \font@scale{11}{10.95pt}{#1}% + \font@scale{12}{12pt}{#1}% + \font@scale{14}{14.4pt}{#1}% + \font@scale{17}{17.28pt}{#1}% + \font@scale{20}{20.74pt}{#1}% + \font@scale{25}{24.88pt}{#1}} +\def\new@psfontshape#1#2#3#4{% + \new@fontshape{#1}{#2}{#3}{\scaled@sizes{#4}}{}} +\def\new@psfont[#1]#2#3#4#5{% + \scale@stdsizes{#1}% + \new@psfontshape{#2}{#3}{#4}{#5}} +\def\newpsfont{% + \@ifnextchar [{\new@psfont}{\new@psfont[1]}} +\def\newpsfamily{% + \@ifnextchar [{\new@psfamily}{\new@psfamily[1]}} +\def\new@psfamily[#1]#2#3{% + \scale@stdsizes{#1}% + \@for\@tempa:=#3\do{% + \edef\@tempb{\noexpand\new@psfontshape{#2}\@tempa} + \@tempb}% + \extra@def{#2}{}{}} +\def\showxheight#1{% + \font\@tempfont=#1 at 10pt% + \typeout{^^J x-height of #1 at 10pt is \the\fontdimen5\@tempfont}} +% The commands are added to \@preamblecmds to save memory. +\begingroup + \def\do{\noexpand\do\noexpand} + \xdef\@preamblecmds{\@preamblecmds + \do\font@scale + \do\scale@stdsizes + \do\scaled@sizes + \do\new@psfontshape + \do\new@psfont + \do\newpsfont + \do\newpsfamily + \do\new@psfamily} +\endgroup +\endinput +%% END npsfont.sty diff --git a/macros/latex209/contrib/misc/optarg.sty b/macros/latex209/contrib/misc/optarg.sty new file mode 100644 index 0000000000..9a5218296b --- /dev/null +++ b/macros/latex209/contrib/misc/optarg.sty @@ -0,0 +1,42 @@ +\def\newoptargcommand#1{% + \@ifnextchar({\@xoptargcmd{#1}}% + {\newcommand{#1}}% +} + +\def\@xoptargcmd#1(#2){% +% \@ifdefinable#1% +% { + \expandafter\def\expandafter#1\expandafter{% + \expandafter + \@ifnextchar + \expandafter + [% + \csname\string#1\expandafter\endcsname + \expandafter + {\csname\string#1\endcsname[#2]}}% + \expandafter\@zoptargcmd + \csname\string#1\endcsname +} + +\def\@zoptargcmd#1{% + \@ifnextchar[{\@zzoptargcmd#1}% + {\def#1[####1]}% +} + +\catcode`\?=11\relax +\long\def\@zzoptargcmd#1[#2]#3{% + \@tempcnta#2\relax + \let#1\relax + \let\@?@\relax + \edef\@tempa{\long\def#1[\@?@1]}% + \@tempcntb \tw@ + \@whilenum\@tempcnta>\z@ + \do{% + \edef\@tempa{\@tempa\@?@\the\@tempcntb}% + \advance\@tempcntb \@ne + \advance\@tempcnta \m@ne}% + \let\@?@##% + \@tempa{#3}% +} +\catcode`\?=12\relax +\endinput diff --git a/macros/latex209/contrib/misc/ovalfbox.sty b/macros/latex209/contrib/misc/ovalfbox.sty new file mode 100644 index 0000000000..78f6f24045 --- /dev/null +++ b/macros/latex209/contrib/misc/ovalfbox.sty @@ -0,0 +1,35 @@ +% THIS IS OVALFBOX.STY of August, 3, 1992. +% Unfortunately, \fboxrule (LaTeX book p.195) does not work, +% since we use ovals (circle font). +% Instead, use \thinlines and \thicklines. +% However, \fboxsep does work! +\def\ovalfbox#1{% + \mbox{% mbox, leaves vertical mode! + \begingroup \newdimen\@ovdp + \boxmaxdepth\maxdimen + \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue + \setbox\@tempboxa\hbox{#1}% + \@ovxx\wd\@tempboxa \advance\@ovxx2\fboxsep + \@ovdp\dp\@tempboxa \advance\@ovdp\fboxsep + \@ovyy\ht\@tempboxa \advance\@ovyy\@ovdp \advance\@ovyy\fboxsep + \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi + \advance \@tempdimb -2\p@ + \@getcirc \@tempdimb % sets \@tempboxa en \@tempdima + \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa + \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@ + \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@ + \@circlefnt + \setbox\@tempboxa + \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi + \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi + \if@ovt \@ovhorz \kern -\@ovxx \fi + \if@ovb \raise \@ovyy \@ovhorz \fi}% + \ht\@tempboxa\z@ \dp\@tempboxa\z@ + \raise-\@ovdp\hbox to\z@{\box\@tempboxa\hss}% + \hbox to\@ovxx{\hss\rm #1\hss}% + \endgroup}} +\def\Ovalfbox#1{{\advance\fboxsep 1em \ovalfbox{#1}}} +% ^^^ +% Change this if you want less/more space +\endinput + diff --git a/macros/latex209/contrib/misc/pagefoots.sty b/macros/latex209/contrib/misc/pagefoots.sty new file mode 100644 index 0000000000..439569cdf0 --- /dev/null +++ b/macros/latex209/contrib/misc/pagefoots.sty @@ -0,0 +1,192 @@ +% Save file as: PAGEFOOTS.STY Source: FILESERV@SHSU.BITNET +% A footnote-numbering style from Brian T. Schellenberger. v1.0. +% This is redistributable by anybody to anybody for any price. +% I only ask that you credit me for it, and that if you make any +% changes and distribute them to anybody else at all, you (1) send +% them back to me, and (2) note who made them so that any different +% versions of this floating around may be distinguished. + +% Updates: +% 10-Mar-89 Brian T. Schellenberger ...!mcnc!rti!sas!bts +% Initial release. +% 21-Mar-92 Darrel Hankerson hank@ducvax.auburn.edu +% \def\@currenvir appears out of place in \definition +% (reported by Nachum Dershowitz nachum@cs.uiuc.edu) + +% The first thing here is my begin definitions environment. It is +% an environment for programming, and is seperate from the footnote- +% related stuff. I find it convenient, and it is needed for my other +% code to work. I also use symbolic names for all catcodes in my +% programming, but I've gotten that out of this code for greater ease +% of use by the great wide world out there. + +% The footnote code itself. +% 1. This code resets foot notes on each page. It needs two passes +% to do this correctly, although it comes as close as possible on +% the first pass. You generally make two passes with LaTeX anyway, +% to get cross-references right, so this shouldn't be a problem. +% It uses the aux file like everything else. +% 2. It also uses the \fnsymbol to "number" the footnotes. This is +% controlled by the first line of \newfoots. +% 3. It gets rid of the usual footnote rule, and inserts more vertical +% space for footnotes. This is also easy to see/control in the +% \newfoots command. +% 4. Most of this code simply makes the "new" footnotes stuff available; +% you can include all of this except the last line in a style file +% and only say \newfoots if you want them, or you include it all +% and say \restorefoots for the files where you don't want it. +% 5. \restorefoots and/or \newfoots are only guarenteed to work right +% in the preamble. +% 6. I don't think I depend on anything funny in LaTeX, but in case +% this falls apart totally, I am running the 29-Apr-87 LaTeX. + + +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +%----definitions: within \begin{definitions} (which does not really define +% a group), spacing means nothing. Use \space for a space character +% and \par for a blank line, for those rare instances where they are +% really desired. Also, @ is seen as a letter. All these are reversed +% and \end{definitions}---\E{even if} they had the same catagories before! +% These should not be nested but, unfortunately, there is no way to tell. + + +\newif\ifatletter + +\newenvironment {definitions} + { + \endgroup % doesn't really nest + \ifcat @a \atlettertrue \else \atletterfalse \fi + % \catcode`\ =\ignoreC \catcode`\^^M=\ignoreC + \makeatletter \catcode`\ =9 \catcode`\^^M=9 + }% + { + % \catcode`\ =\spaceC \catcode`\^^M=\nlC + \makeatother \catcode`\ =10 \catcode`\^^M=5 + \ifatletter \makeatletter \fi +% \def \@currenvir {definitions} <-- Original location + \begingroup % doesn't really nest + \def \@currenvir {definitions} % 21-Mar-92 DH + } + +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +\begin{definitions} + +%-----\my@footnote: stuff for handling my footnote stuff + +% NOTE: This corrects it on the second pass, based on the page numbers +% on the first pass. Both this and other cross-reference stuff +% will need to be run TWICE again if tables of contents, lists of +% figures, &c. are paginated with the main material. + +\def \my@footnote + { + \if@minipage\else % In a minipage, we can't cross a page. + \edef \tmp@name {ft@\thepage-\the\c@footnote} + \expandafter\expandafter\expandafter\ifx + \expandafter\csname\tmp@name\endcsname \relax + \else + % DEFINED: replace footnote marker + \edef\tmp@b{\expandafter\csname\tmp@name\endcsname} + \begingroup + \c@footnote = \tmp@b + \xdef \@thefnmark {\thefootnote} + \endgroup + \fi % end \ifx ... \else DEFINED + + \if@filesw + \edef \fttmp@ + { + \write\@auxout + { + \string\newfoot@mark{\thepage} + {\the\c@footnote}{\noexpand\thepage} + } + } + \fttmp@ + \fi % end \if@filesw + \fi % end \if@minipage + } + +% \newfoot@mark: +% #1: nominal page it occurs on, as by \thepage. +% #2: nominal footnote number on that page. +% #3: actual page it occurs on, as by \thepage. + +\newcount\ft@page \ft@page = 0 +\newcount\ft@foot \ft@foot = 0 + +\def \newfoot@mark #1#2#3 + { + \ifdigit{#3} + \ifnum #3 < \ft@page \ft@page=0 + \else\ifnum #3 > \ft@page \ft@page=#3 \ft@foot=0 + \fi\fi + \else \ft@page=0 + \fi + + \addtolength\ft@foot{1} + \def\tmp@a{#2} + \edef\tmp@b{\the\ft@foot} + \ifx \tmp@a\tmp@b \else + \expandafter \xdef \csname ft@#1-#2\endcsname {\the\ft@foot} + \fi + } + +\newif\ifisdigit +\def \ifdigit #1 {\digithelp #1 \digithelpend} +\def \digithelp#1#2\digithelpend + { + \isdigitfalse + \if0#1\isdigittrue\fi \if1#1\isdigittrue\fi \if2#1\isdigittrue\fi + \if3#1\isdigittrue\fi \if4#1\isdigittrue\fi \if5#1\isdigittrue\fi + \if4#1\isdigittrue\fi \if5#1\isdigittrue\fi \if6#1\isdigittrue\fi + \if7#1\isdigittrue\fi \if8#1\isdigittrue\fi \if9#1\isdigittrue\fi + \ifisdigit + } + + +\def \newfoots + { + \renewcommand \thefootnote {\fnsymbol{footnote}} %only if you want! + \renewcommand \thempfootnote {\arabic{footnote}} + \renewcommand \footnoterule {} + \skip\footins = 16pt plus 6pt minus 4pt + \@addtoreset{footnote}{page} + \let \cur@footnote = \my@footnote + } + +% NOTE: \restorefoots MUST be called before anything else is added to +% \cl@page => do NOT move the \@@cl@page into the .static. file, +% and do it at the very end of mytex.sty. Also, if \stdfoots +% are desired, they should be the first thing restored---and +% \E{definately} in the preamble. + +\def \restorefoots + { + \renewcommand \thefootnote {\arabic{footnote}} + \renewcommand \thempfootnote {\alph{mpfootnote}} + \let \footnoterule = \@@footnoterule + \skip\footins = \bigskipamount + \let \cl@page = \@@cl@page + \let \cur@footnote = \relax + } + +\def \footnote + { + \@ifnextchar [ + {\@xfootnote} %else, no optional argument: + { + \stepcounter{\@mpfn} + \xdef\@thefnmark{\thempfn} + \cur@footnote + \@footnotemark\@footnotetext + } + } + +\end{definitions} + + +\newfoots +\endinput diff --git a/macros/latex209/contrib/misc/parskip.sty b/macros/latex209/contrib/misc/parskip.sty new file mode 100644 index 0000000000..8b29613cf5 --- /dev/null +++ b/macros/latex209/contrib/misc/parskip.sty @@ -0,0 +1,33 @@ +% This is PARSKIP.STY by H.Partl, TU Wien, as of 19 Jan 1989. +% Document Style Option to be used with any style and with any size. +% It produces the following 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@ + +% To accompany this, the vertical spacing in the list environments is changed +% to use the same as \parskip in all relevant places (for 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. + +\endinput + + diff --git a/macros/latex209/contrib/misc/portland.sty b/macros/latex209/contrib/misc/portland.sty new file mode 100644 index 0000000000..56ebf455e8 --- /dev/null +++ b/macros/latex209/contrib/misc/portland.sty @@ -0,0 +1,124 @@ +% This is PORTLAND.STY by H.Partl, TU Wien, as of 16 Dec 1988. +% Definition of commands and environments \portrait and \landscape +% for switching between PORTRAIT and LANDSCAPE printing. To be +% called as document style option with any available style. +% +% Commands: +% \portrait sets or resets the page layout to the initial values +% (i.e. the values valid at \begin{document}) +% \landscape sets the page layout such that the horizontal and +% vertical measures are interchanged with respect to +% the initial values. The text area will occupy the +% same position on the page as in \portrait mode. +% Both command issue a \clearpage before changing the layout. +% +% Environments: +% \begin{portrait} ... \end{portrait} +% \begin{landscape} ... \end{landscape} +% Both issue \clearpage at the \begin and at the \end. +% +% Implementation Dependencies: +% You should insert the correct paper height (11in or 197mm or ...) +% into \paperheight for correct positioning. +% If your printer driver allows mixing of protrait and landscape pages +% within one printout, you should insert the corresponding \special +% commands just after the four \clearpage commands. +% If your printer only allows printing of the whole document either in +% protrait or in landscape orientation, you should print the document +% twice (or selected parts of it) - once in portrait and once in landscape - +% and then merge the correct pages. +% If your printer can't print in landscape orientation, then these commands +% can be used only for small pages that fit onto the paper in both direc- +% tions. + +\newdimen \paperheight % needed for calculation of bottom margin. +\paperheight 297mm % <--- 11in for US paper or 297mm for A4 paper! + +\newdimen\phoffset +\newdimen\pvoffset +\newdimen\ptextwidth +\newdimen\ptextheight +\newdimen\ptopmargin +\newdimen\poddsidemargin +\newdimen\pevensidemargin + +\newdimen\lhoffset +\newdimen\lvoffset +\newdimen\ltextwidth +\newdimen\ltextheight +\newdimen\ltopmargin +\newdimen\loddsidemargin +\newdimen\levensidemargin + +\def\set@portland@values{% +% portrait values = current values +\phoffset\hoffset +\pvoffset\voffset +\ptextwidth\textwidth +\ptextheight\textheight +\ptopmargin\topmargin +\poddsidemargin\oddsidemargin +\pevensidemargin\evensidemargin +% landscape margins will be measured from zero point +\lhoffset \z@ +\lvoffset \z@ +% landscape textwidth = portrait textheight +\ltextwidth \ptextheight +% landscape textheight = portrait textwidth +\ltextheight \ptextwidth +% landscape left margin = portrait bottom margin (same for odd and even) +\loddsidemargin \paperheight +\advance \loddsidemargin by -\ptextheight +\advance \loddsidemargin by -\headsep +\advance \loddsidemargin by -\headheight +\advance \loddsidemargin by -\ptopmargin +\advance \loddsidemargin by -\pvoffset +\advance \loddsidemargin by -2in +\levensidemargin \loddsidemargin +% landscape top margin (incl. head) = portrait oddside left margin +\ltopmargin \poddsidemargin +\advance \ltopmargin by -\headheight +\advance \ltopmargin by -\headsep +\advance \ltopmargin by \phoffset +} + +\def\portrait{\clearpage \message{ \string\portrait }% + \hoffset\phoffset + \voffset\pvoffset + \textwidth\ptextwidth + \textheight\ptextheight + \@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 + \topmargin\ptopmargin + \oddsidemargin\poddsidemargin + \evensidemargin\pevensidemargin + } + +\def\endportrait{\clearpage \message{ \string\endportrait }} + +\def\landscape{\clearpage \message{ \string\landscape }% + \hoffset\lhoffset + \voffset\lvoffset + \textwidth\ltextwidth + \textheight\ltextheight + \@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 + \topmargin\ltopmargin + \oddsidemargin\loddsidemargin + \evensidemargin\levensidemargin + } + +\def\endlandscape{\clearpage \message{ \string\endlandscape }} + +\let\set@document@values \document +\def\document{\set@document@values \set@portland@values} + +\endinput diff --git a/macros/latex209/contrib/misc/psboxit.sty b/macros/latex209/contrib/misc/psboxit.sty new file mode 100644 index 0000000000..6f9bbd9942 --- /dev/null +++ b/macros/latex209/contrib/misc/psboxit.sty @@ -0,0 +1,175 @@ +% psboxes.sty +% +% This package enables to put a PostScript drawing behind a TeX box. +% The drawing is parametrized by the position and the size of the +% TeX box. To put a gray [rounded] box behind a word use +% \PScommands % Once at the begining +% +% ... text text \psboxit{25 cartouche}{THE WORD} text text +% \psboxit{box 0.5 setgray fill}{\spbox{ANOTHER WORD}} +% text text ... +% +% * If your boxes are ill sized try to change 16384 to +% something else (original code used 65536). +% % 65536 is the internal unit of TeX (scaled point, TeXBook page 57) +% Those macros were adapted from Tom Sheffler (CMU)'s psframe.sty style. In +% particular, the spacebox macro was just copied from his style. +% +% Je'ro^me MAILLOT, INRIA +% maillot@bora.inria.fr +% August 1991 +% +% +% A Few PostScript definitions to use with \psboxit +% Call \PScommands once at the begining of your program, this will +% define : box roundedbox rectcartouche and cartouche. They are 4 +% PostScript programs. Change the values before setlinewidth end +% setgray to customize your boxes +% +% Ex : \psboxit{25 cartouche}{blah blah} +% \psboxit{rectcartouche}{blah blah} +% +\long\def\PScommands{\special{! TeXDict begin +/box{% Processes the path of a rectangle. +% Needs : x0 y0 x1 y1. +newpath 2 copy moveto 3 copy pop exch lineto 4 copy pop pop +lineto 4 copy exch pop exch pop lineto closepath } bind def +% +% +/min{ 2 copy gt { exch } if pop } bind def% +/max{ 2 copy lt { exch } if pop } bind def% +/roundedbox{% Processes the path of a rounded rectangle. +% Needs : x0 y0 x1 y1 radius. +% The bounding box is augmented by +/- radius to allow easily to +% frame several rounded boxes around the same Texture box. Ex: +% \psboxit{4 copy 15 roundedbox 25 roundedbox} {\spbox{Some Text}} +% draws two scaled boxes arond the same word. Delete the `radius +% sub' and `radius add' commands to suppress that enlargement. +% +/radius exch store +3 2 roll % x0 x1 y1 y0 +2 copy min radius sub /miny exch store + max radius add /maxy exch store +2 copy min radius sub /minx exch store + max radius add /maxx exch store +newpath +minx radius add miny moveto +maxx miny maxx maxy radius arcto +maxx maxy minx maxy radius arcto +minx maxy minx miny radius arcto +minx miny maxx miny radius arcto 16 {pop} repeat +closepath +}bind def +% +% +/rectcartouche{% Draws a filled and framed box +% Needs : x0 y0 x1 y1 +box gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def +% +% +/cartouche{% Draws a filled and framed rounded box +% Needs : x0 y0 x1 y1 radius +roundedbox gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def +% +end }% Closes dictionnary +}\PScommands% +%% +%% PSBOXIT +%% +%% \psboxit{PS program}{TeX stuff} +%% +%% The bounding box of the TeX stuff is pushed on the PostScript stack +%% and then the program in the first argument is called +%% +%% EXAMPLE: set some text on a gray background, Use the SPBOX macro to +%% give some space around the text. +%% +%% \psboxit{box 0.5 setgray fill}{\spbox{Some Text}} +%% +%% See \PScommands for the \box definition +%% +\chardef \atcode = \the \catcode `\@ +\catcode `\@ = 11 + +\long\def\psboxit#1#2{% +\begingroup\setbox0=\hbox{#2}% +\dimen0=\ht0 \advance\dimen0 by \dp0% + % Write out the PS code to set the current path using HEIGHT, + % WIDTH , DEPTH of box0. + \hbox{% + \special{ps: gsave currentpoint translate + 0 + \number\dp0 \space 15800 div % hand tuned for dvips + \number\wd0 \space 15800 div % hand tuned for dvips + \number\ht0 \space -15800 div % hand tuned for dvips +% \number\dp0 \space 16384 div +% \number\wd0 \space 16384 div +% \number\ht0 \space -16384 div % Bounding box +% \number\dp0 \space 65536 div +% \number\wd0 \space 65536 div +% \number\ht0 \space -65536 div % Bounding box + #1 grestore}% + \copy0% +}%HBOX +\endgroup% +}% + +% SPACEBOX +% +% This macro simply takes some TeX stuff, and puts FOUR sides on it +% so that the box is the same size as the thing you'd get with +% an \fbox{} command. (All I did was modify the code for \fbox{} +% so that all rules were replaced with struts). +% +% USAGE: \spbox{text} is just like \fbox{text} but makes no rules +% +% REASON: so that if using \pspath{...}{\fbox{stuff}} +% there is a way to get another box the same size: +% \pspath{...}{\spbox{stuff}} +% +\long\def\spbox#1{\leavevmode\setbox1\hbox{#1}% + \dimen0\fboxrule \advance\dimen0 \fboxsep% + \advance\dimen0 \dp1% + \hbox{\lower \dimen0\hbox% + {\vbox{\hrule height \fboxrule width 0pt% + \hbox{\vrule width \fboxrule height 0pt \hskip\fboxsep% + \vbox{\vskip\fboxsep \box1\vskip\fboxsep}\hskip% + \fboxsep\vrule width \fboxrule height 0pt}% + \hrule height \fboxrule width 0pt}}}}% + +\def\Gbox#1{\psboxit{box 0.9 setgray fill}{#1}} +%% +\newsavebox{\gray@box}% +\newdimen\gray@space +% +\long\def\Beginboxitpara#1{\edef\gray@tmp{#1}% +\gray@space=\fboxsep \advance\gray@space by -\fboxrule +\par\prevdepth=-1000pt\vskip 0.5\baselineskip\noindent +\setbox\gray@box=% +\hbox\bgroup \vrule width \fboxrule + \vtop\bgroup \hrule + \vbox\bgroup + \kern\gray@space + \hbox\bgroup + \kern\gray@space + \vtop\bgroup + \hsize=\linewidth\advance\hsize-2\fboxsep\noindent + \ignorespaces} +\def\Endboxitpara{% + \egroup + \kern\gray@space + \egroup + \kern\gray@space + \egroup \hrule + \egroup\vrule width \fboxrule + \egroup + \psboxit{\gray@tmp}{\box\gray@box}% + \vskip 0.5\baselineskip +\par} + +\newenvironment{boxitpara}[1]{\Beginboxitpara{#1}}{\Endboxitpara} +\newenvironment{boxitpara*}[1]{\Beginboxitpara{#1}\hbox to\hsize{}}% +{\Endboxitpara} + +\catcode `\@ = \the \atcode +\endinput diff --git a/macros/latex209/contrib/misc/psfont.sty b/macros/latex209/contrib/misc/psfont.sty new file mode 100644 index 0000000000..429dd46a2e --- /dev/null +++ b/macros/latex209/contrib/misc/psfont.sty @@ -0,0 +1,117 @@ +% Filename: psfont.sty +% Author: Alan Jeffrey +% E-mail: alanje@cogs.sussex.ac.uk +% Last modified: 14 May 1992 + +% This is a document style option which defines macros for loading PS fonts. + +% Set a flag to declare ourselves loaded: + +\def\psfont@loaded{ } + +% Load one font: + +\def\new@ps@fontshape#1#2#3#4% + {\new@fontshape{#1}{#2}{#3}{% + <5>#4 at5pt% + <6>#4 at6pt% + <7>#4 at7pt% + <8>#4 at8pt% + <9>#4 at9pt% + <10>#4% + <11>#4 at10.95pt% + <12>#4 at12pt% + <14>#4 at14.4pt% + <17>#4 at17.28pt% + <20>#4 at20.736pt% + <25>#4 at24.8832pt}{}} + +% Load a whole family: + +\def\load@ps@font#1#2#3#4#5#6#7#8#9% + {\new@ps@fontshape{#1}{m}{n}{#2} + \new@ps@fontshape{#1}{m}{it}{#3} + \new@ps@fontshape{#1}{m}{sl}{#4} + \new@ps@fontshape{#1}{m}{sc}{#5} + \new@ps@fontshape{#1}{b}{n}{#6} + \new@ps@fontshape{#1}{b}{it}{#7} + \new@ps@fontshape{#1}{b}{sl}{#8} + \new@ps@fontshape{#1}{b}{sc}{#9} + \new@ps@fontshape{#1}{bx}{n}{#6} + \new@ps@fontshape{#1}{bx}{it}{#7} + \new@ps@fontshape{#1}{bx}{sl}{#8} + \new@ps@fontshape{#1}{bx}{sc}{#9} + \expandafter\let\csname every@#1@family\endcsname\every@ps@family + \extra@def{#1}} + +% Some extra characters: + +\chardef\currency"A8 +\chardef\cents"A2 +\chardef\yen"A5 +\chardef\florin"A6 + +% When a new family FOO is loaded, we call \every@FOO@family. + +\def\fontfamily#1{\csname every@#1@family\endcsname\edef\f@family{#1}} +\let\family\fontfamily + +% The CM families define the following macros: + +\let\cm@pounds\pounds +\let\cm@S\S +\let\cm@dag\dag +\let\cm@ddag\ddag +\let\cm@P\P +\let\cm@ldots\ldots +\let\cm@H\H +\let\cm@dot\. +\let\cm@AA\AA + +\def\every@cm@family + {\let\pounds\cm@pounds + \let\S\cm@S + \let\dag\cm@dag + \let\ddag\cm@ddag + \let\P\cm@P + \let\ldots\cm@ldots + \let\H\cm@H + \let\.\cm@dot + \let\AA\cm@AA} + +\let\every@cmr@family=\every@cm@family +\let\every@cmtt@family=\every@cm@family +\let\every@cmss@family=\every@cm@family + +% The PS families define the following macros: + +\newdimen\aadimen + +\chardef\ps@pounds"A3 +\chardef\ps@S"A7 +\chardef\ps@dag"B2 +\chardef\ps@ddag"B3 +\chardef\ps@P"B6 +\chardef\ps@ldots"BC +\def\ps@H#1{{\accent"CD #1}} +\def\ps@dot#1{{\accent"C7 #1}} +\def\ps@AA{\leavevmode\setbox0\hbox{h}\aadimen\ht0 + \advance\aadimen-1ex\setbox0\hbox{A}\rlap{\raise.67\aadimen + \hbox to \wd0{\hss\char'27\hss}}A} + +\def\every@ps@family + {\let\pounds\ps@pounds + \let\S\ps@S + \let\dag\ps@dag + \let\ddag\ps@ddag + \let\P\ps@P + \let\ldots\ps@ldots + \let\H\ps@H + \let\.\ps@dot + \let\AA\ps@AA} + +% For some reason, the default family is hard wired to be cmr, +% rather than defined to be \rmdefault... + +\def\default@family{\rmdefault} + diff --git a/macros/latex209/contrib/misc/psfonts.tex b/macros/latex209/contrib/misc/psfonts.tex new file mode 100644 index 0000000000..74025abd2c --- /dev/null +++ b/macros/latex209/contrib/misc/psfonts.tex @@ -0,0 +1,146 @@ +% psfonts.tex +% +% Frank Jensen (September 30, 1990) + +\ifx\psfontsloaded\relax +\else \let\psfontsloaded=\relax + +\def\declare@font #1#2#3#4% + {\new@fontshape{#1}{#2}{#3}{% + <5>#4 at5pt% + <6>#4 at6pt% + <7>#4 at7pt% + <8>#4 at8pt% + <9>#4 at9pt% + <10>#4 at10pt% + <11>#4 at10.95445pt% + <12>#4 at12pt% + <14>#4 at14.4pt% + <17>#4 at17.28pt% + <20>#4 at20.736pt% + <25>#4 at24.8832pt}{}} + +% Times Family + +\declare@font{times}{m}{n}{ptmr} +\declare@font{times}{b}{n}{ptmb} +\declare@font{times}{b}{it}{ptmbi} +\declare@font{times}{c}{n}{ptmrrn} +\declare@font{times}{m}{sc}{ptmrc} +\declare@font{times}{m}{it}{ptmri} +\declare@font{times}{m}{sl}{ptmro} +\declare@font{times}{x}{n}{ptmrre} + +\extra@def{times}{}{} + + + +% Helvetica Family + +\declare@font{helvetica}{m}{n}{phvr} +\declare@font{helvetica}{b}{n}{phvb} +\declare@font{helvetica}{b}{it}{phvbo} +\subst@fontshape{helvetica}{b}{sl}{helvetica}{b}{it} +\declare@font{helvetica}{c}{n}{phvrrn} +\declare@font{helvetica}{bc}{n}{phvbrn} +\declare@font{helvetica}{bc}{it}{phvbon} +\subst@fontshape{helvetica}{bc}{sl}{helvetica}{bc}{it} +\declare@font{helvetica}{c}{it}{phvron} +\subst@fontshape{helvetica}{c}{sl}{helvetica}{c}{it} +\declare@font{helvetica}{m}{sc}{phvrc} +\declare@font{helvetica}{m}{it}{phvro} +\subst@fontshape{helvetica}{m}{sl}{helvetica}{m}{it} + +\extra@def{helvetica}{}{} + + + +% Bookman Family + +\declare@font{bookman}{m}{n}{pbkl} +\declare@font{bookman}{b}{n}{pbkd} +\declare@font{bookman}{b}{it}{pbkdi} +\declare@font{bookman}{m}{sc}{pbklc} +\declare@font{bookman}{m}{it}{pbkli} + +\extra@def{bookman}{}{} + + + +% New Century Schoolbook Family + +\declare@font{ncs}{m}{n}{pncr} +\declare@font{ncs}{b}{n}{pncb} +\declare@font{ncs}{b}{it}{pncbi} +\declare@font{ncs}{m}{sc}{pncrc} +\declare@font{ncs}{m}{it}{pncri} + +\extra@def{ncs}{}{} + + +% Courier Family + +\declare@font{courier}{m}{n}{pcrr} +\declare@font{courier}{b}{n}{pcrb} +\declare@font{courier}{b}{it}{pcrbo} +\declare@font{courier}{m}{it}{pcrro} + +\extra@def{courier}{\hyphenchar #1\m@ne}{} + + + +% Palatino Family + +\declare@font{palatino}{m}{n}{pplr} +\declare@font{palatino}{b}{n}{pplb} +\declare@font{palatino}{b}{it}{pplbi} +\declare@font{palatino}{b}{u}{pplbu} +\declare@font{palatino}{c}{n}{pplrrn} +\declare@font{palatino}{m}{sc}{pplrc} +\declare@font{palatino}{m}{it}{pplri} +\declare@font{palatino}{m}{sl}{pplro} +\declare@font{palatino}{m}{u}{pplru} +\declare@font{palatino}{x}{n}{pplrre} + +\extra@def{palatino}{}{} + + + +% AvantGarde Family + +\declare@font{avantgarde}{m}{n}{pagk} +\declare@font{avantgarde}{b}{n}{pagd} +\declare@font{avantgarde}{b}{it}{pagdo} +\subst@fontshape{avantgarde}{b}{sl}{avantgarde}{b}{it} +\declare@font{avantgarde}{m}{sc}{pagkc} +\declare@font{avantgarde}{m}{it}{pagko} +\subst@fontshape{avantgarde}{m}{sl}{avantgarde}{m}{it} + +\extra@def{avantgarde}{}{} + + + +% Futura Family + +\declare@font{futura}{c}{n}{pfuc} +\declare@font{futura}{bc}{n}{pfubc} +\declare@font{futura}{bc}{sl}{pfuboc} +\subst@fontshape{futura}{b}{it}{futura}{b}{sl} +\declare@font{futura}{ebc}{n}{pfuxc} +\declare@font{futura}{ebc}{sl}{pfuxoc} +\declare@font{futura}{lc}{n}{pfulc} +\subst@fontshape{futura}{m}{it}{futura}{m}{sl} + +\extra@def{futura}{}{} + + + +% Default settings + +\def\sfdefault{helvetica} +\def\ttdefault{courier} + +\def\bfdefault{b} + +\fi +\endinput diff --git a/macros/latex209/contrib/misc/psmath.sty b/macros/latex209/contrib/misc/psmath.sty new file mode 100644 index 0000000000..def9bbd6f4 --- /dev/null +++ b/macros/latex209/contrib/misc/psmath.sty @@ -0,0 +1,216 @@ +%% +%% psmath.sty (Febuary 2 1991 Kresten Krab Thorup) +%% + +%% +%% BUGREPORTS: krab@iesd.auc.dk +%% + +\message{`PostScript math' style option <february 2 1991>} + +\def\@declare@font #1#2#3#4% + {\new@fontshape{#1}{#2}{#3}{% + <5>#4 at4pt% + <6>#4 at5pt% + <7>#4 at6pt% + <8>#4 at7pt% + <9>#4 at8pt% + <10>#4 at9pt% + <11>#4 at10pt% + <12>#4 at11pt% + <14>#4 at12pt% + <17>#4 at14pt% + <20>#4 at17pt% + <25>#4 at20pt}{}} + +\@declare@font{pssymbol}{m}{it}{psyro} +\@declare@font{pssymbol}{m}{n}{psyr} +\extra@def{pssymbol}{}{} + +\let\@declare@font\relax + +\input psfonts + +% +% Define the new math family +% + +\new@mathversion\mv@times + +% Fonts we're going to use... + +\define@mathgroup\mv@times{0} + {times}{m}{n} +\define@mathgroup\mv@times{1} + {times}{m}{it} +\define@mathgroup\mv@times{2} + {cmsy}{m}{n} +%\define@mathgroup\mv@times{3} +% {cmex}{m}{n} + + +\new@mathgroup\timsyi@group +\define@mathgroup\mv@times\timsyi@group + {pssymbol}{m}{it} + +\new@mathgroup\timsyn@group +\define@mathgroup\mv@times\timsyn@group + {pssymbol}{m}{n} + +\new@mathgroup\timi@group +\define@mathgroup\mv@times\timi@group + {cmm}{m}{it} + +\new@mathgroup\lyfam@group + \define@mathgroup\mv@times\lyfam@group + {lasy}{m}{n} + + +\edef\@tempa{\hexnumber@\timsyi@group} % Math chars from postscript + % font psyro +% lowercase greek + +\mathchardef\alpha="0\@tempa 61 +\mathchardef\beta="0\@tempa 62 +\mathchardef\chi="0\@tempa 63 +\mathchardef\delta="0\@tempa 64 +\mathchardef\varepsilon="0\@tempa 65 +\mathchardef\phi="0\@tempa 66 +\mathchardef\gamma="0\@tempa 67 +\mathchardef\eta="0\@tempa 68 +\mathchardef\iota="0\@tempa 69 +\mathchardef\varphi="0\@tempa 6A +\mathchardef\kappa="0\@tempa 6B +\mathchardef\lambda="0\@tempa 6C +\mathchardef\mu="0\@tempa 6D +\mathchardef\nu="0\@tempa 6E +\mathchardef\pi="0\@tempa 70 +\mathchardef\theta="0\@tempa 71 +\mathchardef\rho="0\@tempa 72 +\mathchardef\sigma="0\@tempa 73 +\mathchardef\tau="0\@tempa 74 +\mathchardef\upsilon="0\@tempa 75 +\mathchardef\varpi="0\@tempa 76 +\mathchardef\omega="0\@tempa 77 +\mathchardef\xi="0\@tempa 78 +\mathchardef\psi="0\@tempa 79 +\mathchardef\zeta="0\@tempa 7A +\mathchardef\partial="0\@tempa B6 +\mathchardef\vartheta="0\@tempa 4A + +\edef\@tempa{\hexnumber@\timsyn@group} % Math chars from postscript + % font psyr +\mathchardef\angle="0\@tempa D0 +\mathchardef\forall="0\@tempa 22 +\mathchardef\exists="0\@tempa 24 +\mathchardef\aleph="0\@tempa C0 +\mathchardef\Re="0\@tempa C2 +\mathchardef\Im="0\@tempa C1 +\mathchardef\wp="0\@tempa C3 +\mathchardef\nabla="0\@tempa D1 +\mathchardef\infty="0\@tempa A5 + +\mathchardef\vee="2\@tempa DA +\mathchardef\wedge="2\@tempa D9 +\mathchardef\cdot="2\@tempa D7 +\mathchardef\ast="2\@tempa 2A +\mathcode`/="2\@tempa 2F +\mathchardef\varsigma="0\@tempa 56 + +\mathchardef\leftrightarrow="3\@tempa AB +\mathchardef\leftarrow="3\@tempa AC +\mathchardef\uparrow="3\@tempa AD +\mathchardef\rightarrow="3\@tempa AE +\mathchardef\downarrow="3\@tempa AF +\mathchardef\Leftrightarrow="3\@tempa DB +\mathchardef\Leftarrow="3\@tempa DC +\mathchardef\Uparrow="3\@tempa DD +\mathchardef\Rightarrow="3\@tempa DE +\mathchardef\Downarrow="3\@tempa DF +\mathchardef\ldots="3\@tempa BC + +\mathchardef\pm="3\@tempa B1 +\mathchardef\geq="3\@tempa B3 +\mathchardef\times="3\@tempa B4 +\mathchardef\div="3\@tempa B8 +\mathchardef\prime="3\@tempa A2 +\mathchardef\bullet="3\@tempa B7 +\mathchardef\equiv="3\@tempa BA +\mathchardef\approx="3\@tempa BB +\mathchardef\sim="3\@tempa 7E +\mathchardef\mid="3\@tempa BD +\mathchardef\otimes="3\@tempa C4 +\mathchardef\oplus="3\@tempa C5 +\mathchardef\cap="3\@tempa C7 +\mathchardef\cup="3\@tempa C8 +\mathchardef\supset="3\@tempa C9 +\mathchardef\supseteq="3\@tempa CA +\mathchardef\subset="3\@tempa CC +\mathchardef\subseteq="3\@tempa CD +\mathchardef\in="3\@tempa CE + +\mathcode`\.="6\@tempa 2E +\mathcode`\,="6\@tempa 2C +\mathcode`\f="0\@tempa A6 + +% +% Handle the symbols that are missing in the PostScript fonts, to +% complete family 1 +% + +\edef\@tempa{\hexnumber@\timi@group} + +\mathchardef\varrho="0\@tempa 25 +\def\vec{\mathaccent"0\@tempa 7E } +\mathchardef\natural="0\@tempa 5C +\mathchardef\epsilon="0\@tempa 0F +\mathchardef\imath="0\@tempa 7B +\mathchardef\jmath="0\@tempa 7C +\mathchardef\ell="0\@tempa 60 +\mathchardef\flat="0\@tempa 5B +\mathchardef\sharp="0\@tempa 5D +% +\mathchardef\star="2\@tempa 3F +\mathchardef\triangleleft="2\@tempa 2E +\mathchardef\triangleright="2\@tempa 2F +% +\mathchardef\smile="3\@tempa 5E +\mathchardef\frown="3\@tempa 5F +\mathchardef\leftharpoonup="3\@tempa 28 +\mathchardef\leftharpoondown="3\@tempa 29 +\mathchardef\rightharpoonup="3\@tempa 2A +\mathchardef\rightharpoondown="3\@tempa 2B +\mathchardef\lhook="3\@tempa 2C +\mathchardef\rhook="3\@tempa 2D + +% pick up some symbols from the LaTeX symbol font... + +\edef\@tempa{\hexnumber@\lyfam@group} + +\mathchardef\mho="0\@tempa 30 +\mathchardef\Join="3\@tempa 31 +\mathchardef\Box="0\@tempa 32 +\mathchardef\Diamond="0\@tempa 33 +\mathchardef\leadsto="3\@tempa 3B +\mathchardef\sqsubset="3\@tempa 3C +\mathchardef\sqsupset="3\@tempa 3D +\mathchardef\lhd="3\@tempa 01 +\mathchardef\unlhd="3\@tempa 02 +\mathchardef\rhd="3\@tempa 03 +\mathchardef\unrhd="3\@tempa 04 + +\def\dots{\ifmmode\ldots\else$\ldots$\fi} + +\declare@font{zapf}{m}{it}{pzcmi} +\extra@def{zapf}{}{} + +\newmathalphabet\zapf +\addtoversion{times}{\zapf}{zapf}{m}{it} + +\gdef\cal#1{{\zapf{#1}}} +% +% 1 2 3 - GO! +% +\mathversion{times} +%% +%% End of file `psmath.sty'. diff --git a/macros/latex209/contrib/misc/pspic.sty b/macros/latex209/contrib/misc/pspic.sty new file mode 100644 index 0000000000..9bec746f82 --- /dev/null +++ b/macros/latex209/contrib/misc/pspic.sty @@ -0,0 +1,209 @@ +\typeout{Document Style `PostScript PICTURE' v1.1b <apr 12 1991>.} +% +%---------------------------------------------------------------------- +% +% PostScript PICTURE +% +% For use with DVIPS (by tomas rokicki) +% +% +% By: Kresten Krab Thorup, University of Aalborg, Denmark +% <krab@iesd.auc.dk> +% January 1991 +% +% +% Thanks to Rett Bull <RBULL@POMONA.CLAREMONT.EDU> for comments and +% bugreports. +%---------------------------------------------------------------------- +% +% ================================== +% psbox +% ================================== +% Bug fixed 91/04/12. Reported by Johannes Sixt. +% (The `end' at the end of this macro had incidential become `en d') +\def\psbox#1{% + \vbox{% + \hbox{% + \special{" \number\unitlength.0 65290.17 div dup scale + picdict begin + /lwidth \number\@wholewidth.0 \number\unitlength.0 div def + lwidth setlinewidth + \moveto(0,0) #1 end}}}} +% +% ================================== +% Commands for use in \psbox +% ================================== +% +\def\moveto(#1,#2){ /x #1 def /y #2 def x y moveto} +\def\rline(#1,#2){ newpath + x y moveto + #1 #2 rlineto + linedash 0 setdash stroke + /x x #1 add def + /y y #2 add def} +% +% ================================== +% Commands for use in LaTeX +% ================================== +% +%---------------------------------------------------------------------- +% \line command of LaTeX +%---------------------------------------------------------------------- +\def\line(#1,#2)#3{\psbox{% + \@ccolour setgray + /linedash \linedash def + #1 0 eq + {/fac{#2 div abs #3 mul}def} + {/fac{#3 #1 abs div mul}def} + ifelse + \rline( #1 fac , #2 fac ) }} +%---------------------------------------------------------------------- +% \putline(x1,y1)(x2,y2) +%---------------------------------------------------------------------- +%\def\putline(#1,#2)(#3,#4){\put(#1,#2){\psbox{% +% \@ccolour setgray +% /linedash \linedash def +% \rline(#3 #1 sub,#4 #2 sub) +%}}} +%---------------------------------------------------------------------- +% \vector command of LaTeX +%---------------------------------------------------------------------- +\def\vector(#1,#2)#3{\psbox{% + \@ccolour setgray + /linedash \linedash def + #1 0 eq + {/fac{#2 div abs #3 mul}def} + {/fac{#3 #1 abs div mul}def} + ifelse + newpath + 0 0 #1 fac #2 fac lwidth lwidth \number\headwidth.0 mul + lwidth \number\headlength.0 mul arrow fill}} +%---------------------------------------------------------------------- +% \putvector(x1,y1)(x2,y2) +%---------------------------------------------------------------------- +%\def\putvector(#1,#2)(#3,#4){\put(#1,#2){\psbox{% +% \@ccolour setgray +% /linedash \linedash def +% newpath +% 0 0 #3 #1 sub #4 #2 sub lwidth lwidth \number\headwidth.0 mul +% lwidth \number\headlength.0 mul arrow fill +%}}} +%---------------------------------------------------------------------- +% \circle and \circle* commands of LaTeX +%---------------------------------------------------------------------- +\def\circle{\@ifstar{\@dot}{\@circle}} +\def\@circle#1{\psbox{ newpath + 0 0 #1 2 div 0 360 arc + [] 0 setdash + \@ccolour setgray stroke}} +\def\@dot#1{\psbox{newpath + 0 0 #1 2 div 0 360 arc + \@ccolour setgray fill}} +%---------------------------------------------------------------------- +% \ellipse(width,heigth) +% (suggested by Rett Bull) +%---------------------------------------------------------------------- + \def\ellipse(#1,#2){\@ifnextchar[% + {\@ellipse(#1,#2)}{\@ellipse(#1,#2)[full]}} + \def\@ellipse(#1,#2)#3{\psbox{% + #1 #2 scale newpath 0 0 0.5 e#3 arc [] 0 setdash stroke}} +%---------------------------------------------------------------------- +% \bezier(x1,y1)(x2,y2)(x3,y3) +%---------------------------------------------------------------------- +\def\bezier(#1,#2)(#3,#4)(#5,#6){% +\psbox{#1 #2 #3 #4 #5 #6 curveto \@ccolour setgray \linedash 0 setdash stroke}% +}% +%---------------------------------------------------------------------- +% \oval command of LaTeX +%---------------------------------------------------------------------- +\def\oval(#1,#2){\@ifnextchar[{\@oval(#1,#2)}{\@oval(#1,#2)[full]}} +\def\@oval(#1,#2)[#3]{% + \begingroup + \@ovxx = #1\unitlength + \@ovyy =#2\unitlength + \@tempdimb \ifdim \@ovyy >\@ovxx =\@ovxx\else =\@ovyy \fi + \ifnum\@tempdimb>\maxovaldiam \@tempdimb=\maxovaldiam \fi + \psbox{/rad \number\@tempdimb.0 \number\unitlength.0 div 2 div def + /dx #1 2 div rad sub def + /dy #2 2 div rad sub def + \@ccolour setgray + newpath #3 [] 0 setdash stroke }% + \endgroup} +%---------------------------------------------------------------------- +% \ctext{...} Text to be written with the current grayscale +%---------------------------------------------------------------------- +\def\ctext#1{\special{ps:gsave \@ccolour + setgray}{}#1\special{ps:grestore}} +%---------------------------------------------------------------------- +% Customization +%---------------------------------------------------------------------- +\def\vectorhead#1#2{\headlength=#1 \headwidth=#2 } +\def\dashpattern[#1]{\xdef\linedash{[#1] }} +\def\colour#1{\def\@ccolour{\@nameuse{CC#1}}} +\def\shade#1{\def\@ccolour{ 1 #1 100 div sub }} +% +% ================================== +% Initialization +% ================================== +% +\newdimen\maxovaldiam +\maxovaldiam=14mm % Max diameter of LaTeX circle +% +\newcount\headlength % length of arrowhead in terms of + % linewidth +\newcount\headwidth % width of arrowhead in terms of linewidth +\vectorhead{9}{5} % default vectorhead dimentions +% +\dashpattern[] % set default type of linedashes +% +\def\CCwhite{1 } +\def\CCblack{0 } +\def\CCgray{.5 } +\def\CClightgray{.75 } +\def\CCdarkgray{.25 } +\colour{black} +%---------------------------------------------------------------------- +% The P*stScr*pt dictionary +%---------------------------------------------------------------------- +\special{!/picdict 200 dict def picdict begin +% +% Comamnds needed for ``ellipse'' +% + /etr {0 90} def /etl {90 180} def /et {0 180} def + /ebr {270 360} def /ebl {180 270} def /eb {180 360} def + /el {90 270} def /er {-90 90} def /efull {0 360}def +% +% Comamnds needed for ``oval'' +% +/tr { 0 0 moveto newpath dx dy rad 0 90 arc} def +/tl { 0 0 moveto newpath -1 dx mul dy rad 90 180 arc} def +/bl { 0 0 moveto newpath -1 dx mul -1 dy mul rad 180 270 arc} def +/br { 0 0 moveto newpath dx -1 dy mul rad 270 360 arc} def +/b { bl stroke newpath br -1 dx mul -1 dy mul rad sub moveto dx 2 mul + 0 rlineto} def +/t { tl stroke newpath tr -1 dx mul dy rad add moveto dx 2 mul 0 + rlineto } def +/l { bl stroke newpath tl -1 dx mul rad sub -1 dy mul moveto 0 dy 2 + mul rlineto } def +/r { tr stroke newpath br dx rad add -1 dy mul moveto 0 dy 2 mul + rlineto } def +/full { t stroke newpath r stroke newpath b stroke newpath l } def +/mtrx matrix def +% +/arrow { +/headlength exch def /halfheadthickness exch 2 div def +/halfthickness exch 2 div def /tipy exch def /tipx exch def /taily +exch def /tailx exch def /dx tipx tailx sub def /dy tipy taily sub def +/arrowlength dx dx mul dy dy mul add sqrt def /angle dy dx atan def +/base arrowlength headlength sub def /savematrix mtrx currentmatrix +def tailx taily translate angle rotate gsave newpath 0 0 moveto base 0 +lineto linedash 0 setdash stroke grestore base halfheadthickness neg +moveto arrowlength 0 lineto base halfheadthickness lineto base +halfthickness lineto closepath savematrix setmatrix +} def +%% +end} +%---------------------------------------------------------------------- +% end of pspic.sty +%---------------------------------------------------------------------- + diff --git a/macros/latex209/contrib/misc/pstimesm.sty b/macros/latex209/contrib/misc/pstimesm.sty new file mode 100644 index 0000000000..3a8dd9973e --- /dev/null +++ b/macros/latex209/contrib/misc/pstimesm.sty @@ -0,0 +1,80 @@ +% Filename: pstimesm.sty +% Author: Alan Jeffrey +% Email: alanje@cogs.sussex.ac.uk +% Last modified: 26 May 1992 + +% This is a LaTeX style file for Times with the MathTime fonts. + +% 21 May 1992: Created file. +% +% 26 May 1992: Added Zapf Chancery calligraphic letters. +% (Unfortunately, this means that \cal I and O will not be very +% obvious, but life is hard.) + +% To begin with, we load the MathTime macros. Unfortunately, these +% PLAY SILLY BUGGERS with the catcode of @, which we have to patch. +% Why oh why oh why... + +\newcount\atcatcode + +\atcatcode=\catcode`\@ + +\input mtmacs + +\catcode`\@=\atcatcode + +% Then we can get on with loading some fonts. First off, we load the +% Times font. + +\input pstimes.sty + +% Then we load the MathTime fonts themselves. + +\new@ps@fontshape{MTMI}{m}{it}{MTMI} +\new@ps@fontshape{MTSY}{m}{n}{MTSY} +\new@ps@fontshape{MTEX}{m}{n}{MTEX} + +\new@mathversion\mv@mathtime + +\define@mathgroup\mv@mathtime{0}{times}{m}{n} +\define@mathgroup\mv@mathtime{1}{MTMI}{m}{it} +\define@mathgroup\mv@mathtime{2}{MTSY}{m}{n} +\define@mathgroup\mv@mathtime{3}{MTEX}{m}{n} + +\addtoversion{mathtime}{\mathsf}{\sfdefault}{m}{n} +\addtoversion{mathtime}{\mathbf}{\rmdefault}{bx}{n} +\addtoversion{mathtime}{\mathsc}{\scdefault}{m}{n} +\addtoversion{mathtime}{\mathit}{\rmdefault}{m}{it} +\addtoversion{mathtime}{\mathsl}{\rmdefault}{m}{sl} +\addtoversion{mathtime}{\mathtt}{\ttdefault}{m}{n} + +% There are no bold math fonts for MathTime. + +\def\boldmath{\@warning{\string\boldmath\space is not available + with MathTime}\gdef\boldmath{}} + +% The command \cal now generated Zapf Chancery, scaled up by 15.28%, +% to make the cap height the same as that of Times Roman. + +\let\cal\undefined +\newmathalphabet\cal + +\new@fontshape{chancery}{m}{it}{% + <5>pzcmi at5.76pt% + <6>pzcmi at6.92pt% + <7>pzcmi at8.07pt% + <8>pzcmi at9.22pt% + <9>pzcmi at10.38pt% + <10>pzcmi at11.52pt% + <11>pzcmi at12.62pt% + <12>pzcmi at13.83pt% + <14>pzcmi at16.6pt% + <17>pzcmi at19.92pt% + <20>pzcmi at23.90pt% + <25>pzcmi at28.68pt}{} + +\addtoversion{mathtime}{\cal}{chancery}{m}{it} + +% The default math version is MathTime. + +\mathversion{mathtime} diff --git a/macros/latex209/contrib/misc/qm.sty b/macros/latex209/contrib/misc/qm.sty new file mode 100644 index 0000000000..16c3413e82 --- /dev/null +++ b/macros/latex209/contrib/misc/qm.sty @@ -0,0 +1,53 @@ +% ***************************** QM.STY ***************************** +% Version 1.1 +% 25.5.1994 +% +% Commands for Bras, Kets, and the like. The commands are working in +% textmode and mathmode. +% +% Since Version 1.1 of this style the arguments of all commands are set to +% mathmode; e.g. you don't have to write \bra{$\Phi$} but only \bra{\Phi}. +% +% Written by: +% Norbert Christlieb +% Heussweg 102 +% 20255 Hamburg +% Germany +% E-Mail: norbert@philosophie.uni-hamburg.de +% +% ******************************************* +\def\fileversion{1.1} +\def\filedate{May 25, 1994} +\typeout{Style Option `qm' Version\space\fileversion\space<\filedate> + (NC) } + +% Command for Bras. Example: with "\bra{1}" you get "<1|". +\newcommand{\bra}[1]{\mbox{\rm \raisebox{0.15ex}[-0.15ex]{$<$}$#1$ + \kern-.20em \vrule width.025em height1.6ex depth 0ex}} + +% \ket{1}: |1> +\newcommand{\ket}[1]{\mbox{\rm \vrule width.025em height1.6ex + depth 0ex \kern.15em $#1$\raisebox{0.15ex}[-0.15ex]{$>$}}} + +% \bracket{1}{2}: <1|2> +\newcommand{\bracket}[2]{\mbox{\rm \raisebox{0.15ex}[-0.15ex]{$<$}$#1$ + \kern-.20em \vrule width.025em height1.6ex depth 0ex \kern.20em + $#2$\raisebox{0.15ex}[-0.15ex]{$>$}}} + +% \expvalue{1}{2}{3}: <1|2|3> +\newcommand{\expvalue}[3]{\mbox{\rm \raisebox{0.15ex}[-0.15ex]{$<$}$#1$ + \kern-.20em \vrule width.025em height1.6ex depth 0ex \kern.20em $#2$ + \kern-.20em \vrule width.025em height1.6ex depth 0ex \kern.15em + $#3$\raisebox{0.15ex}[-0.15ex]{$>$}}} + +% Operator of the identity: \identop +\def\identop{\mbox{\tt \large \kern.45em \vrule width.02em height1.35ex + depth 0ex \kern-.19em 1}} + +% Adjoint Operator +\newcommand{\adjoint}[1]{\mbox{$#1^{\mbox{\scriptsize \dag}}$}} + + + + + diff --git a/macros/latex209/contrib/misc/quote.sty b/macros/latex209/contrib/misc/quote.sty new file mode 100644 index 0000000000..73328d49d7 --- /dev/null +++ b/macros/latex209/contrib/misc/quote.sty @@ -0,0 +1,119 @@ +% Save file as: QUOTE.STY Source: FILESERV@SHSU.BITNET +% +% File: QUOTE.STY +% +% Author: Hunter Goatley +% goathunter@WKUVX1.BITNET +% +% Date: August 14, 1991 +% +% Abstract: +% +% This file defines the macros \begindoublequotes and \enddoublequotes, +% which let TeX replace the double-quote character (") with TeX's +% left double-quote and right double-quote. For example: +% +% "This is a test." ---> ``This is a test.'' +% +% The double-quote character is still available via \dq. (\" is still +% treated as the umlaut accent.) +% +% This macro makes a couple of assumptions about the double-quotes: +% +% 1. Double-quotes are assumed to come in pairs. When replacing +% double-quotes, the macro alternates between `` and ''. The only +% exception to this is noted in (2) below. +% 2. A double-quote at the beginning of a paragraph is always treated +% as ``. This correctly handles the case where a quotation is +% continued into a second paragraph: +% +% "This is the first paragraph.\par +% "This is the second paragraph of the same quote." +% +% Normal TeX spacing after `` and '' is maintained by saving and +% restoring the \spacefactor. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% HOW IT WORKS: +% +% The double-quote character (") is made active by \begindoublequotes. +% The " macro keeps track of left-quote/right-quote pairs and inserts +% the appropriate `` and '' in its place. +% +% Each character has a \spacefactor associated with it, which specifies +% the amount of stretch or shrink that a space following the character +% can have. Most characters have a factor of 1000, but some punctuation +% marks have higher spacefactors, most notably the period, which has a +% \spacefactor of 3000. This means the space following a period can +% stretch up to 3 times more than the space after a regular character, +% accounting for the increased space at the end of sentences. +% +% The `` and '' ligatures are assigned \spacefactor's of 0, so that the +% \spacefactor that is applied to the next character is the same as that +% of the character preceding the quotes. Because " has been redefined as +% a macro, any spaces following " are swallowed by TeX. It was necessary +% to have this macro re-insert any needed space so that the following +% cases worked correctly: +% +% "This is a test," she said. --> ``This is a test,'' she said. +% "This is in a list"; etc. --> ``This is in a list''; etc. +% +% Without the added space, the first example becomes: +% +% ``This is a test,''she said. +% +% The solution was to save the current \spacefactor before inserting a +% right double-quote, then resetting the \spacefactor after the +% insertion. The net effect was that the " macro has a \spacefactor +% of 0, which matches the way TeX treats `` and ''. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{% % Begin a group for which " is active +\catcode`\"=\active % Make " an active character +\catcode`\@=11 % Make @ an active character +% +% \begindoublequotes +% +% This macro makes " an active character, resets the control sequence +% \dblqu@te to L (left), and defines \dq as a replacement for ". +% +\gdef\begindoublequotes{% % \begindoublequotes enables " + \global\catcode`\"=\active % Make " an active character + \global\chardef\dq=`\" % Double-quote char. via \dq + \global\let\dblqu@te=L % Always start with a left double-quote + } % End of macro +% +% Define the macro that will be executed whenever " is encountered. +% +\gdef"{% + % If the double-quote is the first character in a new paragraph, + % make sure it becomes a left double-quote. This case can be + % detected by checking to see if TeX is currently in vertical mode. + % If so, the double-quote is at the beginning of the paragraph + % (since " hasn't actually generated any horizontal mode tokens + % yet, TeX is still in vertical mode). If the mode is vertical, + % set \dblqu@te equal to L. + % + \ifinner\else\ifvmode\let\dblqu@te=L\fi\fi + % + % Now insert the appropriate left or right double-quote. + % + % If \dblqu@te is L, insert a `` and set \dblqu@te to R. + % + \if L\dblqu@te``\global\let\dblqu@te=R% + % + % Otherwise, save the current \spacefactor, insert '', set \dblqu@te + % to L, and reset the original \spacefactor. + % + \else + \let\xxx=\spacefactor % Save the \spacefactor + ''\global\let\dblqu@te=L% % Insert '' and reset \dblqu@te + \spacefactor\xxx % Reset the \spacefactor + \fi % End of \if L\dblqu@te... + } % End of " macro +} % End of group + +\gdef\enddoublequotes{% + \catcode`\"=12 %Set " back to other + } diff --git a/macros/latex209/contrib/misc/raggedtab.sty b/macros/latex209/contrib/misc/raggedtab.sty new file mode 100644 index 0000000000..24bdc45e31 --- /dev/null +++ b/macros/latex209/contrib/misc/raggedtab.sty @@ -0,0 +1,11 @@ +% Style option to cause all parboxes to be typeset ragged right: + +\def\@arrayparboxrestore{\let\par\@@par + \let\-\@dischyph + \let\'\@acci \let\`\@accii \let\=\@acciii + \parindent\z@ \parskip\z@ + \everypar{}\linewidth\hsize + \@totalleftmargin\z@ \leftskip\z@ \rightskip\@flushglue + \@rightskip\@flushglue + \parfillskip\@flushglue \lineskip\normallineskip + \baselineskip\normalbaselineskip\sloppy} diff --git a/macros/latex209/contrib/misc/rangecite.sty b/macros/latex209/contrib/misc/rangecite.sty new file mode 100644 index 0000000000..758f2f5532 --- /dev/null +++ b/macros/latex209/contrib/misc/rangecite.sty @@ -0,0 +1,75 @@ +% RANGECITE DOCUMENT-STYLE OPTION FOR ANY STYLE WITH NUMERIC CITATIONS +% +% This redefines the LaTex \@cite macro to gather consecutive citation numbers +% i,i+1,...,j into a range i-j +% +% Nachum Dershowitz (nachum@cs.uiuc.edu) +% Edward M. Reingold (reingold@cs.uiuc.edu) +% +% These macros are in the public domain. You may use them and copy them at +% will, provided you retain the authorship information. We wrote these for +% temporary use in a single paper, so use them at your own risk! +% +% Written 12 Apr 1990 +% +% +\newif\if@first% +\newcounter{@@@first}% +\newcounter{@@@state}% +% +% A simple four-state finite automaton: +% State 0: No references in current range +% State 1: One reference in current range +% State 2: Two references in current range +% State 3: More than two references in current range +% +\newcounter{@@@next}% +\newcounter{@@@cur}% +\newcounter{@@@curt}% +\newcommand{\b@@@ENDLIST}{9999}% +\def\@citex[#1]#2{% + \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi% + \def\@citea{}% + \@cite{% + \@firsttrue% + \setcounter{@@@state}{0}% + \@for\@citeb:=#2,@@ENDLIST\do{% + \@ifundefined{b@\@citeb}% + {{\bf ?}% + \@warning{Citation `\@citeb' on page \thepage \space undefined}}% +% else% + {\setcounter{@@@next}{\csname b@\@citeb\endcsname}% + \ifcase\the@@@state% +% state 0: + \setcounter{@@@state}{1}% + \or% state 1: + \ifnum\value{@@@next}=\value{@@@curt}% + \setcounter{@@@state}{2}% + \setcounter{@@@first}{\value{@@@cur}}% + \else% + \if@first{}\else{,\ }\fi% + \the@@@cur% + \@firstfalse% + \fi% + \or% state 2: + \ifnum\value{@@@next}=\value{@@@curt}% + \setcounter{@@@state}{3}% + \else% + \setcounter{@@@state}{1}% + \if@first{}\else{,\ }\fi% + \the@@@first,\ \the@@@cur% + \@firstfalse% + \fi% + \or% state 3: + \ifnum\value{@@@next}=\value{@@@curt}% + \else% + \setcounter{@@@state}{1}% + \if@first{}\else{,\ }\fi% + \the@@@first-\the@@@cur% + \@firstfalse% + \fi% + \fi% + \setcounter{@@@cur}{\value{@@@next}}% + \setcounter{@@@curt}{\value{@@@cur}}% + \addtocounter{@@@curt}{1}}}}% + {#1}}% diff --git a/macros/latex209/contrib/misc/regel.sty b/macros/latex209/contrib/misc/regel.sty Binary files differnew file mode 100644 index 0000000000..fa9023136c --- /dev/null +++ b/macros/latex209/contrib/misc/regel.sty diff --git a/macros/latex209/contrib/misc/remark.sty b/macros/latex209/contrib/misc/remark.sty new file mode 100644 index 0000000000..771ae1d73e --- /dev/null +++ b/macros/latex209/contrib/misc/remark.sty @@ -0,0 +1,130 @@ +% **************************************** +% * REMARK ENVIRONMENTS * +% **************************************** +% +% The user creates his own remark-like environments with the command +% \newremark{NAME}{TEXT}[COUNTER] or +% \newremark{NAME}[OLDNAME]{TEXT} +% This defines the environment NAME to be just as one would expect a +% remark environment to be, except that it prints ``TEXT'' instead of +% ``Remark''. +% +% If OLDNAME is given, then environments NAME and OLDNAME use the same +% counter, so using a NAME environment advances the number of the next +% NAME environment, and vice-versa. +% +% If COUNTER is given, then environment NAME is numbered within COUNTER. +% E.g., if COUNTER = subsection, then the first NAME in subsection 7.2 +% is numbered TEXT 7.2.1. +% +% The way NAME environments are numbered can be changed by redefining +% \theNAME. +% +% DOCUMENT STYLE PARAMETERS +% +% \@rmkcounter{COUNTER} : A command such that +% \edef\theCOUNTER{\@rmkcounter{COUNTER}} +% defines \theCOUNTER to produce a number for a remark environment. +% The default is: +% BEGIN \noexpand\arabic{COUNTER} END +% +% \@rmkcountersep : A separator placed between a remark number and +% the number of the counter within which it is numbered. +% E.g., to make the third remark of section 7.2 be numbered +% 7.2-3, \@rmkcountersep should be \def'ed to '-'. Its +% default is '.'. +% +% \@beginremark{NAME}{NUMBER} : A command that begins a remark +% environment for a 'remark' named 'NAME NUMBER' -- +% e.g., \@beginremark{Lemma}{3.7} starts Lemma 3.7. +% +% \@opargbeginremark{NAME}{NUMBER}{OPARG} : A command that begins a remark +% environment for a 'remark' named 'NAME NUMBER' with optional +% argument OPARG -- e.g., \@beginremark{Lemma}{3.7}{Jones} +% starts `Lemma 3.7 (Jones):'. +% +% \@endremark : A command that ends a remark environment. +% +% \newremark{NAME}{TEXT}[COUNTER] == +% BEGIN +% if \NAME is definable +% then \@definecounter{NAME} +% if COUNTER present +% then \@addtoreset{NAME}{COUNTER} fi +% \theNAME == BEGIN \theCOUNTER \@rmkcountersep +% eval\@rmkcounter{NAME} END +% else \theNAME == BEGIN eval\@rmkcounter{NAME} END +% \NAME == \@rmk{NAME}{TEXT} +% \endNAME == \@endremark +% else error +% fi +% END +% +% \newremark{NAME}[OLDNAME]{TEXT}== +% BEGIN +% if \NAME is definable +% then \theNAME == \theOLDNAME +% \NAME == \@rmk{OLDNAME}{TEXT} +% \endNAME == \@endremark +% else error +% fi +% END +% +% \@rmk{NAME}{TEXT} == +% BEGIN +% \refstepcounter{NAME} +% if next char = [ +% then \@yrmk{NAME}{TEXT} +% else \@xrmk{NAME}{TEXT} +% fi +% END +% +% \@xrmk{NAME}{TEXT} == +% BEGIN +% \@beginremark{TEXT}{\theNAME} +% \ignorespaces +% END +% +% \@yrmk{NAME}{TEXT}[OPARG] == +% BEGIN +% \@opargbeginremark{TEXT}{\theNAME}{OPARG} +% \ignorespaces +% END +% +\def\newremark#1{\@ifnextchar[{\@ormk{#1}}{\@nrmk{#1}}} + +\def\@nrmk#1#2{% +\@ifnextchar[{\@xnrmk{#1}{#2}}{\@ynrmk{#1}{#2}}} + +\def\@xnrmk#1#2[#3]{\expandafter\@ifdefinable\csname #1\endcsname +{\@definecounter{#1}\@addtoreset{#1}{#3}% +\expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \@rmkcountersep \@rmkcounter{#1}}% +\global\@namedef{#1}{\@rmk{#1}{#2}}\global\@namedef{end#1}{\@endremark}}} + +\def\@ynrmk#1#2{\expandafter\@ifdefinable\csname #1\endcsname +{\@definecounter{#1}% +\expandafter\xdef\csname the#1\endcsname{\@rmkcounter{#1}}% +\global\@namedef{#1}{\@rmk{#1}{#2}}\global\@namedef{end#1}{\@endremark}}} + +\def\@ormk#1[#2]#3{\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{the#1}{\@nameuse{the#2}}% +\global\@namedef{#1}{\@rmk{#2}{#3}}% +\global\@namedef{end#1}{\@endremark}}} + +\def\@rmk#1#2{\refstepcounter + {#1}\@ifnextchar[{\@yrmk{#1}{#2}}{\@xrmk{#1}{#2}}} + +\def\@xrmk#1#2{\@beginremark{#2}{\csname the#1\endcsname}\ignorespaces} +\def\@yrmk#1#2[#3]{\@opargbeginremark{#2}{\csname + the#1\endcsname}{#3}\ignorespaces} + +%DEFAULT VALUES +\def\@rmkcounter#1{\noexpand\arabic{#1}} +\def\@rmkcountersep{.} +%deleted September 2, 1986 MDK +%\def\@makermknumber#1#2{\bf #1 #2:} +\def\@beginremark#1#2{\trivlist \item[\hskip \labelsep{\bf #1\ #2}]} +\def\@opargbeginremark#1#2#3{\trivlist + \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]} +\def\@endremark{\endtrivlist} diff --git a/macros/latex209/contrib/misc/rmthm.sty b/macros/latex209/contrib/misc/rmthm.sty new file mode 100644 index 0000000000..e1770391ef --- /dev/null +++ b/macros/latex209/contrib/misc/rmthm.sty @@ -0,0 +1,23 @@ +% rmthm.sty, by nico@cs.ruu.nl +% This version is of 14 June 1991. +% You can change the style in which your \newtheorems are typeset with +% \renewcommand{\theoremstyle}{...}. +% Default is \rm (hence the name of this file). +% You can also specify an end-of-theorem marker with +% \renewcommand{\theoremclosing}{...}. +% Default is a box flushed right. +% If you don't want your theorems to be numbered, number them like +% the nonumtheorem theorem environment, i.e. +% \newtheorem{thm}[nonumthm]{Thm}. + +\def\@begintheorem#1#2{\theoremstyle + \trivlist \item[\hskip \labelsep{\bf #1\ #2}]} +\def\@opargbegintheorem#1#2#3{\theoremstyle + \trivlist \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]} +\def\@endtheorem{\nopagebreak\theoremclosing\endtrivlist} +\def\theoremstyle{\rm} +\def\theoremclosing{\hfill$\Box$} +\newtheorem{nonumthm}{\relax} +\renewcommand{\thenonumthm}{\relax} + + diff --git a/macros/latex209/contrib/misc/rnl-slides.sty b/macros/latex209/contrib/misc/rnl-slides.sty new file mode 100644 index 0000000000..cedc241c53 --- /dev/null +++ b/macros/latex209/contrib/misc/rnl-slides.sty @@ -0,0 +1,594 @@ + + + Hallo, + + Jemandem hat gefragt ob es m"oglich w"are einen Rand um einer TeXt + herum zu machen. Bernd hat als `hint' gegeben dass das mit + \@oddhead und \@evenhead geht. + Hierbei ist eine SliTeX Stylefile der genau dass macht. Warnung: + die File kann nicht ohne "Anderungen benutzt werden, denn es + versucht mit einem \special eine LN03-sixel-File zu lesen. + Aber vielleicht hilft es? + + Mit freundlichem Gruss, + + Johannes Braams + +PTT Research Neher Laboratorium, P.O. box 421, +2260 AK Leidschendam, The Netherlands. +Phone : +31 70 3325051 E-mail : JL_Braams@pttrnl.nl +Fax : +31 70 3326477 +------------------------------------------------------------------------------- +% RNL-slides DOCUMENT STYLE +% for SliTeX version 2.09 +% Copyright (C) 1991 by Johannes Braams +% This style is based on the SLIDE style, Copyright (C) 1985 by Leslie Lamport +% +\def\fileversion{0.2} +\def\filedate{25 januari 1990} +\typeout{Documentstyle 'RNL-slides' version \fileversion\space <\filedate>} + +\def\@notinslitex{\errmessage{This command not allowed in SLiTeX.}} + +%page layout +\@twosidefalse +\topmargin -10pt +\oddsidemargin 17pt +\evensidemargin 17pt + +\def\pl@twoside{\@latexerr{No 'twoside' layout for slides}\@eha} + +\advance\hoffset by -1cm +\advance\voffset by -0.3cm +\headheight 0pt +\headsep 2.3pc +\footheight 0pt +\footskip 45pt +\newdimen\boxwidth\newdimen\boxheight +\boxwidth = 63.2pc \textwidth = \boxwidth \advance\textwidth by -4pc +\boxheight = 39.5pc \textheight = \boxheight \advance\textheight by -4.6pc +\columnwidth \textwidth +\columnsep 10pt +\columnseprule \z@ + +%footnotes + +\skip\footins 10pt plus 2pt minus 4pt % Space between last line of text and + % top of first footnote. + +% \skip\@mpfootins : plays same role for footnotes in a minipage as +% \skip\footins does for ordinary footnotes + +\skip\@mpfootins = \skip\footins + +\footnotesep 20pt % Height of strut placed at the beginning of every + % footnote. + + + + +%floats and marginpar +\marginparwidth 0pt +\marginparsep 0pt +\marginparpush 0pt + + + + + + + + + +% **************************************** +% * FONTS * +% **************************************** +% +% +% Note that SLITeX uses a different font-naming and size-defining convention +% than LaTeX. +% +\font\trm lcmss8 +\def\@mainsize{\@visibletrue\tiny} +\parindent 0pt +\def\baselinestretch{1} + +\def\sc{\@noslifont\sc} +\def\@noslifont#1{\@warning{No \string#1\space type style in SLiTeX}} + +\def\Huge{\huge} + +\def\huge{\@nomath\huge\@LARGE\@huge\def\@currsize{\@huge}\rm +\baselineskip 60pt plus 10pt minus 6pt% +\lineskip 2pt% +\def\@parskip{60pt plus 30pt minus 6pt}% +\parskip\@parskip +\abovedisplayskip 24pt plus 10pt minus 6pt% +\belowdisplayskip 24pt plus 10pt minus 6pt% +\abovedisplayshortskip 12pt plus 8pt% +\belowdisplayshortskip 12pt plus 8pt% +\setbox\strutbox=\hbox{\vrule height27pt depth11pt width0pt}% +\baselineskip\baselinestretch\baselineskip +\normalbaselineskip\baselineskip} + +\def\@huge{\if@visible\fortyonept\else\ifortyonept\fi} + +\def\LARGE{\@nomath\LARGE\@LARGE\def\@currsize{\@LARGE}\rm +\baselineskip 52pt plus 10pt minus 6pt% +\lineskip 2pt% +\def\@parskip{52pt plus 30pt minus 6pt}% +\parskip\@parskip +\abovedisplayskip 24pt plus 10pt minus 6pt% +\belowdisplayskip 24pt plus 10pt minus 6pt% +\abovedisplayshortskip 12pt plus 8pt% +\belowdisplayshortskip 12pt plus 8pt% +\setbox\strutbox=\hbox{\vrule height27pt depth11pt width0pt}% +\baselineskip\baselinestretch\baselineskip +\normalbaselineskip\baselineskip} + +\def\@LARGE{\if@visible\thirtyfourpt\else\ithirtyfourpt\fi} + +\def\Large{\@nomath\Large\@Large\def\@currsize{\@Large}\rm +\baselineskip 48pt plus 10pt minus 6pt% +\lineskip 2pt% +\def\@parskip{48pt plus 30pt minus 6pt}% +\parskip\@parskip +\abovedisplayskip 24pt plus 10pt minus 6pt% +\belowdisplayskip 24pt plus 10pt minus 6pt% +\abovedisplayshortskip 12pt plus 8pt% +\belowdisplayshortskip 12pt plus 8pt% +\setbox\strutbox=\hbox{\vrule height27pt depth11pt width0pt}% +\baselineskip\baselinestretch\baselineskip +\normalbaselineskip\baselineskip} + +\def\@Large{\if@visible\twentyninept\else\itwentyninept\fi} + +\def\large{\@nomath\large\@large\def\@currsize{\@large}\rm +\baselineskip 42pt plus 8pt minus 5pt% +\lineskip 2pt% +\def\@parskip{40pt plus 20pt minus 4pt}% +\parskip\@parskip +\abovedisplayskip 20pt plus 8pt minus 3pt% +\belowdisplayskip 20pt plus 8pt minus 3pt% +\abovedisplayshortskip 10pt plus 5pt% +\belowdisplayshortskip 10pt plus 5pt% +\setbox\strutbox=\hbox{\vrule height20pt depth8.5pt width0pt}% +\baselineskip\baselinestretch\baselineskip +\normalbaselineskip\baselineskip} + +\def\@large{\if@visible\twentyfourpt\else\itwentyfourpt\fi} + + +\def\normalsize{\@nomath\normalsize\@normalsize\def\@currsize{\@normalsize}\rm +\baselineskip 30pt plus 3pt minus 3pt% +\lineskip 2pt% +\def\@parskip{30pt plus 12pt minus 6pt}% +\parskip\@parskip +\abovedisplayskip 10pt plus 2pt minus 2pt% +\belowdisplayskip 6pt plus 2pt minus 2pt% +\abovedisplayshortskip 6pt plus 2pt% +\belowdisplayshortskip 6pt plus 2pt% +\setbox\strutbox=\hbox{\vrule height17pt depth7pt width0pt}% +\baselineskip\baselinestretch\baselineskip +\normalbaselineskip\baselineskip} + +\def\@normalsize{\if@visible\twentypt\else\itwentypt\fi} + +\def\small{\@nomath\small\@small\def\@currsize{\@small}\rm +\baselineskip 19pt plus 3pt minus 1pt% +\lineskip 2pt% +\def\@parskip{15pt plus 10pt minus 6pt}% +\parskip\@parskip +\abovedisplayskip 9pt plus 2pt minus 2pt% +\belowdisplayskip 6pt plus 2pt minus 2pt% +\abovedisplayshortskip 4pt plus 2pt% +\belowdisplayshortskip 4pt plus 2pt% +\setbox\strutbox=\hbox{\vrule height13.5pt depth5.6pt width0pt}% +\baselineskip\baselinestretch\baselineskip +\normalbaselineskip\baselineskip} + +\def\@small{\if@visible\seventeenpt\else\iseventeenpt\fi} + +\let\footnotesize=\small + +\let\scriptsize=\small + +\def\tiny{\@nomath\tiny\@tiny\def\@currsize{\@tiny}\rm +\baselineskip 16pt plus 2pt minus 1pt% +\lineskip 2pt% +\def\@parskip{11pt plus 11pt minus 5pt}% +\parskip\@parskip +\abovedisplayskip 9pt plus 2pt minus 6pt% +\belowdisplayskip 9pt plus 2pt minus 6pt% +\abovedisplayshortskip 0pt plus 2pt% +\belowdisplayshortskip 0pt plus 2pt% +\setbox\strutbox=\hbox{\vrule height10pt depth4pt width0pt}% +\baselineskip\baselinestretch\baselineskip +\normalbaselineskip\baselineskip} + +\def\@tiny{\if@visible\fourteenpt\else\ifourteenpt\fi} + +% +%\change{0.2a}{25/01/91}{Redefine {\tt\bsl @arrayparbox} to fit \SLiTeX} +% +\def\@arrayparboxrestore{\let\par\@@par + \let\-\@dischyph + \let\'\@acci \let\`\@accii \let\=\@acciii + \parindent\z@ \parskip\@parskip + \everypar{}\linewidth\hsize + \@totalleftmargin\z@ \leftskip\z@ \rightskip\z@ \@rightskip\z@ + \parfillskip\@flushglue \lineskip\normallineskip + \baselineskip\normalbaselineskip\sloppy} + + + + + + + + + +% **************************************** +% * PAGE STYLES * +% **************************************** +% +\newbox\rand +\setbox\rand=\vbox to\boxheight{\hsize\boxwidth\offinterlineskip +\rlap{\hbox{\rule[-2pt]{\boxwidth}{2pt}}} +\vskip-2pt +\rlap{\hbox to \boxwidth{\rule[-\boxheight]{2pt}{\boxheight}\hfill + \rule[-\boxheight]{2pt}{\boxheight}}} +\vskip-2pt +\rlap{\hbox{\rule{\boxwidth}{2pt}}} +} +\ht\rand=\z@ \dp\rand=\z@ \wd\rand=\z@ + +\newbox\l@g@ +\setbox\l@g@\hbox to 122pt{% + \special{ln03:plotfile texinputs:research.six}\hfill\null} +\newbox\@slidenum +\def\pagebox#1{% +\setbox\@slidenum\vbox to 0pt{\vskip 18pt +\hbox{\hskip-33pt\trm 910128.#1}\vss} +\box\@slidenum} +% +% The page styles of slides is determined by the 'slide' page +% style, the slide environment executing a \thispagestyle{slide} +% command. The page styles of overlays and notes are similarly +% determined by 'overlay' and 'note' page styles. The command +% standard 'headings', 'plain' and 'empty' page styles work by +% redefining the 'slide', 'overlay', and 'note' styles. +% + +\def\ps@headings{% +\def\ps@slide{% + \def\@oddfoot{\pagebox{\theslide}\hfill\copy\l@g@} + \def\@oddhead{\hskip-2pc\copy\rand\hfill\null} + \let\@evenfoot\@oddfoot + \let\@evenfoot\@oddfoot + } +\def\ps@overlay{% + \def\@oddfoot{\pagebox{\theoverlay}\hfill\copy\l@g@} + \def\@oddhead{\hskip-2pc\copy\rand\hfill\null} + \let\@evenfoot\@oddfoot + \let\@evenfoot\@oddfoot + } +\def\ps@note{% + \def\@oddfoot{\pagebox{\thenote}\hfill\copy\l@g@} + \def\@oddhead{\hskip-2pc\copy\rand\hfill\null} + \let\@evenfoot\@oddfoot + \let\@evenfoot\@oddfoot + } +} + +\let\ps@plain\ps@headings +\let\ps@empty\ps@headings +% +%\def\ps@plain{\def\ps@slide{% +%\def\@oddfoot{\@mainsize \mtbox{}\hfil\hbox to 3em{\theslide\hss}}% +%\def\@oddhead{}% +%%\def\@evenfoot{\@mainsize \mbox{}\hfil\hbox to 3em{\theslide\hss}}% +%\def\@evenhead{}} +%\def\ps@overlay{\def\@oddfoot{\@mainsize +% \mbox{}\hfil\hbox to 3em{\theoverlay\hss}}% +%\def\@oddhead{}% +%\def\@evenfoot{\@mainsize \mbox{}\hfil\hbox to 3em{\theoverlay\hss}}% +%\def\@evenhead{}} +%\def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}% +%\def\@oddhead{}% +%\def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}% +%\def\@evenhead{}}} + +%\def\ps@empty{% +%\def\ps@slide{\def\@oddhead{}\def\@oddfoot{}% +%\def\@evenhead{}\def\@evenfoot{}}% +%\def\ps@overlay{\def\@oddhead{}\def\@oddfoot{}% +%\def\@evenhead{}\def\@evenfoot{}}% +%\def\ps@note{\def\@oddhead{}\def\@oddfoot{}% +%\def\@evenhead{}\def\@evenfoot{}}} + +% Default definition the 'slide', 'overlay', and 'note' page styles. +\ps@headings + +% Set ordinary page style to 'empty' +%\def\@oddhead{}\def\@oddfoot{}% +%\def\@evenhead{}\def\@evenfoot{} + + + +% The \@options command causes the execution of every command \ds@FOO +% which is defined and for which the user typed the FOO option in his +% \documentstyle command. For every option BAR he typed for which +% \ds@BAR is not defined, the file BAR.sty will be read after the present +% (main) .STY file is executed. + +\@options + + + + + + + + + +% **************************************** +% * ENVIRONMENTS * +% **************************************** +% +% titlepage +% +\def\titlepage{\newpage\thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\newpage} + +% Default values for list environment. + +\leftmargini 38pt +\leftmarginii 30pt +\leftmarginiii 20pt +\leftmarginiv 15pt +\leftmarginv 15pt +\leftmarginvi 10pt + +\labelsep 10pt +\tabbingsep \labelsep + +\def\@listi{\leftmargin\leftmargini +\labelwidth\leftmargini\advance\labelwidth-\labelsep +\parsep .5\parskip +\topsep \parsep +\itemsep\parskip +\partopsep 0pt} + +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \parsep .5\parskip + \topsep \parsep + \itemsep\parskip} + +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep} + +\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} + + + + +% PARAGRAPH-FORMATTING ENVIRONMENTS +% --------------------------------- +% VERSE +% \CR ends line +% Line continuations indented further. +% Blank line makes new paragraph with \parskip space +% +\def\verse{\let\\=\@centercr \list{}{\itemsep\z@ + \itemindent -15pt\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 15pt}\item[]} +\let\endverse\endlist + +% QUOTATION +% Fills lines +% Indents paragraph +% +\def\quotation{\list{}{\listparindent 20pt\relax\itemindent\listparindent + \rightmargin\leftmargin}\item[]} +\let\endquotation=\endlist + +% QUOTE -- same as quotation except no paragraph indentation, +\def\quote{\list{}{\rightmargin\leftmargin}\item[]} +\let\endquote=\endlist + +% LIST-MAKING ENVIRONMENTS +% ------------------------ +% +% DESCRIPTION +% +% To change the formatting of the label, you must redefine +% \descriptionlabel. + +\def\descriptionlabel#1{\hspace\labelsep \bf #1} +\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + +\let\enddescription\endlist + + + +% ENUMERATE +% Enumeration is done with four counters: enumi, enumii, enumiii +% and enumiv, where enumN controls the numbering of the Nth level +% enumeration. The label is generated by the commands \labelenumi +% ... \labelenumiv. The expansion of \p@enumN\theenumN defines the +% output of a \ref command. + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} + +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} + +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} + +\def\labelenumiv{\Alph{enumiv}.} +\def\theenumiv{\Alph{enumiv}} +\def\p@enumiv{\p@enumiii\theenumiii} + +% ITEMIZE +% Itemization is controlled by four commands: \labelitemi, \labelitemii, +% \labelitemiii, and \labelitemiv, which define the labels of the various +% itemization levels. + +\def\labelitemi{$\bullet$} +\def\labelitemii{\bf --} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + +%\change{0.2}{26/01/91}{Added {\tt\bsl freelines} and {\tt centerlist} +% environment} +% CENTERLIST +% +\def\freelines{\@rightskip 0\p@ plus 2em \rightskip\@rightskip}% +% \leftskip\z@% +% \parindent\z@% +% \parfillskip = 0.1\hsize plus 1fil% +% \parskip\z@}% + +\def\centerlist#1#2{\center\minipage[t]{#2} +\freelines%\leftmargini=0pt +\csname #1\endcsname +\def\endcenterlist{\csname end#1\endcsname\endminipage\endcenter}} + +\def\vcenter{\null\vfill} +\def\endvcenter{\vfill\null} + +% Theorem environments +% \@begintheorem ... \@endtheorem are the commands executed at the +% beginning and end of a (user-defined) theorem-like environment. +% Except \@opargbegintheorem is executed when an optional argument is +% given. Cf. LATEX.TEX. +% +% \def\@begintheorem#1#2{\it \trivlist \item[\hskip \labelsep{\bf #1\ #2}]} +% \def\@opargbegintheorem#1#2#3{\it \trivlist +% \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]} +% \def\@endtheorem{\endtrivlist} + +% Array and tabular environment parameters +\arraycolsep 8pt +\tabcolsep 10pt +\arrayrulewidth .6pt +\doublerulesep 3pt + +% \fbox parameters +\fboxsep = 5pt +\fboxrule = .6pt + +% Date +\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} + + + + + + + + + +% **************************************** +% * FOOTNOTES * +% **************************************** +% + +% Following makes footnotes numbered *, dagger, etc., with numbering +% begun again on every slide, note, or overlay. + +\def\thefootnote{\fnsymbol{footnote}} +\@addtoreset{footnote}{slide} +\@addtoreset{footnote}{overlay} +\@addtoreset{footnote}{note} + +% \footnoterule is a macro to draw the rule separating the footnotes from +% the text. It should take zero vertical space, so it needs a negative +% skip to compensate for any positive space taken by the rule. (See +% PLAIN.TEX.) The resulting rule will appear on all color layers, so +% it's best not to draw a rule. + +\let\footnoterule=\relax + +% \@makefntext{NOTE} : +% Must produce the actual footnote, using \@thefnmark as the mark +% of the footnote and NOTE as the text. It is called when effectively +% inside a \parbox of width \columnwidth (i.e., with \hsize = +% \columnwidth). The following macro indents +% all lines of the footnote by 10pt, and indents the first line of +% a new paragraph by 1em. To change these dimensions, just substitute +% the desired value for '10pt' [in both places] or '1em'. +% The mark is flushright against the footnote. +% +% It is much easier to write a macro in which the footnote text is +% set like an ordinary text paragraph, with no indentation except +% on the first line of a paragraph, and the first line of the +% footnote. In that case, all the macro must do is set \parindent +% to the appropriate value for succeeding paragraphs and put the +% proper indentation before mark. + +\long\def\@makefntext#1{\noindent % Macro to make the text of a footnote + \hangindent 10pt\hbox + to 10pt{\hss $^{\@thefnmark}$}#1} + +% \@makefnmark : A macro to generate the footnote marker that goes +% in the text. + + + + + + + + + + +\def\theequation{\@arabic{\c@equation}} + +% The following stuff isn't used, but needs to be defined. +\def\@figsep{7pt} +\def\@textfigsep{5pt} +\def\@captionskip{6pt} +\def\topfraction{.7} +\def\bottomfraction{.3} +\def\textfraction{.2} +\def\floatpagefraction{.5} +\def\dbltopfraction{.7} +\def\dblfloatpagefraction{.5} + + + + + + + + + +% **************************************** +% * INITIALIZATION * +% **************************************** +% +% Default initializations + +\pagenumbering{arabic} +\onecolumn +\normalsize + + diff --git a/macros/latex209/contrib/misc/rotate_tex.sty b/macros/latex209/contrib/misc/rotate_tex.sty new file mode 100644 index 0000000000..771cfa670b --- /dev/null +++ b/macros/latex209/contrib/misc/rotate_tex.sty @@ -0,0 +1,45 @@ +%% Save file as: ROTATE.TEX Source: FILESERV@SHSU.BITNET +%% NOTE: This file is part of the DVIPS distribution +% +% These macros allow you to rotate or flip a \TeX\ box. Very useful for +% sideways tables or upsidedown answers. +% +% To use, create a box containing the information you want to rotate. +% (An hbox or vbox will do.) Now call \rotr\boxnum to rotate the +% material and create a new box with the appropriate (flipped) dimensions. +% \rotr rotates right, \rotl rotates left, \rotu turns upside down, and +% \rotf flips. These boxes may contain other rotated boxes. +% +\newdimen\rotdimen +\def\vspec#1{\special{ps:#1}}% passes #1 verbatim to the output +\def\rotstart#1{\vspec{gsave currentpoint currentpoint translate + #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation +\def\rotfinish{\vspec{currentpoint grestore moveto}}% gets back in synch +% +% First, the rotation right. The reference point of the rotated box +% is the lower right corner of the original box. +% +\def\rotr#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% + \hbox to\rotdimen{\hskip\ht#1\vbox to\wd#1{\rotstart{90 rotate}% + \box#1\vss}\hss}\rotfinish} +% +% Next, the rotation left. The reference point of the rotated box +% is the upper left corner of the original box. +% +\def\rotl#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% + \hbox to\rotdimen{\vbox to\wd#1{\vskip\wd#1\rotstart{270 rotate}% + \box#1\vss}\hss}\rotfinish}% +% +% Upside down is simple. The reference point of the rotated box +% is the upper right corner of the original box. (The box's height +% should be the current font's xheight, \fontdimen5\font, +% if you want that xheight to be at the baseline after rotation.) +% +\def\rotu#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1% + \hbox to\wd#1{\hskip\wd#1\vbox to\rotdimen{\vskip\rotdimen + \rotstart{-1 dup scale}\box#1\vss}\hss}\rotfinish}% +% +% And flipped end for end is pretty ysae too. We retain the baseline. +% +\def\rotf#1{\hbox to\wd#1{\hskip\wd#1\rotstart{-1 1 scale}% + \box#1\hss}\rotfinish}% diff --git a/macros/latex209/contrib/misc/rs.sty b/macros/latex209/contrib/misc/rs.sty new file mode 100644 index 0000000000..ce17e862cb --- /dev/null +++ b/macros/latex209/contrib/misc/rs.sty @@ -0,0 +1,994 @@ +% =================================================================== +% RS.sty +% Copyright (C) 1992 Cambridge University Press +% Version 1.01, 26 January 1993 +% V 0.91 6 Oct 92 JAS. +% V 0.92 21 Nov 92 JAS. +% V 0.93 30 Nov 92 JAS. +% V 0.94 3 Dec 92 Alison Woollatt to include truesize option. +% V 0.95 3 Dec 92 Alison Woollatt to remove raggedbottom and +% increase floatpagefraction to 0.9, put letterspacing in author macro, +% correct proofbox +% V 1.00 8 Jan 93 Alison Woollatt to correct section headings, equation +% numbering and referencing in appendices +% V 1.01 26 Jan 93 Alison Woollatt to include \sect, reduce +% space in appendix % equation numbering, center running heads +% V 1.02 26 Apr 93 Jonathan Wainwright to include a selection of +% AMS symbols from AMSSYMBO.STY (see AMS SYMBOLS) and to change theorem +% typeface from \it to \sl (see THEOREM) +% +% Royal Society: Proceedings document style +% based on FLM.sty +% based on ARTICLE DOCUMENT STYLE -- Released 26 April 88 +% for LaTeX version 2.09 by Leslie Lamport +% ------------------------------------------------------------------ +% +% INSTRUCTIONS TO EDITOR: +% +% Use the following \documentstyle options to select journal +% for catchline (default = trans): +% \documentstyle[trans] % Phil. Trans. R. Soc. Lond. +% \documentstyle[proc] % Proc. R. Soc. Lond. +% +% Use the following commands in preamble to control catchline: +% \series{A} % (the default) +% \volume{2} +% \pagerange{0--000} +% \year{1993} +% +% For received date, add the following to end of file after References: +% \received{Received 9 August 1992; accepted 10 August 1992.} +% +% For first paragraph after abstract, insert a \noindent by hand. +% +% For Discussion section after References, use \discussion and \comment. +% +% The \documentstyle[truesize] option invokes the 10.5/12 font size. +% +%====================================================================== + +\typeout{Document style `Royal Society journal style', V 1.02, 26 April 1993} +% +% Journals use two-sided printing. +% +\@twosidetrue +\@mparswitchtrue +\def\ds@draft{\overfullrule 5pt} +\def\ds@proc{\gdef\@journal{Proc.\ R.\ Soc.\ Lond.}} +\def\ds@trans{\gdef\@journal{Phil.\ Trans.\ R.\ Soc.\ Lond.}} +\def\@journal{Phil.\ Trans.\ R.\ Soc.\ Lond.} % default +% +% **************************************** +% * FONTS * +% **************************************** +% +\let\xvipt\xviipt +\let\@xvipt\@xviipt + +\lineskip 1pt +\normallineskip 1pt +\def\baselinestretch{1} +\def\@normalsize{\@setsize\normalsize{12pt}\xipt\@xipt% 11 on 12 + \abovedisplayskip 6.5pt plus 1pt minus 1pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 3pt plus 1pt + \belowdisplayshortskip \abovedisplayshortskip} +\def\small{\@setsize\small{10pt}\ixpt\@ixpt% 9 on 10 + \abovedisplayskip 6pt plus 1pt minus 1pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 3pt plus 1pt + \belowdisplayshortskip \abovedisplayshortskip} +\def\footnotesize{\@setsize\footnotesize{10pt}\viiipt\@viiipt% 8 on 10 + \abovedisplayskip 5pt plus 1pt minus 1pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 2pt plus 1pt + \belowdisplayshortskip \abovedisplayshortskip} +\def\indexsize{\@setsize\indexsize{9pt}\viiipt\@viiipt} % 8 on 9 +\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} % 7 on 8 +\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt} % 5 on 6 +\def\large{\@setsize\large{12.5pt}\xipt\@xipt} % 11 on 12.5 +\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} % 14 on 18 +\def\LARGE{\@setsize\LARGE{19pt}\xvipt\@xvipt} % 16 on 19 +\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} % 20 on 25 +\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} % 25 on 30 +%\newfont{\qsmall}{mtr10 scaled 975} % 9.75pt rm, used in quotations +%\newfont{\qsmall}{Times-Roman at 9.75pt} % 9.75pt rm, used in quotations +\normalsize + +% **************************************** +% * TRUESIZE * +% **************************************** + +\def\ds@truesize{% +% +% define 10.5pt and 16pt +\font\tenptfiverm = cmr10 at 10.5pt +\font\tenptfiveit = cmti10 at 10.5pt +\font\tenptfivemi = cmmi10 at 10.5pt + \skewchar\tenptfivemi ='177 % for placement of accents +\font\tenptfivesy = cmsy10 at 10.5pt + \skewchar\tenptfivesy ='60 % for placement of math accents +\font\tenptfivesl = cmsl10 at 10.5pt +\font\tenptfivebf = cmbx10 at 10.5pt +\font\tenptfivett = cmtt10 at 10.5pt + \hyphenchar\tenptfivett = -1 % suppress hyphenation in \tt font +\font\tenptfivesf = cmss10 at 10.5pt +\font\tenptfively = lasy10 at 10.5pt +\font\tenptfiveex = cmex10 at 10.5pt + +\def\xptv{\textfont\z@\tenptfiverm + \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm +\textfont\@ne\tenptfivemi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi +\textfont\tw@\tenptfivesy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy +\textfont\thr@@\tenptfiveex \scriptfont\thr@@\tenptfiveex \scriptscriptfont\thr@@\tenptfiveex +\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\tenptfivemi + \textfont\tw@\tenptfivesy \textfont\lyfam\tenptfively + \@boldfalse}\@boldfalse +\def\boldmath{\@ifundefined{tenptfivemib}{\global\font\tenptfivemib\@mbi + \global\font\tenptfivesyb\@mbsy + \global\font\tenptfivelyb\@lasyb\relax\@addfontinfo\@xptv + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\tenptfivemib \textfont\tw@\tenptfivesyb + \textfont\lyfam\tenptfivelyb \@prtct\@boldtrue}}}{}\@xptv\boldmath}% +\def\prm{\fam\z@\tenptfiverm}% +\def\pit{\fam\itfam\tenptfiveit}\textfont\itfam\tenptfiveit \scriptfont\itfam\sevit + \scriptscriptfont\itfam\sevit +\def\psl{\fam\slfam\tenptfivesl}\textfont\slfam\tenptfivesl + \scriptfont\slfam\tenptfivesl \scriptscriptfont\slfam\tenptfivesl +\def\pbf{\fam\bffam\tenptfivebf}\textfont\bffam\tenptfivebf + \scriptfont\bffam\tenptfivebf \scriptscriptfont\bffam\tenptfivebf +\def\ptt{\fam\ttfam\tenptfivett}\textfont\ttfam\tenptfivett + \scriptfont\ttfam\tenptfivett \scriptscriptfont\ttfam\tenptfivett +\def\psf{\fam\sffam\tenptfivesf}\textfont\sffam\tenptfivesf + \scriptfont\sffam\tenptfivesf \scriptscriptfont\sffam\tenptfivesf +\def\psc{\@getfont\psc\scfam\@xptv{\@mcsc}}% +\def\ly{\fam\lyfam\tenptfively}\textfont\lyfam\tenptfively + \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly +\@setstrut \rm} + +\def\@xptv{} + +% sixteen point + \font\sxtnrm = cmr10 at 16pt % roman MR(6.3.91) +%% \font\sxtnmi = mtmi10 at 16pt % math italic +%% \skewchar\sxtnmi ='177 % for placement of accents +%\font\sxtnmib = mtmib10 at 16pt % bold math italic +%% \font\sxtnsy = mtsy10 at 16pt % math symbols +%% \skewchar\sxtnsy ='60 % for placement of math accents +%\font\sxtnsyb = mtbsy10 at 16pt % bold symbols +%\font\sxtnit = mtti10 at 16pt % text italic +%\font\sxtnsl = mtsl10 at 16pt % slanted + \font\sxtnbf = cmbx10 at 16pt % extended bold +%\font\sxtnbfs = mtbxsl10 at 16pt % extended bold slanted +%\font\sxtntt = mttt10 at 16pt % typewriter +%\font\sxtntti = mtitt10 at 16pt % italic typewriter +%\font\sxtntts = mtsltt10 at 16pt % slanted typewriter +%\font\sxtnsf = mtss10 at 16pt % sans serif +%\font\sxtnsfi = mtssi10 at 16pt % italic sans serif +%\font\sxtnsfb = mtssbx10 at 16pt % bold sans serif +%\font\sxtnsc = mtcsc10 at 16pt % small caps +%% \font\sxtnly = lasy10 at 16pt % LaTeX symbols +%\font\sxtnlyb = lasyb10 at 16pt % bold LaTeX symbols +%\font\sxtnuit = mtu10 at 16pt % unslanted italic + +\def\xvipt{\textfont\z@\sxtnrm + \scriptfont\z@\twlrm \scriptscriptfont\z@\tenrm +%%\textfont\@ne\sxtnmi \scriptfont\@ne\twlmi \scriptscriptfont\@ne\tenmi +%%\textfont\tw@\sxtnsy \scriptfont\tw@\twlsy \scriptscriptfont\tw@\tensy +%%\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex +%%\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath +%% \textfont\@ne\sxtnmi \textfont\tw@\sxtnsy \textfont\lyfam\sxtnly +%% \@boldfalse}\@boldfalse +%%\def\boldmath{\@subfont\boldmath\unboldmath}% +\def\prm{\fam\z@\sxtnrm}% +%%\def\pit{\@getfont\pit\itfam\@xvipt{mtti10\@magscale3}}% +%%\def\psl{\@getfont\psl\slfam\@xvipt{mtsl10\@magscale3}}% +\def\pbf{\fam\bffam\sxtnbf}\textfont\bffam\sxtnbf + \scriptfont\bffam\twlbf \scriptscriptfont\bffam\tenbf +%%\def\ptt{\@getfont\ptt\ttfam\@xvipt{mttt10\@magscale3}\@nohyphens +%% \ptt\@xvipt}% +%%\def\psf{\@getfont\psf\sffam\@xvipt{mtss16}}% +%%\def\psc{\@getfont\psc\scfam\@xvipt{\@mcsc\@magscale3}}% +%%\def\ly{\fam\lyfam\sxtnly}\textfont\lyfam\sxtnly +%% \scriptfont\lyfam\twlly \scriptscriptfont\lyfam\tenly +\@setstrut \rm} + +\def\@xvipt{} + +% overwrite sixteenpoint +\let\xvipt\xvipt +\let\@xvipt\@xvipt + +\def\@normalsize{\@setsize\normalsize{12pt}\xptv\@xptv% 10.5 on 12 + \abovedisplayskip 6.5pt plus 1pt minus 1pt + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 3pt plus 1pt + \belowdisplayshortskip \abovedisplayshortskip} +} % end of ds@truesize + +\@options +% +% **************************************** +% * PAGE LAYOUT * +% **************************************** +% +% SIDE MARGINS: +\oddsidemargin 2pc +\evensidemargin 2pc +\marginparwidth 2.0cm +\marginparsep 10pt + +% VERTICAL SPACING: +\topmargin 2.5pc +\headheight 12pt +\headsep 8pt +\topskip 12pt +\footheight 8pt +\footskip 18pt +\newskip\halflineskip +\halflineskip=6pt plus .5pt minus .5pt +%\newskip\affilskip % used by authors to separate affiliations on title page +%\affilskip=3pt + +% DIMENSION OF TEXT: +\textheight = 48\baselineskip \advance\textheight by \topskip +\textwidth 32pc +\columnsep 10pt +\columnseprule 0pt + +% FOOTNOTES: +\footnotesep 2pt% % space between footnotes +\skip\footins 18pt plus 1pt% % space between text and first note + +% FLOATS: +%\def\topfigrule{\vskip\floatsep\hbox{\rule{\textwidth}{.4pt}}\vskip-\floatsep} +\floatsep 10pt plus 2pt minus 1pt +\textfloatsep=1.4\floatsep +\intextsep\floatsep +\@maxsep 15pt +\dblfloatsep\floatsep +\dbltextfloatsep\floatsep +\@dblmaxsep 15pt +\@fptop 0pt plus 0fil +\@fpsep 10pt plus 0fil +\@fpbot 0pt plus 3fil +\@dblfptop 0pt plus 0fil +\@dblfpsep 10pt plus 0fil +\@dblfpbot 0pt plus 3fil +\marginparpush 5pt + +% **************************************** +% * PARAGRAPHING * +% **************************************** +% +\parskip \z@ plus .3pt +\parindent 1em +\partopsep 0pt plus 1pt +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\clubpenalty=0 +\widowpenalty=10000 + +% **************************************** +% * PARTS * +% **************************************** +% +\def\part{\par \addvspace{4ex}\@afterindentfalse + \secdef\@part\@spart} +\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne + \refstepcounter{part} + \addcontentsline{toc}{part}{Part \thepart: #1} + \else \addcontentsline{toc}{part}{#1} + \fi + {\parindent 0pt \centering %changed ggw + \ifnum \c@secnumdepth >\m@ne + \large\rm PART + \ifcase\thepart \or ONE \or TWO \or THREE \or FOUR \or FIVE + \or SIX \or SEVEN \or EIGHT \or NINE \or TEN \else \fi + \par \nobreak + \fi + \LARGE \rm #2 \markboth{}{}\par } + \nobreak \vskip 3ex \@afterheading} +\def\@spart#1{{\parindent 0pt \centering % changed ggw + \LARGE \rm #1\par} + \nobreak \vskip 3ex \@afterheading} + +% **************************************** +% * SECTIONS * +% **************************************** +% +\def\section{\setcounter{equation}{0} + \@startsection {section}{1}{\z@} + {19pt plus 2pt minus 1pt}% beforeskip; neg = suppress indent + {6pt plus .5pt minus .3pt}% afterskip + {\centering\large\bf}}% style +\def\subsection{\@startsection{subsection}{2}{\z@} + {9pt plus 1pt minus 1pt} + {3pt plus .1pt minus .1pt} + {\centering\normalsize\it}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@} + {9pt plus 1pt minus 1pt} + {3pt plus .1pt minus .1pt} + {\raggedright\normalsize\it}} +\def\paragraph{} +\def\subparagraph{} +% +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \def\@svsec{}% + \else + \refstepcounter{#1} + \ifnum #2=1 + \edef\@svsec{\ifappendix Appendix \fi\csname the#1\endcsname.\hskip 0.5em} + \fi + \ifnum #2=2 + \edef\@svsec{{\rm(}\csname the#1\endcsname{\rm)}\hskip 0.5em} + \fi + \ifnum #2=3 + \edef\@svsec{{\rm(\csname the#1\endcsname)}\hskip 0.5em} + \fi + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup #6\relax + \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par} + \endgroup + \csname #1mark\endcsname{#7}% + \ifnum #2=1% sections only + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth \else + \ifappendix\protect\hskip\@tempdima Appendix~\csname the#1\endcsname.\ \ #7% + \else \protect\numberline{\csname the#1\endcsname.}#7\fi\fi} +% \protect\numberline{\csname the#1\endcsname.}\ifappendix\else #7\fi\fi} + \else + \addcontentsline{toc}{#1}{\ifnum #2>2 \else + \protect\numberline{{\rm(}{\it\csname the#1\endcsname}{\rm)}}#7\fi} + \fi + \else % + \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname {#7} + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname.}\fi#7} + }% + \fi + \@xsect{#5}} + +\newif\ifappendix \appendixfalse +\def\appendix{\par + \setcounter{section}{0} + \def\thesection{\Alph{section}} + \def\thesubsection{\alph{subsection}} + \def\thesubsubsection{\roman{subsubsection}} + \def\theequation{{\rm \thesection}\ls\arabic{equation}} + \appendixtrue} + +\setcounter{secnumdepth}{3} % number sections, subsections and subsubsections + % but not paragraphs or subparagraphs. + +% **************************************** +% * PART & SECTION NUMBERS * +% **************************************** +% +% from home: +\newcounter{part} +\newcounter {section} +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +%\newcounter {subparagraph}[paragraph] +\def\thepart {\arabic{part}} +\def\thesection {\arabic{section}} +\def\thesubsection {\alph{subsection}} +\def\thesubsubsection {\roman{subsubsection}} +\def\theparagraph {\thesubsubsection.\arabic{paragraph}} +%\def\thesubparagraph {\theparagraph.\arabic{subparagraph}} +% **************************************** +% * SKIPS * +% **************************************** +% +\newskip\@indentskip +\newskip\smallindent +\newskip\@footindent +\newskip\@leftskip +\@indentskip=2.5em +\smallindent=1em +\@footindent=\smallindent +\@leftskip=\z@ + +% **************************************** +% * LISTS * +% **************************************** +% +\leftmargini\z@ +\labelsep\z@ +\labelwidth\z@ +% +%\def\makeitemlabel#1{\hspace\labelwidth\hspace\labelsep\hfill #1} +\def\makeitemlabel#1{\hfill #1} +% +% set leftmargin to labelwidth + labelsep of OUTER list: +\def\@listI{\parsep\z@ \topsep\z@ \partopsep\z@ \itemsep\z@ \rightmargin\z@ + \leftmargin\labelwidth \advance\leftmargin\labelsep} +\def\@listi{\@listI \leftmargin\leftmargini \itemindent 1em} +\def\@listii{\@listI \advance\leftmargin 1em} +\def\@listiii{\@listI} +\def\@listiv{\@listI} +\def\@listv{\@listI} +\def\@listvi{\@listI} +\@listi +% +% ITEMIZE +\def\itemize{\ifnum \@itemdepth >3 \@toodeep + \else \advance\@itemdepth \@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \list{\csname\@itemitem\endcsname}% + {\labelsep .5em \settowidth{\labelwidth}{\csname\@itemitem\endcsname} + \let\makelabel\makeitemlabel}% + \fi} +\def\labelitemi{$\bullet$} % ggw +\def\labelitemii{$\circ$} +\def\labelitemiii{---} % ggw +\def\labelitemiv{--} % ggw +% +% ENUMERATE +\def\enumerate{\ifnum \@enumdepth >3 \@toodeep + \else \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi + \@ifnextchar [{\@enumeratetwo}{\@enumeratetwo[i]}} +\def\@enumeratetwo[#1]{% + \list{\csname label\@enumctr\endcsname}% + {\settowidth\labelwidth{#1} \labelsep .5em + \advance\itemindent\labelsep \advance\itemindent\labelwidth + \usecounter{\@enumctr}}} +% +\def\labelenumi{(\theenumi)} +\def\theenumi{\roman{enumi}} +\def\labelenumii{({\it\theenumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi.\theenumii} +\def\labelenumiii{\theenumiii.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\p@enumii.\theenumiii} +\def\labelenumiv{\theenumiv} +\def\theenumiv{\roman{enumiv}} +\def\p@enumiv{\p@enumiii.\theenumiv} +% +% DESCRIPTION +\def\descriptionlabel#1{\hspace\labelsep \bf #1} +\def\description{\list{}{\labelwidth\z@%\itemindent-\leftmargin + \ifnum\@listdepth=1\else\advance\leftmargin 1em\fi + \let\makelabel\descriptionlabel}} +\let\enddescription\endlist +% +% +% **************************************** +% * DISPLAYED TEXT * +% **************************************** +% +% VERSE +\def\verse{\let\\=\@centercr + \list{}{\itemsep\z@ + \itemindent -\@indentskip + \listparindent \itemindent + \rightmargin\leftmargin + \advance\leftmargin \@indentskip}\item[]} +\let\endverse\endlist +% +% QUOTATION +\def\quotation{\list{}{\listparindent\smallindent + \itemindent\listparindent + \leftmargin 1em\rightmargin\leftmargin + \topsep\halflineskip + \parsep 0pt plus 1pt}\item[]} +\let\endquotation=\endlist +% +% QUOTE +\let\quote\quotation +%\def\quote{\par\list{}{\leftmargin\z@\rightmargin\leftmargin}\item[]% +% \small\rule{0pt}{10pt}\ignorespaces} +\let\endquote=\endlist + +% **************************************** +% * OTHER ENVIRONMENTS * +% **************************************** +% +% THEOREM +% The following modifies two internal routines called by Latex's +% \newtheorem command, which RS.sty users are encouraged to use +% for their own purposes, such as creating Lemma 1.2, etc. +% +\newenvironment{definition}{\par\addvspace{\halflineskip} +\refstepcounter{theorem}{\it Definition~\thetheorem}.\hskip.5em\ignorespaces}% +{\vskip\halflineskip\par} +% +\def\@begintheorem#1#2{\par\addvspace{\halflineskip}{\bf #1\ #2.}\hskip.5em\sl} +\def\@opargbegintheorem#1#2#3{\par\vskip\halflineskip + {\bf #1\ #2.\ {\rm (#3)}.}\hskip.5em\sl} +\def\@endtheorem{\vskip\halflineskip\par} +% +% PROOF +\newsavebox{\proofbox} +\sbox{\proofbox}{\rule{7pt}{7pt}} +%\def\proof{\list{}{\topsep\halflineskip \labelwidth\z@ \labelsep .5em +% \let\makelabel\makeitemlabel} \item[{\it Proof.}]} +%\def\endproof{\hspace*{\fill}\usebox{\proofbox}\endlist} +\def\proof{\par\addvspace{\halflineskip} {\it Proof.}\hskip.5em\ignorespaces} +\def\endproof{\hspace*{\fill}\usebox{\proofbox}\vskip\halflineskip\par} +\@namedef{proof*}{\proof} +\@namedef{endproof*}{\vskip\halflineskip\par} +% +% REMARK works like \newtheorem but without the ability to number,and +% produces displayed paragraph in same style as proof. +\def\newremark#1#2{\newenvironment{#1}{% + \list{}{\topsep\halflineskip \labelwidth\z@ + \labelsep .5em\let\makelabel\makeitemlabel} \item[{\it #2.}]}{\endlist}} +% +% EQUATION and EQNARRAY +% +\def\theequation{\thesection.\arabic{equation}} +% +% \jot = 3pt % Extra space added between lines of an eqnarray environment +% \def\@eqnnum{(\theequation)} % (the default in LaTeX) +% +% The following substitution causes \eqnarray to give same spacing +% around =,>,<, etc. as in one-line equation. +\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation +\global\@eqnswtrue +\global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr +$$\halign to \displaywidth\bgroup\@eqnsel\hskip\@centering + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne +% \hskip 2\arraycolsep \hfil${##}$\hfil + \hfil${\;##\;}$\hfil +% &\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil + &\global\@eqcnt\tw@ $\displaystyle\tabskip\z@{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} +% +% TITLEPAGE +% +\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 3pt % this is half the space between cols. in a tabular env. ggw +\arrayrulewidth .5pt +\doublerulesep 1.5pt +\tabbingsep \labelsep +%\skip\@mpfootins = \skip\footins +\skip\@mpfootins = 0pt +\fboxsep = 3pt +\fboxrule = .5pt + +% **************************************** +% * TITLE AND ABSTRACT * +% **************************************** +% +\def\affiliation#1{\gdef\@affiliation{#1}} +\gdef\@affiliation{} + +\def\maketitle{\appendixfalse\@ifnextchar [{\m@ketitleone}{\m@ketitletwo}}% +\def\m@ketitletwo{\m@ketitleone[n]} +\def\m@ketitleone[#1]{ + \par + \begingroup +% no changes to footnoting necessary; keep at bottom of page -- jas +% \def\thefootnote{\fnsymbol{footnote}} +% \def\@makefnmark{\hbox to 0pt{${\@thefnmark}$\hss}}% fnmark now on line -- ggw + \newpage \global\@topnum\z@ + \@maketitle{#1}\thispagestyle{titlepage} \@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax \let\@maketitle\relax \gdef\@affiliation{} + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} + +%\def\and{{\small\bf AND}\ } % not needed for Roy.Soc. + +\def\@maketitle#1{ + \newpage + \vspace*{10pt} + {\centering \sloppy + {\LARGE\bf \@title \par} + \vskip 16pt plus 2pt minus 1pt + {\sc B\ls y\ls\ \@author \par} + \vskip 3pt plus 1pt + {\it \@affiliation \par} + \par} + \vskip 20pt plus 2pt minus 1pt +} + +\def\abstract{\par\normalsize\noindent\ignorespaces} +\def\endabstract{\par\vskip 9pt plus 1pt minus 1pt + \vbox{\centerline{\rule[4pt]{30pc}{.4pt}}}\vskip 9pt plus 1pt minus 1pt\par} + +% **************************************** +% * PAGE STYLES * +% **************************************** +% +\mark{{}{}} +\gdef\@author{\mbox{}} +\def\author{\@ifnextchar [{\@authortwo}{\@authorone}} +% make \and a simple 'and' for \@shortauthor +\def\@authortwo[#1]#2{\gdef\@author{#2}\gdef\@shortauthor{#1}} +\def\@authorone#1{\gdef\@author{#1} + \begingroup\def\and{and}\gdef\@shortauthor{#1}\endgroup} +\def\shortauthor#1{\gdef\@shortauthor{#1}} +\gdef\@shortauthor{} +\gdef\@title{\mbox{}} % SFB 0.96 +\def\title{\@ifnextchar [{\@titletwo}{\@titleone}} +\def\@titletwo[#1]#2{\gdef\@title{#2}\gdef\@shorttitle{#1}} +\def\@titleone#1{\gdef\@title{#1}\gdef\@shorttitle{#1}} +\def\shorttitle#1{\gdef\@shorttitle{#1}} +\gdef\@shorttitle{} +% +\def\series#1{\gdef\@series{#1}} +\gdef\@series{A} +\def\year#1{\gdef\@year{#1}} +\gdef\@year{1993} +\def\volume#1{\gdef\@volume{#1}} +\gdef\@volume{11} +\def\pagerange#1{\gdef\@pagerange{#1}} +\gdef\@pagerange{1--000} +\newsavebox{\RSfootbox} +\sbox{\RSfootbox}{\footnotesize{\it\@journal}\ \rm\@series\ (\@year)} +\def\ps@headings{\let\@mkboth\markboth + \def\@oddhead{\phantom{\rm \thepage}\hfil\it \@shorttitle \hfil\rm \thepage} + \def\@oddfoot{\usebox{\RSfootbox}\hfil} + \def\@evenhead{\rm \thepage \hfil \it \@shortauthor \hfil\phantom{\rm \thepage}} + \def\@evenfoot{\@oddfoot} + \def\sectionmark##1{\markboth{##1}{}} + \def\subsectionmark##1{\markright{##1}}} +\def\ps@myheadings{\let\@mkboth\@gobbletwo + \def\@oddhead{\it \rightmark \hfill \rm \thepage} + \def\@oddfoot{} + \def\@evenhead{\it \leftmark \hfill \rm \thepage} + \def\@evenfoot{} + \def\sectionmark##1{} + \def\subsectionmark##1{}} +\def\ps@titlepage{\let\@mkboth\@gobbletwo + \def\@oddfoot{\raisebox{0pt}[8pt][0pt]{% + \parbox[t]{\textwidth}{\footnotesize\usebox{\RSfootbox} {\bf\@volume}, + {\rm \@pagerange} \hfill {\rm\copyright\ \@year\ The Royal + Society}\\[2pt] \makebox[0pt][l]{\it Printed in Great Britain} \hfil + {\small\rm\thepage} \hfil}}} + \def\@oddhead{}\def\@evenhead{}\let\@evenfoot\@oddfoot + \def\sectionmark##1{}\def\subsectionmark##1{}} + +% **************************************** +% * TABLE OF CONTENTS, ETC. * +% **************************************** +% +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{2} +%\@undottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE} +\def\@undottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth + \else + \vskip \z@ plus .2pt + {\hangindent #2\relax + \rightskip \@tocrmarg \parfillskip -\rightskip + \parindent #2\relax \@afterindenttrue + \interlinepenalty\@M \leavevmode + \@tempdima #3\relax {\rm #4}\nobreak \hfill \nobreak + \hbox to\@pnumwidth{\hfil\rm #5}\par}\fi} % page number added -- ggw +\def\tableofcontents{\@restonecolfalse + \if@twocolumn\@restonecoltrue\onecolumn\fi + \vskip 4pt plus .5pt + \centerline{\large\bf Contents} \mbox{}\hfill {\sc page} + \vskip 2pt + \@starttoc{toc} + \if@restonecol\twocolumn\fi \par\vspace{12pt}} +% +\def\l@section#1#2{\addpenalty{\@secpenalty} + \@tempdima 1.5em + \begingroup + \parindent\z@ \rightskip\@pnumwidth \parfillskip -\@pnumwidth + \rm\leavevmode \advance\leftskip\@tempdima + \hskip-\leftskip {#1}\nobreak\hfil + \nobreak\hbox to\@pnumwidth{\hss #2}\par + \endgroup} +\def\l@subsection{\@undottedtocline{2}{1.5em}{1.6em}} +\def\l@subsubsection{\@undottedtocline{3}{3.8em}{3.2em}} +% +% The following are irrelevant for RS -- jas +% \def\l@paragraph{\@undottedtocline{4}{7.0em}{4.1em}} +% \def\l@subparagraph{\@undottedtocline{5}{10em}{5em}} +% \def\listoffigures{\@restonecolfalse +% \if@twocolumn\@restonecoltrue\onecolumn\fi +% \section*{List of Figures}% altered -- ggw +% \@starttoc{lof} \if@restonecol\twocolumn\fi} +% \def\l@figure{\@undottedtocline{1}{1.5em}{2.3em}} +% \def\listoftables{\@restonecolfalse +% \if@twocolumn\@restonecoltrue\onecolumn\fi +% \section*{List of Tables}% altered -- ggw +% \@starttoc{lot} \if@restonecol\twocolumn\fi} +% \let\l@table\l@figure + +% **************************************** +% * THE INDEX * +% **************************************** +% +\newif\if@restonecol +\def\theindex{\section*{Index} % changed to U&LC -- ggw + \addcontentsline{toc}{section}{Index} + \footnotesize \parindent\z@ \parskip\z@ plus .1pt\relax + \let\item\@idxitem} +\def\@idxitem{\par\hangindent 1em} +\def\subitem {\par\hangindent 1em \hspace*{1em}} +\def\subsubitem{\par\hangindent 1em\hspace*{1em}} +\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi} +\def\indexspace{\par\vskip\baselineskip \relax} + +% **************************************** +% * FOOTNOTES * +% **************************************** +% +%\def\footnoterule{} +\def\footnoterule{\setcounter{footnote}{0}}% To force numbering to start +% at 1 on each page. Works because numbers are +% assigned at occurrence of the \footnote{} command; this +% resets counter after they are printed. This might not work +% if next footnote falls close enough to page break to have +% already been 'digested'. --jas +\def\@makefntext#1{\hskip1em\@thefnmark\hskip.5em\ignorespaces #1} +\def\@fnsymbol#1{\ifcase#1\or \dag\or \ddag\or \P\or \|\or + \dag\dag\or \ddag\ddag\or \P\P\or \|\| \else\@ctrerr\fi\relax} +% \@makefnmark : A macro to generate the footnote marker from \@thefnmark +% The default is \hbox{$^\@thefnmark$}, i.e., raised. +\def\@makefnmark{\hbox{\@thefnmark}}% used in text +\def\thempfootnote{\hbox{$^\alph{mpfootnote}$}}% have to change this because we + %do want minipage footnote marks to be raised (since they are + %alphabetic and not symbols). + +% **************************************** +% * FIGURES AND TABLES * +% **************************************** +% +\setcounter{topnumber}{3} +\def\topfraction{.9} +\setcounter{bottomnumber}{0} +\def\bottomfraction{.9} +\setcounter{totalnumber}{3} +\def\textfraction{.1} +\def\floatpagefraction{.9} +\setcounter{dbltopnumber}{3} +\def\dbltopfraction{.9} +\def\dblfloatpagefraction{.5} +% +\long\def\@makecaption#1#2{\vskip3pt\begingroup\small + \setbox\@tempboxa\hbox{{\rm #1.} \fcap@type #2} + \ifdim \wd\@tempboxa >2\hsize \parbox{\textwidth}{\unhbox\@tempboxa} + \else {\centering \unhbox\@tempboxa\par} \fi \endgroup\vskip3pt} +% +\newcounter{table} +\def\thetable{\@arabic\c@table} +\def\fps@table{tp} +\def\ftype@table{1} +\def\ext@table{lot} +\def\fnum@table{Table~\thetable} +%\def\table{\@float{table}\rule[4pt]{\textwidth}{.4pt} \vskip\floatsep} +\def\table{\let\fcap@type\it \@float{table}\small} +\def\plaintable{\@float{table}} +\let\endplaintable\end@float +\let\endtable\end@float +\@namedef{table*}{\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} +\def\fstyle@table{\small\rm} +\def\fjust@table{\centering}%changed ggw +\def\fcapjust@table{\centering} %changed ggw +\def\fcapsize@table{\small\rm} +\def\fcapstyle@table{\small\it} +% +\newcounter{figure} +\def\thefigure{\@arabic\c@figure} +\def\fps@figure{tp} +\def\ftype@figure{2} +\def\ext@figure{lof} +\def\fnum@figure{Figure~\thefigure} +\def\figure{\let\fcap@type\rm \@float{figure}} +\let\endfigure\end@float +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} +\def\fstyle@figure{\small\rm} +\def\fjust@figure{\centering} +\def\fcapjust@figure{\centering}% changed ggw +\def\fcapsize@figure{\small\rm} +\def\fcapstyle@figure{\small\rm} +\newif\ifwide@float +\wide@floatfalse +% +%\@caption{TYPE}[STEXT]{TEXT} +\def\@dblfloat{\wide@floattrue\@float} +\def\end@dblfloat{\if@twocolumn\egroup + \ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi + \ifnum \@floatpenalty =-\@Mii \@esphack\fi\else\end@float\fi + \wide@floatfalse} + +%this is to preserve the old tabular environment in case it is needed +\let \oldtabular \tabular +\let \endoldtabular \endtabular + +\def\tabular{\def\@halignto{to \textwidth}\tabskip=\tabcolsep plus 1fil\@tabular} +% This fixes tabular things so that they are full out l and r; the \tabskip setting +% is to put tabskip before the first column. +% The following is to adjust the intercolumn spacing to put in +% enough stretch. ggw +\def\@tabarray{\@ifnextchar[{\@tarray}{\@ttarray}} +\def\@tarray[#1]#2{\t@barray[#1]{@{\tabskip=2\tabcolsep plus 3pt} + #2}} +\def\@ttarray#1{\t@barray[c]{@{\tabskip=2\tabcolsep plus 3pt} + #1 }} +\def\t@barray[#1]#2{\setbox\@arstrutbox=\hbox{\vrule + height\arraystretch \ht\strutbox + depth\arraystretch \dp\strutbox + width\z@}\@mkpream{#2}\edef\@preamble{\halign \noexpand\@halignto +\bgroup \tabskip\z@ \@arstrut \@preamble \tabskip=\tabcolsep plus 1fil \cr}% +\let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup \let\par\relax + \let\@sharp##\let\protect\relax \lineskip\z@\baselineskip\z@\@preamble} + +% **************************************** +% * CUP specials * +% **************************************** +% +\def\ls{\kern.15em} % for letterspacing; .15em is a hair less than thinspace +\renewcommand{\thefootnote}{\mbox{$\fnsymbol{footnote}$}} +\def\sect#1{\hbox{\S\ls{#1}}} % for a section mark +\def\hline{\noalign{\ifnum0=`}\fi \vskip 6pt + \hrule \@height \arrayrulewidth \vskip 6pt + \futurelet \@tempa\@xhline} +\def\@xhline{\ifx\@tempa\hline \vskip -12pt + \vskip \doublerulesep \fi \ifnum0=`{\fi}} +\newenvironment{acknowledgments}{ + \par\addvspace{\halflineskip}\noindent\small\ignorespaces}{\par} +\def\discussion{\par\addvspace{22pt plus 1pt minus 1pt} + \centerline{{\it Discussion}} \vskip4pt} +\def\comment{\par\addvspace{12pt}\noindent\ignorespaces} +\def\received#1{\par\addvspace{\halflineskip}\centerline{\footnotesize\it #1}} +% **************************************** +% * MISCELLANEOUS * +% **************************************** +% +\def\today{\number\day\ \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 \ \year} + +% **************************************** +% * BIBLIOGRAPHY * +% **************************************** +% the immediately following code is taken from MSCS.sty, somewhat modified. +\def\@biblabel#1{#1} +\def\thebibliography#1{\par\section*{References} + \addcontentsline{toc}{section}{\hskip\@tempdima References} + \list{}{\labelwidth\z@ \leftmargin 1em \itemindent -1em \itemsep 1pt} + \small \parindent\z@ +%\parskip\z@ plus .1pt\relax + \parskip 1.5pt plus .1pt\relax + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist +% +% The following code is taken from authordate.sty, by David Rhead, of +% the Cripps Computing Centre (February 1990), with some modifications +% by ggw. It is intended for documents +% that use the author-date citation system. When used in conjunction with +% authordate1.bst, ... , authordate4.bst, it allows citations of the +% form \shortcite{bloggs-60} as well as the usual \cite{bloggs-60}. +% When +% ... \cite{bloggs-60} ... \shortcite{bloggs-60} ... +% appears in the input file, +% ... (Bloggs, 1960) ... (1960) ... +% appears in the final document. +% +% Code taken from apalike.sty. +% +\def\@cite#1#2{(#1\if@tempswa , #2\fi)} +\def\@biblabel#1{} + +% Set length of hanging indentation for bibliography entries +% +\newlength{\bibhang} +\setlength{\bibhang}{1em} + +% Define default title and page-head text. +% +\def\bibtitle{References} +\def\bibheadtitle{REFERENCES} + +% Code taken from aaai.sty. +% +% don't box citations, add space between multiple citations, separate with ; +\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}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +{\csname b@\@citeb\endcsname}}}{#1}} +% Allow short (name-less) citations, when used in +% conjunction with a bibliography style that creates labels like +% \citename{<names>, }<year> +\let\@internalcite\cite +\def\cite{\def\citename##1{##1}\@internalcite} +\def\shortcite{\def\citename##1{}\@internalcite} + +% **************************************** +% * INITIALIZATION * +% **************************************** +% +\ps@headings +\pagenumbering{arabic} +\onecolumn \let\onecolumn=\relax +\def\twocolumn{\typeout{Two column mode not available with RS style.}} +\flushbottom +\frenchspacing +\def\>{\kern .1em} +\def\bm #1{\mbox{\boldmath $#1$}} +\def\smfr #1#2{{\textstyle\frac{#1}{#2}}} +\def\shove{\hskip10000pt minus 1fil} +% +% ************************************* +% ********** AMS SYMBOLS ************ +% ************************************* +% +\font\tenmsx=msxm10 scaled \magstep1 +\font\sevenmsx=msxm8 +\font\fivemsx=msxm6 +\font\tenmsy=msym10 scaled \magstep1 +\font\sevenmsy=msym8 +\font\fivemsy=msym6 + +\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\lozenge="0\msx@06 +\mathchardef\blacklozenge="0\msx@07 +\mathchardef\boxminus="2\msx@0C +\mathchardef\geqslant="3\msx@3E +\mathchardef\leqslant="3\msx@36 +\mathchardef\vartriangleright="3\msx@42 +\mathchardef\vartriangleleft="3\msx@43 +\mathchardef\blacktriangledown="0\msx@48 +\mathchardef\blacktriangleright="3\msx@49 +\mathchardef\blacktriangleleft="3\msx@4A +\mathchardef\blacktriangle="0\msx@4E +\mathchardef\triangledown="0\msx@4F +\mathchardef\hslash="0\msy@7D +% +% Redefine two relation symbols \leq and \geq +% +\def\leq{\leqslant} +\def\geq{\geqslant} +% +% Newcommands defining shapes +% +\newcommand{\triright}{\vartriangleright} +\newcommand{\trileft}{\vartriangleleft} +\newcommand{\btridown}{\blacktriangledown} +\newcommand{\btriright}{\blacktriangleright} +\newcommand{\btrileft}{\blacktriangleleft} +\newcommand{\btriup}{\blacktriangle} +\newcommand{\triup}{\bigtriangleup} +\newcommand{\tridown}{\triangledown} +\newcommand{\bsquare}{\blacksquare} +\newcommand{\blozenge}{\blacklozenge} diff --git a/macros/latex209/contrib/misc/rssconf.sty b/macros/latex209/contrib/misc/rssconf.sty new file mode 100644 index 0000000000..cbf4c50db8 --- /dev/null +++ b/macros/latex209/contrib/misc/rssconf.sty @@ -0,0 +1,31 @@ +% -------------------------------------------------------------------------- +% R S S C O N F -- style option for RSS Conference proceedings +% -------------------------------------------------------------------------- +% Version 1.00--0 Adrian F Clark <alien@uk.ac.essex> 22-Jun-1993 +% -------------------------------------------------------------------------- + +\typeout{RSS Conference Proceedings style v1.00--0 22-Jun-1993} + + +% Page dimensions. + +\parindent 15pt % paragraph indent +\parskip 0pt plus 1pt minus 1pt % paragraph skip + +\textheight 252mm % height of text on a page +\textwidth 164mm % total width of a page +\oddsidemargin 5mm % shift the page rightwards +\evensidemargin 5mm % shift the page rightwards +\topmargin -7mm % shift the page upwards +\headheight 0pt % no running heads... +\headsep 0pt % ...so no separation from text +\marginparwidth 48pt % don't use marginal notes... +\marginparsep 10pt % ...in conference proceedings + + +\def\abstract{\section*{Abstract}} +\def\endabstract{\par} + +\pagestyle{empty} % no page numbers + +% End of rssconf.sty. diff --git a/macros/latex209/contrib/misc/sc21-wg1.sty b/macros/latex209/contrib/misc/sc21-wg1.sty new file mode 100644 index 0000000000..c52003945d --- /dev/null +++ b/macros/latex209/contrib/misc/sc21-wg1.sty @@ -0,0 +1,64 @@ +% ISO/TC97/SC21 DOCUMENT-STYPE OPTION - Wed May 20 17:07:56 BST 1987 +% +% derived from +% +% TITLEPAGE DOCUMENT-STYLE OPTION - released 27 January 1985 +% for LaTeX version 2.09 +% Copyright (C) 1985 by Leslie Lamport +% +% This style option produces a cover page appropriate for +% ISO/TC97/SC21 documents. +% +% In addition to the normal \title, \author (will give rise to the +% source of the document) and \date commands, three further values +% should be set. These are: +% +% \nnumber{NNN} +% The N Number of the document. Put something like \nnumber{\sl XXXX}, +% if you are not sure of the number. +% +% \project{Project Reference} +% The project reference for the document. For example, +% \project{97.21.23} or \project{97.21.9 Q45} +% +% \status{Document Status} +% For example \status{UK Position} or \status{UK Expert Contribution} + +\def\nnumber#1{\def\@nnumber{{#1}}} \nnumber{\em NNNN} +\def\project#1{\def\@project{{#1}}} \project{\em 97.21.NN} +\def\status#1{\def\@status{{#1}}} \status{\em status unset} + +\def\maketitle{\begin{titlepage} + \setcounter{page}{0} + \begin{flushright} + \shortstack[l]{ ISO/TC 97/SC 21 N {\LARGE \bf \@nnumber} \\ + {\sl Project: \@status} \\ + Date: \@date} + \end{flushright} + \vfil + \begin{center} + {\LARGE I S O } \\[3ex] + {\Large \sc International Organisation for Standardisation } \\[2ex] + {\Large \sc Organisation Internationale de Normalisation } \\[5ex] + \fbox{ + \shortstack{ + {\Huge ISO/TC 97/SC 21} \\[1ex] + {\Huge WG 1} \\[2ex] + {\LARGE OSI --- Architecture} + } + } + \end{center} + \vskip 70pt % To adjust centering. + \begin{Large} + \begin{description} + \item[TITLE:] \@title + \item[SOURCE:] \@author + \item[DATE:] \@date + \item[PROJECT:] \@project + \item[STATUS:] \@status + \end{description} + \end{Large} + \vfil +\null +\end{titlepage} +} diff --git a/macros/latex209/contrib/misc/sc21.sty b/macros/latex209/contrib/misc/sc21.sty new file mode 100644 index 0000000000..41f7206f1f --- /dev/null +++ b/macros/latex209/contrib/misc/sc21.sty @@ -0,0 +1,65 @@ +% ISO/TC97/SC21 DOCUMENT-STYPE OPTION - Wed May 20 17:07:56 BST 1987 +% +% derived from +% +% TITLEPAGE DOCUMENT-STYLE OPTION - released 27 January 1985 +% for LaTeX version 2.09 +% Copyright (C) 1985 by Leslie Lamport +% +% This style option produces a cover page appropriate for +% ISO/TC97/SC21 documents. +% +% In addition to the normal \title, \author (will give rise to the +% source of the document) and \date commands, three further values +% should be set. These are: +% +% \nnumber{NNN} +% The N Number of the document. Put something like \nnumber{\sl XXXX}, +% if you are not sure of the number. +% +% \project{Project Reference} +% The project reference for the document. For example, +% \project{97.21.23} or \project{97.21.9 Q45} +% +% \status{Document Status} +% For example \status{UK Position} or \status{UK Expert Contribution} + +\def\nnumber#1{\def\@nnumber{{#1}}} \nnumber{\em NNNN} +\def\project#1{\def\@project{{#1}}} \project{\em 97.21.NN} +\def\status#1{\def\@status{{#1}}} \status{\em status unset} + +\def\maketitle{\begin{titlepage} + \setcounter{page}{0} + \begin{flushright} + \shortstack[l]{ ISO/TC 97/SC 21 N {\bf \LARGE \@nnumber} \\ + {\sl Project: \@status} \\ + Date: \@date} + \end{flushright} + \vfil + \begin{center} + {\LARGE I S O } \\[3ex] + {\Large \sc International Organisation for Standardisation } \\[2ex] + {\Large \sc Organisation Internationale de Normalisation } \\[5ex] + \fbox{ + \shortstack{ + {\LARGE ISO/TC 97/SC 21} \\[2ex] + {\Large \sc Information Retrieval, Transfer } \\ + {\Large and Management for OSI } \\[2ex] + {\large Secretariat: USA (ANSI)} + } + } + \end{center} + \vskip 70pt % To adjust centering. + \begin{Large} + \begin{description} + \item[TITLE:] \@title + \item[SOURCE:] \@author + \item[DATE:] \@date + \item[PROJECT:] \@project + \item[STATUS:] \@status + \end{description} + \end{Large} + \vfil +\null +\end{titlepage} +} diff --git a/macros/latex209/contrib/misc/schedule.sty b/macros/latex209/contrib/misc/schedule.sty new file mode 100644 index 0000000000..63f14d0850 --- /dev/null +++ b/macros/latex209/contrib/misc/schedule.sty @@ -0,0 +1,484 @@ +%% File: schedule.doc +%% Author: Frank Pfenning (fp@cs.cmu.edu) +%% +%% Defines macros to draw a schedule. +%% +% +% The schedule file should have the following format +% (main style and other options depending on your use): +% +% \documentstyle[...,schedule,...]{...} +% +% \begin{document} +% ... +% +% \begin{schedule} +% \c d h:mm-h:mm event, more;[righttop][rightbot] +% ... +% \end{schedule} +% +% ... +% \end{document} +% +% where d is the day, one of M T W H F S U (upper case only!). +% h is the hour. Everything < 8 is assumed to be pm, but you +% maybe explicit and use the 24 hour clock. +% mm are the minutes. +% event is what will be put into the box for the specified +% time slot. \\ starts a new line. +% more (optional) is another line in the box for the event. +% It will be separated from the event by some extra space. +% righttop (optional) is text which is placed in the +% top right corner of the box (in small type). +% rightbot (optional) like righttop, put at the bottom +% right corner of the box. +% +% NOTES: - The spaces after the day and the time as well as the semi-colon +% at the end of the line (before optional arguments) are necessary! +% +% - Do not use footnotes in schedule items - they wont appear +% on the page. +% +% - For events without duration (beginning time = end time) the `room' +% entry will appear below the line, the `event' entry above the line. +% +% - For short events the type may be too large. Here you may leave out +% event and room and merely specify `[righttop]' and `[rightbot]', +% which will appear in small print. For example: +% \c T 3:30-3:45 ;[See Rick][Short Meeting] +% +% - The events do not need to appear in chronological order. This +% allows you to have a file with all regular events and include it in a +% schedule for a particular week with +% \input{filename} +% anywhere between \begin{schedule} and \end{schedule}. +% +% - Sometimes your will get spurious overfull \vbox or \hbox +% warning messages. The schedule will often look acceptable anyway. +% +% PostScript Notes (perhaps site dependent, works at CMU): +% - When using pslatex, you can shade the background of a class by +% using replacing \c by one of the following: +% \cw (white), \cL (very light gray), \cl (light gray), +% \cd (dark gray), \cD (very dark gray) +% \c is treated like \cl, but that can be changed through +% \def\backgrounddefault{<shade>}, where <shade> is one of +% \white, \Light, \light, \dark, \Dark. When the file is run through +% latex instead of pslatex, those shadings are ignored. +% - When there are overlapping classes, the one later in the input file +% will shadow the earlier one. When output is produced +% for non-PostScript devices, both will be visible. +% - When landscape format is desired (with or without the use of +% \landscape below), create the PostScript file from the dvi file with +% dvi-ps -o landscape file.dvi > file.ps +% +% The variables and their defaults are +% +% \schedunitlength 1.1pt - may be used to scale the schedule. +% \daywidth 80 - width of one day column in multiples of unitlength. +% \hourlength 60 - length of one hour in multiples of unitlength. +% \startday 8 - time in hours for schedule to begin. +% \endday 5 - time in hours for schedule to end. +% \firstday 0 - 0 for Monday through 6 for Sunday +% \lastday 4 - 0 for Monday through 6 for Sunday +% +% \preamble {} - arbitrary LaTeX-format text to precede the schedule. +% \schedtopsep 40 - distance between bottom of preamble and schedule box in +% multiples of unitlength. +% \postamble {} - arbitrary LaTeX-format text to follow the schedule. +% \schedbotsep 40 - distance between top of postamble and schedule box in +% multiple of unitlength. +% +% \landscape and \portrait (default) - sets the \daywidth and \hourlength. +% Defaults for portrait are \daywidth 80 and \hourlength 60, +% defaults for landscape are \daywidth 120 and \hourlength 40. +% +% \markhours and \nomarkhours (default) - forces a grid to be printed into +% the schedule which makes it easier to write in new events by hand. +% +% \showdates and \shownodates (default) - forces the dates of the week +% to be printed ant the bottom of the schedule. Set the date of +% Monday using \beginweek. +% \beginweek 0/1 - The date of the first day on the schedule (usually Monday) +% in the format month/day. For example: +% \beginweek 5/13 +% if the week on the schedule begins on May 13. This only has +% an effect if \showdates was set. +% \firstdate 0/1 - synonym for \beginweek +% +% \singlepagestyle (default inherited from the main document style): +% - use empty page style, no top margin. +% +% These variables may be set BEFORE the 'schedule' environment is entered. +% +% Known bugs: Some lines do not match up exactly, I suspect due to the fact +% that a framed box contains the frame on its outside. One +% has to come very close to see this, so I am not motivated +% to fix this. +% +% The \firstdate or \beginweek must appear before the +% \begin{schedule}. This is bothersome if one keeps updating +% the events, but not the variables from week to week. +% +% The postscript gray-level options have not been tested +% outside CMU. +% +% Two examples follow. +% +% ---- An individual weekly schedule ---- +% \documentstyle[12pt,fullpage,schedule]{article} +% \voffset -0.2in % may be useful if its a tight fit. +% \singlepagestyle +% +% \landscape % landscape for previewing. +% \thicklines +% \schedunitlength=1.1pt +% \startday 9 \endday 5 +% \markhours +% \preamble{\Large Schedule Spring '84} +% \postamble{\small No classes during fall break Nov 3 -- Nov 10} +% +% \begin{document} +% \begin{schedule} +% \c M 2:00-3:15 Applied Logic\\Seminar;[][SH 324] +% \c T 1:30-3:30 Discrete Math;[Statman][WeH 6121] +% \c T 3:30-5:00 TPS Meeting;[Andrews][TPS Group] +% \c W 2:00-3:15 Applied Logic\\Seminar;[][DH 2105] +% \c H 2:00-3:30 Logic Seminar;[][WeH 5427] +% \end{schedule} +% \end{document} +% +% ---- The schedule of a two-day workshop ---- +% \documentstyle[12pt,fullpage,schedule]{article} +% \singlepagestyle +% +% \hourlength=58 \daywidth=200 +% \thicklines +% \schedunitlength=1.1pt +% \startday 9 \endday 7 +% \firstday 4 \lastday 5 +% \preamble{\large Meeting on Metalanguage and Tools for Mechanizing Formal +% Deductive Theories} +% \showdates +% \firstdate 11/13 +% +% \begin{document} +% \begin{schedule} +% +% \c F 9:00-9:45 Using a Higher-Order\\Logic Programming Language\\ +% to Implement Program Transformations;[D. Miller][UPenn] +% \c F 9:45-10:30 Building Proof Systems in an Extended \\ +% Logic Programming Language;[A. Felty][Upenn] +% \cw F 10:30-10:45 Break;[][] +% \c F 10:45-12:15 The Categorical Abstract Machine\\ +% State of the Art;[P.-L. Curien][ENS] +% \cw F 12:15-1:15 Lunch;[][] +% \c F 1:15-1:45 A Very Brief Look at NuPRL;[J. Bates][CMU] +% \c F 1:45-2:15 Reasoning about Programs\\ +% that Construct Proofs;[R. Constable][Cornell] +% \cw F 2:15-2:30 Break;[][] +% \c F 2:30-3:15 Theorem Proving via Partial Reflection;[D. Howe][Cornell] +% \c F 3:15-3:45 MetaPrl: A Framework for\\Knowledge Based Media;[J. Bates][CMU] +% \cw F 3:45-4:00 Break;[][] +% \cd F 4:00-5:00 Discussion:\\The Role of Formal Reasoning\\in Software +% Development;[][] +% \cL F 5:00-6:30 Demos:\\ +% PRL (WeH 4114)\\ +% $\lambda$-Prolog (WeH 4623);[][] +% +% +% \c S 9:00-9:45 A Framework for Defining Logics;[R. Harper][Edinburgh] +% \c S 9:45-10:30 The Logician's Workbench\\ +% in the Ergo Support System;[F. Pfenning][CMU] +% \cw S 10:30-10:45 Break;[][] +% \c S 10:45-11:30 A Tactical Approach\\ +% to Algorithm Design;[D. Smith][Kestrel] +% \c S 11:30-12:15 Reusing Data Structure Designs;[A. Goldberg][Kestrel] +% \cw S 12:15-1:15 Lunch\\WeH 4605;[][] +% \c S 1:15-2:00 Paddle: Popart's Development Language;[D. Wile][USC/ISI] +% \c S 2:00-2:45 Mechanizing Construction and\\ +% Modification of Specifications;[M. Feather][USC/ISI] +% \cw S 2:45-3:00 Break;[][] +% \c S 3:00-3:45 The TPS Theorem Proving System;[P. Andrews][CMU] +% \c S 3:45-4:30 ONTIC: Knowledge Representation\\ +% for Mathematics;[D. McAllester][Cornell] +% \cL S 4:30-6:00 Demos\\ +% Popart (WeH 4114)\\ +% The LF Proof Editor (WeH 4623)\\ +% TPS (WeH 7211);[][] +% +% \put(0,-35){\makebox(\daywidth,20){Wherrett Room, Skibo}} +% \put(\daywidth,-35){\makebox(\daywidth,20){Wean Hall 7500}} +% +% \end{schedule} +% \end{document} +%====================================================================== +% +% Here the definitions begin. +% +% +% File: schedule.sty +% Author: Frank Pfenning (fp@cs.cmu.edu) +% +% Defines macros to draw a schedule. +% Documentation is in schedule.doc +% +% Use this as an option to another documentstyle. + +\def\singlepagestyle{\topmargin 0pt\pagestyle{empty}\thispagestyle{empty}} + + % The indented stuff following allows gray levels on postscript devices. + % It may only work at this installation (CMU). + % Is there a reliable way to tell whether the output device is + % postscript? + \newif\ifPS + \expandafter\ifx\csname PostScript\endcsname\relax + \PSfalse + \else + \PStrue + \fi + + \ifPS + \def\setgray #1{\special{"#1 setgray"}} + % Changes the gray level of the "pen" on the PostScript device + % #1 should be a number between 0 and + % 0 is black 1 is white + % NB Remember to reset the gray level to black. + \def\Dark{\def\backgroundgray{\setgray{0.8}}} + \def\dark{\def\backgroundgray{\setgray{0.9}}} + \def\light{\def\backgroundgray{\setgray{0.95}}} + \def\Light{\def\backgroundgray{\setgray{0.99}}} + \def\white{\def\backgroundgray{\setgray{1}}} + \else + \def\Dark{} \def\dark{} \def\light{} \def\Light{} \def\white{} + \fi + +\def\backgrounddefault{\light} + +\newdimen\schedunitlength \schedunitlength=1.1pt + +\newcount\hourlength +\newcount\daywidth +\def\portrait{\hourlength=60 \daywidth=80} +\def\landscape{\hourlength=40 \daywidth=120} +\portrait + +\newcount\startday \startday=8 +\newcount\endday \endday=5 + +\newcount\firstday \firstday=0 +\newcount\lastday \lastday=4 + +\newcount\schedtopsep \schedtopsep=40 +\newcount\schedbotsep \schedbotsep=40 + +\newcount\dday \dday=1 +\newcount\mmonth \mmonth=0 + +\newcount\ypos \newcount\xpos \newcount\ylength + +\newcount\tempa \newcount\tempb \newcount\tempc \newcount\tempd + +\newcount\schedtop + +\newcount\schedwidth \newcount\hschedwidth + +\newcount\firstdayoffset +\newcount\numdays + +\def\preamble#1{\gdef\preambletext{#1}} +\def\beginpreamble#1\endpreamble{\gdef\preambletext{#1}} + +\def\postamble#1{\gdef\postambletext{#1}} +\def\beginpostamble#1\endpostamble{\gdef\postambletext{#1}} + +\def\markhours{\gdef\hourlengthmarks{T}} +\def\nomarkhours{\gdef\hourlengthmarks{N}} + +\def\showdates{\gdef\showdatesflag{T}} +\def\shownodates{\gdef\showdatesflag{N}} + +\def\beginweek#1/{\mmonth #1\dday } +\def\firstdate{\beginweek} + +\preamble{} +\postamble{} +\nomarkhours +\shownodates + +\def\initdimen{\unitlength=\schedunitlength +\ypos=0 \xpos=0 +\ylength=0 \tempa=0 \tempb=0 \tempc=0 \tempd=0 +\ifnum \endday<8 \advance\endday by 12\fi +\ifnum \startday<8 \advance\startday by 12\fi +\schedtop=\endday \advance\schedtop by -\startday +\multiply\schedtop by\hourlength +\firstdayoffset=\firstday \multiply\firstdayoffset by\daywidth +\numdays=\lastday \advance\numdays by -\firstday +\schedwidth=\numdays \advance\schedwidth by 1 + \multiply\schedwidth by\daywidth +\hschedwidth=\schedwidth \divide\hschedwidth by 2 +} + +\def\class#1{\framebox(\daywidth,\ylength){\begin{tabular}{c} + \commaparse#1,,\end{tabular}}} + +\def\commaparse#1,{\@ifnextchar ,{#1\ignorechar}{#1\\[1.3em]\commaparse}} +\def\ignorechar#1{} + +\def\timeclass#1#2{\put(\xpos,\ypos){\timeboxbegin{#1}}% + \put(\xpos,\ypos){\timeboxend{#2}}} + +\def\grayput{% + \put(\xpos,\ypos){\backgroundgray + \rule{\daywidth\unitlength}{\ylength\unitlength}% + \black}} + +\def\classput#1;{% + \put(\xpos,\ypos){\class{#1}}% + \@ifnextchar [{\optone}{\relax}%] + } + +\def\optone[#1]{\put(\xpos,\ypos){\righttopbox{#1}}% + \@ifnextchar [{\opttwo}{\relax}%] + } + +\def\opttwo[#1]{\put(\xpos,\ypos){\rightbotbox{#1}}} + +\def\timeboxbegin#1{\makebox(\daywidth,\ylength)[tl]{% + \scriptsize{\raisebox{0em}[0.85em]{\scriptsize{\hskip 0.2em #1}}}}} + +\def\righttopbox#1{\makebox(\daywidth,\ylength)[tr]{% + \scriptsize{\raisebox{0em}[0.85em]{\scriptsize{#1\hskip 0.2em}}}}} + +\def\timeboxend#1{\makebox(\daywidth,\ylength)[bl]{% + \scriptsize{\raisebox{0.2em}{\scriptsize{\hskip 0.2em #1}}}}} + +\def\rightbotbox#1{\makebox(\daywidth,\ylength)[br]{% + \scriptsize{\raisebox{0.2em}{\scriptsize{#1\hskip 0.2em}}}}} + +\def\daywidthxpos#1{% + \advance \xpos by -\firstdayoffset + \if M#1\else \advance\xpos by\daywidth + \if T#1\else \advance\xpos by\daywidth + \if W#1\else \advance\xpos by\daywidth + \if H#1\else \advance\xpos by\daywidth + \if F#1\else \advance\xpos by\daywidth + \if S#1\else \advance\xpos by\daywidth + \if U#1\else \advance\xpos by\daywidth\fi\fi\fi\fi\fi\fi\fi} + +\def\cD{\Dark\cdefault} +\def\cd{\dark\cdefault} +\def\cl{\light\cdefault} +\def\cL{\Light\cdefault} +\def\cw{\white\cdefault} +\def\c{\backgrounddefault\cdefault} + +\def\cdefault#1 #2:#3-#4:#5 {% + %% First convert time to 24hour clock + \ypos=-#2 \ifnum \ypos>-8 \advance\ypos by -12\fi + \ylength=#4 \ifnum \ylength<8 \advance\ylength by 12\fi + %% Now calculate the length of the entry: hours + \advance\ylength by \ypos \multiply\ylength by\hourlength + %% Calculate the beginning of the entry in hours + \advance\ypos by\startday + \multiply\ypos by\hourlength + \advance\ypos by\schedtop + %% Add the minutes + \tempa=#3 \multiply\tempa by\hourlength \divide\tempa by 60 + \advance\ypos by -\tempa + %% Add minutes to length. + \tempa=#5 \advance\tempa by -#3 + \multiply\tempa by\hourlength \divide\tempa by 60 + \advance\ylength by\tempa + %% The lower left corner is at beginning of entry - length of entry + \advance\ypos by -\ylength + \xpos=0 \daywidthxpos{#1}% + \ifPS \grayput\fi + \timeclass{#2:#3}{#4:#5} + \classput} + + +\def\putday#1{\ifnum \firstday<\tempc \ifnum \tempc<\tempd + \put(\tempa,\schedtop){\makebox(\daywidth,20){#1}}% + \if T\showdatesflag + \put(\tempa,-20){\makebox(\daywidth,20){\the\mmonth/\the\dday}}% + \increaseday \fi + \advance\tempa by\daywidth \fi \fi + \advance\tempc by 1} + +\def\nextmonth{\advance\mmonth by 1\dday 1} + +\def\increaseday{\advance\dday by 1 + \ifnum \dday=29\ifnum \mmonth=2\nextmonth\fi\fi + \ifnum \dday=31\ifcase \mmonth \or \or \or \or \nextmonth + \or \or \nextmonth \or \or + \or \nextmonth \or \or \nextmonth + \or \fi\fi + \ifnum \dday=32\ifcase \mmonth \or \nextmonth \or \or \nextmonth + \or \or \nextmonth \or \or \nextmonth + \or \nextmonth \or \or \nextmonth + \or \or \mmonth 1\dday 1\fi\fi} + +\def\schedule{ + +\initdimen + +\begin{center} + +\begin{picture}(\schedwidth,\schedtop)(0,0) +\tempa=\schedtop \advance\tempa by\schedtopsep +\put(\hschedwidth,\tempa){\makebox(0,0)[b]{\preambletext}} +\put(0,0){\framebox(\schedwidth,\schedtop){}} + +%% One more time stamp than there are hours. +\tempa=\startday \advance\tempa by -1 + +\xpos=\startday \ypos=\schedtop +\loop \ifnum \xpos>12 \advance\xpos by -12\fi + \put(0,\ypos){\makebox(0,0)[r]{\the\xpos :00\hskip 1.7em}}% + \advance\ypos by -\hourlength \advance\tempa by 1 + \advance\xpos by 1 + \ifnum \tempa<\endday \repeat + +\tempa=\endday \advance\tempa by -\startday \advance\tempa by 1 +\multiput(0,\schedtop)(0,-\hourlength){\tempa}{% + \makebox(0,0)[r]{\vrule height 0.4pt width 1.5em}} + +\if T\hourlengthmarks + \multiput(\daywidth,\schedtop)(\daywidth,0){\numdays}{% + \makebox(0,0)[t]{\vrule height 0.3em width 0.4pt}} + \multiput(\daywidth,0)(\daywidth,0){\numdays}{% + \makebox(0,0)[b]{\vrule height 0.3em width 0.4pt}} + \advance\tempa by -2 + \tempd=\schedtop \advance\tempd by -\hourlength + \tempb=\daywidth \tempc=0 + \multiput(0,\tempd)(0,-\hourlength){\tempa}{% + \makebox(0,0)[l]{\vrule height 0.4pt width 0.3em}} + \loop \multiput(\tempb,\tempd)(0,-\hourlength){\tempa}{% + \makebox(0,0)[c]{\vrule height 0.2pt depth 0.2pt width 0.3em + \vrule height 0.3em depth 0.3em width 0.4pt + \vrule height 0.2pt depth 0.2pt width 0.3em}} + \advance\tempb by \daywidth + \advance\tempc by 1 + \ifnum \tempc<\numdays \repeat + \multiput(\tempb,\tempd)(0,-\hourlength){\tempa}{% + \makebox(0,0)[r]{\vrule height 0.4pt width 0.3em}} + \fi + +\tempa=0 \tempc=1 \tempd=\lastday \advance\tempd by 2 +\putday{Monday} +\putday{Tuesday} +\putday{Wednesday} +\putday{Thursday} +\putday{Friday} +\putday{Saturday} +\putday{Sunday} +\put(0,-\schedbotsep){\makebox(0,0)[tl]{\postambletext}} +} + +\def\endschedule{ +\end{picture} + +\end{center} +} diff --git a/macros/latex209/contrib/misc/screen.sty b/macros/latex209/contrib/misc/screen.sty new file mode 100644 index 0000000000..9190d64e27 --- /dev/null +++ b/macros/latex209/contrib/misc/screen.sty @@ -0,0 +1,32 @@ +% SCREEN.STY is used to create a LaTeX document suitable for SCREENVIEWing. + +\oddsidemargin=0pt % for 1in left margin (which SCREENVIEW removes!) +\evensidemargin=0pt % ditto +\textwidth=400pt % so SCREENVIEW output will fit within 80 columns + +% redefine all font sizes to be \normalsize +\def\tiny{\normalsize} +\def\scriptsize{\normalsize} +\def\footnotesize{\normalsize} +\def\small{\normalsize} +\def\large{\normalsize} +\def\Large{\normalsize} +\def\LARGE{\normalsize} +\def\huge{\normalsize} +\def\Huge{\normalsize} + +% redefine all font types to be \tt +\def\em{\tt} +\def\bf{\tt} +\def\it{\tt} +\def\sl{\tt} +\def\sf{\tt} +\def\sc{\tt} +\def\rm{\tt} + +% now typeset document using \tt and \raggedright +\tt +\raggedright + + + diff --git a/macros/latex209/contrib/misc/seceqn.sty b/macros/latex209/contrib/misc/seceqn.sty new file mode 100644 index 0000000000..bedb83d39f --- /dev/null +++ b/macros/latex209/contrib/misc/seceqn.sty @@ -0,0 +1,11 @@ +% Save file as: SECEQN.STY Source: FILESERV@SHSU.BITNET +% seceqn.sty +% +% Substyle file for use with "article" to cause equations to be numbered +% within sections. +% +% 13 Apr 89 Jerry Leichter (LEICHTER-JERRY@CS.YALE.EDU) +\typeout{Document Option `seceqn': 13 Apr 89} +\@addtoreset{equation}{section} %Make equation=0 when section steps +\def\theequation{\thesection.\arabic{equation}} + %How an equation number looks diff --git a/macros/latex209/contrib/misc/secret.sty b/macros/latex209/contrib/misc/secret.sty new file mode 100644 index 0000000000..65361e6d30 --- /dev/null +++ b/macros/latex209/contrib/misc/secret.sty @@ -0,0 +1,85 @@ +%Date: Fri, 24 Nov 89 13:44:13 EST +%From: Denys Duchier <duchier-denys@YALE.ARPA> +%Subject: Re: secret.sty? +%Keywords: LaTeX, secret.sty +% +%> Does anyone out there have an option file for report.sty (call +%> it secret.sty?) which does the following (for use in LaTeXing +%> classified reports): +%> +%> (1) all paragraphs must begin with a (U), (C), or (S) which +%> denotes unclassified, confidential, and secret, respectively. +%> +%> (2) if a paragraph continues on the next page, the (U), (C), +%> and (S) has to be inserted into the first line of the continuing +%> paragraph on the next page. +% +%I don't think requirement (2) can be satisfied as stated because when +%TeX exercises its page breaking algorithm, paragraphs have already +%been formatted and broken into individual lines, each one put in its +%own box and appended to the vertical list: you can't insert (S) at the +%top of the next page and have TeX reconsider line breaks. +% +%However, it is possible to come close: instead of putting the labels +%in the running text, we can let them hang out in the margin. The code +%below appears to work on the example I tried; put it in file +%secret.sty and use \documentstyle[secret]{article} or something like +%it at the top of your document. +% +%If you type \unclassified (resp. \confidential or \secret) the +%subsequent paragraphs will begin with (U) (resp. (C) or (S)) hanging +%out in the margin. \nosecret turns off this behaviour. You can also +%use them as environments. +% +%%--Denys +%Organization: Computer Science, Yale University, New Haven, CT 06520-2158 +%%% File: secret.sty + +\def\@markright#1#2#3#4{\gdef\@themark{{#1}{#4}{#3}}} +\def\@markextra#1#2#3#4{\gdef\@themark{{#1}{#2}{#4}}} +\def\@markboth#1#2#3#4#5{\gdef\@themark{{#4}{#5}{#3}}} + +\def\@leftmark#1#2#3{#1} +\def\@rightmark#1#2#3{#2} +\def\@extramark#1#2#3{#3} + +\def\markboth#1#2{{\let\protect\noexpand + \let\label\relax \let\index\relax + \expandafter\@markboth\@themark + {#1}{#2}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi} + +\def\markextra#1{{\let\protect\noexpand + \let\label\relax \let\index\relax + \expandafter\@markextra\@themark + {#1}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi} + +\def\extrabotmark{\expandafter\@extramark\botmark} +\def\extrafirstmark{\expandafter\@extramark\firstmark} + +\def\@themark{{}{}{}} + +\newdimen\@tempdimc + +\output{\@tempdimc = \dp255 + \ifnum\outputpenalty <-\@M\@specialoutput\else + \@makecol\@opcol\@floatplacement\@startcolumn + \@whilesw\if@fcolmade \fi{\@opcol\@startcolumn}\fi + \global\vsize\ifnum\outputpenalty >-\@Miv \@colroom + \else \maxdimen\fi + \edef\@tempa{\extrabotmark}\ifx\@tempa\empty\else + \llap{\@tempa\hskip\labelsep}\advance\@tempdimc + -\prevdepth \advance\@tempdimc -\baselineskip + \kern\@tempdimc\fi} + +\def\@secret#1{\everypar{\markextra{}\llap{#1\hskip\parindent\hskip\labelsep}\markextra{#1}}} + +\def\unclassified{\@secret{(U)}} +\def\confidential{\@secret{(C)}} +\def\secret{\@secret{(S)}} + +\def\nosecret{\markextra{}\everypar{}} + +\let\@extraenddocument\enddocument +\def\enddocument{\nosecret\@extraenddocument} + +%--Denys diff --git a/macros/latex209/contrib/misc/semitic.sty b/macros/latex209/contrib/misc/semitic.sty new file mode 100644 index 0000000000..eef6f2c527 --- /dev/null +++ b/macros/latex209/contrib/misc/semitic.sty @@ -0,0 +1,113 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%Cut with a sharp axe here%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This is a very simple LaTeX substyle to set Semitic languages. It is a very +% much a hacked HEBREW.TeX distributed with the Hebrew fonts. +% Graeme McKinstry, +% Computing Services Centre, +% University of Otago, +% Dunedin, +% New Zealand. +% E-mail: graeme%otago.ac.nz@relay.cs.net +% +% The fonts were designed by Jacques Goldberg: +% E-mail: phr00jg@technion.bitnet (watch for ZEROES in phr00jg) +% S-mail: Prof. Jacques Goldberg, Department of Physics +% TECHNION, 32000 Haifa, Israel. +% Emergency phone: (972)4-293663 +% +% WHAT IT DOES: +% * Reverses order of letters in words. +% * Reverses order of words on a line (sets right-to-left). +% +% Use it as follows: +% \documentstyle[semitic,...]{...} +% . +% . +% . +% Normal text here +% \begin{semitic} +% Hebrew text in `natural direction'. Type Hebrew paragraph as +% you would any `normal' paragraph in a LaTeX document. +% \end{semitic} +% More text ... +% . +% . +% . +% +% NOTES: +% * There is now no need to put only 1 hebrew word on a line. Treat the +% Hebrew text as `normal' text. +% * There can be no space between `\end' and `{semitic}' in +% `\end{semitic}' (similar to the verbatim environment). +% * To keep something together enclose it in braces, e.g., {text together} +% This will stop it being broken over a line but the contents +% will still be reversed. If more than 1 word then place a ~ between +% words to maintain space. +% * To keep something together and to STOP IT BEING REVERSED enclose it +% in 2 sets of braces, e.g., +% {{$\sin(\theta + \frac{\pi}{2}) = \cos \theta$}} +% * The text is processed in LR mode and then formed into lines. Anything +% that starts a new paragraph, e.g., displayed maths, will cause problems. +% This also mean that no blank lines can appear in the environment. +% * A new paragraph is started before and after the semitic environment. + +\font\ivrit=redis10 +\hyphenchar\ivrit=-1 +\font\hebbf=redisbx10 +\hyphenchar\hebbf=-1 +\font\hebsl=rediss10 +\hyphenchar\hebsl=-1 + +% The two lines below are taken from D. Knuth and P. MacKay +% TuGBoat vol.8,#1,page 14. +% Use \hebrew{hebrew~text} for short hebrew passages. +\gdef\hebrew#1\relax{{\ivrit\reflect#1\empty\tcelfer}} +\gdef\reflect#1#2\tcelfer{\ifx#1\empty\else\reflect#2\tcelfer#1\fi} + +\def\ivrconcat#1#2{#1 #2} + +\newbox\ivrbox % The Semitic box to test full line condition +\newbox\ivrstrbox % The box to hold the current Semitic string +\setbox\ivrbox=\hbox{} +\setbox\ivrstrbox=\hbox{} + +\def\@esemitic{\end{semitic}} % Used for checking end of environment + +\def\semitic{\par\ivrit\let\bf=\hebbf\let\sl=\hebsl + \parindent=0pt\@makesemiticline} +\def\endsemitic{\par} + +% \@makesemitic line reads in a word at a time (a word is taken as text +% terminated by 1 or more spaces). +% It will then take this word and reverse it (using \reflect) and add it +% to the FRONT of the line being made. If this word makes the line too +% long (> \linewidth) then the line is broken before this word and this +% word is added to the next line. + +\def\@makesemiticline#1 {\def\@word{#1}\relax + \ifx\@word\empty % removes CR + \let\next=\@makesemiticline + \else + \ifx\@esemitic\@word % i.e., read in \end{semitic} + \let\next=\@esemitic % will finish off semitic environment + \hbox to\hsize{\hfil \unhbox\ivrstrbox \unskip} + \else % semitic word + \ifdim\wd\ivrstrbox=0pt % i.e., contains nothing therefore + % at beginning of line + \setbox\ivrbox=\hbox{\reflect#1\empty\tcelfer} + \else % add reversed word to FRONT of line. + \setbox\ivrbox=\hbox{\ivrconcat{\reflect#1\empty\tcelfer + }{ \unhcopy\ivrstrbox}} + \fi + \let\next=\@makesemiticline % will loop around yet again + \ifdim \linewidth < \wd\ivrbox % line now too long + \hbox to\linewidth{\hss % remove \hss to justify + \unhcopy\ivrstrbox} + \setbox\ivrstrbox=\hbox{\reflect#1\empty\tcelfer} + \else % set store string to whole line + \setbox\ivrstrbox=\hbox{\unhcopy\ivrbox}\relax + \fi + \fi + \fi\next} +%%%%%%%%%%%%%%%%%%%%%%%%%%Cut with a sharp axe here%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + diff --git a/macros/latex209/contrib/misc/sentences.tex b/macros/latex209/contrib/misc/sentences.tex new file mode 100644 index 0000000000..c40b4d084d --- /dev/null +++ b/macros/latex209/contrib/misc/sentences.tex @@ -0,0 +1,133 @@ +% -*- Mode: TeX -*- + +\ifx\thisfileis\anUndefinedMacro\input maybeload \fi + +\thisfileis{<eb.tex.texlocal>sentences} % abort loading if we're already loaded + +\input redefine + +% A referenceable "sentences" list environment for Latex. Remember to +% put "{}" % after the \item command if the sentence begins with "[". +% There is also a "subsentences" environment. + +\makeatletter + +\newif\ifinsentences +\insentencesfalse + +\newcounter{sentence} +\newcounter{subsentence}[sentence] + +% These next definitions define the format of the "sentence" +% and "subsentence" counters. It is tricky to get them right. +% First of all, the parentheses in "(4)" and "(2iii)" are +% defined to be part of the printed representation of the +% "sentence" and "subsentence" counters. This is so that +% parentheses will be included in \ref - \label constructions. +% Second, the "subsentence" counter must print out with the +% "sentence" number included as well; this is similar to +% what happens with the section and chapter counters. +% Third, despite the second requirement, the "subsentence" +% counter must appear without the sentence number when it +% is actually used to number a subsentence. +% +% We use two auxiliary control sequences here and below in order +% to make it easier to change the subsentence numbering style. +% The two control sequences are \subsentencenumbering, which should +% be \let to something like \roman or \alph, and +% \subsentencepunctuation, which controls the format of subsentence +% numbers as they appear before the subsentences. + +\def\thesentence{(\arabic{sentence})} +\def\thesubsentence{(\arabic{sentence}\subsentencenumbering{subsentence})} + +% These next two definitions are defaults. + +\let\subsentencenumbering\roman +\def\subsentencepunctuation#1{(#1)} + +%%% Using \begin{list} and \end{list} in the argument of a +%%% \newenvironment command doesn't work properly; I have to call +%%% \list and \endlist directly. + +\newenvironment{sentences}{\list{\thesentence}% +{\edef\sent@nbr{\the\c@sentence}\usecounter{sentence}% +\setcounter{sentence}{\sent@nbr}% +\ifinsentences \errmessage{Nested sentences environment.} \fi +\def\makelabel##1{##1\hfil}% +\leftmargin\leftmargini\labelwidth\leftmargin + \advance\labelwidth-\labelsep +\insentencestrue}}{\endlist} + +\newenvironment{subsentences}{\list +{\subsentencepunctuation{\subsentencenumbering{subsentence}}}% +{\edef\sent@nbr{\the\c@subsentence}\usecounter{subsentence}% +\setcounter{subsentence}{\sent@nbr}% +\leftmargin\leftmargini\labelwidth\leftmargin + \advance\labelwidth-\labelsep +\def\makelabel##1{##1\hfil}% +\ifinsentences\relax\else + \errmessage{\string\begin{subsentences} not in sentences environment}\fi}}% +{\endlist} + +% These sentence-judgement macros are for use with the sentences +% environment; they back up over preceding space. They're designed +% for use just after an \item. + +\newcommand{\sentencejudgement}[1]{\strut\llap{#1\hskip 2pt}} +\newcommand{\bad}{\sentencejudgement{$\ast$}} +\newcommand{\quest}{\sentencejudgement{?}} +\newcommand{\qquest}{\sentencejudgement{?\kern -0.5pt?}} + +% An abbreviation. + +\newcommand{\sentence}[1]{\begin{sentences}\item{#1}\end{sentences}} + +% Local references. +% +% \nextsentence the next sentence +% \nextsentence[2] the sentence after the next sentence +% \nextsentencesub{1} the first subsentence of the next sentence +% \nextsentencesub[2]{1} the first subsentence of the sentence after +% the next sentence +% + +\newdef\nextsentence{\@ifnextchar[{\@argnextsentence}{\@argnextsentence[1]}%] +} + +\newdef\@argnextsentence[#1]{\bgroup + \advance\c@sentence by #1\relax + \thesentence + \egroup} + +\newdef\nextsentencesub{\@ifnextchar[{\@argnextsentencesub + }{\@argnextsentencesub[1]}%] +} + +\newdef\@argnextsentencesub[#1]#2{\bgroup + \advance\c@sentence by #1\relax + \c@subsentence=#2\relax + \thesubsentence + \egroup} + +% Define labeled brackets. Write ``[\ntype:NP foo bar ...'' to get an +% NP bracket. \ctype is acceptable as an abbreviation. + +\newdef\ntype:#1 {{$_{\mbox{\tiny #1}}$} } +\newlet\ctype=\ntype % synonmym + +% Common symbols with bars over them. + +\newcommand{\Bar}[1]{\ifmmode \overline{\mbox{#1}}\else $\Bar{#1}$\fi} +\newcommand{\Sbar}{\Bar S} +\newcommand{\Nbar}{\Bar N} +\newcommand{\Abar}{\Bar A} +\newcommand{\Xbar}{\Bar X} +\newcommand{\Twobar}[1]{\Bar{\Bar{#1}}} + +\newcommand{\thetabar}{\overline\theta} + +% More common symbols. + +\newcommand{\wh}{{\it wh}} + diff --git a/macros/latex209/contrib/misc/set_sp.sty b/macros/latex209/contrib/misc/set_sp.sty new file mode 100644 index 0000000000..99d120bcd5 --- /dev/null +++ b/macros/latex209/contrib/misc/set_sp.sty @@ -0,0 +1,253 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Geoffrey R. D. Tobin", +%%% version = "1.0", +%%% date = "23 Jan 1992", +%%% time = "15:56:00 AEDT (06:56:00 GMT)", +%%% filename = "set_sp.sty", +%%% address = "Department of Electronic Engineering +%%% La Trobe University +%%% Bundoora VIC 3083 +%%% Australia", +%%% telephone = "+ 613 479-1180", +%%% checksum = "06002 253 1152 10466" +%%% email = "ecsgrt@luxor.latrobe.edu.au (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, linespacing, NFSS", +%%% supported = "yes, by email", +%%% 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. This +%%% program, as well as Nelson Beebe's proposal +%%% for standard file headers, is available via +%%% anonymous ftp from math.utah.edu.", +%%% } +%%% ==================================================================== +% set_sp.sty - version 1 - 15:56 - Thu 23 Jan 1992 - Geoffrey Tobin +% `merge' of ideas of setspace.sty and of dblsp.sty mods by Mark A. Roth. +% +%% FILE: setspace.sty in SYS2.TEX.PUB.ISULATEX.STYLES +%% AUTHOR: Erica M. S. Harris +%% DATE: April 1990 +%% DESCR: LaTeX Document style option "setspace" +%% Usage: \documentstyle[...,setspace,...]{...} +%% Based on the doublespace option created by Stephen Page. +%% +%% This style option provides commands and environments for doing +%% double and one-and-a-half spacing based on pt size. +%% +%% Single spacing is the default. +%% +%% Three commands, \doublespacing, \onehalfspacing, and +%% \singlespacing, are for use in the preamble to set the overall +%% spacing for the document. If a different spacing is required then +%% the \setstretch{baselinestretch} command can be used in the +%% preamble to set the baselinestretch appropriately. The default +%% spacing with this style option is single spacing. +%% +%% Three environments, singlespace, onehalfspace, and doublespace, +%% allow the spacing to be changed within the document. Both the +%% onehalfspace and doublespace environments are intended to increase +%% the spacing, so the onehalfspace environment should not be used in +%% a double spaced document. If an increased spacing different from +%% one-and-a-half or double spacing is required then the spacing +%% environment can be used. The spacing environment takes one +%% argument which is the larger baselinestretch to use, +%% e.g., \begin{spacing}{2.5}. +%% +%% \footins is adjusted the same as \parskip - appears to work. Lose +%% stretch parts but don't consider that to be crucial +%% +%% Removed code for altering spacing before and after displayed +%% equations - just looked too much. +%% +%% MODS: +%% +%% PLEASE REPORT ANY BUGS +%% +%% Old Documentation 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 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. +%% +% Modified by: Mark A. Roth, mroth@afit.af.mil +%% +%% mods: Jean-Francois Lamy +%% lamy@ai.toronto.edu +%% lamy@utai.uucp +% +% Author: Stephen Page -- sdpage@prg.oxford.ac.uk +% +% Original ``doublespace.sty'' released 6 July 1986 - 3 September 1986 +%% +%% POSSIBLE BUGS: +%% . 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). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\doublespacing{\ifcase \@ptsize \relax % 10pt + \def\baselinestretch{1.667} + \or % 11pt + \def\baselinestretch{1.618} + \or % 12pt + \def\baselinestretch{1.655} + \fi} % EMSH + +\def\onehalfspacing{\ifcase \@ptsize \relax % 10pt + \def\baselinestretch{1.25} + \or % 11pt + \def\baselinestretch{1.213} + \or % 12pt + \def\baselinestretch{1.241} + \fi} % EMSH + +\def\singlespacing{\def\baselinestretch{1}} % EMSH + +\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 \let\@currsize#1 % + \baselineskip #2 % + \baselineskip\baselinestretch\baselineskip + \parskip\baselinestretch\parskip + \setbox\strutbox\hbox{\vrule height.7\baselineskip + depth.3\baselineskip width\z@}% + \skip\footins \baselinestretch\skip\footins % EMSH + \normalbaselineskip\baselineskip#3#4} +\else %new font selection scheme is defined, set up way to change baselines-MAR +\def\@newbaseline{ \setnew@baselineskip + \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. +%\skip\footins 20pt plus4pt minus4pt % commented out by EMSH. + +%---Reset baselinestretch within footnotes and floats. + +\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 + \@normalsize % EMSH mod from "\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}}} + +% A single spaced quote (say) is done by surrounding singlespace with quote. +% +\def\singlespace{% +\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% % EMSH omitted this, so I've commented it out - gt. +\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 % MAR removed `}'. + \else %else new font selection scheme is invoked-MAR + \@newbaseline %include new baselinestretch-MAR + \fi %-MAR +} % MAR moved `}' hither. + +\def\endspacing{\par% + \vskip \parskip% + \vskip \baselineskip% + \endgroup% + \vskip -\parskip% + \vskip -\baselineskip% +% \begingroup %\begingroup used to be here, PGBR 1-29-91 + } + +% one and a half spacing is 1.5 x pt size +\def\onehalfspace{\ifcase \@ptsize \relax % 10pt + \spacing{1.25} + \or % 11pt + \spacing{1.213} + \or % 12pt + \spacing{1.241} + \fi} +\let\endonehalfspace=\endspacing + +% double spacing is 2 x pt size +\def\doublespace{\ifcase \@ptsize \relax % 10pt + \spacing{1.667} + \or % 11pt + \spacing{1.618} + \or % 12pt + \spacing{1.655} + \fi} +\let\enddoublespace=\endspacing %first end independently added by MAR & EMSH. + +% gt - EMSH chose to omit display math part that follows. +% She wrote (see above) that the "altered spacing before and after displayed +% equations ... just looked too much". +% +% 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} +% +% end "set_sp.sty" +%%% ==================================================================== diff --git a/macros/latex209/contrib/misc/settosize.sty b/macros/latex209/contrib/misc/settosize.sty new file mode 100644 index 0000000000..66267c6c0e --- /dev/null +++ b/macros/latex209/contrib/misc/settosize.sty @@ -0,0 +1,50 @@ +%%% The user needs to be able to specify the width for text, and +%%% use the largest point size necessary to fill that width. +%%% +%%% After macros by Phil Taylor January 1993; +%%% converted to LaTeX style file (needs NFSS) and changed syntax +%%% by Sebastian Rahtz, February 1993. + +%%% \Fontname: like \fontname, but voids any size specifier +%%% Usage: \Fontname \font {} %%% don't omit {} !!! + +\edef \Fontname + {\noexpand \expandafter \noexpand \stripsize \noexpand \fontname \space} +\def \stripsize #1 #2#{#1} + +\newcount \pts@f@r +\newdimen \set@width + +\def\massage@fontname#1 #2:{\def\curr@fontname{#1}} + +\def \scaletowidth#1#2{% + \set@width #1 + \edef\f@name{\fontname\font\space:}% + \expandafter\massage@fontname\f@name + \pts@f@r \f@size + \setbox 0 = \hbox{#2}% + \ifdim \wd 0 < \set@width + \def\@increment{1}% + \def\@test{<}% + \else + \def\@increment{-1}% + \def\@test{>}% + \fi + \loop + \font\temp@font=\curr@fontname\space at \the\pts@f@r pt + \setbox 0 = \hbox{{\temp@font #2}}% + \message {\curr@fontname->\the \pts@f@r...}% + \ifdim \wd 0 \@test \set@width + \advance \pts@f@r by \@increment + \repeat + \advance \pts@f@r by -\@increment + \message {The calculated font size is \the \pts@f@r pt}% + \font\temp@font=\curr@fontname\space at \the\pts@f@r pt + \hbox to \set@width {\hss{\temp@font #2}\hss}% + } +\endinput + + +Example: + +\scaletowidth{50cm}{Now is the time for the Party} diff --git a/macros/latex209/contrib/misc/sfwmac.sty b/macros/latex209/contrib/misc/sfwmac.sty new file mode 100644 index 0000000000..3b75864e59 --- /dev/null +++ b/macros/latex209/contrib/misc/sfwmac.sty @@ -0,0 +1,60 @@ +% LaTeX support for writing UNIX-style documentation + + +% UNIX-style references + +\def\sfwFILfont{\sl} + +\def\@egaux#1#2#3{% + \def#1##1{% + #2\begingroup \tt \let\do=\@makeother \dospecials + \def\@tempa####1##1{####1\endgroup#3}\@tempa + }% +} + +\def\pgm#1{\mbox{\it#1}\index{#1}} % programs +\def\xpgm#1#2{\mbox{\it#1}\index{\noexpand\noexpand\noexpand#2{}}} +\def\man#1(#2){\xpgm{#1\/}{#1}(#2)} % manual entries +\@egaux\arg{`{}}{'{}} % arguments to programs +\@egaux\switch{`{}-}{'{}} % switches to programs +\def\file#1{\mbox{\sfwFILfont#1}} % filename + + +% Commonly used software systems + +\def\sfwPGMfont{\tt} + +\def\@sfwdef#1#2{\@sfwaux{#1/}{#2}} +\def\@sfwaux#1#2{\def#1{\mbox{#2}\index{\noexpand\noexpand\noexpand#1{}}}} + +\@sfwdef\EMACS{\sfwPGMfont EMACS} +\@sfwdef\INFO{\sfwPGMfont INFO} +\@sfwdef\MLisp{\sfwPGMfont MLisp} + +\@sfwdef\SendMail{\sfwPGMfont SendMail} +\@sfwdef\UUCP{\sfwPGMfont UUCP} + +\def\AmS{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em$\cal S$} +\@sfwaux\AmSTeX{\rm \AmS-\TeX} + +\@sfwaux\PhDTeX{\rm P\kern-.05em{\sc h\kern-.025em D}\kern-0.08em\TeX} + +\@sfwaux\LaTeX{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em\TeX} +\@sfwaux\BibTeX{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX} +\@sfwaux\SLiTeX{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em\TeX} +\@sfwaux\BibTeX{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX} + +\@sfwdef\WEB{\sfwPGMfont WEB} + +\@sfwdef\Prolog{\sfwPGMfont Prolog} +\@sfwdef\Lisp{\sfwPGMfont Lisp} + +\@sfwdef\DBUG{\sfwPGMfont DBUG} + +\@sfwdef\troff{\sfwPGMfont troff} +\@sfwdef\nroff{\sfwPGMfont nroff} +\@sfwdef\Miranda{\sfwPGMfont Miranda} +\@sfwdef\AiM{\sfwPGMfont AiM} +\@sfwdef\ASN{\sfwPGMfont ASN.1} +\@sfwdef\ISODE{\sfwPGMfont ISODE} + diff --git a/macros/latex209/contrib/misc/shsulet.sty b/macros/latex209/contrib/misc/shsulet.sty new file mode 100644 index 0000000000..30db8d9b7f --- /dev/null +++ b/macros/latex209/contrib/misc/shsulet.sty @@ -0,0 +1,394 @@ +% Save file as: SHSULET.STY Source: FILESERV@SHSU.BITNET +% SHSULET.STY Document Style -- with liberal extractions from +% Leslie Lamport's ARTICLE.STY +\typeout{Document Style 'shsulet'. Released August 10, 1989} +\typeout{Letterhead design -- Sam Houston State University} +\typeout{} +% Letterhead style file for use in LaTeX. Default institution is Sam Houston +% State University. Copyright, 1989, George D. Greenwade +% Author: George D. Greenwade, Director, Center for Business and Economic +% Research, Sam Houston State Univeristy, Huntsville, TX 77341-2056 +% Voice: (409) 294-1518 BITNET: BED_GDG@SHSU +% Original Release: August 10, 1989 (GDG) +% Modification History: August 14, 1989 \memo option added (GDG) +% +% This style is provided for public domain use. The author provides no +% warranty, express or implied, regarding the fitness of this code for any +% specific use, nor for any loss associated with its use. Any comments or +% suggestions regarding enhancement of this style will be welcomed by the +% author. NOTE: THIS IS A MAIN STYLE FILE AND IS NOT DESIGNED TO BE USED +% AS A SUB-STYLE OF ANY EXISTING LaTeX STYLE FILES. +% +% Usage (example): +% \documentstyle{shsulet} +% \sender{George D. Greenwade} +% \title{Ph.D., Director} +% \dept{Center for Business and Economic Research} +% \deptaddress{P. O. Box 2056\\ +% Huntsville, TX 77341-2056 \hfill Bitnet: bed\_gdg@shsu} +% \deptphone{(409) 294-1518} +% \toname{Dr. Martin J. Anisman} +% \toaddress{Office of the President\\ +% Sam Houston State University \\ +% Huntsville, TX 77341-2001} +% \prepare{GDG:ltx} +% \cc{Leslie Lamport \\ Donald E. Knuth} +% \re{Letterhead style file in \LaTeX} +% \attach{1}{Commands for use in {\tt shsulet.sty}} +% \encl{2}{{\sl The \TeX book}\\ +% {\sl \LaTeX\ A Document Preparation System}} +% \letterhead +% +% Text of the letter. Paragraphs are block style and a proper skip is provided +% so that \verb+\\+ characters are not needed. +% +% \closing +% +% Alternatively, if a memo on letterhead is desired, replace the command +% \letterhead with the command \memo. This creates a memo-style document. + +% The code for shsulet + +\def\@ptsize{1} % This style uses a basic article layout +\@options % in 11 point (hardcoded), which accepts sub-style +\input art11.sty \relax % arguments (useful for personal styles to define + % many standard definitions for a user). + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Standard article definitions % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\labelenumi{\arabic{enumi}.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\alph{enumii})} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\roman{enumiii}.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\Alph{enumiv}.} +\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}} + +\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\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 \unhbox\@tempboxa\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\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} + +%%%%%%%%%%%%%%%%%%%%%%%%%% +% SHSULET Style specific % +%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Page layouts +\textwidth 6.5in +\textheight 8.8in +\topmargin .15in +\topsep .4em +\oddsidemargin 0in +\headheight 9pt +\headsep 12pt +\parskip .7em +\parindent 0pt +\partopsep 0pt +\itemsep .4em +\raggedbottom + +% Penalties +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\brokenpenalty=10000 % No broken words across columns/pages +\widowpenalty=10000 % No widows at bottom of page +\clubpenalty=10000 % No orphans at top of page +\widowpenalty=10000 % No widows at bottom of page +\clubpenalty=10000 % No orphans at top of page + +\newdimen\headlinenames +\headlinenames=\textwidth \advance \headlinenames-5mm + +% Information to be included -- +% Legend for notes: f.p.=for personalization, f.l.=for letterhead, +% f.t.=for text, f.c.=for closing +\def\instname#1{\gdef\@instname{#1}} % Institution name (f.l.) + \gdef\@instname{Sam Houston State University} + %--Default institution SHSU +\def\sender#1{\def\sender{#1}\gdef\@sender{#1}} + % Sender's name (f.p.) + \gdef\@sender{} +\def\title#1{\gdef\@title{, #1}} % Sender's title (f.p.) + \gdef\@title{} %--Default title empty +\def\dept#1{\edef\dept{#1}} % Sender's department (f.l.) +\def\deptphone#1{\edef\deptphone{#1}} % Sender's phone (f.l.) +\def\deptaddress#1{\def\deptaddress{#1}} % Sender's address (f.l.) +\def\toname#1{\gdef\@toname{To: #1} \def\toname{#1}} + % Recipient's name (f.t.) + \gdef\@toname{} %--Default recipient empty +\def\toaddress#1{\gdef\@toaddress{#1} \def\toaddress{#1}} + % Recipients address (f.t.) + \gdef\@toaddress{} %--Default address empty +\def\closingtext#1{\gdef\@closingtext{#1}} % Closing phrase (f.t.) + \gdef\@closingtext{Sincerely,} %--Default closing is Sincerely, +\def\date#1{\gdef\@date{#1}} % Date of letter (f.t.) + \gdef\@date{\today} %--Default date is \today +\def\nodate{\gdef\@date{ }} % Don't date letter +\def\re#1{\gdef\@re{\vspace*{.1in}\ \\ +RE: #1 }\gdef\topic{#1}} % Subject of letter (f.t.) + \gdef\@re{} \gdef\topic{} %--Default subject is empty +\def\signature#1{\gdef\@signature{#1}} % Sender's signature (f.c.) + \gdef\@signature{\sender} %--Default signature is \sender +\def\runhead#1{\gdef\@runhead{#1}} % User specified left heading + \gdef\@runhead{} %--No specialized heading +\def\downshift#1{\gdef\@downshift{#1}} + \gdef\@downshift{0} + +\def\headertext{\ifx\@empty \@toname \let\@toname\@runhead \fi +\ifx\@empty \@toname {\@date} \else +{\ignorespaces\@toname \hfil \@date } \fi} + +\def\personalline{\ifx\@empty\@sender {} \else +{\vspace*{1mm} \ \\ +\hspace*{-12mm} {\sf \sender\@title} \\ } \fi} % \vspace*{.1in}\ \\ + +\def\prepare#1{\gdef\@prepare{\ \\ #1\ \\}} +\gdef\@prepare{} + +\def\cc#1{\gdef\@cc{cc: \begin{tabular}[t]{l} +#1 \\ +\end{tabular}\ \\}} +\gdef\@cc{} + +\def\attach#1#2{\def\attcount{#1} \def\attlist{#2} \gdef\@attach{\ \\ +Attached \ifx\@empty \attcount {} %#1 {} +\else {(#1)} +\fi +\ifx\@empty #2 {} +\else +{\begin{tabular}[t]{l} +#2 \\ +\end{tabular}\ \\} +\fi +}} +\gdef\@attach{} + +\def\encl#1#2{\def\enccount{#1} \def\enclist{#2} \gdef\@encl{\ \\ +Enclosed \ifx\@empty \enccount {} %#1 {} +\else {(#1)} +\fi +\ifx\@empty #2 {} +\else +{\begin{tabular}[t]{l} +#2 \\ +\end{tabular}\ \\} +\fi +}} +\gdef\@encl{} + +\def\ps@headings{\def\@oddhead{\sl \headertext +\hfil Page \thepage}\def\@oddfoot{}} + +\def\ps@empty{\def\@oddhead{}\def\@oddfoot{}\def\@evenhead{}\def\@evenfoot{}} + +\pagestyle{headings} +\thispagestyle{empty} +\pagenumbering{arabic} + +\def\letterhead{\begin{document} +\vspace*{-.8in} +\begin{center} +{\Huge\bf \@instname}\\ +\end{center} +{\large \sc +\begin{tabular}[t]{p{\headlinenames}} +\dept \hfill \deptphone \\ +\deptaddress \\ +\end{tabular}}\newline +\rule[.7ex]{6.5in}{.4mm}\\ +\ifx\@empty \personalline \vspace*{-.5in}\\ + \else +\personalline \\ +\fi +\rule{0pt}{\@downshift in}\\ +\@date\\ +\ifx\@empty \@toname {} \else +{\vspace*{.1in}\ \\ +\hspace*{-2mm}\begin{tabular}{l} +\toname \\ \end{tabular}\ \\ }\fi +\ifx\@empty \@toaddress {} \else +{\hspace*{-2mm}\begin{tabular}{l} +\toaddress \\ +\end{tabular}\ \\} \fi +\@re +} + +\def\memo{\begin{document} +\vspace*{-.8in} +\begin{center} +{\Huge\bf \@instname}\\ +\end{center} +{\large \sc +\begin{tabular}[t]{p{\headlinenames}} +\dept \hfill \deptphone \\ +\deptaddress \\ +\end{tabular}}\newline +\rule[.7ex]{6.5in}{.4mm}\\ +\ifx\@empty \personalline \vspace*{-.5in}\\ + \else +\personalline +\fi +\vspace*{-3mm} +\begin{center} +{\large\bf MEMORANDUM} +\end{center} +{%\vspace*{.1in}\ \\ +\hspace*{-2mm}\begin{tabular}{ll} +To: & \toname \\ %\\ +From: \rule{0pt}{5mm} & \@signature \\ %\\ +Date: \rule{0pt}{5mm} & \@date \\ +%@re +RE: \rule{0pt}{5mm} & \topic \\ +\end{tabular}\ \\ } +\closingtext{} +\signature{\vspace*{-.8in}} +} + +\def\closing{\vspace*{\parskip} +\begin{minipage}{6in} +\@closingtext\ \\ +\vspace*{.4in} \ \\ +\@signature\ \\ +\ifx\@empty \@prepare {} \else +{\@prepare} \fi +\ifx\@empty \@cc {} \else +{\@cc} \fi +\ifx\@empty \@attach {} \else +{\@attach} \fi +\ifx\@empty \@encl {} \else +{\@encl} \fi +\end{minipage} +\end{document} +} + +\def\letterheadcopy{\begin{document} +\vspace*{-.8in} +\begin{center} +{\Huge\bf \@instname}\\ +\end{center} +{\large \sc +\begin{tabular}[t]{p{\headlinenames}} +\dept \hfill \deptphone \\ +\deptaddress \\ +\end{tabular}}\newline +\rule[.7ex]{6.5in}{.4mm}\\ +\ifx\@empty \personalline \vspace*{-.5in}\\ + \else +\personalline \\ +\fi +\rule{0pt}{\@downshift in}\\ +\@date \rule{4in}{0pt}{\huge\bf COPY}\\ +\ifx\@empty \@toname {} \else +{\vspace*{.1in}\ \\ +\hspace*{-2mm}\begin{tabular}{l} +\toname \\ \end{tabular}\ \\ }\fi +\ifx\@empty \@toaddress {} \else +{\hspace*{-2mm}\begin{tabular}{l} +\toaddress \\ +\end{tabular}\ \\} \fi +\@re +} + diff --git a/macros/latex209/contrib/misc/side.sty b/macros/latex209/contrib/misc/side.sty new file mode 100644 index 0000000000..778569fbe1 --- /dev/null +++ b/macros/latex209/contrib/misc/side.sty @@ -0,0 +1,74 @@ +%% Save file as: SIDE.STY Source: FILESERV@SHSU.BITNET +%+ +% Name: +% side.sty +% Purpose: +% Include sideways (landscape) tables and figures in LaTeX documents +% by defining new environments called sidetable and sidefigure. +% Three options are available for placement along the width of the +% printed page: +% flush top [t] +% centered (default) [c] +% flush bottom [b] +% Standard LaTeX behavior (flush left) is preserved in the other +% direction. +% Usage: +% \documentstyle[side,...]{...} +% +% \begin{sidetable} +% \caption{\label{mysidetable} A landscape floating table on a page.} +% \begin{center} +% \begin{tabular}{|l|c|} +% \hline +% Column1&Column2\\ +% Line1&\\ +% &Line2\\ +% \hline +% \end{tabular} +% \end{center} +% \end{sidetable} +% +% \begin{sidefigure} +% \hbox to \textheight{\hss \fbox{CENTERED FIGURE}\hss} +% \caption{\label{mysidefigure} A landscape floating figure on a page.} +% \end{sidefigure} +% Restrictions: +% Works only with PostScript. +% Requires rotate.tex (part of dvips distribution) +% Modification History: +% write, 17 Oct 91, F.K.Knight and M.F.Ryba, MIT Lincoln Laboratory +% add placement options, 3 Dec 91, FKK +%- +% +% =====>> Both environments use rotate.tex +% +\ifx\undefined\rotl\input{rotate}\fi +\newbox\rotbox + +% from psfig +\edef\sideRestoreAt{\catcode`@=\number\catcode`@\relax} +\catcode`\@=11\relax +% +% =====>> Sidetable: a rotated table environment. +% =====>> Since \newenvironment can't take definition with optional args, +% =====>> mimic code for \parbox in latex.tex. +% +\def\sidetable{\@ifnextchar [{\@sidetable}{\@sidetable[c]}} +\long\def\@sidetable[#1]{\begin{table}[p]% + \setbox\rotbox\vbox to \textwidth\bgroup\hsize=\textheight + \if #1t\else\vss\fi + \if #1b\edef\@sideend{}\else\edef\@sideend{\vss}\fi} +\long\def\endsidetable{\@sideend\egroup \rotl\rotbox\end{table}} +% +% =====>> Sidefigure: a rotated figure environment, +% +\def\sidefigure{\@ifnextchar [{\@sidefigure}{\@sidefigure[c]}} +\long\def\@sidefigure[#1]{\begin{figure}[p]% + \setbox\rotbox\vbox to \textwidth\bgroup\hsize=\textheight + \if #1t\else\vss\fi + \if #1b\edef\@sideend{}\else\edef\@sideend{\vss}\fi} +\long\def\endsidefigure{\@sideend\egroup \rotl\rotbox\end{figure}} +% +% =====>> FINISH +% +\sideRestoreAt diff --git a/macros/latex209/contrib/misc/sines.tex b/macros/latex209/contrib/misc/sines.tex new file mode 100644 index 0000000000..4d5cbc4daf --- /dev/null +++ b/macros/latex209/contrib/misc/sines.tex @@ -0,0 +1,47 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% macros to calculate sines from 90 to -90 +% Jim Walker, Dept Mathematics, University of South Carolina +\newdimen\x +\newdimen\y +\newdimen\xsquare +\newdimen\xfourth +{% change char codes + \catcode`\p=12 + \catcode`\t=12 + \gdef\numonly#1pt{% + \def\xx{#1}% + }% +}% +\def\MULTyBYx{% + \expandafter\numonly\the\x + \edef\b{\y=\xx\y}% + \b +}% +\def\calcsin{% Find sin(\x) and put it in \y. Say \x is in degrees. + \x=0.0174533\x % Convert to radians. + \y=\x + \MULTyBYx + \xsquare=\y + \MULTyBYx + \MULTyBYx + \xfourth=\y + \y=1pt + \advance\y by -0.1666666\xsquare + \advance\y by 0.008333333\xfourth + \MULTyBYx +}% +% Example of use: +%\x=23pt \calcsin \expandafter\numonly\the\y +% Now \xx should contain the sine of 23 degrees. +%\def\sine#1{\x=#1 \calcsin \expandafter\numonly\the\y \message{sine of +%#1 is \xx}} +%---------------------------------------------------------- +% given a box with width W and height H, then its height after rotation by R +% is W * sin(R) + H * cos(R), and it extends W * cos(R) to the right +% and H * sin(R) to the left +% (arithmetic courtesy of Nico Poppelier) +% +\newdimen\xh\newdimen\xw\newdimen\xtemp\newdimen\xcos\newdimen\xsin +\newdimen\xleft\newdimen\xright +\def\MULTxtempBYxcos{\expandafter\numonly\the\xcos\edef\b{\xtemp=\xx\xtemp}\b}% +\def\MULTxtempBYxsin{\expandafter\numonly\the\xsin\edef\b{\xtemp=\xx\xtemp}\b}% diff --git a/macros/latex209/contrib/misc/slem.sty b/macros/latex209/contrib/misc/slem.sty new file mode 100644 index 0000000000..5a60bb6ab0 --- /dev/null +++ b/macros/latex209/contrib/misc/slem.sty @@ -0,0 +1,14 @@ +% +% Modify \em so that is uses \sl rather than \it +% +% Richard Furuta +% Department of Computer Science +% University of Maryland +% College Park, MD 20742 +% +% furuta@mimsy.umd.edu +% seismo!umcp-cs!furuta +% +% October 22, 1986, first release +% +\renewcommand{\pem}{\ifdim \fontdimen\@ne\font >\z@ \rm \else \sl \fi} diff --git a/macros/latex209/contrib/misc/smaller.sty b/macros/latex209/contrib/misc/smaller.sty new file mode 100644 index 0000000000..0576f422de --- /dev/null +++ b/macros/latex209/contrib/misc/smaller.sty @@ -0,0 +1,40 @@ +%Date: Thu, 1 Feb 90 15:23:02 EST +%From: Bernie Cosell <cosell@WILMA.BBN.COM> +%Subject: Relative font sizing in LaTeX +%Keywords: LaTeX, font sizing +% +% Modified 1-May-1990 Don Hosek to allow it to work properly when input +% by another .sty file. +% +%One continual annoyance to me is that LaTeX does absolute font sizing, +%and so if you have some \newcommand that uses the sizing commands to +%achieve some graphic effect, you'll discover that your chapter heads +%and footnotes and such are pretty screwed up [in a recent case, I +%wanted a fake small-caps-san-serif font, and so I used {\small\sf +%NOWISTHETIME}, which did just what I wanted in the running text, but +%was an unmitigated disaster in the chapter heads]. I think that the +%following is a significant improvement: \smaller and \larger changes +%the point size *relatively* by one slot, and so I made my definition: +%{\smaller\sf NOWISTHETIME}, and it all magically works. The +%definitions are: + +\def\smaller{\ifx\@currsize\Huge \protect\huge \else + \ifx\@currsize\huge \protect\LARGE \else + \ifx\@currsize\LARGE \protect\Large \else + \ifx\@currsize\Large \protect\large \else + \ifx\@currsize\large \protect\normalsize \else + \ifx\@currsize\normalsize \protect\small \else + \ifx\@currsize\small \protect\footnotesize \else + \ifx\@currsize\footnotesize \protect\scriptsize \else + \protect\tiny + \fi\fi\fi\fi\fi\fi\fi\fi} +\def\larger{\ifx\@currsize\tiny \protect\scriptsize \else + \ifx\@currsize\scriptsize \protect\footnotesize \else + \ifx\@currsize\footnotesize \protect\small \else + \ifx\@currsize\small \protect\normalsize \else + \ifx\@currsize\normalsize \protect\large \else + \ifx\@currsize\large \protect\Large \else + \ifx\@currsize\Large \protect\LARGE \else + \ifx\@currsize\LARGE \protect\huge \else + \protect\Huge + \fi\fi\fi\fi\fi\fi\fi\fi} diff --git a/macros/latex209/contrib/misc/smalltalk.sty b/macros/latex209/contrib/misc/smalltalk.sty new file mode 100644 index 0000000000..9a30dde0fc --- /dev/null +++ b/macros/latex209/contrib/misc/smalltalk.sty @@ -0,0 +1,161 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Mario Wolczko", +%%% version = "3", +%%% date = "21 May 1992", +%%% time = "21:02:11 BST", +%%% filename = "smalltalk.sty", +%%% address = "Dept of Computer Science +%%% The University of Manchester +%%% Oxford Road +%%% Manchester M13 9PL +%%% UK", +%%% telephone = "+44-61-275-6146", +%%% FAX = "+44-61-275-6236", +%%% checksum = "56043 161 377 5156", +%%% email = "mario@cs.man.ac.uk (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, Smalltalk programming language", +%%% supported = "yes", +%%% docstring = "Useful for typesetting small fragments of +%%% the Smalltalk programming language", +%%% } +%%% ==================================================================== +% +% example: +% +% \begin{smalltalk} +% \category{Magnitudes-Numbers} +% \class{Integer} +% \superclass{Object} +% \instvars{a b c} +% \protocol{arithmetic functions} +% \begin{method}{factorial} +% | f | +% self isZero +% ifTrue: [n _ 1] +% ifFalse: [n _ self * (self - 1) factorial]. +% ^n +% \end{method} +% \classmeths +% ... +% \end{smalltalk} +% + +% warning: if you put a Smalltalk environment inside a list (e.g., +% itemize, description, etc, then don't have a paragraph skip between +% it and the next item. Example: +% \begin{itemize} +% \item blah blah +% \begin{smalltalk} +% code +% \end{smalltalk} % don't put a blank line after this +% \item .... +% + + +\def\@fmtname{lplain} +\def\@psfmtname{pslplain} + +\newenvironment{smalltalk}{\@beginst}{\@endst} + +\def\st{\protect\@st} +\def\@st{\@setSTcatcodes\smalltalkfont} % for in-line code + +\newdimen\stindent \stindent=\parindent + +\def\@beginst{\everymath{}\vskip1ex \leftskip=\stindent + \baselineskip=\stbaselineskip \parskip=0pt +% \parskip=\stbaselineskip + \@setSTcatcodes\@vobeyspaces\obeylines\noindent\smalltalkfont} + +\newdimen\stbaselineskip \stbaselineskip\baselineskip + +\def\@endst{\vskip1ex + \global\everypar={{\setbox0=\lastbox}% + \global\everypar={}% + \global\let\par=\@@par} + \global\let\par=\@undonoindent} +\def\@undonoindent{\global\everypar={}\global\let\par=\@@par\@@par} + +\def\class#1{\noindent\hbox to 7em{\rm class\hfil}\smalltalkfont + #1\par\vskip 1ex\relax} + +\def\category#1{\noindent\hbox to 7em{\rm category\hfil}\smalltalkfont + #1\par\vskip 1ex\relax} + +\def\protocol#1{\noindent\hbox to 7em{\rm protocol\hfil}\smalltalkfont + #1\par\vskip 1ex\relax} + +\def\superclass#1{\noindent\hbox to 7em{\rm superclass\hfil}\smalltalkfont + #1\par\vskip 1ex\relax} + +\def\instvars#1{\noindent\hbox to 9em{\rm instance variables\hfil}\smalltalkfont + #1\par\vskip 1ex\relax} + +\def\classmeths{\noindent\rm class methods\par\vskip 1ex\relax} + +\newenvironment{method}{\@beginmethod}{\@endmethod} + +\ifx\fmtname\@fmtname % standard LaTeX is OK + \ifx\selectfont\@undefined + \def\smalltalkfont{\sf} + \ifcase\@ptsize + \font\smalltalkboldfont=cmssbx10 + \or + \font\smalltalkboldfont=cmssbx10 scaled\magstep1 + \or + \font\smalltalkboldfont=cmssbx10 scaled\magstep2 + \fi + \else + \def\smalltalkfont{\family{cmss}\series{m}\shape{n}\selectfont} + \def\smalltalkboldfont{\family{cmss}\series{bx}\shape{n}\selectfont} + \fi +\else \ifx\fmtname\@psfmtname % so is pslatex + \ifx\selectfont\@undefined + \def\smalltalkfont{\sf} + \ifcase\@ptsize + \font\smalltalkboldfont=phvb0 at 9pt + \or + \font\smalltalkboldfont=phvb0 at 10pt + \or + \font\smalltalkboldfont=phvb0 at 11pt + \fi + \else + \def\smalltalkfont{\family\sfdefault\series{m}\shape{n}\selectfont} + \def\smalltalkboldfont{\family\sfdefault\series{b}\shape{n}\selectfont} + \fi +\else % SliTeX is different + \font\smalltalkboldfont=cmssbx10 at 20.74pt + \def\smalltalkfont{\rm} +\fi\fi + +\def\@beginmethod#1{\vbox\bgroup\noindent{\smalltalkboldfont#1}} + +\def\@st@under{$\leftarrow$} +\def\@st@uparrow{$\uparrow$} +\def\@st@bar{$\mid$} +\def\@st@lt{$\mathchar"313C$} +\def\@st@gt{$\mathchar"313E$} +%\def\@st@minus{$\mathchar"2200$} + +{\catcode`\_=\active \catcode`\^=\active \catcode`\|=\active + \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active + \gdef\@setSTcatcodes{% + \@makeother\#\@makeother\%\@makeother\~% + \catcode`\_=\active \catcode`\^=\active \catcode`\|=\active + \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active + \let_\@st@under \let^\@st@uparrow \let|\@st@bar + \let<\@st@lt \let>\@st@gt}} %\let-\@st@minus}} + +%{\catcode`\_=\active \catcode`\^=\active \catcode`\|=\active +% \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active +% \gdef\@setSTcatcodes{% +% \@makeother\#\@makeother\%\@makeother\~% +% \catcode`\_=\active \catcode`\^=\active \catcode`\|=\active +% \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active +% \def_{$\leftarrow$}\def^{$\uparrow$}\def|{$\mid$}% +% \def<{$\mathchar"313C$}\def>{$\mathchar"313E$}}} +% \def-{$\mathchar"2200$}}} + +\def\@endmethod{\strut\egroup} diff --git a/macros/latex209/contrib/misc/sober.sty b/macros/latex209/contrib/misc/sober.sty new file mode 100644 index 0000000000..2bfd1a71fb --- /dev/null +++ b/macros/latex209/contrib/misc/sober.sty @@ -0,0 +1,147 @@ +% SOBER.STY van Nico Poppelier +% -------------------------------------- +% Koppen van secties, subsecties, ... +% -------------------------------------- +% +% -------------------------------------- +% fontgrootte en regelafstand +% (met de notatie X/Y wordt bedoeld +% 'letter X op regelafstand Y') +% -------------------------------------- +% +% 10pt 11pt 12pt +% \scriptsize 7/ 8 8/ 9.5 8/ 9.5 +% \tiny 5/ 6 6/ 7 6/ 7 +% \small 9/11 10/12 11/13.6 +% \footnotesize 8/ 9.5 9/11 10/12 +% \@normalsize 10/12 11/13.6 12/15 +% \large 12/14 12/14 14/18 +% \Large 14/18 14/18 17/22 +% \LARGE 17/22 17/22 20/25 +% \huge 20/25 20/25 25/30 +% \Huge 25/30 25/30 25/30 +% +% de syntax van \@startsection is: +% \@startsection +% {Name}{Level}{Indent}{Before_skip}{After_Skip}{Type_face} +% Indent : inspring van kop vanaf linkermarge +% Before_skip: wit boven kopje +% (< 0 geeft aan dat eerste alinea niet inspringt) +% After_skip : wit onder kopje indien >= 0 +% horizontaal wit na kopje, +% met kopje op de regel indien < 0 +% +% notatie voor <glue>: <dimen>(<stretch>)(<shrink>) +% +% in LaTeX's standaard-stijlen (onafhankelijk van \@ptsize): +% +% Indent Before_skip After_skip Type_face +% section 0 -3.5ex (-1ex)(-0.2ex) 2.3ex(0.2ex) \Large\bf +% subsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \large\bf +% subsubsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \normalsize\bf +% paragraph 0 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf +% subparagraph \parindent 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf +% +% +% in een soberder uitvoering (onafhankelijk van \@ptsize): +% +\def\section{\@startsection{section}{1} +{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}} +\def\subsection{\@startsection{subsection}{2} +{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\bf}} +\def\subsubsection{\@startsection{subsubsection}{3} +{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\sc}} +\def\paragraph{\@startsection{paragraph}{4} +{\z@}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}} +\def\subparagraph{\@startsection{subparagraph}{4} +{\parindent}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}} +% +% -------------------------------------- +% Hoofdstuk-koppen +% -------------------------------------- +% +% LaTeX's book style (standaard documentstijl) definieert +% de hoofdstuk-koppen onafhankelijk van \@ptsize +% +\def\@makechapterhead#1{\vspace*{20pt}% +{\parindent 0pt\Large\bf \ifnum\c@secnumdepth>\m@ne\thechapter \fi + \parbox[t]{0.7\textwidth}{\raggedright #1}\par\nobreak \vskip25pt} } +% +\def\@makeschapterhead#1{ + \vspace*{20pt} { \parindent 0pt \raggedright + \LARGE\bf#1\par\nobreak\vskip25pt } } +% +% -------------------------------------- +% List-omgevingen (itemize en enumerate) +% -------------------------------------- +% +% De volgende parameters zijn relevant in een list-omgeving: +% +% \labelsep : afstand tussen label en item +% \labelwidth : breedte van label +% \leftmargin : afstand tussen linkermarge en item +% \rightmargin : afstand tussen item en rechtermarge +% \listparindent: indentatie voor vervolg-alinea's in item +% \parsep : verticaal wit tussen vervolg-alinea's in item +% \itemsep : verticaal wit tussen opeenvolgende item's +% \topsep, +% \partopsep : wit boven item 1 = \topsep + \parskip +% (geen alinea-overgang boven lijst) +% wit boven item 1 = \topsep + \parskip + \partopsep +% (alinea-overgang boven lijst) +% +% zie verder LaTeX-boek 5.7.1 en C.5.3 +% -------------------------------------- +% +% De parameters voor niveau 1 worden gedefinieerd op top-niveau en +% \@listi definieert uitsluitend \leftmargin +% +% size = small (9pt, 10pt, 11pt) +\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep} +% \topsep 4pt(2pt)(2pt) 6pt(2pt)(2pt) 9pt(3pt)(5pt) +% \parsep 2pt(1pt)(1pt) 3pt(2pt)(1pt) 4.5pt(2pt)(1pt) +% +% size = footnotesize (8pt, 9pt, 10pt) +\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep} +% \topsep 3pt(1pt)(1pt) 4pt(2pt)(2pt) 6pt(2pt)(2pt) +% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 3pt(2pt)(1pt) +% +% size = normalsize (and bigger) +% \parskip 0pt(1pt) 0pt(1pt) 0pt(1pt) +% \parindent 15pt 17pt 1.5em +% \topsep 8pt(2pt)(4pt) 9pt(3pt)(5pt) 10pt(4pt)(6pt) +% \partopsep 2pt(1pt)(1pt) 3pt(1pt)(2pt) 3pt(2pt)(2pt) +% \itemsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt +% \parsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt) +\topsep 0.4ex \partopsep 0pt \itemsep 0pt \parsep 0pt +% +% \leftmargini 2.5em \leftmarginii 2.2em \leftmarginiii 1.87em +% \leftmarginiv 1.7em \leftmarginv 1.0em \leftmarginvi 1.0em +% +% \leftmargin\leftmargini +% \labelwidth\leftmargini\advance\labelwidth-\labelsep +% \labelsep 0.5em +% +% \def\@listi{\leftmargin\leftmargini} +% +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep +% \topsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt) +% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt) + \topsep 0pt \parsep 0pt \itemsep \parsep} +% +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep +% \topsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt) +% \partopsep 1pt(0pt)(1pt) 1pt(0pt)(1pt) 1pt(0pt)(1pt) + \parsep \z@ \topsep 0pt \partopsep 0pt \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/macros/latex209/contrib/misc/spacecites.sty b/macros/latex209/contrib/misc/spacecites.sty new file mode 100644 index 0000000000..89438fa68f --- /dev/null +++ b/macros/latex209/contrib/misc/spacecites.sty @@ -0,0 +1,20 @@ +% Modifications to the "report" \documentstyle to space out citations +% in other words, this redefines the citation style to put spaces after +% the commas: [Furu86, Furu87] instead of [Furu86,Furu87] +% +% Richard Furuta +% Department of Computer Science +% University of Maryland +% College Park, MD 20742 +% +% furuta@mimsy.umd.edu +% seismo!umcp-cs!furuta +% +% October 22, 1986, first release +% +\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}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% +\hbox{\csname b@\@citeb\endcsname}}}{#1}} diff --git a/macros/latex209/contrib/misc/spacing.sty b/macros/latex209/contrib/misc/spacing.sty new file mode 100644 index 0000000000..530c07ff37 --- /dev/null +++ b/macros/latex209/contrib/misc/spacing.sty @@ -0,0 +1,51 @@ +\makeatletter + +% Single- and double-spacing macros for LATEX + +% To use these macros, simply include "spacing" as an optional argument to the +% \documentsyle command, e.g., +% +% \documentstyle[12pt,spacing]{article} +% +% in your LATEX file. The options can appear in any order. + +% These macros are designed to be used with \begin and \end in the typical +% LATEX-environment way, e.g., +% +% \begin{singlespace} +% . +% . +% . +% \begin{doublespace} +% . +% . +% . +% \end{doublespace} +% . +% . +% . +% \end{singlespace} + +\def\singlespace{\par% + \vskip \parskip% + \vskip \baselineskip% + \def\baselinestretch{1}% + \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi% + \vskip -\parskip% + \vskip -\baselineskip} + +\def\endsinglespace{\par} + +\def\doublespace{\par% + \def\baselinestretch{2}% + \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi} + +\def\enddoublespace{\par% + \vskip \parskip% + \vskip \baselineskip% + \endgroup% + \vskip -\parskip% + \vskip -\baselineskip% + \begingroup} + +\makeatother diff --git a/macros/latex209/contrib/misc/sqmac.tex b/macros/latex209/contrib/misc/sqmac.tex new file mode 100644 index 0000000000..80e88cf890 --- /dev/null +++ b/macros/latex209/contrib/misc/sqmac.tex @@ -0,0 +1,320 @@ +% This should appear in a file named SQMAC.TEX +\long\def\ig#1{\relax} +\ig{Thanks to Roberto Minio for this def'n. Compare the def'n of +\comment in AMSTeX.} +\ig{ Copyright 1988 Michael Barr + Department of Mathematics and Statistics + McGill University + Montreal, Quebec, Canada + H3P 1S4 + + inhb@mcgillc.bitnet + + All commercial rights reserved. May be freely distributed + for non-commercial use, so long as this notice is included.} + +\setlength{\unitlength}{.1em} + +\newlength{\ulabeloffset} +\newlength{\ulabelwidth} +\newlength{\arrowwidth} +\newlength{\lnodewidth} +\newlength{\rnodewidth} +\newlength{\loffset} +\newlength{\roffset} + +\newcount\tarrowflag +\newcount\larrowflag +\newcount\rarrowflag +\newcount\barrowflag +\newcount\height +\newcount\width +\newcount\arrowlen +\newcount\labelheight + + +% The following is like \vector, except it makes a monic (tailed) arrow. + +\def\mvector(#1,#2)#3 +{ +\begin{picture}(#3,#3)(-2,0) +\put(0,4){\vector(#1,#2){#3}} +\put(0,4){\vector(#1,#2){3}} +\end{picture} +} + +% The following is like \vector, except it makes an epic (2-headed) arrow. + +\def\evector(#1,#2)#3 +{ +\arrowlen #3 +\begin{picture}(\arrowlen,\arrowlen)(-2,0) +\put(0,4){\vector(#1,#2){\arrowlen}} +\advance \arrowlen by -4 +\put(0,4){\vector(#1,#2){\arrowlen}} +\end{picture} +} + + +\catcode`@=11 % unhide @sign definitions + +\def\absvector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax +\@linelen=#3 +\ifnum\@xarg =0 \@vvector + \else \ifnum\@yarg =0 \@hvector \else \@svector\fi +\fi} + +\catcode`@=12 % @signs are no longer letters + +\ig{This definition of \function below is a modification of one due to +Charles Wells whose idea it was to try to make the length of the arrow +depend on the sizes of the nodes. Much elaborated, it forms the basis +of the square macro.} + +\newcommand{\setwidths}[4] +{ +\settowidth{\lnodewidth}{#1} +\settowidth{\rnodewidth}{#2} +\setlength{\loffset}{0.5\lnodewidth} +\setlength{\roffset}{0.5\rnodewidth} +\addtolength{\loffset}{3\unitlength} %allows a little space +\addtolength{\roffset}{3\unitlength} %before & after the arrow +\setlength{\arrowwidth}{#4\unitlength} +\addtolength{\arrowwidth}{-\loffset} +\addtolength{\arrowwidth}{-\roffset} +\setlength{\ulabeloffset}{\loffset} +\settowidth{\ulabelwidth}{#3} +\advance\ulabeloffset by .5\arrowwidth +\advance\ulabeloffset by -.5\ulabelwidth +} + +\newcommand{\dofunc}[4] +{ +\setwidths{#1}{#2}{#3}{#4} +\begin{picture}(0,0) +\put(0,0){\makebox(0,0){#1}} +\put(-3,0){\hspace{\loffset}\absvector(1,0){\arrowwidth}} +\put(#4,0){\makebox(0,0){#2}} +\put(0,4){\hspace{\ulabeloffset}{#3}\hspace{\ulabeloffset}} +\end{picture} +} + + +% The four parameters are (lnode,rnode;label,width) +\def\func(#1,#2;#3;#4) +{ %begin func +\makebox(0,0){\dofunc{#1}{#2}{#3}{#4} +}%end box +}%end func + + +\ig{The next procedure is to set parameters for a square. The six +parameters are all numbers. The first 4 flag the four arrows of the +square as follows: + + top or bottom left or right + arrow arrow + + < -3 leftwards, normal upwards, normal ( <----- ) + -3 leftwards, epic upwards, epic ( <<---- ) + -2 leftwards, monic upwards, monic ( <----< ) + -1 leftwards, normal upwards, normal ( <----- ) + 0 omitted omitted + 1 rightwards, normal downwards, normal ( -----> ) + 2 rightwards, epic downwards, epic ( ---->> ) + 3 rightwards, monic downwards, monic ( >----> ) + > 3 rightwards, normal downwards, normal ( -----> ) + +In other words, when the parameter is positive, the arrow goes in the +ordinary (linguistic) direction and when negative, in the opposite +direction. When the parameter is 0, the arrow is omitted. When the +absolute valute of the parameter is 2, you get a monic (tailed) arrow +and when it is 3, you get an epic (double headed) arrow. Any other +non-zero value gives an normal arrow. + +The last 2 parameters, for which 60 and 70 are a reasonable values, are +the distance between the vertical, resp. horizontal arrows in +increments of .1 em. + +The procedure \resetparms sets the first 4 of these parameters to 1 and +the last two to 60 and 70. + +NOTE: ONE OF THE PROCEDURES \setparms OR \resetparms SHOULD BE EXECUTED +BEFORE A SQUARE IS MADE. + +The procedure \square takes 8 parameters, in the format +[#1`#2`#3`#4;#5`#6`#7`#8] which are in order, +[NW`NE`SW`SE;t`l`r`b], the first four being the nodes and the last four +the labels on the arrows. + +The top and bottom arrows have their lengths automatically adjusted to +compensate for the widths of the nodes. Thus 50 will be a reasonable +value for the width parameter, but only if the labels are not too long. +The examples below show how these squares may be fitted together to make +more complicated diagrams. Although it may be possible in principle to +superimpose the joint arrow, it seems safer to omit one of them. Minor +arithmetic errors might otherwise result in thick lines. Note, in the +examples, the use of the procedure \phantom to make the arrow lengths +proper, while avoiding overlapping nodes. + +Note the \hspace and \space used to properly space them. I don't +understand the spacing rules used in picture mode to figure out how to +do these automatically and so they are determined by trial and error. I +suspect they depend on the widths of the nodes and the heights of the +labels. Also note the blank lines between the two squares in the second +example. This is necessary for proper spacing.} + +\ig{In case you are interested why I used the peculiar syntax for the +parameters, it is because I didn't like to type braces and I also didn't +want to use things like parens and commas that I am likely to use as +parts of nodes and arrows. But feel free to change this syntax.} + +\def\setparms[#1`#2`#3`#4;#5`#6] +{ +\tarrowflag #1 +\larrowflag #2 +\rarrowflag #3 +\barrowflag #4 +\width #5 +\height #6 +} + +\newcommand{\resetparms} +{ +\tarrowflag1 +\larrowflag1 +\rarrowflag1 +\barrowflag1 +\width50 +\height50 +} + +\resetparms %initializes defaults + +\ig{The parameters are the nodes and arrows in linguistic order. +Note: if one of the nodes has an asscript, then the other one on +the same line must too. Use an empty box (e.g. blah_{}) if necessary.} +\def\square[#1`#2`#3`#4;#5`#6`#7`#8]% +{ +\advance \height by 30 +\begin{picture}(\width,\height)(0,4) +\arrowlen\height +\labelheight\height +\divide\labelheight by 2 +\advance \height by -15 +\advance \arrowlen by -44 + +\setwidths{#1}{#2}{#5}{\width} +\put(0,\height){\makebox(0,0){#1}} +\ifnum\tarrowflag>0 + \put(-3,\height){\hspace{\loffset}\absvector(1,0){\arrowwidth}} + \ifnum\tarrowflag=3 + \advance\arrowwidth by -4\unitlength + \put(-3,\height){\hspace{\loffset}\absvector(1,0){\arrowwidth}} + \fi + \ifnum\tarrowflag=2 + \put(-1,\height){\hspace{\loffset}\absvector(1,0){\unitlength}} + \fi +\else\ifnum\tarrowflag<0 + \advance\loffset by \arrowwidth + \put(-3,\height){\hspace{\loffset}\absvector(-1,0){\arrowwidth}} + \ifnum\tarrowflag=-3 + \advance\arrowwidth by -4\unitlength + \put(-3,\height){\hspace{\loffset}\absvector(-1,0){\arrowwidth}} + \fi + \ifnum\tarrowflag=-2 + \put(-5,\height){\hspace{\loffset}\absvector(-1,0){\unitlength}} + \fi +\fi\fi + +\put(\width,\height){\makebox(0,0){#2}} +\advance \height by 4 +\put(0,\height){\hspace{\ulabeloffset}{#5}\hspace{\ulabeloffset}} + +\advance \height by -11 +\ifnum\larrowflag>0 + \put(0,\height){\vector(0,-1){\arrowlen}} + \ifnum\larrowflag=3 + \advance\arrowlen by -4 + \put(0,\height){\vector(0,-1){\arrowlen}} + \advance\arrowlen by 4 + \fi + \ifnum\larrowflag=2 + \advance \height by -2 + \put(0,\height){\vector(0,-1){1}} + \advance \height by 2 + \fi +\else\ifnum\larrowflag<0 + \advance\height by-\arrowlen + \put(0,\height){\vector(0,1){\arrowlen}} + \ifnum\larrowflag=-3 + \advance\arrowlen by -4 + \put(0,\height){\vector(0,1){\arrowlen}} + \advance\arrowlen by 4 + \fi + \ifnum\larrowflag=-2 + \advance \height by 2 + \put(0,\height){\vector(0,1){1}} + \advance \height by -2 + \fi + \advance\height by\arrowlen +\fi\fi + +\ifnum\rarrowflag>0 + \put(\width,\height){\vector(0,-1){\arrowlen}} + \ifnum\rarrowflag=3 + \advance\arrowlen by -4 + \put(\width,\height){\vector(0,-1){\arrowlen}} + \fi + \ifnum\rarrowflag=2 + \advance \height by -2 + \put(\width,\height){\vector(0,-1){1}} + \fi +\else\ifnum\rarrowflag<0 + \advance\height by-\arrowlen + \put(\width,\height){\vector(0,1){\arrowlen}} + \ifnum\rarrowflag=-3 + \advance\arrowlen by -4 + \put(\width,\height){\vector(0,1){\arrowlen}} + \advance\arrowlen by 4 + \fi + \ifnum\rarrowflag=-2 + \advance \height by 2 + \put(\width,\height){\vector(0,1){1}} + \advance \height by -2 + \fi +\fi\fi + +\put(-3,\labelheight){\makebox(0,0)[r]{#6}} +\advance \width by 3 +\put(\width,\labelheight){\makebox(0,0)[l]{#7}} +\advance \width by -3 + +\setwidths{#3}{#4}{#8}{\width} +\put(0,15){\makebox(0,0){#3}} +\ifnum\barrowflag>0 + \put(-3,15){\hspace{\loffset}\absvector(1,0){\arrowwidth}} + \ifnum\barrowflag=3 + \advance\arrowwidth by -4\unitlength + \put(-3,15){\hspace{\loffset}\absvector(1,0){\arrowwidth}} + \fi + \ifnum\barrowflag=2 + \put(-1,15){\hspace{\loffset}\absvector(1,0){\unitlength}} + \fi +\else\ifnum\barrowflag<0 + \advance\loffset by \arrowwidth + \put(-3,15){\hspace{\loffset}\absvector(-1,0){\arrowwidth}} + \ifnum\barrowflag=-3 + \advance\arrowwidth by -4\unitlength + \put(-3,15){\hspace{\loffset}\absvector(-1,0){\arrowwidth}} + \fi + \ifnum\barrowflag=-2 + \put(-5,15){\hspace{\loffset}\absvector(-1,0){\unitlength}} + \fi +\fi\fi +\put(\width,15){\makebox(0,0){#4}} +\put(0,7){\hspace{\ulabeloffset}{#8}\hspace{\ulabeloffset}} +\end{picture} +} +ý SMTPUSER HMCVAX 5/14/88 +þ INHB@MCGILLC.BITNET DHOSEK@HMCVAX.BITNE 5/14/88 No subject diff --git a/macros/latex209/contrib/misc/sqsample.tex b/macros/latex209/contrib/misc/sqsample.tex new file mode 100644 index 0000000000..e475f637e6 --- /dev/null +++ b/macros/latex209/contrib/misc/sqsample.tex @@ -0,0 +1,143 @@ +%This file should be called sqsample.tex +\documentstyle[12pt]{article} +\pagestyle{empty} +\def\colim{\mathop{\rm colim}\nolimits} +\newcommand{\bp}{\begin{picture}} +\newcommand{\ep}{\end{picture}} +\begin{document} +\input sqmac + +\setparms[0`-1`-2`-3;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] +\hspace{5em} +\setparms[-1`-2`-3`-4;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] + +\setparms[-2`-3`-4`0;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] +\hspace{5em} +\setparms[-3`-4`0`-1;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] + +\setparms[-4`0`-1`-2;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] + +\setparms[0`1`2`3;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] +\hspace{5em} +\setparms[1`2`3`4;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] + +\setparms[2`3`4`0;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] +\hspace{5em} +\setparms[3`4`0`1;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] + +\setparms[4`0`1`2;70`70] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] + +%In the diagrams below, the parameters specify that the squares are +%height 90 units (approximately 90 points) and the left and right arrows +%are, respectively, monic and epic. The horozontal backspace of 21 units +%was determined by trial and error and depends in a way I don't +%understand on the sizes of the nodes. In the second square the upper +%arrow is monc, the left hand one omitted, the right hand arrow epic and +%the bottom ordinary. The nodes marked \phantom are used to calculate +%the lengths of the arrows, but are not actually printed. For more +%information, see the commentary in the file squarmac.tex. + +\begin{center} +\makebox +{ +\setparms[1`2`-3`-1;60`90] +\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$] +\hspace{-14\unitlength} +\setparms[2`0`3`1;60`90] +\square[\phantom{$BB$}`$EEEE$`\phantom{$CCC$}`$FFF$;$l$``$m$`$n$] +} +\end{center} + +\newpage + +\ig{I have been unable to figure out how to center a diagram like the +one below, since every attempt to cause a cr gives an error to the +centering macro. It can be done by eye, of course. It is also hard ot +prevent a page break here.} + +\setparms[1`1`1`1;60`70] +\square[$AAA$`$BB$`$C$`$DDDD$;$f$`$g$`$h$`$k$] + +\tarrowflag0 +\vspace{-31\unitlength} +\setparms[1`1`1`1;60`80] +\square[\phantom{$C$}`\phantom{$DDDD$}`$EE$`$FFF$;$l$``$m$`$n$] + +\ig{ +In the diagrams below (which, together with the surrounding text, are from +an actual paper) the fact that there is a blank line above the text and +not, but a \\ below, is because that is what works. Instead, one could +have a blank line below and begin the next line with \noindent. If \\ +is used to separate the text above from the square, then \hspace has no +effect, although \hspace* would probably work. It appears that one +cannot put such a diagram into a {center} environment. I get an +"impossible" error message, but I assume that was the real reason. + +This illustrates the use of \vector to add other arrows to a diagram. +In general, I don't know how, except by trial and error, to say exactly +where these arrows should go, but I assume that with experience, it will +become easier to place them. + +One more comment: If the parameters are set inside a proedure, then they +will be reset when that environment is exited. On the other hand the +line \tarrowflag3 above set a parameter globally and then resetting it +in the first of the diagrams below does not reset it for the second. It +is probably to ALWAYS set or rest the parameters so that if a diagram is +moved, or something inserted above it, it will always be correct.} + +Now let $A$ be an arbitrary object of ${\cal A}$ that satisfies all the Horn +sentences. Like any object of ${\cal A}$, $A$ is a filtered colimit of +finitely presented algebras. Write $A=\colim A_i$. Then we have a +diagram for each $i$ + +\hspace{7em} +\bp(0,70) +\put(37,44){\vector(-1,-1){26}} +\setparms[1`1`1`1;40`40] +\square[$A_i$`$\Phi\Psi A_i$`$A$`$\Phi\Psi A$;$f_i$```$f$] +\ep\\ +where the diagonal arrow exists because $A$ satisfies all those Horn +sentences. Since $\Psi$ is a left adjoint, it preserves filtered +colimits and $\Phi$ does by assumption. Taking colimits, we get + +\hspace{6em} +\bp(0,70) +\put(63,44){\vector(-2,-1){52}} +\setparms[1`1`1`1;68`40] +\square[$\colim A_i$`$\colim\Phi\Psi A_i$`$A$`$\colim\Phi\Psi A$;```] +\ep + +From the fact that both vertical arrows are isomorphisms, it follows by +an easy diagram chase that the diagonal is too. + +\ig{ The following illustrates a minor flaw in the \square macro and two +possible workarounds. Neither is perfect; the first still doesn't leave +them lined up perfectly (apparently because superscripts don't go up as +far as subscripts go down) while the second leaves the nodes on the same +line, but leaves both of them a bit high with respect to the arrow than +unadorned nodes. Only a perfectionist will notice anything wrong with +either of them} + +\resetparms\width70 +\square[$AAAAA_1$`$BB$`$CCC$`$DD$;$f$```$g$] + +\resetparms\width70 +\square[$AAAAA_1^{}$`$BB$`$CCC$`$DD$;$f$```$g$] +\hspace{10em} +\resetparms\width70 +\square[$AAAAA_1$`$BB_{}$`$CCC$`$DD$;$f$```$g$] + + +\end{document} +ý SMTPUSER HMCVAX 5/14/88 +þ INHB@MCGILLC.BITNET DHOSEK@HMCVAX.BITNE 5/14/88 No subject diff --git a/macros/latex209/contrib/misc/sshdbk10.sty b/macros/latex209/contrib/misc/sshdbk10.sty new file mode 100644 index 0000000000..c1a75f7349 --- /dev/null +++ b/macros/latex209/contrib/misc/sshdbk10.sty @@ -0,0 +1,59 @@ +% Save file as: SSHDBK10.STY Source: FILESERV@SHSU.BITNET +% SSHDBK10.STY: Sans Serif headings for BK10 style +% Change the headings to be in Sans Serif typefaces, +% Also, take all sizes down a notch (huge, not Huge etc.). +% The changes are flagged thus. +% ^^^^ +% +%----------------------------- part --------------------------------------- +% From book.sty: +% +\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{}{} + {\centering \ifnum \c@secnumdepth >-2\relax \Large\sf Part \thepart \par +% ^^^^^^^^^ +\vskip 20pt \fi \huge \sf #1\par}\@endpart} +% ^^^^^^^^^ +\def\@endpart{\vfil\newpage \if@twoside \hbox{} \thispagestyle{empty} + \newpage + \fi \if@tempswa \twocolumn \fi} +\def\@spart#1{{\centering \huge \sf #1\par}\@endpart} +% ^^^^^^^^^ +% +%----------------------------- chapter ----------------------------------- +% From bk10.sty: +% +\def\@makechapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright + \ifnum \c@secnumdepth >\m@ne \huge\sf \@chapapp{} \thechapter \par + \vskip 20pt \fi \huge \sf #1\par +% ^^^^^^^^^ + \nobreak \vskip 40pt } } + +\def\@makeschapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright + \huge \sf #1\par +%^^^^^^^^^ + \nobreak \vskip 40pt } } + +%----------------------------- section ----------------------------------- + +\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus + -.2ex}{2.3ex plus .2ex}{\Large\sf}} +% ^^^ +%-------------------------- subsection ----------------------------------- +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus + -.2ex}{1.5ex plus .2ex}{\large\sf}} +% ^^^ +%-------------------------- subsubsection -------------------------------- +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus +-1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\sf}} +% ^^^ +%---------------------------- paragraph ---------------------------------- +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\sf}} +% ^^^ +%--------------------------- subparagraph -------------------------------- +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus + .2ex}{-1em}{\normalsize\sf}} +% ^^^ diff --git a/macros/latex209/contrib/misc/steveshacks.tex b/macros/latex209/contrib/misc/steveshacks.tex new file mode 100644 index 0000000000..d2aea18eb2 --- /dev/null +++ b/macros/latex209/contrib/misc/steveshacks.tex @@ -0,0 +1,315 @@ +Return-Path: <spqr@minster.york.ac.uk> +Received: from minster.york.ac.uk by ftp.tex.ac.uk (4.1/SMI-4.1) + id AA04969; Tue, 9 Mar 93 09:31:49 GMT +From: spqr@minster.york.ac.uk +Date: Tue, 9 Mar 93 09:29:08 +Message-Id: <swordfish.731669420@minster.york.ac.uk> +To: archive@ftp.tex.ac.uk +In-Reply-To: smith@gramian.harvard.edu's message of 2 Mar 93 23:02:22 GMT +Subject: Steve's LaTeX Hacks +Status: RO + + From: smith@gramian.harvard.edu (Steven Smith) + Newsgroups: comp.text.tex + Date: 2 Mar 93 23:02:22 GMT + Distribution: comp.text.tex + Organization: Harvard Robotics Lab, Harvard University + + I recently submitted a paper to a publisher who demanded that it be in + LaTeX format. At first I hated this. But later, I grew to like it as + I learned to hack LaTeX to get it to do what I wanted. I've heard + several people complain about some of the LaTeX problems that I faced, + so I've included my fixes here for people to use. + + The code is arranged in three sections: (i) LaTeX bug fixes, where I + fix LaTeX so that it doesn't do things that are plain wrong, (ii) LaTeX + hacks, where I hack LaTeX to make it conform to a style that I prefer, + and (iii) useful macros from Plain TeX that for some specious reason + are not included in LaTeX. I've also included a proof environment + that gives Halmos's tombstone. + + + Note to LaTeX-but-non-TeX users: I highly recommend using Plain + TeX macros like \pmatrix etc. You will find typing + + $$\pmatrix{a&b\cr c&d}$$ + + much faster and easier than typing + + \[\left(\begin{array}{cc}a&b\\c&d\end{array}\right)\]. + + Most of these macros, described in Chapters 16-19 of the TeXbook, + are defined in standard LaTeX, so you may use them. + + + Included below are the following: + + LaTeX bug fixes: + + 1. Fix eqnarray to delete those awful spaces around the relation. + 2. Use correct 12-point math extension font. + 3. Define correct 12-point \big,...,\Bigg macros. + + LaTeX hacks: + + 1. Add 10-point bold roman subscripts. + 2. Put stretchiness and new hooks in the theorem environment. + 3. Add an environment for proofs. + 4. Change LaTeX's \cite command for bold citations separated by thinspaces. + 5. Add Plain TeX's \headline and \footline to plain pagestyle. + + Plain TeX additions: + + 1. Add \eqalign. + 2. \overfullrule=5pt (Plain TeX's setting). + + + The code follows. All of this code should be placed in LaTeX's + preamble (between \documentstyle and \begin{document}). If you only + take part of this code, be sure to surround it in your preamble with + the LaTeX commands \makeatletter and \makeatother. And, of course, if + you don't like anything about these macros, you are free to change them. + + + \makeatletter + + % LaTeX bug fixes: + + % 1. Fix eqnarray to delete those awful spaces around the relation. + + % Fix eqnarray's \def so that it uses the correct spacing (cf. latex.tex). + \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation + \global\@eqnswtrue + \global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr + $$\halign to \displaywidth\bgroup\@eqnsel\hskip\@centering + $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne + ${{}##{}}$&\global\@eqcnt\tw@$\displaystyle\tabskip\z@{##}$\hfil + \tabskip\@centering&\llap{##}\tabskip\z@\cr} + + % 2. Use correct 12-point math extension font. + + % Use correct 12-point fonts (cf. lfonts.tex). + \font\twlex=cmex10 at 12pt + \font\eightex=cmex8 + \font\eightbf=cmbx8 + \font\sixbf=cmbx6 + + \def\xiipt{\textfont\z@\twlrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm + \textfont\@ne\twlmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi + \textfont\tw@\twlsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy + \textfont\thr@@\twlex \scriptfont\thr@@\eightex \scriptscriptfont\thr@@\eightex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twlmi + \textfont\tw@\twlsy \textfont\lyfam\twlly + \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{twlmib}{\global\font\twlmib\@mbi\@magscale1\global + \font\twlsyb\@mbsy \@magscale1\global\font + \twllyb\@lasyb\@magscale1\relax\@addfontinfo\@xiipt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\twlmib \textfont\tw@\twlsyb + \textfont\lyfam\twllyb\@prtct\@boldtrue}}}{}\@xiipt\boldmath}% + \def\prm{\fam\z@\twlrm}% + \def\pit{\fam\itfam\twlit}\textfont\itfam\twlit \scriptfont\itfam\egtit + \scriptscriptfont\itfam\sevit + \def\psl{\fam\slfam\twlsl}\textfont\slfam\twlsl + \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl + \def\pbf{\fam\bffam\twlbf}\textfont\bffam\twlbf + \scriptfont\bffam\eightbf \scriptscriptfont\bffam\sixbf + \def\ptt{\fam\ttfam\twltt}\textfont\ttfam\twltt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt + \def\psf{\fam\sffam\twlsf}\textfont\sffam\twlsf + \scriptfont\sffam\tensf \scriptscriptfont\sffam\tensf + \def\psc{\@getfont\psc\scfam\@xiipt{\@mcsc\@magscale1}}% + \def\ly{\fam\lyfam\twlly}\textfont\lyfam\twlly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly + \@setstrut \rm} + + % 3. Define correct 12-point \big,...,\Bigg macros (cf. lplain.tex). + + \def\big#1{{\hbox{$\left#1\vbox to10\p@{}\right.\n@space$}}} + \def\Big#1{{\hbox{$\left#1\vbox to13\p@{}\right.\n@space$}}}% + \def\bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}% + \def\Bigg#1{{\hbox{$\left#1\vbox to21\p@{}\right.\n@space$}}}% + + + % LaTeX hacks: + + % 1. Add 10-point bold roman subscripts. + + % Use correct 10-point bold subscript fonts like Plain TeX (cf. lfonts.tex). + \font\eightex=cmex8 + \font\sevenbf=cmbx7 + \font\fivebf=cmbx5 + + \def\xpt{\textfont\z@\tenrm + \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm + \textfont\@ne\tenmi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\tensy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\eightex \scriptscriptfont\thr@@\eightex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\tenmi + \textfont\tw@\tensy \textfont\lyfam\tenly + \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{tenmib}{\global\font\tenmib\@mbi + \global\font\tensyb\@mbsy + \global\font\tenlyb\@lasyb\relax\@addfontinfo\@xpt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\tenmib \textfont\tw@\tensyb + \textfont\lyfam\tenlyb \@prtct\@boldtrue}}}{}\@xpt\boldmath}% + \def\prm{\fam\z@\tenrm}% + \def\pit{\fam\itfam\tenit}\textfont\itfam\tenit \scriptfont\itfam\sevit + \scriptscriptfont\itfam\sevit + \def\psl{\fam\slfam\tensl}\textfont\slfam\tensl + \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl + \def\pbf{\fam\bffam\tenbf}\textfont\bffam\tenbf + \scriptfont\bffam\sevenbf \scriptscriptfont\bffam\fivebf + \def\ptt{\fam\ttfam\tentt}\textfont\ttfam\tentt + \scriptfont\ttfam\tentt \scriptscriptfont\ttfam\tentt + \def\psf{\fam\sffam\tensf}\textfont\sffam\tensf + \scriptfont\sffam\tensf \scriptscriptfont\sffam\tensf + \def\psc{\@getfont\psc\scfam\@xpt{\@mcsc}}% + \def\ly{\fam\lyfam\tenly}\textfont\lyfam\tenly + \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly + \@setstrut \rm} + + % 2. Put stretchiness and new hooks in the theorem environment. + + \def\thmstretch{plus.5em minus.1em } + \def\thmskip{0pt \thmstretch} + \def\thmstart{\hskip\thmskip\ignorespaces} + \let\thmtextfont=\it + \newif\ifthmtitle \thmtitletrue % If TRUE, print text (e.g., ``Theorem''). + + % Macros for paper's structure: + + % These are utility macros: + \newtheorem{THEOREM}{Theorem}[section] + \newtheorem{PROPOSITION}[THEOREM]{Proposition} + \newtheorem{DEFINITION}[THEOREM]{Definition} + \newtheorem{LEMMA}[THEOREM]{Lemma} + \newtheorem{COROLLARY}[THEOREM]{Corollary} + \newtheorem{EXAMPLE}[THEOREM]{Example} + \newtheorem{REMARK}[THEOREM]{Remark} + \newtheorem{REMARKS}[THEOREM]{Remarks} + \newtheorem{DISCUSSION}[THEOREM]{} + \newtheorem{ALGORITHM}[THEOREM]{Algorithm} + \newtheorem{PROBLEM}[THEOREM]{Problem} + + % Use these environments for their stated purpose. + \newenvironment{theorem}% + {\let\thmtextfont=\it \thmtitletrue \begin{THEOREM}}% + {\end{THEOREM}} + \newenvironment{proposition}% + {\let\thmtextfont=\it \thmtitletrue \begin{PROPOSITION}}% + {\end{PROPOSITION}} + \newenvironment{definition}% + {\let\thmtextfont=\rm \thmtitletrue \begin{DEFINITION}}% + {\end{DEFINITION}} + \newenvironment{lemma}% + {\let\thmtextfont=\it \thmtitletrue \begin{LEMMA}}% + {\end{LEMMA}} + \newenvironment{corollary}% + {\let\thmtextfont=\it \thmtitletrue \begin{COROLLARY}}% + {\end{COROLLARY}} + \newenvironment{example}% + {\let\thmtextfont=\rm \thmtitletrue \begin{EXAMPLE}}% + {\end{EXAMPLE}} + \newenvironment{remark}% + {\let\thmtextfont=\rm \thmtitletrue \begin{REMARK}}% + {\end{REMARK}} + \newenvironment{remarks}% + {\let\thmtextfont=\rm \thmtitletrue \begin{REMARKS}}% + {\end{REMARKS}} + \newenvironment{discussion}% + {\let\thmtextfont=\rm \thmtitlefalse \begin{DISCUSSION}}% + {\end{DISCUSSION}} + \newenvironment{algorithm}% + {\let\thmtextfont=\rm \thmtitletrue \begin{ALGORITHM}}% + {\end{ALGORITHM}} + \newenvironment{problem}% + {\let\thmtextfont=\rm \thmtitletrue \begin{PROBLEM}}% + {\end{PROBLEM}} + + \newenvironment{steps}{\begin{description}}{\end{description}} + \def\step[#1]{\item[\rm{\it Step\/}~#1]} + + % Change LaTeX's theorem format somewhat (cf. latex.tex) + \def\@begintheorem#1#2{\thmtextfont \trivlist \ifthmtitle + \item[\hskip \labelsep{\bf #1\ #2.}]\else + \item[\hskip \labelsep{\bf #2.}]\fi\thmstart} + \def\@opargbegintheorem#1#2#3{\thmtextfont \trivlist + \item[\hskip\labelsep{\bf #1\ #2\ {\rm(#3)}.}]\thmstart} + + % 3. Add an environment for proofs. + + % Proof environment with Halmos's tombstone + \newif\ifmathtomb \mathtombfalse + + %\def\tombstone{\unskip\penalty50 % Tombstone breaks to left margin. + % \enskip \vrule width.3333em height.7em depth.2em + % \ifmmode \global\mathtombtrue \else \global\mathtombfalse \fi} + + \def\tombstone{\unskip\penalty50 % Tombstone breaks to right margin. + \hskip 0pt plus-1fill \null\nobreak\hskip 0pt plus1fill + \enskip \vrule width.3333em height.7em depth.2em + \ifmmode \global\mathtombtrue \else \global\mathtombfalse \fi} + % Tombstone scores! + + \newenvironment{proof}% Use \tombstone explicitly in display math + {\futurelet\next\pr@oftext}% Optional argument for proof text. + {\ifmathtomb \else \tombstone \fi \par + \ifmathtomb \else \addvspace{\medskipamount}\fi \global\mathtombfalse} + \def\pr@oftext{\ifx\next[\let\temp\opr@@ftext\else\let\temp\pr@@ftext\fi\temp} + \def\pr@@ftext{\beginpr@@f{Proof}} + \def\opr@@ftext[#1]{\beginpr@@f{#1}} + \def\beginpr@@f#1{\par \addvspace{\bigskipamount}\widowpenalty=10000 + \noindent{\bf #1.}\hskip\labelsep\thmstretch % No widow lines in proofs. + \ignorespaces} + + % The text will be ``Proof'' unless an optional argument [] is used. + % The syntax should be TeX-equivalent to one of the following: + % + % \begin{proof} Text. \end{proof} + % \begin{proof} Text $$math.\tombstone$$ \end{proof} + + % 4. Change LaTeX's \cite command for bold citations separated by thinspaces. + + \def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{,\penalty\@m\thinspace }\@ifundefined + {b@\@citeb}{{\bf ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + \hbox{\bf\csname b@\@citeb\endcsname}}}{#1}} + %\hbox{\small\bf\csname b@\@citeb\endcsname}}}{#1}} % Give \small citation #'s. + + % 5. Add Plain TeX's \headline and \footline to plain pagestyle. + + \newtoks\headline \headline={\hfil} % headline is normally blank + \newtoks\footline \footline={\hss\rm\thepage\hss} + % footline is normally a centered page number in font \tenrm + + % Change \ps@plain to include running headline information (cf. latex.tex). + \def\ps@plain{\let\@mkboth\@gobbletwo + \def\@oddhead{\the\headline}\let\@evenhead\@oddhead + \def\@oddfoot{\the\footline}\let\@evenfoot\@oddfoot} + % Odd and even cases are lumped into one macro as in Plain TeX. + + \pagestyle{plain} % Run \pagestyle to incorporate changes. + + + % Plain TeX additions: + + % 1. Add \eqalign. + + \def\eqalign#1{\null\,\vcenter{\openup\jot\m@th + \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil + \crcr#1\crcr}}\,} + + % 2. \overfullrule=5pt (Plain TeX's setting). + + \overfullrule=5pt % Plain TeX's setting + + \makeatother + diff --git a/macros/latex209/contrib/misc/strukto.sty b/macros/latex209/contrib/misc/strukto.sty Binary files differnew file mode 100644 index 0000000000..2dc3c19046 --- /dev/null +++ b/macros/latex209/contrib/misc/strukto.sty diff --git a/macros/latex209/contrib/misc/subtabfg.sty b/macros/latex209/contrib/misc/subtabfg.sty new file mode 100644 index 0000000000..8b0560af92 --- /dev/null +++ b/macros/latex209/contrib/misc/subtabfg.sty @@ -0,0 +1,72 @@ +%% FILE: subtabfg in SYS2.TEX.PUB.ISULATEX.STYLES +%% AUTHOR: Erica M. S. Harris +%% DATE: August 1990 +%% DESCR: Style option for subnumbering tables and figures. +%% Use \subfigures to start subnumbering figures; \newsubfigure +%% to start a new set of subfigures; and \nosubfigures to turn +%% subfigure numbering off. These commands should be used outside the +%% figure environment. The subfigures can be labelled and referred to +%% as usual. If you want to label an entire set of subfigures use the +%% \figurelabel command after the \caption for one of the subfigures in +%% the set. +%% Similarly, Use \subtables to start subnumbering tables; +%% \newsubtable to start a new set of subtables; and \nosubtables +%% to turn subtable numbering off. These commands should be used +%% outside the table environment. The subtables can be labelled and +%% referred to as usual. If you want to label an entire set of +%% subtables use the \tablelabel command after the \caption for one +%% of the subtables in the set. +%% +%% MODS: +%% +\newcounter{mainfigure} + +\def\subfigures{\setcounter{mainfigure}{\c@figure} + \stepcounter{mainfigure} + \setcounter{figure}{0} + \global\let\oldthefigure\thefigure% + \@ifundefined{chapter}% + {\gdef\thefigure{\themainfigure\alph{figure}} + \global\let\thewholefigure\themainfigure} + {\gdef\thefigure{\thechapter.\themainfigure\alph{figure}} + \gdef\thewholefigure{\thechapter.\themainfigure}} + \global\let\@currentfigurelabel\thewholefigure} + +\def\newsubfigure{\stepcounter{mainfigure}\setcounter{figure}{0}} + +\def\nosubfigures{\setcounter{figure}{\c@mainfigure} + \@ifundefined{chapter}{\gdef\thefigure{\arabic{figure}}}% + {\gdef\thefigure{\thechapter.\arabic{figure}}}} + +\def\@currentfigurelabel{} + +\def\figurelabel#1{\@bsphack\if@filesw {\let\thepage\relax + \xdef\@gtempa{\write\@auxout{\string + \newlabel{#1}{{\@currentfigurelabel}{\thepage}}}}} + \@gtempa \if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack} + +\newcounter{maintable} + +\def\subtables{\setcounter{maintable}{\c@table} + \stepcounter{maintable} + \setcounter{table}{0} + \global\let\oldthetable\thetable% + \@ifundefined{chapter}% + {\gdef\thetable{\themaintable\alph{table}} + \global\let\thewholetable\themaintable} + {\gdef\thetable{\thechapter.\themaintable\alph{table}} + \gdef\thewholetable{\thechapter.\themaintable}} + \global\let\@currenttablelabel\thewholetable} + +\def\newsubtable{\stepcounter{maintable}\setcounter{table}{0}} + +\def\nosubtables{\setcounter{table}{\c@maintable} + \@ifundefined{chapter}{\gdef\thetable{\arabic{table}}}% + {\gdef\thetable{\thechapter.\arabic{table}}}} + +\def\@currenttablelabel{} + +\def\tablelabel#1{\@bsphack\if@filesw {\let\thepage\relax + \xdef\@gtempa{\write\@auxout{\string + \newlabel{#1}{{\@currenttablelabel}{\thepage}}}}} + \@gtempa \if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack} diff --git a/macros/latex209/contrib/misc/suthesis.sty b/macros/latex209/contrib/misc/suthesis.sty new file mode 100644 index 0000000000..bf27fe5cb0 --- /dev/null +++ b/macros/latex209/contrib/misc/suthesis.sty @@ -0,0 +1,265 @@ +% Stanford University PhD thesis style -- modifications to the report style +% For LaTeX version 2.09 +% +% Last edit Tue Sep 13 14:40:26 1988 +% Last edit by Joseph Pallas + +\typeout{Document Style Option `suthesis' <13 Sep 88>.} + +\long\def\comment#1{} +\comment{ + + Example of use: + \documentstyle[12pt,suthesis]{report} + \begin{document} + \title{How to Write Theses\\ + With Two Line Titles} + \author{John Henry Candidate} + \principaladviser{John Parker} + \firstreader{John Green} + \secondreader{John BigBooty\\(Another Department)} + + \beforepreface + \prefacesection{Preface} + This thesis tells you all you need to know about... + \prefacesection{Acknowledgements} + I would like to thank... + \afterpreface + + \chapter{Introduction} + ... + \chapter{Conclusions} + ... + \appendix + \chapter{A Long Proof} + ... + \bibliographystyle{plain} + \bibliography{mybib} + \end{document} + +Documentation: + This style file modifies the standard report style to follow the + Graduate Program Offices's "Directions for Preparing Doctoral + Dissertations". It sets the margins and interline spacing and + disallows page breaks at hyphens. + + The \beforepreface command creates the title page, a copyright page + (optionally), and a signature page. Then the user should put + preface section(s), using the \prefacesection{section title} + command. The \afterpreface command then produces the tables of + contents, tables and figures, and sets things up to start + the main body (on arabic page 1). + + The following commands can control what goes in the front matter + material: + + \title{thesis title} + \author{author's name} + \dept{author's department} + - Computer Science if omitted + \principaladviser{the principal advisor's name} + (or \principaladvisor, if you prefer advisor spelled with o) + \firstreader{the first reader's name} + \secondreader{the second reader's name} + \submitdate{month year in which submitted to GPO} + - date LaTeX'd if omitted + \copyrightyear{year degree conferred (next year if submitted in Dec.)} + - year LaTeX'd (or next year, in December) if omitted + \copyrighttrue or \copyrightfalse + - produce or don't produce a copyright page (true by default) + \figurespagetrue or \figurespagefalse + - produce or don't produce a List of Figures page + (true by default) + \tablespagetrue or \tablespagefalse + - produce or don't produce a List of Tables page + (true by default) + +This style uses interline spacing that is 1.3 times normal, except +in the figure and table environments where normal spacing is used. +That can be changed by doing: + \renewcommand{\baselinestretch}{1.6} +(or whatever you want instead of 1.6) +Unfortunately, that command probably won't take effect unless it comes +before the \begin{document} or after something like \small \normalsize. + +The example above shows the 12pt substyle being used. This seems to give +acceptable looking results, but it may be omitted to get smaller print. + +} + +% First thing we do is make sure that report has been loaded. A +% common error is to try to use suthesis as a documentstyle. +\@ifundefined{chapter}{\@latexerr{The `suthesis' option should be used +with the `report' document style}{You should probably read the +suthesis documentation.}}{} + +% We need 1" margins except on the binding edge, where it is 1 1/2" +% Theses are single-sided, so we don't care about \evensidemargin +\oddsidemargin 0.5in \evensidemargin 0in +\marginparwidth 40pt \marginparsep 10pt +\topmargin 0pt \headsep .5in +\textheight 8.1in \textwidth 6in + +% Disallow page breaks at hyphens (this will give some underfull vbox's, +% so an alternative is to use \brokenpenalty=100 and manually search +% for and fix such page breaks) +\brokenpenalty=10000 + +% Use 1.3 times the normal baseline-to-baseline skip +\renewcommand{\baselinestretch}{1.3} + +% Redefine the macro used for floats (including figures and tables) +% so that single spacing is used. +% (Note \def\figure{\@float{figure}set single spacing} doesn't work +% because figure has an optional argument) +\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}\@normalsize + \boxmaxdepth\z@ + \hsize\columnwidth \@parboxrestore} + +% Redefine the macro used for footnotes to use single spacing +\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}}} + +% \author, \title are defined in report; here are the rest of the +% front matter defining macros +\def\dept#1{\gdef\@dept{#1}} +\def\principaladviser#1{\gdef\@principaladviser{#1}} +\def\advis@r{Adviser} % default spelling +\def\principaladvisor#1{\gdef\@principaladviser{#1}\gdef\advis@r{Advisor}} +\def\firstreader#1{\gdef\@firstreader{#1}} +\def\secondreader#1{\gdef\@secondreader{#1}} +\def\submitdate#1{\gdef\@submitdate{#1}} +\def\copyrightyear#1{\gdef\@copyrightyear{#1}} % \author, \title in report +\def\@title{}\def\@author{}\def\@dept{computer science} +\def\@principaladviser{}\def\@firstreader{}\def\@secondreader{} +\def\@submitdate{\ifcase\the\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\the\year} +% Stanford says that December theses should have the next year as the +% copyright year +\ifnum\month=12 + \@tempcnta=\year \advance\@tempcnta by 1 + \edef\@copyrightyear{\number\the\@tempcnta} +\else + \def\@copyrightyear{\number\the\year} +\fi +\newif\ifcopyright \newif\iffigurespage \newif\iftablespage +\copyrighttrue \figurespagetrue \tablespagetrue + + +\def\titlep{% + \thispagestyle{empty}% + \null\vskip1in% + \begin{center} + \Large\uppercase\expandafter{\@title} + \end{center} + \vfill + \begin{center} + \sc a dissertation\\ + submitted to the department of + \lowercase\expandafter{\@dept}\\ + and the committee on graduate studies\\ + of stanford university\\ + in partial fulfillment of the requirements\\ + for the degree of\\ + doctor of philosophy + \end{center} + \vfill + \begin{center} + \rm By\\ + \@author\\ + \@submitdate\\ + \end{center}\vskip.5in\newpage} + +\def\copyrightpage{% + \null\vfill + \begin{center} + \large + \copyright\ Copyright \@copyrightyear\ by \@author\\ + All Rights Reserved + \end{center} + \vfill\newpage} + +\long\def\signature#1{% +\begin{center} +\begin{minipage}{4in} +\parindent=0pt +I certify that I have read this thesis and that in my opinion +it is fully adequate, in scope and in quality, as a dissertation for the degree +of Doctor of Philosophy. +\par +\vspace{.5in} +\hbox to 4in{\hfil\shortstack{\vrule width 3in height 0.4pt\\#1}} +\end{minipage} +\end{center}} + +\def\signaturepage{% + \signature{\@principaladviser\\(Principal \advis@r)} + \vfill + \signature\@firstreader + \vfill + \signature\@secondreader + \vfill + \begin{center} + \begin{minipage}{4in} + Approved for the University Committee on Graduate Studies:\par + \vspace{.5in} + \hbox to 4in{\hfil\shortstack{\vrule width 3in height 0.4pt\\ + Dean of Graduate Studies}} + \end{minipage} + \end{center}} + +\def\beforepreface{ + \pagenumbering{roman} + \pagestyle{plain} + \titlep + \ifcopyright\copyrightpage\fi + \signaturepage} + +\def\prefacesection#1{% + \chapter*{#1} + \addcontentsline{toc}{chapter}{#1}} + +\def\afterpreface{\newpage + \tableofcontents + \newpage + \iftablespage + \listoftables + \newpage + \fi + \iffigurespage + \listoffigures + \newpage + \fi + \pagenumbering{arabic} + \pagestyle{headings}} + +% Redefine \thebibliography to go to a new page and put an entry in the +% table of contents +\let\@ldthebibliography\thebibliography +\renewcommand{\thebibliography}[1]{\newpage + \addcontentsline{toc}{chapter}{Bibliography} + \@ldthebibliography{#1}} + +% Start out normal +\pagestyle{headings} + diff --git a/macros/latex209/contrib/misc/tabbingbox.tex b/macros/latex209/contrib/misc/tabbingbox.tex new file mode 100644 index 0000000000..e7e25b22cb --- /dev/null +++ b/macros/latex209/contrib/misc/tabbingbox.tex @@ -0,0 +1,79 @@ +% -*- Mode: TeX -*- + +\ifx\thisfileis\anUndefinedMacro\input maybeload \fi + +\thisfileis{<eb.tex.texlocal>tabbingbox} % abort loading if already loaded + +\input redefine % from texlocal + +% TABBING BOXES (LaTex) +% +% The \begin{tabbingbox}...\end{tabbingbox} environment saves +% a tabbing environment in a box. This is one way to make a +% box out of a bunch of lines and have the width of the +% box be equal to the width of the longest line. Naturally, +% tabbing commands are also available in the box, but they aren't +% used much. +% +% An optional position argument [t], [b], or [c] as for \parbox +% may be supplied. The default is [t]. +% +% A second optional argument [boxnumber] causes the box to be +% saved in the indicated box number, instead of being returned. +% Sample use of this form: \begin{tabbingbox}[b][0]... +% +% As a special feature, a [boxnumber] may have the form +% [G boxnumber] to indicate a global assignment. +% + +\makeatletter + +\newbox\@tabbingboxbox + +\def\tabbingbox{\@ifnextchar[{\@argXtabbingbox}%] +{\let\@tabboxnum\@tabbingboxbox\@tabbingbox[t]}} + +\def\@argXtabbingbox[#1]{\@ifnextchar + [{\@argYtabbingbox[#1]}{\let\@tabboxnum\@tabbingboxbox + \@tabbingbox[#1]}%] +} + +\def\@argYtabbingbox[#1][#2]{\def\@tabboxnum{#2}\@tabbingbox[#1]} + +\def\@tabbingbox[#1]{\global\setbox\@tabbingboxbox + \hbox\bgroup\begingroup\minipage[#1]{\z@}\begingroup\tabbing} + +% The weird stuff with \unvbox below patches up a [b]-positioned +% box, which for some reason gets final glue of zero that causes +% the vbox to have zero depth and get positioned funny. + +\def\endtabbingbox{\global\@minipagetrue\endtabbing\endgroup + \endminipage + \setbox\@tempboxa\lastbox + \ifdim \dp\@tempboxa=\z@ + \vbox{\unvbox\@tempboxa\unskip}\else\box\@tempboxa\fi + \global\@minipagefalse\endgroup + \egroup + \ifx\@tabboxnum\@tabbingboxbox\box\@tabboxnum + \else + \xdef\@snarftabbingbox + {\if G\expandafter\@car\@tabboxnum\@nil\relax + \global\setbox\expandafter\@cdr\@tabboxnum\relax\@nil + \else + \setbox\@tabboxnum\fi\box\@tabbingboxbox + }\aftergroup\@snarftabbingbox + \fi} + +%\def\endtabbingbox{\global\@minipagetrue\endtabbing\endgroup +% \endminipage\unskip\endgroup\egroup\global\@minipagefalse +% \ifx\@tabboxnum\@tabbingboxbox\box\@tabboxnum +% \else +% \xdef\@snarftabbingbox +% {\if G\expandafter\@car\@tabboxnum\@nil\relax +% \global\setbox\expandafter\@cdr\@tabboxnum\relax\@nil +% \else +% \setbox\@tabboxnum\fi\box\@tabbingboxbox +% }\aftergroup\@snarftabbingbox +% \fi} + +\makeatother diff --git a/macros/latex209/contrib/misc/tabverb.sty b/macros/latex209/contrib/misc/tabverb.sty new file mode 100644 index 0000000000..9daa0ec7f6 --- /dev/null +++ b/macros/latex209/contrib/misc/tabverb.sty @@ -0,0 +1,91 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Verbatim With Tabbing and Page Breaks +% +% Written by: +% Michael Fine +% Distributed Systems Architecture. +% September 1987 +% +% +% This environment is similar to the LaTeX verbatim environment but it +% interpretes tab characters as usually expected. It has the +% additional feature that a CTL-L in the verbatim environment invokes +% the LaTeX macro \newpage (thereby giving you some control over page +% breaks). +% +% There is also a command \inputverbatim which can be used to specify +% a file to be input and typeset in the verbatim environment. +% +% This does not and should be made to work correctly for verbatim* as +% well. Also, it should probably use a different name. +% +% Usage: +% +% \setlength{\tabwidth} % or +% \settowidth{\tabwidth}{text} +% % default is width of 8 characters of \normalsize\tt +% +% Then: +% \begin{verbatim} +% Verbatim text set in \tt font with ^L for page ejects +% and ^I for tabs +% \end{verbatim} +% +% or: +% \inputverbatim{filename} % input a file of text +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% +% A version message +% +\typeout{Tabbing Verbatim Style <September 29, 1987>} + +\newlength{\tabwidth} +\settowidth{\tabwidth}{\normalsize\tt mmmmmmmm} + % default is 8 characters of \tt font in \normalsize + +\begingroup +\catcode`\^^I=\active\def^^L{} + +\gdef\@newverbatim{\@verbatim + \def\par{\egroup\@@par\noindent + \@tempdima 0pt\hbox\bgroup{}}\obeylines + \let\ignorespaces\relax % for \@gobblecr + \catcode`\^^I\active + \def^^I{\egroup\setbox\@tempboxa\lastbox\@tempdimb \wd\@tempboxa + \box\@tempboxa + \advance\@tempdima by \@tempdimb \computeskip\penalty10000 + \hskip\@tempdimb\advance\@tempdima by \@tempdimb + \hbox\bgroup{}}\def^^L{\egroup\setbox\@tempboxa\lastbox + \@tempdimb\wd\@tempboxa + \ifdim\@tempdimb=0pt\else\box\@tempboxa\fi + {\let\par\@@par\newpage}\noindent\hbox\bgroup\@gobblecr}\relax + \def\computeskip{\@tempcnta 0\@tempdimb 0pt\loop + \ifdim \@tempdimb<\@tempdima + \advance\@tempdimb by \tabwidth \advance \@tempcnta1 \repeat + \ifdim\@tempdima=\@tempdimb \advance\@tempcnta1\fi + \@tempdimb\@tempcnta \tabwidth \advance \@tempdimb + by -\@tempdima}} + +\gdef\verbatim{\@newverbatim\frenchspacing\@vobeyspaces + \@xverbatim\noindent\hbox\bgroup\@gobblecr} + +\gdef\endverbatim{\egroup\setbox\@tempboxa\lastbox + \@tempdimb\wd\@tempboxa + \ifdim\@tempdimb=0pt\else\box\@tempboxa\fi + \let\par\@@par\endtrivlist} + +% +% Now we define \inputverbatim +% +% This is similar to \verbatim but does not need \@xverbatim trickery +% to delimit the begining and end of the verbatim text. + +\gdef\inputverbatim#1{{\@newverbatim\frenchspacing\@vobeyspaces + \noindent\hbox\bgroup\input{#1}\endverbatim}} + +\endgroup diff --git a/macros/latex209/contrib/misc/techreport.sty b/macros/latex209/contrib/misc/techreport.sty new file mode 100644 index 0000000000..582cd7f6e7 --- /dev/null +++ b/macros/latex209/contrib/misc/techreport.sty @@ -0,0 +1,379 @@ +%$% techreport.sty +%$% Technical Report style option to the USC Thesis/Dissertation +%$% document-style. +%$% $Header: techreport.sty,v 1.7 92/08/13 14:25:21 sdc Exp $ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% @LaTeX-style-file{ +%%% Author = "Steven Douglas Cochran", +%%% Version = "1.7", +%%% Date = "13 August 1992", +%%% Time = "14:25:21 EDT", +%%% Filename = "techreport.sty", +%%% Address = "Digital Mapping Laboratory +%%% School of Computer Science +%%% Carnegie-Mellon University +%%% 5000 Forbes Avenue +%%% Pittsburgh, PA 15213-3890 +%%% USA", +%%% Telephone = "(412) 268-5654", +%%% FAX = "", +%%% checksum = "22179 335 1194 11016", +%%% Email = "sdc+@CS.CMU.EDU (Internet)", +%%% CodeTable = "ISO/ASCII", +%%% Keywords = "LaTeX, Technical Report", +%%% Archives = "shsu*", +%%% Supported = "yes", +%%% Abstract = "LaTeX document-style option to the +%%% USCthesis style for converting a thesis +%%% or dissertation into a technical report." +%%% Note = "Requires Tomas Rokicki's `rotate' style +%%% option (or equivalent) if the spine-art +%%% option is used. +%%% SeeAlso = "USCthesis.sty", +%%% DocString = "The checksum field above contains a CRC-16 +%%% the checksum as the first value, followed +%%% by 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: techreport.sty,v $ +%$% Revision 1.7 92/08/13 14:25:21 sdc +%$% Changed the standard title page to use \@university instead of a +%$% hardcoded name. The standard (Thesis/Dissertation) titlepage may +%$% now be replaced by redefining \customtitlepage. Cleaned-up the +%$% code and comments a little. +%$% +%$% Revision 1.6 91/03/23 01:36:48 cochran +%$% Updated to allow the multiple volumes change to USCthesis. +%$% Corrected bug which caused the chapters to be allowed to begin on +%$% an even page if the preface section was not processed. +%$% +%$% Revision 1.5 1991/03/20 06:03:05 cochran +%$% Modified to auto-load and use the standard rotate style. +%$% +%$% Revision 1.4 1991/03/15 04:51:49 cochran +%$% Modified cover page so that it is centered. Added a "(top of +%$% spine)" message to the spine-art page. (Maybe in the future the +%$% Printer won't get it upside-down!) +%$% +%$% Revision 1.3 1991/02/09 01:04:02 cochran +%$% Fixed bug in interaction with USCthesis and added the ability +%$% to change the layout of the copyright line. +%$% +%$% Revision 1.1 90/12/03 12:33:31 cochran +%$% Initial revision. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%$% Usage: \documentstyle[...,twoside,techreport,...]{USCthesis} +%%% +%$% and add the following lines before the \begin{preface}: +%%% +%$% \reportnumber{IRIS 256} +%$% \acknowledgment{This research was sponsored by ...} +%$% \address{Institute for Robotics and Intelligent Systems\\ +%$% School of Engineering\\ +%$% ...} +%%% +%%% An additional command has been added which allows the printing +%%% of the art for the spine of the document. It must be used prior +%%% to the \begin{preface}. +%%% +%%% \printspinetrue +%%% +%%% Also there is an optional argument in the \pageleft macro in the +%%% USCthesis style which allows the gutter margin to be adjusted +%%% for paper that is not 8.5in across: +%%% +%%% \paperleft[-5.75pt]{1.50in} +%%% +%%% (However, you will have to know how the printer aligns the pages +%%% to make use of this feature.) +%%% +%%% If the copyright notice is not correct according to your +%%% organization's practice. You can (re)define the \thecopyright +%%% macro to give the correct form (the variables \@copyrightyrear +%%% and \@author should have useful values in them). +%%% +%%% If you want the titlepage (i.e. the page inside the cover) to be +%%% different than the standard (Thesis/Dissertation) one then you +%%% can (re)define the \customtitlepage macro to be what you want. +%%% Currently it creates a page that is a cross between the +%%% techreport cover and a dissertation titlepage and includes the +%%% following information: \@reportnumber, \@title, \@author, +%%% \@university, \@majorfield, \@address, \@submitdate, +%%% \@acknowledgementtext and either \@mastersdegree or +%%% \@doctorsdegree (depending on the switch \ifthesis). \@volume +%%% is included if non-empty. One example of a "regular" techreport +%%% titlepage would be to add the following to your techreport +%%% between the \documentstyle and the \begin{document}. +%%% +%%% \makeatletter +%%% \def\customtitlepage{% +%%% \vbox{% +%%% \null +%%% \vskip 1.69 true in +%%% \hbox to 4.57in{% +%%% \vbox to 2.125in{% +%%% \vss +%%% \begin{center}% +%%% \vskip 0.20 true in plus 1fil +%%% {\TechTitleSize \@reportnumber \par}% +%%% \vskip 0.20 true in plus 2fil +%%% {\TechTitleSize \@title\@acknowledgmentmark \par}% +%%% \ifx\@volume\@empty\else +%%% \vskip 0.20 true in plus 1fil +%%% {\TechRegularSize \@volume \par}% +%%% \fi +%%% \vskip 0.20 true in plus 2fil +%%% {\TechRegularSize\sl \@author \par}% +%%% \vskip 0.20 true in plus 1fil +%%% \end{center}% +%%% \vss}}% +%%% \vfill +%%% \ifcopyright +%%% \begin{center}% +%%% \thecopyright +%%% \end{center}% +%%% \fi +%%% \@acknowledgmenttext +%%% \vss}} +%%% \makeatother +%%% +%%% With either the default or the above \customtitlepage, you can +%%% throw out the coverpage and the spine and use a printed cover +%%% with a cutout box to show through the title, report number and +%%% author. +%%% +%$% NOTE: This style requires a local rotate.sty that contains the +%$% macro \rotr. If this style option is not available, the +%$% \printspinetrue option will not work. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% +%% Allow larger font sizes (The normal large sizes are disabled in the +%% USCthesis style. +%% +\def\TechTitleSize{\@setsize\TechTitleSize{25pt}\xxpt\@xxpt} +\def\TechRegularSize{\@setsize\TechRegularSize{18pt}\xivpt\@xivpt} + +%% +%% Now define the functions to handle the titlepage blips. +%% +\def\reportnumber#1{% + \gdef\@reportnumber{#1}} + +\def\@acknowledgmentmark{} +\def\@acknowledgmenttext{} +\def\acknowledgment#1{% + \gdef\@acknowledgmentmark{$^{1}$}% + \gdef\@acknowledgmenttext{% + \vbox{% + \hrule width 2.5in + \vskip 3pt + \parbox{\textwidth}{\footnotesize \qquad $^{1}$#1}}}} + +\def\address#1{% + \gdef\@address{#1}} + +%% +%% Next set up for the control of the spine art +%% +\newif\ifprintspine +\printspinefalse + +%% +%% Allow the copyright message to be changed. +%% +\def\thecopyright{% + \normalsize Copyright\ \ \copyright\ \ \@copyrightyear\ \ \@author} + +%% +%% Now, we define the title (etc) page(s) +%% +\def\customtitlepage{% + \vbox to \textheight{% + \null + \vskip 1.69 true in + \hbox to 4.57in{% + \vbox to 2.125in{% + \vss + \begin{center}% + \vskip 0.20 true in plus 1fil + {\TechTitleSize \@reportnumber \par}% + \vskip 0.20 true in plus 2fil + {\TechTitleSize \@title\@acknowledgmentmark \par}% + \ifx\@volume\@empty\else + \vskip 0.20 true in plus 1fil + {\TechRegularSize \@volume \par}% + \fi + \vskip 0.20 true in plus 2fil + {\TechRegularSize\sl \@author \par}% + \vskip 0.20 true in plus 1fil + \end{center}% + \vss}}% + \vskip 0.15 true in plus 0.05 true in minus 0.05 true in + \begin{center}% + {\ifthesis + A Thesis Presented to the% + \else + A Dissertation Presented to the% + \fi\\ + FACULTY OF THE \@schoolname\\ + \@university\\ + In Partial Fulfillment of the Requirements for the Degree\\ + \ifthesis + \@mastersdegree + \else + \@doctorsdegree + \fi\\ + \ifshowmajorfield + (\@majorfield)% + \fi} + \vskip 0.35 true in plus 0.11 true in minus 0.11 true in + \@address \par + \vskip 0.25 true in plus 0.08 true in minus 0.08 true in + {\bf \small \@submitdate \par}% should be just month and year + \end{center}% + \par + \vfill + \ifcopyright + \begin{center}% + \thecopyright + \end{center}% + \fi + \@acknowledgmenttext}} + +\def\maketitle{% + \begin{titlepage}% + \setcounter{page}{0}% + \advance\evensidemargin 0.25in% + \null + \vskip 1.54 true in + \hbox to 4.3125in{% + \vbox to 2.125in{% + \vss + \begin{center}% + \vskip 0.20 true in plus 1fil + {\TechTitleSize \@reportnumber \par}% + \vskip 0.20 true in plus 2fil + {\TechTitleSize \@title \par}% + \ifx\@volume\@empty\else + \vskip 0.20 true in plus 1fil + {\TechRegularSize \@volume \par}% + \fi + \vskip 0.20 true in plus 2fil + {\TechRegularSize\sl \@author \par}% + \vskip 0.20 true in plus 1fil + \end{center}% + \vss}}% + \vskip 0.875 true in + \begin{center}% + {\TechRegularSize \@address \par}% + \vskip .25 true in + {\TechRegularSize \@submitdate \par}% Should be just month and year + \end{center}% + \par + \vfill + \newpage + \advance\evensidemargin -0.25in% + %% + \ifprintspine + \makeatletter + %% Load the rotate functions if not defined. + \expandafter\ifx\csname rotr\endcsname\relax + \@input{rotate.sty}% + \fi + %% If necessary, create a temporary box for use with \rotr. + \expandafter\ifx\csname @rotbox\endcsname\relax + \newbox\@rotbox + \fi + \makeatother + \setcounter{page}{1}% + \rlap{% + \hbox to \textwidth{% + \TechRegularSize\hfil (Top of Spine)\hfil}}% + \nobreak + {\setbox\@rotbox=\hbox to \textheight{% + \hfil + {\TechTitleSize \@reportnumber}% + \hfil + \hfil + {\TechTitleSize \@author}% + \hfil} + \rotr\@rotbox}% + \newpage + \fi + %% + \setcounter{page}{1}% + \customtitlepage + \end{titlepage}} + +%% +%% Redefine the preface and chapter so that the latter starts on odd pages +%% (if two-sided and if past the preface section) and the former does +%% not have this attribute (since each section of the preface +%% environment acts like a chapter). +%% +\newif\if@twosidebody +\@twosidebodytrue % Default is true + +% Update the PREFACE environment. The titlepage is generated when the +% environment is first entered and the numbering is roman within the preface. +% The \endpreface switches to arabic numbering. +\def\preface{% + \newpage + \if@twoside % Turn off blank even pages during the preface. + \global\@twosidebodyfalse + \fi + \pagenumbering{roman}% + \pagestyle{empty}% + \begin{singlespace}% + \ifproposal + \makeproptitle + \setcounter{page}{1}% + \addtocounter{page}{\@startpageA}% Advance page counter for title page. + \else + \maketitle + \setcounter{page}{1}% + \addtocounter{page}{\@startpageA}% Advance page counter for (signature + \fi % and) title. At USC, the signature + \newpage % page is not counted! + \ifx\@volume\@empty\else % Add Volume ID to contents if present. + \addtocontents{toc}{\protect\contentsline{part}{\@volume}{}}% + \fi + \end{singlespace}% + \pagestyle{plain}} + +\def\endpreface{% + \clearpage + \global\@twosidebodytrue + \if@twoside + \ifodd \c@page \else + \hbox{}% Add a blank page at the end of the preface + \newpage + \fi + \fi + \pagenumbering{arabic}% + \pagestyle{plain}% + \setcounter{page}{\@startpageB}} + +% +% Now, update the chapter to check for even/odd pages. +% +\def\chapter{% + \if@twoside + \if@twosidebody + \cleardoublepage % Start each chapter on an odd page + \else + \clearpage + \fi + \else + \clearpage + \fi + \thispagestyle{plain} + \global\@topnum\z@ + \@afterindentfalse + \secdef + \@chapter + \@schapter} diff --git a/macros/latex209/contrib/misc/tgrind.sty b/macros/latex209/contrib/misc/tgrind.sty new file mode 100644 index 0000000000..dc567bf6ca --- /dev/null +++ b/macros/latex209/contrib/misc/tgrind.sty @@ -0,0 +1,167 @@ +% LaTeX tgrind environment + +% Based on Van Jacobson's ``tgrindmac'', a macro package for TeX grinding +% Our job here is to simplify it quite a bit and make it conform to LaTeX + +\newif\ifcomment\newif\ifstring +\newcount\linecount\newcount\linenext +\newbox\linesofar +\newdimen\TBwid +\newdimen\ts +\newbox\tbox + +\def\tgrind{% +% Stuff we ignore for right now. +\let\Head=\@gobble +\def\File##1,##2,##3{} +\let\Proc=\@gobble +\let\ProcCont=\@gobble +% +% Each formfeed in the input is replaced by a "\NewPage" macro. If +% you really want a page break here, define this as "\vfill\eject". +\def\NewPage{\filbreak\bigskip} +% +% Each line of the program text is enclosed by a "\L{...}". We turn +% each line into an hbox of size hsize. If we saw a procedure name somewhere +% in the line (i.e., "procbox" is not null), we right justify "procbox" +% on the line. Every 10 lines we output a small, right justified line number. +\def\L##1{\par\hbox to\hsize{\CF\strut\global\advance\linecount by1 +##1\hss\linebox}} +% +\linecount=0 +\linenext=9 +\def\linebox{\ifnum\linecount>\linenext\global\advance\linenext by10 +\hbox{\sevrm\the\linecount}\fi} +% +% The following weirdness is to deal with tabs. "Pieces" of a line +% between tabs are output as "\LB{...}". E.g., a line with a tab at +% column 16 would be output as "\LB{xxx}\Tab{16}\LB{yyy}". (Actually, to +% reduce the number of characters in the .tex file the \Tab macro +% supplies the 2nd & subsequent \LB's.) We accumulate the LB stuff in an +% hbox. When we see a Tab, we grab this hbox (using "\lastbox") and turn +% it into a box that extends to the tab position. We stash this box in +% "\linesofar" & use "\everyhbox" to get \linesofar concatenated onto the +% front of the next piece of the line. (There must be a better way of +% doing tabs [cf., the Plain.tex tab macros] but I'm not not enough of a +% TeX wizard to come up with it. Suggestions would be appreciated.) +\def\LB{\CF\hbox} +\setbox\linesofar=\null +\everyhbox={\box\linesofar} +\def\Tab##1{\setbox\tbox=\lastbox\TBwid=1\wd\tbox\advance\TBwid by 1\ts +\ifdim\TBwid>##1\ts +\setbox\linesofar=\hbox{\box\tbox\space}\else +\setbox\linesofar=\hbox to ##1\ts{\box\tbox\hfil}\fi\LB} +% +% A normal space is too thin for code listings. We make spaces & tabs +% be in "\ts" units (which are the width of a "0" in the current font). +\setbox\tbox=\hbox{0} \ts=1\wd\tbox \setbox\tbox=\hbox{\hskip 1\ts} +\def\space{\hskip 1\ts\relax} +% +% Font changing stuff for keywords, comments & strings. We put keywords +% in boldface, comments in text-italic & strings in typewriter. Since +% we're usually changing the font inside of a \LB macro, we remember the +% current font in \CF & stick a \CF at the start of each new box. +% Also, the characters " and ' behave differently in comments than in +% code, and others behave differently in strings than in code. +\let\CF=\rm +\def\K##1{{\bf ##1}} % Keyword +\def\C{\it\global\let\CF=\it\global\commenttrue\relax} % Comment Start +\def\CE{\rm\global\let\CF=\rm\global\commentfalse\relax}% Comment End +\def\S{\tt\global\let\CF=\tt\global\stringtrue\relax} % String Start +\def\SE{\rm\global\let\CF=\rm\global\stringfalse\relax} % String End +% +% Special characters. +\def\{{\ifmmode\lbrace\else\ifstring{\char'173}\else$\lbrace$\fi\fi} +\def\}{\ifmmode\rbrace\else\ifstring{\char'175}\else$\rbrace$\fi\fi} +\def\!{\ifmmode\backslash\else\ifstring{\char'134}\else$\backslash$\fi\fi} +\def\|{\ifmmode|\else\ifstring{\char'174}\else$|$\fi\fi} +\def\<{\ifmmode<\else\ifstring<\else$<$\fi\fi} +\def\>{\ifmmode>\else\ifstring>\else$>$\fi\fi} +\def\/{\ifmmode/\else\ifstring/\else$/$\fi\fi} +\def\-{\ifmmode-\else\ifstring-\else$-$\fi\fi} +\def\_{\ifstring{\char'137}\else\underbar{\ }\fi} +\def\&{{\char'046}} +\def\#{{\char'043}} +\def\%{{\char'045}} +\def\~{{\char'176}} +\def\"{\ifcomment''\else{\tt\char'042}\fi} +\def\'{\ifcomment'\else{\tt\char'047}\fi} +\def\^{{\char'136}} +\def\${{\rm\char'044}} +% +\raggedright\obeyspaces%\let =\space% +} + +% \tagrind*[FLOAT]{FILE}{CAPTION}{LABEL} +% * optional +% FLOAT float options +% FILE reads LaTeXgrind input in file FILE +% CAPTION for list of figures +% LABEL for \ref and \pageref +\def\tagrind{\@ifstar{\@stagrind}{\@tagrind}} + +\def\@tagrind{\@ifnextchar[{\@@tagrind}{\@@tagrind[t]}} +\def\@stagrind{\@ifnextchar[{\@@stagrind}{\@@stagrind[t]}} + +\def\@@tagrind[#1]#2#3#4{% + \begin{figure}[#1] + \hrule + \vskip .5\baselineskip + \begin{minipage}\columnwidth\small + \begin{tgrind} + \input #2\relax + \end{tgrind} + \end{minipage} + \vskip .5\baselineskip plus .5\baselineskip + \begingroup + \setbox\z@=\hbox{#4}% + \ifdim\wd\z@>\z@ + \caption{#3}% + \label{#4}% + \else + \captcont{#3}% + \fi + \endgroup + \vskip 2pt + \hrule + \end{figure} +} + +\def\@@stagrind[#1]#2#3#4{% + \begin{figure*}[#1] + \hrule + \vskip .5\baselineskip + \begin{minipage}\textwidth\small + \begin{tgrind} + \input #2\relax + \end{tgrind} + \end{minipage} + \vskip .5\baselineskip plus .5\baselineskip + \begingroup + \setbox\z@=\hbox{#4}% + \ifdim\wd\z@>\z@ + \caption{#3}% + \label{#4}% + \else + \captcont{#3}% + \fi + \endgroup + \vskip 2pt + \hrule + \end{figure*} +} + + +\def\tgrindfile#1{% + \par\addvspace{0.1in} + \hrule + \vskip .5\baselineskip + \begin{footnotesize} + \begin{tgrind} + \input #1\relax + \end{tgrind} + \end{footnotesize} + \vskip .5\baselineskip + \hrule + \addvspace{0.1in} +} diff --git a/macros/latex209/contrib/misc/thebib-plus.readme b/macros/latex209/contrib/misc/thebib-plus.readme new file mode 100644 index 0000000000..18cf03f757 --- /dev/null +++ b/macros/latex209/contrib/misc/thebib-plus.readme @@ -0,0 +1,22 @@ +thebib-plus.sty - This is for people who are using thebibliography or + \bibliography as defined in the standard LaTeX styles, + but who want the extra features described below. + +With this style-option: +- the default title is "References", but can be changed by putting a + \renewcommand{\bibtitle}{...} command before \begin{thebibliography} +- if the document style is such that \pagestyle{headings} is used, + "REFERENCES" goes in the page-heading by default, but can be changed + with \renewcommand{\bibheadtitle}{...} +- thebibliography gives an \addcontentsline command, so that \tableofcontents + puts the bibliography (with appropriate title) in the table of contents. + +The files are: +apalike-plus.sty - This is for people who want something like apalike.sty + (perhaps because they are using apalike.bst), but who + want the extra features described above. +authordate1-4.sty - This is for people who are using one of the BibTeX + author-date style files authordate1.bst, ... , + authordate4.bst. It redefines \cite and thebibliography, + and also defines a \shortcite command such that if \cite + gives "(Smith, 1970)", \shortcite gives "(1970)". diff --git a/macros/latex209/contrib/misc/thebib-plus.sty b/macros/latex209/contrib/misc/thebib-plus.sty new file mode 100644 index 0000000000..ecd0865e68 --- /dev/null +++ b/macros/latex209/contrib/misc/thebib-plus.sty @@ -0,0 +1,46 @@ +% This style-option file, thebib-plus.sty, is based on code taken from +% article.doc and report.doc/book.doc. +% +% It differs from the standard code in that: +% - a command \bibtitle is defined, to generate the bibliography title +% - a command \bibheadtitle is defined, to generate the text to be used +% by \pagestyle{headings} +% - \bibtitle and \bibheadtitle are set to generate "References" and +% "REFERENCES" respectively. +% - an \addcontentsline{toc}{...}{\bibtitle} command is issued. +% Thus: +% - the default bibliography title is "References", but can be changed by +% having \renewcommand{\bibtitle}{...} before \begin{thebibliography} +% or \bibliography +% - the default page header text is "REFERENCES", but can be changed by +% \renewcommand{\bibheadtitle}{...} +% - \tableofcontents will give a table of contents that mentions the +% bibliography. +% +% David Rhead +% Cripps Computing Centre +% February 1990 + +% Define default title and page-head text. +% +\def\bibtitle{References} +\def\bibheadtitle{REFERENCES} + +\@ifundefined{chapter}{\def\thebibliography#1{\section*{\bibtitle\@mkboth + {\bibheadtitle}{\bibheadtitle}} + \addcontentsline{toc}{section}{\bibtitle}\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}}% +{\def\thebibliography#1{\chapter*{\bibtitle\@mkboth + {\bibheadtitle}{\bibheadtitle}} + \addcontentsline{toc}{chapter}{\bibtitle}\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}} diff --git a/macros/latex209/contrib/misc/threecolumn.sty b/macros/latex209/contrib/misc/threecolumn.sty new file mode 100644 index 0000000000..df9045bee2 --- /dev/null +++ b/macros/latex209/contrib/misc/threecolumn.sty @@ -0,0 +1,182 @@ +% Document sub-style threecolumn.sty May 23, 1989 +% +% Author: George D. Greenwade, Director, Center for Business and Economic +% Research, Sam Houston State University, Huntsville, TX 77341-2056 +% Voice: (409) 294-1518 Bitnet: BED_GDG@SHSU.BITNET +% +% Date of Release: May 23, 1989 (original version) +% Revision History: +% +% Purpose: To create LaTeX output in three columns without corrupting the +% general uses of LaTeX. This version is not suggested for use unless the +% ENTIRE DOCUMENT is to be in a three column output with no multiple column +% floats. +% +% Usage: Preamble: \documentstyle[...,threecolumn]{...} +% In text: \threecolumn +% +% Features: Addition of \photo{height}{caption} to create an empty box of the +% dimension \columnwidth wide and specified height (#1), with a caption below +% set in the \sl font. Height MUST be specified, caption may be blank, but +% must be left as a null entry (i.e., \photo{2in}{} for a 2-inch blank space). +% \photo is placed on a minipage within a table[ht]. The caption is photo- +% specific and does not step the table counter (as best as I can tell). +% +% Known Limitations (which would be nice ot fix): May 23, 1989 +% (1) \threecolumn does NOT presently handle MULTIPLE COLUMN table and figure +% floats properly, but does properly handle footnotes; however, there are +% no apparent float handling problem in \twocolumn or \onecolumn. +% (2) Switching from \onecolumn to \twocolumn and \onecolumn to \threecolumn +% behave properly. Switching from \threecolumn to \twocolumn, +% \threecolumn to \onecolumn, \twocolumn to \theeecolumn, and \twocolumn +% to \onecolumn generates a blank (but numbered) page. As a rule, +% \twocolumn presents strange output results in this sub-style. +% (3) \maketitle is inoperable in \threecolumn. +% +% Copyright (c) 1989 by George D. Greenwade +% 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. +% +% Please forward all fixes and improvements which do not otherwise corrupt the +% operation of the LaTeX document processing program to the author. +\typeout{Document Style Option 'threecolumn'. Released 23 May 1989} + +\hoffset -.4in % Generalized page layout for three column +\voffset -.3in % output. Certainly, these are subject to +\columnsep 15pt % customization, but these definitions seem to +\textwidth 7.2in % provide efficient default margins. +\textheight 9.5in % +\topmargin 0pt % +\headsep 0pt % +\headheight 0pt % +\oddsidemargin 0pt % +\pretolerance=500 % Needed pretolerance and tolerance to assure +\tolerance=10000 % text generally fits the columns +\doublehyphendemerits=100000 % Inhibit consecutive line hyphens +\brokenpenalty=10000 % Inhibit broken words across columns/pages +\widowpenalty=10000 % Inhibit widows at bottom of page +\clubpenalty=10000 % Inhibit orphans at top of page + +\newif\if@threecolumn \@threecolumnfalse % New ifs used in routine +\newif\if@secondcolumn \@secondcolumnfalse % +\newif\if@thirdcolumn \@thirdcolumnfalse % +\newbox\@centercolumn % New box to place center column +\newdimen\photoblock \photoblock=0pt % New dimension used in \photo + +\def\onecolumn{\clearpage % Redefine \onecolumn without corruption + \global\columnwidth\textwidth + \global\hsize\columnwidth \global\linewidth\columnwidth + \global\@twocolumnfalse \global\@threecolumnfalse + \global\@secondcolumnfalse \global\@thirdcolumnfalse + \@floatplacement} + +\def\twocolumn{\clearpage % Redefine \twocolumn without corruption + \global\columnwidth\textwidth + \global\advance\columnwidth -\columnsep \global\divide\columnwidth\tw@ + \global\hsize\columnwidth \global\linewidth\columnwidth + \global\@twocolumntrue \global\@threecolumnfalse + \global\@firstcolumntrue \global\@secondcolumnfalse + \global\@thirdcolumnfalse + \@dblfloatplacement\@ifnextchar[{\@topnewpage}{}} + +\def\threecolumn{\clearpage % Define \threeecolumn (very rough; + \global\columnwidth\textwidth % handles floats poorly, if at all) + \global\advance\columnwidth -\columnsep + \global\advance\columnwidth -\columnsep \global\divide\columnwidth\thr@@ + \global\hsize\columnwidth \global\linewidth\columnwidth + \global\@twocolumnfalse \global\@threecolumntrue \global\@firstcolumntrue + \global\@secondcolumnfalse \global\@thirdcolumnfalse + \@dblfloatplacement\@ifnextchar[{\@topnewpage}{}} + +\def\@doclearpagethree{\ifvoid\footins % Define variation of \@doclearpage + \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa +%WAS \setbox\@tempboxa\box\@ccl + \setbox\@tempboxa\box\@cclv + \xdef\@deferlist{\@toplist\@botlist + \@deferlist}\gdef\@toplist{}\gdef\@botlist{}\global\@colroom\@colht + \ifx\@currlist + \@empty\else\@latexerr{Float(s) + lost}\@ehb\gdef\@currlist{}\fi + \@makefcolumn\@deferlist + \@whilesw\if@fcolmade \fi{\@opcol + \@makefcolumn\@deferlist}\if@threecolumn + \if@firstcolumn + \xdef\@dbldeferlist{\@dbltoplist + \@dbldeferlist}\gdef\@dbltoplist{}\global\@colht\textheight + \begingroup \@dblfloatplacement \@makefcolumn\@dbldeferlist + \@whilesw\if@fcolmade \fi \endgroup + \if@secondcolumn + {\@outputpage\@makefcolumn\@dbldeferlist} \fi \endgroup + \else \vbox{}\clearpage + \fi\fi + \else\setbox\@cclv\vbox{\box\@cclv\vfil}\@makecol\@opcol + \clearpage + \fi} + +\def\@specialoutput{\ifnum\outputpenalty > -\@Mii % Redefine \@specialoutput + \if@threecolumn \@doclearpagethree % to handle \threecolumn + \else \@doclearpage \fi % environment. + \else + \ifnum \outputpenalty <-\@Miii + \ifnum\outputpenalty<-\@MM \deadcycles\z@\fi + \global\setbox\@holdpg\vbox{\unvbox\@cclv} +%WAS: \else \setbox\@tempboxa\box\@ccl + \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@ + \@addtocurcol\else\@addmarginpar\fi}\@latexbug + \ifnum \outputpenalty <\z@ \penalty \z@ \fi + \fi\fi} + +\def\@opcol{\global\@mparbottom\z@ % Redefine \@opcol to handle \threecolumn + \if@twocolumn\@outputdblcol \fi % environment without corruption + \if@threecolumn\@outputtplcol\else + \@outputpage \global\@colht\textheight \fi} + +\def\@skipcolumn{\if@firstcolumn % Tentatively define \@skipcolumn (for future + \global\@firstcolumnfalse % use in two-column-wide material in the + \global\@secondcolumnfalse % \threecolumn environment) NOT EMPLOYED! + \global\@thirdcolumntrue \fi + \if@secondcolumn \global\@firstcolumntrue \global\@secondcolumnfalse + \global\@thirdcolumnfalse \fi} + +\def\@outputtplcol{\if@firstcolumn % Define \@outputtplcol (analogous to + \global\@firstcolumnfalse % \@outputdblcol, but for \threecolumn) + \global\@secondcolumntrue \global\@thirdcolumnfalse + \global\setbox\@leftcolumn\box\@outputbox +\else + \if@secondcolumn \global\@secondcolumnfalse \global\@thirdcolumntrue + \global\setbox\@centercolumn\box\@outputbox +\else +\global\@thirdcolumnfalse \global\@firstcolumntrue + \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth + {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil +\hbox to\columnwidth + {\hss \box\@centercolumn \hss}\hfil \vrule width\columnseprule\hfil + \hbox to\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats + \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn + \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup + \fi \fi} + +\def\photoblocksize{\global\photoblock=\columnwidth % Define width of the + \advance \photoblock -\columnsep % photo block + \if@threecolumn \advance \photoblock -\columnsep \fi} + +\def\photo#1#2{\photoblocksize % Define \photo{height}{caption} as floating + \begin{table}[ht] % blank space for photo insertions to be used +\begin{minipage}{\photoblock} % in final paste-up. +\rule{0pt}{#1} \\ % #1 is height +\end{minipage} % width defaults to column width +\begin{center} {\sl \ #2} % #2 is caption set in the \sl font face +\end{center} +\end{table}} diff --git a/macros/latex209/contrib/misc/timetab.sty b/macros/latex209/contrib/misc/timetab.sty new file mode 100644 index 0000000000..8e6969532f --- /dev/null +++ b/macros/latex209/contrib/misc/timetab.sty @@ -0,0 +1,93 @@ +%% +%% TimeTab Style by Tobias Oetiker Created 1993-4-19 +%% >>>>>>>>>>BETA VERSION <<<<<<<<<<<<<<<<<<<<<<<<<<< +%% +%% Works Best with NFSS installed ... (but works anyway) +%% +%% Comments to oetiker@stud.ee.ethz.ch please +%% +%% This Style implements a new environment to create +%% timetables as in the example below. +%% +%% +%% Environment: timetab{Unitlength}% +%% {Horizontal Boxes}{Vetical Boxes}% +%% {X Box Size}{Y Box Size} +%% Commands: \Lek{X Location}{Y Location}{Vertical Size in Boxes}{Text} +%% \BLek similar to \Lek but with bold and larger Font. +%% +%% Example: to create a Time Table like This: +%% _______ ________ ________ +%% | Time | | | +%% |_______| Other |________| +%% | | Field | | +%% | Cente |________| | +%% | TxT | | | +%% |_______| | 4.Fie | +%% | | | | +%% | |________| | +%% | | | | +%% |_______|________|________| +%% +%% Enter: +%% \documentstyle[timetab]{article} +%% \begin{document} +%% \begin{timetab}{0.8cm}{3}{5}{3}{1} +%% \BLek{0}{0}{1}{Time} +%% \Lek{1}{0}{2}{Other\\Filed} +%% \Lek{0}{1}{2}{Cente\\TxT} +%% \Lek{1}{2}{2}{} +%% \Lek{2}{1}{4}{4.Fie} +%% \end{timetab} +%% \end{document} +%% +%% +%% 1993-4-19 Version 0.1 Initial Creation of this Style +%% +\newcount\tmfx +\newcount\tmfy +\newcount\tmfh +\newcount\XNR +\newcount\YNR +\newcount\Breite +\newcount\Hoehe +\newcount\THoehe +\newcount\TBreite + +\newenvironment{timetab}[5]{% +\setlength{\unitlength}{#1} +\XNR=#2 % Number of Boxes Horizontal +\YNR=#3 % Number of Boxes Vertical +\Breite=#4 % X Size of a Box +\Hoehe=#5 % Y Size of a Box +\THoehe=\Hoehe +\multiply \THoehe by \YNR +\TBreite=\Breite +\multiply \TBreite by \XNR +\begin{picture}(\TBreite,\THoehe)(0,-\THoehe) +\put(0,0){\line(1,0){\TBreite}} +\put(0,-\THoehe){\line(1,0){\TBreite}} + +\put(0,0){\line(0,-1){\THoehe}} +\multiput(\Breite,0)(\Breite,0){#2}{\line(0,-1){\THoehe}}% +}{\end{picture}} + +\newcommand{\Lek}[4]{% + \tmfh=#3 + \multiply \tmfh by \Hoehe + \tmfx=#1 + \multiply \tmfx by \Breite + \tmfy=#2 + \advance \tmfy by #3 + \multiply \tmfy by \Hoehe + \put(\tmfx,-\tmfy){% + \begin{picture}(\Breite,\tmfh)(0,0) + \put(0,0){\makebox(\Breite,\tmfh){% + \parbox{\Breite\unitlength}{\centering\footnotesize\sf #4}}} + \multiput(0,0)(0,\tmfh){2}{\line(1,0){\Breite}} + \end{picture} + } +} + +\newcommand{\BLek}[4]{\Lek{#1}{#2}{#3}{\small\sf\bf #4}} +\endinput diff --git a/macros/latex209/contrib/misc/topnum.sty b/macros/latex209/contrib/misc/topnum.sty new file mode 100644 index 0000000000..e0cb50ae17 --- /dev/null +++ b/macros/latex209/contrib/misc/topnum.sty @@ -0,0 +1,7 @@ +% Hiermit kriegt man die Seitenzahl oben in die Mitte +\def\ps@plain{\def\@oddhead{}\def\@oddfoot{\hfil \thepage \hfil}% + \def\@evenhead{}\def\@evenfoot{}} +\def\ps@mypage{\def\@oddhead{\hfil \thepage~\hfil}% + \def\@oddfoot{}% + \def\@evenhead{}\def\@evenfoot{}} +\ps@plain diff --git a/macros/latex209/contrib/misc/trademarks.sty b/macros/latex209/contrib/misc/trademarks.sty new file mode 100644 index 0000000000..3003534f5b --- /dev/null +++ b/macros/latex209/contrib/misc/trademarks.sty @@ -0,0 +1,81 @@ +% Trademarks... + +\def\gobble#1{} +\def\tradeORGfont{\sc} % used for organizations (e.g., ACM) +\def\tradeNAMfont{\sf} % used for names (e.g., Ada) + +\def\tradeorg#1{% + \tradeaux{#1}{\expandafter\gobble\string#1}\empty\tradeORGfont +} +\def\tradeorgn#1#2{% + \tradeaux{#1}{#2}\empty\tradeORGfont +} +\def\tradename#1#2#3{\tradeaux{#1}{#2}{#3}\tradeNAMfont} +\def\trademark#1#2{% + \tradeaux{#1}{\expandafter\gobble\string#1}{#2}\tradeNAMfont +} + +\def\tradeaux#1#2#3#4{% + \def#1/{\relax}% % in case #3 references #1 + \setbox0=\hbox{#3}% % when we make the \hbox + \ifdim\wd0>0pt + \gdef#1/{% + \tradeaux{#1}{#2}\empty{#4}% + #1/\footnote{#1/ is a trademark of #3.}% + }% + \else + \gdef#1/{{#4#2}}% + \fi +} + +\tradeorg\acm +\tradeorg\ansi +\tradeorg\Apple +\tradename\Ada{Ada} + {the Department of Defense (\Ada/ Joint Program Office)} +\tradename\balance{Balance} {Sequent Computer Systems, Incorporated} +\tradeorg\bsd +\tradename\butterfly{Butterfly}{Bolt, Beranek, and Newman, Incorporated} +\tradeorg\ccitt +\tradename\cms{CMS} {International Business Machines, Incorporated} +\tradename\cpm{CP/M} {Digital Research Corporation} +\tradename\chrysalis{Chrysalis}{Bolt, Beranek, and Newman, Incorporated} +\tradename\decnet{DECnet} {Digital Equipment Corporation} +\tradeorgn\dod{DoD} +\tradename\dynix{DYNIX} {Sequent Computer Systems, Incorporated} +\tradename\ethernet{Ethernet} {the Xerox Corporation} +\tradename\eunice{Eunice} \empty +\tradename\exos{EXOS} {Excelan, Incorporated} +\tradeorg\IBM +\tradename\ibmpc{IBM PC} {International Business Machines, Incorporated} +\tradeorg\HP +\tradename\IMAGEN{IMAGEN} {IMAGEN Corporation} +\tradeorg\ieee +\tradename\lattice{Lattice} {Lattice, Incorporated} +\tradename\locus{Locus} {Locus Computing Corporation} +\tradename\mac{Macintosh} {Apple Computer, Incorporated} +\def\microvax/{$\mu$\vax/} +\def\microvms/{$\mu$\vms/} +\tradeorg\milstd +\tradename\Miranda{Miranda} {Research Software Limited} +\tradename\msdos{MS-DOS} {Microsoft Corporation} +\tradename\mvs{MVS} {International Business Machines, Incorporated} +\tradeorg\NCC +\tradeorg\NPL +\tradename\pcdos{PC-DOS} {International Business Machines, Incorporated} +\tradename\pcinterface{PC-Interface}% + {Locus Computing Corporation} +\tradename\pdp{PDP} {Digital Equipment Corporation} +\tradename{\tops20}{Tops20} {Digital Equipment Corporation} +\tradename\Sun{Sun Workstation} {Sun Microsystems Incorporated} +\tradename\trustedmail{Trusted\ Mail}% + {Trusted Technologies, Incorporated} +\tradeorg\QMS +\tradename\ultrix{ULTRIX} {Digital Equipment Corporation} +\tradename\unibus{UNIBUS} {Digital Equipment Corporation} +\tradename\Unix{{\sc Unix}} {AT\&T Bell Laboratories} +\tradename\vax{VAX} {Digital Equipment Corporation} +\tradename\vm{VM} {International Business Machines, Incorporated} +\tradename\vms{VMS} {Digital Equipment Corporation} +\tradename\xenix{Xenix} {Microsoft Corporation} +\tradeorg\Xerox diff --git a/macros/latex209/contrib/misc/trees.sty b/macros/latex209/contrib/misc/trees.sty new file mode 100644 index 0000000000..be4c556cd4 --- /dev/null +++ b/macros/latex209/contrib/misc/trees.sty @@ -0,0 +1,120 @@ +% treedef.tex +% +% These definitions for tree macros are taken from "Trees in TeX", +% by David Eppstein, as published in TUGboat 6#1, March 1985. +% David Eppstein's address (as of 15 June 1988) is +% Computer Science Department +% Columbia University +% New York, NY 10027 +% Eppstein@cs.Columbia.edu + +\newbox\treebox +\def\tree{\global\setbox\treebox=\boxtree} +\def\subtree{\ettext \boxtree} +\def\leaf#1{\subtree#1\endsubtree} + +\def\endsubtree{\ettext \egroup} +\def\endtree{\endsubtree \settreesizes \typesettree} + +\newif\iftreetext\treetextfalse % Whether still aligning text +\def\boxtree{\hbox\bgroup % Start outer box of tree or subtree + \baselineskip 2.5ex % Narrow line spacing slightly + \tabskip 0pt % No spurious glue in alignment + \vbox\bgroup % Start inner text \vbox + \treetexttrue % Remember for \ettext + \let\par\crcr \obeylines % New line breaks without explicit \cr + \halign\bgroup##\hfil\cr} % Start alignment with simple template +\def\ettext{\iftreetext % Are we still in inner text \vbox? + \crcr\egroup \egroup \fi} % Yes, end alignment and box + +\def\cons#1#2{\edef#2{\xmark #1#2}} % Add something to start of list. +\def\car#1{\expandafter\docar#1\docar} % Take first element of list +\def\docar\xmark#1\xmark#2\docar{#1} % ..by ignoring rest in expansion. +\def\cdr#1{\expandafter\docdr#1\docdr#1} % Similarly, drop first element. +\def\docdr\xmark#1\xmark#2\docdr#3{\def#3{\xmark #2}} +\def\xmark{\noexpand\xmark} % List separator expands to self. +\def\nil{\xmark} % Empty list is just a separator. + +\def\settreesizes{\setbox0=\copy\treebox \global\let\treesizes\nil \setsizes} +\newdimen\treewidth % Width of this part of the tree. +\def\setsizes{\setbox0=\hbox\bgroup % Get a horiz list as a workspace. + \unhbox0\unskip % Take tree, unpack it into horiz list. + \inittreewidth % Get old width at this level. + \sizesubtrees % Recurse through all subtrees. + \sizelevel % Now set width from remaining \vbox. + \egroup} % All done, finish our \hbox. + +\def\inittreewidth{\ifx\treesizes\nil % If this is the first at this level + \treewidth=0pt % ..then we have no previous max width. + \else \treewidth=\car\treesizes % Otherwise take old max level width + \global\cdr\treesizes % ..and advance level width storage + \fi} % ..in preparation for next level. + +\def\sizesubtrees{\loop % For each box in horiz list (subtree) + \setbox0=\lastbox \unskip % ..pull it off list and flush glue. + \ifhbox0 \setsizes % If hbox, it's a subtree - recurse + \repeat} % ..and loop; end loop on tree text. + +\def\sizelevel{\ifdim\treewidth<\wd0 % If greater than previous maximum + \treewidth=\wd0 \fi % Then set max to new high + \global\cons{\the\treewidth}\treesizes}% In either case, put back on list + +\newdimen\treeheight % Height of this part of the tree. +\newif\ifleaf % Tree has no subtrees (is a leaf). +\newif\ifbotsub % Bottom subtree of parent. +\newif\iftopsub % Top subtree of parent. +\def\typesettree{\medskip \maketree \medskip} % Make whole tree with spacing. +\def\maketree{\hbox{\treewidth=\car\treesizes % Get width at this level. + \cdr\treesizes % Set up width list for recursion. + \makesubtreebox\unskip % Set \treebox to text, make subtrees. + \ifleaf \makeleaf % No subtrees, add glue. + \else \makeparent \fi}} % Have subtrees, stick them at right. + +{\catcode`@=11 % Be able to use \voidb@x. +\gdef\makesubtreebox{\unhbox\treebox % Open up tree or subtree. + \unskip\global\setbox\treebox\lastbox % Pick up very last box. + \ifvbox\treebox % If we're already at the \vbox + \global\leaftrue \let\next\relax % ..then this is a leaf. + \else \botsubtrue % Otherwise, we have subtrees. + \setbox0\box\voidb@x % Init stack of processed subs + \botsubtrue \let\next\makesubtree % ..and call \maketree on them. + \fi \next}} % Finish up for whichever it was. + +\def\makesubtree{\setbox1\maketree % Call \maketree on this subtree. + \unskip\global\setbox\treebox\lastbox % Pick up box before it. + \treeheight=\ht1 % Get height of subtree we made + \advance\treeheight 2ex % Add some room around the edges + \ifhbox\treebox \topsubfalse % If picked up box is a \vbox, + \else \topsubtrue \fi % ..this is the top, otherwise not. + \addsubtreebox % Stack subtree with the rest. + \iftopsub \global\leaffalse % If top, remember not a leaf + \let\next\relax \else % ..(after recursion), set return. + \botsubfalse \let\next\makesubtree % Otherwise, we have more subtrees. + \fi \next} % Do tail recursion or return. + +\def\addsubtreebox{\setbox0=\vbox{\subtreebox\unvbox0}} +\def\subtreebox{\hbox\bgroup % Start \hbox of tree and lines + \vbox to \treeheight\bgroup % Start \vbox for vertical rules. + \ifbotsub \iftopsub \vfil % If both bottom and top subtree + \hrule width 0.4pt % ..vertical rule is just a dot. + \else \treehalfrule \fi \vfil % Bottom gets half-height rule. + \else \iftopsub \vfil \treehalfrule % Top gets half-height the other way. + \else \hrule width 0.4pt height \treeheight \fi\fi % Middle, full height. + \egroup % Finish vertical rule \vbox. + \treectrbox{\hrule width 1em}\hskip 0.2em\treectrbox{\box1}\egroup} + +\def\treectrbox#1{\vbox to \treeheight{\vfil #1\vfil}} +\def\treehalfrule{\dimen0=\treeheight % Get total height. + \divide\dimen0 2\advance\dimen0 0.2pt % Divide by two, add half horiz height. + \hrule width 0.4pt height \dimen0} % Make a vertical rule that high. + +\def\makeleaf{\box\treebox} % Add leaf box to horiz list. +\def\makeparent{\ifdim\ht\treebox>\ht0 % If text is higher than subtrees + \treeheight=\ht\treebox % ..use that height. + \else \treeheight=\ht0 \fi % Otherwise use height of subtrees. + \advance\treewidth-\wd\treebox % Take remainder of level width + \advance\treewidth 1em % ..after accounting for text and glue. + \treectrbox{\box\treebox}\hskip 0.2em % Add text, space before connection. + \treectrbox{\hrule width \treewidth}\treectrbox{\box0}} % Add \hrule, subs. + +\endinput diff --git a/macros/latex209/contrib/misc/truecols.doc b/macros/latex209/contrib/misc/truecols.doc new file mode 100644 index 0000000000..0517057972 --- /dev/null +++ b/macros/latex209/contrib/misc/truecols.doc @@ -0,0 +1,398 @@ +\iffalse +% This is truecols.doc, a sub-style for use with SliTeX. +% It is documented with the conventions of doc.sty; run it through a +% suitable driver file to print format the documentation. +% It is intended for use with ltugboat.sty as it stands. +% Note that with the old doc.sty you'll get extra space at the front +% of paras starting with \DescribeMacro. +% Use docstrip.tex to strip the comments to form truecols.sty. + +%% Copyright D.Love, SERC Daresbury Laboratory, 1991 +%% The `doc' version of this style is re-distributable and usuable +%% under conditions of the GNU copyleft, but please mark any changes, +%% list them here and report any major enhancements to the author. +\fi +\def\filedate{18/4/90} +\def\fileversion{1.2} +% \NoBlackBoxes +% \def\ps{\PS}\def\dvi{{\tt dvi}}\def\pj{Paint\-Jet} +%^^A can't use \verb in arguments: +% \def\sp{{\tt\char\escapechar special}} +% \title{Experiments in \TeX nicolour --- A \SliTeX\ Sub-style for +% Colour Printers\footnote{File version \fileversion, dated +% \filedate.}} +% \author{David Love} +% \address{SERC Daresbury Laboratory,\\Warrington WA4 4AD, UK} +% \netaddress{d.love@daresbury.ac.uk} +% +% \maketitle +% +% \begin{abstract} +% \noindent +% \SliTeX\ assumes that colour transparencies will be produced from +% layers, each printed in a single colour. This sub-style allows a +% suitable \dvi{} driver to produce multi-coloured +% slides in one go (i.e., using a single layer). It is customisable +% for \ps{} printers or simpler colour devices like the the HP \pj{}. +% \end{abstract} +% +% \section{Introduction} +% \SliTeX{}---a version of \LaTeX{} for making slides---supports colours +% in its output by producing `colour layers', one per colour \cite{slitex}. +% It is assumed that these will be copied to transparencies of the +% appropriate colour and overlapped to make a composite multi-colour +% slide. Colour is valuable on slides, but this means +% of producing it is inconvenient and inappropriate if you have +% a colour printer and a suitable \dvi{} driver for it. +% +% This sub-style for \SliTeX{} allows all the colours to be produced +% in one layer. It is designed for use with colour \ps{} printers or +% others like the HP \pj{} with suitable \dvi{} drivers, following +% experiments with these printers at Daresbury. +% It is intended to provoke discussion +% of the use of colour with \TeX{}, a subject about which little +% has been said so far in public, rather than be at all definitive. +% +% \section{Approach} +% Use of colour with \TeX{} is non-standard and has to +% be done by passing information to the \dvi{} driver. This could be +% done in one of two ways: +% \begin{itemize} +% \item using fonts whose names idenitify them to the driver to +% be printed in a particular colour but are otherwise +% identical to the black version (possibly using virtual fonts \cite{vf}); +% \item using the \sp{} mechanism to tell the driver to +% change colours. +% \end{itemize} +% The second option is easier to implement with an existing driver and +% allows colour for other objects than characters i.e., +% rules,\footnote{{\tt \char\escapechar colorslides} doesn't work +% properly with rules---they come out in each layer.} +% and has been adopted here. +% Unfortunately, existing drivers differ in their \verb+\special+ +% mechanisms and few understand colour explicitly. +% However, drivers which allow you to include arbitrary \ps{} with a +% \sp{} have this ability implicitly +% since colour operators are defined in \ps{} \cite{redbook}. +% (Colour gets rendered in shades of grey on a normal laser printer, +% which can help with proofing.) +% +% There is a proposed standard for \sp{}s \cite{hosek} +% which includes colour information, but the definition of the +% \verb+textcolor+ \sp{} is inconveniently related to the \dvi{} stack. +% Working with existing \ps{} drivers, one has to make +% some assumptions about them, as detailed below. +% +% In the case of the \pj{} printer there does not appear to be an existing +% driver, so one was produced with a suitable \sp{} defined arbitrarily. +% +% \section{\pj{} Driver} +% The Hewlett-Packard \pj{} can print in colour at 180~dpi, which +% is quite adequate for making transparencies. A driver for it was +% produced using the HP Laserjet version from Beebe's family \cite{beebe} +% as a basis since this has rather similar control sequences. +% It was extended to maintain four bitmaps independently, +% allowing three colours other than black to be printed. Allowing +% more colours would make the code more complicated and slower as well +% as using more memory for the bitmaps. It supports one +% \sp{} to allow colour changes between black, red, green +% and blue. A defect is that the result of overlapping items of +% different colours is independent of their order in the \dvi{} file, +% but this simplifies the driver considerably. +% +% \section{Assumptions} +% The necessary assumptions about the driver are largely isolated in +% the macros \verb+\special@color+ +% and \verb+\colormix+.\footnote{I spell the +% English way except in code names, where I reluctantly use `color' +% for consistency with existing code.} +% Suitable changes could be quite easily made to conform with an +% eventual standard for \sp{}s or use a different driver. +% +% \subsection{\ps} +% We assume that a \ps{} driver understands +% \sp{}s of the form +% \begin{center} +% \verb*+\special{ps:: +\meta{code}\verb+}+, +% \end{center} +% where \meta{code} is +% arbitrary \ps{} from which the surrounding code output by the driver is not +% protected. This is appropriate for Rokicki's +% {\tt dvips} and ArborText's DVILASER/PS\@. +\iffalse +% and +% would be for the Daresbury {\tt dvitops} if it didn't zap the +% graphics state at each font change.\footnote{This can probably be +% fixed by messing with the header.} +\fi +% We use the RGB colour model \cite[\S 4.8]{redbook}. +% +% \subsection{\pj{} or other printer} +% A non-\ps{} printer should understand a special of the form +% \verb*+{color +\meta{colour}\verb+}+, where \meta{colour} can take +% the values {\tt black\rm, \tt red\rm, \tt green\rm\ or \tt blue}, +% determining the colour of all subsequent printing until the next +% change. The default is assumed to be black. +% +% \section{User interface} +% As well as re-defining some internal \SliTeX{} macros, we make some +% new ones as described below. +% +% \DescribeMacro{\psprinterfalse} +% The default is to assume the use of a \ps{} printer. Saying +% \verb+\psprinterfalse+ changes this to produce output suitable for +% the \pj{} (or similar printer). This should only be done +% in the preamble. +% +% Any colours you use {\em must\/} be declared using +% \verb+\colors+ \DescribeMacro{\colors}(even red, green, blue and black). +% \DescribeEnv{slide} +% They do not need including in the argument of \verb+\begin{slide}+ for +% use with \verb+\truecolors+, but there needs to be some argument, +% even if it's null. +% +% \DescribeMacro{\truecolors} +% Like \verb+\blackandwhite+, \verb+\truecolors+ is +% invoked from the driver file to process a batch of slides described +% in the file given as its argument. It works like +% \verb+\blackandwhite+ in that it only makes one layer, but will +% include the +% information for the printer to produce the +% colours in the \dvi{} file. Notes are not printed by +% \verb+\truecolors+. +% +% \subsection{\ps{} specifics} +% \DescribeMacro{\colormix} +% Before you use a new \ps{} colour, you have to define how it is +% mixed from red, green and blue. \verb+\colormix+ does this for you. +% It takes four arguments. The first is the name of the colour and +% the others are numeric values for the intensities of red, green and +% blue respectively in the mixture. (See the description of RGB in +% \cite{redbook}.) These values must lie in the +% range 0--1 such that 1 is most intense and 0 is no +% intensity. Thus you might define yellow by +% \[\verb+\colormix{yellow}{0}{1}{1}+\] +% You don't need to define red, green, blue or black---they are done +% already. +% +% You could put blocks of text on a coloured background either by +% setting it on top of a suitably-sized rule or using explicit \sp s. +% +% \subsection{Other printers} +% Only red, green, blue and black are available. Use of +% \verb+\colormix+ will produce a warning. Using a non-white +% background won't work very well with the \pj{}. +% +% \subsection{Problem with list environments} +% A problem occurs if you want the first text in a list environment +% item to be a different colour to the label since \verb+\special+s +% before the text appear in the \dvi{} file before the label. +% A way round this is to insert \verb+\leavevmode+ after \verb+\item+. +% This sort of problem may occur in other situtaions. +% +% \section{Code} +% \subsection{Driver-independent code} +% \begin{macrocode} +\typeout{SliTeX style option `truecols' (v. \fileversion\space of \filedate)} +% \end{macrocode} +% \DescribeMacro{\if@truecol} +% We introduce a new switch to tell us whether we can assume we have +% true colour printing capability and unset it initially. +% \begin{macrocode} +\newif \if@truecol \@truecolfalse +% \end{macrocode} +% \DescribeMacro{\the@color} +% We keep track of the current colour using \verb+\the@color+ +% (to get colours right with grouping). +% Initially it's black. +% \begin{macrocode} +\def\the@color{\black} +% \end{macrocode} +% \DescribeMacro{\ifpsprinter} +% This tells us if we're dealing with a \ps{} printer (the default) +% or not. +% \begin{macrocode} +\newif \ifpsprinter \psprintertrue +% \end{macrocode} +% \DescribeMacro{\truecolors} +% A new \verb+\truecolors+ command is defined, which works like +% \verb+\blackandwhite+, printing everything in the file given as its +% argument in one layer. Thus it must set the \verb+\@bw+ +% switch. This slightly unfortunate change to \verb+\@bw+'s +% meaning makes the alterations easier. +% \begin{macrocode} +\newcommand{\truecolors}[1]{\@truecoltrue \blackandwhite{#1}} +% \end{macrocode} +%\DescribeMacro{\@color} +% We modify \verb+\@color+ to take note of the \verb+@truecol+ setting +% (if \verb+@bw+ is set). If appropriate, it puts out a +% colour-changing \sp{} using \verb+\special@color+. We can omit the +% test for a colour change in math mode if we're not depending on +% invisible fonts. +% \begin{macrocode} +\def\@color#1{% + \if@truecol \else \@mmodetest \fi % change + \if@bw \@visibletrue + \if@truecol \special@color{#1}\fi % change + \else \@visiblefalse + \@for \@x@a :=#1\do{\ifx\@x@a\@currcolor\@visibletrue\fi}\fi + \@currsize \@currfont \ignorespaces} +% \end{macrocode} +% \DescribeMacro{\endslide} +% We ensure that the driver colour is +% reset to black at the end of each slide +% by setting it in \verb+\endslide+. +% \begin{macrocode} +\def\endslide{\@color{black}\par\break} +% \end{macrocode} +% \DescribeMacro{\note} +% We don't want to waste truecolour output on producing notes, which +% we will if we don't re-define \verb+\note+ (since \verb+@bw+ is set +% by \verb+\truecolors+). We just add a test on \verb+@truecol+. +% \begin{macrocode} +\def\note{% + \stepcounter{note}% + \if@bw + \if@truecol \gdef\@slidesw{F}% added + \else + \gdef\@slidesw{T}% + \if@onlynotesw\@whilenum \c@slide > \@donotehigh\relax + \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum + \c@slide < \@donotelow\relax \gdef\@slidesw{F}\fi\fi\fi + \else \gdef\@slidesw{F}\fi + \if\@slidesw T\newpage\thispagestyle{note}\else + \end{note}\@gobbletoend{note}\fi } +% \end{macrocode} +% \DescribeMacro{\colors} +% We re-define \verb+\colors+ to check that we know about those +% specified. It could, perhaps, be dispensed with at the cost of +% incompatibility with standard \SliTeX{}. If we're not using \ps{} +% only the four pre-defined colours are available. +% \begin{macrocode} +\def\colors#1{% + \@for\@colortemp:=#1\do{% + \@ifundefined{\@colortemp @mix}{% change + \ifpsprinter + \errhelp{You could use I to define it now.}% + \errmessage{You need to use \noexpand\colormix to define + \@colortemp}% + \else + \errhelp{It's safe to carry on.}% + \errmessage{You can only use black, red, green and blue with + this printer, not \@colortemp}% + \expandafter\xdef\csname\@colortemp\endcsname{\relax}% + \fi + }{} + \expandafter\xdef\csname\@colortemp\endcsname + {\noexpand\@color{\@colortemp}}% + }% (do) + \ifx\@colorlist\@empty \gdef\@colorlist{#1}% + \else \xdef\@colorlist{\@colorlist,#1}\fi} +% \end{macrocode} +% \DescribeMacro{\pagestyle} +% Finally we change the default pagestyle since the alignment marks +% would only be useful with overlays. +% \begin{macrocode} +\pagestyle{plain} +% \end{macrocode} +% +% \subsection{Driver-dependent code} +% \DescribeMacro{\colormix} +% The \ps{} user can mix new colours in the RGB model using +% \verb+\colormix+. It takes four arguments, the name of the colour +% (which must then be declared with \verb+\colors+) and three real numbers +% in the range 0--1 describing respectively the intensity of red, +% green and blue in the result. The result is to define a macro of +% the form \verb+\+\meta{colour}\verb+@mix+ to be a list of arguments 2--4. +% \begin{macrocode} +\def\colormix#1#2#3#4{% + \ifpsprinter \else \typeout{Warning: \noexpand\colormix used with + \noexpand\psprinterfalse.}\fi + \color@range@check{#2}\color@range@check{#3}\color@range@check{#4}% + \expandafter\xdef\csname#1@mix\endcsname{#2 #3 #4}} +% \end{macrocode} +% \DescribeMacro{\color@range@check} +% We need to check that the numeric arguments of \verb+\colormix+ are +% in the range 0--1. Since they're real numbers we +% convert them to dimensions to test. +% \begin{macrocode} +\def\color@range@check#1{% + \def\fred{\errhelp{Carry on, but you'll get a PostScript error if + you try to print the results.}% + \errmessage{\noexpand\colormix arguments must be in the + range 0--1}}% + \ifdim#1 pt < 0pt \fred \fi \ifdim#1 pt > 1pt \fred \fi } +% \end{macrocode} +% \DescribeMacro{\special@color} +% This has to change the current colour on the output device to that +% given as its argument, +% but first has to store the current value and make sure it is +% re-instated at the end of the current group. (Coloured fonts would +% avoid the need for this.) Note the \verb+{}+ inserted at the end of +% the group to avoid spaces being gobbled afterwards as with +% \verb+{\red foo} bar+. Probably there's a better way of doing this. +% \begin{macrocode} +\def\special@color#1{% + \def\the@color{\csname#1\endcsname}\aftergroup\the@color + \aftergroup{\aftergroup}% +% \end{macrocode} +% To change colour with \ps{} we use a \sp{} which +% will emit code of the form +% \begin{center} \meta{red level}\verb*+ +\meta{green level}\verb*+ +^^A +% \meta{blue level}\verb*+ +{\tt setrgbcolor} \end{center} +% Perhaps this should be parameterised. +% The three levels are provided by a macro of the form +% \verb+\+\meta{colour}\verb+@mix+ which must be defined for each +% \meta{colour} which is used. +% It might be useful is to +% define a white font (RGB=[1~1~1]) which could be painted over a +% coloured region. +% \begin{macrocode} + \ifpsprinter \special{ps:: \csname#1@mix\endcsname\space + setrgbcolor\space}% +% \end{macrocode} +% For the \pj{} we output +% \begin{center}\verb*+\special{color +\meta{colour}\verb+}+, +% \end{center} +% where \meta{colour} can be {\tt black\rm, \tt red\rm, \tt green \rm +% or \tt blue} and we assume that \verb+#1+ is one of these. +% \begin{macrocode} + \else \special{color #1}\fi % (\ifpsprinter) +} % (\def\special@color) +% \end{macrocode} +% \DescribeMacro{\black@mix}\DescribeMacro{\red@mix} +% \DescribeMacro{\blue@mix}\DescribeMacro{\green@mix} +% Here we define the RGB mixes for the \ps{} colours we support +% initially. These macros need defining for the \pj{} too, so that we +% can check on colours the user tries to invoke. +% \begin{macrocode} +\def\black@mix{0 0 0} \def\red@mix{1 0 0} +\def\blue@mix{0 0 1} \def\green@mix{0 1 0} +% \end{macrocode} +% \begin{thebibliography}{1} +% \bibitem{slitex} Leslie Lamport. {\sl \LaTeX{}: A Document +% Preparation System}; {\tt slitex.tex} dated 10 November 1986; {\tt +% slides.sty} dated 17 January 1986. +% \bibitem{vf} Donald Knuth. \TUB, 11(1), 1990, p.~13. +% \bibitem{redbook} Adobe Systems Inc. {\sl\ps\ Language Reference Manual}. +% \bibitem{hosek} Don Hosek. Proposed \verb+DVI \special+ command +% standard. (See \TUB, 10(2), 1989, p.~188.) +%^^A \bibitem{glv&tjr} Glenn L. Vandenberg and Thomas J. Reid. +%^^A \sp{} issues. \TUB, 8(3), 1987, p.~287. +% \bibitem{beebe} Nelson H. F. Beebe. {\sl A \TeX{} DVI Driver Family}. +% \end{thebibliography} +% {\tenuit Note added:\enspace } Since doing this work I have become +% aware of two related pieces of work. One is Ken Yap's article +% ``Making 35~mm Colour Slides with \SliTeX'' in \TUB{} 11.2 (1990), +% p.~279. He also used a modified version of a Beebe driver for his +% raster device, but maintained the colour layers idea. This style +% provides the `more elegant and general solution' to the problem +% mentioned in his conclusion. +% +% The other work is concerned with specifically \PS{} printers rather +% than raster ones. It is Leslie Lamport's {\tt ps-slides.sty} which +% Sebastian Rahtz pointed out to me, available from the Aston archive. +% Since it is specific to \PS{} it can support fancier facilities. His +% approach to changing the way standard \SliTeX{} works is somewhat +% different from mine, which presumably means I was a little misguided. +% \makesignature diff --git a/macros/latex209/contrib/misc/uhthesis.sty b/macros/latex209/contrib/misc/uhthesis.sty new file mode 100644 index 0000000000..5f60e37ddc --- /dev/null +++ b/macros/latex209/contrib/misc/uhthesis.sty @@ -0,0 +1,391 @@ + +% University of Houston PhD/MS thesis style -- modifications to the report style +% For LaTeX version 2.09 +% +% Author: Dimitrios Georgakopoulos (dimitris@cs.uh.edu) +% +% The float and footnote macros bellow are stolen from the +% Stanfford University thesis style. + +\typeout{Document Style Option `uhthesis' <31 Aug 90>.} + +\long\def\comment#1{} +\comment{ + +Example of use: + \documentstyle[12pt,uhthesis]{report} + \begin{document} + \title{Transaction Management in\\ Multidatabase Systems} + \author{Dimitrios Georgakopoulos} + \adviser{Dr. Marek Rusinkiewicz, Chairman} + \firstreader{Dr. Farok Bastani} + \secondreader{Dr. Paulina Markenscoff\\Computer Engineering Department} + + \makecoverpages + \begin{abstract} + This thesis tells you all you need to know about... + \end{abstract} + \begin{acknowledgements} + I would like to thank... + \end{acknowledgements} + \makecontentspages + \chapterpages + + \chapter{Introduction} + ... + \chapter{Conclusions} + ... + \appendix + \chapter{A Long Proof} + ... + \bibliographystyle{plain} + \bibliography{mybib} + \end{document} + +Documentation: + This style file modifies the standard report style to follow the + Dean's Office "Preparing your Thesis/Dissertation for Submission + to the college of Natural Sciences and Mathematics: A Guideline". + + The \makecoverpages command creates a copyright page (optionally), + the title page and, and the signature page. The \begin{abstact} + command creates the abstract page. The abstract itself should be + included between a \begin{abstact} and an \end{abstact} command, + as usual. Your (optional) acknowlegments should be included in the + (optional) \begin{acknowledments} ...\end{acknowledments} section. + The \makecontentspages command produces the table of contents, the + list of tables (optional) and the list of figures (optinal). Finally, + the \chapterpages command sets the page style of the main body of + your thesis. + + The following commands can control what goes in the front matter + material: + + \title{thesis title} + \author{author's name} + \degree{author's degree}{type of thesis} + - e.g. \degree{Masters of Science}{Thesis} + - if \degree is ommitted, + \degree{Doctor of Philosophy}{Dissertation} is assumed + \department{author's department} + - Computer Science if omitted + \college{the college or school the thesis is submitted to} + - College of Natural Sciences and Mathematics if omitted + \adviser{the adviser's name} + \firstreader{the first reader's name} + \secondreader{the second reader's name} + \thirdreader{the third reader's name} + \fourthreader{the fourth reader's name} + \threereaderstrue or \threereadersfalse + - print or don't print a third reader in the + signature page (true by default) + \fourreaderstrue or \fourreadersfalse + - print or don't print a fourth reader in the + signature page (true by default) + \submitdate{month year in which the thesis is submitted} + - date LaTeX'd if omitted + \copyrighttrue or \copyrightfalse + - produce or don't produce a copyright page (true by default) + \figurelisttrue or \figurelistfalse + - produce or don't produce a List of Figures page + (true by default) + \tablelisttrue or \tablelistfalse + - produce or don't produce a List of Tables page + (true by default) + + + This style uses interline spacing that is 1.6 times normal, except + in the figure and table environments where normal spacing is used. + That can be changed by doing: + \renewcommand{\baselinestretch}{1.6} + (or whatever you want instead of 1.6) + Unfortunately, that command probably won't take effect unless it comes + before the \begin{document} or after something like \small \normalsize. + + The example above shows the 12pt substyle being used. This seems to give + acceptable looking results, but it may be omitted to get smaller print. +} + +% First thing we do is make sure that report has been loaded. A +% common error is to try to use uhthesis as a documentstyle. +\@ifundefined{chapter}{\@latexerr{The `uhthesis' option should be used +with the `report' document style}}{} + +% We need 1 1/2" margins except on the right edge, where it is 1" +% Theses are single-sided, so we don't care about \evensidemargin +\oddsidemargin 0.5in \evensidemargin 0in +%\marginparwidth 40pt \marginparsep 10pt +\topmargin 0in +\headsep 0.4in +\textheight 8in +\textwidth 5.95in + +% Disallow page breaks at hyphens (this will give some underfull vbox's, +% so an alternative is to use \brokenpenalty=100 and manually search +% for and fix such page breaks) +\brokenpenalty=10000 + +% Use 1.6 times the normal baseline-to-baseline skip +\renewcommand{\baselinestretch}{1.6} + +% Roman page numbers in cover pages +\pagenumbering{roman} + +% Redefine the macro used for floats (including figures and tables) +% so that single spacing is used. +% (Note \def\figure{\@float{figure}set single spacing} doesn't work +% because figure has an optional argument) +\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 p\advance\@tempcnta \@ne\fi + \if\@tempa p\advance\@tempcnta \tw@\fi + \if\@tempa p\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}\@normalsize + \boxmaxdepth\z@ + \hsize\columnwidth \@parboxrestore} + +% Redefine the macro used for footnotes to use single spacing +\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}}} + +% \author, \title are defined in report style; here are the rest definitions +% Define degree & thesis type +% it takes two arguments: author's degree and thesis/disseration/whatever +% defaults Doctor of Philosophy and Dissertation +\def\degree#1#2{ + \gdef\@degree{#1} + \gdef\@thesistype{#2}} +\def\@degree{\rm Doctor of Philosophy} +\def\@thesistype{\rm Dissertation} + +% Define college/school -- default College of Natural Sciences and Mathematics +\def\college#1{\gdef\@college{#1}} +\def\@college{\rm College of Natural Sciences and Mathematics} + +% Define department -- default Computer Science +\def\department#1{\gdef\@department{#1}} +\def\@department{\rm Computer Science} + +% Thesis advisor and committee +\def\adviser#1{\gdef\@adviser{#1}} +\def\firstreader#1{\gdef\@firstreader{#1}} +\def\secondreader#1{\gdef\@secondreader{#1}} +\def\thirdreader#1{\gdef\@thirdreader{#1}} +\def\fourthreader#1{\gdef\@fourthreader{#1}} +\def\submitdate#1{\gdef\@submitdate{#1}} + +% \author, \title in report +\def\@title{} +\def\@author{} +\def\@adviser{} +\def\@firstreader{} +\def\@secondreader{} +\def\@thirdreader{} +\def\@fourthreader{} +\def\@submitdate{\ifcase\the\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\the\year} + +\newif\ifcopyright +\copyrighttrue + +\newif\iffigurelist +\figurelisttrue + +\newif\iftablelist +\tablelisttrue + +\newif\ifthreereaders +\threereaderstrue + +\newif\iffourreaders +\fourreaderstrue + +%Cover pages +\def\titlep{% + \newpage + \thispagestyle{empty}% + \setcounter{page}{1} + \begin{center} + \Large\uppercase\expandafter{\@title} + \end{center} + \vskip.3in + \centerline{\vrule width 1.5in height 0.4pt} + \vskip.5in + \begin{center} + \rm A \expandafter{\@thesistype}\\ + Presented to\\ + the Faculty of the Department of + \expandafter{\@department}\\ + University of Houston + \vskip.4in + \centerline{\vrule width 1.5in height 0.4pt} + \vskip.5in + In Partial Fulfillment\\ + of the Requirements for the Degree\\ + \expandafter{\@degree} + \vskip.4in + \centerline{\vrule width 1.5in height 0.4pt} + \vskip.5in + \rm By\\ + \@author\\ + \@submitdate\\ + \end{center}} + +\def\copyrightpage{% + \newpage + \thispagestyle{empty}% + \setcounter{page}{1} + \null\vskip2.5in + \begin{center} + \copyright \ COPYRIGHTED BY\\ + \vskip.5in + \underline{\@author}\\ + \vskip.5in + \underline{\@submitdate} + \end{center}} + + +\def\signaturepage{% + \newpage + \begin{center} + \Large\uppercase\expandafter{\@title} + \end{center} + \vspace{.5in} + \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ + \@author}} + \vspace{0.5in} + \hspace{2.9in} \rm APPROVED: + + \vspace{.5in} + \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@adviser}} + \vspace{.5in} + \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@firstreader}} + \vspace{.5in} + + \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@secondreader}} + \vspace{.5in} + \ifthreereaders + \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@thirdreader}} + \fi + \vspace{.5in} + \iffourreaders + \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@fourthreader}} + \fi + \vspace{.8in} + \leftline{\shortstack[l]{\vrule width 4in height + 0.4pt\\Dean, \expandafter{\@college}}}} + +\def\makecoverpages{% + \ifcopyright\copyrightpage\fi + \titlep + \signaturepage} + + +%Abstract cover page +\def\abstractp{% + \newpage + \begin{center} + \Large\uppercase\expandafter{\@title} + \end{center} + \vskip.3in + \centerline{\vrule width 1.5in height 0.4pt} + \vskip.5in + \begin{center} + \rm An Abstract of a \expandafter{\@thesistype}\\ + Presented to\\ + the Faculty of the Department of + \expandafter{\@department}\\ + University of Houston + \vskip.4in + \centerline{\vrule width 1.5in height 0.4pt} + \vskip.5in + In Partial Fulfillment\\ + of the Requirements for the Degree\\ + \expandafter{\@degree} + \vskip.4in + \centerline{\vrule width 1.5in height 0.4pt} + \vskip.5in + \rm By\\ + \@author\\ + \@submitdate\\ + \end{center}} + +%Abstract +\def\abstract{ + \abstractp + \newpage + \begin{center} + \Huge \bf Abstract + \end{center}} + +%\def\endabstract{} + +%Acknowledgements +\def\acknowledgements{ + \newpage + \begin{center} + \Huge \bf Acknowledgements + \end{center}} + +%\def\endacknowledgements{} + +%Table of contents +\def\makecontentspages{ + \def\baselinestretch{1}\@normalsize + \tableofcontents + \newpage + \iffigurelist + \listoffigures + \newpage + \fi + \iftablelist + \listoftables + \newpage + \fi + \def\baselinestretch{1.6}\@normalsize} + +%Chapter page definition +\def\chapterpages{ + % Put the page number on the top of the page +% \def\@oddhead{\rm\hfil\thepage\hfil} +% \def\@oddfoot{} +% \let\@evenhead\@oddhead +% \let\@evenfoot\@oddfoot + + \pagenumbering{arabic}} + +% Redefine \thebibliography to go to a new page and put an entry in the +% table of contents +\let\@ldthebibliography\thebibliography +\renewcommand{\thebibliography}[1]{ + \newpage + \def\baselinestretch{1}\@normalsize + \addcontentsline{toc}{chapter}{Bibliography} + \@ldthebibliography{#1}} + +% Single space for drafts +\def\singlespace{ + \def\baselinestretch{1}\@normalsize} + +%That's all folks + + +%Jim Briggs, Ph.D. <-- Dept. of Chem. <-- Univ. of Houston <-- Houston <-- TX +% <-- 77204-5641 <-- (713)743-3315 <-- JBriggs@UH.EDU + + diff --git a/macros/latex209/contrib/misc/ukdate.sty b/macros/latex209/contrib/misc/ukdate.sty new file mode 100644 index 0000000000..8a39f217a0 --- /dev/null +++ b/macros/latex209/contrib/misc/ukdate.sty @@ -0,0 +1,203 @@ +% --- ------------------------------------------------------------------ +% --- English-style Date Macros for LaTeX, version 1.00--0. +% --- ------------------------------------------------------------------ +% +% --- \today (replaces American-style macro of same name) generates +% --- today's date in the form Thursday 4th October 1066. +% --- The `th' is raised, reduced in size and underlined in the +% --- same font style (family) as the rest of the date. +% +% --- \st generates a raised, reduced, underlined `st', as in 1st. +% --- \nd generates a raised, reduced, underlined `nd', as in 2nd. +% --- \rd generates a raised, reduced, underlined `rd', as in 3rd. +% --- \th generates a raised, reduced, underlined `th', as in 4th. +% +% --- \dayofweek generates the day of the week, based on TeX's values +% --- of \day, \month and \year. +% +% --- \phaseofmoon generates the current phase of the moon, again based +% --- on TeX's values for \day, \month and \year. +% +% --- ------------------------------------------------------------------ +% --- Adrian F. Clark (alien@uk.ac.essex.ese) 26-Oct-1988 10:05:50 +% --- ------------------------------------------------------------------ + +% --- Counters. Note that we use the same registers as TeX holds other +% --- things in (e.g., \count0 holds the page number). This requires +% --- that \@savestyle, \@setstyle, \dayofweek and \phaseofmoon perform +% --- all their register manipulations within a group. This may seem +% --- a bit messy, but it saves having eight registers permanently set +% --- aside just for date calculation. + +\def\@cent{\count0 } % century number (1979 == 20) +\def\@diy{\count1 } % day in the year +\def\@dow{\count2 } % gets day of the week +\def\@epact{\count3 } % age of the moon on Jan. 1 +\def\@golden{\count4 } % Moon's golden number +\def\@leap{\count5 } % leap year fingaler +\def\@x{\count6 } % temp register +\def\@y{\count7 } % another temp register + + +% --- A replacement for the ``plain'' TeX and LaTeX \today macro, to +% --- to output the date in English-style. +% --- They ensure the smaller text comes out in the right font by saving +% --- the font family before reducing the size, then restoring it. (This +% --- was suggested by Leslie Lamport.) Of course, it requires that the +% --- font in use when today is invoked has a sensible family. + +\def\@up#1{{\@savestyle\thinspace$^{\underline{\hbox{% + \scriptsize\@setstyle#1\fam=-1 }}}$}} +\def\st{\@up{st}} +\def\nd{\@up{nd}} +\def\rd{\@up{rd}} +\def\th{\@up{th}} + +% --- Macros to save and restore the font family. + +\def\@savestyle{\count0=\the\fam} +\def\@setstyle{\ifcase\count0\rm\or\mit\or\cal\or\rm% what's family 3? + \or\it\or\sl\or\bf\or\tt\fi} + +% --- The date, English style (e.g. Thursday 4th October 1066). + +\def\today{\dayofweek\ \number\day\ifcase\day + \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th + \or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th + \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\st\fi + \space\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\year} + +% --- The day of the week ("Sunday", etc.) is inserted into the text +% --- by \dayofweek. (This uses registers \@dow, \@leap, \@x and \@y.) +% --- I acquired this from elsewhere; I don't know who wrote it. + +\def\dayofweek{{% +% leap = year + (month - 14)/12; + \@leap=\month \advance\@leap by -14 \divide\@leap by 12 + \advance\@leap by \year +% dow = (13 * (month + 10 - (month + 10)/13*12) - 1)/5 + \@dow=\month \advance\@dow by 10 + \@y=\@dow \divide\@y by 13 \multiply\@y by 12 + \advance\@dow by -\@y \multiply\@dow by 13 + \advance\@dow by -1 \divide\@dow by 5 +% dow += day + 77 + 5 * (leap % 100)/4 + \advance\@dow by \day \advance\@dow by 77 + \@x=\@leap \@y=\@x \divide\@y by 100 \multiply\@y by 100 \advance\@x by -\@y + \multiply\@x by 5 \divide\@x by 4 \advance\@dow by \@x +% dow += leap / 400 + \@x=\@leap \divide\@x by 400 \advance\@dow by \@x +% dow -= leap / 100 * 2; +% dow = (dow % 7) + \@x=\@leap \divide\@x by 100 \multiply\@x by 2 \advance\@dow by -\@x + \@x=\@dow \divide\@x by 7 \multiply\@x by 7 \advance\@dow by -\@x + \ifcase\@dow Sunday\or Monday\or Tuesday\or Wednesday\or + Thursday\or Friday\or Saturday\fi}} +% +% --- Likewise, \phaseofmoon inserts the phase of the moon into the +% --- text. This was written by the same person as \dayofweek. +% --- The routine calculates the year's epact (the age of the moon on Jan 1.), +% --- adds this to the number of days in the year, and calculates the phase +% --- of the moon for this date. It returns the phase as a string, e.g., +% --- "new", "full", etc. +% +% --- In the algorithm: +% --- diy is the day of the year - 1 (i.e., Jan 1 is day 0). +% --- golden is the number of the year in the Mentonic cycle, used to +% --- determine the position of the calender moon. +% --- epact is the age of the calender moon (in days) at the beginning +% --- of the year. To calculate epact, two century-based +% --- corrections are applied: +% --- Gregorian: (3 * cent)/4 - 12 +% --- is the number of years such as 1700, 1800 when +% --- leap year was not held. +% --- Clavian: (((8 * cent) + 5) / 25) - 5 +% --- is a correction to the Mentonic cycle of about +% --- 8 days every 2500 years. Note that this will +% --- overflow 16 bits in the year 409600. Beware. +% --- The algorithm is accurate for the Gregorian calender only. +% +% --- The magic numbers used in the phase calculation are: +% --- 29.5 The moon's period in days. +% --- 177 29.5 scaled by 6 +% --- 22 (29.5 / 8) scaled by 6 (this gets the phase) +% --- 11 ((29.5 / 8) / 2) scaled by 6 +% +% --- Theoretically, this should yield a number in the range 0 .. 7. However, +% --- two days per year, things don't work out too well. +% +% --- Epact is calculated by the algorithm given in Knuth vol. 1 (Calculation +% --- of Easter). See also the article on Calenders in the Encyclopaedia +% --- Britannica and Knuth's algorithm in CACM April 1962, page 209. +% +\def\phaseofmoon{{% + \@diy=\day \advance\@diy by \ifcase\month % Jan 1 == 0 + -1\or -1\or 30\or 58\or 89\or 119\or 150\or % Jan .. Jun + 180\or 211\or 241\or 272\or 303\or 333\fi % Jul .. Dec +% if ((month > 2) && ((year % 4 == 0) && +% ((year % 400 == 0) || (year % 100 != 0)))) +% diy++; /* Leapyear fixup */ + \ifnum \month>2 + \@x=\year \@y=\@x \divide\@y by 4 \multiply\@y by 4 \advance\@x by -\@y + \ifnum \@x=0 % month > 2 and maybe leapyear + \@x=\year \@y=\@x \divide\@y by 400 + \multiply\@y by 400 \advance\@x by -\@y + \ifnum \@x=0 % 2000 is a leap year + \advance\@diy by 1 % so it's one day later + \else % not 2000, check other '00's + \@x=\year \@y=\@x \divide\@y by 100 + \multiply\@y by 100 \advance\@x by -\@y + \ifnum \@x>0 % not some other '00' year + \advance\@diy by 1 % it's still one day later + \fi % not odd century + \fi % not 2000-type century + \fi % not leapish year + \fi % not march or later +% cent = (year / 100) + 1; /* Century number */ +% golden = (year % 19) + 1; /* Golden number */ + \@cent=\year \divide\@cent by 100 \advance\@cent by 1 + \@golden=\year + \@y=\year \divide\@y by 19 \multiply\@y by 19 \advance\@golden by -\@y + \advance\@golden by 1 +% epact = ((11 * golden) + 20 /* Golden number */ +% + (((8 * cent) + 5) / 25) - 5 /* 400 year cycle */ +% - (((3 * cent) / 4) - 12)) % 30; /* Leap year correction */ + \@epact=11 \multiply\@epact by \@golden + \advance\@epact by 20 + \@x=8 \multiply\@x by \@cent \advance\@x by 5 + \divide\@x by 25 \advance\@x by -5 + \advance\@epact by \@x + \@x=3 \multiply\@x by \@cent \divide\@x by 4 \advance\@x by -12 + \advance\@epact by -\@x + \@y=\@epact \divide\@y by 30 \multiply\@y by 30 \advance\@epact by -\@y +% if (epact <= 0) +% epact += 30; /* Age range is 1 .. 30 */ +% if ((epact == 25 && golden > 11) || epact == 24) +% epact++; + \ifnum \@epact<0 + \advance\@epact by 30 + \fi + \ifnum \@epact=25 + \ifnum \@golden>11 + \advance \@epact by 1 + \fi + \else + \ifnum \@epact=24 + \advance \@epact by 1 + \fi + \fi +% +% --- Calculate the phase, using the magic numbers defined above. +% --- Note that phase may be equal to 8 (== 0) on two days of the year +% --- due to the way the algorithm was implemented. +% --- phase = (((((diy + epact) * 6) + 11) % 177) / 22) & 7; +% + \@x=\@diy \advance\@x by \@epact \multiply\@x by 6 \advance\@x by 11 + \@y=\@x \divide\@y by 177 \multiply\@y by 177 \advance\@x by -\@y + \divide\@x by 22 + \ifcase\@x new\or waxing crescent\or in its first quarter\or + waxing gibbous\or full\or waning gibbous\or + in its last quarter\or waning crescent\or new\fi}} + +% --- End of ukdate.sty diff --git a/macros/latex209/contrib/misc/underlin.tex b/macros/latex209/contrib/misc/underlin.tex new file mode 100644 index 0000000000..e2495f63bd --- /dev/null +++ b/macros/latex209/contrib/misc/underlin.tex @@ -0,0 +1,16 @@ +\nofiles +\documentstyle[doc]{article} + +^^A !!!! Warning !!!! +^^A Comment character in this file is ^^A not % +^^A after doc.sty was read in. + + \DisableCrossrefs +^^A \EnableCrossrefs ^^A Uncomment this line if you want + ^^A full crossreferences + \OnlyDescription ^^A Outcomment this line if you want + ^^A the full article + +\begin{document} + \input{underlin.sty} +\end{document} diff --git a/macros/latex209/contrib/misc/unfinished.tex b/macros/latex209/contrib/misc/unfinished.tex new file mode 100644 index 0000000000..3904365789 --- /dev/null +++ b/macros/latex209/contrib/misc/unfinished.tex @@ -0,0 +1,44 @@ +% -*- Mode: TeX -*- + +\ifx\thisfileis\anUndefinedMacro\input maybeload \fi + +\thisfileis{<eb.tex.texlocal>unfinished} % abort loading if already loaded + +% This file defines a LaTex environment that's convenient for marking unfinished +% sections of a paper. +% +% \begin{unfinished} +% \* explain the hairy stuff +% \* give examples +% \end{unfinished} +% +% There are also the abbreviations \notfinished and \notwritten. +% +% The \begin{unfinished}...\end{unfinished} environment is like an +% itemize environment, but it also types a warning if it occurs +% in a document that's not a draft (as determined heuristically by +% the setting of \overfullrule). +% +% To shut off the \unfinished sections entirely in a pinch, you +% can use the command \killunfinished. Of course, normally +% you should repair them by finishing them. There may be +% bugs in the \killunfinished mechanism. + +\newcommand{\unfinished}{\ifdim\overfullrule > 0pt\else + \typeout{WARNING: Unfinished section not in a draft.} + \fi\def\*{\item{}}\bgroup\itemize} + +\newdef\endunfinished{\egroup\enditemize} + +\newcommand{\unfinisheditem}[1]{\begin{unfinished} +\item #1 +\end{unfinished}} + +\newcommand{\notfinished}{\unfinisheditem{not finished yet}} +\newcommand{\notwritten}{\unfinisheditem{not written yet}} + +\makeatletter +\newdef\killunfinished{\def\unfinished{\setbox9\vbox\bgroup\itemize} +\def\endunfinished{\egroup}} +\makeatother + diff --git a/macros/latex209/contrib/misc/unilogo.sty b/macros/latex209/contrib/misc/unilogo.sty new file mode 100644 index 0000000000..568a05169c --- /dev/null +++ b/macros/latex209/contrib/misc/unilogo.sty @@ -0,0 +1,259 @@ +% +% ############################################################################## +% ## ## +% ## This LaTeX macro generates the University of Stuttgart logo which is ## +% ## considered as single character. Its size can be arbitrarily selected ## +% ## from 15mm to 75mm in diameter. If the requested size is out of this ## +% ## range a framebox containing an error notification is printed instead ## +% ## of the logo. ## +% ## ## +% ## If the mathematical symbol fonts defined within this macro are not ## +% ## available on a specific installation the macro can be easily adapted ## +% ## to the available fonts. ## +% ## ## +% ## Parameters: P1 = requested size [mm] ## +% ## ## +% ############################################################################## +% ## ## +% ## Copyright : Universitaet Stuttgart, Institut fuer Nachrichten- ## +% ## vermittlung und Datenverarbeitung (IND) ## +% ## Author : Gert Willmann ## +% ## Date : 25-NOV-1988 ## +% ## ## +% ############################################################################## +% + +\newcommand {\UniStuttgartLogo} [1] {\setlength{\unitlength}{#1} + % + \font \MINUSFOUR = cmsy5 scaled 1000 % About 10pt magstep -4 (font [PIXEL.1500]cmsy5) + \font \MINUSTHREE = cmsy5 scaled 1200 % About 10pt magstep -3 (font [PIXEL.1800]cmsy5) + \font \MINUSTWO = cmsy7 scaled 1000 % About 10pt magstep -2 (font [PIXEL.1500]cmsy7) + \font \MINUSONE = cmsy7 scaled 1200 % About 10pt magstep -1 (font [PIXEL.1800]cmsy7) + \font \ZERO = cmsy10 scaled 1000 % Exact 10pt magstep 0 (font [PIXEL.1500]cmsy10) + \font \PLUSONE = cmsy10 scaled 1200 % Exact 10pt magstep +1 (font [PIXEL.1800]cmsy10) + \font \PLUSTWO = cmsy10 scaled 1440 % Exact 10pt magstep +2 (font [PIXEL.2160]cmsy10) + \font \PLUSTHREE = cmsy10 scaled 1728 % Exact 10pt magstep +3 (font [PIXEL.2592]cmsy10) + \font \PLUSFOUR = cmsy10 scaled 2073 % Exact 10pt magstep +4 (font [PIXEL.3110]cmsy10) + \font \PLUSFIVE = cmsy10 scaled 2488 % Exact 10pt magstep +5 (font [PIXEL.3732]cmsy10) + \font \PLUSSIX = cmsy10 scaled 2986 % Exact 10pt magstep +6 (font [PIXEL.4479]cmsy10) + % + \ifdim \unitlength<15.00mm + \def \DIAMOND ##1 {} + \else + \ifdim \unitlength<18.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'005}}} + \put (##1) {\makebox(-0.010,-0.010){\PLUSTWO\symbol{'001}}}} % Offset to compensate bad symbol alignment + \else + \ifdim \unitlength<21.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSTHREE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'005}}} + \put (##1) {\makebox(-0.010,-0.010){\PLUSTWO\symbol{'001}}}} % Offset to compensate bad symbol alignment + \else + \ifdim \unitlength<24.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSTWO\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'017}}}} + \else + \ifdim \unitlength<27.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSONE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSTHREE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSTHREE\symbol{'017}}}} + \else + \ifdim \unitlength<31.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\ZERO\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSTWO\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSTWO\symbol{'017}}}} + \else + \ifdim \unitlength<36.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSONE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSONE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\MINUSONE\symbol{'017}}}} + \else + \ifdim \unitlength<42.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSTWO\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSONE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSONE\symbol{'017}}}} + \else + \ifdim \unitlength<49.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSTHREE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSTWO\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSTWO\symbol{'017}}}} + \else + \ifdim \unitlength<58.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSFOUR\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSTHREE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSTHREE\symbol{'017}}}} + \else + \ifdim \unitlength<69.00mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSFIVE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSFOUR\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSFOUR\symbol{'017}}}} + \else + \ifdim \unitlength<75.01mm + \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSSIX\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSFIVE\symbol{'005}}} + \put (##1) {\makebox(0.000,0.000){\PLUSFIVE\symbol{'017}}}} + \else + \def \DIAMOND ##1 {} + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \fi + % + \begin{picture}(1.000,1.000)(-0.500,-0.500) + \ifdim \unitlength<15.00mm + \thinlines + \put (-0.500,-0.500) {\framebox(1.000,1.000){\scriptsize\it\shortstack{Size\\ too\\ small}}} + \typeout {UniStuttgartLogo -- Released 25 November 1988, requested size too small.} + \else + \ifdim \unitlength<75.01mm + \DIAMOND { 0.000, 0.000} % Center (0,0) + \DIAMOND {-0.500, 0.000} % X-Axis (*,0) + \DIAMOND {-0.342, 0.000} + \DIAMOND {-0.205, 0.000} + \DIAMOND {-0.091, 0.000} + \DIAMOND { 0.091, 0.000} + \DIAMOND { 0.205, 0.000} + \DIAMOND { 0.342, 0.000} + \DIAMOND { 0.500, 0.000} + \DIAMOND { 0.000,-0.500} % Y-Axis (0,*) + \DIAMOND { 0.000,-0.342} + \DIAMOND { 0.000,-0.205} + \DIAMOND { 0.000,-0.091} + \DIAMOND { 0.000, 0.091} + \DIAMOND { 0.000, 0.205} + \DIAMOND { 0.000, 0.342} + \DIAMOND { 0.000, 0.500} + \DIAMOND { 0.041, 0.041} % First quadrant (+,+) + \DIAMOND { 0.087, 0.087} + \DIAMOND { 0.137, 0.137} + \DIAMOND { 0.191, 0.191} + \DIAMOND { 0.249, 0.249} + \DIAMOND { 0.311, 0.311} + \DIAMOND { 0.377, 0.377} + \DIAMOND { 0.144, 0.046} + \DIAMOND { 0.046, 0.144} + \DIAMOND { 0.202, 0.097} + \DIAMOND { 0.097, 0.202} + \DIAMOND { 0.263, 0.152} + \DIAMOND { 0.152, 0.263} + \DIAMOND { 0.270, 0.051} + \DIAMOND { 0.051, 0.270} + \DIAMOND { 0.328, 0.211} + \DIAMOND { 0.211, 0.328} + \DIAMOND { 0.338, 0.107} + \DIAMOND { 0.107, 0.338} + \DIAMOND { 0.398, 0.274} + \DIAMOND { 0.274, 0.398} + \DIAMOND { 0.412, 0.166} + \DIAMOND { 0.166, 0.412} + \DIAMOND { 0.418, 0.056} + \DIAMOND { 0.056, 0.418} + \DIAMOND { 0.488, 0.231} + \DIAMOND { 0.231, 0.488} + \DIAMOND { 0.498, 0.116} + \DIAMOND { 0.116, 0.498} + \DIAMOND {-0.041, 0.041} % Second quadrant (-,+) + \DIAMOND {-0.087, 0.087} + \DIAMOND {-0.137, 0.137} + \DIAMOND {-0.191, 0.191} + \DIAMOND {-0.249, 0.249} + \DIAMOND {-0.311, 0.311} + \DIAMOND {-0.377, 0.377} + \DIAMOND {-0.144, 0.046} + \DIAMOND {-0.046, 0.144} + \DIAMOND {-0.202, 0.097} + \DIAMOND {-0.097, 0.202} + \DIAMOND {-0.263, 0.152} + \DIAMOND {-0.152, 0.263} + \DIAMOND {-0.270, 0.051} + \DIAMOND {-0.051, 0.270} + \DIAMOND {-0.328, 0.211} + \DIAMOND {-0.211, 0.328} + \DIAMOND {-0.338, 0.107} + \DIAMOND {-0.107, 0.338} + \DIAMOND {-0.398, 0.274} + \DIAMOND {-0.274, 0.398} + \DIAMOND {-0.412, 0.166} + \DIAMOND {-0.166, 0.412} + \DIAMOND {-0.418, 0.056} + \DIAMOND {-0.056, 0.418} + \DIAMOND {-0.488, 0.231} + \DIAMOND {-0.231, 0.488} + \DIAMOND {-0.498, 0.116} + \DIAMOND {-0.116, 0.498} + \DIAMOND {-0.041,-0.041} % Third quadrant (-,-) + \DIAMOND {-0.087,-0.087} + \DIAMOND {-0.137,-0.137} + \DIAMOND {-0.191,-0.191} + \DIAMOND {-0.249,-0.249} + \DIAMOND {-0.311,-0.311} + \DIAMOND {-0.377,-0.377} + \DIAMOND {-0.144,-0.046} + \DIAMOND {-0.046,-0.144} + \DIAMOND {-0.202,-0.097} + \DIAMOND {-0.097,-0.202} + \DIAMOND {-0.263,-0.152} + \DIAMOND {-0.152,-0.263} + \DIAMOND {-0.270,-0.051} + \DIAMOND {-0.051,-0.270} + \DIAMOND {-0.328,-0.211} + \DIAMOND {-0.211,-0.328} + \DIAMOND {-0.338,-0.107} + \DIAMOND {-0.107,-0.338} + \DIAMOND {-0.398,-0.274} + \DIAMOND {-0.274,-0.398} + \DIAMOND {-0.412,-0.166} + \DIAMOND {-0.166,-0.412} + \DIAMOND {-0.418,-0.056} + \DIAMOND {-0.056,-0.418} + \DIAMOND {-0.488,-0.231} + \DIAMOND {-0.231,-0.488} + \DIAMOND {-0.498,-0.116} + \DIAMOND {-0.116,-0.498} + \DIAMOND { 0.041,-0.041} % Fourth quadrant (+,-) + \DIAMOND { 0.087,-0.087} + \DIAMOND { 0.137,-0.137} + \DIAMOND { 0.191,-0.191} + \DIAMOND { 0.249,-0.249} + \DIAMOND { 0.311,-0.311} + \DIAMOND { 0.377,-0.377} + \DIAMOND { 0.144,-0.046} + \DIAMOND { 0.046,-0.144} + \DIAMOND { 0.202,-0.097} + \DIAMOND { 0.097,-0.202} + \DIAMOND { 0.263,-0.152} + \DIAMOND { 0.152,-0.263} + \DIAMOND { 0.270,-0.051} + \DIAMOND { 0.051,-0.270} + \DIAMOND { 0.328,-0.211} + \DIAMOND { 0.211,-0.328} + \DIAMOND { 0.338,-0.107} + \DIAMOND { 0.107,-0.338} + \DIAMOND { 0.398,-0.274} + \DIAMOND { 0.274,-0.398} + \DIAMOND { 0.412,-0.166} + \DIAMOND { 0.166,-0.412} + \DIAMOND { 0.418,-0.056} + \DIAMOND { 0.056,-0.418} + \DIAMOND { 0.488,-0.231} + \DIAMOND { 0.231,-0.488} + \DIAMOND { 0.498,-0.116} + \DIAMOND { 0.116,-0.498} + \typeout {UniStuttgartLogo -- Released 25 November 1988.} + \else + \thicklines + \put (-0.500,-0.500) {\framebox(1.000,1.000){\LARGE\it Size~too~large}} + \typeout {UniStuttgartLogo -- Released 25 November 1988, requested size too large.} + \fi + \fi + \end{picture}} + diff --git a/macros/latex209/contrib/misc/uscthesis.sty b/macros/latex209/contrib/misc/uscthesis.sty new file mode 100644 index 0000000000..ce29bfe2a7 --- /dev/null +++ b/macros/latex209/contrib/misc/uscthesis.sty @@ -0,0 +1,999 @@ +%$% USCthesis.sty +%$% USC Thesis/Dissertation document-style +%$% $Header: USCthesis.sty,v 2.3 92/08/13 14:22:21 sdc Exp $ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% @LaTeX-style-file{ +%%% Author = "Steven Douglas Cochran", +%%% Version = "2.3", +%%% Date = "13 August 1992", +%%% Time = "14:22:21 EDT", +%%% Filename = "USCthesis.sty", +%%% Address = "Digital Mapping Laboratory +%%% School of Computer Science +%%% Carnegie-Mellon University +%%% 5000 Forbes Avenue +%%% Pittsburgh, PA 15213-3890 +%%% USA", +%%% Telephone = "(412) 268-5654", +%%% FAX = "", +%%% checksum = "54671 999 3568 32946", +%%% Email = "sdc+@CS.CMU.EDU (Internet)", +%%% CodeTable = "ISO/ASCII", +%%% Keywords = "LaTeX, Thesis, Dissertation", +%%% Archives = "shsu*", +%%% Supported = "yes", +%%% Abstract = "LaTeX document-style for typesetting +%%% Theses or Dissertations in accordance +%%% with the University of Southern +%%% California Regulations for Format and +%%% Presentation of Theses and Disertations. +%%% It provides some alternative ``bells and +%%% whistles'' such as support for +%%% multi-volume documents." +%%% Note = "Requires Stephen Page's `doublespace' +%%% style option (or equivalent) in addition +%%% to the standard LaTeX `report' style." +%%% SeeAlso = "techreport.sty", +%%% 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: USCthesis.sty,v $ +%$% Revision 2.3 92/08/13 14:22:21 sdc +%$% Added \universityname for easy use outside USC. Also the +%$% \if@techreport switch can be used to turn off the one-side-only +%$% warning message (for better interface with the techreport style +%$% option). Placed a check for TeX-3.0 to allow an old TeX to work +%$% without warnings. Cleaned-up the code and comments a little. +%$% +%$% Revision 2.2 92/06/29 10:59:15 sdc +%$% Added standard file header for style. +%$% +%$% Revision 2.1 91/02/09 00:54:08 cochran +%$% Fixed bug in interaction with techreport.sty. +%$% +%$% Revision 2.0 91/01/03 16:12:48 cochran +%$% Merged divergent branches by cochran@iris.usc.edu (1.10) and by +%$% tli@almaak.usc.edu (1.11); these are common up to revision 1.8. +%$% Removed fix in 1.11 which added Reference List to the TOC since +%$% this is handled by the \references command. +%$% +%$% Changes by tli@almaak.usc.edu: +%$% +%$% 1.11 (90/09/23) Change title font to 12pt. Change author's +%$% font to 12pt. Fix Reference List so that it shows up in TOC. +%$% Break the way that appendices show up in TOC. +%$% +%$% 1.10 (90/07/10) Added a hack to make it work with TeX 3.0. +%$% +%$% 1.9 (90/01/30) Make subsubsections show up with numbered +%$% labels and in the TOC. +%$% +%$% Changes by cochran@iris.usc.edu: +%$% +%$% 1.10 (90/12/29) Added commands and modified \title to allow +%$% multiple volume dissertations. Fixed bug which caused the +%$% pagestyle of the TOC to be wrong if there were no +%$% preceeding prefacesections. +%$% +%$% 1.9 (90/12/03) Corrected title size to correspond to the +%$% University Publications statement that the "Title must be +%$% the same size as `FACULTY OF ...' and no bold print. Also +%$% added an optional argument to the \pageleft command to +%$% allow the fine tuning of the gutter margin in the +%$% techreport style option. +%$% +%$% Revision 1.8 89/09/15 19:39:11 tli +%$% Change spacing in accordance with University Publications. +%$% +%$% Revision 1.7 89/01/27 13:56:04 tli +%$% Too much space after a saying. +%$% +%$% Revision 1.6 89/01/26 14:01:20 tli +%$% Added the saying environment. +%$% +%$% Revision 1.5 88/11/02 10:42:47 cochran +%$% Minor corrections and removal of unnecessary \makeatletter and +%$% \makeatother. +%$% +%$% Revision 1.4 88/10/20 11:58:38 cochran +%$% Updated to allow the user more control over spacing to the "blue +%$% lines," and to be in accordance with the USC Regulations for +%$% Format and Presentation of Theses and Disertations, published +%$% March 1987. +%$% +%$% Revision 1.3 88/03/16 10:49:19 cochran +%$% Several small updates to \committee as suggested by peng@USC-IRIS. +%$% +%$% Revision 1.1 88/03/05 20:04:51 cochran +%$% Set penalties, and new margin and page sizes. Fixed bug which +%$% caused a wrong contents page for long lists of figures or tables. +%$% +%$% Revision 1.0 87/03/05 18:29:34 cochran +%$% Created by combining the best (?) features of the dissertation +%$% styles written by Herb Barad @ USC-SIPI and Howard Trickey @ +%$% Stanford University. +%$% +%$% NOTE: This style assumes the existance of Stephen Page's +%$% `doublespace' style option in addition to the standard +%$% LaTeX `report' style. +%%% +%%% Example: +%%% +%%% \documentstyle[12pt]{USCthesis} +%%% \begin{document} +%%% \title[Volume I]{Dissertation Title} +%%% \author{Terry FullName Candidate} +%%% \committee{J.~Smith & (Chairperson)\\* +%%% N.~Jones\\* +%%% S.~Foobar & (Outside Member)} +%%% \begin{preface} +%%% \prefacesection{Dedication} +%%% This dissertation is dedicated to . . . +%%% \prefacesection{Acknowledgements} +%%% I would like to thank . . . +%%% \begin{singlespace} +%%% \tableofcontents +%%% \listoftables +%%% \listoffigures +%%% \end{singlespace} +%%% \prefacesection{Abstract} +%%% This dissertation contains all knowledge about . . . +%%% \end{preface} +%%% \chapter{Introduction} +%%% . . . +%%% \chapter{Conclusions} +%%% . . . +%%% \begin{singlespace} +%%% \references{plain}{mybib} +%%% \appendix +%%% \chapter{A Long Proof} +%%% . . . +%%% \end{singlespace} +%%% . . . +%%% \addvolumecontents{thesis_part2} +%%% \addvolumecontents{thesis_part3} +%%% \addvolumecontents[lof]{thesis_part2} +%%% \end{document} +%%% +%%% Documentation: +%%% +%%% This style file modifies the standard report style to follow the +%%% "USC Regulations for Format and Presentation of Theses and +%%% Dissertations" (July 1989) document published by the Office of +%%% University Publications. +%%% +%%% The following options are available for use in the \documentstyle +%%% (other options also available as report.sty options or as +%%% option.sty files). +%%% +%%% `10pt' (default) `11pt' or `12pt' base typesize. +%%% +%%% `dissertation' (default), or `thesis' title page. +%%% +%%% `final' (default) or `proposal' layout. +%%% +%%% `copyright' (default) or `nocopyright' message on title page. +%%% This affects the `final' layout only. +%%% +%%% `fussy' (default) or `sloppy' word spacing. This affects the +%%% alignment at the right margin. Fussy will sometimes write +%%% over the blue line but is very useful for finding problem +%%% areas during the development of the thesis. Sloppy will +%%% insure that no line passes the right margin, but may need +%%% to over stretch the line and thus generate an underfilled +%%% hbox message. +%%% +%%% `clref' (default) or `opref' to set the open or closed format +%%% of the entries in the references section. +%%% +%%% The following may be set PRIOR to the \begin{document} in order +%%% to make adjustments to fit the text in the "blue lines". The +%%% values listed below are the defaults: +%%% +%%% \pagetop{1.01 true in} % 1 inch plus allowance +%%% \pageleft{1.51 true in} % 1.5 inches plus allowance +%%% \pageheight{8.73 true in} % 9 inches minus allowance +%%% \pagewidth{5.92 true in} % 6 inches minus allowance +%%% \pagemargin{2.0} % Number of (unstretched) lines +%%% % between text and page number +%%% \setstretch{1.3} % Set the "double" spacing +%%% +%%% The following commands control what goes on the title page. +%%% +%%% \title[volume]{thesis title} +%%% - The thesis title is set using the \title command. +%%% The optional volume parameter allows the +%%% specification of the volume on the title page for +%%% long papers which are divided. +%%% +%%% \author{author's full name} +%%% - Authors name. +%%% +%%% \universityname{UNIVERSITY OF SOUTHERN CALIFORNIA} +%%% - The university's name (the above is the default). +%%% +%%% \schoolname{name of the school granting the degree} +%%% - "GRADUATE SCHOOL" is the default. Changing this +%%% also has the effect of turning off the \majorfield +%%% entry. This affects the `final' layout only. +%%% +%%% \degree{degree name} +%%% - defaults to "Master of Science" or "Doctor of +%%% Philosophy" depending on whether the `thesis' or +%%% `dissertation' option is in effect. This affects +%%% the `final' layout only. +%%% +%%% \majorfield{author's major} +%%% - "Electrical Engineering" if omitted. Changing the +%%% \schoolname has the effect of turning off the +%%% display of the major field. If you specify this +%%% command after changing the \schoolname, both will be +%%% shown on the titlepage. This affects the `final' +%%% layout only. +%%% +%%% \committee{name1\\* name2\\* name3} +%%% - Currently this in only used on with the `proposal' +%%% option, since the signature page MUST be the one +%%% supplied by the University. This affects the +%%% `proposal' layout only. +%%% +%%% \submitdate{month & year in which submitted to Graduate School} +%%% - current month & year if omitted. +%%% +%%% \copyrightyear{year degree conferred (next year if submitted in Dec.)} +%%% - current year (or next year, in December) if omitted. +%%% This affects only the `final' layout and only when +%%% the `copyright' option is in effect. +%%% +%%% The PREFACE environment prints the titlepage and sets up the page +%%% formatting for the preface pages. To create a preface section +%%% use the command: +%%% +%%% \prefacesection[optional TOC name]{name} +%%% +%%% To generate the Table of Contents, and the Lists of Tables and +%%% Figures, use the commands: +%%% +%%% \tableofcontents[CONTENTS] +%%% \listoftables*[LIST OF TABLES] +%%% \listoffigures*[LIST OF FIGURES] +%%% +%%% the bracketed names are used at the top of the sections and in +%%% the Table of Contents for the tables and figures. The optional +%%% `*' in the latter commands suppresses their entry into the Table +%%% of Contents. +%%% +%%% When multiple volumes are present (as indicated by the use of the +%%% optional argument of the \title command), the Table of Contents +%%% may be augmented by specifying the name of the other parts of the +%%% document with the command: +%%% +%%% \addvolumecontents[toc]{volumename} +%%% +%%% This command should be placed right after the \begin{document} +%%% command to include prior volumes, and just before the +%%% \end{document} command to include the contents of later volumes. +%%% By default (if the optional [] section is ommited) it reads in +%%% the volumename.toc file (if present). Using [lof] or [lot] work +%%% in the same way for the lists of figures and tables respectively. +%%% +%%% To start the document at a page other than 1 (for later volumes) +%%% you can use the command: +%%% +%%% \startingpagenumber{1}{1} +%%% +%%% prior to the \begin{preface} command. The first argument is the +%%% page number of the titlepage and subsequent pages numbered with +%%% roman numerals and the second is the number of the first page +%%% after the preface section. The defaults are shown above. +%%% +%%% To include a reference section, use the following command: +%%% +%%% \references*[Reference List]{style}{bibfile(s)} +%%% +%%% where the `*' is optional and indicates that you DO NOT want this +%%% section to appear in the Table-of-Contents. "Reference List" is +%%% the default name if the optional `[]' section of the command is +%%% not specified (the USC Regulations suggest either `Reference +%%% List' or `Bibliography'). Both of the remaining entries MUST be +%%% specified. {Style} is any of "plain", "unsrt", "alpha", "abbrv" +%%% (or other *.bst format file). The {bibfile(s)} are a list of one +%%% or more *.bib filenames from which the references are to be taken. +%%% +%%% The `saying' environment is used to set a cutesy little quotation +%%% at the start of the chapter, just after the chapter head. To use: +%%% +%%% \begin{saying} +%%% If this exercise isn't just a joke, the title of \\ +%%% this appendix is a lie. +%%% \end{saying} +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% +%% Declare the dissertation style +%% +\typeout{Document Style: `USCthesis' Version 2.3 1992.08.13} + +%% +%% Define style option flags +%% +\@namedef{ds@10pt}{\def\@ptsize{0}} % Default (defined in report.sty) +%% \ds@11pt and \ds@12pt are defined in report.sty + +\newif\ifthesis +\def\ds@dissertation{\thesisfalse} % Default +\def\ds@thesis{\thesistrue} + +\newif\ifproposal +\def\ds@final{\proposalfalse} % Default +\def\ds@proposal{\proposaltrue} + +\newif\ifcopyright +\copyrighttrue +\def\ds@nocopyright{\copyrightfalse} +\def\ds@copyright{\copyrighttrue} % Default + +\fussy +\def\ds@fussy{\fussy} % Default +\def\ds@sloppy{\sloppy} + +\newif\ifopenbib +\def\ds@clref{\openbibfalse} % Default +\def\ds@opref{\openbibtrue} + +\newif\if@techreport % Internal switch for techreport +\def\ds@techreport{% style option. Set switch, if + \@techreporttrue % the option is present, but + \xdef\@optionfiles{% still add to the \@optionfiles + \@optionfiles % list. + \@elt techreport.sty\relax + }} + +%% +%% Define the Layout adjustment commands. Initialization of values is +%% made after loading the report style. +%% +\def\pagetop#1{% + \global \topmargin #1 % Nominal distance from page top to + \global\advance \topmargin -1.0 true in} % top of boxwith running head. + +\def\pageleft{% + \@ifnextchar [% + {\@pageleft}% + {\@pageleft[0pt]}} + +\def\@pageleft[#1]#2{% + \if@twoside + %% Values for two-sided printing: (1/2 inch gutter margin) + \global \oddsidemargin #2 % Left margin on odd-numbered pages. + \global\advance \oddsidemargin -1.0 true in + \global \evensidemargin #2 % Left margin on even-numbered pages. + \global\advance \evensidemargin -1.5 true in + \global\advance \evensidemargin #1 % Adjustment for fine-tuning gutter + % margin + \flushbottom + \ifproposal\else\if@techreport\else + \typeout{Warning: Thesis/Dissertation should be + printed on one side only.} + \fi\fi + \else + %% Values for one-sided printing: + \global \oddsidemargin #2 + \global\advance \oddsidemargin -1.0 true in + \global \evensidemargin \oddsidemargin + \raggedbottom + \fi} + +\def\pageheight{% + \@ifnextchar [% + {\@pageheight}% + {\@pageheight[\baselineskip]}} + +\def\@pageheight[#1]#2{% + \global \footheight #1% + \global \textheight #2% + \global\advance \textheight -\footheight} + +\def\pagewidth#1{\global \textwidth #1} + +\def\pagemargin#1{\global \footskip #1\baselineskip} + +%% +%% Load the standard `report' style, and `doublespace' macros. +%% +\input report.sty\relax +\input doublespace.sty\relax +\setstretch{1.3} % Use 1.3 times the normal baseline-to-baseline skip + +%% +%% Modify Penalties +%% +\brokenpenalty 10000 % Disallow page breaks at hyphens (this + % will give some underfull vbox's, so an + % alternative is to use \brokenpenalty=100 + % and manually search for and fix such page + % breaks) +\clubpenalty 10000 % Disallow club (orphan) lines +\displaywidowpenalty 10000 % Disallow widow lines before display +\widowpenalty 10000 % Disallow widow lines + +%% +%% Disallow x- or -xx breaks. But if used in an old TeX, we will just +%% have to do without and hope for the best. +%% +\ifx\undefined\inputlineno\else + \lefthyphenmin=2 + \righthyphenmin=3 +\fi + +%% +%% Set the Page Style Parameters +%% +\@addtoreset{equation}{chapter} % Have the equation reset in each chapter +\headheight 0.0 true pt % Height of box containing running head +\headsep 0.0 true pt % Size of strut between head and text +\topskip 10.0 true pt % Baselineskip for the first line of page +\itemsep 0.0 true pt % Extra vertical space, in addition to + % \parskip, added between list items +\pagetop{1.01 true in} % Set \topmargin +\pageleft{1.51 true in} % Set \evensidemargin and \oddsidemargin +\pageheight{8.73 true in} % Set \textheight and \footheight +\pagewidth{5.92 true in} % Set \textwidth +\pagemargin{2.0} % Set \footskip + +%% +%% Redefine some font sizes so that things don't get too big. +%% +\let\LARGE=\Large +\let\huge=\Large +\let\Huge=\Large + +%% +%% Redefine plain style page to move the page number to the lower +%% right corner. +%% +\if@twoside + \def\ps@plain{% + \def\@oddhead{}% + \def\@oddfoot{\hfil\rm\thepage}% + \def\@evenhead{} + \def\@evenfoot{\rm\thepage\hfil}}% +\else + \def\ps@plain{% + \def\@oddhead{}% + \def\@oddfoot{\hfil\rm\thepage}% + \def\@evenhead{} + \let\@evenfoot\@oddfoot}% +\fi + +%% +%% Define Title Page Macros +%% +%% \title and \author is defined in latex.tex, but we will need to +%% redefine \title to allow the optional argument. Also, the \thanks +%% command is disabled and such footnotes will be thrown away or will +%% appear in the wrong place. +%% +\def\title{% + \@ifnextchar [% + {\@title}% + {\@title[\@empty]}} + +\def\@title[#1]#2{% + \gdef\@volume{#1}% + \gdef\@title{#2}} + +%% +%% The \addvolumecontents will add the contents of other volumes to +%% the current volume. This command should be placed after the +%% \begin{document} for earlier volumes and before the \end{document} +%% for later ones. +%% +\def\thesisinput#1{% + \if@filesw + \begingroup + \let\thesisinput=\@gobble % Inhibit recursive \thesisinput's + \@input{#1}% + \endgroup + \fi} + +\def\addvolumecontents{% + \@ifnextchar [% + {\@addvolumecontents}% + {\@addvolumecontents[toc]}} + +\long\def\@addvolumecontents[#1]#2{% + \if@filesw + \begingroup + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \def\protect##1{\string\string\string##1\string\space \space}% + \edef\@tempa{% + \immediate\write\@auxout{% + \string\@writefile{#1}{\protect \thesisinput{#2.#1}}}}% + \@tempa + \if@nobreak + \ifvmode + \nobreak + \fi + \fi + \endgroup + \fi + \relax} + +%% +%% The \startingpagenumber command will change the default starting +%% page number for the first (title) page of the current volume and +%% for the first page after the preface section. +%% +\def\@startpageA{1} +\def\@startpageB{1} + +\def\startingpagenumber#1#2{% + \gdef\@startpageA{#1}% + \gdef\@startpageB{#2}} + +%% +%% The following flag is used to suppress the major field name on the +%% title page when the default school is changed (only the GRADUATE +%% SCHOOL currently uses a major field). Setting \majorfield after +%% \schoolname will reset the flag and allow the printing of another +%% school with a major field in addition. +%% +\newif\ifshowmajorfield +\showmajorfieldtrue + +\def\universityname#1{% + \gdef\@university{\uppercase{#1}}} +\def\@university{UNIVERSITY OF SOUTHERN CALIFORNIA} + +\def\schoolname#1{% + \gdef\@schoolname{#1}% + \showmajorfieldfalse} +\def\@schoolname{GRADUATE SCHOOL} + +\def\degree#1{% + \ifthesis + \gdef\@mastersdegree{#1}% + \else + \gdef\@doctorsdegree{#1}} +\def\@mastersdegree{MASTER OF SCIENCE} +\def\@doctorsdegree{DOCTOR OF PHILOSOPHY} + +\def\majorfield#1{% + \gdef\@majorfield{#1}% + \showmajorfieldtrue} +\def\@majorfield{Electrical Engineering} + +\def\committee#1{\gdef\@committee{#1}} +\def\@committee{} + +\def\submitdate#1{\gdef\@submitdate{#1}} +\def\@submitdate{% + \ifcase \the\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 \the\year} + +\def\copyrightyear#1{\gdef\@copyrightyear{#1}} +%% December dissertations should have the next year as the copyright year +\ifnum \month=12 + \@tempcnta=\year + \advance\@tempcnta by 1 + \edef\@copyrightyear{\number \the\@tempcnta} +\else + \def\@copyrightyear{\number \the\year} +\fi + +%% +%% Create the PREFACE environment. The titlepage is generated when +%% the environment is first entered and the numbering is roman within +%% the preface. The \endpreface switches to arabic numbering. +%% +\def\preface{% + \newpage + \pagenumbering{roman}% + \pagestyle{empty}% + \begin{singlespace}% + \ifproposal + \makeproptitle + \setcounter{page}{1}% + \addtocounter{page}{\@startpageA}% Advance page counter for title page. + \else + \maketitle + \setcounter{page}{1}% + \addtocounter{page}{\@startpageA}% Advance page counter for (signature + \fi % and) title. At USC, the signature + \newpage % page is not counted! + \ifx\@volume\@empty\else % Add Volume ID to contents if present. + \addtocontents{toc}{\protect\contentsline{part}{\@volume}{}}% + \fi + \end{singlespace}% + \pagestyle{plain}} + +\def\endpreface{% + \newpage + \pagenumbering{arabic}% + \pagestyle{plain}% + \setcounter{page}{\@startpageB}} + +%% +%% Define the PROPOSAL title page +%% +\def\makeproptitle{% + \begin{titlepage}% + \null + \vskip 60.0 true pt% To adjust centering. + \begin{center} + {\Large \@title \par}% Set title in \Large size. + \ifx\@volume\@empty\else + \vskip 3em% Vertical space before volume. + \@volume + \fi + \vskip 3em% Vertical space after title. + \ifthesis + {Masters Thesis Proposal}% + \else + {Ph.D. Dissertation Proposal}% + \fi\\*% + {submitted by}% + \vskip 3em % Vertical space before author. + {\lineskip .75em + \@author + \par}% + \vskip 1.5cm % Vertical space before date. + {\small + \@submitdate + \par}% + \vskip 1.5in + {{\bf Guidance Committee}\\*[1.0 true cm]% + \begin{tabular}[t]{ll}\@committee + \end{tabular}\par}% + \end{center}% + \par + \vfil + \end{titlepage}} + +%% +%% Make the Dissertation titlepage +%% +\def\maketitle{% + \begin{titlepage}% + \setcounter{page}{0}% + \null + \vfill\vfill + \begin{center}% + {\@title \par}% Set title the same size as "FACULTY OF ..." + \ifx\@volume\@empty\else + \vskip 0.16 true in + \@volume + \fi + \vskip 0.16 true in + by% + \vskip 0.16 true in + {\begin{tabular}[t]{c}\@author\\*[1.0 true in]% + \hline + \end{tabular}% + \par} + \vskip 1.0 true in + \ifthesis + A Thesis Presented to the% + \else + A Dissertation Presented to the% + \fi\\*[0.1 true in]% + FACULTY OF THE \@schoolname\\*[0.1 true in]% + \@university\\*[0.1 true in]% + In Partial Fulfillment of the\\*[0.1 true in]% + Requirements for the Degree\\*[0.1 true in]% + \ifthesis + \@mastersdegree + \else + \@doctorsdegree + \fi\\*[0.1 true in]% + \ifshowmajorfield + (\@majorfield)% + \fi\\*[1.0 true cm]% + \vfill + {\bf \small \@submitdate \par}% should be just month and year + \end{center}% + \par + \vfill + \ifcopyright + \begin{center}% + {\normalsize\ Copyright~ \@copyrightyear\ ~\@author}% + \end{center}% + \fi + \end{titlepage}} + +%% +%% Start a Preface Page +%% +\newdimen\prefacetopspace +\prefacetopspace=1.0 true in + +\def\prefacesection{% + \@ifnextchar [% + {\@prefacesectionB}% + {\@prefacesectionA}} + +\def\@prefacesectionA#1{% + \@prefacesectionB[#1]{#1}} + +\def\@prefacesectionB[#1]#2{% + \newpage + \pagestyle{plain}% + \null + \vskip\prefacetopspace + \begin{center}% + \section*{#2}% + \end{center}% + \addcontentsline{toc}{chapter}{#1}} + +%% +%% Make the Table of Contents and Figures/Tables pages +%% +\def\tableofcontents{% + \@ifnextchar [% + {\@starspeciallist{toc}}% + {\@starspeciallist{toc}[Contents]}} + +\def\listoftables{% + \@ifstar + {\@ifnextchar [% + {\@starspeciallist{lot}}% + {\@starspeciallist{lot}[List Of Tables]}}% + {\@ifnextchar [% + {\@speciallist{lot}}% + {\@speciallist{lot}[List Of Tables]}}} + +\def\listoffigures{% + \@ifstar + {\@ifnextchar [% + {\@starspeciallist{lof}}% + {\@starspeciallist{lof}[List Of Figures]}}% + {\@ifnextchar [% + {\@speciallist{lof}}% + {\@speciallist{lof}[List Of Figures]}}} + +\def\@starspeciallist#1[#2]{% + \newpage + \@restonecolfalse + \if@twocolumn + \@restonecoltrue + \onecolumn + \fi + \chapter*{#2}% + \@starttoc{#1}% + \if@restonecol\twocolumn\fi} + +\def\@speciallist#1[#2]{% + \newpage + \@restonecolfalse + \if@twocolumn + \@restonecoltrue + \onecolumn + \fi + \chapter*{#2}% + \addcontentsline{toc}{chapter}{#2} + \@starttoc{#1}% + \if@restonecol\twocolumn\fi} + +%% +%% Redefine the report.sty chapter definitions to suppress hyphenation +%% in the titles. +%% +\def\@makechapterhead#1{% + \vspace*{50pt}% + {\parindent 0pt + \raggedright + \hyphenpenalty 10000% + \ifnum \c@secnumdepth > \m@ne + \Large\bf \@chapapp{} \thechapter\par + \vskip 20pt + \fi + \Large\bf #1\par + \nobreak + \vskip 40pt} + \hyphenpenalty 50} + +\def\@makeschapterhead#1{% + \vspace*{50pt}% + {\parindent 0pt + \raggedright + \hyphenpenalty 10000% + \Large\bf #1\par + \nobreak + \vskip 40pt} + \hyphenpenalty 50} + +%% +%% Redefine the report.sty section definitions. The \@startsection +%% command takes the arguments: +%% +%% {Name}{Level}{Indent}{BeforeSkip}{AfterSkip}{Style} +%% +%% Also it takes a `*' which suppress the section counting, and if the +%% `*' is not present an optional [Altheading]{heading} pair. +%% +\def\section{\@startsection{section}% Name + {1}% Level + {\z@}% Indent + {-3.5ex plus -1ex minus -.2ex}% BeforeSkip + {2.3ex plus .2ex}% AfterSkip + {\Large\bf\hyphenpenalty 10000}}% Style + +\def\subsection{\@startsection{subsection}% Name + {2}% Level + {\z@}% Indent + {-3.5ex plus -1ex minus -.2ex}% BeforeSkip + {1.5ex plus .2ex}% AfterSkip + {\large\bf\hyphenpenalty 10000}}% Style + +\def\subsubsection{\@startsection{subsubsection}% Name + {3}% Level + {\z@}% Indent + {-3.5ex plus -1ex minus -.2ex}% BeforeSkip + {1.5ex plus .2ex}% AfterSkip + {\normalsize\bf\hyphenpenalty 10000}}% Style + +\def\paragraph{\@startsection{paragraph}% Name + {4}% Level + {\z@}% Indent + {3.25ex plus 1ex minus .2ex}% BeforeSkip + {-1em}% AfterSkip + {\normalsize\bf\hyphenpenalty 10000}}% Style + +\def\subparagraph{\@startsection{subparagraph}% Name + {4}% Level + {\parindent}% Indent + {3.25ex plus 1ex minus .2ex}% BeforeSkip + {-1em}% AfterSkip + {\normalsize\bf\hyphenpenalty 10000}}% Style + +%% +%% The value of the counter secnumdepth gives the depth of the +%% highest-level sectioning command that is to produce section +%% numbers. +%% +\setcounter{secnumdepth}{3} +\setcounter{tocdepth}{3} + +%% +%% Redefine the report.sty `Bibliography' as a `Reference List' chapter. +%% +\def\bibliographystyle#1{% But first, turn off standard bib commands. + \@latexerr{\string\bibliographystyle\space is undefined. + Use \string\references{#1}{bibfile list}}\@eha} +\def\bibliography#1{% + \@latexerr{\string\bibliography\space is undefined. + Use \string\references{bibstyle}{#1}}\@eha} + +\def\references{% + \@ifstar + {\@referencesA}% + {\@referencesB}} + +\def\@referencesA{% + \@ifnextchar [% + {\@referencesAA}% + {\@referencesAA[Reference List]}}% + +\def\@referencesAA[#1]#2#3{ + \gdef\@referencesname{#1} + \if@filesw + \immediate\write\@auxout{\string\bibstyle{#2}}% + \immediate\write\@auxout{\string\bibdata{#3}}% + \fi + \@input{\jobname.bbl}} + +\def\@referencesB{ + \@ifnextchar [ + {\@referencesBB} + {\@referencesBB[Reference List]}} + +\def\@referencesBB[#1]#2#3{ + \addcontentsline{toc}{chapter}{#1} + \gdef\@referencesname{#1} + \if@filesw + \immediate\write\@auxout{\string\bibstyle{#2}}% + \immediate\write\@auxout{\string\bibdata{#3}}% + \fi + \@input{\jobname.bbl}} + +\def\@referencesname{Reference List} + +\def\thebibliography#1{ + \chapter*{\@referencesname\@mkboth{\@referencesname}{\@referencesname}} + \list{[\arabic{enumi}]}{ + \settowidth\labelwidth{[#1]} + \leftmargin\labelwidth \advance\leftmargin\labelsep + \ifopenbib + \listparindent -1.5em + \advance\leftmargin-\listparindent + \itemindent\listparindent + \parsep 0pt% + \fi + \usecounter{enumi}}% + \ifopenbib + \def\newblock{\par} + \let\\=\@centercr + \@rightskip\@flushglue \rightskip\@rightskip + \leftskip\z@ + \else + \def\newblock{\hskip .11em plus .33em minus -.07em}% + \fi + \sloppy + \sfcode`\.=1000\relax} + +\let\endthebibliography=\endlist + +%% +%% APPENDIX +%% +%% The \appendix command must do the following: +%% -- reset the chapter counter to zero +%% -- set \@chapapp to Appendix (for messages) +%% -- redefine the chapter counter to produce appendix numbers +%% -- reset the section counter to zero +%% -- redefine the \chapter command if appendix titles and headings +%% are to look different from chapter titles and headings. +%% +%% For USC, the Appendix appears VERY oddly in the table of contents. +%% +\def\appendix{ + \par + \setcounter{chapter}{0} + \setcounter{section}{0} + \def\@chapapp{Appendix} + \def\thechapter{\Alph{chapter}} + \def\@chapter[##1]##2{ + \refstepcounter{chapter} + \typeout{\@chapapp\space\thechapter.} + \addtocontents{toc}{ + \protect\contentsline{chapter}{Appendix \thechapter}{\relax}} + \addcontentsline{toc}{section}{##1} + \chaptermark{##1} + \addtocontents{lof}{\protect\addvspace{10pt}}% Adds between-chapter space + \addtocontents{lot}{\protect\addvspace{10pt}}% to lists of figs & tables. + \if@twocolumn + \@topnewpage[\@makechapterhead{##2}] + \else \@makechapterhead{##2} + \@afterheading % Routine called after chap + \fi}} % and section heading. + +%% +%% Define the `saying' environment +%% Used to set a cutesy little quotation at the start of the chapter +%% +\def\saying{% + \trivlist + \raggedleft + \item[]\em} + +\def\endsaying{% + \endtrivlist + \vspace{20pt}} + +%% +%% Define the starting pagestyle +%% +\pagestyle{plain} diff --git a/macros/latex209/contrib/misc/usenix.sty b/macros/latex209/contrib/misc/usenix.sty new file mode 100644 index 0000000000..4a742023b6 --- /dev/null +++ b/macros/latex209/contrib/misc/usenix.sty @@ -0,0 +1,105 @@ +% usenix.sty +% For Usenix conference proceedings -- released 1 June 1989 +% +% This style option is designed to work with the article document +% style of LaTeX version 2.09. Use +% \documentstyle[usenix]{article} +% +% The rules here are from "Instructions for Usenix Authors and +% Speakers" in the INSTRUCTIONS from Usenix. +% I've followed these rules as close as possible but there are a +% number of "gaps" that I had questions about. I waited several +% months for a response from Usenix but never got one. If you find +% any problems with submitting proceedings with this style, please +% let me know. + + +% Copyright (c) 1989 by David K. Steiner +% 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. + +% Dave Steiner +% Rutgers University +% CCIS, Busch Campus +% PO Box 879 +% Piscataway, NJ 08855-0879 +% steiner@topaz.rutgers.edu +% ..!rutgers!topaz.rutgers.edu!steiner + +\typeout{Document Style Option 'Usenix' -- version 0.9, released 1 June 1989} + +% All comments assume basic font is 10pt rm but code should +% handle any font size changes + +% 6x9in centered in a 8.5x11in page +\oddsidemargin=.25in +\evensidemargin=.25in +\marginparwidth=0pt +\marginparsep=0pt +\textwidth=6in + +\topmargin=0in +\textheight=9in +\headheight=0pt +\headsep=0pt + +\parskip=\baselineskip \divide\parskip \tw@ +\parindent=\baselineskip \multiply\parindent \tw@ + +%Title should be 14pt bold, attribution info should be 12pt italic. +% Don't include date. Abstract should be 12pt with a 12pt bold title. + +\def\maketitle{\par + \begingroup + \parskip=0pt + \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\bf \@title \par} \vskip 1.5em {\large\it \lineskip .5em +\begin{tabular}[t]{c}\@author + \end{tabular}\par} + \end{center} + \par + \vskip 1.5em} +\def\abstract{\if@twocolumn +\section*{Abstract} +\else \large +\begin{center} +{\bf ABSTRACT\vspace{-.5em}\vspace{0pt}\vskip\baselineskip} +\end{center} +\quotation +\fi} +\def\endabstract{\if@twocolumn\else\endquotation\fi} + +\def\section{\@startsection {section}{1}{\z@} + {\parskip}{.1pt plus .2pt}{\normalsize\bf}} +\def\subsection{\@startsection{subsection}{2}{\z@} + {\parskip}{.1pt plus .2pt}{\normalsize\bf}} +\def\subsubsection{\@startsection{subsubsection}{3}{\z@} + {\parskip}{.1pt plus .2pt}{\normalsize\bf}} +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{\parskip}{-1em}{\normalsize\bf}} +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{\parskip}{-1em}{\normalsize\bf}} + +% End of usenix.sty diff --git a/macros/latex209/contrib/misc/userps.sty b/macros/latex209/contrib/misc/userps.sty new file mode 100644 index 0000000000..d26d9d4ab0 --- /dev/null +++ b/macros/latex209/contrib/misc/userps.sty @@ -0,0 +1,54 @@ +% convenient LaTeX pagestyles, +% defined by various LaTeX users +% +% *** WARNING WARNING WARNING *** +% The macros in this file are NOT guaranteed to work and they are +% definitely NOT maintained. Do not count on them remaining +% stable over long periods: if you use them in a thesis (say), +% copy the ones you use to your own macro file! +% +% To invoke the pagestyle named \ps@foo, you can say +% +% \pagestyle{foo} +% or +% \thispagestyle{foo} +% +% +% Latex users are encouraged to create their own styles and put +% them in this file. They should keep in mind the following +% points: +% 1. All styles added should be documented. +% 2. The style added must work REGARDLESS of the document +% style and point size used, or else they should +% clearly state which styles and sizes they are +% restricted to. +% 3. Don't allow spurious spaces into the style macros!!! +% 4. All styles should be added anonymously unless the +% author wants to get hundreds of questions about +% usage! +% + +% DON'T MESS WITH THIS LINE. IT MUST PRECEDE ALL OTHERS! +\makeatletter % allow @ in macro names + + +% A SAMPLE STYLE: +% +% STYLE plaintop : invoked (for example) with \pagestyle{plaintop} +% +% This style is like the Plain style (i.e., just a page number is output) +% but the page number is in the middle of the header line (at the top of +% the page) and the footer line (at the bottom of the page) is blank. +% +\def\ps@plaintop{% + \def\@oddhead{\rm\hfil\thepage\hfil}% + \def\@oddfoot{}% + \def\@evenhead\@oddhead + \let\@evenfoot\@oddfoot} + + +%% ADD MORE STYLES HERE. + + +% DON'T MESS WITH THE FOLLOWING LINE. IT MUST BE THE LAST LINE IN THE FILE!! +\makeatother diff --git a/macros/latex209/contrib/misc/varfbox.sty b/macros/latex209/contrib/misc/varfbox.sty new file mode 100644 index 0000000000..11e96ca0dc --- /dev/null +++ b/macros/latex209/contrib/misc/varfbox.sty @@ -0,0 +1,20 @@ +% Save file as: VARFBOX.STY Source: FILESERV@SHSU.BITNET +\typeout{Document Sub-Style 'varfbox', Version 1 (August 8, 1989) GDG} +\newdimen\holdrule + +\edef\Fbox#1#2{\holdrule=\fboxrule +\fboxrule=#1mm \fbox{#2} \fboxrule=\holdrule} + +% Usage: \Fbox{foo}{Text to box} +% This is a short style file which allows the user to specify the size of +% \fboxrule (in mm) as they use the \fbox environment by specifying \Fbox +% +% foo is the number of millimeters the \fboxrule should be set to for +% that box. +% +% \fboxrule for normal \fbox environment is not changed. +% +% Author: George D. Greenwade, Director, Center for Business and Economic +% Research, sam Houston State University, Huintsville, TX (409) 294-1518 +% BITNET: BED_GDG@SHSU +% Revision History: 8-AUG-1989 Original Version GDG diff --git a/macros/latex209/contrib/misc/verbatimfiles.sty b/macros/latex209/contrib/misc/verbatimfiles.sty new file mode 100644 index 0000000000..90a4c32f1b --- /dev/null +++ b/macros/latex209/contrib/misc/verbatimfiles.sty @@ -0,0 +1,42 @@ +% Here is a version of Adrian's VERBATIM.STY, for inputting whole files +% verbatim, which is "more LaTeX-like" in that it uses the actual LaTeX +% macros which set up the `verbatim' environment. +% +% As a matter of interest, it is much nicer for TeX if you input large +% quantities of "verbatim material" from an "external file" rather than by use +% of the `verbatim' environment (i.e. putting the material in the main input +% file. This is because this environment, in common with most (but not all) +% other "verbatim macros", makes the whole of the "vebatim material" a macro +% argument and therefore eats up TeTeX's internal memory. +% +% Chris Rowley +% + +% --- V E R B A T I M F I L E S . S T Y +% +% --- This LaTeX style-file defines two user-callable macros: +% --- \verbatimfile{<filename>} for verbatim inclusion of a file +% --- \verbatimlisting{<filename>} for verbatim inclusion with line numbers +% +% --- The macros are based on those distributed with Sunil Podar's +% --- `EPIC.STY' macro package, attributed to Tim Morgan, +% --- modified to keep internal macros internal by Adrian F. Clark, +% --- alien@uk.ac.essex.ese +% --- ---and further latexification by Chris Rowley, +% --- ca_rowley@uk.ac.open.acs.vax. +% +% --- Note that the precise layout of line breaks in this file is important! +% + +\def\verbatimfile#1{\begingroup + \@verbatim \frenchspacing \@vobeyspaces + \input#1 \endgroup +} + +\newcounter{lineno} + +\def\verbatimlisting#1{\setcounter{lineno}{0}% + \begingroup \@verbatim \frenchspacing \@vobeyspaces \parindent=20pt + \everypar{\stepcounter{lineno}\llap{\thelineno\ \ }}\input#1 + \endgroup +} diff --git a/macros/latex209/contrib/misc/verbinp.sty b/macros/latex209/contrib/misc/verbinp.sty new file mode 100644 index 0000000000..31e0add2be --- /dev/null +++ b/macros/latex209/contrib/misc/verbinp.sty @@ -0,0 +1,1230 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% VERBINP.TEX / VERBINP.STY % +% % +% (c) 1993: Rainer Perske, Zur Gr"afte 10, D-48161 M"unster, Germany % +% % +% This file may be copied, distributed and modified only unter the % +% TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION of % +% the GNU GENERAL PUBLIC LICENSE, Version 2, and any later version, % +% as published by Free Software Foundation, Inc., 675 Mass Ave, % +% Cambridge, MA 02139, USA. % +% % +% Direct any comments about this file to: perske@uni-muenster.de % +% For the date of this version see \message line below % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Einf"ugen von Dateien, die dann verbatim ausgegeben werden. % +% Die Zeichen hex.A0 bis FF werden optional gem"a"s ISO 8859 Latin 1, % +% gem"a"s CECP 850 oder gem"a"s CECP 437 gedruckt. Die Steuerzeichen % +% hex.00 bis 07, 0E bis 20 und 7F bis 9F werden ebenfalls sinnvoll % +% dargestellt, die Steuerzeichen 08 (BS), 09 (HT), 0A (LF), 0B (VT), % +% 0C (FF) und OD (CR) werden sinnvoll ausgeführt, wobei LF, VT, FF % +% und CR alle (nur) als Zeilenenden behandelt werden. % +% % +% \verbinput{fn} - Datei fn einf"ugen % +% \verbinputnum{fn} - Datei fn einf"ugen, links mit Zeilennummern % +% \verbinputbox{fn} - Datei fn einf"ugen, in Kasten einschlie"sen % +% \verbcharset{nnn} - Zeichensatz nnn einstellen, dabei ist nnn eine % +% der Zahlen 88591, 850 oder 437. Die Einstellung gilt lokal % +% % +% Diese Datei ist mit \input in die Pr"aambel einzuf"ugen oder als % +% Style-Datei im \documentstyle-/\documentclass-Befehl anzugeben % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifx\verbinputdefined\relax\endinput\else\let\verbinputdefined\relax\fi + +\message{Verbatim 8 Bit File Input of 23.Aug.1993} + +\begingroup +\makeatletter% LaTeX-Buchstabe +\catcode`\:=11% Privater Buchstabe +\catcode`\^^0c=\active\let^^0c=\relax% Outer-Setzung entsch"arfen +\gdef\H:{2.4ex}% Zeilenabstand + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Erster Teil: Definition der Sonderzeichen % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Kein Zeichen darf so definiert werden, da"s es mit '{' anf"angt, +% da sonst wegen \everypar Schwierigkeiten auftreten k"onnen + +% Makro zum Setzen der Dimensionen zur Laufzeit + +\newdimen{\w:} +\newdimen{\h:} +\newdimen{\d:} +\newdimen{\x:} +\newdimen{\y:} +\newdimen{\z:} + +% Hilfsmakros + +\gdef\cbox:#1{\leavevmode{\tt\setbox0=\hbox to\w:{#1}\ht0=\h:\dp0=\d:\box0 }} +\gdef\sym:#1{\cbox:{\hss#1\hss}} +\gdef\bs:{{\hskip-\w:}} +\gdef\up:#1#2{\raise#1\hbox{#2}} +\gdef\cntl:#1{\sym:{\char20 \bs:\up:{.3ex}{\char20 }\bs:\up:{-.4ex}{#1}}} +\gdef\cntl::#1{\sym:{\char94 \bs:\up:{.3ex}{\char94 }\bs:\up:{-.4ex}{#1}}} +\gdef\G:#1{\leavevmode\lower\d:\vbox to\z:{\vss\hbox to\w:{#1\hss}}} +\gdef\B:#1#2#3#4{\hbox to0em{\vrule height0ex depth0ex width#1\x:\vrule +height#2\y: depth-#3\y: width#4\x: \hss}} + +% Umdefinierte ASCII-Zeichen + +\gdef\:sp{\ }% Feste Blanks +\gdef\:gr{\kern0pt\char96 }% Keine Ligaturen ?` und !` +\gdef\:us{\leavevmode\vrule height-.2\d: depth.5\d: width\w:\relax}% Aussehen + +% Definition der Akzente und Umlaute als Makros + +\gdef\:acute{\char19 } +\gdef\:angstrom{\char23 } +\gdef\:macron{\char22 } +\gdef\:cedilla{\char24 } +\gdef\:circumflex{\char94 } +\gdef\:grave{\char18 } +\gdef\:tilde{\char126 } +\gdef\:umlaut{\char127 } + +\gdef\acu:a{\accent19 a} +\gdef\acu:A{\accent19 A} +\gdef\acu:e{\accent19 e} +\gdef\acu:E{\accent19 E} +\gdef\acu:i{\accent19 \char16 } +\gdef\acu:I{\accent19 I} +\gdef\acu:o{\accent19 o} +\gdef\acu:O{\accent19 O} +\gdef\acu:u{\accent19 u} +\gdef\acu:U{\accent19 U} +\gdef\acu:y{\accent19 y} +\gdef\acu:Y{\accent19 Y} +\gdef\ang:a{\accent23 a} +\gdef\ang:A{\accent23 A} +\gdef\ced:C{C\bs:{\char24 }} +\gdef\ced:c{c\bs:{\char24 }} +\gdef\cir:a{\accent94 a} +\gdef\cir:A{\accent94 A} +\gdef\cir:e{\accent94 e} +\gdef\cir:E{\accent94 E} +\gdef\cir:i{\accent94 \char16 } +\gdef\cir:I{\accent94 I} +\gdef\cir:o{\accent94 o} +\gdef\cir:O{\accent94 O} +\gdef\cir:u{\accent94 u} +\gdef\cir:U{\accent94 U} +\gdef\dia:o{\char28 } +\gdef\dia:O{\char31 } +\gdef\gra:a{\accent18 a} +\gdef\gra:A{\accent18 A} +\gdef\gra:e{\accent18 e} +\gdef\gra:E{\accent18 E} +\gdef\gra:i{\accent18 \char16 } +\gdef\gra:I{\accent18 I} +\gdef\gra:o{\accent18 o} +\gdef\gra:O{\accent18 O} +\gdef\gra:u{\accent18 u} +\gdef\gra:U{\accent18 U} +\gdef\lig:ae{\char26 } +\gdef\lig:AE{\char29 } +\gdef\til:a{\accent126 a} +\gdef\til:A{\accent126 A} +\gdef\til:n{\accent126 n} +\gdef\til:N{\accent126 N} +\gdef\til:o{\accent126 o} +\gdef\til:O{\accent126 O} +\gdef\uml:a{\accent127 a} +\gdef\uml:A{\accent127 A} +\gdef\uml:e{\accent127 e} +\gdef\uml:E{\accent127 E} +\gdef\uml:i{\accent127 \char16 } +\gdef\uml:I{\accent127 I} +\gdef\uml:o{\accent127 o} +\gdef\uml:O{\accent127 O} +\gdef\uml:u{\accent127 u} +\gdef\uml:U{\accent127 U} +\gdef\uml:y{\accent127 y} +\gdef\:eszet{\char25 } + +% Definition der graphischen Zeichen im 9x9-Raster als Makros + +\gdef\box:full{\G:{\B:0909}} +\gdef\box:halfhigh{\G:{\B:09{4.5}9}} +\gdef\box:halfleft{\G:{\B:090{4.5}}} +\gdef\box:halflow{\G:{\B:0{4.5}09}} +\gdef\box:halfright{\G:{\B:{4.5}90{4.5}}} +\gdef\box:light{\G:{\B:1901\B:4901\B:7901}} +\gdef\box:medium{\G:{\B:{0.5}902\B:{3.5}902\B:{6.5}902}} +\gdef\box:dark{\G:{\B:{0.5}902\B:{3.5}902\B:{6.5}902\B:0879\B:0549\B:0219}} +\gdef\box:small{\G:{\B:3633}} +\gdef\bar:DDLLRR{\G:{\B:0659\B:0432\B:2401\B:6401\B:7432}} +\gdef\bar:DDLL{\G:{\B:0432\B:2401\B:0656\B:6601}} +\gdef\bar:DDRR{\G:{\B:2601\B:3656\B:6401\B:7432}} +\gdef\bar:DLR{\G:{\B:0549\B:4501}} +\gdef\bar:DL{\G:{\B:0544\B:4501}} +\gdef\bar:DR{\G:{\B:4501\B:5544}} +\gdef\bar:LLRR{\G:{\B:0439\B:0659}} +\gdef\bar:LR{\G:{\B:0549}} +\gdef\bar:UDLR{\G:{\B:0549\B:4901}} +\gdef\bar:UDL{\G:{\B:0544\B:4901}} +\gdef\bar:UDR{\G:{\B:4901\B:5544}} +\gdef\bar:UD{\G:{\B:4901}} +\gdef\bar:ULR{\G:{\B:0549\B:4951}} +\gdef\bar:UL{\G:{\B:0544\B:4941}} +\gdef\bar:UR{\G:{\B:4941\B:5544}} +\gdef\bar:UUDDLLRR{\G:{\B:0652\B:2951\B:6951\B:7652\B:0432\B:2401\B:6401\B:7432}} +\gdef\bar:UUDDLL{\G:{\B:0652\B:2951\B:0432\B:2401\B:6901}} +\gdef\bar:UUDDRR{\G:{\B:2901\B:6951\B:7652\B:6401\B:7432}} +\gdef\bar:UUDD{\G:{\B:2901\B:6901}} +\gdef\bar:UULLRR{\G:{\B:0439\B:0652\B:2951\B:6951\B:7652}} +\gdef\bar:UULL{\G:{\B:0652\B:2951\B:0436\B:6931}} +\gdef\bar:UURR{\G:{\B:2931\B:3436\B:6951\B:7652}} +\gdef\bar:UDLL{\G:{\B:0434\B:0654\B:4901}} +\gdef\bar:UUDDL{\G:{\B:0542\B:2901\B:6901}} +\gdef\bar:DDL{\G:{\B:0546\B:2401\B:6501}} +\gdef\bar:DLL{\G:{\B:0434\B:0654\B:4601}} +\gdef\bar:UUL{\G:{\B:0546\B:2951\B:6941}} +\gdef\bar:ULL{\G:{\B:0434\B:0654\B:4931}} +\gdef\bar:UDRR{\G:{\B:4901\B:5435\B:5655}} +\gdef\bar:UUDDR{\G:{\B:2901\B:6901\B:7543}} +\gdef\bar:ULLRR{\G:{\B:0439\B:0659\B:4961}} +\gdef\bar:UULR{\G:{\B:0549\B:2951\B:6951}} +\gdef\bar:DLLRR{\G:{\B:0439\B:0659\B:4401}} +\gdef\bar:DDLR{\G:{\B:0549\B:2401\B:6501}} +\gdef\bar:UUR{\G:{\B:2547\B:2951\B:6951}} +\gdef\bar:URR{\G:{\B:4931\B:5435\B:5655}} +\gdef\bar:DRR{\G:{\B:4601\B:5435\B:5655}} +\gdef\bar:DDR{\G:{\B:2547\B:2401\B:6501}} +\gdef\bar:UUDDLR{\G:{\B:2901\B:6901\B:0549}} +\gdef\bar:UDLLRR{\G:{\B:0439\B:0659\B:4901}} + +% Definition der sonstige Zeichen als Makros + +\gdef\ctl:at{\cntl:{@}} +\gdef\ctl:a{\cntl:{A}} +\gdef\ctl:b{\cntl:{B}} +\gdef\ctl:c{\cntl:{C}} +\gdef\ctl:d{\cntl:{D}} +\gdef\ctl:e{\cntl:{E}} +\gdef\ctl:f{\cntl:{F}} +\gdef\ctl:g{\cntl:{G}} +\gdef\ctl:h{\cntl:{H}} +\gdef\ctl:i{\cntl:{I}} +\gdef\ctl:j{\cntl:{J}} +\gdef\ctl:k{\cntl:{K}} +\gdef\ctl:l{\cntl:{L}} +\gdef\ctl:m{\cntl:{M}} +\gdef\ctl:n{\cntl:{N}} +\gdef\ctl:o{\cntl:{O}} +\gdef\ctl:p{\cntl:{P}} +\gdef\ctl:q{\cntl:{Q}} +\gdef\ctl:r{\cntl:{R}} +\gdef\ctl:s{\cntl:{S}} +\gdef\ctl:t{\cntl:{T}} +\gdef\ctl:u{\cntl:{U}} +\gdef\ctl:v{\cntl:{V}} +\gdef\ctl:w{\cntl:{W}} +\gdef\ctl:x{\cntl:{X}} +\gdef\ctl:y{\cntl:{Y}} +\gdef\ctl:z{\cntl:{Z}} +\gdef\ctl:a:{\cntl:{[}} +\gdef\ctl:b:{\cntl:{\char92 }} +\gdef\ctl:c:{\cntl:{]}} +\gdef\ctl:d:{\cntl:{\char94 }} +\gdef\ctl:e:{\cntl:{\char95 }} +\gdef\ctl::at{\cntl::{@}} +\gdef\ctl::a{\cntl::{A}} +\gdef\ctl::b{\cntl::{B}} +\gdef\ctl::c{\cntl::{C}} +\gdef\ctl::d{\cntl::{D}} +\gdef\ctl::e{\cntl::{E}} +\gdef\ctl::f{\cntl::{F}} +\gdef\ctl::g{\cntl::{G}} +\gdef\ctl::h{\cntl::{H}} +\gdef\ctl::i{\cntl::{I}} +\gdef\ctl::j{\cntl::{J}} +\gdef\ctl::k{\cntl::{K}} +\gdef\ctl::l{\cntl::{L}} +\gdef\ctl::m{\cntl::{M}} +\gdef\ctl::n{\cntl::{N}} +\gdef\ctl::o{\cntl::{O}} +\gdef\ctl::p{\cntl::{P}} +\gdef\ctl::q{\cntl::{Q}} +\gdef\ctl::r{\cntl::{R}} +\gdef\ctl::s{\cntl::{S}} +\gdef\ctl::t{\cntl::{T}} +\gdef\ctl::u{\cntl::{U}} +\gdef\ctl::v{\cntl::{V}} +\gdef\ctl::w{\cntl::{W}} +\gdef\ctl::x{\cntl::{X}} +\gdef\ctl::y{\cntl::{Y}} +\gdef\ctl::z{\cntl::{Z}} +\gdef\ctl::a:{\cntl::{[}} +\gdef\ctl::b:{\cntl::{\char92 }} +\gdef\ctl::c:{\cntl::{]}} +\gdef\ctl::d:{\cntl::{\char94 }} +\gdef\ctl::e:{\cntl::{\char95 }} +\gdef\:fixedblank{\char32 } +\gdef\:invertedexclamationmark{\char14 } +\gdef\:cent{c\bs:\up:{-.2ex}{\char124 }} +\gdef\:pound{\sym:{\it\char36 }} +\gdef\:currency{\up:{.5\y:}{\sym:{$\scriptstyle\cap$}}\bs: +\up:{\y:}{\sym:{$\scriptstyle\cup$}}} +\gdef\:Yen{Y\bs:\up:{-\y:}{-}} +\gdef\:brokenvbar{\G:{\B:4851\B:4411}} +\gdef\:paragraph{\sym:{S\bs:\up:{-.6ex}{S}}} +\gdef\:copyright{\cbox:{\kern-.2em(\hss\up:{.2ex}{c}\hss)\kern-.2em}} +\gdef\:umera{\cbox:{\up:{.3ex}{\char95 }\bs:\up:{.4ex}{a}}} +\gdef\:frenchleftquotes{\sym:{<\kern-.3em<}} +\gdef\:not{\sym:{-\llap{\up:{-.66ex}{\char13 }\kern-.18em}}} +\gdef\:syllablehyphen{\sym:{\it\char45 }} +\gdef\:registered{\cbox:{\kern-.2em(\hss R\hss)\kern-.2em}} +\gdef\:degree{\sym:{$^\circ$}} +\gdef\:plusminus{+\bs:\char95 } +\gdef\:supertwo{\sym:{$^{\scriptscriptstyle2}$}} +\gdef\:superthree{\sym:{$^{\scriptscriptstyle3}$}} +\gdef\:mu{\sym:{$\mu$}} +\gdef\:paramark{\sym:{\P}} +\gdef\:middledot{\cbox:{\up:{.5ex}{.}}} +\gdef\:superone{\sym:{$^{\scriptscriptstyle1}$}} +\gdef\:umero{\cbox:{\up:{.3ex}{\char95 }\bs:\up:{.4ex}{o}}} +\gdef\:frenchrightquotes{\sym:{>\kern-.3em>}} +\gdef\:onefourth{\up:{\y:}{\sym:{$\scriptstyle{1\over4}$}}} +\gdef\:onehalf{\up:{\y:}{\sym:{$\scriptstyle{1\over2}$}}} +\gdef\:threefourth{\up:{\y:}{\sym:{$\scriptstyle{3\over4}$}}} +\gdef\:invertedquestionmark{\char15 } +\gdef\:Eth{D\bs:-} +\gdef\:eth{d\bs:{\char22 }} +\gdef\:Thorn{\sym:{\rlap{\kern-.07em\rm I}\up:{2\y:}{$\scriptscriptstyle\supset$}}} +\gdef\:thorn{\sym:{\rlap{\kern.08em\vrule height\h: depth\d: width\x:}\up:{0.2ex}{$\scriptscriptstyle\supset$}\kern-\x:}} +%%%\gdef\:thorn{\cbox:{\kern-.17em\up:{-.2ex}{\char124 }\hss o}}%%%naja%%%{\G:{\B:1701}\bs: o} +\gdef\:times{\up:{\y:}{\sym:{$\scriptstyle\times$}}} +\gdef\:div{\up:{\y:}{\sym:{$\scriptstyle\div$}}} +\gdef\:dotlessi{\char16 } +\gdef\:doubleunderscore{\char95 \bs:\up:{-\y:}{\char95 }} +\gdef\:florin{\sym:{\it f}} + +\gdef\:alpha{\sym:{$\alpha$}} +\gdef\:approxequal{\up:{\y:}{\sym:{$\scriptstyle\approx$}}} +\gdef\:bigmiddledot{\up:{\y:}{\sym:{$\scriptstyle\bullet$}}} +\gdef\:cut{\sym:{$\cap$}} +\gdef\:Delta{\char1 } +\gdef\:delta{\sym:{$\delta$}} +\gdef\:diameter{\sym:{$\phi$}} +\gdef\:elementof{\sym:{$\in$}} +\gdef\:Gamma{\char0 } +\gdef\:ge{<\bs:\char95 } +\gdef\:identity{\up:{\y:}{\sym:{$\scriptstyle\equiv$}}} +\gdef\:infinity{\up:{\y:}{\sym:{$\scriptstyle\infty$}}} +\gdef\:intlower{\G:{\B:4931\B:2322}} +\gdef\:intupper{\G:{\B:4601\B:5762}} +\gdef\:invertednot{\sym:{\rlap{\kern-.18em\up:{-.66ex}{\char13 }}-}} +\gdef\:le{>\bs:\char95 } +\gdef\:Omega{\char10 } +\gdef\:Pesetas{P\bs:\hbox{\kern1\x: t\kern-1\x:}} +\gdef\:Phi{\char9 } +\gdef\:Pi{\char5 } +\gdef\:root{\up:{\y:}{\sym:{$\scriptscriptstyle\surd$}}} +\gdef\:Sigma{\char6 } +\gdef\:sigma{\sym:{$\sigma$}} +\gdef\:supern{\sym:{$^{\rm n}$}} +\gdef\:tau{\sym:{$\tau$}} +\gdef\:Theta{\char2 } + +\gdef\:null{\ } +\gdef\:smile{\G:{\B:2985\B:1821\B:7821\B:2215\B:3761\B:5761\B:3543\B:4431}} +\gdef\:invertedsmile{\G:{\B:2975\B:1822\B:6822\B:2315\B:2655\B:4761\B:2422\B:5422}} +\gdef\:herz{\up:{\y:}{\sym:{$\scriptstyle\heartsuit$}}} +\gdef\:karo{\up:{\y:}{\sym:{$\scriptstyle\diamondsuit$}}} +\gdef\:kreuz{\up:{\y:}{\sym:{$\scriptstyle\clubsuit$}}} +\gdef\:pik{\up:{\y:}{\sym:{$\scriptstyle\spadesuit$}}} +\gdef\:bigdot{\sym:{$\bullet$}} +\gdef\:invertedbigdot{\sym:{$\bullet$}\bs:\G:{\B:0989\B:0109\B:0901\B:8901}} +\gdef\:circ{\sym:{$\circ$}} +\gdef\:invertedcirc{\sym:{$\circ$}\bs:\G:{\B:0989\B:0109\B:0901\B:8901}} +\gdef\:male{o\bs:\up:{3\y:}{\sym:{$\scriptscriptstyle\nearrow$}}} +\gdef\:female{\up:{2\y:}{o}\bs:\up:{-2\y:}{+}} +\gdef\:onenote{\G:{\B:1422\B:3831\B:4873\B:4653\B:7851}} +\gdef\:twonote{\G:{\B:0312\B:2821\B:5422\B:7831\B:3874\B:3654}} +\gdef\:star{\sym:{$\ast$}} +\gdef\:trirt{\sym:{$\triangleright$}} +\gdef\:trilf{\sym:{$\triangleleft$}} +\gdef\:arrupdn{\up:{\y:}{\sym:{$\scriptstyle\updownarrow$}}} +\gdef\:doubleexclamationmark{\cbox:{\kern-.1em!\hss!\kern-.1em}} +\gdef\:bigcursor{\sym:{\vrule height.5ex depth0ex width7\x:}} +\gdef\:updnbar{\up:{\y:}{\sym:{$\scriptstyle\updownarrow$}\bs:\G:{\B:2105}}} +\gdef\:arrup{\up:{\y:}{\sym:{$\scriptstyle\uparrow$}}} +\gdef\:arrdn{\up:{\y:}{\sym:{$\scriptstyle\downarrow$}}} +\gdef\:arrrt{\up:{\y:}{\sym:{$\scriptscriptstyle\rightarrow$}}} +\gdef\:arrlf{\up:{\y:}{\sym:{$\scriptscriptstyle\leftarrow$}}} +\gdef\:mirrorednot{\sym:{\rlap{\kern-.18em\up:{-.10ex}{\char13 }}-}} +\gdef\:arrlfrt{\up:{\y:}{\sym:{$\scriptscriptstyle\leftrightarrow$}}} +\gdef\:triup{\up:{\y:}{\sym:{$\scriptstyle\bigtriangleup$}}} +\gdef\:tridn{\up:{\y:}{\sym:{$\scriptstyle\bigtriangledown$}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Zweiter Teil: Definition der Makros zum Setzen der Sonderzeichen % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\gdef\verb:normalize{ +\catcode`\^^21=11\catcode`\^^22=11\catcode`\^^23=11 +\catcode`\^^24=11\catcode`\^^25=11\catcode`\^^26=11\catcode`\^^27=11 +\catcode`\^^28=11\catcode`\^^29=11\catcode`\^^2a=11\catcode`\^^2b=11 +\catcode`\^^2c=11\catcode`\^^2d=11\catcode`\^^2e=11\catcode`\^^2f=11 +\catcode`\^^30=11\catcode`\^^31=11\catcode`\^^32=11\catcode`\^^33=11 +\catcode`\^^34=11\catcode`\^^35=11\catcode`\^^36=11\catcode`\^^37=11 +\catcode`\^^38=11\catcode`\^^39=11\catcode`\^^3a=11\catcode`\^^3b=11 +\catcode`\^^3c=11\catcode`\^^3d=11\catcode`\^^3e=11\catcode`\^^3f=11 +\catcode`\^^40=11\catcode`\^^41=11\catcode`\^^42=11\catcode`\^^43=11 +\catcode`\^^44=11\catcode`\^^45=11\catcode`\^^46=11\catcode`\^^47=11 +\catcode`\^^48=11\catcode`\^^49=11\catcode`\^^4a=11\catcode`\^^4b=11 +\catcode`\^^4c=11\catcode`\^^4d=11\catcode`\^^4e=11\catcode`\^^4f=11 +\catcode`\^^50=11\catcode`\^^51=11\catcode`\^^52=11\catcode`\^^53=11 +\catcode`\^^54=11\catcode`\^^55=11\catcode`\^^56=11\catcode`\^^57=11 +\catcode`\^^58=11\catcode`\^^59=11\catcode`\^^5a=11\catcode`\^^5b=11 +\catcode`\^^5c=11\catcode`\^^5d=11\catcode`\^^5e=11 +\catcode`\^^61=11\catcode`\^^62=11\catcode`\^^63=11 +\catcode`\^^64=11\catcode`\^^65=11\catcode`\^^66=11\catcode`\^^67=11 +\catcode`\^^68=11\catcode`\^^69=11\catcode`\^^6a=11\catcode`\^^6b=11 +\catcode`\^^6c=11\catcode`\^^6d=11\catcode`\^^6e=11\catcode`\^^6f=11 +\catcode`\^^70=11\catcode`\^^71=11\catcode`\^^72=11\catcode`\^^73=11 +\catcode`\^^74=11\catcode`\^^75=11\catcode`\^^76=11\catcode`\^^77=11 +\catcode`\^^78=11\catcode`\^^79=11\catcode`\^^7a=11\catcode`\^^7b=11 +\catcode`\^^7c=11\catcode`\^^7d=11\catcode`\^^7e=11 +} + +\gdef\verb:activate{ +\catcode`\^^00=13\catcode`\^^01=13\catcode`\^^02=13\catcode`\^^03=13 +\catcode`\^^04=13\catcode`\^^05=13\catcode`\^^06=13\catcode`\^^07=13 +\catcode`\^^08=13\catcode`\^^09=13\catcode`\^^0a=13\catcode`\^^0b=13 +\catcode`\^^0c=13\catcode`\^^0d=13\catcode`\^^0e=13\catcode`\^^0f=13 +\catcode`\^^10=13\catcode`\^^11=13\catcode`\^^12=13\catcode`\^^13=13 +\catcode`\^^14=13\catcode`\^^15=13\catcode`\^^16=13\catcode`\^^17=13 +\catcode`\^^18=13\catcode`\^^19=13\catcode`\^^1a=13\catcode`\^^1b=13 +\catcode`\^^1c=13\catcode`\^^1d=13\catcode`\^^1e=13\catcode`\^^1f=13 +\catcode`\^^20=13\catcode`\^^5f=13\catcode`\^^60=13\catcode`\^^7f=13 +\catcode`\^^80=13\catcode`\^^81=13\catcode`\^^82=13\catcode`\^^83=13 +\catcode`\^^84=13\catcode`\^^85=13\catcode`\^^86=13\catcode`\^^87=13 +\catcode`\^^88=13\catcode`\^^89=13\catcode`\^^8a=13\catcode`\^^8b=13 +\catcode`\^^8c=13\catcode`\^^8d=13\catcode`\^^8e=13\catcode`\^^8f=13 +\catcode`\^^90=13\catcode`\^^91=13\catcode`\^^92=13\catcode`\^^93=13 +\catcode`\^^94=13\catcode`\^^95=13\catcode`\^^96=13\catcode`\^^97=13 +\catcode`\^^98=13\catcode`\^^99=13\catcode`\^^9a=13\catcode`\^^9b=13 +\catcode`\^^9c=13\catcode`\^^9d=13\catcode`\^^9e=13\catcode`\^^9f=13 +\catcode`\^^a0=13\catcode`\^^a1=13\catcode`\^^a2=13\catcode`\^^a3=13 +\catcode`\^^a4=13\catcode`\^^a5=13\catcode`\^^a6=13\catcode`\^^a7=13 +\catcode`\^^a8=13\catcode`\^^a9=13\catcode`\^^aa=13\catcode`\^^ab=13 +\catcode`\^^ac=13\catcode`\^^ad=13\catcode`\^^ae=13\catcode`\^^af=13 +\catcode`\^^b0=13\catcode`\^^b1=13\catcode`\^^b2=13\catcode`\^^b3=13 +\catcode`\^^b4=13\catcode`\^^b5=13\catcode`\^^b6=13\catcode`\^^b7=13 +\catcode`\^^b8=13\catcode`\^^b9=13\catcode`\^^ba=13\catcode`\^^bb=13 +\catcode`\^^bc=13\catcode`\^^bd=13\catcode`\^^be=13\catcode`\^^bf=13 +\catcode`\^^c0=13\catcode`\^^c1=13\catcode`\^^c2=13\catcode`\^^c3=13 +\catcode`\^^c4=13\catcode`\^^c5=13\catcode`\^^c6=13\catcode`\^^c7=13 +\catcode`\^^c8=13\catcode`\^^c9=13\catcode`\^^ca=13\catcode`\^^cb=13 +\catcode`\^^cc=13\catcode`\^^cd=13\catcode`\^^ce=13\catcode`\^^cf=13 +\catcode`\^^d0=13\catcode`\^^d1=13\catcode`\^^d2=13\catcode`\^^d3=13 +\catcode`\^^d4=13\catcode`\^^d5=13\catcode`\^^d6=13\catcode`\^^d7=13 +\catcode`\^^d8=13\catcode`\^^d9=13\catcode`\^^da=13\catcode`\^^db=13 +\catcode`\^^dc=13\catcode`\^^dd=13\catcode`\^^de=13\catcode`\^^df=13 +\catcode`\^^e0=13\catcode`\^^e1=13\catcode`\^^e2=13\catcode`\^^e3=13 +\catcode`\^^e4=13\catcode`\^^e5=13\catcode`\^^e6=13\catcode`\^^e7=13 +\catcode`\^^e8=13\catcode`\^^e9=13\catcode`\^^ea=13\catcode`\^^eb=13 +\catcode`\^^ec=13\catcode`\^^ed=13\catcode`\^^ee=13\catcode`\^^ef=13 +\catcode`\^^f0=13\catcode`\^^f1=13\catcode`\^^f2=13\catcode`\^^f3=13 +\catcode`\^^f4=13\catcode`\^^f5=13\catcode`\^^f6=13\catcode`\^^f7=13 +\catcode`\^^f8=13\catcode`\^^f9=13\catcode`\^^fa=13\catcode`\^^fb=13 +\catcode`\^^fc=13\catcode`\^^fd=13\catcode`\^^fe=13\catcode`\^^ff=13 +} + +\begingroup +\verb:activate% +% +\gdef\verb:iso{% +\verb:normalize% +\verb:activate% +\let^^00=\ctl:at% +\let^^01=\ctl:a% +\let^^02=\ctl:b% +\let^^03=\ctl:c% +\let^^04=\ctl:d% +\let^^05=\ctl:e% +\let^^06=\ctl:f% +\let^^07=\ctl:g% +\let^^08=\verb:BS% +\let^^09=\verb:HT% +\let^^0a=\verb:LF% +\let^^0b=\verb:VT% +\let^^0c=\verb:FF% +\let^^0d=\verb:CR% +\let^^0e=\ctl:n% +\let^^0f=\ctl:o% +\let^^10=\ctl:p% +\let^^11=\ctl:q% +\let^^12=\ctl:r% +\let^^13=\ctl:s% +\let^^14=\ctl:t% +\let^^15=\ctl:u% +\let^^16=\ctl:v% +\let^^17=\ctl:w% +\let^^18=\ctl:x% +\let^^19=\ctl:y% +\let^^1a=\ctl:z% +\let^^1b=\ctl:a:% +\let^^1c=\ctl:b:% +\let^^1d=\ctl:c:% +\let^^1e=\ctl:d:% +\let^^1f=\ctl:e:% +\let^^20=\:sp% +\let^^5f=\:us% +\let^^60=\:gr% +\let^^7f=\:Delta% +\let^^80=\bar:LR% +\let^^81=\bar:UD% +\let^^82=\bar:UR% +\let^^83=\bar:UL% +\let^^84=\bar:DL% +\let^^85=\bar:DR% +\let^^86=\bar:UDR% +\let^^87=\bar:ULR% +\let^^88=\bar:UDL% +\let^^89=\bar:DLR% +\let^^8a=\bar:UDLR% +\let^^8b=\box:light% +\let^^8c=\box:medium% +\let^^8d=\box:dark% +\let^^8e=\:dotlessi% +\let^^8f=\:doubleunderscore% +\let^^90=\bar:LLRR% +\let^^91=\bar:UUDD% +\let^^92=\bar:UURR% +\let^^93=\bar:UULL% +\let^^94=\bar:DDLL% +\let^^95=\bar:DDRR% +\let^^96=\bar:UUDDRR% +\let^^97=\bar:UULLRR% +\let^^98=\bar:UUDDLL% +\let^^99=\bar:DDLLRR% +\let^^9a=\bar:UUDDLLRR% +\let^^9b=\box:halfhigh% +\let^^9c=\box:halflow% +\let^^9d=\box:full% +\let^^9e=\box:small% +\let^^9f=\:florin% +\let^^a0=\:fixedblank% +\let^^a1=\:invertedexclamationmark% +\let^^a2=\:cent% +\let^^a3=\:pound% +\let^^a4=\:currency% +\let^^a5=\:Yen% +\let^^a6=\:brokenvbar% +\let^^a7=\:paragraph% +\let^^a8=\:umlaut% +\let^^a9=\:copyright% +\let^^aa=\:umera% +\let^^ab=\:frenchleftquotes% +\let^^ac=\:not% +\let^^ad=\:syllablehyphen% +\let^^ae=\:registered% +\let^^af=\:macron% +\let^^b0=\:degree% +\let^^b1=\:plusminus% +\let^^b2=\:supertwo% +\let^^b3=\:superthree% +\let^^b4=\:acute% +\let^^b5=\:mu% +\let^^b6=\:paramark% +\let^^b7=\:middledot% +\let^^b8=\:cedilla% +\let^^b9=\:superone% +\let^^ba=\:umero% +\let^^bb=\:frenchrightquotes% +\let^^bc=\:onefourth% +\let^^bd=\:onehalf% +\let^^be=\:threefourth% +\let^^bf=\:invertedquestionmark% +\let^^c0=\gra:A% +\let^^c1=\acu:A% +\let^^c2=\cir:A% +\let^^c3=\til:A% +\let^^c4=\uml:A% +\let^^c5=\ang:A% +\let^^c6=\lig:AE% +\let^^c7=\ced:C% +\let^^c8=\gra:E% +\let^^c9=\acu:E% +\let^^ca=\cir:E% +\let^^cb=\uml:E% +\let^^cc=\gra:I% +\let^^cd=\acu:I% +\let^^ce=\cir:I% +\let^^cf=\uml:I% +\let^^d0=\:Eth% +\let^^d1=\til:N% +\let^^d2=\gra:O% +\let^^d3=\acu:O% +\let^^d4=\cir:O% +\let^^d5=\til:O% +\let^^d6=\uml:O% +\let^^d7=\:times% +\let^^d8=\dia:O% +\let^^d9=\gra:U% +\let^^da=\acu:U% +\let^^db=\cir:U% +\let^^dc=\uml:U% +\let^^dd=\acu:Y% +\let^^de=\:Thorn% +\let^^df=\:eszet% +\let^^e0=\gra:a% +\let^^e1=\acu:a% +\let^^e2=\cir:a% +\let^^e3=\til:a% +\let^^e4=\uml:a% +\let^^e5=\ang:a% +\let^^e6=\lig:ae% +\let^^e7=\ced:c% +\let^^e8=\gra:e% +\let^^e9=\acu:e% +\let^^ea=\cir:e% +\let^^eb=\uml:e% +\let^^ec=\gra:i% +\let^^ed=\acu:i% +\let^^ee=\cir:i% +\let^^ef=\uml:i% +\let^^f0=\:eth% +\let^^f1=\til:n% +\let^^f2=\gra:o% +\let^^f3=\acu:o% +\let^^f4=\cir:o% +\let^^f5=\til:o% +\let^^f6=\uml:o% +\let^^f7=\:div% +\let^^f8=\dia:o% +\let^^f9=\gra:u% +\let^^fa=\acu:u% +\let^^fb=\cir:u% +\let^^fc=\uml:u% +\let^^fd=\acu:y% +\let^^fe=\:thorn% +\let^^ff=\uml:y% +}% +% +\gdef\verb:ibm{% +\verb:normalize% +\verb:activate% +\let^^00=\:null% +\let^^01=\:smile% +\let^^02=\:invertedsmile% +\let^^03=\:herz% +\let^^04=\:karo% +\let^^05=\:kreuz% +\let^^06=\:pik% +\let^^07=\:bigdot% +\let^^08=\verb:BS% +\let^^09=\verb:HT% +\let^^0a=\verb:LF% +\let^^0b=\verb:VT% +\let^^0c=\verb:FF% +\let^^0d=\verb:CR% +\let^^0e=\:twonote% +\let^^0f=\:star% +\let^^10=\:trirt% +\let^^11=\:trilf% +\let^^12=\:arrupdn% +\let^^13=\:doubleexclamationmark% +\let^^14=\:paramark% +\let^^15=\:paragraph% +\let^^16=\:bigcursor% +\let^^17=\:updnbar% +\let^^18=\:arrup% +\let^^19=\:arrdn% +\let^^1a=\:arrrt% +\let^^1b=\:arrlf% +\let^^1c=\:mirrorednot% +\let^^1d=\:arrlfrt% +\let^^1e=\:triup% +\let^^1f=\:tridn% +\let^^20=\:sp% +\let^^5f=\:us% +\let^^60=\:gr% +\let^^7f=\:Delta% +\let^^80=\ced:C% +\let^^81=\uml:u% +\let^^82=\acu:e% +\let^^83=\cir:a% +\let^^84=\uml:a% +\let^^85=\gra:a% +\let^^86=\ang:a% +\let^^87=\ced:c% +\let^^88=\cir:e% +\let^^89=\uml:e% +\let^^8a=\gra:e% +\let^^8b=\uml:i% +\let^^8c=\cir:i% +\let^^8d=\gra:i% +\let^^8e=\uml:A% +\let^^8f=\ang:A% +\let^^90=\acu:E% +\let^^91=\lig:ae% +\let^^92=\lig:AE% +\let^^93=\cir:o% +\let^^94=\uml:o% +\let^^95=\gra:o% +\let^^96=\cir:u% +\let^^97=\gra:u% +\let^^98=\uml:y% +\let^^99=\uml:O% +\let^^9a=\uml:U% +\let^^9b=\dia:o% +\let^^9c=\:pound% +\let^^9d=\dia:O% +\let^^9e=\:times% +\let^^9f=\:florin% +\let^^a0=\acu:a% +\let^^a1=\acu:i% +\let^^a2=\acu:o% +\let^^a3=\acu:u% +\let^^a4=\til:n% +\let^^a5=\til:N% +\let^^a6=\:umera% +\let^^a7=\:umero% +\let^^a8=\:invertedquestionmark% +\let^^a9=\:registered% +\let^^aa=\:not% +\let^^ab=\:onehalf% +\let^^ac=\:onefourth% +\let^^ad=\:invertedexclamationmark% +\let^^ae=\:frenchleftquotes% +\let^^af=\:frenchrightquotes% +\let^^b0=\box:light% +\let^^b1=\box:medium% +\let^^b2=\box:dark% +\let^^b3=\bar:UD% +\let^^b4=\bar:UDL% +\let^^b5=\acu:A% +\let^^b6=\cir:A% +\let^^b7=\gra:A% +\let^^b8=\:copyright% +\let^^b9=\bar:UUDDLL% +\let^^ba=\bar:UUDD% +\let^^bb=\bar:DDLL% +\let^^bc=\bar:UULL% +\let^^bd=\:cent% +\let^^be=\:Yen% +\let^^bf=\bar:DL% +\let^^c0=\bar:UR% +\let^^c1=\bar:ULR% +\let^^c2=\bar:DLR% +\let^^c3=\bar:UDR% +\let^^c4=\bar:LR% +\let^^c5=\bar:UDLR% +\let^^c6=\til:a% +\let^^c7=\til:A% +\let^^c8=\bar:UURR% +\let^^c9=\bar:DDRR% +\let^^ca=\bar:UULLRR% +\let^^cb=\bar:DDLLRR% +\let^^cc=\bar:UUDDRR% +\let^^cd=\bar:LLRR% +\let^^ce=\bar:UUDDLLRR% +\let^^cf=\:currency% +\let^^d0=\:eth% +\let^^d1=\:Eth% +\let^^d2=\cir:E% +\let^^d3=\uml:E% +\let^^d4=\gra:E% +\let^^d5=\:dotlessi% +\let^^d6=\acu:I% +\let^^d7=\cir:I% +\let^^d8=\uml:I% +\let^^d9=\bar:UL% +\let^^da=\bar:DR% +\let^^db=\box:full% +\let^^dc=\box:halflow% +\let^^dd=\:brokenvbar% +\let^^de=\gra:I% +\let^^df=\box:halfhigh% +\let^^e0=\acu:O% +\let^^e1=\:eszet% +\let^^e2=\cir:O% +\let^^e3=\gra:O% +\let^^e4=\til:o% +\let^^e5=\til:O% +\let^^e6=\:mu% +\let^^e7=\:thorn% +\let^^e8=\:Thorn% +\let^^e9=\acu:U% +\let^^ea=\cir:U% +\let^^eb=\gra:U% +\let^^ec=\acu:y% +\let^^ed=\acu:Y% +\let^^ee=\:macron% +\let^^ef=\:acute% +\let^^f0=\:syllablehyphen% +\let^^f1=\:plusminus% +\let^^f2=\:doubleunderscore% +\let^^f3=\:threefourth% +\let^^f4=\:paramark% +\let^^f5=\:paragraph% +\let^^f6=\:div% +\let^^f7=\:cedilla% +\let^^f8=\:degree% +\let^^f9=\:umlaut% +\let^^fa=\:middledot% +\let^^fb=\:superone% +\let^^fc=\:superthree% +\let^^fd=\:supertwo% +\let^^fe=\box:small% +\let^^ff=\:fixedblank% +}% +% +\gdef\verb:pc{% +\verb:normalize% +\verb:activate% +\let^^00=\:null% +\let^^01=\:smile% +\let^^02=\:invertedsmile% +\let^^03=\:herz% +\let^^04=\:karo% +\let^^05=\:kreuz% +\let^^06=\:pik% +\let^^07=\:bigdot% +\let^^08=\verb:BS% +\let^^09=\verb:HT% +\let^^0a=\verb:LF% +\let^^0b=\verb:VT% +\let^^0c=\verb:FF% +\let^^0d=\verb:CR% +\let^^0e=\:twonote% +\let^^0f=\:star% +\let^^10=\:trirt% +\let^^11=\:trilf% +\let^^12=\:arrupdn% +\let^^13=\:doubleexclamationmark% +\let^^14=\:paramark% +\let^^15=\:paragraph% +\let^^16=\:bigcursor% +\let^^17=\:updnbar% +\let^^18=\:arrup% +\let^^19=\:arrdn% +\let^^1a=\:arrrt% +\let^^1b=\:arrlf% +\let^^1c=\:mirrorednot% +\let^^1d=\:arrlfrt% +\let^^1e=\:triup% +\let^^1f=\:tridn% +\let^^20=\:sp% +\let^^5f=\:us% +\let^^60=\:gr% +\let^^7f=\:Delta% +\let^^80=\ced:C% +\let^^81=\uml:u% +\let^^82=\acu:e% +\let^^83=\cir:a% +\let^^84=\uml:a% +\let^^85=\gra:a% +\let^^86=\ang:a% +\let^^87=\ced:c% +\let^^88=\cir:e% +\let^^89=\uml:e% +\let^^8a=\gra:e% +\let^^8b=\uml:i% +\let^^8c=\cir:i% +\let^^8d=\gra:i% +\let^^8e=\uml:A% +\let^^8f=\ang:A% +\let^^90=\acu:E% +\let^^91=\lig:ae% +\let^^92=\lig:AE% +\let^^93=\cir:o% +\let^^94=\uml:o% +\let^^95=\gra:o% +\let^^96=\cir:u% +\let^^97=\gra:u% +\let^^98=\uml:y% +\let^^99=\uml:O% +\let^^9a=\uml:U% +\let^^9b=\:cent%%% +\let^^9c=\:pound% +\let^^9d=\:Yen%%% +\let^^9e=\:Pesetas%%% +\let^^9f=\:florin% +\let^^a0=\acu:a% +\let^^a1=\acu:i% +\let^^a2=\acu:o% +\let^^a3=\acu:u% +\let^^a4=\til:n% +\let^^a5=\til:N% +\let^^a6=\:umera% +\let^^a7=\:umero% +\let^^a8=\:invertedquestionmark% +\let^^a9=\:invertednot%%% +\let^^aa=\:not% +\let^^ab=\:onehalf% +\let^^ac=\:onefourth% +\let^^ad=\:invertedexclamationmark% +\let^^ae=\:frenchleftquotes% +\let^^af=\:frenchrightquotes% +\let^^b0=\box:light% +\let^^b1=\box:medium% +\let^^b2=\box:dark% +\let^^b3=\bar:UD% +\let^^b4=\bar:UDL% +\let^^b5=\bar:UDLL%%% +\let^^b6=\bar:UUDDL%%% +\let^^b7=\bar:DDL%%% +\let^^b8=\bar:DLL%%% +\let^^b9=\bar:UUDDLL% +\let^^ba=\bar:UUDD% +\let^^bb=\bar:DDLL% +\let^^bc=\bar:UULL% +\let^^bd=\bar:UUL%%% +\let^^be=\bar:ULL%%% +\let^^bf=\bar:DL% +\let^^c0=\bar:UR% +\let^^c1=\bar:ULR% +\let^^c2=\bar:DLR% +\let^^c3=\bar:UDR% +\let^^c4=\bar:LR% +\let^^c5=\bar:UDLR% +\let^^c6=\bar:UDRR%%% +\let^^c7=\bar:UUDDR%%% +\let^^c8=\bar:UURR% +\let^^c9=\bar:DDRR% +\let^^ca=\bar:UULLRR% +\let^^cb=\bar:DDLLRR% +\let^^cc=\bar:UUDDRR% +\let^^cd=\bar:LLRR% +\let^^ce=\bar:UUDDLLRR% +\let^^cf=\bar:ULLRR%%% +\let^^d0=\bar:UULR%%% +\let^^d1=\bar:DLLRR%%% +\let^^d2=\bar:DDLR%%% +\let^^d3=\bar:UUR%%% +\let^^d4=\bar:URR%%% +\let^^d5=\bar:DRR%%% +\let^^d6=\bar:DDR%%% +\let^^d7=\bar:UUDDLR%%% +\let^^d8=\bar:UDLLRR%%% +\let^^d9=\bar:UL% +\let^^da=\bar:DR% +\let^^db=\box:full% +\let^^dc=\box:halflow% +\let^^dd=\box:halfleft%%% +\let^^de=\box:halfright%%% +\let^^df=\box:halfhigh% +\let^^e0=\:alpha%%% +\let^^e1=\:eszet% +\let^^e2=\:Gamma%%% +\let^^e3=\:Pi%%% +\let^^e4=\:Sigma%%% +\let^^e5=\:sigma%%% +\let^^e6=\:mu% +\let^^e7=\:tau%%% +\let^^e8=\:Phi%%% +\let^^e9=\:Theta%%% +\let^^ea=\:Omega%%% +\let^^eb=\:delta%%% +\let^^ec=\:infinity%%% +\let^^ed=\:diameter%%% +\let^^ee=\:elementof%%% +\let^^ef=\:cut%%% +\let^^f0=\:identity%%% +\let^^f1=\:plusminus% +\let^^f2=\:ge%%% +\let^^f3=\:le%%% +\let^^f4=\:intupper%%% +\let^^f5=\:intlower%%% +\let^^f6=\:div% +\let^^f7=\:approxequal%%% +\let^^f8=\:degree% +\let^^f9=\:bigmiddledot%%% +\let^^fa=\:middledot% +\let^^fb=\:root%%% +\let^^fc=\:supern%%% +\let^^fd=\:supertwo% +\let^^fe=\box:small% +\let^^ff=\:fixedblank% +}% +\gdef\verb:test{% +\verb:normalize% +\verb:activate% +\let^^00=\ctl:at% +\let^^01=\ctl:a% +\let^^02=\ctl:b% +\let^^03=\ctl:c% +\let^^04=\ctl:d% +\let^^05=\ctl:e% +\let^^06=\ctl:f% +\let^^07=\ctl:g% +\let^^08=\verb:BS% +\let^^09=\verb:HT% +\let^^0a=\verb:LF% +\let^^0b=\verb:VT% +\let^^0c=\verb:FF% +\let^^0d=\verb:CR% +\let^^0e=\ctl:n% +\let^^0f=\ctl:o% +\let^^10=\ctl:p% +\let^^11=\ctl:q% +\let^^12=\ctl:r% +\let^^13=\ctl:s% +\let^^14=\ctl:t% +\let^^15=\ctl:u% +\let^^16=\ctl:v% +\let^^17=\ctl:w% +\let^^18=\ctl:x% +\let^^19=\ctl:y% +\let^^1a=\ctl:z% +\let^^1b=\ctl:a:% +\let^^1c=\ctl:b:% +\let^^1d=\ctl:c:% +\let^^1e=\ctl:d:% +\let^^1f=\ctl:e:% +\let^^20=\:sp% +\let^^5f=\:us% +\let^^60=\:gr% +\let^^7f=\:Delta% +\let^^80=\ctl::at% +\let^^81=\ctl::a% +\let^^82=\ctl::b% +\let^^83=\ctl::c% +\let^^84=\ctl::d% +\let^^85=\ctl::e% +\let^^86=\ctl::f% +\let^^87=\ctl::g% +\let^^88=\ctl::h% +\let^^89=\ctl::i% +\let^^8a=\ctl::j% +\let^^8b=\ctl::k% +\let^^8c=\ctl::l% +\let^^8d=\ctl::m% +\let^^8e=\ctl::n% +\let^^8f=\ctl::o% +\let^^90=\ctl::p% +\let^^91=\ctl::q% +\let^^92=\ctl::r% +\let^^93=\ctl::s% +\let^^94=\ctl::t% +\let^^95=\ctl::u% +\let^^96=\ctl::v% +\let^^97=\ctl::w% +\let^^98=\ctl::x% +\let^^99=\ctl::y% +\let^^9a=\ctl::z% +\let^^9b=\ctl::a:% +\let^^9c=\ctl::b:% +\let^^9d=\ctl::c:% +\let^^9e=\ctl::d:% +\let^^9f=\ctl::e:% +\let^^a0=\:null% +\let^^a1=\:smile% +\let^^a2=\:invertedsmile% +\let^^a3=\:herz% +\let^^a4=\:karo% +\let^^a5=\:kreuz% +\let^^a6=\:pik% +\let^^a7=\:bigdot% +\let^^a8=\:invertedbigdot% +\let^^a9=\:circ% +\let^^aa=\:invertedcirc% +\let^^ab=\:male% +\let^^ac=\:female% +\let^^ad=\:onenote% +\let^^ae=\:twonote% +\let^^af=\:star% +\let^^b0=\:trirt% +\let^^b1=\:trilf% +\let^^b2=\:arrupdn% +\let^^b3=\:doubleexclamationmark% +\let^^b4=\:paramark% +\let^^b5=\:paragraph% +\let^^b6=\:bigcursor% +\let^^b7=\:updnbar% +\let^^b8=\:arrup% +\let^^b9=\:arrdn% +\let^^ba=\:arrrt% +\let^^bb=\:arrlf% +\let^^bc=\:mirrorednot% +\let^^bd=\:arrlfrt% +\let^^be=\:triup% +\let^^bf=\:tridn% +\let^^c0=\ctl:at% +\let^^c1=\ctl:a% +\let^^c2=\ctl:b% +\let^^c3=\ctl:c% +\let^^c4=\ctl:d% +\let^^c5=\ctl:e% +\let^^c6=\ctl:f% +\let^^c7=\ctl:g% +\let^^c8=\ctl:h% +\let^^c9=\ctl:i% +\let^^ca=\ctl:j% +\let^^cb=\ctl:k% +\let^^cc=\ctl:l% +\let^^cd=\ctl:m% +\let^^ce=\ctl:n% +\let^^cf=\ctl:o% +\let^^d0=\ctl:p% +\let^^d1=\ctl:q% +\let^^d2=\ctl:r% +\let^^d3=\ctl:s% +\let^^d4=\ctl:t% +\let^^d5=\ctl:u% +\let^^d6=\ctl:v% +\let^^d7=\ctl:w% +\let^^d8=\ctl:x% +\let^^d9=\ctl:y% +\let^^da=\ctl:z% +\let^^db=\ctl:a:% +\let^^dc=\ctl:b:% +\let^^dd=\ctl:c:% +\let^^de=\ctl:d:% +\let^^df=\ctl:e:% +\let^^e0=\ctl::at% +\let^^e1=\ctl::a% +\let^^e2=\ctl::b% +\let^^e3=\ctl::c% +\let^^e4=\ctl::d% +\let^^e5=\ctl::e% +\let^^e6=\ctl::f% +\let^^e7=\ctl::g% +\let^^e8=\ctl::h% +\let^^e9=\ctl::i% +\let^^ea=\ctl::j% +\let^^eb=\ctl::k% +\let^^ec=\ctl::l% +\let^^ed=\ctl::m% +\let^^ee=\ctl::n% +\let^^ef=\ctl::o% +\let^^f0=\ctl::p% +\let^^f1=\ctl::q% +\let^^f2=\ctl::r% +\let^^f3=\ctl::s% +\let^^f4=\ctl::t% +\let^^f5=\ctl::u% +\let^^f6=\ctl::v% +\let^^f7=\ctl::w% +\let^^f8=\ctl::x% +\let^^f9=\ctl::y% +\let^^fa=\ctl::z% +\let^^fb=\ctl::a:% +\let^^fc=\ctl::b:% +\let^^fd=\ctl::c:% +\let^^fe=\ctl::d:% +\let^^ff=\ctl::e:% +}% +% +\endgroup + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Dritter Teil: Definition der Makros % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newbox\verbb:x +\newcount\verb:line +\newtoks\verb:toks +\gdef\verb:bar{\up:{-0.6ex}{\vrule width1ptheight\H: depth0ex}} +\gdef\verb:bol{\setbox\verbb:x=\hbox\bgroup} +\gdef\verb:egrp{\leavevmode\egroup\ht\verbb:x\h:\dp\verbb:x\d:\box\verbb:x} +\gdef\verb:eol{\verb:egrp\par} +\gdef\verb:xbol{\nobreak\leavevmode\verb:bar\space\setbox\verbb:x=\hbox\bgroup} +\gdef\verb:xeol{\verb:egrp\hfill\verb:bar\par} +\gdef\verb:cnt{\advance\verb:line by1\hbox to3em{\hfil\the\verb:line\quad}} +\global\let\verb:cset\verb:iso + +\gdef\verb:BS{% +\leavevmode\egroup% end collecting of current box +\dimen0\wd\verbb:x% get width of current box +\advance\dimen0by-\w:% one space back +\wd\verbb:x\dimen0% set box width of current box +\setbox0=\box\verbb:x% copy box +\setbox\verbb:x=\hbox\bgroup\box0% restart box +} + +\gdef\verb:HT{% +\leavevmode\egroup% end collecting of current box +\dimen0\wd\verbb:x% get width of current box +\divide\dimen0by8% integer division by tab distance +\divide\dimen0by\w:% integer division by character width +\multiply\dimen0by\w:% integer multiplication by character width +\advance\dimen0by\w:% advance to next position +\multiply\dimen0by8% integer multiplication by tab distance +\wd\verbb:x\dimen0% set box width of current box +\box\verbb:x% type box +\setbox\verbb:x=\hbox\bgroup% start next box +} + +\gdef\verb:LF{\verb:CR} +\gdef\verb:VT{\verb:CR\verb:CR} +\gdef\verb:FF{\verb:CR\verb:CR\verb:CR}%%%{\verb:eol\vskip0ptplus1fil\break} + +\gdef\verb:verb{% +\verb:cset% +\frenchspacing\tt\baselineskip=\H:\parindent=0pt\parskip=0pt% +\setbox0=\hbox{X}% +\global\w:=\wd0% +\global\h:=\ht0% +\setbox0=\hbox{g}% +\global\d:=\dp0% +\global\x:=\w:\global\divide\x: by9% +\global\z:=\h:\global\advance\z: by\d:% +\global\y:=\H:\global\divide\y: by9% +} + +\gdef\verbcharset#1{% +\ifnum#1=437\let\verb:cset\verb:pc\else% +\ifnum#1=850\let\verb:cset\verb:ibm\else% +\ifnum#1=88591\let\verb:cset\verb:iso\else% +\ifnum#1=4101962\let\verb:cset\verb:test\else% +\@latexerr{Unknown verbatim character set}\@eha% +\fi\fi\fi\fi% +} + +\gdef\verbinput#1{% +\par% +\verb:toks=\everypar\everypar{}% +\begingroup% +\def\verb:CR{\verb:eol}% +\verb:verb% +\everypar{\the\verb:toks\everypar{\verb:bol}\the\everypar}% +\input#1\endgroup% +\par% +} + +\gdef\verbinputnum#1{% +\par% +\verb:toks=\everypar\everypar{}% +\begingroup% +\verb:line=0% +\def\verb:CR{\verb:eol}% +\verb:verb% +\everypar{\the\verb:toks\everypar{\verb:cnt\verb:bol}\the\everypar}% +\input#1\endgroup% +\par% +} + +\gdef\verbinputbox#1{% +\par% +\begingroup% +\def\verb:CR{\verb:xeol\verb:xbol}% +\verb:verb% +\offinterlineskip% +\noindent\leaders\hrule height1pt\hfill\kern0pt\par% +\verb:xbol\verb:xeol\verb:xbol\input#1\relax\verb:xeol\nobreak% +\noindent\leaders\hrule height1pt\hfill\kern0pt\par\nointerlineskip% +\endgroup% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\endgroup + diff --git a/macros/latex209/contrib/misc/verbsubfile.sty b/macros/latex209/contrib/misc/verbsubfile.sty new file mode 100644 index 0000000000..5bd91e8b74 --- /dev/null +++ b/macros/latex209/contrib/misc/verbsubfile.sty @@ -0,0 +1,129 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% VRBSUBFILE.STY +% +% Copyright (c) 1993 by Norman Walsh, All Rights Reserved. +% Copy freely as per the GNU Copyleft. +% +% Requires: +% The New Font Selection Scheme (NFSS) +% VERBATIM.STY by Rainer Schoepf +% VRBINPUT.STY by Bernd Raichle. +% +% VRBSUBFILE allows you to perform verbatim input of subsections of +% a file. I wrote it in anticipation of documenting some shell scripts +% and I want to be able to incorporate a few lines of shell script +% in verbatim mode then write a few lines or paragraphs of documentation +% then incorporate a few more lines of shell script, etc. +% +% Optionally, verbatim lines are numbered. +% +% Comments and suggestions always welcome. +% Norman Walsh <walsh@cs.umass.edu> +% Graduate Computer Science Department +% University of Massachusetts +% Amherst, MA 01003 +% +% User interface: +% VerbatimSubfile[#1]#2#3#4 +% Input lines #2 to #3 of file #4. If present, #1 indicates which lines +% should be numbered. For example, if #1 is 5, lines 5, 10, 15, etc. +% will be numbered. By default, lines are not numbered at all. +% +% VerbatimSubfileFont[#1]#2 +% Use font #2 for verbatim input lines and, if present, use font #1 for +% line numbers. By default, #2 is \tt and #1 is \rm\tiny. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\fileversion{v1.0} +\def\filedate{93/03/01} +\typeout{Style-Option: `vrbsubfile' + \fileversion \space <\filedate> (ndw)} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +\newcounter{Verb@LineNo} % current line number +\newcounter{Verb@LineMod} % modulo to print on +\newcounter{Verb@LineLoop} % loop count in line number (1..Mod) +\newcounter{Verb@LineStart} % first line to print +\newcounter{Verb@LineCount} % number of lines to print +\newcounter{Verb@PrintFlag} % print this line? +% +%%%% Default verbatim font and verbatim line number font +\def\Verb@sfFont{\tt} +\def\Verb@sfLineNumFont{\rm\tiny} +% +%%%% Macros to change fonts +\def\Verb@setbothfonts[#1]#2{% + \def\Verb@sfFont{#2}% + \def\Verb@sfLineNumFont{#1}% +} +\def\Verb@setverbfont#1{% + \def\Verb@sfFont{#1}% +} +\def\VerbatimSubfileFont{\@ifnextchar[{\Verb@setbothfonts}{\Verb@setverbfont}} +% +%%%% Internal macro that does the work... +\def\Verb@subfile#1{\begingroup% + \def\verbatim@font{\Verb@sfFont\selectfont} + \setcounter{Verb@LineNo}{0}% + \setcounter{Verb@LineLoop}{0}% + \parskip=0pt + \def\verbatim@processline{% + \addtocounter{Verb@LineNo}{1}% + \addtocounter{Verb@LineLoop}{1}% + \setcounter{Verb@PrintFlag}{1}% + \ifnum\theVerb@LineStart>0% we haven't reached the first line yet... + \setcounter{Verb@PrintFlag}{0}% + \addtocounter{Verb@LineStart}{-1}% + \else% + \ifnum\theVerb@LineCount=0% we're out of the "printable" region + \setcounter{Verb@PrintFlag}{0}% + \else% + \addtocounter{Verb@LineCount}{-1}% decrease the line count + \fi% + \fi% + % debugging... + %\typeout{Start: \theVerb@LineStart, Count: \theVerb@LineCount, + % Print: \theVerb@PrintFlag, Loop: \theVerb@LineLoop, + % Mod: \theVerb@LineMod}% + \ifnum\theVerb@PrintFlag=1% + \leavevmode% + \ifnum\theVerb@LineLoop=\theVerb@LineMod% + \llap{{\Verb@sfLineNumFont\selectfont \theVerb@LineNo}% + \ \hskip\@totalleftmargin}% + \setcounter{Verb@LineLoop}{0}% + \else% + \llap{\phantom{\Verb@sfLineNumFont\selectfont 0}\ % + \hskip\@totalleftmargin}% + \fi% + \the\verbatim@line\par% + \else% + \ifnum\theVerb@LineLoop=\theVerb@LineMod% + \setcounter{Verb@LineLoop}{0}% + \fi% + \fi}% + \verbatiminput{#1}\endgroup}% +% +%%%% Macros to request verbatim subfiles +\def\Verb@subfilePlain#1#2#3{% + \setcounter{Verb@LineMod}{-1} + \setcounter{Verb@LineStart}{#1} + \setcounter{Verb@LineCount}{#2} + \addtocounter{Verb@LineCount}{-\theVerb@LineStart} + \addtocounter{Verb@LineCount}{1} + \addtocounter{Verb@LineStart}{-1} + \Verb@subfile{#3} +} + +\def\Verb@subfileNumbered[#1]#2#3#4{% + \setcounter{Verb@LineMod}{#1} + \setcounter{Verb@LineStart}{#2} + \setcounter{Verb@LineCount}{#3} + \addtocounter{Verb@LineCount}{-\theVerb@LineStart} + \addtocounter{Verb@LineCount}{1} + \addtocounter{Verb@LineStart}{-1} + \Verb@subfile{#4} +} + +\def\VerbatimSubfile{\@ifnextchar[{\Verb@subfileNumbered}{\Verb@subfilePlain}} +% +%%%% EOF diff --git a/macros/latex209/contrib/misc/vita.sty b/macros/latex209/contrib/misc/vita.sty new file mode 100644 index 0000000000..69e899c870 --- /dev/null +++ b/macros/latex209/contrib/misc/vita.sty @@ -0,0 +1,131 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% kcb@hss.caltech.edu 9-90 +%% Vita style option along the lines of A Handbook for Scholars. +%% Use with article style, e.g.: \documentstyle[vita,11pt]{article} +%% SAMPLE USAGE: +%% +%% \documentstyle[vita]{article} +%% \newcategory{Cookbooks and other nonacademic publications} +%% +%% \begin{document} +%% \name{Woodrow Wilson} +%% \businessadress{The White House\\Washington D.C.} +%% \homeaddress{Also The White House\\Washington D.C.} +%% +%% \begin{vita} +%% \begin{Degrees} \item B.S. etc. \item Ph.D. ... \end{Degrees} +%% ... +%% \begin{Publications} \item My First One +%% \item My Last One +%% \end{Publications} +%% ... +%% \begin{References} +%% My Advisor \\ Big 10 U \and My Mother \\ Home +%% \end{References} +%% +%% \end{vita} +%% \end{document} +%%%%%%%%%%%%%%%%% +%% +%% Predefined categories include (from a Handbook for Scholars, in order): +%% Degrees, Additional education, Experience, Honors, Grants, +%% Memberships, Personal information, References, Publications +%% and (not from a Handbook for Scholars): +%% Books, Articles, Reviews, Invited seminars, Professional activities +%% +%% Entries in each category are preceded by \item EXCEPT for +%% references. References are inputted in a format similar to the +%% \author command. In particular, multiple references are separated +%% by the \and command. +%% +%% The \newcategory command allows you to create new categories. It +%% takes a single argument, namely the heading for the category. +%% Categories produced with the \newcategory command should have their +%% entries preceded by \item. +%% +%% Note the use of uppercase letters in the arguments of \begin and +%% \end for categories. Also note the \begin{vita} and \end{vita} +%% commands which produce the heading, headers, date, etc. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Command to define new categories: +\newcommand{\newcategory}[1]{\newenvironment{#1} + {\sectionheading{#1}\begin{description}}{\end{description}\par}} +\newcommand{\sectionheading}[1]{\medskip\pagebreak[2]\par + {\small\bf #1}\nopagebreak} +%% +%% Category headings defined already: (in order of Handbook for Scholars) +\newcategory{Degrees} +\newcategory{Additional education} +\newcategory{Experience} +\newcategory{Honors} +\newcategory{Grants} +\newcategory{Memberships} +\newcategory{Personal information} +\newcategory{Publications} +% +% Other predefined categories not from Handbook for Scholars: +\newcategory{Work in progress} +\newcategory{Books} +\newcategory{Articles} +\newcategory{Reviews} +\newcategory{Invited seminars} +\newcategory{Professional activities} +%% +%% +%% New commands +\def\@name{} +\def\@homeaddress{} +\def\@businessaddress{Division of the Humanities and Social Sciences\\ +California Institute of Technology\\Pasadena, CA 91125} +% +\newcommand{\name}[1]{\renewcommand{\@name}{#1}} +\newcommand{\businessaddress}[1]{\renewcommand{\@businessaddress}{#1}} +\newcommand{\homeaddress}[1]{\renewcommand{\@homeaddress}{#1}} +% +% this formats the above information: +\newenvironment{vita}{\thispagestyle{empty} +\ifx\@name\@empty\@warning{Missing name command}\fi +\markright{\protect\small\rm\@name} +\vspace*{-\headsep}\vspace*{-\headheight} +\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll@{}} +\begin{tabular}[t]{@{}l@{}} +\@name\\ +\@businessaddress +\end{tabular} +& +\ifx\@homeaddress\@empty\@warning{Missing homeaddress}\else +\begin{tabular}[t]{@{}l@{}} +{\small home:}\\ +\@homeaddress +\end{tabular} +\fi +\end{tabular*} +\bigskip}{\par\nopagebreak\vfill\hfill \today} +% +% +\newenvironment{References}{\sectionheading{References}\begin{description} + \item[] + \begin{tabular}[t]{l}}{\end{tabular}\end{description}\par} +\renewcommand{\and}{\end{tabular}\item[]\begin{tabular}[t]{l}} +% +% +\renewcommand{\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\year} +% +% +%% Formatting parameters +\raggedright\sloppy +\pagestyle{myheadings} +% +\parindent 0pt +\let\@listi\@listii +\let\@listii\@listiii +\@listi +% +\nofiles +%% +%% diff --git a/macros/latex209/contrib/misc/voorbeeld.sty b/macros/latex209/contrib/misc/voorbeeld.sty new file mode 100644 index 0000000000..76db699144 --- /dev/null +++ b/macros/latex209/contrib/misc/voorbeeld.sty @@ -0,0 +1,143 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Werenfried Spit", +%%% version = "1.0.1", +%%% date = "25 October 1993", +%%% time = "17:00", +%%% filename = "voorbeeld.sty", +%%% address = "Departament de Fisica Teorica +%%% Universitat de Valencia +%%% c/ Moliner, 50 +%%% E-46100 Burjassot, Valencia +%%% Espanya", +%%% telephone = "+34-6-386 4550", +%%% checksum = "03456 143 633 5962", +%%% email = "spit@vm.ci.uv.es +%%% spit@ific.uv.es", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, linguistic examples", +%%% supported = "yes", +%%% abstract = "In linguistics people use examples that have the +%%% lay out of items in a list, but the logical +%%% structure of mathematical equations: they have +%%% numbers that are reset only at the beginnings of +%%% sections or chapters and that can be referenced to. +%%% Voorbeeld.sty (voorbeeld is dutch for example) +%%% defines the environment `voorbeelden' for this +%%% purpose. +%%% Documentation at the end of this file.", +%%% 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.", +%%% } +%%% ==================================================================== +%%%%%%%%%%% voorbeeldomgeving %%%%%%%% +%% (C) Werenfried Spit 08-01-90 +%% +\newenvironment{voorbeelden}{\thevoorbeelden}{\endthevoorbeelden} +\newcount\@vbdepth \@vbdepth = 0 +\@definecounter{vbcounti} +\@definecounter{vbcountii} +\@definecounter{vbcountiii} +\@definecounter{vbcountiv} +\@addtoreset{vbcounti}{section} + + +\def\thevoorbeelden{\ifnum \@vbdepth >3 \@toodeep\else + \advance\@vbdepth \@ne + \edef\@vbctr{vbcount\romannumeral\the\@vbdepth}\list + {\csname label\@vbctr\endcsname}{\ifnum \@vbdepth >1 \usecounter + {\@vbctr}\else + \@nmbrlisttrue\def + \@listctr{vbcounti}\fi\def\makelabel##1{\hss\llap{##1}}}\fi} + +\let\endthevoorbeelden =\endlist + +\def\labelvbcounti{\bf\arabic{vbcounti}} +\def\thevbcounti{\arabic{vbcounti}} +\def\p@vbcountii{\thevbcounti} +\def\labelvbcountii{\bf\alph{vbcountii}} +\def\thevbcountii{\alph{vbcountii}} + +\def\labelvbcountiii{\roman{vbcountiii}} +\def\thevbcountiii{\roman{vbcountiii}} +\def\p@vbcountiii{\thevbcounti(\thevbcountii)} +\def\labelvbcountiv{\alph{vbcountiv}} +\def\thevbcountiv{\alph{vbcountiv}} +\def\p@vbcountiv{\p@vbcountiii\thevbcountiii} + + +\endinput +%%%%%%% documentation and examples of usage %%%%%%% +\documentstyle[voorbeeld,a4]{article} +\begin{document} +\begin{center} +{\large\bf Voorbeeld.sty} \\[0.5\baselineskip] +{\it Werenfried Spit} \\[\baselineskip] +\end{center} + +In linguistical papers one often uses numbered examples. These examples +look like lists of numbered items, but logically they behave more like +displayed equations. It should be possible to generate automatic +references to specific examples, and example counters are reset only +at the beginning of a new chapter or section. +This style defines an environment \verb|voorbeelden| that makes typesetting +such examples easier. + +\paragraph{Usage} +The usage is analogous to that \verb|enumerate|, only now it +is possible to add labels: +\begin{quote} +\begin{voorbeelden} +\item \begin{voorbeelden} \item Volgens Jan was-ie ziek. \label{Jan} + \item * Volgens Jan hij was ziek. \label{Jan*} + \end{voorbeelden} +\end{voorbeelden} +The starred example (\ref{Jan*}) is an ungrammatical sentence, +just like (\ref{Eline}): +\begin{voorbeelden} +\item Osewoudt ontkende, dat hij Eline had zien lopen. \label{Osewoudt} +\item * In Elines bed ze bracht heel wat zoete uurtjes door. \label{Eline} +\end{voorbeelden} +\end{quote} +Which was produced by +\begin{verbatim} +\begin{voorbeelden} +\item \begin{voorbeelden} \item Volgens Jan was-ie ziek. \label{Jan} + \item * Volgens Jan hij was ziek. \label{Jan*} + \end{voorbeelden} +\end{voorbeelden} +The starred example (\ref{Jan*}) is an ungrammatical sentence, +just like (\ref{Eline}): +\begin{voorbeelden} +\item Osewoudt ontkende, dat hij Eline had zien lopen. \label{Osewoudt} +\item * In Elines bed ze bracht heel wat zoete uurtjes door. \label{Eline} +\end{voorbeelden} +\end{verbatim} +The counter for the top level numbering is reset every section, the +counters for sublevel numberings are reset every item (like an +\verb|enumerate|). You can have three sublevels nested. + +\paragraph{Tuning} +The counter for the top level numbering is reset every section. +Change in the style file the line +\begin{verbatim} + \@addtoreset{vbcounti}{section} +\end{verbatim} +if you want the resetting to take place at another level. + +\paragraph{The name of the game} +I first wrote this little style for use in a dutch linguistical +thesis. `Voorbeeld' is the dutch word for example, so it seemed +most logical to use that as a name. When it was distributed +wider I chose to keep the name, since there already exists a style +\verb|example.sty| (which defines an environment \verb|example| +to show examples of \LaTeX\ usage). Feel free to change the +name of the environment for your own {\em private} use, (as long +as you don't also use \verb|example.sty| this should do no harm) +but don't pass on a changed file. +\end{document} +%% end of file %% diff --git a/macros/latex209/contrib/misc/voorbeelden.sty b/macros/latex209/contrib/misc/voorbeelden.sty new file mode 100644 index 0000000000..8b59082b12 --- /dev/null +++ b/macros/latex209/contrib/misc/voorbeelden.sty @@ -0,0 +1,79 @@ +%>I have been using LaTeX for few months and I have problems with +%>writing linguistics examples. I would like them to be numbered, +%>labelled, and displayed as follow: + +%>(1) a. Bla, bla, bla... +%> b. Bla, bla, bla... +%> c. Bla, bla, bla... + +%I wrote the following for someone wanting the same sort of thing. +%It is called `voorbeelden' (Dutch for examples), but the name +%could be changed. Use it as + +%\begin{voorbeelden} +%\item \begin{voorbeelden} \item Bla, bla, bla ... +% \item Bla, bla, bla ... +% \item Bla, bla, bla ... +% \end{voorbeelden} +%\item More bla bla +%\end{voorbeelden} + +%-------------------------------------------------------------------- +%Werenfried Spit +% R.J. v.d. Graafflaboratorium +31-(0)30-53-2330 +% Postbus 80.000 +% 3508 TA Utrecht spit@fys.ruu.nl +% The Netherlands spit@hutruu51.bitnet +%-------------------------------------------------------------------- + + + + + +%%%%%%%%%cut here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%% voorbeeldomgeving %%%%%%%% +%% (C) Werenfried Spit 08-01-90 +%% + + + + +\newenvironment{voorbeelden}{\thevoorbeelden}{\endthevoorbeelden} +\newcount\@vbdepth \@vbdepth = 0 +\@definecounter{vbcounti} +\@definecounter{vbcountii} +\@definecounter{vbcountiii} +\@definecounter{vbcountiv} +\@addtoreset{vbcounti}{section} + + +\def\thevoorbeelden{\ifnum \@vbdepth >3 \@toodeep\else + \advance\@vbdepth \@ne + \edef\@vbctr{vbcount\romannumeral\the\@vbdepth}\list + {\csname label\@vbctr\endcsname}{\ifnum \@vbdepth >1 \usecounter + {\@vbctr}\else + \@nmbrlisttrue\def + \@listctr{vbcounti}\fi\def\makelabel##1{\hss\llap{##1}}}\fi} + +\let\endthevoorbeelden =\endlist + +\def\labelvbcounti{\bf\arabic{vbcounti}} +\def\thevbcounti{\arabic{vbcounti}} +\def\p@vbcountii{\thevbcounti} +\def\labelvbcountii{\bf\alph{vbcountii}} +\def\thevbcountii{\alph{vbcountii}} + +\def\labelvbcountiii{\roman{vbcountiii}} +\def\thevbcountiii{\roman{vbcountiii}} +\def\p@vbcountiii{\thevbcounti(\thevbcountii)} +\def\labelvbcountiv{\alph{vbcountiv}} +\def\thevbcountiv{\alph{vbcountiv}} +\def\p@vbcountiv{\p@vbcountiii\thevbcountiii} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%cut here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex209/contrib/misc/warn.sty b/macros/latex209/contrib/misc/warn.sty new file mode 100644 index 0000000000..54be168431 --- /dev/null +++ b/macros/latex209/contrib/misc/warn.sty @@ -0,0 +1,18 @@ +% Written by Kresten Krab Thorup <krab@iesd.auc.dk> + +%Here's a little hack, that allow you to get the linenumbers of LaTeX's +%warning messages. + +%The output is like: +% +% LaTeX Warning [l.86]: Citation `diggle' on page 91 undefined. + +%where [l.86] refers to line 86 in the current file. +% +%You should put the following in a style file: + +%---------------------------------------------------------------------- +% warn.sty +% +\def\@warning#1{\typeout{LaTeX Warning [l.\the\inputlineno]: #1.}} +%---------------------------------------------------------------------- diff --git a/macros/latex209/contrib/misc/wasy.sty b/macros/latex209/contrib/misc/wasy.sty new file mode 100644 index 0000000000..df3e44fff9 --- /dev/null +++ b/macros/latex209/contrib/misc/wasy.sty @@ -0,0 +1,244 @@ +%% wasy.sty v 1.1 von J"org Knappen 28. 11. 1992 +%% (c) J"org Knappen 1992 knappen@vkpmzd.kph.uni-mainz.de +%% Copying conditions: GNU licence v1.0 +%% The WASY fonts are loaded and a lot of control sequences are +%% defined +%% \wasy acts as a font switch, switching its argument to wasy + +\@ifundefined{extract@font} + {\errmessage{The style option `wasy' does not make sense if you + do not use a format with the new font selection scheme.} + \endinput} + {} + + \def\RIfM@{\relax\protect\ifmmode} + \let\boxz@\fi % \if \fi matching hack + \def\boxz@{\box\z@} + \def\setboxz@h{\setbox\z@\hbox} + \def\wdz@{\wd\z@} + \def\noaccents@{\def\accentclass@{0}} + \def\Invalid@@{Invalid use of \string} + \def\nonmatherr@#1{\err@ + {\string#1\space allowed only in math mode}\@ehd} + \def\err@{\@latexerr} + +\newmathalphabet\wasy@ +\addtoversion{normal}\wasy@{wasy}{m}{n} +\addtoversion{bold}\wasy@{wasy}{b}{n} +\new@mathgroup\wasy@group +\define@mathgroup\mv@normal\wasy@group{wasy}{m}{n} +\define@mathgroup\mv@bold\wasy@group{wasy}{b}{n} +% Precautions for national styles changing the \catcode of " +\chardef\dq@code=\catcode`\" +\catcode`\"=12 +\edef\@wasy{\hexnumber@\wasy@group} +\def\pwasy{\RIfM@\expandafter\wasy@\else + \expandafter\nonmatherr@\expandafter\wasy\fi} +\def\wasy{\protect\pwasy} +\new@fontshape{wasy}{m}{n}{% + <5>wasy5% + <6>wasy6% + <7>wasy7% + <8>wasy8% + <9>wasy9% + <10>wasy10% + <11>wasy11% This one was computed with the help of the Sauter tools +% <11>wasy10 at10.95pt% alternative, change the position of the % sign to +% choose this + <12>wasy12% + <14>wasy14% Ditto, design_size:=14.4; +% <14>wasy12 at14.4pt% alternative + <17>wasy17% +% <20>wasy17 at19.71pt% + <20>wasy20% +% <25>wasy17 at24.48pt% + <25>wasy25% + }{} +\new@fontshape{wasy}{b}{n}{% + <5>wasyb5% + <6>wasyb6% + <7>wasyb7% + <8>wasyb8% + <9>wasyb9% + <10>wasyb10% + <11>wasyb11% This one was computed with the help of the Sauter tools +% <11>wasyb10 at10.95pt% alternative, change the position of the % sign to +% choose this + <12>wasyb12% + <14>wasyb14% Ditto, design_size:=14.4; +% <14>wasyb12 at14.4pt% alternative + <17>wasyb17% +% <20>wasyb17 at19.71pt% + <20>wasyb20% +% <25>wasyb17 at24.48pt% + <25>wasyb25% + }{} +\extra@def{wasy}{}{\noaccents@} +% The following was extracted from: +% this is wasyfont.tex version 2.01--92/10 +% Overall changes: Introduced \mathhexbox +% Changes made due to the nature of the wasy font as a math font +% Introduced $-signs etc. +%%%%%% special macro +\def\overstrike#1#2{{\setbox0\hbox{$#2$}\hbox to \wd0{\hss + $#1$\hss}\kern-\wd0\box0}} +%%%%%% special symbols +\edef\male{\mathhexbox\@wasy1A} +\edef\female{\mathhexbox\@wasy19} +\edef\currency{\mathhexbox\@wasy1B} +\edef\phone{\mathhexbox\@wasy07} +\edef\recorder{\mathhexbox\@wasy06} +\edef\clock{\mathhexbox\@wasy1C} +\edef\lightning{\mathhexbox\@wasy12} +\edef\pointer{\mathhexbox\@wasy09} +\edef\RIGHTarrow{\mathhexbox\@wasy11} +\edef\LEFTarrow{\mathhexbox\@wasy10} +\edef\UParrow{\mathhexbox\@wasy4B} +\edef\DOWNarrow{\mathhexbox\@wasy4C} +\def\AC{\hbox{\kern0.5pt$\wasy{\photonchar}$\kern0.5pt}} +\def\HF{\lower0.9pt\hbox to 0pt{\kern0.5pt$\wasy{\photonchar}$\hss}% + \raise0.9pt\hbox{\kern0.5pt$\wasy{\photonchar}$\kern0.5pt}} + +\edef\VHF{\mathhexbox\@wasy40} +\edef\Box{\mathhexbox\@wasy32}\let\Square\Box +\edef\XBox{\mathhexbox\@wasy34} +\edef\Diamond{\mathhexbox\@wasy33} +\edef\hexagon{\mathhexbox\@wasy37} +\edef\pentagon{\mathhexbox\@wasy44} +\edef\octagon{\mathhexbox\@wasy38} +\edef\varhexagon{\mathhexbox\@wasy39} +\edef\hexstar{\mathhexbox\@wasy41} +\edef\varhexstar{\mathhexbox\@wasy42} +\edef\davidsstar{\mathhexbox\@wasy43} +\edef\diameter{\mathhexbox\@wasy1F} +\edef\invdiameter{\mathhexbox\@wasy15} +\edef\varangle{\mathhexbox\@wasy1E} +\edef\lozenge{\mathhexbox\@wasy35} +\edef\kreuz{\mathhexbox\@wasy36} +\edef\smiley{\mathhexbox\@wasy2C} +\edef\frownie{\mathhexbox\@wasy2F} +\edef\blacksmiley{\mathhexbox\@wasy2D} +\edef\sun{\mathhexbox\@wasy2E} +\edef\checked{\mathhexbox\@wasy08} +\edef\bell{\mathhexbox\@wasy0A} +\edef\eighthnote{\mathhexbox\@wasy0B} +\edef\quarternote{\mathhexbox\@wasy0C} +\edef\halfnote{\mathhexbox\@wasy0D} +\edef\fullnote{\mathhexbox\@wasy0E} +\edef\twonotes{\mathhexbox\@wasy0F} +\edef\brokenvert{\mathhexbox\@wasy7C} +\edef\therefore{\mathhexbox\@wasy05} +\edef\ataribox{\mathhexbox\@wasy6D} +\edef\Circle{\mathhexbox\@wasy23} +\edef\CIRCLE{\mathhexbox\@wasy20} +\edef\Leftcircle{\mathhexbox\@wasy49} +\edef\LEFTCIRCLE{\mathhexbox\@wasy47} +\edef\Rightcircle{\mathhexbox\@wasy4A} +\edef\RIGHTCIRCLE{\mathhexbox\@wasy48} +\edef\LEFTcircle{\hbox to 0pt{\LEFTCIRCLE\hss}\hbox{\Circle}} +\edef\RIGHTcircle{\hbox to 0pt{\RIGHTCIRCLE\hss}\hbox{\Circle}} +%%%%%% astronomy + +\edef\vernal{\mathhexbox\@wasy17} +\edef\ascnode{\mathhexbox\@wasy13} +\edef\descnode{\mathhexbox\@wasy14} +\edef\fullmoon{\mathhexbox\@wasy23} +\edef\newmoon{\mathhexbox\@wasy20} +\edef\leftmoon{\mathhexbox\@wasy24} +\edef\rightmoon{\mathhexbox\@wasy25} +\edef\astrosun{\hbox{$\odot$}} +\edef\mercury{\mathhexbox\@wasy27} +\edef\venus{\raise0.2ex\hbox{\female}} +\edef\earth{\lower0.3ex\hbox{\mathhexbox\@wasy26}} +\edef\mars{\lower0.2ex\hbox{\male}} +\edef\jupiter{\mathhexbox\@wasy58} +\edef\saturn{\mathhexbox\@wasy59} +\edef\uranus{\mathhexbox\@wasy5A} +\edef\neptune{\mathhexbox\@wasy5B} +\edef\pluto{\mathhexbox\@wasy5C} +\edef\conjunction{\mathhexbox\@wasy56} +\edef\opposition{\mathhexbox\@wasy57} +%%%%%% the zodiac +\edef\aries{\mathhexbox\@wasy17} +\edef\taurus{\mathhexbox\@wasy5D} +\edef\gemini{\mathhexbox\@wasy5E} +\edef\cancer{\mathhexbox\@wasy5F} +\edef\leo{\mathhexbox\@wasy13} +\edef\virgo{\mathhexbox\@wasy60} +\edef\libra{\mathhexbox\@wasy61} +\edef\scorpio{\mathhexbox\@wasy62} +\edef\sagittarius{\mathhexbox\@wasy63} +\edef\capricornus{\mathhexbox\@wasy64} +\edef\aquarius{\mathhexbox\@wasy65} +\edef\pisces{\mathhexbox\@wasy66} +%%%%%% APL characters +\edef\APLstar{\mathhexbox\@wasy45} +\edef\APLlog{\mathhexbox\@wasy16} +\edef\APLbox{\mathhexbox\@wasy7E} +\edef\APLup{\mathhexbox\@wasy00} +\edef\APLdown{\mathhexbox\@wasy46} +\edef\APLinput{\mathhexbox\@wasy7D} +\edef\APLcomment{\mathhexbox\@wasy7F} +\edef\APLinv{\hbox to 0pt{$\div$\hss}\APLbox} +\edef\APLuparrowbox{\mathhexbox\@wasy6E} +\edef\APLdownarrowbox{\mathhexbox\@wasy6F} +\edef\APLleftarrowbox{\mathhexbox\@wasy70} +\def\APLrightarrowbox{\mathhexbox\@wasy71} +\def\notbackslash{\overstrike{\backslash}{-}} +\def\notslash{\overstrike{/}{-}} +\def\APLnot#1{\overstrike{\sim}{#1}} +\def\APLcirc#1{\overstrike{\circ}{#1}} +\def\APLvert#1{\overstrike{\vert}{#1}} +\def\APLminus{\raise0.7ex\hbox{$-$}} +%%%%%% diagrams +\edef\photonchar{\mathhexbox\@wasy3A} +\def\photon{\hbox{$\wasy{\photonchar\photonchar\photonchar\photonchar}$}} +\def\gluon{\hbox{$\wasy{\char"51\char"50\char"50\char"50% + \char"50\char"50\char"50\char"52}$}} +%%%%%% math characters +\edef\Bowtie{\mathhexbox\@wasy31} +\edef\leftturn{\mathhexbox\@wasy22} +\edef\rightturn{\mathhexbox\@wasy21} +%%%%%% special characters +\edef\cent{\mathhexbox\@wasy67} +\edef\permil{\mathhexbox\@wasy68} +\edef\agemO{\mathhexbox\@wasy30} +\edef\thorn{\mathhexbox\@wasy69} +\edef\Thorn{\mathhexbox\@wasy6A} +\edef\dh{\mathhexbox\@wasy6B} +\def\Dh{\leavevmode{\setbox0\hbox{D}% + \hbox to\wd0{\kern 0.04em\char32\hss D}}} +\edef\openo{\mathhexbox\@wasy6C} +\edef\inve{\mathhexbox\@wasy55} +%%%%%% math operators as mathchars +\def\invmathchardef#1#2{\mathchardef#2"#1} +\invmathchardef{3\@wasy01}{\lhd} +\invmathchardef{3\@wasy03}{\rhd} +\invmathchardef{3\@wasy10}{\LHD} +\invmathchardef{3\@wasy11}{\RHD} +\invmathchardef{3\@wasy02}{\unlhd} +\invmathchardef{3\@wasy04}{\unrhd} +\invmathchardef{3\@wasy3C}{\sqsubset} +\invmathchardef{3\@wasy3D}{\sqsupset} +\invmathchardef{3\@wasy3E}{\apprle} +\invmathchardef{3\@wasy3F}{\apprge} +\invmathchardef{3\@wasy1D}{\varpropto} +\invmathchardef{0\@wasy18}{\invneg} +\invmathchardef{3\@wasy3B}{\leadsto} +\invmathchardef{2\@wasy23}{\ocircle} +\invmathchardef{3\@wasy16}{\logof} +\invmathchardef{1\@wasy72}{\varint} +\invmathchardef{1\@wasy73}{\iint} +\invmathchardef{1\@wasy74}{\iiint} +\invmathchardef{1\@wasy75}{\varoint} +\invmathchardef{1\@wasy76}{\oiint} +% +%%%%%% new definitions +% +\def\newpropto{\let\propto\varpropto} +\def\newint{\let\int\varint \let\oint\varoint} % default limits + +% Save LaTeX \mho +\let\mho\amegO +\catcode`\"=\dq@code +\endinput diff --git a/macros/latex209/contrib/misc/windlet.doc b/macros/latex209/contrib/misc/windlet.doc new file mode 100644 index 0000000000..dc77cd1ddd --- /dev/null +++ b/macros/latex209/contrib/misc/windlet.doc @@ -0,0 +1,184 @@ +\iffalse +% This is windlet.doc. Print it using doc.sty and an appropriate +% driver file. +% Copyright D.Love, SERC Daresbury Laboratory, 1990 +% Distributable and usuable under conditions of the GNU copyleft, but +% please mark any changes and list them here. +\fi +\def\filedate{26/7/90} +\def\fileversion{1.1} +% \title{A {\sf letter} Sub-style for Use with Window +% Envelopes\footnote{File version \fileversion, dated \filedate.}} +% \author{David Love\\[1ex]{\it SERC Daresbury +% Laboratory, Warrington WA4 4AD, UK}\\[1ex] +% ({\tt d.love@daresbury.ac.uk})} +% \date{} +% +% \maketitle +% +% \begin{abstract} +% \noindent This is a sub-style for use with {\sf letter} that can be +% used with certain types of envelope with windows so that the address +% will show through the window. +% \end{abstract} +% +% \noindent +% It is convenient, rather than use a sticky address label for a one- +% or few-off letter, to use envelopes with transparent windows. We +% then need to make sure that the {\sf letter} style is suitably +% altered so print the \verb+\toaddress+ in the correct place for this +% window. Of course, the values of the positioning will depend on the +% stationery you use. This version is intended for use with A4 paper +% i.e., using {\tt a4.sty}, +% and $8.62''\times3.34''$ envelopes as used in my establishment, at +% least. This will probably be +% suitable also for other European countries. If not, the dimensions +% should be readily changeable for your stationery, according to the +% following diagrams. +% \par \medskip +% \setlength{\unitlength}{6mm} +% \begin{picture}(8.25,6.69)(0,5) +% \put(0,5){\line(0,1){6.69}} \put(0,11.69){\line(1,0){8.25}} +% \put(8.25,11.69){\line(0,-1){6.69}} +% \put(.85,10.2){\vector(-1,0){.85}}\put(0,10.2){\vector(1,0){.85}} +% \put(.2,10.5){\tt\small $\backslash$lettersideskip} +% \put(.85,8.4){\framebox(3.35,1.5){\parbox{3\unitlength}{\raggedright +% \tt\small $\backslash$toaddress region}}} +% \put(4.0,9.9){\vector(0,1){1.79}}\put(4.0,11.69){\vector(0,-1){1.79}} +% \put(4.0,10.7){\tt\small ~$\backslash$lettertopskip} +% \put(.5,7.75){\vector(-1,0){.5}} \put(.5,7.75){~first fold} +% \put(4.0,7.75){\vector(0,1){.65}}\put(4.0,8.4){\vector(0,-1){.65}} +% \put(4.0,7.75){\tt\small ~$\backslash$letterfoldskip} +% \put(4.4,8.4){\vector(0,1){1.5}} \put(4.4,9.9){\vector(0,-1){1.5}} +% \put(4.4,9){~\tt\small $\backslash$letteraddressheight} +% \put(3,6){{\large letter}} +% \end{picture} +% \hfill +% \begin{picture}(8.6,4.35)(0,0) +% \put(0,0){\framebox(8.6,4.35){}} +% \put(.65,.85){\framebox(3.65,1.55){window}} +% \put(4.5,.85){\vector(0,1){1.55}} \put(4.5,2.4){\vector(0,-1){1.55}} +% \put(4.5,1.3){~$1.55''$} +% \put(.65,.9){\vector(-1,0){.65}}\put(0,.9){\vector(1,0){.65}} +% \put(.3,.2){$0.65''$} +% \put(.65,4.35){\vector(0,-1){1.9}}\put(.65,2.45){\vector(0,1){1.9}} +% \put(.65,3.2){~$1.9''$} +% \put(5,3.5){{\large envelope}} +% \end{picture} +% \par\medskip +% Here are the default values of the lengths, +% \DescribeMacro{\lettertopskip}\DescribeMacro{\lettersidepskip}% +% \DescribeMacro{\letteraddressheight}\DescribeMacro{\letterfoldskip}% +% appropriate for my stationery. +% \begin{macrocode} +\newlength{\lettertopskip} \setlength{\lettertopskip}{1.8in} +\newlength{\lettersideskip} \setlength{\lettersideskip}{0.8in} +\newlength{\letteraddressheight} +\setlength{\letteraddressheight}{1.5in} +\newlength{\letterfoldskip} \setlength{\letterfoldskip}{0.65in} +% \end{macrocode} +% +% We only need major surgery on \verb+\opening+,\DescribeMacro{\opening} +% which positions the +% addresses. The difficulty is positioning boxes in the right +% absolute place on the paper. +% \begin{macrocode} +\def\opening#1{ +% \end{macrocode} +% The {\sf firstpage} style is defined below. +% \begin{macrocode} + \thispagestyle{firstpage} +% \end{macrocode} +% To get to the bottom of the address area, we have to move down by +% \verb+\lettertopskip+ from the top of the paper. However, we have +% to take into account the conventional $1''$ border, +% \verb+\topmargin+, \verb+\headheight+, \verb+\headsep+ and +% \verb+\baselineskip+ in doing so. +% \begin{macrocode} + \vspace*{\lettertopskip} + \vspace*{-\topmargin} \vspace*{-\headheight} \vspace*{-\headsep} + \vspace*{-1in} \vspace*{-\baselineskip} +% \end{macrocode} +% Now that we're in the right place vertically, we're ready to typeset +% the addressee details. +% To get to the left-hand side of the address area, we have to +% subtract the $1''$ and \verb+\oddsidemargin+ from +% \verb+lettersideskip+, which will probably mean the address sticks +% into the margin. The addressee's and sender's addresses go in boxes +% at the left and right of the page, aligned at their top. This is +% not the same as in the original, where the sender's address pushed +% the addressee'd down the page. This all goes into an \verb+\hbox+ +% positioned appropriately relative to the left margin. Since the +% window is bigger than the address area, we don't need to add extra +% space around it. +% \begin{macrocode} + \hbox{% + \hspace*{\lettersideskip}\hspace*{-\oddsidemargin}\hspace*{-1in}% +% \end{macrocode} +% The first thing we do, though, is to put a mark at the left to tell +% us where to fold the paper. This may get lost, depending on how +% close to the edge of the paper the printer can go, so might need +% adjusting for your circumstances. The size of the rule is rather +% arbitrary. +% \begin{macrocode} + \vbox to 0pt{\vspace*{\letterfoldskip}\hbox to 0pt{% + \hspace*{-\lettersideskip}% + \hspace*{.2in}% to get to imageable area + \rule{.2in}{.2pt}\hss}\vss + }% +% \end{macrocode} +% Unlike the original, we check for a possible +% empty argument to \verb+\begin{letter}+, which would cause an +% error (although there's not much point in using this sub-style if +% you don't have the address in there!). We add \verb+\vfill+ to +% centre the address in the window vertically. (It had better not be +% too long.) +% \begin{macrocode} + \ifx\@empty\toaddress + \vbox to \letteraddressheight {\vfill \raggedright \toname \vfill} + \else + \vbox to \letteraddressheight + {\vfill \raggedright \toname \\ \toaddress \vfill} + \fi +% \end{macrocode} +% The sender's address is set the same way as in the original, but in +% a different place. +% \begin{macrocode} + \ifx\@empty\fromaddress + \relax + \else + \vbox to \letteraddressheight { + \vfill + \begin{tabular}[b]{l} + \ignorespaces\fromaddress + \end{tabular} + \vfill + } + \fi + } % (hbox) +% \end{macrocode} +% The date always comes out in the same place. +% \begin{macrocode} + \par \smallskip + {\raggedleft \@date \par} + \bigskip #1 \par \nobreak +} % (\def\opening) +% \end{macrocode} +% The original value of \verb+\@texttop+\DescribeMacro{\@texttop} +% included \verb+fil+ to centre +% a short letter on the page; we don't want this. +% \begin{macrocode} +\let\@texttop=\relax +% \end{macrocode} +% +% The \verb+\pagestyle+\DescribeEnv{firstpage} +% for the first page may be chosen appropriately +% for your institution. This is done by defining \verb+\ps@headings+ +% appropriately. {\tt letter.sty} does this to put the telephone +% number in the right place for the SRI letterhead, which isn't much +% use for most of us. In the absence of a better idea, we'll make the +% style {\sf empty}. If you want special action for this, you'll +% have to change this definition or include it in a later sub-style. +% \begin{macrocode} +\let\ps@firstpage=\ps@empty +% \end{macrocode} diff --git a/macros/latex209/contrib/misc/xrefwarn.sty b/macros/latex209/contrib/misc/xrefwarn.sty new file mode 100644 index 0000000000..37df6b5df3 --- /dev/null +++ b/macros/latex209/contrib/misc/xrefwarn.sty @@ -0,0 +1,50 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Nico Verwer", +%%% version = "1.2", +%%% date = "24 February 1992", +%%% filename = "xrefwarn.sty", +%%% address = "Dept. of Computer Science +%%% Rijksuniversiteit te Utrecht +%%% P.O. box 80.089 +%%% 3508 TB Utrecht +%%% the Netherlands", +%%% telephone = "+31 30 533921", +%%% FAX = "+31 30 513791", +%%% email = "nico@cs.ruu.nl (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, x-ref warnings", +%%% supported = "yes", +%%% docstring = "Normally, LaTeX issues a warning every +%%% time it encounters an undefined cross- +%%% reference or citation. Thus you will get +%%% many identical warnings. The effect of +%%% this style file is that only one warning +%%% is issued for every cross-reference or +%%% citation.", +%%% } +%%% ==================================================================== + +\ifx\xrefwarnLoaded\undefined\else\endinput\fi +\let\xrefwarnLoaded\empty + +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{,\penalty\@m\ }\@ifundefined + {b@\@citeb}{{\bf #2}\@warning + {Citation `\@citeb' on page \thepage \space undefined} + \global\@namedef{b@\@citeb}{{\bf ?}}}% +\hbox{\csname b@\@citeb\endcsname}}}{#1}} + +\def\ref#1{\@ifundefined{r@#1}{{\bf {#1}?} + \@ifundefined{rr@#1}{\global\@namedef{rr@#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}{{\bf {#1}?} + \@ifundefined{rr@#1}{\global\@namedef{rr@#1}{}\@warning + {Reference `#1' on page \thepage \space + undefined}}{}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter + \@cdr\@tempa\@nil\null}} + diff --git a/macros/latex209/contrib/misc/xxxcustom.tex b/macros/latex209/contrib/misc/xxxcustom.tex new file mode 100644 index 0000000000..7fde01e36d --- /dev/null +++ b/macros/latex209/contrib/misc/xxxcustom.tex @@ -0,0 +1,95 @@ +% LaTeX customization for XXX + + +\makeatletter + +\typeout{LaTeX customization 'XXXcustom'. Version 1.00 - released 17 June 1985 +} + + +% plain TeX compatibility + +\def\oldstyle{\xdef\@oldstyle{\the\textfont\@ne}\mit\@oldstyle} + + +% Compatibility with XXX-TeX + +\def\smaller{\footnotesize} % smaller than small + +\let\nfootnote=\footnote + +\let\tell=\typeout + +\def\implies{\quad\supset\ } + +\def\tdots{\ldots\thinspace} + +\let\bop=\newpage + +\def\hbreak{\hfil\break} + +\def\lp{\par\noindent} + +\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} + +\def\boxit#1{\fbox{\sc#1}} + + +% Draft Stuff + +\newif\ifdraft \draftfalse + +\def\draftstring{{\ifdraft \tt Draft\fi}} + +\def\ds@DScustom{\ifdraft \@ifundefined{ds@draft}{}{\ds@draft}\fi} + + +% Extras + +\newdimen\extra@wid \extra@wid=\z@ + +\def\extra#1#2{% + \setbox\z@=\hbox{#2:\quad} + \ifnum\extra@wid<\wd\z@ \extra@wid=\wd\z@\fi + \def#1##1{% + \nobreak + \extra@skip + \vbox{% + \def\@filler{#2:\hfil\global\let\@filler=\empty}% + \let\\=\cr + \tabskip=\z@ + \halign{% + \hbox to\extra@wid{\@filler}\ignorespaces####\unskip\hfil\cr + ##1\cr + }% + }% + \nobreak + }% +} + +\def\extra@skip{% + \vskip 2\baselineskip + \def\extra@skip{\vskip .15in}% +} + + +% Miscellany + +\def\bigquote#1\endbigquote{% + \begin{quote} + \noindent\llap{``}\ignorespaces#1\unskip'' + \end{quote} +} + + + +% Double Spacing Macro + +\def\doublespace{ + \baselineskip=2\baselinestretch pt +} + +\def\XXXAA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex% + \rlap{\kern+.45ex\raise.67\dimen@\hbox{\char'27}}A} + +\makeatother diff --git a/macros/latex209/contrib/misc/xxxslides.sty b/macros/latex209/contrib/misc/xxxslides.sty new file mode 100644 index 0000000000..0dfb7813f1 --- /dev/null +++ b/macros/latex209/contrib/misc/xxxslides.sty @@ -0,0 +1,361 @@ +% SLiTeX super-customization for the SLIDES style +% Instead of +% +% \documentstyle[XXXslides]{slides} +% +% the correct usage is +% +% \documentstyle{XXXslides} +% +% which will automatically include slides.sty + +\typeout{Document Style 'XXXslides' -- version 1.04, released 28 August 1986} + +\@ifundefined{oldstyle}{\input XXXcustom\relax \makeatletter}{} +\let\@@options=\@options \let\@options=\relax +\input slides.sty +\makeatletter % backwards compatibility +\let\@options=\@@options + + +% Document style options: +% blackandwhite - don't use a secondary file +% draft - generate black-boxes when boxes are overfull (NI) +% landscape - 11 x 8-1/2 +% xxxx - use ``Research and Technology Center'' in logo +% oval - put an oval around title information +% pagenumbers - generate page numbers in left-hand corner of footer +% plain - no logo in footer +% portrait - 8-1/2 x 11 +% proprietary - use ``PROPRIETARY'' in head/foot +% small - make the slides a bit smaller than standard SLiTeX + +\def\ds@blackandwhite{% + \let\@document=\document + \def\document{% + \@document + \blackandwhite{null} + \@makingslidestrue + }% + \let\@enddocument=\enddocument + \def\enddocument{\@makingslidesfalse\@enddocument}% +} + +\def\ds@draft{% + \overfullrule=5\p@ + \def\XXX@corner{+}% +} +\let\XXX@corner=\empty + +\newif\if@landscape \@landscapefalse +\def\ds@landscape{% + \@landscapetrue + \textwidth=615\p@ \textheight=470\p@ + \columnwidth=\textwidth +} +\def\ds@portrait{% + \@landscapefalse + \textwidth=470\p@ \textheight=615\p@ + \columnwidth=\textwidth +} + +\newif\if@xxxx \@xxxxfalse +\let\ds@xxxx=\@xxxxtrue + +\newif\if@ovaltitle \@ovaltitlefalse +\let\ds@oval=\@ovaltitletrue + +\newif\if@pagenumbers \@pagenumbersfalse +\let\ds@pagenumbers=\@pagenumberstrue + +%%% \def\XXX@logo{% +%%% \vtop{% +%%% \halign{\hfil##\hfil\cr +%%% \headfont NORTHROP\cr +%%% \if@xxxx \hbox{\lowfont\kern-1.2em\raise.6em +%%% \hbox{Research and Technology Center}}\cr\fi +%%% }% +%%% }% +%%% } +\let\XXX@logo=\empty +\let\XXX@titlelogo=\XXX@logo +\def\ds@plain{\def\XXX@logo{\XXX@corner}\let\XXX@titlelogo=\empty} + +\def\ds@proprietary{% + \def\XXX@prop{{\small\bf PROPRIETARY}\hfil}% +} +\let\XXX@prop=\empty + +\def\ds@small{% + \let\Huge=\huge + \let\huge=\LARGE + \let\LARGE=\Large + \let\Large=\large + \let\large=\normalsize + \let\normalsize=\small + \let\small=\tiny + \let\footnotesize=\small + \let\scriptsize=\small + + \normalsize + + \let\ds@small=\empty +} + +\@namedef{ds@10pt}{\@latexerr{No '10pt' layout for slides}\eha} +\@namedef{ds@11pt}{\@latexerr{No '11pt' layout for slides}\eha} +\@namedef{ds@12pt}{\@latexerr{No '12pt' layout for slides}\eha} +\def\ds@openbib{\@latexerr{No 'openbib' layout for slides}\@eha} +\def\ds@titlepage{\@latexerr{No 'titlepage' layout for slides}\@eha} +\def\ds@twocolumn{\@latexerr{No 'twocolumn' layout for slides}\@eha} +\def\ds@twoside{\@latexerr{No 'twoside' layout for slides}\@eha} + +\@options + + +% Parameters different than SLiTeX + +%%% \font\headfont=northrop20 +%%% \font\lowfont=bookx9 +%%% \font\notesfont=bookx12 +\def\notesfont{\scriptsize\rm} + +% Page Style + +\setbox\z@=\hbox{\@mainsize\XXX@logo} +\ifdim \ht\z@>\footheight + \advance\textheight by-\footheight + \footheight=\ht\z@ + \advance\textheight by\footheight + \footskip=\footheight \advance\footskip by11\p@ +\fi + +\def\ps@XXXslides{% + \def\ps@slide{% + \def\@oddfoot{% + \@mainsize\null + \if@pagenumbers \hbox to3em{\theslide\hss}\fi + \XXX@notes\hfil\hspace{2in}\XXX@prop\XXX@logo + }% + \def\@oddhead{\@mainsize\null \XXX@corner\hfil \XXX@prop\XXX@corner}% + \let\@evenfoot=\@oddfoot + \let\@evenhead=\@oddhead + }% + \def\ps@overlay{% + \def\@oddfoot{% + \@mainsize\null + \if@pagenumbers \hbox to 3em{\theoverlay\hss}\fi + \hfil\XXX@corner + }% + \def\@oddhead{\@mainsize\null \XXX@corner\hfil \XXX@corner}% + \let\@evenfoot=\@oddfoot + \let\@evenhead=\@oddhead + }% + \def\ps@note{% + \def\@oddfoot{\@mainsize\null \hfil\thenote}% + \let\@oddhead=\empty + \let\@evenfoot=\@oddfoot + \let\@evenhead=\@oddhead + }% +} + +\def\ps@title{% + \def\ps@slide{% + \def\@oddfoot{\@mainsize\null + \XXX@notes\hfil\hspace{2in}\XXX@prop\XXX@titlelogo}% + \def\@oddhead{\@mainsize\null \hfil\XXX@prop}% + \let\@evenfoot=\@oddfoot + \let\@evenhead=\@oddhead + }% + \def\ps@overlay{% + \let\@oddfoot=\empty + \let\@oddhead=\empty + \let\@evenfoot=\@oddfoot + \let\@evenhead=\@oddhead + }% + \def\ps@note{% + \let\@oddfoot=\empty + \let\@oddhead=\empty + \let\@evenfoot=\@oddfoot + \let\@evenhead=\@oddhead + }% + \ps@slide +} + + +% Titles (from article.sty) + +\def\maketitlepage{\begin{titlepage}\maketitle\end{titlepage}} + +\def\maketitle{% + \par + \begingroup + \def\thefootnote{\fnsymbol{footnote}}% + \def\@makefnmark{\hbox to\z@{$^{\@thefnmark}$\hss}}% + \newpage + \global\@topnum=\z@ + \@maketitle + \thispagestyle{title}% + \@thanks + \endgroup + \setcounter{footnote}{\z@} + \global\let\@title=\empty + \global\let\@author=\empty + \global\let\@thanks=\empty +} + +\newcount\title@ht \newcount\title@wd +\newcount\title@@ht \newcount\title@@wd + +\def\@maketitle{% + \newpage + \null + \setbox\z@=\vbox{% + \ \vskip .75em + \begin{center} + {\Large\bf \@title \par}% + \vskip .5em + {\large\bf + \lineskip=.25em + \begin{tabular}[t]{c} + \@author + \end{tabular} + \par + }% + \vskip .5em + {\large\bf \@date}% + \end{center} + \par + \vskip .75em + }% + \if@ovaltitle + \title@ht=\ht\z@ \title@wd=\wd\z@ + \title@@ht=\ht\z@ \title@@wd=\wd\z@ + \divide\title@@ht by2 \divide\title@@wd by2 + \unitlength=1sp + \fi + \box\z@ + \if@ovaltitle + \vskip -\title@ht\unitlength + {\centering + \begin{picture}(\title@wd,\title@ht) + \put(\title@@wd,\title@@ht){\oval(\title@wd,\title@ht)} + \end{picture} + \par} + \fi +} + +\def\ctitle#1{% + \begin{center} + \large\bf#1% + \end{center} + \vskip.125in plus.25in +} + + +% Slides + +\def\bwslide{\let\XXX@notes=\empty \slide\empty} +\let\endbwslide=\endslide + +\def\bwoverlay{\overlay\empty} +\let\endbwoverlay=\endoverlay + + +% Parts (parts is parts...) + +\newcounter{part} + +\def\part{\secdef\@part\@spart} + +\def\@part[#1]#2{% + \stepcounter{part} + \begin{center} + \Large\bf PART \thepart\\ + \huge\bf #2% + \end{center} + \vskip1.25in plus.25in +} + +\def\@spart#1{% + \begin{center} + \huge\bf #1% + \end{center} + \vskip1.15in plus.25in +} + +\def\thepart{\Roman{part}} + + +% Macros for circled lists (similar to itemize) + +\newcount\@xxxxdepth \@xxxxdepth=\z@ + +\def\xxxx{% + \ifnum \@xxxxdepth>2 + \@toodeep + \else + \advance\@xxxxdepth by\@ne + \edef\@xxxxitem{labelxxxx\romannumeral\the\@xxxxdepth}% + \list{\csname\@xxxxitem\endcsname}{% + \def\makelabel##1{\hss\llap{##1}}% + \labelwidth=\leftmargini \advance\labelwidth-\labelsep + \ifcase\@xxxxdepth\or + \itemindent=-1em \listparindent=\itemindent + \leftmargin=3em + \parsep=\the\parsep plus.5\parsep minus.5\parsep + \topsep=\parsep + \or + \itemindent=-2em \listparindent=\itemindent + \leftmargin=4em + \parsep=\the\parsep plus.5\parsep minus.5\parsep + \topsep=\parsep + \else + \itemindent=-2em \listparindent=\itemindent + \leftmargin=2em + \fi + \rightmargin=\z@ + }% + \fi +} +\let\endxxxx=\endlist + +\def\labelxxxxi{$\circ$} +\let\labelxxxxii=\empty +\let\labelxxxxiii=\empty +\let\labelxxxxiv=\empty + + +\def\slidenotes#1{\def\XXX@notes{\notesfont#1}} +\let\XXX@notes=\empty + + +% Macros for figures (PIC support) + +\let\slidepoint=\small + +\def\diagram{\@ifnextchar[{\@diagram}{\@diagram[]}} +\def\@diagram[#1]#2{% + \let\@d@agram=\empty \let\@di@gram=\empty + \@tfor\@tempa:=#1\do{% + \if\@tempa p + \let\@d@agram=\slidepoint + \def\@di@gram{\centerline{\box\graph}}\fi + \if\@tempa t + \let\@d@agram=\slidepoint\fi + }% + \@d@agram \input #2\relax \@di@gram +} + + +% Initialization + +\pagestyle{XXXslides} + +\uchyph=\z@ +\brokenpenalty=\@M +\hyphenpenalty=\@M +\tolerance=500 +\pretolerance=\@M +\clubpenalty=\@M +\widowpenalty=\@M \displaywidowpenalty=\@M diff --git a/macros/latex209/contrib/misc/yearcal.tex b/macros/latex209/contrib/misc/yearcal.tex new file mode 100644 index 0000000000..ff145138ed --- /dev/null +++ b/macros/latex209/contrib/misc/yearcal.tex @@ -0,0 +1,133 @@ +%%% Save file as: YEARCAL.TEX Source: FILESERV@SHSU.BITNET +%%% @LaTeX-file{ +%%% author = "Michael Barr", +%%% version = "1.0", +%%% date = "1992-06-24", +%%% time = "16:35 EDT", +%%% filename = "yearcal.tex", +%%% address = "Department of Mathematics & Statistics" +%%% McGill University +%%% 805 Sherbrooke St. W +%%% Montreal, QC +%%% Canada H3A 2K6", +%%% telephone = "(514) 398-3806", +%%% FAX = "(514) 398-3899", +%%% email = "barr@math.mcgill.ca (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "LaTeX, year calendar" +%%% checksum = "53683 132 503 5111", +%%% supported = "yes", +%%% docstring = " +%%% This LaTeX file prints the correct Gregorian calendar for any +%%% year between the adoption of the Gregorian calendar (which +%%% happened during the 18th, 19th and even 20th century, +%%% depending on country) and the year 4000. That year is +%%% supposed, according to current plans, not to be a leap year, +%%% although, strictly speaking, that ought to happen in the year +%%% 3200. +%%% +%%% The current definition of the Gregorian calendar is: +%%% Years divisible by 4 are leap years; except +%%% years divisible by 100 are not leap years; except +%%% years divisible by 400 are leap years; except +%%% years divisible by 4000 are not leap years. +%%% So the years 1800 and 1900 were not leap years, but 2000 will be. +%%% } +%%% ==================================================================== + +% The current definition of the Gregorian calendar is: +% Years divisible by 4 are leap years; except +% years divisible by 100 are not leap years; except +% years divisible by 400 are leap years; except +% years divisible by 4000 are not leap years. +% So the years 1800 and 1900 were not leap years, but 2000 will be. + + +\typeout{} +\typein[\theyear]{Please enter the year:} +\newcount\yearnum \yearnum=\theyear + +\documentstyle{article} +\textwidth 7.05in \oddsidemargin-.255in +\textheight=9in \headheight =0pt \topmargin=0pt\headsep=0pt +\footheight=0pt\footskip=0pt +\pagestyle{empty}\thispagestyle{empty} + +\newcount\febdays \febdays=28 +\newcount\yearnuma +\newcount\yearnumb +\newcount\firstdate \newcount \lastdate \newcount \datenum + +\def\month#1#2#3{\initialdate{#1}{#2}% +\begin{tabular}{|rrrrrrr|} \hline +\multicolumn{7}{|c|}{#3}\\ \hline +Su&Mo&Tu&We&Th&Fr&Sa\\ \hline +\day{ 1}&\day{ 2}&\day{ 3}&\day{ 4}&\day{ 5}&\day{ 6}&\day{ 7}\\ +\day{ 8}&\day{ 9}&\day{10}&\day{11}&\day{12}&\day{13}&\day{14}\\ +\day{15}&\day{16}&\day{17}&\day{18}&\day{19}&\day{20}&\day{21}\\ +\day{22}&\day{23}&\day{24}&\day{25}&\day{26}&\day{27}&\day{28}\\ +\day{29}&\day{30}&\day{31}&\day{32}&\day{33}&\day{34}&\day{35}\\ +\day{36}&\day{37}&\day{38}&\day{39}&\day{40}&\day{41}&\day{42}\\ \hline +\end{tabular}\global\advance\firstdate by #2 +\ifnum\firstdate>35 \global\advance\firstdate by -35 + \else\global\advance \firstdate by -28 \fi} +\def\day#1{\advance \datenum by#1 + \ifnum\datenum>0 \ifnum\datenum>\lastdate\else\number\datenum \fi\fi} +\def\initialdate#1#2{\datenum=1 \advance\datenum by -#1 \lastdate=#2} +\newcount\xa\newcount\xb\newcount\xc +\newcount\ya\newcount\yb\newcount\yc\newcount\yd +\xa=0 \xb=235 {\multiply \xb by 2 \global\xc=\xb } +\yd=0 \yc=136 {\multiply \yc by 2 \global \yb=\yc } +{\multiply \yc by 3 \global \ya=\yc } + +\begin{document} +\font\gross=cminch + +\def\setup{\yearnuma=\yearnum{% +\divide\yearnuma by 100 +\multiply\yearnuma by 100 +\ifnum\yearnum=\yearnuma \divide \yearnum by 100 \fi +\ifodd\yearnum\relax +\else \divide\yearnum by 2 + \ifodd\yearnum\relax + \else \global\febdays=29 + \fi +\fi +}% +{% +\advance\yearnum by -1 +\yearnuma=\yearnum +\divide\yearnuma by 400 \multiply \yearnuma by -400 +\advance\yearnuma by \yearnum % \yearnuma=\yearnum mod 400 +\firstdate=\yearnuma +\yearnumb=\yearnuma +\divide\yearnumb by 100 \divide\yearnuma by 4 +\advance\yearnuma by -\yearnumb % correct leapyear count by centuries +\advance\firstdate by \yearnuma % add number of leapyears +\yearnuma=\firstdate +\divide\yearnuma by 7 \multiply\yearnuma by 7 +\advance\firstdate by -\yearnuma % \firstdate = #leapyears mod 7 +% Now do final correction for year 0. +\global\firstdate=\ifcase\firstdate2 \or3 \or4 \or5 \or6 \or7 \or1 \fi +}% +}% + +\setup +\begin{center}{\gross \number\yearnum }\end{center} +\unitlength.01in +\begin{picture}(705,543) +\put(\xa,\ya){\month{\firstdate}{31}{January}} +\put(\xb,\ya){\month{\firstdate}{\febdays}{February}} +\put(\xc,\ya){\month{\firstdate}{31}{March}} +\put(\xa,\yb){\month{\firstdate}{30}{April}} +\put(\xb,\yb){\month{\firstdate}{31}{May}} +\put(\xc,\yb){\month{\firstdate}{30}{June}} +\put(\xa,\yc){\month{\firstdate}{31}{July}} +\put(\xb,\yc){\month{\firstdate}{31}{August}} +\put(\xc,\yc){\month{\firstdate}{30}{September}} +\put(\xa,\yd){\month{\firstdate}{31}{October}} +\put(\xb,\yd){\month{\firstdate}{30}{November}} +\put(\xc,\yd){\month{\firstdate}{31}{December}} +\end{picture}\newpage + +\end{document}} |