diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:47:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:47:08 +0000 |
commit | 3b927eb81270ca256a85224fda0e0812120168a3 (patch) | |
tree | fc763fee20a22d51cc18825d462a1554e86fcdce /Master/texmf-dist/tex/texsis/base | |
parent | 4b07bbd62fe0b4abde93a927773133aac4a9a2ac (diff) |
trunk/Master/texmf-dist/tex/texsis/
git-svn-id: svn://tug.org/texlive/trunk@626 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/texsis/base')
38 files changed, 10523 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/texsis/base/AIP.txs b/Master/texmf-dist/tex/texsis/base/AIP.txs new file mode 100644 index 00000000000..26bb5682add --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/AIP.txs @@ -0,0 +1,50 @@ +%% file: AIP.txs - TeXsis version 2.18 +%% @(#) $Id: texsis.tex,v 18.0 1999/07/08 19:39:51 myers Exp $ +%======================================================================* +% AIP -- TeXsis style file for American Institute of Physics proceedings +% +%--------------------------------------------------* +\ATunlock +\emsg{\@comment\ AIP: American Institute of Physics Proceedings Layout} + +\def\AIPproceedings{% AIP proceedings format + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \hsize=146mm % width of text + \vsize=222mm % length of text + \texsis % Initialize TeXsis + \def\Tbf{\fourteenpoint\bf}% % 14pt bold title + \def\tbf{\twelvepoint\bf}% % 12pt bold section head + \def\titlepage{% % title page for \AIPproceedings + \bgroup% % begin \titlepage group + \let\endmode=\relax % \endmode will end a field + \pageno=1}% % + \def\endtitlepage{% % end title page for \AIPproceedings + \endmode % end any open field + \egroup% % end \titlepage group + \medskip}% % + \def\abstract{% % abstract for \AIPproceedings + \endmode % end previous field + \bgroup % + \vskip\baselineskip % one blank line + \centerline{ABSTRACT}% % "ABSTRACT", centered + \vskip\baselineskip % another blank line + \let\endmode=\endabstract % to end \abstract + \noindent}% % + \def\endabstract{% % end abstract for \AIPproceedings + \medskip\egroup}% % + \def\disclaimer##1{\relax}% % disable \disclaimer + \def\toappear##1{\relax}% % disable \toappear + \def\submitted##1{\relax}% % disable \submitted + \twelvepoint % roughly Elite type + \parindent=5em % roughly 5 spaces + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes + \nopagenumbers % don't print page numbers + \singlespaced\whitespaced % 1.25 percent spacing + } + +\ATlock + +%>>> EOF AIP.txs <<< + diff --git a/Master/texmf-dist/tex/texsis/base/CVformat.txs b/Master/texmf-dist/tex/texsis/base/CVformat.txs new file mode 100644 index 00000000000..0eecc80f740 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/CVformat.txs @@ -0,0 +1,105 @@ +%% file: CVformat.txs - TeXsis version 2.18 +%% @(#) $Id: CVformat.txs,v 17.2 2001/04/06 22:27:24 myers Exp $ +%======================================================================* +% CVformat.txs -- macros for producing a Curriculum Vitae and +% publication list. Modify these as you like or add to it. +% Since a CV is a personal thing, you may find this doesn't quite +% do what you want it to do, but at least it's a start. +% +% Eric Myers, Brookhaven National Laboratory, 7 November, 1985 +%======================================================================* +\ATunlock +\emsg{\@comment CVformat: Curriculum Vitae macros}% + +\def\CVformat{% CVformat: Curriculum Vitae macros + \hsize=6.0 true in + \nopagenumbers + \auxswitchfalse + \quoteon % turn on easyquotes + \twelvepoint + \parindent=2.5cm + \raggedright\tolerance=800 % ragged right with looser tolerance + \def\NAME{}% + \def\endmode{\relax}% +% +% headline placement and spacing: +% + \ifx\empty\NAME\else + \headline={\ifnum\pageno>1 + {\twelvepoint\sl Curriculum Vitae of \NAME\hfil Page \folio}% + \else \hfil\fi}\fi + \headlineoffset=0.5cm + } + +% MACRO DEFINITIONS: +% \item, \EXitem, \pubitem + +\def\ITEM#1{\endmode + \pagecheck{5\baselineskip}% + \begingroup + \def\endmode{\endgroup}% + \tolerance=2000 + \bigskip\goodbreak + \item{\undertext{\bf #1}}\smallskip + \let\itm=\EXitem + } + +\def\Education{\ITEM{Education}} +\def\Experience{\ITEM{Experience}} + + +\def\hang{\hangindent=\parindent} +\def\item{\medskip\par\hang\textindent} +\def\textindent#1{\indent\llap{\hbox to \parindent{#1\hss}}\ignorespaces} + +% \EXitem{note} puts the note in the left margin in \tenpoint, +% and you can break the line with \n + +\def\EXitem#1{% + \item{\def\n{\hss\egroup\hbox to \hangindent\bgroup}% + \hbox to 0pt{% + \vtop to 0pt{\tenpoint\rm + \hbox to \hangindent\bgroup#1\hss\egroup\vss}% + }}} + + +% \Publications begins list of publications + +\def\Publications{\endmode + \pageno=1 + \ifx\empty\NAME\else + \headline={{\twelvepoint\sl Publications of \NAME\hfil Page \folio}}\fi + \headlineoffset=0.5cm + \parindent=1.0cm + \raggedright \tolerance=2200 + \item{\bf PUBLICATIONS:} + \smallskip + \let\itm=\pubitem + } + +% \pubitem is \itm for publications list +% \pubitem is like \item, but it automatically gives the item a number + +\newcount\pubnum \pubnum=0 + +\def\pubitem{\medskip + \advance\pubnum by 1 + \item{\the\pubnum.}} + +%%\def\vol#1{\undertext{#1}} + +% \booktitle is used in the reference text to cause the title of a book +% to be printed in italics. +\def\booktitle#1{{\sl #1}} + +\def\references{\parindent=1.0cm + \pageno=1 + \ifx\empty\NAME\else + \headline={{\twelvepoint\sl References for \NAME\hfil}}\fi + \headlineoffset=0.5cm + \item{\bf REFERENCES:} + \smallskip} + +\ATlock + +%>>> EOF CVformat.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/Elsevier.txs b/Master/texmf-dist/tex/texsis/base/Elsevier.txs new file mode 100644 index 00000000000..80f0dab19b5 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/Elsevier.txs @@ -0,0 +1,250 @@ +% file: Elsevier.txs TeXsis version 2.14 +% $Revision: 15.0 $ : $Date: 91/07/09 19:24:09 $ : $Author: myers $ +%======================================================================* +% Elsevier -- TeXsis style file for North-Holland Physics Publishers +% +% \NorthHolland North Holland proceedings format, +% single column, left justified titles +% \NorthHollandTwo North Holland double column proceedings +% format, left justified titles +%======================================================================* +\ATunlock +\emsg{\@comment\ Elsevier: North-Holland/Elsevier style}% + +%--------------------------------------------------* +% \NorthHolland -- North-Holland/Elsevier Proceedings Layout. +% Single column with left justified title, author, and abstract, small +% \parindent, intented subsections. +% Note that \author treats the first line as the author's name and +% the following lines as addresses. You can can extend the author line +% to more than one line by ending the lines with \ + +\def\NorthHolland{% North-Holland/Elsevier Proceedings + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \texsis % initialize + \def\Tbf{\twelvepoint\rm}% % Title typestyle + \def\tbf{\twelvepoint\rm}% % section head typestyle + \twelvepoint% % 12 pt type + \parindent=0.65cm% % small indent + \hsize=16.8cm% % width + \vsize=25.0cm% % height + \nopagenumbers% % don't print page numbers + \showsectIDtrue% % show section numbers + \parskip=0pt plus0pt minus0pt\relax% % no stretch! + \advance\voffset by-0.5in\relax% % fit page + \raggedbottom% % since no stretch + \let\@@@disclaimer=\disclaimer% % save it + \def\disclaimer{% % in 12 pt + \let\tenrm=\twelverm% % + \@@@disclaimer}% % +% + \def\titlepage{% % for \NorthHolland + \bgroup % begin title page + \let\endmode=\relax % define end + \pageno=1% % start on 1 + \vbox{\vskip1.2cm}}% % whitespace at top + \def\endtitlepage{% % for \NorthHolland + \endmode % end titlepage + \egroup% % end group + \doublespaced}% % double space below +% + \def\title{% % for \NorthHolland + \endmode % end previous field + \bgroup\narrower% % margins + \let\endmode=\endtitle % set up ending + \mark{Title Page\NX\else Title Page}% mark page so no \HeadLine + \flushleft% % left justified with line breaks + \hyphenpenalty=10000% % no hyphens + \exhyphenpenalty=10000% % no hyphens + \singlespaced}% % single spaced + \def\endtitle{% % for \NorthHolland + \endflushleft% % end flush left and group + \vskip\normalbaselineskip% % skip a line + \egroup}% % end title group +% + \def\author{% % for \NorthHolland + \endmode % end previous field + \bgroup\narrower% % margins + \let\endmode=\endauthor % set up ending + \flushleft% % flush left + \@NHgetauthor}% % get author + \def\endauthor{% % for \NorthHolland + \vskip\normalbaselineskip% % skip line - another in \abstract + \endflushleft% % end flush left + \egroup}% % end author group +% + \def\abstract{% % for \NorthHolland + \endmode % end previous field + \vskip\normalbaselineskip % skip second line + \bgroup\narrower% % margins + \let\endmode=\endabstract % set up ending + \noindent}% % no indent + \def\endabstract{% % for \NorthHolland + \vskip0pt% % force vertical mode + \egroup}% % end abstract group + \let\section=\@NHsection% % for \NorthHolland + \let\subsection\@NHsubsection% % for \NorthHolland +}% % end \NorthHolland + +% \@NHgetauthor is like \getauthor but left justifies and skips +% 1 line after author's name. +{\obeylines + \gdef\@NHgetauthor#1 + #2 + {#1\vskip0pt\noindent{#2}% % author line + \vskip1\normalbaselineskip}% % blank line +} + +% \section for \NorthHolland + +\def\@NHsection#1{% % N.Holland section + \everysection% % user customization + \vskip 2\normalbaselineskip\goodbreak% % make some space + \global\advance\sectionnum by \@ne % increment section counter + \global\subsectionnum=\z@% % reset subsection counter + \edef\ttt{\@chaptID\the\sectionnum}% % For use by \label + \s@ction% % checkenv, etc.. + \vbox{% % heading in \vbox + \begingroup\raggedright % group for \tbf + \ifshowsectID % show section number? + \global\edef\@sectID{\the\sectionnum.}% yes: define section ID + \r@set% % and reset counters + \setbox0=\hbox{\noindent\@chaptID\@sectID\space}% find width + \hangindent=\wd0\hangafter=1% % hanging indent after 1st line + \noindent{\tbf{\@chaptID\@sectID\space}}% and print sect ID + \else\gdef\@sectID{}% % no: section ID is null + \noindent % just print section title + \fi % end \ifshowsectID + {\tbf{#1}}\relax % Print title ragged in \tbf + \endgroup % end \tbf + \nobreak\medskip}% % skip down some + \begingroup % group for \contents, etc. + \def\label##1{}\def\goodbreak{}% % disable \label & \goodbreak + \def\n{\ }\def\nl{\ }% % turn off \n + \def\mib{}% % turn off \mib + \emsg{Section \ttt.\space #1}% % announce in .LIS and + \ifnum\chapternum=0% % no chapter number, so + \global\edef\HeadText{{\tenit #1}}\fi % make running head the title + \addTOC{\ttt.}{\ #1}{1}% % add to table of contents + \def\sectiontitle{#1}% % for \aftersection + \endgroup% % end \contents group + \nobreak% % no break + \aftersection\nobreak}% % user can customize + +% \subsection for \NorthHolland, with indented nonbold titles and +% fixes for standard version. + +\def\@NHsubsection#1{% % N.Holland sub-section + \everysubsection% % user customization + \vskip\baselineskip\goodbreak% % break + \checkquote% % make sure no open quotes + \global\advance\subsectionnum by\@ne% % increment counter + \edef\ttt{\@chaptID\@sectID\the\subsectionnum.}% for \label + \vbox{% % heading in \vbox + \begingroup\raggedright% % Print title ragged, indent + \ifshowsectID% % showing section numbers? + \setbox0=\hbox{\noindent\ttt\space}% % find width + \hangindent=\wd0\hangafter=1\relax% % hanging indent after 1st line + \ttt\space% % show subsection number + \fi #1\relax% % print the title + \endgroup% % end \bf + \nobreak\medskip% % skip down some + \nobreak\vskip-\parskip}% % cancel first \parskip + \begingroup% % group for \contents, etc. + \def\label##1{}\def\goodbreak{}% % disable \label & \goodbreak + \def\n{\ }\def\nl{\ }% % turn off \n + \def\mib{}% % turn off \mib + \emsg{\ttt\space #1}% % announce in .LIS and + \addTOC{\ttt}{\ #1}{2}% % add to table of contents + \def\subsectiontitle{#1}% % for \aftersection to use + \endgroup% % end \contents group + \nobreak% % no page break + \aftersubsection}% % room to customize + + +%--------------------------------------------------* +% \NorthHollandTwo - North-Holland/Elsevier proceedings layout in +% double column format with titles left justified, eleven point type, etc., +% for camera-ready copy. Constructed following directions in ``Instructions +% for the Preparation and Typing of Camera Ready Contributions'' by Mary +% Carpenter, Elsevier Publishers. + +\def\NorthHollandTwo{% North-Holland/Elsevier proceedings 2-column layout + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \texsis % initialize + \def\Tbf{\elevenpoint\bf}% % Title typestyle + \def\tbf{\elevenpoint\it}% % section head typestyle + \setdoublecolumns{21.3cm}{27.1cm}{10.0cm}% + \parindent=0.6cm % + \advance\voffset by -2.2cm \relax % as close to the top as possible + \advance\hoffset by -2.3cm \relax % as close to the left as possible +% + \emsg{ } + \emsg{The \NX\NorthHollandTwo document layout you have selected is}% + \emsg{too large to fit on one 8.5 x 11.0 page. You should either}% + \emsg{print the output on an oversized printer or offset the output}% + \emsg{horizontally to get one column at a time. }% + \emsg{Please enter the horizontal OFFSET TO THE LEFT (with units!):}% + \read-1 to \tmp % read from terminal (use UNITS!) + \if\tmp\par \relax\else % if blank line, ignore + \advance \hoffset by -\tmp\relax % else move \hoffset left + \fi +% + \def\titlepage{% % for \NorthHollandTwo + \pageno=1 % + \hbox{\ }% % anchor to top of page + \bgroup % + \let\endmode=\relax % \endmode will end a field + \vskip 0.3cm % whitespace on title page + \narrower\parindent=0pt}% % + \def\endtitlepage{% % for \NorthHollandTwo + \endmode % end any open field + \smallskip % + \egroup}% % +% + \def\title{% % for \NorthHollandTwo + \endmode % end previous field, if any + \mark{Title Page\NX\else Title Page}% % so \HeadLine doesn't print + \bgroup % begin title group + \flushleft % left justified + \let\endmode=\endtitle % + \Tbf\widenspacing}% % \Tbf is Title boldface + \def\endtitle{% % for \NorthHollandTwo + \endflushleft % + \egroup% % end title group + \bigskip}% % +% + \let\getauthor=\LATauthor % see definition below + \def\endauthor{\par\egroup\medskip}% % + \def\and{\smallskip{and}\smallskip}% % +% + \def\abstract{% % for \NorthHollandTwo + \endmode % end any open field + \bigskip % + \bgroup % + \let\endmode=\endabstract % + \singlespaced\noindent}% % + \def\endabstract{% % for \NorthHollandTwo + \medskip\egroup\bigskip}% % +% + \elevenpoint % eleven point type size + \parindent=0.6cm % paragraph indent + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes + \nopagenumbers % don't print page numbers + \singlespaced\whitespaced % 1.25 percent spacing +} % end of \NorthHollandTwo + +% \NorthHollandTwo replacement for \getauthor left justifies + +{\obeylines + \gdef\LATauthor#1 + #2 + {#1\bigskip\noindent{\bf #2}\medskip}% +} + +\ATlock + +%>>> EOF Elsevier.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/Exam.txs b/Master/texmf-dist/tex/texsis/base/Exam.txs new file mode 100644 index 00000000000..adff12275b0 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/Exam.txs @@ -0,0 +1,196 @@ +%% file: Exam.txs (TeXsis version 2.18) +% @(#) $Revision: 16.0+X1 $ : $Date: 1992/08/08 22:20:36 $ : $Author: myers$ +%======================================================================* +% These are a few simple macros to make it easier to type up +% homework problems and examinations. +% +% Example: +% +% \texsis +% \def\CourseName{Physics 231 -- Mathematical Methods} +% \def\Semester{Fall 1993}\def\ExamTitle{Test 2} +% \input Exam.txs +% \noindent +% There are \Qcount\ problems on this exam. Work all or as many as you +% can do, and record all answers below. \n +% To insure that you get proper partial credit for incomplete answers show +% all your work either here or on another piece of paper. +% \medskip\noindent +% 100 Points. +% +% \Questions +% +% \Q +% Determine whether each infinite series below is convergent or divergent +% using the \hbox{Malcom~X} method (i.e., by any means necessary!). +% Be sure to give your reasons. +% \Choices +% \itm $S = \sum_{n=1}^\infty {2^n \over (n-1)!}$ +% \itm $S = \sum_{n=1}^\infty \left( 1 - {1\over n^2} \right)$ +% \itm $S = \sum_{n=3}^\infty {2n-3\over (n-1)(n-2)} $ +% \endChoices +% +% ... +% +% \endQuestions +% \bye +% +% Note: these are just supposed to help you make up an exam, but not +% define the format used. Change these as you like or make up your own, +% but I hope they help give you a starting point. +% +% Eric Myers <myers@vassar.edu> - 20 September 1994 +% Department of Physics and Astronomy, Vassar College, Poughkeepsie, NY +% Department of Physics, University of Michigan, Ann Arbor, MI +%======================================================================* + +\singlespaced +\parindent=0pt +\sectionminspace=0pt + +%% Get the question count from the last run + +\newskip\Qskip \Qskip=\medskipamount + +\newwrite\cntfile % to save question count + +\newread\cntfile\openin\cntfile=\jobname.cnt +\ifeof\cntfile\def\Qcount{99 }\else\read\cntfile to\Qcount\fi + + +%% \Questions environment is like a ``List'' environment + +\def\Questions{\bigskip\bigskip + \enumNumOutline + \enumerate + \advance\leftskip by -\EnvLeftskip + \advance\rightskip by -\EnvRightskip + \everymath={\displaystyle} + \def\endmode{\relax} + \def\Q{\endmode\def\endmode{\relax}% + \vskip\Qskip + \itm}} + +\def\endQuestions{% + \filbreak + \immediate\openout\cntfile=\jobname.cnt + \immediate\write\cntfile{\the\enumcnt }% + \immediate\closeout\cntfile + \xdef\Qcount{\the\enumcnt}% + \endenumerate} + +\def\Choices{\medskip\enumerate\def\enummark{\rparen}\parskip=0pt + \singlespaced\widenspacing + \def~{\phantom{0}}% + \def\endChoices{\endenumerate\medskip}} +\def\endChoices{\relax} + + +%% Exam title, if there is one: + +\ifx\ExamTitle\undefined\else + \line{\hss\ExamTitle\hss} + \bigskip\bigskip + \line{% + \vbox{\hbox{\CourseName}% + \hbox{\ }% + \hbox{\Semester}% + }% + \hss + \vbox{\hbox{Name:\quad\theBlank{5cm}}% + \hbox{\ }% + \hbox{Date:\quad\theBlank{4cm}}% + }% + }% +\fi +\vskip 1cm + + +%% Header for a set of 1 or more questions: + +\def\endmode{\relax} + +\def\Unskip{\vskip-\Qskip\vskip-\parskip}% \emsg{Unskip!}} + + +\long\def\Qset#1#2{% begin a set of questions (#2 is lookahead) + \endmode + \begingroup\def\endmode{\endgroup}% + \ifnum#1>1 %% Several QuestionS (like \QS) + \filbreak + \noindent{\bf \undertext{Questions \Qplus1--\Qplus#1}} + \else + \filbreak + \noindent{\bf \undertext{Question \Qplus1}} + \fi + \vskip 0pt +%% \def\foo{#2}\emsg{Lookahead gives \string#2}% +%% \ifx\foo\Unskip \emsg{Found \string\Unskip!}\fi +%% \ifx\foo\Q \emsg{Found \string\Q!}\fi +%% \ifx\foo\par\emsg{Found \string\par!}\fi +%% \ifx\foo\empty\emsg{Empty lookahead}\fi + \noindent#2} + + +% Increment the question counter and ``return'' the new number + +\def\Qplus#1{\count255=\the\enumcnt + \advance\count255 by #1 \the\count255} + +%% Old macros to do what \Qset does: + +\long\def\QH#1#2{\filbreak % NOW IGNORES #1 -EAM 1997/6/22 + \noindent{\bf \undertext{Question \Qplus1}}\vskip 0pt\noindent#2} + +\long\def\QS#1#2{\filbreak + \noindent{\bf \undertext{Questions #1}}\vskip 0pt\noindent#2} + + +\def\Continued{\smallskip + \line{\bf Questions continue on the next page...\hfill} + \eject} + +\def\Answer{\vskip 0pt + \line{\hfill{\twelvess ANSWER:\ }\hfill}% + \vskip 0pt} + + +%% Put "DRAFT" watermark over each page using PostScript \special + +\def\DraftMark{\draft + \special{!userdict begin /bop-hook{gsave 200 30 translate + 65 rotate /Times-Roman findfont 216 scalefont setfont + 0 0 moveto 0.825 setgray (DRAFT) show grestore}def end}} + + +% This displays a figure of vertical height #1, from the file #2, +% side by side with the text #4 of width #3 times \hsize. The text is +% actually on the left, the figure on the right, and there is a small +% gutter between. + +\long\def\RightFig#1#2#3{% + \line{\def\endmode{\relax}% + \vbox to #1{\hsize=0.60\hsize\noindent #3\relax\vss}% + \hfill + \vbox to #1{\hbox{\epsfysize=#1\epsfbox{figs/#2}}\vss} + \hfill}% +} + + +%% Version control for large classes + +\newcount\version \version=0 % version A(0) or B(1)? + +\def\AB#1#2{\ifcase\version #1\or #2\else\?\fi} +\def\ABC#1#2#3{\ifcase\version #1\or #2\or #3\else\?\fi} + +% Misc: + + +\def\?{\theBlank{1.2cm}} + +\def\DS{\displaystyle} + + + +%>>> EOF Exam.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/Formletr.txs b/Master/texmf-dist/tex/texsis/base/Formletr.txs new file mode 100644 index 00000000000..a33b2b73aed --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/Formletr.txs @@ -0,0 +1,247 @@ +%% file: Formletr.txs - TeXsis version 2.18 +% @(#) $Id: Formletr.txs,v 18.0 2000/05/17 01:50:44 myers Exp $ +%======================================================================* +% FORM LETTERS E. Myers and F.E. Paige +% +% Macros to type form letters with a common text to a list of +% people. The syntax is: +% +% \formLetters{<letterhead-stuff>}{<text-file-name>} +% \BL Prof. John Doe +% Physics Dept +% U. of Nowhere +% Nowhere, Somewhere 12345679 +% \V\Whoever{Prof.~Doe} +% \EL +% \BL Dr.\ William Barcode +% Department of Physics +% Ferbilab +% Batcave, IL 60510 USA +% \V\Whoever{Dr.\ Barcode} +% \EL +% \BL ... +% ... \EL +% ... +% \bye +% +% where <letterhead-stuff> is stuff to be executed before the address is +% printed and <text-file-name> is the name of a file containing the +% generic text of the letter following the standard TeXsis letter format, +% beginning with \body: +% +% \body +% Dear \Whoever, +% ... +% \closing +% Sincerely yours, +% Joe User +% \endletter +% +% The text file can use any other control sequences defined by +% \V\name{...} between \BL and \EL. +% +% Replace \formLetters with \formLabels (no arguments) to print out +% your mailing list in a tabular form suitable for printing on mailing +% labels. Or use \formEnvelopes to print directly on envelopes, if +% your printer can do so. Set \theSignature and \ReturnAddress if you +% also want a return name and address on the envelope. +%======================================================================* +% (C) Copyright 1990,1992,1994,1997,2000 by Eric Myers and Frank E. Paige +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +%======================================================================* +\message{Form Letters.} + +% \formLetters{<letterhead>}{<file>} sets things up to make a series of +% form letters. The commands in <letterhead> are executed before the +% address, to make a letterhead or print the sender's phone number. +% The file named by <file> contains the text of the letter, which is +% printed below the address. This text can use any ``variable'' control +% sequences defined by \V in the address list. + + +\def\formLetters#1#2{% + \def\formLabels{\relax}% % disable the others + \def\formEnvelopes{\relax}% + \def\formLetterhead{#1}% % save \letterhead definitions + \def\TXTfile{#2}% % save file name for letter text + \auxswitchfalse % no .AUX file + \refswitchfalse % no references either + \texsis % initialize TeXsis + \def\BL{\BLletter}\def\FL{\BLletter}% + \def\EL{\ELletter}\def\IL{\ILletter}% + \def\endmode{\relax}% % initially does nothing + \let\V=\gdef % \V\name defines variable \name + \def\endletter{\endmode}% % \endletter does not end job + \def\endmode{\relax}% % start with null \endmode + \def\endform{\bye}% % ending is just \bye + \LetterFormat % and set up for letters +} + +\def\formletters{\formLetters} % synonym from 2.16 and before + + +% \BLletter is \BL for letters. It begins a new formletter. + +\long\def\BLletter{% do an individual form letter + \endmode % end any previous mode + \def\endmode{\relax}% % but ending this mode is nothing + \pageno=1 % start each letter on page 1 + \formLetterhead % do the letterhead stuff first + \begingroup\obeylines % to look for line endings in addresses + \GetFormAddress} % and go get address + +% \GetFormAddress gets the address for form letters + +{\obeylines\gdef\GetFormAddress#1 + {\ifx\EL#1\relax\endgroup\else %% if just \EL then end \obeylines + \gdef\addressee{#1}% %% addressee is first line of address + \global\advance \FLcount by 1 %% advance count of letters printed + \emsg{\the\FLcount.\space \addressee\space}% show letters printed + \def\BL{\emsg{> . Warning! \NX\BL found before \NX\EL}\ELBL}% + \def\IL{\emsg{> . Warning! \NX\IL found before \NX\EL}\ELIL}% + \global\setbox\theaddress=\vbox\bgroup %% start a vbox + \parindent=0pt %% no indent, since we are \obeylines + #1\relax + \fi}% +}% end of \obeylines for definition + +% \ELletter is \EL for letters. It boxes up the address and prints +% it, then reads in the generic text of the letter from \TXTfile + +\def\ELletter{% end of address, print the form letter + \vss\egroup % end the \vbox + \endgroup % end the \obeylines + \copy\theaddress % dump the address to the page + \message{\space\space}% % some whitespace in log file + \input\TXTfile \relax % read in text of letter from file + \vfill\eject} % end the page + +% \IL ignores a letter (use in place of \BL to keep from sending to a +% particular name on the list). You MUST end the entry in the list with \EL ! + +\long\def\ILletter#1\EL{\relax} +\long\def\ILlabel#1\EL{\relax} + +%---------------------------------------------------------------------- +\message{FormLabels.} + +% \formLabels uses the same input file as \formLetters but prints +% mailing labels. It is assumed that there are three columns of labels +% on a page. Dimensions are for 8 labels per column and Barbara's printer. +% These dimensions are defined in TXSletr.tex. +% +% \newdimen\fullHsize \fullHsize=8.5in % hsize for label page +% \newdimen\fullVsize \fullVsize=11.50in % vsize for label page +% \newdimen\lblHsize \lblHsize=2.833in % width of standard label +% \newdimen\lblVsize \lblVsize=1.365in % ht. of std. label - a bit +% \newdimen\lblVoffset \lblVoffset=-.900in % vertical starting position +% \newdimen\lblHoffset \lblHoffset=-0.750in % horizontal starting position + +\newcount\FLcount % count the number of letters + +\newbox\lblLcol % box for left column +\newbox\lblMcol % box for middle column + +\def\formLabels{% % form labels instead of letters + \texsis % initialize TeXsis + \def\formLetters##1##2{\relax}% % disable \formLetters + \def\formEnvelopes{\relax}% % + \hoffset=\lblHoffset % use full page, no left margin + \voffset=\lblVoffset % adjust for printer vertical offset + \hsize=\fullHsize % use full page width + \vsize=\fullVsize % and full length + \auxswitchfalse % no .AUX file + \refswitchfalse % no references either + \tenpoint\singlespaced % 10pt to fit long addresses + \nopagenumbers % suppress page numbering + \raggedbottom % ragged page bottom + \def\lblflag{L}% % set flag to start in left column + \def\BL{\BLlabel}\def\FL{\BLlabel}% + \def\EL{\ELlabel}\def\IL{\ILlabel}% + \def\endmode{\relax}% % initially does nothing + \def\endform{\endFormLabels}% % end form labels + \let\V=\gdef % \V\name defines variable \name +} +\def\formlabels{\formLabels} % synonym for 2.16 and before + +\def\BLlabel{\begingroup\obeylines % pay attention to line endings + \hsize=\lblHsize % with width of label + \GetLabelAddress}% % get address in a box + +% \GetLabelAddress gets the address for form labels + +{\obeylines\gdef\GetLabelAddress#1 + {\ifx\EL#1\relax\endgroup\else %% if just \EL end \obeylines + \gdef\addressee{#1}% %% addressee is first line of address + \global\advance \FLcount by 1 %% advance count of letters + \emsg{\the\FLcount.\space \addressee\space}% show letters printed + \def\BL{\emsg{> . . . . . . . Warning! \NX\BL found before \NX\EL}\ELBL}% + \def\IL{\emsg{> . . . . . . . Warning! \NX\IL found before \NX\EL}\ELIL}% + \global\setbox\theaddress=\vbox to \lblVsize\bgroup% start a vbox + \hsize=\lblHsize %% with width of label + \parindent=0pt %% no indent, since we are \obeylines + #1\relax + \fi}% +}% end of \obeylines for definition + +% \ELlabel ends the address label, with the address stored in box +% \theaddress. If we are in the left or centre column we then +% store the address in other boxes. If we are in the right column +% then we print all three boxes across the line. + +\def\ELlabel{\vss\egroup % end the \vbox + \endgroup % done with \obeylines + \if L\lblflag % if in left column + \global\setbox\lblLcol=\box\theaddress % store in \lblLcol + \gdef\lblflag{M}% % next column is middle column + \else \if M\lblflag % else if middle column + \global\setbox\lblMcol=\box\theaddress % store in \lblMcol + \gdef\lblflag{R}% % next column is right column + \else % else right column, so + \line{\box\lblLcol % print all 3 boxes + \box\lblMcol % across the + \box\theaddress\hss}% % page... + \gdef\lblflag{L}% % reset to left column + \fi\fi % end of if's +}% + +% \endform=\endFormLabels ends the form labels gracefully. \lblflag is +% set to the next column, so... + +\def\endFormLabels{% end \formLabels by balancing columns + \if M\lblflag% % last address in left + \line{\box\lblLcol\hss}% % only left box + \else \if R\lblflag% % last address in middle + \line{\box\lblLcol\box\lblMcol\hss}% left and middle boxes + \fi\fi % + \bye}% % else printed by \EL + +%---------------------------------------------------------------------- +\message{FormEnvelopes.} + +\def\formEnvelopes{% % print envelopes instead of letters + \def\formLetters##1##2{\relax}% disable \formLetters + \def\formLabels{\relax}% % and disable \formLabels + \def\formLetterhead{\relax}% + \auxswitchfalse % no .AUX file + \refswitchfalse % no references either + \texsis % initialize TeXsis + \nopagenumbers % suppress page numbering + \singlespaced\parskip=0pt + \def\BL{\BLenvelope}\def\FL{\BLenvelope}% + \def\EL{\ELenvelope}\def\IL{\ILlabel}% + \let\V=\gdef % \V\name defines variable \name + \def\endmode{\relax}% % initially does nothing + \def\endform{\bye}% % end of envelopes +} + +\def\formenvelopes{\formEnvelopes}% synonym + + +\def\BLenvelope{\obeylines\@BLenv} +\def\@BLenv#1\EL{\MakeEnvelope{#1}{\theSignature\n\ReturnAddress}% + \newpage} + +%>>> EOF TXSform.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/IEEE.txs b/Master/texmf-dist/tex/texsis/base/IEEE.txs new file mode 100644 index 00000000000..957e082a49c --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/IEEE.txs @@ -0,0 +1,102 @@ +%% file: IEEE.txs (TeXsis version 2.17) +% $Revision: 17.2 $ : $Date: 1996/12/16 04:47:47 $ : $Author: myers $ +%======================================================================* +% IEEE -- TeXsis style file for IEEE conference proceedings +% +% Special thanks to T.C. Pierce <es051@eng.warwick.ac.uk> of the +% Engineering Department, University of Warwick, for improvements. +% +\ATunlock +\emsg{\@comment\ IEEE conference proceedings layouts} + + +% Parameters and macros common to all IEEE documents: + +\def\Eq#1{(\use{Eq.#1})}% % equation are just (number) + +\bigskipamount=0.3cm plus 4pt minus 4pt +\showsectIDfalse +\quoteon +\superrefsfalse + +\def\@refitem#1#2#3{\message{[#1]} % #3 looks past ^^M for next arg + \refskip\noindent\hskip-\refindent % indent, but write number + \hbox to \refindent {\hss \linkname{Ref.#1}{[#1]}\quad} % unindented + #3} + +%--------------------------------------------------* +% IEEE Proceedings Layout: +% +\def\IEEEproceedings{% IEEE proceedings format + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \texsis % Initialize TeXsis + \hsize=9.5in \vsize=12.875in % IEEE page size + \SetDoubleColumns{4.625in}% % IEEE column size + \def\Tbf{\fourteenpoint\bf}% % 14pt bold title + \def\tbf{\twelvepoint\bf}% % 12pt bold section head + \let\titlepage=\@IEEEtp % new \titlepage macro + \let\endtitlepage=\@IEEEetp % new \endtitlepage macro + \let\abstract=\@IEEEabs % new \abstract macro + \twelvepoint % roughly Elite type + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes + \nopagenumbers % don't print page numbers + \singlespaced\whitespaced % 1.25 percent spacing +} + +\def\@IEEEtp{% \titlepage for IEEE layouts + \bgroup % begin titlepage group + \let\endmode=\relax % \endmode will end a field + \pageno=1} % start on page 1 + +\def\@IEEEetp{% \endtitlepage for IEEE layouts + \endmode % end any open field + \egroup % end titlepage group + \doublecolumns % go to double column mode for paper + \bigskip\bigskip} % don't skip page + +\def\@IEEEabs{% \abstract for IEEE layouts + \endmode % end previous field + \bgroup % + \vskip\baselineskip % one blank line + \centerline{ABSTRACT}% % "ABSTRACT", centered + \vskip\baselineskip % another blank line + \leftskip=1in\rightskip=1in % narrower abstract + \let\endmode=\endabstract % to end \abstract + \noindent} % do not indent abstract + % + +% \IEEEreduced makes an IEEE document 75% full size in 9pt type +% for 8.5in x 11in paper: + +\def\IEEEreduced{% IEEE document reduced 75% of full size + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \def\Tbf{\fourteenpoint\bf}% % 14pt bold title + \def\tbf{\ninepoint\bf}% % 9pt bold section head + \RomanTablestrue % roman numeral table numbers + \texsis % Initialize TeXsis + \sectionskip=0.4cm plus 1pt minus 1pt % Adjust section skips + \subsectionskip=0.3cm plus 1pt minus 1pt + \sectionminspace=0.1\vsize % + \parindent=0.2cm + \def\refskip{\vskip 0pt}% % no skip between references + \hsize=7.125in \vsize=22.9cm % 75% size + \SetDoubleColumns{3.46875in}% % 75% size + \advance\hoffset by -.3325in % for above size + \advance\voffset by -.318125in % for above size + \let\titlepage=\@IEEEtp % new \titlepage macro + \let\endtitlepage=\@IEEEetp % new \endtitlepage macro + \let\abstract=\@IEEEabs % new \abstract macro + \tenpoint % + \nopagenumbers % + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes +% \singlespaced % normal spacing + } + + +\ATlock + +%>>> EOF IEEE.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/PhysRev.txs b/Master/texmf-dist/tex/texsis/base/PhysRev.txs new file mode 100644 index 00000000000..d8a42ae96fb --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/PhysRev.txs @@ -0,0 +1,427 @@ +%% file: PhysRev.txs (TeXsis version 2.18) +%% @(#) $Id: PhysRev.txs,v 18.1 2001/04/06 22:31:57 myers Exp $ +%========================================================================* +% PhysRev.txs - Physical Review Style for TeXsis +% +% The following document formats are defined in this style file. +% +% \PhysRev - Formats papers as they would appear in +% Physical Review A, B, C, D, or E +% \PhysRevLett - Formats papers as they would appear in +% Physical Review Letters +% \PhysRevManuscript - Formats papers for _Submission_ to Physical +% Review or Physical Reveiw Letters +% +% The Volume/Series/Issue and page number can be set by seting the +% following AFTER you have invoked \PhysRev or \PhysRevLett: +% +% \def\Series{D} % or A, B, C, E +% \let\Volno=32 +% \let\Issueno=10 +% \let\Pageno=2736 +% +% This is a good attempt to replicate the style of the Physical Review, +% but there may still be some subltle differences. We would appreciate +% suggestions or comments via e-mail to texsis@texsis.org +%========================================================================* +\ATunlock % use @ as a letter +\emsg{\@comment\ PhysRev: Physical Review journal style}% + + +\tenpoint % roughly Elite type +\parindent=1.5em % indent about 2 characters +\parskip=0.5\smallskipamount % not much skip betwen paragraphs +\baselineskip=12pt plus 0.5pt % a little extra stretch for 2 columns +\hsize=42.5pc \vsize=55\baselineskip % +\skip\footins=0.5cm % space above wide footnotes +\sectionskip=0.80cm plus 0.1cm minus 0.1cm % +\subsectionskip=0.65cm plus 0.1cm minus 0.1cm % + + +%--------------------------------------------------* +% HEADLINES and FOOTLINES for all Physical Review layouts + +\def\Series{} +\newcount\Volno \Volno=0 +\newcount\Issueno\Issueno=0 +\newcount\Pageno \Pageno=1 % page number to start on + +% some extra fonts for headline and footline + +\font\smallheadfont=cmcsc10 +\font\largeheadfont=cmcsc10 + +\headlineoffset=0pt + +\def\VolumeBanner#1#2#3#4{% define the title page header + \ifx\relax#1\relax\else\def\Series{#1}\fi % #1 = A... or L + \ifx\relax#2\relax\else\Volno=#2\fi % #2 = volume + \ifx\relax#3\relax\else\Issueno=#3\fi % #3 = issue + \ifx\relax#4\relax\else\Pageno=#4\fi % #4 = page +% + \ifx\Series{L}% % Letters + \def\@VolumeBanner{\largeheadfont % + \rlap{Volume \the\Volno, Number \the\Issueno}% % + \hss PHYSICAL REVIEW LETTERS % + \hss \today}% % + \else % Phys Rev + \def\@VolumeBanner{\rlap{PHYSICAL REVIEW #1}% % + \hss VOLUME \the\Volno, NUMBER \the\Issueno % + \hss \llap{\the\Pageno}}% % + \fi} + + +\def\@Volume{$\underline{\hbox{{\the\Volno}% + \vrule height12pt depth2ptwidth\z@}}$} + +\def\TitleBanner#1{\def\@TitleBanner{#1}}% for right hand (odd) pages + +\def\AuthorBanner#1{\def\@AuthorBanner{#1}}% for left hand (even) pages + +\VolumeBanner{}{}{}{}\TitleBanner{}\AuthorBanner{}% defaults are empty + + +%==================================================* +% REFERENCES: some differences from Plain TeXsis + +\superrefsfalse % Physical Review's new style now + +% How to list the references at the end + +\ifx\undefined\@stdListRefs + \let\@stdListRefs=\ListReferences % save standard TeXsis definition +\fi + +% How to display reference numbers in the list at the end + +\def\@refitem#1#2#3{% reference item (#3 eats the ^^M, #2 is label) + \vskip 0pt\vfil\penalty-1\vfilneg % favour breaks here, weakly + \refskip % some space between citations + % print citation number, based on type of citation + \ifcase\CiteType\relax % 0: no citation mark + \or \message{#1.}% % 1: superscript numbers + \hangindent 1em\hangafter 1 ${}^{#1}$% + \or \message{[#1]}% % 2: [<number>] style in-line + \noindent\hskip-\refindent % indent, but write number + \hbox to \refindent{\hss \linkname{Ref.#1}{[#1]}\quad} % unindented + \else\relax\fi % else: nothing + #3} + +\def\refskip{\vskip0pt plus 2pt}% only a little stretch between refs + +\def\Ref#1{% citations in text are ``Ref. [xx]'' + \testtag{Ref.#1}\ifundefined % is it undefined? (tag -> \tok) + Ref.~[\use{Ref.#1}] % force a tagging error + \else + \linkto{Ref.\csname\tok\endcsname}{Ref.~[\csname\tok\endcsname]}% + \fi} + + +%======================================================================* +% TITLE material -- modified for Physical Review layout + +\def\titlepage{\pageno=\Pageno % start on page \Pageno + \begingroup % + \singlespaced} % + +\def\endtitlepage{\bigskip\endgroup % some skip and glue + \vskip 0pt % + \doublecolumns} % start doing double columns + +\def\author{% first line after as author's name, following lines are address + \endmode\begingroup % end any previous mode + \let\endmode=\endauthor % \endmode will end \author + \begingroup\obeylines % to see author's name + \PRgetauthor} % next line = author's name + +{\obeylines\gdef\PRgetauthor#1 + #2 + {#1\bigskip + \centerline{\elevenpoint #2}% first line is author's name + \endgroup % end \obeylines for lookahead + \raggedcenter\relax % fill as you can + \def\\{\discretionary{}{}{,}}% % , unless line breaks + \def\n{\penalty10000}% % \n would like to break + \ninepoint\it % rest is affiliation +}} % + +\def\endauthor{\vskip 0pt\endraggedcenter\endgroup\smallskip} + +\def\abstract{% + \centerline{(Received \@PUBdate)}% % the date from \pubdate + \vskip\baselineskip % another blank line + \begingroup % + \leftskip=1in \rightskip=1in % narrower abstract margins + \ninepoint} % 9 pt type for the text + +\def\endabstract{\medskip\endgroup} + + +%==================================================* +% SECTION LEVELS: Modified from \section in TXSsects.tex: + + +\def\section#1{% create a new section of a document + \vskip\sectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \global\advance\sectionnum by \@ne % increment section counter + \global\subsectionnum=\z@ % reset subsections + \global\subsubsectionnum=\z@ % reset subsubsections +% +% Section ID: +% + \edef\lab@l{\@chaptID\SectionStyle{\the\sectionnum}}% For \label + \ifshowsectID % show section number? + \global\edef\@sectID{\SectionStyle{\the\sectionnum}.}% save for later + \global\edef\@fullID{\lab@l.\space\space}% % what we will use here + \r@set % and reset counters + \else\gdef\@fullID{}\fi % otherwise section ID is empty + \everysection % user customization here +% +% Print the Section title, in uppercase bold +% + \vbox{% % keep heading in \vbox + \center % centered for Phys Rev + \uppercase{\tbf \lab@l.\ \ #1}% % Section headings in uppercase + \endcenter % + \vskip-\baselineskip % undo it + \vskip0.85\sectionskip\relax}% % skip below title + \nobreak % no break after title +% +% Table of Contents and Running Headlines: +% + \begingroup % group for \contents, etc. + \def\label##1{}% % disable \label + \global\edef\SectionTitle{#1}% % or nothing + \def\n{}\def\nl{}\def\mib{}% % turn off \n, etc + \ifnum\chapternum=0\setHeadline{#1}\fi % no chapt. number -> set headine + \emsg{Section \@fullID #1}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{1}{\NX\TOCsID{\lab@l.}#1}{\folio}% % Table of Contents entry + \endgroup % end group + \s@ction % checkenv, etc.. + \aftersection} % user can customize + +%--------------------------------------------------* +% Modified from \subsection in TXSsects.tex + +\def\subsection#1{% % create a subsection of a document + \vskip\subsectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \global\advance\subsectionnum by \@ne % increment counter + \global\subsubsectionnum=\z@ % reset subsubsection +% +% Subsection ID: +% + \edef\lab@l{\@chaptID\@sectID\SubsectionStyle{\the\subsectionnum}}% + \ifshowsectID % show section number? + \global\edef\@fullID{\lab@l.\space}% % yes: define it + \else\gdef\@fullID{}\fi % otherwise it's empty + \everysubsection % user can customize +% +% Print the subsection title +% + \vbox{% % heading in \vbox + \center % centered for Phys Rev + {\tbf \lab@l.\ \ #1}% % + \endcenter % + \vskip-\baselineskip % undo it + \vskip0.85\subsectionskip\relax}% % same skip above and below + \nobreak % +% + \begingroup % group for \contents, etc. + \def\label##1{}% % disable \label + \global\edef\SubsectionTitle{#1}% % or nothing + \def\n{}\def\nl{}\def\mib{}% % disable \n, etc + \emsg{\@fullID #1}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{2}{\NX\TOCsID{\lab@l.}#1}{\folio}% % Table of Contents entry + \endgroup % end \contents group + \s@ction % end of section + \aftersubsection} % room to customize + +%--------------------------------------------------* +% Modified from \subsubsection in TXSsects.tex + +\def\subsubsection#1{% % create a subsubsection of a document + \vskip\subsectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \global\advance\subsubsectionnum by \@ne % increment counter +% +% Sub-subsection ID: +% + \edef\lab@l{\SubsubsectionStyle{\the\subsubsectionnum}}% just the number + \ifshowsectID % show section number? + \global\edef\@fullID{\lab@l.\space\space}% % yes: define it + \else\gdef\@fullID{}\fi % else it's empty + \everysubsubsection % user can customize here +% +% Print the sub-subsection title +% + \vbox{% % heading in \vbox + \center % centered for Phys Rev + {\bf \lab@l.\ \ #1}% % + \endcenter % + \vskip-\baselineskip % undo it + \vskip\subsectionskip\relax}% % same skip above and below + \nobreak % +% + \begingroup % group for \contents, etc. + \def\label##1{}% % disable \label + \global\edef\SubsectionTitle{#1}% % or nothing + \def\n{}\def\nl{}\def\mib{}% % turn off \n, etc + \emsg{\@fullID #1}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{3}{\NX\TOCsID{\lab@l.}#1}{\folio}% % Table of Contents entry + \endgroup % end group + \s@ction % end of section + \aftersubsection} % room to customize + + +%======================================================================* +% \PhysRev and \PhysRevLett layouts + +\def\PhysRev{% Physical Review two column layout + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \tenpoint % roughly Elite type +%% \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}% + \SetDoubleColumns{20.5pc}% % + \ifx\LFins\undefined\else % These may not be defined in mTeXsis + \skip\LFins=1cm \skip\RFins=1cm\fi % space above column footnotes +%% \advance\hoffset by -.3in \advance\voffset by -.3in % for this size + \footlineoffset=12pt +% + \showchaptIDfalse % no chapter number in equation numbers + \showsectIDfalse % no section number in equation numbers + \def\SectionStyle##1{\uppercase % section numbers in upper case + \expandafter{\romannumeral ##1}}% roman numerals + \def\SubsectionStyle##1{\LetterN{##1}}% subsections are UC letters + \def\SubsubsectionStyle##1{##1}% % subsubsections are numbered + \RomanTablestrue % roman numerals for table numbers + \def\Tbf{\twelvepoint\bf}% % 12pt bold title + \def\tbf{\tenpoint\bf}% % 10pt bold for section head +% + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes + \pageno=\Pageno % start page numbering on \Pageno +% + \headline={% headline for Physical Review A, B, C, D, E... + \ifnum\pageno=\Pageno % First page header + {\largeheadfont \@VolumeBanner}% % + \else\ifodd\pageno % right (odd) page header + {\rlap{\@Volume}% % + \hss \largeheadfont \@TitleBanner % + \hss \llap{\folio}}% % + \else % left (even) page header + {\rlap{\folio}% % + \hss \largeheadfont \@AuthorBanner % + \hss \llap{\@Volume}}\fi\fi}% % +% + \footline={% copyright claim at bottom of first page + \ifnum\pageno=\Pageno % + {\tenrm \hbox to\colwidth{\hfill{\@Volume}}\hss % + \hbox to\colwidth{\folio \hfill % + \copyright\ \the\year\ The American Physical Society}}% + \fi} +% + \def\ListReferences{% PhysRev version of \ListReferences + \enddoublecolumns % balance columns so far + \dimen@=\pagegoal % get total page size + \advance\dimen@ by -\pagetotal % get page space remaining + \ifdim\dimen@>0pt \ifdim\dimen@< 1cm % not enough to look good? + \vfil\eject % + \else % + \bigskip % + \line{\hfill \hbox to 20.5pc{\hrulefill}\hfill}% + \bigskip % + \fi\fi % + \doublecolumns % back to double columns for list + \@stdListRefs % + \vfill % + \enddoublecolumns}% +% + \def\refFormat{\ninepoint}% reference text is in slightly smaller type +}% end \PhysRev + +%--- +% The layout of Physical Review Letters is slightly different, +% mostly in how the headlines and footlines are treated, and the references + +\def\PhysRevLett{% + \PhysRev % same as Physical Review, with following changes + \def\Series{L}% % Assume Phys. Rev. Lett. + \null\vskip 0.1cm % some skip at top +% + \headline={\hbox{\vbox{\hbox to \pagewidth{\largeheadfont % + Volume \the\Volno, Number \the\Issueno \hss % + PHYSICAL REVIEW LETTERS \hss \today}% + \vskip 0.32cm\hrule}}}% + \footlineoffset=24pt % + \footline={% copyright claim at bottom of first page + \ifnum\pageno=\Pageno % + {\tenrm \ifodd\pageno\else\rlap{\folio}\fi % + \hss{\copyright\ \the\year\ The American Physical Society}\hss + \ifodd\pageno\llap{\folio}\fi}% + \else + \ifodd\pageno % right (odd) page header + {\hss \folio}% + \else % left (even) page header + {\folio \hss}% + \fi\fi} +% + \def\section##1{\relax}% % no sections in PRL + \def\subsection##1{\relax}% % no subsections in PRL + \def\subsubsection##1{\relax}% % no subsubsections in PRL +% + \def\ListReferences{% PhysRevLett version of \ListReferences + \dimen@=\pagetotal % how far so far + \ifdim\dimen@>\pageheight\advance\dimen@ by -\pageheight\fi + \advance\dimen@ by 1cm % + \ifdim\dimen@>\pagetotal % not enough to look good? + \bigskip\goodbreak % + \else % + \vskip\subsectionskip % + \line{\hfill \hbox to 6pc{\hrulefill}\hfill}% + \vskip\subsectionskip % + \fi % + \@stdListRefs}% % +}% end \PhysRevLett + + +%======================================================================* +% \PhysRevManuscript is a layout similar to \preprint, but printed +% in \TrueDoubleSpacing and with other things set the way Physical +% Review wants them for submitted manuscripts. + + +\def\PhysRevManuscript{% layout for manuscripts to be submitted to journals + \preprint % start with preprint form + \TrueDoubleSpacing % manuscripts have real double spacing + \showchaptIDfalse % no chapter number in equations + \showsectIDfalse % no section number in equations + \def\SectionStyle##1{\uppercase % section numbers in upper case + \expandafter{\romannumeral ##1}}% roman numerals + \def\SubsectionStyle##1{\LetterN{##1}}% subsections are UC letters + \def\SubsubsectionStyle##1{##1}% % subsubsections are numbered + \RomanTablestrue % roman numerals for table numbers + \FiguresLast\TablesLast % figures and tables at the end + \ListCaptions % collect a list of captions + \offparens % no automatic paren sizing + \superrefsfalse % PR has abandoned superscripts + \def\Tbf{\twelvepoint\bf}% % 12pt bold title + \def\tbf{\twelvepoint\bf}% % 12pt bold section head + \parindent=1em % indent about 2 characters + \parskip=\smallskipamount % not much space between paragraphs + \def\everysection{\vfill\eject}% % start new section on new page + \gdef\captionspacing{\TrueDoubleSpacing}% + \def\abstract{\begingroup\narrower\narrower\vskip 1\baselineskip plus 1fil}% + \def\ListReferences{\vskip 2\baselineskip\@stdListRefs}% + } + +% Once the Phys. Rev. style file is loaded \Manuscript is specific to +% Physical Review: + +\let\Manuscript=\PhysRevManuscript + +%>>> EOF PhysRev.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/Spanish.txs b/Master/texmf-dist/tex/texsis/base/Spanish.txs new file mode 100644 index 00000000000..a4100359265 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/Spanish.txs @@ -0,0 +1,111 @@ +%% file: Spanish.txs (TeXsis version 2.17) +% $Revision: 1.3 $ : $Date: 1997/07/07 21:10:44 $ : $Author: myers $ +%======================================================================* +% Native language support for TeXsis in Spanish +% +% These macros make small changes to TeXsis so that names for things +% like tables, figures and references are in Spanish rather than +% English. +% +% Many thanks to Romano Giannetti <romano@iet.unipi.it> for the original. +% Updated on 1997/07/07 by David Su\'arez de Lis <fafefito@uscmail.usc.es> +%======================================================================* +\message{TeXsis en Espa\~nol.} + +% If this file has already been loaded, just invoke \Spanish and quit + +\ifx\undefined\Spanish +\else + \Spanish + \expandafter\endinput +\fi + +% Look for spanish.sty, the Babel-TeX style for Spanish, if needed + +\ifx\undefined\captionsspanish % has spanish.sty been loaded? + \immediate\openin\patchfile=spanish.sty % try to open it + \ifeof\patchfile % EOF? Then it's not there + \emsg{> You need the Babel-TeX file spanish.sty in your input path...}% + \fi % + \immediate\closein\patchfile % close it + \input spanish.sty \relax % try to read it anyway +\fi + + +\def\Spanish{% re-define TeXsis macros for Spanish +% +% Referencing macros are re-defined. +% +% + \def\Corollary##1{corolario~\use{Cor.##1}} + \def\Definition##1{definici\'on~\use{Def.##1}} +% +% +% Better without abbreviation, even if it's only one. +% + \def\Fig##1{figura~\use{Fg.##1}} +% +% or, if abbreviation is used, then it goes with first letter in capital +% \def\Fig##1{Fig.~\use{Fg.##1}} + + \def\Fg##1{\use{Fg.##1}} + \def\Figs##1{figuras~\use{Fg.##1}} + \def\Lemma##1{lema~\use{Lem.##1}} + \def\Ref##1{ref.~\use{Ref.##1}} +% +% +% + \def\Tab##1{tabla~\use{Tb.##1}} + \def\Tbl##1{tabla~\use{Tb.##1}} + \def\Theorem##1{teorema~\use{Thm.##1}} +% +% Names used in longer macros are re-defined. +% + \def\AbstractName{Resumen}% + \def\FigureName{Figura}% + \def\TableName{Tabla}% + +% ----- +% If we ever give these things names: +% +% \def\TheoremName{Teorema} +% \def\LemmaName{Lema} +% \def\ProofName{Demostraci\'non} +% ----- + +% Referring to equations can be done in a wide variety of contexts. So, +% I think it better to have equation references with only the number in +% parenthesis (that is, by the way, the way _I_ prefere do references +% to equations: " ...come si vede nella (2.3) la corrente ..." (Romano) +% +% However it is often used in a similar way as in English but with the +% name of the item explicitly stated: "...como se ve en la +% ecuaci\'on (2.5)..." , or even "...como se ve en la Ec. (2.5)..." +% so I guess it is better to put it both ways, one of them commented out. +% I will put the second one as the default, as it seems to be most widely +% used in Spain... (David) + +% Also, the manual shows you how to do it the first way, and the second +% is more specialized to Spanish, so let's use that. (Eric) + + +%% \def\Eq##1{($\use{Eq.##1}$)} \def\Eqs##1{($\use{Eq.##1}$)} + +\def\Eq##1{ecuaci\'on~($\use{Eq.##1}$)} +\def\Eqs##1{ecuaciones~($\use{Eq.##1}$)} + +% Select the language + + \selectlanguage{spanish} + +% Default reference style should be for the European style + + \Eurostyletrue +} + + +% Make it so: + +\Spanish + +%>>EOF Spanish.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/Swedish.txs b/Master/texmf-dist/tex/texsis/base/Swedish.txs new file mode 100644 index 00000000000..0d5a3f60153 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/Swedish.txs @@ -0,0 +1,83 @@ +%% file: Swedish.txs (TeXsis version 2.17) +% $Revision: 1.4 $ : $Date: 1995/05/23 17:59:05 $ : $Author: myers $ +%======================================================================* +% Native language support for TeXsis in Swedish, with the Babel-TeX package +% +% These macros make small changes to TeXsis so that names for things +% like tables, figures and references are in Swedish rather than +% English. This file also loads the babel-tex package, if needed. +% +% Using TeXsis with babel and Swedish (or some other language) is very +% simple: +% +% o Retrieve the Babel package from CTAN +% o Install a plain TeX with Babel for the idioms you want +% (instruction in the babel package). Dump it to btex.fmt (for example) +% o Dump the TeXsis package exactly as in the instruction, only +% at the initex step do initex '&btex texsis \dump' +% i.e. use the babel-plain base format where you used plain for an +% english-only version +% o Call the dumped format btexsis.fmt (or whatever you prefer). +% o Now btexsis work like texsis normally, but you can load +% multi-language support simply doing \input Swedish.txs. +% +% Many thanks to Anders Ynnerman <andersy@galilei.tfr.se> for checking this. +%======================================================================* +\message{TeXsis in Svensk.}% + +% If Swedish.txs has already been loaded, then simply exit + +\ifx\undefined\Swedish\else % if \Swedish is already defined then this has + \Swedish % already been defined. Select \Swedish + \expandafter\endinput % and exit this file +\fi + +% Look for swedish.sty, the Babel-TeX style for Swedish, if needed + +\ifx\undefined\captionsswedish % has swedish.sty been loaded? + \immediate\openin\patchfile=swedish.sty % try to open it + \ifeof\patchfile % EOF? Then it's not there + \emsg{> You need the Babel-TeX file italaian.sty in your input path...}% + \fi % + \immediate\closein\patchfile % close it + \input swedish.sty \relax % try to read it anyway +\fi + +%======================================================================* +% \Swedish selects Swedish support for Babel, and re-defines names +% of things for TeXsis + +\def\Swedish{% re-define TeXsis macros for Swedish + \selectlanguage{swedish}% Babel uses Swedish... +% +% Referencing macros are re-defined. +% + \def\Corollary##1{corollario~\use{Cor.##1}}% + \def\Definition##1{definizione~\use{Def.##1}}% +% + \def\Eq##1{Eq.~($\use{Eq.##1}$)}% + \def\Eqs##1{Eqs.~($\use{Eq.##1}$)}% +% + \def\Fig##1{Fig.~fig.~\use{Fg.##1}}% + \def\Fg##1{\use{Fg.##1}}% + \def\Figs##1{Figurs~\use{Fg.##1}}% + \def\Lemma##1{lemma~\use{Lem.##1}}% + \def\Ref##1{Ref.~\use{Ref.##1}}% +% + \def\Tab##1{Tabell~\use{Tb.##1}}% + \def\Tbl##1{Tableller~\use{Tb.##1}}% + \def\Theorem##1{teorema~\use{Thm.##1}}% +% +% Names used in longer macros are re-defined. +% + \def\AbstractName{Sammanfattning}% + \def\FigureName{Figur}% + \def\TableName{Tabell}% + \def\DraftName{Preliminary Draft}% +} + +% Make it so. + +\Swedish + +%>>EOF Swedish.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSconts.tex b/Master/texmf-dist/tex/texsis/base/TXSconts.tex new file mode 100644 index 00000000000..eb03f7606f1 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSconts.tex @@ -0,0 +1,180 @@ +%% file: TXSconts.tex - Table of Contents - TeXsis version 2.18 +%% $Id: TXSconts.tex,v 18.0 1999/07/09 17:26:11 myers Exp $ +%======================================================================* +% +% These macros are an easy way to make a table of contents. +% An entry in the table of contents is created with \addTOC like so: +% +% \addTOC{level}{title-text}{page} +% +% The level is a number 0, 1, 2, etc for chapters, sections or +% subsections and is used to control the indentation of the entry. +% The page number should probably be {\folio}, so that it comes out +% correctly, but you can use anything else you like. +% +% \addTOC writes the table of contents information to a file called +% \jobname.toc. At the end of the job you simply say \Contents to read +% in this information and actually create the table of contents. +% \Contents does not print any heading or change the page numbering -- +% you must take care of that yourself. +% +% If you include \TOCcID{chapter-id} in the title-text then the +% chapter-id will or will not be printed in the title depending on +% whether you have set \showchaptIDtrue or \showchaptIDfalse at the +% time you say \Contents. Similarly, \TOCsID{section-id} displays the +% section-id if \showsectIDtrue. For example, if you say +% +% \addTOC{1}{\TOCsID{3.14}Section of $\pi$}{\folio} +% +% then the section number 3.14 will or will not be displayed when +% \Contents is invoked, depending on \ifshowsectID. +% +% You can write anything you want to the table of contents file by +% saying \TOCwrite{stuff}. Use this to insert formatting information +% or headings. +% +% Note that no table of contents information is written if \Contentsfalse +% is set. This is the default in TeXsis for most document formats +% except \book and \thesis, so you should explicitly say \Contentstrue +% to get a table of contents. If this file is \input separately then +% \Contentstrue is already set. +% +% This file is a part of TeXsis, but may be used by itself with Plain TeX. +% (In that case \TOCcID and \TOCsID always show their arguments.) +% +% This file is a part of TeXsis. +% (C) copyright 1991, 1994, 1997 by Eric Myers and Frank Paige. +%----------------------------------------------------------------------* +\message{Table of Contents.} +\catcode`@=11 + +% I/O and switches, etc: + +\newwrite\TOCout % table of contents temp file +\newskip\TOCmargin \TOCmargin=3cm % right margin indent for TOC + +\newif\ifContents % do we write out to table of contents? +\Contentstrue % default is true if loaded by itself + +\def\ContentsSwitchtrue{\Contentstrue} % \@obsolete in 2.18 +\def\ContentsSwitchfalse{\Contentsfalse}% \@obsolete in 2.18 + +%---------------------------* +% Initialization: open the output file + +\def\TOCinit{% open and initialize Table of Contents file + \ifContents % is switch on? + \immediate\openout\TOCout=\jobname.toc % yes: then open file + \immediate\write\TOCout{\@comment Table of Contents for job `\jobname' + -- Created at \runtime}% + \immediate\write\TOCout{\@comment ====================================}% + \gdef\TOCinit{\relax}% % initialize only once! + \fi} + +% \TOCwrite lets you write to the Table of Contents file + +\def\TOCwrite#1{\TOCinit\ifContents\write\TOCout{#1}\fi} + +%---------------------------* +% \addTOC#1#2#3 adds a chapter, section, etc. to the table of contents, +% by writing the arguments to the .toc file in just the way \TOCitem +% wants to read them. The arguments are: +% #1 = 0 for chapter, 1 for section, 2 for subsection +% #2 = title text +% #3 = page number + +\def\addTOC#1#2#3{% add entry to Table of Contents + \ifContents % only if enabled + \TOCinit % make sure file is open + \write\TOCout{\string\TOCitem{#1}}% % type of entry + \edef\@line@{{{#2}}}% % expand title text + \write\TOCout\@line@ % write title text to file + \write\TOCout{{#3}\@comment}% % write page number to file + \fi} + +% \TOCcID and \TOCsID just give their names as a \string, so they +% can be written to the file. They are re-defined to their active +% forms later by \Contents. + +\def\TOCcID{\string\TOCcID}\def\TOCsID{\string\TOCsID}% + +%---------------------------* +% \TOCitem processes a Table of Contents entry. The arguments are the +% same as for \addTOC. + +\def\TOCitem#1#2#3{% process a Table of Contents item + \ifcase#1\bigskip % \bigskip for chapters, + \or\medskip % \medskip for sections + \or\smallskip\fi % \smallskip for subsections + \begingroup % + \advance\leftskip by #1\parindent % indent sub-items + \raggedright\tolerance=1700 % don't justify + \advance\rightskip by \TOCmargin % right margin comes in, but + \parfillskip=-\TOCmargin % page number at edge of page + \hangindent=1.41\parindent\hangafter=1 % hanging indentation + \noindent #2\hskip 0pt plus 10pt % the text + \leaddots % leaders to edge + \hbox to 2em{\hss\linkto{page.#3}{#3}}% % the page number + \vskip 0pt % end paragraph + \endgroup % + } + +% Leaders for dots: + +\def\leaddots{\leaders\hbox to 10pt{\hss.\hss}\hfill} + +%---------------------------* +% \Contents just reads and prints the table of contents file. +% \label is disabled since it is not really part of the title. + +\def\Contents{% print out table of contents + \immediate\closeout\TOCout % close the .toc file! + \immediate\openin\TOCout=\jobname.toc % now open it to read + \ifeof\TOCout\closein\TOCout % if EOF just close it + \emsg{> \string\Contents: no Table of Contents file \jobname.toc.}% + \else\immediate\closein\TOCout % else close it and read in + \begingroup % make this local + \def\label##1{}\relax % disable \label in .toc file + \catcode`@=11\catcode`"=12 % no fancy active characters + \catcode`(=12\catcode`)=12 % no active ( or ) + \catcode`[=12\catcode`]=12 % no active [ or ] + \def\TOCcID##1{\ifshowchaptID{##1} \fi}% % activate \TOCcID + \def\TOCsID##1{\ifshowsectID{##1} \fi}% % activate \TOCsID + \ContentsFormat % customize layout + \noindent % supress any \par indent + \input \jobname.toc \relax % read in the contents file + \endgroup % + \fi} + +\let\contents=\Contents % synonym (since 2.14) + +% \ContentsFormat is done before the table of contents and lets +% you customize the way the table is displayed. For example +% you could say \def\mib{}\def\n{} to turn off \mib and line breaks. + +\def\ContentsFormat{\relax} % default does nothing + +%---------------------------* +% Plain TeX compatability: you can use these macros with Plain TeX +% simply by saying '\input TXSconts.tex ', but to do so we need to +% make sure that the following macros from other parts of TeXsis are +% defined or faked: + +\ifx\emsg\undefined % if \emsg is undefined this is not TeXsis + \def\emsg#1{\immediate\write16{#1}}% simple version of \emsg + {\catcode`\%=11 \gdef\@comment{% }}% \@comment for writing '% ' to file + \def\ifshowchaptID#1\fi{#1}\def\ifshowsectID#1\fi{#1}% + \def\runtime{\the\year/\the\month/\the\day\space\the\time}% + \def\linkto#1#2{\relax}% +\fi + +%======================================================================* +% (OLD TEXSIS 2.13 -- to be removed!) +% \addsectioncont#1#2#3 adds section number #1, with title #2, and +% level #3 (0 for chapter, 1 for section, 2 for subsection) to the +% table of contents page. This is obsolete and replaced by \addTOC + +\def\addsectioncont#1#2#3{\@obsolete\addsectioncont\addTOC + \addTOC{#1}{#2}{#3}} + +%>>> EOF TXSconts.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSdcol.tex b/Master/texmf-dist/tex/texsis/base/TXSdcol.tex new file mode 100644 index 00000000000..4b2ddea0094 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSdcol.tex @@ -0,0 +1,707 @@ +%% file: TXSdcol.tex - Double Column Output - TeXsis version 2.18 +%% @(#) $Id: TXSdcol.tex,v 18.0 1999/07/07 21:20:41 myers Exp $ +%======================================================================* +% Double Column Output Routines: +% +% These macros let you create double column output, with balancing +% of partially filled columns, and with top, bottom, and footnote +% insertions in the columns or across the width of the page. +% +% To set up for double column output on a page of a given <width> and +% <height> and with columns of width <c-width> put the following at the +% beginning of your document: +% +% \hsize=<width> \vsize=<height> +% \SetDoubleColumns{<c-width>} +% +% Note that this re-defines TeX's \output routine. It does not actually +% put you in double column mode. To do that, say \doublecolumns. To +% switch back to single column output say \enddoublecolumns (or the +% synonym \singlecolumn). Partially filled columns will be balanced +% to the best of TeX's abilities. +% +% The usual insertions of TeX and TeXsis (\topinsert, \midinsert, +% \pageinsert, \heavyinsert and \bottominsert) put insertions into the +% current column. To force an insertion into a particular column, say +% \forceleft or \forceright INSIDE the insertion material. +% +% Wide insertions across the width of both columns can be made with +% \widetopinsert, \widepageinsert, or \widebottominsert. +% +% Long equations which need to span both columns should be enclosed +% between \longequation (before the first "$$") and \endlongequation +% (after trailing "$$"). Rules to guide the eye are put at the bottom +% of the left column above the equation and above the right column below +% the equation (as is done in Physical Review). You can change this. +% +% Footnotes created with \footnote or \vfootnote will be placed at the +% bottom of the current column. You can place a footnote across the +% bottom of both columns with \widefootnote or \widevfootnote. +% +% You can always force a skip to the next column with \newcolumn. +% To skip to a completely new page use \vfill\eject, as usual. +% +% In single column mode all of these macros either behave as their +% single-column counterparts or do nothing, as appropriate, so that +% your document comes out looking right in single column mode. +% +% WARNING! Formatting double column documents is inherently more +% difficult than regular typesetting. Here are some helpful hints: +% (1) Since double columns are narrow, the normal TeX spacing produces +% many overfull \hbox's. To avoid this, the interword skip \spaceskip is +% changed to \doublecolskip=.3333em plus .3333em minus .1em +% More uniform spacing can be obtained by changing \doublecolskip. +% (2) The value of \vbadness and \hbadness are doubled in double +% column mode, but you may want to increase them further to avoid +% complaints of overfull boxes. But don't increase these too much. +% (3) To balance columns it is essential to have some stretch in the +% column. Using \parskip=\smallskipamount helps, or try adding a little +% stretch to the \baselineskip with: \advance\baselineskip by 0pt plus 0.5pt +% +% This version of these macros is a complete re-write of the TeXsis +% double column macros previous to version 2.16. Some of the methods +% used here are adapted from The TeXBook, pg 417, and TUGboat, Vol 6, pg 29. +% See the file TXSdcol.doc for further documentation. +% +% @(#) Dependencies: none -- this file can be used as is with plain.tex, +% +%======================================================================* +% (C) copyright 1994, 1999 by Eric Myers and Frank Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the GNU General Public License (GPL). +% This software is made available WITHOUT ANY WARRANTY of any kind. +%======================================================================* +\message{- Double column format.} + +\catcode`@=11 % make @ a letter for this file + +\newdimen\colwidth % width of column +\newdimen\pagewidth % total width of page +\newdimen\pageheight % total height of page +\newdimen\rulewd \rulewd=.5pt % col. rule height +\newdimen\colmaxdepth \colmaxdepth=4pt % max. split depth + +\newdimen\@bigColHeight % height of both columns together +\newdimen\@saveSplitmax % to save \splitmaxdepth +\newdimen\@saveVsize % to save \vsize +\newskip\s@veskip % to save \spaceskip +\newskip\doublecolskip % new \spaceskip +\doublecolskip=.3333em plus .3333em minus .1em % with more stretch + +\newdimen\@leftpluscenter % how far to move over for rule + +\newbox\partialpage % save single column partial page here + +\newif\ifleftc@lumn % insert in left column? +\newif\if@wid % flag: this is a wide insert +\newif\if@bot % flag: this is a bottom insert + +\def\@LET{\global\let} % we'll use this a lot + +%--------------------------------------------------* +% Until you say \SetDoubleColumns, the instructions \doublecolumns, +% \enddoublecolumns, \leftcolrule and \rightcolrule and so on are +% simply \relax. This is so you can put these in a document which +% uses double columns, but then print it with one of the single +% column formats without them getting in the way, or vice versa. +% + +\colwidth=\hsize % default column width is \hsize + +\def\doublecolumns{\relax} \def\enddoublecolumns{\relax} +\def\leftcolrule{\relax} \def\rightcolrule{\relax} +\def\longequation{\relax} \def\endlongequation{\relax} +\def\wideequation{\relax} \def\endwideequation{\relax} +\def\newcolumn{\relax} \def\widetopinsert{\topinsert} +\def\widepageinsert{\pageinsert}\def\widebottominsert{\bottominsert} +\let\widefootnote=\footnote \let\widevfootnote=\vfootnote + +% Save Plain definitions of inserts so we can restore them later + +\let\@plaintopinsert=\topinsert \let\@plainmidinsert=\midinsert +\let\@plainbottominsert=\bottominsert\let\@plainheavyinsert=\heavyinsert +\let\@plainpageinsert=\pageinsert\let\@plainendinsert=\endinsert +\let\@plainvfootnote=\vfootnote \let\@plainfootnote=\footnote + + +% \SetDoubleColumns<column-width> sets things up for double column mode +% with columns of the given width, using the current settings for \vsize +% and \hsize. + +\def\SetDoubleColumns#1{% set up double column mode + \global\colwidth=#1\relax % column width + \pagewidth=\hsize \pageheight=\vsize % page sizes + \@bigColHeight=\vsize % total height = \vsize + \multiply \@bigColHeight by 2 % times 2 + \@leftpluscenter=\pagewidth % \@leftpluscenter = size + \advance \@leftpluscenter by -\colwidth % to right column + \dimen\NWins=\pageheight \dimen\NEins=\pageheight % maximum top insert size + \dimen\SWins=\pageheight \dimen\SEins=\pageheight % max bottom insert + \output={\@nepageout{\pagecontents}}% % new \output, single columns + \let\doublecolumns=\@doublecolumns % enable \doublecolumns + \let\rightcolrule=\@rightcolrule % enable rule + \let\leftcolrule=\@leftcolrule % + \let\longequation=\@longequation % enable wide eqns. + \let\wideEquation=\@longequation % +} + +% \setdoublecolumns<page-width><page-height><column-width> is included +% for backward compatability with TeXsis 2.15 and earlier. + +\def\setdoublecolumns#1#2#3{% + \emsg{> Please use \string\SetDoubleColumns\ instead}% + \global\hsize=#1\global\vsize=#2\relax + \SetDoubleColumns{#3}} + + +% \@doublecolumns starts double column output. It redefines \endinsert +% to handle double column insertions and \widetopinsert and \widepageinsert +% to do them. The inserts are made global so that they get to \output +% from inside groups. + +\def\@doublecolumns{% begin double column formatting + \begingroup % keep changes local + \def\enddoublecolumns{\@enddoublecolumns}% % enable \enddoublecolumns + \def\doublecolumns{\relax}% % in case twice + \def\endmode{\@enddoublecolumns}% % implicit end, if needed + \let\newcolumn=\@newcolumn % +% + \output={\global\setbox\partialpage=\vbox{% % save page so far, + \ifvoid\topins\else\unvbox\topins % including top inserts + \bigskip\fi % with some space between + \unvbox255 % main page + }}\eject % in \partialpage + \output={\@doublecolumnout}% % set to 2 column output +% + \@saveVsize=\vsize % save old \vsize + \hsize=\colwidth \vsize=\@bigColHeight % set width to column width, + \advance\vsize by -2\ht\partialpage % height to 2*page minus + \advance\vsize by -2\dp\partialpage % what's already there + \global\s@veskip=\spaceskip % save old interword glue + \global\spaceskip=\doublecolskip % stretch for small cols. + \global\displaywidth=\colwidth % equations have \colwidth + \global\hyphenpenalty=0 % hyphens are OK + \multiply\vbadness by 2 \multiply\hbadness by 2 % be more tolerant + \clubpenalty=150 % club line penalty + \widowpenalty=150 % widow line penalty +% Set macros to their double column dopplegangers + \@LET\topinsert=\@doubletopinsert + \@LET\bottominsert=\@doublebottominsert + \@LET\pageinsert=\@doublefullinsert + \@LET\midinsert=\@doublemidinsert + \@LET\heavyinsert=\@doubleheavyinsert + \@LET\endinsert=\@enddoubleinsert + \@LET\widetopinsert=\@widetopinsert + \@LET\widepageinsert=\@widepageinsert + \@LET\widebottominsert=\@widebottominsert + \@LET\vfootnote=\@doubleVfootnote % \footnote uses this one + \@LET\widefootnote=\@widefootnote + \@LET\widevfootnote=\@wideVfootnote +} + + +% \@enddoublecolumns ends double column output and balances the columns. +% This also allows for double width equations. The grouping insures that +% \endinsert is reset to the Plain version. + +\def\@enddoublecolumns{% end double column mode, go back to single column + \global\output={\@balancecolumns}\eject % balance & output so far + \global\output={\@nepageout{\pagecontents}}% % back to single column output + \global\vsize=\@saveVsize % reset vsize + \endgroup % end 2 col. group + \pagegoal=\vsize % reset overall goal size + \spaceskip=\s@veskip % reset interword glue... + \hyphenpenalty=50 \displaywidth=\hsize + \def\endmode{\relax}% % reset \endmode +% Reset macros to single column version: + \@LET\topinsert=\@plaintopinsert + \@LET\midinsert=\@plainmidinsert + \@LET\pageinsert=\@plainpageinsert + \@LET\endinsert=\@plainendinsert + \@LET\bottominsert=\@bottominsert + \@LET\heavyinsert=\@heavyinsert + \@LET\vfootnote=\@plainvfootnote + \@LET\widetopinsert=\@plaintopinsert + \@LET\widepageinsert=\@plainpageinsert + \@LET\widefootnote=\@plainfootnote + \@LET\widebottominsert=\@plainbottominsert + \@LET\widevfootnote=\@plainvfootnote +}% end of \@enddoublecolumns + +\def\begindoublecolumns{\doublecolumns} % synonym +\def\singlecolumn{\enddoublecolumns} % synonym + + +% How to skip to a new column. If we are in the left column, fill it +% up to force a skip to the right. If in the right column, skip to the +% next page. + +\def\@newcolumn{% skip to next column, left or right + \vskip\z@ % force vertical mode + \ifdim\pagetotal<\pageheight % left column? + \dimen@=\pageheight \advance\dimen@ by -\pagetotal % room left in left + \vskip\dimen@\goodbreak % fill up to end of left col + \else \vfill\eject \fi} % else skip to next page + + + + + +%--------------------------------------------------* +% BOTTOM INSERTIONS: +% +% Modifications to \output routines to add \bottominsert, which inserts +% the material at the bottom of the page, and \heavyinsert, which +% inserts the material at current position or at bottom of next page. +% Based on Plain TeX \output but with these modifications and additions: +% +% These are for single columns or wide insertions in double columns +% mode (for which see the other modifications to the output routines +% futher down). + + +\newinsert\botins +\skip\botins=\bigskipamount % space to skip before bottom insert +\count\botins=1000 % magnification factor (1 to 1) +\dimen\botins=\maxdimen % no limit per page + +\newif\if@bot % flags whether this is a bottom (not top) insert + + +% Define/redefine insertions to include \@botfalse or true + +\def\topinsert{\@midfalse\p@gefalse\@botfalse\@ins} +\def\pageinsert{\@midfalse\p@getrue\@botfalse\@ins} +\def\midinsert{\@midtrue\p@gefalse\@botfalse\@ins\topspace\bigskipamount} +\def\heavyinsert{\@midtrue\p@gefalse\@bottrue\@ins\topspace\bigskipamount} +\def\bottominsert{\@midfalse\p@gefalse\@bottrue\@ins\topspace\bigskipamount} + + +\def\endinsert{% end any insert (\topinsert, \midinsert, \bottominsert...) + \egroup % finish the \vbox + \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ + \advance\dimen@12\p@ \advance\dimen@\pagetotal + \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi + \if@mid \bigskip\box\z@\bigbreak % if mid dump it right here + \else\if@bot\@insert\botins \else\@insert\topins \fi + \fi + \endgroup} + +\def\@insert#1{% \insert a floating top/bottom/page (not mid) insert + \insert#1{\penalty100 % floating insertion + \splittopskip\z@skip % no skip if split + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@=\dp\z@ % full page insert? + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% % box to page height + \else \box\z@ \nobreak % top/bottom? Unbox 0 + \ifx #1\topins \ifp@ge\else\bigbreak\fi\fi % bigskip below every topinsert + \fi}} + + +% Modfied version of \pagecontents to include bottom inserts + +\def\pagecontents{% constructs page contents, including bottom inserts + \ifvoid\topins\else\unvbox\topins % top inserts, if any + \vskip\skip\topins\fi % and some space below + \dimen@=\dp\@cclv \unvbox\@cclv % main page contents from \box255 + \ifvoid\footins\else % footnote inserts, if present + \vskip\skip\footins % skip above + \footnoterule % put the rule above footnotes + \unvbox\footins\fi % then the footnotes + \ifvoid\botins\else\vskip\skip\botins % bottom inserts? space above + \unvbox\botins\fi % and then insert the text + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + + +%--------------------------------------------------* +% FLOATING INSERTIONS for double columns: + +% Since there can now be insertions at the top and bottom of both +% the left and right columns, they will be labeled by compass points. + +\newinsert\NWins \skip\NWins=0pt \newinsert\SWins \skip\SWins=0pt +\newinsert\NEins \skip\NEins=0pt \newinsert\SEins \skip\SEins=0pt + + +% There are also insertions for footnotes at the bottom of either column + +\newinsert\LFins \count\LFins=1000 \dimen\LFins=5cm \skip\LFins=\bigskipamount +\newinsert\RFins \count\RFins=1000 \dimen\RFins=5cm \skip\RFins=\bigskipamount + + +% \@enddoubleinsert is a modified version of \endinsert which +% decides whether to put an insertion in the left or the right column. +% \endinsert is let equal this in \doublecolumns mode. + +\def\@enddoubleinsert{% end an \insert in double column mode + \egroup % finish the \vbox\z@ +% +% Decide whether in left or right column: +% + \ifdim\pagetotal<\pageheight\leftc@lumntrue % left if page total < 1 col + \else \leftc@lumnfalse\fi % right otherwise + \ifx L\LRf@rce \leftc@lumntrue \fi % or forced left + \ifx R\LRf@rce \leftc@lumnfalse \fi % or forced right +% +% If midinsert requested, decide whether there is room... +% + \if@mid % midinsert selected + \dimen@=\ht\z@ \advance\dimen@ by \dp\z@ % dimen0 = height + depth + \advance\dimen@ by \baselineskip % + baselineskip + \advance\dimen@ by \pagetotal % + page total + \ifleftc@lumn % if in left column + \ifdim\dimen@>\pageheight % \pageheight = 1 col height + \@midfalse\p@gefalse\fi % top insert + \else % in right column + \ifdim\dimen@>\@bigColHeight % \@bigColHeight = 2 col height + \@midfalse\p@gefalse\fi\fi % top insert + \fi % end if@mid +% +% If room for midinsert, do it; otherwise make insert in same column. +% + \if@mid \bigskip\box\z@\bigbreak % fits: just do it + \else % otherwise: where to put it? + \if@wid % wide insert + \if@bot\let\@whichins=\botins % bottom? + \else\let\@whichins=\topins\fi % or top? + \else % not wide, so... + \if@bot % bottom? + \ifleftc@lumn\let\@whichins=\SWins % bottom left is SW + \else \let\@whichins=\SEins\fi % bottom right is SE + \else % top? + \ifleftc@lumn\let\@whichins=\NWins % top left is NW + \else \let\@whichins=\NEins\fi % top right is NE + \fi % + \fi % end of \if@wid + \C@lumnInsert\@whichins % do the insertion + \fi % end \if@mid + \endgroup % end the insertion group + \global\let\LRf@rce=X % reset forcing flag +} + + +% \C@lumnInsert{<insert#>} makes an appropriate insertion of the +% material into the named insert. It also inserts a \bigskip after or +% before the inserted box, just like the Plain \endinsert. Note that +% all the skips for these inserts are 0pt. + +\def\C@lumnInsert#1{% make an insertion into insertion #1 + \if@wid\count#1=2000\relax % wide inserts count x 2 + \else\count#1=1000\fi % otherwise x 1 + \insert#1{% % make the insertion + \penalty100 \splitmaxdepth=\maxdimen % +%% \topskip=\z@skip \splittopskip=\z@skip % + \floatingpenalty=\z@ % no penalty for floating + \if@wid\hsize=\pagewidth\fi % full width + \ifp@ge \dimen@=\dp\z@ % dimen0 = depth + \vbox to\pageheight{\unvbox\z@ \kern-\dimen@}% full page = \pageheight + \else % not full page + \ifx#1\botins\bigskip\fi % skip before bottom insert + \ifx#1\SWins\bigskip\fi % skip before bottom insert + \ifx#1\SEins\bigskip\fi % skip before bottom insert + \box\z@\nobreak % now add box0 + \ifx#1\topins\bigskip\fi % space below top insert + \ifx#1\NWins\bigskip\fi % space below top insert + \ifx#1\NEins\bigskip\fi % space below top insert + \fi % end of \ifp@ge + }% % end of insert +} + + +% \wideXXXinsert make floating insertions across both columns. They +% use the same insert as the normal (single column) insert of the same +% name because it goes in the same place. + +\def\@widetopinsert{% make a full width (wide) insertion at top of page + \@midfalse\p@gefalse\@widtrue\@botfalse + \@ins \hsize=\pagewidth} + +\def\@widepageinsert{% full width, full length (i.e. full page) insertion + \@midfalse\p@getrue\@widtrue\@botfalse % wide page insert + \@ins \hsize=\pagewidth} + +\def\@widebottominsert{% full width insertion at bottom of page + \@midfalse\p@gefalse\@widtrue\@bottrue % wide page insert + \@ins \hsize=\pagewidth} + + +% \@doubleXXXinsert is like \XXXinsert in Plain but also sets +% \@widfalse to prevent wide inserts. + +\def\@doubletopinsert{\@midfalse\p@gefalse\@botfalse\@widfalse\@ins} +\def\@doublemidinsert{\@midtrue\@botfalse\@widfalse\@ins} +\def\@doublefullinsert{\@midfalse\p@getrue\@botfalse\@widfalse\@ins} +\def\@doublebottominsert{\@midfalse\p@gefalse\@bottrue\@widfalse\@ins} +\def\@doubleheavyinsert{\@midtrue\p@gefalse\@bottrue\@widfalse\@ins} + + + +% \forceleft and \forceright force left and right insertions independent +% of the current column position. + +\def\forceleft{\global\let\LRf@rce=L} % force left insert +\def\forceright{\global\let\LRf@rce=R} % force right insert + +\let\LRf@rce=X % default is no force + +%--------------------------------------------------* +% FOOTNOTES: wide footnotes go across the bottom of both columns, +% while the others just go in the left or right column. The names +% begin with @ because these are only enabled in double column mode. + +\def\@widefootnote#1{% footnote across a double column page + \let\@sf=\empty % parameter #2 (the text) is read later + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + #1\@sf\@wideVfootnote{#1}} + +\def\@wideVfootnote#1{\insert\footins\bgroup + \hsize=\pagewidth % as wide as a page + \interlinepenalty=\interfootnotelinepenalty + \splittopskip=\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth=\dp\strutbox \floatingpenalty=\@MM + \leftskip=\z@skip \rightskip=\z@skip \spaceskip=\z@skip \xspaceskip=\z@skip + \textindent{#1}\footstrut\futurelet\next\fo@t} + +\def\@doubleVfootnote#1{% double column footnote in left or right column + \ifdim\pagetotal<\pageheight\relax % + \def\next{\@dblVfootnote\LFins{#1}}% + \else\def\next{\@dblVfootnote\RFins{#1}}% + \fi\next} + +\def\@dblVfootnote#1#2{% footnote insert in whichever column named by #1 + \insert#1\bgroup % begin insert + \interlinepenalty\interfootnotelinepenalty % + \splittopskip=\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth=\dp\strutbox \floatingpenalty\@MM % + \leftskip=\z@skip \rightskip=\z@skip % + \spaceskip=\z@skip \xspaceskip=\z@skip % + \textindent{#2}\footstrut\futurelet\next\fo@t} + +% +%--------------------------------------------------* +% OUTPUT ROUTINES for double columns: + + +% \@nepageout ships out a single page with running headlines +% and footlines added. Can be used with single or double columns, +% depending on what you put as the argument. + +\def\@nepageout#1{% % output one page + \shipout\vbox{% % output a box + \offinterlineskip % no interline spacing! + \wideheadline % make wide headline + \vbox to \pageheight{\boxmaxdepth=\maxdepth % + #1\relax}% % box containing #1 + \widefootline}% % make wide footline + \advancepageno}% % increment page number + + +% The following are like \makeheadline and \makefootline in Plain +% except that they use \hbox to\pagewidth instead of \line. + +\def\wideheadline{% \makeheadline for double column mode + \vbox to\z@{\vskip-22.5\p@ % skip up some + \ifx\undefined\headlineoffset\else\vskip-\headlineoffset\fi + \hbox to \pagewidth{\vbox to 8.5\p@{}\the\headline}% content in \headline + \vss}% + \nointerlineskip}% + +\def\widefootline{% \makefootline for double column mode + \baselineskip=24\p@ % space down + \ifx\undefined\footlineoffset\else\vskip\footlineoffset\fi + \hbox to \pagewidth{\the\footline}}% % content in \footline + + +% \@doublecolumnout splits the page into two columns, including any +% insertions which have accumulated. + +\def\@doublecolumnout{% output routine for double column mode +% +% get height of columns in \dimen@ +% + \dimen@=\pageheight % start with total space + \advance\dimen@ by -\ht\partialpage % subtract used height + \advance\dimen@ by -\dp\partialpage % ... and deptn + \ifvoid\topins\else % subtract top inserts + \advance\dimen@ by -\ht\topins % + \advance\dimen@ by -\dp\topins % + \advance\dimen@ by -\bigskipamount % including skip + \advance\dimen@ by -\splittopskip\fi % and extra at top of cols. + \ifvoid\botins\else % subtract any bottom inserts + \advance\dimen@ by -\ht\botins % + \advance\dimen@ by -\dp\botins % + \advance\dimen@ by -\bigskipamount\fi % including skip + \ifvoid\footins\else % subtract full width footnotes + \advance\dimen@ by -\ht\footins % + \advance\dimen@ by -\dp\footins % + \advance\dimen@ by -\skip\footins\fi % including skip + \@saveSplitmax=\splitmaxdepth \splitmaxdepth=\colmaxdepth + \splittopskip=\topskip +% +% construct left and right columns, with inserts inserted, and force +% them to the desired size \dimen@ +% + \ifdim\dimen@>\baselineskip % if room for at least 1 line + \MakeColumn{1}{255}{\dimen@}{\NWins}{\LFins}{\SWins}% + \MakeColumn{2}{255}{\dimen@}{\NEins}{\RFins}{\SEins}% + \setbox1=\vbox to \dimen@{\unvbox1}% % reset to same size + \setbox2=\vbox to \dimen@{\unvbox2}% % reset to same size + \else % ... else no room + \setbox1=\vbox{}\setbox2=\vbox{}% % so just empty columns + \fi % end if room for columns +% + \@nepageout{\@pagesofar\@pagebottom}% % ship out double column page + \global\vsize=\@bigColHeight % + \unvbox255 \penalty\outputpenalty % put remaining text back + \splitmaxdepth=\@saveSplitmax} % reset \splitmaxdepth + + +% \MakeColumn{outbox}{inbox}{size}{topinsert}{footinsert}{bottominsert} +% creates a column of text of the given length, with the topinsert added +% at the top, and the footnote and bottominsert added at the bottom +% of the column (in that order). The result is put in outbox, while +% what is left over remains in inbox. + +\def\MakeColumn#1#2#3#4#5#6{% make a column with top and bottom inserts +% +% start the column with the topinsert (#4) and the main text (#2) +% + \setbox3=\vbox{\ifvoid#4\else\unvbox#4\vskip\skip#4\fi \unvbox#2}% +% +% also collect column footnotes (#5) and bottom inserts (#6) +% + + \setbox4=\vbox{\ifvoid#5\else\vskip\skip#5\footnoterule\unvbox#5\fi% + \ifvoid#6\else\vskip\skip#6\unvbox#6\fi}% +% +% split off just right amount from top stuff to make output column +% + \dimen@ii=#3\relax + \advance\dimen@ii by -\ht4 \advance\dimen@ii by -\dp4\relax + \setbox#1=\vsplit3 to \dimen@ii +% +% put the top and bottom together; put remainder from split back in input +% + \setbox#1=\vbox{\unvbox#1\unvbox4}% + \setbox#2=\vbox{\unvbox3}% +} + + +% \@pagesofar adds double column material to the page. The left column +% is in box 1, and the right column is in box 2 + +\def\@pagesofar{% add stuff to top of page collected so far + \ifvoid\topins\else\unvbox\topins % wide top inserts, if any? + \vskip\skip\topins\fi % some space below them + \unvbox\partialpage % partial page from past? + \wd1=\hsize \wd2=\hsize % set column sizes + \hbox to \pagewidth{\box1\hfill\box2}}% % combine 2 column boxes + + +% \@pagebottom puts the (wide) bottom and footnote inserts in place, +% if there are any. + +\def\@pagebottom{% add inserts to bottom of a page + \ifvoid\botins\else\bigskip\unvbox\botins\fi % wide bottom inserts, if any + \ifvoid\footins\else % wide footnotes, if any + \vskip\skip\footins\footnoterule % skip and rule above them + \unvbox\footins\fi} % then the footnotes + + +% \@balancecolumns is the output routine for balancing 2 columns. +% (Based loosely on \balancecolumns from The TeXbook, pg 417) + +\def\@balancecolumns{% balance partial double columns page +% +% get target column height from sum of text and all inserts +% + \setbox255=\vbox{\unvbox255}% reset glue + \dimen@=\ht255 \advance\dimen@ by \dp255 % main text + \@addsize\dimen@\NWins \@addsize\dimen@\NEins % top inserts + \@addsize\dimen@\LFins \@addsize\dimen@\RFins % column footnotes + \@addsize\dimen@\SWins \@addsize\dimen@\SEins % bottom inserts + \divide \dimen@ by 2 % and divide by 2 + \@saveSplitmax=\splitmaxdepth % + \splitmaxdepth=\colmaxdepth % + \splittopskip=\topskip % top skip for splits +% +% Loop over possible splits of text into left and right columns. +% Always use copies of boxes to avoid destroying contents. +% + \advance\dimen@ by -.5\baselineskip % and a smidgeon LESS + {\vbadness=20000 \loop % suppress errors + \setbox0=\copy255 % + \setbox5=\copy\NWins \setbox6=\copy\LFins\setbox7=\copy\SWins + \setbox8=\copy\NEins \setbox9=\copy\RFins \setbox10=\copy\SEins + \MakeColumn{1}{0}{\dimen@}{5}{6}{7}% % first column fixed height + \MakeColumn{2}{0}{\pageheight}{8}{9}{10}% % second big enuf for all + \ifdim\ht2>\ht1 + \global\advance\dimen@ by 1pt + \repeat}% % increment and try again +% +% End loop over possible splits. +% + \MakeColumn{1}{255}{\dimen@}{\NWins}{\LFins}{\SWins}% + \MakeColumn{2}{255}{\pageheight}{\NEins}{\RFins}{\SEins}% + \dimen@=\ht1 \ifdim\ht2>\ht1 \dimen@=\ht2 \fi % larger of two + \setbox1=\vbox to \dimen@{\unvbox1}% % reset to same size + \setbox2=\vbox to \dimen@{\unvbox2}% % reset to same size + \splitmaxdepth=\@saveSplitmax % restore \splitmaxdepth + \output={\@balancingerror}% % prepare for error + \@pagesofar} % put columns on page + + +\def\@addsize#1#2{% add size of box/insert #2 to counter #1 + \ifvoid#2\else\advance#1 by \skip#2\relax % unless void, add skip, + \advance#1 by \ht#2 \advance#1 by \dp#2\relax % and height and depth + \fi} + + +% If the balanced columns fill the page then \output will be called +% again, and this error message will be displayed. + +\newhelp\@balncErrormsg{% +@balancecolumns: I couldn't figure out how to balance the^^M +two columns. Maybe you can re-arange some text to make ^^M +the job easier. Try typing i\string\vfill to see the page anyway.} + +\def\@balancingerror{% error, columns not balanced before page finished + \newlinechar=`\^^M % ^^M is line break + \errhelp=\@balncErrormsg % longer help message + \errmessage{Page cannot be balanced}% % error message + \@nepageout{\unvbox255}}% % do something anyway + + +%--------------------------------------------------* +% \@leftcolrule and \@rightcolrule put rules across left and right +% columns for spanned equations + +\def\@leftcolrule{% Rule across bottom of left column + \vskip 2pt\nointerlineskip % some whitespace first + \hbox to \pagewidth{% % left column + \vbox to 6pt{\vfil \hrule width\colwidth height\rulewd}% + \hbox{\vrule height 6pt width\rulewd}\hfill}% + \smallskip\nobreak} + +\def\@rightcolrule{% rule across top of a right column after balancing + \vskip\baselineskip\nointerlineskip + \hbox to \pagewidth{\hfill % stretch across to right column + \hbox{\vrule height 6pt width\rulewd}% + \vbox to 6pt{\hrule width\colwidth height\rulewd \vfil}}% + \vskip 2pt} + +\def\@longequation{% + \enddoublecolumns % balance what we have + \@leftcolrule % rule below to separage + \def\endlongequation{\@endlongequation}} % enable + +\def\@endlongequation{% + \@rightcolrule % with the rule at top of right column + \doublecolumns} % then back to double column mode + + +\def\longequation{\relax} % default for single column +\def\endlongequation{\relax} % does nothing + + +%>>> EOF TXSdcol.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSenvmt.tex b/Master/texmf-dist/tex/texsis/base/TXSenvmt.tex new file mode 100644 index 00000000000..ad728154000 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSenvmt.tex @@ -0,0 +1,687 @@ +%% file: TXSenvmt.tex - Special Text Environments - TeXsis version 2.18 +%% @(#) $Id: TXSenvmt.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%=======================================================================* +% +% These macros provide a variety of simple enviroments for arranging +% text in special ways. They are listed here and described in more +% detail below. Generally the syntax is \NAME... \endNAME. +% +% The following "flush environments" arrange text in special ways: +% +% \center Center each line. +% \flushleft Make each line flush left. +% \flushright Make each line flush right. +% \raggedcenter Make each line as long as possible and then +% center it. +% +% Use these in vertical mode. For the horizontal mode equivalants +% are: \hcenter, \hflushleft, \hflushright +% +% The following are for making various sorts of lists: +% +% \itemize List of items, with a bullet in front of each. +% Use \itm to begin each item. +% \enumerate Makes a list of items, each of them numbered. +% Use \itm to begin each item. +% \description List of items and descriptions, with the form: +% item1 text for item1, which may take +% more than one line +% item2 text for item2 +% ... +% Use \itm{item1}, etc... (see below). +% +% The following display theorems and proofs in quasi-SIAM format +% with automatic numbering: +% +% \theorem +% \lemma +% \definition +% \proof +% +% The following are designed for typing computer code, TeX examples , +% and similar material: +% +% \Listing Prints text in \tt type, with \obeylines, +% \obeyspaces, as appropriate for computer code +% listings. +% \ListCodeFile{filename} to list source code from a file. +% \TeXquoteon Makes | a TeX quote: everything in | ... | is +% printed verbatim in \tt type. +% \TeXexample Prints a TeX example verbatim in \tt type, with | +% being the escape character and |endTeXexample +% ending the enviroment. Can be used for examples +% continuing over more than one page. +% \ttverbatim Makes all characters ordinary and begins a group +% using \tt type. +% \begintt Example macro taken from The TeXbook. +% \beginlines Example macro taken from The TeXbook. +% +% +% Source: adapted from TechRpt's TechEnv and the TeXbook +% +% This file is a part of TeXsis. +% (C) copyright 1991, 1997 by Eric Myers and Frank Paige. +%========================================================================* +\message{Environments.} +\catcode`@=11 % make @ a letter for now +\chardef\other=12 + +%==================================================* +% CENTERING ENVIRONMENTS: +% \center, \flushleft, \flushright, \raggedcenter +% Note: these are all \obeylines environments + +\def\center{% begin centering environment + \flushenv % general setup + \advance\leftskip \z@ plus 1fil % add hfil glue on each + \advance\rightskip \z@ plus 1fil % side + \obeylines\@eatpar} % obey line ends + +\def\flushright{% begin flush right environment + \flushenv % general setup + \advance\leftskip \z@ plus 1fil % hfil on left + \obeylines\@eatpar} % obey line ends + +\def\flushleft{% begin flush left environment + \flushenv % general setup + \advance\rightskip \z@ plus 1fil % hfil on right + \obeylines\@eatpar} % obey line ends + + +\def\flushenv{% common startup for all flush/center environments + \vskip \z@ % force vertical mode + \bgroup % begin grouping + \def\flushhmode{F}% % flag: not hmode + \parindent=\z@ \parfillskip=\z@} % + +\def\endcenter{\endflushenv} +\def\endflushleft{\endflushenv} +\def\endflushright{\endflushenv} + +% \@eatpar gets rid of any \par that follows. We have to use \futurelet +% to avoid problems when what follows is a \def or somesuch. + +\def\@eatpar{\futurelet\next\@testpar} +\def\@testpar{\ifx\next\par\let\@next=\@@eatpar\else\let\@next=\relax\fi\@next} +\long\def\@@eatpar#1{\relax} + +%---------------------------------* +% \raggedcenter centers ragged lines, e.g. for titles. Each line will +% be as long as possible, centered. Line breaks in the manuscript file are +% ignored. + + +\def\raggedcenter{% center lines as long as they can be + \flushenv % do common stuff + \advance\leftskip\z@ plus4em % add stretch to sides + \advance\rightskip\z@ plus 4em % add stretch to sides + \spaceskip=.3333em \xspaceskip=.5em % + \pretolerance=9999 \tolerance=9999 % + \hyphenpenalty=9999 \exhyphenpenalty=9999 % no hyphens! + \@eatpar} % + +\def\endraggedcenter{\endflushenv} % ends like all flushenv's + +%---------------------------------* +% \hcenter, \hflushleft, \hflushright are like the things above, +% but are for use in horizontal mode. They put the results in a box of +% size zero. This is no longer automatic in \center and its variations, +% to avoid confusion. +% Notes: \vtop makes the TOPS of the items line up; \vbox would make the +% bottoms (actually, the baselines) line up. + + +\def\hcenter{\hflushenv % + \advance\leftskip \z@ plus 1fil % + \advance\rightskip \z@ plus 1fil % + \obeylines\@eatpar} % + +\def\hflushright{\hflushenv % + \advance\leftskip \z@ plus 1fil % + \obeylines\@eatpar} % + +\def\hflushleft{\hflushenv % + \advance\rightskip \z@ plus 1fil % + \obeylines\@eatpar} % + +\def\hflushenv{% common startup for all hflush/hcenter environments: + \def\par{\endgraf\indent}% % for use in hmode + \hbox to \z@ \bgroup\hss\vtop % start a box of size zero + \flushenv\def\flushhmode{T}} % + +\def\endflushenv{% common end to all flush/center environments + \ifhmode\endgraf\fi % if hmode, end \par + \if T\flushhmode \egroup\hss\fi % close group and box, or + \egroup} % end the grouping + +\def\flushhmode{U} +\def\endhcenter{\endflushenv} +\def\endhflushleft{\endflushenv} +\def\endhflushright{\endflushenv} + +%==================================================* +% LIST ENVIRONMENTS: +% +% All 'list' environments are surrounded by a certain amount of skip. +% These skips are: \EnvTopskip, \EnvBottomskip, \EnvLeftskip, \EnvRightskip +% These are set here, but you may change them if you like. + +\newskip\EnvTopskip \EnvTopskip=\medskipamount % skip before +\newskip\EnvBottomskip \EnvBottomskip=\medskipamount % skip after +\newskip\EnvLeftskip \EnvLeftskip=2\parindent % left indent +\newskip\EnvRightskip \EnvRightskip=\parindent % right margin in too +\newskip\EnvDelt@skip \EnvDelt@skip=0pt % nested skip amount +\newcount\@envDepth \@envDepth=\z@ % depth of environments + + +% \beginEnv{<name>} does common processing for starting a +% list environment. \endEnv{<name>} does common end procesing, +% and checks the name to make sure that the environments balance. + +\def\beginEnv#1{% begin a ``list'' environment + \begingroup % environment is inside a group + \def\@envname{#1}% % save envmt name, to check at end + \ifvmode\def\@isVmode{T}% % remember existing V/H mode + \else\def\@isVmode{F}\vskip 0pt\fi % hmode: force vertical mode +% + \ifnum\@envDepth=\@ne\parindent=\z@\fi % 1st envmt? no parindent + \advance\@envDepth by \@ne % increment level by one + \EnvDelt@skip=\baselineskip % \EnvDelt@skip is \baselineskip + \advance\EnvDelt@skip by-\normalbaselineskip % minus \normalbaselineskip + \@setenvmargins\EnvLeftskip\EnvRightskip % now adjust margins. + \setenvskip{\EnvTopskip}% % get appropriate topskip + \vskip\skip@\penalty-500 % and do it (good place to break) + } + + +\def\endEnv#1{% end a ``list'' environment + \ifnum\@envDepth<1 % is there nothing open? + \emsg{> Tried to close ``#1'' environment, but no environment open!}% + \begingroup % \endgroup below would produce error + \else % No: there was an environment open + \def\test{#1}% % was right thing closed? + \ifx\test\@envname\else % check that the names match + \emsg{> Miss-matched environments!}% + \emsg{> Should be closing ``\@envname'' instead of ``\test''}% + \fi + \fi +% + \vskip 0pt % force vmode, finish any paragraph + \setenvskip\EnvBottomskip % and skip a bottomskip which is + \vskip\skip@\penalty-500 % appropriate here (good breakpoint) + \xdef\@envtemp{\@isVmode}% % save \@isVmode for outside group + \endgroup % end grouping of environment + \if F\@envtemp\vskip-\parskip\par\noindent\fi % no indent if didn't start in vmode + } + + +% \setenvskip chooses a skip amount based on the current \@envDepth, +% and puts it into \skip@, which is a temporary skip register. + +\def\setenvskip#1{\skip@=#1 \divide\skip@ by \@envDepth} + + +% \@setenvmargins{<left amount>}{<right amount>} adjusts the area of +% the page to be used by changing \rightskip, \leftskip, and the display +% sizes. Values given should be skips. + +\def\@setenvmargins#1#2{% set left and right margins + \advance \leftskip by #1 \advance \displaywidth by -#1 % + \advance \rightskip by #2 \advance \displaywidth by -#2 % + \advance \displayindent by #1} % + + +%------------------------------* +% \itemize +% +% \itemize puts a bullet (or whatever you define as \itemmark) +% in front of each item. Use \itm to begin a new item. + +\def\itemize{\beginEnv{itemize}% itemized list of things + \let\itm=\itemizeitem % define \itm +%% \if F\@isVmode + \vskip-\parskip +%% \fi % if h-mode kill skip from first \itm + } + +\def\itemizeitem{% \itm for \itemize + \par\noindent % start new paragraph + \hbox to 0pt{\hss\itemmark\space}}% % put marker to left + +\def\enditemize{\endEnv{itemize}}% % terminate + +\def\itemmark{$\bullet$} % default marker for \itemize + +%------------------------------* +% \enumerate +% +% \enumerate makes a list of items, each of them numbered. You can +% nest \enumerate within \enumerate. Begin each item with \itm. +% Note the extensive use of local registers (only one \enumcnt is allocated; +% TeX takes care of which one is currently needed. \enumlead stores the +% rest of the values only to print out item labels.) Note that \label +% can be used to get the current value of an item label. +% Usage: +% \enumerate % to start a list +% \itm <text> % for each numbered paragraph +% ... +% \endenumerate % at end the list +% + +\newcount\enumDepth \enumDepth=\z@ +\newcount\enumcnt + +\def\enumerate{\beginEnv{enumerate}% + \global\advance\enumDepth by \@ne % start another level of nesting + \setenumlead % set the leader + \enumcnt=\z@ % reset counter to zero + \let\itm=\enumerateitem % define \itm + \if F\@isVmode\vskip-\parskip\fi % if h-mode kill skip from first \itm + } + +\def\enumerateitem{% \itm for \enumerate + \par\noindent + \advance\enumcnt by \@ne % + \edef\lab@l{\enumlead \enumcur}% % for using \label + \hbox to \z@{\hss \lab@l \enummark % number and punctuation + \hskip .5em\relax}% % and a skip + \ignorespaces} % + +\def\endenumerate{% % + \global\advance\enumDepth by -\@ne % pop out one level + \endEnv{enumerate}}% % end the environment + +%----------* +% DIFFERENT STYLES OF EUMARATION: \enumpoints, \enumoutline, +% \enumNumOutline, etc... Design your own! +% +% The basic idea: When \itm is invoked the item label is constructed +% as ``\enumlead\enumcur\enummark'' where \enumlead is the leading +% part of the label (which will be the same for all item in this level +% of the list), \enumcur is the appropriately formated value of \enumcnt, +% the item counter, and \enummark is the trailing punctuation (usually +% a period, but could be a parenthesis). +% +% To define an enumeration style you must define \setnumlead, which +% will in turn define \enumlead when a list is begun by \enumerate. +% You must also define \enumcur to put out the appropriate item label. +% Since lists can be contained within lists we use \enumDepth to keep track of +% how deep we are in a sub-list. +% +% The styles \enumpoints, \enumoutline and \enumNumOutline should be +% considered as useful examples. Be sure to call them BEFORE you say +% \enumerate. + + +% \enumpoints just numbers the items like so: "ii.jj.kk...." +% Note the use of \edef in \setnumlead to get the CURRENT value +% of \enumcur, whereas the value in the definition of \enumcur +% is the value used later, when \itm is used. + +\def\enumPoints{% enumerate by numerical points + \def\setenumlead{\ifnum\enumDepth>1 % a list inside a list? + \edef\enumlead{\enumlead\enumcur.}% % yes: lead is previous label + \else\def\enumlead{}\fi}% % no: just number at first + \def\enumcur{\number\enumcnt}% % + } +\def\enumpoints{\enumPoints} % backward compatability (2.13) + + +% \enumOutline lists the items in an outline form, using +% upper case roman numerals, upper case letters, lower case roman +% numerals, lower case letters, arabic numbers, and finally bullets. +% Note the use of \ifcase\enumDepth, and the macros \letterN and +% \LetterN defined below. + +\def\enumOutline{% enumerate a list in outline form, Roman Caps. first + \def\setenumlead{\def\enumlead{}}% % no leading part of label + \def\enumcur{\ifcase\enumDepth % For given level choose... + \or\uppercase{\XA\romannumeral\number\enumcnt}% 1) UC Roman numeral + \or\LetterN{\the\enumcnt}% % 2) UC letter + \or\XA\romannumeral\number\enumcnt % 3) LC Roman numeral + \or\letterN{\the\enumcnt}% % 4) LC letter + \or{\the\enumcnt}% % 5) arabic number + \else $\bullet$\space\fi}% % or a bullet + } +\def\enumoutline{\enumOutline} % backward compatability (2.13) + + +% \enumNumOutline sets up an outline starting from arabic +% numbers numbers rather than Roman caps. + +\def\enumNumOutline{% enumerate a list in outline form, numbers first + \def\setenumlead{\def\enumlead{}}% % no leading part of a label. + \def\enumcur{\ifcase\enumDepth % for a given level choose... + \or{\XA\number\enumcnt}% % 1) arabic number + \or\letterN{\the\enumcnt}% % 2) LC letter + \or{\XA\romannumeral\number\enumcnt}% % 3) LC roman numeral + \else $\bullet$\space\fi}% % or a bullet + } +\def\enumnumoutline{\enumNumOutline} % backward compatability (2.13) + + +% \LetterN{n} gives the nth letter in the uppercase alphabet +% \letterN{n} gives the nth letter in the lowercase alphabet + +\def\LetterN#1{\count@=#1 \advance\count@ 64 \XA\char\count@} +\def\letterN#1{\count@=#1 \advance\count@ 96 \XA\char\count@} + + +% TeXsis Defaults: + +\def\enummark{.} % default punctuation +\def\enumlead{} % start with nothing in label +\enumpoints % default style + +%------------------------------* +% \description gives a list of items labeled by text, not numbers. +% +% foo1 text, which may take +% more than one line +% foo2 more text +% +% Usage: +% +% \description{amount to indent as \hbox contents} +% \itm{<name1>} text1 +% \itm{<name2>} text2 +% ... +% \enddescription +% where <name...> is the text to label the item. <name> may take more than +% one line. +% Typically, the argument to \description is the longest single line +% <name>. You can also use \hskip if you want a particular distance. +% NOTE that \parindent may be 0 inside an environment, so \hskip\parindent +% probably won't do what you want. +% +% If the label text comes out wider than the indent space allowed +% the text will be broken into several lines. Saying \singlelinetrue +% will instead put the label text on a line by itself above the +% item. \singlelinefalse is the default. + +\newbox\@desbox % used to determine how far to shift text +\newbox\@desline % box for description line(s) +\newdimen\@glodeswd % used to get \wd\@desbox inside a group +\newcount\@deslines % used to count number of lines in description +\newif\ifsingleline \singlelinefalse % default is to break long labels + + +\def\description#1{\beginEnv{description}% ``description'' list environment + \setbox\@desbox=\hbox{#1}% % get template in a box + \@glodeswd=\wd\@desbox % get width of that box + \@setenvmargins{\@glodeswd}{0pt}% % indent left margin + \let\itm=\descriptionitem % define \itm + \if F\@isVmode\vskip-\parskip\fi % if h-mode kill \parskip from \itm + }% % end of \description + + +\def\descriptionitem#1{% definition of \itm for \description + \goodbreak\noindent % end old item, start next + \setbox\@desline=\vtop\bgroup % get label text in a box + \hfuzz=100cm\hsize=\@glodeswd % suppress overfull box msg + \rightskip=\z@ \leftskip=\z@ % no margins in this box + \raggedright % ragged right margin in box + \noindent{#1}\par % text of the label + \global\@deslines=\prevgraf % get line count + \egroup % end of \setbox +% + \ifsingleline % long labels on their own line? + \ifnum\@deslines>1 % Yes: are there several lines? + \@deslineitm{#1}% % Yes: put them on one line + \else % one line might ll be too long + \setbox\@desline=\hbox{#1}% % re-set in a box to get width + \ifdim \wd\@desline>\wd\@desbox % is it too wide? + \@deslineitm{#1}% % Yes: set it on lone line + \else\@desitm\fi % else dump the label + \fi % + \else % else \singlelinefalse + \@desitm % ...so just dump the label + \fi % end \ifsingleline + \ignorespaces} + +\def\@desitm{% print \description item + \noindent + \hbox to \z@{\hskip-\@glodeswd % go back for indent + \hbox to \@glodeswd{\vtop to \z@{\box\@desline\vss}% unbox it + \hss}\hss}} % some glue for a fit + +\def\@deslineitm#1{% \description item on a separate line + \hbox{\hskip-\@glodeswd {#1}\hss}% % Yes: label all on one line + \vskip-\parskip\nobreak\noindent % then begin entry on next line + } + +\def\enddescription{\ifhmode\par\fi % finish any existing \itm + \@setenvmargins{-\wd\@desbox}{0pt}% % doing \@setenvmargins + \endEnv{description}} + +%------------------------------* +% \example is a simple way to just indent some text. It's like +% the ``list'' environments but all it does is indent on the left +% and the right and go to singlespacing. Since this is often useful for +% block quotes, \blockquote is a synonym. + + +\def\example{\beginEnv{example}% + \parskip=\z@ \parindent=\z@ % set \par indentation to zero + \baselineskip=\normalbaselineskip % singlespaced + } % + +\def\endexample{\endEnv{example}% % end environment + \noindent}% % undo par + +\let\blockquote=\example % synonym +\let\endblockquote=\endexample % synonym + +%------------------------------* +% \Listing is an environment for computer code listings. It's +% set in \tt type, with \obeylines and \obeyspaces and no justification. +% { and } are just characters, so to get grouping use \bgroup ... \egroup +% Indentation is controled as in the ``list'' environments. + +\def\Listing{% environment for listing computer code verbatim in \tt + \beginEnv{Listing}% % + \vskip\EnvDelt@skip % do extra skip + \baselineskip=\normalbaselineskip % singlespaced + \parskip=\z@ \parindent=\z@ % set \par indentation to zero + \def\\##1{\char92##1}% % \ for macro names + \catcode`\{=\other \catcode`\}=\other % { and } just characters + \catcode`\(=\other \catcode`\)=\other % ( and ) just characters + \catcode`\"=\other \catcode`\|=\other % " and | just characters + \catcode`\%=\other \catcode`\&=\other % so % and & are characters + \catcode`\-=\other \catcode`\==\other % so - and = are characters + \catcode`\$=\other \catcode`\#=\other % so $ and # are characters + \catcode`\_=\other \catcode`\^=\other % so _ and ^ are characters + \catcode`\~=\other % ~ is not active tie! + \obeylines % obey line endings, + \tt\Listingtabs % spaces and tabs + \everyListing} % user customization + +\def\endListing{\endEnv{Listing}} % end \Listing + +% Use \everyListing to customize your \Listing. + +\def\everyListing{\relax} + +% Use \ListCodeFile{<filename>} to directly include a source file +% in the document. Use this INSTEAD of \Listing, not after it. +% Nothing in this file is ``active,'' so you cannot have TeX commands +% in the file. Example: \ListCodeFile{hello.c} + +\def\ListCodeFile#1{% print the named file verbatim using \Listing + \Listing % invoke \Listing and read in file + \rightskip=\z@ plus 5cm % room to stretch off the side + \catcode`\\=\other % \ is not active! + \input #1\relax % read in source file + \endListing} + +{\catcode`\^^I=\active\catcode`\ =\active% no spaces in any of this! +\gdef\Listingtabs{\catcode`\^^I=\active\let^^I\@listingtab% +\catcode`\ =\active\let \@listingspace}% +}%\global\let^^I\@listingtab}% + +\def\@listingspace{\hskip 0.5em\relax} % \tt space is 0.5em +\def\@listingtab{\hskip 4em\relax} % eight spaces per tab + +%------------------------------* +% \TeXexample is an environment for TeX examples. The only special +% characters are <space>, which does the usual thing, and "|", which is the +% escape character. To use a macro in this environment, begin the name with +% "|" instead of "\". In particular, |char`|| gives a |. The enviroment is +% ended with |endTeXexample, NOT \endTeXexample: +% +% \TeXexample +% <TeX stuff> +% |endTeXexample +% +% <TeX stuff> is printed in \tt type indented by \EnvLeftskip using +% \obeylines and \obeyspaces and single spaced. If necessary, it will +% be split across pages. + +\def\TeXexample{\beginEnv{TeXexample}% % TeX examples + \vskip\EnvDelt@skip % add some extra skip above + \parskip=\z@ \parindent=\z@ % set \par indentation to zero + \baselineskip=\normalbaselineskip % singlespaced + \def\par{\leavevmode\endgraf}% % \par also gives \leavevmode + \obeylines % respect line endings + \catcode`|=\z@ % make | the escape character + \ttverbatim % begin \tt type in a group + \@eatpar}% % eat initial \par + +\def\endTeXexample{% % end \TeXexample + \vskip 0pt % + \endgroup % end \ttverbatim + \endEnv{TeXexample}} % end the environment + +%------------------------------* +% \ttverbatim makes everything except "|" into \other, then switches +% into \tt type. "|" is made active by \TeXquoteon and is made the escape +% character by \TeXexample and \begintt. + +\def\ttverbatim{\begingroup % keep this in a group + \catcode`\(=\other \catcode`\)=\other % make everything "\other" + \catcode`\"=\other \catcode`\[=\other + \catcode`\]=\other \catcode`\~=\other + \let\do=\uncatcode \dospecials + \obeyspaces\obeylines % obey line ends and spaces + \def\n{\vskip\baselineskip}% % |n gives a new line + \tt} % switch to typewriter type + +\def\uncatcode#1{\catcode`#1=\other} % make a character "\other" + +{\obeyspaces\gdef {\ }} % space gives "\ ", not \space + +%-----------------------------------* +% \TeXquoteon makes "|" active and a TeX quote. Anything enclosed +% in | ... | is printed verbatim in \tt type; ^^M's are ignored. +% \TeXquoteoff restores the normal |. + +\def\TeXquoteon{\catcode`\|=\active} % turn on "TeX quotes" +\let\TeXquoteson=\TeXquoteon % synonym +\def\TeXquoteoff{\catcode`\|=\other} % turn off "TeX quotes" +\let\TeXquotesoff=\TeXquoteoff % synonym + +% Note: to preserve comments when mtexsis is built use %% in \obeylines envmt. + +{\TeXquoteon\obeylines %% active "|" calls \ttverbatim + \gdef|{\ifmmode\vert\else %% | is \vert in math mode, but + \ttverbatim\spaceskip=\ttglue %% to use \tt type + \let^^M=\ \relax %% and to ignore ^^M + \let|=\endgroup\fi}% %% next | turns it off +} + +% \ttvert gives a vertical bar in \tt type. Use anywhere. +\def\ttvert{\hbox{\tt\char`\|}} + +%-----------------------------------* +% \begintt is taken without modification from The TeXbook, p. 421. +% Like \TeXexample, it prints a TeX example in \tt type, but it puts the +% example in a \vbox so that it cannot be split; it is ended by \endtt, +% not |endtt: +% +% \begintt +% <TeX stuff> +% \endtt + +\outer\def\begintt{$$\let\par=\endgraf \ttverbatim \parskip=0pt + \catcode`\|=0 \rightskip=-5pc \ttfinish} + +{\catcode`\|=0 |catcode`|\=\other %% | is temporary escape character + |obeylines %% end of line is active + |gdef|ttfinish#1^^M#2\endtt{#1|vbox{#2}|endgroup$$}% +} + +% \beginlines is also taken without modification from The TeXbook, +% p. 421 and is also used for TeX examples. Each line of the example +% must be enclosed in TeX quotes, | ... |. Spacing can be inserted using +% \smallbreak and similar commands. The syntax is +% \TeXquoteon +% \beginlines +% | <TeX stuff> | +% ... +% \endlines + +\def\beginlines{\par\begingroup\nobreak\medskip\parindent=0pt + \hrule\kern1pt\nobreak \obeylines \everypar{\strut}} + +\def\endlines{\kern1pt\hrule\endgroup\medbreak\noindent} + +%==================================================* +% \theorem, \lemma, \definition, \proof, etc.. +% +% Quasi-SIAM format. Theorem and Lemma have slanted typeface statements; +% Definition does not. Since Theorem and Lemma (and Corollary...) have +% a similar structure, we define a general \beginproclaim and \endproclaim +% (a'la PLAIN). +% +% \beginproclaim{title}{countername}{font for text}{prefix}{tag} +% does the general formatting, where the countername (excludes the \@ +% beginning the name) will be advanced. + +\def\beginproclaim#1#2#3#4#5{\medbreak\vskip-\parskip % space down + \global\XA\advance\csname #2\endcsname by \@ne % advance counter + \edef\lab@l{\@chaptID\@sectID % get header plus + \number\csname #2\endcsname}% % counter number + \tag{#4#5}{\lab@l}% % tag it + \noindent{\bf #1 \lab@l.\space}% % print number + \begingroup #3} % begin group + +\def\endproclaim{% + \par\endgroup\ifdim\lastskip<\medskipamount % end group and + \removelastskip\penalty55\medskip\fi} % fix spacing + +% \theorem{tag} defines a theorem. \Theorem{tag} refers to it in the +% text as Theorem~number. +\newcount\theoremnum \theoremnum=\z@ +\def\theorem#1{\beginproclaim{Theorem}{theoremnum}{\sl}{Thm.}{#1}} +\let\endtheorem=\endproclaim +\def\Theorem#1{Theorem~\use{Thm.#1}} + +% The same for lemma: +\newcount\lemmanum \lemmanum=\z@ +\def\lemma#1{\beginproclaim{Lemma}{lemmanum}{\sl}{Lem.}{#1}} +\let\endlemma=\endproclaim +\def\Lemma#1{Lemma~\use{Lem.#1}} + +% The same for corollary: +\newcount\corollarynum \corollarynum=\z@ +\def\corollary#1{\beginproclaim{Corollary}{corollarynum}{\sl}{Cor.}{#1}} +\let\endcorollary=\endproclaim +\def\Corollary#1{Corollary~\use{Cor.#1}} + +% Definitions are little special; their text is not slanted. +\newcount\definitionnum \definitionnum=\z@ % Definition +\def\definition#1{\beginproclaim{Definition}{definitionnum}{\rm}{Def.}{#1}} +\let\enddefinition=\endproclaim +\def\Definition#1{Definition~\use{Def.#1}} + +% Proofs are even more special. +\def\proof{\medbreak\vskip-\parskip\noindent{\it Proof. }} + +\def\blackslug{% % QED "black box" + \setbox0\hbox{(}% % ( gives size + \vrule width.5em height\ht0 depth\dp0}% % use ) for size +\def\QED{\blackslug} % to end proof + +\def\endproof{\quad\blackslug\par\medskip} + +%>>> EOF TXSenvmt.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSeqns.tex b/Master/texmf-dist/tex/texsis/base/TXSeqns.tex new file mode 100644 index 00000000000..9319b534655 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSeqns.tex @@ -0,0 +1,259 @@ +%% file: TXSeqns.tex - Equation Numbering - TeXsis version 2.18 +%% @(#) $Id: TXSeqns.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% +% These macros use \tag from TXStags to number equations automatically, +% including chapter and section numbers if \showchapIDtrue and +% \showsectIDtrue are used. To obtain automatic equation numbers in +% ordinary displayed equations, use \EQN in place of \eqno: +% $$ +% <math mode material> \EQN <tag> +% $$ +% The <tag> can include almost anything, including a number. A ; is used +% for multi-part equations, with the equation number only being +% incremented for <tag>;a. For example, +% $$ <first part> \EQN <tag>;a $$ +% ... +% $$ <second part> \EQN <tag>;b $$ +% This usage requires that <tag>;<letter> NOT be surrounded by {}; \EQN +% takes as its argument everything up to the $$. +% +% To construct multi-part equations with \EQN, use \EQNalign and +% \EQNdisplaylines in place of the \eqalign and \displaylines of plain +% TeX. For equations aligned at the & sign, use +% $$ +% \EQNalign{ +% <eqn 1 left> & <eqn 1 right> \EQN <tag1> \cr +% <eqn 2 left> & <eqn 2 right> \EQN <tag2> \cr +% ...} +% $$ +% For centered equations with less space than between separate equations, +% use instead +% $$ +% \EQNdisplaylines{ +% <eqn 1 > \EQN <tag1> \cr +% <eqn 2 > \EQN <tag2> \cr +% ...} +% $$ +% The \EQN can be omitted on any of the lines, or the ; construction can be +% used for multi-part numbers. (Note that these macros actually redefine +% \EQN to be & inside of the \halign and typeset the equation number in the +% same way as does \eqalignno in plain TeX.) +% +% Several macros are provided to use a tag to refer to a previous +% equation: +% \Eq{<tag>} ==> Eq.~(<number>) +% \Eqs{<tag>} ==> Eqs.~(<number>) +% \Ep{<tag>} ==> (<number>) +% Compound constructions are possible, e.g. +% \Eqs{<tag1>}-\Ep{<tag2>} ==> Eqs.~(<number1>)-(<number2>) +% +% Note: there may be difficulties with using parentheses in labels +% if \onparens is set. +% +% This file is a part of TeXsis. +% (C) Copyright 1986, 1997 by Eric Myers and Frank E. Paige +%======================================================================* +\message{Equation numbering.} + +% Counters and such: + +\newcount\eqnum \eqnum=\z@ % equation number in section +\def\@chaptID{} \def\@sectID{} % start with these null + +% Equation Label Tracing: \eqnotracetrue allows you to trace equation +% numbers by internal label when you print a rough draft of the document. +% Both the external sequential equation number and the internal label are +% printed, one over the other. + +\newif\ifeqnotrace \eqnotracefalse % start with it off + +%----------------------------------------------------------------------* +% \EQN <label> $$ gets everything up to the "$$" as the equation +% label and passes it to \EQNOparse for processing. Then it does the +% final "$$". \@EQN does the work. + +\def\EQN{% turns off special characters and calls \@EQN + \begingroup % what follows is local + \quoteoff\offparens % make sure ",(, ) not active + \@EQN} % go get label + +\def\@EQN#1$${% gets everything up to $$ and parses as the label + \endgroup % end group from \EQN + \if ?#1? \EQNOparse *;;\endlist % if no label, tag with "*" + \else \EQNOparse#1;;\endlist\fi % parse the label + $$} % then end equation with $$ + +% \EQNOparse <label>;;\endlist parses <text> as an equation number +% label. It separates out letters, if present. (eg. label;a for equation a, +% but ";" does not appear in output.) It tags the label and puts the equation +% number in the display by calling \@EQNOdisplay. + +\def\EQNOparse#1;#2;#3\endlist{% parse equation label, look for ``;'' + \if ?#3?\relax % if #3 is null, no ";" present + \global\advance\eqnum by\@ne % so advance count + \edef\tnum{\@chaptID\@sectID\the\eqnum}% % construct eqn number + \Eqtag{#1}{\tnum}% % tag the eqn number + \@EQNOdisplay{#1}% % display equation number + \else\stripblanks #2\endlist % remove any blanks + \edef\p@rt{\tok}% % and save in \p@rt + \if a\p@rt\relax % if ";" present is it ";a"? + \global\advance\eqnum by\@ne\fi % yes: advance counter anyway + \edef\tnum{\@chaptID\@sectID\the\eqnum}% % construct eqn number + \Eqtag{#1}{\tnum}% % and tag equation #nn + \edef\tnum{\@chaptID\@sectID\the\eqnum\p@rt}% also make eqn # w/ letter + \Eqtag{#1;\p@rt}{\tnum}% % and tag #nn;x + \@EQNOdisplay{#1;#2}% % display equation number + \fi % + \global\let\?=\tnum % \? is last eqn # (ala PHYZZX) + \relax}% % end of definition + +% \Eqtag#1#2 is like \tag for the equation number, (in future, have it +% not write to the .aux file if the label begins with "*"). + +\def\Eqtag#1#2{\tag{Eq.#1}{#2}} + + +% \@EQNOdisplay{<label>} writes the equation number, which is in \tnum. +% If \eqnotracetrue then we also put the label in the margin, in \tt. + +\def\@EQNOdisplay#1{% display equation number besides equation + \@eqno % begin eqn number + \ifeqnotrace % tracing labels? then... + \rlap{\phantom{(\tnum)}% % skip over number to margin + \quad{\tenpoint\tt["#1"]}}\fi % put ["label"] in margin + \linkname{Eq.#1}{(\tnum)}% % and the equation number + } + + +\let\@eqno=\eqno % usual interpretation + +\def\endlist{\endlist} % just so it has a def + +%----------------------------------------------------------------------* +% Reference equations in the text. The \linkto makes these HyperTeXt +% links if \htmltrue is set. + +\def\Eq#1{\linkto{Eq.#1}{Eq.~($\use{Eq.#1}$)}} % \Eq prints "Eq. (nn)" +\def\Eqs#1{\linkto{Eq.#1}{Eqs.~($\use{Eq.#1}$)}}% \Eqs prints "Eqs. (nn)" +\def\Ep#1{\linkto{Eq.#1}{($\use{Eq.#1}$)}} % \Ep prints just "(nn)" + +%----------------------------------------------------------------------* +% \EQNdisplaylines is just like \displaylines, as described in +% The TeXbook, except that you can also use \EQN for equation numbers. +% syntax: "\EQNdisplaylines{... <equation> \EQN <label> \cr ...ditto...\cr}" + +\def\EQNdisplaylines#1{% % make \EQN re-\def local + \@EQNcr % change \def of \EQN to get label + \displ@y % reduce interline spacing (from Plain) + \halign{% % alignment + \hbox to\displaywidth{% % full width + $\@lign\hfil\displaystyle##\hfil$}% centered displaystyle + &\llap{$\@lign\@@EQN{##}$}\crcr % then eqn number template + #1\crcr}% % now apply template to argument + \@EQNuncr} % put \EQN back to normal + + +% \EQNalign is just like \eqalign except that you can use \EQN to get +% equation numbers. Just put ...\EQN <label> \cr on a line you want to get +% a label. + +\long\def\EQNalign#1{% replacement for \eqalign using \EQN + \@EQNcr % re-def \EQN to see label before \cr + \displ@y % reduce interline spacing + \tabskip=\centering % leftskip for LHS + \halign to\displaywidth{% % alignment + \hfil$\relax\displaystyle{##}$% % template for LHS + \tabskip=0pt % no skip between LHS and RHS + &$\relax\displaystyle{{}##}$\hfil % template for RHS + \tabskip=\centering % rightskip for RHS + &\llap{$\relax\@@EQN{##}$}% % template for eqn number, parses label + \tabskip=0pt\crcr % no skip at end of eqn number + #1\crcr}% % now apply template to argument + } + + +% \@@EQN parses and displays the equation number using \EQNOparse. +% Here \@eqno is disabled in \@EQNOdisplay by \@EQNcr. + +\def\@@EQN#1{\if ?#1? \EQNOparse *;;\endlist % if empty, label * + \else \EQNOparse#1;;\endlist\fi} % otherwise label with #1 + + +% \@EQNcr changes definition of \EQN so it is an alignment tab. +% Everything up to the \cr is then passed to \EQNOparse by the \@@EQN in +% the template. Also changes \@eqno to \relax for \@EQNOdisplay. +% \@EQNuncr changes everything back to normal. + +\def\@EQNcr{% changes definition of \EQN to & for aligned equations + \let\EQN=& % \EQN is alignment tab + \let\@eqno=\relax} % don't do \eqno in \EQNalign + +\def\@EQNuncr{% changes definition of \EQN back to normal + \let\EQN=\@EQN % \EQN is as usual + \let\@eqno=\eqno} % make \@eqno be \eqno + + +% \EQNdoublealign makes a double equation alignment, i.e. three +% columns. \EQN works as usual. + +\def\EQNdoublealign#1{% % make re-def of \EQN local + \@EQNcr % re-def \EQN to see label before \cr + \displ@y % reduce interline spacing + \tabskip=\centering % leftskip for LHS + \halign to\displaywidth{% % + \hfil$\relax\displaystyle{##}$% % template for LHS + \tabskip=0pt % no skip between LHS and middle + &$\relax\displaystyle{{}##}$\hfil% % template for middle + \tabskip=0pt % no skip between middle and RHS + &$\relax\displaystyle{{}##}$\hfil% % template for RHS + \tabskip=\centering % rightskip for RHS + &\llap{$\relax\@@EQN{##}$}% % eqn number template parses label + \tabskip=0pt\crcr % no skip at end of eqn number + #1\crcr}% % now apply template to argument + \@EQNuncr}% % put \EQN back to normal + +%----------------------------------------------------------------------* +% Alternate def of \displaylines lets you put in equation numbers +% just like \eqalignno (or use \EQNdisplaylines in eqns.tex). +% +%%\def\displaylines#1{% +%% \displ@y % reduce interline spacing +%% \halign{\hbox to \displaywidth{$\hfil\displaystyle##\hfil$}% +%% &\llap{$##$}\crcr % then eqn number +%% #1\crcr}} % now apply template + + +%----------------------------------------------------------------------* +% \eqn<label> $$ is like \EQN except that it uses the PHYZZX +% protocols. It defines the control sequence \"label" to be the equation +% number. + +\def\eqn#1$${\edef\tok\string#1 % expand cs name to letters + \xdef#1{\NX\use{Eq.\tok}}% % make cs refer to this eqn number + \EQNOparse \tok;;\endlist $$} % now process eqn number as usual + + +%----------------------------------------------------------------------* +% \eqnmark puts a marker at the left edge of a displayed equation to +% show that it's important. This is better than putting a box around +% the equation. Change \eqnmarker to be whatever symbol you want. +% Note that this works with \eqno and \EQN and \eqalign{ }\eqno or +% \EQN, but not \eqalignno oe \EQNalign. + + +\def\eqnmarker{\triangleright} % change to whatever mark you want + +\def\eqnmark{\quoteoff\offparens\@eqnmark} +\def\@eqnmark#1$${\@@eqnmark#1\eqno\eqno\endlist} +\def\@@eqnmark#1\eqno#2\eqno#3\endlist{\def\EQN{\relax}% + \if ?#3? \@EQNmark#1\EQN\EQN\endlist % + \else\displaylines{\hbox to 0pt{$\eqnmarker$\hss}\hfill{#1}\hfill % + \hbox to 0pt{\hss$#2$}}\fi$$} +\def\@EQNmark#1\EQN#2\EQN#3\endlist{% + \if ?#3?\displaylines{\hbox to 0pt{$\eqnmarker$\hss}\hfill{#1}\hfill}% + \else \let\@eqno=\relax % + \EQNdisplaylines{\hbox to 0pt{$\eqnmarker$\hss}\hfill{#1}\hfill % + \hbox to 0pt{\hss$\EQNOparse#2;;\endlist$}}\fi} + +%>>> EOF TXSeqns.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSfigs.tex b/Master/texmf-dist/tex/texsis/base/TXSfigs.tex new file mode 100644 index 00000000000..30b42f37db7 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSfigs.tex @@ -0,0 +1,520 @@ +%% file: TXSfigs.tex - Figures and Tables - TeXsis version 2.18 +%% @(#) $Id: TXSfigs.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% +% These macros handles figures and tables with automatic +% numbering and tag referencing. Figures and tables can printed where +% they are defined, or saved until the end of the document. For long +% documents you can make a list of figures or list of tables, much like +% a table of contents. For journal submissions you can print a separate +% list of figure or table captions. +% +% For the macros for ruled tables see the file TXSruled.tex +% +% Dependencies: +% TXSmacs.tex for \unexpandedwrite, \offparens, \runtime, \seeCR +% TXSinit.tex for \bottominsert, \heavyinsert, \@FileInit +% TXStags.tex for \LabelParse +% +% This file is a part of TeXsis. +% (C) copyright 1991, 1995 by Eric Myers and Frank Paige. +%======================================================================* +\message{Figures and Tables.} +\catcode`\@=11 % let's use @ as a letter here +\let\NX=\noexpand\let\XA=\expandafter % handy abbreviations +\offparens % make sure [ ] not active! + +% Counters, flags and I/O for table number, figure number, etc... + +\newcount\tabnum \tabnum=\z@ % table number +\newcount\fignum \fignum=\z@ % figure number + +\newif\ifRomanTables \RomanTablesfalse % Roman table numbers? +\newif\ifCaptionList \CaptionListfalse % save list of captions? +\newif\ifFigsLast \FigsLastfalse % save figures until end? +\newif\ifTabsLast \TabsLastfalse % save tables until end? +\def\FiguresLast{\FigsLasttrue}\def\FiguresNow{\FigsLastfalse} +\def\TablesLast{\TabsLasttrue}\def\TablesNow{\TabsLastfalse} + +% Output streams for saving figures, tables, figure lists, table lists, +% or caption lists + +\newwrite\fgout \newwrite\tbout +\newwrite\figlist \newwrite\tablelist \newwrite\caplist + +%======================================================================* +% FIGURES. +% The following macros insert figures and define tags for them for +% future references: +% \figure{<label>} Insert figure at top of page, labeled by <label>. +% \midfigure{<label>} Figure at current position, or top of next page +% \topfigure{<label>} Figure at top of page, same as \figure. +% \fullfigure{<label>} Figure on a separate page. +% \bottomfigure{<label>} Figure at bottom of the page +% \heavyfigure{<label>} Figure at current position, or bottom of next page +% \endfigure Ends any figure +% \figuresize <dimen> Reserves vertical space of size <dimen> for figure. + +\long\def\figure{\@figure\topinsert} +\long\def\topfigure{\@figure\topinsert}% just synonym for \figure +\long\def\midfigure{\@figure\midinsert} +\long\def\fullfigure{\@figure\pageinsert} +\long\def\bottomfigure{\@figure\bottominsert} +\long\def\heavyfigure{\@figure\heavyinsert} +\long\def\widefigure{\@figure\widetopinsert} +\long\def\widetopfigure{\@figure\widetopinsert} +\long\def\widefullfigure{\@figure\widepageinsert} + +\def\FigureName{Figure}% +\def\TableName{Table}% + + +% \@figure is the generic figure making macro. If \FigsLast is +% set it writes the figure material out to a file to be read +% in later. Otherwise it puts the figure material into an \insert +% given by #1. #2 is the label which follows \figure + +\def\@figure#1#2{% generic routine to make and label a figure + \vskip 0pt % force vertial mode + \begingroup % hide our calculations + \def\CaptionName{\FigureName}% % type of insert is ``Figure'' + \def\@prefix{Fg.}% % prefix for tagging labels + \let\@count=\fignum % counter is \fignum + \let\@FigInsert=#1\relax % what kind of insert? + \def\@arg{#2}\ifx\@arg\empty\def\@ID{}% % if no label \@ID is null + \else\LabelParse #2;;\endlist\fi % else parse label into \@ID + \ifFigsLast % Save Figures til end? + \emsg{\CaptionName\space\@ID. {#2} [storing in \jobname.fg]}% .log it + \@fgwrite{\@comment> \CaptionName\space\@ID.\space{#2}}% write fig number + \@fgwrite{\string\@FigureItem{\CaptionName}{\@ID}{\NX#1}}% to figure file + \seeCR\let\@next=\@copyfig % go copy figure text to file + \else % save figure in .fg file + \emsg{\CaptionName\ \@ID.\ {#2}}% % announce in .log + \let\endfigure=\@endfigure % how to quit + \setbox\@capbox\vbox to 0pt{}% % clears caption in \@capbox + \def\@whereCap{N}% % no caption (yet) + \let\@next=\@findcap % look for \caption or \Caption + \ifx\@FigInsert\midinsert\goodbreak\fi % help \midinsert + \@FigInsert % start figure insert + \fi \@next} + +% \@endfigure ends a figure insertion made by \figure, \table, etc + +\def\@endfigure{\relax + \if B\@whereCap\relax % if bottom caption then... + \vskip\normalbaselineskip % skip down one line + \centerline{\box\@capbox}% % for caption + \fi + \endinsert \endgroup} % end the insert & group + +\def\endfigure{\emsg{> \string\endfigure before \string\figure!}} + +\def\figuresize#1{\vglue #1}% reserve space for a figure + + +% FIGURES AT THE END OF THE DOCUMENT: saying \FiguresLast saves all +% figures up until the end of the document, where you say \PrintFigures +% to print them out. If you say \FiguresNow (the default) the the +% figures are inserted as they are defined, and \PrintFigures has no +% effect. + +\def\@copyfig#1#2\endfigure{\endgroup % copy figure definition to file + \ifx#1\par\@fgNXwrite{#2\@endfigure}\else\@fgNXwrite{#1#2\@endfigure}\fi} + +% \@fgwrite writes to the .fg file. The argument IS expanded. +% \@fgNXwrite writes to the .fg file without expanding. + +\def\@FGinit{\@FileInit\fgout=\jobname.fg[Figures]\gdef\@FGinit{\relax}} +\def\@fgwrite#1{\@FGinit\immediate\write\fgout{#1}} +\long\def\@fgNXwrite#1{\@FGinit\unexpandedwrite\fgout{#1}} + +% \PrintFigures closes the figure file and reads it in, to put all of the +% figures at the end of the document. If \FigsLastfalse then nothing happens. + +\def\PrintFigures{\ifFigsLast\@PrintFigures\fi} + +\def\@PrintFigures{% Prints the figures at the end of the document + \@fgwrite{\@comment>>> EOF \jobname.fg <<<}% % and EOF marker comment + \immediate\closeout\fgout % then close the .ref file + \begingroup % now read the .fg file + \FigsLastfalse % avoid infinte recursion + \vbox to 0pt{\hbox to 0pt{\ \hss}\vss}% % anchor top if needed + \offparens % make sure ( and ) not active + \catcode`@=11 % make @ a letter + \emsg{[Getting figures from file \jobname.fg]}% + \Input\jobname.fg \relax % read text from .ref file + \endgroup} % close group + + +% \@FigureItem creates a figure which has been stored already +% in the figure or table file. #1 is the \CaptionName, #2 is the +% figure or table number, and #3 is the type of \insert + +\def\@FigureItem#1#2#3{% creates a figure already stored in \jobname.fg + \begingroup % same as in \@figure + #3\relax % do the insert + \def\@ID{#2}% % get figure number + \def\CaptionName{#1}% % type of insert is ``Figure'' + \setbox\@capbox\vbox to 0pt{}\def\@whereCap{N}% clear caption + \@findcap} % check for \caption + +%======================================================================* +% TABLES. +% These are similar to the figure macros above, with small +% additions, such as allowing tables to be numbered by roman numerals. + +\long\def\table{\@table\topinsert} +\long\def\toptable{\@table\topinsert} % synonym, just in case +\long\def\midtable{\@table\midinsert} +\long\def\fulltable{\@table\pageinsert} +\long\def\bottomtable{\@table\bottominsert} +\long\def\heavytable{\@table\heavyinsert} +\long\def\widetable{\@table\widetopinsert} +\long\def\widetoptable{\@table\widetopinsert} +\long\def\widefulltable{\@table\widepageinsert} + +% \@table is the generic table making macro. It also calls \@findcap, +% which looks to see if a \Caption comes first and acts accordingly. + +\def\@table#1#2{% generic processing of table + \vskip 0pt % force vertial mode and anchor + \begingroup % + \def\CaptionName{\TableName}% % type of insert is ``Table'' + \def\@prefix{Tb.}% % prefix for tagging labels + \let\@count=\tabnum % counter is \fignum + \let\@FigInsert=#1\relax % what kind of insert? + \def\@arg{#2}\ifx\@arg\empty\def\@ID{}% % if no label \@ID is null + \else\ifRomanTables % if Roman numeral tables + \global\advance\@count by\@ne % advance count + \edef\@ID{\uppercase\expandafter % define \@ID as uppercase + {\romannumeral\the\@count}}% % Roman numerals + \tag{\@prefix#2}{\@ID}% % and tag it + \else + \LabelParse #2;;\endlist\fi % else parse label --> \@ID + \fi + \ifTabsLast % Save Tables til end? + \emsg{\CaptionName\space\@ID. {#2} [storing in \jobname.tb]}% .log it + \@tbwrite{\@comment> \CaptionName\space\@ID.\space{#2}}% write table number + \@tbwrite{\string\@FigureItem{\CaptionName}{\@ID}{\NX#1}}% to table file + \seeCR\let\@next=\@copytab % go copy figure text to file + \else % save figure in .fg file + \emsg{\CaptionName\ \@ID.\ {#2}}% % announce in .log + \let\endtable=\@endfigure % how to quit + \setbox\@capbox\vbox to 0pt{}% % clears caption in \@capbox + \def\@whereCap{N}% % no caption (yet) + \let\@next=\@findcap % look for \caption or \Caption + \ifx\@FigInsert\midinsert\goodbreak\fi % help \midinsert + \@FigInsert % start table insertion + \fi \@next} + +\def\endtable{\emsg{> \string\endtable before \string\table!}} + +\def\@copytab#1#2\endtable{\endgroup % copy table definition to file + \ifx#1\par\@tbNXwrite{#2\@endfigure}\else\@tbNXwrite{#1#2\@endfigure}\fi} + +% \@tbwrite writes to the .tb file. The argument IS expanded +% \@tbNXwrite writes to the .tb file without expanding + +\def\@TBinit{\@FileInit\tbout=\jobname.tb[Tables]\gdef\@TBinit{\relax}} +\def\@tbwrite#1{\@TBinit\immediate\write\tbout{#1}} +\long\def\@tbNXwrite#1{\@TBinit\unexpandedwrite\tbout{#1}} + + +% \PrintTables closes the table file and reads it in, to put all of the +% tables at the end of the document. If \TabsLastfalse then nothing happens. + +\def\PrintTables{\ifTabsLast\@PrintTables\fi} + +\def\@PrintTables{% Prints the tables at the end of the document + \@tbwrite{\@comment>>> EOF \jobname.tb <<<}% % and EOF marker comment + \immediate\closeout\tbout % then close the .ref file + \begingroup % now read the .tb file + \TabsLastfalse % avoid possible recursion + \catcode`@=11 % make @ a letter, in case + \offparens % make sure ( and ) not active + \emsg{[Getting tables from file \jobname.tb]}% + \Input\jobname.tb \relax % read text from .ref file + \endgroup} % close group + +%======================================================================* +% CAPTIONS. +% A caption is specified by \Caption ...\endCaption, or by +% \caption{<text>}. If \caption or \Caption is the first token after +% \figure or \table then the caption appears at the top; otherwise it +% appears at the bottom. Additional spacing can be added with any legal +% \vskip. + +\newbox\@capbox % box to hold caption text +\newcount\@caplines % number of lines in caption +\def\CaptionName{} % default Caption Name +\def\@ID{} % default \@ID is null +\def\captionspacing{\normalbaselines} % singlespacing by default +\def\@inCaption{F} % flag whether in caption or not + + +\long\def\caption#1{% create a caption for a figure or table + \def\lab@l{\@ID}% % save \@ID for \label + \global\setbox\@capbox=\vbox\bgroup % start box for caption + \def\@inCaption{T}% % flag we are in caption + \captionspacing\seeCR % adjust baseline skip, disable ^^M + \dimen@=20\parindent % if column is wide then + \ifdim\colwidth>\dimen@\narrower\narrower\fi% use \narrower caption + \noindent{\bf \linkname{\@TagName}{\CaptionName~\@ID}:\space}% + #1\relax % caption text + \vskip 0pt % end paragraph + \global\@caplines=\prevgraf % get number of lines + \egroup % now caption is in \vbox + \ifnum\@caplines=\@ne % if only one line then + \global\setbox\@capbox=\vbox{\noindent\seeCR % reset caption box + \hfil{\bf \linkname{\@TagName}{\CaptionName~\@ID}:\space}% + #1\hfil}\fi % with centering glue + \if N\@whereCap\def\@whereCap{B}\fi % not top, so bottom + \if T\@whereCap % if top caption then + \centerline{\box\@capbox}% % it needs some space + \vskip\baselineskip\medskip % under the caption + \fi} % + + +% \Caption creates a caption which can be saved in the list of +% captions (if \CaptionListtrue is selected). + +\def\Caption{\begingroup\seeCR\@Caption}% line-ends visible, then... + +\long\def\@Caption#1\endCaption{\endgroup % create the caption + \ifCaptionList % save to caption list, if asked +%% \def\@arg{Figure}\ifx\CaptionName\@arg\let\caplist=\figlist\fi +%% \def\@arg{Table}\ifx\CaptionName\@arg\let\caplist=\tablelist\fi + \incaplist{#1}\fi + \caption{#1}} % in any case make the caption + +\def\endCaption{\emsg{> \string\endCaption\ called before \string\Caption.}} + + +% \@findcap looks at the first token in the table body to see if +% it is a \Caption, and sets the flag accordingly + +\long\def\@findcap#1{% % look ahead for \caption first + \ifx #1\Caption \def\@whereCap{T}\fi % caption at T(op) + \ifx #1\caption \def\@whereCap{T}\fi % caption at T(op) + #1}% % put lookahead token back in list + +\def\@whereCap{N} % no caption yet + + +% \ListFigureCaptions and \ListTableCaptions use \@ListCaps (below) +% to create a list of figure and table captions, from \infiglist +% or \intablelist, without a page number. +% \ListCaptions lists all the captions from \Caption. + +\def\ListCaptions{\@ListCaps\caplist=\jobname.cap[List of Captions] + {\let\FIGLitem=\CAPLitem}} + +\def\ListFigureCaptions{% + \@ListCaps\figlist=\jobname.fgl[List of Figure Captions] + {\let\FIGLitem=\CAPLitem}} + +\def\ListTableCaptions{% + \@ListCaps\tablelist=\jobname.tbl[List of Table Captions] + {\let\FIGLitem=\CAPLitem}} + +% \CAPLitem is like \FIGLitem, but it just ignores #4 (the page number) + +\def\CAPLitem#1#2#3\@endFIGLitem#4{% Figure or Table caption + \bigskip % some space between items + \begingroup % + \raggedright\tolerance=1700 % don't justify + \hangindent=1.41\parindent\hangafter=1 % hanging indentation + \noindent #1\ #2 % Figure/Table number + #3 \hskip 0pt plus 10pt % text of ``caption'' + \vskip 0pt % end paragraph + \endgroup} % + +%======================================================================* +% LISTS OF FIGURES AND TABLES (like a table of contents): +% +% These macros write out to the figure list file and read it +% in later, and similarly for the list of tables. + +% To make an entry in the list of figures or tables include in the +% figure or table a call to \infiglist{<text>} or \intablelist{<text>} +% or \incaplist{<text>}. + +\def\infiglist{\begingroup\seeCR % <CR> breaks lines in file output + \@infiglist\figlist} + +\def\intablelist{\begingroup\seeCR % <CR> breaks lines in file output + \@infiglist\tablelist} + +\def\incaplist{\begingroup\seeCR % <CR> breaks lines in file output + \@infiglist\caplist} + + +% \FigListWrite outputs text (#2) to the figure or table lists (#1). +% Note that we DO NOT use \immediate so that info in floating +% insertions isn't written until it becomes part of a page. This +% is so that we get the page numbers correct. + +\def\FigListWrite#1#2{% write to figure list file + \ifx#1\figlist\relax \FigListInit\fi % initialize figure list + \ifx#1\tablelist\relax \TabListInit\fi % initialize table list + \ifx#1\caplist\relax \CapListInit\fi % initialize caption list + \edef\@line@{{#2}}% % expand tokens to write + \write#1\@line@} % write to fig/table list file + +\def\FigListInit{\@FileInit\figlist=\jobname.fgl[List of Figures]%% + \gdef\FigListInit{\relax}} +\def\TabListInit{\@FileInit\tablelist=\jobname.tbl[List of Tables]%% + \gdef\TabListInit{\relax}} +\def\CapListInit{\@FileInit\caplist=\jobname.cap[List of Captions]%% + \gdef\CapListInit{\relax}} + +% \FigListWriteNX is the same as \FigListWrite but it does not expand +% it's argument, it is not \immediate, and it assumes file is initialized. + +\def\FigListWriteNX#1#2{\writeNX#1{#2}} + + +% \@infiglist does the work for \infiglist or \intablelist or \incaplist +% The first argument is the output stream, the second is the text. + +\def\@infiglist#1#2{% write to list of figures or tables or captions + \FigListWrite#1{\@comment > \CaptionName\space\@ID:}% comment '% ' + \FigListWrite#1{\string\FIGLitem{\CaptionName} {\@ID.\space}}% + \@copycap#1#2\endlist % copy unexpanded + \FigListWrite#1{{\NX\folio}}% don't expand page number until written! + \endgroup} % end \seeCR + +\def\@copycap#1#2#3\endlist{% copy caption text to caption file + \ifx#2\space\writeNX#1{#3\@endFIGLitem}% + \else\writeNX#1{#2#3\@endFIGLitem}\fi} + +% \ListFigures and \ListTables create the table-of-contents style +% list of figures and tables + +\def\ListFigures{\@ListCaps\figlist=\jobname.fgl[List of Figures]{}} +\def\ListTables{\@ListCaps\tablelist=\jobname.tbl[List of Tables]{}} + +% \@ListCaps\writename=filename[Description]{extra instructions} +% is a generic macro for listing figures and tables, or for listing +% just the captions for figures and tables. It closes the file in which +% the list has been collected and then reads it in. If you set +% \showsectIDfalse before \ListFigures the caption name (``Figure'' or +% ``Table'') will not appear, only the number will be shown. +% NOTE! Since figures are floating insertions it is important that they +% all be written to the output list before the figure list is to be +% written. If there is any doubt about this use \supereject. + +\def\@ListCaps#1=#2[#3]#4{% list figures, tables or captions + \immediate\closeout#1 % close caption list file + \openin#1=#2 \relax % reopen to read it + \ifeof#1\closein#1 % if missing or empty, ignore + \else\closein#1\emsg{[Getting #3]}% % else close it and + \begingroup % read it in... + \showsectIDtrue % FORCE THIS NOW + \ATunlock\quoteoff\offparens % \specials not active + #4 % any modifications? + \input #2 \relax % read in captions + \endgroup % + \fi} + + +% \FIGLitem processes a figure or table list item. The arguments are: +% \FIGLitem{caption-name}{figure-id}title-text\@endFIGLitem{page-number} +% The \TOCmargin is taken from the Table of Contents macros to match the +% look of the table of contents. + +\long\def\FIGLitem#1#2#3\@endFIGLitem#4{% process a Figure or Table list item + \medskip % some space between items + \begingroup % + \raggedright\tolerance=1700 % don't justify + \ifx\TOCmargin\undefined\skip0=\parindent % sans \TOCmargin use \parindent + \else\skip0=\TOCmargin\fi % but use \TOCmargin if it's there + \advance\rightskip by \skip0 % right margin comes in, but + \parfillskip=-\skip0 % page number at edge of page + \hangindent=1.41\parindent\hangafter=1 % hanging indentation + \noindent \ifshowsectID #1\ \fi #2 % show section numbers + #3 \hskip 0pt plus 10pt % text of ``caption'' + \leaddots % leaders to edge + \hbox to 2em{\hss\linkto{page.#4}{#4}}% page number (could be a link) + \vskip 0pt % end paragraph + \endgroup} + + +%======================================================================* +% REFERENCING FIGURES AND TABLES. +% +% The following use tags to reference figures and tables in text. +% Forward references are satisfied using the .aux file. The \linkto +% makes these HyperTeXt links if \htmltrue is set. + +\def\Fig#1{\linkto{Fg.#1}{Fig.~\use{Fg.#1}}} +\def\Fg#1{\linkto{Fg.#1}{\use{Fg.#1}}} + +\def\Tab#1{\linkto{Tb.#1}{Table~\use{Tb.#1}}} +\def\Tbl#1{\linkto{Tb.#1}{Table~\use{Tb.#1}}} +\def\Tb#1{\linkto{Tb.#1}{\use{Tb.#1}}} + + + +%======================================================================* +% RULED TABLES. +% +% The macros in TXSruled.tex can be used to typeset tables with vertical +% and horizontal rules. The syntax is the same as for Ray Cowan's macros +% TABLES.TEX, as described in TABELDOC.TEX, and I have used some of Cowan's +% tricks, but most of the macros are complete re-writes. -EAM +% +% TXSruled.tex is now loaded directly by texsis.tex + +%======================================================================* +% SIMPLE(r) RULED TABLES: \Tablebody (Old stuff) +% +% \Tablebody has been phased out of TeXsis in favour of TXSruled.tex, +% which are much better for making ruled tables. However, if someone +% wants to see an older document that used \Tablebody we don't want +% to disappoint them. Hence we autoload \Tablebody from a style file +% if needed. + +\autoload\Tablebody{Tablebod.txs}\autoload\Tablebodyleft{Tablebod.txs} +\autoload\tablebody{Tablebod.txs} + +%======================================================================* +% ENCAPULATED POSTSCRIPT FIGURES (using epsf.tex) +% +% Tom Rokicki's macros in epsf.tex are a good way to include +% Encapulated PostScript figures in a document. There is only +% one caveat: You must translate from dvi to ps with his dvips filter, +% not dvi2ps or something else. +% +% We just load definitions from epsf.tex if they are needed... + +\autoload\epsffile{epsf.tex} \autoload\epsfbox{epsf.tex} +\autoload\epsfxsize{epsf.tex} \autoload\epsfysize{epsf.tex} +\autoload\epsfverbosetrue{epsf.tex}\autoload\epsfverbosefalse{epsf.tex} + +% The problem with the above \autoload's is that they are usually +% done in a group so they have to be repeated later. If you intend to +% use epsf and want to avoid this problem just say \input epsf.tex +% somewhere early on in your document, outside of any group. + +%======================================================================* +% OBSOLETE STUFF (to be removed soon) + +% These old synonyms from 2.11 are now \obsolete in 2.16 -EAM + +\obsolete\topFigure\figure \obsolete\midFigure\midfigure +\obsolete\fullFigure\fullfigure \obsolete\TOPFIGURE\figure +\obsolete\MIDFIGURE\midfigure \obsolete\FULLFIGURE\fullfigure +\obsolete\endFigure\endfigure \obsolete\ENDFIGURE\endfigure + +% These are obsolete as of 2.17 -EAM + +\obsolete\topTable\toptable \obsolete\midTable\midtable +\obsolete\fullTable\fulltable \obsolete\TOPTABLE\toptable +\obsolete\MIDTABLE\midtable \obsolete\FULLTABLE\fulltable +\obsolete\endTable\endtable \obsolete\ENDTABLE\endtable + +\def\FIG{\@obsolete\FIG\Fig\Fig}% synonym (2.11, to be removed) +\def\TBL{\@obsolete\TBL\Tbl\Tbl}% synonym (2.11, to be removed) + +%>>> EOF TXSfigs.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSfmts.tex b/Master/texmf-dist/tex/texsis/base/TXSfmts.tex new file mode 100644 index 00000000000..e383f23db5a --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSfmts.tex @@ -0,0 +1,317 @@ +%% file: TXSfmts.tex - Special Document Formats - TeXsis version 2.18 +%% @(#) $Id: TXSfmts.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% +% Several standard document formats are defined in TeXsis. All of +% these set up the appropriate dimensions, title page macros, etc., and +% call \texsis: +% +% \preprint Preprint format. Makes a standard title +% page from \title, \author, etc. and puts the +% manuscript on the following pages. +% +% \Manuscript Like \preprint, but printed with +% \TrueDoubleSpacing for submission to +% journals like Physical Review +% +% \paper Like \preprint but puts \title, \author, +% etc. material at top of first page +% instead of on a separate title page. +% +% \book For books, with chapters and sections, +% and odd/even page numbering +% +% \slides Slides/transparencies format, in 24 pt type, +% special formatting. +% +% \letter Standard business letter; see TXSletr.tex +% +% \memo Standard memo; see TXSmemo.tex. +% +% \referee Referee reports; similar to \memo +% +% \twinprint Preprint in twin page format, with +% title page in full size landscape. +% +% \twinformat Twin page formatting for other styles. +% +% More specialized document layouts are available in ``style'' +% files, which are only loaded when they are called for. This is +% accomplished with the \autoload macro described below. It's possible +% (and easy) to add new style files for any desired document layout. +% +% The specialized document layouts which are currently loaded +% from style files [named in brackets] are: +% +% \nuclproc The ``NUCLPROC'' style for Nuclear +% Physics Proceedings. [nuclproc.txs] +% +% \NorthHolland North Holland proceedings format, +% single column, left justified titles. +% [Elsevier.txs] +% +% \NorthHollandTwo North Holland double column proceedings +% format, left justified titles. [Elsevier.txs] +% +% \WorldScientific World Scientific proceedings format. +% [WorldSci.txs] +% +% \IEEEproceedings Conference paper in double column IEEE +% format. [IEEE.txs] +% +% \IEEEreduced Same as \IEEEproceedings but reduced +% by 75% to fit on 8.5 x 11 paper. [IEEE.txs] +% +% \AIPproceedings Conference paper in the American Institute +% of Physics (AIP) format. [AIP.txs] +% +%======================================================================* +\message{Layout macros.} +\catcode`@=11 + +%--------------------------------------------------* +% Paper Layout: This prints the \titlepage material at the top of +% the first page, not on a separate page. + +\def\paper{% % Paper: + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \texsis % Initialize + \def\titlepage{% % \paper title page + \bgroup % so changes don't leak out + \let\title=\Title % \title inside \titlepage + \let\endmode=\relax % \endmode will end a field + \pageno=1}% % title page is page 1 by default + \def\endtitlepage{% % \paper end title page + \endmode % end any open field + \goodbreak\bigskip % no new page, but maybe break here + \egroup}% % everything back the way it was + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes + } + +\def\Tbf{\fourteenpoint\bf}% % 14pt bold title +\def\tbf{\twelvepoint\bf}% % 12pt bold section head + +%--------------------------------------------------* +% Preprint Layout: This prints the \titlepage material on a separate +% page with a \banner at the top. + +\def\preprint{% Document layout for Preprints + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \texsis % Initialize TeXsis + \def\titlepage{% % \preprint title page + \bgroup % so changes don't leak out + \pageno=1 % title page is page 1 by default + \let\title=\Title % \title inside \titlepage + \let\endmode=\relax % \endmode will end a field + \banner}% % prints the banner at top of page 1 + \def\endtitlepage{% % \preprint end title page + \endmode % end any open field + \vfil\eject % new page + \egroup}% % everything back the way it was + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes + } + +%--------------------------------------------------* +% \Manuscript is a layout similar to \preprint, but printed +% in \TrueDoubleSpacing and with other things set the way Physical +% Review wants them for submitted manuscripts. For an even better +% version use \PhysRevManuscript or \PhysRev\Manuscript. + +\def\Manuscript{% layout for manuscripts to be submitted to journals + \preprint % start with preprint form + \showsectIDfalse % no section number in equation numbers + \showchaptIDfalse % no chapter number in equation numbers + \def\SectionStyle##1{\uppercase % section numbers in upper case + \expandafter{\romannumeral ##1}}% roman numerals + \RomanTablestrue % roman numerals for table numbers + \TablesLast % tables at the end + \FiguresLast % figures at the end + \TrueDoubleSpacing % wider interline spacing for manu + \def\everyabstract{\TrueDoubleSpacing} + \def\Tbf{\fourteenpoint\bf\TrueDoubleSpacing}% % 14pt bold title + \def\refFormat{\TrueDoubleSpacing}% + } + +\autoload\PhysRevManuscript{PhysRev.txs}% More better version in style file + +%--------------------------------------------------* +% \book format is similar to \thesis but without the special +% formatting. Use for books, long review articles, etc. + +\def\book{% document layout for a book or similar document + \ContentsSwitchtrue % contents page ON + \refswitchtrue % save references + \auxswitchtrue % .AUX file for forward references + \texsis % initialize TeXsis + \RunningHeadstrue % running headlines + \bookpagenumbers % page numbers for book binding + \def\titlepage{% % \book title page + \bgroup % any changes local + \pageno=-1 % start on page i + \let\title=\Title % \title inside \titlepage + \let\endmode=\relax % \endmode will end a field + \def\FootText{\relax}}% % no number on title page + \def\endtitlepage{% % end title page for \book + \endmode % end any open field + \vfil\eject % end title page + \egroup% % close group from \titlepage + \pageno=1}% % + \def\abstract{% % abstract for \book + \endmode % end previous field + \bigskip\bigskip\medskip % skip down some + \bgroup\singlespaced % abstract has same spacing + \let\endmode=\endabstract % to end \abstract + \narrower\narrower % + \everyabstract}% % + \def\endabstract{% % end abstract for \book + \medskip\egroup\bigskip}% % + \def\FootText{--\ \tenrm\folio\ --}% % for 1st page of chapter + \def\Tbf{\sixteenpoint\bf}% % Chapter Titles in 16pt bold + \def\tbf{\fourteenpoint\bf}% % Section titles in 12pt bold + \twelvepoint % 12pt type for most of doc + \doublespaced % double spacing + \autoparens % auto-sizing of parens + \quoteon % auto quote matching + } % + +%--------------------------------------------------* +% \thesis is loaded from a style file now because it will be +% different at different installations. + +\autoload\thesis{thesis.txs} +\autoload\UTthesis{thesis.txs} +\autoload\YaleThesis{thesis.txs} + +%--------------------------------------------------* +% \letter is a letter format for typing letters, following the syntax +% in Appendix F of the TeXbook. See TXSletr.tex for details. + +\def\Letter{% document format for letters + \ContentsSwitchfalse % no table of contents + \refswitchfalse % no reference list + \auxswitchfalse % no forward references + \texsis % initialize + \singlespaced % single space default + \LetterFormat} % Setup using \LetterFormat + +\def\letter{\Letter} % synonym + +%--------------------------------------------------* +% \memo Format for memoranda, as defined in TXSmemo.tex + +\def\Memo{% document format for memos + \ContentsSwitchfalse % no table of contents + \refswitchfalse % no reference list + \auxswitchfalse % no forward references + \texsis % initialize + \singlespaced % single space default + \MemoFormat} % Setup using \MemoFormat + +\def\memo{\Memo} % synonym + +%--------------------------------------------------* +% \Referee format for Referee Reports, as defined in TXSmemo.tex + +\def\Referee{% document format for referee reports + \ContentsSwitchfalse % no table of contents + \auxswitchfalse % no need for an .aux file + \refswitchfalse % no reference list + \texsis % initialize + \RefReptFormat} % Setup using \MemoFormat + +\def\referee{\Referee} % synonym + +%--------------------------------------------------* +% Landscape Layout: for printing ``sideways'' on the laser printer +% +% \Landscape sets up the page size for sideways (``landscape mode'') +% printing, and calls \LandscapeSpecial to signal this to the printer. +% What signal is given to the printer driver (with \special) depends +% on which filter or driver you are using. You may have to change +% the definition of \LandscapeSpecial to suit your installation, but +% please do this in TXSsite.tex, not this file. + +\def\Landscape{% set page size for printing ``sideways'' + \texsis % 12pt, double spaced, etc + \hsize=9in % wide in the side + \vsize=6.5in % short and stocky + \voffset=.5in % and a little space from the ``margin'' + \nopagenumbers % default is no page numbering + \LandscapeSpecial % actually turns on landscape mode +} + +\def\landscape{\Landscape} % synonym + +% \LandscapeSpecial turns on landscape mode on the laser printer. +% How this is done is very site dependent, but the default is for +% Rokicki's dvips. Change this _in_TXSsite.tex_ if you need to. + +\def\LandscapeSpecial{\special{papersize=11in,8.5in}} + + +%--------------------------------------------------* +% \slides makes slides or transparencies in default 24pt type with +% sensible defaults. It also defines \bl for a blank line and +% \np for new page. +% +\def\slides{% % standard stuff except 12pt: + \quoteon % automatic quote balancing on + \autoparens % automatic paren balancing on + \ATlock % now @ is no longer a letter + \pageno=1 % start on page one + \twentyfourpoint % 24 point type + \doublespaced % double spaced + \raggedright\tolerance=2000 % very ragged right + \hyphenpenalty=500 % hyphens are bad + \raggedbottom % ragged bottom + \nopagenumbers % no numbers + \hoffset=-.25in \hsize=7.0in % to fit 8.5in x 10.5in + \voffset=-.25in \vsize=9.0in % to fit 8.5in x 10.5in + \parindent=30pt % for big type + \def\bl{\vskip\normalbaselineskip}% % blank line + \def\np{\vfill\eject}% % new page + \def\nospace{\nulldelimiterspace=0pt% % autoscale... + \mathsurround=0pt}% % + \def\big##1{{\hbox{$\left##1% % ...\big + \vbox to2ex{}\right.\nospace$}}}% % + \def\Big##1{{\hbox{$\left##1% % ...\Big + \vbox to2.5ex{}\right.\nospace$}}}% % + \def\bigg##1{{\hbox{$\left##1% % ...\bigg + \vbox to3ex{}\right.\nospace$}}}% % + \def\Bigg##1{{\hbox{$\left##1% % ...\Bigg + \vbox to4ex{}\right.\nospace$}}}% + } + +%----------------------------------------------------------------------- +% TWIN PAGE OUTPUT - using macros in twin.txs + +\autoload\twinout{twin.txs} % two pages on one piece of paper + + +% \twinprint sets up a twin column preprint, with the first page +% full with in \twelvepoint and the rest in \tenpoint \twinout format. + +\def\twinprint{% preprint with two pages on one + \preprint % start with \prepriwt + \let\t@tl@=\title % based on \title + \def\title{\vskip-1.5in\t@tl@}% % reduce space + \let\endt@tlep@ge=\endtitlepage % save it + \def\endtitlepage{\endt@tlep@ge % usual \endtitlepage + \twinformat}% % twin column default +} + + +% \twinformat sets up the standard defaults for \twinout, with +% 10pt fonts and no headline offset. + +\def\twinformat{% % 2 pages/page format + \tenpoint\doublespaced % ten point size + \def\Tbf{\twelvebf}\def\tbf{\tenbf}% % title fonts + \headlineoffset=0pt % no extra offset + \twinout} % \twinout format + +% >>> EOF TXSfmts.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSfonts.tex b/Master/texmf-dist/tex/texsis/base/TXSfonts.tex new file mode 100644 index 00000000000..06a03b957d0 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSfonts.tex @@ -0,0 +1,548 @@ +%% file: TXSfonts.tex - TeXsis Font Definitions - TeXsis version 2.18 +%% @(#) $Id: TXSfonts.tex,v 18.2 2001/04/06 21:40:14 myers Exp $ +%======================================================================* +% +% Plain TeX defines only 10pt type (plus smaller sizes for superscripts +% and subscripts). TeXsis uses 9, 10, 11, 12, 14, 16, 20, and 24 point type, +% with 12pt being the default and the larger sizes being used for headings and +% other purposes. The following macros switch sizes: +% \ninepoint 9pt type +% \tenpoint 10pt type +% \elevenpoint 11pt type +% \twelvepoint 12pt type +% \fourteenpoint 14pt type +% \sixteenpoint 16pt type +% \twentypoint 20pt type +% \twentyfourpoint 24pt type +% Within each size the following commands select fonts: +% Command Name Sizes +% \rm Roman 9 10 11 12 14 16 20 24 +% \it Roman italic 9 10 11 12 14 16 20 24 +% \sl Slanted 9 10 11 12 14 16 20 24 +% \bf Roman bold 9 10 11 12 14 16 20 24 +% $ $ Math italic 9 10 11 12 14 16 20 24 +% $ $ Math symbol 9 10 11 12 14 16 20 24 +% $ $ Math extended 9 10 11 12 14 16 20 24 +% \mib Math italic bold 10 11 12 14 16 20 24 +% \tt Typewriter 9 10 11 12 +% --- Sans serif 10 12 14 +% where $ $ indicates fonts used in math mode. +% +% Availability: The available fonts are installation dependent, so this +% file may have to be modified. There are two common problems: +% (1) Some versions of TeX use Almost Modern fonts names starting with +% starting with amxx, while others use Computer Modern fonts with names cmxx. +% Look at Plain.tex to see which you have, and if necessary change =cm to =am +% or conversely. +% (2) Some fonts may be missing. In particular, cmex10 (or amex10) may +% not be available in all sizes. This is used to construct large delimiters, +% etc. Use whatever you have; if \magstep3 is the largest, define +% \font\twentyex=cmex10 scaled \magstep3 +% \font\twentyfourex=cmex10 scaled \magstep3 +% +% Font Loading: In most versions of TeX there is not enough space to +% load all the fonts defined in TeXsis. Hence fonts are loaded only as they +% are used (see \ninefonts ... \twentyfourfonts below). For this to work with +% PCTeX you must reserve font memory. Make a TEXSIS.BAT containing +% c:\pctex\tex &c:\texsis\texsis %1 /f 25000 +% This will allow you to use, e.g., 9pt to 16pt simultaneously. +% +% Support has also been added for Ralph Smith's Formal Script font, +% which is refered to in TeXsis as \scr. Use \scr as you would use \cal. +%======================================================================* +% (C) Copyright 1986, 1992, 1995, 1997, 1999 by Eric Myers and Frank Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +%======================================================================* +\message{TeXsis fonts:} + +\catcode`@=11 % @ is a letter here +\newskip\ttglue + +%======================================================================== +% FONT DEFINITIONS +% Macros to define fonts as they are used. Each redefines itself to be +% \relax after it is first called so that it is disabled. + +%%++ 9 pt fonts: +\def\ninefonts{% + \global\font\ninerm=cmr9 + \global\font\ninei=cmmi9 + \global\font\ninesy=cmsy9 + \global\font\nineex=cmex10 + \global\font\ninebf=cmbx9 + \global\font\ninesl=cmsl9 + \global\font\ninett=cmtt9 + \global\font\nineit=cmti9 + \skewchar\ninei='177 + \skewchar\ninesy='60 + \hyphenchar\ninett=-1 + \moreninefonts % any custom fonts + \gdef\ninefonts{\relax}} + +\def\moreninefonts{\relax} % User customization hook + +%%++ 10 pt fonts: % most alread loaded by Plain +\font\tenss=cmss10 % 10 pt sans serif + +\def\moretenfonts{\relax} % customization hook (unused) + +%%++ 11 pt fonts: +\def\elevenfonts{% + \global\font\elevenrm=cmr10 scaled \magstephalf + \global\font\eleveni=cmmi10 scaled \magstephalf + \global\font\elevensy=cmsy10 scaled \magstephalf + \global\font\elevenex=cmex10 + \global\font\elevenbf=cmbx10 scaled \magstephalf + \global\font\elevensl=cmsl10 scaled \magstephalf + \global\font\eleventt=cmtt10 scaled \magstephalf + \global\font\elevenit=cmti10 scaled \magstephalf + \global\font\elevenss=cmss10 scaled \magstephalf + \skewchar\eleveni='177%% + \skewchar\elevensy='60%% + \hyphenchar\eleventt=-1%% + \moreelevenfonts % any other custom fonts + \gdef\elevenfonts{\relax}}% + +\def\moreelevenfonts{\relax} % User customization hook + +%%++ 12 pt fonts: +\def\twelvefonts{% initialize 12pt fonts + \global\font\twelverm=cmr10 scaled \magstep1%% + \global\font\twelvei=cmmi10 scaled \magstep1%% + \global\font\twelvesy=cmsy10 scaled \magstep1%% + \global\font\twelveex=cmex10 scaled \magstep1%% + \global\font\twelvebf=cmbx10 scaled \magstep1%% + \global\font\twelvesl=cmsl10 scaled \magstep1%% + \global\font\twelvett=cmtt10 scaled \magstep1%% + \global\font\twelveit=cmti10 scaled \magstep1%% + \global\font\twelvess=cmss10 scaled \magstep1%% + \skewchar\twelvei='177%% + \skewchar\twelvesy='60%% + \hyphenchar\twelvett=-1%% + \moretwelvefonts % any other custom fonts + \gdef\twelvefonts{\relax}} + +\def\moretwelvefonts{\relax} % User customization hook + +%%++ 14 pt fonts: +\def\fourteenfonts{% + \global\font\fourteenrm=cmr10 scaled \magstep2%% + \global\font\fourteeni=cmmi10 scaled \magstep2%% + \global\font\fourteensy=cmsy10 scaled \magstep2%% + \global\font\fourteenex=cmex10 scaled \magstep2%% + \global\font\fourteenbf=cmbx10 scaled \magstep2%% + \global\font\fourteensl=cmsl10 scaled \magstep2%% + \global\font\fourteenit=cmti10 scaled \magstep2%% + \global\font\fourteenss=cmss10 scaled \magstep2%% + \skewchar\fourteeni='177%% + \skewchar\fourteensy='60%% + \morefourteenfonts % any custom fonts + \gdef\fourteenfonts{\relax}} + +\def\morefourteenfonts{\relax} % customization hook + +%%++ 16 pt fonts: +\def\sixteenfonts{% + \global\font\sixteenrm=cmr10 scaled \magstep3%% + \global\font\sixteeni=cmmi10 scaled \magstep3%% + \global\font\sixteensy=cmsy10 scaled \magstep3%% + \global\font\sixteenex=cmex10 scaled \magstep3%% + \global\font\sixteenbf=cmbx10 scaled \magstep3%% + \global\font\sixteensl=cmsl10 scaled \magstep3%% + \global\font\sixteenit=cmti10 scaled \magstep3%% + \skewchar\sixteeni='177%% + \skewchar\sixteensy='60%% + \moresixteenfonts % any custom fonts + \gdef\sixteenfonts{\relax}} + +\def\moresixteenfonts{\relax} % User customization hook + +%%++ 20 pt fonts: +\def\twentyfonts{% + \global\font\twentyrm=cmr10 scaled \magstep4%% + \global\font\twentyi=cmmi10 scaled \magstep4%% + \global\font\twentysy=cmsy10 scaled \magstep4%% + \global\font\twentyex=cmex10 scaled \magstep4%% + \global\font\twentybf=cmbx10 scaled \magstep4%% + \global\font\twentysl=cmsl10 scaled \magstep4%% + \global\font\twentyit=cmti10 scaled \magstep4%% + \skewchar\twentyi='177%% + \skewchar\twentysy='60%% + \moretwentyfonts % any custom fonts + \gdef\twentyfonts{\relax}} + +\def\moretwentyfonts{\relax} % User customization hook + +%%++ 24 pt fonts: +\def\twentyfourfonts{% + \global\font\twentyfourrm=cmr10 scaled \magstep5%% + \global\font\twentyfouri=cmmi10 scaled \magstep5%% + \global\font\twentyfoursy=cmsy10 scaled \magstep5%% + \global\font\twentyfourex=cmex10 scaled \magstep5%% + \global\font\twentyfourbf=cmbx10 scaled \magstep5%% + \global\font\twentyfoursl=cmsl10 scaled \magstep5%% + \global\font\twentyfourit=cmti10 scaled \magstep5%% + \skewchar\twentyfouri='177%% + \skewchar\twentyfoursy='60%% + \moretwentyfourfonts % any custom fonts + \gdef\twentyfourfonts{\relax}} + +\def\moretwentyfourfonts{\relax} % User customization hook + +%======================================================================== +% MATH ITALIC BOLD. +% This makes boldfaced Greek characters for titles. Available only +% with cm fonts, generally only in 10pt and larger. Hence we use standard +% math fonts for the smaller sizes. + +% Macros to load math italic bold fonts: + +\def\tenmibfonts{% % ten pt math italic bold + \global\font\tenmib=cmmib10 + \global\font\tenbsy=cmbsy10 + \skewchar\tenmib='177%% + \skewchar\tenbsy='60%% + \gdef\tenmibfonts{\relax}} + +\def\elevenmibfonts{% % eleven pt math italic bold + \global\font\elevenmib=cmmib10 scaled \magstephalf + \global\font\elevenbsy=cmbsy10 scaled \magstephalf + \skewchar\elevenmib='177%% + \skewchar\elevenbsy='60%% + \gdef\elevenmibfonts{\relax}} + +\def\twelvemibfonts{% % twelve pt math italic bold + \global\font\twelvemib=cmmib10 scaled \magstep1%% + \global\font\twelvebsy=cmbsy10 scaled \magstep1%% + \skewchar\twelvemib='177%% + \skewchar\twelvebsy='60%% + \gdef\twelvemibfonts{\relax}} + +\def\fourteenmibfonts{% % fourteen pt math italic bold + \global\font\fourteenmib=cmmib10 scaled \magstep2%% + \global\font\fourteenbsy=cmbsy10 scaled \magstep2%% + \skewchar\fourteenmib='177%% + \skewchar\fourteenbsy='60%% + \gdef\fourteenmibfonts{\relax}} + +\def\sixteenmibfonts{% % sixteen pt math italic bold + \global\font\sixteenmib=cmmib10 scaled \magstep3%% + \global\font\sixteenbsy=cmbsy10 scaled \magstep3%% + \skewchar\sixteenmib='177%% + \skewchar\sixteenbsy='60%% + \gdef\sixteenmibfonts{\relax}} + +\def\twentymibfonts{% % twenty pt math italic bold + \global\font\twentymib=cmmib10 scaled \magstep4%% + \global\font\twentybsy=cmbsy10 scaled \magstep4%% + \skewchar\twentymib='177%% + \skewchar\twentybsy='60%% + \gdef\twentymibfonts{\relax}} + +\def\twentyfourmibfonts{% % twentyfour pt math italic bold + \global\font\twentyfourmib=cmmib10 scaled \magstep5%% + \global\font\twentyfourbsy=cmbsy10 scaled \magstep5%% + \skewchar\twentyfourmib='177%% + \skewchar\twentyfourbsy='60%% + \gdef\twentyfourmibfonts{\relax}} + +% \mib changes to math italic bold by setting \textfont1 and \textfont2 +% to cmmib10 and cmbsy10 respectively. This gets redefined by all the size +% changing macros. +\message{\string\mib,} + +\def\mib{% set math italic bold for use in $...$ + \tenmibfonts + \textfont0=\tenbf\scriptfont0=\sevenbf + \scriptscriptfont0=\fivebf + \textfont1=\tenmib\scriptfont1=\seveni + \scriptscriptfont1=\fivei + \textfont2=\tenbsy\scriptfont2=\sevensy + \scriptscriptfont2=\fivesy} + +%======================================================================* +% FORMAL SCRIPT FONT: rsfs (if you have it. If not, get it!) +% +% The following allows the use of Ralph Smith's Formal Script symbols +% in Plain TeX documents. Just use \scr in place of \cal. +\message{\string\scr,} + +% Initialize \scr fonts; these may not exist on your system, and if +% they do, some maginfications may be missing, but today's kpathsea +% and MakeTeXPK make it more likely that you can use it. +% You can get the MetaFont sources from ftp.texsis.org + +\newfam\scrfam % Define the new font family + +% Use \scr to change fonts. If you don't have these fonts then +% replace this with \let\scr=\cal in TXSsite.tex + +\def\scr{\scrfonts\fam\scrfam\tenscr % switch to rsfs fonts as \scr + \global\textfont\scrfam=\tenscr\global\scriptfont\scrfam=\sevenscr + \global\scriptscriptfont\scrfam=\fivescr} + + +% \scrfonts does a once-only initialization of the files, normally +% the first time \scr is invoked. Then the \scr for a given font size +% sets the textfont, scriptfont and scriptscriptfont + +\def\scrfonts{% initialize rsfs fonts for \scr + \global\font\twentyfourscr=rsfs10 scaled \magstep5 % 24 pt + \global\font\twentyscr=rsfs10 scaled \magstep4 % 20 pt + \global\font\sixteenscr=rsfs10 scaled \magstep3 % 16 pt + \global\font\fourteenscr=rsfs10 scaled \magstep2 % 14 pt + \global\font\twelvescr=rsfs10 scaled \magstep1 % 12 pt + \global\font\elevenscr=rsfs10 scaled \magstephalf % 11 pt + \global\font\tenscr=rsfs10 % 10 pt + \global\font\ninescr=rsfs7 scaled \magstep1 % 9 pt + \global\font\sevenscr=rsfs7 % 7 pt + \global\font\fivescr=rsfs5 % 5 pt + \global\skewchar\tenscr='177 \global\skewchar\sevenscr='177%% + \global\skewchar\fivescr='177%% + \global\textfont\scrfam=\tenscr\global\scriptfont\scrfam=\sevenscr + \global\scriptscriptfont\scrfam=\fivescr + \gdef\scrfonts{\relax}} % disable when done once + +%======================================================================== +% FONT SIZES +% Macros to change font sizes. Each of these load the relevant +% fonts the first time it is called, so we don't load fonts until needed. + +% Switch to 9 point type +\message{9pt,} +\def\ninepoint{\ninefonts % load 9pt fonts if needed + \def\rm{\fam0\ninerm}% + \textfont0=\ninerm\scriptfont0=\sevenrm\scriptscriptfont0=\fiverm + \textfont1=\ninei\scriptfont1=\seveni\scriptscriptfont1=\fivei + \textfont2=\ninesy\scriptfont2=\sevensy\scriptscriptfont2=\fivesy + \textfont3=\nineex\scriptfont3=\nineex\scriptscriptfont3=\nineex + \textfont\itfam=\nineit\def\it{\fam\itfam\nineit}% + \textfont\slfam=\ninesl\def\sl{\fam\slfam\ninesl}% + \textfont\ttfam=\ninett\def\tt{\fam\ttfam\ninett}% + \textfont\bffam=\ninebf + \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf\def\bf{\fam\bffam\ninebf}% + \def\mib{\relax}% + \def\scr{\relax}% + \tt\ttglue=.5emplus.25emminus.15em + \normalbaselineskip=11pt + \setbox\strutbox=\hbox{\vrule height 8pt depth 3pt width 0pt}% + \normalbaselines\rm\singlespaced}% + + +% Switch to 10 point type +\message{10pt,} +\def\tenpoint{% % 10pt already loaded by default + \def\rm{\fam0\tenrm}% + \textfont0=\tenrm\scriptfont0=\sevenrm\scriptscriptfont0=\fiverm + \textfont1=\teni\scriptfont1=\seveni\scriptscriptfont1=\fivei + \textfont2=\tensy\scriptfont2=\sevensy\scriptscriptfont2=\fivesy + \textfont3=\tenex\scriptfont3=\tenex\scriptscriptfont3=\tenex + \textfont\itfam=\tenit\def\it{\fam\itfam\tenit}% + \textfont\slfam=\tensl\def\sl{\fam\slfam\tensl}% + \textfont\ttfam=\tentt\def\tt{\fam\ttfam\tentt}% + \textfont\bffam=\tenbf + \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf\def\bf{\fam\bffam\tenbf}% + \def\mib{% + \tenmibfonts + \textfont0=\tenbf\scriptfont0=\sevenbf + \scriptscriptfont0=\fivebf + \textfont1=\tenmib\scriptfont1=\seveni + \scriptscriptfont1=\fivei + \textfont2=\tenbsy\scriptfont2=\sevensy + \scriptscriptfont2=\fivesy}% + \def\scr{\scrfonts\fam\scrfam\tenscr + \global\textfont\scrfam=\tenscr\global\scriptfont\scrfam=\sevenscr + \global\scriptscriptfont\scrfam=\fivescr}% + \tt\ttglue=.5emplus.25emminus.15em + \normalbaselineskip=12pt + \setbox\strutbox=\hbox{\vrule height 8.5pt depth 3.5pt width 0pt}% + \normalbaselines\rm\singlespaced}% + +% Switch to 11 point type +\message{11pt,} +\def\elevenpoint{\elevenfonts % load 11pt fonts if needed + \def\rm{\fam0\elevenrm}% + \textfont0=\elevenrm\scriptfont0=\sevenrm\scriptscriptfont0=\fiverm + \textfont1=\eleveni\scriptfont1=\seveni\scriptscriptfont1=\fivei + \textfont2=\elevensy\scriptfont2=\sevensy\scriptscriptfont2=\fivesy + \textfont3=\elevenex\scriptfont3=\elevenex\scriptscriptfont3=\elevenex + \textfont\itfam=\elevenit\def\it{\fam\itfam\elevenit}% + \textfont\slfam=\elevensl\def\sl{\fam\slfam\elevensl}% + \textfont\ttfam=\eleventt\def\tt{\fam\ttfam\eleventt}% + \textfont\bffam=\elevenbf + \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf\def\bf{\fam\bffam\elevenbf}% + \def\mib{% + \elevenmibfonts + \textfont0=\elevenbf\scriptfont0=\sevenbf + \scriptscriptfont0=\fivebf + \textfont1=\elevenmib\scriptfont1=\seveni + \scriptscriptfont1=\fivei + \textfont2=\elevenbsy\scriptfont2=\sevensy + \scriptscriptfont2=\fivesy}% + \def\scr{\scrfonts\fam\scrfam\elevenscr + \global\textfont\scrfam=\elevenscr\global\scriptfont\scrfam=\sevenscr + \global\scriptscriptfont\scrfam=\fivescr}% + \tt\ttglue=.5emplus.25emminus.15em + \normalbaselineskip=13pt + \setbox\strutbox=\hbox{\vrule height 9pt depth 4pt width 0pt}% + \normalbaselines\rm\singlespaced}% + +% Switch to 12 point type +\message{12pt,} +\def\twelvepoint{\twelvefonts\ninefonts % load 12pt and 9pt fonts if needed + \def\rm{\fam0\twelverm}% + \textfont0=\twelverm\scriptfont0=\ninerm\scriptscriptfont0=\sevenrm + \textfont1=\twelvei\scriptfont1=\ninei\scriptscriptfont1=\seveni + \textfont2=\twelvesy\scriptfont2=\ninesy\scriptscriptfont2=\sevensy + \textfont3=\twelveex\scriptfont3=\twelveex\scriptscriptfont3=\twelveex + \textfont\itfam=\twelveit\def\it{\fam\itfam\twelveit}% + \textfont\slfam=\twelvesl\def\sl{\fam\slfam\twelvesl}% + \textfont\ttfam=\twelvett\def\tt{\fam\ttfam\twelvett}% + \textfont\bffam=\twelvebf + \scriptfont\bffam=\ninebf + \scriptscriptfont\bffam=\sevenbf\def\bf{\fam\bffam\twelvebf}% + \def\mib{% + \twelvemibfonts\tenmibfonts + \textfont0=\twelvebf\scriptfont0=\ninebf + \scriptscriptfont0=\sevenbf + \textfont1=\twelvemib\scriptfont1=\ninei + \scriptscriptfont1=\seveni + \textfont2=\twelvebsy\scriptfont2=\ninesy + \scriptscriptfont2=\sevensy}% + \def\scr{\scrfonts\fam\scrfam\twelvescr + \global\textfont\scrfam=\twelvescr\global\scriptfont\scrfam=\ninescr + \global\scriptscriptfont\scrfam=\sevenscr}% + \tt\ttglue=.5emplus.25emminus.15em + \normalbaselineskip=14pt + \setbox\strutbox=\hbox{\vrule height 10pt depth 4pt width 0pt}% + \normalbaselines\rm\singlespaced}% + +% Switch to 14 point type +\message{14pt,} +\def\fourteenpoint{\fourteenfonts\twelvefonts % load fonts as needed + \def\rm{\fam0\fourteenrm}% + \textfont0=\fourteenrm\scriptfont0=\twelverm\scriptscriptfont0=\tenrm + \textfont1=\fourteeni\scriptfont1=\twelvei\scriptscriptfont1=\teni + \textfont2=\fourteensy\scriptfont2=\twelvesy\scriptscriptfont2=\tensy + \textfont3=\fourteenex\scriptfont3=\fourteenex + \scriptscriptfont3=\fourteenex + \textfont\itfam=\fourteenit\def\it{\fam\itfam\fourteenit}% + \textfont\slfam=\fourteensl\def\sl{\fam\slfam\fourteensl}% + \textfont\bffam=\fourteenbf + \scriptfont\bffam=\twelvebf + \scriptscriptfont\bffam=\tenbf\def\bf{\fam\bffam\fourteenbf}% + \def\mib{% + \fourteenmibfonts\twelvemibfonts\tenmibfonts + \textfont0=\fourteenbf\scriptfont0=\twelvebf + \scriptscriptfont0=\tenbf + \textfont1=\fourteenmib\scriptfont1=\twelvemib + \scriptscriptfont1=\tenmib + \textfont2=\fourteenbsy\scriptfont2=\twelvebsy + \scriptscriptfont2=\tenbsy}% + \def\scr{\scrfonts\fam\scrfam\fourteenscr + \global\textfont\scrfam=\fourteenscr\global\scriptfont\scrfam=\twelvescr + \global\scriptscriptfont\scrfam=\tenscr}% + \normalbaselineskip=17pt + \setbox\strutbox=\hbox{\vrule height 12pt depth 5pt width 0pt}% + \normalbaselines\rm\singlespaced}% + +% Switch to 16 point type +\message{16pt,} +\def\sixteenpoint{\sixteenfonts\fourteenfonts\twelvefonts % load fonts as needed + \def\rm{\fam0\sixteenrm}% + \textfont0=\sixteenrm\scriptfont0=\fourteenrm\scriptscriptfont0=\twelverm + \textfont1=\sixteeni\scriptfont1=\fourteeni\scriptscriptfont1=\twelvei + \textfont2=\sixteensy\scriptfont2=\fourteensy\scriptscriptfont2=\twelvesy + \textfont3=\sixteenex\scriptfont3=\sixteenex\scriptscriptfont3=\sixteenex + \textfont\itfam=\sixteenit\def\it{\fam\itfam\sixteenit}% + \textfont\slfam=\sixteensl\def\sl{\fam\slfam\sixteensl}% + \textfont\bffam=\sixteenbf% + \scriptfont\bffam=\fourteenbf% + \scriptscriptfont\bffam=\twelvebf\def\bf{\fam\bffam\sixteenbf}% + \def\mib{% + \sixteenmibfonts\fourteenmibfonts\twelvemibfonts + \textfont0=\sixteenbf\scriptfont0=\fourteenbf + \scriptscriptfont0=\twelvebf + \textfont1=\sixteenmib\scriptfont1=\fourteenmib + \scriptscriptfont1=\twelvemib + \textfont2=\sixteenbsy\scriptfont2=\fourteenbsy + \scriptscriptfont2=\twelvebsy}% + \def\scr{\scrfonts\fam\scrfam\sixteenscr + \global\textfont\scrfam=\sixteenscr\global\scriptfont\scrfam=\fourteenscr + \global\scriptscriptfont\scrfam=\twelvescr}% + \normalbaselineskip=20pt% + \setbox\strutbox=\hbox{\vrule height 14pt depth 6pt width 0pt}% + \normalbaselines\rm\singlespaced}% + +% Switch to 20 point type +\message{20pt,} +\def\twentypoint{\twentyfonts\sixteenfonts\fourteenfonts % load fonts + \def\rm{\fam0\twentyrm}% + \textfont0=\twentyrm\scriptfont0=\sixteenrm\scriptscriptfont0=\fourteenrm + \textfont1=\twentyi\scriptfont1=\sixteeni\scriptscriptfont1=\fourteeni + \textfont2=\twentysy\scriptfont2=\sixteensy\scriptscriptfont2=\fourteensy + \textfont3=\twentyex\scriptfont3=\twentyex\scriptscriptfont3=\twentyex + \textfont\itfam=\twentyit\def\it{\fam\itfam\twentyit}% + \textfont\slfam=\twentysl\def\sl{\fam\slfam\twentysl}% + \textfont\bffam=\twentybf + \scriptfont\bffam=\sixteenbf + \scriptscriptfont\bffam=\fourteenbf\def\bf{\fam\bffam\twentybf}% + \def\mib{% + \twentymibfonts\sixteenmibfonts\fourteenmibfonts% + \textfont0=\twentybf\scriptfont0=\sixteenbf% + \scriptscriptfont0=\fourteenbf% + \textfont1=\twentymib\scriptfont1=\sixteenmib% + \scriptscriptfont1=\fourteenmib% + \textfont2=\twentybsy\scriptfont2=\sixteenbsy% + \scriptscriptfont2=\fourteenbsy}% + \def\scr{\scrfonts + \global\textfont\scrfam=\twentyscr\fam\scrfam\twentyscr}% + \normalbaselineskip=24pt + \setbox\strutbox=\hbox{\vrule height 17pt depth 7pt width 0pt}% + \normalbaselines\rm\singlespaced}% + +% Switch to 24 point type +\message{24pt.} +\def\twentyfourpoint{\twentyfourfonts\twentyfonts\sixteenfonts % load fonts + \def\rm{\fam0\twentyfourrm}% + \textfont0=\twentyfourrm\scriptfont0=\twentyrm\scriptscriptfont0=\sixteenrm + \textfont1=\twentyfouri\scriptfont1=\twentyi\scriptscriptfont1=\sixteeni + \textfont2=\twentyfoursy\scriptfont2=\twentysy\scriptscriptfont2=\sixteensy + \textfont3=\twentyfourex\scriptfont3=\twentyfourex + \scriptscriptfont3=\twentyfourex + \textfont\itfam=\twentyfourit\def\it{\fam\itfam\twentyfourit}% + \textfont\slfam=\twentyfoursl\def\sl{\fam\slfam\twentyfoursl}% + \textfont\bffam=\twentyfourbf + \scriptfont\bffam=\twentybf + \scriptscriptfont\bffam=\sixteenbf\def\bf{\fam\bffam\twentyfourbf}% + \def\mib{% + \twentyfourmibfonts\twentymibfonts\sixteenmibfonts% + \textfont0=\twentyfourbf\scriptfont0=\twentybf + \scriptscriptfont0=\sixteenbf + \textfont1=\twentyfourmib\scriptfont1=\twentymib + \scriptscriptfont1=\sixteenmib + \textfont2=\twentyfourbsy\scriptfont2=\twentybsy + \scriptscriptfont2=\sixteenbsy}% + \def\scr{\scrfonts + \global\textfont\scrfam=\twentyfourscr\fam\scrfam\twentyfourscr}% + \normalbaselineskip=28pt + \setbox\strutbox=\hbox{\vrule height 19pt depth 9pt width 0pt}% + \normalbaselines\rm\singlespaced}% + +%------------------------------------------------------------------------ +% Starting defaults: + +\def\Tbf{\fourteenpoint\bf} +\def\tbf{\twelvepoint\bf} + +% \autoload isn't defined yet, so we have to do this to defer, but +% this is the same as just \autoload'ing it. + +\def\printfont{\autoload\printfont{printfont.txs}\printfont} + +%>>> EOF TXSfonts.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXShead.tex b/Master/texmf-dist/tex/texsis/base/TXShead.tex new file mode 100644 index 00000000000..02633b97d19 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXShead.tex @@ -0,0 +1,151 @@ +%% file: TXShead.tex - Running Headlines - TeXsis version 2.18 +%% @(#) $Id: TXShead.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% RUNNING HEADLINES (and footlines) with page numbers +% +% This is an alternative definition of \makeheadline, which can be +% used to put the running headlines in the right position. A new dimension +% called \headlineoffset specifies how much the headline is to be RAISED. +% The default, which is zero, puts the headline in the "usual" place. +% Similarly, \footlineoffset LOWERS the footline an extra bit. To meet +% the Yale Graduate School guidelines I used \headlineoffset=0.2in. +% +% This file is a part of TeXsis. +% (C) copyright 1991, 1997 by Eric Myers and Frank Paige +%======================================================================* +\message{Running Headlines.} + +\newdimen\headlineoffset \headlineoffset=0.0cm % how much to raise +\newdimen\footlineoffset \footlineoffset=0.0cm % how much to lower + +\newif\ifRunningHeads \RunningHeadsfalse % default: off +\newif\ifbookpagenumbers \bookpagenumbersfalse % default: off +\newif\ifrightn@m \rightn@mtrue % default: right + + +% re-define \makeheadline and \makefootline from Plain TeX to +% allow for moving the headlines up and footlines down + +\def\makeheadline{\vbox to 0pt{\vskip-22.5pt + \vskip-\headlineoffset % raises the headline an extra bit + \line{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip} + +\def\makefootline{\baselineskip=24pt % normal skip to footline + \vskip\footlineoffset % lower the footline an extra bit + \line{\the\footline}} + + +% \Headline and \Footline actually create the running head and foot +% lines. We make \the\headline=\HeadLine and \the\footline=\FootLine. For +% the first page of a chapter there is no headline, and no page number. For +% subsequent pages there is a running head line with page number, and nothing +% at the bottom of the page. The text of the running head and foot lines is +% kept in \HeadText and \FootText. \chapter and \section make their arguments +% the running head text, but you can change this by re-defining \HeadText +% immediately after calling these macros. By default the headline is written +% in italics; you can change this yourself in \HeadText. + +%-%\headline={\HeadLine} % headline executes \HeadLine + + +% \HeadLine uses marks to turn off headline on first pages. \HeadText +% contains the text; \He@dText is set to it or \relax depending on +% \ifRunningHeads. + +\def\HeadLine{% + \edef\firstm{{\XA\iffalse\firstmark\fi}}% chapternumber of \firstmark + \edef\topm{{\XA\iffalse\topmark\fi}}% chapternumber of \topmark + \ifRunningHeads % print running heads? + \def\He@dText{{\HeadFont \HeadText}}% head text in \HeadFont + \else\def\He@dText{\relax}\fi % or nothing + \ifbookpagenumbers % book-like numbering + \ifodd\pageno\rightn@mtrue % odd numbers right + \else\rightn@mfalse\fi % even numbers left + \else\rightn@mtrue\fi % or always right + \tenrm % page number in Roman + \ifx\topm\firstm % Marks the same? + \ifrightn@m % number on right? + {\hss\He@dText\hss\llap{\HeadFont\rm\PageNumber}}% + \else % or on left + {\rlap{\HeadFont\rm\PageNumber}\hss\He@dText\hss}% + \fi + \else \hfill \fi}% % NOTHING ON FIRST PAGE of chapter + +\def\HeadText{\hfill} + +%-%\footline={\FootLine} + +\def\FootLine{% + \edef\firstm{% + {\expandafter\iffalse\firstmark\fi}}% get first mark + \edef\topm{% + {\expandafter\iffalse\topmark\fi}}% and top mark + \ifx\topm\firstm \hss % if not page 1, nothing + \else {\hss\HeadFont \FootText \hss} \fi} % print \FootText if page 1 + +\def\FootText{\hfill} % nothing by default + +\def\HeadFont{\tenit} % default is 10pt Roman italic + + +% Page numbers are links to the table of contents, but they also +% have names so you can link to them. You should be able to have both +% href= and name= in the same anchor, but that fails in HyperTeXview +% for now. + +\begingroup + \catcode`<=12 \catcode`>=12 \catcode`\"=12 + \gdef\PageLinkto#1{% + \html{<a href="\hash sect.TOC">}% + \html{<a NAME="page.\the\pageno">}% + {#1}\html{</a>}% + \html{</a>}% + }% +\endgroup + +\def\PageNumber{\PageLinkto{\folio}}% default is just \folio + + +%-------------------------* +% In Plain TeX \nopagenumbers turns off the page numbering by making +% the footline \hfil. In TeXsis, pagenumbers can appear on the +% headline instead, so we turn that off too. + +\def\nopagenumbers{\headline={\hfil}\footline={\hfil}}% + +% We'd like to turn it back on, or put them at the bottom. + +\def\pagenumbers{\headline={\HeadLine}\footline={\FootLine}} +\def\bottompagenumbers{\footline={\hfill{\rm\PageNumber}\hfill}% + \headline={\hfill}} + +% -- This just sets the flag for odd/even page numbers + +\def\bookpagenumbers{\bookpagenumberstrue} + +%======================================================================* +% BINDING MARGIN +% Add extra binding margin on left side for even pages and on +% right side for odd ones. Assumes (for now) \hoffset=0pt. + +% Just like standard \plainoutput except for \makeBindingMargin. +\def\plainoutput{% \plainoutput with binding margin + \makeBindingMargin + \shipout\vbox{\makeheadline\pagebody\makefootline}% + \advancepageno + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} + +% Extra margin for binding +\newdimen\BindingMargin \BindingMargin=0pt + +% Insert extra \BindingMargin on left side of odd numbered pages and right +% side of even numbered ones. But do nothing if \BindingMargin=0pt so as not +% to clobber user's \hoffset. The user must adjust other page dimensions by +% hand. + +\def\makeBindingMargin{% add \BindingMargin in \output + \ifdim\BindingMargin>0pt + \ifodd\pageno\hoffset=\BindingMargin\else + \hoffset=-\BindingMargin\fi\fi} + +%>>> EOF TXShead.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSinit.tex b/Master/texmf-dist/tex/texsis/base/TXSinit.tex new file mode 100644 index 00000000000..89f038b6208 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSinit.tex @@ -0,0 +1,281 @@ +%% file: TXSinit.tex - Initialization - TeXsis version 2.18 +%% @(#) $Id: TXSinit.tex,v 18.2 2000/05/16 22:44:04 myers Exp $ +%======================================================================* +% Initialization for TeXsis: +% +% Initial settings, run-time initialization, date macros, counters, +% read site file and/or patch file, autoloading style files. +% +%======================================================================* +% (C) copyright 1991, 1993, 1999 by Eric Myers and Frank E. Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +%======================================================================* +\message{Initialization.} + +% Make @ signs act like letters, temporarily, to avoid conflict +% between user names and internal control sequences of plain format. +% \texsis changes this back at run time + +\catcode`@=11 + +%==================================================* +% RUN TIME INITIALIZATION for opening files and such is now +% performed by the macros that use those files. \texsis just +% sets up the TeXsis defaults, instead of the Plain TeX defaults. + +\long\def\texsis{% initialization to TeXsis defaults + \quoteon % automatic quote balancing is ON + \Contentsfalse % table of contents is OFF by default + \autoparens % automatic paren balancing is ON + \ATlock % now @ is no longer a letter + \resetcounters % reset all \global counters + \pageno=1 % be sure to start on page one + \colwidth=\hsize % column width assumed \hsize + \headline={\HeadLine}\headlineoffset=0.5cm % TeXsis running headlines + \footline={\FootLine}\footlineoffset=0.5cm % and footlines + \twelvepoint % start in 12 pt type + \doublespaced % and doublespaced + \newlinechar=`\^^M % <CR> breaks lines in file output +% set some integer parameters: + \uchyph=\@ne % allow capitalized words to be split + \brokenpenalty=\@M % don't break hyphens across pages + \widowpenalty=\@M % ``widow'' line penalty at end of par + \clubpenalty=\@M % ``club'' line penalty at start of par + \dimen\footins=0.5\vsize % footnotes up at most half the page +} + +% Older synonyms for \texsis, now obsolete (with variations) + +\obsolete\inittexsis\texsis \obsolete\texsisinit\texsis +\obsolete\initexsis\texsis \obsolete\initTeXsis\texsis + +% Detect and warn about LaTeX + +\def\LaTeXwarning{\emsg{> }% + \emsg{> Whoops! This seems to be a LaTeX file.}% + \emsg{> Try saying `latex \jobname` instead.}% + \emsg{> }\end} +\def\documentstyle{\LaTeXwarning} +\def\@writefile{\LaTeXwarning} + +%----------------------------------------------------------------------- +% \today gives today's date (unless \dated is called to override) + +\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 + \ \number\year} + +\let\@today=\today % save a version of \today in any case + +% \dated{date} redefines \today to be whatever date you want. + +\def\dated#1{\xdef\today{#1}} + + +% \SetDate sets \adate (American) and \edate (European) to today's date. +% Also, \hour is the current hour, \minutes is the current minutes, +% and \runtime is the current date and time as yyyy/mm/dd hh:mm + +\def\SetDate{% define current date and time stamps + \xdef\adate{\monthname{\the\month}~\number\day, \number\year}% + \xdef\edate{\number\day~\monthname{\the\month}~\number\year}% + \count255=\time\divide\count255 by 60 % + \edef\hour{\the\count255}% % current \hour + \multiply\count255 by -60 \advance\count255 by\time % get minutes + \edef\minutes{\ifnum 10>\count255 {0}\fi\the\count255}% minutes, w/ leading 0 + \edef\runtime{\the\year/\the\month/\the\day\space\hour:\minutes}} + + +% Counters are defined in the files where they are used, but we can +% reset them here. We will be careful about not assuming that something +% has already been defined. The general rule is that the counter should +% hold the value for the most recent usage, so we can refer to it later +% without having to subtract one from it. This also allows us a way to +% determine if a given counter has been used; for example, if any +% \subsections have appeared in the current section then the count will +% be non-zero. + +\def\gzero#1{\ifx#1\undefined\relax\else\global#1=\z@\fi} + +\def\resetcounters{% reset all \global TeXsis counters + \gzero\chapternum \gzero\sectionnum \gzero\subsectionnum + \gzero\theoremnum \gzero\lemmanum \gzero\subsubsectionnum + \gzero\tabnum \gzero\fignum \gzero\definitionnum + \gzero\@BadRefs \gzero\@BadTags \gzero\@quoteflag + \gzero\@envDepth \gzero\enumDepth \gzero\enumcnt + \gzero\refnum \gzero\eqnum \gzero\corollarynum + \global\@firstrefnum=1\global\@lastrefnum=1 +} + + +% Generic working file/aux file initialization: +% \@FileInit\writename=filename[Description] opens a file w/ a header + +\def\@FileInit#1=#2[#3]{% generic auxiliary file initialization + \immediate\openout#1=#2 \relax % + \immediate\write#1{\@comment #3 for job \jobname\space - created: \runtime}% + \immediate\write#1{\@comment ====================================}} + + +%==================================================* +% \LoadSiteFile looks for the file TXSsite.tex and reads it in. +% This is only done once when INITEX is run to create the format +% file, not everytime texsis is invoked. We first try to see if the +% file exists, and if so just load it silently. If we can't see it we +% say something before the \input to help out in case it's not found. +% See Note 3 below in ``Autoloaded Styles'' for further explaination. + +\newread\txsfile % input for style files and run-time patches +\let\patchfile=\txsfile + +\def\LoadSiteFile{% load the site info file TXSsite.tex + \immediate\openin\patchfile=TXSsite.tex % try to open patch file + \ifeof\patchfile % if EOF then it is not there + \emsg{> No TXSsite.tex file found.}% + \immediate\closein\patchfile % close it to be sure + \else + \emsg{> Trying to read in TXSsite.tex...}% + \immediate\closein\patchfile % close it to read with \input + \input TXSsite.tex \relax % \input the site info + \fi} + + +%==================================================* +% \ReadPatches looks to see if there is a patch file out there called +% \TXSpatches. If so, it is read in. These should be run-time updates +% and small patches and such. You can change the name (or put a path +% in the name!) by re-defining \TXSpatches in TXSsite.tex when building +% the format file. \ReadPatches is inclued in \everyjob so it's done +% whenever you run texsis. This will not work on OZTeX or others +% which do not treat \openin and \ifeof properly. Tough luck. +% See Note 3 below in ``Autoloaded Styles'' for further explaination. + +\def\ReadPatches{% read in a patch/mod files, if they exist + \immediate\openin\patchfile=\TXSpatches.tex % try to open patch file + \ifeof\patchfile % if EOF then it isn't there + \closein\patchfile % so just close it. + \else\immediate\closein\patchfile % close so to \input + \input\TXSpatches.tex \relax % \input the patches + \fi +% +% ALso look to see if there is a modifications file out there called +% TXSmods.tex (or change the name in \TXSmods). If so, read this +% in too. This should contain personal modifications to macros and +% such, not system patches. +% + \immediate\openin\patchfile=\TXSmods.tex \relax% try to open mod file + \ifeof\patchfile % if EOF then it isn't there + \closein\patchfile % so just close it. + \else\immediate\closein\patchfile % close it to \input + \input\TXSmods.tex \relax % \input the mod file + \fi} + +%======================================================================* +% LOADED and AUTOLOADED styles: +% +% Special document layouts can be loaded from a ``style'' file as needed. +% To load a particluar layout called \foo from the file foobar.txs use: +% +% \loadstyle\foo{foobar.txs} +% +% (This is similar to \documentstyle in LaTeX, but we consider that +% to be a reserved word for LaTeX.) By convention TeXsis style files +% end with ``.txs'' to distinguish them from LaTeX style files. +% +% Note 1: The style file foobar.txs must be readable at run time, +% either from the current directory, in one of the directories +% where your particular version of TeX looks for the \input command. +% +% Note 2: The control sequence \foo must be redefined in the style +% file, since the new version of \foo is invoked after the file is +% loaded. If it is not redefined we avoid the potential infinite loop +% and instead print an error message. +% +% Note 3: We have used \openin to try to determine if the file to load +% exists, but some implementations of TeX do not look through the whole +% TEXINPUTS path for \openin (as they do for \input), and some do not +% treat \ifeof correctly in any case, so this is not a reliable test. +% We consider this a bug, but we have to live with it until those guys +% get their TeX fixed! So meanwhile if we think that the \input might +% fail we print a message to say what we are trying to do before doing it. + +\def\loadstyle#1#2{% % load a definition for #1 from file #2 + \def#1{\@loaderr{#1}}% % disable #1 (just in case...) + \ATunlock % make @ a letter, in case it's in the file + \immediate\openin\txsfile=#2 % try to open the file to see if it exists + \ifeof\txsfile % if end of file, then print a message + \emsg{> Trying to load the style file #2...}% before trying to \input + \fi % + \closein\txsfile % just close the file in any case + \input #2 \relax % load (or try to) the file with the new \def + \ATlock % @ now no longer a letter + #1} % now use the new definition + + +% It's an error if the macro #1 above was not redefined in the style +% file: [And if we didn't change the definition of #1 to something else +% we would just keep reading the (non-existent) file over and over!] + +\newhelp\@utohelp{% +loadstyle: The macro named above was supposed to be defined^^M% +In the style file that was just read, but I couldn't find^^M% +the definition in that file. Maybe you can learn something^^M% +from the comments in that style file, or find someone who knows^^M% +something about it.} + +\def\@loaderr#1{% error message for \loadstyle + \newlinechar=`\^^M % ^^M is line break + \errhelp=\@utohelp % longer help message + \errmessage{No definition of \string#1 in the style file.}} + + +% AUTOLOAD: +% Many of the most basic special document layouts are kept in +% style files, but we don't want the user to have to know which +% file is which. Hence we use \autoload to tell it to automatically +% load the true definition from the style file if the layout +% (or something from inside it) is called for. +% \autoload\foo{file} defines \foo so that it's full definition +% is read from the named file when \foo is invoked. +% +% [Note one problem: if called inside a group then the definitions +% will go away when the group ends!] + +\def\autoload#1#2{% automatically load a definition from a file + \def#1{\loadstyle#1{#2}}} + + +% List of autoloaded document styles: + +\autoload\PhysRev{PhysRev.txs} % Physical Review 2-column +\autoload\PhysRevLett{PhysRev.txs} % Physical Review Letters +\autoload\PhysRevManuscript{PhysRev.txs}% Physical Review manuscript +\autoload\nuclproc{nuclproc.txs} % Nuclear Physics proceedings +\autoload\NorthHolland{Elsevier.txs} % North-Holland single column +\autoload\NorthHollandTwo{Elsevier.txs} % North-Holland double column +\autoload\WorldScientific{WorldSci.txs} % World-Scientific proceedings +\autoload\IEEEproceedings{IEEE.txs} % IEEE conference proceedings +\autoload\IEEEreduced{IEEE.txs} % 75% reduced IEEE proceedings +\autoload\AIPproceedings{AIP.txs} % American Institute of Physics +\autoload\CVformat{CVformat.txs} % sample macros for Curriculum Vitae + +% Indexing macros using MakeIndex: + +\autoload\idx{index.tex}\autoload\index{index.tex}\autoload\theindex{index.tex} +\autoload\markindexfalse{index.tex}\autoload\markindextrue{index.tex} +\autoload\makeindexfalse{index.tex}\autoload\makeindextrue{index.tex} + +% Assorted tools + +\autoload\spine{spine.txs} + +% Other styles which you want to be automatically loaded can +% defined in the local customization file TXSsite.tex. + +% For the other basic document styles which are not loaded from style +% files see TXSfmts.tex. + +%>>> EOF TXSinit.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSletr.tex b/Master/texmf-dist/tex/texsis/base/TXSletr.tex new file mode 100644 index 00000000000..1d1540710be --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSletr.tex @@ -0,0 +1,357 @@ +%% file: TXSletr.tex - Letter Format - TeXsis version 2.18 +%% @(#) $Id: TXSletr.tex,v 18.1 2000/06/01 21:49:58 myers Exp $ +%======================================================================* +% +% A format for typing simple business letters. These macros +% follow closely the letter format given in The TeXbook. The macros +% here are tuned for BNL stationary, but can easily be adapted for +% other stationary. A typical letter would look like: +% +% \letter % set up letter document format +% \withEnvelope % to create an envelope too +% \letterhead{xxxx} % xxxx is phone extension +% \address % get address in box +% <name and address> % line endings are respected! +% \body % text of letter follows +% Dear whoever, +% +% <text of your letter> +% +% \closing % begin closing +% Sincerely yours, % closing salutation, indented +% Your Name % indented, followed by a space +% Your Title % optional additional line(s) +% \annotations % initials, enclosures, etc. +% <text> % can also use \ps +% \cc <name> % carbon copies +% <name> % to more than one person +% \bye % end of letter +% +% ----------------------------------------------------------------------- +\message{Letter Format,} +\catcode`@=11 % @ is a letter here + +% dimensions, counters, and boxes: \hdimphone and \vdimphone are the +% positions relative to the page edge -- not the print boundaries -- of the +% telephone number in \phoneletterhead. They are correct here for BNL +% stationary. Similarly, \hdimdate and \vdimdate are the positions for the +% date. These can be changed in TXSsite.tex to fit other stationary with +% a generally similar format. + +\newdimen\headlineoffset \headlineoffset = 0.25 truein +\newdimen\longindent \longindent = 3.5 truein + +\newdimen\hdimphone \hdimphone = 6.2truein +\newdimen\vdimphone \vdimphone = 1.9truein +\newdimen\hdimdate \hdimdate = 5.5truein +\newdimen\vdimdate \vdimdate = 2.15truein + +\newskip\bigletterskip % skip down before address +\bigletterskip=0.5 true in plus 0.5 true in minus .375 true in + +% ----------------------------------------------------------------------- +% Initialization. \LetterFormat is called by \letter but can also be +% called separately. + +\def\LetterFormat{% % + \nopagenumbers % kill page numbers + \singlespaced % letters always begin \singlespaced + \quoteon % automatic open/close quotes + \headline={\LetterHeadline}% % running headline has addressee + \let\endmode=\par % start with this for \endmode + \def\addressee{}\def\theAddress{}% % start with no addressee or address + \let\date=\letterdate % \date puts date on top of letter + \let\body=\letterbody % \body begins text of letter + \obsolete\text\body % \text is obsolete as of 2.17 + \let\cc=\ccletr % carbon copy for letters +} + +\def\Letter{% document format for letters + \ContentsSwitchfalse % no table of contents + \refswitchfalse % no reference list + \auxswitchfalse % no forward references + \texsis % initialize + \LetterFormat} % Setup using \LetterFormat + +\def\letter{\Letter} % synonym + + +% \LetterHeadline does the running heads for pages after the first + +\def\LetterHeadline{% % headline for extra pages + \ifnum\pageno>1 % headline placement and spacing + \ifx\addressee\empty\relax % no addressee, so + {\hfil Page \folio}% % just page number + \else % otherwise addressee, date, page + {\tenrm To \addressee\hfil\today\hfil Page \folio}% + \fi % + \else\hfil\fi} % but nothing on page 1 + + +% \LetterWidth adjusts the width of the letter to allow long or +% short letters to be fit nicely on the page. + +\def\LetterWidth#1{% % set width for letter + \hsize=#1 % set \hsize + \dimen0=#1 % calculate horizontal shift ... + \advance \dimen0 by -6.5truein % subtract default + \divide \dimen0 by 2 % + \advance \hoffset by -\dimen0 % center letter + \advance \longindent by \dimen0 % adjust closing +} +\def\letterwidth{\LetterWidth} % synonym + +\def\endletter{\endmode % how to end a letter + \par\vfill\supereject % as usual, from Plain TeX + \checktags % any undefined tags? + \end} % exit + +%----------------------------------------------------------------------- +% \beginlinemode ends the previous mode and starts a mode where +% \obeylines is in effect. \beginparmode ends the previous mode and +% starts a mode where lines are concatenated. + +\def\beginlinemode{\endmode\begingroup\parindent=0pt\parskip=0pt + \obeylines\def\endmode{\par\endgroup}} + +\def\beginparmode{\endmode\begingroup\parskip=\medskipamount + \def\endmode{\par\endgroup}} + +%----------------------------------------------------------------------- +% \address gets the address in a vbox, as well as printing it at +% the top of the letter. Line endings are respected here. The first +% line after \address is the \addressee, which is used in the heading on +% all pages after the first. + +\def\address{% + \vskip\bigletterskip % skip down for address + \beginlinemode % look for line ends in address + \getaddress} % and get address + +\newbox\theaddress % to collect the address in + +{\obeylines\gdef\getAddress#1 + #2 + {#1\gdef\addressee{#2}\global\setbox\theaddress=\vbox\bgroup%% + #2 + \def\endmode{\egroup\endgroup \copy\theaddress}% +}}% end \gdef and \obeylines + +\let\getaddress=\getAddress % default address collection + + +% Use \body before typing the body of the letter. This is defined +% to be \letterbody. \text is no longer a synonym (as of 2.17)! + +\def\letterbody{% + \vskip\bigletterskip % skip down for address + \bigskip % skip some more + \beginparmode % paragraph mode + \raggedright\pretolerance=2500 % Letters are not justified + \noindent} % don't indent salutation + + +% Use \closing at the end of the letter. It automatically puts a +% space for a signature between the 1st and 2nd lines after \closing. +% It also defines \theSignature for a possible \Envelope. + +\def\closing{\beginlinemode\getclosing} +{\obeylines\gdef\getclosing#1 + #2 + #3 + {#1\nobreak\bigskip\nobreak\bigskip \leftskip=\longindent #2 + \nobreak\vskip .5 true in \gdef\theSignature{#3}% + #3 +}} + + +% \annotations and \ps are used at the end of the letter. \annotations +% respects lines while \ps gives paragraph mode. \ps has no +% indentation, but you have to provide the ``P.S.'' yourself. +% \ccletr is \cc for letters, and \Encl can be used to note enclosures + +\def\annotations{\beginlinemode\nobreak\bigskip + \def\par{\endgraf\nobreak}\obeylines\par} + +\def\ps{\beginparmode\nobreak\bigskip + \interlinepenalty 5000\def\par{\endgraf\penalty 5000} + \noindent} + +\def\ccletr{\beginlinemode + \nobreak \bigskip % skip down + \def\par{\endgraf\nobreak}% % as for \annotations + \obeylines\par % obey lines + \ccitem{cc:\ }}% % print cc: +\def\cc{\ccletr} % synonyms +\def\CC{\cc} % synonyms + +\def\Encl{\beginlinemode + \nobreak \bigskip % skip down + \def\par{\endgraf\nobreak}% % as for \annotations + \obeylines\par % obey lines + \ccitem{Encl:\ }} % print cc: +\def\encl{\Encl} % synonym + +% \ccitem does the work for \cc and \Encl +\def\ccitem#1{\setbox0\hbox{#1\quad}% % box0 = argument + \parindent=\wd0 % get its width + \hang % hanging indentation + \rlap{\copy0}% % and write it + \nobreak % forbid break + \vskip-\baselineskip\relax} % kill the skip + +\def\newpage{\vfill\eject} + +%======================================================================* +% LETTERHEADS (simple): +% +% \letterhead just spaces down and puts the date at the top of the +% page. \phoneletterhead puts in a phone number and the date at positions +% given by \hdimphone, \vdimphone and \hdimdate, \vdimdate relative to +% the true page boundaries. Customized versions of these can be put +% in the TXSsite.tex file (see the Installation Appendix in the Manual). + +\def\letterhead#1{% % + \vbox{\vskip 0.5 truein}% % skip down for the date + \line{\hfil\today}% % right justify date + \vskip\bigletterskip}% % space down to the address + +\def\phoneletterhead#1{% % #1 is phone number + \vbox{\vskip-\voffset\vskip-\headlineoffset % skip down to position + \vskip\vdimphone} % of phone number + \hbox{\hskip-\hoffset\hskip\hdimphone #1}% % skip over to number + \vskip-\vdimphone\vskip\vdimdate % skip down to date + \hbox{\hskip-\hoffset\hskip\hdimdate \today} % date + } % + +\def\letterdate{% % \letterdate just puts date on letters + \vbox{\vskip 0.5 truein}% % skip down for the date + \line{\hfil\today}% % right justify date + \bigskip} % space down to the address + + +%======================================================================* +% Printing Envelopes: +% +% \MakeEnvelope prints an envelope, using #1 as the address and #2 +% as the return address. If you print this (in landscape mode!) and +% feed a blank envelope through your printer you'll get a printed envelope. +% +% \withEnvelope changes the definition of \address in the letter macros +% so that the address is saved in a macro, not a box. It then arranges +% for an appropriate \MakeEnvelope command to be written to the file +% \jobname.env at the end of the job (when you say \endletter or \bye). +% Run that file through TeXsis and print the output (in landscape) and +% you'll get your envelope. +% +% Note that the modified \address requires that you begin the body of +% the letter with \body, not \text. +% +\message{with envelopes.} + +% Envelope Dimensions: (change these in TXSsite.tex if yours are different) + +\newdimen\EnvlWidth \EnvlWidth=24cm % Envelope width +\newdimen\EnvlHeight \EnvlHeight=10.5cm % Envelope height +\newdimen\EnvlVoffset \EnvlVoffset=1.25in % vertical start position + +% \withEnvelope changes \address to use the alternate version below, +% and arranges to have the envelope file \jobname.env created at the +% end of the job, using \Envelope. The way this is done is a real hack, +% but it works: In TeXsis \bye calls \checktags to check for undefined +% tags (labels for equations and such). But since tags aren't used all +% that much in letters we simply change \checktags to call \Envelope instead. + +\def\withEnvelope{% + \let\getaddress=\getEnvAddressee % + \def\checktags{\emsg{\@comment Writing the envelope to \jobname.env...}% + \Envelope % + \immediate\write\Envout{\NX\bye}% make sure it ends with \bye! + \gdef\checktags{}% % prevent recursion (really?) + } +} + + +% Alternate version of \getaddress for \Envelope changes the +% behaviour of \address. Everything up to the following \body is the +% address, and the first line is the \addressee. + +{\obeylines\gdef\getEnvAddressee#1 + #2 + {#1\gdef\addressee{#2}\getEnvAddress}% +\gdef\getEnvAddress#1\body{\xdef\theAddress{\addressee + #1}\endaddress}% +}% end \obeylines + + +\def\endaddress{\endgroup % end \linemode + \vbox{\parskip=0pt\parindent=0pt\theAddress\vskip 0pt}% print it + \letterbody} % do the \body + + +% \Envelope writes commands to the file \jobname.env for producing +% an envelope addressed to the addressee, with the return address +% of the signer of the letter constructed from \theSignature (from \closing) +% and \ReturnAddress (from TXSsite.tex, or you set it yourself). + +\newwrite\Envout % output Envelope file + +\def\EnvInit{\@FileInit\Envout=\jobname.env[Envelope]\gdef\EnvInit{}} + +\def\Envelope{\endmode\def\endmode{\relax}% + \EnvInit + \immediate\write\Envout{\NX\texsis\NX\ATunlock}% + \immediate\write\Envout{\NX\MakeEnvelope{\theAddress}\@comment}% + \immediate\write\Envout{{\theSignature\NX\n\ReturnAddress}}% +} + + +% \MakeEnvelope{address}{return address} actually prints the envelope. +% \MakeEnvelope sets things up and turns on \obeylines to see line +% endings, then calls \@MakeEnvelope to actually make the envelope. + +\def\MakeEnvelope{\vfill\eject % start on a new page + \hsize=\EnvlWidth\vsize=\EnvlHeight % size page to match envelope + \hoffset= -0.90in % left offset is edge of envelope + \voffset=\EnvlVoffset % down to the top of the envelope + \emsg{Envelope offset is \the\EnvlVoffset\ from the top (hope that's okay).} + \nopagenumbers % + \begingroup\singlespaced\obeylines % single spaced + \@MakeEnvelope}% + +\def\@MakeEnvelope#1#2{% print address & return address on envelope +%% \tightbox{\loosebox{%---% ONLY FOR TESTING + \vbox to \EnvlHeight{\hsize=\EnvlWidth % Envelope Size + \vskip 0.2cm\line{\hskip 0.8cm % space return address down and over + \vbox to 2.5cm{\hsize=8cm\parskip=0pt\parindent=0pt % + #2\vss}\hfill}% % Return Address: + \vskip 1cm plus 1fil\line{\hskip 9cm% space address down and over + \vbox{\hsize=14cm\parskip=0pt\parindent=0pt % + #1\vss}\hfill}% % Mailing Address + \vskip 1cm plus 1fil}% % space below address +%% }}%---% ONLY FOR TESTING + \endgroup\vfill} % end \obeylines, skip rest of page + +\def\ReturnAddress{\hbox{\ }\hfill\relax}% change this in TXSsite.tex +\def\theSignature{}% + +%======================================================================* +% FORM LETTERS. +% +% The form letter macros formerly in TXSform.tex have been moved to a +% style file, Formletr.txs, so that they are only loaded when needed +% (since that is infrequent). But to be able to specify the label +% dimensions in the site file we need to define the dimensions anyway. + +\newdimen\fullHsize \fullHsize=8.5in % hsize for label page +\newdimen\fullVsize \fullVsize=11.50in % vsize for label page +\newdimen\lblHsize \lblHsize=2.833in % width of standard label +\newdimen\lblVsize \lblVsize=1.365in % ht. of std. label - a bit +\newdimen\lblVoffset \lblVoffset=-.900in % vertical starting position +\newdimen\lblHoffset \lblHoffset=-0.750in % horizontal starting position + +\autoload\formLetters{Formletr.txs}\autoload\formletters{Formletr.txs} +\autoload\formLabels{Formletr.txs}\autoload\formlabels{Formletr.txs} +\autoload\formEnvelopes{Formletr.txs}\autoload\formenvelopes{Formletr.txs} + +%>>> EOF TXSletr.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSmacs.tex b/Master/texmf-dist/tex/texsis/base/TXSmacs.tex new file mode 100644 index 00000000000..82e90ccf27c --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSmacs.tex @@ -0,0 +1,669 @@ +%% file: TXSmacs.tex - Main Macros - TeXsis version 2.18 +%% @(#) $Id: TXSmacs.tex,v 18.0 1999/07/07 21:30:29 myers Exp $ +%========================================================================* +% TeXsis -- Main Macros +% +% This file contains various macros used throughout TeXsis, +% either by themselves or by other macros. Some of the more useful +% ones to know about are: +% +% \draft prints "draft" with the date and time at the +% bottom of the page +% \singlespaced sets single spacing. +% \doublespaced sets double (actually 1.5 times) spacing. +% \triplespaced sets triple spacing for drafts. +% \widenspacing increases spacing by 1.25. +% \quoteon Automatic opening and closing " by making " an +% active character. Turn off with \quoteoff. +% \Footnote Singlespaced analog of \footnote +% \Vfootnote Singlespaced analog of \vfootnote +% \NFootnote numbered footnotes (using \Footnote) +% +%======================================================================* +% (C) Copyright 1989, 1992, 1997 by Eric Myers and Frank E. Paige +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the GNU General Public License (GPL). +% This software is made available WITHOUT ANY WARRANTY of any kind. +% Give the command \LicenseInfo for further details. +%======================================================================* +\message{TeXsis main macros.} +\catcode`@=11 % @ is a letter here +\let\XA=\expandafter % shorthand for \expandafter is \XA +\let\NX=\noexpand % shorthand for \noexpand is \NX + +% We've added a few more active characters, so we have to modify \dospecials + +\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&\do\"\do\(\do\)\do\[\do\]%% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} + + +%--------------------------------------------------* +% ERROR REPORTING and DRAFT marks: + +% \emsg writes the message "#1", ON A NEW LINE, on the terminal +% and in the log. Various \things are turned off. + +\def\emsg#1{\relax% write an error/information message to the screen + \begingroup % disable special characters + \def\@quote{"}% % to output " + \def\TeX{TeX}\def\label##1{}\def\use{\string\use}% + \def\ { }\def~{ }% spaces are spaces + \def\tt{}\def\bf{}\def\Tbf{}\def\tbf{}% + \def\break{}\def\n{}\def\singlespaced{}\def\doublespaced{}% + \immediate\write16{#1}% + \endgroup} + +% \cmsg writes a ``comment'' \emsg message with leading ``%'' + +\def\cmsg#1{\emsg{\@comment #1}} + +% \@comment is for writing % to a file such as the table of contents +% or list of figures. It expands to '% ' + +{\catcode`\%=11 \gdef\@comment{% }} + +% \@errmark writes a short error message in the right margin + +\newif\ifmarkerrors \markerrorsfalse % default is off + +\def\@errmark#1{\ifmarkerrors % only if \markerrorstrue + \vadjust{\vbox to 0pt{% % vbox with no height + \kern-\baselineskip % insert text next to line + \line{\hfil\rlap{{\tt\ <-#1}}}% % in right margin + \vss}}\fi} % end \vbox and \vadjust + + +% \draft marks the bottom of the page with "Preliminary Draft", +% date and time, and turns on error marking and equation tracing. + +\def\draft{% puts DRAFT marks on footer lines of document + \def\draftline{{\tentt\DraftName\hfill % DRAFT stamp at + -~\folio~- \hfill \runtime}}\footline={\draftline}% bottom of page + \eqnotracetrue % equation tracing enabled + \markerrorstrue % DO mark errors in right margin + \overfullrule=1em} % marks overfull \hbox! + +\def\DraftName{Preliminary Draft}% Can be changed (Native Language Support) + + +%--------------------------------------------------* +% Interline Spacing and Footnotes. + +\def\setTableskip{\relax} % was used, but not now + +\def\singlespaced{% sets interline spacing to \normalbaselineskip + \baselineskip=\normalbaselineskip % reset interline + \setRuledStrut % set ruled table spacing + \setTableskip} % set table spacing +\def\singlespace{\singlespaced} % synonym for \singlespaced + +\def\doublespaced{% sets interline spacing to 1.5 the \normalbaselineskip + \baselineskip=\normalbaselineskip % increase interline + \multiply\baselineskip by 150 % spacing by 1.50 + \divide\baselineskip by 100 % of normal + \setRuledStrut % set ruled table spacing + \setTableskip} % set table spacing +\def\doublespace{\doublespaced} % synonym for \doublespaced + +\def\TrueDoubleSpacing{% sets interline spacing to twice \normalbaselineskip + \baselineskip=\normalbaselineskip % increase interline + \multiply\baselineskip by 2 % spacing by 2.0 + \setRuledStrut % set ruled table spacing + \setTableskip} % set table spacing +\def\truedoublespacing{\TrueDoubleSpacing} % synonym for \TrueDoubleSpacing + +\def\triplespaced{% sets interline spacing to 3.0 the \normalbaselineskip + \baselineskip=\normalbaselineskip % increases interline + \multiply\baselineskip by 3 % spacing by 3.0 + \setRuledStrut % set ruled table spacing + \setTableskip} % set table spacing + +\def\widenspacing{% increases the interline spacing by 1.25 + \multiply\baselineskip by 125 % increase the interline + \divide\baselineskip by 100 % spacing by a factor of 1.25 + \setRuledStrut % set ruled table spacing + \setTableskip} % set ``nice'' table spacing +\def\whitespaced{\widenspacing} % synonym for \widenspacing +\def\whitespace{\widenspacing} % synonym for \widenspacing + + +% \Footnote is like \footnote, but the text is \singlespaced in \FootFont +% and the reference mark is automatically put in a superscript. The +% superscript is \smash'ed so it does not change the interline spacing. +% \Vfootnote is like \vfootnote, but singlespaced in \Footfont also. +% How this works: to use the same tricks with \vfootnote as used by +% \footnote (see \vfootnote in Appendix B of the TeXbook) we begin a +% group in which \FootFont and single spacing are invoked, then change +% the definition of \@foot (which ends the \vfootnote) so that it also +% closes the extra group we've opened. + +\def\Footnote#1{% singlespaced \footnote + \let\@sf\empty % assume no scale factor + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi % unless h-mode + ${}^{\scriptstyle\smash{#1}}$\@sf % smashed superscript mark + \Vfootnote{#1}} % do it with \Vfootnote + +\def\Vfootnote#1{% singlespaced \vfootnote + \begingroup % Following changes temporary + \def\@foot{\strut\egroup\endgroup}% % change how to end \vfootnote + \tenpoint % default to 10pt type + \baselineskip=\normalbaselineskip % default single spaced + \parskip=0pt % no space between paragraphs + \FootFont % change to ``footnote'' font + \vfootnote{${}^{\hbox{#1}}$}} % superscript mark in footnote + +\def\FootFont{\rm} % default footnote typestyle + + +% Numbered Footnotes: \NFootnote{text} creates a footnote and gives it +% a number, which is used as the reference mark (superscript). To reset +% the numbering (as at the begining of a chapter) just say \footnum=0. + +\newcount\footnum \footnum=0 +\let\footnotemark=\empty % for # marks and such + +\def\NFootnote{% consecutively numbered footnotes + \advance\footnum by 1 + \xdef\lab@l{\the\footnum}% + \Footnote{\footnotemark\the\footnum}} + + +%--------------------------------------------------* +% SPACING, skips and breaks: + +% Alternate definition of ~ makes it the same as \0 in math mode. +% You can use it as a space which is the width of a digit, and it +% is a single character in the manuscript file. It behaves as usual +% (a tie, or required space) in non-math mode. + +\def~{\ifmmode\phantom{0}\else\penalty10000\ \fi} % tie in math mode too +\def\0{\phantom{0}} % \0 is phantom 0 in any font + +% thinskip (hmode). This def allows \, to be used in both math +% and nonmath mode + +\def\,{\relax\ifmmode\mskip\the\thinmuskip\else\thinspace\fi} + +% Use \topspace in place of \vskip to add space at top of a page +% (a \vskip by itself is discarded at the top of an empty page). + +\def\topspace{\hrule width \z@ height \z@ \vskip} + +\def\n{\hfil\break} % \n is newline +\def\nl{\hfil\break} % \nl is newline (alternate) +\def\newpage{\vfill\eject} % skip to next page + +\def\Afour{\hsize=16.5cm \vsize=24.5cm\relax} % A4 paper size + + +%--------------------------------------------------* +% \bye -- end of job processing +% +% A slightly modified version of \bye will \checktags at end of job +% \checktags comes from TXStags.tex. Also, \endmode can be used +% to close any outstanding mode, as in a \letter or \memo. +% This version is not \outer, so we can use \TwoPass if desired. + +\def\bye{% slightly revised version of \bye for TeXsis + \endmode % ends any special modes + \par\vfill\supereject % as usual, from Plain TeX + \checktags % any undefined tags? + \end} + +\def\endmode{\relax} % default does nothing + +%-%\ifx\checktags\undefined +%-% \def\checktags{\relax}\fi % TXStags will define this... + +%--------------------------------------------------* +% Un-TeX: how to turn off things that only get turned on in plain TeX + +\def\unobeylines{\catcode`\^^M=5} % make ^^M just <return> +{\obeyspaces\gdef\unobeyspaces{\catcode`\ =10}} +\def\unraggedright{\rightskip=\z@\spaceskip=0pt\xspaceskip=0pt} + +% Also, \seeCR let's ^^M be turned into space after detection +% in an \obeylines environment + +{\catcode`\^^M=\active\gdef\seeCR{\catcode`\^^M\active \let^^M\space}} + + +%--------------------------------------------------* +% EASY QUOTES. Makes " an active character, which knows when to +% be an open quote or a close quote + +\catcode`\"=\active +\newcount\@quoteflag \@quoteflag=\z@ % keep track of quotes + +\def"{\@quote} % generic name for " + +\def\@quote{% gives `` for first quote, '' for second quote + \ifnum\@quoteflag=\z@ % + \@quoteflag=\@ne {``}% % + \else % + \@quoteflag=\z@ {''}% % + \fi} + +\def\quoteon{\catcode`\"=\active\def"{\@quote}} % turns on ``easy quotes'' +\def\quoteoff{\catcode`\"=12} % turns off ``easy quotes'' +\def\@checkquote#1{\ifnum\@quoteflag=\@ne\message{#1}\fi} + + +% Default is \quoteoff. Turn quotes on only in \texsis +% (so it won't interfer with any internal uses for ") + +\quoteoff % Must turn quotes off while scanning the next def + +\def\checkquote{{\quoteoff\@checkquote{> Unbalanced "}}} % checks balanced "'s + + +%--------------------------------------------------* +% BOXES and RULES: + +% \tightbox draws a rule box around the box #1 without any added space + +\def\tightbox#1{\vbox{\hrule\hbox{\vrule\vbox{#1}\vrule}\hrule}} +\let\tightboxit=\tightbox % synonym + + +% \loosebox put a loose box around a box (but no rules!). + +\def\loosebox#1{% + \vbox{\vskip\jot + \hbox{\hskip\jot #1\hskip\jot}% + \vskip\jot}} + + +% \eqnbox{<equation>} puts a ruled box around an equation. With the +% \lower\jot it can be used in horizontal mode too, not just displayed +% equations. Thanks to Bob Love <rlove@raptor.rmnug.org> for the suggestion. + +\def\eqnbox#1{\lower\jot\tightbox{\loosebox{\quad $#1$ \quad}}} + + +% \undertext underscores any text, uniformly + +\def\undertext#1{\setbox0=\hbox{#1}\dimen0=\dp0 % + \vtop{\box0 \vskip-\dimen0 \vskip 0.25ex \hrule}} + +% \theBlank creates a blank line to fill in ``the blank'' + +\def\theBlank#1{\nobreak\hbox{\lower\jot\vbox{\hrule width #1\relax}}} + + +% \setRuledStrut creates a vertical strut to hold the interline +% spacing in ruled tables. It is defined in ruled.tex, so we just +% make an empty definition here until then. + +\ifx\setRuledStrut\undefined\def\setRuledStrut{\relax}\fi + + +%--------------------------------------------------* +% MISC. useful stuff: + +% \Romannumeral gives uppercase roman numerals, of course + +\def\Romannumeral#1{\uppercase\expandafter{\romannumeral #1}} + +% \monthname{n} gives the English name for month number n + +\def\monthname#1{\ifcase#1 \errmessage{0 is not a 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 \errmessage{#1 is not a month}\fi} + +% \jtem is a generalized \item from Don Groom with an arbitrary +% indentation. Usage: \jtem{dimen}{label} + +\def\jtem#1#2{\par\hangafter0\hangindent#1 + \noindent\llap{#2\enspace}\ignorespaces} + +% \leftpar makes an argument into a raggedleft paragraph +% uses the same technique as figure captions + +\def\leftpar#1{% + \setbox\@capbox=\vbox{\normalbaselines + \noindent #1\par + \global\@caplines=\prevgraf}% + \ifnum \@ne=\@caplines + \leftline{#1}\else + \hbox to\hsize{\hss\box\@capbox\hss}\fi} + + +%--------------------------------------------------* +% \obsolete marks old versions of macros as obsolete by printing +% a warning message. But it should still work. + +\def\obsolete#1#2{\def#1{\@obsolete#1#2}} + +\def\@obsolete#1#2{% + \emsg{>=========================================================}% + \emsg{> \string#1 is now obsolete! It may soon disappear!}% + \emsg{> Please use \string#2 instead. But I'll try to do it anyway...}% + \emsg{>=========================================================}% + \let#1=#2\relax % but let them use it anyway + #2} % and do as asked + + +%--------------------------------------------------* +% \ATlock makes "@" a non-letter to protect internal control sequences +% \ATunluck makes "@" a letter so you can get at them + +\def\ATlock{\catcode`@=12\relax} % makes @ not a letter +\def\ATunlock{\catcode`@=11\relax} % makes @ a letter + +% If someone tries to read a source or style file without having +% said \ATunlock they will get all sorts of errors, most notably +% that \@ is undefined. So we make \@ produce an error message: + +\newhelp\AThelp{@: +You've apparantly tried to use a macro which begins with ``@''.^^M% +These macros are usually for internal TeXsis functions and should^^M% +not be used casually. If you really want to use the macro try first^^M% +saying \string\ATunlock. If you got this message by pure accident^^M% +then something else is wrong.} + +\def\@{\begingroup + \errhelp=\AThelp % longer help message + \newlinechar=`\^^M % ^^M is line break + \errmessage{Are you tring to use an internal @-macro?}\relax + \endgroup} + + +%--------------------------------------------------* +% COMMENTS: How to ignore large pieces of text. +% +% Use \comment to turn most anything into nothing (must have balanced {}!). +% Usage: +% \comment/* <text to be ignored> */ % the /* and */ are required! + +\long\def\comment#1/*#2*/{\relax} % just read args and do nothing + + +% \Ignore and \endIgnore are almost the same, but an \endIgnore without +% an \Ignore first is just ignored. Got that? + +\long\def\Ignore#1\endIgnore{\relax} % read arg to \endIgnore and do nothing +\def\endIgnore{\relax} % if actually executed, just do nothing + +% \REV is used for keeping track of revisions. Usually it is just a +% speciallized comment, but by changing the definition we print out +% the revision record in the Appendix. + +\def\REV{\begingroup % Revisions + \def\endcomment{\endgroup}% % to close the \begingroup + \catcode`\|=12 % turn off "TeX quotes" + \catcode`(=12 \catcode`)=12 % make ( and ) + \catcode`[=12 \catcode`]=12 % and [ and ] "other" + \comment} % treat text like a comment + +%-------------------------* +% Simple \begin .. \end support (as in LaTeX, yuk): +% +% There is a conspiracy to preserve job security for typists by making +% sure one has to type \begin{thing} and \end{thing} everywhere. In +% TeXsis it's just \thing and \endthing, but to make these people happy +% we just make \begin{thing} become \thing and similarly for \end{thing}. +% The \begin starts a group, so that after the \end{thing} the command +% \end goes back to it's normal plain TeX definition. +% Note: we don't check that you begin and end the same thing. After all, +% you might want to say \begin{midfigure} followed by \end{figure}. + +\def\begin#1{% \begin{foo} just becomes \foo + \begingroup % changes to \end are temporary! + \let\end=\endbegin % in this group \end will end the \begin + \expandafter\ifx\csname #1\endcsname\relax\relax % is \thing defined? + \def\next{\beginerror{#1}}% NO: flag an error + \else % + \def\next{\csname #1\endcsname}% YES: just invoke it + \fi\next} + +\def\endbegin#1{% \end{foo} just becomes \endfoo + \endgroup % now \end goes back to normal + \expandafter\ifx\csname end#1\endcsname\relax\relax % is \endthing defined? + \def\next{\begingroup\beginerror{end#1}}% % NO: flag an error + \else % + \def\next{\csname end#1\endcsname}% YES: just invoke it + \fi\next} + +\newhelp\beginhelp{begin: + The \string\begin\space or \string\end\space marked above is for a % + non-existant^^M% + environment. Check for spelling errors and such.} + +\def\beginerror#1{% \begin{foo} or \end{foo} fail if no \foo or \endfoo + \endgroup % make sure \end is back to normal + \errhelp=\beginhelp % longer help message + \newlinechar=`\^^M % ^^M is line break + \errmessage{Undefined environment for \string\begin\space or \string\end}} + + +%--------------------------------------------------* +% \unexpandedwrite<fileID>{<token-list>} will write the tokens +% in the list #3 to the given output stream #1, but without expanding +% them. As of TeXsis 2.17 a completely new method is used for doing +% this, because the old method from the TeXbook using \aftergroup +% could only handle short lists of tokens. (C) Copyright Eric Myers 1995 +% BE VERY CAREFUL IF YOU MODIFY THIS IN ANY WAY, IT IS RATHER SENSITIVE. -EAM + +% Lines below must have %% or not, as they are now, or this will not work + +\begingroup\seeCR %% +\long\gdef\unexpandedwrite#1#2{\@CopyLine#1#2 +\endlist}% +\long\gdef\@CopyLine#1#2 +#3\endlist{\@unexpandedwrite#1{#2}% write one line, unexpanded +\def\@arg{#3}\ifx\@arg\par\let\@arg=\empty\fi %% ignore trailing ^^M +\ifx\@arg\empty\relax\let\@@next=\relax %% +\else\def\@@next{\@CopyLine#1#3\endlist}% +\fi\@@next}% +\long\gdef\writeNX#1#2{\@CopyLineNX#1#2 +\endlist}% +\long\gdef\@CopyLineNX#1#2 +#3\endlist{\@writeNX#1{#2}% write one line, unexpanded +\def\@arg{#3}\ifx\@arg\par\let\@arg=\empty\fi %% ignore trailing ^^M +\ifx\@arg\empty\relax\let\@@next=\relax %% +\else\def\@@next{\@CopyLineNX#1#3\endlist}% +\fi\@@next}% +\endgroup % end definitions inside \seeCR + +\long\def\@unexpandedwrite#1#2{% write tokens #2 to #1 but do not expand them + \def\@finwrite{\immediate\write#1}% % to write to the file + \begingroup % begin collecting tokens on stack + \aftergroup\@finwrite % + \aftergroup{\relax % put \write{ on the stack + \@NXstack#2\endNXstack % now process the argument list + \aftergroup}\relax % put closing } on the stack + \endgroup % now dump token list on stack! + } + + +% \writeNX is the same as \unexpandedwrite but without the \immediate + +\long\def\@writeNX#1#2{% write tokens #2 to #1 but do not expand them + \def\@finwrite{\write#1}% % to write to the file + \begingroup % begin collecting tokens on stack + \aftergroup\@finwrite % + \aftergroup{\relax % put \write{ on the stack + \@NXstack#2\endNXstack % puts \NX\token on stack from #2 + \aftergroup}\relax % put closing } on the stack + \endgroup} % now dump token list from stack! + + +% Saying \@NXstack <stuff> \endNXstack will take all the tokens +% in <stuff> and put them on the stack, with control sequences +% prefaced by \noexpand + +\def\@NXstack{\futurelet\next\@NXswitch} + +\def\\{\global\let\@stoken= }\\ + +\def\@NXswitch{% decides what to do with various types of tokens + \ifx\next\endNXstack\relax % if \endNXstack then we'll quit + \else\ifcat\noexpand\next\@stoken % if token is a space, + \aftergroup\space\let\next=\@eat% write \space and eat token + \else\ifcat\noexpand\next\bgroup % if token is \bgroup + \aftergroup{\let\next=\@eat % write { and eat it + \else\ifcat\noexpand\next\egroup % if token is \egroup + \aftergroup}\let\next=\@eat % write a } and eat it + \else % otherwize + \let\next=\@copytoken % just copy to the stack with \NX + \fi\fi\fi\fi + \next} % do it to the token + + +% \@eat ignores the \next token and goes on to the +% next one in the argument list + +\def\@eat{\afterassignment\@NXstack\let\next= } + + +% \@copytoken copies one token to the stack with \aftergroup, +% then calls \@NXstack to get the next one following. + +\long\def\@copytoken#1{% write token to stack, unexpanded + \ifcat\noexpand#1\relax % if token is a control sequence + \aftergroup\noexpand % preface with \noexpand + \else\ifcat\noexpand#1\noexpand~\relax % if token is an active character + \aftergroup\noexpand % preface with \noexpand + \fi\fi % + \aftergroup#1\relax % put the next token on the list + \@NXstack} % do next token from argument... + +\def\endNXstack\endNXstack{} % just marks the end of token list + + +%======================================================================* +% CHECKPOINT / RESTART - (C) copyright 1986 by Eric Myers +% +% The \checkpoint and \restart macros allow you to save important information +% like the page number, chapter number, equation number, etc... and then +% begin with those values on a new run. +% Dependencies: TXSmacs.tex +% ---------------------------- +\message{Checkpoint/Restart.} + +% I/O initialization: +\newwrite\checkpointout % output for checkpoint/restart + +% ---------------------------- +% \checkpoint writes all restart info to the file #1.chk + +\def\checkpoint#1{\emsg{\@comment\NX\checkpoint --> #1.chk}% + \immediate\openout\checkpointout= #1.chk + \@checkwrite{\pageno} \@checkwrite{\chapternum}% + \@checkwrite{\eqnum} \@checkwrite{\corollarynum}% + \@checkwrite{\fignum} \@checkwrite{\definitionnum}% + \@checkwrite{\lemmanum} \@checkwrite{\sectionnum}% + \@checkwrite{\refnum} \@checkwrite{\subsectionnum}% + \@checkwrite{\tabnum} \@checkwrite{\theoremnum}% + \@checkwrite{\footnum}% + \immediate\closeout\checkpointout}% + +% \@checkwrite writes the value of #1 to the file, such that the value +% is restored when the file is read with \Input + +\def\@checkwrite#1{\edef\tnum{\the #1}% + \immediate\write\checkpointout{\NX #1 = \tnum}}% + + +% \restart{filename} reloads the checkpoint from the file #1.chk + +\def\restart#1{\relax + \immediate\closeout\checkpointout % close file, just in case + \ATunlock % make sure @ sign is a letter + \Input #1.chk \relax % read .CHK file in + \@firstrefnum=\refnum % get reference number and + \advance\@firstrefnum by \@ne % set first ref counter + \ATlock} % @ is protected again + +\let\restore=\restart % alternate name for \restart + + +% \endstat prints out pertinent restart info on the terminal and +% in the .log file. Useful at the end of a run. + +\def\endstat{% + \emsg{\@comment Last PAGE number is \the\pageno.}% + \emsg{\@comment Last CHAPTER number is \the\chapternum.}% + \emsg{\@comment Last EQUATION number is \the\eqnum.}% + \emsg{\@comment Last FIGURE number is \the\fignum.}% + \emsg{\@comment Last REFERENCE number is \the\refnum.}% + \emsg{\@comment Last SECTION number is \the\sectionnum.}% + \emsg{\@comment Last TABLE number is \the\tabnum.}% + \tracingstats=1}% + + +%======================================================================* +% RANDOM USEFUL MACROS. Most of these are useful only to hackers and are +% used by macros in this package. Some of them are just general little +% goodies that don't seem to fit anywhere else. + +\def\gloop#1\repeat{\gdef\body{#1}\iterate} % GLOBAL LOOP: + + +% \apply a macro to a list of arguments +% Usage: +% \apply\macro{list of arguments, separated by commas} +% It is possible to determine whether your at the last argument with +% \iflastarg true text \else false text \fi +% Since \apply uses global definitions, \apply's can't be nested +% \empty is defined as {} in PLAIN + +\newif\iflastarg\lastargfalse +\def\car#1,#2;{\gdef\@arg{#1}\gdef\@args{#2}} +\def\@apply{% + \iflastarg + \else + \XA\car\@args;% get first argument + \islastarg + \XA\@fcn\XA{\@arg}% + \@apply + \fi} +\def\apply#1#2{% + \gdef\@args{#2,}\let\@fcn#1% + \islastarg + \@apply + } +\def\islastarg{\ifx \@args\empty\lastargtrue\else\lastargfalse\fi}% + + +% \setcnt\counter{value} sets the counter \counter +% to the given value, but only temporarily in this group. +% After you leave the group the counter is set back to it's +% value before you call \setcnt. Useful for figure captions +% in the ``wrong'' group and other such wierd things. + +\def\setcnt#1#2{% set a counter to a value in a group + \edef\th@value{\the#1}% % evaluate counter + \aftergroup\global\aftergroup#1 % \global\counter=<old> + \aftergroup=\relax % + \XA\@ftergroup\th@value\endafter % all tokens the in counter + \global#1=#2\relax} % set the value in this group + +% \@ftergroup assigns \next the next token and +% then calls \@ftertoken to put that token on the \aftergroup list + +\def\@ftergroup{\futurelet\next\@ftertoken} + +\long\def\@ftertoken#1{ + \ifx\next\endafter\relax % \endafter ends + \let\next=\relax % so just do nothing + \else\aftergroup#1\relax % put the token on the list + \let\next=\@ftergroup % and get next token + \fi\next} % do what's \next + + +% \DUMP - \dump for VMS +% VMS translates command line arguments to uppercase, so +% ``initex texsis \dump'' won't work unless \DUMP is defined. + +\let\DUMP=\dump + + +% The following is mainly kept for historical reasons. Don't ask. + +\def\@seppuku{\errmessage{Interwoven alignment preambles are not allowed.}\end} + + +%>>> EOF TXSmacs.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSmemo.tex b/Master/texmf-dist/tex/texsis/base/TXSmemo.tex new file mode 100644 index 00000000000..0fcdabc4858 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSmemo.tex @@ -0,0 +1,330 @@ +%% file: TXSmemo.tex - Memoranda - TeXsis version 2.18 +%% @(#) $Id: TXSmemo.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% This is a set of TeX macros for producing simple memos. +% The sytnax is: +% +% \MemoFormat (or simply \memo in TeXsis) +% \to <name> +% \from <name> +% \subj <whatever the memo is about> or \re is same as \subj +% \date <date of memo> +% \text +% <text of memo> +% \bye +% +%----------------------------------------------------------------------* +\message{Memo Format.} + +% ---------- Counters and such: + +\newdimen\memoindent \memoindent=2.54cm % indent for \to, \from, etc. +\newdimen\firstheadoffset % \headlineoffset for first page only +\firstheadoffset=0pt % start with headline down for \ORGANIZATION + +% ---------- Initialization: Memo document format for memoranda + +\def\Memo{\ContentsSwitchfalse% % no table of contents + \texsis % initialize TeXsis + \refswitchfalse % no reference list + \MemoFormat % Setup using \MemoFormat + \memoheader}% % do header at top +\def\memo{\Memo} % synonym + +\def\MemoFormat{% set up \Memo environment + \voffset=0.125truein % top margin + \hsize=6.5truein % width of text + \raggedbottom % + \advance \vsize by -\voffset % subtract \voffset from vertical size + \nopagenumbers % no footlines + \let\makeheadline=\makememhed % alternate way of making + \headline={\MemoHeadline}% % headlines for memos + \RunningHeadstrue % default + \headlineoffset=0.8cm % raise all following headlines + \firstheadoffset=0pt % start with headline down for + \def\subjectline{}% % start with this null + \def\nopagenumbers{\RunningHeadsfalse}% redefine \nopagenumbers + \def\pagenumbers{\RunningHeadstrue}%% and \pagenumbers for this document + \twelvepoint % default is 12pt + \quoteon % enable easy quotes + \def\annotations{\annotatememo}% % annotations for memo + \def\cc{\ccmemo}% % carbon copy for memo + \def\Encl{\enclmemo}% % enclosure for memo + \def\ps{\psmemo}% % post script for memo + \def\endmode{\relax}% % for first item + \def\to{\ifmmode\rightarrow\else\To\fi}% + \let\text=\memotext % enable \text + \let\Text=\memotext % \Text is a synonym + \let\body=\memotext % \body is synonym for \text +} + + +% \ORGANIZATION names your institution. Replace it with whatever you +% want for your own institution. + +\def\ORGANIZATION{} % change this in TXSsite.tex! + +% \memoheader prints the word MEMORANDUM at the top of the page and +% sets up for \to, \from, etc... + +\def\memoheader{% % banner for top of first page + \pageno=1 % begin on page 1 + \centerline{\fourteenpoint % 14 pt type centered + M E M O R A N D U M}% % + \bigskip\bigskip % space + \relax}% % + +%--------------------------------------- +% new def of \makeheadline for MEMOFORMAT, uses \firstheadoffset + +\def\makememhed{\vbox to 0pt{\vskip-22.5pt + \ifnum\pageno>1\vskip-\headlineoffset + \else\vskip-\firstheadoffset\fi + \line{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip} + +% \MemoHeadline prints the subject and page number at the top of each page + +\def\MemoHeadline{% headline for Memoranda + \ifnum\pageno>1 % if not first page... + \ifRunningHeads % running headlines on top of page? + {\tenrm\subjectline\hfil Page~\folio}% % print subject line and page # + \else % no running headlines? + {\hfil}% % then nothing + \fi + \else % On the first page do header + {\hfil\twelvess\ORGANIZATION\hfil}% print name of organization + \fi}% + +%----------------------------------------------------------------------- +% \memoitem is the basic template for each field + +\def\memoitem#1{\endmode % end previous field + \begingroup % begin a new field + \def\endmode{\par\endgroup}% % set up to end this field + \parskip=0pt % no \parskip + \singlespaced % no big space if several lines + \medskip\noindent % skip down a bit + \hangindent=\memoindent % hanging indentation + \hangafter=1 % after first line + \hbox to \memoindent{{\tenss #1}\hfil}% label the field + \nobreak}% % don't break after label + +\def\endmode{\relax} % for first item + +%--------------------------------------- +% TO: and FROM: and FAX: + +\def\To{\memoitem{TO:}} +\def\TO:{\To} +\def\From{\memoitem{FROM:}} +\def\FROM:{\From} +\def\from{\From} + +\def\FAX{\memoitem{FAX \#:}} + +%--------------------------------------- +% CC: (Carbon Copies) + +\def\ccmemo{\endmode + \def\endmode{\vskip0pt\endgroup}% + \bigskip % skip down a bit + \begingroup\obeylines % obey line ends + \parskip=0pt % no skip between items + \ccitem{cc:\ }% + } +\def\CC{\cc} + +% ---------- \ccitem does the work for \cc and other end of memo fields + +\def\ccitem#1{\setbox0\hbox{#1\quad}% % box0 = argument + \parindent=\wd0 % get its width + \hang % hanging indentation + \rlap{\copy0}% % and write it + \vskip-\baselineskip\relax}% % kill the skip + +% ---------- \Distribution is like CC (\obeyines format) + +\def\distribution{\endmode + \def\endmode{\vskip0pt\endgroup}% + \bigskip % + \begingroup\obeylines % obey line ends + \def\n{\par}% % break lines at \n + \parskip=0pt % + \ccitem{Distribution:}% + } +\def\Distribution{\distribution}% % synonym + +% ---------- \enclmemo is also like \cc (obeylines format) + +\def\enclmemo{\endmode % + \def\endmode{\vskip0pt\endgroup}% % + \bigskip % skip down a bit + \begingroup\obeylines % obey line ends + \parskip=0pt % no skip between items + \ccitem{Encl:\ }% + } + +% ---------- \annotatememo is \annotations for memo format + +\def\annotatememo{\endmode % end previous item + \def\endmode{\vskip0pt\endgroup}% % set up new ending + \begingroup % changes local + \nobreak\bigskip\nobreak % skip some + \parindent=0pt\parskip=0pt % no indent or skip + \obeylines}% % obey line endings + +% ---------- \psmemo does \ps for a memo + +\def\psmemo{\endmode % end previous item + \def\endmode{\vskip0pt\endgroup}% % set up ending + \begingroup % start a group + \nobreak\bigskip\nobreak % skip some + \interlinepenalty 5000 % avoid breaks + \def\par{\endgraf\penalty 5000}}% % avoid breaks + +%--------------------------------------- +% SUBJECT: and RE: (saves first line in \subjectline for tops of pages) + +\def\subjectitem#1{\endmode % close previous field + \def\endmode{\relax}% % turn off \endmode before going to \memoitem + \gdef\@subjtype{#1}% % label the field + \begingroup\obeylines % obeylines is on to get first subject line + \getsubject}% % get first line +\def\Subj{\subjectitem{SUBJECT:}}% +\def\SUBJ{\subjectitem{SUBJECT:}}% +\def\subj{\subjectitem{SUBJECT:}}% +\def\subject{\subjectitem{SUBJECT:}}% +\def\Subject{\subjectitem{SUBJECT:}}% + +\def\re{\subjectitem{RE:}}% +\def\RE{\subjectitem{RE:}}% + +% \getsubject gets the first line in the field in \subjectline +% for use in the headline at the top of pages following + +{\obeylines\gdef\getsubject#1 + {\endgroup\gdef\subjectline{#1}% \subjectline is first line of \subject + \memoitem{\@subjtype}\subjectline\space}% print SUBJECT: <text> +}% close obeylines + +%--------------------------------------- +% \date takes what follows on the same line and uses it as the +% date of the memo. If nothing follows then today's date is used. +% It is important for the date, if given, to be on the same line as \date. + +\def\Date{\endmode % close previous field + \def\endmode{\relax}% % turn off \endmode before going to \memoitem + \begingroup\obeylines % + \getdate} % get the date, or use today's + +\def\DATE{\Date} % synonym +\def\date{\Date} + +% \getdate looks for a date up until the end of the line + +{\obeylines\gdef\getdate#1 + {\endgroup %% close \obeylines + \ifx?#1?\relax\gdef\memodate{\today}% if no date given, use today's + \else\gdef\memodate{#1}\fi %% if date is given, use it + \memoitem{DATE:}\memodate}% %% print DATE: <date> +}% close \obeylines for definitions + +\def\monthname#1{\ifcase #1 \errmessage{0 is not a 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 \errmessage{#1 is not a month.}\fi} + +%--------------------------------------- +% TEXT: \text sets up for text of memo + +\def\memotext{\endmode % close last item + \def\endmode{\bigskip\vfil}% % \endmode is now blank space + \let\to\rightarrow % put \to back to normal + \bigskip\bigskip % skip down for text + \parskip=\normalbaselineskip % \parskip is one blank line + \noindent % like a letter + } +\def\text{\memotext} % start with \text = \memotext +\def\Text{\memotext} % \Text is a synonym + +% use \endmemo to end a memo, especially if you use \CC or similar. + +\def\endmemo{\endmode\vfill\eject\end} % ends CC: etc, then quits + +%======================================================================= +% FAX Memos: + +\def\faxmemo{\let\memoheader=\faxmemoheader + \memo\faxline + \vskip 2\baselineskip} + +\def\FaxNumber{} % Define your own return fax number + +% You can also use \faxline with \memo in other ways, so it's separate + +\def\faxline{\line{\tenrm Total pages: \hbox to 2cm{\hrulefill}\space + (including this page) \hfil Fax number: + \ifx\FaxNumber\empty\theBlank{4cm}% + \else \tenrm \FaxNumber\fi}} + +\def\faxmemoheader{% % banner for top of first page + \pageno=1 % begin on page 1 + \centerline{\fourteenpoint\bf % 14 pt type centered + FAX MEMORANDUM}% % + \bigskip\bigskip % space + \relax}% % + +%======================================================================= +% Referee format for Referee Reports +% +\def\Referee{\ContentsSwitchfalse % no table of contents + \texsis % initialize + \auxswitchfalse % no need for an .AUX file + \refswitchfalse % no reference list + \RefReptFormat} % Setup using \MemoFormat +\def\referee{\Referee}% % synonym + +\def\RefReptFormat{% + \voffset = 0.125 true in % top margin + \hsize = 6.5 true in % width of text + \raggedbottom % + \advance \vsize by -\voffset % subtract \voffset from vertical size + \nopagenumbers % no footlines + \headlineoffset=0.8cm % raise all following headlines + \firstheadoffset=0pt % start with headline down for + \let\makeheadline=\makememhed % + \def\ORGANIZATION{{\fourteenpoint\bf Referee Report}}% change \ORGANIZATION + \def\subjectline{Referee Report}% % running head is ``Referee Report'' + \headline={\MemoHeadline}% % just like a memo + \def\nopagenumbers{\RunningHeadsfalse}% redefine \nopagenumbers + \def\pagenumbers{\RunningHeadstrue}%% and \pagenumbers for this document + \twelvepoint % default is 12pt + \singlespaced\whitespaced % widely spaced, but not double + \parskip=\baselineskip % extra space between paragraphs + \def\endmode{\relax}% % for first item + \quoteon % enable easy quotes + \def\to{\ifmmode\rightarrow\else\To\fi}% + \def\From{\RefFrom}% % say something about \From + \let\text=\memotext % + \let\body=\memotext % + \def\authors{\memoitem{AUTHORS:}}% + \def\author{\memoitem{AUTHOR:}}% + \def\title{\subjectitem{TITLE:}}% + \def\MSref{\memoitem{MANUSCRIPT:}}% + \def\manuscript{\@obsolete\manuscript\MSref\memoitem{MANUSCRIPT:}}% + \def\Number{\memoitem{NUMBER:}}% + \hbox{\space}\bigskip} % space down from top a bit. + +\def\RefFrom{\begingroup\obeylines % obeylines to get first subject line + \getFrom}% % get first line + +{\obeylines %% look for line endings + \gdef\getFrom#1 +{\endgroup %% + \emsg{> Reminder: Referee Reports are usually anonymous. This one says...}% + \emsg{FROM: #1}% % say something about FROM + \memoitem{From:}#1\space}% % but do it anyway +} % close obeylines + +%>>> EOF TXSmemo.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSprns.tex b/Master/texmf-dist/tex/texsis/base/TXSprns.tex new file mode 100644 index 00000000000..ea6c988caa7 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSprns.tex @@ -0,0 +1,230 @@ +%% file: TXSprns.tex - Automatic Parnthesis Sizing - TeXsis version 2.18 +%% @(#) $Id: TXSprns.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% +% \autoparens provides automatic sizing of () and [] in displayed +% equations by making these active characters and inserting \left and +% \right as needed. Automatic sizing is NOT provided for other delimiters +% such as \{ \} -- these must be handled as in Plain TeX. This feature is +% turned on and off by: +% \autoparens ==> automatic sizing on +% \offparens ==> automatic sizing off +% The default is \autoparens once you say \texsis. +% +% While \onparens generally simplifies the typing of equations, +% it can cause problems which might not be expected. Since \autoparens uses +% \left ... \right internally, parentheses must be properly balanced. +% In particular, splitting parentheses by breaking a long equation with +% an \EQNalign will produce an error. Most problems can be solved by using +% control sequences for the plain characters: +% \lparen ==> ( +% \rparen ==> ) +% \lbrack ==> [ +% \rbrack ==> ] +% +% You can still use \left and \right in equations with \autoparens, +% but they are implicitly inserted if you fortet them. +% +% In older versions of TeXsis we used \onparens to provide automatic +% parenthesis sizing everywhere. This caused some unexpected problems, +% so we have restricted \autoparens to displayed equations, where it +% is most usefful. \onparens is still around, but we don't encourage +% its use anymore. Still, we did fix this a little bit so that parens +% and brackets are only active in math mode. +% +% Dependencies: \emsg and \@errmark come from TXSmacs.TeX +%======================================================================* +\message{Auto-sizing of Parentheses.} +\catcode`@=11 % make sure @ is a letter here + +% ---------- first save usual definitions of () and [] and \left and \right + +\ifx\@left\undefined % if \@left undefined then do it + \let\@left=\left \let\@right=\right + \let\lparen=( \let\rparen=) + \let\lbrack=[ \let\rbrack=] + \let\@vert=\vert +\fi % else its already done + +% ---------- Now make definition of () and [] for use when they are active + +\begingroup %=== make these active catcodes local === +\catcode`\(=\active \catcode`\)=\active +\catcode`\[=\active \catcode`\]=\active + +\gdef({\relax % \relax just in case in an alignment + \ifmmode \push@delim{P}% % if math mode record opening delim + \@left\lparen % and do \left ( + \else\lparen % else, just a left paren + \fi} + +\global\let\@lparen=( % another name for it + +\gdef){\relax % \relax in case in an alignment + \ifmmode\@right\rparen % if math mode then \right ) + \pop@delim\@delim % get last opening delimiter + \if P\@delim \relax \else % check for miss-matched delimiters + \if B\@delim\emsg{> Expecting \string] but got \string).}% + \@errmark{PAREN}% + \else\emsg{> Unmatched \string).}\@errmark{PAREN}% + \fi\fi + \else\rparen % else just a ")" + \fi} + +\gdef[{\relax % just in case in alignment + \ifmmode \push@delim{B}% % if math mode record opening delim + \@left\lbrack % and do \left [ + \else\lbrack % else, just a left bracket + \fi} +\global\let\@lbrack=[ % another name for it + +\gdef]{\relax % \relax in case in an alignment + \ifmmode\@right\rbrack % if math mode then \right ] + \pop@delim\@delim % get last opening delimeter + \if B\@delim \relax \else % check for mis-matched delimeters + \if P\@delim\emsg{> Expecting \string) but got \string].}% + \@errmark{BRACK}% + \else\emsg{> Unmatched \string].}\@errmark{BRACK}% + \fi\fi + \else\rbrack % else just a "]" + \fi} + +% Make \left(, \right), \left[ and \right] work properly even if easyparens +% is on. To use these \let\left=\EZYleft and \let\right=\EZYright + +\gdef\EZYleft{\futurelet\nexttok\@EZYleft} % \nexttok is next tok on list +\gdef\@EZYleft#1{% % look for ( or [ + \ifx\nexttok( \let\nexttok=\lparen % replace ( with \lparen + \else + \ifx\nexttok[ \let\nexttok=\lbrack % replace [ with \lbrack + \fi\fi + \@left\nexttok} % do usual \left to \nexttok + +\gdef\EZYright{\futurelet\nexttok\@EZYright} % \nexttok is next tok on list +\gdef\@EZYright#1{% % look for ) or ] + \ifx\nexttok) \let\nexttok=\rparen % replace ) with \rparen + \else + \ifx\nexttok] \let\nexttok=\rbrack % replace ] with \rbrack + \fi\fi + \@right\nexttok} % do usual \right to \nexttok + +\endgroup %=== close () and [] as active characters === + +%--------------------------------* +% macros to push and pop delimeter marker on the stack called \@delimlist + +\toksdef\@CAR=0 \toksdef\@CDR=2 % for push and pop delimeters + +\def\push@delim#1{\@CAR={{#1}}% % add #1 + \@CDR=\XA{\@delimlist}% % to front + \edef\@delimlist{\the\@CAR\the\@CDR}}% % of \@delimlist + +\def\pop@delim#1{\XA\pop@delimlist\@delimlist\endlist#1}% pop from list to #1 + +\def\pop@delimlist#1#2\endlist#3{\def\@delimlist{#2}\def#3{#1}} + +\def\@delimlist{} % start with null list + +%==================================================* +% Turning EZparens on and off: + +\newif\ifEZparens \EZparensfalse + +\def\autoparens{\EZparenstrue % turn on the switch + \everydisplay={\@onParens}% % in displayed equations + } + +\def\@onParens{% turn on paren-matching definitions and active characters + \ifEZparens % only if switched on + \def\@delimlist{}% % reset delim list to null + \let\left=\EZYleft % get \left([ correct + \let\right=\EZYright % similarly for \right's + \catcode`\(=\active \catcode`\)=\active % make ( and ) + \catcode`\[=\active \catcode`\]=\active % and [ and ] active + \fi} + +\def\offparens{% turn off automatic paren sizing + \EZparensfalse\@offParens % switch and active chars off + \everymath={}\everydisplay={}} % clear \every... + +\def\@offParens{% + \let\left=\@left % restore \left and \right + \let\right=\@right % to original definitions + \catcode`(=12 \catcode`)=12 % make ( and ) + \catcode`[=12 \catcode`]=12 % and [ and ] "other" + } +\offparens % default until \texsis + +%======================================================================* +% \onparens (backward compatability, but to be removed soon) +% +% \onparens does automatic parenthesis sizing in both in-line +% and displayed equations. In-line equations are a bit difficult. +% When TeX gets a $ it has to look ahead at the next character to +% see if it is another $. If it was not then it puts it back in +% the input stream, but the character code is already set -- if it +% was ( or [ then you can't make these \catcode=\active. Thus in +% math mode (but not displayed equations) we have to look ahead +% at the token and take corrective action. +% +% Unfortunately if the first token is complex (i.e. enclosed in { }'s) +% then the lookahead ends up removing the { }'s, which can cause +% errors. Put \relax at the begining of such equations until I find +% a fix. Or use \autoparens instead. + +\def\onparens{% OLD version of \autoparens for both math and displayed eqns + \EZparenstrue % turn on the switch + \everymath={\@onMathParens}% % in math mode + \everydisplay={\@onParens}% % in displayed equations + } +\def\easyparenson{\onparens} % OLD synonym + +\def\@onMathParens#1{% check lookahead for a missed ( or [ + \@SetRemainder#1\endlist % to put back lookahead + \ifx#1\lparen\let\@remainder=\@lparen\fi % lookahead for missed ( + \ifx#1\lbrack\let\@remainder=\@lbrack\fi % and get rid of [ found + \@onParens % make ), (, ], [ active + \@remainder} % now do what followed + +% \@SetRemainder looks at lookahead from \@onMathParens. If there +% is more than one token (#2 not empty) then the lookahead was a complex +% token so it should be enclosed in { }'s + +\def\@SetRemainder#1#2\endlist{% + \ifx @#2@ \def\@remainder{#1}% + \else \def\@remainder{{#1#2}}% + \fi} + +\def\easyparensoff{\offparens} % synonym for \offparens + +% -- Redefine some PLAIN macros so that they will work with \easyparenson + +\def\pmatrix#1{\@left\lparen\matrix{#1}\@right\rparen} + +\def\bordermatrix#1{\begingroup \m@th + \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}% + \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil + &&\quad\hfil$##$\hfil\crcr + \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}% + #1\crcr\omit\strut\cr}}% + \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\@left\lparen\kern-\wd\@ne + \global\setbox\@ne\vbox{\box\@ne\kern2\p@}% + \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right\rparen$}% + \;\vbox{\kern\ht\@ne\box\tw@}\endgroup} + +% Partitioned matrix +% usage: +% \partitionmatrix{a&&b&&c\cr\tabelrule d&e&f\cr} +% (leave off the last \cr or you'll get an extre line at the bottom) +% (The \mathstrut tries to make two n-row partition matrices have the +% same height and depth unless some row is unusually large.) + +\def\partitionmatrix#1{\,\vcenter{\offinterlineskip\m@th + \def\tablerule{\noalign{\hrule}} + \halign{\hfil\loosebox{$\mathstrut ##$}\hfil&&\quad\vrule##\quad&% + \hfil\loosebox{$##$}\hfil\crcr + #1\crcr}}\,} + +%>>> EOF TXSprns.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSrefs.tex b/Master/texmf-dist/tex/texsis/base/TXSrefs.tex new file mode 100644 index 00000000000..77b5bd743ce --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSrefs.tex @@ -0,0 +1,772 @@ +%% TXSrefs.tex - Citations and References - TeXsis version 2.18 +%% @(#) $Id: TXSrefs.tex,v 18.8 2000/05/16 22:46:08 myers Exp $ +%======================================================================* +% TeXsis - TeX Macros for Physicists -- Citations and References +% +% These macros take care of citations and references with automatic +% numbering. The references can either be typed in the body of the document +% or collected at the beginning. In either case a new reference is defined +% by saying +% \reference{<tag>} <text> \endreference +% +% The <tag> can be almost anything, including a number. If it begins +% with "*" then the reference number is not incremented; this allows +% multiple references with the same number. Otherwise, \reference causes +% the next available reference number to be assigned to the <tag>. It also +% saves the tag definition in \jobname.aux, and saves the reference +% <text> in the file \jobname.ref. The final punctuation should NOT be +% typed in <text>; a period is added unless the next tag begins with "*", +% in which case a semicolon is added. +% +% If \reference ... \endreference is typed in the body of the document, +% the reference number is printed. The default format is a superscript, but +% this can be changed: +% \superrefstrue ==> superscript reference numbers +% \superrefsfalse ==> reference numbers in [] +% \endreference actually looks ahead at the next token; if it is another +% \reference, then a range is printed instead of separate numbers. +% +% \referencelist ... \endreferencelist can be used to type all of the +% references at the beginning of the document, with the format +% \referencelist +% \reference{<tag1>} <text1> \endreference +% \reference{<tag2>} <text2> \endreference +% ... +% \endreferencelist +% While it is natural with this format to make the tag equal to the actual +% reference number, this is not required. +% +% Subsequent references to a previously defined reference are obtained +% with \cite{<tag>}. Again this has a look-ahead feature so that several +% consecutive \cite's give the reference numbers separated by commas. If the +% references are typed at the beginning with \referencelist, then all +% references in the text are made with \cite. If the <tag> is not defined, +% then \cite produces an error, which is flagged both in the printed document +% and on the log file. A \Ref{<tag>} macro (note the case) is also provided +% to print Ref.~<number> in the text. Other forms can be constructed if +% desired with \use{Ref.<tag>}; see the definition of \Ref. +% +% The list of references is printed by saying \ListReferences (or +% \References for backwards compatibility). To allow for multiple +% references with the same number, \ListReferences adds a semicolon to +% the end of a reference if the next tag begins with "*" and a period +% otherwise. Hence the final punctuation should not be typed in the +% reference text. Note that \ListReferencese does not print a heading, +% which should be inserted using \chapter, \section, or the appropriate +% plain TeX commands. +% +% If \texsis has not been called, then the reference text will be +% written to the screen, and \ListReferences will fail to print the +% appropriate text. If \auxswitchfalse is used, then the AUX file will +% not be written, and the tag definitions will appear on the screen +% (surrounded by \csname ... \endcsname). This causes no harm unless the +% checkpoint/restart feature is used, in which case the earlier tag +% definitions will not be remembered. +%======================================================================* +% (C) Copyright 1986, 1992, 1995, 1997, 1999 by Eric Myers and Frank Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +%======================================================================* +\message{References and Citations.} +\catcode`@=11 % @ is a letter here for hidden names +\catcode`\"=12 \catcode`\(=12 \catcode`\)=12 + +% Counters, switches and I/O: + +\newcount\refnum \refnum=\z@ % counter for reference numbers +\newcount\@firstrefnum \@firstrefnum=1 % first of a series of refs +\newcount\@lastrefnum \@lastrefnum=1 % last of a series of refs +\newcount\@BadRefs \@BadRefs=0 % count undefined references + +\newif\ifrefswitch \refswitchtrue % output references by default +\newif\ifbreakrefs \breakrefstrue % line break between refs? +\newif\ifrefpunct \refpuncttrue % automatic punctuation at end? +\newif\ifmarkit \markittrue % flag for "hidden" references +\newif\ifnullname % flag for null or "*" labels +\newif\iftagit % flag for tagging references +\newif\ifreffollows % flag for many \ref's + +\def\refterminator{} % could be ) after a superscript +\def\RefLabel{} % used in hyperlink tags + +% Indentation of references in the list is controled by \refindent +% If it is negative then it's automatically reset to the right values + +\newdimen\refindent \refindent= -100pt + +% \@comment is for writing % to a file like the .ref file. It expands +% to the letter '%' and a space + +{\catcode`\%=11 \gdef\@comment{% }} + +\newcount\CiteType \CiteType=1 % type of citation style +%%\newif\ifsuperrefs \superrefstrue % OBSOLETE! Use these: +\def\superrefstrue{\CiteType=1} % Superscript citation marks +\def\superrefsfalse{\CiteType=2} % In-line citation marks + + +%==================================================* +% INITIALIZATION. \refinit performs first time reference initialization + +\newwrite\reflistout % output file for ref text +\newread\reflistin % input file for .ref file + +\def\@refinit{% Initialize reference file + \immediate\closeout\reflistout % and make sure output closed + \ifrefswitch % is .ref ouput enabled? + \@FileInit\reflistout=\jobname.ref[List of References]%% yes: initialize + \else % no: disable output + \let\@refwrite=\@refwrong \let\@refNXwrite=\@refwrong + \fi + \gdef\refinit{\relax}} % and disable \refinit + +% \refReset resets the counters so that more references can be +% created after \ListReferences has been called; For example, if +% you listed the references for one chapter and want to begin collecting +% references for the next chapter. + +\def\refReset{% reset reference/citation counters + \global\refnum=\z@ % counter for reference numbers + \global\@firstrefnum=1 % first of a series of refs + \global\@lastrefnum=1 % last of a series of refs + \global\@BadRefs=0 % count undefined references + \gdef\refinit{\@refinit}} % re-enable \refinit + +\refReset % Make it so + +% \@refwrite{text} writes text to .ref file, while +% \@refNXwrite{text} writes the text to the file without expanding it. + +\def\@refwrite#1{\refinit\immediate\write\reflistout{#1}} +\def\@refNXwrite#1{\refinit\unexpandedwrite\reflistout{#1}} + +\def\@refwrong#1{}% do nothing (sorry for the pun) + + +%==================================================* +% REFERENCE TEXT. +% \reference{lable} <text> \endreference defines a new reference entry + +\long\def\reference#1{% cite a new reference, with reference text + \markittrue % enable citation in output + \@tagref{#1}% % get next number and tag it + \@GetRefText{#1}} % write ref text to .ref file + +\long\def\addreference#1{% \reference without citation + \markitfalse % don't cite in output + \@tagref{#1}% % get a number and tag it + \@GetRefText{#1}} % write ref text to .ref file + +\def\hiddenreference{\addreference}% backward compatability (v.2.02) + + +% \@tagref{label} assigns the next reference number to the label, +% unless the name begins with * or is null + +\def\@tagref#1{% assign a reference number to a tag + \stripblanks #1\endlist % remove blanks. Result --> \tok + \XA\ifstar\tok*\relax % sets \nullnametrue if null or *'d + \ifnullname\relax\else % unless name is null + \def\RefLabel{#1}% % save label name + %% + \ifnum\CiteType=4 % Footnotes references: coordinate + \ifnum\footnum>\refnum % ... \footnum and \refnum + \global\refnum=\footnum \global\@firstrefnum=\refnum + \global\advance\@firstrefnum by \@ne + \fi + \fi + %% + \global\advance\refnum by \@ne % increment the \refnum + \global\@lastrefnum=\refnum % and the \@lastrefnum + \edef\rnum{\the\refnum}% % \rnum is the ref number + \tag{Ref.#1}{\rnum}% % tag the reference number + \ifnum\CiteType>0 % announce unless silent \reference + \immediate\write16{(\the\refnum) %% write comment to .LIS and terminal + First reference to "#1" on page \the\pageno.}\fi + \fi} % end \ifnullname + +% \ifstar determines whether a tag begins with "*", and sets a flag + +\def\ifstar#1#2\relax{\ifx*#1\relax\nullnametrue\else\nullnamefalse\fi} + + +% \@GetRefText gets the reference text as everything up to the next +% \endreference and writes it to the .ref file, at least for citation +% styles which save the list to the end. #1 is the label. +% #2 is lookahead past possible line end before \seeCR + +\def\@GetRefText#1#2{% % get and write reference text + \ifnum\CiteType=4\else % footnotes rather than ref list? + \ifnullname % Is name null (set by \@tagref)? + \p@nctwrite{; }% % punctuation for continuation + \@refwrite{\@comment ... Reference text for %% + "#1" defined on page \number\pageno.}% + \@refwrite{\@refbreak}% % and a possible line break + \else % No: just begin another... + \ifnum\refnum>1\p@nctwrite{. }\fi %!% trailing period, unless first one + \@refwrite{\@comment }% % + \@refwrite{\@comment (\the\refnum) Reference text for %% + "#1" defined on page \number\pageno.}% + \@refwrite{\string\@refitem{\the\refnum}{#1}}% write label info + \fi + \fi + %% + \begingroup % start group to write text + \def\endreference{\NX\endreference}% disable these in references + \def\reference{\NX\reference}\def\ref{\NX\ref}% + \seeCR\newlinechar=`\^^M % so ^^M seen by \@copyref + \@copyref#2} % copy text line to .ref file + + +% \@copyref copies the text up to the \endreference to the .ref +% file and then performs the \endreference + +\def\@copyref#1\endreference{% copy reference text to .ref file + \endgroup % end \seeCR + \ifnum\CiteType=4 % footnotes rather than ref list? + \ifnum\footnum<\refnum\global\footnum=\refnum\fi % sync w/ \footnum + \Vfootnote{\ifnullname\relax\else + {\CiteStyle{\the\refnum}}\fi} %% That space is needed! Why? + {\hangindent=\parindent\hangafter=1\seeCR #1\@refpunct.}% + \else % write text to .ref file + \@refNXwrite{#1\@endrefitem}% + \fi % + \@endreference} % do \endreference stuff... + +\def\@endrefitem#1{#1} % for future expansion... + + +% \@endreference is post processing (what user thinks is \endreference). +% \@endreference checks to see if another \reference follows. If not, it puts +% the citation mark in the output + +\long\def\@endreference#1{% end a \reference and look ahead at next token + \reffollowsfalse % assume no cit'ns follow + \ifx#1\cite\reffollowstrue\fi % is next token another \cite? + \ifx#1\citerange\reffollowstrue\fi % or \citerange + \ifx#1\refrange\reffollowstrue\fi % or \refrange + \ifx#1\ref\reffollowstrue\fi % (or \ref, OLD TeXsis) + \ifx#1\reference\reffollowstrue % \reference follows? + \ifnum\CiteType=3 % citation for [named] references + \xdef\@refmark{\linkto{Ref.\RefLabel}{\RefLabel}}\add@refmark\fi + \ifnum\CiteType=6 % citation for (named) references + \xdef\@refmark{\linkto{Ref.\RefLabel}{\RefLabel}}\add@refmark\fi + \else % not a \reference, so dump citations + \ifnum\@firstrefnum>\@lastrefnum\relax % If *'d \reference be quiet + \else % +% +% Construct the reference mark for this reference or range in \@refmark +% + \ifnum\CiteType=3 % [named] reference + \xdef\@refmark{\linkto{Ref.\RefLabel}{\RefLabel}}% + \else\ifnum\CiteType=6 % (named) reference + \xdef\@refmark{\linkto{Ref.\RefLabel}{\RefLabel}}% + \else % + \ifnum\@firstrefnum=\@lastrefnum % is there only one reference? + \xdef\@refmark{\linkto{Ref.\the\@lastrefnum}{\the\@lastrefnum}}% + \else % no: write a range of numbers + \xdef\@refmark{\linkto{Ref.\the\@firstrefnum}{\the\@firstrefnum}-% + \linkto{Ref.\the\@lastrefnum}{\the\@lastrefnum}}% + \fi % end \ifnum\@firstrefnum= + \fi\fi % endif 3 or 5 + %% + \global\@firstrefnum=\refnum % reset \@firstrefnum to be ... + \global\advance\@firstrefnum by \@ne% \refnum + 1 + \add@refmark % add \@refmark to \@refmarklist + \fi % end \ifnum\@firstrefnum + \fi % end \ifx#1\reference + \flush@reflist{#1}}% % output ref mark list + + +\def\endreference{% end the \reference text + \emsg{> Whoops! \string\endreference was called without + first calling \string\reference.}\@errmark{REF?}% + \emsg{> I'll just ignore it.}% + }% + +\def\@refspace{\ } + +% \citemark{#1} creates the citation mark, in a format determined +% by \CiteType. The possible choices are: +% 0 = no mark (silently adds the reference to list) +% 1 = superscript reference numbers +% 2 = reference numbers in the text in [brackets] +% 3 = citation in the text by name-date (using the label) in [brackets] +% 4 = supercript reference numbers for references as FOOTNOTES +% 5 = reference numbers in the text in (parens) +% 6 = citation in the text by name-date (using the label) in (parens) + +\def\citemark#1{% output the citation marks in the text + \relax\let\@sf\empty % + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi % save spacefactor + \ifcase\CiteType\relax % 0: no citation mark + \or % 1: superscript numbers + $\relax{}^{\hbox{$\scriptstyle\CiteStyle{#1\refterminator}$}}$\relax + \or {}~[{\CiteStyle{#1}}]\relax % 2: [<number>] style in-line + \or {}~[{\CiteStyle{#1}}]\relax % 3: [<text>] style in-line + \or % 4: superscript numbers, + $\relax{}^{\hbox{$\scriptstyle\CiteStyle{#1\refterminator}$}}$\relax % + \or {}~({\CiteStyle{#1}})\relax % 5: (<number>) style in-line + \or {}~({\CiteStyle{#1}})\relax % 6: (<text>) style in-line + \else\relax\fi % else: nothing + \@sf}% % restore spacefactor + +\def\CiteStyle{\relax} % default citation type size/style + + +% Turn off \citemark output. For typing a list of references all +% together at the begining of a document. + +\def\referencelist{% begin a list of references at front of document + \ifnum\CiteType=4 % footnotes rather than ref list? + \emsg{> Warning: \string\referencelist is not compatible with %% + footnoted reference citations.}\fi + \begingroup + \pageno=0\CiteType=0} % disable citations + +\def\endreferencelist{% end \referencelist + \endgroup} % all as it was + +%==================================================* +% CITATIONS. +% +% New way of controlling citation style is by \CiteType. +% The possible choices are: +% 0 = no mark (silently adds the reference to list) +% 1 = superscript reference numbers +% 2 = reference numbers in the text in [brackets] +% 3 = citation in the text by label as key, in [brackets] +% 4 = supercript reference numbers for references as FOOTNOTES +% 5 = reference numbers in the text in (parens) +% 6 = citation in the text by label as key, in (parens) + +\def\CiteBySuperscript{\CiteType=1} % superscript number +\def\CiteByNumber{\CiteType=2} % reference number in [brackets] +\def\CiteByTag{\CiteType=3} % tag in [brackets] +\def\CiteByLabel{\CiteType=3} % synonym +\def\CiteByFootnote{\CiteType=4} % superscript number, text as footnote +\def\CiteByWhatever{\CiteType=5} % reference number in (parens) +\def\CiteByAuthor{\CiteType=6} % tag in (parens) + + +% \cite{<label>} cites a previously defined reference given by +% <label>. (There is only one user argument, #2 is for lookahead.) + +\long\def\cite#1#2{% cite a previous reference in the text + \def\RefLabel{#1}% % + \markittrue % make sure output is on + \reffollowsfalse % assume no ref. follows + \ifx#2\cite\reffollowstrue\fi % is next token another \cite? + \ifx#2\citerange\reffollowstrue\fi % or \citerange + \ifx#2\refrange\reffollowstrue\fi % or \refrange (OLD) + \ifx#2\ref\reffollowstrue\fi % (or \ref, OLD TeXsis) + \ifx#2\reference\reffollowstrue\fi % or is it \reference? then set flag. + \auxwritenow{\string\citation\string{#1\string}}% + \make@refmark{#1}% % make reference mark in \@refmark + \add@refmark % add \@refmark to \@refmarklist + \flush@reflist{#2}}% % flush \@refmarklist to output + +\let\ref=\cite % \ref is synonym (old TeXsis) + +\def\@refmarklist{} % start with nothing in list + + +% \nocite is for BIBTeX use. It bumps the number and makes a BIBTeX +% entry in the .aux file, but produces no output + +\def\nocite#1{% just make .aux entry for citation + \auxwritenow{\string\citation\string{#1\string}}}% + + +% \make@refmark takes the reference label and puts the reference number +% (if there is one) in \@refmark + +\def\make@refmark#1{% make a reference mark + \testtag{Ref.#1}\ifundefined % is it undefined? (tag -> \tok) + \emsg{> UNDEFINED REFERENCE #1 ON PAGE \number\pageno.}% error message + \global\advance\@BadRefs by 1 % count undefined references + \xdef\@refmark{{\tenbf #1}}% % cite with label in boldface + \@errmark{REF?}% % and mark error in output + \else % no: + \ifnum\CiteType=3 % label or number citation? + \xdef\@refmark{\linkto{Ref.#1}{#1}}% cite with text of label + \else + \xdef\@refmark{\linkto{Ref.\csname\tok\endcsname}{\csname\tok\endcsname}}% cite with number + \fi\fi} % end of \ifundefined + + +% \add@refmark adds \@refmark to the \@refmarklist + +\def\add@refmark{% add reference mark to accumulating list + \ifmarkit % + \ifx\@refmarklist\empty\relax % any previous citations? + \xdef\@refmarklist{\@refmark}% % no: just add this one + \else % yes: add to list, + \ifnum\CiteType=3 % name or number citation? + \xdef\@refmarklist{\@refmarklist; \@refmark}% named citations + \else % + \xdef\@refmarklist{\@refmarklist,\@refmark}% numbered citations + \fi\fi\fi} % + + +% \flush@reflist flushes the \@refmarklist to the output. +% #1 is the lookahead token, used to see if we need to add space afterwards. + +\long\def\flush@reflist#1{% flush list of references to output + \ifmarkit % is \markit set? Then write citation + \ifreffollows\else % Is there a following citation? + \citemark{\@refmarklist}% % no: print citation + \gdef\@refmarklist{}% % empty \@refmarklist + \ifx#1\par\else\space@head{#1}\fi % insert possible space before #1 + \fi\fi % end \ifreffollows\ifmarkit + \def\@next{#1}\ifcat.\NX#1\def\@next{#1 }\fi % space after if punctuation + \@next} % put back lookahead #1 + + +% \space@head#1 takes the lookahead token from \@endreference or +% \cite and does nothing if it is punctuation. Otherwise it puts +% in a \space. It does not put the token back on the list! (the +% calling macro does that.) Note that in TeXsis ), ], and " can +% be active characters that have macro definitions, so they must +% be handled separately. + +{\quoteon +\gdef\space@head#1{\def\next{\space}% % normally a space + \ifcat.\NX#1\relax\def\next{\relax}\fi % no space if punctuation + \ifx)#1\def\next{\relax}\fi % no space if active ) + \ifx]#1\def\next{\relax}\fi % no space if active ] + \ifx"#1\def\next{\relax}\fi % no space if active quote + \next}}% % space or nothing + + +% \Ref{label} (note the case!) returns the reference number of a +% previously entered reference for use in text. If you don't like +% the way this looks you can change it to suit yourself. + +\def\Ref#1{% + \ifnum\CiteType=3 \citemark{\linkto{Ref.#1}{\use{Ref.#1}}}% + \else + \testtag{Ref.#1}\ifundefined % is it undefined? (tag -> \tok) + Ref.~\use{Ref.#1} % tagging error + \else + \linkto{Ref.\csname\tok\endcsname}{Ref.~\csname\tok\endcsname}% + \fi\fi} + +% \refrange#1#2 cites a range of previously defined references like +% \cite. #3 is a lookahead for another \cite or \ref + +\long\def\refrange#1#2#3{% cites a range of references + \ifnum\CiteType=3\emsg{> WARNING: \string\refrange\space %% + doesn't work with named citations.}\@errmark{REF?}\fi + \reffollowsfalse % assume no ref. follows + \ifx#3\cite\reffollowstrue\fi % is next token another \cite? + \ifx#3\ref\reffollowstrue\fi % (or \ref, OLD TeXsis) + \ifx#3\reference\reffollowstrue\fi % or is it \reference? then set flag. + \ifx#3\refrange\reffollowstrue\fi % or \refrange +% +% Construct reference mark in \@refmark +% + \make@refmark{#2}% % ref mark for 2nd ref + \xdef\@refmarktwo{\@refmark}% % save for later + \make@refmark{#1}% % ref mark for 1st ref + \xdef\@refmark{\@refmark\hbox{--}\@refmarktwo}% create range of references + \add@refmark % add to \@refmarklist + \flush@reflist{#3}} % flush citation mark list + +\let\citerange=\refrange % will be the new name some day + + +%========================================================================* +% REFERENCE FORMAT. These are used in the reference text to print +% properly volume numbers for journals, titles of books, etc. + +% \vol{volume of journal} is used for the volume number of a journal +% article. The number is underlined when printed. (Underscoring looks +% better than boldface on the laser printer, but you can change this.) + +\def\vol#1{\undertext{#1}} + +% \booktitle{title of book} prints book title in slanted type +% \ArticleTitle does the same for the title of a journal article, +% but only if \ShowArticleTitletrue is set, and that is not the default. + +\def\booktitle#1{{\sl #1}} + +\newif\ifShowArticleTitle \ShowArticleTitlefalse +\def\ArticleTitle#1{\ifShowArticleTitle{\sl #1},\fi} + +% Some other useful shorthand for references + +\def\etal{{\it et al.}} \def\ie{{\it i.e.}} +\def\cf{{\it cf.}} \def\ibid{{\it ibid.}} + +%==================================================* +% LIST OF REFERENCES. \ListReferences gets the list of references +% from the .ref file and adds it to the document. \References is a +% synonym (from v.2.04). No heading is printed; the user should add +% one with \chapter, \section, or whatever is appropriate. + +\def\ListReferences{% + \ifnum\CiteType>0 + \ifnum\CiteType=4\relax\else + \@ListReferences + \fi\fi} + + +\def\@ListReferences{\emsg{Reference List}% announce in .LIS file + \ifnum\refnum>\z@ \p@nctwrite{.}% % write last "." for last ref + \@refwrite{\@comment>>> EOF \jobname.ref <<<}%% and EOF marker comment + \immediate\closeout\reflistout % then close the .ref file + \fi + \ifnum\@BadRefs>\z@ % any undefine references? + \emsg{>}\emsg{> There were \the\@BadRefs\ undefined references.}% + \emsg{> See the file \jobname.log for the citations, or try running}% + \emsg{> TeXsis again to resolve forward references.}\emsg{>}% + \fi + %% + \begingroup + \offparens % make sure )&( not active + \immediate\openin\reflistin=\jobname.ref % try to open .ref file + \ifeof\reflistin % if EOF then it isn't there + \closein\reflistin % so just close it and quit + \emsg{> \string\ListReferences: no references in \jobname.ref}% + \else % It's there? let's read it in + \catcode`@=11 % Make @ a letter + \catcode`\^^M=10 % Treat ^^M like whitespace + \def\reference{\@noendref}% % In case of errors + \parindent=\z@ % No indent for each item + \singlespaced % References single spaced! + \ifdim\refindent<0pt % Is \refindent unset? Then + \setbox9\hbox{\the\refnum.\quad}% get size of largest \refnum + \refindent=\wd9 % and use it for \refindent + \fi + \refFormat % User definable format info + \input\jobname.ref \relax % Read in text from .ref file + \vskip 0pt % Needed to force \leftskip! + \fi % \ifeof + \endgroup % end all character re-def's + \refReset % start over on references +} + +\def\References{\ListReferences} % synonym + + +% \refFormat is called just before the reference file is read in. +% It can contain instructions for formatting the reference list. For example, +% in two-column output it might be good to have it include a \raggedright. + +\def\refFormat{\relax}% + +\def\@noendref#1{% + \emsg{> Whoops! \string\reference{#1} was given before the}% + \emsg{> \string\endreference for the previous \string\reference.}% + \emsg{> I'll just ignore it and run the two together.}% + }% + + +% \@refitem starts a new reference, with the number in the left margin. +% For use by \ListReferences when printing reference list. +% #1 is the reference number, while #2 is the tag name +% \refskip is the skip between references (default is \smallskip). +% \refindent is the indentation of each entry after the first line + +\def\@refitem#1#2#3{\message{#1.}% #3 looks past ^^M for next arg + \auxwritenow{\string\bibcite\string{#2\string}\string{#1\string}}% .AUX + \parskip=\z@\parindent=\z@ % + \leftskip=\refindent % left margin indented + \refskip % skip down for next entry + \par\noindent\hskip-\refindent % first line of entry not indented + \ifnum\CiteType=3 % Label entries with tag (#2)? + \hbox{\linkname{Ref.#1}{\RefNumStyle{#2}{.\quad}}}% + \else % Label tag with number (#1) + \ifnum\CiteType=6\else % (but no label for case =6) + \hbox to \refindent{\hfil\linkname{Ref.#1}{\RefNumStyle{#1}{.\quad}}}% + \fi\fi + #3} + +\def\refskip{\smallskip} % default skip between entries + +% \RefNumStyle can manipulate the style of the reference number or +% label in many ways. You could just say \let\RefNumStyle=\bf +% You could define it to be a macro which takes one argument, the number +% eg. \def\RefNumStyle#1{\romannumeral#1}, or you could define it to +% be a macro which takes two argments, eg. \def\RefNumStyle#1#2{#1} + +\def\RefNumStyle{\relax} + +% \@refpunct gets the punctuation for the reference text and kills +% the space and carriage return before it. + +\def\@refpunct#1{\unskip#1} % remove space and print . or ; + +% \p@nctwrite#1 writes punctuation #1 to .ref file only if \ifrefpunct +% is true. Use this to turn off automatic punctuation of references. + +\def\p@nctwrite#1{% + \ifrefpunct\@refwrite{\NX\@refpunct#1}\fi} + +% \@refbreak causes a line break if \ifbreakrefs is true. + +\def\@refbreak{\ifbreakrefs\hfill\break\fi} + + +%======================================================================* +% \journal simplifies typing journal references in technical papers +% by providing automatic formatting and automatic correct treatment of +% abbreviations. By default typing +% \journal Phys. Rev. Lett.;vol;page(year) +% produces +% Phys. Rev. Lett. vol, page (year) +% All periods in name are followed by a single space as if you had typed +% Phys.\ Rev.\ Lett.\ and the volume number is underlined (not boldface), +% using \vol{number}. +% +% If you first type \Eurostyletrue then \journal produces +% Phys. Rev. Lett. vol (year) page +% appropriate to European journals. Note that the arguments to \journal +% are ALWAYS in the American order. +% +% \journal can be used to define macros for specific journals, but +% in this case all . MUST be typed as .\ because of the way that TeX +% uses \catcodes for characters. + + +\newif\ifEurostyle \Eurostylefalse % European style journals +\offparens % make sure ( and ) not active! + +% When . is active instead of punctuation it gives no space + +{\catcode`\.=\active \gdef.{\hbox{\p@riod\null}}}% . is .\null for abbrev +\def\p@riod{.} % normal period + +% Define main macro \journal. This turns on definition of . and +% turns off easy parens, then does work with \j@ounal. + +\def\journal{% cite an article in a journal by volume, page and year + \bgroup % keep \catcode's local + \catcode`\.=\active % make . active + \offparens % turn off easy parens + \j@urnal}% % and do work + + \def\j@urnal#1;#2,#3(#4){% gets the \journal material + \ifEurostyle % choose style... + {#1} {\vol{#2}} (\@fullyear{#4}) #3\relax % European style + \else % + {#1} {\vol{#2}}, #3 (\@fullyear{#4})\relax% American style + \fi % + \egroup} % end group for . and () + +% \@fullyear takes one argument, which is considered to be a year. +% If it is less than 100 then it is an abreviation (Y2K problem!). +% We add the current century to it if it is less than or equal to +% THIS year, otherwise we add the LAST century. This should survive +% into the next millenium, but users should use 4-digit years. +% Thanks to Scott Hannahs for this macro. + +\def\@fullyear#1{% + \begingroup % make calculations local + \count255=\year % get current century + \divide \count255 by 100 \multiply \count255 by 100 + \count254=\year % next year in this century + \advance \count254 by -\count255 \advance \count254 by 1 + \count253=#1\relax % citation year + %% + \ifnum\count253<100 % year < 100 needs century + \ifnum \count253>\count254 % high year + \advance \count253 by -100\fi % means last century + \advance \count253 by \count255 % add centuries + \emsg{> WARNING: \string\@fullyear: possible Y2K problem. %% + Year #1 interpreted as \the\count253.}% + \emsg{> Please use 4 digits for years.}% + \fi % + \number\count253 % display year + \endgroup} % end local calculations + +%----------------------------- +% Shorthand names of Journals: + +\def\NP{Nucl.\ Phys.} \def\PL{Phys.\ Lett.} +\def\PR{Phys.\ Rev.} \def\PRL{Phys.\ Rev.\ Lett.} + +% These are the APS journal names used by REVTEX, and we can use them too + +\def\ao{Appl.\ Opt.\ } \def\ap{Appl.\ Phys.\ } +\def\apl{Appl.\ Phys.\ Lett.\ } \def\apj{Astrophys.\ J.\ } +\def\jcp{J.\ Chem.\ Phys.\ } \def\jmo{J.\ Mod.\ Opt.\ } +\def\josa{J.\ Opt.\ Soc.\ Am.\ }\def\josaa{J.\ Opt.\ Soc.\ Am.\ A } +\def\jpp{J.\ Phys.\ (Paris) } \def\nat{Nature (London) } +\def\oc{Opt.\ Commun.\ } \def\ol{Opt.\ Lett.\ } +\def\pl{Phys.\ Lett.\ } \def\pra{Phys.\ Rev.\ A } +\def\prb{Phys.\ Rev.\ B } \def\prc{Phys.\ Rev.\ C } +\def\prd{Phys.\ Rev.\ D } \def\pre{Phys.\ Rev.\ E } +\def\prl{Phys.\ Rev.\ Lett.\ } \def\rmp{Rev.\ Mod.\ Phys.\ } +\def\bell{Bell Syst.\ Tech.\ J.\ } +\def\jqe{IEEE J.\ Quantum Electron.\ } +\def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.\ } +\def\aprop{IEEE Trans.\ Antennas Propag.\ } +\def\mtt{IEEE Trans.\ Microwave Theory Tech.\ } +\def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.\ } +\def\josab{J.\ Opt.\ Soc.\ Am.\ B } +\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.\ } +\def\sjqe{Sov.\ J.\ Quantum Electron.\ } + + +%======================================================================* +% BIBTeX support for TeXsis (C) Copyright by Bernd Dammann 1995, 1996 +% Used here by his permission. +% +% Adapted from TXSbib.tex, by Bernd Dammann <bernd@fki.dtu.dk> + +\message{BIBTeX support for TeXsis (macros and patches) v 0.92} + +% These are needed (BIBTeX looks for them), but we just define them +% as \relax, to avoid TeXsis complaining about undefined things while +% it scans the .aux file. +% +\def\citation#1{\relax} \def\bibdata#1{\relax} +\def\bibstyle#1{\relax} \def\bibcite#1#2{\relax} + +% \emdash was in some of the .bib files that came with BIBTeX. I +% don't know what it is good for, so we define it as a dash +\def\emdash{--} + +% REFERENCE STYLE. \ReferenceStyle{<style>} has the same +% function as the corresponding \bibliographystyle LaTeX macro. It +% tells BIBTeX which .bst style file to use for producing the reference +% list. The <style> parameter is without the default extension .bst. +% Usually you will want \ReferencStyle{texsis}, but we don't do that +% automatically to allow user customization. + +\def\ReferenceStyle#1{\auxwritenow{\string\bibstyle\string{#1\string}}} +\let\bibliographystyle=\ReferenceStyle % LaTeX synonym + + +% REFERENCE FILES. \ReferenceFiles{<file1>,...<fileN>} has the same +% function as the corresponding \bibliography{} LaTeX macro (almost). +% We write the \bibdata{<file1>,...<fileN>} information to the .aux +% file (BIBTeX needs it there), and we load the referencelist (if it +% exists). Furthermore, we could use the TeXsis \ListReferences +% macro to produce the list of references, to make this almost +% behave as the LaTeX macro (we should then write a headline too). +% However, we leave it to the user to print the references by using +% \ListReferences. This has the advantage that one can use the +% \ReferenceFiles{} in the very beginning of the TeX source, so we +% don't need to run TeXsis twice after running BIBTeX (as in LaTeX). +% This can be a big time saver, especially for long documents, and I +% think it fits better with the TeXsis philosophy. -BD +% +\def\ReferenceFiles#1{% first write names of .bib files to .aux file + \auxwritenow{\string\bibdata\string{#1\string}}% +% +% Now try to open an existing .bbl file and read it in +% + \immediate\openin\reflistin=\jobname.bbl % try to open .bbl file + \ifeof\reflistin % if EOF then it isn't there + \closein\reflistin % so just close it. + \else\immediate\closein\reflistin % close so to \input + \input\jobname.bbl \relax % \input the references + \fi} +\let\bibliography=\ReferenceFiles % LaTeX synonym + +%>>> EOF TXSrefs.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSruled.tex b/Master/texmf-dist/tex/texsis/base/TXSruled.tex new file mode 100644 index 00000000000..d7c1c21d5b9 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSruled.tex @@ -0,0 +1,402 @@ +%% file: TXSruled.tex - Ruled Tables - TeXsis version 2.18 +%% @(#) $Id: TXSruled.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% +% These macros will typeset tables with vertical and +% horizontal rules. The syntax is similar to Ray Cowan's TABLES.TEX, +% but the macros have been completely rewritten. Vertical and horizontal +% rules are drawn by macros using vertical spacing controlled by struts. +% Usage: +% \ruledtable +% <item> <tab> ... <item> <cr> +% ... +% <item> <tab> ... <item> \endruledtable +% where <item> is an element of the table (every row must have exactly +% the same number of items, although some may be blank), <tab> is any +% one of +% & for no vertical rule +% | [or \vb] for vertical rule +% \| [or \Vb] for thick vertical rule +% \dbl for double vertical rule +% and <cr> is any one of +% \nr for no horizontal rule +% \cr for horizontal rule +% \CR [or \crthick] for thick horizontal rule +% The last <cr> must be omitted in favour of the \endruledtable +% +% For horizontal rules across only some columns use +% ... \nr +% \crule | \cskip & \Crule ... \crpart +% where \crpart is a special \cr for the partial rule line and +% \cskip no rule for column +% \crule horizontal rule for column +% \Crule thick horizontal rule for column +% The number of columns must be identical to the other rows. +% +% To change the appearance of the table, modify \TableItem. +% Several modifications are built in: +% \LeftJustifyTables left justify each column +% \RightJustifyTables right justify each item +% \NoJustifyTables center each item (default) +% \tablespace horizontal spacing around each item +% (default is \quad) +% \TightTables use \ horizontal spacing +% \LooseTables use \quad horizontal spacing (default) +% +% Use \bigitem to expand the vertical strut for high or deep items. +% +% These macros have been reorganized and substantially revised from +% version 2.13. The following functional changes have been made: +% (1) The @ signs have been removed from the names of the macros +% used to save the Plain \cr, \span, and & so that they can be used to +% modify the preamble. See above. +% (2) Macros for partial horizontal rules have been added. +% (3) \tabskip glue has been added so that \tablewidth works +% correctly -- the table stretches uniformly over all columns. +% (4) \linecount has been moved to the \cr macros. It produces a +% warning if the number of columns is different from that in the +% previous row. +% (5) Trailing spaces in the table items are added to the output. +% A macro \NoTrailingSpaces inserts an \unskip after each item to remove +% them. But this also removes trailing skips unless they are followed by +% an empty \hbox or something similar. This is done automatically for +% an \hfill (frequently used to left justify an item). +% The default is \TrailingSpaces, but you may wish to insert +% \NoTrailingSpaces in your TXSsite.tex file. +% (6) \para uses \normalbaselines rather than specific pt values +% for the interline spacing and the final strut. +% +% (C) copyright 1990, 1991 by Eric Myers and Frank E. Paige +%======================================================================* +% Counters and such: +\catcode`@=11 % @ is a letter here +\catcode`\|=12 % make sure | is not active +\catcode`\&=4 % and that & is alignment tab + +\newcount\ncols \ncols=\z@ % number of columns in table +\newcount\nrows \nrows=\z@ % number of rows in table +\newcount\curcol \curcol=\z@ % current column counter +\let\currow=\nrows % current row counter + +\newdimen\thinsize \thinsize=0.6pt % thin rule width +\newdimen\thicksize \thicksize=1.5pt % thick rule width +\newdimen\tablewidth \tablewidth=-\maxdimen % start ``turned off'' +\newdimen\parasize \parasize=4in % paragraph size in tables + +\newif\iftableinfo \tableinfotrue % report rows and columns? Yes +\newif\ifcentertables \centertablestrue % center tables? Yes +\def\centeredtables{\centertablestrue}% +\def\noncenteredtables{\centertablesfalse}% +\def\nocenteredtables{\centertablesfalse}% % synonym ! + +\let\plaincr=\cr % save real \cr +\let\plainspan=\span % save real \span +\let\plaintab=& % save real alignment tab & +\def\ampersand{\char`\&}% % to print `&' in text +\let\lparen=( % save left paren +\let\NX=\noexpand % shorthand for \noexpand is \NX + +%---------------------------------------* +% Main macros: +% \ruledtable <table stuff> \endruledtable turns on the ruled +% table definitions and makes the table with \halign. It handles all +% the control stuff; the real work is done by \@RuledTable. + +\def\ruledtable{\relax % make ruled table + \@BeginRuledTable % initialize table + \@RuledTable}% % now process table body + +% \@BeginRuledTable does all the work of setting things up before +% we read in the body of the table + +\def\@BeginRuledTable{% % initialize table + \ncols=0\nrows=0 % reset row and column count + \begingroup % keep the following local + \offinterlineskip % so vrules touch + \def~{\phantom{0}}% % ~ is phantom digit + \def\span{\plainspan\omit\relax\colcount\plainspan}% \span USER columns + \let\cr=\crrule % \cr gives a \tablerule + \let\CR=\crthick % \CR gives a \thickrule + \let\nr=\crnorule % \nr give no rule + \let\|=\Vb % thick vrule between columns + \def\hfill{\hskip0pt plus1fill\hbox{}}% % so it is not removed +% +% support old \tablestrut in place of \tstrut if it exists +% + \ifx\tablestrut\undefined\relax % if not defined, no problem + \else\let\tstrut=\tablestrut\fi % use \tablestrut +% + \catcode`\|=13 \catcode`\&=13\relax % make | and & active + \TableActive % | and & get active \def`s + \curcol=1 % reset column count +% +% define \Halign to do an \halign with or without a width +% + \ifdim\tablewidth>-\maxdimen\relax % + \edef\@Halign{\NX\halign to \NX\tablewidth\NX\bgroup\TablePreamble}% + \tabskip=0pt plus 1fil % let things stretch + \else % + \edef\@Halign{\NX\halign\NX\bgroup\TablePreamble}% + \tabskip=0pt % no stretch between columns + \fi % +% +% center text if needed +% + \ifcentertables % should table be centered? + \ifhmode\vskip 0pt\fi % yes: force vertical mode + \line\bgroup\hss % center across page + \else\hbox\bgroup % else: just put in \hbox + \fi}% % end of \@BeginRuledTable + + +% \@RuledTable builds the table with \@Halign and getting the +% table body text as its argument. + +\long\def\@RuledTable#1\endruledtable{% % ruled table alignment + \vrule width\thicksize % thick rule on side + \vbox{\@Halign % then do \halign + \thickrule % thick rule on top + #1\killspace % body of table + \tstrut % vertical strut for last line + \linecount % count this line + \plaincr\thickrule % \cr, thick rule on bottom + \egroup}% % end of \halign and \vbox + \vrule width\thicksize % thick rule on side, end \hbox + \ifcentertables\hss\fi\egroup % finish table centering + \endgroup % end group from \ruledtable + \global\tablewidth=-\maxdimen % and reset width + \iftableinfo % report rows and columns + \immediate\write16{[Nrows=\the\nrows, Ncols=\the\ncols]}% + \fi}% % end of \@RuledTable + +%---------------------------------------* +% Preamble and item macros: +% \TablePreamble is the preamble for the \halign in \ruledtable. +% To change how each item is processed change \TableItem. +% To make a more complicated table you can change \TablePreamble, +% but if you do so use the following substitutions in a standard \halign +% preamble: +% for & use \plaintab +% for \cr use \plaincr +% for # use ## +% for ## use #### + +\def\TablePreamble{% % \ruledtable preamble + \TableItem{####}% % the first item + \plaintab\plaintab % && means repeat this + \TableItem{####}% % the subsequent items + \plaincr}% % end of preamble + + +% \TableItem contains glue or spacing around the item + +\def\@TableItem#1{% % centers item in ruled table + \hfil\tablespace % left glue + #1\killspace% % item + \tablespace\hfil % right glue + }% + +\def\@tableright#1{% % right justifies item in ruled table + \hfil\tablespace\relax % left glue + #1\killspace% % item + \tablespace\relax}% % right glue + +\def\@tableleft#1{% % left justifies item in ruled table + \tablespace\relax % left glue + #1\killspace% % item + \tablespace\hfil}% % right glue + +\let\TableItem=\@TableItem % default is centered + +\def\RightJustifyTables{\let\TableItem=\@tableright}% % to right justify +\def\LeftJustifyTables{\let\TableItem=\@tableleft}% % to left justify +\def\NoJustifyTables{\let\TableItem=\@TableItem}% % to center + + +% \TightTables makes the spacing of a table as tight as possible. +% \LooseTables, the default, gives more pleasing spacing. + +\def\LooseTables{\let\tablespace=\quad}% % table spacing is \quad +\def\TightTables{\let\tablespace=\space}% % table spacing is space +\LooseTables % default is \quad + + +% \TrailingSpaces, the default, allows trailing spaces and glue +% to change the appearance of a table. \NoTrailingSpaces removes all +% trailing spaces and glue before inserting the table glue. + +\def\TrailingSpaces{\let\killspace=\relax} % do not kill trailing space +\def\NoTrailingSpaces{\let\killspace=\unskip} % kill trailing space +\TrailingSpaces % default + +%---------------------------------------* +% Table Height and Width: +% +% Normally tables are set to their natural width. If \tablewidth +% has been set then we set the table to that width instead, +% but only for the next table. Then \tablewidth is turned off + +% \setRuledStrut sets up the vertical strut \tstrut with +% the appropriate dimensions to hold up one line of a ruled table. + +\def\setRuledStrut{% sets interlines spacing for ruled tables + \dimen@=\baselineskip % \dimen@ = extra space + \advance\dimen@ by-\normalbaselineskip % between lines + \ifdim\dimen@<.5ex \dimen@=.5ex\fi % minimum space + \setbox0=\hbox{\lparen}% % get character size + \dimen1=\dimen@ \advance\dimen1 by \ht0 %% space above line + \dimen2=\dimen@ \advance\dimen2 by \dp0 %% space below line + \def\tstrut{\vrule height\dimen1 depth\dimen2 width\z@}% + }% + +\def\tstrut{\vrule height 3.1ex depth 1.2ex width 0pt}% default + + +% \tstrut does not produce the correct spacing if the entry in +% the table is too high. The following constructs a strut higher than its +% argument and then prints the argument. The minimum space value should +% be the same as in \setRuledStrut. + +\def\bigitem#1{% % larger table entry + \dimen@=\baselineskip % \dimen@ = extra space + \advance\dimen@ by-\normalbaselineskip % between lines + \ifdim\dimen@<.5ex \dimen@=.5ex\fi % minimum space + \setbox0=\hbox{#1}% % get argument size + \dimen1=\dimen@ \advance\dimen1 by \ht0 % space above line + \dimen2=\dimen@ \advance\dimen2 by \dp0 % space below line + \vrule height\dimen1 depth\dimen2 width\z@ % make strut to size + \copy0}% % print argument + + +% \vctr{stuff} centers the stuff vertically, so that it can +% appear between two ROWS. + +\def\vctr#1{\hfil\vbox to 0pt{\vss\hbox{#1}\vss}\hfil}% + +%---------------------------------------* +% Vertical rules: +% \tab, \vb and \Vb are used in a table to separate columns with no +% rule, a thin rule, or a thick rule, respectively. \nextcolumn{<rule>} skips +% to the next column and puts the <rule> between columns. Use this to build +% your own separators. + +\def\nextcolumn#1{% % move to next col. + \plaintab\omit#1\relax\colcount % tab, insert #1, count + \plaintab}% % tab to next user col. + +\def\tab{% % no rule between columns + \nextcolumn{\relax}}% % count column + +\let\novb=\tab % synonym for \tab + +\def\vb{% % thin rule between columns + \nextcolumn{\vrule width\thinsize}}% % count and rule + +\def\Vb{% % THICK rule between columns + \nextcolumn{\vrule width\thicksize}}% % count and thick rule + +\def\dbl{% % double rule between columns + \nextcolumn{\vrule width\thinsize % count and rule + \hskip 2\thinsize \vrule width\thinsize}}% % and skip and rule + +% \TableActive makes | the same as \vb and & the same as \tab so +% these single characters can be used between columns. Here we have to +% make & and | active so we get the active version of the characters, +% hence the temporary change of \catcode. + +{\catcode`\|=13 \let|0 + \catcode`\&=13 \let&0 + \gdef\TableActive{\let|=\vb \let&=\tab}% +}% end \catcode`s + +%---------------------------------------* +% Horizontal rules: +% These replacements for \cr put a wide \vrule at the end of the +% line and maybe put a rule under the line, then begin the next line +% with the wide \vrule from the preamble. + + +\def\crrule{\killspace % \cr plus rule + \tstrut % strut for spacing + \linecount % count this line + \plaincr\tablerule % \cr, regular rule below line + }% + +\def\crthick{\killspace % \cr plus thick rule + \tstrut % strut for vertical spacing + \linecount % count this line + \plaincr\thickrule % \cr, rule, begin next line + }% + +\def\crnorule{\killspace % \cr plus no rule + \tstrut % strut for spacing + \linecount % count this line + \plaincr % \cr, norule, begin next line + }% + +\def\crpart{\killspace % end partial rule line + \linecount % count this line + \plaincr} % and end it + + +% These rules go across the table. + +\def\tablerule{\noalign{\hrule height\thinsize depth 0pt}}% +\def\thickrule{\noalign{\hrule height\thicksize depth 0pt}}% + + +% Rules for individual columns. You must use \cskip in columns +% with no rules to \omit the \TablePreamble. + +\def\cskip{\omit\relax}% +\def\crule{\omit\leaders\hrule height\thinsize depth0pt\hfill}% +\def\Crule{\omit\leaders\hrule height\thicksize depth0pt\hfill}% + +%---------------------------------------* +% Counting macros: +% These macros count rows and columns of the table. After the +% first line has been processed \the\ncols is the total number of +% columns in the table, which may be useful. During processing, +% \the\curcol is the number of the current column, while \the\currow is +% the number of the current row. + + +\def\linecount{% % count and check row + \global\advance\nrows by1% % advance row counter + \ifnum\ncols>0% % if \ncols set + \ifnum\curcol=\ncols\relax\else % if new \ncols different + \immediate\write16% % then write message + {\NX\ruledtable warning: Ncols=\the\curcol\space for Nrow=\the\nrows}% + \fi\fi % end of tests + \global\ncols=\curcol % save columns in \ncols + \global\curcol=1} % reset counter + +\def\colcount{\relax % + \global\advance\curcol by 1\relax}% % advance column counter + +%---------------------------------------* +% TEXT TABLES. +% To put text in a table use \para{<text>}, with \parasize set +% to the desired width of the text. + +\long\def\para#1{% % make a paragraph for tables + \vtop{\hsize=\parasize % width - set before \para called + \normalbaselines % set normal baseline skips + \noindent #1\relax % insert text + \vrule width 0pt depth 1.1ex}% % hold depth of box +}% + +%---------------------------------------* +% TABLES.TEX +% For compatability with Cowan's TABLES.TEX we also allow the +% syntax \begintable ... \endtable, which do the same thing. +% + +\def\begintable{\relax % make ruled table + \@BeginRuledTable % initialize table + \@begintable}% % now process table body + +\long\def\@begintable#1\endtable{% % ruled table alignment + \@RuledTable#1\endruledtable}% % same as \ruledtable + +%>>> EOF TXSruled.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSsects.tex b/Master/texmf-dist/tex/texsis/base/TXSsects.tex new file mode 100644 index 00000000000..24c8153a86b --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSsects.tex @@ -0,0 +1,507 @@ +%% file: TXSsects.tex - Chapters and Sections - TeXsis version 2.18 +%% @(#) $Id: TXSsects.tex,v 18.1 2000/05/16 22:47:23 myers Exp $ +%======================================================================* +% +% These macros define chapters, sections, subsections, and +% appendices with appropriate formats and numbering. Note that tags +% are not automatically defined, but you can use \label. +% +% \chapter{<title>} causes a page break, prints the <title> in +% "Title bold face" (\Tbf) (which defaults to \bf if it is undefined), and +% adds an entry in the table of contents (q.v.). +% \showchaptIDtrue (the default) causes the chapter number to be +% printed and also to be appended it to equation numbers, giving in general +% chapnum.sectnum.eqnum. \showchaptIDfalse turns off the display +% of chapter numbers. +% +% \section{<title>} causes a skip but not a page break. It prints +% the section heading in small title bold face (\tbf) (which defaults to \bf). +% \showsectIDtrue (the default) causes the section number to be +% printed and to be appended to any equation numbers. \showsectIDfalse +% turns off the display of section numbers. +% +% \subsection{<title>} is like \section but does not use title +% bold face. Subsection numbers are displayed if \showsectIDtrue, but +% subsection numbers do not appear in equation numbers. +% +% \subsubsection{<title>} is a lower level than \subsection. +% Use it sparingly and only when appropritate. +% +% \Appendix{<ID>}{<title>} creates an appendix, with the <ID> +% playing the role of the chapter number. The <ID> appears in the title +% and in equation numbers if \showchaptIDtrue. +% +% \appendix{<ID>}{<title>} creates a section-like appendix. +% +% \nosechead{<title>} produces a heading without begining a new section, +% and without an entry in the table of contents. This can be used for +% acknowledgements, etc. +% +% For books, theses, and other long documents \chapter should be +% used for the first level of subdivision. For preprints and other +% shorter documents, \section is generally more appropriate for the +% first level, and it may be desirable to use \showsectIDfalse. +% +% Note: The typestyles \Tbf and \tbf should be defined elsewhere, +% and will be used to print chapter and section titles. +% Source: Much modified from TechRpt by Eric Myers +% +% Dependencies: TXSmacs.tex -- general things +% TXStags.tex -- labeling and tagging +% TXSconts.tex -- Table of contents macros \addTOC +%======================================================================* +% (C) copyright 1991-1999 by Eric Myers and Frank E. Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +%======================================================================* +\message{Section and Chapter divisions.} +\catcode`@=11 + +% Counters, flags, and labels: + +\newcount\chapternum \chapternum=\z@ % chapter number +\newcount\sectionnum \sectionnum=\z@ % section number +\newcount\subsectionnum \subsectionnum=\z@ % sub-section number +\newcount\subsubsectionnum \subsubsectionnum=\z@ % subsubsection number + +\newif\ifshowsectID \showsectIDtrue % show sections? +\def\@sectID{} % section ID for eqns +\newif\ifshowchaptID \showchaptIDtrue % show chapters? +\def\@chaptID{} % chapt ID for eqns + + +% \sectionskip and \subsectionskip are the skips used in \section (and +% \appendix) and in \subsection (and \subsubsection): + +\newskip\sectionskip \sectionskip=2\baselineskip +\newskip\subsectionskip \subsectionskip=1.5\baselineskip + +% \sectionminspace is how much must be left on the page to prevent +% skipping to a new page at the begining of a section. + +\newdimen\sectionminspace \sectionminspace = 0.20\vsize + +%-------------------------------------* +% CHAPTER LEVEL: \chapter{<title>} causes a page break, prints a +% chapter title, and resets important counters. The macro \label may be +% used to assign the chapter number to a name if it occurs in the title. +% #2 is lookahead for a \par (blank line), which is discarded, so that +% there is no indentation at the begining of a chapter. + +\long\def\chapter#1#2 {% begin a new chapter in a document + \def\@aftersect{#2}% + \ifx\@aftersect\empty\let\@aftersect=\@eatpar + \else\def\@aftersect{\@eatpar #2 }\fi + \vfill\supereject % begin on a new page + \global\advance\chapternum by \@ne % increment chapt. # + \global\sectionnum=\z@ % reset section # to zero + \global\def\@sectID{}% % section ID is null +% +% Chapter ID: +% + \edef\lab@l{\ChapterStyle{\the\chapternum}}% % chapter ID for \label + \ifshowchaptID % show chapter id? + \global\edef\@chaptID{\lab@l.}% % yes: define chapter ID + \r@set % and reset most counters + \else\edef\@chaptID{}\fi % else chapt ID is null + \everychapter % user can customize here +% +% Print Title: +% + \ifx\Tbf\undefined\def\Tbf{\bf}\fi % If \Tbf undefined make it \bf + \ifshowchaptID % if chapter ID used + \leftline{\Tbf{Chapter\ \@chaptID}} % CHAPTER ##. on a line + \nobreak\smallskip\fi % with little space below + \begingroup % + \raggedright\pretolerance=2000\hyphenpenalty=2000 % no hyphenation + \parindent=\z@ {\Tbf{#1}\bigskip}% % title, in \Tbf + \endgroup % format + \nobreak\bigskip % skip down some more +% +% Running Headline and Table of Contents: +% + \begingroup % add to Table of Contents + \def\label##1{}% % disable \label + \xdef\ChapterTitle{#1}% % save title for user + \def\n{}\def\nl{}\def\mib{}% % now turn off \n, etc + \setHeadline{#1}% % make title the running head + \emsg{\@chaptID\space #1}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{0}{\TOCcID{\lab@l.}#1}{\folio}% % add to Table of Contents + \endgroup % +% + \@Mark{#1}% % page mark chapter heading + \s@ction % end of section processing + \afterchapter\@aftersect} % user can customize (\@aftersect is lookahead) + + + +\def\everychapter{\relax}% user ``hook'' performed before every \chapter +\def\afterchapter{\relax}% user ``hook'' performed after every \chapter + + + +% \ChapterStyle lets you change the style in which the chapter number +% is displayed (i.e. \romannumerals, \Romannumerals, or \arabic + +\def\ChapterStyle#1{#1} % default is nothing + +\def\setChapterID#1{\edef\@chaptID{#1.}} % so you can change \@chaptID + + +% \r@set restest all the counters for a new chapter or section + +\def\r@set{% % resets counters for \theorem, \EQN, etc... + \global\subsectionnum=\z@ % subsection number = 0 + \global\subsubsectionnum=\z@ % subsubsection number = 0 + \ifx\eqnum\undefined\relax % is TXSeqns.tex loaded? + \else\global\eqnum=\z@\fi % yes: reset equation number + \ifx\theoremnum\undefined\relax % is TXSfigs.tex loaded? + \else % yes: reset counters + \global\theoremnum=\z@ \global\lemmanum=\z@ + \global\corollarynum=\z@ \global\definitionnum=\z@ + \global\fignum=\z@ + \ifRomanTables\relax + \else\global\tabnum=\z@\fi % do not reset tables if Roman numeral counting + \fi} + +\long\def\s@ction{% generic end processing common to chapters and sections + \checkquote % check for balanced quotes + \checkenv % check for balanced envmnt + \vskip -\parskip % eat skip to first paragraph + \nobreak\noindent} + +\def\@aftersect{} + +% TeXsperts note: the \@Mark \@noMark construction above is required because +% we are using a \mark which contains an \else, and the marking operation +% appears in conditional text (the \ifnum\chapternum ... \fi). -EAM + +\def\@Mark#1{% put a \mark with conditional text on the page + \begingroup + \def\label##1{}% % disable \label + \def\goodbreak{}% % disable \goodbreak + \def\mib{}\def\n{}% % disable \mib and \n + \mark{#1\NX\else\lab@l}% % put mark on page + \endgroup}% + +\def\@noMark#1{\relax}% % do nothing + +%-------------------------* +% \setHeadline{text} sets the running headline to the text, but +% if the text is so long that the user breaks it with \n then +% only the first part up to the \n is used, followed by ... +% (Move this to TXShead.tex at some point...) + +\def\setHeadline#1{\@setHeadline#1\n\endlist} % set the \HeadText + +\def\@setHeadline#1\n#2\endlist{% #1 is everything up to first \n + \def\@arg{#2}\ifx\@arg\empty % Is there \n in text? + \global\edef\HeadText{#1}% % No: just use #1 + \else % there was, so... + \global\edef\HeadText{#1\dots}% % use first part up to \n + \fi +} + +%--------------------------------------------------* +% SECTION LEVELS: \section{<title>} makes a section level break in +% text. It does *not* skip to a new page, but it will reset everything +% and display the title in the \tbf typestyle (which defaults to \bf if +% undefined). #2 is lookahead for a \par (blank line), which is +% discarded, so that there is no indentation at the begining of a \section. + +\long\def\section#1#2 {% create a new section of a document + \def\@aftersect{#2}% + \ifx\@aftersect\empty\let\@aftersect=\@eatpar + \else\def\@aftersect{\@eatpar #2 }\fi + \vskip\parskip\vskip\sectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \global\advance\sectionnum by \@ne % increment section counter +% +% Section ID: +% + \edef\lab@l{\@chaptID\SectionStyle{\the\sectionnum}}% For \label + \ifshowsectID % show section number? + \global\edef\@sectID{\SectionStyle{\the\sectionnum}.}% save for later + \global\edef\@fullID{\lab@l.\space\space}% % what we will use here + \r@set % and reset counters + \else\gdef\@fullID{}\def\@sectID{}\fi % otherwise section ID is empty + \everysection % user customization here +% +% Print the Section title: +% + \ifx\tbf\undefined\def\tbf{\bf}\fi % default \tbf is \bf + \vbox{% % keep heading in \vbox + \raggedright\pretolerance=2000\hyphenpenalty=2000 % no hyphenation + \setbox0=\hbox{\noindent\tbf\@fullID}% % find width of ID + \hangindent=\wd0 \hangafter=1 % ... for hanging indent + \noindent\unhbox0{\tbf{#1}\medskip}}% % number and title + \nobreak % +% +% Table of Contents and Running Headlines: +% + \begingroup % group for \contents, etc. + \def\label##1{}% % disable \label + \global\edef\SectionTitle{#1}% % or nothing + \def\n{}\def\nl{}\def\mib{}% % turn off \n, etc + \ifnum\chapternum=0\setHeadline{#1}\fi % no chapt. number -> set headine + \emsg{\@fullID #1}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{1}{\TOCsID{\lab@l.}#1}{\folio}% % Table of Contents entry + \endgroup % end group + \s@ction % checkenv, etc.. + \aftersection\@aftersect} % user can customize (\@aftersect is lookahead) + +\def\everysection{\relax}% user ``hook'' performed before every \section +\def\aftersection{\relax}% user ``hook'' performed after every \section + +\def\setSectionID#1{\edef\@sectID{#1.}} % so you can set it + +% \SectionStyle is style to display section number + +\def\SectionStyle#1{#1} % default is nothing + +%--------------------------------------------------* +% \subsection makes a subsection. #2 is lookahead for a \par (blank +% line), which is discarded, so that there is no indentation at the +% begining of a \subsection. + +\long\def\subsection#1#2 {% create a subsection of a document + \def\@aftersect{#2}% + \ifx\@aftersect\empty\let\@aftersect=\@eatpar + \else\def\@aftersect{\@eatpar #2 }\relax\fi + \vskip\parskip\vskip\subsectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \global\advance\subsectionnum by \@ne % increment subsection counter + \subsubsectionnum=\z@ % reset subsubsection number +% +% Subsection ID: +% + \edef\lab@l{\@chaptID\@sectID\SubsectionStyle{\the\subsectionnum}}% + \ifshowsectID % show section number? + \global\edef\@fullID{\lab@l.\space}% yes: define it + \else\gdef\@fullID{}\fi % otherwise it's empty + \everysubsection % user can customize +% +% Print the subsection title +% + \vbox{% % heading in \vbox + {\raggedright\pretolerance=2000\hyphenpenalty=2000 % no hyphenation + \setbox0=\hbox{\noindent\bf\@fullID}% find width... + \hangindent=\wd0 \hangafter=1 % ... for hanging indent + \noindent\unhbox0{\bf{#1}\nobreak\medskip}}}% number, title, and space +% + \begingroup % group for \contents, etc. + \def\label##1{}% % disable \label + \global\edef\SubsectionTitle{#1}% % or nothing + \def\n{}\def\nl{}\def\mib{}% % disable \n, etc + \emsg{\@fullID #1}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{2}{\TOCsID{\lab@l.}#1}{\folio}% Table of Contents entry + \endgroup % end \contents group + \s@ction % end of section + \aftersubsection\@aftersect}% room to customize (\@aftersect was lookahead) + +\def\everysubsection{\relax}% user ``hook'' performed before every \subsection +\def\aftersubsection{\relax}% user ``hook'' performed after every \subsection +\def\SubsectionStyle#1{#1} % how to display number + + +%--------------------------------------------------* +% \subsubsection makes a subsubsection, mainly for use if there +% are no chapters in the document. + +\long\def\subsubsection#1#2 {% create a sub-subsection of a document + \def\@aftersect{#2}% + \ifx\@aftersect\empty\let\@aftersect=\@eatpar + \else\def\@aftersect{\@eatpar #2 }\fi + \vskip\parskip\vskip\subsectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \global\advance\subsubsectionnum by \@ne % increment counter +% +% Sub-subsection ID: +% + \edef\lab@l{\@chaptID\@sectID\SubsectionStyle{\the\subsectionnum}.%% + \SubsubsectionStyle{\the\subsubsectionnum}}% for \label + \ifshowsectID % show section number? + \global\edef\@fullID{\lab@l.\space\space}% % yes: define it + \else\gdef\@fullID{}\fi % else it's empty + \everysubsubsection % user can customize here +% +% Print the sub-subsection title +% + \vbox{% % heading in \vbox + {\raggedright\bf % Ragged \bf title + \setbox0=\hbox{\noindent\@fullID}% % find width + \hangindent=\wd0 \hangafter=1 % hanging indent after 1st line + \noindent\@fullID\relax % show subsection number + #1\nobreak\medskip}}% % print the title +% + \begingroup % group for \contents, etc. + \def\label##1{}% % disable \label + \global\edef\SubsectionTitle{#1}% % or nothing + \def\n{}\def\nl{}\def\mib{}% % turn off \n, etc + \emsg{\@fullID #1}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{3}{\TOCsID{\lab@l.}#1}{\folio}% % Table of Contents entry + \endgroup % end group + \s@ction % end of section + \aftersubsubsection\@aftersect} % room to customize + + +\def\everysubsubsection{\relax}% % user hook before every \subsubsection +\def\aftersubsubsection{\relax}% % user hook after every \subsubsection +\def\SubsubsectionStyle#1{#1} % how to display subsubsection number + +%--------------------------------------------------* +% Appendecies: +% \Appendix{<ID>}{<title>} creates an Appendix. The <ID> +% plays the role of the chapter number in equation numbers and the table +% of contents. Example: \Appendix{A}{How to create an Appendix} +% #3 is lookahead for a \par (blank line), which is discarded, so that +% there is no indentation at the begining of a chapter appendix. + +\long\def\Appendix#1#2#3 {% begin a chapter level appendix + \def\@aftersect{#3}% + \ifx\@aftersect\empty\let\@aftersect=\@eatpar + \else\def\@aftersect{\@eatpar #3 }\fi + \def\@arg{#1}% % get the ID argument #1 + \vfill\supereject % begin on a new page + \global\sectionnum=\z@ % reset section # to zero +% +% Chapter-like ID: +% + \edef\lab@l{#1}% % chapter ID for \label + \gdef\@sectID{}% % clear section ID + \ifshowchaptID % want to show chapter number? + \ifx\@arg\empty\else % if argument #1 not null + \global\edef\@chaptID{\lab@l.}\fi % set chapter ID to it + \r@set % reset counters to zero + \else\def\@chaptID{}\fi % else, no chapter ID + \everychapter % user customization +% +% Print Appendix Title: +% + \ifx\Tbf\undefined\def\Tbf{\bf}\fi % If \Tbf undefined make it \bf + \leftline{\Tbf{Appendix\ \@chaptID}}% % APPENDIX ##. + \begingroup % + \nobreak\smallskip % print title of chapter + \parindent=\z@\raggedright % with a ragged + {\Tbf{#2}\bigskip}% % in \Tbf + \endgroup % + \nobreak\bigskip % skip down some more +% +% Table of Contents/ Headlines: +% + \begingroup % add to Table of Contents + \def\label##1{}% % disable \label + \global\edef\ChapterTitle{#2}% % save title for user + \def\n{}\def\nl{}\def\mib{}% % now turn off \n, etc + \setHeadline{#2}% % make title the running head + \emsg{Appendix \@chaptID\space #2}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{0}{\TOCcID{\lab@l.}#2}{\folio}% % Table of Contents entry + \endgroup % +% + \@Mark{#2}% % mark chapter heading + \s@ction % end of section + \afterchapter\@aftersect}% more user customization + + +%--------------------------------------------------* +% \appendix makes a section-type appendix. #3 is lookahead for a \par +% (blank line), which is discarded, so that there is no indentation at +% the begining of an \appendix. + +\long\def\appendix#1#2#3 {% begin a section level appendix + \def\@aftersect{#3}% + \ifx\@aftersect\empty\let\@aftersect=\@eatpar + \else\def\@aftersect{\@eatpar #3 }\fi + + \vskip\parskip\vskip\sectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \global\advance\sectionnum by \@ne % increment section counter + \def\@arg{#1}% % save ID argument #1 +% +% Section-like ID: +% + \gdef\@sectID{}\gdef\@fullID{}% % assume null section ID + \edef\lab@l{#1}% % For use by \label + \ifshowsectID % want to show section number? + \r@set % yes: reset counters + \ifx\@arg\empty\else % was section ID given? + \global\edef\@sectID{\lab@l.}% % save it for later + \global\edef\@fullID{\lab@l.\space\space}\fi% this is what to show + \fi % else no section ID + \everysection % user customization +% +% Print appendix title: +% + \ifx\tbf\undefined\def\tbf{\bf}\fi % default \tbf is \bf + \vbox{% % keep heading in \vbox + {\raggedright\tbf % ragged \tbf title + \setbox0=\hbox{\tbf\@fullID}% % find width for indent + \hangindent=\wd0 \hangafter=1 % hanging indent after 1st line + \noindent\@fullID % which has section ID + {#2}\nobreak\medskip}}% % Print title +% +% Running Headlines, Table of Contents +% + \begingroup % group for \contents, etc. + \def\label##1{}% % disable \label + \global\edef\SectionTitle{#2}% % or nothing + \def\n{}\def\nl{}\def\mib{}% % turn off \n, etc + \ifnum\chapternum=0\setHeadline{#2}\fi % no chapter number -> headline + \emsg{appendix \@fullID #2}% % announce in log file + \def\@quote{\string\@quote\relax}% % in case of \quoteon + \addTOC{1}{\TOCsID{\lab@l.}#2}{\folio}% % Table of Contents entry + \endgroup % end \contents group + \s@ction % end of section + \aftersection\@aftersect}% user can customize + + +%--------------------------------------------------* +% \pagecheck<dimen> will skip to a new page if there is less than +% the <dimen> of space on the remainder of the page. For example, +% \pagecheck{0.333333\vsize} skips to a new page if there is less than +% 1/3 of the page left + +\def\pagecheck#1{% skip to new page if less than #1 left on this one + \dimen@=\pagegoal % get total page size + \advance\dimen@ by -\pagetotal % get page space remaining + \ifdim\dimen@>0pt % is there some left, but + \ifdim\dimen@< #1\relax % not enough to look good? + \vfil\break \fi\fi % then skip to new page + } + +%--------------------------------------------------* +% \nosechead produces a heading without a number, and without adding +% to the table of contents. Suitable for Acknowledgements, Remarks, etc... +% Use: \nosechead{heading text} See also \beginsection in The TeXbook + +\def\nosechead#1{% section-like heading without a number + \vskip\subsectionskip % make some space + \goodbreak\pagecheck\sectionminspace % new page if needed + \checkquote\checkenv % check open quotes + \dosupereject % floating figures need to get out +% +% Print title: +% + \vbox{% % keep heading in \vbox + {\raggedright\bf\noindent % Ragged \bf title + {#1}% + \nobreak\medskip}}% % skip down some below title + } + +%--------------------------------------------------* +% \checkenv checks for any unclosed environments (the kind defined +% in TXSenvmt.tex) and prints a warning message. + +\def\checkenv{% check for balanced environments + \ifx\@envdepth\undefined\relax % is TXSenvmt.tex loaded? + \else\ifnum\@envdepth=\z@\relax % YES: check environment + \else\emsg{> Unclosed environment \@envname in the last section!}\fi + \fi} % + +%>>> EOF TXSsects.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXSsite.tex b/Master/texmf-dist/tex/texsis/base/TXSsite.tex new file mode 100644 index 00000000000..a9825ef9621 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSsite.tex @@ -0,0 +1,164 @@ +%% file: TXSsite.tex (TeXsis version 2.17) +% $Revision: 18.0 $ : $Date: 2000/05/17 00:45:04 $ : $Author: myers $ +%======================================================================* +% This is the site dependent info file for TeXsis. Edit the things +% below to match your installation. Take out what you don't need or +% want and add any local macros or other stuff you want. Anything +% between \Ignore and \endIgnore is ignored, but will become active if +% you remove the \Ignore. Remember, this file is only read in once when +% texsis.fmt is made! + +% Change name to your own institution or site here: + +\message{Site dependent info.... Generic version.} + +\ATunlock % make @ a letter + +%===================================* +% \ORGANIZATION is the name of the issuing organization, which +% appears at the top of the title page, or on a \Memo. +% You can also change it before you call \titlepage. + +\Ignore % an example using mixed caps + \def\ORGANIZATION{{\eightrm {\tenrm B}ANSAI {\tenrm I}NSTITUTE}} +\endIgnore + +\def\ORGANIZATION{} + +%===================================* +% \LandscapeSpecial turns on landscape mode on the laser printer. +% How this is done is very site dependent. Uncomment the version +% that works for you, or insert your own if these don't work. + +% 1) This is how dv2ips does it, and you need to have landscape.ps +% accesable to the filter program + +\Ignore + \def\LandscapeSpecial{\special{psfile=landscape.ps}} +\endIgnore + +% 2) This is how dvips (Rokicki's version 5.484 and later) does it: + +\def\LandscapeSpecial{\special{papersize=11in,8.5in}} + + +%===================================* +% \manualfeed tries to put the printer in Manual Feed mode, for +% printing on letterhead stationary or envelopes. +% How you do this is really installation specific. + +% If you use 'dvi2ps' then use \special to read the file manfeed.ps. +% You can get it from ftp://feynman.physics.lsa.umich.edu/texsis/etc/manfeed.ps + +\Ignore + \def\manualfeed{\emsg{\@comment MANUAL FEED MODE SELECTED!}% + \special{psfile=manfeed.ps}} +\endIgnore + +% Rokicki's dvips will do manual feed if you use 'dvips -m' +% but this tries to do the same thing (and doesn't work! -EAM 98/03/06) + +\Ignore + \def\manualfeed{\emsg{\@comment MANUAL FEED MODE SELECTED!}% + \special{! @manualfeed}} +\endIgnore + + +%===================================* +% \@DOCcode is the document code that appears in the upper right +% part of the title page of a \preprint. It starts out at its default +% value, and is changed by calling \pubcode{<code>} before you call +% \titlepage. If you don't use anything you'll get \TeXsis. + +\Ignore + \def\@DOCcode{UTREL\hbox to 1.5cm{\hss}} +\endIgnore + +%===================================* +% \banner produces a banner across the top of the title page for +% a \preprint. Customize this however you like. + +\def\banner{\vskip 0pt + \line{{\ninepoint\@PUBdate \hfil + \hbox{\vbox{\hrule\vskip 4pt \hbox{\ORGANIZATION}\vskip 4pt\hrule}}% % + \hfil \@DOCcode}}% + \vskip 1.0cm +} + +\def\@PUBdate{\uppercase{\today}} % default is today + + +%===================================* +% \letterhead{phone} is for copying onto letterhead stationary. +% It just puts on the date and a phone number (if given). + +% THIS IS JUST AN EXAMPLE - MODIFY FOR YOUR OWN INSTITUTION. + +\Ignore +\def\letterhead#1{% letterhead for copying onto Univ. Michigan stationary + \def\PhoneNumber{#1}% + \emsg{Positioning date/phone for University of Michigan letterhead.}% + \begingroup % this header stuff is local + \parskip=0pt \parindent=0pt % + \null\vskip 0.6in % skip down to date line + \line{\hfill \hbox to 5in{\tensl \today\hfill}}% Today's Date + \line{\tenss \hfill (734) + \ifx\PhoneNumber\empty 764-4437\else \PhoneNumber\fi}% + \ifx\Email\undefined\else\line{\hfill \tt \Email}\fi + \vskip 10pt plus 1fil + \endgroup} +\endIgnore + +%===================================* +% \UMletterhead{phone} is a facsimile of the University of Michigan +% stationary. If \Email is defined it is included under the phone number. + +% THIS IS JUST AN EXAMPLE - MODIFY FOR YOUR OWN INSTITUTION. +% It uses a PostScript image of the Univ. Michigan seal, umseal.ps + +\Ignore +\def\UMletterhead#1{% Facsimile of UM letterhead + \def\PhoneNumber{#1}% + \begingroup % make these these things local + \null\vskip -27pt % masthead up a bit to match real thing + \UMmasthead % UM seal and name + \line{\hfill \hbox to 5in{\tensl \today\hfill}}% Today's Date + \line{\tenss \hfill (734) + \ifx\PhoneNumber\empty 764-4437\else \PhoneNumber\fi}% + \ifx\Email\undefined\else\line{\hfill \tt \Email}\fi + \vskip 10pt plus 1fil + \endgroup} + +\def\UMseal{{\hbox{\epsfbox{umseal.eps}}}}% + +\def\UMmasthead{\line{\llap{\UMseal\hskip -35pt}\hfill + \hbox{\vbox{\hsize=13.99cm \def\LC##1{{\twentyfourpoint\bf ##1}}% + \line{\hfill \twentypoint\bf \LC{T}HE \LC{U}NIVERSITY OF \LC{M}ICHIGAN}% + \vskip 0.85cm + \line{\tenss DEPARTMENT OF PHYSICS \hfill 2071 Randall Laboratory}% + \line{\tenss \hfill Ann Arbor, MI 48109-1120}% + }}}}% +\endIgnore + +%===================================* +% Mailing Labels: you may have to change these depending on your +% printer and the kind of labels you use. + +\Ignore + +% This is for the "standard" inch high, 3 across the page labels + +\lblHsize=7.32cm % width of standard label +\lblVsize=2.54cm % height of standard label +\fullHsize=8.5in % hsize for page +\fullVsize=11.0in % vsize for page + +\lblVoffset=0pt % shift down this much +\lblHoffset=-1.8cm % shift over this much + +\endIgnore + +%>>> EOF TXSsite.tex <<< + + + diff --git a/Master/texmf-dist/tex/texsis/base/TXSsymb.tex b/Master/texmf-dist/tex/texsis/base/TXSsymb.tex new file mode 100644 index 00000000000..5eca6ed2e02 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXSsymb.tex @@ -0,0 +1,194 @@ +%% file: TXSsymb.tex - Special Symbols - TeXsis version 2.18 +%% @(#) $Id: TXSsymb.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% EXTENDED MATH SYMBOLS FOR PHYSICS +% +% This file defines extensions to the symbols in Plain TeX which +% are generally useful for physics papers, especially (but not only) for +% high energy physics. See the comments for each definition. +%-----------------------------------------------------------------------* +\message{Extended math/physics symbols,} + +% Assorted special symbols: + +% Use \E{exponent} for scientific notation, in text or math mode + +\def\E#1{\hbox{$\times 10^{#1}$}} + +% ---------- Gradient, partial, laplacian, etc... + +\def\square{\hbox{{$\sqcup$}\llap{$\sqcap$}}} % box laplacian +\def\grad{\nabla} % synonym for the gradient +\def\del{\partial} % synonym for \partial + +% ---------- Fractions. + +\def\frac#1#2{{#1\over#2}} +\def\smallfrac#1#2{{\scriptstyle {#1 \over #2}}} +\def\half{\ifinner {\scriptstyle {1 \over 2}}% + \else {\textstyle {1 \over 2}}\fi} + +% ---------- Bras, kets and vev's + +\def\bra#1{\langle#1\vert} % \bra{stuff} gives <stuff| +\def\ket#1{\vert#1\/\rangle} % \ket{stuff} gives |stuff> +\def\vev#1{\langle{#1}\rangle} % \vev{stuff} gives <stuff> + + +% \simge and \simle make the "greater than about" and the "less +% than about" symbols with spacing as relations. \therefore is the +% three-dots-in-a-triangle symble for ``therefore'' + +\def\simge{% ``greater than about'' symbol + \mathrel{\rlap{\raise 0.511ex + \hbox{$>$}}{\lower 0.511ex \hbox{$\sim$}}}} + +\def\simle{% ``less than about'' symbol + \mathrel{\rlap{\raise 0.511ex + \hbox{$<$}}{\lower 0.511ex \hbox{$\sim$}}}} + +\def\gtsim{\simge} % synonym for \simge +\def\ltsim{\simle} % synonym for \simle + + +\def\therefore{% three-dot symbol for ``therefore'' + \setbox0=\hbox{$.\kern.2em.$}\dimen0=\wd0 % + \mathrel{\rlap{\raise.25ex\hbox to\dimen0{\hfil$\cdotp$\hfil}}% + \copy0}} + + +% \| gives a vertical bar appropriate to the context + +\def\|{\ifmmode\Vert\else \char`\|\fi} + +% the pound Sterling symbol, from the \it italic font + +\def\sterling{{\hbox{\it\char'44}}} + +% \degrees works in math or text mode. Eg. 90\degrees or 45\degree + +\def\degrees{\hbox{$^\circ$}} % the degrees symbol, $^\circ$ +\def\degree{\degrees} % synonym + +% ---------- Functions -- all defined like \sin, etc. in Plain TeX: + +\def\real{\mathop{\rm Re}\nolimits} % Re for real part +\def\imag{\mathop{\rm Im}\nolimits} % Im for imaginary part + +\def\tr{\mathop{\rm tr}\nolimits} % tr for trace +\def\Tr{\mathop{\rm Tr}\nolimits} % Tr for functional trace +\def\Det{\mathop{\rm Det}\nolimits} % Det for functional determinant + +\def\mod{\mathop{\rm mod}\nolimits} % mod for modulo +\def\wrt{\mathop{\rm wrt}\nolimits} % wrt for with respect to +\def\diag{\mathop{\rm diag}\nolimits} % diag for diagonal matrix + +% ---------- Abbreviations for units + +\def\TeV{{\rm TeV}} % 10^12 electron volts +\def\GeV{{\rm GeV}} % 10^9 electron volts +\def\MeV{{\rm MeV}} % 10^6 electron volts +\def\keV{{\rm keV}} % 10^3 electron volts +\def\eV{{\rm eV}} % 1 electron volt + +\def\Ry{{\rm Ry}} % Rydbergs + +\def\mb{{\rm mb}} % 10^-27 cm^2 +\def\mub{\hbox{\rm $\mu$b}} % 10^-30 cm^2 +\def\nb{{\rm nb}} % 10^-33 cm^2 +\def\pb{{\rm pb}} % 10^-36 cm^2 +\def\fb{{\rm fb}} % 10^-39 cm^2 + +\def\cmsec{{\rm cm^{-2}s^{-1}}} % cm^-2s^-1 for luminosity + +% Build your own unit with \units. Eg. \units{klik} + +\def\units#1{\hbox{\rm #1}} +\let\unit=\units % synonym + +% Use \dimensions{what}{power} to create the square bracket/power +% notation for dimensional analysis. Eg. \dimensions{mass}{2} + +\def\dimensions#1#2{\hbox{$[\hbox{\rm #1}]^{#2}$}} + +%========================================* +% \parenbar puts a bar in small parentheses over a character to +% indicate an optional antiparticle. \nunubar and \ppbar are special +% cases. + +\def\parenbar#1{{\null\! % left-hand spacing + \mathop{\smash#1}\limits% % superscript above + ^{\hbox{\fiverm(--)}}% % 5pt type + \!\null}} % right-hand spacing + +\def\nunubar{\parenbar{\nu}} +\def\ppbar{\parenbar{p}} + +%========================================* +% \buildchar makes a compound symbol, placing #2 above #1 and #3 +% below it with \limits. \overcirc is a special case. + +\def\buildchar#1#2#3{{\null\! % \null, cancel space + \mathop{\vphantom{#1}\smash#1}\limits% % #1 with spacing and + ^{#2}_{#3}% % #2 above, #3 below + \!\null}} % cancel space, \null + +\def\overcirc#1{\buildchar{#1}{\circ}{}} + +% Sun and earth symbols + +\def\sun{{\hbox{$\odot$}}}\def\earth{{\hbox{$\oplus$}}} + +%========================================* +% \slashchar puts a slash through a character to represent contraction +% with Dirac matrices. + +\def\slashchar#1{\setbox0=\hbox{$#1$} % set a box for #1 + \dimen0=\wd0 % and get its size + \setbox1=\hbox{/} \dimen1=\wd1 % get size of / + \ifdim\dimen0>\dimen1 % #1 is bigger + \rlap{\hbox to \dimen0{\hfil/\hfil}} % so center / in box + #1 % and print #1 + \else % / is bigger + \rlap{\hbox to \dimen1{\hfil$#1$\hfil}} % so center #1 + / % and print / + \fi} % + +%========================================* +% \subrightarrow#1 puts the text #1 under an arrow of the +% appropriate length. + +\def\subrightarrow#1{% % #1 under arrow + \setbox0=\hbox{% % set a box + $\displaystyle\mathop{}% % no mathop + \limits_{#1}$}% % just limits + \dimen0=\wd0% % get width + \advance \dimen0 by .5em% % add a bit + \mathrel{% % space like = + \mathop{\hbox to \dimen0{\rightarrowfill}}% % arrow to width + \limits_{#1}}} % text below + +%========================================* +% \vbig produces very (or variably) big delimiters. The syntax is +% \vbigl<delim><size> or \vbigr<delim><size>, where <delim> is any +% delimiter and <size> is any valid dimension in pt, cm, in,.... +% There is also a \vbigm for (middle) relations. + +\newdimen\vbigd@men % for \vbig + +\def\vbigl{\mathopen\vbig} +\def\vbigm{\mathrel\vbig} +\def\vbigr{\mathclose\vbig} + +\def\vbig#1#2{{\vbigd@men=#2\divide\vbigd@men by 2% + \hbox{$\left#1\vbox to \vbigd@men{}\right.\n@space$}}} + +% \Leftcases and \Rightcases are just \vbig \{ or \} with \smash. These +% can be used to make constructions like \cases with a number on each +% line, but the spacing is NOT automatic. + +\def\Leftcases#1{\smash{\vbigl\{{#1}}} +\def\Rightcases#1{\smash{\vbigr\}{#1}}} + +% >>> EOF TXSsymb.tex <<< + diff --git a/Master/texmf-dist/tex/texsis/base/TXStags.tex b/Master/texmf-dist/tex/texsis/base/TXStags.tex new file mode 100644 index 00000000000..2ad3e8ce6b2 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXStags.tex @@ -0,0 +1,288 @@ +%% file: TXStags.tex - Labels and Tags - TeXsis version 2.18 +%% @(#) $Id: TXStags.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% TAGS - create lables and links for things +% +% +% This file is a part of TeXsis. +% (C) copyright 1991, 1997 by Eric Myers and Frank Paige. +%======================================================================* +\message{Labels and tags.} + +% I/O and switches: + +\newread\auxfilein % input for jobname.aux file +\newwrite\auxfileout % output for jobname.aux file +\newif\ifauxswitch \auxswitchtrue % enable writing to .aux file? + +\let\XA=\expandafter \let\NX=\noexpand % shorthand +\catcode`"=12 % make sure " is not active +\catcode`@=11 % @ is a letter here + +\newcount\@BadTags \@BadTags= 0 % count undefined tags + +%==================================================* +% INITIALIZATION. \auxinit is used to open jobname.aux for output to +% save these definitions for the next run. It opens the file and then +% disables itself so it doesn't try to open the file again. + +\def\auxinit{% once only initialization of auxilliary file + \ifauxswitch % + \@FileInit\auxfileout=\jobname.aux[Auxiliary File]%% + \else \gdef\auxwritenow##1{}\gdef\auxwrite##1{} \fi % turn off .aux output + \gdef\auxinit{\relax}} % only do \auxinit once! + +% How to write to the .aux file in general + +\def\auxwritenow#1{\auxinit % write immediately to .aux file + \immediate\write\auxfileout{#1}} + +\def\auxwrite#1{\auxinit\write\auxfileout{#1}} % write (delayed) to .aux file + + +% \auxoutnow{csname}{value} writes the definition to the \jobname.aux +% file immediately. \auxout writes when the page is output + +\def\auxoutnow#1#2{\auxwritenow{\string\newlabel{#1}{{#2}{\folio}}}} +\def\auxout#1#2{\auxwrite{\string\newlabel{#1}{{#2}{\folio}}}} + +%- \ReadAUX looks for a file called jobname.aux and if it exists reads +% it in. This file should have tag and label definitions from a +% previous run (and now containing \newlabel's and such) + +\def\ReadAUX{% reads in the auxilliary file from a previous run + \openin\auxfilein=\jobname.aux % open old .aux file for input + \ifeof\auxfilein\closein\auxfilein % if EOF it's empty. + \else\closein\auxfilein % else close it and... + \begingroup % fix up special characters... + \def\@tag##1##2{\endgroup % simpler way to \tag here + \edef\@@temp{##2}% % put ``value'' in \@@temp + \testtag{##1}\XA\xdef\csname\tok\endcsname{\@@temp}}% + \unSpecial\ATunlock % special characters not so special + \input\jobname.aux \relax % ...and read in the file + \endgroup % back to special characters + \fi} % else ignore it + +%==================================================* +% TAGGING. Save information by labeling it. +% +% \tag{name}{<value>} defines the control sequence \@name@ to be +% <value>, and writes the definition to the file jobname.aux so +% jobs that follow can resolve forward references. (The @'s +% in \@name@ are a part of the name, and are included so that +% the user does not define a tag with the same name as a control +% sequence. The backslash is actually not a part of the name.) +% We use \csname ... \endcsname so that label names can include +% digits, numbers and other characters. It is not a good idea to +% use &,~,\,| or other special characters. Spaces may be included +% in a name, but they are ignored. + +\def\tag{% \tag{name}{value} defines \@name@ to be "value" + \begingroup\unSpecial % to turn off special chars + \@tag} % do the tagging + +\def\@tag#1#2{% does the work for \tag + \endgroup % end group from \tag + \ifx\folio#2 % is the value a \folio + \auxout{#1}{#2}% % write to .aux when page is printed + \else % else define and write it now + \edef\@@temp{#2}% % put ``value'' in \@@temp + \stripblanks @#1@\endlist % \testtag{#1} --> \tok + \XA\xdef\csname\tok\endcsname{\@@temp}% define \@name@ as ``value'' + \auxoutnow{#1}{\@@temp}% % write def to .aux file + \fi} + +%-------------------------* +% \label{name} tags \@name@ with the current value of \lab@l, +% which is set to the proper value by various macros, such as +% \chapter, \section, etc... + +\def\label{\begingroup\unSpecial\@label} +\def\@label#1{\endgroup\tag{#1}{\lab@l}} + +\def\lab@l{\relax} % start with empty label + +% \newlabel{name}{{<value>}{page}} does about the same thing, but +% can be written to the .aux file (and has the same syntax as in LaTeX) + +\def\newlabel{\begingroup\unSpecial\@newlabel} +\def\@newlabel#1#2{\endgroup\do@label#2\label{#1}} +\def\do@label#1#2{\def\lab@l{#1}\def\lab@lpage{#2}} + +%-------------------------* +% \use{name} uses the value of \@name@ if it is defined; otherwise it +% puts {\bf "name"} into the text and writes an error message to the +% log file + +\def\use{% \use{name} evaluates to \@name@, which is set by \tag + \begingroup\unSpecial\@use} + +\def\@use#1{\endgroup % end unspecial characters + \stripblanks @#1@\endlist % @name@ -> \tok w/o blanks + \XA\ifx\csname\tok\endcsname\relax\relax % is \@name@ undefined? + \emsg{> UNDEFINED TAG #1 ON PAGE \folio.}% % yes: error message + \global\advance\@BadTags by 1 % count how many + \@errmark{UNDEF}% % and mark in output + \edef\tok{{\bf\tok}}% % and return \bf ``name'' + \else % else: + \edef\tok{\csname\tok\endcsname}% % get the definition + \fi % + \tok} % evaluate it + + +% -- \unSpecial makes certain special characters have ``normal'' +% catcodes so they can be used in tag labels. + +\def\unSpecial{% gives special characters ``normal'' catcodes + \catcode`@=12 \catcode`"=12 \catcode``=12 \catcode`'=12 + \catcode`[=12 \catcode`]=12 \catcode`(=12 \catcode`)=12 + \catcode`<=12 \catcode`>=12 \catcode`\&=12 \catcode`\#=12 + \catcode`/=12} + + +% \stripblanks <text> \endlist removes extraneous blanks from +% the token list in <text> and puts the result in \tok. +% \tok is \empty if text is ALL blank. + +\def\stripblanks{% everything up to \endlist --> \tok, with blanks removed + \let\tok=\empty\@stripblanks} + +\def\@stripblanks#1{\def\next{#1}\@striplist} + +\def\@striplist{% + \ifx\next\stripblanks\message{>\NX\@striplist: Oops!}\next=\endlist\fi % + \ifx\next\endlist\let\next=\relax % + \else\@stripspace\let\next=\@stripblanks\fi % + \next} + +\def\@stripspace{\XA\if\space\next\else\edef\tok{\tok\next}\fi} + +\def\endlist{\endlist} % \endlist is undefined on purpose + + +% \testtag{name} determines whether the label given by "name" +% is undefined (using the fact that \csname makes a default assignment +% of undefined control sequences to \relax) and sets \undefinedtrue +% or \undefinedfalse as appropriate. The full name is in \tok (with +% blanks removed) so you can use it with \csname\tok\endcsname. +% Use: \testtag{foo}\ifundefined <stuff> \else <other stuff> \fi + +\newif\ifundefined \undefinedfalse + +\def\testtag#1{\stripblanks @#1@\endlist + \XA\ifx\csname\tok\endcsname\relax\undefinedtrue + \else\undefinedfalse\fi} + + +% \checktags tells you if there were any undefined tags or references... +% Use this at the end of a run to warn about possible errors. + +\def\checktags{% check for any undefined tags + \ifnum\@BadTags>\z@ % any undefine tags? + \emsg{>}\emsg{> There were \the\@BadTags\ references to undefined tags.}% + \emsg{> See the file \jobname.log for the citations, or try running}% + \emsg{> TeXsis again to resolve forward references.}\emsg{>}% + \fi} + +%==================================================* +% PARSE LABELS. +% +% \LabelParse <text>;;\endlist parses <text> as an equation, +% figure or table label. It separates out letters, if present (eg. +% label;a for Figure 2a, but the ";" does not appear in output.) +% It increments the counter \@count, if appropriate, and builds an ID in +% \@ID. It also \tag's the label with the value of the ID, +% preceeding the label with the prefix \@prefix to distinguish its type. + +\def\LabelParse#1;#2;#3\endlist{% + \def\@TagName{\@prefix#1}% % NAME= for html link target + \if ?#3?\relax % if #3 is null, no ";" present + \global\advance\@count by\@ne % so advance the count + \else % if ; , look for letter + \stripblanks #2\endlist % remove any blanks from letter + \edef\@arg{\tok}\if a\@arg\relax % if ";" present is it ";a"? + \global\advance\@count by\@ne\fi % yes: advance counter anyway + \xdef\@ID{\@chaptID\@sectID\the\@count\@arg}% construct label;part + \tag{\@prefix#1;\@arg}{\@ID}% % and tag it #nn;x + \fi % end \if ?#3? + \xdef\@ID{\@chaptID\@sectID\the\@count}% % construct value for label + \tag{\@prefix#1}{\@ID}% % tag #nn +} % end of \LabelParse + +\def\@ID{} % default \@ID is null + +%======================================================================* +% HyperTeXt support via \special HTML: +% +% \html{<stuff>} simply stuffs the ``stuff'' into an HTML \special +% \linkto{<NAME>}{<text>} makes a link to a target created with \linkname +% \linkname{<NAME>}{<text>} makes a NAME= target for the given text +% \href{URL}{text} links the given text to the URL (as per LANL example) +% \URL{URL} links to the given URL and puts it in the text + + +\newif\ifhtml \htmlfalse % default is HTML OFF! + +% These just turn off special characters that might be in link names +% or URL's, and then invoke @hidden macros to do the real work (below). + +\def\html{\begingroup\htmlChar\@html} + +\def\linkto{\begingroup\htmlChar\@linkto} +\def\linkname{\begingroup\htmlChar\@linkname} + +\def\href{\begingroup\htmlChar\@href} +\def\URL{\begingroup\htmlChar\@URL} +\def\xxxcite{\begingroup\htmlChar\@xxxcite} + +% Hyperlink NAMES or URL's may contain characters which are special to +% TeX, so \htmlChar turns off their special meaning while we read +% in the link or URL. Then we end the group so that special characters +% CAN be used in the text portion of the link. + +\def\notie{\def~{\Tilde}} +\def\urlChar{\def\/{\discretionary{}{/}{/}}\def\.{\discretionary{.}{}{.}}} +\def\@htmlChar{\def\/{/}} + + +\begingroup + \catcode`\~=12 \catcode`"=12 \catcode`\/=12 + \catcode`<=12 \catcode`>=12 + \begingroup + \catcode`\%=12 \catcode`\#=12 + \gdef\htmlChar{\notie + \catcode`@=12 \catcode`"=12 \catcode``=12 \catcode`'=12 + \catcode`[=12 \catcode`]=12 \catcode`(=12 \catcode`)=12 + \catcode`<=12 \catcode`>=12 \catcode`_=12 \catcode`^=12 + \catcode`$=12 \catcode`\&=12 \catcode`\#=12 \catcode`%=12 + \catcode`~=12 \catcode`/=12 \catcode`/=12 \@htmlChar} + \gdef\hash{#}\gdef\Tilde{~} + \endgroup + +% General HTML: + + \gdef\@html#1{\ifhtml\special{html:#1}\fi\endgroup}% + +% Local Links: + + \gdef\@linkto#1{\endgroup\@@linkto{#1}}% Arg #2 is whatever follows + \gdef\@@linkto#1#2{\html{<a href="\hash#1">}{#2}\html{</a>}} + \gdef\@linkname#1{\endgroup\@@linkname{#1}} + \gdef\@@linkname#1#2{\html{<a name="#1">}{#2}\html{</a>}} + +% General Links (any URL): + + \gdef\@href#1{\endgroup\@@href{#1}}% Arg #2 is whatever follows + \gdef\@@href#1#2{\html{<a href="#1">}\urlChar{#2}\html{</a>}}% + \gdef\@URL#1{\html{<a href="#1">}\urlChar{\tt #1}\html{</a>}\endgroup}% + + \gdef\@xxxcite#1{\href{http://xxx.lanl.gov/abs/#1}% + \urlChar{#1}\relax} + +\endgroup + +% synonyms for macros in hyperbasics.tex + +\let\hypertarget=\linkname \let\hname=\linkname + +%>>> EOF TXStags.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/TXStitle.tex b/Master/texmf-dist/tex/texsis/base/TXStitle.tex new file mode 100644 index 00000000000..ebfe0a7900a --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/TXStitle.tex @@ -0,0 +1,284 @@ +%% file: TXStitle.tex - Title Page Macros - TeXsis version 2.18 +%% @(#) $Id: TXStitle.tex,v 18.0 1999/07/09 17:24:29 myers Exp $ +%======================================================================* +% Title Page Macros: (C) copyright 1986 by Eric Myers. +% +% These macros are used for creating for a document a title page which +% includes a document code and date, title, name and address of author(s), +% abstract, and other information. An outline of how to make a typical +% title page is: +% +% \pubdate{May, 1986} +% \pubcode{11973} +% \titlepage +% \title +% TITLE OF PAPER, (which will be in \Tbf type) +% on several lines, if you want. +% \endtitle +% \author +% Name of Author +% Address of author +% on several lines, if you want. +% \endauthor +% \abstract +% text of abstract. +% \endabstract +% \endtitlepage +% +% For papers with many authors it is more appropriate to use +% +% \authors +% A.~Able,\note{a} B.~Baker,\note{b}, C.~Charlie,\note{a} +% ... +% \institution{a}{University A} +% \institution{b}{University B} +% ... +% \endauthors +% +% Special document layouts in TXSfmts.tex may change the behaviour +% of some of these control words, but the general idea should always +% be the same, so that you can change document layout with one command. +% +% \title, \author, \abstract, etc. automatically set up an \endmode +% command which when used by a following command closes the appropriate +% group. These definitions are kept local with \bgroup ... \egroup. +% +% Dependencies: TXSmacs.TeX and TXSenvmnt.TeX (for \center) +%======================================================================* +\message{Title Page macros.} +\catcode`@=11 % @ is a letter here + +% \pubdate and \pubcode provide information used by \banner when +% it creates the header for the title page + +\def\pubcode#1{\gdef\@DOCcode{#1}} +\def\PUBcode#1{\gdef\@DOCcode{#1}} % synonym +\def\DOCcode#1{\PUBcode{#1}} % synonym +\def\BNLcode#1{\PUBcode{#1}\banner} % backward compatibility + + +% \@DOCcode starts out at the default value, and is changed by \pubcode + +\def\@DOCcode{\TeXsis~\fmtversion} % default + +% macros to set these things + +\def\pubdate#1{\gdef\@PUBdate{#1}} +\def\PUBdate#1{\gdef\@PUBdate{#1}} %synonum + +\def\@PUBdate{\monthname{\month},~\number\year}% default is today + + +% \ORGANIZATION is the name of the issuing organization, and you +% can change it before you call \banner, or change the default in +% the site dependent info file TXSsite.TEX. + +\def\ORGANIZATION{} % default is nothing + + +% \banner prints a header using \ORGANIZATION, \pubdate, and \pubcode +% at the top of the document. Change this for your institution in +% the TXSsite file if you don't like this one. + +\def\banner{% + \line{\hfil % + \vbox to 0pt{\vss \hbox{\twelvess \ORGANIZATION}}% + \hfil}% % name of org, centered + \vskip 12pt % skip down to rule + \hrule height 0.6pt \vskip 1pt \hrule height 0.6pt % double rule + \vskip 4pt \relax % white space + \line{\twelvepoint\rm\@PUBdate \hfil \@DOCcode}% date and doc code + \vskip 3pt % white space + \hrule height 0.6pt \vskip 1pt \hrule height 0.6pt % double rule + \vskip 0pt plus 1fil % stretch below + \vskip 1.0cm minus 1.0cm % skip down a bit + \relax} + + +% Use \titlepage to begin the ``title'' material, which is the +% title, authors, abstract, etc.. This is a block of text which +% may appear on a separate page or may just appear at the top +% of the first page. End with \endtitlepage + +\def\titlepage{% begin title page material + \bgroup % open \titlepage group + \pageno=1 % force start at page 1. + \hbox{\space}% % anchor to the top of the page + \let\title=\Title % \title inside \titlepage + \let\endmode=\relax % \endmode will end a field + } + +\def\endtitlepage{% end the title page material + \endmode % end any open field + \vfil\eject % eject the page (default) + \egroup} % close \titlepage group + +%--------------------------------------------------* +% \title ... <text of title> ... \endtitle prints the title of the +% paper in 14pt bold, centered. Line endings are observed, and you +% should begin the title on the line after \title. + +\def\title{% begin the Title of a paper or book + \endmode % end any previous field + \vskip 0pt % vertial mode before \mark + \mark{Title Page\NX\else Title Page}%% mark page so no \HeadLine + \bgroup % open \title group + \let\endmode=\endTitle % will end \title + \center\Tbf} % centered, title boldface + +\let\Title=\title % in case this is forgotten! + +\def\endtitle{% end the Title for a paper or book + \endcenter % end centering + \bigskip % some space below + \gdef\title{% re-define \title for references use + \emsg{> Please use \NX\booktitle instead of \NX\title.}% + \@errmark{OLD!}% + \booktitle}% % make \title = \booktitle + \egroup}% % close \title group + +\def\endTitle{\endtitle} % synonym + +\def\Tbf{\sixteenpoint\bf} % default title typestyle + + +%----------------------------------------* +% \author gets the author's name and affiliation. The first line after +% \author is the name, and following lines up to \endauthor are the address. + +\def\author{% first line after as author's name, following lines are address + \endmode % end any previous mode + \bgroup % + \let\endmode=\endauthor % will end \author + \singlespaced\parskip=0pt % default single spaced + \obeylines\def\\{\par}% % break at line breaks, or at \\ + \@getauthor} % next line = author's name + +{\obeylines\gdef\@getauthor#1 + #2 + {#1\bigskip\def\n{\egroup\centerline\bgroup\bf}% % how to break names + \centerline{\bf #2}% % first line is author's name, + \medskip\center}% % next lines are affiliation/address +} + +\def\endauthor{\endcenter\egroup\bigskip} + +%-----------------------------------------* +% \authors ... \endauthors is for multi-author papers. The authors are +% listed in Roman type in \raggedcenter format with a \bigskip above and +% below. Footnotes to author names can be added with \note. + +\def\authors{% list of authors for multi-author papers. + \endmode % end any previous field + \bigskip % some space above + \bgroup % begin \authors group + \let\endmode=\endauthors % \endmode ends the field + \let\@uthorskip=\medskip % set up skip + \raggedcenter\singlespaced} % ragged centering + +\def\endauthors{% ends multi-author list + \endraggedcenter % end ragged centering + \egroup % end \authors group + \bigskip} % some space below + + +% \note#1#2 prints a superscript on an author name in \authors. +% (#2 is a lookahead, used with \space@head for spacing) + +\def\note#1#2{% prints superscript for author's name + ${}^{\hbox{#1}}\ $ % write superscript w/ space + \space@head#2 % insert possible more space + #2}% % put #2 back + + +% \institution prints the label #1 and the institution #2 centered on +% a line. + +\def\institution#1#2{% labels institution for multi-author list + \@uthorskip\let\@uthorskip=\relax % space and disable it + \raggedcenter % center + ${}^{\rm #1}$\space #2%% % the institution + \endraggedcenter % possibly >1 line + } + +\let\@uthorskip=\medskip % outside default + +%-----------------------------------* +% \titlenote#1#2 makes a footnote for \title or \author. #1 is the mark, +% and #2 is the text, just like \footnote. Use \note to print #1 in the title, +% and place \titlenote after \endtitle. + +\long\def\titlenote#1#2{% footnotes for \title and \author + \footnote{}{% % basically footnote + \llap{\hbox to \parindent{\hfil % lap label to left + ${}^{\rm #1}$\space}}#2}}% % print label and text. + +%----------------------------------- +% \and is "and" with a skip after. Use between authors or addresses. + +\def\and{\centerline{and}\medskip} + +%-----------------------------------* +% everyting between \abstract and \endabstract is indented, +% with "ABSTRACT" written above it. Different document layouts may +% change the definition of \abstract, but should follow the same basic +% structure. + +\def\AbstractName{ABSTRACT} % `name' of abstract + +\def\abstract{% begin abstract of a paper or treatise + \endmode % end any previous field + \bigskip\bigskip % some space above + \centerline{\AbstractName}% % ``ABSTRACT'' + \medskip % space below that + \bgroup % begin \abstract group + \let\endmode=\endabstract % \endmode ends \abstract + \narrower\narrower % bring in margins + \singlespaced % default single spaced + \everyabstract} % customizable + +\def\everyabstract{} % user or format can customize + +\def\endabstract{\smallskip\egroup} + + +% -- \pacs{codes} prints the PACS codes on the title page + +\def\pacs#1{\medskip\centerline{PACS numbers: #1}\smallskip} + + +% -- \submit{<journal name>} prints the message "Submitted to <journal name>" + +\def\submit#1{\bigskip\centerline{Submitted to {\sl #1}}} +\def\submitted#1{\submit{#1}} % synonym + + +% -- \toappear prints the message "To appear in \sl <journal name>" + +\def\toappear#1{\bigskip\raggedcenter + To appear in {\sl #1} + \endraggedcenter} + + +% -- \disclaimer{<contract number>} prints the usual DOE disclaimer +% as a footnote at the bottom of the page, using the given contract number. + +\def\disclaimer#1{\footnote{}\bgroup\tenrm\singlespaced + This manuscript has been authored under contract number #1 + \@disclaimer\par} + +% -- \disclaimers{<list of contract numbers>} is the same as \disclaimer, +% but for more than one contract number. + +\def\disclaimers#1{\footnote{}\bgroup\tenrm\singlespaced + This manuscript has been authored under contract numbers #1 + \@disclaimer\par} + +\def\@disclaimer{% % generic part of disclaimer +with the U.S. Department of Energy. Accordingly, the U.S. +Government retains a non-exclusive, royalty-free license to publish +or reproduce the published form of this contribution, +or allow others to do so, for U.S. Government purposes. +\egroup} + +%>>> EOF TXStitles.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/Tablebod.txs b/Master/texmf-dist/tex/texsis/base/Tablebod.txs new file mode 100644 index 00000000000..6bebf965cbf --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/Tablebod.txs @@ -0,0 +1,91 @@ +%% Tablebod.txs (TeXsis version 2.16) +% $Revision: 16.0 $ : $Date: 1994/11/11 19:37:06 $ : $Author: myers $ +%======================================================================* +% Old-style Figure macros - This file is a part of TeXsis +% (C) copyright 1991 by Eric Myers and Frank Paige. +% +% SIMPLE(R) RULED TABLES: \Tablebody +% +% The following macros make simple ruled tables with automatic spacing, +% i.e. no vertical struts are needed. Taken from TechRpt with modifications as +% in TeXsis 2.11. These are included for backward compatability +% and will eventually be phased out. + +% \Tablebody actually begins the table body, with the \halign template. +% #1 is number of columns. \Tableskipsize is set by \singlespaced, +% \doublespaced, etc. in TXSmacs. +%======================================================================* +\catcode`@=11 % make @ a letter for this file + +\def\Tablebody#1{% % #1 = no. columns + \hbox to \hsize\bgroup % start hbox for table + \hss $$ \vbox\bgroup % centered displaymath + \offinterlineskip % No interline glue + \def\tablerule{\noalign{\hrule}} % simple rule + \def\T@bleskip{\Tableskip{#1}{\Tableskipsize}} % nice skip + \def\T@blerule{\T@bleskip\tablerule\T@bleskip} % nice rule + \def\Cr{\cr\T@bleskip} % \cr and nice skip + \def\CR{\cr\T@blerule} % \cr and nice rule + \def\CRCR{\cr\T@bleskip\tablerule % \cr and nice double + \Tableskip{#1}{1pt}\tablerule\T@bleskip} % rule + \def~{\phantom{0}} % ~ is digit-width space + \halign\bgroup % start \halign + \vrule## % do leftmost vrule + &&\quad\hfil##\hfil\quad\strut % repeat for each column + &\vrule##\crcr % vrule on the right + \tablerule % hrule at top of table + \T@bleskip} % add some space + +\def\tablebody{\Tablebody} % synonym + +% \endTablebody closes \Tablebody. + +\def\endTablebody{ % + \bottomrule % put rule at bottom + \crcr\egroup % close the \halign + \egroup $$ % close vbox, math + \hss\egroup} % close the hbox + +\def\endtablebody{\endTablebody} % synonym + +% \Tablebodyleft is just like \Tablebody except that the columns are +% set flush left. + +\def\Tablebodyleft#1{% % #1 = no. columns + \hbox to \hsize\bgroup % start hbox for table + \hss $$ \vbox\bgroup % centered displaymath + \offinterlineskip % No interline glue + \def\tablerule{\noalign{\hrule}} % simple rule + \def\T@bleskip{\Tableskip{#1}{\Tableskipsize}} % nice skip + \def\T@blerule{\T@bleskip\tablerule\T@bleskip} % nice rule + \def\Cr{\cr\T@bleskip} % \cr and nice skip + \def\CR{\cr\T@blerule} % \cr and nice rule + \def\CRCR{\cr\T@bleskip\tablerule % \cr and nice double + \Tableskip{#1}{1pt}\tablerule\T@bleskip} % rule + \def~{\phantom{0}} % ~ is digit-width space + \halign\bgroup % start \halign + \vrule## % do leftmost vrule + &&\quad##\hfil\quad\strut % repeat for each column + &\vrule##\crcr % vrule on the right + \tablerule % hrule at top of table + \T@bleskip} % add some space + +% \Tableskip#1#2 produces a vertical skip with rules of height #2 for +% a table with #1 columns. +% \tablerule produces just a rule. +% \Tablerule#1#2 produces a rule with a skip of dimen #2 on each side +% for a table with #1 columns. + +\def\Tableskip#1#2{height #2 \global\mscount#1% + \gloop\ifnum\mscount>\z@ \Tsk@p\repeat\cr} +\def\Tsk@p{&\omit&\global\advance\mscount\m@ne} + +\def\Tablerule#1#2{\Tableskip#1#2\tablerule\Tableskip#1#2} + +% \bottomrule is a horizontal rule across the table. It is turned off +% by \nobottomrule (locally to the \halign) + +\def\bottomrule{\tablerule} +\def\nobottomrule{\let\bottomrule=\relax} + +%>>> EOF Tablebod.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/WorldSci.txs b/Master/texmf-dist/tex/texsis/base/WorldSci.txs new file mode 100644 index 00000000000..615127ab399 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/WorldSci.txs @@ -0,0 +1,104 @@ +%% file: WorldSci.txs (TeXsis version 2.16) +% $Revision: 16.0 $ : $Date: 1994/05/12 19:47:25 $ : $Author: myers $ +%======================================================================* +% WorldSci -- TeXsis style file for World-Scientific Publishers +% +% Thanks to Vladimir Alexiev <vladimir@cs.ualberta.ca> at the University +% of Alberta for suggesting many improvements. This fixes WorldSci.txs +% to conform more closely to current publisher's guidelines. (3 May 1994) +\ATunlock +\emsg{\@comment\ WorldSci: World-Scientific proceedings layouts} + +%--------------------------------------------------* +% \WorldScientific conforms to the layout instructions given by +% World Scientific Publishing Co., but see their instructions for futher +% details. One thing to keep in mind, they prefer headings of major +% sections in CAPITAL LETTERS. + +\def\WorldScientific{% Document layout for World Scientific Proceedings + \hsize=150mm % horizontal page size + \vsize=220mm % vertical page size + \paper % everything is like \paper, except... + \showchaptIDfalse\showsectIDfalse % consecutively number equations + \nopagenumbers % turn off page numbering +% Title is 14 pt bold centered + \def\Tbf{\fourteenpoint\bf}% % title is 14pt bold + \def\Title{% % World Sci title + \endmode % end any previous field + \vbox{\vskip1cm}% % skip down 1cm + \bgroup % open \title group + \let\endmode=\endTitle % will end \title + \center\Tbf}% % centered, title boldface + \let\title=\Title % synonym + \let\@@endTitle=\endTitle % save it + \def\endTitle{\@@endTitle % old stuff + \vskip-\bigskipamount % but with less skip + \vskip\medskipamount}% % +% Author is 12 pt bold centered, but address is 10 pt italic + \let\@getauthor=\@getauthWS % +% Abstract is indented, 10 pt + \def\abstract{% % for \WorldScientific + \endmode % end previous field + \bgroup % begin abstract group + \let\endmode=\endabstract % + \singlespaced\whitespaced% % + \leftskip=1.5cm\rightskip=1.5cm% + \vskip\baselineskip % + \centerline{ABSTRACT}% % + \smallskip% % + \tenpoint}% % +% Captions should be 10 pt + \let\@ldcaption=\caption % save it + \def\caption##1{% % and redefine + \tenpoint\@ldcaption{##1}}% % using 10 pt default +% Sections... + \let\chapter=\section % no chapters + \sectionminspace=3\baselineskip % fit more on a page + \sectionskip=0.7cm % ditto + \subsectionskip=0.5cm % ditto + \def\tbf{\fourteenpoint\bf} % section heading is 14 pt bold +% Although figures and tables do not bear the section number, +% sections themselves should be numbered + \def\everysection{% % for every section: small reset + \global\edef\@fullID{\the\sectionnum.\space\space}% + \global\subsectionnum=\z@ % reset section counters... + \global\subsubsectionnum=\z@}% % ...but not equations, etc + \def\everysubsection{% % executed for every subsection + \global\edef\@fullID{\the\sectionnum.\the\subsectionnum.\space\space}% + \global\subsubsectionnum=\z@ % reset + \let\@bf=\bf \let\bf=\it}% % subsections are italic not bold + \def\everysubsubsection{ % executed for every subsubsection + \global\edef\@fullID{\the\sectionnum.% + \the\subsectionnum.\the\subsubsectionnum.\space\space}% + \let\@bf=\bf \let\bf=\it}% % subsections are italic not bold + \def\aftersection{% % after \section + \vskip-4pt\nobreak}% % reduce skip + \def\aftersubsection{% % after \sub(sub)section + \vskip-4pt% % reduce skip + \nobreak % don't allow break + \let\bf=\@bf} % unalias \bf +% make figure, table, equation numbers not include the section number + \let\@LabelParse=\LabelParse + \def\LabelParse{\def\@sectID{}\@LabelParse} +% Footnotes should be 9 pt. Use \Footnote + \def\FootFont{\ninepoint}% % like it says +% References + \def\refFormat{% % reference format + \def\refskip{\vskip0pt plus 2pt}% % no skip but some stretch + \tenpoint}% % and 10pt +} + + +% \@getauthor for World Scientific +{\obeylines\gdef\@getauthWS#1 + #2 + {#1\bigskip\def\n{\egroup\centerline\bgroup\bf}% % + \centerline{\bf #2}% % first line is author's name, + \medskip\center% % next lines are affiliation/address + \tenpoint\it}% % 10 pt italic +} + +\ATlock + + +%>>> EOF WorldSci.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/color.txs b/Master/texmf-dist/tex/texsis/base/color.txs new file mode 100644 index 00000000000..29d36bcec59 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/color.txs @@ -0,0 +1,219 @@ +%% file: color.txs (TeXsis version 2.18) +% @(#) $Revision: 1.4 $ + $Date: 1998/09/30 04:48:06 $ + $Author: myers $ +%======================================================================* +% This file is a part of TeXsis, but it will also work with Plain TeX. +% +% This is color.txs, a collection of simple macros for changing the +% colors of TeX output when it is directed to a PostScript output +% device. They use \special commands to insert PostScript instructions +% in the output to change the colors. +% +% These macros were designed specifically for Tomas Rokicki's dvips +% program (version 5.478 or greater) with the color.pro header file, +% but they should also work with any driver which understands the +% appropriate keywords in the \special commands, such as TeXview on a +% NeXT with a color monitor. +% +%------------------------------- +% EXAMPLES of the syntax: +% +% \colorit{Red}{The text inside these brackets is colored Red} +% +% \SetColor{Green} % all text following is colored Green +% +% \background{Yellow} % makes the background color Yellow +% +% The basic colors are: +% +% Black White Gray +% Red Green Blue +% Cyan Magenta Yellow +% Purple Orange Brown +% +% Note that color names all begin with an Initial Capital Letter. +% Additional colors are available, or can be defined. See below. +% +% You can change the color temporarily by pushing and popping the +% PostScript color stack, as in +% +% \PushColor{Purple} % text after this is now in Purple +% +% \PopColor % return to the previous color +% +% Note that color changes have nothing to do with TeX's grouping +% mechanism {i.e. curly brackets}, but are based on the PostScript +% color stack. {If you really want the color to change back at the +% end of a group, see \aftergroup in the TeXbook.} +% +% For the basic colors above the following shortcuts are defined: +% +% \Red{This text is colored Red} +% +% \textGreen % all text following is colored Green. +% +% You can add similar shortcuts for colors other than those above +% with \addColor, like so: +% +% \addColor{Salmon} % defines \Salmon and \textSalmon macros +% +% \Salmon{This text will be in Salmon} +% +% \textSalmon % changes the text color to Salmon +% +% The allowed names for colors are listed below. However, you don't +% have to define the shortcuts to be able to use one of those colors. +% You could say +% +% \colorit{BurntOrange}{Hook 'em Horns!} +% +% to color just that text in that color, or use \SetColor{Emerald}, +% or \PushColor{Cerulean} and \PopColor, even if you have never +% used \addColor to define shortcuts for those colors. +% +% A TeXnical note: You may need to include a "\ " or "{}" after +% \colorit or \Red, or leave a space *inside* the brackets, as in +% +% ``\colorit{Orange}{Julius, } \Red{Seize}\ her!'' he cried. +% +% or else there will not be a space after the colored word. It's the +% same as saying \TeX\ to get the TeX logo with some space after it. +% But of course sometimes you will want different colors to abut. +% +% You can define shortcuts for all of the colors in color.pro, most +% of which are based mainly on the colors in a box of 64 Crayola +% Crayons, by saying \Crayolas. See the end of this file for a +% complete list of the colors. To print the available colors, in +% their own colors, say \ListColors +% +% You can define your own colors by specifying the CMYK color as a +% quadruple of intensity values between 0 and 1. (CMYK means Cyan, +% Magenta, Yellow, and blacK.) For example: +% +% \SetCmykColor{.2 .3 .4 .1} will give you a nice tan, man. +% +% \PushCmykColor{.5 .5 .1 .2} Old Blue Eyes \PopColor +% +%------------------------------- +% These macros are based on Jim Hafner's COLORDVI.TEX, revised by him +% and Tomas Rokicki as of Aug. 1992. My thanks to him for blazing the +% trail. I have added the explicit color push/pop macros, and what I +% think is a better syntax, but these macros should also be mostly +% backward compatible with the COLORDVI.TEX syntax. +% +% Eric Myers <myers@umich.edu> 16 May 1997 +% Department of Physics, University of Michigan, Ann Arbor, MI, USA +%======================================================================* +% Manipulate the color stack (and try to keep track of it): + +\newcount\colordepth \colordepth=0 + +\def\PushColor#1{\special{color push #1}\global\advance\colordepth by 1} +\def\PopColor{\special{color pop}\global\advance\colordepth by -1} + +% Set the colors: + +\def\colorit#1#2{\PushColor{#1}#2\PopColor} +\def\background#1{\special{background #1}} +\def\SetColor#1{\glbclr{#1}\special{color #1}} + +% \glbclr is used to remember the global color in use, by saving +% it in the definition of \globalColor. Pushing and popping the +% color stack is preferable, but this works too. + +\def\glbclr#1{\gdef\globalColor##1{\colorit{#1}{##1}}} + +% Define your own CMYK colors: + +\def\SetCmykColor#1{\glbclr{cmyk #1}\special{color cmyk #1}} +\def\PushCmykColor#1{\special{color push cmyk #1}} + +% OLD CMYK color functions from colordvi.sty (the names are rather +% unspecific as to their function, but this makes everything backwards +% compatible). + +\def\textColor#1{\setCmykColor{#1}} +\def\Color#1#2{\PushCmykColor{#1}#2\PopColor} + + +% Make your own \Color and \textColor shortcuts with \addColor + +\def\addColor#1{% + \expandafter\gdef\csname #1\endcsname##1{\colorit{#1}{##1}}% + \expandafter\gdef\csname text#1\endcsname{\SetColor{#1}}% +} + +\def\newColor #1 {\addColor{#1}} % more backward compatibility + +% The Basic colors: + +\addColor{Black} \addColor{White} \addColor{Gray} +\addColor{Red} \addColor{Green} \addColor{Blue} +\addColor{Cyan} \addColor{Magenta} \addColor{Yellow} +\addColor{Orange} \addColor{Purple} \addColor{Brown} + + +% Say \Crayolas to get shortcuts for all of the colors in color.pro +% which are mostly based on the colors in a box of 64 Crayola Crayons. +% (See colordvi.sty for *approximate* Pantone color matches.) + +\def\Crayolas{% Define all colors from Crayola Crayon box + \doColors{\addColor}} + +% Say \ListColors to list all the colors + +\def\ListColors{% List all the colors, by name + \def\ShowAcolor##1{\SetColor{##1}{##1}\ }% + \doColors{\ShowAcolor} +} + + +\def\doColors#1{% apply a macro to all the colors + #1{Black} #1{White} #1{Gray} + #1{Red} #1{Green} #1{Blue} + #1{Yellow} #1{Cyan} #1{Magenta} + #1{GreenYellow} #1{RoyalPurple} #1{RedViolet} + #1{BlueViolet} #1{Fuchsia} #1{Orange} + #1{Goldenrod} #1{Periwinkle} #1{Lavender} + #1{Dandelion} #1{CadetBlue} #1{Thistle} + #1{Apricot} #1{CornflowerBlue} #1{Orchid} + #1{Peach} #1{MidnightBlue} #1{DarkOrchid} + #1{Melon} #1{NavyBlue} #1{Purple} + #1{YellowOrange} #1{RoyalBlue} #1{Plum} + #1{BurntOrange} #1{Cerulean} #1{SpringGreen} + #1{Bittersweet} #1{OliveGreen} #1{Violet} + #1{RedOrange} #1{ProcessBlue} #1{RawSienna} + #1{Mahogany} #1{SkyBlue} #1{Sepia} + #1{Maroon} #1{Turquoise} #1{CarnationPink} + #1{BrickRed} #1{TealBlue} #1{Tan} + #1{OrangeRed} #1{BlueGreen} #1{Aquamarine} + #1{RubineRed} #1{Emerald} #1{Mulberry} + #1{WildStrawberry} #1{JungleGreen} #1{Rhodamine} + #1{Salmon} #1{SeaGreen} #1{LimeGreen} + #1{ForestGreen} #1{YellowGreen} #1{Brown} + #1{VioletRed} #1{PineGreen} +} + + + + + + + + + + + + + + + + + + + + + + + + +%>>> EOF color.txs <<<
\ No newline at end of file diff --git a/Master/texmf-dist/tex/texsis/base/nuclproc.txs b/Master/texmf-dist/tex/texsis/base/nuclproc.txs new file mode 100644 index 00000000000..6451c8e00de --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/nuclproc.txs @@ -0,0 +1,115 @@ +% file: nuclproc.txs TeXsis version 2.15 +% $Revision: 15.1 $ : $Date: 92/06/30 14:31:53 $ : $Author: myers $ +%======================================================================* +% TeXsis - Nuclear Physics Proceedings : This file is a part ot TeXsis +% (C) Copyright 1992 by Eric Myers and Frank E. Paige +%======================================================================* +% \nuclproc is a double column format with titles in upper case and left +% justified, twelve point type, etc., for camera-ready copy. +% Constructed following directions in ``Instructions for the Preparation +% and Typing of Camera Ready Contributions'' by Mary Carpenter, Elsevier +% Publishers. + +\ATunlock + +\def\nuclproc{% Nuclear Physics Proceedings style + \texsis % initialize + \emsg{\@comment\ nuclproc: Nuclear Physics Proceedings style}% + \setdoublecolumns{19.3cm}{26cm}{9cm}% + \advance\voffset by -1.2cm \relax % as close to the top as possible + \advance\hoffset by -1.4cm \relax % as close to the left as possible + \auxswitchtrue % save tags and labels in .aux file + \refswitchtrue % save references in .ref file + \def\Tbf{\fourteenpoint\fourteenss\uppercase}% Title typestyle (takes args!) + \def\tbf{\twelvepoint\it\uppercase}% % section head typestyle +% + \twelvepoint % twelve point type size + \twelvess % but SANS SERIF font + \parindent=0.6cm % paragraph indent + \autoparens % auto-sizing of parens + \quoteon % automatic begin/end quotes + \nopagenumbers % don't print page numbers + \singlespaced\whitespaced % 1.25 percent spacing +% + \def\titlepage{% % for \nuclproc + \hbox{\ }% % anchor to top of page + \vskip 0.50cm % whitespace above title + \begingroup % title material in group + \let\endmode=\relax % \endmode will end a field + \narrower\parindent=0pt}% % +% + \def\endtitlepage{% % for \nuclproc + \endmode % end any open field + \smallskip % + \endgroup % end title material + \doublecolumns % text is in double columns + \singlespaced\whitespaced} % 1.25 percent spacing +% + \def\title{% begin title for \nuclproc + \endmode % end previous field, if any + \mark{Title Page\NX\else Title Page}% % so \HeadLine doesn't print + \bgroup % begin title group + \def\endmode{\endtitle}% % how to end this mode + \widenspacing % a little wider spacing + \flushleft % left justified + \Tbf{}% % + } +% + \def\endtitle{% end the title for \nuclproc + \endflushleft % + \egroup % end title group + \bigskip}% % +% + \def\author{% name of author for \nuclproc + \endmode % end any previous field + \bgroup\narrower % margins + \let\endmode=\endauthor % set up ending + \flushleft % flush left + \NHgetauthor}% % get author's name from next line +% + \def\endauthor{% end \author for \nuclproc + \endflushleft % end flush left + \vskip\normalbaselineskip % skip one line + \egroup}% % end author group +% + \def\and{\smallskip{and}\smallskip}% % +% + \def\abstract{% % for \nuclproc + \endmode % end any open field + \bigskip % skip down some + \bgroup % mode is local + \let\endmode=\endabstract % how to end this mode + \singlespaced\noindent}% % +% + \def\endabstract{% end \abstract for \nuclproc + \medskip\egroup\bigskip}% % +} + + +% \NHgetauthor is like \getauthor but left justifies and skips +% one line after author's name. + +{\obeylines + \gdef\NHgetauthor#1 + #2 + {#1\vskip0pt\noindent{ #2}% % author line + \def\\{\discretionary{}{}{,}}% % , unless line breaks + \def\n{\break}% + \vskip\normalbaselineskip % blank line + \singlespaced}% +} + + +\def\@longequation{ + \enddoublecolumns + \leftcolrule + \def\endlongequation{\@endlongequation}} + +\def\@endlongequation{ + \rightcolrule % with the rule at top of right column + \doublecolumns} % then back to double column mode + + +\ATlock + +%>>> EOF nuclproc.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/printfont.txs b/Master/texmf-dist/tex/texsis/base/printfont.txs new file mode 100644 index 00000000000..cef598668c8 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/printfont.txs @@ -0,0 +1,116 @@ +%% file: printfont.txs TeXsis version 2.16 +% $Revision: 16.0 $ : $Date: 1992/08/08 22:20:36 $ : $Author: myers$ +%======================================================================* +% \printfont{<name><description>} prints a table showing font +% <name>. <description> should be something like "Roman" + +\catcode`\@=11 +\newdimen\sidedimen +\setbox0\hbox{\tenrm\char'175 \tt0} \sidedimen=\ht0 \divide\sidedimen2 + +\def\oddrule#1{\multispan{18}\leaders\hrule\hfill&\omit\hbox to 40pt{\hfill + \smash{\lower\sidedimen\hbox{\tenrm\char'175 \tt#1x}}% + \hfill}\cr} + +\def\extra{&height4pt&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&\cr} +\def\hvi{\hskip6pt plus 1fill\relax} + +%----------------- +% \printfont#1 prints a table of font #1. +% (this should get moved to a style file or something) + +\newcount\charcount\charcount\z@ +%\def\gloop#1\repeat{\gdef\body{#1}\iterate} + +\def\printfont#1{% + \begingroup + \offinterlineskip + \charcount\z@ + \def\f@nt{#1} % font name + \font\F@nt=\f@nt % use this font in table + \halign to\hsize{\hbox to40pt{\hfill##\hfill}& + \vrule##\tabskip\centering + &\hvi\F@nt##\hvi + &\vrule##&\hvi\F@nt##\hvi&\vrule##&\hvi\F@nt##\hvi&\vrule##&\hvi\F@nt##\hvi + &\vrule##&\hvi\F@nt##\hvi&\vrule##&\hvi\F@nt##\hvi&\vrule##&\hvi\F@nt##\hvi + &\vrule##&\hvi\F@nt##\hvi&\vrule##\tabskip0pt&##\cr + \omit&height12pt&\gloop\it'\number\charcount&height12pt&\ifnum\charcount<7 + \global\advance\charcount1 \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\charcount\z@} + \it'00x&& + \gloop\char\charcount&&\ifnum\charcount<7 \global\advance\charcount1 + \repeat\cr + \extra\oddrule0\extra\noalign{\global\advance\charcount1 } + \it'01x&& + \gloop\char\charcount&&\ifnum\charcount<15 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \it'02x&& + \gloop\char\charcount&&\ifnum\charcount<23 \global\advance\charcount1 + \repeat\cr + \extra\oddrule1\extra\noalign{\global\advance\charcount1 } + \it'03x&& + \gloop\char\charcount&&\ifnum\charcount<31 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \it'04x&& + \gloop\char\charcount&&\ifnum\charcount<39 \global\advance\charcount1 + \repeat\cr + \extra\oddrule2\extra\noalign{\global\advance\charcount1 } + \it'05x&& + \gloop\char\charcount&&\ifnum\charcount<47 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \it'06x&& + \gloop\char\charcount&&\ifnum\charcount<55 \global\advance\charcount1 + \repeat\cr + \extra\oddrule3\extra\noalign{\global\advance\charcount1 } + \it'07x&& + \gloop\char\charcount&&\ifnum\charcount<63 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \it'10x&& + \gloop\char\charcount&&\ifnum\charcount<71 \global\advance\charcount1 + \repeat\cr + \extra\oddrule4\extra\noalign{\global\advance\charcount1 } + \it'11x&& + \gloop\char\charcount&&\ifnum\charcount<79 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \it'12x&& + \gloop\char\charcount&&\ifnum\charcount<87 \global\advance\charcount1 + \repeat\cr + \extra\oddrule5\extra\noalign{\global\advance\charcount1 } + \it'13x&& + \gloop\char\charcount&&\ifnum\charcount<95 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \it'14x&& + \gloop\char\charcount&&\ifnum\charcount<103 \global\advance\charcount1 + \repeat\cr + \extra\oddrule6\extra\noalign{\global\advance\charcount1 } + \it'15x&& + \gloop\char\charcount&&\ifnum\charcount<111 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \it'16x&& + \gloop\char\charcount&&\ifnum\charcount<119 \global\advance\charcount1 + \repeat\cr + \extra\oddrule7\extra\noalign{\global\advance\charcount1 } + \it'17x&& + \gloop\char\charcount&&\ifnum\charcount<127 \global\advance\charcount1 + \repeat\cr + \extra\noalign{\hrule}\extra\noalign{\global\advance\charcount1 } + \omit&height12pt depth 4pt& + \rm\char'175 \tt8&&\rm\char'175 \tt9&&\rm\char'175 \tt A&& + \rm\char'175 \tt B&&\rm\char'175 \tt C&&\rm\char'175 \tt D&& + \rm\char'175 \tt E&&\rm\char'175 \tt F&\cr} + \endgroup} + +\def\Printfont#1#2{\printfont{#1}% + \nobreak\bigskip\nobreak + \centerline{\TeX\ Font #1: #2}% + \vfill\eject} + +%>>> EOF printfont.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/spine.txs b/Master/texmf-dist/tex/texsis/base/spine.txs new file mode 100644 index 00000000000..c2a4e6a421f --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/spine.txs @@ -0,0 +1,58 @@ +%% file: spine.txs - 3-Ring Binder labels - TeXsis version 2.18 +%% @(#) $Id: spine.txs,v 18.1 2001/04/06 22:47:06 myers Exp $ +%======================================================================* +% spine.txs - labels for the spine of a 3-Ring binder +% +% (C) copyright 1994, 1999 by Eric Myers and Frank E. Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +%======================================================================* +% \spine{text} makes a boxed label for the spine of a 3 ring binder +% This is printed in \Landscape mode, 24pt type, and with a ruled box +% around it. The box will be at least 15cm long, but will extend +% if the text requires more space. Instructions for installing the +% label in the spine of a binder are printed, but if more than one +% label is created the instructions are only printed once. + +\def\spine#1{\spineSetup +%% \headline={\LandscapeSpecial}% % and force it every page + \setbox0=\hbox{\twentyfourpoint\bf\quad #1\quad}% + \dimen0=\wd0 % + \ifdim\wd0<15cm \dimen0=15cm\fi % Minimum size 15cm + \vskip 1cm plus 2cm % + \tightboxit{\vbox to 1in{\vfill % + \hbox to \dimen0{\hfil\box0\hfil}% % + \vfill}}% % + \vskip 1cm plus 2cm} % + +\def\spineSetup{% once-only setup for \spine + \LandscapeSpecial % Landscape mode + \vbox{\hsize=15cm % + \bigskip\bigskip % + \tenpoint\parskip=\smallskipamount % + \noindent % + How to install the spine label on a binder: + + \item{1.} + Cut out the label around the outside of the + bounding ruled box. Leave extra paper + (about 1.5cm or so) on the RIGHT side. + + \item{2.} + Obtain a long thin plastic ruler or similar object which can + slide down the pocket on the binder spine. + + \item{3.} + Put the label along the ruler, face up, and fold the extra tab + of paper on the right of the label over the end of the ruler. + + \item{4.} + Slide the ruler, with the label on it, down the spine of the + binder. When the label is in place remove the ruler. The label + will remain. + \bigskip\bigskip + \gdef\spineSetup{\relax} % only show once! + }} + +%>>> EOF spine.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/texsis.tex b/Master/texmf-dist/tex/texsis/base/texsis.tex new file mode 100644 index 00000000000..71096473606 --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/texsis.tex @@ -0,0 +1,110 @@ +%% file: texsis.tex - TeX macros for Physicists - TeXsis version 2.18 +%% @(#) $Id: texsis.tex,v 18.1 2001/04/06 22:52:02 myers Exp $ +%======================================================================* +% TeXsis - TeX Macros for Physicists -- by Eric Myers and Frank E. Paige +% +% This is version 2.18 of TeXsis, a collection of TeX macros +% for physicists (and anyone else who finds them useful). +% +% The source code for this format is contained in this file and +% in the files TXS*.tex read by it. The documentation is contained +% in the files TXS*.doc. To produce a printed version of the +% documentation, run TeXsis on TXSdoc.doc (or run Manual.tex through +% plain tex). +% +% You can always get the latest version of TeXsis from +% ftp://ftp.texsis.org/texsis +% +% Eric Myers, Department of Physics, University of Michigan, Ann Arbor +% Frank Paige, Physics Department, Brookhaven National Laboratory +% ---------- +% (C) Copyright 1988-2001 by Eric Myers and Frank E. Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +% THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +% IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +% WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. +%======================================================================* +% This is the master file, which brings together all of the components +% of TeXsis. They should all be in the same directory. This master file +% can be used to generate TeXsis as a pre-loaded format using initex: +% initex texsis (or initex &plain texsis) +% followed by "\dump". See The TeXbook for more on INITEX and \dump. +% +% First check to see if the PLAIN format is pre-loaded. +% If \plainoutput is undefined then it is not, so read in plain.tex. +% +\ifx\plainoutput\undefined\input plain.tex\fi + +%---------------------------------* +\def\Input #1 {\def\filename{#1}\input #1} % \Input someday...? +\def\TeXsis{\TeX sis}% % the TeXsis logo + +%---------------------------------* +% Fonts: TXSfonts contains the fonts which (almost) all TeX +% installations should have, but there may be some changes necessary +% for your own instalation. It's not a good idea to just replace these +% though, because there is other info there too. Read the comments in +% the file TXSfonts for further info. +% +\input TXSfonts % 12, 10, 7, 5, 14, 16 pt fonts, etc... + +%---------------------------------* +% Macros: different "packages" are kept in separate files +% +\input TXSmacs % main macros common to all components +\input TXSinit % initialization stuff and some basic macros +\input TXShead % running headlines and footlines +\input TXSeqns % equation numbering +\input TXSprns % automatic parentheses sizing and balancing +\input TXSrefs % references and citations +\input TXSsects % chapter and section divisions +\input TXStags % tags for ref and eqn numbers, \label-ing +\input TXStitle % title page macros for physics papers +\input TXSenvmt % center and flush environments, etc.. +\input TXSfmts % document layouts, \paper, \preprint, etc +\input TXSfigs % figure, tables, lists of figures +\input TXSruled % ruled tables +\input TXSdcol % double column format +\input TXSletr % letter format +\input TXSmemo % memos and referee reports +\input TXSconts % table of contents macros +\input TXSsymb % extended math symbols for physics + +%---------------------------------* +% Patches and Changes: The two files named below will be read +% AT RUN TIME by \texsis, if they exist. See the file TXSinit.tex +% for more info. +% +\def\TeXsisLib{}% use this to specify an alternate path to where code is kept +\def\TXSpatches{\TeXsisLib TXSpatch}% % global run-time patches +\def\TXSmods{TXSmods}% % local or personal modifications + +%---------------------------------* +% Site dependent info: See if there is a site info file out +% there called TXSsite.tex. If so, read it in. This happens only once +% when running INITEX to create the format file texsis.fmt. + +\LoadSiteFile + +%---------------------------------* +\pageno = 1 % start on page 1 +\tenpoint % as in Plain TeX +\singlespaced % default until \texsis + +\def\fmtname{TeXsis}\def\fmtversion{2.18}% +\def\revdate{21 April 2001}% + +\everyjob={% This stuff is done every job... + \emsg{\fmtname\space version \fmtversion\space (\revdate) format preloaded.}% + \SetDate % set \adate and \edate + \ReadPatches % read patch file, if it exists + \ReadAUX % read .aux file, if it exists + \let\filename=\jobname % for \Input, for starters + \colwidth=\hsize % default column width + } +\ATlock % lock @ macros +\emsg{\fmtname\space version \fmtversion\space (\revdate) loaded.}% + +%%>>> EOF texsis.tex <<< diff --git a/Master/texmf-dist/tex/texsis/base/thesis.txs b/Master/texmf-dist/tex/texsis/base/thesis.txs new file mode 100644 index 00000000000..374c084baba --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/thesis.txs @@ -0,0 +1,168 @@ +%% file: thesis.txs - TeXsis version 2.18 +%% @(#) $Id: thesis.txs,v 18.1 2001/04/06 22:23:29 myers Exp $ +%======================================================================* +% \thesis Thesis format, including title page, table +% of contents, binding margins, etc. +% +% The original version of \thesis was based on the Yale Graduate +% school standards, but of course every place is different. +% Therefore we have here \YaleThesis and \UTthesis as two variations. +% You can start with either one and modify it to suit your needs, or +% start from scratch and create your own. +% +% If you write a \thesis macro for your institution and want to share +% it with others, please e-mail it to texsis@texsis.org and we will +% put it on the ftp server. +% + +\ATunlock % make sure @ is a letter here + +%======================================================================* +% \UTthesis complies with the UT Graduate School requirements for +% a thesis, including putting the page number up in the text on the +% first page of a chapter. To do this we create a new insert, called +% \folioins, and redefine part of Plain TeX's \output routines +% to include this insert. Then we also put a \mark on the page +% to suppress the page numbering in the headline. I know it's +% complicated, but it does what UT wants. -EAM + +\newinsert\folioins % insert for page numbers +\skip\folioins=1cm % size of page number insert +\count\folioins=1000 % magnification factor (1 to 1) +\dimen\folioins=8in % maximum insert per page + + +\def\UTthesis{% + \emsg{[Thesis format for University of Texas at Austin, 1989]}% + \texsis % initialize TeXsis basics + \hoffset=0.55in % for binding margin 1.5in + \hsize=5.65in % gives 1.25in right margin + \voffset=0.55in % makes 1.5in top margin + \vsize=8.2in % makes 1.25in bottom margin + \headlineoffset=-1.5pt % move page numbers DOWN from normal + \RunningHeadsfalse % UT does not want running heads +% + \ContentsSwitchtrue % be sure to make a Table of Contents + \def\Tbf{\sixteenpoint\bf}% % Chapter Titles in 16pt bold + \def\tbf{\twelvepoint\bf}% % Section titles in 12pt bold + \twelvepoint % 12pt type for the text + \doublespaced % double spacing + \autoparens % auto-sizing of parens ON + \quoteon % auto quote matching ON +% + \def\titlepage{% % \book title page + \begingroup % any changes local + \pageno=-1 % start on page i + \let\endmode=\relax % \endmode will end a field + \def\FootText{\relax}}% % no number on title page + \def\endtitlepage{% % end title page for \book + \endmode % end any open field + \vfil\eject % end title page + \endgroup % close group from \titlepage + \pageno=1}% % reset page number to 1 +% + \def\abstract{% % no "ABSTRACT" title + \bigskip\bigskip\medskip % skip down some + \bgroup\doublespaced\narrower\narrower + } + +% -- \chapter puts the page number in a \folioins insert + +\def\afterchapter{\SpecialPage} + +\def\SpecialPage{\ifnum\pageno>0 + \@Mark{\ChapterTitle}% mark on the page inhibits page # headline + \insert\folioins{\insertfolio}\fi} % insert below text + +% to get the page number up in the text area on the first page +% of refereces do \SpecialPage\ListReferences + + +\def\@insertfolio{\line{\hfill-- \folio\ --\hfill}% + \gdef\insertfolio{\relax}} % THERE CAN BE ONLY ONE! + +\def\insertfolio{\@insertfolio} % turn it ON for starters + +% -- only display page number in headline if positive, footline if negative + +\def\PageNumber{\ifnum\pageno<0\else \folio \fi} + +\def\FootLine{\ifnum\pageno<0 \line{\hss -- \folio\ -- \hss}\fi} +\footline={\FootLine} % + +% -- re-define \pagecontents from plain to get \folioins if not void + +\def\pagecontents{% + \ifvoid\topins\else\unvbox\topins\fi + \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255 + \ifvoid\footins\else % footnote info is present + \vskip\skip\footins + \footnoterule + \unvbox\footins\fi + \ifvoid\folioins\else % page number insert is present + \vskip\skip\folioins + \unvbox\folioins\fi + \gdef\insertfolio{\@insertfolio} % re-enable for next page + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + +% -- Note: to get the page number raised into the text area for the +% front pages (roman numeral / negative numbers) you +% will have to say \FrontPages to change the page layout. +% Remember, front pages are actually printed AFTER the document. + +\def\FrontPages{\headline={}% % no headlines + \advance\vsize by -\skip\folioins + \advance\vsize by -10pt + \footline={\line{\hss -- \folio\ -- \hss}}} % page number at bottom + +}% end of \UTthesis + + +%--------------------------------------------------* +% \YaleThesis defines a format acceptable for the Yale Graduate School +% (at the time I wrote my thesis, in 1984, so be careful! -EAM). + +\def\YaleThesis{% document layout for a Thesis or Dissertation + \emsg{[Thesis format for Yale Graduate School, 1984]}% + \texsis % initialize TeXsis basics + \ContentsSwitchtrue % contents page ON + \refswitchtrue % save references + \auxswitchtrue % .AUX file for forward references + \hsize=6.0in % gives 1in right margin + \hoffset=0.5in % for binding margin 1.5in + \voffset=0.25in % move text down a bit + \headlineoffset=0.20in % move headline up (Yale Grad school) + \RunningHeadstrue % running headlines + \def\titlepage{% % \thesis title page + \bgroup % open \titlepage group + \pageno=-1 % start on page i + \let\endmode=\relax % \endmode will end a field + \def\FootText{\relax}}% % no number on title page + \def\endtitlepage{% % \thesis end title page + \endmode % end any open field + \vfil\eject % end title page + \egroup% % close \titlepage group + \pageno=1}% % reset page number + \def\abstract{% % \thesis abstract + \endmode % end previous field + \bigskip\bigskip\medskip % skip down some + \bgroup % abstract has same spacing + \let\endmode=\endabstract % to end \abstract + \narrower\narrower}% % + \def\endabstract{% % \thesis end abstract + \medskip\egroup\bigskip}% % + \def\FootText{--\ \tenrm\folio\ --}% % for 1st page of chapter + \def\Tbf{\sixteenpoint\bf}% % Chapter Titles in 16pt bold + \def\tbf{\twelvepoint\bf}% % Section titles in 12pt bold + \elevenpoint % 11pt type for most of doc + \doublespaced % double spacing + \autoparens % auto-sizing of parens + \quoteon % auto quote matching + \def\FrontPages{\relax}% % no such thing at Yale + } % + +\ATlock % @ goes back to \other + +\let\thesis=\YaleThesis + +%>>> EOF thesis.txs <<< diff --git a/Master/texmf-dist/tex/texsis/base/twin.txs b/Master/texmf-dist/tex/texsis/base/twin.txs new file mode 100644 index 00000000000..c78e02d2c8b --- /dev/null +++ b/Master/texmf-dist/tex/texsis/base/twin.txs @@ -0,0 +1,124 @@ +%% file: twin.txs - TeXsis version 2.18 +% @(#) $Id: twin.txs,v 18.1 2001/04/06 22:05:11 myers Exp $ +%======================================================================* +% TWINOUT -- two pages side by side on one piece of paper +% +% \twinout redefines TeX's \output routine to put two pages side-by-side +% on one piece of paper, in landscape format. By default the height/width +% ratio of \vsize to \hsize is preserved, unless this would make the +% two pages overlap. In that case the new \hsize is adjusted to give +% a "reasonable" gutter between the two pages. (For example, the first +% method works for A4 paper, but fails for U.S. letter size, so then the +% second method is used.) +% +% In some cases the defaults will not give you what you want. +% If you don't like the way that \twinout sets the sizes of the pages +% you can adjust them to your liking AFTER you have invoked \twinout. +% \hsize is the width of an individual page, \vsize is the height of +% either page, and \twinhsize is the width of both pages across the +% length of the paper (the default is the \vsize in effect before you +% invoked \twinout). The \hoffset and \voffset can also be adjusted. +% The default is to set \hoffset=-0.10in, which is a reasonable place to +% start; \voffset is unchanged. +% +% Typestyles are NOT changed, you have to do that yourself. +% +% An example showing both page size and typestyle selection is: +% +% \twinout +% \twinhsize=9in \vsize=6.95in \hsize=4.36in \hoffset=-0.5in +% \tenpoint +% +% These macros are patterned after similar macros in Harvmac by +% Paul Ginsparg, as well as the plain.tex \output routines, but this +% is a total rewrite by Eric Myers <myers@umich.edu>. +% +% Dependencies: \LandscapeSpecial should be defined in TXSsite.tex, but +% you can make your own definition before twin.txs is read in, or you +% can do without it and give dvips the "-t landscape" flag. Other than +% worrying about that, this can be used by itself with plain.tex. +% +%======================================================================* +% (C) Copyright 1993, 2000 by Eric Myers and Frank Paige. +% This file is a part of TeXsis. Distribution and/or modifications +% are allowed under the terms of the LaTeX Project Public License (LPPL). +% See the file COPYING or ftp://ftp.texsis.org/texsis/LPPL +%======================================================================* +\message{- two pages on one} +\catcode`@=11 % @ is a letter here to hide the inner workings + +\newbox\@leftpage % box to hold left page while building right page +\newdimen\twinhsize % width of both pages together across the page + + +% \LandscapeSpecial is the \special command that puts your laser printer +% in "landscape" mode, i.e. printing sideways. If it is not already +% defined (in TeXsis this is done in TXSsite.tex) then the default +% is for Tom Rokicki's dvips. + +\ifx\undefined\LandscapeSpecial % is there no definition? then use + \def\LandscapeSpecial{\special{papersize=11in,8.5in}}% dvips version +\fi + + +% \twinout just sets up the column flag (to start in Left column), +% sets the new \hsize and \vsize and changes \output. + +\def\twinout{% change \output to get two pages on one + \global\let\@LR=L % begin in left column + \twinsize % set paper size to default + \output={\twinoutput}} % redefine \output + + +% \twinsize sets the page size for twin page output from the +% current settings of \vsize and \hsize, preserving their ratio. +% If h and v are the original horizontal and vertical sizes then the +% width of a new page is w = h*(h/v). [Since TeX stores dimensions +% in scaled points (65536sp=1pt) we have to be careful to rescale +% from sp to pt to avoid arithmetic overflow.] If the columns would +% overlap then a smaller \hsize is chosen such that there is a +% reasonable gutter between the two pages. + +\def\twinsize{% set page sizes for twin page output + \twinhsize=\vsize % two pages across one rotated page + \vsize=\hsize % height of page is width of paper + \hoffset=-0.1in % also adjust offset a bit +% now compute default \hsize from \hsize/\vsize ratio + \divide\hsize by 65536 % convert sp to pt for calculations + \multiply\hsize by \hsize % h^2 in points + \dimen@=\twinhsize \divide \dimen@ by 65536 % v in pt from sp + \divide\hsize by \dimen@ % w = h * (h/v) + \multiply\hsize by 65536 % convert pt back to sp +% also compute candidate \hsize based on \twinhsize with a reasonable gutter + \dimen@=-\vsize \divide\dimen@ by 13 % gutter width computed from height + \advance\dimen@ by \twinhsize % width of page minus gutter + \divide\dimen@ by 2 % divide by 2 to get column width + \ifdim\dimen@<\hsize \hsize=\dimen@\fi} % choose smaller \hsize + + +% \twinoutput builds the page as plain.tex does, but with a modified +% \shipout to collect the left page first, then put both pages out together + +\def\twinoutput{% modified version of \plainoutput for two-on-one printing + \twinshipout{\vbox{\makeheadline\pagebody\makefootline}}% + \advancepageno + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} + + +% \twinshipout takes a \vbox, as \shipout does, but for the left page +% it saves it temporarily. When the right page is given it puts the two +% side by side and ships them out together. + +\def\twinshipout#1{% modified version of \shipout for two-on-one printing + \if L\@LR % left page? + \global\setbox\@leftpage=#1 % save the box for left page + \message{[\the\pageno]}% % fake [page number] in log + \global\let\@LR=R % set flag for next (right) page + \else % right page? + \shipout\vbox{\LandscapeSpecial % force landscape on every page + \hbox to \twinhsize{\box\@leftpage\hfil{#1}}}% 2 pages side by side + \global\let\@LR=L % set flag back to left page + \fi} + +\catcode`@=12 % @ is no longer a letter +% >>> EOF twinout.txs <<< |