Convert markdown to any output that Sphinx supports
Project description
mdsphinx
Convert markdown to any output format that Sphinx supports.
In contrast to something like pandoc, this tool is useful if you want to...
- Use Jinja2 templating.
- Use MyST Markdown syntax.
- Use other Sphinx extensions.
- Push Markdown to a Confluence page.
Installation
pipx install mdsphinx
Usage
- Create a markdown file or directory with markdown files.
- Run
mdsphinx env createto create the default environment. - Optionally, create a
conf.py.jinjafile to customize the Sphinxconf.py. - Optionally, create a
context.ymlfile with variables to be injected via Jinja2. - Run
mdsphinx process <inp> --to <fmt> --using <preset> --as <out>to convert the markdown.
TLDR
mdsphinx env create
mdsphinx process input.md --to pdf --using latex
You can also process a directory of markdown files.
mdsphinx process ./inputs --to pdf --using latex --as output.pdf
Output Formats
There are a few different formats you can convert to:
mdsphinx process input.md --to pdf --using latex
mdsphinx process input.md --to html --using default
mdsphinx process input.md --to confluence --using single.page
Environments
The default environment installs the following packages:
sphinxnbsphinxmyst-parsersphinxcontrib-confluencebuilder
However, you can register any virtual environment you want to use as long as it contains sphinx.
mdsphinx env add --name my_custom_env --path /path/to/my_custom_env
mdsphinx process input.md --to pdf --using latex --env-name my_custom_env
Environments and metadata are stored in the $MDSPHINX_CONFIG_ROOT, which defaults to ~/.config/mdsphinx.
You can safely delete this directory at any time.
Jinja2 Templating
Create a file named context.yml parallel to the input file or directory.
a: 1
b: 2
You can then reference these variables in your markdown files.
{{ a }} + {{ b }} = {{ a + b }}
Support for Mermaid diagrams is available as a custom jinja2 block.
You must have
dockerinstalled and ideally be using theMySTparser.
{% mermaid -%}
ext: .png
mode: myst
scale: 3
width: 75
align: center
caption: |
An example mermaid diagram!
diagram: |
graph TD
A --> B
B --> C
A --> C
{% endmermaid %}
Likewise, you can use the tikz block to render LaTeX diagrams.
You must have
tectonicinstalled and ideally be using theMySTparser.
{% tikz -%}
ext: .png
mode: myst
diagram: |
\documentclass[margin=0pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,1);
\end{tikzpicture}
\end{document}
{% endtikz %}
Sphinx Configuration
Create a file named conf.py.jinja parallel to the input file or directory.
{% include main_sphinx_config %}
html_theme = "alabaster"
You can generate a copy of the default conf.py.jinja file.
mdsphinx generate conf.py.jinja
This file will be used by sphinx-quickstart to generate the Sphinx configuration file.
Confluence Configuration
The default Sphinx conf.py sets up a confluence connection by reading your ~/.netrc and environment variables.
Sphinx conf.py Variable |
Default Source | Environment Variable Name | Example Value |
|---|---|---|---|
confluence_publish_dryrun |
env |
CONFLUENCE_PUBLISH_DRYRUN |
1 |
confluence_server_url |
env |
CONFLUENCE_SERVER_URL |
https://example.atlassian.net/wiki |
confluence_server_user |
netrc[url].login |
example@gmail.com |
|
confluence_api_token |
netrc[url].password |
api-token |
|
confluence_space_key |
env |
CONFLUENCE_SPACE_KEY |
~MySpace |
confluence_parent_page |
env |
CONFLUENCE_PARENT_PAGE |
ParentPage |
Obtain an API token from your Atlassian account settings and configure your ~/.netrc file:
machine <confluence_server_url>
login <confluence_server_user>
password <confluence_api_token>
Create a parent page manually on your confluence space and configure the environment variables.
export CONFLUENCE_PUBLISH_DRYRUN="0"
export CONFLUENCE_SERVER_URL="https://example.atlassian.net/wiki"
export CONFLUENCE_SPACE_KEY="~MySpace"
export CONFLUENCE_PARENT_PAGE="ParentPage"
mdsphinx process input.md --to confluence --using single.page
LaTeX Configuration
The default LaTeX configuration is set up to use tectonic as the LaTeX engine.
However, you can set MDSPHINX_LATEX_COMMAND to be a ; delimited list of commands to run instead.
export MDSPHINX_LATEX_COMMAND="xelatex {tex}"
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 mdsphinx-1.11.0.tar.gz.
File metadata
- Download URL: mdsphinx-1.11.0.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.5 Linux/6.14.0-33-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42e36997020d10a94bf131c036f6a8630e19d7c4d180a456c2cd764f5f263b68
|
|
| MD5 |
165465dee6de298826761e035dba15e4
|
|
| BLAKE2b-256 |
cdab0494406dfbf16931062ba0b76b77a5706e30a260500c738a8f4666e262d5
|
File details
Details for the file mdsphinx-1.11.0-py3-none-any.whl.
File metadata
- Download URL: mdsphinx-1.11.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.5 Linux/6.14.0-33-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
123fc6e2d8e3b07aec8042ba89dab604dfde7b3aa71470dc2537238bdbca40d3
|
|
| MD5 |
9d016b1eb7dc58961d493b82e3c1e274
|
|
| BLAKE2b-256 |
5450f937936038a256ba7568934b7ed7694b90fd66565f628a5c3803696c9742
|