Comparison of documentation generators

Last updated

The following tables compare general and technical information for a number of documentation generators. Please see the individual products' articles for further information. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs. Note that many of the generators listed are no longer maintained.

Contents

General information

Basic general information about the generators, including: creator or company, license, and price.

NameCreatorInput formatLanguages (alphabet order)OS supportFirst public release dateLatest stable version Software license
Ddoc Walter Bright TextDWindows, OS X, Linux and BSD2005/09/19DMD 2.078.3 Boost (opensource)
Document! XInnovasysText, BinaryC++/CLI only, C#, IDL, Java, VB, VBScript, PL/SQLWindows only19982014.1Proprietary
Doxygen Dimitri van HeeschTextC/C++, C#, D, IDL, Fortran, Java, PHP, PythonAny1997/10/261.9.1GPL
Epydoc Edward LoperTextPythonAny2002/01/—3.0 (2008) MIT
fpdoc (Free Pascal Documentation Generator)Sebastian Guenther and Free Pascal CoreText(Object)Pascal/DelphiFPC tier 1 targets20053.2.2GPL reusable parts are GPL with static linking exception
Haddock Simon Marlow TextHaskellAny20022.15.0 (2014)BSD
HeaderDoc Apple Inc. TextAppleScript, Bash, Csh, C, C++, Delphi, IDL, Java, JavaScript, MIG, Pascal, Perl, PHP, Python, Ruby, TclAny Unix-like2000/09/—8.9.28 (2013) APSL
Imagix 4D Imagix Corp.TextC, C++, JavaWindows, Linux, Unix19957.3Proprietary
Javadoc Sun Microsystems TextJavaAny19951.6GPL
JSDoc Michael MathewsTextJavaScriptAny2001/07/—1.10.2GPL
JsDoc Toolkit Michael MathewsTextJavaScriptAny2007?2.0.0MIT
mkd Jean-Paul LouyotTextAny with commentsUnix, Linux, Windows19892015 EUPL GPL
MkDocs Tom ChristieTextPythonAny2014/10/291.5.3BSD
Natural Docs Greg ValureTextAny with commentsAny2003/05/262.0.2GPL
NDoc Jason Diamond, Jean-Claude Manoli, Kral FerchBinaryC#Windows only2003/07/271.3.1GPL
pdoc Andrew GallantTextPythonAny20131.0.1 (2021) Unlicense (PD)
perldoc Larry Wall TextPerlAny19945.16.3 Artistic, GPL
phpDocumentor Joshua EichornTextPHPAny20003.0.0 LGPL for 1.x, MIT for 2+
pydoc Ka-Ping Yee [1] TextPythonAny2000in Python core Python
RDoc Dave ThomasTextC, C++, RubyAny2001/12/14in Ruby core Ruby
ROBODoc Frans SlothouberTextAny with commentsAny1995/01/194.99.36 (2015)GPL
Sandcastle Microsoft Text.NETWindows only2008/05/—2.4.10520 (2016) Ms-PL
Sphinx Georg BrandlTextAda, C, C++, Fortran, JavaScript, PHP, Python, RubyAny2008/03/213.5.4BSD
Visual Expert NovalysText, BinaryC#, PL/SQL, Transact-SQL, PowerBuilderWindows only19952017Proprietary
VSdocman HelixoftTextVB, VBScript, C#Windows only2003 Oct 29.0Proprietary
YARD Loren SegalTextRubyAny2007/02/240.7.3MIT
NameCreatorInput formatLanguages (alphabet order)OS supportFirst public release dateLatest stable version Software license

Supported formats

The output formats the generators can write.

HTML CHM RTF PDF LaTeX PostScript man pages DocBook XML EPUB
Ddoc YesYes [lower-alpha 1] NoYes [lower-alpha 1] Yes [lower-alpha 1] Yes [lower-alpha 1] Yes [lower-alpha 1] NoYes [lower-alpha 1]
Document! XYesYesNoNoNoNoNoNoNo
Doxygen YesYesYesIndirectly [lower-alpha 2] YesIndirectly [lower-alpha 2] YesYesYesNo
Epydoc YesNoNoYesIndirectly [lower-alpha 3] Indirectly [lower-alpha 3] NoNoNo
fpdoc YesNativeYesIndirectly [lower-alpha 3] Indirectly [lower-alpha 3] YesNoNoNoNo
Haddock YesYesNoNoNoNoNoPartialNo
HeaderDoc YesNoNoNoNoNoYesNoYes
Imagix 4D YesNoYesNoNoNoNoNoNo
Javadoc YesIndirectly [lower-alpha 4] Indirectly [lower-alpha 4] Indirectly [lower-alpha 4] Indirectly [lower-alpha 4] Indirectly [lower-alpha 4] Indirectly [lower-alpha 4] Indirectly [lower-alpha 4] Indirectly [lower-alpha 4]
JSDoc YesNoNoNoNoNoNoNoNo
JsDoc Toolkit YesNoNoNoNoNoNoNoYes+JSON
MkDocs YesNoNoNoNoNoNoNoNoNo
Natural Docs YesNoNoNoNoNoNoNoNo
NDoc YesYesNoNoNoNoNoNoNo
pdoc YesNoNoNoNoNoNoNoNoNo
phpDocumentor YesYes (1.x only)NoYes (1.x only)NoNoNoYes (1.x only)Yes (1.x only)
pydoc YesNoNoNoNoNoNoNoNoNo
RDoc YesYes [lower-alpha 5] NoNoNoNoIndirectly [lower-alpha 6] NoYes [lower-alpha 5]
ROBODoc YesIndirectlyYesIndirectly [lower-alpha 3] YesIndirectly [lower-alpha 3] YesYesNo
Sandcastle YesYesNoNoNoNoNoNoNo
Sphinx YesYesIndirectly [lower-alpha 7] YesYesYes
Visual Expert YesNoNoNoNoNoNoNoNo
VSdocman YesYesNoYesNoNoNoNoYes
YARD YesNoNoNoNoNoNoNoNo
HTMLCHMRTFPDFLaTeXPostScriptman pagesDocBookXMLePub

Other features

possibility of extended customizationgenerated diagramshighlighting and linking of generated docparameter types extracted
Ddoc with macros
Document! Xcustomizable HTML based templates, custom comment tagslinked graphical object relationship diagramsinternal links and links to .NET framework documentationtypes extracted and linked
Doxygen with XSLTcaller and callee graphs, dependency graphs, inheritance diagrams, collaboration diagrams
Epydoc
Haddock YesYes
HeaderDoc Custom headers, footers, code coloring, and other CSS styles in individual pages. Project-wide TOC is generated from a user-defined template.Configurable syntax highlighting/coloring with automatic linking to symbols in declaration, ability to manually link to symbols in discussion, etc.Provides warnings if tagged parameters do not match code, parsed parameters included in XML output and Doxygen-style tagfile (-D flag in 8.7). Partial C preprocessor support with -p flag. Support for #if/#ifdef control over documentation inclusion using the -D and -U command-line flags.
Imagix 4D customizable through style sheets and CSSlinked hierarchy and dependency graphs for function calls, variable sets and reads, class inheritance and interface, and file includes and interface, intra-function flow chartsfully cross-linked project-wide, including all hierarchy and dependency graphs, metrics tables, source code snippets, and source filesfull semantic analysis of source code, including parameter types, conditional compilation directives, macro expansions
Javadoc
JSDoc Yes
JsDoc Toolkit Yes
mkd Customisable for all type of comments'as-is' in commentsall general documentation; references, manual, organigrams, ... Including the binary codes included in the comments.all coded comments
MkDocs
Natural Docs
NDoc
perldoc Extend the generator classes through Perl programming.Only linking
pdoc overridable Jinja2 templatessource code syntax highlighting, automatic cross-linking to symbol declarationsYes
phpDocumentor Smarty-based templates (1.x), Twig-based templates (2+)class inheritance diagramscross reference to generated documentation, and to php.net function referenceYes
pydoc
RDoc
ROBODoc
Sphinx 10 themes; Jinja2 templating; Python pluginsseveral in sphinx-contrib, e.g. using aafigure, actdiag, Google Chart, or gnuplotTable of Contents, Index; cross referencing; syntax highlighting with Pygmentscustom objects (such as functions and classes)
Visual Expert documentation content and styles customizableClass inheritance, call trees, dependencies (impact analysis)internal links between classes, methods, variables, tables, columns...all types extracted
VSdocman full customization for all output formats, templates for MSDN-like output, custom XML comment tagslinked graphical class diagrams, class inheritance treeinternal links and links to .NET framework documentationtypes extracted and linked
YARD customizable Ruby templatesclass diagrams with extra toolinternal classes/modules cross-referenced and Ruby source highlighted

See also

Notes

  1. 1 2 3 4 5 6 Ddoc has a macro system which can be customized to output any desired format. CHM, groff (manpages), XHTML, XML, and LaTeX (so PostScript and PDF) were tested. They are not currently included in the standard distribution. Standard HTML output also is generated using macros and can be redefined.
  2. 1 2 Generated from the LaTeX output only. [2]
  3. 1 2 3 4 5 6 Though not officially supported as an output format, Epydoc uses LaTeX and PostScript as intermediate steps to produce the final PDF documentation.
  4. 1 2 3 4 5 6 7 8 Via Doclets from Third Parties.
  5. 1 2 RDoc currently only provides generators for CHM and XML documents in the RDoc version provided as part of the Ruby 1.9 Core.
  6. RDoc generates documentation for RI, which is Ruby's version of the Unix man pages.
  7. Generated from the LaTeX output only

Related Research Articles

<span class="mw-page-title-main">Literate programming</span> A programming approach of software development

Literate programming is a programming paradigm introduced in 1984 by Donald Knuth in which a computer program is given as an explanation of how it works in a natural language, such as English, interspersed (embedded) with snippets of macros and traditional source code, from which compilable source code can be generated. The approach is used in scientific computing and in data science routinely for reproducible research and open access purposes. Literate programming tools are used by millions of programmers today.

<span class="mw-page-title-main">LaTeX</span> Typesetting system

LaTeX is a software system for typesetting documents. LaTeX markup describes the content and layout of the document, as opposed to the formatted text found in WYSIWYG word processors like Microsoft Word, LibreOffice Writer and Apple Pages. The writer uses markup tagging conventions to define the general structure of a document, to stylise text throughout a document, and to add citations and cross-references. A TeX distribution such as TeX Live or MiKTeX is used to produce an output file suitable for printing or digital distribution.

TeX, stylized within the system as TeX, is a typesetting program which was designed and written by computer scientist and Stanford University professor Donald Knuth and first released in 1978. The term now refers to the system of extensions - which includes software programs called TeX engines, sets of TeX macros, and packages which provide extra typesetting functionality - built around the original TeX language. TeX is a popular means of typesetting complex mathematical formulae; it has been noted as one of the most sophisticated digital typographical systems.

gnuplot Command-line and GUI plotting program

gnuplot is a command-line and GUI program that can generate two- and three-dimensional plots of functions, data, and data fits. The program runs on all major computers and operating systems . Originally released in 1986, its listed authors are Thomas Williams, Colin Kelley, Russell Lang, Dave Kotz, John Campbell, Gershon Elber, Alexander Woo "and many others." Despite its name, this software is not part of the GNU Project.

DocBook is a semantic markup language for technical documentation. It was originally intended for writing technical documents related to computer hardware and software, but it can be used for any other sort of documentation.

Metafont is a description language used to define raster fonts. It is also the name of the interpreter that executes Metafont code, generating the bitmap fonts that can be embedded into e.g. PostScript. Metafont was devised by Donald Knuth as a companion to his TeX typesetting system.

<span class="mw-page-title-main">GNU TeXmacs</span> Open-source word processor

GNU TeXmacs is a scientific word processor and typesetting component of the GNU Project. It originated as a variant of GNU Emacs with TeX functionalities, though it shares no code with those programs, while using TeX fonts. It is written and maintained by Joris van der Hoeven and a group of developers. The program produces structured documents with a WYSIWYG user interface. New document styles can be created by the user. The editor provides high-quality typesetting algorithms and TeX and other fonts for publishing professional looking documents.

<span class="mw-page-title-main">Typesetting</span> Composition of text by means of arranging physical types or digital equivalents

Typesetting is the composition of text for publication, display, or distribution by means of arranging physical type in mechanical systems or glyphs in digital systems representing characters. Stored types are retrieved and ordered according to a language's orthography for visual display. Typesetting requires one or more fonts. One significant effect of typesetting was that authorship of works could be spotted more easily, making it difficult for copiers who have not gained permission.

<span class="mw-page-title-main">Device independent file format</span> Typesetting file format

The device independent file format (DVI) is the output file format of the TeX typesetting program, designed by David R. Fuchs and implemented by Donald E. Knuth in 1982. Unlike the TeX markup files used to generate them, DVI files are not intended to be human-readable; they consist of binary data describing the visual layout of a document in a manner not reliant on any specific image format, display hardware or printer. DVI files are typically used as input to a second program which translates DVI files to graphical data. For example, most TeX software packages include a program for previewing DVI files on a user's computer display; this program is a driver. Drivers are also used to convert from DVI to popular page description languages and for printing.

<span class="mw-page-title-main">BibTeX</span> Reference management software for formatting lists of references

BibTeX is both a bibliographic flat-file database file format and a software program for processing these files to produce lists of references (citations). The BibTeX file format is a widely used standard with broad support by reference management software.

<span class="mw-page-title-main">Texinfo</span> Markup language for documentation

Texinfo is a typesetting syntax used for generating documentation in both on-line and printed form with a single source file. It is implemented by a computer program released as free software of the same name, created and made available by the GNU Project from the Free Software Foundation.

<span class="mw-page-title-main">Doxygen</span> Free software for generating software documentation from source code

Doxygen is a documentation generator and static analysis tool for software source trees. When used as a documentation generator, Doxygen extracts information from specially-formatted comments within the code. When used for analysis, Doxygen uses its parse tree to generate diagrams and charts of the code structure. Doxygen can cross reference documentation and code, so that the reader of a document can easily refer to the actual code.

Javadoc is a documentation generator created by Sun Microsystems for the Java language for generating API documentation in HTML format from Java source code. The HTML format is used for adding the convenience of being able to hyperlink related documents together.

Embedded Ruby is a templating system that embeds Ruby into a text document. It is often used to embed Ruby code in an HTML document, similar to ASP and JSP, and PHP and other server-side scripting languages. The templating system of eRuby combines Ruby code and plain text to provide flow control and variable substitution, thus making the combined code easier to maintain.

HeaderDoc is a documentation generator developed and maintained by Apple Inc. Using specially commented source code files as input, HeaderDoc generates documentation for the code in HTML or XML format. Syntax for HeaderDoc comment tags is largely similar to, and as of HeaderDoc version 8, supportive of Javadoc tags. HeaderDoc 8.7 and later also provides partial support for many Doxygen tags. Apple's HeaderDoc project is free, open source software distributed under the Apple Public Source License.

Sandcastle is a documentation generator from Microsoft. It automatically produces MSDN-style code documentation out of reflection information of .NET assemblies and XML documentation comments found in the source code of these assemblies. It can also be used to produce user documentation from Microsoft Assistance Markup Language (MAML) with the same look and feel as reference documentation.

<span class="mw-page-title-main">NDoc</span>

NDoc is a code documentation generator for the Common Language Infrastructure created by Jason Diamond, Jean-Claude Manoli and Kral Ferch. It is licensed under the GNU General Public License.

RDoc, designed by Dave Thomas, is an embedded documentation generator for the Ruby programming language. It analyzes Ruby source code, generating a structured collection of pages for Ruby objects and methods. Code comments can be added in a natural style. RDoc is included as part of the Ruby core distribution. The RDoc software and format are successors to the Ruby Document format.

YARD, is an embedded documentation generator for the Ruby programming language. It analyzes the Ruby source code, generating a structured collection of pages for Ruby objects and methods. Code comments can be added in a natural style.

References

  1. "PEP 256 -- Docstring Processing System Framework | Python.org".
  2. "Doxygen Manual: Output Formats". Archived from the original on 2013-01-06.