|
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 | | - 6, |
| 22 | + 5, |
22 | 23 | _mathtext.Parser._delims], |
23 | 24 | ["Big symbols", |
24 | | - 6, |
| 25 | + 5, |
25 | 26 | _mathtext.Parser._overunder_symbols | _mathtext.Parser._dropsub_symbols], |
26 | 27 | ["Standard function names", |
27 | | - 6, |
| 28 | + 5, |
28 | 29 | {fr"\{fn}" for fn in _mathtext.Parser._function_names}], |
29 | 30 | ["Binary operation and relation symbols", |
30 | 31 | 4, |
|
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): |
98 | | - def render_symbol(sym): |
| 99 | + |
| 100 | + def render_symbol(sym, ignore_variant=False): |
| 101 | + if ignore_variant and sym != r"\varnothing": |
| 102 | + sym = sym.replace(r"\var", "\\") |
99 | 103 | if sym.startswith("\\"): |
100 | | - sym = sym[1:] |
| 104 | + sym = sym.lstrip("\\") |
101 | 105 | if sym not in (_mathtext.Parser._overunder_functions | |
102 | 106 | _mathtext.Parser._function_names): |
103 | 107 | sym = chr(_mathtext_data.tex2uni[sym]) |
104 | 108 | return f'\\{sym}' if sym in ('\\', '|') else sym |
105 | 109 |
|
106 | 110 | lines = [] |
107 | 111 | for category, columns, syms in symbols: |
108 | | - syms = sorted(list(syms)) |
| 112 | + syms = sorted(syms, |
| 113 | + # Sort by Unicode and place variants immediately |
| 114 | + # after standard versions. |
| 115 | + key=lambda sym: (render_symbol(sym, ignore_variant=True), |
| 116 | + sym.startswith(r"\var")), |
| 117 | + reverse=(category == "Hebrew")) # Hebrew is rtl |
109 | 118 | columns = min(columns, len(syms)) |
110 | 119 | lines.append("**%s**" % category) |
111 | 120 | lines.append('') |
|
0 commit comments