Lists & Tables¶
Make steps easy to follow and reference data easy to compare.
Unordered Lists¶
First item
Second item
Third item with bold and
code
Nested unordered lists:
Fruits
Apples
Bananas
Cavendish
Plantain
Cherries
Vegetables
Carrots
Peas
Ordered Lists¶
First step
Second step
Third step
Nested ordered lists:
Install dependencies
Install Python 3.12+
Install Node.js 18+
Configure the project
Copy the example config
Update the settings
Run the build
Task Lists¶
Track to-do items with checkboxes.
Set up project structure
Create base templates
Add search functionality
Write documentation
Publish to PyPI
The MyST syntax:
- [x] Completed task
- [ ] Pending task
Note
Task lists require the tasklist MyST extension. See MyST Parser for setup.
Rich Content in Lists¶
List items can contain paragraphs, code blocks, and other block elements.
First, configure the theme:
html_theme = "lumina"
Then build your documentation:
uv run sphinx-build docs docs/_build/html
Tip
Add
-Wto treat warnings as errors during CI builds.Finally, open the output in your browser.
Tables¶
When to Use Which Format¶
Format |
Best for |
Limitations |
|---|---|---|
Markdown tables |
Simple data with short cell content |
No block content or spanning cells |
List tables |
Complex content, long text, code in cells |
More verbose syntax |
Simple Markdown Tables¶
Basic Markdown tables with column alignment.
Feature |
Status |
Notes |
|---|---|---|
Dark mode |
Yes |
Light, dark, and auto |
Search |
Yes |
Pagefind + Sphinx fallback |
Mobile |
Yes |
Responsive sidebar drawer |
Reading time |
Yes |
Optional per-page estimate |
The MyST syntax:
| Left aligned | Centered | Right aligned |
|:-------------|:--------:|--------------:|
| data | data | data |
Alignment markers:
:---left-align (default):---:center---:right-align
Wide Tables¶
Tables with many columns scroll horizontally on larger screens when they overflow the content area. On narrow screens, simple data tables become labelled rows so each record can be read without side-to-side scrolling; complex tables keep the horizontal-scroll fallback. The values below are illustrative.
Option |
Type |
Default |
Required |
Description |
Example |
Since |
|---|---|---|---|---|---|---|
|
string |
|
No |
Primary accent color |
|
v1.0.0 |
|
string |
|
No |
Initial dark mode |
|
v1.0.0 |
|
string |
|
No |
Show right-side TOC |
|
v1.0.0 |
|
string |
|
No |
Show breadcrumb trail |
|
v1.0.0 |
|
string |
|
No |
Show pagination |
|
v1.0.0 |
|
string |
|
No |
Sidebar tree depth |
|
v1.0.0 |
|
string |
|
No |
Search provider |
|
v1.0.0 |
Interactive Tables¶
Add :class: lumina-table-interactive to an individual list-table or csv-table
directive to enable filtering and sorting. Try filtering by guide, or select
Pages to sort the example below. Select the same heading again to reverse the
order; Reset restores all rows in their original order.
Section |
Format |
Pages |
|---|---|---|
Getting started |
Guide |
4 |
Reference |
Reference |
24 |
Extensions |
Guide |
12 |
Contributing |
Guide |
8 |
API |
Reference |
36 |
The MyST syntax:
```{list-table} Documentation inventory
:header-rows: 1
:class: lumina-table-interactive
* - Section
- Pages
* - Getting started
- 4
* - Reference
- 24
```
For a Markdown pipe table, wrap it in a table directive:
```{table} Documentation inventory
:class: lumina-table-interactive
| Section | Pages |
|---------|------:|
| Getting started | 4 |
| Reference | 24 |
```
Filtering matches text across all columns, ignoring case. Plain numbers, including negative values and decimals, sort numerically; other values use natural text order. Dates, currencies, and units are treated as text. Each table keeps its own filter and sort state until the page is reloaded.
Interactive tables need one header row, one body, and a consistent number of columns, without merged cells, nested tables, footer rows, or controls in the headers. Unsupported tables stay static. Without JavaScript, all rows remain readable. On narrow screens, interactive tables scroll horizontally so sortable headings stay available. Printing includes all rows, even when a filter is active.
List Tables¶
Use the list-table directive for complex tables that are hard to format in Markdown. List tables support multi-line cells, rich content, and precise column widths.
Feature |
Lumina |
Furo |
PyData |
RTD |
|---|---|---|---|---|
Dark mode |
Auto |
Auto |
Auto |
No |
Search |
Pagefind |
Built-in |
Built-in |
Built-in |
CSS framework |
Tailwind |
Custom |
Bootstrap |
Custom |
JS framework |
Alpine.js |
None |
None |
jQuery |
The MyST syntax:
```{list-table} Caption
:header-rows: 1
:widths: 20 20 20 20
* - Header 1
- Header 2
- Header 3
- Header 4
* - Cell
- Cell
- Cell
- Cell
```
Tables with Rich Content¶
List tables can contain code, badges, and other inline elements.
Option |
Status |
Usage |
|---|---|---|
|
stable |
Set with |
|
stable |
|
|
stable |
JSON array of |
Tip
Use :widths: to control column proportions. Values are relative — 20 20 60 gives the third column three times the width of each first two.