A family of extensions for Zensical needed for professional and academic documentation: section cross-references, bibliography/citation handling, a glossary, a Pandoc/WeasyPrint PDF pipeline, and Jinja macros for word counts and reference-style spacing
Project description
zendoc
A family of extensions for Zensical needed for professional and academic documentation: section cross-references, bibliography/citation handling, a glossary, and a Pandoc/WeasyPrint PDF pipeline for the downloadable, submittable document these usually need alongside the website itself. Each piece is independent, so you only pay for what you use.
Most of zendoc is Python-Markdown
extensions, in the spirit of pymdown-extensions -
configure one the same way as any other Zensical/pymdownx Markdown
extension, via zensical.toml. zendoc.pdf is a command-line tool
instead (zendoc pdf), since a PDF build pipeline isn't a Markdown syntax
extension - it reads the same zensical.toml too.
Status: early, but functional -
zendoc.headings,zendoc.refs,zendoc.citations,zendoc.glossary,zendoc.pdf, andzendoc.zensical_macrosare implemented and tested.
Installation
pip install zendoc
Extensions
| Extension | Description |
|---|---|
zendoc.headings |
Gives every heading an id and a hierarchical section number ("1", "1.1", "1.2", "2", ...). |
zendoc.refs |
\ref{id} section cross-references, resolving to the target's current number - similar in spirit to LaTeX's \ref. |
zendoc.citations |
Define a source once, cite it by key anywhere with \cite{id} - auto-generates the bracketed, linked citation text. |
zendoc.glossary |
Define a term once (an acronym expansion, a glossary entry), insert it by id anywhere with \gls{id} - similar in spirit to LaTeX's glossaries package. |
import markdown
html = markdown.markdown(
text,
extensions=[
"attr_list", "zendoc.headings", "zendoc.refs", "zendoc.citations", "zendoc.glossary"
],
)
# Introduction {: #intro }
See \ref{intro} for background.\cite{skou2023} This uses \gls{css}.
Skoulikari, A. (2023) *Learning Git*.
{: #skou2023 data-cite-text="Skoulikari, 2023" }
**CSS** - Cascading Style Sheets.
{: #css data-term="CSS" }
\ref{intro} resolves to a link reading 1 - the heading's current
section number; \cite{skou2023} resolves to [Skoulikari, 2023], linked
to that source; \gls{css} resolves to CSS, linked to its own
definition. All three stay correct if content is reordered, since
resolution happens fresh on every conversion. See the
docs for options, multi-page
registry sharing, and full syntax details.
PDF generation
zendoc.pdf builds a
standalone PDF from your site, via Pandoc and WeasyPrint (both need to be
installed separately - see the docs). No Python required - it reads the
same zensical.toml your site already has:
zendoc pdf
That's it - run it from your project root and it builds a complete PDF,
table of contents included, from every page in your nav. See the
docs for the
zensical.toml settings it reads, and for the Python API
(build_pdf(), zendoc.pdf.html/.lua/.css/.icons/.mermaid) if
you're scripting your own build pipeline instead.
Website macros
zendoc.zensical_macros
provides a site-wide word count, the git-detected repository URL, chapter/
appendix numbering that continues across pages, and reference/acronym/
glossary spacing that matches zendoc.pdf's own PDF output - as Jinja
variables/macros for Zensical's own macros plugin:
[project.markdown_extensions.zensical.extensions.macros]
modules = ["zendoc.zensical_macros"]
See the docs for the full variable/macro list.
Development
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
zensical is a core dependency, so zensical serve is available as soon as
zendoc is installed - no extra step needed to build the documentation
locally.
License
MIT - see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zendoc-0.10.0.tar.gz.
File metadata
- Download URL: zendoc-0.10.0.tar.gz
- Upload date:
- Size: 90.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9887ac604bd2204b95a2dd17f9f407a1ee35b2a0b11497426b0aceb700d0670
|
|
| MD5 |
9e01cb6e8158776c5c211d46b60e40e8
|
|
| BLAKE2b-256 |
f740f5f4b1e244aeba7c6b2b380d696a49bc0f6234c0d9e142048df44d53016b
|
Provenance
The following attestation bundles were made for zendoc-0.10.0.tar.gz:
Publisher:
publish.yml on buckwem/zendoc-extension
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zendoc-0.10.0.tar.gz -
Subject digest:
a9887ac604bd2204b95a2dd17f9f407a1ee35b2a0b11497426b0aceb700d0670 - Sigstore transparency entry: 2175745384
- Sigstore integration time:
-
Permalink:
buckwem/zendoc-extension@ec77f627c8637754ec94f2ae1a86fc127ccc42ab -
Branch / Tag:
refs/tags/v0.10.0 - Owner: https://github.com/buckwem
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ec77f627c8637754ec94f2ae1a86fc127ccc42ab -
Trigger Event:
release
-
Statement type:
File details
Details for the file zendoc-0.10.0-py3-none-any.whl.
File metadata
- Download URL: zendoc-0.10.0-py3-none-any.whl
- Upload date:
- Size: 67.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6f5cf11ffad4de6517c29fb98710f865ed61d2c8663fc1fdc0ebffffaf685f2
|
|
| MD5 |
c474ba8ea847f0791beb1fd8be7aa3a9
|
|
| BLAKE2b-256 |
6a742c032aafb5f5ab889cf6371d49402d878cfcfd1c6267354e7efad2f55da8
|
Provenance
The following attestation bundles were made for zendoc-0.10.0-py3-none-any.whl:
Publisher:
publish.yml on buckwem/zendoc-extension
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
zendoc-0.10.0-py3-none-any.whl -
Subject digest:
f6f5cf11ffad4de6517c29fb98710f865ed61d2c8663fc1fdc0ebffffaf685f2 - Sigstore transparency entry: 2175745417
- Sigstore integration time:
-
Permalink:
buckwem/zendoc-extension@ec77f627c8637754ec94f2ae1a86fc127ccc42ab -
Branch / Tag:
refs/tags/v0.10.0 - Owner: https://github.com/buckwem
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ec77f627c8637754ec94f2ae1a86fc127ccc42ab -
Trigger Event:
release
-
Statement type: