summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx')
-rw-r--r--Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx1153
1 files changed, 0 insertions, 1153 deletions
diff --git a/Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx b/Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx
deleted file mode 100644
index 58c5ac76808..00000000000
--- a/Master/texmf-dist/source/plain/pdcmac/pdcsty.dtx
+++ /dev/null
@@ -1,1153 +0,0 @@
-% pdcsty -- documentation and source code for several style files -*-tex-*-
-
-%%%@TeX-document-file {
-%%% title = "Damian's random style files",
-%%% filename = "$texmf/doc/plain/pdcmac/pdcsty.dtx",
-%%% version = "$Revision: 1.2 $",
-%%% package = "pdcmac 1.0",
-%%% date = "$Date: 1995/03/30 16:12:17 $",
-%%% author = "P. Damian Cugley",
-%%% email = "damian.cugley@comlab.ox.ac.uk",
-%%% address = "Oxford University Computing Laboratory,"
-%%% Parks Road, Oxford OX1 3QD, UK",
-%%% abstract = "This document describes and is the source code for
-%%% the TeX style files pdccmdoc.tex, ma55doc.tex,
-%%% etc. and definitioon files pdcdoc1.tex and pdclft1.tex.
-%%% Running plain TeX on this file produces both the
-%%% definitions files and the printed documentation.",
-%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley",
-%%% copying = "This program is free software; you can redistribute
-%%% it and/or modify it under the terms of the GNU
-%%% General Public License as published by the Free
-%%% Software Foundation; either version 2 of the License,
-%%% or (at your option) any later version.",
-%%% notice = "This program is distributed in the hope that it will
-%%% be useful, but WITHOUT ANY WARRANTY; without even the
-%%% implied warranty of MERCHANTABILITY or FITNESS FOR A
-%%% PARTICULAR PURPOSE. See the GNU General Public
-%%% License for more details.",
-%%% notice = "You should have received a copy of the GNU General
-%%% Public License along with this program; if not, write
-%%% to the Free Software Foundation, Inc., 675 Mass Ave,
-%%% Cambridge, MA 02139, USA.",
-%%% codetable = "USASCII",
-%%% dependencies = "pdccode2.tex"
-%%%}
-
-
-%{{{ pdcsty.dtx
-%{{{ preamble
-
-\input pdccode2
-\rcs$Id: pdcsty.dtx,v 1.2 1995/03/30 16:12:17 pdc Exp $\endrcs
-
-\everycode{\tt \baselineskip=0.8\baselineskip \lineskiplimit=0pt }
-\newcount\lineno
-\everycodeline{\llap{$ \global\advance\lineno1
- \scriptstyle\the\lineno $\enspace}}
-
-
-\codefile{cmX}{pdccmlft.tex} \codefile{cmT}{pdccmdoc.tex}
-\codefile{maX}{ma55lft.tex} \codefile{maT}{ma55doc.tex}
-\codefile{psX}{pdcpslft.tex} \codefile{psT}{pdcpsdoc.tex}
-\codefile{X}{pdclft.def} \codefile{T}{pdcdoc.def}
-
-\def\maonly{\global\maXtrue \global\maTtrue
- \global\cmXfalse \global\cmTfalse
- \global\psXfalse \global\psTfalse
- \global\Xfalse \global\Tfalse
- \banner{Malvern}}
-\def\cmonly{\global\maXfalse \global\maTfalse
- \global\cmXtrue \global\cmTtrue
- \global\psXfalse \global\psTfalse
- \global\Xfalse \global\Tfalse
- \banner{Computer Modern}}
-\def\psonly{\global\maXfalse \global\maTfalse
- \global\cmXfalse \global\cmTfalse
- \global\psXtrue \global\psTtrue
- \global\Xfalse \global\Tfalse
- \banner{PostScript fonts}}
-
-\def\styonly {\global\maXtrue \global\maTtrue
- \global\cmXtrue \global\cmTtrue
- \global\psXtrue \global\psTtrue
- \global\Xfalse \global\Tfalse
- \banner{Style files}}
-\def\Tstyonly{\global\maXfalse \global\maTtrue
- \global\cmXfalse \global\cmTtrue
- \global\psXfalse \global\psTtrue
- \global\Xfalse \global\Tfalse
- \banner{Doc style files}}
-\def\Xstyonly{\global\maXtrue \global\maTfalse
- \global\cmXtrue \global\cmTfalse
- \global\psXtrue \global\psTfalse
- \global\Xfalse \global\Tfalse
- \banner{Lft style files}}
-
-\def\Tonly {\global\maXfalse \global\maTfalse
- \global\cmXfalse \global\cmTfalse
- \global\psXfalse \global\psTfalse
- \global\Xfalse \global\Ttrue
- \banner{Sectioning macros for Docs}}
-\def\Xonly {\global\maXfalse \global\maTfalse
- \global\cmXfalse \global\cmTfalse
- \global\psXfalse \global\psTfalse
- \global\Xtrue \global\Tfalse
- \banner{Sectioning macros for Lfts}}
-
-\def\banner#1{
- \par
- \line{%
- \vrule height 1ex width 0.2ex
- \leaders\vrule height 1ex depth -0.8ex \hskip2em
- \enspace{\it \strut #1\/}\enspace
- \leaders\vrule height 1ex depth -0.8ex \hfil
- }
-}
-
-\def\onlyone#1{
- \allfilesfalse \global\csname#1true\endcsname
- \banner{{\tt\csname filename#1\endcsname}}
-}
-\def\onlytwo#1#2{
- \allfilesfalse \global\csname#1true\endcsname
- \global\csname#2true\endcsname
- \banner{{\tt\csname filename#1\endcsname},
- {\tt\csname filename#2\endcsname}}
-}
-
-\def\common{
- \par
- \allfilesfalse \global\Xtrue \global\Ttrue
- \closebanner
-}
-
-\def\closebanner{
- \line{%
- \vrule height 1.8ex depth -0.5ex width 0.2ex
- \leaders\vrule height 0.7ex depth -0.5ex \hfil
- }
-}
-
-
-
-%}}} preamble
-%{{{ introduction
-
-\null\vskip2\baselineskip\hrule\bigskip
-\leftline{Style files for the pdc- macros \fileversion\space(\filedate)}
-\bigskip\hrule\bigskip
-\headline{\hfil\global\headline={\hfil
- \sevenbf Style files for the pdc- macros
- \fileversion\space(\filedate)}}
-
-\section{Introduction}
-
-\subsec{About the style files}
-
- This document describes a family of plain \TeX\ style files for
- typesetting documents which are short enough not to need any
- fancy indexing or cross-references, but long enough to want
- numbered section headings and a table of contents.
-
- A {\it style file} in this context means a definitions file that
- specifies the formatting of for a document: layout, choice of
- fonts, instructions for how to format lists, and so on. The
- style files use the macros defined in other definition files to
- supply most of the features they need. The document only needs
- one `|\input|' command to set up most of the commands it needs.
-
-\subsec{No cross-references}
-
- Omitting cross-references is important because it means we can
- avoid having documents that have to be run through \TeX\ more
- than once (the first time to generate a raw index or
- cross-reference file, the second to incorporate the references
- into the document). This greatly simplifies the macros.
-
- So that the table of contents may be generated automatically
- without requiring a second pass, it is printed {\it last\/} in
- the file. It follows that the table of contents belongs at the
- end of the front matter of the document (on pages numbered in
- roman numerals), immediately before page~1. It is easiest if
- all the front matter is printed last. After the end of the
- document proper, put the front matter enclosed in |\frontmatter|
- \dots |\endfrontmatter|; this automatically switches to page
- numbering in roman numerals, and puts the table of contents at
- the end.
-
- The file |pdccmdoc.tex| does documents using the Computer Modern
- fonts. There is a variant called |pdccmlft.tex| intended for
- `leaflets' that are even shorter than the `docs' produced with
- |pdccmdoc.tex|. Leaflets have no front matter section, no table
- of contents, and section headings are much less prominent---they
- should only be a few pages long at most. The Malvern versions
- are called |ma55doc.tex| and |ma55lft.tex|.
-
-\subsec{About this document}
-
- The file that generates this printed documentation, |pdcsty.dtx|
- is a `documented \TeX' file. As well as briefly describing what
- the macros are for and how they work, it includes a complete
- listing of their definitions. The text of the definitions is
- also written to files in the current directory, generating fresh
- copies of the style files. This way this documentation and the
- files it describes are guaranteed to match.
-
- The lines of all definitions are numbered continuously, even
- though only a subset of all the definition lines will go in each
- file.
-
-%}}} introduction
-%{{{ starting up
-
-\section{Starting up}
-
-\subsec{File identification}
-
- Nowadays, macro files start with some comments identifying the
- file, for the benefit of people wondering what the file is for.
- The macro file otherwise has no other comments, in the hope that
- this will let \TeX\ read it in faster. (It should be possible
- for the identification comments to go {\it after} an |\endinput|
- at the close of the file, but the convention is to have them at
- the start.)
-
- The following segment is common to the style files and the
- definiton files.
-
-\code
- \|\% \filename~\fileversion~\filedate~-- macros for short documents
-\smallbreak
- |%%%@TeX-definition-file {
- \|\%\%\% filename~~~~~~~= "\filename",
- \|\%\%\% version~~~~~~~~= "\fileversion",
- \|\%\%\% date~~~~~~~~~~~= "\filedate",
- |%%% package = "pdcmac 1.0",
- |%%% author = "P. Damian Cugley",
- |%%% email = "damian.cugley@comlab.ox.ac.uk",
- |%%% address = "Oxford University Computing Laboratory,
- |%%% Parks Road, Oxford OX1 3QD, UK",
- |%%% codetable = "USASCII",
- |%%% keywords = "TeX, plain TeX, style file",
- |%%% supported = "Maybe",
-\cmonly |%%% abstract = "Top-level macro file for documents set in
- |%%% Computer Modern fonts.
-\maonly |%%% abstract = "Top-level macro file for documents set in
- |%%% Malvern 55, 56 and 75 fonts.
-\onlytwo{X}{T}
- |%%% abstract = "Sectioning macros for style files.
-\allfilestrue\closebanner
- |%%% This macro file was generated by running plain
- \|\%\%\%~~~~~~~~~~~~~~~~~~~TeX on \jobname.dtx",
- |%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley",
- |%%% copying = "DO NOT DISTRIBUTE THIS FILE.
- \|\%\%\%~~~~~~~~~~~~~~~~~~~Distribute \jobname.dtx only as part of the
- |%%% package it came in.",
-\onlytwo{X}{T}
- |%%% dependencies = ""
-\cmonly |%%% dependencies = "pdcfmt2.tex, pdcfsel.tex, pdchyex.tex,
- |%%% pdcimth.tex, pdccmsub.tex, pdcmigr.tex,
-\maonly |%%% dependencies = "maamac.tex, pdcfmt2.tex, pdcfsel.tex,
- |%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex,
-\psonly |%%% dependencies = "pdcadobe.tex, pdcfmt2.tex, pdcfsel.tex,
- |%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex,
-\Tstyonly
- |%%% pdcoput5.tex, pdcdoc.def",
-\Xstyonly
- |%%% pdcoput5.tex, pdclft.def",
-\allfilestrue\closebanner
- |%%%}
- |
- \|\\message\{\fileversion~<\fileauthor~\filedate>\}
- |
-\endcode
-
- This is followed immediately by a list of the macro files
- included by this format:
-\code
-\styonly
- |\input pdcimth
- |\input pdcmigr
- |\input pdcfmt2
- |\input pdchyex
- |\input pdcoput5
- |\input pdcfsel
-\cmonly
- |\input pdccmsub
-\maonly
- |\input maamac
-\psonly
- |\input pdcadobe
-\common
-\endcode
-
-
-%}}} starting up
-%{{{ layout
-
-\section{Layout}
-
-\subsec{Paper sizes}
-
- The section defining the paper size is at the very top of the
- file to make it easy for someone adapting the macros to American
- Letter size paper to find them.
-
- Nevertheless, we set the top and bottom margins to be large
- enough that even if it is printed on American paper, nothing
- important will be cut off. This requires decent-sized margins
- at the top and bottom of pages (since the end of the page that
- will be lost depends on whether the printer driver has its real
- origin at top-left or bottom-left). The edge of the printing
- area is guessed at as being $7\,{\rm mm}$ from the edge of the
- paper.
-\code
- |\topmg=297mm \advance\topmg-11in \advance\topmg7mm
- |\botmg=\topmg
- |\advance\topmg\ht\strutbox \advance\topmg\headlineskip
- |\ifdim \topmg<20mm \topmg=20mm \fi
- |\ifdim \botmg<27mm \botmg=27mm \fi
-\smallbreak
- |\setpaper{210mm}{297mm}
-\endcode
-
- The document has `tab-index' headings, that is, headings go in a
- wide left margin to the left of the body text. The underlying
- structure is a grid is 4~cells wide, with the text spanning
- across the rightmost 3~cells. Definitions in the fonts section
- below specify that the text will be set ragged-right.
-\code
- |\setnkgrid{4}{3}
- |\colrule=0pt
- |\leftmargin=\gridwd \advance\leftmargin\colsep
-\endcode
- The output routine's |\leftbox| is set at the start of each page
- to make space for the left margin.
-\code
- |\everypage={\ifdim\leftmargin>0pt
- | \setbox\leftbox=\hbox to \gridwd{}\fi}
-\endcode
-
- While we're here, we customize some of the environments supplied
- by pdcFMT2:
-\code
- |\everyfootnote={\notefonts}
- |\everylinenum={\smallfonts}
-\maonly
- |\def\footnotetextmark#1{{\rmsy#1}}
- |\def\footnotenotemark#1{{\rmsy#1}}
-\common
- |\everylinenum={\smallfonts}
- |\everytag={\bf}
-\endcode
-
-%}}} layout
-%{{{ fonts
-\section{Fonts}
-
- This section describes the fonts available in the document.
-
- We introduce extra nicknames |\bi| for bold italic (used for the
- first mention of new techical terms), |\mf| for the METAFONT
- logo, |\mfi| for the METAFONT logo in italic (Something of an
- affectation) and |\ttb| for an `emphasized' typewriter (usually
- it is best if this is slanted, not bold).
-\code
-\styonly
- |\autoloadfonts
-\endcode
-
- The style files differ because of encoding schemes more than
- because of the particular fonts. For example, a style for Times
- Roman will work for Palatino too,if we change the names of the
- fonts used. To do this, a macro |\basefontname| may be defined
- before the style file is read in; if it isn't defined it is
- given a default value.
-
-%{{{ cmr
-
-\subsec{Fonts for Computer Modern documents}
-\cmonly
- We use Computer Modern Sans Serif for the headings in CM
- documents. I have not put much effort into making formulas
- work in headings.
-\code
- |\def\STYheadingT{%
- | \m{rm}{cmss}\m{mi}{cmmi}\m{sy}{cmsy}%
- | \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}%
- |}
-\smallbreak
- |\font\headingrm=cmss17 \font\headingit=cmssi17
- |\fontset{subheading}\STYheadingT{10 scaled 1200}{14pt}
- | {small}{tiny}
- |\fontset{heading}\STYheadingT{10 scaled 1728}{20pt}
- | {subheading}{small}
-\endcode
-
- We use Computer Modern for body text.
-\code
- |\def\STYbodyT{\m{rm}{cmr}\m{it}{cmti}%
- | \m{bf}{cmbx}\@\f{bi}{cmbxti10}%
- | \m{mi}{cmmi}\m{sy}{cmsy}%
- | \@\f{mf}{logo10}\@\f{mfi}{logosl10}%
- | \f{tt}{cmtt}\@\f{ttb}{cmsltt10}%
- |}
-\smallbreak
- |\font\tinytt=cmtt8 at 7pt
- |\font\bodysy=cmsy10 at 12pt
-\endcode
-
-%}}} cmr
-%{{{ malvern
-
-\subsec{Fonts for Malvern documents}
-\maonly
-
- Headings are in Malvern~75. The maths fonts are scaled for
- expediency; I~do not make much effort to make formulas work in
- headings.
-\code
- |\def\STYheadingT{%
- | \m{rm}{ma75a}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}%
- | \f{it}{ma76a}\@\f{tt}{cmtt10}\@\f{mf}{logo10}\@\f{mfi}{logosl10}%
- |}
-\smallbreak
- |\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading}
- |\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading}
-\endcode
-
-
- We use Malvern~55 for body text. The supplementary font with
- encoding~B is added, with font nickname |\rmsy|.
-\code
- |\newfam\rmsyfam
-\smallbreak
- |\def\STYbodyT{%
- | \m{rm}{ma55a}\f{rmsy}{ma55b}\m{it}{ma56a}%
- | \m{bf}{ma75a}\f{bi}{ma76a}%
- | \m{mi}{cmmi}\m{sy}{cmsy}%
- | \@\f{mf}{logo10}\@\f{mfi}{logosl10}%
- | \f{tt}{cmtt}\f{tb}{cmsltt}%
- |}
-\endcode
-% The main problem with defining the body fonts is that the
-% $x$-height of Malvern is larger then Computer Modern. This makes
-% in necessary to load the maths fonts at a larger size to match.
-% (A better solution might be to make a parameter file for
-% Computer Modern so that maths fonts may be generated with
-% compatible proportions.)
-%\code
-% |\loadfont\bodytt{cmtt10 scaled \magstep2}
-% |\loadfont\notett{cmtt10 scaled \magstep1}
-% |\loadfont\smalltt{cmtt10 scaled \magstephalf}
-% |\loadfont\bodytb{cmsltt10 scaled \magstep2}
-% |\loadfont\smalltb{cmsltt10 scaled \magstep1}
-% |\loadfont\notetb{cmsltt10 scaled \magstephalf}
-%\endcode
- There is no point using |\loadfont| on the maths symbol fonts,
- since they have to be loaded anyway the first time |\bodyfonts|
- is called.
-\code
- |\font\bodymi=cmmi10 scaled \magstep2
- |\font\bodysy=cmsy10 scaled \magstep2
- |\font\notemi=cmmi10 scaled \magstep1
- |\font\notesy=cmsy10 scaled \magstep1
- |\font\smallmi=cmmi10 scaled \magstephalf
- |\font\smallsy=cmsy10 scaled \magstephalf
-\endcode
-%}}} malvern
-%{{{ PostScript
-
-\subsec{Fonts for Times documents}
-\psonly
- The big problem with PostScript fonts is what they are called;
- I~shall be assuming that Fontname~$1.6$\footnote*{Karl Berry,
- {\it File Names for \TeX\ Fonts} $1.6$ ({\tt
- ftp:\penalty\exhyphenpenalty //ftp.umb.edu\slash pub\slash
- tex\slash fontname/}).} applies: fonts with |afm2tfm|'s
- variation on the \TeX\ Text encoding are called |ptmr| and fonts
- with Adobe's StandardRoman encoding are called |ptmr0| (rather
- than |rptmr|).
-
- This macro attempts to make it possible to guess the standard
- name for the italic variant of a given font.
- |\KBcanonical{|\<tentative font name>|}| takes a font name which
- is formed from an upright name optionally followed by `|i|'
- representing an italic variation. It returns the corresponding
- standard name. For example, |ptmri| is left unchanged, but
- |phvri| is changed to |phvro| and |phvrrni| is changed to
- |phvron|.
-\code
- |\def\KBcanonical#1{%
- | \expcs\ifx{KB#1}\relax #1\else\csname KB#1\endcsname \fi
- |}
-\smallbreak
- |\ifx\KBadobe\UNDEFINED \def\KBadobe#1{\KBcanonical{#10}} \fi
- |\def\KBit#1{\KBcanonical{#1i}}
- |\def\KBbi#1{\KBbf{#1i}}
- |\def\KBbf#1{\expandafter\KBbfx#1.}
- |\def\KBbfx#1#2#3#4#5.{\KBcanonical{#1#2#3b#5}}
-\smallbreak
- |\def\KBpagbr{pagdr} \def\KBpagbri{pagdro}
- |\def\KBpbkbr{pbkdr} \def\KBpbkbri{pbkdri}
- |\def\KBpagri{pagro} \def\KBpagbi{pagbo}
- |\def\KBphvri{phvro} \def\KBphvbi{phvbo}
- |\def\KBpcrri{pcrro} \def\KBpcrbi{pcrbo}
- |\def\KBphvrrni{phvron} \def\KBphvbrni{phvbon}
- |\def\KBphvrrn0{phvr0n} \def\KBphvbrn0{phvb0n}
- |\def\KBphvrrni0{phvro0n} \def\KBphvbrni0{phvbo0n}
-\endcode
-
- Headings are in Helvetica. The maths fonts are scaled for
- expediency; I~do not make much effort to make formulas work in
- headings.
-\code
-
- |\ifx\headingfontname\UNDEFINED \def\headingfontname{phvr} \fi
- |\ifx\headingttfontname\UNDEFINED \def\headingttfontname{pcrb} \fi
-\smallbreak
- |\def\STYheadingT{%
- | \@\f{rm}{\headingfontname}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}%
- | \@\f{asy}{psyr}%
- | \@\f{it}{\KBit\headingfontname}%
- | \@\f{tt}{\headingttfontname}\@\f{mf}{logo10}\@\f{mfi}{logosl10}%
- |}
-\smallbreak
- |\loadfont\bodysy{cmsy10 at 12pt}
-\smallbreak
- |\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading}
- |\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading}
-\endcode
-
-
- We use Times Roman by default for body text, and Courier for
- typewriter text. Adobe's Symbol font is included, with font
- nickname |\asy|; a family called |\asyfam| has already been
- created by |pdcadobe.tex|.
-\code
- |\ifx\bodyfontname\UNDEFINED \def\bodyfontname{ptmr} \fi
- |\ifx\bodyttfontname\UNDEFINED \def\bodyttfontname{pcrr} \fi
-\smallbreak
- |\def\STYbodyT{%
- | \@\m{rm}{\bodyfontname}\@\m{it}{\KBit\bodyfontname}%
- | \@\m{bf}{\KBbf\bodyfontname}\@\f{bi}{\KBbi\bodyfontname}%
- | \@\m{asy}{psyr}\m{mi}{cmmi}\m{sy}{cmsy}%
- | \@\f{mf}{logo10}\@\f{mfi}{logosl10}%
- | \@\f{tt}{\bodyttfontname}\@\f{tb}{\KBit\bodyttfontname}%
- |}
-\endcode
-
-
- Finally the alphabet-switching commands defined for Malvern
- fonts are given dummy definitions.
-\code
- |\let\sc=\relax \let\mc=\relax \let\csc=\relax
-\endcode
-
-%}}} malvern
-
-\common
-\subsec{Definitions common to all formats}
-
-\code
-\styonly
- |\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny}
- |\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny}
- |\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny}
- |\fontset{body}\STYbodyT{12}{14pt}{small}{tiny}
-\endcode
-
- The text is set left-justified (ragged-right). To make this
- work, the fontdimens that control word spacing are set to force
- interword spaces to all be the same width.
-\code
- |\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt}
- |\rightskip=0pt plus 2em \tolerance=1000
-\smallbreak
- |\bodyfonts
- |{\tt \hyphenchar\font=-1 }
-\common
-\endcode
-
-%}}} fonts
-%{{{ minimal section headings
-\section{Simple sectioning}
-
-\onlyone{X}
- A `leaflet' is divided into short sections, which may contain
- subsections (but usually will not). There may well be more than
- one section on a page.
-
- The section number is held in two count registers, and printed
- (enclosed in |\n{|\dots|}|) with the macro |\thesecno|:
-
-\code
- |\newcount\secno \newcount\subsecno
-\smallbreak
- |\def\thesecno{%
- | \n{%
- | \number\secno
- | \ifnum\subsecno>0
- | .\number\subsecno
- | \fi
- | }%
- |}
-\endcode
-
- The section and subsection commands are implemented
- straightforwardly with macros from |pdcfmt2.tex|, since there is
- no need for marks or fiddling with table-of-contents files.
-\code
- |\def\section{
- | \global\advance\secno1 \global\subsecno0
- | \doheading\medskipamount{\subheadingfonts\thesecno\enspace}{}
- |}
-\smallbreak
- |\def\subsec{
- | \global\advance\subsecno1
- | \doheading\smallskipamount{\bodyfonts\thesecno\enspace}{}
- |}
-\endcode
-
- The page header includes only the title of the file, which the
- user sets with the command |\majorheadline{|\<text>|}|
-\code
- |\newtoks\majorheadline
- |\expandafter\majorheadline
- | \expandafter{\expandafter\uppercase\expandafter{\jobname}}
-\endcode
- All those |\expandafter|s are to get the initial value in upper
- case.
-
- The flag |noheadline| signals that the headline is to be omitted
- on this page (e.g., the title page). The |twosided| flag is set
- for two-sided binding.
-\code
- |\newif\ifnoheadline \newif\iftwosided
-\smallbreak
- |\headline{%
- | \ifnoheadline
- | \hfil
- | \else\iftwosided
- | \ifodd\pageno
- | \hfil \the\majorheadline \quad{\bf\folio}%
- | \else
- | {\bf\folio}\quad \the\majorheadline\hfil
- | \fi
- | \else
- | \hfil \the\majorheadline \quad{\bf\folio}%
- | \fi\fi
- |}
-\smallbreak
- |\footline{%
- | \ifnoheadline
- | \global\noheadlinefalse
- | \hfil{\bf\folio}\hfil
- | \else
- | \hfil
- | \fi
- |}
-\endcode
-
-%}}} minimal section headings
-%{{{ sectioning
-\section{Sectioning in PDCCMDOC documents}
-
-\onlyone{T}
- Now a document is divided into {\it sections}, which are further
- divided into so-called {\it subsecs} and {\it subsubsecs}.
- (Division into subsubsecs should be done sparingly.)
-
- The sections may be grouped into {\it parts}---or, to look at it
- another way, parts are a larger division of the document than
- sections, but sections are not numbered within part numbers.
- Each |\part| command should be almost immediately followed by
- |\section|.
-
-\subsec{Macros for section numbers}
-
- The part and section numbers are kept in \TeX\ number registers,
- with corresponding `|\the|-' macros to print the value
- formatted.
-\code
- |\newcount\partno
-\smallbreak
- |\def\thepartno{%
- | \ifcase\partno O\or I\or II\or III\or IV\or V\else
- | \expandafter\uppercase\expandafter{\romannumeral\partno}%
- | \fi
- |}
-\endcode
- Formatted section and subsec numbers are generated by one macro
- |\thesecno|. It automatically omits (sub)subsec numbers if they
- are zero. The whole number is enclosed in |\n{|\dots|}| so that
- the formatting of numbers may be customized.
-\code
- |\newcount\secno \newcount\subsecno \newcount\subsubsecno
-\smallbreak
- |\def\thesecno{%
- | \n{%
- | \number\secno
- | \ifnum\subsecno>0
- | .\number\subsecno
- | \ifnum\subsubsecno>0
- | .\number\subsubsecno
- | \fi
- | \fi
- | }%
- |}
-\endcode
-
-\subsec{Parts}
-
- The |\part| macro takes one argument, the title. It sets a
- token register |\majorheadline| which is printed on the left
- page of two-sided documents.
-
- The |\majorheadline{|\<text>|}| command may be used immediately
- after a |\part| command if the part title is not suitable to go
- in the headline. This should also be used at the start of the
- document to the title of the document, if division into parts is
- not used.
-\code
- |\newtoks\majorheadline
- |\expandafter\majorheadline
- | \expandafter{\expandafter\uppercase\expandafter{\jobname}}
-\smallbreak
- |\def\part#1{%
- | \global\advance\partno1
- | \newpageheading{2\baselineskip}{\headingfonts}
- | {}{\thepartno.\quad#1}
- | \TOCwrite\TOCentrypart{\thepartno}{#1}
- |}
-\endcode
-
-\subsec{Section headings}
-
- Section headings will start on a new page if the current page is
- almost finished. The section heading is set across the full
- width of the page, including the margin usually used for
- tab-indexed headings.
-
- To force the next section to start a new page, do
- |\sectionpenalty-10000| immediately before it.
-\code
- |\newcount\sectionpenalty
-\smallbreak
- |\def\sectionheading#1{
- | \par
- | \vskip 0pt plus 0.3\vsize
- | \penalty\sectionpenalty \sectionpenalty-200
- | \vskip 1\bigskipamount plus -0.3\vsize
- | \begingroup \advance\leftskip-\leftmargin
- | \parskip=0pt \parindent=0pt
- | \hyphenpenalty=10000 \exhyphenpenalty=500
- | \interlinepenalty=100
- | \headingfonts \nointerlineskip
- | \hbox{\hskip-\leftmargin
- | \vrule height 2pt depth 0pt width \leftmargin
- | \vrule height 2pt depth 0pt width \hsize}
-% | \nobreak\medskip
- | #1\par
- | \nobreak\smallskip
- | \endgroup
- | \global\noindenttrue
- |}
-\endcode
- As well as generating a heading, the section macro generates
- marks used for the page headings and a TOC entry. The marks are
- of the form in a way similar to that discussed in Chapter~23 of
- the {\it\TeX book}. More precisely, a mark is placed on either
- side of the section heading of the form
-$$\hbox{\tt\arg{\<rhs>}\arg{\<lhs>}}$$ where \<rhs> is the section
- number that belongs on the right-hand page, reflecting the
- situation at the bottom of the page, whereas \<lhs> is what
- belongs on following left-hand pages.
-\code
- |\newtoks\sectiontoks
- |\newif\ifsecno \secnotrue
-\smallbreak
- |\def\section#1{
- | \ifsecno
- | \global\advance\secno1 \global\subsecno0 \global\subsubsecno0
- | \fi
- | \toks0={#1}
- | \mark{{\the\sectiontoks}{\ifsecno\S\thesecno\space\fi\the\toks0 }}
- | \edef\tmp{\ifsecno\noexpand\S\the\secno\space\fi}
- | \global\sectiontoks\expandafter{\tmp#1}
- | \sectionheading{\ifsecno\thesecno\quad\fi #1}
- | \mark{{\the\sectiontoks}{\the\sectiontoks}}
- | \TOCwrite\TOCentrysection{\ifsecno\thesecno\fi}{#1}
- |}
-\endcode
- Subsecs and subsubsecs use the |\doheading| macro defined in
- |pdcfmt.tex|. They do not appear in page headings, but may
- appear in the TOC.
-\code
- |\def\subsec#1{%
- | \ifsecno \global\advance\subsecno1 \global\subsubsecno0 \fi
- | \doheading\medskipamount{\subheadingfonts}{}
- | {\ifsecno\thesecno\quad\fi#1}
- | \TOCwrite\TOCentrysubsec{\ifsecno\thesecno\fi}{#1}
- |}
-\smallbreak
- |\def\subsubsec#1{%
- | \ifsecno \global\advance\subsubsecno+1 \fi
- | \doheading\smallskipamount{\rm}{}{\ifsecno\thesecno\quad\fi#1}
- | \TOCwrite\TOCentrysubsubsec{\ifsecno\thesecno\fi}{#1}
- |}
-\endcode
-
- The headline and footline are controlled by two flags. The
- command |\noheadlinetrue| suppresses the headline for this page
- (e.g., a title page). The |twosided| flag says whether the
- document should be formatted for two-sided printing.
-\code
- |\newif\ifnoheadline
- |\newif\iftwosided
-\smallbreak
- |\footline={%
- | \ifnoheadline
- | \global\noheadlinefalse
- | \hfil\bodyfonts\n\folio\hfil
- | \else
- | \hfil
- | \fi
- |}
-\endcode
- The headline varies according to whether it is a one-sided page,
- a left-hand page or a right-hand page. On a one-sided page, it
- has the major headline (part or document title) at the left, and
- the section title of the {\it first} section on the page on the
- right with the folio. On a left-hand page, there is the folio
- and the major headline, and on a right-hand page there is the
- section title for the {\it last} section on the page, and the
- folio.
-\code
- |\headline={%
- | \ifnoheadline
- | \hfil
- | \else
- | \bodyfonts
- | \iftwosided
- | \ifodd\pageno
- | \hfil
- | \expandafter\firstoftwo\botmark\quad
- | {\bf\n\folio}%
- | \else
- | {\bf\n\folio}\quad
- | \the\majorheadline
- | \hfil
- | \fi
- | \else
- | \the\majorheadline
- | \hfil
- | \expandafter\secondoftwo\topmark\quad
- | {\bf\n\folio}%
- | \fi
- | \fi
- |}
-\smallbreak
- |\def\firstoftwo#1#2{#1}
- |\def\secondoftwo#1{}
-\endcode
-%}}} sectioning
-%{{{ table of contents
-\section{Table of contents intrinsics}
-
- This section defines the macros used to generate a table of
- contents. The entries are written to a file \<jobname>|.toc| in
- the current directory. At the end of the manuscript this files
- is closed and then read to generate the table of contents.
-
- Macros special to the TOC-generating section have names starting
- with `|\TOC|-'.
-\code
- |\newwrite\TOCfile
- |\openout\TOCfile=\jobname.toc
-\endcode
-
- Entries in the TOC file are of the form
-$$\hbox{\tt\cs{TOCentry}\<foo>\arg{\<secno>}\arg{\<title>}\arg{\<folio>}}$$
- where |\TOCentry|\<foo> is a csname, \<secno> is some
- automatically-generated section number like `|1.2|', \<title> is
- the section title as supplied by the user, and \<folio> is the
- folio for this page, in arabic or lower-case roman numeral form.
-
- They are generated with calls to |\TOCwrite| like this
-$$\hbox{\tt\cs{TOCwrite}\cs{TOCentry}\<foo>\arg{\<secno>}\arg{\<title>}}$$
- The \<secno> is evaluated when |\TOCwrite| is called, whereas
- the \<title> is carefully written without being expanded so that
- its expansion happens when the TOC file is read in. The
- \<folio> is automatically appended when it is written.
-\code
- |\def\TOCwrite#1#2#3{%
- | \begingroup\def\n{\string\n}
- | \def\tmp{#3}%
- | \edef\tmp{\string#1{#2}{\expandafter\TOCtrim\meaning\tmp}}
- | \write\TOCfile\expandafter{\tmp{\folio}}\endgroup
- |}
-\smallbreak
- |\def\TOCtrim#1:->{}
-\endcode
-
-
- Now we define all the `|\TOCentry|-' macros.
-\code
- |\def\TOCentrypart#1#2#3{
- | \smallskip
- | \dimen0=\hsize \advance\dimen0\leftmargin
- | \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil}
- | \smallskip
- |}
-\smallbreak
- |\def\TOCentrysection#1#2#3{
- | \smallskip\noindent\llap{#1\kern1pc}%
- | {\bf \ignorespaces #2\quad\rm \n{#3}}\par
- |}
-\smallbreak
- |\def\TOCentrysubsec#1#2#3{
- | \ifvmode \noindent \else \quad \fi
- | {#1}~{\ignorespaces #2}
- |}
-\smallbreak
- |\def\TOCentrysubsubsec#1#2#3{}
-\endcode
-%}}} table of contents
-%{{{ front matter
-\section{Printing the front matter}
-
- The front matter of the document---the title page, preface,
- forword, etc.---must be printed {\it last}, with the table of
- contents at the end of the front matter; this is so that the
- table of contents may be accumulated during the \TeX ing of the
- file.\footnote*{It has a benefit for people reading the document
- with a browser: page~1 of the document is the first page of the
- DVI file, which makes selecting a given page easy, and the table
- of contents is at the very end, so the browsers `go to last
- page' command can be used to find the table of contents
- quickly.}
- The front matter starts with the command |\frontmatter| and may
- contain |\section| commands. Such sections will be unnumbered
- and will not appear in the table of contents.
-
- For a short document, a separate title page is probably
- excessive, and an abstract may be preferable to a preface. In
- this case the first page after |\frontmatter| could have the
- title of the document (with author etc.)\ followed by an
- abstract, any copyright information (or other small print), and
- the contents (generated by |\endfrontmatter|). In other words,
- something like this:
-$$\halign{\indent#\hfil\cr
- |\frontmatter|\cr
- \quad\it commands to print the title, etc.\cr
- \quad|\abstract|\cr
- \qquad\it the text of the abstract\cr
- \quad|\endabstract|\cr
- \quad\it copyright information, etc.\cr
- |\endfrontmatter|\cr
-}$$
- For a longer document, there will be a separate title page and
- perhaps a preface.
-$$\halign{\indent#\hfil\cr
- |\frontmatter|\cr
- \quad|\titlepage|\cr
- \qquad\it commands to print the title, etc.\cr
- \quad|\splittitlepage|\cr
- \qquad\it print copyright information, etc.\cr
- \quad|\endtitlepage|\cr
- \quad|\section{Preface}|\cr
- \qquad\it text of preface, etc.\cr
- |\endfrontmatter|\cr
-}$$
- The macro |\splittitlepage| marks the division between the title
- page (title recto, page~i) and the back of the title page (title
- verso, page~ii), which is where copyright information goes. On
- a one-sided document, the copyright information belongs on the
- title recto, because the title verso will be blank, so
- |\splittitle| instead does |\vfill|.
-
- Setting |\pageno| nagative makes it print in roman numerals.
- Calling |\secnofalse| suppresses section numbering. The first
- page has no headline.
-\code
- |\def\frontmatter{
- | \write\TOCfile{\string\endinput}
- | \write\TOCfile{\folio}
- | \closeout\TOCfile
- | \vfill\supereject
- | \ifvoid\partialpage\else \null\vfill\eject \fi
- | \beginthe{frontmatter}
- | \pageno=-1 \secnofalse \noheadlinetrue
- | \def\TOCwrite##1##2##3{}
- |}
-\endcode
- The front matter is finshed off with the contents list,
- generated by |\endfrontmatter|. This reads the TOC file, which
- was closed at the end of the last page of the body of the
- document.
-\code
- |\def\endfrontmatter{
- | \section{Contents}
- | \input\jobname.toc
- | \vfill\supereject
- | \endthe{frontmatter}
- |}
-\endcode
-
- Here's macros for generating the titlepage---it shoul;d enclose
- commands to generate the title, author and publisher information
- for the document. If it is used, it goes immediately after
- |\frontmatter|, so that the title page is page~i.
-\code
- |\def\titlepage{
- | \vfill\eject
- | \beginthe{titlepage}
- | \noheadlinetrue
- | \def\splittitlepage{
- | \iftwosided \vfill\eject\null\vfill \else \vfill \fi
- | }
- |}
-\smallbreak
- |\def\endtitlepage{
- | \eject
- | \endthe{titlepage}
- |}
-\endcode
-
- This |abstract| environment doesn't do anything fancy.
-\code
- |\def\abstract{
- | \smallskip
- | \beginthe{abstract}
- | \setbox\parbox\hbox to \gridwd{\subheadingfonts Abstract\hfil}
- | \noindenttrue \bodyfonts
- |}
-\smallbreak
- |\def\endabstract{
- | \smallskip
- | \endthe{abstract}
- |}
-\endcode
-%}}} front matter
- This concludes the code that is included only in documents with TOC.
-\common
-
-%{{{ abbreviations
-
-\section{abbrevs}
-
-
- The definitions of |\pt| and |\mm| work only in maths mode.
-\code
- |\def\pt{\,{\rm pt}}
- |\def\mm{\,{\rm mm}}
-\smallbreak
- |\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi META}\-%
- | {\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi FONT}}
- |\def\MSDOS{\leavevmode\hbox{MS-DOS}}
-\endcode
-
-\subsec{Program names with small caps}
-
- Some program names use small capitals in their names. For
- normal fonts there is no point trying to duplicate this, since
- small capitals aren't common to all fonts. But small capitals
- come `for free' with Malvern, so we might as well use them. The
- following definitions apply to Malvern~A fonts.
-\code
-\maonly
- |\def\PS{\csc{PostScript}}
- |\def\La{L\negthinspace\flushtop{\char"C1 }}
-\cmonly
- |\def\PS{PostScript}
-\common
-\endcode
-
-\font\sf=cmss10
- Here's a redefinition of |\TeX|. This adds a spacefactor 1000
- to the end (so that \TeX\ doesn't apply its usual heuristic that
- a full stop following a capoital {\it X} isn't a sentence end).
- It also loosens up the logo, producing `\TeX' rather than the
- usual `T\negthinspace\lower0.5ex\hbox{E}\kern-0.125emX'. This
- design is more forgiving of changes in font (for example, in
- sanserif it makes `{\sf\TeX}' instead of `{\sf
- T\negthinspace\lower0.5ex\hbox{E}\kern-0.125emX}').
-\code
- |\def\TeX{T\kern-0.1em\lower0.5ex\hbox{E}X\spacefactor1000 }
-\endcode
-
- The macro |\dfn{...}| formats a defining instance of a word or
- phrase (usually used the first time a new technical term is
- introduced). When generating an index with a command |\index|,
- this also adds the phrase to the index.
-\code
- |\begingroup\catcode`\|=12 \toks0={\endgroup
- | \def\dfn#1{\ifx\index\UNDEFINED\else\index{#1|INDdfn}\fi{\bi #1}}
- |} \the\toks0
-\endcode
-
- Here's a hack for using email-style emphasis using
- `asterisking'. Text enclosed in matching asterisks is
- emphasized.
-\code
- |\declareactivechar\* \def*#1*{{\it#1\/}}
-\endcode
-
-
-\begingroup\defverbatim\~
- When documenting computer progams it is useful to be able to
- present dialogues between the user and the computer, with the
- user's commands distinguished by a slightly different font.
- Here we define ~\|~\<text>~|~ so that it behaves like
- ~|~\<text>~|~ except that |\ttb| is used instead of |\tt|. In
- maths mode it is still equivalent to |\Vert|.
-\code
- |\def\|{%
- | \relax\ifmmode
- | \Vert
- | \else
- | \begingroup
- | \ttb \setupverbatim
- | \catcode`\|=13 \let|\endgroup
- | \fi
- |}
-\endcode
-\endgroup
-%}}} abbreviations
-%{{{ postamble
-\section{Finally}
-
- The definitions common to all style files are read last, so that
- they can take account of changes to |\baselineskip|.
-\code
-\Tstyonly
- |\input pdcdoc.def
-\Xstyonly
- |\input pdclft.def
-\common
-\endcode
-
- And, at last, a file {\tt\<filename>.cfg} is read, if it exists.
-\code
- |\def\inputifexists#1{%
- | \openin15=#1
- | \ifeof15 \else \input #1 \fi
- | \closein15
- |}
-\styonly
- \|\\inputifexists\{\filenamesanssuffix.cfg\}
-\common
-\endcode
-
-\endcodefile{cmX} \endcodefile{cmT} \endcodefile{maX} \endcodefile{maT}
-\endcodefile{psX} \endcodefile{psT} \endcodefile{X} \endcodefile{T}
-\bye
-%}}} postamble
-%}}} pdccmcode.dtx
-
-%Local variables:
-%fold-folded-p: t
-%fill-prefix: " "
-%End: