diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/zztex/zzdiv.tex')
-rw-r--r-- | Master/texmf-dist/tex/plain/zztex/zzdiv.tex | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/zztex/zzdiv.tex b/Master/texmf-dist/tex/plain/zztex/zzdiv.tex new file mode 100644 index 00000000000..509fd4910c9 --- /dev/null +++ b/Master/texmf-dist/tex/plain/zztex/zzdiv.tex @@ -0,0 +1,128 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Module: ZzTeX Division Facilities +% +% Synopsis: This module contains the macros to support divisions, which +% allow a book to be processed in pieces. +% +% Author: Paul C. Anagnostopoulos +% Created: 24 September 1990 +% +% Copyright 1989--2020 by Paul C. Anagnostopoulos +% under The MIT License (opensource.org/licenses/MIT) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Divisions +% --------- + + +\def \zdivext {tex} + +\definetoks{\divisionname} % Name of current division. +\definetoks{\zdivreq} % Divisions requested with \setdivisions. +\zdivreq = {\all} +\definetoks{\zdivset} % Divisions set. +\setlist \zdivset = {} + + +%~ This command is used in the book's root file to specify +%~ the list of divisions that should be processed by ZzTeX. +%~ All other divisions are not processed. If the command +%~ does not appear in the root file, all divisions are processed. + +\def \setdivisions #1{% {division,...} + \if \emptyargp{#1}% + \warning{nodivs}{The \noexpand\setdivisions command does not specify any divisions} + \else + \global\zdivreq = {#1}% + \fi} + +%~ This command is used in the book's root file to specify the +%~ name of a book division file (e.g., |chap01|, |appa|). The order +%~ of these commands determines the order of the divisions. + +\def \division #1{% {division} + \global\divisionname = {#1}% + \edef \znext {\noexpand\inclusionlist\noexpand\zset{#1}{\the\zdivreq}}% + \znext + \if \zset + \remark{Starting division `\the\divisionname'.}% + \push{#1}{\zdivset}% + \freshpage{\short\floats\any}% + \setcolumnnumber{1}% + \zxdivinit{#1}{\true}% + \zindexdivinit{#1}% + \zmndivinit + \zpndivinit + \zframedivinit + \zmrdivinit + \zfltdivinit + \include{#1.\zdivext}% + \endgraf + \freshpage{\short\floats\any}% + \zortahdivfinal + \zindexdivfinal + \zxdivfinal{#1}% + \else + \zxdivinit{#1}{\false}% + {\globaldefs = 1 \name{\=zS:#1}}% % Invoke snapshot. + \fi + \global\divisionname = \expandafter{\jobname}} + +% This macro is invoked at the end of the document. + +\def \zdivmsg {% + \edef \znext {\the\zdivreq}% + \edef \znextfirst {\expandafter\zdivmsga \znext\zmark}% + \if \tokeqlp{\znext}{\zallname}% + \remark{The entire book was processed.}% + \else\if \tokeqlp{\znextfirst}{\zallbutname}% + \relax + \else + \commalist{\zreqlist}{\the\zdivreq}% + \maplist{\zdivmsgb{##1}}{\zreqlist}% + \fi\fi} + +\def \zdivmsga #1#2\zmark{#1} + +\def \zdivmsgb #1{% + \member{\zexists}{#1}{\zdivset}% + \if \notp{\zexists}% + \warning{divnotexist}{The requested division `#1' does not exist}% + \fi} + +% Division Snapshots +% -------- --------- + + +\setlist \zsnaplist = {} % List of registers to be snapshot. + + +\def \declaresnapitem #1{% {\name} + \append{#1}{\zsnaplist}} + + +\def \ztakesnap {% + \let \zmodesave = \xrefmode + \let \xrefmode = \xrefsnapmode + \def \znext {}% + \maplist{\zsnapone{##1}}{\zsnaplist}% + \ztoksa = \expandafter{\znext}% + \edef \znext {\noexpand\xref{snap}{\noexpand\folio}{}% + {\the\ztoksa}{\the\divisionname}}% + \znext + \let \xrefmode = \zmodesave} + +\def \zsnapone #1{% {\register} + \ztoksa = \expandafter{\znext}% + \edef \znext {\the\ztoksa \noexpand#1\the#1}} + + +% Store division snapshot information in a special name in the tag namespace. + +\def \xrefsnap #1#2#3#4{% {}{}{code}{division} + \ifnum \xrefmode=\xrefloadtagmode + \if \undefinedp{\=zS:#4}\withname{\gdef}{\=zS:#4}{}\fi + \withname\xdef{\=zS:#4}{\name{\=zS:#4}#3}% + \fi}
\ No newline at end of file |