|
5 | 5 |
|
6 | 6 | symbols = [
|
7 | 7 | ["Lower-case Greek",
|
8 |
| - 6, |
9 |
| - r"""\alpha \beta \gamma \chi \delta \epsilon \eta \iota \kappa |
10 |
| - \lambda \mu \nu \omega \phi \pi \psi \rho \sigma \tau \theta |
11 |
| - \upsilon \xi \zeta \digamma \varepsilon \varkappa \varphi |
12 |
| - \varpi \varrho \varsigma \vartheta""".split()], |
| 8 | + 4, |
| 9 | + {r"\alpha", r"\beta", r"\gamma", r"\chi", r"\delta", r"\epsilon", |
| 10 | + r"\eta", r"\iota", r"\kappa", r"\lambda", r"\mu", r"\nu", r"\omega", |
| 11 | + r"\phi", r"\pi", r"\psi", r"\rho", r"\sigma", r"\tau", r"\theta", |
| 12 | + r"\upsilon", r"\xi", r"\zeta", r"\digamma", r"\varepsilon", r"\varkappa", |
| 13 | + r"\varphi", r"\varpi", r"\varrho", r"\varsigma", r"\vartheta"}], |
13 | 14 | ["Upper-case Greek",
|
14 |
| - 8, |
15 |
| - r"""\Delta \Gamma \Lambda \Omega \Phi \Pi \Psi \Sigma \Theta |
16 |
| - \Upsilon \Xi \mho \nabla""".split()], |
| 15 | + 4, |
| 16 | + {r"\Delta", r"\Gamma", r"\Lambda", r"\Omega", r"\Phi", r"\Pi", r"\Psi", |
| 17 | + r"\Sigma", r"\Theta", r"\Upsilon", r"\Xi"}], |
17 | 18 | ["Hebrew",
|
18 | 19 | 6,
|
19 |
| - r"""\aleph \beth \daleth \gimel""".split()], |
| 20 | + {r"\aleph", r"\beth", r"\gimel", r"\daleth"}], |
20 | 21 | ["Delimiters",
|
21 | 22 | 6,
|
22 | 23 | _mathtext.Parser._delims],
|
|
90 | 91 | \hslash \vdots \blacksquare \ldots \blacktriangle \ddots \sharp
|
91 | 92 | \prime \blacktriangledown \Im \flat \backprime \Re \natural
|
92 | 93 | \circledS \P \copyright \ss \circledR \S \yen \AA \checkmark \$
|
93 |
| - \cent \triangle \QED \sinewave""".split()] |
| 94 | + \cent \triangle \QED \sinewave \nabla \mho""".split()] |
94 | 95 | ]
|
95 | 96 |
|
96 | 97 |
|
97 |
| -def run(state_machine): |
98 |
| - def render_symbol(sym): |
99 |
| - if sym.startswith("\\"): |
100 |
| - sym = sym[1:] |
101 |
| - if sym not in (_mathtext.Parser._overunder_functions | |
102 |
| - _mathtext.Parser._function_names): |
103 |
| - sym = chr(_mathtext_data.tex2uni[sym]) |
104 |
| - return f'\\{sym}' if sym in ('\\', '|') else sym |
| 98 | +def render_symbol(sym): |
| 99 | + if sym.startswith("\\"): |
| 100 | + sym = sym[1:] |
| 101 | + if sym not in (_mathtext.Parser._overunder_functions | |
| 102 | + _mathtext.Parser._function_names): |
| 103 | + sym = chr(_mathtext_data.tex2uni[sym]) |
| 104 | + return f'\\{sym}' if sym in ('\\', '|') else sym |
| 105 | + |
105 | 106 |
|
| 107 | +def run(state_machine): |
106 | 108 | lines = []
|
107 | 109 | for category, columns, syms in symbols:
|
108 |
| - syms = sorted(list(syms)) |
| 110 | + # special case language chars to sort by alphabet |
| 111 | + if category == "Hebrew": # hebrew is rtl |
| 112 | + syms = sorted(syms, key=render_symbol, reverse=True) |
| 113 | + elif category == "Upper-case Greek": |
| 114 | + syms = sorted(syms, key=render_symbol) |
| 115 | + elif category == "Lower-case Greek": |
| 116 | + syms = sorted(syms, key=lambda sym: ord(render_symbol(sym)) |
| 117 | + if not sym.startswith(r"\var") else |
| 118 | + ord(render_symbol(sym.replace(r"var", r""))) + .5) |
| 119 | + else: |
| 120 | + syms = sorted(list(syms)) |
109 | 121 | columns = min(columns, len(syms))
|
110 | 122 | lines.append("**%s**" % category)
|
111 | 123 | lines.append('')
|
|
0 commit comments