AutoDoc-2023.06.19/ 000755 000766 000024 00000000000 14444021302 013735 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/PackageInfo.g 000644 000766 000024 00000011055 14444021247 016266 0 ustar 00mhorn staff 000000 000000 # AutoDoc: Generate documentation from GAP source code
#
# Copyright of AutoDoc belongs to its developers.
# Please refer to the COPYRIGHT file for details.
#
# SPDX-License-Identifier: GPL-2.0-or-later
SetPackageInfo( rec(
PackageName := "AutoDoc",
Subtitle := "Generate documentation from GAP source code",
Version := "2023.06.19",
Date := ~.Version{[ 1 .. 10 ]},
Date := Concatenation( ~.Date{[ 9, 10 ]}, "/", ~.Date{[ 6, 7 ]}, "/", ~.Date{[ 1 .. 4 ]} ),
License := "GPL-2.0-or-later",
Persons := [
rec(
LastName := "Gutsche",
FirstNames := "Sebastian",
IsAuthor := true,
IsMaintainer := true,
Email := "gutsche@mathematik.uni-siegen.de",
WWWHome := "https://algebra.mathematik.uni-siegen.de/gutsche/",
PostalAddress := Concatenation(
"Department Mathematik\n",
"Universität Siegen\n",
"Walter-Flex-Straße 3\n",
"57072 Siegen\n",
"Germany" ),
Place := "Siegen",
Institution := "Universität Siegen"
),
rec( LastName := "Horn",
FirstNames := "Max",
IsAuthor := true,
IsMaintainer := true,
Email := "mhorn@rptu.de",
WWWHome := "https://www.quendi.de/math",
PostalAddress := Concatenation(
"Fachbereich Mathematik\n",
"RPTU Kaiserslautern-Landau\n",
"Gottlieb-Daimler-Straße 48\n",
"67663 Kaiserslautern\n",
"Germany" ),
Place := "Kaiserslautern, Germany",
Institution := "RPTU Kaiserslautern-Landau"
),
# Contributors:
rec( LastName := "Barakat",
FirstNames := "Mohamed",
IsAuthor := false,
IsMaintainer := false,
),
rec( LastName := "Pfeiffer",
FirstNames := "Markus",
IsAuthor := false,
IsMaintainer := false,
),
rec( LastName := "Skartsæterhagen",
FirstNames := "Øystein",
IsAuthor := false,
IsMaintainer := false,
),
rec( LastName := "Wensley",
FirstNames := "Chris",
IsAuthor := false,
IsMaintainer := false,
),
rec( LastName := "Whitney",
FirstNames := "Glen",
IsAuthor := false,
IsMaintainer := false,
),
rec( LastName := "Zickgraf",
FirstNames := "Fabian",
IsAuthor := false,
IsMaintainer := false,
),
],
Status := "deposited",
PackageWWWHome := "https://gap-packages.github.io/AutoDoc/",
SourceRepository := rec(
Type := "git",
URL := Concatenation( "https://github.com/gap-packages/", ~.PackageName ),
),
IssueTrackerURL := Concatenation( ~.SourceRepository.URL, "/issues" ),
PackageWWWHome := Concatenation( "https://gap-packages.github.io/", ~.PackageName ),
README_URL := Concatenation( ~.PackageWWWHome, "/README.md" ),
PackageInfoURL := Concatenation( ~.PackageWWWHome, "/PackageInfo.g" ),
ArchiveURL := Concatenation( ~.SourceRepository.URL,
"/releases/download/v", ~.Version,
"/", ~.PackageName, "-", ~.Version ),
ArchiveFormats := ".tar.gz",
AbstractHTML :=
"",
PackageDoc := rec(
BookName := "AutoDoc",
ArchiveURLSubset := ["doc"],
HTMLStart := "doc/chap0_mj.html",
PDFFile := "doc/manual.pdf",
SixFile := "doc/manual.six",
LongTitle := "Generate documentation from GAP source code",
),
Dependencies := rec(
GAP := ">= 4.5",
NeededOtherPackages := [ [ "GAPDoc", ">= 1.6.3" ] ],
SuggestedOtherPackages := [ ],
ExternalConditions := [],
),
AvailabilityTest := ReturnTrue,
TestFile := "tst/testall.g",
Keywords := [ "Automatic documentation, GAP, GAPDoc" ],
AutoDoc := rec(
entities := rec(
VERSION := ~.Version,
DATE := ~.Date,
io := "io",
PackageName := "PackageName",
),
TitlePage := rec(
Copyright := Concatenation(
"©right; 2012-2022 by Sebastian Gutsche and Max Horn
\n\n",
"This package may be distributed under the terms and conditions ",
"of the GNU Public License Version 2 or (at your option) any later version.\n"
),
Abstract := Concatenation(
"&AutoDoc; is a ⪆ package whose purpose is to aid ",
"⪆ package authors in creating and maintaining the ",
"documentation of their packages.\n"
),
Acknowledgements := Concatenation(
"This documentation was prepared using the ",
"&GAPDoc; package .\n",
"\n"
),
),
),
));
AutoDoc-2023.06.19/LICENSE 000644 000766 000024 00000036463 14444021247 014766 0 ustar 00mhorn staff 000000 000000 The AutoDoc package is free software; you can redistribute and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The AutoDoc package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
Version 2 of the GNU General Public License follows.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
AutoDoc-2023.06.19/makefile 000644 000766 000024 00000000245 14444021247 015446 0 ustar 00mhorn staff 000000 000000 all: doc
doc: doc/manual.six
doc/manual.six: makedoc.g PackageInfo.g doc/*.xml gap/*.gd gap/*.gi
gap makedoc.g
clean:
(cd doc ; ./clean)
.PHONY: all doc clean
AutoDoc-2023.06.19/CHANGES 000644 000766 000024 00000017765 14444021247 014760 0 ustar 00mhorn staff 000000 000000 This file describes changes in the AutoDoc package.
2023.06.19
- Revise handling of chunks XML file
- Remove `AUTODOC_AbsolutePath`
- Don't build PDF docs if `NOPDF` environment variable is set
- Various janitorial changes
2022.10.20
- Prevent some file descriptor leaks
- Do not try to read non-existing file gap/ContextObject.gd
2022.07.10
- Output all entities defined via either the `scaffold.entities` option
to AutoDoc (or equivalently via the `AutoDoc.entities` record in
`PackageInfo.g`) into a file `_entities.xml`, so that they can also
be used with a hand-made main XML file (and not just when AutoDoc
generated the main page)
- Remove `&see;` entity from the default list of entities
2022.03.10
- Strip trailing newlines in PostalAddress and some TitlePage elements
- Allow AutoDoc record in PackageInfo.g to not contain a TitlePage entry
2022.02.24
- true/false are keywords, not just code: use K tags
- extract examples: do not flush pkgname.tst
- remove duplicate entries in autodoc.files
2020.08.11
- Add support for using the string `]]>` in examples
- Add support for `DeclareGlobalName` (new in GAP 4.12)
- Add extract_examples.skip_empty_in_numbering option
- Enhance extract_examples to remove outdated .tst files (e.g. if chapter
number changes, we won't leave outdated extracted .tst examples behind)
- Fix a warning about a missing file `/doc/_Chunks.xml` which appeared
when building the documentation of some packages
2019.09.04
- Deprecate @BeginAutoDoc and @EndAutoDoc; they will be removed in a future
AutoDoc version
- Deprecate @BeginAutoDocPlainText and @EndAutoDocPlainText; they will be
removed in a future AutoDoc version
- Fix @BeginCode / @EndCode / @InsertCode, which were broken in version 2019.07.03
2019.07.24
- Add support for ISO 8601 dates in package metadata (to prepare for GAP adding
official support for this in the future)
- Remove undocumented and long-unused support entities specified using a raw
`` entity string
- Fix the &see; entity we always generate (for legacy support) to display
the correct output in LaTeX / PDF mode
- Fix support for chunks with names / labels that contain spaces (GAPDoc does
not like these, so we replace the spaces by underscores)
2019.07.17
- Fix bug in extract_examples option that could result in invalid .tst files
2019.07.03
- Make Chunks compatible with GAPDoc chunks
- Tweak two error messages, add two more error checks
- Check that gapdoc.files is a list of strings
- Add @GroupTitle command (thanks to Glen Whitney)
- Make @Begin.../@EndExampleSession respect plain_text_mode (thanks to Glen Whitney)
- Handle documentation of DeclareCategoryCollection declarations (thanks to Glen Whitney)
- Repair minor omissions/imprecisions in AutoDoc() function doc (thanks to Glen Whitney)
- Improve manual further
2019.05.20
- Ensure that starting a "manpage" (= documentation for a filter, function, property,
...) ends any active subsection (in GAPDoc, manpages are equivalent to subsections
internally, and hence cannot be nested in each other)
- Add deprecation warnings for @InsertSystem, @System, @BeginSystem, @EndSystem
(use @Chunk etc. instead), and also @EndSection, @EndSubsection
- Rename scaffold.gapdoc_latex_options to gapdoc.LaTeXOptions. The old name is still
supported, but triggers a deprecation warning.
- Update copyright information and author's contact data
- Minor fixes in the manual
2019.04.10
- Add opt.extract_examples to AutoDoc function
- Add @NotLatex command to complement @LatexOnly
- Allow disabling title page creation, by teaching `AutoDoc()` to correctly
handle `scaffold := rec( TitlePage := false )` instead of raising an error
- When generating a manual title page, only include persons as authors
for which IsAuthor is set to true in PackageInfo.g
- Some improvements to the manual
- Various internal changes
2019.02.22
- Updated changes file
2019.02.21
- Removed possibility to mark function arguments via curly braces, as {A},
as it caused problems with writing {} in math mode.
2019.02.20
- Accept single backticks to indicate inline code spans
- Added possibility to mark function arguments via curly braces, as {A}
2018.09.20
- Scan bracket `\[\]` declarations correctly (PR #162)
- Removed the hardcoded utf8 option, make it overridable via gapdoc_latex_option
- Allow AutoDoc() to take absolute dirs and run from any dir (thanks to Glen Whitney)
- Add a test suite for AutoDoc (thanks to Glen Whitney)
- Fix documenting DeclareInfoClass
2018.02.14
- Added @*Title commands to specify titles for Chapters etc.
- Document @BeginExampleSession instead of @ExampleSession
- Document the aliases @Example, @ExampleSession, @Log, and @LogSession
- Improve manual (thanks to Chris Wensley):
- fix a few typos
- added abstract and acknowledgments
- added bibliography file AutoDoc.bib
- added checklist subsection 1.3.3
- added some index entries
- change makedoc.g to highlight some useful features of the AutoDoc() function
- Various other tweaks and fixes
2017.09.08
- Add ChapterLabel, SectionLabel, and SubsectionLabel
- Add ExampleSession environment to support GAPDoc-Style examples
- Add support for documenting DeclareConstructor
- Empty lines in AutoDoc comments start a new paragraph, as in TeX
- Improve @Example documentation
- Fix some spelling mistakes in the manual
- Fix support for KeyDependendOperations (see issue #124)
- Don't show a return value if no @Returns is given
- Various other tweaks and fixes
2016.12.04:
- Revise and officially document the `entities` option for AutoDoc()
2016.11.26:
- Use english month names on title pages
- Ignore empty dependency lists in PackageInfo.g files
- Better error message when .six file is not available
2016.03.08:
- Fix the "empty index" workaround from the previous release
2016.03.04:
- Improved the manual.
- AutoDoc can now be instructed to invoke GAPDoc in such a way that links
in the generated documentation to the GAP reference manual use relative
paths.
- Also scan for .autodoc files (Issue #104)
- Workaround a problem with GAPDoc where an empty index could lead to an error.
- Allow entities in chapter and section titles.
- Fix a bug where the indentation for code blocks was not preserved.
2016.02.24:
- Again improved the error messages produced by the parser.
- Document worksheets (and fix them -- the previous release broke them).
- Removed the @URL documentation comment command.
- Add current directory to default list of directories which are scanned
for *.{g,gi,gd} files containing documentation.
- Fixed various typos and other mistakes in the documentation.
- Make it possible to tell AutoDoc to build manuals with relative paths
(issue #103).
2016.02.16:
- AutoDoc does not anymore produce an error when invoked on a new project
which has no documentation yet (issue #65)
- Various errors in the parser now produce much better error messages,
with information in which file and line the error occurred, and what
the error is (issue #89)
- Files generated by AutoDoc for chapters as well as the "main" file
now have names starting with an underscore, to make it easy to
distinguish generated files from those maintained by hand.
- Removed the old "Declare*WithDoc" API. Any packages still using it
must upgrade to use documentation comments.
2016.01.31:
- Improved the documentation of AutoDoc itself
- Some code is now more robust, detects more error conditions and reports
them clearly to the user, instead of triggering some weird error later on.
- Lots of minor tweaks, fixes and cleanip
2016-01-21:
- The AutoDoc() function now accepts IsDirectory() objects
as first argument, and you can omit the first argument
(it then defaults to the current directory).
Packages using AutoDoc may want to adapt their makedoc.g
to use this new facility for improved robustness.
AutoDoc-2023.06.19/TODO 000644 000766 000024 00000002562 14444021247 014442 0 ustar 00mhorn staff 000000 000000
todo:
Please create a (maybe random) test suite for invoking the AutoDoc command.
We already have a nice testsuite for all comments possible, although Mohamed always
seems to find a way to crash them into void.
IDEAS: We need to collect all possible combinations to invoke the AutoDoc command. It should be no problem
to design a loop in GAP, but checking the output for differences might be painful. Also, what to do with entities? The following is a list of possible
valid inputs for the different option records, which might produce the desired output in all combinations. However, Murphys Law tells us that at least one of them will
break anyway. So good luck.
dir: * doc
* nothing
-> Both should produce the same output.
scaffold: * includes
* appendix
* bib
* TitlePage: + ... Stuff, see GAPDoc.
* document_class
* latex_header_file
* gapdoc_latex_options
Documenting C/C++/C# with AutoDoc:
Use comments of C/C++/C# before AutoDoc hashes, i.e. // #!.
You can also begin a whole comment section with /* and then end it with */.
Please don't put a AutoDoc hash in the same line as /* and */. If using the @AutoDocPlainText command,
you can get rid of the supersticious hashes. Please do *NOT* use the comment syntax with an asterisk at the
beginning of every line, it will mess up the markdown extension!
AutoDoc-2023.06.19/README.md 000644 000766 000024 00000002561 14444021247 015230 0 ustar 00mhorn staff 000000 000000 [](https://github.com/gap-packages/AutoDoc/actions?query=workflow%3ACI+branch%3Amaster)
[](https://codecov.io/gh/gap-packages/AutoDoc)
# AutoDoc: A GAP package to help creating a GAPDoc documentation.
AutoDoc is a package for the [GAP](https://www.gap-system.org) computer
algebra system. It is meant to simplify the creation of reference manuals for
GAP packages. It makes it possible to create documentation from source code
comments, without writing XML files. It is not a substitute for GAPDoc, but
rather builds on GAPDoc, by generating XML input for the latter. As such, you
can combine an existing GAPDoc manual with AutoDoc.
## Using AutoDoc
Please consult the AutoDoc manual for information on how to use it. It is
accessible via the builtin help system of GAP. In addition you can find the
manual for the latest AutoDoc version online at
## Support
Bug reports and other feedback are welcome. The latest version of this
package can be found at
## Copyright and licensing
Please consult the LICENSE and COPYRIGHT file you should have received as part
of this package for details.
AutoDoc-2023.06.19/gap/ 000755 000766 000024 00000000000 14444021247 014514 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/makedoc.g 000644 000766 000024 00000001074 14444021247 015522 0 ustar 00mhorn staff 000000 000000 # AutoDoc: Generate documentation from GAP source code
#
# Copyright of AutoDoc belongs to its developers.
# Please refer to the COPYRIGHT file for details.
#
# SPDX-License-Identifier: GPL-2.0-or-later
LoadPackage("AutoDoc");
AutoDoc( rec(
autodoc := true,
gapdoc := rec(
LaTeXOptions := rec( EarlyExtraPreamble := """
\usepackage{a4wide}
\newcommand{\bbZ}{\mathbb{Z}}
""" )
),
scaffold := rec(
includes := [ "Tutorials.xml",
"Comments.xml" ],
bib := "bib.xml",
)
));
AutoDoc-2023.06.19/doc/ 000755 000766 000024 00000000000 14444021302 014502 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/COPYRIGHT 000644 000766 000024 00000002253 14444021247 015242 0 ustar 00mhorn staff 000000 000000 AutoDoc: A GAP interface to Singular.
AutoDoc is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
AutoDoc is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
AutoDoc; if not, write to the Free Software Foundation, Inc., 51 Franklin
Street, Fifth Floor, Boston, MA 02110-1301, USA.
Copyright (C) 2012-2019 by its authors and contributors:
Authors:
* Max Horn
* Sebastian Gutsche
Contributors:
* Chris Wensley
* Fabian Zickgraf
* Glen Whitney
* Jerry James
* Markus Pfeiffer
* Mohamed Barakat
* Øystein Skartsæterhagen
AutoDoc-2023.06.19/tst/ 000755 000766 000024 00000000000 14444021247 014557 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/init.g 000644 000766 000024 00000000763 14444021247 015066 0 ustar 00mhorn staff 000000 000000 # AutoDoc: Generate documentation from GAP source code
#
# Copyright of AutoDoc belongs to its developers.
# Please refer to the COPYRIGHT file for details.
#
# SPDX-License-Identifier: GPL-2.0-or-later
ReadPackage( "AutoDoc", "gap/DocumentationTree.gd" );
ReadPackage( "AutoDoc", "gap/Parser.gd" );
ReadPackage( "AutoDoc", "gap/AutoDocMainFunction.gd" );
ReadPackage( "AutoDoc", "gap/ToolFunctions.gd" );
ReadPackage( "AutoDoc", "gap/Magic.gd" );
ReadPackage( "AutoDoc", "gap/Markdown.gd" );
AutoDoc-2023.06.19/read.g 000644 000766 000024 00000000763 14444021247 015036 0 ustar 00mhorn staff 000000 000000 # AutoDoc: Generate documentation from GAP source code
#
# Copyright of AutoDoc belongs to its developers.
# Please refer to the COPYRIGHT file for details.
#
# SPDX-License-Identifier: GPL-2.0-or-later
ReadPackage( "AutoDoc", "gap/ToolFunctions.gi" );
ReadPackage( "AutoDoc", "gap/DocumentationTree.gi" );
ReadPackage( "AutoDoc", "gap/Parser.gi" );
ReadPackage( "AutoDoc", "gap/AutoDocMainFunction.gi" );
ReadPackage( "AutoDoc", "gap/Magic.gi" );
ReadPackage( "AutoDoc", "gap/Markdown.gi" );
AutoDoc-2023.06.19/tst/worksheets/ 000755 000766 000024 00000000000 14444021247 016755 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/tst/dogfood.tst 000644 000766 000024 00000003516 14444021247 016741 0 ustar 00mhorn staff 000000 000000 #############################################################################
##
## AutoDoc package
##
## Test the behavior of AutoDoc by generating its own manual
##
## Copyright 2018
## Contributed by Glen Whitney, studioinfinity.org
##
## Licensed under the GPL 2 or later.
##
#############################################################################
gap> START_TEST( "dogfood.tst" );
# need IO package for ChangeDirectoryCurrent
gap> LoadPackage("io", false);
true
# temporarily change info levels to suppress all GAPDoc output
gap> oldGAPDocLevel := InfoLevel( InfoGAPDoc );;
gap> oldWarningLevel := InfoLevel( InfoWarning );;
gap> SetInfoLevel( InfoGAPDoc, 0 );
gap> SetInfoLevel( InfoWarning, 0 );
# change into the package directory
gap> olddir := AUTODOC_CurrentDirectory();;
gap> pkgdir := DirectoriesPackageLibrary( "AutoDoc", "");;
gap> ChangeDirectoryCurrent(Filename(pkgdir, ""));
true
# regenerate the manual using AutoDoc
gap> Read("makedoc.g");
# restore info levels and current directory
gap> SetInfoLevel( InfoGAPDoc, oldGAPDocLevel );
gap> SetInfoLevel( InfoWarning, oldWarningLevel );
gap> ChangeDirectoryCurrent(olddir);
true
# prepare to compare the output to the reference output
# No point in testing chapters 1 or 2 unless/until they are converted to autodoc
gap> docdir := DirectoriesPackageLibrary( "AutoDoc", "doc" );;
gap> ex_dir := DirectoriesPackageLibrary( "AutoDoc", "tst/manual.expected" );;
# check chapter 3
gap> chap3 := Filename( docdir, "_Chapter_AutoDoc_worksheets.xml" );;
gap> chap3ref := Filename( ex_dir, "_Chapter_AutoDoc_worksheets.xml" );;
gap> AUTODOC_Diff("-u", chap3ref, chap3);
0
# check chapter 4
gap> chap4 := Filename( docdir, "_Chapter_AutoDoc.xml" );;
gap> chap4ref := Filename( ex_dir, "_Chapter_AutoDoc.xml" );;
gap> AUTODOC_Diff("-u", chap4ref, chap4);
0
#
gap> STOP_TEST( "dogfood.tst" );
AutoDoc-2023.06.19/tst/misc.tst 000644 000766 000024 00000002314 14444021247 016246 0 ustar 00mhorn staff 000000 000000 #
# test miscellaneous stuff
#
gap> START_TEST( "misc.tst" );
# AUTODOC_SetIfMissing
gap> r:=rec();
rec( )
gap> AUTODOC_SetIfMissing(r, "foo", 1);
gap> r;
rec( foo := 1 )
gap> AUTODOC_SetIfMissing(r, "foo", 2);
gap> r;
rec( foo := 1 )
#
# AUTODOC_FormatDate
#
#
gap> AUTODOC_FormatDate(2019);
"2019"
gap> AUTODOC_FormatDate(2019, 3);
"March 2019"
gap> AUTODOC_FormatDate(2019, 3, 1);
"1 March 2019"
gap> AUTODOC_FormatDate("2019", "3", "1");
"1 March 2019"
gap> AUTODOC_FormatDate(rec(year:=2019));
"2019"
gap> AUTODOC_FormatDate(rec(year:=2019, month:=3));
"March 2019"
gap> AUTODOC_FormatDate(rec(year:=2019, month:=3, day:=1));
"1 March 2019"
gap> AUTODOC_FormatDate(rec(year:="2019", month:="3", day:="1"));
"1 March 2019"
# error handling
gap> AUTODOC_FormatDate();
Error, Invalid arguments
gap> AUTODOC_FormatDate(2019, 3, 40);
Error, must be an integer in the range [1..31], or a string representing\
such an integer
gap> AUTODOC_FormatDate(2019, 13, 1);
Error, must be an integer in the range [1..12], or a string representi\
ng such an integer
gap> AUTODOC_FormatDate(fail, 3, 1);
Error, must be an integer >= 2000, or a string representing such an int\
eger
#
gap> STOP_TEST( "misc.tst" );
AutoDoc-2023.06.19/tst/manual.expected/ 000755 000766 000024 00000000000 14444021247 017634 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/tst/worksheets.tst 000644 000766 000024 00000000637 14444021247 017517 0 ustar 00mhorn staff 000000 000000 #
# test worksheets
#
gap> START_TEST( "worksheets.tst" );
#
gap> AUTODOC_TestWorkSheet("general");
Extracting manual examples for General Test package ...
1 chapters detected
Chapter 1 : extracted 2 examples
#
gap> AUTODOC_TestWorkSheet("autoplain");
Extracting manual examples for Plain file.autodoc Test package ...
1 chapters detected
Chapter 1 : extracted 2 examples
#
#
gap> STOP_TEST( "worksheets.tst" );
AutoDoc-2023.06.19/tst/testall.g 000644 000766 000024 00000000202 14444021247 016371 0 ustar 00mhorn staff 000000 000000 LoadPackage( "AutoDoc" );
TestDirectory( DirectoriesPackageLibrary("AutoDoc", "tst"), rec(exitGAP := true ) );
FORCE_QUIT_GAP(1);
AutoDoc-2023.06.19/tst/manual.expected/_AutoDocMainFile.xml 000644 000766 000024 00000000267 14444021247 023465 0 ustar 00mhorn staff 000000 000000
<#Include SYSTEM "_Chapter_AutoDoc_worksheets.xml">
<#Include SYSTEM "_Chapter_AutoDoc.xml">
AutoDoc-2023.06.19/tst/manual.expected/_Chunks.xml 000644 000766 000024 00000000000 14444021247 021736 0 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/tst/manual.expected/_Chapter_AutoDoc.xml 000644 000766 000024 00000042763 14444021247 023535 0 ustar 00mhorn staff 000000 000000
AutoDoc
The AutoDoc() function
nothing
This is the main function of the &AutoDoc; package. It can perform
any combination of the following tasks:
-
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 doc/PACKAGENAME.xml
(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 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 PackageInfo.g.
-
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.
-
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
to convert the XML sources, and it also instructs &GAPDoc; to copy
supplementary files (such as CSS style files) into your doc directory
(see ).
For more information and some examples, please refer to Chapter .
The parameters have the following meanings:
packageOrDirectory
-
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 IsDirectory 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 InstallationPath specified in that
metadata as the package directory. If packageOrDirectory is
an IsDirectory 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
PackageInfo.g file, and &AutoDoc; extracts all needed metadata
from that. The IsDirectory 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.
Note that when using AutoDocWorksheet (see
), there is
no parameter corresponding to packageOrDirectory and so the
package directory
is always the current directory, and
there is no metadata.
optrec
-
optrec can be a record with some additional options.
The following are currently supported:
dir
-
This should either be a string, in which case it must be a path
relative to the specified package directory, or a
Directory() object. (Thus, the only way to designate an
absolute directory is with a Directory() 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.
Default value: "doc/".
scaffold
-
This controls whether and how to generate scaffold XML files
for the package documentation.
The value should be either true, false or a
record. If it is a record or true (the latter is
equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if opt.scaffold is missing but the
package's info record in PackageInfo.g has an AutoDoc entry.
In all other cases (in particular if opt.scaffold is
false), scaffolding is disabled.
If scaffolding is enabled, and PackageInfo.AutoDoc exists, then it is
assumed to be a record, and its contents are used as default values for
the scaffold settings.
If opt.scaffold is a record, it may contain the following entries.
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 &AutoDoc; to document
your operations with &AutoDoc; comments,
you can add _AutoDocMainFile.xml 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.
index
-
By default, the scaffold creates an index. If you do not want an index,
set this to false.
appendix
-
This entry is similar to opt.scaffold.includes but is used
to specify files to include after the main body of the manual,
i.e. typically appendices.
bib
-
The name of a bibliography file, in BibTeX or XML format.
If this key is not set, but there is a file doc/PACKAGENAME.bib
then it is assumed that you want to use this as your bibliography.
entities
-
A record whose keys are taken as entity names, set to the corresponding
(string) values. For example, if you pass the record
SomePackage
,
SomePackage",
RELEASEYEAR := "2015" )]]>
then the following entity definitions are added to the XML preamble:
SomePackage'>
]]>
This allows you to write &SomePackage;
and &RELEASEYEAR;
in your documentation, which will be replaced by respective values specified
in the entities definition.
TitlePage
-
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:
For a list of valid entries in the title page, please refer to the
&GAPDoc; manual, specifically section
.
MainPage
-
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 false
document_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;.
latex_header_file
-
Replaces the standard header from &GAPDoc; completely with the header in this &LaTeX; file.
Please be careful here, and look at &GAPDoc;'s latexheader.tex file for an example.
autodoc
-
This controls whether and how to generate additional XML documentation files
by scanning for &AutoDoc; documentation comments.
The value should be either true, false or a
record. If it is a record or true (the latter is
equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if opt.autodoc is missing but the
package depends (directly) on the &AutoDoc; package.
In all other cases (in particular if opt.autodoc is
false), this feature is disabled.
If opt.autodoc is a record, it may contain the following entries.
files
-
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 autodoc.scan_dirs, see below.
scan_dirs
-
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.
Default value: [ ".", "gap", "lib", "examples", "examples/doc" ].
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.
gapdoc
-
This controls whether and how to invoke &GAPDoc; to create HTML, PDF and text
files from your various XML files.
The value should be either true, false or a
record. If it is a record or true (the latter is
equivalent to specifying an empty record), then this feature is
enabled. It is also enabled if opt.gapdoc is missing.
In all other cases (in particular if opt.gapdoc is
false), this feature is disabled.
If opt.gapdoc is a record, it may contain the following entries.
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.
Default value: PACKAGENAME.xml.
files
-
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 gapdoc.scan_dirs, see below.
scan_dirs
-
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.
Default value: [ ".", "gap", "lib", "examples", "examples/doc" ].
LaTeXOptions
-
Must be a record with entries which can be understood by
. 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.
gap_root_relative_path
-
Either a boolean, or a string containing a relative path.
By default (if this option is not set, or is set to false),
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.
Thus, if a relative path is provided via this option (or if it is set to true,
in which case the relative path ../../.. is used), then &AutoDoc;
and &GAPDoc; attempt to replace all absolute paths in references to &GAP;
manuals by paths based on this relative path.
On a technical level, &AutoDoc; passes the relative path to the
gaproot parameter of
extract_examples
-
Either true or a record.
If set to true, then all manual examples are extracted and placed
into files tst/PACKAGENAME01.tst, tst/PACKAGENAME02.tst, ...
and so on, with one file for each chapter. For chapters with no examples,
no file is created.
As a record, the entry can have the following entries itself, to specify some options.
units
-
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.
On a technical level, &AutoDoc; passes the value to the
units parameter of
.
skip_empty_in_numbering
-
If set to true (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 tst/PACKAGENAME01.tst. If this
option is set to false, then the chapter numbers are
used to generate the filenames; so the examples for chapter 2
would be put into the file tst/PACKAGENAME02.tst.
maketest
-
This option is deprecated. Please use extract_examples instead.
Either true or a record. When it is true,
a simple maketest.g 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.
filename
-
Sets the name of the test file.
commands
-
A list of strings, each one a command, which
will be executed at the beginning of the test file.
Examples
Some basic examples for using AutoDoc were already shown in
Chapter .
AutoDoc-2023.06.19/tst/manual.expected/_Chapter_AutoDoc_worksheets.xml 000644 000766 000024 00000001643 14444021247 026003 0 ustar 00mhorn staff 000000 000000
AutoDoc worksheets
Worksheets
The intention of these function is to create stand-alone pdf and html files
using AutoDoc without having them associated to a package.
It uses the same optional records as the &AutoDoc; command itself, but instead of
a package name there should be a filename or a list of filenames containing AutoDoc
text from which the documents are created. Please see the &AutoDoc; command for more
information about this and have a look at for a simple worksheet example.
AutoDoc-2023.06.19/tst/worksheets/general.sheet/ 000755 000766 000024 00000000000 14444021247 021501 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/tst/worksheets/autoplain.expected/ 000755 000766 000024 00000000000 14444021247 022551 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/tst/worksheets/general.expected/ 000755 000766 000024 00000000000 14444021247 022172 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/tst/worksheets/update.sh 000755 000766 000024 00000000504 14444021247 020575 0 ustar 00mhorn staff 000000 000000 #!/bin/sh
# This script copies actual files over to the expected files;
# this is useful when adding new tests.
for actual in *.actual ; do
expected="$(basename $actual .actual).expected"
rm -rf $expected
mkdir $expected
cp $actual/*.xml $expected/
mkdir $expected/tst
cp $actual/tst/*.tst $expected/tst/
done
AutoDoc-2023.06.19/tst/worksheets/autoplain.sheet/ 000755 000766 000024 00000000000 14444021247 022060 5 ustar 00mhorn staff 000000 000000 AutoDoc-2023.06.19/tst/worksheets/autoplain.sheet/plain.autodoc 000644 000766 000024 00000000740 14444021247 024544 0 ustar 00mhorn staff 000000 000000 @Title Plain file.autodoc Test
@Date 2018-08-30
@Chapter Test
Does AutoDoc have a way to allow that header block not to appear in
the documentation generated from a .autodoc file like this?
@BeginExampleSession
gap> S5 := SymmetricGroup(5);
Sym( [ 1 .. 5 ] )
gap> Size(S5);
120
@EndExampleSession
Some text between two examples
@BeginExampleSession
gap> A5 := AlternatingGroup(5);
Alt( [ 1 .. 5 ] )
gap> Size(A5);
60
@EndExampleSession
And we wrap up with some dummy text
AutoDoc-2023.06.19/tst/worksheets/general.expected/_entities.xml 000644 000766 000024 00000000071 14444021247 024675 0 ustar 00mhorn staff 000000 000000 General_Test'>
AutoDoc-2023.06.19/tst/worksheets/general.expected/General_Test.xml 000644 000766 000024 00000000466 14444021247 025276 0 ustar 00mhorn staff 000000 000000
]
>
<#Include SYSTEM "title.xml">
<#Include SYSTEM "_AutoDocMainFile.xml">
AutoDoc-2023.06.19/tst/worksheets/general.expected/_AutoDocMainFile.xml 000644 000766 000024 00000000207 14444021247 026015 0 ustar 00mhorn staff 000000 000000
<#Include SYSTEM "_Chapter_SomeChapter.xml">
AutoDoc-2023.06.19/tst/worksheets/general.expected/title.xml 000644 000766 000024 00000000300 14444021247 024026 0 ustar 00mhorn staff 000000 000000
General Test
30 August 2018