summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/zztex/tex/zzdoc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/plain/contrib/zztex/tex/zzdoc.tex')
-rw-r--r--macros/plain/contrib/zztex/tex/zzdoc.tex500
1 files changed, 500 insertions, 0 deletions
diff --git a/macros/plain/contrib/zztex/tex/zzdoc.tex b/macros/plain/contrib/zztex/tex/zzdoc.tex
new file mode 100644
index 0000000000..072436a43a
--- /dev/null
+++ b/macros/plain/contrib/zztex/tex/zzdoc.tex
@@ -0,0 +1,500 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Module: ZzTeX Document Facilities
+%
+% Synopsis:
+%
+% Author: Paul C. Anagnostopoulos
+% Created: 9 September 1989
+%
+% Copyright 1989--2020 by Paul C. Anagnostopoulos
+% under The MIT License (opensource.org/licenses/MIT)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Loading Design Files
+% ------- ------ -----
+
+
+\def \bookauthor {}
+\def \booktitle {}
+\def \bookpublisher {}
+\def \bookISBN {}
+
+
+\def \loaddesign #1{% {file-list}
+ \zdtinit
+ \zloadinifile
+ \global\divisionname = \expandafter{\jobname}%
+ \setfoliostyle{\arabic}% % Initialize various options that
+ \setsentencespacing{\false}% $ might be set in the design file.
+ \setmathspaces{4mu plus .4mu minus .75mu}
+ {4mu plus .4mu minus .75mu}
+ {4mu plus .4mu minus .75mu}%
+ \protectcitecommands
+ \commalist{\zdeslist}{#1}%
+ \maplist{\zinputdes{##1}}{\zdeslist}%
+ \textsize\rm % In case \documentdesign resets
+ % \normallineskip[limit].
+ \if \DVIWindorules \setflag \DVIWindoinuse = \true \fi %%% Temporary.
+ \if \newbiblio \input zzbiblio \else \input zzbibtex \fi
+ \if \rangep{\newmath}{1}{2}\input zznewmath\relax \fi
+ \if \newrunners \input zzrunner\relax \fi
+ \if \zerop{\tabularversion}%
+ \tabularversion = \if \newtabular 2\else 1\fi\relax
+ \fi
+ \if \neqlp{\tabularversion}{3}\input zztabularv\the\tabularversion\relax \fi
+ \if \newtitleadjustment \input zzttladj\relax \fi}
+
+\def \zinputdes #1{% {design-file}
+ \checkfile{\znext}{#1.zzd}%
+ \if \znext
+ \input #1.zzd\relax
+ \else
+ \error{nodesfile}{The design file `#1.zzd' is missing}
+ \zend
+ \fi
+ \if \orp{\hmodep}{\posp{\pagetotal}}
+ \error{desjunk}
+ {The design file `#1.zzd' has some spurious junk in it}
+ \fi
+ \textsize\rm % So \documentdesign macro can use it.
+ \documentdesign}
+
+\def \announcedesign #1{% {title}
+ \remark{Loading design file `#1'._}}
+
+\def \bookdata #1#2#3#4{% {author}{title}{publisher}{ISBN}
+ \gdef \bookauthor {#1}%
+ \gdef \booktitle {#2}%
+ \gdef \bookpublisher {#3}%
+ \gdef \bookISBN {#4}}
+
+%~ Deprecated in favor of |\bookdata|.
+
+\def \bookinfo #1#2#3{% {author}{title}{publisher}
+ \gdef \bookauthor {#1}%
+ \gdef \booktitle {#2}%
+ \gdef \bookpublisher {#3}}
+
+\def \commonencoding {%
+ \input zzcomenc\relax
+ \global\setflag \zcommonencoding = \true}
+
+\def \protectcitecommands {%
+ \let \cite = \citeleterror
+ \let \citeauthr = \citeleterror
+ \let \citeyear = \citeleterror
+ \let \nocite = \citeleterror}
+
+\def \citeleterror {%
+ \error{citelet}{Cannot use \noexpand\let to define \noexpand\cite commands}}
+
+% Design Alternatives
+% ------ ------------
+
+
+% Design alternatives are deprecated.
+
+\def \designalternative #1#2{% {\name}{choice}
+ \withname\gdef{\=zA:\string#1}{#2}}
+
+\def \definedesignalternative #1#2#3{% {\name}{required?}{choice1,...}
+ \definecount{#1}{-1}%
+ \if \undefinedp{\=zA:\string#1}%
+ \if #2%
+ \error{altreq}{The design alternative `\string#1' must be specified}%
+ \else
+ \zdefalt{#1}#3,\zmark
+ \fi
+ \fi
+ \commalist{\zaltlist}{#3}%
+ \tcounta = -1\relax
+ \maplist{\zcompalt{#1}{##1}}{\zaltlist}%
+ \if \negp{#1}%
+ \error{altinv}{The design alternative `\string#1' is invalid}%
+ \fi}
+
+\def \zdefalt #1#2,#3\zmark{% {\name}choice1,...\zmark
+ \designalternative{#1}{#2}}
+
+\def \zcompalt #1#2{% {\name}{choice}
+ \increment \tcounta
+ \stringeql{\znext}{\name{\=zA:\string#1}}{#2}%
+ \if \znext \global#1 = \tcounta \fi \relax}
+
+\let \altcase = \ifcase
+
+% Document Parameters
+% -------- ----------
+
+
+% The following PDF document information options are available.
+
+\chardef \PDFinfodefault = 0
+\chardef \PDFinfofull = 1
+\chardef \PDFinfocomp = 2
+\chardef \PDFinfonone = 3
+
+
+% Integer parameters:
+
+\adjdemerits = 10000 % Adjacent incompatible lines.
+\binoppenalty = 700 % Line break after binary operator.
+%\brokenpenalty = 0 % See \even and \oddbrokenpenalty.
+\clubpenalty = 500 % Club line at bottom of page.
+\defaulthyphenchar = `\- % Default hyphen character.
+\defaultskewchar = -1 % Default skew character.
+\delimiterfactor = 941 % Math delimiter size factor.
+\displaywidowpenalty = 500 % Widow line above math display.
+\definecount{\dollarhyph}{0} % 0: no hyphenation after dollar signs;
+ % 1: hyphenate after, but nowhere else;
+ % 2: hyphenate after and other places.
+\doublehyphendemerits = 80000 % Consecutive hyphenated lines.
+\errorcontextlines = 8 % Maximum error context line pairs.
+\definecount{\evenbrokenpenalty}{3000} % Column breaks after hyphenated
+ % line, but on same spread.
+\exhyphenpenalty = 0 % Line break after explicit hyphen.
+\finalhyphendemerits = 10000 % Penultimate hyphenated line.
+\hbadness = 1000 % Above which bad hboxes are shown.
+\hyphenpenalty = 50 % Line break after discretionary hyphen.
+\interlinepenalty = 0 % Between lines of a paragraph.
+\language = 0 % Current set of hyphenation rules.
+\lefthyphenmin = 2 % Shortest fragment at beginning of
+ % hyphenated word.
+\linepenalty = 10 % Increment at each line break.
+\definecount{\lineslong}{0} % Number of lines page can go long.
+\definecount{\linesperpage}{0} % Number of lines per page.
+\definecount{\linesshort}{0} % Number of lines page can go short.
+\definecount{\maxbottomcolumnfloats}{1} % Floats at column bottom.
+\definecount{\maxbottompagefloats}{1} % Floats at page bottom.
+\definecount{\maxtopcolumnfloats}{1} % Floats at column top.
+\definecount{\maxtoppagefloats}{1} % Floats at page top.
+\definecount{\mintextpercent}{10} % Percent of page that must have text.
+\newlinechar = -1 % Newline character for \write.
+\definecount{\newmath}{0} % Revision level of math---DEPRECATED.
+\definecount{\oddbrokenpenalty}{10000} % Spread breaks after
+ % hyphenated line.
+\definecount{\PDFinfo}{\PDFinfodefault} % Include document info in final PDF file.
+\pretolerance = 400 % Badness tolerated before hyphenation.
+\relpenalty = 500 % Line break after relation operator.
+\righthyphenmin = 3 % Shortest fragment at end of hypenated word.
+\definecount{\shrinkpercent}{10} % Percentage shrink is of nominal.
+\definecount{\stretchpercent}{25} % Percentage of the maximum stretch.
+\definecount{\tabularversion}{0} % Version of tabular facility.
+\tolerance = \pretolerance % Badness tolerated after hyphenation.
+\tracinglostchars = 1 % Positive to trace lost characters.
+\definecount{\tracingpagemakeup}{0} % Positive to trace page makeup.
+\tracingstats = 1 % Positive to trace memory statistics.
+\uchyph = 1 % Positive to hyphenate Capitalized words.
+\definecount{\underscorehyph}{1} % See \dollarhyph.
+\vbadness = 2000 % Above which bad vboxes are shown.
+\widowpenalty = 10000 % Widow line at top of page.
+\definecount{\xrefcites}{0} % Cross-reference \cite's:
+ % 0: no
+ % 1: simple xref entry
+ % 2: custom xref entry
+
+% Flag Parameters:
+
+\setflag \allowcolor = \true % Allow color specials?
+\setflag \allowreftitle = \false % Allow use of \reftitle?
+\setflag \baselinetoprules = \true % Rules at page top sit on baseline?
+\setflag \DVIWindoinuse = \false % Generate DVIWindo-specific goodies?
+\setflag \DVIWindorules = \false % Display page makeup rules? [deprecated]
+\setflag \forceepsbb = \false % Force reading of EPS bounding box?
+\setflag \indexcites = \false % \cite generates indexing command?
+\setflag \newbiblio = \false % Use new biblio facility?
+\setflag \newdots = \false % Use new \xdots commands?
+\setflag \newrunners = \false % Use new runners scheme?
+\setflag \newtabular = \false % Use new tabular module? [deprecated]
+\setflag \newtitleadjustment = \false % Use new title adjustment scheme?
+\setflag \PDFhyperlinks = \false % Generate PDF hyperlinks?
+\setflag \raggedbottom = \false % Ragged-bottom pages?
+\setflag \risingbottomfloats = \false % Bottom floats rise up on page?
+\setflag \risingfootnotes = \false % Footnotes rise up on page?
+\setflag \topdeltaadjustment = \false % Use \topdelta?
+\setflag \zcommonencoding = \false % Set with \commonencoding command.
+
+% Dimension Parameters:
+
+\boxmaxdepth = \maxdimen % Maximum depth of explicit vboxes.
+\delimitershortfall = 4pt % Maximum math delimiter shortfall.
+\emergencystretch = 4pt % Emergency stretchability of each line.
+\definedimen{\evenbleedshift}{0pt} % Bleed shift for versos.
+\definedimen{\eveninnermargin}{0pt} % Inner margin (gutter) for versos.
+\definedimen{\evenlefttextmargin}{0pt} % Left text margin for versos.
+\definedimen{\evenoutermargin}{0pt} % Outer margin for versos.
+\definedimen{\evenrighttextmargin}{0pt} % Right text margin for versos.
+\definedimen{\footerheight}{0pt} % Height of footer box.
+\definedimen{\headerheight}{0pt} % Height of running head.
+\definedimen{\headmargin}{0in} % Head (top) margin.
+\hfuzz = 0.33pt % Overrun before overfull hbox messages.
+\hoffset = 0pt % Overall horizontal offset.
+\zremovePlaindef \jot
+\definedimen{\jot}{3pt} % Increment for opening up math displays.
+\lineskiplimit = 0pt % Threshold where \lineskip is used
+ % instead of \baselineskip.
+\let \linewidth = \hsize % Alternate name for \hsize.
+\maxdepth = 4pt % Maximum depth of boxes on main pages.
+\zremovePlaindef \normallineskiplimit
+\definedimen{\normallineskiplimit}{0pt} % Normal line skip limit.
+\nulldelimiterspace = 1.2pt % Width of a null delimiter.
+\definedimen{\oddbleedshift}{0pt} % Bleed shift for rectos.
+\definedimen{\oddinnermargin}{0pt} % Inner margin (gutter) for rectos.
+\definedimen{\oddlefttextmargin}{0pt} % Left text margin for rectos.
+\definedimen{\oddoutermargin}{0pt} % Outer margin for rectos.
+\definedimen{\oddrighttextmargin}{0pt} % Right text margin for rectos.
+\overfullrule = 6pt % Width of rule appended to overfull boxes.
+\parindent = 0pt % Width of paragraph indent.
+\definedimen{\parrag}{0pt} % Raggedness of paragraph lines.
+\scriptspace = .25pt % Extra space after a sub/superscript.
+\splitmaxdepth = \maxdimen % Maximum depth of boxes on split pages.
+\definedimen{\standardbleed}{.125in} % Standard bleed required by press.
+\definedimen{\standardindent}{0pt} % Standard indentation amount.
+\definedimen{\textareaheight}{\mindimen}% Height of text area.
+\definedimen{\textmeasure}{0pc} % Width of text area.
+\let \textareawidth = \textmeasure
+\definedimen{\topdelta}{0pt} % \topskip - height(first line).
+\definedimen{\trimheight}{0in} % Trimmed paper height.
+\definedimen{\trimwidth}{0in} % Trimmed paper width.
+\definedimen{\trimplusbleedheight}{0in} % Trim plus bleed top and bottom.
+\definedimen{\trimplusbleedwidth}{0in} % Trim plus bleed both sides.
+\definedimen{\typeareaheight}{\mindimen}% Height of type area.
+\definedimen{\typeareawidth}{0pt} % Width of type area.
+\vfuzz = 0.5pt % Overrun before overfull vbox messages.
+\voffset = 0pt % Overall vertical offset.
+
+% Skip (glue) Parameters:
+
+\leftskip = 0pt % At left end of paragraph lines.
+\lineskip = 0pt % When \baselineskip isn't possible.
+\zremovePlaindef \normalbaselineskip
+\defineskip{\normalbaselineskip}{0pt} % Normal baseline distance.
+\zremovePlaindef \normallineskip
+\defineskip{\normallineskip}{0pt} % Normal line skip limit.
+\parfillskip = 0pt plus 1fil % Additional \rightskip at paragraph end.
+\parskip = 0pt % Above paragraphs.
+\rightskip = 0pt % At right end of lines.
+\spaceskip = 0pt % Between words (if nonzero).
+\splittopskip = 10pt % At top of split pages.
+\defineskip{\standardskip}{0pt} % Standard skip above/below elements.
+\topskip = \mindimen % At top of main pages.
+\xspaceskip = 0pt % Between sentences (if nonzero).
+
+% Muskip (mu glue) Parameters:
+
+\definemuskip{\fracbarhang}{0mu} % Fraction bar overhang.
+\thinmuskip = 0mu % Math space after punctuation.
+\medmuskip = 0mu % Math space around binary operators.
+\thickmuskip = 0mu % Math space around relational operators.
+
+% Token list parameters:
+
+\definetoks{\annotationfont} % Font for annotations (e.g., proof identification).
+\annotationfont = {cmssi10 at 7pt}
+\definetoks{\baselinemultiplier}% Multiplier for baselines.
+\baselinemultiplier = {1}
+\definetoks{\decimalpoint} % Decimal point character.
+\decimalpoint = {.}
+\definetoks{\PDFbuttoncolor} % Color of hyperlinked text.
+\definetoks{\matrixspread} % Baseline multiplier for matrices.
+\matrixspread = {1.0}
+
+% The following parameters are fixed and hidden from the user.
+
+\mathsurround = 0pt % Space around a math formula in text.
+
+% Parameter Calculation
+% --------- -----------
+
+
+\def \calculatetextareaheight #1{% {lines}
+ \relax
+ \if \dimnegp{\topskip}%
+ \error{misstopskip}{The value of \string\topskip must be set}%
+ \fi
+ {\global\linesperpage = #1\relax
+ \tcounta = #1\relax
+ \decrement \tcounta
+ \textareaheight = \the\tcounta\baselineskip
+ \global\advance \textareaheight by \topskip
+ \measurecapheight{\topdelta}%
+ \measureascenderheight{\tdimena}%
+ \if \dimgtrp{\tdimena}{\topdelta}\topdelta = \tdimena \fi
+ \advance \topdelta by -\topskip
+ \global\negate \topdelta}}
+
+\def \calculatetypeareaheight #1#2{% {head-height}{head-b/b}
+ \relax
+ \if \dimnegp{\textareaheight}%
+ \error{misstah}{The value of \string\textareaheight must be set}%
+ \fi
+ {\typeareaheight = \textareaheight
+ \advance \typeareaheight by -\topskip
+ \advance \typeareaheight by #1\relax
+ \advance \typeareaheight by #2\relax
+ \global\advance \typeareaheight by \footerheight
+ \headerheight = #1\relax
+ \advance \headerheight by #2\relax
+ \global\advance \headerheight by -\topskip}}
+
+\def \calculateoffsets #1#2{% {sheet-width}{sheet-height}
+ \relax
+ \if \andp{\dimposp{\trimwidth}}{\dimposp{\trimheight}}%
+ \hoffset = #1\relax
+ \advance \hoffset by -\trimwidth
+ \divide \hoffset by 2
+ \advance \hoffset by -1in
+ \voffset = #2\relax
+ \advance \voffset by -\trimheight
+ \divide \voffset by 2
+ \advance \voffset by -1in\relax
+ \else
+ \error{misstrim}{The values of \string\trimwidth and
+ \string\trimheight must be set}%
+ \fi}
+
+\def \calculatepdfoffsets #1#2#3{% {virtual-width}{virtual-height}{bleeds?}
+ \relax
+ \if \andp{\dimposp{\trimwidth}}{\dimposp{\trimheight}}%
+ \hoffset = -1in
+ \if #3\advance \hoffset by \standardbleed \fi
+ \calculate \voffset = {#2,-,\trimheight,-,1in}%
+ \if #3\advance \voffset by -\standardbleed \fi
+ \else
+ \error{misstrim}{The values of \string\trimwidth and
+ \string\trimheight must be set}%
+ \fi}
+
+\def \setskip #1=#2#3#4{% \parameter = {nominal}{max-stretch}{[shrink]}
+ \tdimena = #2\relax
+ \calculate \tdimenb = {#3,P,\stretchpercent}%
+ \if \emptyargp{#4}%
+ \calculate \tdimenc = {\tdimena,P,\shrinkpercent}%
+ \else
+ \tdimenc = #4\relax
+ \fi
+ #1 = \the\tdimena plus \the\tdimenb minus \the\tdimenc\relax}
+
+\def \fromtrim #1{% \setskip or \register
+ \if \tokeqlp{#1}{\setskip}%
+ \let \znext = \zfromtrima
+ \else
+ \def \zfromtrimreg {#1}%
+ \let \znext = \zfromtrimb
+ \fi
+ \znext}
+
+\def \zfromtrima #1=#2#3#4{%
+ \setskip #1={#2}{#3}{#4}%
+ \advance #1 by -\headmargin}
+
+\def \zfromtrimb {%
+ \afterassignment\zfromtrimc \zfromtrimreg}
+
+\def \zfromtrimc {%
+ \advance \zfromtrimreg by -\headmargin}
+
+% Document Block
+% -------- -----
+
+
+\def \document {%
+ % There is no point to embedding the entire document in a group.
+ % \documentdesign was already invoked by \loaddesign.
+ \zpushblock{document}%
+ \xdef \znext {%
+ \noexpand\definefont \noexpand\zannofont{\the\annotationfont}}
+ \znext
+ \zfontsummary{\false}%
+ \zopentfmlist
+ \zwritePDFinfo
+ \zpageinit
+ \zpushvcontext
+ \setparrag{\parrag}%
+ \zxrefinit
+ \zbiblioinit
+ \zindexinit
+ \zfloatinit
+ \setpagecolumns{}{1}{0pt}%
+ \if \definedp{\documentprolog}\documentprolog \fi}
+
+\def \enddocument {%
+ \endgraf
+ \if \definedp{\documentepilog}\documentepilog \fi
+ \closeanychapter
+ \closeanysection
+ \zpopblock{document}%
+ \freshpage{\short\floats\any}%
+ \zindexfinal
+ \zxreffinal
+%%% \zbibfinal
+ \zmissingartmsg
+ \ztagsummary
+ \zpopvcontext
+ \zlayoutsummary
+ \zfontsummary{\true}%
+ \zwritetfmlist
+ \if \posp{\tracingstats}\zregstats \fi
+ \zfeaturewarns
+ \ztodomsg
+ \zdivmsg
+ \zproofidfile
+ \zend}
+
+\def \zfeaturewarns {%
+ \messagenl{_}%
+ \if \zoverlayset
+ \remark{Overlays are present on each page.}%
+ \fi
+ \zproofident}
+
+\def \zproofident {%
+ \zproofidentline
+ \if \emptytoksp{\zproofid}%
+ \messagenl{| No proof identification.}%
+ \else
+ \messagenl{| \the\zproofid\space\space
+ \number\year/\number\month/\number\day\space
+ \formattime\space\space\space
+ \inicompositor}%
+ \fi
+ \zproofidentline}
+
+\def \zproofidentline {%
+ \messagenl{+-----------------------------------------------------------------------------_}}
+
+% Write PDF Document Information
+% ----- --- -------- -----------
+
+
+\def \zwritePDFinfo {%
+ \ifcase \PDFinfo
+ \relax
+ \or
+ \special{PDF: Title \booktitle}%
+ \special{PDF: Author \bookauthor}%
+ \special{PDF: Subject}%
+ \special{PDF: Keywords Publisher: \bookpublisher,
+ Compositor: \inicompositor}%
+ \or
+ \special{PDF: Title}%
+ \special{PDF: Author}%
+ \special{PDF: Subject}%
+ \special{PDF: Keywords Compositor: \inicompositor}%
+ \or
+ \special{PDF: Title}%
+ \special{PDF: Author}%
+ \special{PDF: Subject}%
+ \special{PDF: Keywords}%
+ \fi}
+
+% Disable \end
+% ------- ----
+
+
+\let \zend = \end
+
+\def \end {%
+ \error{noend}{Do not use the TeX \string\end\space command}}