% Style parameters and macros used by most documents here

\input{a4wide.sty} % Take this out if it doesn't exist or doesn't work

% This has to be tuned each time the repair person takes the printer apart:
\addtolength{\oddsidemargin}{-2.5mm}
\addtolength{\evensidemargin}{-2.5mm}

% Style parameters
\raggedbottom
\sloppy
\parindent =       0mm
\parskip =         2mm

% Frequently used system name
%\newcommand{\UNIX}{U{\sc nix}}

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

% Underscores are not magic throughout the Python documentation.
% This still only gives the right effect in the tt font!!!
\def\_{\ifnum\fam=\ttfam \char'137\else{\tt\char'137}\fi}
\catcode`\_=12
\catcode`\_=\active\def_{\ifnum\fam=\ttfam \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[{\tt #1(#2)}]
\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


% 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

% 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{\C}{{\bf C}}
\newcommand{\C}{C}
\newcommand{\EOF}{{\sc eof}}

% code is the most difficult one...
%\frenchspacing removed, because \section, etc., can't handle it
\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}}}
%This one does not work
%%%% myspecials, same as dospecials, but without {, } and \
%%%\def\myspecials{\do\ \do\$\do\&%
%%%  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
%%%\newcommand{\code}[1]{\begingroup \catcode``=13 \@noligs
%%%\tt \let\do\@makeother \myspecials
%%%#1\endgroup}
\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]{{\sl #1\/}}
\newcommand{\emph}[1]{{\em #1\/}}
\newcommand{\strong}[1]{{\bf #1}}

%\newcommand{\varvars}[1]{{\catcode`\,=\active\def,{\tt\char`\,\/tt}\var{#1}}}
%\newcommand{\varvars}[1]{{\def\,{\/{\tt\char`\,}}\var{#1}}}
\newcommand{\varvars}[1]{{\def\,{\/{\tt\char`\,}}\def\({\/{\tt\char`\(}}\def\){\/{\tt\char`\)}}\var{#1}}}

\newif\iftexi\texifalse
%not supported yet%\newif\iflatex\latextrue

\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}}
%%%
%%%\let\orgchapter\chapter
%%%\def\chapter#1{{\let\code\sectcode\orgchapter{#1}}}
%%%\let\orgsection\section
%%%\def\section#1{{\let\code\sectcode\orgsection{#1}}}
%%%\let\orgsubsection\subsection
%%%\def\subsection#1{{\let\code\sectcode\orgsubsection{#1}}}
%%%\let\orgsubsubsection\subsubsection
%%%\def\subsubsection#1{{\let\code\sectcode\orgsubsubsection{#1}}}
%%%\let\orgsubsubsubsection\subsubsubsection
%%%\def\subsubsubsection#1{{\let\code\sectcode\orgsubsubsubsection{#1}}}

