File: docs_needspace.py

package info (click to toggle)
python-dict2css 0.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 480 kB
  • sloc: python: 509; sh: 17; makefile: 6
file content (51 lines) | stat: -rw-r--r-- 1,335 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 3rd party
from domdf_python_tools.stringlist import StringList
from sphinx import addnodes
from sphinx.application import Sphinx  # nodep
from sphinx.config import Config  # nodep
from sphinx.writers.latex import LaTeXTranslator
from sphinxcontrib import toctree_plus


def visit_desc(translator: LaTeXTranslator, node: addnodes.desc) -> None:
	"""
	Visit an :class:`addnodes.desc` node and add a custom table of contents label for the item, if required.

	.. versionadded:: 0.3.0

	:param translator:
	:param node:
	"""

	translator.body.append(r"\needspace{5\baselineskip}")
	toctree_plus.visit_desc(translator, node)


def configure(app: Sphinx, config: Config):
	"""
	Configure Sphinx Extension.

	:param app: The Sphinx application.
	:param config:
	"""

	latex_elements = getattr(config, "latex_elements", {})

	latex_extrapackages = StringList(latex_elements.get("extrapackages", ''))
	latex_extrapackages.append(r"\usepackage{needspace}")
	latex_elements["extrapackages"] = str(latex_extrapackages)

	config.latex_elements = latex_elements  # type: ignore


def setup(app: Sphinx):
	"""
	Setup Sphinx Extension.

	:param app: The Sphinx application.
	"""

	app.connect("config-inited", configure)
	app.add_node(addnodes.desc, latex=(visit_desc, toctree_plus.depart_desc), override=True)

	return {"parallel_read_safe": True}