Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a667d19

Browse files
committed
Synchronize mathtext docs and handling
1 parent b067be5 commit a667d19

File tree

3 files changed

+100
-74
lines changed

3 files changed

+100
-74
lines changed

doc/sphinxext/math_symbol_table.py

Lines changed: 39 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
import re
12
from docutils.parsers.rst import Directive
23

34
from matplotlib import _mathtext, _mathtext_data
45

6+
bb_pattern = re.compile("Bbb[A-Z]")
7+
scr_pattern = re.compile("scr[a-zA-Z]")
8+
frak_pattern = re.compile("frak[A-Z]")
59

610
symbols = [
711
["Lower-case Greek",
@@ -17,6 +21,9 @@
1721
["Hebrew",
1822
6,
1923
r"""\aleph \beth \daleth \gimel""".split()],
24+
["Western Europe",
25+
6,
26+
r"""\aa \AA \ae \AE \oe \OE""".split()],
2027
["Delimiters",
2128
6,
2229
_mathtext.Parser._delims],
@@ -26,71 +33,43 @@
2633
["Standard function names",
2734
6,
2835
{fr"\{fn}" for fn in _mathtext.Parser._function_names}],
29-
["Binary operation and relation symbols",
36+
["Binary operation symbols",
37+
4,
38+
_mathtext.Parser._binary_operators],
39+
["Relation symbols",
3040
4,
31-
r"""\ast \pm \slash \cap \star \mp \cup \cdot \uplus
32-
\triangleleft \circ \odot \sqcap \triangleright \bullet \ominus
33-
\sqcup \bigcirc \oplus \wedge \diamond \oslash \vee
34-
\bigtriangledown \times \otimes \dag \bigtriangleup \div \wr
35-
\ddag \barwedge \veebar \boxplus \curlywedge \curlyvee \boxminus
36-
\Cap \Cup \boxtimes \bot \top \dotplus \boxdot \intercal
37-
\rightthreetimes \divideontimes \leftthreetimes \equiv \leq \geq
38-
\perp \cong \prec \succ \mid \neq \preceq \succeq \parallel \sim
39-
\ll \gg \bowtie \simeq \subset \supset \Join \approx \subseteq
40-
\supseteq \ltimes \asymp \sqsubset \sqsupset \rtimes \doteq
41-
\sqsubseteq \sqsupseteq \smile \propto \dashv \vdash \frown
42-
\models \in \ni \notin \approxeq \leqq \geqq \lessgtr \leqslant
43-
\geqslant \lesseqgtr \backsim \lessapprox \gtrapprox \lesseqqgtr
44-
\backsimeq \lll \ggg \gtreqqless \triangleq \lessdot \gtrdot
45-
\gtreqless \circeq \lesssim \gtrsim \gtrless \bumpeq \eqslantless
46-
\eqslantgtr \backepsilon \Bumpeq \precsim \succsim \between
47-
\doteqdot \precapprox \succapprox \pitchfork \Subset \Supset
48-
\fallingdotseq \subseteqq \supseteqq \risingdotseq \sqsubset
49-
\sqsupset \varpropto \preccurlyeq \succcurlyeq \Vdash \therefore
50-
\curlyeqprec \curlyeqsucc \vDash \because \blacktriangleleft
51-
\blacktriangleright \Vvdash \eqcirc \trianglelefteq
52-
\trianglerighteq \neq \vartriangleleft \vartriangleright \ncong
53-
\nleq \ngeq \nsubseteq \nmid \nsupseteq \nparallel \nless \ngtr
54-
\nprec \nsucc \subsetneq \nsim \supsetneq \nVDash \precnapprox
55-
\succnapprox \subsetneqq \nvDash \precnsim \succnsim \supsetneqq
56-
\nvdash \lnapprox \gnapprox \ntriangleleft \ntrianglelefteq
57-
\lneqq \gneqq \ntriangleright \lnsim \gnsim \ntrianglerighteq
58-
\coloneq \eqsim \nequiv \napprox \nsupset \doublebarwedge \nVdash
59-
\Doteq \nsubset \eqcolon \ne
60-
""".split()],
41+
_mathtext.Parser._relation_symbols],
6142
["Arrow symbols",
6243
4,
63-
r"""\leftarrow \longleftarrow \uparrow \Leftarrow \Longleftarrow
64-
\Uparrow \rightarrow \longrightarrow \downarrow \Rightarrow
65-
\Longrightarrow \Downarrow \leftrightarrow \updownarrow
66-
\longleftrightarrow \updownarrow \Leftrightarrow
67-
\Longleftrightarrow \Updownarrow \mapsto \longmapsto \nearrow
68-
\hookleftarrow \hookrightarrow \searrow \leftharpoonup
69-
\rightharpoonup \swarrow \leftharpoondown \rightharpoondown
70-
\nwarrow \rightleftharpoons \leadsto \dashrightarrow
71-
\dashleftarrow \leftleftarrows \leftrightarrows \Lleftarrow
72-
\Rrightarrow \twoheadleftarrow \leftarrowtail \looparrowleft
73-
\leftrightharpoons \curvearrowleft \circlearrowleft \Lsh
74-
\upuparrows \upharpoonleft \downharpoonleft \multimap
75-
\leftrightsquigarrow \rightrightarrows \rightleftarrows
76-
\rightrightarrows \rightleftarrows \twoheadrightarrow
77-
\rightarrowtail \looparrowright \rightleftharpoons
78-
\curvearrowright \circlearrowright \Rsh \downdownarrows
79-
\upharpoonright \downharpoonright \rightsquigarrow \nleftarrow
80-
\nrightarrow \nLeftarrow \nRightarrow \nleftrightarrow
81-
\nLeftrightarrow \to \Swarrow \Searrow \Nwarrow \Nearrow
82-
\leftsquigarrow
83-
""".split()],
44+
_mathtext.Parser._arrow_symbols],
45+
["Dot symbols",
46+
4,
47+
r"""\cdots \vdots \ldots \ddots \adots \Colon \therefore \because""".split()],
48+
["Black-board characters",
49+
6,
50+
[fr"\{symbol}" for symbol in _mathtext_data.tex2uni
51+
if re.match(bb_pattern, symbol)]],
52+
["Script characters",
53+
6,
54+
[fr"\{symbol}" for symbol in _mathtext_data.tex2uni
55+
if re.match(scr_pattern, symbol)]],
56+
["Fraktur characters",
57+
6,
58+
[fr"\{symbol}" for symbol in _mathtext_data.tex2uni
59+
if re.match(frak_pattern, symbol)]],
60+
8461
["Miscellaneous symbols",
8562
4,
8663
r"""\neg \infty \forall \wp \exists \bigstar \angle \partial
8764
\nexists \measuredangle \eth \emptyset \sphericalangle \clubsuit
8865
\varnothing \complement \diamondsuit \imath \Finv \triangledown
89-
\heartsuit \jmath \Game \spadesuit \ell \hbar \vartriangle \cdots
90-
\hslash \vdots \blacksquare \ldots \blacktriangle \ddots \sharp
66+
\heartsuit \jmath \Game \spadesuit \ell \hbar \vartriangle
67+
\hslash \blacksquare \blacktriangle \sharp \increment
9168
\prime \blacktriangledown \Im \flat \backprime \Re \natural
92-
\circledS \P \copyright \ss \circledR \S \yen \AA \checkmark \$
93-
\cent \triangle \QED \sinewave""".split()]
69+
\circledS \P \copyright \ss \circledR \S \yen \checkmark \$
70+
\cent \triangle \QED \sinewave \dag \ddag \perthousand
71+
\lambdabar \L \l \O \o \Thorn \thorn \degree \danger \maltese
72+
\i \hermitmatrix \sterling""".split()]
9473
]
9574

9675

@@ -156,7 +135,9 @@ def setup(app):
156135
if sym[1:] not in _mathtext_data.tex2uni:
157136
print(sym)
158137

138+
# Add accents
139+
all_symbols.update({v[1:]: k for k, v in _mathtext.Parser._accent_map.items()})
159140
print("SYMBOLS NOT IN TABLE:")
160-
for sym in _mathtext_data.tex2uni:
141+
for sym, val in _mathtext_data.tex2uni.items():
161142
if sym not in all_symbols:
162-
print(sym)
143+
print(f"{sym} = {chr(val)}")

lib/matplotlib/_mathtext.py

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1733,7 +1733,17 @@ class _MathStyle(enum.Enum):
17331733
\cap \triangleleft \dagger
17341734
\cup \triangleright \ddagger
17351735
\uplus \lhd \amalg
1736-
\dotplus \dotminus'''.split())
1736+
\dotplus \dotminus \Cap
1737+
\Cup \barwedge \boxdot
1738+
\boxminus \boxplus \boxtimes
1739+
\curlyvee \curlywedge \divideontimes
1740+
\doublebarwedge \leftthreetimes \rightthreetimes
1741+
\slash \veebar \barvee
1742+
\cupdot \intercal \amalg
1743+
\circledcirc \circleddash \circledast
1744+
\boxbar \obar \merge
1745+
\minuscolon \dotsminusdots
1746+
'''.split())
17371747

17381748
_relation_symbols = set(r'''
17391749
= < > :
@@ -1768,20 +1778,53 @@ class _MathStyle(enum.Enum):
17681778
\trianglelefteq \ntrianglelefteq \trianglerighteq
17691779
\ntrianglerighteq \blacktriangleleft \blacktriangleright
17701780
\equalparallel \measuredrightangle \varlrtriangle
1771-
'''.split())
1772-
1773-
_arrow_symbols = set(r'''
1774-
\leftarrow \longleftarrow \uparrow
1775-
\Leftarrow \Longleftarrow \Uparrow
1776-
\rightarrow \longrightarrow \downarrow
1777-
\Rightarrow \Longrightarrow \Downarrow
1778-
\leftrightarrow \longleftrightarrow \updownarrow
1779-
\Leftrightarrow \Longleftrightarrow \Updownarrow
1780-
\mapsto \longmapsto \nearrow
1781-
\hookleftarrow \hookrightarrow \searrow
1782-
\leftharpoonup \rightharpoonup \swarrow
1783-
\leftharpoondown \rightharpoondown \nwarrow
1784-
\rightleftharpoons \leadsto'''.split())
1781+
\Doteq \Bumpeq \Subset \Supset
1782+
\backepsilon \because \therefore \bot
1783+
\top \bumpeq \circeq \coloneq
1784+
\curlyeqprec \curlyeqsucc \eqcirc \eqcolon
1785+
\eqsim \fallingdotseq \gtrdot \gtrless
1786+
\ltimes \rtimes \lessdot \ne
1787+
\ncong \nequiv \ngeq \ngtr
1788+
\nleq \nless \nmid \notin
1789+
\nprec \nsubset \nsubseteq \nsucc
1790+
\nsupset \nsupseteq \pitchfork \preccurlyeq
1791+
\risingdotseq \subsetneq \succcurlyeq \supsetneq
1792+
\varpropto \vartriangleleft \scurel
1793+
\vartriangleright \rightangle \equal \backcong
1794+
\eqdef \wedgeq \questeq \between
1795+
\veeeq \disin \varisins \isins
1796+
\isindot \varisinobar \isinobar \isinvb
1797+
\isinE \nisd \varnis \nis
1798+
\varniobar \niobar \bagmember \ratio
1799+
\Equiv \stareq \measeq \arceq
1800+
\rightassert \rightModels \smallin \smallowns
1801+
\notsmallowns'''.split())
1802+
1803+
_arrow_symbols = set(r"""
1804+
\leftarrow \longleftarrow \uparrow \Leftarrow \Longleftarrow
1805+
\Uparrow \rightarrow \longrightarrow \downarrow \Rightarrow
1806+
\Longrightarrow \Downarrow \leftrightarrow \updownarrow
1807+
\longleftrightarrow \updownarrow \Leftrightarrow
1808+
\Longleftrightarrow \Updownarrow \mapsto \longmapsto \nearrow
1809+
\hookleftarrow \hookrightarrow \searrow \leftharpoonup
1810+
\rightharpoonup \swarrow \leftharpoondown \rightharpoondown
1811+
\nwarrow \rightleftharpoons \leadsto \dashrightarrow
1812+
\dashleftarrow \leftleftarrows \leftrightarrows \Lleftarrow
1813+
\Rrightarrow \twoheadleftarrow \leftarrowtail \looparrowleft
1814+
\leftrightharpoons \curvearrowleft \circlearrowleft \Lsh
1815+
\upuparrows \upharpoonleft \downharpoonleft \multimap
1816+
\leftrightsquigarrow \rightrightarrows \rightleftarrows
1817+
\rightrightarrows \rightleftarrows \twoheadrightarrow
1818+
\rightarrowtail \looparrowright \rightleftharpoons
1819+
\curvearrowright \circlearrowright \Rsh \downdownarrows
1820+
\upharpoonright \downharpoonright \rightsquigarrow \nleftarrow
1821+
\nrightarrow \nLeftarrow \nRightarrow \nleftrightarrow
1822+
\nLeftrightarrow \to \Swarrow \Searrow \Nwarrow \Nearrow
1823+
\leftsquigarrow \overleftarrow \overleftrightarrow \cwopencirclearrow
1824+
\downzigzagarrow \cupleftarrow \rightzigzagarrow \twoheaddownarrow
1825+
\updownarrowbar \twoheaduparrow \rightarrowbar \updownarrows
1826+
\barleftarrow \mapsfrom \mapsdown \mapsup \Ldsh \Rdsh
1827+
""".split())
17851828

17861829
_spaced_symbols = _binary_operators | _relation_symbols | _arrow_symbols
17871830

lib/matplotlib/_mathtext_data.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1016,7 +1016,7 @@
10161016
'leftparen' : 40,
10171017
'rightparen' : 41,
10181018
'bigoplus' : 10753,
1019-
'leftbrace' : 124,
1019+
'leftbrace' : 123,
10201020
'rightbrace' : 125,
10211021
'jmath' : 567,
10221022
'bigodot' : 10752,
@@ -1088,6 +1088,8 @@
10881088
'bagmember' : 8959,
10891089
'triangle' : 9651,
10901090
'iiiint' : 10764,
1091+
'amalg' : 10815,
1092+
'merge' : 10837,
10911093
}
10921094

10931095
# Each element is a 4-tuple of the form:

0 commit comments

Comments
 (0)