1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- This is an automatically generated file. -->
<Chapter Label="Chapter_AutoDoc">
<Heading>AutoDoc</Heading>
<Section Label="Chapter_AutoDoc_Section_The_AutoDoc_function">
<Heading>The AutoDoc() function</Heading>
<ManSection>
<Func Arg="[packageOrDirectory], [optrec]" Name="AutoDoc" />
<Returns>nothing
</Returns>
<Description>
This is the main function of the &AutoDoc; package. It can perform
any combination of the following tasks:
<Enum>
<Item>
It can (re)generate a scaffold for your package manual.
That is, it can produce two XML files in &GAPDoc; format to be used as part
of your manual: First, a file named <F>doc/PACKAGENAME.xml</F>
(with your package's name substituted) which is used as
main XML 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 &AutoDoc; as well
as additional files created by other means), tells &GAPDoc;
to generate a table of contents and an index, and more.
Secondly, it creates a file <F>doc/title.xml</F> 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 <F>PackageInfo.g</F>.
</Item>
<Item>
It can scan your package for &AutoDoc; based documentation (by using &AutoDoc;
tags and the Autodoc command.
This will
produce further XML files to be used as part of the package manual.
</Item>
<Item>
It can use &GAPDoc; to generate PDF, text and HTML (with
MathJaX enabled) documentation from the &GAPDoc; XML files it
generated as well as additional such files provided by you. For
this, it invokes <Ref Func='MakeGAPDocDoc' BookName='gapdoc'/>
to convert the XML sources, and it also instructs &GAPDoc; to copy
supplementary files (such as CSS style files) into your doc directory
(see <Ref Func='CopyHTMLStyleFiles' BookName='gapdoc'/>).
</Item>
</Enum>
For more information and some examples, please refer to Chapter <Ref Label='Tutorials'/>.
<P/>
The parameters have the following meanings:
<List>
<Mark><A>packageOrDirectory</A></Mark>
<Item>
The purpose of this parameter is twofold: to determine the package
directory in which &AutoDoc; will operate, and to find the metadata
concerning the package being documented. The parameter is either a
string, an <C>IsDirectory</C> object, or omitted.
If it is a string, &AutoDoc; interprets it as the name of a
package, uses the metadata of the first package known to &GAP;
with that name, and uses the <C>InstallationPath</C> specified in that
metadata as the package directory. If <A>packageOrDirectory</A> is
an <C>IsDirectory</C> object, this is used as package directory;
if the argument is omitted, then the current directory is used.
In the last two cases, the specified directory must contain a
<F>PackageInfo.g</F> file, and &AutoDoc; extracts all needed metadata
from that. The <C>IsDirectory</C> form is for example useful if you
have multiple versions of the package around and want to make sure the
documentation of the correct version is built.
<P/>
Note that when using <C>AutoDocWorksheet</C> (see
<Ref Sect='Chapter_AutoDoc_worksheets_Section_Worksheets'/>), there is
no parameter corresponding to <A>packageOrDirectory</A> and so the
<Q>package directory</Q> is always the current directory, and
there is no metadata.
</Item>
<Mark><A>optrec</A></Mark>
<Item>
<A>optrec</A> can be a record with some additional options.
The following are currently supported:
<List>
<Mark><A>dir</A></Mark>
<Item>
This should either be a string, in which case it must be a path
<E>relative</E> to the specified package directory, or a
<C>Directory()</C> object. (Thus, the only way to designate an
absolute directory is with a <C>Directory()</C> object.) This
option specifies where the package documentation
(e.g. the &GAPDoc; XML or the manual PDF, etc.) files are stored
and/or will be generated.
<Br/>
<E>Default value: <C>"doc/"</C>.</E>
</Item>
<Mark><A>scaffold</A></Mark>
<Item>
This controls whether and how to generate scaffold XML files
for the package documentation.
<P/>
The value should be either <K>true</K>, <K>false</K> or a
record. If it is a record or <K>true</K> (the latter is
equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if <A>opt.scaffold</A> is missing but the
package's info record in <F>PackageInfo.g</F> has an <C>AutoDoc</C> entry.
In all other cases (in particular if <A>opt.scaffold</A> is
<K>false</K>), scaffolding is disabled.
<P/>
If scaffolding is enabled, and <A>PackageInfo.AutoDoc</A> exists, then it is
assumed to be a record, and its contents are used as default values for
the scaffold settings.
<P/>
<P/>
If <A>opt.scaffold</A> is a record, it may contain the following entries.
<P/>
<List>
<Mark><A>includes</A></Mark>
<Item>
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 &AutoDoc; to document
your operations with &AutoDoc; comments,
you can add <F>_AutoDocMainFile.xml</F> to this list
to control at which point the documentation produced by &AutoDoc;
is inserted. If you do not do this, it will be added after the last
of your own XML files.
</Item>
<Mark><A>index</A></Mark>
<Item>
By default, the scaffold creates an index. If you do not want an index,
set this to <K>false</K>.
</Item>
<Mark><A>appendix</A></Mark>
<Item>
This entry is similar to <A>opt.scaffold.includes</A> but is used
to specify files to include after the main body of the manual,
i.e. typically appendices.
</Item>
<Mark><A>bib</A></Mark>
<Item>
The name of a bibliography file, in BibTeX or XML format.
If this key is not set, but there is a file <F>doc/PACKAGENAME.bib</F>
then it is assumed that you want to use this as your bibliography.
</Item>
<Mark><A>entities</A></Mark>
<Item>
A record whose keys are taken as entity names, set to the corresponding
(string) values. For example, if you pass the record <Q>SomePackage</Q>,
<Listing><![CDATA[
rec( SomePackage := "<Package>SomePackage</Package>",
RELEASEYEAR := "2015" )]]></Listing>
then the following entity definitions are added to the XML preamble:
<Listing><![CDATA[<!ENTITY SomePackage '<Package>SomePackage</Package>'>
<!ENTITY RELEASEYEAR '2015'>]]></Listing>
This allows you to write <Q>&SomePackage;</Q> and <Q>&RELEASEYEAR;</Q>
in your documentation, which will be replaced by respective values specified
in the entities definition.
</Item>
<Mark><A>TitlePage</A></Mark>
<Item>
A record whose entries are used to embellish the generated title page
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:
<Listing><![CDATA[
rec( Acknowledgements := "Many thanks to ..." )]]></Listing>
For a list of valid entries in the title page, please refer to the
&GAPDoc; manual, specifically section <Ref Subsect='TitlePage' BookName='gapdoc'/>.
</Item>
<Mark><A>MainPage</A></Mark>
<Item>
If scaffolding is enabled, by default a main XML file is generated (this
is the file which contains the XML doctype and more). If you do not
want this (e.g. because you have a handwritten main XML file), but
still want &AutoDoc; to generate a title page for you, you can set this
option to <K>false</K>
</Item>
<Mark><A>document_class</A></Mark>
<Item>
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>
<Mark><A>latex_header_file</A></Mark>
<Item>
Replaces the standard header from &GAPDoc; completely with the header in this &LaTeX; file.
Please be careful here, and look at &GAPDoc;'s <F>latexheader.tex</F> file for an example.
</Item>
</List>
</Item>
<Mark><A>autodoc</A></Mark>
<Item>
This controls whether and how to generate additional XML documentation files
by scanning for &AutoDoc; documentation comments.
<P/>
The value should be either <K>true</K>, <K>false</K> or a
record. If it is a record or <K>true</K> (the latter is
equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if <A>opt.autodoc</A> is missing but the
package depends (directly) on the &AutoDoc; package.
In all other cases (in particular if <A>opt.autodoc</A> is
<K>false</K>), this feature is disabled.
<P/>
<P/>
If <A>opt.autodoc</A> is a record, it may contain the following entries.
<P/>
<List>
<Mark><A>files</A></Mark>
<Item>
A list of files (given by paths relative to the package directory)
to be scanned for &AutoDoc; documentation comments.
Usually it is more convenient to use <A>autodoc.scan_dirs</A>, see below.
</Item>
<Mark><A>scan_dirs</A></Mark>
<Item>
A list of subdirectories of the package directory (given as relative paths)
which &AutoDoc; then scans for .gi, .gd, .g, and .autodoc files; all of these files
are then scanned for &AutoDoc; documentation comments.
<Br/>
<E>Default value: <C>[ ".", "gap", "lib", "examples", "examples/doc" ]</C>.</E>
</Item>
<Mark><A>level</A></Mark>
<Item>
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.
</Item>
</List>
</Item>
<Mark><A>gapdoc</A></Mark>
<Item>
This controls whether and how to invoke &GAPDoc; to create HTML, PDF and text
files from your various XML files.
<P/>
The value should be either <K>true</K>, <K>false</K> or a
record. If it is a record or <K>true</K> (the latter is
equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if <A>opt.gapdoc</A> is missing.
In all other cases (in particular if <A>opt.gapdoc</A> is
<K>false</K>), this feature is disabled.
<P/>
<P/>
If <A>opt.gapdoc</A> is a record, it may contain the following entries.
<P/>
<List>
<Mark><A>main</A></Mark>
<Item>
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.
<Br/>
<E>Default value: <C>PACKAGENAME.xml</C></E>.
</Item>
<Mark><A>files</A></Mark>
<Item>
A list of files (given by paths relative to the package directory)
to be scanned for &GAPDoc; documentation comments.
Usually it is more convenient to use <A>gapdoc.scan_dirs</A>, see below.
</Item>
<Mark><A>scan_dirs</A></Mark>
<Item>
A list of subdirectories of the package directory (given as relative paths)
which &AutoDoc; then scans for .gi, .gd and .g files; all of these files
are then scanned for &GAPDoc; documentation comments.
<Br/>
<E>Default value: <C>[ ".", "gap", "lib", "examples", "examples/doc" ]</C>.</E>
</Item>
<Mark><A>LaTeXOptions</A></Mark>
<Item>
Must be a record with entries which can be understood by
<Ref Func='SetGapDocLaTeXOptions' BookName='gapdoc'/>. Each entry can be a
string, which will be given to &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 &GAPDoc;
as option with the name of the entry.
</Item>
<Mark><A>gap_root_relative_path</A></Mark>
<Item>
Either a boolean, or a string containing a relative path.
By default (if this option is not set, or is set to <K>false</K>),
references in the generated documentation referring to external documentation
(such as the &GAP; manual) are encoded using absolute paths.
This is fine as long as the documentation stays on only a single
computer, but is problematic when preparing documentation that should be
used on multiple computers, e.g., when creating a distribution archive of
a &GAP; package.<Br/>
Thus, if a relative path is provided via this option (or if it is set to <K>true</K>,
in which case the relative path <F>../../..</F> is used), then &AutoDoc;
and &GAPDoc; attempt to replace all absolute paths in references to &GAP;
manuals by paths based on this relative path.<P/>
<P/>
On a technical level, &AutoDoc; passes the relative path to the
<A>gaproot</A> parameter of <Ref Func='MakeGAPDocDoc'
BookName='gapdoc'/><P/>
</Item>
</List>
</Item>
<Mark><A>extract_examples</A></Mark>
<Item>
Either <K>true</K> or a record.
If set to <K>true</K>, then all manual examples are extracted and placed
into files <F>tst/PACKAGENAME01.tst</F>, <F>tst/PACKAGENAME02.tst</F>, ...
and so on, with one file for each chapter. For chapters with no examples,
no file is created.<P/>
As a record, the entry can have the following entries itself, to specify some options.
<List>
<Mark>units</Mark>
<Item>
This controls how examples are grouped into files. Recognized values are
"Chapter" (default), "Section", "Subsection" or "Single". Depending on the value,
one file is created for each chapter, each section, each subsection or each example.
For all other values only a single file is created.
<P/>
On a technical level, &AutoDoc; passes the value to the
<A>units</A> parameter of <Ref Func='ExtractExamples' BookName='gapdoc'/>.
</Item>
<Mark>skip_empty_in_numbering</Mark>
<Item>
If set to <K>true</K> (the default), the generated files use
filenames with strictly sequential numbering; that means that
if chapter 1 (or whatever units are being used) contains no
examples but chapter 2 does, then the examples for chapter 2
are put into the file <F>tst/PACKAGENAME01.tst</F>. If this
option is set to <K>false</K>, then the chapter numbers are
used to generate the filenames; so the examples for chapter 2
would be put into the file <F>tst/PACKAGENAME02.tst</F>.
</Item>
</List>
</Item>
<Mark><A>maketest</A></Mark>
<Item>
<Emph>This option is deprecated. Please use <C>extract_examples</C> instead.</Emph>
<P/>
Either <K>true</K> or a record. When it is <K>true</K>,
a simple <F>maketest.g</F> file 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.
<List>
<Mark>filename</Mark>
<Item>
Sets the name of the test file.
</Item>
<Mark>commands</Mark>
<Item>
A list of strings, each one a command, which
will be executed at the beginning of the test file.
</Item>
</List>
</Item>
</List>
</Item>
</List>
<P/>
</Description>
</ManSection>
</Section>
<Section Label="Chapter_AutoDoc_Section_Examples">
<Heading>Examples</Heading>
<P/>
Some basic examples for using <C>AutoDoc</C> were already shown in
Chapter <Ref Label='Tutorials'/>.
</Section>
</Chapter>
|