|
| 1 | +symbols = [ |
| 2 | + ["Lower-case Greek", |
| 3 | + 5, |
| 4 | + r"""\alpha \beta \gamma \chi \delta \epsilon \eta \iota \kappa |
| 5 | + \lambda \mu \nu \omega \phi \pi \psi \rho \sigma \tau \theta |
| 6 | + \upsilon \xi \zeta \digamma \varepsilon \varkappa \varphi |
| 7 | + \varpi \varrho \varsigma \vartheta"""], |
| 8 | + ["Upper-case Greek", |
| 9 | + 6, |
| 10 | + r"""\Delta \Gamma \Lambda \Omega \Phi \Pi \Psi \Sigma \Theta |
| 11 | + \Upsilon \Xi \mho \nabla"""], |
| 12 | + ["Hebrew", |
| 13 | + 4, |
| 14 | + r"""\aleph \beth \daleth \gimel"""], |
| 15 | + ["Delimiters", |
| 16 | + 6, |
| 17 | + r"""| \{ \lfloor / \Uparrow \llcorner \vert \} \rfloor \backslash |
| 18 | + \uparrow \lrcorner \| \langle \lceil [ \Downarrow \ulcorner |
| 19 | + \Vert \rangle \rceil ] \downarrow \urcorner"""], |
| 20 | + ["Big symbols", |
| 21 | + 5, |
| 22 | + r"""\bigcap \bigcup \bigodot \bigoplus \bigotimes \biguplus |
| 23 | + \bigvee \bigwedge \coprod \oint \prod \sum \int"""], |
| 24 | + ["Standard Function Names", |
| 25 | + 4, |
| 26 | + r"""\arccos \csc \ker \min \arcsin \deg \lg \Pr \arctan \det \lim |
| 27 | + \gcd \ln \sup \cot \hom \log \tan \coth \inf \max \tanh |
| 28 | + \sec \arg \dim \liminf \sin \cos \exp \limsup \sinh \cosh"""], |
| 29 | + ["Binary Operation and Relation Symbols", |
| 30 | + 3, |
| 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 | + \approxident \origof \imageof \coloneq \triangleeq \stareq \nsime |
| 59 | + \dotminus \eqsim \nequiv \Equiv \measeq \napprox \eqless |
| 60 | + \kernelcontraction \nsupset \doublebarwedge \nVdash \arceq |
| 61 | + \backcong \Doteq \eqdef \wedgeq \questeq \eqgtr \cupdot |
| 62 | + \veeeq \nsubset \eqcolon \ne |
| 63 | + """], |
| 64 | + ["Arrow Symbols", |
| 65 | + 2, |
| 66 | + r"""\leftarrow \longleftarrow \uparrow \Leftarrow \Longleftarrow |
| 67 | + \Uparrow \rightarrow \longrightarrow \downarrow \Rightarrow |
| 68 | + \Longrightarrow \Downarrow \leftrightarrow \updownarrow |
| 69 | + \longleftrightarrow \updownarrow \Leftrightarrow |
| 70 | + \Longleftrightarrow \Updownarrow \mapsto \longmapsto \nearrow |
| 71 | + \hookleftarrow \hookrightarrow \searrow \leftharpoonup |
| 72 | + \rightharpoonup \swarrow \leftharpoondown \rightharpoondown |
| 73 | + \nwarrow \rightleftharpoons \leadsto \dashrightarrow |
| 74 | + \dashleftarrow \leftleftarrows \leftrightarrows \Lleftarrow |
| 75 | + \Rrightarrow \twoheadleftarrow \leftarrowtail \looparrowleft |
| 76 | + \leftrightharpoons \curvearrowleft \circlearrowleft \Lsh |
| 77 | + \upuparrows \upharpoonleft \downharpoonleft \multimap |
| 78 | + \leftrightsquigarrow \rightrightarrows \rightleftarrows |
| 79 | + \rightrightarrows \rightleftarrows \twoheadrightarrow |
| 80 | + \rightarrowtail \looparrowright \rightleftharpoons |
| 81 | + \curvearrowright \circlearrowright \Rsh \downdownarrows |
| 82 | + \upharpoonright \downharpoonright \rightsquigarrow \nleftarrow |
| 83 | + \nrightarrow \nLeftarrow \nRightarrow \nleftrightarrow |
| 84 | + \nLeftrightarrow \to \Swarrow \Searrow \Nwarrow \Nearrow |
| 85 | + \barleftarrow \mapsup \mapsdown \mapsfrom \rightarrowbar |
| 86 | + \twoheaduparrow \updownarrowbar \leftsquigarrow \rightzigzagarrow |
| 87 | + \twoheaddownarrow \downzigzagarrow |
| 88 | + """], |
| 89 | + ["Miscellaneous Symbols", |
| 90 | + 3, |
| 91 | + r"""\neg \invnot \turnednot \infty \forall \wp \exists \bigstar |
| 92 | + \angle \partial \nexists \measuredangle \eth \emptyset |
| 93 | + \sphericalangle \clubsuit \varnothing \complement \diamondsuit |
| 94 | + \imath \Finv \triangledown \heartsuit \jmath \Game \spadesuit |
| 95 | + \ell \hbar \vartriangle \cdots \hslash \vdots \blacksquare \ldots |
| 96 | + \blacktriangle \ddots \sharp \prime \blacktriangledown \Im \flat |
| 97 | + \backprime \Re \natural \circledS \P \O \copyright \ss \Ldsh |
| 98 | + \frakZ \l \carriagereturn \circledR \S \sterling \L \yen \danger |
| 99 | + \d \OE \AA \AE \scurel \oe \o \checkmark \Rdsh \ae \ac \prurel \$ |
| 100 | + \iiint \iint \iint \oiiint"""] |
| 101 | +] |
| 102 | + |
| 103 | +from docutils import nodes, statemachine |
| 104 | +from docutils.parsers.rst import Directive |
| 105 | +class math_symbol_table_directive(Directive): |
| 106 | + has_content = True |
| 107 | + def run(self): |
| 108 | + def get_n(n, l): |
| 109 | + part = [] |
| 110 | + for x in l: |
| 111 | + part.append(x) |
| 112 | + if len(part) == n: |
| 113 | + yield part |
| 114 | + part = [] |
| 115 | + yield part |
| 116 | + |
| 117 | + lines = [] |
| 118 | + for category, columns, syms in symbols: |
| 119 | + syms = syms.split() |
| 120 | + syms.sort() |
| 121 | + lines.append("**%s**" % category) |
| 122 | + lines.append('') |
| 123 | + max_width = 0 |
| 124 | + for sym in syms: |
| 125 | + max_width = max(max_width, len(sym)) |
| 126 | + max_width = max_width * 2 + 16 |
| 127 | + header = " " + (('=' * max_width) + ' ') * columns |
| 128 | + format = '%%%ds' % max_width |
| 129 | + for chunk in get_n(20, get_n(columns, syms)): |
| 130 | + lines.append(header) |
| 131 | + for part in chunk: |
| 132 | + line = [] |
| 133 | + for sym in part: |
| 134 | + line.append(format % (":math:`%s` ``%s``" % (sym, sym))) |
| 135 | + lines.append(" " + " ".join(line)) |
| 136 | + lines.append(header) |
| 137 | + lines.append('') |
| 138 | + self.state_machine.insert_input(lines, "Symbol table") |
| 139 | + return [] |
| 140 | + |
| 141 | +from docutils.parsers.rst import directives |
| 142 | +directives.register_directive('math_symbol_table', |
| 143 | + math_symbol_table_directive) |
| 144 | + |
| 145 | +if __name__ == "__main__": |
| 146 | + # Do some verification of the tables |
| 147 | + from matplotlib import _mathtext_data |
| 148 | + |
| 149 | + print "SYMBOLS NOT IN STIX:" |
| 150 | + all_symbols = {} |
| 151 | + for category, columns, syms in symbols: |
| 152 | + if category == "Standard Function Names": |
| 153 | + continue |
| 154 | + syms = syms.split() |
| 155 | + for sym in syms: |
| 156 | + if len(sym) > 1: |
| 157 | + all_symbols[sym[1:]] = None |
| 158 | + if sym[1:] not in _mathtext_data.tex2uni: |
| 159 | + print sym |
| 160 | + |
| 161 | + print "SYMBOLS NOT IN TABLE:" |
| 162 | + for sym in _mathtext_data.tex2uni: |
| 163 | + if sym not in all_symbols: |
| 164 | + print sym |
0 commit comments