Sphinx Indexed Definitions
Introduction
This Sphinx extension provides an easy way to add entries to a generated index based on strong, emphasized and/or literal terms used within prf:definition admonitions and the title of the admonition.
What does it do?
If you code includes an admonition with the source code
:::{prf:definition} Lorem
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse **Pharetra**, ex ut commodo varius,
est justo vestibulum nunc, *(id) dignissim* lorem nibh in mauris. Duis varius lorem et neque posuere,
ac elementum eros consequat. Maecenas sed risus suscipit, **fermentum Kelvin** quam vitae, consectetur
augue. Maecenas aliquam leo vitae velit interdum efficitur.
:::
this extension, once loaded, will add (with default settings) the terms Lorem, pharetra, id dignissim, dignissim and fermentum Kelvin to the generated index.
This extension can be used in conjunction with the regular usage of generating an index, as explained at Indexes.
If one prf:definition admonition contains a single term several times, it will only be added once to the index. If the same term is used in several admonitions, it will be added to the index with multiple references.
Footnotes in terms will be removed, and the term will be added to the index without the footnote.
Installation
To use this extension, follow these steps (be aware, more steps then usual):
Step 1: Install the Package
Install the module sphinx-indexed-definitions package using pip:
pip install sphinx-indexed-definitions
Step 2: Add to requirements.txt
Make sure that the package is included in your project's requirements.txt to track the dependency:
sphinx-indexed-definitions
Step 3: Enable in _config.yml
In your _config.yml file, add the extension to the list of extra Sphinx extensions (important: underscore, not dash this time):
sphinx:
extra_extensions:
.
.
.
- sphinx_indexed_definitions
.
.
.
Step 4: Add the general index to ToC
To do this, if you have not done this, please follow the instructions at Add the general index to your table of contents.
Configuration
The extension provides several configuration values, which can be added to _config.yml if the default value should be changed:
sphinx:
config:
-
-
-
sphinx_indexed_defs_indexed_nodes: ['strong','emphasis'] # default value
sphinx_indexed_defs_skip_indices: [] # default value
sphinx_indexed_defs_lowercase_indices: true # default value
sphinx_indexed_defs_index_titles: true # default value
sphinx_indexed_defs_capital_words: [] # default value
sphinx_indexed_defs_remove_brackets: true # default value
sphinx_indexed_defs_force_main: true # default value
sphinx_indexed_defs_index_theorems: true # default value
-
-
-
sphinx_indexed_defs_indexed_nodes:['strong','emphasis'](default) or list of strings:- All nodes of the provided classes from the Python submodule
docutils.nodeswill be extracted and converted to entries in the index. - Supported classes are
strong,emphasisandliteral.
- All nodes of the provided classes from the Python submodule
sphinx_indexed_defs_skip_indices:[](default) or list of strings:- All entries that match at least one regular expression within the provided list will not be added to the index (i.e. skipped).
- An example is
['\bdet\w*','\$i\$-th entry'], which causes any entry that starts with det to be skipped and the entry $i$-th entry will also be skipped. - Note that special characters must be escaped.
sphinx_indexed_defs_lowercase_indices:true(default) orfalse:- If
true, all extracted entries will be converted to lower case, except for words that are provided insphinx_indexed_defs_capital_wordsand a prefixed set of common names from beta sciences. - This prefixed set can be found in the source
py-file of this extension. - Users are welcome to add names to this list by forking and opening a pull request.
- If
false, all extracted entries will be added to the index as written.
- If
sphinx_indexed_defs_index_titles:true(default) orfalse:- If
true, any title provided in aprf:definitionadmonition will also be added as an entry to the index. - If
false, all titles inprf:definitionadmonitions will be ignored.
- If
sphinx_indexed_defs_capital_words:[](default) or list of strings:- See
sphinx_indexed_defs_lowercase_indices.
- See
sphinx_indexed_defs_remove_brackets:true(default) orfalse:- If
true, any extracted term containing words between matching opening and closing round brackets, i.e.(and), are converted to two entries: one with the entire term with all round brackets removed, and one with all words between matching round brackets removed (including the brackets). - An example: the extracted term
(id) dignissimwill result in two entries:id dignissimanddignissim. - If
false, no parsing of terms with brackets will occur and terms are converted to entries as written.
- If
sphinx_indexed_defs_force_main:true(default) orfalse:- If
true, all extracted terms will be added as the main entry to the index, which means the entry will be emphasized in the generated index. - If
false, extracted terms will not be emphasized in the generated index.
- If
sphinx_indexed_defs_index_theorems:true(default) orfalse:- If
true, any title provided in aprf:theorem,prf:lemma,prf:conjecture,prf:corollary,prf:propositionorprf:notationadmonition will also be added as an entry to the index. - If
false, all titles provided inprf:theorem,prf:lemma,prf:conjecture,prf:corollary,prf:propositionandprf:notationadmonitions will be ignored.
- If
sphinx_indexed_defs_index_theorems_terms:false(default) ortrue:- If
true, any terms provided in aprf:theorem,prf:lemma,prf:conjecture,prf:corollary,prf:propositionorprf:notationadmonition will also be added as an entry to the index. - If
false, all terms provided inprf:theorem,prf:lemma,prf:conjecture,prf:corollary,prf:propositionandprf:notationadmonitions will be ignored.
- If
Provided code
In case a single admonition should be skipped during indexing, add the class skipindexing to the admonition, for example:
:::{prf:definition} Lorem
:class: skipindexing
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse **Pharetra**, ex ut commodo varius,
est justo vestibulum nunc, *(id) dignissim* lorem nibh in mauris. Duis varius lorem et neque posuere,
ac elementum eros consequat. Maecenas sed risus suscipit, **fermentum Kelvin** quam vitae, consectetur
augue. Maecenas aliquam leo vitae velit interdum efficitur.
:::
Example
An example of an index generated using this extension can be found at https://douden.github.io/openlabook/main/genindex.html.
Contribute
This tool's repository is stored on GitHub. If you'd like to contribute, you can create a fork and open a pull request on the GitHub repository.
The README.md of the branch manual is also part of the TeachBooks manual.
Metadata
Release files for sphinx-indexed-definitions 1.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sphinx_indexed_definitions-1.2.2.tar.gz | 11.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sphinx_indexed_definitions-1.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.5 kB
Release files / sphinx_indexed_definitions-1.2.2.tar.gz
| Download URL | sphinx_indexed_definitions-1.2.2.tar.gz |
|---|---|
| Size | 11.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6440901c3699aeaed96a58f9d0a063f1d347a9f3b27c6baa9568e951ab745bdc
|
|
BLAKE2b-256 checksum How to use checksums |
c3d63adf85b46dff9cb9c097a7dc2fe403f2305d3b20cede62ea651ddded84a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 28, 2026.
Transparency logRelease files / sphinx_indexed_definitions-1.2.2-py3-none-any.whl
| Download URL | sphinx_indexed_definitions-1.2.2-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f5f1bc4419da9d1fa96cde741837ecd7bae9e38169a7b828ec55e08a51069c21
|
|
BLAKE2b-256 checksum How to use checksums |
ab964138ba78e4ec3f8e7e88e42b1650e9c4f7564aa98b1542567ef4a8dcd5f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 28, 2026.
Transparency log