% SWI-Prolog document-style % Test for PDF generation using pdflatex \newif\ifpdf \ifx\pdfoutput\undefined \pdffalse \else \pdfoutput=1 \pdftrue \fi % Get hyperrefs to work \usepackage{makeidx} \usepackage{url} \ifpdf \usepackage[pdftex,colorlinks=true,urlcolor=blue]{hyperref} \pdfcompresslevel=9 % \pdfcatalog{ % /PageMode /UseOutLines % } \usepackage[pdftex]{graphicx} \DeclareGraphicsExtensions{.pdf,.jpg,.png} \else \usepackage[dvips]{graphicx} \DeclareGraphicsExtensions{.eps,.ps} \fi \graphicspath{{figs/}{./}} % Other styles \input logo.sty \usepackage{a4wide} \usepackage{fancyheadings} \usepackage{fancychap} \usepackage{longtable} \usepackage{ifthen} \usepackage{dcolumn} \usepackage{calc} \setlongtables \catcode`\^^A=8% downarrow are for subscripts \catcode`\_=\active \def_{\ifmmode\else\_\fi} \def\vobeyspaces{\@vobeyspaces} \newcommand{\onlinebreak}{} % References \newcommand{\secref}[1]{section~\ref{sec:#1}} \newcommand{\appref}[1]{appendix~\ref{sec:#1}} \newcommand{\chapref}[1]{chapter~\ref{sec:#1}} \newcommand{\figref}[1]{figure~\ref{fig:#1}} \newcommand{\tabref}[1]{table~\ref{tab:#1}} \newcommand{\Secref}[1]{Section~\ref{sec:#1}} \newcommand{\Appref}[1]{Appendix~\ref{sec:#1}} \newcommand{\Chapref}[1]{Chapter~\ref{sec:#1}} \newcommand{\Figref}[1]{Figure~\ref{fig:#1}} \newcommand{\Tabref}[1]{Table~\ref{tab:#1}} \newcommand{\tm}{$^{tm}$} \newcommand{\reffont}{\tt} \newcommand{\predref}[2]{% % functor/arity \mbox{\reffont #1/#2}} \newcommand{\functor}[2]{% % functor/arity (no predicate) \mbox{\reffont #1/#2}} \newcommand{\manref}[2]{% % page(n) \mbox{{\reffont #1(}{\rm #2}{\tt )}}} \newcommand{\funcref}[2]{% % function(Args...) \mbox{{\reffont #1(}{\it #2}{\tt )}}} % Descriptions (definitions) of various things \def\@nodescription{false} \newcommand{\defentry}[1]{\definition{#1}} \newcommand{\definition}[1]{% \onlinebreak% \ifthenelse{\equal{\@nodescription}{true}}{% \def\@nodescription{false}% \makebox[-\leftmargin]{\mbox{}}\mbox{\bf #1}\\}{% \item[\mbox{#1}]\hfill\mbox{}\linebreak}} \newcommand{\nodescription}{\def\@nodescription{true}} \makeatletter \def\cmdlineoptionitem{\@ifstar{\@gluedcmdoptitem}{\@cmdoptitem}} \def\@gluedcmdoptitem#1#2{\definition{#1\var{#2}}} \def\@cmdoptitem#1#2{\definition{#1 \var{#2}}} \makeatother \newcommand{\longoptionitem}[2]{% \ifthenelse{\equal{}{#2}}{% \definition{-{}-#1}}{% \definition{-{}-#1={\it #2}}}\ignorespaces} \newcommand{\longoption}[2]{% \ifthenelse{\equal{}{#2}}{% \mbox{\reffont -{}-#1}}{% \mbox{\reffont -{}-#1={\it #2}}}} \newcommand{\traceoption}[3]{% \definition{{\tt #1} (#2)}#3% \ignorespaces} \newcommand{\pleaseoption}[3]{% \definition{#1 {\it #2} {\rm(default: \it #3)}}% \ignorespaces} \newcommand{\prologflagitem}[3]{% \definition{#1 {\it (#2% \ifthenelse{\equal{rw}{#3}}{, changeable}{})}}% \ignorespaces} \newcommand{\escapeitem}[1]{% \definition{\Sesc{\tt #1}} \ignorespaces} \newcommand{\fmtchar}[1]{% \item[\tt #1]% \ignorespaces} \newcommand{\directive}[3]{% \defentry{:- #1({\it #3})}% \index{#1/#2}\ignorespaces} \newcommand{\predicate}[3]{% \ifthenelse{\equal{#2}{0}}{% \defentry{#1}}{% \defentry{#1({\it #3})}}% \index{#1/#2}\ignorespaces} \newcommand{\dcg}[3]{% \ifthenelse{\equal{#2}{0}}{% \defentry{#1}}{% \defentry{#1({\it #3}) \texttt{\string-->}}}% \index{#1/#2}\ignorespaces} \newcommand{\infixop}[3]{% \defentry{{\it #2} #1 {\it #3}}% \index{#1/2}\ignorespaces} \newcommand{\prefixop}[2]{% \defentry{#1 {\it #2}}% \index{#1/1}\ignorespaces} \newcommand{\termitem}[2]{% \ifthenelse{\equal{}{#2}}{% \definition{#1}}{% \definition{#1({\it #2})}}\ignorespaces} \def\term{} \renewcommand{\term}[2]{% \ifthenelse{\equal{}{\protect #2}}{% {\reffont #1}}{% {\reffont #1}({\it #2})}} \newcommand{\infixterm}[3]{{\it #2} #1 {\it #2}} \newcommand{\errorterm}[2]{\mbox{\tt% \ifthenelse{\equal{}{#2}}{% #1}{% #1(#2)}}} \newcommand{\cfunction}[3]{% \defentry{{\tt #1} #2{\rm (}{\it #3}{\rm )}}% \index{#2()}\ignorespaces} \newcommand{\constructor}[2]{% \defentry{#1::#1{\rm (}{\it #2}{\rm )}}% \index{#1::#1()}\ignorespaces} \newcommand{\destructor}[1]{% \defentry{#1::\Stilde{}#1{\rm ()}}% \index{#1::\Stilde{}#1()}\ignorespaces} \newcommand{\cppcast}[2]{% \defentry{#1::operator #2{\rm ({\it void})}}% \index{#1::operator #2()}\ignorespaces} \newcommand{\cdecl}[2]{{\tt #1} {\em #2}} \newcommand{\cmacro}[3]{% \defentry{{\it #1} #2({\it #3})}% \index{#2()}\ignorespaces} \newcommand{\cglobalvar}[1]{{\tt #1}} \newcommand{\classitem}[1]{% \definition{Class #1}% \index{#1 \string\idxtype{class}}\ignorespaces} \renewcommand{\arg}[1]{\ifmmode\mbox{\em #1}\else{\em #1}\fi} \newcommand{\bnfmeta}[1]{\ifmmode{\langle\mbox{\it #1}\rangle}\else$\langle\mbox{\it #1}\rangle$\fi} \newcommand{\bnfor}{\ifmmode\mid\else$\mid$\fi} \newcommand{\isa}{& ::= &} \newcommand{\ora}{& $\mid$ &} \newcommand{\class}[1]{{\em #1}\index{#1 \string\idxtype{class}}} \newcommand{\classs}[1]{{\em #1s}\index{#1 \string\idxtype{class}}} \newcommand{\demo}[1]{{\sf #1}\index{#1 \string\idxtype{demo}}} \newcommand{\pllib}[1]{{\tt #1}\index{#1 \string\idxtype{library}}} \newcommand{\clib}[1]{{\tt #1}\index{#1 \string\idxtype{library}}} \newcommand{\tool}[1]{{\em #1}\index{#1 \string\idxtype{tool}}} \newcommand{\constf}[1]{{\reffont #1}} \newcommand{\const}[1]{{\tt #1}} \newcommand{\plflag}[1]{{\tt #1}} \newcommand{\type}[1]{{\reffont #1}} \newcommand{\idx}[1]{#1\index{#1}} \newcommand{\foreseen}[1]{\footnote{#1}} \newcommand{\metafile}[1]{\mbox{\tt #1}} \newcommand\file{\begingroup \urlstyle{tt}\Url} \newcommand\email{\begingroup \urlstyle{tt}\Url} \newcommand{\env}[1]{\mbox{\tt #1}} \newcommand{\except}[1]{\mbox{\tt #1}} \newcommand{\exam}[1]{\mbox{\tt #1}} \newcommand{\module}[1]{\mbox{\reffont #1}} \newcommand{\fileext}[1]{\mbox{\tt .#1}} \newcommand{\option}[1]{\mbox{\tt #1}} \newcommand{\cmdlineoption}[1]{\mbox{\tt #1}} \newcommand{\argoption}[2]{\mbox{\tt #1 \em #2}} \newcommand{\ctype}[1]{{\tt #1}} \newcommand{\op}[1]{{\tt #1}} \newcommand{\program}[1]{{\tt #1}} \newcommand{\manpage}[2]{{\bf #1}(#2)} \newcommand{\chr}[1]{{\tt #1}} \newcommand{\jargon}[1]{{\em #1}} \newcommand{\strong}[1]{{\bf #1}} \newcommand{\texcmd}[1]{{\Sesc}{\tt #1}} \newcommand{\texenv}[1]{{\tt #1}} \newcommand{\texmode}[1]{{\tt #1}} \newcommand{\HTML}[1]{{\bf #1}} \newcommand{\libdoc}[2]{\section{\pllib{#1}: #2}\label{sec:lib:#1}} \newcommand{\key}[1]{{\sf #1}} \newcommand{\menu}[2]{% {\sf #1}% \ifthenelse{\equal{#2}{}}{% }{% ~(\texttt{#2})}} \newcommand\satom{\begingroup \urlstyle{tt}\Url} \newcommand\fmtseq{\begingroup \urlstyle{tt}\Url} \urldef{\Sexe}\satom{#!} % #! \urldef{\Scut}\satom{!} % ! \urldef{\Scomma}\satom{,} % , \urldef{\Sifthen}\satom{->} % -> \urldef{\Ssoftcut}\satom{*->} % *-> \urldef{\Sdot}\satom{.} % . \urldef{\Ssemicolon}\satom{;} % ; \urldef{\Slt}\satom{<} % < \urldef{\Seq}\satom{=} % = \urldef{\Suniv}\satom{=..} % =.. \urldef{\Saeq}\satom{=:=} % =:= \urldef{\Sle}\satom{=<} % =< \urldef{\Sequal}\satom{==} % == \urldef{\Sstructeq}\satom{=@=} % =@= \urldef{\Sstructneq}\satom{\=@=} % \=@= \urldef{\Sane}\satom{=\=} % =\= \urldef{\Sgt}\satom{>} % > \urldef{\Sge}\satom{>=} % >= \urldef{\Stlt}\satom{@<} % @< \urldef{\Stle}\satom{@=<} % @=< \urldef{\Stgt}\satom{@>} % @> \urldef{\Stge}\satom{@>=} % @>= \urldef{\Snot}\satom{\+} % \+ \urldef{\Sne}\satom{\=} % \= \urldef{\Snequal}\satom{\==} % \== \urldef{\Shat}\satom{^} % ^ \urldef{\Sbar}\satom{|} % | \urldef{\Stimes}\satom{*} % * \urldef{\Spow}\satom{**} % ** \urldef{\Splus}\satom{+} % + \urldef{\Sminus}\satom{-} % - \urldef{\Sdiv}\satom{/} % / \urldef{\Sidiv}\satom{//} % // \urldef{\Sand}\satom{/\} % /\ \urldef{\Slshift}\satom{<<} % << \urldef{\Srshift}\satom{>>} % >> \urldef{\Sneg}\satom{\} % \ \urldef{\Sesc}\satom{\} % \ \urldef{\Sor}\satom{\/} % \/ \urldef{\Sdollar}\satom{$} % $ \urldef{\Squest}\satom{?} % ? \urldef{\Smodule}\satom{:} % : \urldef{\Sneck}\satom{:-} % :- \urldef{\Sdirective}\satom{?-} % ?- \urldef{\Sdcg}\satom{-->} % --> \urldef{\Bc}\satom{\c} % \c \urldef{\Bn}\satom{\n} % \n \urldef{\Br}\satom{\r} % \r \urldef{\Bl}\satom{\l} % \l \urldef{\BB}\satom{\\} % \\ \urldef{\Stilde}\satom{~} % ~ \urldef{\Spercent}\satom{%} % % \urldef{\Shash}\satom{#} % # \newcommand{\bug}[1]{\footnote{BUG: #1}} \newcommand{\mod}[2]{#1 \mbox{\rm mod} #2} \newcommand{\rem}[2]{#1 \mbox{\rm rem} #2} \newcommand{\pow}[2]{{#1}^{#2}} \newcommand{\bsl}[2]{\Sesc} % Index handling \newcommand{\idxtype}[1]{{\small\em #1}} % Prolog predicate summary \newenvironment{summarylist}[1]{\begin{longtable}[l]{#1}}{\end{longtable}} \newcommand{\predicatesummary}[3]{#1/#2 & #3 \\} \newcommand{\oppredsummary}[5]{#1/#2 & #5 \\} \newcommand{\functionsummary}[3]{#1/#2 & #3 \\} \newcommand{\opfuncsummary}[5]{#1/#2 & #5 \\} \newcommand{\opsummary}[4]{#3 & #1 & #2 & #4 \\} \newcommand{\hook}[1]{(hook)} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % CODE environment % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newlength{\codeindent} \setlength{\codeindent}{\leftmargin} \newenvironment{codequote}% {\begin{list}{}{\setlength{\leftmargin}{0pt}% \setlength{\rightmargin}{0pt}}% \item[]\small\ignorespaces}% {\end{list}} % just like verbatim, but indents like quote. % allows also the use of leading tabs \makeatletter {\catcode`\^^I=\active \gdef^^I{\mbox{}\space\space\space\space\space\space\space\space}} \begingroup \catcode `|=0 \catcode `[= 1 \catcode`]=2 \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|@xcode#1\end{code}[#1|end[code]] |endgroup \def\@code{\trivlist\setlength{\leftmargin}{\codeindent}% \setlength{\rightmargin}{\codeindent}% \item[]\if@minipage\else\vskip\parskip\fi \leftskip\@totalleftmargin\rightskip\z@ \parindent\z@\parfillskip\@flushglue\parskip\z@ \@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par} \obeylines \catcode`\^^I=\active \tt \let\do\@makeother \dospecials} \def\code{\@code \frenchspacing\@vobeyspaces \@xcode} \def\@endcode{\endtrivlist} \let\endcode=\@endcode % PostScript figures % \postscriptfig[width=5in]{label}{Title} \def\postscriptfig{\@ifnextchar[{\@scaledpostscriptfig}{\@postscriptfig}} \def\@scaledpostscriptfig[#1]#2#3{% \begin{figure}% \centerline{\includegraphics[#1]{#2}} \caption{#3} \label{fig:#2} \end{figure}} \def\@postscriptfig#1#2{% \begin{figure}% \centerline{\includegraphics{#1}} \caption{#2} \label{fig:#1} \end{figure}} \makeatletter % \begin{tabularlp}{longest-text} \newlength{\tabDright} \newlength{\tabDleft} \newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp} \newcommand{\raggedrightcolumn}{\PreserveBackslash\raggedright\hspace{0pt}} \newenvironment{tabularlp}[1]% {\settowidth{\tabDleft}{#1}% \setlength{\tabDright}{\linewidth-\columnsep*3-\tabDleft}% \begin{tabular}{|p{\tabDleft}|>{\raggedrightcolumn}p{\tabDright}|}}% {\end{tabular}} % PAGESTYLE % % Chapter date % --------------------------------------- % % bla, bla, bla, ... % % \bottomleft - page - \bottomright \def\arabicday{\number\year-\number\month-\number\day} \providecommand{\runningtitle}{none} \ifthenelse{\equal{\runningtitle}{none}}{% \relax}{% \pagestyle{fancyplain} \headheight 14pt \def\chaptermark{\mbox{}} \renewcommand{\chaptermark}[1]{\markboth{#1}{#1}} % remember chapter title \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} \lhead[\fancyplain{}{\bf\thepage}]{\fancyplain{}{\bf\rightmark}} \rhead[\fancyplain{}{\bf\leftmark}]{\fancyplain{}{\bf\thepage}} \footrulewidth 0.2pt \lfoot[\tiny \runningtitle]{} \rfoot[]{\tiny \runningtitle} \cfoot{}}