You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
9.8 KiB
291 lines
9.8 KiB
%% BEGIN tvz-code.sty
|
|
%% 93/04/01
|
|
%% Tim Van Zandt Timothy.VAN-ZANDT@insead.edu
|
|
%%
|
|
%% Lousy hacks for typesetting the documented code for the
|
|
%%
|
|
%% This file may be distributed and/or modified under the conditions of
|
|
%% the LaTeX Project Public License, either version 1.2 of this license
|
|
%% or (at your option) any later version. The latest version of this
|
|
%% license is in:
|
|
%%
|
|
%% http://www.latex-project.org/lppl.txt
|
|
%%
|
|
%% and version 1.2 or later is part of all distributions of LaTeX version
|
|
%% 1999/12/01 or later.
|
|
%%
|
|
%% seminar.sty and PSTricks packages.
|
|
|
|
\input tvz-hax.sty
|
|
\input doc.sty % Tested with v1.7k
|
|
\input art11.sty
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%% PAGE PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
% Paragraphs are marked by space rather than indentation:
|
|
\parindent 0pt
|
|
\parskip 4pt plus 1pt minus 1pt
|
|
|
|
% Textwidth just wide enough for 78 characters of code.
|
|
\setbox\@tempboxa=\hbox{\small\tt f}
|
|
\textwidth 78\wd\@tempboxa
|
|
\oddsidemargin\paperwidth\relax
|
|
\advance\oddsidemargin -\textwidth
|
|
\divide\oddsidemargin 2
|
|
\advance\oddsidemargin -1in
|
|
\setbox\@tempboxa=\hbox{\tiny 999\ }
|
|
\advance\oddsidemargin\wd\@tempboxa
|
|
\evensidemargin\oddsidemargin
|
|
|
|
\if@twoside
|
|
\advance\oddsidemargin .3in
|
|
\advance\evensidemargin -.3in
|
|
\fi
|
|
|
|
% No headers, 1in top margin
|
|
\topmargin 0pt
|
|
\headheight 0pt
|
|
\headsep 0pt
|
|
|
|
% Total bottom margin 1in, text height 9in
|
|
\textheight 9in
|
|
\footskip .625in
|
|
|
|
% Now adjust for different paper size:
|
|
\@tempdima=\paperheight
|
|
\advance\@tempdima-11in
|
|
\divide\@tempdima 2
|
|
\advance\topmargin \@tempdima
|
|
|
|
% Marginal notes always on left.
|
|
\marginparwidth 3.5cm
|
|
\marginparsep .5cm
|
|
\reversemarginpar
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%% MACROCODE PATCH FOR SHORT META %%%%%%%%%%%
|
|
|
|
\expandafter\def\expandafter\macrocode\expandafter{%
|
|
\expandafter\DeleteShortMeta
|
|
\macrocode}
|
|
|
|
%%%%%%%%%%%%%%%%%%%% DOC PREAMBLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\newbox\junkbox
|
|
\def\DocInput#1{%
|
|
\MakePercentIgnore
|
|
\setbox\junkbox=\hbox\bgroup
|
|
\input{#1}%
|
|
\MakePercentComment}
|
|
\let\EndDocPreamble\egroup
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%% VERBATIM %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
% Use fancybox.sty's LVerbatim environment. Each line should contain
|
|
% percent plus three spaces (or other char), including blank lines. E.g.,
|
|
% \begin{LVerbatim}
|
|
% foo
|
|
% bar
|
|
% \end{LVerbatim}
|
|
|
|
\def\EveryVerbatimLine#1#2#3#4{}
|
|
\begingroup
|
|
\catcode`\%=12
|
|
\catcode`\ =\active
|
|
\global\EndVerbatimTokens{% }
|
|
\endgroup
|
|
\AltGetVerbatim
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%% INDEXING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
% Things are faster without \MakeIndex
|
|
|
|
\def\MakeIndex{\makeindex\EnableCrossrefs}
|
|
\DisableCrossrefs
|
|
|
|
% Use \codelabel[int]{foo} to label last line of code plus int.
|
|
% E.g., to label first and then last line of some code:
|
|
% \codelabel[1]{foo}
|
|
% \begin{macrocode}
|
|
% foo
|
|
% bar
|
|
% \end{macrocode}
|
|
% \codelabel{foo}
|
|
|
|
\def\codelabel{\@ifnextchar[{\@codelabel}{\@codelabel[0]}}
|
|
\def\@codelabel[#1]#2{%
|
|
\@bsphack
|
|
\begingroup
|
|
\advance\c@CodelineNo #1
|
|
\def\@currentlabel{\the\c@CodelineNo}%
|
|
\label{#2}%
|
|
\endgroup
|
|
\@esphack}
|
|
|
|
% Definitions in code are indexed by page number, but other occurences
|
|
% are indexed by the line of code.
|
|
|
|
\CodelineIndex
|
|
\def\SpecialMainPageIndex#1{%
|
|
{\let\special@index\index\SpecialMainIndex{#1}}}
|
|
\renewcommand{\theCodelineNo}{{\rm\tiny\arabic{CodelineNo}}}
|
|
|
|
% Index numbers for main definitions are set in bold rather than underlined.
|
|
|
|
\def\main#1{{\bf #1}}
|
|
|
|
% two column index
|
|
|
|
\setcounter{IndexColumns}{2}
|
|
|
|
% Customize index prologue:
|
|
|
|
\def\index@prologue{%
|
|
\section*{Index}\markboth{Index}{Index}%
|
|
\addcontentsline{toc}{section}{Index}%
|
|
The {\bf bold} numbers denote the pages where the entries are defined,
|
|
and all other numbers indicate the {\em lines of code} where
|
|
the entries are used.}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%% MACRO %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
% A change to the macro environment; prints macro names within the margins
|
|
% of the text, instead of as marginal notes. Use one \macro command,
|
|
% with comma separated macro names.
|
|
|
|
\newif\iffirst@macroname
|
|
\newif\ifnestedmacro
|
|
|
|
\def\macro{%
|
|
\ifnum\macro@level=\z@
|
|
\def\next{\MakePrivateLetters \m@cro@}%
|
|
\else
|
|
\def\next{\@latexerr{Nested \string\begin{macro}}\@eha
|
|
\endgroup\end{macro}\macro@level=\z@\begin{macro}}
|
|
\fi
|
|
\next}
|
|
\def\m@cro@#1{%
|
|
\first@macronametrue
|
|
\m@@cro@@#1,\@nil,}
|
|
\def\m@@cro@@#1,{%
|
|
\def\@tempa{#1}\def\@tempb{\@nil}%
|
|
\ifx\@tempa\@tempb
|
|
\let\next\finishm@@cro@@
|
|
\else
|
|
{\advance\c@CodelineNo\@ne\SpecialMainPageIndex{#1}\nobreak}%
|
|
\DoNotIndex{#1}%
|
|
\iffirst@macroname
|
|
\edef\saved@macronames{\string#1}%
|
|
\first@macronamefalse
|
|
\else
|
|
\def\comma{\noexpand\comma}%
|
|
\edef\saved@macronames{\saved@macronames\comma\string#1}%
|
|
\fi
|
|
\let\next\m@@cro@@
|
|
\fi
|
|
\next}
|
|
\def\finishm@@cro@@{%
|
|
\advance\macro@level\@ne
|
|
\def\comma{{\rm, }}%
|
|
\ListMacroNames{\saved@macronames}}
|
|
|
|
\let\endmacro\relax
|
|
|
|
\def\ListMacroNames{%
|
|
\@startsection{subsubsection}{3}{\z@}{-2.25ex plus -.5ex minus-.2ex}%
|
|
{1.3ex plus.2ex}{\csname reset@font\endcsname\large\tt}*}
|
|
|
|
\MacroIndent 0pt
|
|
|
|
\def\MacroFont{\small\tt}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%% DoNot Index %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\DoNotIndex{\ ,\!,\[,\\,\],\^,\`,\{,\},\~}
|
|
\DoNotIndex{\@warning,\active}
|
|
\DoNotIndex{\begingroup,\catcode,\char,\csname,\def,\do}
|
|
\DoNotIndex{\docdate,\dospecials,\edef,\else,\endcsname,\endgroup}
|
|
\DoNotIndex{\expandafter,\fi,\filedate,\fileversion}
|
|
\DoNotIndex{\gdef,\if,\ifcat}
|
|
\DoNotIndex{\ifx,\immediate,\lccode,\let}
|
|
\DoNotIndex{\lowercase,\next,\noexpand}
|
|
\DoNotIndex{\relax,\space,\the}
|
|
\DoNotIndex{\toks@,\typeout,\write}
|
|
\DoNotIndex{\@M,\@arabic,\@author,\@auxout,\@bsphack,\@car,\@date}
|
|
\DoNotIndex{\@dblarg,\@dblfloat,\@eha,\@empty,\@esphack,\@evenfoot}
|
|
\DoNotIndex{\@evenhead,\@float,\@gobble,\@gobbletwo,\@gtempa,\@ifnextchar}
|
|
\DoNotIndex{\@ifundefined,\@ixpt,\@latexerr,\@listI,\@listi,\@listii}
|
|
\DoNotIndex{\@listiii,\@listiv,\@listv,\@listvi,\@makefnmark,\@mkboth}
|
|
\DoNotIndex{\@namedef,\@nameuse,\@mne,\@nil,\@normalsize,\@oddfoot}
|
|
\DoNotIndex{\@oddhead,\@tempa,\@tempb,\@tempc,\@tempd}
|
|
\DoNotIndex{\@tempdima,\@testfalse,\@testtrue,\test@member}
|
|
\DoNotIndex{\@thanks,\@thefnmark,\@title}
|
|
\DoNotIndex{\@topnum,\@viiipt,\@viipt,\@vipt,\@vpt,\@xiipt}
|
|
\DoNotIndex{\@xipt,\@xpt,\@xivpt,\@xviipt,\@xxpt,\@xxvpt}
|
|
\DoNotIndex{\addcontentsline}
|
|
\DoNotIndex{\advance,\aftergroup,\baselinestretch,\begin}
|
|
\DoNotIndex{\belowdisplayshortskip,\belowdisplayskip,\bf,\bgroup}
|
|
\DoNotIndex{\box,\c@@page,\c@page,\c@secnumdepth,\clearpage,\columnsep}
|
|
\DoNotIndex{\columnwidth,\copy,\dimen@,\dimen@i,\dimen@ii,\divide}
|
|
\DoNotIndex{\dp,\ds@article,\ds@notes,\ds@notesonly}
|
|
\DoNotIndex{\ds@slidesonly,\egrou,\end,\end@dblfoloat,\end@float}
|
|
\DoNotIndex{\endinput,\fnsymbol,\footheight,\footnotesep,\footskip}
|
|
\DoNotIndex{\global,\globaldefs,\hbox,\headheight,\headsep,\hfil}
|
|
\DoNotIndex{\hrule,\hskip,\hss,\ht,\Huge,\huge}
|
|
\DoNotIndex{\if@filesw,\if@test,\if@twocolumn,\if@twoside}
|
|
\DoNotIndex{\ifcase,\ifdim,\ifvmode,\ignorespaces}
|
|
\DoNotIndex{\input,\interlinepenalty,\itemsep,\ixpt,\label}
|
|
\DoNotIndex{\labelsep,\labelwidth,\LARGE,\large,\Large}
|
|
\DoNotIndex{\leavevmode,\leftmargin,\leftmargini,\leftmarginii}
|
|
\DoNotIndex{\leftmarginiii,\leftmarginiv,\leftmarginv}
|
|
\DoNotIndex{\leftmarginvi,\leftmark,\leftskip,\lineskip}
|
|
\DoNotIndex{\magstep,\marginparsep,\marginparwidth,\markboth}
|
|
\DoNotIndex{\markright,\medbreak,\multiply,\newbox,\newcount}
|
|
\DoNotIndex{\newcounter,\newdimen,\newif,\newlabel,\newpage}
|
|
\DoNotIndex{\newtoks,\nobreak,\nointerlineskip,\normallineskip}
|
|
\DoNotIndex{\normalsize,\null,\number,\numberline,\oddsidemargin}
|
|
\DoNotIndex{\offinterlineskip,\or,\par,\parbox,\parskip,\partopsep}
|
|
\DoNotIndex{\prevdepth,\protect,\ref,\refstepcounter,\rightmrk}
|
|
\DoNotIndex{\rm,\scriptsize,\section,\sectionmark,\setbox,\setcounter}
|
|
\DoNotIndex{\sl,\small,\stepcounter,\string,\textheight,\textwidth}
|
|
\DoNotIndex{\thefootnote,\thepage,\thesection,\thesubsection}
|
|
\DoNotIndex{\thispagestyle,\tiny,\topmargin,\topsep,\uppercase}
|
|
\DoNotIndex{\vbox,\vfill,\viiipt,\viipt,\vipt,\vpt,\vskip,\vss}
|
|
\DoNotIndex{\wd,\xcommentloaded@,\xdef,\xiipt,\xipt,\xivpt,\xpt}
|
|
\DoNotIndex{\xviipt,\xxpt,\xxvpt,\z@}
|
|
\DoNotIndex{\abovedisplayskip,\abovedisplayshortskip,\@currentlabel}
|
|
\DoNotIndex{\@dottedtocline,\@ne\@setsize,\@starttoc,\@tempboxa,\@}
|
|
\DoNotIndex{\arraystretch,\centerline,\egroup,\end@dblfloat}
|
|
\DoNotIndex{\evensidemargin,\footnotesize,\ifnum,\parindent,\parsep}
|
|
\DoNotIndex{\rightmark,\@afterindenttrue,\@ne,\if@specialpage.\long}
|
|
\DoNotIndex{\fboxrule,\fboxsep,\@for,\vfil}
|
|
\DoNotIndex{\@@fortmp,\@@tempa,\@@tempb,\@ehd,\@for,\@fortmp,\@m}
|
|
\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue,\@nnil,\@spaces}
|
|
\DoNotIndex{\@specialstyle,\@temptokena,\@twosidefalse,\@twosidetrue}
|
|
\DoNotIndex{\@whilenum,\alph,\arabic,\count@,\errhelp,\errmessage}
|
|
\DoNotIndex{\fbox,\index,\minipage,\newcommand,\overfullrule}
|
|
\DoNotIndex{\pagestyle,\raggedright,\ref@stepcounter,renewcommand}
|
|
\DoNotIndex{\semcolor@loaded,today,\@tempcnta,\@tempcntb,\trivlist,\t,\p}
|
|
\DoNotIndex{\today,\item,\@colht,\@currenvir,\@thefoot,\@thehead}
|
|
\DoNotIndex{\@totalleftmargin,\allowbreak,\@captype,\@footnotetext}
|
|
\DoNotIndex{\@listdepth,\@minipagefalse,\@minipagetrue,\@mpfn,\@mpfootins}
|
|
\DoNotIndex{\endtrivlist,\everypar,\hsize,\ifvoid,\lastskip}
|
|
\DoNotIndex{\linewidth,\skip,\thempfn,\thempfootnote,\topskip,\unvbox}
|
|
\DoNotIndex{\@@input,\@@par,\@acci,\@accii,\@acciii,\@cclv,\@height}
|
|
\DoNotIndex{\@maxdepth,\@tempdimb,\@tempg,\@temph,\@texttop,\@twocolumnfalse}
|
|
\DoNotIndex{\@xfloat,\addvspace,\alloc@,\bigskipamount,\botmark,\chardef}
|
|
\DoNotIndex{\closein,\closeout,\count,\countdef,\dimen,\glossary,\goodbreak}
|
|
\DoNotIndex{\insc@unt,\intextsep,\kern,\mag,\marginpar,\maxdepth,\medskip}
|
|
\DoNotIndex{\moveleft,\newinsert,\newskip,\onecolumn,\openin,\openout}
|
|
\DoNotIndex{\read,\renewcommand,\repeat,\rightskip,\strut,\vfuzz,\voffset}
|
|
\DoNotIndex{\vsize}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
\endinput
|
|
|
|
%% END tvz-code.sty
|
|
|