1313from sphinx .writers .latex import LaTeXTranslator
1414
1515CR = '\n '
16+ latex_admonition_start = CR + '\\ begin{sphinxadmonition}{note}'
17+ latex_admonition_end = '\\ end{sphinxadmonition}' + CR
1618
1719class proof_node (nodes .Admonition , nodes .Element ):
1820 pass
@@ -28,7 +30,7 @@ class unenumerable_node(nodes.Admonition, nodes.Element):
2830
2931def visit_enumerable_node (self , node : Node ) -> None :
3032 if isinstance (self , LaTeXTranslator ):
31- self .body .append (CR + ' \\ begin{sphinxadmonition}{note}' )
33+ self .body .append (latex_admonition )
3234 else :
3335 self .body .append (self .starttag (node , "div" , CLASS = "admonition" ))
3436
@@ -37,10 +39,9 @@ def depart_enumerable_node(self, node: Node) -> None:
3739 typ = node .attributes .get ("type" , "" )
3840 if isinstance (self , LaTeXTranslator ):
3941 number = get_node_number_latex (self , node )
40- text = node .children [0 ].astext ()
41- idx = list_rindex (self .body ,CR + '\\ begin{sphinxadmonition}{note}' ) + 2
42+ idx = list_rindex (self .body ,latex_admonition ) + 2
4243 self .body .insert (idx , f"{ typ .title ()} { number } " )
43- self .body .append (' \\ end{sphinxadmonition}' + CR )
44+ self .body .append (latex_admonition_end )
4445 else :
4546 # Find index in list of 'Proof #'
4647 number = get_node_number (self , node )
@@ -51,7 +52,7 @@ def depart_enumerable_node(self, node: Node) -> None:
5152
5253def visit_unenumerable_node (self , node : Node ) -> None :
5354 if isinstance (self , LaTeXTranslator ):
54- self .body .append (CR + ' \\ begin{sphinxadmonition}{note}' )
55+ self .body .append (latex_admonition )
5556 else :
5657 self .body .append (self .starttag (node , "div" , CLASS = "admonition" ))
5758
@@ -60,19 +61,14 @@ def depart_unenumerable_node(self, node: Node) -> None:
6061 typ = node .attributes .get ("type" , "" )
6162 title = node .attributes .get ("title" , "" )
6263 if isinstance (self , LaTeXTranslator ):
63- if title == "" :
64- idx = (len (self .body ) - self .body [- 1 ::- 1 ].index (CR + '\\ begin{sphinxadmonition}{note}' )) + 1
65- else :
66- text = node .children [0 ].astext ()
67- idx = list_rindex (self .body ,CR + '\\ begin{sphinxadmonition}{note}' ) + 2
64+ idx = list_rindex (self .body ,latex_admonition ) + 2
6865 self .body .insert (idx , f"{ typ .title ()} " )
69- self .body .append (' \\ end{sphinxadmonition}' + CR )
66+ self .body .append (latex_admonition_end )
7067 else :
7168 if title == "" :
72- idx = len (self .body ) - self . body [ - 1 :: - 1 ]. index ( '<p class="admonition-title">' )
69+ idx = list_rindex (self .body , '<p class="admonition-title">' ) + 1
7370 else :
7471 idx = list_rindex (self .body ,title )
75-
7672 element = f"<span>{ typ .title ()} </span>"
7773 self .body .insert (idx , element )
7874 self .body .append ("</div>" )
@@ -85,15 +81,8 @@ def visit_proof_node(self, node: Node) -> None:
8581def depart_proof_node (self , node : Node ) -> None :
8682 pass
8783
88-
89- def get_node_number (self : HTMLTranslator , node : Node ) -> str :
90- key = "proof"
91- ids = node .attributes .get ("ids" , [])[0 ]
92- number = self .builder .fignumbers .get (key , {}).get (ids , ())
93- return "." .join (map (str , number ))
94-
9584def find_parent (env , node , parent_tag ):
96- """Find the parent node."""
85+ """Find the nearest parent node with the given tagname ."""
9786 while True :
9887 node = node .parent
9988 if node is None :
@@ -111,15 +100,24 @@ def find_parent(env, node , parent_tag):
111100
112101 return None
113102
114- def get_node_number_latex (self , node : Node ) -> str :
103+ def get_node_number (self : HTMLTranslator , node : Node ) -> str :
104+ """Get the number for the directive node for HTML."""
105+ key = "proof"
106+ ids = node .attributes .get ("ids" , [])[0 ]
107+ number = self .builder .fignumbers .get (key , {}).get (ids , ())
108+ return "." .join (map (str , number ))
109+
110+ def get_node_number_latex (self : LaTeXTranslator , node : Node ) -> str :
111+ """Get the number for the directive node for LaTeX."""
115112 key = "proof"
116113 docname = find_parent (self .builder .env , node , "section" )
117114 ids = node .attributes .get ("ids" , [])[0 ]
118- fignumbers = self .builder .env .toc_fignumbers .get (docname , {})
115+ fignumbers = self .builder .env .toc_fignumbers .get (docname , {}) # Latex does not have builder.fignumbers
119116 number = fignumbers .get (key , {}).get (ids , ())
120117 return "." .join (map (str , number ))
121118
122- def list_rindex (li , x ):
119+ def list_rindex (li , x ) -> int :
120+ """Getting the last occurence of an item in a list."""
123121 for i in reversed (range (len (li ))):
124122 if li [i ] == x :
125123 return i
0 commit comments