%
% myformat.sty for the Python doc  [updated to work with Latex2e]
%

% Style parameters and macros used by most documents here
\raggedbottom
\sloppy
\parindent =       0mm
\parskip =         2mm

% Variable used by begin code command
\newlength{\codewidth}

% Command to start a code block (follow this by \begin{verbatim})
\newcommand{\bcode}{
	% Calculate the text width for the minipage:
	\setlength{\codewidth}{\linewidth}
	\addtolength{\codewidth}{-\parindent}
	%
	\par
	\vspace{3mm}
	\indent
	\begin{minipage}[t]{\codewidth}
}

% Command to end a code block (precede this by \end{verbatim})
\newcommand{\ecode}{
	\end{minipage}
	\vspace{3mm}
	\par
	\noindent
}

% 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.  
% If you're still using Latex 2.09, you can give it a try if the above fails.
%
%\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}

% Define \itembreak: force the text after an item to start on a new line
\newcommand{\itembreak}{
\mbox{}
\\*[0mm]
}

% 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@{\tt#1}}}
\newcommand{\kwindex}[1]{\indexii{keyword}{#1@{\tt#1}}}
\newcommand{\opindex}[1]{\indexii{operator}{#1@{\tt#1}}}
\newcommand{\exindex}[1]{\indexii{exception}{#1@{\tt#1}}}
\newcommand{\obindex}[1]{\indexii{object}{#1}}
\newcommand{\bifuncindex}[1]{\index{#1@{\tt#1} (built-in function)}}

% Add an index entry for a module
\newcommand{\modindex}[2]{\index{#1@{\tt#1} (#2module)}}
\newcommand{\bimodindex}[1]{\modindex{#1}{built-in }}
\newcommand{\stmodindex}[1]{\modindex{#1}{standard }}

% Additional string for an index entry
\newcommand{\indexsubitem}{}
\newcommand{\ttindex}[1]{\index{#1@{\tt#1} \indexsubitem}}

% Define \itemjoin: some negative vspace to join two items together
\newcommand{\itemjoin}{
\mbox{}
\vspace{-\itemsep}
\vspace{-\parsep}
}

% Define \funcitem{func}{args}: define a function item
\newcommand{\funcitem}[2]{%
\ttindex{#1}%
\item[\code{#1(\varvars{#2})}]
\ 
}


% from user-level, fulllineitems should be called as an environment
\def\fulllineitems{\list{}{\labelwidth \leftmargin \labelsep 0pt
\rightmargin 0pt \topsep -\parskip \partopsep \parskip
\itemsep -\parsep
\let\makelabel\itemnewline}}
\let\endfulllineitems\endlist


% cfuncdesc should be called as an \begin{cfuncdesc} ... \end{cfuncdesc}
\newcommand{\cfuncline}[3]{\item[\code{#1 #2(\varvars{#3})}]\ttindex{#2}}
\newcommand{\cfuncdesc}[3]{\fulllineitems\cfuncline{#1}{#2}{#3}}
\let\endcfuncdesc\endfulllineitems

% funcdesc should be called as an \begin{funcdesc} ... \end{funcdesc}
\newcommand{\funcline}[2]{\item[\code{#1(\varvars{#2})}]\ttindex{#1}}
\newcommand{\funcdesc}[2]{\fulllineitems\funcline{#1}{#2}}
\let\endfuncdesc\endfulllineitems
\newcommand{\optional}[1]{{\ \Large[}{#1}\hspace{0.5mm}{\Large]}\ }


% same for excdesc
\newcommand{\excline}[1]{\item[\code{#1}]\ttindex{#1}}
\newcommand{\excdesc}[1]{\fulllineitems\excline{#1}}
\let\endexcdesc\endfulllineitems

% same for datadesc
\newcommand{\dataline}[1]{\item[\code{#1}]\ttindex{#1}}
\newcommand{\datadesc}[1]{\fulllineitems\dataline{#1}}
\let\enddatadesc\endfulllineitems


% Define \dataitem{name}: define a data item
\newcommand{\dataitem}[1]{%
\ttindex{#1}%
\item[{\tt #1}]
\ 
}

% Define \excitem{name}: define an exception item
\newcommand{\excitem}[1]{%
\ttindex{#1}%
\item[{\tt #1}]
\itembreak
}

\let\nodename=\label

\newcommand{\ABC}{{\sc abc}}
\newcommand{\UNIX}{{\sc Unix}}
\newcommand{\ASCII}{{\sc ascii}}
\newcommand{\Cpp}{C\protect\raisebox{.18ex}{++}}
\newcommand{\C}{C}
\newcommand{\EOF}{{\sc eof}}

% 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{\tt #1}}}

\newcommand{\kbd}[1]{\mbox{\tt #1}}
\newcommand{\key}[1]{\mbox{\tt #1}}
\newcommand{\samp}[1]{\mbox{`\code{#1}'}}
\newcommand{\var}[1]{\mbox{\it#1\/}}
\let\file=\samp
\newcommand{\dfn}[1]{{\em #1\/}}
\renewcommand{\emph}[1]{{\em #1\/}}
\newcommand{\strong}[1]{{\bf #1}}

\newcommand{\varvars}[1]{{\def\,{\/{\char`\,}}\var{#1}}}

\newif\iftexi\texifalse
\newif\iflatex\latextrue

\newenvironment{tableii}[4]{\begin{center}\def\lineii##1##2{\csname#2\endcsname{##1}&##2\\}\begin{tabular}{#1}\hline#3&#4\\
\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&#4&#5\\
\hline}{\hline\end{tabular}\end{center}}

\newcommand{\itemnewline}[1]{\@tempdima\linewidth
\advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}}

\newcommand{\sectcode}[1]{{\tt #1}}
