% % LaTeX style option xwebdoc for documentation of webfiles package % % % (customized version of progltx.doc and cwebdoc.sty, combined % with webdoc.sty) % \chardef\uscode=\catcode`\_ \catcode`\_=11 % letter %%% In addition to the normal \LaTeX{} structuring markups we will %%% provide a markup for a layout of the document that is like in %%% \WEB{}. This can be done easily. All sections are numbered, the %%% number of the next section is stored in the counter |section|. We %%% distinguish between main sections which start a group of sections %%% and between normal sections within a group. %%% The main sections are started with the macro |\chap|. It has one %%% parameter, the title of the section group. This parameter must be %%% terminated by a dot. We start a new page, typeset the title in %%% bold face and separate it from the section text with a |\medskip|. %%% This text, the documentation part of the section, is formatted %%% without paragraph indentation. %%% If the \WEB{}-like macros are used every section number should be %%% output with a following dot. We want to establish this when we use the %%% |\chap| or the |\sect| macro the first time. Furthermore the new page %%% at the begin of a main section should not be started at the first %%% |\chap| because a title may precede it (and the title should not %%% be on a seperate page unless explicitely requested). Instead a %%% skip of (approximately) 2~pica should be set. To achieve %%% both goals a macro |\chap_intro| is defined that defines |\thesection| %%% appropriately, skips the 2~pica, and redefines itself to %%% |\newpage|---we then just have to call |\chap_intro| at the beginning %%% of |\chap|. The same applies to |\sect_intro|. \newskip\pre_sect_skip \pre_sect_skip=2pc plus 1pc minus 6pt \def\chap_intro{% \gdef\thesection{\arabic{section}.}% \gdef\chap_intro{\newpage}% \addvspace{\pre_sect_skip}% } \def\sect_intro{% \gdef\thesection{\arabic{section}}% \global\let\sect_intro\relax } %%% \sect Now we will have a look at the {\it wonderful\/} internal %%% interface of \LaTeX{}\@. With ``wonderful'' I mean that I'm always %%% full of wonder why it was designed in this way. E.g., if anybody %%% can explain to me why the coding of the non-indentation of the first %%% line in the following paragraph was combined with the coding of %%% the skip which will come in front of the section---I will be thankful %%% for the rest of my life. Such different things should be kept %%% different, i.e., the suppression of the indentation should not be %%% hidden in the sign of a skip! The same comment applies to the combined %%% coding of the skip below the section heading resp.\ to the right %%% of a run-in heading. %%% \begin{quote} \it %%% I want the following layout: no indentation in the following %%% paragraph\/ {\rm but no} space in front of the section heading. %%% How do I code a value of\/ $\sl -0 pt$? %%% \end{quote} %%% % %%% Well, a work-around is to use a value of $\rm -1\,sp$ because the %%% reader will not see this distance---but in my opinions this is no %%% good programming style. In this special case I have luck, too: %%% the skip is not set anyway, either it is discarded by the preceding %%% |\newpage| or it is not added by |\addvspace| because of the preceding %%% |\pre_sect_skip|. \def\chap#1.{% \chap_intro \@startsection{section}{1}% {\z@}% {\m@ne sp}% {\medskipamount}% {\normalsize\bf}% {#1.}% } %%% \sect Normal sections are started with |\sect|. This macro has no %%% parameter. Between two paragraphs we skip |\pre_sect_skip|. %%% Between the section number and the text one quad of space is set. %%% We have to take care for empty documentation parts where the %%% program part (i.e.\ |\beginprog|) will follow immediately. Then %%% the program part should begin on a new line and not behind the %%% section number. So we provide |\null| as an empty documentation %%% part in every case. %%% Now again the design of |\@startsection| comes in hand: \LaTeX{} %%% always leaves a quad after the section number (by the way, %%% this is not mentioned in the documentation---you have to look %%% in the macros to figure this out). Because our section header %%% consists only of the number we have to code a value of $\rm %%% -0\,pt$\,\dots \def\sect{% \sect_intro \@startsection{subsection}{2}% {\z@}% {\pre_sect_skip}% {\m@ne sp}% {\normalsize\bf}% {\null}% } %%% \sect We are finished and just have to restore the category code. \catcode`\_=\uscode % % logos % \def\cweb{{\tt CWEB\/}} \def\ctangle{{\tt CTANGLE\/}} \def\cweave{{\tt CWEAVE\/}} \def\C++{C\raise .4ex\hbox{$\scriptstyle +\!+$}} % % new elements % \font\manfnt=manfnt % with the dangerous bend sign \chardef\bend="7F % I like the non-S curve ;-) \newenvironment{fixme}{% \trivlist \hangindent 2em \hangafter -2 \item[\hbox to 0pt{\hss \manfnt \bend}]% \ignorespaces }{% \endtrivlist } \newenvironment{cseqtab}{% \quote \obeycr \tabular{lrl}% \@gobblecr % eat following newline }{% \endtabular \endquote } % % new tags % \def\arg#1{{\sl Arg.~#1\/}:} % % change of LaTeX parameters, for layout etc. % % figure \def\textfraction{0.1} % must be at least 10% text on page \def\topfraction{0.9} % rest may be top insertion \def\floatpagefraction{0.8} % float pages only if the float is larger than 80% % % from webdoc.sty: % \oddsidemargin=10mm \evensidemargin=0mm \textwidth=16cm \textheight=24cm \topmargin=-4mm \headsep=8mm \if@twoside \def\ps@headings{% \let\@oddfoot\@empty \let\@evenfoot\@empty \def\@evenhead{{\textup{\thepage}\hfil\footnotesize\leftmark}}% \def\@oddhead{{\footnotesize\rightmark}\hfil\textup{\thepage}}% \let\@mkboth\markboth \def\sectionmark##1{% \markboth% {\uppercase{\ifnum \c@secnumdepth >\z@ \S\thesection\hskip 1em\relax\fi ##1}}% {\uppercase{\ifnum \c@secnumdepth >\z@ \S\thesection\hskip 1em\relax\fi ##1}} } \def\subsectionmark##1{}% } \else \def\ps@headings{% \let\@oddfoot\@empty \def\@oddhead{{\footnotesize\rightmark}\hfil\textbf{\thepage}}% \let\@mkboth\markboth \def\sectionmark##1{% \markright{\uppercase{\ifnum \c@secnumdepth >\m@ne \S\thesection\hskip 1em\relax \fi ##1}}} \def\subsectionmark##1{}% } \fi % % from logos.sty: % \font\bigfatrm=cmbx10 scaled\magstep5 \let\bfitself\bf \newif\ifboldface \def\bf{\boldfacetrue\bfitself} \font\ninerm=cmr9 \font\ninebold=cmbx9 \font\mflogofont=logo10 % % MATLAB: % \newcommand{\matlab}{% \mbox{M{\ifboldface\ninebold\else\ninerm\fi% \kern-.05emA\kern-.15emT\kern-.05emL\kern-.05emA\kern-.05emB% \spacefactor1000}}} % % Maplab en Maplib: % % maplab in ems (evenredig met de fontgrootte) --> werkt in alle % fontgroottes. % \def\Maplab{M\kern-.05emA\kern-.20em\raise.6ex\hbox{P}\kern-.30em \lower.6ex\hbox{L}\kern-.2em\raise.2ex\hbox{A}\kern-.1emB} \def\MAPLAB{{\bigfatrm\Maplab}} \def\maplab{% {\ifboldface\ninebold\else\ninerm\fi\Maplab}% \index{Maplab@ {\ninerm\protect\Maplab}}} % % idem voor MapLib: % \def\Maplib{M\kern-.05emA\kern-.20em\raise.6ex\hbox{P}\kern-.30em \lower.6ex\hbox{L}\kern-.2em\raise.2ex\hbox{i}\kern0emB} \def\MAPLIB{{\bigfatrm\Maplib}} \def\maplib{% {\ifboldface\ninebold\else\ninerm\fi\Maplib}% \index{Maplib@ {\ninerm\protect\Maplib}}} % % Computertalen: % \def\cee{{\ninerm C\spacefactor1000}} \def\fortran{{\ninerm FORTRAN}} %%\def\cee{{C}} % % WEB's, WEAVEs en TANGLEs: % \def\web{{\tt WEB}} \def\cweb{{\tt CWEB}} \def\mweb{{\tt MWEB}} \def\nuweb{{\tt nuweb}} \def\ceeweb{{\tt ceeweb}} \def\weave{{\tt weave}} \def\cweave{{\tt cweave}} \def\ceeweave{{\tt ceeweave}} \def\mweave{{\tt mweave}} \def\tangle{{\tt tangle}} \def\ctangle{{\tt ctangle}} \def\ceetangle{{\tt ceetangle}} \def\mtangle{{\tt mtangle}} \def\spider{{\rm Spider}} % % Tools % \def\MakeIndex{{\it MakeIndex\/{}}} % % diversen % \def\C++{\cee\raise .4ex\hbox{$\scriptstyle +\!+$}} \def\unix{{\ninerm U\kern-.05emNIX\spacefactor1000}} \def\uvalogo{\center\parbox{0mm}{\input{UvA}\box\graph\hss\vss}} \def\metafont{{\mflogofont METAFONT}} \def\metapost{{\mflogofont METAPOST}} \def\BibTeX{{\sc Bib}{\rm\TeX}} \def\MakeIndex{{\it MakeIndex}}