Skip to content

Commit 97e6a1c

Browse files
committed
creating different numfig types
1 parent a2869c7 commit 97e6a1c

File tree

4 files changed

+108
-59
lines changed

4 files changed

+108
-59
lines changed

sphinx_proof/__init__.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,22 @@
2525

2626
logger = logging.getLogger(__name__)
2727

28+
NUMFIG_TYPES = {
29+
"axiom": "axiom ",
30+
"theorem": "theorem ",
31+
"lemma": "lemma ",
32+
"algorithm": "algorithm ",
33+
"definition": "definition ",
34+
"remark": "remark ",
35+
"conjecture": "conjecture ",
36+
"corollary": "corollary ",
37+
"criterion": "criterion ",
38+
"example": "example ",
39+
"property": "property ",
40+
"observation": "observation ",
41+
"proposition": "proposition ",
42+
}
43+
2844

2945
def purge_proofs(app: Sphinx, env: BuildEnvironment, docname: str) -> None:
3046
if not hasattr(env, "proof_list"):
@@ -52,9 +68,9 @@ def merge_proofs(
5268
def init_numfig(app: Sphinx, config: Config) -> None:
5369
"""Initialize proof numfig format."""
5470
config["numfig"] = True
55-
numfig_format = {
56-
"proof": "Proof %s",
57-
}
71+
numfig_format = {}
72+
for typ, val in NUMFIG_TYPES.items():
73+
numfig_format[typ] = val + "%s"
5874
numfig_format.update(config.numfig_format)
5975
config.numfig_format = numfig_format
6076

sphinx_proof/domain.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,12 @@ def resolve_xref(
119119

120120
todocname = match["docname"]
121121
title = contnode[0]
122-
import pdb
123122

124-
pdb.set_trace()
125123
if target in contnode[0]:
126124
number = ""
127125
if not env.proof_list[target]["nonumber"]:
128-
number = ".".join(
129-
map(str, env.toc_fignumbers[todocname]["proof"][target])
130-
)
126+
typ = env.proof_list[target]["type"]
127+
number = ".".join(map(str, env.toc_fignumbers[todocname][typ][target]))
131128
title = nodes.Text(f"{match['type'].title()} {number}")
132129
# builder, fromdocname, todocname, targetid, child, title=None
133130
return make_refnode(builder, fromdocname, todocname, target, title)

sphinx_proof/nodes.py

Lines changed: 78 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -16,42 +16,6 @@
1616
latex_admonition_end = "\\end{sphinxadmonition}" + CR
1717

1818

19-
class proof_node(nodes.Admonition, nodes.Element):
20-
pass
21-
22-
23-
class axiom_node(nodes.Admonition, nodes.Element):
24-
pass
25-
26-
27-
class theorem_node(nodes.Admonition, nodes.Element):
28-
pass
29-
30-
31-
class lemma_node(nodes.Admonition, nodes.Element):
32-
pass
33-
34-
35-
class algorithm_node(nodes.Admonition, nodes.Element):
36-
pass
37-
38-
39-
class enumerable_node(nodes.Admonition, nodes.Element):
40-
pass
41-
42-
43-
class unenumerable_node(nodes.Admonition, nodes.Element):
44-
pass
45-
46-
47-
NODE_TYPES = {
48-
"axiom": axiom_node,
49-
"theorem": theorem_node,
50-
"lemma": lemma_node,
51-
"algorithm": algorithm_node,
52-
}
53-
54-
5519
def visit_enumerable_node(self, node: Node) -> None:
5620
if isinstance(self, LaTeXTranslator):
5721
docname = find_parent(self.builder.env, node, "section")
@@ -71,10 +35,7 @@ def depart_enumerable_node(self, node: Node) -> None:
7135
else:
7236
# Find index in list of 'Proof #'
7337
number = get_node_number(self, node, typ)
74-
import pdb
75-
76-
pdb.set_trace()
77-
idx = self.body.index(f"Proof {number} ")
38+
idx = self.body.index(f"{typ} {number} ")
7839
self.body[idx] = f"{typ.title()} {number} "
7940
self.body.append("</div>")
8041

@@ -153,3 +114,80 @@ def list_rindex(li, x) -> int:
153114
if li[i] == x:
154115
return i
155116
raise ValueError("{} is not in list".format(x))
117+
118+
119+
class proof_node(nodes.Admonition, nodes.Element):
120+
pass
121+
122+
123+
class axiom_node(nodes.Admonition, nodes.Element):
124+
pass
125+
126+
127+
class theorem_node(nodes.Admonition, nodes.Element):
128+
pass
129+
130+
131+
class lemma_node(nodes.Admonition, nodes.Element):
132+
pass
133+
134+
135+
class algorithm_node(nodes.Admonition, nodes.Element):
136+
pass
137+
138+
139+
class definition_node(nodes.Admonition, nodes.Element):
140+
pass
141+
142+
143+
class remark_node(nodes.Admonition, nodes.Element):
144+
pass
145+
146+
147+
class conjecture_node(nodes.Admonition, nodes.Element):
148+
pass
149+
150+
151+
class corollary_node(nodes.Admonition, nodes.Element):
152+
pass
153+
154+
155+
class criterion_node(nodes.Admonition, nodes.Element):
156+
pass
157+
158+
159+
class example_node(nodes.Admonition, nodes.Element):
160+
pass
161+
162+
163+
class property_node(nodes.Admonition, nodes.Element):
164+
pass
165+
166+
167+
class observation_node(nodes.Admonition, nodes.Element):
168+
pass
169+
170+
171+
class proposition_node(nodes.Admonition, nodes.Element):
172+
pass
173+
174+
175+
class unenumerable_node(nodes.Admonition, nodes.Element):
176+
pass
177+
178+
179+
NODE_TYPES = {
180+
"axiom": axiom_node,
181+
"theorem": theorem_node,
182+
"lemma": lemma_node,
183+
"algorithm": algorithm_node,
184+
"definition": definition_node,
185+
"remark": remark_node,
186+
"conjecture": conjecture_node,
187+
"corollary": corollary_node,
188+
"criterion": criterion_node,
189+
"example": example_node,
190+
"property": property_node,
191+
"observation": observation_node,
192+
"proposition": proposition_node,
193+
}

sphinx_proof/proof_type.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,13 @@ class PropositionDirective(ElementDirective):
9494
"theorem": TheoremDirective,
9595
"lemma": LemmaDirective,
9696
"algorithm": AlgorithmDirective,
97+
"definition": DefinitionDirective,
98+
"remark": RemarkDirective,
99+
"conjecture": ConjectureDirective,
100+
"corollary": CorollaryDirective,
101+
"criterion": CriterionDirective,
102+
"example": ExampleDirective,
103+
"property": PropertyDirective,
104+
"observation": ObservationDirective,
105+
"proposition": PropositionDirective,
97106
}
98-
99-
# "definition": DefinitionDirective,
100-
# "remark": RemarkDirective,
101-
# "conjecture": ConjectureDirective,
102-
# "corollary": CorollaryDirective,
103-
# "algorithm": AlgorithmDirective,
104-
# "criterion": CriterionDirective,
105-
# "example": ExampleDirective,
106-
# "property": PropertyDirective,
107-
# "observation": ObservationDirective,
108-
# "proposition": PropositionDirective,

0 commit comments

Comments
 (0)