Fix#3447Fix#8228
With this patch the legacy notion of "problematic cell" is almost
entirely removed, and LaTeX package tabulary will be used more often so
that column widths in tables may get better fit to actual contents.
This works well when the column contains cells with multiple paragraphs,
bullet lists, enumerated lists, or line blocks. For cells with object
descriptions or admonitions, the column may not fit tightly to the
contents, but other columns will probably be improved.
Tables using longtable can now contain nested tables inclusive of those
rendered by tabulary, up to the suppression of the latter horizontal
lines due to an upstream LaTeX bug. A longtable can never itself be
nested, and will fall-back to tabular.
Formerly longtable would raise (in principle) an error if it contained
any sort of nested table, but the detection of being a longtable was
faulty if not specified as class option.
Relates #6838.
A common use-case is that users simply want to point Sphinx
towards a Python module, and have it generate documentation
automatically.
This is not possible currently, without a "pre-build" step
of running the ``sphinx-autogen`` CLI.
This PR adds ``sphinx.ext.apidoc`` as a first-party extension,
to incorporate the source file generation into the Sphinx build.
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
The ``productionlist`` directive operates in a line-based context, creating an ``addnodes.productionlist`` container
of ``addnodes.production`` nodes, with one per production in the directive. However, the full state of the abstract
document tree is not included in the produced nodes, with each builder/translator implementing a different way
of appending the fixed separator ``::=`` and justifying the displayed text.
This should not happen in the writer, and hard-coding such details hampers flexibility when documenting different
abstract grammars. We move the specific form of the ``.. productionlist::`` directive to the logic in the directive body
and have the writers apply minimal custom logic.
LaTeX changes written by Jean-François B.
When this option is given, all sub-classes of the classes listed as arguments to `inheritance-diagram` are included in the diagram.
This makes it possible to generate a complete inheritance tree by just listing the base class and adding `:include-subclasses:`.
This is different from specifying the module that contains this base class, as this module might include other classes that should not be part of the diagram.
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>