% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
\documentclass[a4paper,11pt]{report}

\usepackage{a4wide}
\sloppy
\pagestyle{myheadings}
\usepackage{amssymb}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\makeindex
\usepackage{color}
\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}
\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}
\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}
\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}
\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}
\definecolor{Black}{rgb}{0.0,0.0,0.0}

\definecolor{linkColor}{rgb}{0.0,0.0,0.554}
\definecolor{citeColor}{rgb}{0.0,0.0,0.554}
\definecolor{fileColor}{rgb}{0.0,0.0,0.554}
\definecolor{urlColor}{rgb}{0.0,0.0,0.554}
\definecolor{promptColor}{rgb}{0.0,0.0,0.589}
\definecolor{brkpromptColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapinputColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapoutputColor}{rgb}{0.0,0.0,0.0}

%%  for a long time these were red and blue by default,
%%  now black, but keep variables to overwrite
\definecolor{FuncColor}{rgb}{0.0,0.0,0.0}
%% strange name because of pdflatex bug:
\definecolor{Chapter }{rgb}{0.0,0.0,0.0}
\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}


\usepackage{fancyvrb}

\usepackage{mathptmx,helvet}
\usepackage[T1]{fontenc}
\usepackage{textcomp}


\usepackage[
            pdftex=true,
            bookmarks=true,        
            a4paper=true,
            pdftitle={Written with GAPDoc},
            pdfcreator={LaTeX with hyperref package / GAPDoc},
            colorlinks=true,
            backref=page,
            breaklinks=true,
            linkcolor=linkColor,
            citecolor=citeColor,
            filecolor=fileColor,
            urlcolor=urlColor,
            pdfpagemode={UseNone}, 
           ]{hyperref}

\newcommand{\maintitlesize}{\fontsize{50}{55}\selectfont}

% write page numbers to a .pnr log file for online help
\newwrite\pagenrlog
\immediate\openout\pagenrlog =\jobname.pnr
\immediate\write\pagenrlog{PAGENRS := [}
\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}
%% were never documented, give conflicts with some additional packages

\newcommand{\GAP}{\textsf{GAP}}

%% nicer description environments, allows long labels
\usepackage{enumitem}
\setdescription{style=nextline}

%% depth of toc
\setcounter{tocdepth}{1}





%% command for ColorPrompt style examples
\newcommand{\gapprompt}[1]{\color{promptColor}{\bfseries #1}}
\newcommand{\gapbrkprompt}[1]{\color{brkpromptColor}{\bfseries #1}}
\newcommand{\gapinput}[1]{\color{gapinputColor}{#1}}


\begin{document}

\logpage{[ 0, 0, 0 ]}
\begin{titlepage}
\mbox{}\vfill

\begin{center}{\maintitlesize \textbf{ AutoDoc \mbox{}}}\\
\vfill

\hypersetup{pdftitle= AutoDoc }
\markright{\scriptsize \mbox{}\hfill  AutoDoc  \hfill\mbox{}}
{\Huge \textbf{ Generate documentation from \textsf{GAP} source code \mbox{}}}\\
\vfill

{\Huge  2015.04.29 \mbox{}}\\[1cm]
{ 29/04/2015 \mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{ Sebastian Gutsche\\
    \mbox{}}}\\
{\Large \textbf{ Max Horn\\
    \mbox{}}}\\
\hypersetup{pdfauthor= Sebastian Gutsche\\
    ;  Max Horn\\
    }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{ Sebastian Gutsche\\
    }  Email: \href{mailto://gutsche@mathematik.uni-kl.de} {\texttt{gutsche@mathematik.uni-kl.de}}\\
  Homepage: \href{http://wwwb.math.rwth-aachen.de/~gutsche/} {\texttt{http://wwwb.math.rwth-aachen.de/\texttt{\symbol{126}}gutsche/}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 Department of Mathematics\\
 University of Kaiserslautern\\
 67653 Kaiserslautern\\
 Germany\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Max Horn\\
    }  Email: \href{mailto://max.horn@math.uni-giessen.de} {\texttt{max.horn@math.uni-giessen.de}}\\
  Homepage: \href{http://www.quendi.de/math} {\texttt{http://www.quendi.de/math}}\\
  Address: \begin{minipage}[t]{8cm}\noindent
 AG Algebra\\
 Mathematisches Institut\\
 JLU Gie{\ss}en\\
 Arndtstra{\ss}e 2\\
 D-35392 Gie{\ss}en\\
 Germany\\
 \end{minipage}
}\\
\end{titlepage}

\newpage\setcounter{page}{2}
{\small 
\section*{Copyright}
\logpage{[ 0, 0, 1 ]}
 {\copyright} 2012-2014 by Sebastian Gutsche and Max Horn

 This package may be distributed under the terms and conditions of the GNU
Public License Version 2. \mbox{}}\\[1cm]
\newpage

\def\contentsname{Contents\logpage{[ 0, 0, 2 ]}}

\tableofcontents
\newpage

 \index{\textsf{AutoDoc}} 
\chapter{\textcolor{Chapter }{Getting started using \textsf{AutoDoc}}}\label{Tutorials}
\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X80F6B32B7E4942F7}{}
{
  \textsf{AutoDoc} is a \textsf{GAP} package which is meant to aide \textsf{GAP} package authors in creating and maintaing the documentation of their packages.
In this capacity it builds upon \textsf{GAPDoc} (and hence is not a replacement for it, but rather a complement). In this
chapter we describe how you can get started using \textsf{AutoDoc} for your package. To this end, we will assume from now on that your package is
called \textsf{SomePackage}. 
\section{\textcolor{Chapter }{Creating a package manual from scratch}}\label{Tut:Scratch}
\logpage{[ 1, 1, 0 ]}
\hyperdef{L}{X7BFBC6907B26AA95}{}
{
  Suppose your package is already up and running, but so far has no manual. Then
you can rapidly generate a ``scaffold'' for a manual using the \texttt{AutoDoc} (\ref{AutoDoc}) command like this: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  LoadPackage( "AutoDoc" );
  AutoDoc( "SomePackage" : scaffold := true );
\end{Verbatim}
 This creates two XML files \texttt{doc/SomePackage.xml} and \texttt{doc/title.xml} insider the package directory and then runs \textsf{GAPDoc} on them to produce a nice initial PDF and HTML version of your fresh manual. 

 To ensure that the \textsf{GAP} help system picks up your package manual, you should also add the following
(or a variation of it) to your \texttt{PackageInfo.g}: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  PackageDoc := rec(
    BookName  := ~.PackageName,
    ArchiveURLSubset := ["doc"],
    HTMLStart := "doc/chap0.html",
    PDFFile   := "doc/manual.pdf",
    SixFile   := "doc/manual.six",
    LongTitle := ~.Subtitle,
  ),
\end{Verbatim}
 Congratulations, your package now has a minimal working manual. Of course it
will be mostly empty for now, but it already should contain some useful
information, based on the data in your \texttt{PackageInfo.g}. This includes your package's name, version and description as well as
information about its authors. And if you ever change the package data, (e.g.
because your email address changed), just re-run the above command to
regenerate the two main XML files with the latest information. 

 Next of course you need to provide actual content (unfortunately, we were not
yet able to automate \emph{that} for you, more research on artificial intelligence is required). To add more
content, you have several options: You could add further \textsf{GAPDoc} XML files containing extra chapters, sections and so on. Or you could use
classic \textsf{GAPDoc} source comments (in either case, see Section \ref{Tut:IntegrateExisting} on how to teach the \texttt{AutoDoc} (\ref{AutoDoc}) command to include this extra documentation). Or you could use the special
documentation facilities \textsf{AutoDoc} provides (see Section \ref{Tut:AdvancedAutoDoc}). 

 You may also wish to consult Section \ref{Tut:AutoRegenerate} for hints on automatically re-generating your package manual when necessary. }

 
\section{\textcolor{Chapter }{Documenting code with \textsf{AutoDoc}}}\label{Tut:AdvancedAutoDoc}
\logpage{[ 1, 2, 0 ]}
\hyperdef{L}{X7A32EA8F7CD306FE}{}
{
  To get one of your global functions, operations, attributes etc. to appear in
the package manual, simply insert an \textsf{AutoDoc} comment of the form \texttt{\#!} directly in front of it. For example: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #!
  DeclareOperation( "ToricVariety", [ IsConvexObject ] );
\end{Verbatim}
 This tiny change is already sufficient to ensure that the operation appears in
the manual. In general, you will want to add further information about the
operation, such as in the following example: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @Arguments conv
  #! @Returns a toric variety
  #! @Description
  #!  Creates a toric variety out
  #!  of the convex object <A>conv</A>.
  DeclareOperation( "ToricVariety", [ IsConvexObject ] );
\end{Verbatim}
 For a thorough description of what you can do with \textsf{AutoDoc} documentation comments, please refer to chapter \ref{Comments}. 

   Suppose you have not been using \textsf{GAPDoc} before but instead used the process described in section \ref{Tut:Scratch} to create your manual. Then the following \textsf{GAP} command will regenerate the manual and automatically include all newly
documented functions, operations etc.: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  LoadPackage("AutoDoc");
  AutoDoc("SomePackage" : scaffold := true, autodoc := true );
\end{Verbatim}
 If you are not using the scaffolding feature, e.g. because you already have an
existing \textsf{GAPDoc} based manual, then you can still use \textsf{AutoDoc} documentation comments. Just make sure to first edit the main XML file of your
documentation, and insert the line 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #Include SYSTEM "AutoDocMainFile.xml"
\end{Verbatim}
 in a suitable place. This means that you can mix \textsf{AutoDoc} documentation comment freely with your existing documentation; you can even
still make use of any existing \textsf{GAPDoc} documentation comments in your code. The following command should be useful
for you in this case; it still scans the package code for \textsf{AutoDoc} documentation comments and the runs \textsf{GAPDoc} to produce HTML and PDF output, but does not touch your documentation XML
files otherwise. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  LoadPackage("AutoDoc");
  AutoDoc("SomePackage" : autodoc := true );
\end{Verbatim}
  }

 
\section{\textcolor{Chapter }{Using \textsf{AutoDoc} in an existing \textsf{GAPDoc} manual}}\label{Tut:IntegrateExisting}
\logpage{[ 1, 3, 0 ]}
\hyperdef{L}{X86F2DE187B493932}{}
{
  TODO: Explain that it might still be interesting to switch to using
scaffolding? 

 TODO: Demonstrate how to add / mix your own XML files, \textsf{AutoDoc} generated XML files, and \textsf{GAPDoc} stuff... }

 
\section{\textcolor{Chapter }{Automatic regeneration of the manual}}\label{Tut:AutoRegenerate}
\logpage{[ 1, 4, 0 ]}
\hyperdef{L}{X8345699079126E0B}{}
{
  You will probably want to re-run the \texttt{AutoDoc} (\ref{AutoDoc}) command frequently, e.g. whenever you modified your documentation or your \texttt{PackageInfo.g}. To make this more convenient and reproducible, we recommend putting its
invocation into a file \texttt{makedoc.g} in your package directory. Then you can regenerate the manual from the command
line with the following simple command (assuming you are in the package
directory): 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  gap makedoc.g
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{What is taken from \texttt{PackageInfo.g}}}\label{Tut:PackageInfo}
\logpage{[ 1, 5, 0 ]}
\hyperdef{L}{X7B903EAE86BB1C28}{}
{
  \textsf{AutoDoc} can extract data from \texttt{PackageInfo.g} in order to generate a title page. Specifically, the following components of
the package info record are looked at: 
\begin{description}
\item[{Version}]  This is used to set the \texttt{{\textless}Version{\textgreater}} element of the title page, with the string ``Version '' prepended. 
\item[{Date}]  This is used to set the \texttt{{\textless}Date{\textgreater}} element of the title page. 
\item[{Subtitle}]  This is used to set the \texttt{{\textless}Subtitle{\textgreater}} element of the title page (the \texttt{{\textless}Title{\textgreater}} is set to the package name). 
\item[{Persons}]  This is used to generate \texttt{{\textless}Author{\textgreater}} elements in the generated title page. 
\item[{PackageDoc}]  This is a record (or a list of records) which is used to tell the \textsf{GAP} help system about the package manual. Currently \textsf{AutoDoc} extracts the value of the \texttt{PackageDoc.BookName} component and then passes that on to \textsf{GAPDoc} when creating the HTML, PDF and text versions of the manual. 
\item[{AutoDoc}]  This is a record which can be used to control the scaffolding performed by \textsf{AutoDoc}, specifically to provide extra information for the title page. For example,
you can set \texttt{AutoDoc.TitlePage.Copyright} to a string which will then be inserted on the generated title page. Using
this method you can customize the following title page elements: \texttt{TitleComment}, \texttt{Abstract}, \texttt{Copyright}, \texttt{Acknowledgements} and \texttt{Colophon}. 

 Note that \texttt{AutoDoc.TitlePage} behaves exactly the same as the \texttt{scaffold.TitlePage} parameter of the \texttt{AutoDoc} (\ref{AutoDoc}) function. 
\end{description}
 }

 }

 
\chapter{\textcolor{Chapter }{\textsf{AutoDoc} documentation comments}}\label{Comments}
\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X8141B1A583434E12}{}
{
  You can document declarations of global functions and variables, operations,
attributes etc. by inserting \textsf{AutoDoc} comments into your sources before these declaration. An \textsf{AutoDoc} comment always starts with \texttt{\#!}. This is also the smallest possible \textsf{AutoDoc} command. If you want your declaration documented, just write \texttt{\#!} at the line before the documentation. For example: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #!
  DeclareOperation( "AnOperation",
                    [ IsList ] );
\end{Verbatim}
 This will produce a manual entry for the operation \texttt{AnOperation}. 
\section{\textcolor{Chapter }{Documenting declarations}}\logpage{[ 2, 1, 0 ]}
\hyperdef{L}{X871482CE838C68F6}{}
{
  In the bare form above, the manual entry for \texttt{AnOperation} will not contain much more than the name of the operation. In order to change
this, there are several commands you can put into the \textsf{AutoDoc} comment before the declaration. Currently, the following commands are
provided: 
\subsection{\textcolor{Chapter }{@Description \mbox{\texttt{\mdseries\slshape descr}}}}\label{@Description}
\logpage{[ 2, 1, 1 ]}
\hyperdef{L}{X8707DB2E7A8F0C3A}{}
{
 \index{@Description@\texttt{@Description}}  Adds the text in the following lines of the \textsf{AutoDoc} to the description of the declaration in the manual. Lines are until the next \textsf{AutoDoc} command or until the declaration is reached. }

 
\subsection{\textcolor{Chapter }{@Returns \mbox{\texttt{\mdseries\slshape ret{\textunderscore}val}}}}\label{@Returns}
\logpage{[ 2, 1, 2 ]}
\hyperdef{L}{X86B758CA82D73B41}{}
{
 \index{@Returns@\texttt{@Returns}}  The string \mbox{\texttt{\mdseries\slshape ret{\textunderscore}val}} is added to the documentation, with the text ``Returns: '' put in front of it. This should usually give a brief hint about the type or
meaning of the value retuned by the documented function. }

 
\subsection{\textcolor{Chapter }{@Arguments \mbox{\texttt{\mdseries\slshape args}}}}\label{@Arguments}
\logpage{[ 2, 1, 3 ]}
\hyperdef{L}{X83FDE7028649130A}{}
{
 \index{@Arguments@\texttt{@Arguments}}  The string \mbox{\texttt{\mdseries\slshape args}} contains a description of the arguments the function expects, including
optional parts, which are denoted by square brackets. The argument names can
be separated by whitespace, commas or square brackets for the optional
arguments, like ``grp[, elm]'' or ``xx[y[z] ]''. If \textsf{GAP} options are used, this can be followed by a colon : and one or more
assignments, like ``n[, r]: tries := 100''. }

 
\subsection{\textcolor{Chapter }{@Group \mbox{\texttt{\mdseries\slshape grpname}}}}\label{@Group}
\logpage{[ 2, 1, 4 ]}
\hyperdef{L}{X86A674A5869BAEC2}{}
{
 \index{@Group@\texttt{@Group}}  Adds the following method to a group with the given name. See section \ref{Groups} for more information about groups. }

 
\subsection{\textcolor{Chapter }{@Label \mbox{\texttt{\mdseries\slshape label}}}}\label{@Label}
\logpage{[ 2, 1, 5 ]}
\hyperdef{L}{X8749960C85248897}{}
{
 \index{@Label@\texttt{@Label}}  Adds label to the function as label. If this is not specified, then for
declarations that involve a list of input filters (as is the case for \texttt{DeclareOperation}, \texttt{DeclareAttribute}, etc.), a default label is generated from this filter list. }

 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @Label testlabel
  DeclareProperty( "AProperty",
                   IsObject );
\end{Verbatim}
 leads to this: 

\subsection{\textcolor{Chapter }{AProperty (testlabel)}}
\logpage{[ 2, 1, 6 ]}\nobreak
\hyperdef{L}{X83B63B847B5199CF}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AProperty({\mdseries\slshape arg})\index{AProperty@\texttt{AProperty}!testlabel}
\label{AProperty:testlabel}
}\hfill{\scriptsize (property)}}\\
\textbf{\indent Returns:\ }
 \texttt{true} or \texttt{false} 



 }

 while 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #!
  DeclareProperty( "AProperty",
                   IsObject );
\end{Verbatim}
 leads to this: 

\subsection{\textcolor{Chapter }{AProperty (for IsObject)}}
\logpage{[ 2, 1, 7 ]}\nobreak
\hyperdef{L}{X78A9022A7D5CB20E}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AProperty({\mdseries\slshape arg})\index{AProperty@\texttt{AProperty}!for IsObject}
\label{AProperty:for IsObject}
}\hfill{\scriptsize (property)}}\\
\textbf{\indent Returns:\ }
 \texttt{true} or \texttt{false} 



 }

 
\subsection{\textcolor{Chapter }{@ChapterInfo \mbox{\texttt{\mdseries\slshape chapter, section}}}}\label{@ChapterInfo}
\logpage{[ 2, 1, 8 ]}
\hyperdef{L}{X7E44B99686FE9DC2}{}
{
 \index{@ChapterInfo@\texttt{@ChapterInfo}}  Adds the entry to the given chapter and section. Here, \mbox{\texttt{\mdseries\slshape chapter}} and \mbox{\texttt{\mdseries\slshape section}} are the respective titles. }

 As an example, a full \textsf{AutoDoc} comment for with all options could look like this: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @Description
  #! Computes the list of lists of degrees of ordinary characters
  #! associated to the <A>p</A>-blocks of the group <A>G</A>
  #! with <A>p</A>-modular character table <A>modtbl</A>
  #! and underlying ordinary character table <A>ordtbl</A>.
  #! @Returns a list
  #! @Arguments modtbl
  #! @Group CharacterDegreesOfBlocks
  #! @FunctionLabel chardegblocks
  #! @ChapterInfo Blocks, Attributes
  DeclareAttribute( "CharacterDegreesOfBlocks",
          IsBrauerTable );
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Other documentation comments}}\logpage{[ 2, 2, 0 ]}
\hyperdef{L}{X8152FEF9844B1ACD}{}
{
  There are also some commands which can be used in \textsf{AutoDoc} comments that are not associated to any declaration. This is useful for
additional text in your documentation, examples, mathematical chapters, etc.. 
\subsection{\textcolor{Chapter }{@Chapter \mbox{\texttt{\mdseries\slshape name}}}}\label{@Chapter}
\logpage{[ 2, 2, 1 ]}
\hyperdef{L}{X82747BD18578D5DA}{}
{
 \index{@Chapter@\texttt{@Chapter}}  Sets a chapter, all functions without seperate info will be added to this
chapter. Also all text comments, i.e. lines that begin with \#! without a
command, and which do not follow after @description, will be added to the
chapter as regular text. Example: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @Chapter My chapter
  #!  This is my chapter.
  #!  I document my stuff in it.
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@Section \mbox{\texttt{\mdseries\slshape name}}}}\label{@Section}
\logpage{[ 2, 2, 2 ]}
\hyperdef{L}{X83651A8B7EAE7F65}{}
{
 \index{@Section@\texttt{@Section}}  Sets a section like chapter sets a chapter. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @Section My first manual section
  #!  In this section I am going to document my first method.
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@EndSection}}\label{@EndSection}
\logpage{[ 2, 2, 3 ]}
\hyperdef{L}{X852C1B327A127225}{}
{
 \index{@EndSection@\texttt{@EndSection}}  Closes the current section. Please be careful here. Closing a section before
opening it might cause unexpected errors. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @EndSection
  #### The following text again belongs to the chapter
  #! Now we could start a second section if we want to.
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@Subsection \mbox{\texttt{\mdseries\slshape name}}}}\label{@Subsection}
\logpage{[ 2, 2, 4 ]}
\hyperdef{L}{X8077F8E87C72A051}{}
{
 \index{@Subsection@\texttt{@Subsection}}  Sets a subsection like chapter sets a chapter. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @Subsection My first manual subsection
  #!  In this subsection I am going to document my first example.
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@EndSubsection}}\label{@EndSubsection}
\logpage{[ 2, 2, 5 ]}
\hyperdef{L}{X83F70B0F85628361}{}
{
 \index{@EndSubsection@\texttt{@EndSubsection}}  Closes the current subsection. Please be careful here. Closing a subsection
before opening it might cause unexpected errors. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @EndSubsection
  #### The following text again belongs to the section
  #! Now we are in the section again
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@BeginAutoDoc}}\label{@BeginAutoDoc}
\logpage{[ 2, 2, 6 ]}
\hyperdef{L}{X7D22AA4485535112}{}
{
 \index{@BeginAutoDoc@\texttt{@BeginAutoDoc}}  Causes all subsequent declarations to be documented in the manual, regardless
of whether they have an \textsf{AutoDoc} comment in front of them or not. }

 
\subsection{\textcolor{Chapter }{@EndAutoDoc}}\label{@EndAutoDoc}
\logpage{[ 2, 2, 7 ]}
\hyperdef{L}{X782E748B82E264EB}{}
{
 \index{@EndAutoDoc@\texttt{@EndAutoDoc}}  Ends the affect of \texttt{@BeginAutoDoc}. So from here on, again only declarations with an explicit \textsf{AutoDoc} comment in front are added to the manual. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginAutoDoc
  
  DeclareOperation( "Operation1", [ IsList ] );
  
  DeclareProperty( "IsProperty", IsList );
  
  #! @EndAutoDoc
\end{Verbatim}
 Both, \texttt{Operation1} and \texttt{IsProperty} would appear in the manual. }

 
\subsection{\textcolor{Chapter }{@BeginGroup \mbox{\texttt{\mdseries\slshape [grpname]}}}}\label{@BeginGroup}
\logpage{[ 2, 2, 8 ]}
\hyperdef{L}{X7937E2BA7E142CC9}{}
{
 \index{@BeginGroup@\texttt{@BeginGroup}}  Starts a group. All following documented declarations without an explicit \texttt{@Group} command are grouped together in the same group with the given name. If no name
is given, then a new nameless group is generated. The effect of this command
is ended when an \texttt{@EndGroup} command is reached. 

 See section \ref{Groups} for more information about groups. }

 
\subsection{\textcolor{Chapter }{@EndGroup}}\label{@EndGroup}
\logpage{[ 2, 2, 9 ]}
\hyperdef{L}{X7C17EB007FD42C87}{}
{
 \index{@EndGroup@\texttt{@EndGroup}}  Ends the current group. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginGroup MyGroup
  #!
  DeclareAttribute( "GroupedAttribute",
                    IsList );
  
  DeclareOperation( "NonGroupedOperation",
                    [ IsObject ] );
  
  #!
  DeclareOperation( "GroupedOperation",
                    [ IsList, IsRubbish ] );
  #! @EndGroup
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@Level \mbox{\texttt{\mdseries\slshape lvl}}}}\label{@Level}
\logpage{[ 2, 2, 10 ]}
\hyperdef{L}{X855AB48C8380D5BE}{}
{
 \index{@Level@\texttt{@Level}}  Sets the current level of the documentation. All items created after this,
chapters, sections, and items, are given the level \mbox{\texttt{\mdseries\slshape lvl}}, until the \texttt{@ResetLevel} command resets the level to 0 or another level is set. 

 See section \ref{Level} for more information about groups. }

 
\subsection{\textcolor{Chapter }{@ResetLevel}}\label{@ResetLevel}
\logpage{[ 2, 2, 11 ]}
\hyperdef{L}{X7C6723D57F424215}{}
{
 \index{@ResetLevel@\texttt{@ResetLevel}}  Resets the current level to 0. 

 }

 
\subsection{\textcolor{Chapter }{@BeginExample and @EndExample}}\label{@BeginExample}
\logpage{[ 2, 2, 12 ]}
\hyperdef{L}{X83D6DA3B83D3436C}{}
{
 \index{@BeginExample@\texttt{@BeginExample and @EndExample}}  @BeginExample inserts an example into the manual. The syntax is like the
example enviroment in GAPDoc. This examples can be tested by GAPDoc, and also
stay readable by GAP. The GAP prompt is added by AutoDoc. @EndExample ends the
example block. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginExample
  S3 := SymmetricGroup(5);
  #! Sym( [ 1 .. 5 ] )
  Order(S3);
  #! 120
  #! @EndExample
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@BeginLog and @EndLog}}\label{@BeginLog}
\logpage{[ 2, 2, 13 ]}
\hyperdef{L}{X81A2D44D834C0A17}{}
{
 \index{@BeginLog@\texttt{@BeginLog and @EndLog}}  Works just like the @BeginExample command, but the example wont be testet. See
the GAPDoc manual for more information. }

 
\subsection{\textcolor{Chapter }{@DoNotReadRestOfFile}}\label{@DoNotReadRestOfFile}
\logpage{[ 2, 2, 14 ]}
\hyperdef{L}{X78DC644E8519280C}{}
{
 \index{DoNotReadRestOfFile@\texttt{@DoNotReadRestOfFile}}  Prevents the rest of the file from being read by the parser. Useful for not
finished or temporary files. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! This will appear in the manual
  
  #! @DoNotReadRestOfFile
  
  #! This wont.
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@BeginChunk \mbox{\texttt{\mdseries\slshape name}}, @EndChunk, and @InsertChunk \mbox{\texttt{\mdseries\slshape name}}}}\label{@BeginChunk}
\logpage{[ 2, 2, 15 ]}
\hyperdef{L}{X84F96D3E7BD5F617}{}
{
 \index{@BeginChunk@\texttt{@BeginChunk, @EndChunk, and @InsertChunk}}  @BeginChunk causes the next documentation parts not to be inserted in the
documentation at it's point in the file, but at the point where the
@InsertChunk \mbox{\texttt{\mdseries\slshape name}} command is. This can be used to insert examples from different files at a
specific point in the documentation. A normal chunk ends at the end of the
file. You can also end a system with @EndChunk. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginChunk MyChunk
  #! This is some text.
  #! @EndChunk
  
  #! @InsertChunk MyChunk
  ## Text is inserted here.
\end{Verbatim}
 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginChunk Example_Symmetric_Group
  #! @BeginExample
  S3 := SymmetricGroup(5);
  #! Sym( [ 1 .. 5 ] )
  Order(S3);
  #! 120
  #! @EndExample
  #! @EndChunk
\end{Verbatim}
 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @InsertChunk Example_Symmetric_Group
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@BeginSystem \mbox{\texttt{\mdseries\slshape name}}, @EndSystem, and @InsertSystem \mbox{\texttt{\mdseries\slshape name}}}}\label{@BeginSystem}
\logpage{[ 2, 2, 16 ]}
\hyperdef{L}{X86B00B6A876D6E7C}{}
{
 \index{@BeginSystem@\texttt{@BeginSystem, @EndSystem, and @InsertSystem}}  Same as @BeginChunk etc. This command is deprecated. Please use chunk instead. }

 
\subsection{\textcolor{Chapter }{@BeginCode \mbox{\texttt{\mdseries\slshape name}}, @EndCode, and @InsertCode \mbox{\texttt{\mdseries\slshape name}}}}\label{@BeginCode}
\logpage{[ 2, 2, 17 ]}
\hyperdef{L}{X79B28EFE7C93E47D}{}
{
 \index{@BeginCode@\texttt{@BeginCode, @EndCode, and @InsertCode}}  Inserts the code between @BeginCode and @EndCode verbatim at the point where
@InsertCode is called. This is useful to insert your programm code directly
into the manual. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginCode Increment
  i := i + 1;
  #! @EndCode
  
  #! @InsertCode Increment
  ## Code is inserted here.
\end{Verbatim}
 }

 
\subsection{\textcolor{Chapter }{@LatexOnly \mbox{\texttt{\mdseries\slshape text}}, @BeginLatexOnly , and @EndLatexOnly}}\label{@LatexOnly}
\logpage{[ 2, 2, 18 ]}
\hyperdef{L}{X828C684E8582A9D0}{}
{
 \index{@LatexOnly@\texttt{@@LatexOnly, @BeginLatexOnly, and @EndLatexOnly}}  Code inserted between @BeginLatexOnly and @EndLatexOnly or after @LatexOnly is
only inserted in the PDF version of the manual or worksheet. It can hold
arbitrary LaTeX-commands. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginLatexOnly
  #! \include{picture.tex}
  #! @EndLatexOnly
  
  #! @LatexOnly \include{picture.tex}
\end{Verbatim}
 }

 }

 
\section{\textcolor{Chapter }{Title page commands}}\label{TitlepageCommands}
\logpage{[ 2, 3, 0 ]}
\hyperdef{L}{X841E3AD584F5385C}{}
{
  The following commands can be used to add the corresponding parts to the title
page of the document, in case the scaffolding is enabled. 
\begin{itemize}
\item  @Title 
\item  @Subtitle 
\item  @Version 
\item  @TitleComment 
\item  @Author 
\item  @Date 
\item  @Address 
\item  @Abstract 
\item  @Copyright 
\item  @Acknowledgements 
\item  @Colophon 
\item  @URL 
\end{itemize}
 Those add the following lines at the corresponding point of the titlepage.
Please note that many of those things can be (better) extracted from the
PackageInfo.g. In case you set some of those, the extracted or in scaffold
defined items will be overwritten. }

 
\section{\textcolor{Chapter }{Plain text files}}\label{PlainText}
\logpage{[ 2, 4, 0 ]}
\hyperdef{L}{X828AE38F80CB02E7}{}
{
  AutoDoc plain text files work exactly like AutoDoc comments, except that the
\#! is unnecessary at the beginning of a line which should be documented.
Files that have the suffix .autodoc will automatically regarded as plain text
files while the commands @AutoDocPlainText and @EndAutoDocPlainText mark parts
in plain text files which should be regarded as AutoDoc parts. All commands
can be used like before. }

 
\section{\textcolor{Chapter }{Grouping}}\label{Groups}
\logpage{[ 2, 5, 0 ]}
\hyperdef{L}{X7D7A38F87BC40C48}{}
{
  TODO: explain more about groups and what they do, how they look in the
generated output etc. 

 Note that group names are globally unique throughout the whole manual. That
is, groups with the same name are in fact merged into a single group, even if
they were declared in different source files. Thus you can have multiple \texttt{@BeginGroup} / \texttt{@EndGroup} pairs using the same group name, in different places, and these all will refer
to the same group. 

 Moreover, this means that you can add items to a group via the \texttt{@Group} command in the \textsf{AutoDoc} comment of an arbitrary declaration, at any time. The following code 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! @BeginGroup Group1
  
  #! @Description
  #!  First sentence.
  DeclareOperation( "FirstOperation", [ IsInt ] );
  
  #! @Description
  #!  Second sentence.
  DeclareOperation( "SecondOperation", [ IsInt, IsGroup ] );
  
  #! @EndGroup
  
  ## .. Stuff ..
  
  #! @Description
  #!  Third sentence.
  #! @Group Group1
  KeyDependentOperation( "ThirdOperation", IsGroup, IsInt, "prime );
\end{Verbatim}
 produces the following: 

\subsection{\textcolor{Chapter }{FirstOperation (for IsInt)}}
\logpage{[ 2, 5, 1 ]}\nobreak
\label{Group1}
\hyperdef{L}{X859517FC87560167}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{FirstOperation({\mdseries\slshape arg})\index{FirstOperation@\texttt{FirstOperation}!for IsInt}
\label{FirstOperation:for IsInt}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{SecondOperation({\mdseries\slshape arg1, arg2})\index{SecondOperation@\texttt{SecondOperation}!for IsInt, IsGroup}
\label{SecondOperation:for IsInt, IsGroup}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{ThirdOperation({\mdseries\slshape arg1, arg2})\index{ThirdOperation@\texttt{ThirdOperation}!for IsGroupIsGroup, }
\label{ThirdOperation:for IsGroupIsGroup, }
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:\ }




 First sentence. Second sentence. Third sentence. }

 }

 
\section{\textcolor{Chapter }{Level}}\label{Level}
\logpage{[ 2, 6, 0 ]}
\hyperdef{L}{X8209AFDE8209AFDE}{}
{
  Levels can be set to not write certain parts in the manual by default. Every
entry has by default the level 0. The command \texttt{@Level} can be used to set the level of the following part to a higher level, for
example 1, and prevent it from being printed to the manual by default.
However, if one sets the level to a higher value in the autodoc option of \texttt{AutoDoc}, the parts will be included in the manual at the specific place. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! This text will be printed to the manual.
  #! @Level 1
  #! This text will be printed to the manual if created with level 1 or higher.
  #! @Level 2
  #! This text will be printed to the manual if created with level 2 or higher.
  #! @ResetLevel
  #! This text will be printed to the manual.
\end{Verbatim}
 }

 
\section{\textcolor{Chapter }{Some syntax for \textsf{AutoDoc} text}}\label{MarkdownExtension}
\logpage{[ 2, 7, 0 ]}
\hyperdef{L}{X87D89E447B20A1BA}{}
{
  \textsf{AutoDoc} offers some useful syntax extensions which can be used in \textsf{AutoDoc} plain text files and \textsf{AutoDoc} comments. The syntax is inspired by the Markdown language, but it does not
implement all features, neither is strict Markdown, but tries to be as
straight as possible. The following constructions are possible right now: 
\subsection{\textcolor{Chapter }{Lists}}\label{MarkdownExtensionList}
\logpage{[ 2, 7, 1 ]}
\hyperdef{L}{X7B256AE5780F140A}{}
{
  One can create items lists by beginning a new line with *, +, -, followed by
one space. The first item starts the list. When items are longer than one
line, the following lines have to be indented by at least two spaces. The list
ends when a line which does not start a new item is not indented by two
spaces. Of curse lists can be nested. Here is an example: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! The list starts in the next line
  #! * item 1
  #! * item 2
  #!   which is a bit longer
  #!   * and also contains a nested list
  #!   * with two items
  #! * item 3 of the outer list
  #! This does not belong to the list anymore.
\end{Verbatim}
 This is the output:\\
 The list starts in the next line 
\begin{itemize}
\item  item 1 
\item  item 2 which is a bit longer 
\begin{itemize}
\item  and also contains a nested list 
\item  with two items 
\end{itemize}
 
\item  item 3 of the outer list 
\end{itemize}
 This does not belong to the list anymore.\\
 The *, -, and + are fully interchangeable and can even be used mixed, but this
is not recommended. }

 
\subsection{\textcolor{Chapter }{Math modes}}\label{MarkdownExtensionMath}
\logpage{[ 2, 7, 2 ]}
\hyperdef{L}{X871412737A0E12E2}{}
{
  One can start an inline formula with a \$, and also end it with \$, just like
in {\LaTeX}. This will translate into \textsf{GAPDoc}s inline math enviroment. For display mode one can use \$\$, also like {\LaTeX}. 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! This is an inline formula: $1+1 = 2$.
  #! This is a display formula:
  #! $$ \sum_{i=1}^n i. $$
\end{Verbatim}
 produces the following output:\\
 This is an inline formula: $1+1 = 2$. This is a display formula: 
\[ \sum_{i=1}^n i. \]
 }

 
\subsection{\textcolor{Chapter }{Emphasize}}\label{MarkdownExtensionEmph}
\logpage{[ 2, 7, 3 ]}
\hyperdef{L}{X7ED0330479146EFC}{}
{
  One can emphasize text by using two asteriks (**) or two underscores
({\textunderscore}{\textunderscore}) at the beginning and the end of the text
which should be emphasized. Example: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  #! **This** is very important.
  #! This is __also important__.
  #! **Naturally, more than one line
  #! can be important.**
\end{Verbatim}
 This produces the following output:\\
 \emph{This} is very important. This is \emph{also important}. \emph{Naturally, more than one line can be important.} }

 }

 }

     
\chapter{\textcolor{Chapter }{AutoDoc worksheets}}\label{Chapter_AutoDoc_worksheets}
\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X80ED3C2A78146AD1}{}
{
  
\section{\textcolor{Chapter }{Worksheets}}\label{Chapter_AutoDoc_worksheets_Section_Worksheets}
\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X801D4A2F8292704C}{}
{
  

\subsection{\textcolor{Chapter }{AutoDocWorksheet}}
\logpage{[ 3, 1, 1 ]}\nobreak
\hyperdef{L}{X809FE4137C08B28D}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AutoDocWorksheet({\mdseries\slshape list{\textunderscore}of{\textunderscore}filenames: options})\index{AutoDocWorksheet@\texttt{AutoDocWorksheet}}
\label{AutoDocWorksheet}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:\ }




 This function works exactly like the AutoDoc command, except that no package
is needed to create a worksheet. It takes the sampe optional records as the
AutoDoc-command, so please refer this command for a full list. It's only
optional argument is a (list of) filenames, which are then scanned by the
AutoDoc parser. }

 }

 }

   
\chapter{\textcolor{Chapter }{AutoDoc}}\label{Chapter_AutoDoc}
\logpage{[ 4, 0, 0 ]}
\hyperdef{L}{X7CBD8AAF7DCEF352}{}
{
  
\section{\textcolor{Chapter }{The AutoDoc() function}}\label{Chapter_AutoDoc_Section_The_AutoDoc()_function}
\logpage{[ 4, 1, 0 ]}
\hyperdef{L}{X863584DB8497D8BA}{}
{
  

\subsection{\textcolor{Chapter }{AutoDoc}}
\logpage{[ 4, 1, 1 ]}\nobreak
\hyperdef{L}{X7CBD8AAF7DCEF352}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\ \ \texttt{AutoDoc({\mdseries\slshape package{\textunderscore}name[, option{\textunderscore}record]})\index{AutoDoc@\texttt{AutoDoc}}
\label{AutoDoc}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:\ }
nothing 



 This is the main function of the \textsf{AutoDoc} package. It can perform any combination of the following three tasks: 
\begin{enumerate}
\item  It can (re)generate a scaffold for your package manual. That is, it can
produce two XML files in \textsf{GAPDoc} format to be used as part of your manual: First, a file named \texttt{doc/PACKAGENAME.xml} (with your package's name substituted) which is used as main file for the
package manual, i.e. this file sets the XML DOCTYPE and defines various XML
entities, includes other XML files (both those generated by \textsf{AutoDoc} as well as additional files created by other means), tells \textsf{GAPDoc} to generate a table of content and an index, and more. Secondly, it creates a
file \texttt{doc/title.xml} containing a title page for your documentation, with information about your
package (name, description, version), its authors and more, based on the data
in your \texttt{PackageInfo.g}. 
\item  It can scan your package for \textsf{AutoDoc} based documentation (by using \textsf{AutoDoc} tags and the Autodoc command. This will produce further XML files to be used
as part of the package manual. 
\item  It can use \textsf{GAPDoc} to generate PDF, text and HTML (with MathJaX enabled) documentation from the \textsf{GAPDoc} XML files it generated as well as additional such files provided by you. For
this, it invokes \texttt{MakeGAPDocDoc} (\textbf{GAPDoc: MakeGAPDocDoc}) to convert the XML sources, and it also instructs \textsf{GAPDoc} to copy supplementary files (such as CSS style files) into your doc directory
(see \texttt{CopyHTMLStyleFiles} (\textbf{GAPDoc: CopyHTMLStyleFiles})). 
\end{enumerate}
 For more information and some examples, please refer to Chapter \ref{Tutorials}. 

 The parameters have the following meanings: 
\begin{description}
\item[{\mbox{\texttt{\mdseries\slshape package{\textunderscore}name}}}]  The name of the package whose documentation should be(re)generated. 
\item[{\mbox{\texttt{\mdseries\slshape option{\textunderscore}record}}}]  \mbox{\texttt{\mdseries\slshape option{\textunderscore}record}} can be a record with some additional options. The following are currently
supported: 
\begin{description}
\item[{\mbox{\texttt{\mdseries\slshape dir}}}]  This should be a string containing a (relative) path or a Directory() object
specifying where the package documentation (i.e. the \textsf{GAPDoc} XML files) are stored. \\
 \emph{Default value: \texttt{"doc/"}.} 
\item[{\mbox{\texttt{\mdseries\slshape scaffold}}}]  This controls whether and how to generate scaffold XML files for the main and
title page of the package's documentation. 

 The value should be either \texttt{true}, \texttt{false} or a record. If it is a record or \texttt{true} (the latter is equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if \mbox{\texttt{\mdseries\slshape opt.scaffold}} is missing but the package's info record in \texttt{PackageInfo.g} has an \texttt{AutoDoc} entry. In all other cases (in particular if \mbox{\texttt{\mdseries\slshape opt.scaffold}} is \texttt{false}), scaffolding is disabled. 

 If \mbox{\texttt{\mdseries\slshape opt.scaffold}} is a record, it may contain the following entries. 
\begin{description}
\item[{\mbox{\texttt{\mdseries\slshape includes}}}]  A list of XML files to be included in the body of the main XML file. If you
specify this list and also are using \textsf{AutoDoc} to document your operations with \textsf{AutoDoc} comments, you can add \texttt{AutoDocMainFile.xml} to this list to control at which point the documentation produced by \textsf{AutoDoc} is inserted. If you do not do this, it will be added after the last of your
own XML files. 
\item[{\mbox{\texttt{\mdseries\slshape appendix}}}]  This entry is similar to \mbox{\texttt{\mdseries\slshape opt.scaffold.includes}} but is used to specify files to include after the main body of the manual,
i.e. typically appendices. 
\item[{\mbox{\texttt{\mdseries\slshape bib}}}]  The name of a bibliography file, in Bibtex or XML format. If this key is not
set, but there is a file \texttt{doc/PACKAGENAME.bib} then it is assumed that you want to use this as your bibliography. 
\item[{\mbox{\texttt{\mdseries\slshape TitlePage}}}]  A record whose entries are used to embellish the generated titlepage for the
package manual with extra information, such as a copyright statement or
acknowledgments. To this end, the names of the record components are used as
XML element names, and the values of the components are outputted as content
of these XML elements. For example, you could pass the following record to set
a custom acknowledgements text: 
\begin{Verbatim}[fontsize=\small,frame=single,label=]
  rec( Acknowledgements := "Many thanks to ..." )
\end{Verbatim}
 For a list of valid entries in the titlepage, please refer to the \textsf{GAPDoc} manual, specifically section  (\textbf{GAPDoc: Title}) and following. 
\item[{\mbox{\texttt{\mdseries\slshape document{\textunderscore}class}}}]  Sets the document class of the resulting pdf. The value can either be a string
which has to be the name of the new document class, a list containing this
string, or a list of two strings. Then the first one has to be the document
class name, the second one the option string ( contained in [ ] ) in LaTeX. 
\item[{\mbox{\texttt{\mdseries\slshape latex{\textunderscore}header{\textunderscore}file}}}]  Replaces the standard header from \textsf{GAPDoc} completely with the header in this LaTeX file. Please be careful here, and
look at GAPDoc's latexheader.tex file for an example. 
\item[{\mbox{\texttt{\mdseries\slshape gapdoc{\textunderscore}latex{\textunderscore}options}}}]  Must be a record with entries which can be understood by
SetGapDocLaTeXOptions. Each entry can be a string, which will be given to \textsf{GAPDoc} directly, or a list containing of two entries: The first one must be the
string "file", the second one a filename. This file will be read and then its
content is passed to \textsf{GAPDoc} as option with the name of the entry. 
\end{description}
 
\item[{\mbox{\texttt{\mdseries\slshape autodoc}}}]  This controls whether and how to generate addition XML documentation files by
scanning for \textsf{AutoDoc} documentation comments. 

 The value should be either \texttt{true}, \texttt{false} or a record. If it is a record or \texttt{true} (the latter is equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if \mbox{\texttt{\mdseries\slshape opt.autodoc}} is missing but the package depends (directly) on the \textsf{AutoDoc} package. In all other cases (in particular if \mbox{\texttt{\mdseries\slshape opt.autodoc}} is \texttt{false}), this feature is disabled. 

 If \mbox{\texttt{\mdseries\slshape opt.autodoc}} is a record, it may contain the following entries. 
\begin{description}
\item[{\mbox{\texttt{\mdseries\slshape files}}}]  A list of files (given by paths relative to the package directory) to be
scanned for \textsf{AutoDoc} documentation comments. Usually it is more convenient to use \mbox{\texttt{\mdseries\slshape autodoc.scan{\textunderscore}dirs}}, see below. 
\item[{\mbox{\texttt{\mdseries\slshape scan{\textunderscore}dirs}}}]  A list of subdirectories of the package directory (given as relative paths)
which \textsf{AutoDoc} then scans for .gi, .gd and .g files; all of these files are then scanned for \textsf{AutoDoc} documentation comments. \\
 \emph{Default value: \texttt{[ "gap", "lib", "examples", "examples/doc" ]}.} 
\item[{\mbox{\texttt{\mdseries\slshape level}}}]  This defines the level of the created documentation. The default value is 0.
When parts of the manual are declared with a higher value they will not be
printed into the manual. 
\end{description}
 
\item[{\mbox{\texttt{\mdseries\slshape gapdoc}}}]  This controls whether and how to invoke \textsf{GAPDoc} to create HTML, PDF and text files from your various XML files. 

 The value should be either \texttt{true}, \texttt{false} or a record. If it is a record or \texttt{true} (the latter is equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if \mbox{\texttt{\mdseries\slshape opt.gapdoc}} is missing. In all other cases (in particular if \mbox{\texttt{\mdseries\slshape opt.gapdoc}} is \texttt{false}), this feature is disabled. 

 If \mbox{\texttt{\mdseries\slshape opt.gapdoc}} is a record, it may contain the following entries. 
\begin{description}
\item[{\mbox{\texttt{\mdseries\slshape main}}}]  The name of the main XML file of the package manual. This exists primarily to
support packages with existing manual which use a filename here which differs
from the default. In particular, specifying this is unnecessary when using
scaffolding. \\
 \emph{Default value: \texttt{PACKAGENAME.xml}}. 
\item[{\mbox{\texttt{\mdseries\slshape files}}}]  A list of files (given by paths relative to the package directory) to be
scanned for \textsf{GAPDoc} documentation comments. Usually it is more convenient to use \mbox{\texttt{\mdseries\slshape gapdoc.scan{\textunderscore}dirs}}, see below. 
\item[{\mbox{\texttt{\mdseries\slshape scan{\textunderscore}dirs}}}]  A list of subdirectories of the package directory (given as relative paths)
which \textsf{AutoDoc} then scans for .gi, .gd and .g files; all of these files are then scanned for \textsf{GAPDoc} documentation comments. \\
 \emph{Default value: \texttt{[ "gap", "lib", "examples", "examples/doc" ]}.} 
\end{description}
 
\item[{\mbox{\texttt{\mdseries\slshape maketest}}}]  The maketest item can be true or a record. When it is true, a simple
maketest.g is created in the main package directory, which can be used to test
the examples from the manual. As a record, the entry can have the following
entries itself, to specify some options. 
\begin{description}
\item[{filename}]  Sets the name of the test file. 
\item[{commands}]  A list of strings, each one a command, which will be executed at the beginning
of the test file. 
\end{description}
 
\end{description}
 
\end{description}
 }

 }

 }

 \def\indexname{Index\logpage{[ "Ind", 0, 0 ]}
\hyperdef{L}{X83A0356F839C696F}{}
}

\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{Index}


\printindex

\newpage
\immediate\write\pagenrlog{["End"], \arabic{page}];}
\immediate\closeout\pagenrlog
\end{document}
