FPDoc is a tool that combines a Pascal unit file and a description file in XML format and produces reference documentation for the unit. The reference documentation contains documentation for all of the identifiers found in the unit’s interface section. The documentation is fully cross-referenced, making it easy to navigate. It is also possible to refer to other documentation sets written with FPDoc, making it possible to maintain larger documentation sets for large projects.
Contrary to some other documentation techniques, FPDoc does not require the presence of formatted comments in the source code. It takes a source file and a documentation file (in XML format) and merges these two together to a full documentation of the source. This means that the code doesn’t get obfuscated with large pieces of comment, making it hard to read and understand.
FPDoc is package-oriented, which means that it considers units as part of a package. Documentation for all units in a package can be generated in one run.
At the moment of writing, the documentation can be generated in the following formats:
Plain HTML. Javascript is used to be able to show a small window with class properties or class methods, but the generated HTML will work without JavaScript as well. Style sheets are used to do the markup, so the output can be customised.
As HTML, but using a more strict syntax.
LaTeX files, which can be used with the fpc.sty file which comes with the Free Pascal documentation. From this output, PDF documents can be generated, and with the use of latex2rtf, RTF or Winhelp files. Text files can also be generated.
plain ascii text files. No cross-referencing exists. Other than that it resembles the LaTeX output in it’s structure.
Unix man pages. Each function/procedure/method identifier is a man page. Constants are on a separate page, as are types, variables and resourcestrings.
HTML files compressed into a .chm file using lzx compression.
Linear RTF files.
Note that pascal program files cannot be parsed by fpdoc, it is therefor impossible to create documentation for a program. Only units are supported.