| % | 
 | % myformat.sty for the Python doc  [works only with with Latex2e] | 
 | % | 
 |  | 
 | \NeedsTeXFormat{LaTeX2e}[1995/12/01] | 
 | \ProvidesPackage{myformat} | 
 |              [1998/01/11  | 
 |                  LaTeX package (Python manual markup)] | 
 |  | 
 | % Optional packages: | 
 | % | 
 | % If processing of these documents fails at your TeX installation, | 
 | % these may be commented out (independently) to make things work. | 
 | % These are both supplied with the current version of the teTeX | 
 | % distribution. | 
 | % | 
 | % The "fancyhdr" package makes nicer page footers reasonable to | 
 | % implement, and is used to put the chapter and section information in  | 
 | % the footers. | 
 | % | 
 | % The "times" package makes the default font the PostScript Times | 
 | % font, which makes for smaller PostScript and a font that more people  | 
 | % like. | 
 | % | 
 | % The "fncychap" package is used to get the nice chapter headers.  The | 
 | % .sty file is distributed with Python, so you should not need to disable | 
 | % it.  You'd also end up with a mixed page style; uglier than stock LaTeX! | 
 | % | 
 | \RequirePackage{fancyhdr}\typeout{Using fancier footers than usual.} | 
 | \RequirePackage{times}\typeout{Using times fonts instead of Computer Modern.} | 
 | \RequirePackage[Bjarne]{fncychap}\typeout{Using nice chapter headings.} | 
 |  | 
 |  | 
 | % for PDF output, use maximal compression | 
 | \@ifundefined{pdfannotlink}{ | 
 |   \let\LinkColor=\relax | 
 |   \let\NormalColor=\relax | 
 | }{% | 
 |   \input{pdfcolor} | 
 |   \let\LinkColor=\NavyBlue | 
 |   \let\NormalColor=\Black | 
 |   \pdfcompresslevel=9 | 
 |   \let\OldContentsline=\contentsline | 
 |   \renewcommand{\contentsline}[3]{% | 
 |     \OldContentsline{#1}{% | 
 |       \pdfannotlink attr{/Border [0 0 0]} goto name{page.#3}% | 
 |         \LinkColor#2\NormalColor% | 
 |       \pdfendlink% | 
 |     }{#3}% | 
 |   } | 
 |   \let\OldLabel=\label | 
 |   \renewcommand{\label}[1]{% | 
 |     \OldLabel{#1}% | 
 |     {\pdfdest name{label.#1} fit}% | 
 |   } | 
 |   % This stuff adds a page.# destination to every PDF page, where # has | 
 |   % the same formatting as the displayed page number.  This doesn't really | 
 |   % help with the frontmatter, but does fine with the body. | 
 |   % | 
 |   % This is *heavily* based on the hyperref package. | 
 |   % | 
 |   \def\@begindvi{% | 
 |     \unvbox \@begindvibox | 
 |     \@hyperfixhead | 
 |     \global\let \@begindvi \@hyperfixhead | 
 |   } | 
 |   \def\hyperpageanchor{% | 
 |        \hyper@anchorstart{page.\thepage}\hyper@anchorend | 
 |    } | 
 |   \let\HYPERPAGEANCHOR\hyperpageanchor | 
 |   \def\@hyperfixhead{% | 
 |    \let\H@old@thehead\@thehead | 
 |        \gdef\@foo{\pdfdest name{page.\thepage} fit}% | 
 |      \expandafter\ifx\expandafter\@empty\H@old@thehead | 
 |        \def\H@old@thehead{\hfil}\fi | 
 |     \def\@thehead{\@foo\relax\H@old@thehead}% | 
 |   } | 
 | } | 
 |  | 
 | % Increase printable page size (copied from fullpage.sty) | 
 | \topmargin 0pt | 
 | \advance \topmargin by -\headheight | 
 | \advance \topmargin by -\headsep | 
 |  | 
 | % attempt to work a little better for A4 users | 
 | \@ifundefined{paperheight}{ | 
 |   \textheight 9in | 
 | }{ | 
 |   \textheight \paperheight | 
 |   \advance\textheight by -2in | 
 | } | 
 |  | 
 | \oddsidemargin 0pt | 
 | \evensidemargin \oddsidemargin | 
 | \marginparwidth 0.5in | 
 |  | 
 | \textwidth 6.5in | 
 |  | 
 | % Style parameters and macros used by most documents here | 
 | \raggedbottom | 
 | \sloppy | 
 | \parindent = 0mm | 
 | \parskip =   2mm | 
 | \hbadness = 5000		% don't print trivial gripes | 
 |  | 
 | \pagestyle{empty}		% start this way; change for | 
 | \pagenumbering{roman}		% ToC & chapters | 
 | \setcounter{secnumdepth}{1} | 
 |  | 
 | % Use this to set the font family for headers and other decor: | 
 | \newcommand{\HeaderFamily}{\sffamily} | 
 |  | 
 | % Redefine the 'normal' header/footer style when using "fancyhdr" package: | 
 | \@ifundefined{fancyhf}{}{ | 
 |   % Use \pagestyle{normal} as the primary pagestyle for text. | 
 |   \fancypagestyle{normal}{ | 
 |     \fancyhf{} | 
 |     \fancyfoot[LE,RO]{{\HeaderFamily\thepage}} | 
 |     \fancyfoot[LO]{{\HeaderFamily\nouppercase{\rightmark}}} | 
 |     \fancyfoot[RE]{{\HeaderFamily\nouppercase{\leftmark}}} | 
 |     \renewcommand{\headrulewidth}{0pt} | 
 |     \renewcommand{\footrulewidth}{0.4pt} | 
 |   } | 
 |   % Update the plain style so we get the page number & footer line, | 
 |   % but not a chapter or section title.  This is to keep the first | 
 |   % page of a chapter and the blank page between chapters `clean.' | 
 |   \fancypagestyle{plain}{ | 
 |     \fancyhf{} | 
 |     \fancyfoot[LE,RO]{{\HeaderFamily\thepage}} | 
 |     \renewcommand{\headrulewidth}{0pt} | 
 |     \renewcommand{\footrulewidth}{0.4pt} | 
 |   } | 
 |   % Redefine \cleardoublepage so that the blank page between chapters | 
 |   % gets the plain style and not the fancy style.  This is described | 
 |   % in the documentation for the fancyhdr package by Piet von Oostrum. | 
 |   \renewcommand{\cleardoublepage}{ | 
 |     \clearpage\if@openright \ifodd\c@page\else | 
 |     \hbox{} | 
 |     \thispagestyle{plain} | 
 |     \newpage | 
 |     \if@twocolumn\hbox{}\newpage\fi\fi\fi} | 
 | } | 
 |  | 
 | % old code font selections: | 
 | \let\codefont=\tt | 
 | \let\sectcodefont=\tt | 
 |  | 
 | % (Haven't found a new one that gets <, >, and _ right without being | 
 | % monospaced.) | 
 |  | 
 |  | 
 | % This sets up the {verbatim} environment to be indented and a minipage, | 
 | % and to have all the other mostly nice properties that we want for | 
 | % code samples. | 
 |  | 
 | % Variable used by begin code command | 
 | \newlength{\codewidth} | 
 |  | 
 | \newcommand{\examplevspace}{2mm} | 
 | \newcommand{\exampleindent}{1cm} | 
 |  | 
 | \let\OldVerbatim=\verbatim | 
 | \let\OldEndVerbatim=\endverbatim | 
 | \renewcommand{\verbatim}{% | 
 |   \begingroup% | 
 |   \setlength{\parindent}\exampleindent% | 
 |   % Calculate the text width for the minipage: | 
 |   \setlength{\codewidth}{\linewidth}% | 
 |   \addtolength{\codewidth}{-\parindent}% | 
 |   % | 
 |   \par% | 
 |   \vspace\examplevspace% | 
 |   \indent% | 
 |   \begin{minipage}[t]{\codewidth}% | 
 |     \small% | 
 |     \OldVerbatim% | 
 | } | 
 | \renewcommand{\endverbatim}{% | 
 |     \OldEndVerbatim% | 
 |   \end{minipage}% | 
 |   \endgroup% | 
 | } | 
 |  | 
 | % Augment the sectioning commands used to get our own font family in place: | 
 | \renewcommand{\section}{\@startsection {section}{1}{\z@}% | 
 |                                    {-3.5ex \@plus -1ex \@minus -.2ex}% | 
 |                                    {2.3ex \@plus.2ex}% | 
 |                                    {\reset@font\Large\HeaderFamily}} | 
 | \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% | 
 |                                      {-3.25ex\@plus -1ex \@minus -.2ex}% | 
 |                                      {1.5ex \@plus .2ex}% | 
 |                                      {\reset@font\large\HeaderFamily}} | 
 | \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}% | 
 |                                      {-3.25ex\@plus -1ex \@minus -.2ex}% | 
 |                                      {1.5ex \@plus .2ex}% | 
 |                                      {\reset@font\normalsize\HeaderFamily}} | 
 | \renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% | 
 |                                     {3.25ex \@plus1ex \@minus.2ex}% | 
 |                                     {-1em}% | 
 |                                     {\reset@font\normalsize\HeaderFamily}} | 
 | \renewcommand{\subparagraph}{\@startsection{subparagraph}{5}{\parindent}% | 
 |                                        {3.25ex \@plus1ex \@minus .2ex}% | 
 |                                        {-1em}% | 
 |                                       {\reset@font\normalsize\HeaderFamily}} | 
 |  | 
 |  | 
 | % Underscore hack (only act like subscript operator if in math mode) | 
 | % | 
 | % The following is due to Mark Wooding (the old version didn't work with | 
 | % Latex 2e. | 
 |  | 
 | \DeclareRobustCommand\hackscore{% | 
 |   \ifmmode_\else\textunderscore\fi% | 
 | } | 
 | \begingroup | 
 | \catcode`\_\active | 
 | \def\next{% | 
 |   \AtBeginDocument{\catcode`\_\active\def_{\hackscore{}}}% | 
 | } | 
 | \expandafter\endgroup\next | 
 |  | 
 | % | 
 | % This is the old hack, which didn't work with 2e. | 
 | % You should not need this since the rest of the documentation is now | 
 | % LaTeX2e-only. | 
 | % | 
 | %\def\_{\ifnum\fam=\ttfamily \char'137\else{\tt\char'137}\fi} | 
 | %\catcode`\_=12 | 
 | %\catcode`\_=\active\def_{\ifnum\fam=\ttfamily \char'137 \else{\tt\char'137}\fi} | 
 |  | 
 |  | 
 |  | 
 | %%  Lots of index-entry generation support. | 
 |  | 
 | % Command to wrap around stuff that refers to function / module / | 
 | % attribute names  in the index.  Default behavior: like \code{}.  To | 
 | % just keep the index entries in the roman font, uncomment the second | 
 | % definition to use instead; it matches O'Reilly style more. | 
 | % | 
 | \newcommand{\idxcode}[1]{\codefont{#1}} | 
 | %\renewcommand{\idxcode}[1]{#1} | 
 |  | 
 | % Command to generate two index entries (using subentries) | 
 | \newcommand{\indexii}[2]{\index{#1!#2}\index{#2!#1}} | 
 |  | 
 | % And three entries (using only one level of subentries) | 
 | \newcommand{\indexiii}[3]{\index{#1!#2 #3}\index{#2!#3, #1}\index{#3!#1 #2}} | 
 |  | 
 | % And four (again, using only one level of subentries) | 
 | \newcommand{\indexiv}[4]{ | 
 | \index{#1!#2 #3 #4} | 
 | \index{#2!#3 #4, #1} | 
 | \index{#3!#4, #1 #2} | 
 | \index{#4!#1 #2 #3} | 
 | } | 
 |  | 
 | % Command to generate a reference to a function, statement, keyword, | 
 | % operator. | 
 | \newcommand{\stindex}[1]{\indexii{statement}{#1@{\idxcode{#1}}}} | 
 | \newcommand{\opindex}[1]{\indexii{operator}{#1@{\idxcode{#1}}}} | 
 | \newcommand{\exindex}[1]{\indexii{exception}{#1@{\idxcode{#1}}}} | 
 | \newcommand{\obindex}[1]{\indexii{object}{#1}} | 
 | \newcommand{\bifuncindex}[1]{\index{#1@{\idxcode{#1()}} (built-in function)}} | 
 |  | 
 | % Add an index entry for a module | 
 | \newcommand{\refmodule}[2]{\index{#1@{\idxcode{#1}} (#2module)}} | 
 | \newcommand{\refmodindex}[1]{\refmodule{#1}{}} | 
 | \newcommand{\refbimodindex}[1]{\refmodule{#1}{built-in }} | 
 | \newcommand{\refstmodindex}[1]{\refmodule{#1}{standard }} | 
 |  | 
 | % support for the module index | 
 | \newwrite\modindexfile | 
 | \openout\modindexfile=mod\jobname.idx | 
 |  | 
 | % Add the defining entry for a module | 
 | \newcommand{\defmodindex}[2]{% | 
 |   \index{#1@{\idxcode{#1}} (#2module)|textbf}% | 
 |   \write\modindexfile{#1 \thepage}} | 
 |  | 
 | % built-in & Python modules in the main distribution | 
 | \newcommand{\bimodindex}[1]{\defmodindex{#1}{built-in }} | 
 | \newcommand{\stmodindex}[1]{\defmodindex{#1}{standard }} | 
 |  | 
 | % Python & extension modules outside the main distribution | 
 | \newcommand{\modindex}[1]{\defmodindex{#1}{}} | 
 | \newcommand{\exmodindex}[1]{\defmodindex{#1}{}} | 
 |  | 
 | % Additional string for an index entry | 
 | \newcommand{\index@subitem}{} | 
 | \newcommand{\setindexsubitem}[1]{\renewcommand{\index@subitem}{#1}} | 
 | \newcommand{\ttindex}[1]{\index{#1@{\idxcode{#1}} \index@subitem}} | 
 |  | 
 |  | 
 | % {fulllineitems} is used in one place in libregex.tex, but is really for | 
 | % internal use in this file. | 
 | % | 
 | \newenvironment{fulllineitems}{ | 
 |   \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt | 
 |                  \rightmargin 0pt \topsep -\parskip \partopsep \parskip | 
 |                  \itemsep -\parsep | 
 |                  \let\makelabel=\itemnewline} | 
 | }{\end{list}} | 
 |  | 
 |  | 
 | % cfuncdesc should be called as | 
 | % \begin{cfuncdesc}{type}{name}{arglist} | 
 | % ... description ... | 
 | % \end{cfuncdesc} | 
 | \newenvironment{cfuncdesc}[3]{% | 
 |   \begin{fulllineitems}% | 
 |     \item[\code{#1 \bfcode{#2}(\varvars{#3})}]% | 
 |     \index{#2@{\idxcode{#2()}}}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newenvironment{cvardesc}[2]{% | 
 |   \begin{fulllineitems}% | 
 |     \item[\code{#1 \bfcode{#2}}]% | 
 |     \index{#2@{\idxcode{#2}}}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newenvironment{ctypedesc}[1]{% | 
 |   \begin{fulllineitems}% | 
 |     \item[\bfcode{#1}]\ttindex{#1} | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newcommand{\funcline}[2]{\funclineni{#1}{#2}\ttindex{#1()}} | 
 | \newenvironment{funcdesc}[2]{% | 
 |   \begin{fulllineitems}% | 
 |     \funcline{#1}{#2}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newcommand{\optional}[1]{% | 
 |   {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} | 
 |  | 
 | % similar to {funcdesc}, but doesn't add to the index | 
 | \newcommand{\funclineni}[2]{\item[\code{\bfcode{#1}(\varvars{#2})}]} | 
 | \newenvironment{funcdescni}[2]{% | 
 |   \begin{fulllineitems}% | 
 |     \funclineni{#1}{#2}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newenvironment{classdesc}[2]{% | 
 |   \begin{fulllineitems}% | 
 |     \item[\code{\bfcode{#1}(\varvars{#2})}]% | 
 |     \ttindex{#1}% | 
 |     \def\baseclasses##1{}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newenvironment{excdesc}[1]{% | 
 |   \begin{fulllineitems}% | 
 |     \item[\bfcode{#1}]\ttindex{#1}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newcommand{\dataline}[1]{\datalineni{#1}\ttindex{#1}} | 
 | \newenvironment{datadesc}[1]{% | 
 |   \begin{fulllineitems}% | 
 |     \dataline{#1}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | % similar to {datadesc}, but doesn't add to the index | 
 | \newcommand{\datalineni}[1]{\item[\bfcode{#1}]} | 
 | \newenvironment{datadescni}[1]{% | 
 |   \begin{fulllineitems}% | 
 |     \datalineni{#1}% | 
 | }{\end{fulllineitems}} | 
 |  | 
 | \newenvironment{opcodedesc}[2]{% | 
 |   \begin{fulllineitems}% | 
 |     \item[\bfcode{#1}\quad\var{#2}]% | 
 | }{\end{fulllineitems}} | 
 |  | 
 |  | 
 | \let\nodename=\label | 
 |  | 
 | % For these commands, use \command{} to get the typography right, not  | 
 | % {\command}.  This works better with the texinfo translation. | 
 | \newcommand{\ABC}{{\sc abc}} | 
 | \newcommand{\UNIX}{{\sc Unix}} | 
 | \newcommand{\POSIX}{POSIX} | 
 | \newcommand{\ASCII}{{\sc ascii}} | 
 | \newcommand{\Cpp}{C\protect\raisebox{.18ex}{++}} | 
 | \newcommand{\C}{C} | 
 | \newcommand{\EOF}{{\sc eof}} | 
 | \newcommand{\NULL}{\code{NULL}} | 
 |  | 
 | % code is the most difficult one... | 
 | \newcommand{\code}[1]{{\@vobeyspaces\@noligs\def\{{\char`\{}\def\}{\char`\}}\def\~{\char`\~}\def\^{\char`\^}\def\e{\char`\\}\def\${\char`\$}\def\#{\char`\#}\def\&{\char`\&}\def\%{\char`\%}% | 
 | \mbox{\codefont{#1}}}} | 
 |  | 
 | \newcommand{\bfcode}[1]{\code{\bfseries#1}} % bold-faced code font | 
 | \newcommand{\kbd}[1]{\mbox{\tt #1}} | 
 | \newcommand{\key}[1]{\mbox{\tt #1}} | 
 | \newcommand{\samp}[1]{\mbox{`\code{#1}'}} | 
 | % This weird definition of \var{} allows it to always appear in roman | 
 | % italics, and won't get funky in code fragments when we play around | 
 | % with fonts. | 
 | \newcommand{\var}[1]{\mbox{\normalsize\textrm{\textit{#1\/}}}} | 
 | \renewcommand{\emph}[1]{{\em #1\/}} | 
 | \newcommand{\dfn}[1]{\emph{#1}} | 
 | \newcommand{\strong}[1]{{\bf #1}} | 
 | % let's experiment with a new font: | 
 | \newcommand{\file}[1]{\mbox{`\small\textsf{#1}'}} | 
 |  | 
 | % Use this def/redef approach for \url{} since hyperref defined this already, | 
 | % but only if we actually used hyperref: | 
 | \@ifundefined{pdfannotlink}{% | 
 |   \newcommand{\pythonurl}[1]{\mbox{\small\textsf{#1}}}% | 
 | }{ | 
 |   \newcommand{\pythonurl}[1]{{% | 
 |     \pdfannotlink attr{/Border [0 0 0]} user{/S /URI /URI (#1)}% | 
 |     \LinkColor%				color of the link text | 
 |     \mbox{\small\textsf{#1}}% | 
 |     \NormalColor%			Turn it back off; these are declarative | 
 |     \pdfendlink}%			and don't appear bound to the current | 
 |   }%					formatting "box". | 
 | } | 
 | \let\url=\pythonurl | 
 | \newcommand{\email}[1]{\mbox{\small\textsf{#1}}} | 
 |  | 
 | \newcommand{\varvars}[1]{{\def\,{\/{\char`\,}}\var{#1}}} | 
 |  | 
 | \newif\iftexi\texifalse | 
 | \newif\iflatex\latextrue | 
 |  | 
 | % These should be used for all references to identifiers which are | 
 | % used to refer to instances of specific language constructs.  See the | 
 | % names for specific semantic assignments. | 
 | % | 
 | % For now, don't do anything really fancy with them; just use them as | 
 | % logical markup.  This might change in the future. | 
 | % | 
 | \let\module=\code | 
 | \let\keyword=\code | 
 | \let\exception=\code | 
 | \let\class=\code | 
 | \let\function=\code | 
 | \let\member=\code | 
 | \let\method=\code | 
 |  | 
 | \let\cfunction=\code | 
 | \let\ctype=\code | 
 | \let\cdata=\code | 
 |  | 
 | % constants defined in Python modules or C headers, not language constants: | 
 | \let\constant=\code | 
 |  | 
 | \newcommand{\manpage}[2]{{\emph{#1}(#2)}} | 
 | \newcommand{\rfc}[1]{RFC #1\index{RFC!RFC #1}} | 
 | \newcommand{\program}[1]{\strong{#1}} | 
 |  | 
 |  | 
 | \newenvironment{tableii}[4]{% | 
 |   \begin{center}% | 
 |     \def\lineii##1##2{\csname#2\endcsname{##1}&##2\\}% | 
 |     \begin{tabular}{#1}\hline#3\\ \hline% | 
 | }{% | 
 |       \hline% | 
 |     \end{tabular}% | 
 |   \end{center}% | 
 | } | 
 |  | 
 | \newenvironment{tableiii}[5]{% | 
 |   \begin{center}% | 
 |     \def\lineiii##1##2##3{\csname#2\endcsname{##1}&##2&##3\\}% | 
 |     \begin{tabular}{#1}\hline#3\\% | 
 |       \hline% | 
 | }{% | 
 |       \hline% | 
 |     \end{tabular}% | 
 |   \end{center}% | 
 | } | 
 |  | 
 | \newcommand{\itemnewline}[1]{% | 
 |   \@tempdima\linewidth% | 
 |   \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}% | 
 | } | 
 |  | 
 | \newcommand{\sectcode}[1]{{\sectcodefont{#1}}} | 
 |  | 
 | % Cross-referencing (AMK) | 
 | % Sample usage: | 
 | %  \begin{seealso} | 
 | %    \seemodule{rand}{Uniform random number generator}; % Module xref | 
 | %    \seetext{\emph{Encyclopedia Britannica}}.          % Ref to a book | 
 | %  \end{seealso} | 
 |  | 
 | \newenvironment{seealso}[0]{ | 
 |   \strong{See Also:}\par | 
 |   % These should only be defined within the {seealso} environment: | 
 |   \def\seemodule##1##2{\ref{module-##1}:\quad Module \module{##1}\quad (##2)} | 
 |   \def\seetext##1{\par{##1}} | 
 | }{\par} | 
 |  | 
 |  | 
 | % Fix the theindex environment to add an entry to the Table of | 
 | % Contents; this is much nicer than just having to jump to the end of | 
 | % the book and flip around, especially with multiple indexes. | 
 | % | 
 | \let\OldTheindex=\theindex | 
 | \renewcommand{\theindex}{ | 
 |   \cleardoublepage | 
 |   \OldTheindex | 
 |   \addcontentsline{toc}{chapter}{\indexname} | 
 | } | 
 |  | 
 | %  Use a similar trick to catch the end of the {abstract} environment, | 
 | %  but here make sure the abstract is followed by a blank page if the | 
 | % 'openright' option is used. | 
 | % | 
 | \let\OldEndAbstract=\endabstract | 
 | \renewcommand{\endabstract}{ | 
 |   \if@openright | 
 |     \ifodd\value{page} | 
 |       \typeout{Adding blank page after the abstract.} | 
 |       \vfil\pagebreak | 
 |     \fi | 
 |   \fi | 
 |   \OldEndAbstract | 
 | } | 
 |  | 
 | % This wraps the \tableofcontents macro with all the magic to get the | 
 | % spacing right and have the right number of pages if the 'openright' | 
 | % option has been used.  This eliminates a fair amount of crud in the | 
 | % individual document files. | 
 | % | 
 | \let\OldTableofcontents=\tableofcontents | 
 | \renewcommand{\tableofcontents}[0]{% | 
 |   \setcounter{page}{1}% | 
 |   \pagebreak% | 
 |   \pagestyle{plain}% | 
 |   {% | 
 |   \parskip = 0mm% | 
 |   \OldTableofcontents% | 
 |   \if@openright% | 
 |     \ifodd\value{page}% | 
 |       \typeout{Adding blank page after the table of contents.}% | 
 |       \pagebreak\hspace{0pt}% | 
 |     \fi% | 
 |   \fi% | 
 |   }% | 
 |   \cleardoublepage% | 
 |   \pagenumbering{arabic}% | 
 |   \@ifundefined{fancyhf}{}{\pagestyle{normal}}% | 
 | } | 
 |  | 
 | % Allow the release number to be specified independently of the | 
 | % \date{}.  This allows the date to reflect the document's date and | 
 | % release to specify the Python release that is documented. | 
 | % | 
 | \newcommand{\@release}{} | 
 | \newcommand{\version}{} | 
 | \newcommand{\releasename}{Release} | 
 | \newcommand{\release}[1]{% | 
 |   \renewcommand{\@release}{\releasename\space\version}% | 
 |   \renewcommand{\version}{#1}} | 
 |  | 
 | % Allow specification of the author's address separately from the | 
 | % author's name.  This can be used to format them differently, which | 
 | % is a good thing. | 
 | % | 
 | \newcommand{\@authoraddress}{} | 
 | \newcommand{\authoraddress}[1]{\renewcommand{\@authoraddress}{#1}} | 
 |  | 
 | % Change the title page to look a bit better, and fit in with the | 
 | % fncychap ``Bjarne'' style a bit better. | 
 | % | 
 | \renewcommand{\maketitle}{% | 
 |   \begin{titlepage}% | 
 |     \let\footnotesize\small | 
 |     \let\footnoterule\relax | 
 |     \@ifundefined{ChTitleVar}{}{% | 
 |       \mghrulefill{\RW}}% | 
 |     \@ifundefined{pdfinfo}{}{ | 
 |       \pdfinfo | 
 |         author {\@author} | 
 |         title {\@title} | 
 |     } | 
 |     \begin{flushright}% | 
 |       {\rm\Huge\HeaderFamily \@title \par}% | 
 |       {\em\LARGE\HeaderFamily \@release \par} | 
 |       \vfill | 
 |       {\LARGE\HeaderFamily \@author \par} | 
 |       \vfill\vfill | 
 |       {\large | 
 |        \@date \par | 
 |        \vskip 3em | 
 |        \@authoraddress \par | 
 |       }% | 
 |     \end{flushright}%\par | 
 |     \@thanks | 
 |   \end{titlepage}% | 
 |   \setcounter{footnote}{0}% | 
 |   \let\thanks\relax\let\maketitle\relax | 
 |   \gdef\@thanks{}\gdef\@author{}\gdef\@title{} | 
 | } | 
 |  | 
 | % This sets up the fancy chapter headings that make the documents look | 
 | % at least a little better than the usual LaTeX output. | 
 | % | 
 | \@ifundefined{ChTitleVar}{}{ | 
 |   \ChNameVar{\raggedleft\normalsize\HeaderFamily} | 
 |   \ChNumVar{\raggedleft \bfseries\Large\HeaderFamily} | 
 |   \ChTitleVar{\raggedleft \rm\Huge\HeaderFamily} | 
 |   % This creates chapter heads without the leading \vspace*{}: | 
 |   \def\@makechapterhead#1{% | 
 |     {\parindent \z@ \raggedright \normalfont | 
 |       \ifnum \c@secnumdepth >\m@ne | 
 |         \DOCH | 
 |       \fi | 
 |       \interlinepenalty\@M | 
 |       \DOTI{#1} | 
 |     } | 
 |   } | 
 |   \typeout{Using fancy chapter headings.} | 
 | } | 
 |  | 
 | % Tell TeX about pathological hyphenation cases: | 
 | \hyphenation{Base-HTTP-Re-quest-Hand-ler} |