diff options
Diffstat (limited to 'macros/plain/contrib/mtbe/stdpage.tex')
-rw-r--r-- | macros/plain/contrib/mtbe/stdpage.tex | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/macros/plain/contrib/mtbe/stdpage.tex b/macros/plain/contrib/mtbe/stdpage.tex new file mode 100644 index 0000000000..8bf9c5dad0 --- /dev/null +++ b/macros/plain/contrib/mtbe/stdpage.tex @@ -0,0 +1,259 @@ +%%% File: StdPage.tex +%%% From `Mathematical TeX by Example' by Arvind Borde +%%% (c) 1993, Academic Press. +%%% Contents: The page layout, standard fonts, etc., used across the board in +%%% all the files of `Mathematical TeX by Example'. + +\input Utility + +%---------------------------------------------------------------------------- +%%% TYPEFACE NAMES: + +\font\TitleFont=cmb10 scaled 2986 % For chapter titles. +\def\TitleFonts{\TitleFont} % Needed for redefinition purposes later. +\font\NumFont=cmb10 scaled 5160 % For the large chapter numbers. +\font\SubTitleFont=cmbx12 % For subsection titles. +\font\SubTitlett=cmtt10 scaled 1200 % Also used in section titles. +\def\SubTitleFonts{\SubTitleFont} % Needed for redefinition purposes later. +\font\SubSectionTitleFont=cmti10 scaled\magstephalf % For subsection titles. +\font\Bigsy=cmsy10 scaled 1200 % For `bullets' in subsection titles. +\font\SmallPnoFont=cmfib8 % For page numbers at the bottom. +\font\PnoFont=cmfib8 scaled\magstep1 % For page numbers in the margin. +\font\Smallcaps=cmcsc10 % Small capitals, used in many places. +\let\sc=\Smallcaps \let\smc=\Smallcaps % For compatibility w/other packages. +\font\Sansserif=cmss10 % Sans serif, used in many places. +\let\sf=\Sansserif % For LaTeX compatibility. +\font\Ninerm=cmr9 +\let\Smallrm=\Ninerm % Used in places to give unobtrusive numerals, etc. + +% For section titles in the margins: +\font\Eightbf=cmbx8 +\font\Eighttt=cmtt8 +\let\MarginFont\Eightbf + +% For chapter and section titles that use several fonts: +\def\UseBigCal{\font\TitleCal=cmbsy10 scaled2986 + \def\TitleFonts{\textfont2=\TitleCal + \exhyphenpenalty10000 \pretolerance10000 + \hbadness10000 \TitleFont}} +\def\Trick#1{{\Ninebf\uppercase{#1}}} % Used for the LaTeX logo in titles. +\def\UseMedCal{\font\SubTitleCalFont=cmbsy10 scaled\magstep1 + \font\SmSubTitleCalFont=cmbsy9 + \font\Tenbsy=cmbsy10 + \font\Ninebf=cmbx9 + \def\SubTitleFonts{\textfont2=\SubTitleCalFont + \scriptfont2=\SmSubTitleCalFont + \let\Eightsy\Tenbsy \let\Smallcaps\Trick + \SubTitleFont}} + +%---------------------------------------------------------------------------_% +%%% REPRODUCING INPUT: + +\let\XXX=\Literal % Temporary assignment. +\def\Literal {\XXX \cc`\*=12 \losenolines} % Redefine `\Literal' for use here. +{\cc`\^^M=\active % +\gdef\losenolines{\cc`\^^M=\active \def^^M{\leavevmode\endgraf}}} + +% Use these to display input: +\def\beginliteral{\penalty1000\vskip3pt plus2pt minus1pt \Literal \cc`\"=12 % + \parskip0pt \parindent\indsize \baselineskip2.77ex \thatisit} +{\cc`\@=0 \cc`\\=12 @cc`@^^M=@active % + @gdef@thatisit^^M#1\endliteral{#1@endgroup% + @vskip.8@smallskipamount@noindent@ignorespaces}} + +%---------------------------------------------------------------------------- +%%% MISCELLANEOUS: + +% First, a utility command that gives lowercase small capitals: +\def\LCSmCaps#1{{\let\ZZ=\&\def\&{{\sevenrm\:\ZZ\:}}\Smallcaps + \xspaceskip=.1667em\relax + \lowercase\expandafter{#1}}} +% Next, utilities to save typing; the first of these typesets references +% in the correct format. +\def\Ref#1[#2]{\LCSmCaps{#1}{\Smallrm [#2]}} +\def\[#1]{{\Sansserif #1}} + +%---------------------------------------------------------------------------- +%%% CHAPTER AND SECTION FORMATTING: + +\newskip\BelowTitleSkip \BelowTitleSkip=4.5pc plus .5pc % Note: 1pc=12pt +\newcount\StartAnew +\newtoks\NameofChapter +\newtoks\SectionLabel +\newcount\SectionNumber +\newcount\ChapterNumber +\newcount\NumberSectionLbl \NumberSectionLbl=1 % An indicator; see below. + +\def\NoSections{\NumberSectionLbl=0} % For chapters without sections. + +% The command that creates the format for chapter titles: +\outer\def\Title #1/#2\par{\ChapterNumber=#1 + {\parindent0pt + \ifnum\ChapterNumber>0 {\NumFont\the\ChapterNumber}\medskip\fi + \pretolerance1000 \TitleFonts \righthyphenmin=50 + \raggedright \baselineskip2.75ex #2\par} + \NameofChapter={\tensl#2}\StartAnew=1 \SectionNumber=0 + \SectionLabel={}\mark{}\vskip\BelowTitleSkip\relax + \noindent\ignorespaces}% _% +% The command that follows does several things. It tests the current +% position on the page by comparing `\pagetotal' and a reduced value of +% `\pagegoal'. If there is enough space available to start a new section on +% the current page, the section begins there (after a vertical skip); +% otherwise, the section begins on the next page. The command also defines +% what is to go in the `token lists' called `\LMargStuff' and `\RMargStuff' +% (see the output routine at the end of this file) and it `marks' the material +% that is to go in the margin. Further, the command typesets the section title +% and section number. +\def\NewSection #1\par{\par \dimen0=\pagegoal \advance\dimen0 by-120pt + \ifdim\pagetotal>\dimen0 + \ifdim\pagetotal<\pagegoal \EndPage + \else \vskip 24pt plus 10pt minus 6pt \fi + \else \vskip 24pt plus 10pt minus 6pt \fi + \LMargStuff={\MarginFont + \iftrue\firstmark\fi} + \RMargStuff={\MarginFont + \iftrue\botmark\fi} + \global\advance\SectionNumber by1 + \leftline{\SubTitleFonts \let\tt\SubTitlett + \the\ChapterNumber.\the\SectionNumber\ \ #1} + \ifnum\NumberSectionLbl=1 + \SectionLabel={\tenrm \quad + \S\:\the\ChapterNumber.\the\SectionNumber} + \else + \SectionLabel={} + \fi + \mark{#1\noexpand\else \the\SectionLabel} + \vskip 12pt plus2pt minus4pt\noindent\ignorespaces}% +% The next command is used in starting subsections: +\def\NewSub #1\par{\par \dimen0=\pagegoal \advance\dimen0 by-40pt + \ifdim\pagetotal>\dimen0 + \ifdim\pagetotal<\pagegoal \EndPage + \else \vskip 12pt plus6pt minus4pt\fi + \else \vskip 12pt plus6pt minus4pt\fi + \leftline{\Bullet\SubSectionTitleFont\ \:#1} + \nobreak\vskip6pt plus1pt minus2pt\noindent\ignorespaces}% +\def\Bullet{\leavevmode\raise.5pt\hbox{\Bigsy\char15 }}% _% +% The next few commands go towards creating the large, `illuminated' +% opening letter that starts each chapter. The commands are crude, +% `one-shot' ones, meant just to serve for this book. But, they may +% help suggest how more general ones may be constructed. + +% The first command, `\Patbox', fills the edges of a box of fixed size +% with nonletter characters from a given font (the height of each character +% is first examined, and only ones of height above a certain value are used). + +\def\Patbox #1#2{\vbox to 44pt{\hsize42pt \lineskip 0pt + \parindent0pt \baselineskip4.75pt \parfillskip0pt \hbadness10000 + \count255=#2\font\temp=#1 \fontdimen2 \temp=0pt \temp \vfil + \def\X{\loop + \ifnum\count255=60 \global\count255=63 \fi % Skip <, /, >. + \ifnum\count255=65 \global\count255=91 \fi % Skip letters. + \ifnum\count255=97 \global\count255=123 \fi % Skip letters. + \ifnum\count255=126 \global\count255=0 \fi % Start over. + \setbox0=\hbox{\char\count255}\ifdim\ht0<3pt + \global\advance\count255 by 1 + \repeat % Use only the tall guys. + \unhbox0 \hskip0pt minus.5pt\global\advance\count255 by 1 } + \hfuzz.2pt + \line{\X\hfil\X\hfil\X\hfil\X\hfil\X\hfil\X\hfil\X\hfil\X} + \line{\X\hfil\X}\line{\X\hfil\X}\line{\X\hfil\X} + \line{\X\hfil\X}\line{\X\hfil\X}\line{\X\hfil\X}\line{\X\hfil\X} + \line{\X\hfil\X\hfil\X\hfil\X\hfil\X\hfil\X\hfil\X\hfil\X}}} + +% Next, the font that will be used for the large letter is chosen: + +\font\BigFancy=cmr7 scaled 5160 + +% Finally, the main command is constructed. Its first argument is the +% font that will be used for the boundary pattern (only 5-point fonts really +% work well, and then too not all of them); the second, the starting +% character position in that font; the third, the first letter of the +% paragraph that is to just open; the fourth and fifth, the first two +% words of that paragraph (spaces are used to `delimit' these arguments; +% the words will appear in small capitals. + +\def\Fancy #1#2#3#4 #5 {\noindent \hangindent46pt \hangafter-4 + \llap{\vbox to0pt{\vss + \hbox{\Patbox{#1}{#2}\kern-42pt + \vbox to44pt{\hsize42pt\vfil + \vskip3pt\centerline{\hskip2pt\BigFancy #3}\vfil + }}\vskip-3\baselineskip}\hskip4pt}{\Smallcaps #4\ #5\ }} + +% FOR EXAMPLE: +% `\Fancy{cmbsy5}{12} Let us begin with a bang.' +% This will cause a large `L' to appear, surrounded by the taller characters +% of the font cmbsy5, starting with character number 12; the first two +% words will also appear capitalized. + +%---------------------------------------------------------------------------_% +%%% IN THE MARGINS: + +\def\TopofRMarg #1{\vtop{\hsize .75in \parindent0pt \parskip0pt + \rightskip0pt \leftskip0pt % Just for protection. + \line{\vrule width1pt \hfil + \dimen0=\hsize \advance\dimen0 by-1pt \dimen1=10pt + \vtop to\dimen1{\hsize\dimen0 \rightline{\PnoFont \Folio}\vfil}} + \Raggedleft \pretolerance10000 \lefthyphenmin=50 \hbadness10000 + \vrule height18pt width0pt #1\baselineskip2.7ex}}% +\def\TopofLMarg #1{\vtop{\hsize .75in \parindent0pt \parskip0pt + \rightskip0pt \leftskip0pt % Just for protection. + \line{\dimen0=\hsize \advance\dimen0 by-1pt \dimen1=10pt + \vtop to\dimen1{\hsize\dimen0 + \leftline{\PnoFont \Folio}\vfil}\hfil \vrule width1pt} + \Raggedright \pretolerance10000 \lefthyphenmin=50 \hbadness10000 + \vrule height18pt width0pt #1\baselineskip2.7ex}} + +%---------------------------------------------------------------------------- +%%% PAGE NUMBERING: + +\countdef\RealPno=1 % To be used as the `real' page number for this book. + \RealPno=1 % Default starting value +\def\Folio{\ifnum\RealPno<0 \romannumeral-\RealPno \else \number\RealPno \fi} + +%---------------------------------------------------------------------------- +%%% OUTPUT ROUTINE: + +\newtoks\LMargStuff +\newtoks\RMargStuff +\newdimen\Llmargspace \Llmargspace=.5in +\newdimen\Rrmargspace \Rrmargspace=.5in +\newdimen\Lhoffset \Lhoffset=.75in +\newdimen\Rhoffset \Rhoffset=0in + +\def\MTBEoutput {\ifodd\RealPno \hoffset\Rhoffset \else \hoffset\Lhoffset \fi + \ifnum\StartAnew=1 + \headline={\hfil} + \footline={\hss\SmallPnoFont\Folio\hss} + \else + \footline={\hfil} + \ifodd\RealPno + \headline={\hfil \the\NameofChapter\expandafter\iffalse\botmark\fi + \rlap{\hskip\Rrmargspace\TopofRMarg{\the\RMargStuff}}} + \else + \headline={\llap{\TopofLMarg{\the\LMargStuff}\hskip\Llmargspace + }\the\NameofChapter\hfil} + \fi + \fi + \plainoutput \Advancepageno \global\StartAnew=0 }% _% +\def\UseMTBEoutput{% + \gdef\Advancepageno{\ifnum\RealPno<0 \global\advance\RealPno by -1 + \else\global\advance\RealPno by1 \fi } + \gdef\makefootline{\baselineskip36pt \line{\the\footline}} + \gdef\makeheadline{\vbox to 0pt{\vskip-.5in + \line{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip} + \output={\MTBEoutput}} + +%---------------------------------------------------------------------------- +%%% PARAGRAPH AND PAGE LAYOUT: + +\newdimen\indsize \indsize23pt +\parindent\indsize + +\widowpenalty300 \clubpenalty300 + +\newdimen\StdHsize \StdHsize=4.75 in +\newdimen\StdVsize \StdVsize=7in +\hsize\StdHsize \vsize\StdVsize + +%---------------------------------------------------------------------------- +\endinput |