|
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 | 98 | def run(state_machine):
|
| 99 | + |
98 | 100 | def render_symbol(sym):
|
99 | 101 | if sym.startswith("\\"):
|
100 | 102 | sym = sym[1:]
|
101 | 103 | if sym not in (_mathtext.Parser._overunder_functions |
|
102 |
| - _mathtext.Parser._function_names): |
| 104 | + _mathtext.Parser._function_names): |
103 | 105 | sym = chr(_mathtext_data.tex2uni[sym])
|
104 | 106 | return f'\\{sym}' if sym in ('\\', '|') else sym
|
105 | 107 |
|
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