diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/inrstex/inrsdoc/secthead.tex |
Initial commit
Diffstat (limited to 'macros/inrstex/inrsdoc/secthead.tex')
-rw-r--r-- | macros/inrstex/inrsdoc/secthead.tex | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/macros/inrstex/inrsdoc/secthead.tex b/macros/inrstex/inrsdoc/secthead.tex new file mode 100644 index 0000000000..da1558c568 --- /dev/null +++ b/macros/inrstex/inrsdoc/secthead.tex @@ -0,0 +1,223 @@ +%-*-tex-*- +% Copyright Michael J. Ferguson, INRS-Telecommunications +% All rights reserved. + + +% ========== Section, Chapter Headings =========== +% These macros have several parts, +% -- The format of the heading. +% -- The automatic numbering. +% -- The writing of a list file for automatic table of contents. +% -- The referencing in the text ... ie reference number styles. + + +% ======== Counter allocation and Number styles ========= +%========= Autonumbering allocations and styles for sections ... ==== +% Allocate the counters for the chapters, sections, figures, etc. +% These counters are updated globally. +\newcount\chnum %\chnum=0 \def\chnumform{\the\chnum} +\newcount\shnum %\shnum=0 \def\shnumform{\the\shnum} +\newcount\sshnum %\sshnum=0 \def\sshnumform{\the\sshnum} +\newcount\ssshnum %\ssshnum=0 \def\ssshnumform{\the\ssshnum} + +% ======== autonumbering options and styles ========== +% The following stay unchanged for different numbering options +\def\chtagrefformat{\chnumform} +\def\chtagreplaceformat{\Chapter \chtagrefformat} + +\def\numberbychapter{\s@pecialnumberresetlevel=2 + \def\shtagreplaceformat{\shtagrefformat} + \def\sshtagreplaceformat{\sshtagrefformat} + \def\ssshtagreplaceformat{\ssshtagrefformat} + \def\shtagrefformat{\chnumform.\shnumform} %section + \def\sshtagrefformat{\chnumform.\shnumform.\sshnumform} %subsection + \def\ssshtagrefformat{\chnumform.\shnumform.\sshnumform %subsubsection + .\ssshnumform} + \def\Prerefform{\chnumform.} + \def\Postrefform{}} + +\def\numberbysection{\s@pecialnumberresetlevel=3 + \def\shtagreplaceformat{\shtagrefformat.} + \def\sshtagreplaceformat{\sshtagrefformat} + \def\ssshtagreplaceformat{\ssshtagrefformat} + \def\shtagrefformat{\shnumform} %section + \def\sshtagrefformat{\shnumform.\sshnumform} %subsection + \def\ssshtagrefformat{\shnumform.\sshnumform %subsubsection + .\ssshnumform} + \def\Prerefform{\shnumform.} + \def\Postrefform{}} + +\def\specialnumberscontinuous{\def\Prerefform{} + \def\Postrefform{} + \s@pecialnumberresetlevel=1} + + +% This macro resets the counters for equations, figures, etc. +% depending on the header level. +% #1 - header level 1=chapter +% 2=section +% 3=subsection +% 4=subsubsection +% \a@utonumberresetlevel = 1 sequential numbering +% 2 chapter numbering +% 3 section numbering +% 4 subsection numbering, etc. +\newcount\s@pecialnumberresetlevel \s@pecialnumberresetlevel=1 +\def\updatespecialnumbers#1{ + \ifnum #1 < \s@pecialnumberresetlevel + \the\s@presetlist + \fi} + + +% ============ Section head format styles and List generation ======= +% +% The calling format is +% \s<ss>head{<number>}{<Title>} +% Subsequent lines are indented one quad more than the size of the <number> +% There is an autonumbering/autoreferencing feature in these macros. +% If the autonumber switch +% is true, then the first argument represents a tag instead of a number. + +% \nosheadbreak is used when multiple heads start a section +\newif\ifs@headbreak \s@headbreaktrue +\def\nosheadbreak{\s@headbreakfalse} + + +% ========= Section heading command forms ======== +% #1 top skip +% #2 bottom skip +% #3 font +% #4 <number> +% #5 <text> +% #6 table of contents command form +% #7 <item>, placed between <number> and <text> + +\newskip\prsheadskip %\prsheadskip= 6ex plus 2ex minus 2ex +\newskip\posheadskip %\posheadskip= 2ex +\newskip\prssheadskip % \prssheadskip= 5ex plus 1.8ex minus 1.8ex +\newskip\possheadskip %\possheadskip= 2ex +\newskip\prsssheadskip %\prsssheadskip= 3ex plus 1ex minus 1ex +\newskip\posssheadskip %\posssheadskip= 2ex +\newskip\prdsssheadskip %\prdsssheadskip= 3ex plus 1ex minus 1ex +\newskip\podsssheadskip %\podsssheadskip= 2ex + +%this is the format form for those that want to perform radical surgery +%the parameters must be as shown and will have that meaning +% #1 font (=#3); #2 number (=#4) ; #3 <text> (=#5); #4 number/text sep (=#7) +% check on \t@agtext suppresses space when there is no number +\def\gensheadformat#1#2#3#4{\ifx\t@agtext\empty\setbox0=\hbox{}\else + \setbox0=\hbox{#1#2#4}\fi + \vbox{\veryraggedright \normalbaselines + \hangindent 1\wd0 \hangafter 1\noindent #1\unhbox0 #3}} + + +\def\g@head#1#2#3#4#5#6#7{\ifs@headbreak \goodbreak \vskip #1\else + \removelastskip\fi + \s@headbreaktrue + \toks0={#5}%prevents expansion inside title + \writeterm{<#4}{ }{\the\toks0>} + \gensheadformat{#3}{#4}{#5}{#7} + \nobreak + \writelistfile{toc}{#6}{#4}{#5} + \vskip #2 \vskip -\parskip} + +\newtoks\sectionname \newtoks\sectionnumtag +\def\sheadmark{\mark{\the\sectionname}} % defaults to title +\def\innershead #1#2{\sectionnumtag = {#1} \sectionname = {#2} + \ifautonumber + \global\advance \shnum by 1 + \global\sshnum=0 + \global\ssshnum=0 + \updatespecialnumbers{2} + \newtag{#1}{\shtagrefformat} + \edef\t@agtext{\shtagreplaceformat} + \else + \edef\t@agtext{#1} + \fi + \sheadmark %sections are marked for header titles + \g@head{\prsheadskip}{\posheadskip + }{\sheadfont}{\t@agtext}{#2}{\shtocout + }{\quad}} +\def\innersshead #1#2{\ifautonumber + \global\advance \sshnum by 1 + \global\ssshnum=0 + \updatespecialnumbers{3} + \newtag{#1}{\sshtagrefformat} + \edef\t@agtext{\sshtagreplaceformat} + \else + \edef\t@agtext{#1} + \fi + \g@head{\prssheadskip}{\possheadskip + }{\ssheadfont}{\t@agtext}{#2}{\sshtocout + }{\quad}} +\def\innerssshead #1#2{\ifautonumber + \global\advance \ssshnum by 1 + \updatespecialnumbers{4} + \newtag{#1}{\ssshtagrefformat} + \edef\t@agtext{\ssshtagreplaceformat} + \else + \edef\t@agtext{#1} + \fi + \g@head{\prsssheadskip}{\posssheadskip + }{\sssheadfont}{\t@agtext}{#2}{\ssshtocout + }{\quad}} +\def\innerdssshead #1{\g@head{\prdsssheadskip}{\podsssheadskip + }{\dsssheadfont}{}{#1}{\dssshtocout}{}} +\outer\def\shead#1#2{\innershead{#1}{#2}} +\outer\def\sshead#1#2{\innersshead{#1}{#2}} +\outer\def\ssshead#1#2{\innerssshead{#1}{#2}} +\outer\def\dssshead#1{\innerdssshead{#1}} + +% ======== chead ========== +% The chapter head has a different format entirely +\newtoks\chaptername + +%this is the form of the present chapter head +%parameters are #1 is the title text \cheadfont, \chtagreplaceformat + +%\def\Chapter{Chapter } see English/french titles + +% indicates if chapters exist ... default is that they do not +% the first call to a \chead sets it true ... or it may be done in the style. +\newif\ifnochapter %\nochaptertrue + + +\def\cheadformat#1#2{\vglue 2.5cm + \line{$\vcenter{\hbox{\cheadfont + #1 + \vrule height 3ex depth 1ex width 0pt + }}\hss + \vcenter{\halign{&\cheadfont\hss + ##\vrule height 3ex depth 1ex width 0pt\cr + #2\crcr}}$} + \vskip 2.5cm} +\def\chapterstartform{} +\def\chead#1#2{\numberbychapter\nochapterfalse + \ifautonumber + \global\advance\chnum by 1 + \global\shnum=0 + \global\sshnum=0 + \global\ssshnum=0 + \newtag{#1}{\chtagrefformat} + \updatespecialnumbers{1} + \edef\t@agtext{\chtagreplaceformat} + \else + \edef\t@agtext{#1} + \fi + \chaptername={#2} % for term write only ... includes \cr + \writeterm{<\t@agtext}{ }{\the\chaptername>} + \chaptername={\def\cr{ }#2} + \chapterstartform % here so both the number and title set + \titlepagestyle + \cheadformat{\t@agtext}{#2} % format of chead + \writelistfile{toc}{\chtocout}{\t@agtext}{#2} + } + +% ========== Toc Out Forms =========== +% actually set in inrsdef.tex + +%\def\shtocout{\string\shtoc} +%\def\sshtocout{\string\sshtoc} +%\def\ssshtocout{\string\ssshtoc} +%\def\dssshtocout{\string\dssshtoc} +%\def\chtocout{\string\chtoc} |