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

% Increase printable page size (copied from fullpage.sty)
\topmargin 0pt
\advance \topmargin by -\headheight
\advance \topmargin by -\headsep
     
\textheight 8.9in
     
\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

% 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
% \begin{cfuncdesc}{type}{name}{arglist}
% ... description ...
% \end{cfuncdesc}
\newcommand{\cfuncline}[3]{\item[\code{#1 #2(\varvars{#3})}]\ttindex{#2}}
\newcommand{\cfuncdesc}[3]{\fulllineitems\cfuncline{#1}{#2}{#3}}
\let\endcfuncdesc\endfulllineitems

\newcommand{\cvarline}[2]{\item[\code{#1 #2}]\ttindex{#2}}
\newcommand{\cvardesc}[2]{\fulllineitems\cvarline{#1}{#2}}
\let\endcvardesc\endfulllineitems

\newcommand{\ctypeline}[1]{\item[\code{#1}]\ttindex{#1}}
\newcommand{\ctypedesc}[1]{\fulllineitems\ctypeline{#1}}
\let\endctypedesc\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

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

% Cross-referencing (AMK)
% Sample usage:
%  \begin{seealso}
%    \seemodule{rand}{Uniform random number generator}; % Module xref
%    \seetext{{\em Encyclopedia Britannica}}.                  % Ref to a book
%  \end{seealso}

\newenvironment{seealso}[0]{{\bf See Also: }}{\par}
\newcommand{\seemodule}[2]{\ref{module-#1}: {\tt #1} (#2)}
\newcommand{\seetext}[1]{\par{#1}}
