Skip to content

[Texinfo] toctree inside admonition results in unmatched @end #13776

@Thaodan

Description

@Thaodan

Describe the bug

When trying to build salts documentation in texinfo I noticed that the toctree inside an admonition results in unmatched end.

How to Reproduce

  1. make info.
  2. See error.
  3. Remove .. admonition:: Virtual modules in index.rst.
  4. repeat step 1.
  5. No error.

Environment Information

Platform:              linux; (Linux-6.15.2-1-default-x86_64-with-glibc2.41)
Python version:        3.13.3 (main, Apr 11 2025, 19:56:42) [GCC])
Python implementation: CPython
Sphinx version:        8.2.3
Docutils version:      0.21.2
Jinja2 version:        3.1.6
Pygments version:      2.19.1
Makeinfo version:      7.1

Sphinx extensions

- saltdomain  # Must come early
    - sphinx.ext.autodoc
    - sphinx.ext.napoleon
    - sphinx.ext.autosummary
    - sphinx.ext.extlinks
    - sphinx.ext.imgconverter
    - sphinx.ext.intersphinx
    - sphinxcontrib.httpdomain
    - saltrepo
    - myst_parser

Additional context

Console output


salt.texi:98471: warning: @menu in invalid context
salt.texi:98742: @node seen before @end quotation
salt.texi:98742: @node seen before @end cartouche
salt.texi:99305: unmatched `@end quotation'
salt.texi:99306: unmatched `@end cartouche'

Example

.. admonition:: Virtual modules

    .. toctree::

        salt.modules.group
        salt.modules.kernelpkg
        salt.modules.pkg
        salt.modules.service
        salt.modules.shadow
        salt.modules.sysctl
        salt.modules.user

Example output

The comments @c comment where added by after the fact.

@cartouche
@quotation Virtual modules 
@menu
* salt.modules.group: salt modules group. 
* salt.modules.kernelpkg: salt modules kernelpkg. 
* salt.modules.pkg: salt modules pkg. 
* salt.modules.service: salt modules service. 
* salt.modules.shadow: salt modules shadow. 
* salt.modules.sysctl: salt modules sysctl. 
* salt.modules.user: salt modules user. 
* salt.modules.aix_group: salt modules aix_group. 
* salt.modules.aix_shadow: salt modules aix_shadow. 
* salt.modules.aixpkg: salt modules aixpkg. 
* salt.modules.aliases: salt modules aliases. 
* salt.modules.alternatives: salt modules alternatives. 
* salt.modules.ansiblegate: salt modules ansiblegate. 
* salt.modules.apache: salt modules apache. 
* salt.modules.apf: salt modules apf. 
* salt.modules.aptpkg: salt modules aptpkg. 
* salt.modules.archive: salt modules archive. 
* salt.modules.arista_pyeapi: salt modules arista_pyeapi. 
* salt.modules.artifactory: salt modules artifactory. 
* salt.modules.asymmetric: salt modules asymmetric. 
* salt.modules.at: salt modules at. 

@c Some lines in index cut to keep it brief.

@node salt modules group,salt modules kernelpkg,,execution modules
@anchor{ref/modules/all/salt modules group doc}@anchor{1495}@anchor{ref/modules/all/salt modules group module-salt modules group}@anchor{6c}@anchor{ref/modules/all/salt modules group salt-modules-group}@anchor{1496}@anchor{ref/modules/all/salt modules group virtual-group}@anchor{cb2}
@subsection salt.modules.group


@geindex module; salt.modules.group

@code{group} is a virtual module that is fulfilled by one of the following
modules:


@multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
@headitem

Execution Module

@tab

Used for

@item

@ref{6d,,groupadd}

@tab

Linux, NetBSD, and OpenBSD systems using
@code{groupadd(8)}, @code{groupdel(8)}, and
@code{groupmod(8)}

@item

@ref{ca,,pw_group}

@tab

FreeBSD-based OSes using @code{pw(8)}

@item

@ref{ef,,solaris_group}

@tab

Solaris-based OSes using
@code{groupadd(1M)}, @code{groupdel(1M)}, and
@code{groupmod(1M)}

@item

@ref{11c,,win_groupadd}

@tab

Windows

@end multitable
@c The output contains multiple of these multitables but the lines at issue
@c ultimately end in:
@end quotation
@end cartouche

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions