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

Skip to content

Commit fcf75dd

Browse files
committed
Synchronize mathtext docs and handling
1 parent 4dbba98 commit fcf75dd

File tree

6 files changed

+109
-79
lines changed

6 files changed

+109
-79
lines changed

doc/sphinxext/math_symbol_table.py

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

9775

@@ -165,7 +143,9 @@ def setup(app):
165143
if sym[1:] not in _mathtext_data.tex2uni:
166144
print(sym)
167145

146+
# Add accents
147+
all_symbols.update({v[1:]: k for k, v in _mathtext.Parser._accent_map.items()})
168148
print("SYMBOLS NOT IN TABLE:")
169-
for sym in _mathtext_data.tex2uni:
149+
for sym, val in _mathtext_data.tex2uni.items():
170150
if sym not in all_symbols:
171-
print(sym)
151+
print(f"{sym} = {chr(val)}")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
``mathtext`` documentation improvements
2+
---------------------------------------
3+
4+
The documentation is updated to take information directly from the parser. This
5+
means that (almost) all supported symbols, operators etc are shown at :ref:`mathtext`.

doc/users/next_whats_new/mathtext_relation_operators.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,3 @@ There has been a number of operators added and corrected when a Unicode font is
55
In addition, correct spacing has been added to a number of the previous operators.
66
Especially, the characters used for ``\gnapprox``, ``\lnapprox``, ``\leftangle``, and
77
``\rightangle`` have been corrected.
8-
9-
All supported operators can be seen at :ref:`mathtext`.

lib/matplotlib/_mathtext.py

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

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

17871830
_spaced_symbols = _binary_operators | _relation_symbols | _arrow_symbols
17881831

lib/matplotlib/_mathtext_data.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,8 @@
800800
'eta' : 951,
801801
'forall' : 8704,
802802
'eth' : 240,
803+
'dh' : 240,
804+
'DH' : 208,
803805
'colon' : 58,
804806
'sqcup' : 8852,
805807
'bigsqcup' : 10758,
@@ -1066,7 +1068,7 @@
10661068
'hermitmatrix' : 8889,
10671069
'barvee' : 8893,
10681070
'measuredrightangle' : 8894,
1069-
'varlrtriangle' : 8895,
1071+
'lrtriangle' : 8895,
10701072
'equalparallel' : 8917,
10711073
'npreccurlyeq' : 8928,
10721074
'nsucccurlyeq' : 8929,
@@ -1090,6 +1092,8 @@
10901092
'bagmember' : 8959,
10911093
'triangle' : 9651,
10921094
'iiiint' : 10764,
1095+
'amalg' : 10815,
1096+
'merge' : 10837,
10931097
}
10941098

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

lib/matplotlib/tests/test_mathtext.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ def test_mathtext_operators():
525525
\ngtrsim \nlessgtr \ngtrless
526526
\cupleftarrow \oequal \rightassert
527527
\rightModels \hermitmatrix \barvee
528-
\measuredrightangle \varlrtriangle
528+
\measuredrightangle \lrtriangle
529529
\equalparallel \npreccurlyeq \nsucccurlyeq
530530
\nsqsubseteq \nsqsupseteq \sqsubsetneq
531531
\sqsupsetneq \disin \varisins

0 commit comments

Comments
 (0)