Skip to main content

Sphinx extension to render LaTeX-like pseudocode via pseudocode.js (Sphinx 7.1+/8.x compatible, MathJax 3 friendly, AMD-safe)

Project description

sphinxcontrib-pseudocode2

pytest codecov PyPI RTD Status gh-page status

PyPI Downloads license GitHub Release Date - Published_At GitHub commits since latest release (by SemVer including pre-releases)

This is a fork of the original sphinxcontrib-pseudocode project, updated to support Sphinx 7.1+ and 8.x, and modern pseudocode.js.

Installation

pip install sphinxcontrib-pseudocode2

Quick Start

Enable the extension in your Sphinx conf.py:

extensions = [
    ...,
    "sphinxcontrib.pseudocode2",
]

# -------------------------- Optional Configuration --------------------------
# 1. Specify math engine (default: "mathjax3", alternative: "katex")
pseudocode2_math_engine = "mathjax3"

# 2. Global pseudocode.js configuration (pseudocode2_options)
#    All parameters are directly passed to pseudocode.renderClass()
#    Covers all pseudocode.js native options (unified project-wide style)
pseudocode2_options = {
    "lineNumber": True,           # Global default: enable line numbering
    "lineNumberPunc": " | ",      # Punctuation after line numbers (e.g., "1 | ")
    "commentDelimiter": "#",      # Global default comment delimiter
    "noEnd": False,               # Global default: show "END" for control blocks
    "titlePrefix": "PseudoCode",  # Global default title prefix (replace "Algorithm")
    "scopeLines": True,           # Global default: enable scope line highlighting
}

Write LaTeX-like pseudocode in an .. pcode:: directive:

.. pcode::
   :linenos:

   \begin{algorithm}
   \caption{Quicksort}
   \begin{algorithmic}
   \PROCEDURE{Quicksort}{$A, p, r$}
     \IF{$p < r$}
       \STATE $q = $ \CALL{Partition}{$A, p, r$}
       \STATE \CALL{Quicksort}{$A, p, q - 1$}
       \STATE \CALL{Quicksort}{$A, q + 1, r$}
     \ENDIF
   \ENDPROCEDURE
   \end{algorithmic}
   \end{algorithm}

Configuration Options

Pseudocode rendering is extended with practical options (all compatible with pseudocode.js native capabilities):

  • linenos: Enable line numbering
  • no-linenos: Disable line numbering
  • indent: Set indentation (seems working only for em, no other units) for code blocks, default: 1.2em
  • comment-delimiter: Customize comment delimiters, default: //
  • line-number-punc: Set line number punctuation, default: :
  • no-end: Omit the END keyword for control blocks
  • title-prefix: Customize the algorithm title prefix (e.g., PseudoCode instead of default Algorithm)
  • caption-count: Reset the caption counter to this number
  • scopelines: Highlight scope lines (those with control block starters like IF, FOR, WHILE, etc.)
  • no-scopelines: Disable scope line highlighting

Global Configuration via pseudocode2_options

Pseudocode rendering styles can be unified across the entire project using a single global configuration (supports all pseudocode.js native parameters, see pseudocode.js). See also the example in the Quick Start section.

Priority Rule: Configuration priority (higher priority overrides lower): Directive option (e.g., :linenos: in .rst) > pseudocode2_options (global in conf.py) > pseudocode.js default

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinxcontrib_pseudocode2-1.1.0.tar.gz (75.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinxcontrib_pseudocode2-1.1.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file sphinxcontrib_pseudocode2-1.1.0.tar.gz.

File metadata

File hashes

Hashes for sphinxcontrib_pseudocode2-1.1.0.tar.gz
Algorithm Hash digest
SHA256 b3568cb2a2402bba22415b7f3da5ff3687743cea245150ac5761573c1fab290e
MD5 325a8dce1bd3e2d19de40e2afa43a12a
BLAKE2b-256 90ce121dcd69c80b3a724fb82b23849b7e8fb5eda7b2f6019d44b62a403a8877

See more details on using hashes here.

File details

Details for the file sphinxcontrib_pseudocode2-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sphinxcontrib_pseudocode2-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f5bd320dfe4a8073acdcef0232d940d07944c11a12b60d9d17b455c83309477
MD5 02d0ade198aabe4c4bd30d7047de7d3f
BLAKE2b-256 6deeb7cf35abaf1d223f5dc9fa5ab6eb43681de2a76aa0283137ecb255bf5fe0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page