1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
% standard macros for CWEB listings (in addition to plain.tex)
% modified for use with "tex2pdf" --- March 1997
% Version 2.0 --- Don Knuth, July 1990
% Version 2.0 [german] --- Carsten Steger, October 1991
% Version 2.0 [german] --- Andreas Scherer, February 1993
% Version 2.7 --- Don Knuth, July 1992
% Version 2.7 [p6c] --- Andreas Scherer, September 1993
% Version 2.8 --- Don Knuth, September 1992
% Version 2.8 [german] --- Carsten Steger, 1993
% Version 2.8 [p7] --- Andreas Scherer, October 1993
% Version 3.0 --- Don Knuth, June 1993
% Version 3.0 [p8e] --- Andreas Scherer, November 1993
% Version 3.1 [p9b] --- Andreas Scherer, January 1994
% Version 3.1 [p9c] --- Andreas Scherer, March 1994
% Version 3.1 [p9d] --- Andreas Scherer, July 1994
% Version 3.2 [p10] --- Andreas Scherer, July 1994
% Version 3.2 [p10a] --- Giuseppe Ghib, September 1994
% Version 3.2 [p10b] --- Andreas Scherer, October 1994
% Version 3.3 [p11b] --- Andreas Scherer, March 1995
% Version 3.4 [p13] --- Andreas Scherer, August 1995
% Version 3.4 [p14] --- Andreas Scherer, March 1997
% Version 3.42 [p15] --- Andreas Scherer, August 1998
% Version 3.43 [p16] --- Andreas Scherer, October 1998
% Version 3.5 [p17] --- Andreas Scherer, December 1999
% Version 3.61 [p18] --- Andreas Scherer, July 2000
% Version 3.63 [p19] --- Andreas Scherer, January 2001
% Version 3.64 [p20] --- Andreas Scherer, March 2002
% Version 3.64 [p21] --- Andreas Scherer, October 2005
% Version 3.64 [p22] --- Andreas Scherer, March 2016
% Version 4.9 --- Andreas Scherer, June 2022
% Version 4.12 --- Andreas Scherer, August 2024
\ifx\undefined\botofcontents\input cwebmac.tex\fi
\def\.#1{\leavevmode\hbox{\tentex % typewriter type for strings
\ifx\Cstringchars\undefined\else\Cstringchars\fi % special string characters
\let\\=\BS % backslash in a string
\let\{=\LB % left brace in a string
\let\}=\RB % right brace in a string
\let\~=\TL % tilde in a string
\let\ =\SP % space in a string
\let\_=\UL % underline in a string
\let\&=\AM % ampersand in a string
\let\^=\CF % circumflex in a string
#1\kern.05em}}
\def\postATL#1 #2 {\bf lettera \\{\uppercase{\char"#1}}
tangles as \tentex "#2"\egroup\par}
\def\ATH{{\acrohintfalse\X\kern-.5em:Definizioni preprocessore\X}}
\def\A{\note{Vedi anche sezione}} % xref for doubly defined section name
\def\As{\note{Vedi anche sezioni}} % xref for multiply defined section name
\def\ET{ e~} % conjunction between two section numbers
\def\ETs{ e~} % conjunction between the last two of several section numbers
\def\Q{\note{Questo codice \`e citato nella sezione}}
% xref for mention of a section
\def\Qs{\note{Questo codice \`e citato nelle sezioni}}
% xref for mentions of a section
\def\U{\note{Questo codice \`e usato nella sezione}}
% xref for use of a section
\def\Us{\note{Questo codice \`e usato nelle sezioni}}
% xref for uses of a section
\gtitle={Output \.{CWEB}} % this running head is reset by starred sections
\mark{\noexpand\nullsec0{\the\gtitle}}
\def\ch{\note{Le seguenti sezioni sono state modificate tramite il change-file:}
\let\*=\relax}
\def\inx{\par\vskip6pt plus 1fil % we are beginning the index
\def\page{\box255 } \normalbottom
\write\cont{} % ensure that the contents file isn't empty
\write\cont{\catcode `\noexpand\@=12\relax} % \makeatother
\closeout\cont % the contents information has been fully gathered
\output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi
\global\setbox\sbox=\page \global\pagesavedtrue \mark{\topmark}}
\pagesavedfalse \eject % eject the page-so-far and predecessors
\setbox\sbox\vbox{\unvbox\sbox} % take it out of its box
\vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height
\hsize=.5\pagewidth \advance\hsize by -10pt
% column width for the index (20pt between cols)
\ifhint\else\parfillskip 0pt plus .6\hsize\fi % avoid almost empty lines
\def\lr{L} % this tells whether the left or right column is next
\output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R}
\else\normaloutput{\vbox to\pageheight{\box\sbox\vss
\hbox to\pagewidth{\box\lbox\hfil\page}}}\lheader\rheader
\global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi}
\message{Indice Analitico:}
\parskip 0pt plus .5pt
\outer\def\I##1, ##2.{\par\hangindent2em\noindent##1:\kern1em
\scan##2!.} % index entry
\def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item
\rm \rightskip0pt plus 2.5em \tolerance 10000
\hyphenpenalty 10000 \parindent0pt
\readindex}
\def\fin{\par\vfill\eject % this is done when we are ending the index
\ifpagesaved\null\vfill\eject\fi % output a null index column
\if L\lr\else\null\vfill\eject\fi % finish the current page
\ifpdf \ifpdflua \makebookmarks % added in Version 3.68
\countsections \fi\fi % and in Version 4.9
\parfillskip 0pt plus 1fil
\def\grouptitle{NOMI DELLE SEZIONI}
\let\topsecno=\nullsec
\message{Nomi delle sezioni:}
\output={\normaloutput\page\lheader\rheader}
\setpage
\def\note##1##2.{\quad{\eightrm##1~\ifacrohint{\pdfnote##2.}\else{##2}\fi.}}
\def\Q{\note{Citato nella sezione}} % crossref for mention of a section
\def\Qs{\note{Citato nelle sezioni}} % crossref for mentions of a section
\def\U{\note{Usato nella sezione}} % crossref for use of a section
\def\Us{\note{Usato nelle sezioni}} % crossref for uses of a section
\def\I{\par\hangindent 2em}\let\*=*
\ifpdf \def\outsecname{Nomi delle sezioni} \let\Xpdf\X
% \ifpdflua \makebookmarks \pdfdest name {NOS} fitb % in versions < 3.68
\ifpdflua \pdfdest name {NOS} fith % changed in version 3.69
\pdfoutline goto name {NOS} count -\the\countD {\outsecname}
\def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
{\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
\pdfoutline goto num \the\toksA \expandafter{\the\toksE}}
\else \special{pdf: outline -1 << /Title (\outsecname)
/Dest [ @thispage /FitH @ypos ] >>}
\def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
{\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
\special{pdf: outline 0 << /Title (\the\toksE)
/A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}}
\fi\fi
\readsections}
\def\con{\par\vfill\eject % finish the section names
% \ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers
\rightskip 0pt \hyphenpenalty 50 \tolerance 200
\setpage \output={\normaloutput\page\lheader\rheader}
\ifpdf\startpdf\fi \titletrue % prepare to output the table of contents
\pageno=\contentspagenumber
\def\grouptitle{INDICE}
\message{Indice:}
\ifhint\HINThome\fi% Mark the Table of contents as home page
\topofcontents
\line{\hfil Sezione\ifhint\else\hbox to3em{\hss Pag.}\fi}% No Page in HINT
\let\ZZ=\contentsline
\readcontents\relax % read the contents info
\botofcontents \end} % print the contents page(s) and terminate
\def\today{\number\day\space\ifcase\month\or
gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or
luglio\or agosto\or settembre\or ottobre\or novembre\or dicembre\fi
\space\number\year}
\def\datethis{\def\startsection{\leftline{\sc\today, ore \hours}\bigskip
\let\startsection=\stsec\stsec}}
% say `\datethis' in limbo, to get your listing timestamped before section 1
%\def\datecontentspage{% versions up to 3.65
% \def\topofcontents{\leftline{\sc\today, ore \hours}\bigskip
% \centerline{\titlefont\title}\vfill}} % timestamps the contents page
\def\datecontentspage{% changed in version 3.66
\def\botofcontents{\vfill
\centerline{\covernote}
\bigskip
\leftline{\sc\today, ore \hours}}} % timestamps the contents page
|