├── MANIFEST.in
├── tests
├── test_cli.py
└── test_latex.py
├── LICENSES_bundled
├── .gitignore
├── src
└── unicodeitplus
│ ├── __init__.py
│ ├── cli.py
│ ├── parser.py
│ ├── transform.py
│ ├── _make_data.py
│ └── data.py
├── .github
└── workflows
│ ├── publish.yml
│ └── test.yml
├── .pre-commit-config.yaml
├── tools
└── generate_examples.py
├── setup.py
├── LICENSE
├── pyproject.toml
├── README.rst
├── CONTRIBUTING.rst
└── extern
└── LICENSE.LPPL
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include *.rst
2 | include LICENSE
3 | include Makefile
4 | include pyproject.toml
5 | include setup.py
6 | graft src
7 | graft tools
8 | graft extern
9 | graft docs
10 | graft tests
11 |
--------------------------------------------------------------------------------
/tests/test_cli.py:
--------------------------------------------------------------------------------
1 | from unicodeitplus.cli import main
2 | import sys
3 |
4 |
5 | def test_cli(capsys):
6 | sys.argv = ["prog", "foo $x^3$", "bar"]
7 | assert main() == 0
8 | out, err = capsys.readouterr()
9 | assert out == "foo 𝑥³ bar\n"
10 | assert err == ""
11 |
--------------------------------------------------------------------------------
/LICENSES_bundled:
--------------------------------------------------------------------------------
1 | The unicodeitplus repository and source distributions bundles a file which is compatibly licensed.
2 |
3 | Name: Unicode characters and corresponding LaTeX math mode commands
4 | Files: extern/unimathsymbols.txt
5 | License: LaTeX Project Public License 1.3
6 | For details, see extern/LICENCE.LPPL.
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Caches
2 | __pycache__/
3 | *.py[cod]
4 | .ruff_cache
5 | .cache
6 | .pytest_cache/
7 | .mypy_cache/
8 |
9 | # Distribution / packaging
10 | build/
11 | develop-eggs/
12 | dist/
13 | eggs/
14 | .eggs/
15 | *.egg-info/
16 | *.egg
17 | MANIFEST
18 |
19 | # Unit test / coverage reports
20 | htmlcov/
21 | .coverage
22 | .coverage.*
23 |
24 | # Sphinx documentation
25 | docs/_build/
26 |
27 | # Jupyter Notebook
28 | .ipynb_checkpoints
29 |
30 | # virtualenv
31 | venv/
32 |
33 | # IDE settings
34 | .vscode/
35 |
--------------------------------------------------------------------------------
/src/unicodeitplus/__init__.py:
--------------------------------------------------------------------------------
1 | """Top-level package for unicodeitplus."""
2 | try:
3 | from importlib.metadata import version
4 |
5 | __version__ = version("unicodeitplus")
6 | except Exception:
7 | pass
8 |
9 | from .parser import parser
10 |
11 | __all__ = ["replace", "parse"]
12 |
13 |
14 | def parse(s: str) -> str:
15 | """Parse simple LaTeX code and replace it by an unicode approximation."""
16 | return parser.parse(s) # type:ignore
17 |
18 |
19 | def replace(s: str) -> str:
20 | """Replace simple LaTeX code by unicode approximation."""
21 | return parse(f"${s}$")
22 |
--------------------------------------------------------------------------------
/src/unicodeitplus/cli.py:
--------------------------------------------------------------------------------
1 | """Console script for unicodeitplus."""
2 | import argparse
3 | import sys
4 | from unicodeitplus import replace, parse
5 |
6 |
7 | def main() -> int:
8 | """Convert simple LaTeX into an unicode approximation to paste anywhere."""
9 | parser = argparse.ArgumentParser(description=main.__doc__)
10 | parser.add_argument("ARG", nargs="+", help="some LaTeX code")
11 | args = parser.parse_args()
12 | sargs = " ".join(args.ARG)
13 | if "$" not in sargs:
14 | s = replace(sargs)
15 | else:
16 | s = parse(sargs)
17 | sys.stdout.write(s + "\n")
18 | return 0
19 |
20 |
21 | if __name__ == "__main__":
22 | sys.exit(main()) # pragma: no cover
23 |
--------------------------------------------------------------------------------
/src/unicodeitplus/parser.py:
--------------------------------------------------------------------------------
1 | """
2 | Parser for simple LaTeX.
3 |
4 | This parser supports only the simple subject of LaTeX that we typically use.
5 | """
6 | from lark import Lark
7 | from .transform import ToUnicode
8 |
9 | grammar = r"""
10 | start: (item | math)*
11 |
12 | ?atom: CHARACTER
13 | | COMMAND
14 |
15 | ?item: atom
16 | | WS_EXT+
17 | | group
18 |
19 | CHARACTER: /[^%#&\{\}^_\\]/ | ESCAPED
20 | ESCAPED: /\\\S/
21 | group: "{" item* "}"
22 | math: "$" item* "$"
23 | SUBSCRIPT: "_"
24 | SUPERSCRIPT: "^"
25 | COMMAND: (("\\" WORD WS*) | SUBSCRIPT | SUPERSCRIPT)
26 | WS_EXT: WS | "~" | "\," | "\;" | "\:" | "\>"
27 |
28 | %import common.WS
29 | %import common.WORD
30 | """
31 |
32 | parser = Lark(grammar, parser="lalr", transformer=ToUnicode())
33 |
--------------------------------------------------------------------------------
/.github/workflows/publish.yml:
--------------------------------------------------------------------------------
1 | name: Upload Python Package
2 |
3 | on:
4 | release:
5 | types: [published]
6 |
7 | permissions:
8 | contents: read
9 |
10 | jobs:
11 | deploy:
12 |
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - uses: actions/checkout@v3
17 | - name: Set up Python
18 | uses: actions/setup-python@v3
19 | with:
20 | python-version: '3.9'
21 | - name: Install dependencies
22 | run: |
23 | python -m pip install --upgrade pip
24 | pip install build
25 | - run: python -m build
26 | - run: python -m pip install $(echo dist/unicodeitplus-*.whl)[test]
27 | - run: python -m pytest
28 | - uses: pypa/gh-action-pypi-publish@release/v1
29 | with:
30 | user: __token__
31 | password: ${{secrets.PYPI_API_TOKEN}}
32 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 |
3 | on:
4 | pull_request:
5 | workflow_dispatch:
6 |
7 | jobs:
8 | test:
9 | runs-on: ${{ matrix.os }}
10 |
11 | strategy:
12 | matrix:
13 | os: [windows-latest, macos-latest, ubuntu-latest]
14 | include:
15 | # version number must be string, otherwise 3.10 becomes 3.1
16 | - os: windows-latest
17 | python-version: "3.11"
18 | - os: macos-latest
19 | python-version: "3.8"
20 | - os: ubuntu-latest
21 | python-version: "pypy-3.8"
22 | fail-fast: false
23 | steps:
24 | - uses: actions/checkout@v3
25 | with:
26 | submodules: true
27 | - uses: actions/setup-python@v4
28 | with:
29 | python-version: ${{ matrix.python-version }}
30 | - run: python -m pip install --upgrade pip
31 | - run: python -m pip install -e .[test]
32 | - run: python -m pytest
33 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | repos:
2 | # Standard hooks
3 | - repo: https://github.com/pre-commit/pre-commit-hooks
4 | rev: v4.4.0
5 | hooks:
6 | - id: check-case-conflict
7 | - id: check-docstring-first
8 | - id: check-executables-have-shebangs
9 | - id: check-merge-conflict
10 | - id: check-symlinks
11 | - id: check-yaml
12 | args: ["--allow-multiple-documents"]
13 | - id: debug-statements
14 | - id: end-of-file-fixer
15 | - id: mixed-line-ending
16 | - id: sort-simple-yaml
17 | - id: file-contents-sorter
18 | - id: trailing-whitespace
19 | exclude: ^doc/_static/.*.svg
20 |
21 | # Python formatting
22 | - repo: https://github.com/psf/black
23 | rev: 23.3.0
24 | hooks:
25 | - id: black
26 |
27 | # Ruff linter, replacement for flake8
28 | - repo: https://github.com/charliermarsh/ruff-pre-commit
29 | rev: 'v0.0.261'
30 | hooks:
31 | - id: ruff
32 |
33 | # Python type checking
34 | - repo: https://github.com/pre-commit/mirrors-mypy
35 | rev: 'v1.2.0'
36 | hooks:
37 | - id: mypy
38 | args: [src]
39 | pass_filenames: false
40 |
--------------------------------------------------------------------------------
/tools/generate_examples.py:
--------------------------------------------------------------------------------
1 | """Generate examples for README.rst."""
2 | from unicodeitplus import replace
3 | from tabulate import tabulate
4 |
5 | LATEX = r"""
6 | \alpha \beta \gamma \Gamma \Im \Re \hbar
7 | e^+ \mu^- \slash{\partial}
8 | \exists \in \int \sum \partial \infty
9 | \perp \parallel \therefore \because \subset \supset
10 | \to \longrightarrow
11 | p\bar{p} \mathrm{t}\bar{\mathrm{t}}
12 | \mathcal{H} \mathbb{R}
13 | \phone \checkmark
14 | \underline{x} \dot{x} \ddot{x} \vec{x}
15 | A^6 m_0
16 | 1.2 \times 10^{23}
17 | $p_T / \mathrm{GeV} c^{-1}$
18 | K^0_S
19 | $D^{\ast\ast} \to hhee$
20 | $A \cdot \mathbf{x} \simeq \mathbf{b}$
21 | """
22 |
23 | table = {"LaTeX": [], "Unicode": []}
24 | for latex in LATEX.split("\n"):
25 | if not latex or latex.isspace():
26 | continue
27 | table["LaTeX"].append(f"``{latex.strip('$')}``")
28 | if latex.startswith("$"):
29 | s = replace(latex.strip("$"))
30 | else:
31 | s = " ".join(replace(x) for x in latex.split())
32 | table["Unicode"].append(f"``{s}``")
33 |
34 | print(tabulate(table, headers="keys", tablefmt="rst"))
35 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup
2 | from distutils.command.sdist import sdist
3 | from contextlib import contextmanager
4 |
5 |
6 | @contextmanager
7 | def merge_license_files():
8 | """Merge LICENSE and LICENSES_bundled for sdist creation.
9 |
10 | This follows the approach of Scipy and is to keep LICENSE in repo as an
11 | exact BSD 3-clause, to make GitHub state correctly how unicodeitplus
12 | is licensed.
13 | """
14 | l1 = "LICENSE"
15 | l2 = "LICENSES_bundled"
16 |
17 | with open(l1, "r") as f:
18 | content1 = f.read()
19 |
20 | with open(l2, "r") as f:
21 | content2 = f.read()
22 |
23 | with open(l1, "w") as f:
24 | f.write(content1 + "\n\n" + content2)
25 |
26 | yield
27 |
28 | with open(l1, "w") as f:
29 | f.write(content1)
30 |
31 |
32 | class sdist_mod(sdist):
33 | def run(self):
34 | with merge_license_files():
35 | sdist.run(self)
36 |
37 |
38 | setup(
39 | zip_safe=False,
40 | use_scm_version=True,
41 | setup_requires=["setuptools_scm"],
42 | cmdclass={"sdist": sdist_mod},
43 | )
44 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2023, Hans Dembinski
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions
6 | are met:
7 |
8 | 1. Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 |
11 | 2. Redistributions in binary form must reproduce the above
12 | copyright notice, this list of conditions and the following
13 | disclaimer in the documentation and/or other materials provided
14 | with the distribution.
15 |
16 | 3. Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived
18 | from this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | requires = [
3 | "setuptools>=46.4",
4 | "setuptools_scm[toml]>=3.4",
5 | ]
6 | build-backend = "setuptools.build_meta"
7 |
8 | [project]
9 | name = "unicodeitplus"
10 | description = "Converts simple LaTeX to an unicode approximation"
11 | dependencies = ["lark"]
12 | maintainers = [
13 | { name = "Hans Dembinski" },
14 | { email = "hans.dembinski@gmail.com" }
15 | ]
16 | readme = "README.rst"
17 | requires-python = ">=3.8"
18 | license = {text = "BSD 3-Clause License"}
19 | classifiers = [
20 | "Programming Language :: Python :: 3",
21 | "Operating System :: POSIX :: Linux",
22 | "Operating System :: MacOS",
23 | "Operating System :: Microsoft :: Windows",
24 | "Topic :: Scientific/Engineering",
25 | "Intended Audience :: Developers"
26 | ]
27 | dynamic = ["version"]
28 |
29 | [project.urls]
30 | repository = "https://github.com/HDembinski/unicodeitplus"
31 |
32 | [project.optional-dependencies]
33 | test = [
34 | "pytest",
35 | ]
36 |
37 | [project.scripts]
38 | unicodeitplus = "unicodeitplus.cli:main"
39 |
40 | [tool.setuptools_scm]
41 |
42 | [tool.ruff]
43 | select = ["E", "F", "D"]
44 | extend-ignore = ["D203", "D212", "D200"]
45 | extend-exclude = ["docs", "setup.py"]
46 | fix = true
47 |
48 | [tool.ruff.per-file-ignores]
49 | "tests/test_*.py" = ["B", "D"]
50 |
51 | [tool.mypy]
52 | strict = true
53 | no_implicit_optional = false
54 | allow_redefinition = true
55 | ignore_missing_imports = true
56 | show_error_codes = true
57 | exclude = ["/parser\\.py$"]
58 |
59 | [tool.pytest.ini_options]
60 | minversion = "6.0"
61 | addopts = "-q -ra --ff"
62 | testpaths = ["tests"]
63 | xfail_strict = true
64 | filterwarnings = [
65 | "error::DeprecationWarning",
66 | ]
67 |
68 | [tool.coverage.run]
69 | relative_files = true
70 | source = ["unicodeitplus"]
71 |
72 | [tool.coverage.report]
73 | exclude_lines = ["pragma: no cover"]
74 |
75 | [tool.pydocstyle]
76 | convention = "numpy"
77 |
--------------------------------------------------------------------------------
/tests/test_latex.py:
--------------------------------------------------------------------------------
1 | import pytest
2 | from unicodeitplus import parse, replace
3 |
4 | REPLACE_TEST_CASES = {
5 | r"\infty": "∞",
6 | r"e^+": "𝑒⁺",
7 | r"\mu^-": "𝜇⁻",
8 | r"\int\sum\partial": "∫∑∂",
9 | r"\to": "→",
10 | r"p\bar{p}": "𝑝𝑝̄",
11 | r"\mathrm{p}\bar{\mathrm{p}}": "pp̄",
12 | r"p_\text{T} \text T": "𝑝ₜT",
13 | r"\mathcal{H}": "ℋ",
14 | r"\mathbb{R}": "ℝ",
15 | r"\slash{\partial}": "∂̸",
16 | r"\underline{x}": "𝑥̲",
17 | r"\phone": "☎",
18 | r"\checkmark": "✓",
19 | r"\dot{x}": "𝑥̇",
20 | r"\ddot{x}": "𝑥̈",
21 | r"A^6": "𝐴⁶",
22 | r"m_0": "𝑚₀",
23 | r"\Im": "ℑ",
24 | r"\Re": "ℜ",
25 | r"\hbar": "ℏ",
26 | r"\gamma": "𝛾",
27 | r"\Gamma": "𝛤",
28 | r"\perp": "⟂",
29 | r"\parallel": "∥",
30 | r"\therefore": "∴",
31 | r"\because": "∵",
32 | r"\subset": "⊂",
33 | r"\supset": "⊃",
34 | }
35 |
36 |
37 | @pytest.mark.parametrize("latex", REPLACE_TEST_CASES)
38 | def test_replace(latex):
39 | expected = REPLACE_TEST_CASES[latex]
40 | got = replace(latex)
41 | assert expected == got
42 |
43 |
44 | PARSE_TEST_CASES = {
45 | r"foo?!-1+2.;'\" \} \\ $bar$": "foo?!-1+2.;'\" } \\ 𝑏𝑎𝑟",
46 | r"$\left(\mathbf{\alpha + 1}^2_x y\right)$ bar": "(𝛂+𝟏²ₓ𝑦) bar",
47 | r"$\beta^{12}$ $\bar p {}^foo$ $\bar \mathrm{t}$ ": "𝛽¹² 𝑝̄ᶠ𝑜𝑜 t̄ ",
48 | r"$D^{\ast\ast} \to hhee$": "𝐷**→ℎℎ𝑒𝑒",
49 | r"$\mathbf{xyz + 1}$": "𝐱𝐲𝐳+𝟏",
50 | r"$\sqrt {1Aas\alpha}$": "√1̅𝐴̅𝑎̅𝑠̅𝛼̅",
51 | r"$\vec{x} b^2 \vec\alpha\overline\alpha K^0_S p_\text{T} \text T$": "𝑥⃗𝑏²𝛼⃗𝛼̅𝐾⁰ₛ𝑝ₜT",
52 | r"$\sqrt{abcd}$": "√𝑎̅𝑏̅𝑐̅𝑑̅",
53 | r"$p_T / \text{GeV}c^{-1}$": "𝑝ₜ/GeV𝑐⁻¹",
54 | (
55 | r"Search for $ \mathrm{t}\overline{\mathrm{t}} $"
56 | r" in collisions at $ \sqrt{s}=13 $~TeV"
57 | ): "Search for tt̅ in collisions at √𝑠̅=13\xa0TeV",
58 | r"$\overline {\mathrm{a} b}$ foo": "a̅𝑏̅ foo",
59 | "{abc{d{e}}a} {}": "{abc{d{e}}a} {}",
60 | r"foo\;bar\~": "foo\u2004bar~",
61 | }
62 |
63 |
64 | @pytest.mark.parametrize("latex", PARSE_TEST_CASES)
65 | def test_parse(latex):
66 | expected = PARSE_TEST_CASES[latex]
67 | got = parse(latex)
68 | assert expected == got
69 |
--------------------------------------------------------------------------------
/README.rst:
--------------------------------------------------------------------------------
1 | =============
2 | unicodeitplus
3 | =============
4 |
5 | .. image:: https://img.shields.io/pypi/v/unicodeitplus.svg
6 | :target: https://pypi.python.org/pypi/unicodeitplus
7 |
8 | Convert simple LaTeX into an unicode approximation and paste it anywhere.
9 |
10 | This package provides a more complete LaTeX to Unicode converter than `unicodeit `_. ``unicodeitplus`` uses a better parser (generated from EBNF with the fantastic `Lark library `_) than ``unicodeit``, which handles some code on which ``unicodeit`` fails, and allows one to parse a mix of text and math code, like::
11 |
12 | $p_T$ / GeV $c^{-1}$
13 |
14 | I want to eventually merge this project into ``unicodeit``, discussions with the maintainer of ``unicodeit`` are ongoing.
15 |
16 | LaTeX to Unicode: How does this even work?
17 | ------------------------------------------
18 | Unicode contains many subscript and superscript characters. It also contains font variations of latin and greek characters, including italic, boldface, bold italic, and more. It contains a lot of special mathematical characters and diacritical marks, which we use to approximate LaTeX renderings using just unicode characters.
19 |
20 | Like ``unicodeit``, ``unicodeitplus`` is largely based on ``unimathsymbols.txt`` from Günter Milde, which provides the mapping between LaTeX macros and Unicode symbols.
21 |
22 | Caveats
23 | -------
24 | - Only a subset of all LaTeX code can be converted to Unicode. Some Unicode characters simply don't exist. For example, subscript characters exist only for a subset of all lowercase latin characters, there are no subscript characters for uppercase latin characters, and all subscript or superscript characters are in roman font (upright).
25 | - Some code is rendered to the best approximation, for example, ``p_T`` as ``𝑝ₜ``. Returning an approximation is preferred over a failed conversion.
26 | - Your font needs to contain glyphs for the Unicode characters, otherwise you will typically see a little box with the unicode character index.
27 | - The visually best results seem to be obtained with monospace fonts.
28 |
29 | Examples
30 | --------
31 |
32 | ======================================================= =================
33 | LaTeX Unicode
34 | ======================================================= =================
35 | ``\alpha \beta \gamma \Gamma \Im \Re \hbar`` ``𝛼 𝛽 𝛾 𝛤 ℑ ℜ ℏ``
36 | ``e^+ \mu^- \slash{\partial}`` ``𝑒⁺ 𝜇⁻ ∂̸``
37 | ``\exists \in \int \sum \partial \infty`` ``∃ ∈ ∫ ∑ ∂ ∞``
38 | ``\perp \parallel \therefore \because \subset \supset`` ``⟂ ∥ ∴ ∵ ⊂ ⊃``
39 | ``\to \longrightarrow`` ``→ ⟶``
40 | ``p\bar{p} \mathrm{t}\bar{\mathrm{t}}`` ``𝑝𝑝̄ tt̄``
41 | ``\mathcal{H} \mathbb{R}`` ``ℋ ℝ``
42 | ``\phone \checkmark`` ``☎ ✓``
43 | ``\underline{x} \dot{x} \ddot{x} \vec{x}`` ``𝑥̲ 𝑥̇ 𝑥̈ 𝑥⃗``
44 | ``A^6 m_0`` ``𝐴⁶ 𝑚₀``
45 | ``1.2 \times 10^{23}`` ``1.2 × 10²³``
46 | ``p_T / \mathrm{GeV} c^{-1}`` ``𝑝ₜ/GeV𝑐⁻¹``
47 | ``K^0_S`` ``𝐾⁰ₛ``
48 | ``D^{\ast\ast} \to hhee`` ``𝐷**→ℎℎ𝑒𝑒``
49 | ``A \cdot \mathbf{x} \simeq \mathbf{b}`` ``𝐴⋅𝐱≃𝐛``
50 | ======================================================= =================
51 |
--------------------------------------------------------------------------------
/CONTRIBUTING.rst:
--------------------------------------------------------------------------------
1 | .. highlight:: shell
2 |
3 | ============
4 | Contributing
5 | ============
6 |
7 | Contributions are welcome, and they are greatly appreciated! Every little bit
8 | helps, and credit will always be given.
9 |
10 | You can contribute in many ways:
11 |
12 | Types of Contributions
13 | ----------------------
14 |
15 | Report Bugs
16 | ~~~~~~~~~~~
17 |
18 | Report bugs at https://github.com/hdembinski/unicodeitplus/issues.
19 |
20 | If you are reporting a bug, please include:
21 |
22 | * Your operating system name and version.
23 | * Any details about your local setup that might be helpful in troubleshooting.
24 | * Detailed steps to reproduce the bug.
25 |
26 | Fix Bugs
27 | ~~~~~~~~
28 |
29 | Look through the GitHub issues for bugs. Anything tagged with "bug" and "help
30 | wanted" is open to whoever wants to implement it.
31 |
32 | Implement Features
33 | ~~~~~~~~~~~~~~~~~~
34 |
35 | Look through the GitHub issues for features. Anything tagged with "enhancement"
36 | and "help wanted" is open to whoever wants to implement it.
37 |
38 | Write Documentation
39 | ~~~~~~~~~~~~~~~~~~~
40 |
41 | unicodeitplus could always use more documentation, whether as part of the
42 | official unicodeitplus docs, in docstrings, or even on the web in blog posts,
43 | articles, and such.
44 |
45 | Submit Feedback
46 | ~~~~~~~~~~~~~~~
47 |
48 | The best way to send feedback is to file an issue at https://github.com/hdembinski/unicodeitplus/issues.
49 |
50 | If you are proposing a feature:
51 |
52 | * Explain in detail how it would work.
53 | * Keep the scope as narrow as possible, to make it easier to implement.
54 | * Remember that this is a volunteer-driven project, and that contributions
55 | are welcome :)
56 |
57 | Get Started!
58 | ------------
59 |
60 | Ready to contribute? Here's how to set up `unicodeitplus` for local development.
61 |
62 | 1. Fork the `unicodeitplus` repo on GitHub.
63 | 2. Clone your fork locally::
64 |
65 | $ git clone git@github.com:your_name_here/unicodeitplus.git
66 |
67 | 3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::
68 |
69 | $ mkvirtualenv unicodeitplus
70 | $ cd unicodeitplus/
71 | $ python setup.py develop
72 |
73 | 4. Create a branch for local development::
74 |
75 | $ git checkout -b name-of-your-bugfix-or-feature
76 |
77 | Now you can make your changes locally.
78 |
79 | 5. When you're done making changes, check that your changes pass flake8 and the
80 | tests, including testing other Python versions with tox::
81 |
82 | $ flake8 unicodeitplus tests
83 | $ python setup.py test or pytest
84 | $ tox
85 |
86 | To get flake8 and tox, just pip install them into your virtualenv.
87 |
88 | 6. Commit your changes and push your branch to GitHub::
89 |
90 | $ git add .
91 | $ git commit -m "Your detailed description of your changes."
92 | $ git push origin name-of-your-bugfix-or-feature
93 |
94 | 7. Submit a pull request through the GitHub website.
95 |
96 | Pull Request Guidelines
97 | -----------------------
98 |
99 | Before you submit a pull request, check that it meets these guidelines:
100 |
101 | 1. The pull request should include tests.
102 | 2. If the pull request adds functionality, the docs should be updated. Put
103 | your new functionality into a function with a docstring, and add the
104 | feature to the list in README.rst.
105 | 3. The pull request should work for Python 3.5, 3.6, 3.7 and 3.8, and for PyPy. Check
106 | https://travis-ci.com/hdembinski/unicodeitplus/pull_requests
107 | and make sure that the tests pass for all supported Python versions.
108 |
109 | Tips
110 | ----
111 |
112 | To run a subset of tests::
113 |
114 | $ pytest tests.test_unicodeitplus
115 |
116 |
117 | Deploying
118 | ---------
119 |
120 | A reminder for the maintainers on how to deploy.
121 | Make sure all your changes are committed (including an entry in HISTORY.rst).
122 | Then run::
123 |
124 | $ bump2version patch # possible: major / minor / patch
125 | $ git push
126 | $ git push --tags
127 |
128 | Travis will then deploy to PyPI if tests pass.
129 |
--------------------------------------------------------------------------------
/src/unicodeitplus/transform.py:
--------------------------------------------------------------------------------
1 | """Tools to transform LaTeX tree into unicode."""
2 | from . import _make_data # noqa, imported for side-effects
3 | from .data import COMMANDS, HAS_ARG
4 | from lark import Transformer, Token
5 | from typing import List, Any
6 |
7 |
8 | IGNORE_AS_FALLBACK = {
9 | r"\text",
10 | r"\mathbb",
11 | r"\mathrm",
12 | r"\mathbf",
13 | r"\mathsf",
14 | r"\mathsfbf",
15 | r"\mathsfbfit",
16 | r"\mathsfit",
17 | r"\mathtt",
18 | r"\left",
19 | r"\right",
20 | r"\big",
21 | r"\Big",
22 | r"\Bigg",
23 | }
24 |
25 | # ESCAPED = {
26 | # "\\\\": "\\",
27 | # r"\}": "}",
28 | # r"\{": "{",
29 | # r"\_": "_",
30 | # r"\^": "^",
31 | # r"\~": "~",
32 | # }
33 |
34 | WHITESPACE = {
35 | # unbreakable space
36 | "~": "\u00A0",
37 | # thinspace ~0.17em
38 | r"\,": "\u2009",
39 | # medspace ~0.22em
40 | r"\:": "\u2005",
41 | r"\>": "\u2005",
42 | # thickspace ~0.28em
43 | r"\;": "\u2004",
44 | }
45 |
46 |
47 | class ToUnicode(Transformer): # type:ignore
48 | """Convert Tree to Unicode."""
49 |
50 | def start(self, ch: List[Any]) -> str:
51 | """
52 | Return final unicode.
53 |
54 | The start token is handled last, because the transformer
55 | starts from the leafs. So when we arrive here, everything
56 | else is already transformed into strings. We only need
57 | to handle escaped characters correctly and recursively
58 | unparse groups.
59 | """
60 | r: List[str] = []
61 |
62 | def visitor(r: List[str], ch: List[Any]) -> None:
63 | for x in ch:
64 | if isinstance(x, str):
65 | r.append(x)
66 | elif isinstance(x, list):
67 | r.append("{")
68 | visitor(r, x)
69 | r.append("}")
70 | else:
71 | assert False # this should never happen
72 |
73 | visitor(r, ch)
74 | return "".join(r)
75 |
76 | def CHARACTER(self, ch: Token) -> str:
77 | """
78 | Handle character token.
79 |
80 | This is either a single charactor or an escaped character sequence.
81 | """
82 | if ch.value.startswith("\\"):
83 | return ch.value[1:] # type:ignore
84 | return ch.value # type:ignore
85 |
86 | def WS_EXT(self, ch: Token) -> str:
87 | """
88 | Handle whitespace.
89 | """
90 | return WHITESPACE.get(ch.value, " ")
91 |
92 | def COMMAND(self, ch: Token) -> str:
93 | """
94 | Handle command token.
95 |
96 | We need to strip the whitespace which may be there.
97 | """
98 | return ch.value.strip() # type:ignore
99 |
100 | def group(self, items: List[Any]) -> List[Any]:
101 | """
102 | Handle group token.
103 |
104 | Nothing to do, we just the children as a list.
105 | """
106 | return items
107 |
108 | def math(self, items: List[Any]) -> str:
109 | """
110 | Handle math token.
111 |
112 | Here the actual magic happens. The challenge is to treat macros which accept an
113 | argument correctly, while respecting the grouping. A command which accepts an
114 | argument acts on the next character or group. Groups can be nested, so we need
115 | to handle this with recursion.
116 |
117 | First, a recursive visitor with a command stack converts nested macros and
118 | groups into a list of flat lists of commands which end in a leaf (a charactor or
119 | command that accepts no argument).
120 |
121 | Then, we convert each list of commands with the function _handle_cmds into
122 | unicode. See comments in that function for details.
123 | """
124 |
125 | def visitor(
126 | r: List[List[str]],
127 | stack: List[str],
128 | items: List[Any],
129 | ) -> None:
130 | initial_stack = stack.copy()
131 | for x in items:
132 | if isinstance(x, str) and x in HAS_ARG:
133 | if x == r"\sqrt":
134 | r.append(stack.copy() + [r"\sqrt"])
135 | stack.append(r"\overline")
136 | else:
137 | stack.append(x)
138 | else:
139 | if isinstance(x, list):
140 | visitor(r, stack, x)
141 | elif isinstance(x, str):
142 | if not x.isspace() or (stack and stack[-1] == r"\text"):
143 | r.append(stack.copy() + [x])
144 | else:
145 | assert False # should never happen
146 | stack[:] = initial_stack
147 |
148 | r: List[List[str]] = []
149 | visitor(r, [], items)
150 | return "".join(_handle_cmds(x[:-1], x[-1]) for x in r)
151 |
152 |
153 | def _handle_cmds(cmds: List[str], x: str) -> str:
154 | # - x can be character or command, like \alpha
155 | # - cmds contains commands to apply, may be empty
156 | # - to transform ^{\alpha} or \text{x} correctly,
157 | # we first try to convert innermost command and x
158 | # as unit; if this fails we treat commands sequentially
159 | # - other commands in cmds must be modifiers like \dot or
160 | # \vec that are converted into diacritical characters
161 | # - if we cannot convert, we return unconverted LaTeX
162 | if cmds:
163 | innermost = True
164 | for cmd in reversed(cmds):
165 | latex = f"{cmd}{{{x}}}"
166 | if latex in COMMANDS:
167 | x = COMMANDS[latex]
168 | elif cmd in (r"\text", r"\mathrm"):
169 | pass
170 | else:
171 | if innermost:
172 | x = COMMANDS.get(x, x)
173 | if cmd in COMMANDS:
174 | # must be some unicode modifier, e.g. \dot, \vec
175 | assert cmd in HAS_ARG # nosec
176 | x += COMMANDS[cmd]
177 | elif cmd not in IGNORE_AS_FALLBACK:
178 | x = latex
179 | innermost = False
180 | else:
181 | x = COMMANDS.get(x, x)
182 | return x
183 |
--------------------------------------------------------------------------------
/src/unicodeitplus/_make_data.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 | from typing import Dict, Tuple, Set
3 |
4 | ALIASES = {
5 | r"\rightarrow": r"\to",
6 | r"\hslash": r"\hbar",
7 | r"\thinspace": r"\,",
8 | }
9 |
10 | CORRECTIONS_EXTENSIONS = {
11 | r"^{\ast}": "*",
12 | "h": "ℎ",
13 | r"\partial": "∂",
14 | r"\slash": "\u0338",
15 | r"\phone": "☎",
16 | r"\thinspace": "\u2009",
17 | # https://github.com/HDembinski/unicodeitplus/issues/3
18 | r"\square": "\u25A1",
19 | }
20 |
21 |
22 | def _generate_sub_and_super_scripts() -> Dict[str, str]:
23 | import string
24 |
25 | # Wikipedia: https://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts
26 |
27 | cmds = {}
28 |
29 | greek_latex = (
30 | r"\alpha",
31 | r"\beta",
32 | r"\gamma",
33 | r"\delta",
34 | r"\epsilon",
35 | r"\zeta",
36 | r"\eta",
37 | r"\theta",
38 | r"\iota",
39 | r"\kappa",
40 | r"\lambda",
41 | r"\mu",
42 | r"\nu",
43 | r"\xi",
44 | "o",
45 | r"\pi",
46 | r"\rho",
47 | r"\sigma",
48 | r"\tau",
49 | r"\upsilon",
50 | r"\phi",
51 | r"\chi",
52 | r"\psi",
53 | r"\omega",
54 | )
55 |
56 | superscript_numbers = "⁰¹²³⁴⁵⁶⁷⁸⁹"
57 | for i, ch in enumerate(superscript_numbers):
58 | cmds[f"^{{{i}}}"] = ch
59 |
60 | subscript_numbers = "₀₁₂₃₄₅₆₇₈₉"
61 | for i, ch in enumerate(subscript_numbers):
62 | cmds[f"_{{{i}}}"] = ch
63 |
64 | superscript_lowercase = "ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖ𐞥ʳˢᵗᵘᵛʷˣʸᶻ"
65 | superscript_uppercase = "ᴬᴮꟲᴰᴱꟳᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾꟴᴿ ᵀᵁⱽᵂ "
66 | for latex, ch in zip(
67 | string.ascii_letters, superscript_lowercase + superscript_uppercase
68 | ):
69 | if ch != " ":
70 | cmds[f"^{{{latex}}}"] = ch
71 |
72 | subscript_lowercase = "ₐ ₑ ₕᵢⱼₖₗₘₙₒₚ ᵣₛₜᵤᵥ ₓ "
73 | for latex, ch in zip(string.ascii_letters, subscript_lowercase * 2):
74 | if ch != " ":
75 | cmds[f"_{{{latex}}}"] = ch
76 |
77 | superscript_lowercase_greek = " ᵝᵞᵟᵋ ᶿᶥ ᶹᵠᵡ "
78 | subscript_lowercase_greek = " ᵦᵧ ᵨ ᵩᵪ "
79 | for latex, sup, sub in zip(
80 | greek_latex, superscript_lowercase_greek, subscript_lowercase_greek
81 | ):
82 | if sup != " ":
83 | cmds[f"^{{{latex}}}"] = sup
84 | if sub != " ":
85 | cmds[f"_{{{latex}}}"] = sub
86 |
87 | return cmds
88 |
89 |
90 | def _generate_from_unimathsymbols_txt() -> Tuple[Dict[str, str], Set[str]]:
91 | d = Path(__file__).parent
92 | fn = None
93 | while d.parent is not None:
94 | d = d.parent
95 | if (d / "extern").exists():
96 | fn = d / "extern" / "unimathsymbols.txt"
97 | break
98 | assert fn is not None
99 |
100 | # Symbols extracted from extern/unimathsymbols.txt, which is under Copyright 2011 by
101 | # Günter Milde and licensed under the LaTeX Project Public License (LPPL)
102 | def match(comments: bytes) -> str:
103 | matches = [
104 | (b"PLUS", "+"),
105 | (b"MINUS", "-"),
106 | (b"EQUALS", "="),
107 | (b"LEFT PARENTHESIS", "("),
108 | (b"RIGHT PARENTHESIS", ")"),
109 | ]
110 | for match, latex in matches:
111 | if match in comments:
112 | return latex
113 | assert False, f"unmatched: {comments!r}" # nosec, never arrive here
114 |
115 | cmds = {}
116 | has_arg = set()
117 | with open(fn, "rb") as f:
118 | for line in f:
119 | if line.startswith(b"#"):
120 | continue
121 | items = line.split(b"^")
122 | _, ch, latex, latex2, cls, category, _, comments = items
123 | ch = ch.decode()
124 | latex = latex.decode()
125 | latex2 = latex2.decode()
126 | comments = comments[:-1]
127 | arg = _has_arg(cls, category)
128 | if arg:
129 | ch = ch[-1]
130 | if latex:
131 | if latex == ch:
132 | continue
133 | cmds[latex] = ch
134 | if arg:
135 | has_arg.add(latex)
136 | elif latex2:
137 | cmds[latex2] = ch
138 | elif comments.startswith(b"SUPERSCRIPT"):
139 | latex = f"^{{{match(comments)}}}"
140 | cmds[latex] = ch
141 | elif comments.startswith(b"SUBSCRIPT"):
142 | latex = f"_{{{match(comments)}}}"
143 | cmds[latex] = ch
144 | else:
145 | pass
146 |
147 | return cmds, has_arg
148 |
149 |
150 | def generate_data() -> str:
151 | """Generate source code for Python module with database of known LaTeX commands."""
152 | cmds = _generate_sub_and_super_scripts()
153 | cmds2, has_arg = _generate_from_unimathsymbols_txt()
154 | cmds.update(cmds2)
155 | cmds.update(CORRECTIONS_EXTENSIONS)
156 |
157 | for old, new in ALIASES.items():
158 | cmds[new] = cmds[old]
159 |
160 | # fill up has_arg
161 | for key in cmds:
162 | i = key.find("{")
163 | if i > 0:
164 | has_arg.add(key[:i])
165 |
166 | has_arg |= {
167 | r"\big",
168 | r"\Big",
169 | r"\Bigg",
170 | r"\left",
171 | r"\right",
172 | r"\text",
173 | r"\sqrt",
174 | r"\slash",
175 | r"\mathrm",
176 | }
177 |
178 | has_arg.remove("\\")
179 |
180 | chunks = [
181 | """\"\"\"
182 | Symbols extracted from extern/unimathsymbols.txt with extensions and corrections.
183 |
184 | extern/unimathsymbols.txt is under Copyright 2011 by Günter Milde and licensed under the
185 | LaTeX Project Public License (LPPL).
186 |
187 | As a Derived Work, this file is licensed under LaTeX Project Public License (LPPL).
188 | \"\"\"
189 |
190 | COMMANDS = {
191 | """
192 | ]
193 | for key in sorted(cmds):
194 | val = cmds[key]
195 | chunks.append(f" {key!r}: {val!r},\n".replace("'", '"'))
196 | chunks.append("}\n")
197 |
198 | chunks.append(
199 | """
200 |
201 | HAS_ARG = {
202 | """
203 | )
204 |
205 | for key in sorted(has_arg):
206 | chunks.append(f" {key!r},\n".replace("'", '"'))
207 | chunks.append("}\n")
208 |
209 | return "".join(chunks)
210 |
211 |
212 | def _has_arg(cls: bytes, category: bytes) -> bool:
213 | return cls == b"D" or category == b"mathaccent"
214 |
215 |
216 | if __name__ == "__main__":
217 | print(generate_data())
218 | else:
219 | fn_data = Path(__file__).parent / "data.py"
220 | if fn_data.stat().st_mtime < Path(__file__).stat().st_mtime:
221 | with open(fn_data, "w") as f:
222 | f.write(generate_data())
223 |
--------------------------------------------------------------------------------
/extern/LICENSE.LPPL:
--------------------------------------------------------------------------------
1 | The LaTeX Project Public License
2 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
3 |
4 | LPPL Version 1.3c 2008-05-04
5 |
6 | Copyright 1999 2002-2008 LaTeX3 Project
7 | Everyone is allowed to distribute verbatim copies of this
8 | license document, but modification of it is not allowed.
9 |
10 |
11 | PREAMBLE
12 | ========
13 |
14 | The LaTeX Project Public License (LPPL) is the primary license under
15 | which the LaTeX kernel and the base LaTeX packages are distributed.
16 |
17 | You may use this license for any work of which you hold the copyright
18 | and which you wish to distribute. This license may be particularly
19 | suitable if your work is TeX-related (such as a LaTeX package), but
20 | it is written in such a way that you can use it even if your work is
21 | unrelated to TeX.
22 |
23 | The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
24 | below, gives instructions, examples, and recommendations for authors
25 | who are considering distributing their works under this license.
26 |
27 | This license gives conditions under which a work may be distributed
28 | and modified, as well as conditions under which modified versions of
29 | that work may be distributed.
30 |
31 | We, the LaTeX3 Project, believe that the conditions below give you
32 | the freedom to make and distribute modified versions of your work
33 | that conform with whatever technical specifications you wish while
34 | maintaining the availability, integrity, and reliability of
35 | that work. If you do not see how to achieve your goal while
36 | meeting these conditions, then read the document `cfgguide.tex'
37 | and `modguide.tex' in the base LaTeX distribution for suggestions.
38 |
39 |
40 | DEFINITIONS
41 | ===========
42 |
43 | In this license document the following terms are used:
44 |
45 | `Work'
46 | Any work being distributed under this License.
47 |
48 | `Derived Work'
49 | Any work that under any applicable law is derived from the Work.
50 |
51 | `Modification'
52 | Any procedure that produces a Derived Work under any applicable
53 | law -- for example, the production of a file containing an
54 | original file associated with the Work or a significant portion of
55 | such a file, either verbatim or with modifications and/or
56 | translated into another language.
57 |
58 | `Modify'
59 | To apply any procedure that produces a Derived Work under any
60 | applicable law.
61 |
62 | `Distribution'
63 | Making copies of the Work available from one person to another, in
64 | whole or in part. Distribution includes (but is not limited to)
65 | making any electronic components of the Work accessible by
66 | file transfer protocols such as FTP or HTTP or by shared file
67 | systems such as Sun's Network File System (NFS).
68 |
69 | `Compiled Work'
70 | A version of the Work that has been processed into a form where it
71 | is directly usable on a computer system. This processing may
72 | include using installation facilities provided by the Work,
73 | transformations of the Work, copying of components of the Work, or
74 | other activities. Note that modification of any installation
75 | facilities provided by the Work constitutes modification of the Work.
76 |
77 | `Current Maintainer'
78 | A person or persons nominated as such within the Work. If there is
79 | no such explicit nomination then it is the `Copyright Holder' under
80 | any applicable law.
81 |
82 | `Base Interpreter'
83 | A program or process that is normally needed for running or
84 | interpreting a part or the whole of the Work.
85 |
86 | A Base Interpreter may depend on external components but these
87 | are not considered part of the Base Interpreter provided that each
88 | external component clearly identifies itself whenever it is used
89 | interactively. Unless explicitly specified when applying the
90 | license to the Work, the only applicable Base Interpreter is a
91 | `LaTeX-Format' or in the case of files belonging to the
92 | `LaTeX-format' a program implementing the `TeX language'.
93 |
94 |
95 |
96 | CONDITIONS ON DISTRIBUTION AND MODIFICATION
97 | ===========================================
98 |
99 | 1. Activities other than distribution and/or modification of the Work
100 | are not covered by this license; they are outside its scope. In
101 | particular, the act of running the Work is not restricted and no
102 | requirements are made concerning any offers of support for the Work.
103 |
104 | 2. You may distribute a complete, unmodified copy of the Work as you
105 | received it. Distribution of only part of the Work is considered
106 | modification of the Work, and no right to distribute such a Derived
107 | Work may be assumed under the terms of this clause.
108 |
109 | 3. You may distribute a Compiled Work that has been generated from a
110 | complete, unmodified copy of the Work as distributed under Clause 2
111 | above, as long as that Compiled Work is distributed in such a way that
112 | the recipients may install the Compiled Work on their system exactly
113 | as it would have been installed if they generated a Compiled Work
114 | directly from the Work.
115 |
116 | 4. If you are the Current Maintainer of the Work, you may, without
117 | restriction, modify the Work, thus creating a Derived Work. You may
118 | also distribute the Derived Work without restriction, including
119 | Compiled Works generated from the Derived Work. Derived Works
120 | distributed in this manner by the Current Maintainer are considered to
121 | be updated versions of the Work.
122 |
123 | 5. If you are not the Current Maintainer of the Work, you may modify
124 | your copy of the Work, thus creating a Derived Work based on the Work,
125 | and compile this Derived Work, thus creating a Compiled Work based on
126 | the Derived Work.
127 |
128 | 6. If you are not the Current Maintainer of the Work, you may
129 | distribute a Derived Work provided the following conditions are met
130 | for every component of the Work unless that component clearly states
131 | in the copyright notice that it is exempt from that condition. Only
132 | the Current Maintainer is allowed to add such statements of exemption
133 | to a component of the Work.
134 |
135 | a. If a component of this Derived Work can be a direct replacement
136 | for a component of the Work when that component is used with the
137 | Base Interpreter, then, wherever this component of the Work
138 | identifies itself to the user when used interactively with that
139 | Base Interpreter, the replacement component of this Derived Work
140 | clearly and unambiguously identifies itself as a modified version
141 | of this component to the user when used interactively with that
142 | Base Interpreter.
143 |
144 | b. Every component of the Derived Work contains prominent notices
145 | detailing the nature of the changes to that component, or a
146 | prominent reference to another file that is distributed as part
147 | of the Derived Work and that contains a complete and accurate log
148 | of the changes.
149 |
150 | c. No information in the Derived Work implies that any persons,
151 | including (but not limited to) the authors of the original version
152 | of the Work, provide any support, including (but not limited to)
153 | the reporting and handling of errors, to recipients of the
154 | Derived Work unless those persons have stated explicitly that
155 | they do provide such support for the Derived Work.
156 |
157 | d. You distribute at least one of the following with the Derived Work:
158 |
159 | 1. A complete, unmodified copy of the Work;
160 | if your distribution of a modified component is made by
161 | offering access to copy the modified component from a
162 | designated place, then offering equivalent access to copy
163 | the Work from the same or some similar place meets this
164 | condition, even though third parties are not compelled to
165 | copy the Work along with the modified component;
166 |
167 | 2. Information that is sufficient to obtain a complete,
168 | unmodified copy of the Work.
169 |
170 | 7. If you are not the Current Maintainer of the Work, you may
171 | distribute a Compiled Work generated from a Derived Work, as long as
172 | the Derived Work is distributed to all recipients of the Compiled
173 | Work, and as long as the conditions of Clause 6, above, are met with
174 | regard to the Derived Work.
175 |
176 | 8. The conditions above are not intended to prohibit, and hence do not
177 | apply to, the modification, by any method, of any component so that it
178 | becomes identical to an updated version of that component of the Work as
179 | it is distributed by the Current Maintainer under Clause 4, above.
180 |
181 | 9. Distribution of the Work or any Derived Work in an alternative
182 | format, where the Work or that Derived Work (in whole or in part) is
183 | then produced by applying some process to that format, does not relax or
184 | nullify any sections of this license as they pertain to the results of
185 | applying that process.
186 |
187 | 10. a. A Derived Work may be distributed under a different license
188 | provided that license itself honors the conditions listed in
189 | Clause 6 above, in regard to the Work, though it does not have
190 | to honor the rest of the conditions in this license.
191 |
192 | b. If a Derived Work is distributed under a different license, that
193 | Derived Work must provide sufficient documentation as part of
194 | itself to allow each recipient of that Derived Work to honor the
195 | restrictions in Clause 6 above, concerning changes from the Work.
196 |
197 | 11. This license places no restrictions on works that are unrelated to
198 | the Work, nor does this license place any restrictions on aggregating
199 | such works with the Work by any means.
200 |
201 | 12. Nothing in this license is intended to, or may be used to, prevent
202 | complete compliance by all parties with all applicable laws.
203 |
204 |
205 | NO WARRANTY
206 | ===========
207 |
208 | There is no warranty for the Work. Except when otherwise stated in
209 | writing, the Copyright Holder provides the Work `as is', without
210 | warranty of any kind, either expressed or implied, including, but not
211 | limited to, the implied warranties of merchantability and fitness for a
212 | particular purpose. The entire risk as to the quality and performance
213 | of the Work is with you. Should the Work prove defective, you assume
214 | the cost of all necessary servicing, repair, or correction.
215 |
216 | In no event unless required by applicable law or agreed to in writing
217 | will The Copyright Holder, or any author named in the components of the
218 | Work, or any other party who may distribute and/or modify the Work as
219 | permitted above, be liable to you for damages, including any general,
220 | special, incidental or consequential damages arising out of any use of
221 | the Work or out of inability to use the Work (including, but not limited
222 | to, loss of data, data being rendered inaccurate, or losses sustained by
223 | anyone as a result of any failure of the Work to operate with any other
224 | programs), even if the Copyright Holder or said author or said other
225 | party has been advised of the possibility of such damages.
226 |
227 |
228 | MAINTENANCE OF THE WORK
229 | =======================
230 |
231 | The Work has the status `author-maintained' if the Copyright Holder
232 | explicitly and prominently states near the primary copyright notice in
233 | the Work that the Work can only be maintained by the Copyright Holder
234 | or simply that it is `author-maintained'.
235 |
236 | The Work has the status `maintained' if there is a Current Maintainer
237 | who has indicated in the Work that they are willing to receive error
238 | reports for the Work (for example, by supplying a valid e-mail
239 | address). It is not required for the Current Maintainer to acknowledge
240 | or act upon these error reports.
241 |
242 | The Work changes from status `maintained' to `unmaintained' if there
243 | is no Current Maintainer, or the person stated to be Current
244 | Maintainer of the work cannot be reached through the indicated means
245 | of communication for a period of six months, and there are no other
246 | significant signs of active maintenance.
247 |
248 | You can become the Current Maintainer of the Work by agreement with
249 | any existing Current Maintainer to take over this role.
250 |
251 | If the Work is unmaintained, you can become the Current Maintainer of
252 | the Work through the following steps:
253 |
254 | 1. Make a reasonable attempt to trace the Current Maintainer (and
255 | the Copyright Holder, if the two differ) through the means of
256 | an Internet or similar search.
257 |
258 | 2. If this search is successful, then enquire whether the Work
259 | is still maintained.
260 |
261 | a. If it is being maintained, then ask the Current Maintainer
262 | to update their communication data within one month.
263 |
264 | b. If the search is unsuccessful or no action to resume active
265 | maintenance is taken by the Current Maintainer, then announce
266 | within the pertinent community your intention to take over
267 | maintenance. (If the Work is a LaTeX work, this could be
268 | done, for example, by posting to comp.text.tex.)
269 |
270 | 3a. If the Current Maintainer is reachable and agrees to pass
271 | maintenance of the Work to you, then this takes effect
272 | immediately upon announcement.
273 |
274 | b. If the Current Maintainer is not reachable and the Copyright
275 | Holder agrees that maintenance of the Work be passed to you,
276 | then this takes effect immediately upon announcement.
277 |
278 | 4. If you make an `intention announcement' as described in 2b. above
279 | and after three months your intention is challenged neither by
280 | the Current Maintainer nor by the Copyright Holder nor by other
281 | people, then you may arrange for the Work to be changed so as
282 | to name you as the (new) Current Maintainer.
283 |
284 | 5. If the previously unreachable Current Maintainer becomes
285 | reachable once more within three months of a change completed
286 | under the terms of 3b) or 4), then that Current Maintainer must
287 | become or remain the Current Maintainer upon request provided
288 | they then update their communication data within one month.
289 |
290 | A change in the Current Maintainer does not, of itself, alter the fact
291 | that the Work is distributed under the LPPL license.
292 |
293 | If you become the Current Maintainer of the Work, you should
294 | immediately provide, within the Work, a prominent and unambiguous
295 | statement of your status as Current Maintainer. You should also
296 | announce your new status to the same pertinent community as
297 | in 2b) above.
298 |
299 |
300 | WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
301 | ======================================================
302 |
303 | This section contains important instructions, examples, and
304 | recommendations for authors who are considering distributing their
305 | works under this license. These authors are addressed as `you' in
306 | this section.
307 |
308 | Choosing This License or Another License
309 | ----------------------------------------
310 |
311 | If for any part of your work you want or need to use *distribution*
312 | conditions that differ significantly from those in this license, then
313 | do not refer to this license anywhere in your work but, instead,
314 | distribute your work under a different license. You may use the text
315 | of this license as a model for your own license, but your license
316 | should not refer to the LPPL or otherwise give the impression that
317 | your work is distributed under the LPPL.
318 |
319 | The document `modguide.tex' in the base LaTeX distribution explains
320 | the motivation behind the conditions of this license. It explains,
321 | for example, why distributing LaTeX under the GNU General Public
322 | License (GPL) was considered inappropriate. Even if your work is
323 | unrelated to LaTeX, the discussion in `modguide.tex' may still be
324 | relevant, and authors intending to distribute their works under any
325 | license are encouraged to read it.
326 |
327 | A Recommendation on Modification Without Distribution
328 | -----------------------------------------------------
329 |
330 | It is wise never to modify a component of the Work, even for your own
331 | personal use, without also meeting the above conditions for
332 | distributing the modified component. While you might intend that such
333 | modifications will never be distributed, often this will happen by
334 | accident -- you may forget that you have modified that component; or
335 | it may not occur to you when allowing others to access the modified
336 | version that you are thus distributing it and violating the conditions
337 | of this license in ways that could have legal implications and, worse,
338 | cause problems for the community. It is therefore usually in your
339 | best interest to keep your copy of the Work identical with the public
340 | one. Many works provide ways to control the behavior of that work
341 | without altering any of its licensed components.
342 |
343 | How to Use This License
344 | -----------------------
345 |
346 | To use this license, place in each of the components of your work both
347 | an explicit copyright notice including your name and the year the work
348 | was authored and/or last substantially modified. Include also a
349 | statement that the distribution and/or modification of that
350 | component is constrained by the conditions in this license.
351 |
352 | Here is an example of such a notice and statement:
353 |
354 | %% pig.dtx
355 | %% Copyright 2008 M. Y. Name
356 | %
357 | % This work may be distributed and/or modified under the
358 | % conditions of the LaTeX Project Public License, either version 1.3
359 | % of this license or (at your option) any later version.
360 | % The latest version of this license is in
361 | % https://www.latex-project.org/lppl.txt
362 | % and version 1.3c or later is part of all distributions of LaTeX
363 | % version 2008 or later.
364 | %
365 | % This work has the LPPL maintenance status `maintained'.
366 | %
367 | % The Current Maintainer of this work is M. Y. Name.
368 | %
369 | % This work consists of the files pig.dtx and pig.ins
370 | % and the derived file pig.sty.
371 |
372 | Given such a notice and statement in a file, the conditions
373 | given in this license document would apply, with the `Work' referring
374 | to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
375 | generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
376 | referring to any `LaTeX-Format', and both `Copyright Holder' and
377 | `Current Maintainer' referring to the person `M. Y. Name'.
378 |
379 | If you do not want the Maintenance section of LPPL to apply to your
380 | Work, change `maintained' above into `author-maintained'.
381 | However, we recommend that you use `maintained', as the Maintenance
382 | section was added in order to ensure that your Work remains useful to
383 | the community even when you can no longer maintain and support it
384 | yourself.
385 |
386 | Derived Works That Are Not Replacements
387 | ---------------------------------------
388 |
389 | Several clauses of the LPPL specify means to provide reliability and
390 | stability for the user community. They therefore concern themselves
391 | with the case that a Derived Work is intended to be used as a
392 | (compatible or incompatible) replacement of the original Work. If
393 | this is not the case (e.g., if a few lines of code are reused for a
394 | completely different task), then clauses 6b and 6d shall not apply.
395 |
396 |
397 | Important Recommendations
398 | -------------------------
399 |
400 | Defining What Constitutes the Work
401 |
402 | The LPPL requires that distributions of the Work contain all the
403 | files of the Work. It is therefore important that you provide a
404 | way for the licensee to determine which files constitute the Work.
405 | This could, for example, be achieved by explicitly listing all the
406 | files of the Work near the copyright notice of each file or by
407 | using a line such as:
408 |
409 | % This work consists of all files listed in manifest.txt.
410 |
411 | in that place. In the absence of an unequivocal list it might be
412 | impossible for the licensee to determine what is considered by you
413 | to comprise the Work and, in such a case, the licensee would be
414 | entitled to make reasonable conjectures as to which files comprise
415 | the Work.
416 |
--------------------------------------------------------------------------------
/src/unicodeitplus/data.py:
--------------------------------------------------------------------------------
1 | """
2 | Symbols extracted from extern/unimathsymbols.txt with extensions and corrections.
3 |
4 | extern/unimathsymbols.txt is under Copyright 2011 by Günter Milde and licensed under the
5 | LaTeX Project Public License (LPPL).
6 |
7 | As a Derived Work, this file is licensed under LaTeX Project Public License (LPPL).
8 | """
9 |
10 | COMMANDS = {
11 | "-": "−",
12 | ":": "∶",
13 | "A": "𝐴",
14 | "B": "𝐵",
15 | "C": "𝐶",
16 | "D": "𝐷",
17 | "E": "𝐸",
18 | "F": "𝐹",
19 | "G": "𝐺",
20 | "H": "𝐻",
21 | "I": "𝐼",
22 | "J": "𝐽",
23 | "K": "𝐾",
24 | "L": "𝐿",
25 | "M": "𝑀",
26 | "N": "𝑁",
27 | "O": "𝑂",
28 | "P": "𝑃",
29 | "Q": "𝑄",
30 | "R": "𝑅",
31 | "S": "𝑆",
32 | "T": "𝑇",
33 | "U": "𝑈",
34 | "V": "𝑉",
35 | "W": "𝑊",
36 | "X": "𝑋",
37 | "Y": "𝑌",
38 | "Z": "𝑍",
39 | "\\#": "#",
40 | "\\$": "$",
41 | "\\%": "%",
42 | "\\&": "&",
43 | "\\,": "\u2009",
44 | "\\:": "\u205f",
45 | "\\AC": "∿",
46 | "\\APLboxquestion": "⍰",
47 | "\\APLboxupcaret": "⍓",
48 | "\\APLcomment": "⍝",
49 | "\\APLdownarrowbox": "⍗",
50 | "\\APLinput": "⍞",
51 | "\\APLinv": "⌹",
52 | "\\APLleftarrowbox": "⍇",
53 | "\\APLlog": "⍟",
54 | "\\APLrightarrowbox": "⍈",
55 | "\\APLuparrowbox": "⍐",
56 | "\\Angstroem": "Å",
57 | "\\Barv": "⫧",
58 | "\\Bot": "⫫",
59 | "\\Bumpeq": "≎",
60 | "\\CIRCLE": "●",
61 | "\\Cap": "⋒",
62 | "\\CapitalDifferentialD": "ⅅ",
63 | "\\CheckedBox": "☑",
64 | "\\Circle": "○",
65 | "\\Coloneqq": "⩴",
66 | "\\ComplexI": "ⅈ",
67 | "\\ComplexJ": "ⅉ",
68 | "\\Cup": "⋓",
69 | "\\DDownarrow": "⟱",
70 | "\\DashV": "⫥",
71 | "\\DashVDash": "⟚",
72 | "\\Dashv": "⫤",
73 | "\\Ddownarrow": "⤋",
74 | "\\Delta": "𝛥",
75 | "\\Diamond": "◇",
76 | "\\Diamondblack": "◆",
77 | "\\Diamonddot": "⟐",
78 | "\\DifferentialD": "ⅆ",
79 | "\\Digamma": "Ϝ",
80 | "\\Doteq": "≑",
81 | "\\DownArrowBar": "⤓",
82 | "\\DownLeftTeeVector": "⥞",
83 | "\\DownLeftVectorBar": "⥖",
84 | "\\DownRightTeeVector": "⥟",
85 | "\\DownRightVectorBar": "⥗",
86 | "\\Downarrow": "⇓",
87 | "\\Equal": "⩵",
88 | "\\Equiv": "≣",
89 | "\\Euler": "ℇ",
90 | "\\Exclam": "‼",
91 | "\\ExponetialE": "ⅇ",
92 | "\\Finv": "Ⅎ",
93 | "\\Game": "⅁",
94 | "\\Gamma": "𝛤",
95 | "\\Hermaphrodite": "⚥",
96 | "\\Im": "ℑ",
97 | "\\Join": "⨝",
98 | "\\Koppa": "Ϟ",
99 | "\\LEFTCIRCLE": "◖",
100 | "\\LEFTcircle": "◐",
101 | "\\LHD": "◀",
102 | "\\LLeftarrow": "⭅",
103 | "\\LVec": "⃖",
104 | "\\Lambda": "𝛬",
105 | "\\Lbag": "⟅",
106 | "\\Lbrbrak": "〘",
107 | "\\LeftArrowBar": "⇤",
108 | "\\LeftDownTeeVector": "⥡",
109 | "\\LeftDownVectorBar": "⥙",
110 | "\\LeftTeeVector": "⥚",
111 | "\\LeftTriangleBar": "⧏",
112 | "\\LeftUpTeeVector": "⥠",
113 | "\\LeftUpVectorBar": "⥘",
114 | "\\LeftVectorBar": "⥒",
115 | "\\Leftarrow": "⇐",
116 | "\\Leftrightarrow": "⇔",
117 | "\\Lleftarrow": "⇚",
118 | "\\Longleftarrow": "⟸",
119 | "\\Longleftrightarrow": "⟺",
120 | "\\Longmapsfrom": "⟽",
121 | "\\Longmapsto": "⟾",
122 | "\\Longrightarrow": "⟹",
123 | "\\Lparen": "⦅",
124 | "\\Lparengtr": "⦕",
125 | "\\Lsh": "↰",
126 | "\\Lvzigzag": "⧚",
127 | "\\MapsDown": "↧",
128 | "\\MapsUp": "↥",
129 | "\\Mapsfrom": "⤆",
130 | "\\Mapsto": "⤇",
131 | "\\Micro": "µ",
132 | "\\Nearrow": "⇗",
133 | "\\NestedGreaterGreater": "⪢",
134 | "\\NestedLessLess": "⪡",
135 | "\\Not": "⫬",
136 | "\\NotGreaterLess": "≹",
137 | "\\NotGreaterTilde": "≵",
138 | "\\NotLessTilde": "≴",
139 | "\\Nwarrow": "⇖",
140 | "\\Omega": "𝛺",
141 | "\\Otimes": "⨷",
142 | "\\Phi": "𝛷",
143 | "\\Pi": "𝛱",
144 | "\\Planckconst": "ℎ",
145 | "\\PropertyLine": "⅊",
146 | "\\Proportion": "∷",
147 | "\\Psi": "𝛹",
148 | "\\QED": "∎",
149 | "\\Qoppa": "Ϙ",
150 | "\\Question": "⁇",
151 | "\\RHD": "▶",
152 | "\\RIGHTCIRCLE": "◗",
153 | "\\RIGHTcircle": "◑",
154 | "\\RRightarrow": "⭆",
155 | "\\Rbag": "⟆",
156 | "\\Rbrbrak": "〙",
157 | "\\Re": "ℜ",
158 | "\\RightArrowBar": "⇥",
159 | "\\RightDownTeeVector": "⥝",
160 | "\\RightDownVectorBar": "⥕",
161 | "\\RightTeeVector": "⥛",
162 | "\\RightTriangleBar": "⧐",
163 | "\\RightUpTeeVector": "⥜",
164 | "\\RightUpVectorBar": "⥔",
165 | "\\RightVectorBar": "⥓",
166 | "\\Rightarrow": "⇒",
167 | "\\Rparen": "⦆",
168 | "\\Rparenless": "⦖",
169 | "\\Rrightarrow": "⇛",
170 | "\\Rsh": "↱",
171 | "\\Rvzigzag": "⧛",
172 | "\\Same": "⩶",
173 | "\\Sampi": "Ϡ",
174 | "\\Searrow": "⇘",
175 | "\\Sigma": "𝛴",
176 | "\\Sqcap": "⩎",
177 | "\\Sqcup": "⩏",
178 | "\\Square": "☐",
179 | "\\Stigma": "Ϛ",
180 | "\\Subset": "⋐",
181 | "\\Sun": "☉",
182 | "\\Supset": "⋑",
183 | "\\Swarrow": "⇙",
184 | "\\Theta": "𝛩",
185 | "\\Top": "⫪",
186 | "\\UUparrow": "⟰",
187 | "\\UpArrowBar": "⤒",
188 | "\\Uparrow": "⇑",
189 | "\\Updownarrow": "⇕",
190 | "\\Upsilon": "𝛶",
191 | "\\Uuparrow": "⤊",
192 | "\\VDash": "⊫",
193 | "\\VERT": "⦀",
194 | "\\Vdash": "⊩",
195 | "\\Vee": "⩔",
196 | "\\Vvdash": "⊪",
197 | "\\Wedge": "⩓",
198 | "\\XBox": "☒",
199 | "\\Xi": "𝛯",
200 | "\\Yup": "⅄",
201 | "\\Zbar": "Ƶ",
202 | "\\_": "_",
203 | "\\accurrent": "⏦",
204 | "\\acidfree": "♾",
205 | "\\acute": "́",
206 | "\\acwcirclearrow": "⥀",
207 | "\\acwgapcirclearrow": "⟲",
208 | "\\acwleftarcarrow": "⤹",
209 | "\\acwoverarcarrow": "⤺",
210 | "\\acwunderarcarrow": "⤻",
211 | "\\aleph": "ℵ",
212 | "\\alpha": "𝛼",
213 | "\\amalg": "⨿",
214 | "\\anchor": "⚓",
215 | "\\angdnr": "⦟",
216 | "\\angle": "∠",
217 | "\\angles": "⦞",
218 | "\\angleubar": "⦤",
219 | "\\annuity": "⃧",
220 | "\\approx": "≈",
221 | "\\approxeq": "≊",
222 | "\\approxeqq": "⩰",
223 | "\\approxident": "≋",
224 | "\\aquarius": "♒",
225 | "\\arceq": "≘",
226 | "\\aries": "♈",
227 | "\\arrowbullet": "➢",
228 | "\\assert": "⊦",
229 | "\\ast": "∗",
230 | "\\asteq": "⩮",
231 | "\\asteraccent": "⃰",
232 | "\\asymp": "≍",
233 | "\\awint": "⨑",
234 | "\\bNot": "⫭",
235 | "\\backcong": "≌",
236 | "\\backdprime": "‶",
237 | "\\backepsilon": "϶",
238 | "\\backprime": "‵",
239 | "\\backsim": "∽",
240 | "\\backsimeq": "⋍",
241 | "\\backslash": "\\",
242 | "\\backtrprime": "‷",
243 | "\\bagmember": "⋿",
244 | "\\ballotx": "✗",
245 | "\\bar": "̄",
246 | "\\barcap": "⩃",
247 | "\\barcup": "⩂",
248 | "\\barin": "⋶",
249 | "\\barleftarrowrightarrowba": "↹",
250 | "\\barleftharpoon": "⥫",
251 | "\\barovernorthwestarrow": "↸",
252 | "\\barrightarrowdiamond": "⤠",
253 | "\\barrightharpoon": "⥭",
254 | "\\barvee": "⊽",
255 | "\\barwedge": "⊼",
256 | "\\bbrktbrk": "⎶",
257 | "\\bdtriplevdash": "┆",
258 | "\\because": "∵",
259 | "\\benzenr": "⏣",
260 | "\\beta": "𝛽",
261 | "\\beth": "ℶ",
262 | "\\between": "≬",
263 | "\\bigblacktriangledown": "▼",
264 | "\\bigblacktriangleup": "▲",
265 | "\\bigbot": "⟘",
266 | "\\bigcap": "⋂",
267 | "\\bigcup": "⋃",
268 | "\\bigcupdot": "⨃",
269 | "\\biginterleave": "⫼",
270 | "\\bigodot": "⨀",
271 | "\\bigoplus": "⨁",
272 | "\\bigotimes": "⨂",
273 | "\\bigslopedvee": "⩗",
274 | "\\bigslopedwedge": "⩘",
275 | "\\bigsqcap": "⨅",
276 | "\\bigsqcup": "⨆",
277 | "\\bigstar": "★",
278 | "\\bigtalloblong": "⫿",
279 | "\\bigtop": "⟙",
280 | "\\bigtriangledown": "▽",
281 | "\\bigtriangleleft": "⨞",
282 | "\\bigtriangleup": "△",
283 | "\\biguplus": "⨄",
284 | "\\bigvee": "⋁",
285 | "\\bigwedge": "⋀",
286 | "\\bigwhitestar": "☆",
287 | "\\bij": "⤖",
288 | "\\biohazard": "☣",
289 | "\\blackcircledownarrow": "⧭",
290 | "\\blackcircledrightdot": "⚈",
291 | "\\blackcircledtwodots": "⚉",
292 | "\\blackcircleulquadwhite": "◕",
293 | "\\blackdiamonddownarrow": "⧪",
294 | "\\blackhourglass": "⧗",
295 | "\\blackinwhitediamond": "◈",
296 | "\\blackinwhitesquare": "▣",
297 | "\\blacklozenge": "⧫",
298 | "\\blackpointerleft": "◄",
299 | "\\blackpointerright": "►",
300 | "\\blacksmiley": "☻",
301 | "\\blacksquare": "⬛",
302 | "\\blacktriangledown": "▾",
303 | "\\blacktriangleleft": "◂",
304 | "\\blacktriangleright": "▸",
305 | "\\blacktriangleup": "▴",
306 | "\\blkhorzoval": "⬬",
307 | "\\blkvertoval": "⬮",
308 | "\\blockfull": "█",
309 | "\\blockhalfshaded": "▒",
310 | "\\blocklefthalf": "▌",
311 | "\\blocklowhalf": "▄",
312 | "\\blockqtrshaded": "░",
313 | "\\blockrighthalf": "▐",
314 | "\\blockthreeqtrshaded": "▓",
315 | "\\blockuphalf": "▀",
316 | "\\bot": "⊥",
317 | "\\botsemicircle": "◡",
318 | "\\bowtie": "⋈",
319 | "\\boxast": "⧆",
320 | "\\boxbar": "◫",
321 | "\\boxbox": "⧈",
322 | "\\boxbslash": "⧅",
323 | "\\boxcircle": "⧇",
324 | "\\boxdot": "⊡",
325 | "\\boxminus": "⊟",
326 | "\\boxonbox": "⧉",
327 | "\\boxplus": "⊞",
328 | "\\boxslash": "⧄",
329 | "\\boxtimes": "⊠",
330 | "\\breve": "̆",
331 | "\\bsimilarleftarrow": "⭁",
332 | "\\bsimilarrightarrow": "⭇",
333 | "\\bsolhsub": "⟈",
334 | "\\btimes": "⨲",
335 | "\\bullet": "∙",
336 | "\\bullseye": "◎",
337 | "\\bumpeq": "≏",
338 | "\\bumpeqq": "⪮",
339 | "\\cancer": "♋",
340 | "\\candra": "̐",
341 | "\\cap": "∩",
342 | "\\capbarcup": "⩉",
343 | "\\capdot": "⩀",
344 | "\\capovercup": "⩇",
345 | "\\capricornus": "♑",
346 | "\\capwedge": "⩄",
347 | "\\caretinsert": "‸",
348 | "\\carriagereturn": "↵",
349 | "\\cat": "⁀",
350 | "\\ccwundercurvearrow": "⤿",
351 | "\\cdot": "⋅",
352 | "\\cdotp": "·",
353 | "\\cdots": "⋯",
354 | "\\cent": "¢",
355 | "\\check": "̌",
356 | "\\checkmark": "✓",
357 | "\\chi": "𝜒",
358 | "\\cirE": "⧃",
359 | "\\cirbot": "⟟",
360 | "\\circ": "∘",
361 | "\\circeq": "≗",
362 | "\\circlearrowleft": "↺",
363 | "\\circlearrowright": "↻",
364 | "\\circlebottomhalfblack": "◒",
365 | "\\circledR": "®",
366 | "\\circledast": "⊛",
367 | "\\circledbslash": "⦸",
368 | "\\circledbullet": "⦿",
369 | "\\circledcirc": "⊚",
370 | "\\circleddash": "⊝",
371 | "\\circledequal": "⊜",
372 | "\\circledgtr": "⧁",
373 | "\\circledless": "⧀",
374 | "\\circledownarrow": "⧬",
375 | "\\circledparallel": "⦷",
376 | "\\circledrightdot": "⚆",
377 | "\\circledstar": "✪",
378 | "\\circledtwodots": "⚇",
379 | "\\circledvert": "⦶",
380 | "\\circledwhitebullet": "⦾",
381 | "\\circlehbar": "⦵",
382 | "\\circlellquad": "◵",
383 | "\\circlelrquad": "◶",
384 | "\\circleonleftarrow": "⬰",
385 | "\\circleonrightarrow": "⇴",
386 | "\\circletophalfblack": "◓",
387 | "\\circleulquad": "◴",
388 | "\\circleurquad": "◷",
389 | "\\circleurquadblack": "◔",
390 | "\\circlevertfill": "◍",
391 | "\\cirfnint": "⨐",
392 | "\\cirmid": "⫯",
393 | "\\cirscir": "⧂",
394 | "\\closedvarcap": "⩍",
395 | "\\closedvarcup": "⩌",
396 | "\\closedvarcupsmashprod": "⩐",
397 | "\\closure": "⁐",
398 | "\\clubsuit": "♣",
399 | "\\coloneq": "≔",
400 | "\\commaminus": "⨩",
401 | "\\complement": "∁",
402 | "\\concavediamond": "⟡",
403 | "\\concavediamondtickleft": "⟢",
404 | "\\concavediamondtickright": "⟣",
405 | "\\cong": "≅",
406 | "\\congdot": "⩭",
407 | "\\conictaper": "⌲",
408 | "\\conjquant": "⨇",
409 | "\\coprod": "∐",
410 | "\\corresponds": "≙",
411 | "\\csub": "⫏",
412 | "\\csube": "⫑",
413 | "\\csup": "⫐",
414 | "\\csupe": "⫒",
415 | "\\cup": "∪",
416 | "\\cupbarcap": "⩈",
417 | "\\cupdot": "⊍",
418 | "\\cupleftarrow": "⊌",
419 | "\\cupovercap": "⩆",
420 | "\\cupvee": "⩅",
421 | "\\curlyeqprec": "⋞",
422 | "\\curlyeqsucc": "⋟",
423 | "\\curlyvee": "⋎",
424 | "\\curlywedge": "⋏",
425 | "\\curvearrowleft": "↶",
426 | "\\curvearrowleftplus": "⤽",
427 | "\\curvearrowright": "↷",
428 | "\\curvearrowrightminus": "⤼",
429 | "\\cwcirclearrow": "⥁",
430 | "\\cwgapcirclearrow": "⟳",
431 | "\\cwrightarcarrow": "⤸",
432 | "\\cwundercurvearrow": "⤾",
433 | "\\dagger": "†",
434 | "\\daleth": "ℸ",
435 | "\\danger": "☡",
436 | "\\dashV": "⫣",
437 | "\\dashVdash": "⟛",
438 | "\\dashleftarrow": "⇠",
439 | "\\dashrightarrow": "⇢",
440 | "\\dashv": "⊣",
441 | "\\dbkarow": "⤏",
442 | "\\ddagger": "‡",
443 | "\\ddddot": "⃜",
444 | "\\dddot": "⃛",
445 | "\\ddot": "̈",
446 | "\\ddots": "⋱",
447 | "\\ddotseq": "⩷",
448 | "\\delta": "𝛿",
449 | "\\diameter": "⌀",
450 | "\\diamond": "⋄",
451 | "\\diamondbotblack": "⬙",
452 | "\\diamondleftarrow": "⤝",
453 | "\\diamondleftarrowbar": "⤟",
454 | "\\diamondleftblack": "⬖",
455 | "\\diamondrightblack": "⬗",
456 | "\\diamondsuit": "♢",
457 | "\\diamondtopblack": "⬘",
458 | "\\dicei": "⚀",
459 | "\\diceii": "⚁",
460 | "\\diceiii": "⚂",
461 | "\\diceiv": "⚃",
462 | "\\dicev": "⚄",
463 | "\\dicevi": "⚅",
464 | "\\digamma": "ϝ",
465 | "\\dingasterisk": "✽",
466 | "\\disin": "⋲",
467 | "\\disjquant": "⨈",
468 | "\\div": "÷",
469 | "\\divideontimes": "⋇",
470 | "\\dlsh": "↲",
471 | "\\dot": "̇",
472 | "\\doteq": "≐",
473 | "\\dotequiv": "⩧",
474 | "\\dotminus": "∸",
475 | "\\dotplus": "∔",
476 | "\\dotsim": "⩪",
477 | "\\dotsminusdots": "∺",
478 | "\\dottedcircle": "◌",
479 | "\\dottedsquare": "⬚",
480 | "\\dottimes": "⨰",
481 | "\\doublebarvee": "⩢",
482 | "\\doublebarwedge": "⩞",
483 | "\\doubleplus": "⧺",
484 | "\\downarrow": "↓",
485 | "\\downarrowbarred": "⤈",
486 | "\\downdasharrow": "⇣",
487 | "\\downdownarrows": "⇊",
488 | "\\downdownharpoons": "⥥",
489 | "\\downfishtail": "⥿",
490 | "\\downharpoonleft": "⇃",
491 | "\\downharpoonright": "⇂",
492 | "\\downrightcurvedarrow": "⤵",
493 | "\\downtriangleleftblack": "⧨",
494 | "\\downtrianglerightblack": "⧩",
495 | "\\downuparrows": "⇵",
496 | "\\downupharpoons": "⥯",
497 | "\\downwhitearrow": "⇩",
498 | "\\draftingarrow": "➛",
499 | "\\drbkarow": "⤐",
500 | "\\droang": "̚",
501 | "\\drsh": "↳",
502 | "\\dsol": "⧶",
503 | "\\dsub": "⩤",
504 | "\\earth": "♁",
505 | "\\egsdot": "⪘",
506 | "\\eighthnote": "♪",
507 | "\\elinters": "⏧",
508 | "\\ell": "ℓ",
509 | "\\elsdot": "⪗",
510 | "\\emptysetoarr": "⦳",
511 | "\\emptysetoarrl": "⦴",
512 | "\\emptysetobar": "⦱",
513 | "\\emptysetocirc": "⦲",
514 | "\\enclosecircle": "⃝",
515 | "\\enclosediamond": "⃟",
516 | "\\enclosesquare": "⃞",
517 | "\\enclosetriangle": "⃤",
518 | "\\enleadertwodots": "‥",
519 | "\\eparsl": "⧣",
520 | "\\epsilon": "𝜖",
521 | "\\eqcirc": "≖",
522 | "\\eqcolon": "≕",
523 | "\\eqdef": "≝",
524 | "\\eqdot": "⩦",
525 | "\\eqgtr": "⋝",
526 | "\\eqless": "⋜",
527 | "\\eqqgtr": "⪚",
528 | "\\eqqless": "⪙",
529 | "\\eqqplus": "⩱",
530 | "\\eqqsim": "⩳",
531 | "\\eqqslantgtr": "⪜",
532 | "\\eqqslantless": "⪛",
533 | "\\eqsim": "≂",
534 | "\\eqslantgtr": "⪖",
535 | "\\eqslantless": "⪕",
536 | "\\equalleftarrow": "⭀",
537 | "\\equalrightarrow": "⥱",
538 | "\\equiv": "≡",
539 | "\\equivDD": "⩸",
540 | "\\equivVert": "⩨",
541 | "\\equivVvert": "⩩",
542 | "\\eqvparsl": "⧥",
543 | "\\errbarblackcircle": "⧳",
544 | "\\errbarblackdiamond": "⧱",
545 | "\\errbarblacksquare": "⧯",
546 | "\\errbarcircle": "⧲",
547 | "\\errbardiamond": "⧰",
548 | "\\errbarsquare": "⧮",
549 | "\\eta": "𝜂",
550 | "\\eth": "ð",
551 | "\\euro": "€",
552 | "\\exists": "∃",
553 | "\\fallingdotseq": "≒",
554 | "\\fbowtie": "⧓",
555 | "\\fcmp": "⨾",
556 | "\\fdiagovnearrow": "⤯",
557 | "\\fdiagovrdiag": "⤬",
558 | "\\female": "♀",
559 | "\\ffun": "⇻",
560 | "\\finj": "⤕",
561 | "\\fint": "⨏",
562 | "\\fisheye": "◉",
563 | "\\flat": "♭",
564 | "\\fltns": "⏥",
565 | "\\forall": "∀",
566 | "\\forks": "⫝̸",
567 | "\\forksnot": "⫝",
568 | "\\forkv": "⫙",
569 | "\\fourth": "⁗",
570 | "\\fourvdots": "⦙",
571 | "\\fracslash": "⁄",
572 | "\\frown": "⌢",
573 | "\\frownie": "☹",
574 | "\\fullouterjoin": "⟗",
575 | "\\gamma": "𝛾",
576 | "\\gemini": "♊",
577 | "\\geq": "≥",
578 | "\\geqq": "≧",
579 | "\\geqqslant": "⫺",
580 | "\\geqslant": "⩾",
581 | "\\gescc": "⪩",
582 | "\\gesdot": "⪀",
583 | "\\gesdoto": "⪂",
584 | "\\gesdotol": "⪄",
585 | "\\gesles": "⪔",
586 | "\\gg": "≫",
587 | "\\ggcurly": "⪼",
588 | "\\ggg": "⋙",
589 | "\\gggnest": "⫸",
590 | "\\gimel": "ℷ",
591 | "\\glE": "⪒",
592 | "\\gla": "⪥",
593 | "\\gleichstark": "⧦",
594 | "\\glj": "⪤",
595 | "\\gnapprox": "⪊",
596 | "\\gneq": "⪈",
597 | "\\gneqq": "≩",
598 | "\\gnsim": "⋧",
599 | "\\grave": "̀",
600 | "\\gsime": "⪎",
601 | "\\gsiml": "⪐",
602 | "\\gtcir": "⩺",
603 | "\\gtlpar": "⦠",
604 | "\\gtquest": "⩼",
605 | "\\gtrapprox": "⪆",
606 | "\\gtrarr": "⥸",
607 | "\\gtrdot": "⋗",
608 | "\\gtreqless": "⋛",
609 | "\\gtreqqless": "⪌",
610 | "\\gtrless": "≷",
611 | "\\gtrsim": "≳",
612 | "\\harrowextender": "⎯",
613 | "\\hash": "⋕",
614 | "\\hat": "̂",
615 | "\\hatapprox": "⩯",
616 | "\\hbar": "ℏ",
617 | "\\heartsuit": "♡",
618 | "\\hermitmatrix": "⊹",
619 | "\\hexagon": "⎔",
620 | "\\hexagonblack": "⬣",
621 | "\\hknearrow": "⤤",
622 | "\\hknwarrow": "⤣",
623 | "\\hksearow": "⤥",
624 | "\\hkswarow": "⤦",
625 | "\\hookleftarrow": "↩",
626 | "\\hookrightarrow": "↪",
627 | "\\horizbar": "―",
628 | "\\hourglass": "⧖",
629 | "\\house": "⌂",
630 | "\\hrectangle": "▭",
631 | "\\hrectangleblack": "▬",
632 | "\\hslash": "ℏ",
633 | "\\hyphenbullet": "⁃",
634 | "\\hzigzag": "〰",
635 | "\\iddots": "⋰",
636 | "\\iiiint": "⨌",
637 | "\\iiint": "∭",
638 | "\\iinfin": "⧜",
639 | "\\iint": "∬",
640 | "\\imath": "𝚤",
641 | "\\in": "∈",
642 | "\\increment": "∆",
643 | "\\infty": "∞",
644 | "\\int": "∫",
645 | "\\intBar": "⨎",
646 | "\\intbar": "⨍",
647 | "\\intbottom": "⌡",
648 | "\\intcap": "⨙",
649 | "\\intclockwise": "∱",
650 | "\\intcup": "⨚",
651 | "\\intercal": "⊺",
652 | "\\interleave": "⫴",
653 | "\\intextender": "⎮",
654 | "\\intlarhk": "⨗",
655 | "\\intprod": "⨼",
656 | "\\intprodr": "⨽",
657 | "\\inttop": "⌠",
658 | "\\intx": "⨘",
659 | "\\invamp": "⅋",
660 | "\\invdiameter": "⍉",
661 | "\\inversebullet": "◘",
662 | "\\inversewhitecircle": "◙",
663 | "\\invlazys": "∾",
664 | "\\invneg": "⌐",
665 | "\\invwhitelowerhalfcircle": "◛",
666 | "\\invwhiteupperhalfcircle": "◚",
667 | "\\iota": "𝜄",
668 | "\\isinE": "⋹",
669 | "\\isindot": "⋵",
670 | "\\isinobar": "⋷",
671 | "\\isins": "⋴",
672 | "\\isinvb": "⋸",
673 | "\\jmath": "𝚥",
674 | "\\jupiter": "♃",
675 | "\\kappa": "𝜅",
676 | "\\kernelcontraction": "∻",
677 | "\\koppa": "ϟ",
678 | "\\lBrace": "⦃",
679 | "\\lambda": "𝜆",
680 | "\\lang": "⟪",
681 | "\\langle": "⟨",
682 | "\\langledot": "⦑",
683 | "\\laplac": "⧠",
684 | "\\lat": "⪫",
685 | "\\late": "⪭",
686 | "\\lblkbrbrak": "⦗",
687 | "\\lblot": "⦉",
688 | "\\lbracelend": "⎩",
689 | "\\lbracemid": "⎨",
690 | "\\lbraceuend": "⎧",
691 | "\\lbrack": "[",
692 | "\\lbrackextender": "⎢",
693 | "\\lbracklend": "⎣",
694 | "\\lbracklltick": "⦏",
695 | "\\lbrackubar": "⦋",
696 | "\\lbrackuend": "⎡",
697 | "\\lbrackultick": "⦍",
698 | "\\lbrbrak": "〔",
699 | "\\lceil": "⌈",
700 | "\\lcurvyangle": "⧼",
701 | "\\ldots": "…",
702 | "\\leadsto": "⤳",
703 | "\\leftarrow": "←",
704 | "\\leftarrowapprox": "⭊",
705 | "\\leftarrowbackapprox": "⭂",
706 | "\\leftarrowbsimilar": "⭋",
707 | "\\leftarrowless": "⥷",
708 | "\\leftarrowonoplus": "⬲",
709 | "\\leftarrowplus": "⥆",
710 | "\\leftarrowshortrightarrow": "⥃",
711 | "\\leftarrowsimilar": "⥳",
712 | "\\leftarrowsubset": "⥺",
713 | "\\leftarrowtail": "↢",
714 | "\\leftarrowtriangle": "⇽",
715 | "\\leftarrowx": "⬾",
716 | "\\leftbarharpoon": "⥪",
717 | "\\leftbkarrow": "⤌",
718 | "\\leftcurvedarrow": "⬿",
719 | "\\leftdbkarrow": "⤎",
720 | "\\leftdbltail": "⤛",
721 | "\\leftdotarrow": "⬸",
722 | "\\leftdowncurvedarrow": "⤶",
723 | "\\leftharpoondown": "↽",
724 | "\\leftharpoonup": "↼",
725 | "\\leftleftarrows": "⇇",
726 | "\\leftleftharpoons": "⥢",
727 | "\\leftmoon": "☾",
728 | "\\leftouterjoin": "⟕",
729 | "\\leftrightarrow": "↔",
730 | "\\leftrightarrowcircle": "⥈",
731 | "\\leftrightarrows": "⇆",
732 | "\\leftrightarrowtriangle": "⇿",
733 | "\\leftrightharpoon": "⥊",
734 | "\\leftrightharpoondown": "⥐",
735 | "\\leftrightharpoons": "⇋",
736 | "\\leftrightharpoonsdown": "⥧",
737 | "\\leftrightharpoonsup": "⥦",
738 | "\\leftrightharpoonup": "⥎",
739 | "\\leftrightsquigarrow": "↭",
740 | "\\leftslice": "⪦",
741 | "\\leftsquigarrow": "⇜",
742 | "\\lefttail": "⤙",
743 | "\\leftthreearrows": "⬱",
744 | "\\leftthreetimes": "⋋",
745 | "\\leftupdownharpoon": "⥑",
746 | "\\leftwavearrow": "↜",
747 | "\\leftwhitearrow": "⇦",
748 | "\\leo": "♌",
749 | "\\leq": "≤",
750 | "\\leqq": "≦",
751 | "\\leqqslant": "⫹",
752 | "\\leqslant": "⩽",
753 | "\\lescc": "⪨",
754 | "\\lesdot": "⩿",
755 | "\\lesdoto": "⪁",
756 | "\\lesdotor": "⪃",
757 | "\\lesges": "⪓",
758 | "\\lessapprox": "⪅",
759 | "\\lessdot": "⋖",
760 | "\\lesseqgtr": "⋚",
761 | "\\lesseqqgtr": "⪋",
762 | "\\lessgtr": "≶",
763 | "\\lesssim": "≲",
764 | "\\lfbowtie": "⧑",
765 | "\\lfloor": "⌊",
766 | "\\lftimes": "⧔",
767 | "\\lgE": "⪑",
768 | "\\lgblkcircle": "⬤",
769 | "\\lgroup": "⟮",
770 | "\\lgwhtcircle": "◯",
771 | "\\lhd": "◁",
772 | "\\libra": "♎",
773 | "\\lightning": "↯",
774 | "\\limg": "⦇",
775 | "\\linefeed": "↴",
776 | "\\ll": "≪",
777 | "\\llarc": "◟",
778 | "\\llblacktriangle": "◣",
779 | "\\llbracket": "⟦",
780 | "\\llcorner": "⌞",
781 | "\\llcurly": "⪻",
782 | "\\lll": "⋘",
783 | "\\lllnest": "⫷",
784 | "\\lltriangle": "◺",
785 | "\\lmoustache": "⎰",
786 | "\\lnapprox": "⪉",
787 | "\\lneq": "⪇",
788 | "\\lneqq": "≨",
789 | "\\lnsim": "⋦",
790 | "\\longdashv": "⟞",
791 | "\\longdivision": "⟌",
792 | "\\longleftarrow": "⟵",
793 | "\\longleftrightarrow": "⟷",
794 | "\\longleftsquigarrow": "⬳",
795 | "\\longmapsfrom": "⟻",
796 | "\\longmapsto": "⟼",
797 | "\\longrightarrow": "⟶",
798 | "\\longrightsquigarrow": "⟿",
799 | "\\looparrowleft": "↫",
800 | "\\looparrowright": "↬",
801 | "\\lowint": "⨜",
802 | "\\lozenge": "◊",
803 | "\\lozengeminus": "⟠",
804 | "\\lparenextender": "⎜",
805 | "\\lparenlend": "⎝",
806 | "\\lparenless": "⦓",
807 | "\\lparenuend": "⎛",
808 | "\\lrarc": "◞",
809 | "\\lrblacktriangle": "◢",
810 | "\\lrcorner": "⌟",
811 | "\\lrtriangle": "◿",
812 | "\\lrtriangleeq": "⧡",
813 | "\\lsime": "⪍",
814 | "\\lsimg": "⪏",
815 | "\\lsqhook": "⫍",
816 | "\\ltcir": "⩹",
817 | "\\ltimes": "⋉",
818 | "\\ltlarr": "⥶",
819 | "\\ltquest": "⩻",
820 | "\\lvboxline": "⎸",
821 | "\\lvec": "⃐",
822 | "\\lvzigzag": "⧘",
823 | "\\male": "♂",
824 | "\\maltese": "✠",
825 | "\\mapsfrom": "↤",
826 | "\\mapsto": "↦",
827 | "\\mathbb{0}": "𝟘",
828 | "\\mathbb{1}": "𝟙",
829 | "\\mathbb{2}": "𝟚",
830 | "\\mathbb{3}": "𝟛",
831 | "\\mathbb{4}": "𝟜",
832 | "\\mathbb{5}": "𝟝",
833 | "\\mathbb{6}": "𝟞",
834 | "\\mathbb{7}": "𝟟",
835 | "\\mathbb{8}": "𝟠",
836 | "\\mathbb{9}": "𝟡",
837 | "\\mathbb{A}": "𝔸",
838 | "\\mathbb{B}": "𝔹",
839 | "\\mathbb{C}": "ℂ",
840 | "\\mathbb{D}": "𝔻",
841 | "\\mathbb{E}": "𝔼",
842 | "\\mathbb{F}": "𝔽",
843 | "\\mathbb{G}": "𝔾",
844 | "\\mathbb{H}": "ℍ",
845 | "\\mathbb{I}": "𝕀",
846 | "\\mathbb{J}": "𝕁",
847 | "\\mathbb{K}": "𝕂",
848 | "\\mathbb{L}": "𝕃",
849 | "\\mathbb{M}": "𝕄",
850 | "\\mathbb{N}": "ℕ",
851 | "\\mathbb{O}": "𝕆",
852 | "\\mathbb{P}": "ℙ",
853 | "\\mathbb{Q}": "ℚ",
854 | "\\mathbb{R}": "ℝ",
855 | "\\mathbb{S}": "𝕊",
856 | "\\mathbb{T}": "𝕋",
857 | "\\mathbb{U}": "𝕌",
858 | "\\mathbb{V}": "𝕍",
859 | "\\mathbb{W}": "𝕎",
860 | "\\mathbb{X}": "𝕏",
861 | "\\mathbb{Y}": "𝕐",
862 | "\\mathbb{Z}": "ℤ",
863 | "\\mathbb{\\Gamma}": "ℾ",
864 | "\\mathbb{\\Pi}": "ℿ",
865 | "\\mathbb{\\Sigma}": "⅀",
866 | "\\mathbb{\\gamma}": "ℽ",
867 | "\\mathbb{\\pi}": "ℼ",
868 | "\\mathbb{a}": "𝕒",
869 | "\\mathbb{b}": "𝕓",
870 | "\\mathbb{c}": "𝕔",
871 | "\\mathbb{d}": "𝕕",
872 | "\\mathbb{e}": "𝕖",
873 | "\\mathbb{f}": "𝕗",
874 | "\\mathbb{g}": "𝕘",
875 | "\\mathbb{h}": "𝕙",
876 | "\\mathbb{i}": "𝕚",
877 | "\\mathbb{j}": "𝕛",
878 | "\\mathbb{k}": "𝕜",
879 | "\\mathbb{l}": "𝕝",
880 | "\\mathbb{m}": "𝕞",
881 | "\\mathbb{n}": "𝕟",
882 | "\\mathbb{o}": "𝕠",
883 | "\\mathbb{p}": "𝕡",
884 | "\\mathbb{q}": "𝕢",
885 | "\\mathbb{r}": "𝕣",
886 | "\\mathbb{s}": "𝕤",
887 | "\\mathbb{t}": "𝕥",
888 | "\\mathbb{u}": "𝕦",
889 | "\\mathbb{v}": "𝕧",
890 | "\\mathbb{w}": "𝕨",
891 | "\\mathbb{x}": "𝕩",
892 | "\\mathbb{y}": "𝕪",
893 | "\\mathbb{z}": "𝕫",
894 | "\\mathbfit{A}": "𝑨",
895 | "\\mathbfit{B}": "𝑩",
896 | "\\mathbfit{C}": "𝑪",
897 | "\\mathbfit{D}": "𝑫",
898 | "\\mathbfit{E}": "𝑬",
899 | "\\mathbfit{F}": "𝑭",
900 | "\\mathbfit{G}": "𝑮",
901 | "\\mathbfit{H}": "𝑯",
902 | "\\mathbfit{I}": "𝑰",
903 | "\\mathbfit{J}": "𝑱",
904 | "\\mathbfit{K}": "𝑲",
905 | "\\mathbfit{L}": "𝑳",
906 | "\\mathbfit{M}": "𝑴",
907 | "\\mathbfit{N}": "𝑵",
908 | "\\mathbfit{O}": "𝑶",
909 | "\\mathbfit{P}": "𝑷",
910 | "\\mathbfit{Q}": "𝑸",
911 | "\\mathbfit{R}": "𝑹",
912 | "\\mathbfit{S}": "𝑺",
913 | "\\mathbfit{T}": "𝑻",
914 | "\\mathbfit{U}": "𝑼",
915 | "\\mathbfit{V}": "𝑽",
916 | "\\mathbfit{W}": "𝑾",
917 | "\\mathbfit{X}": "𝑿",
918 | "\\mathbfit{Y}": "𝒀",
919 | "\\mathbfit{Z}": "𝒁",
920 | "\\mathbfit{\\Delta}": "𝜟",
921 | "\\mathbfit{\\Gamma}": "𝜞",
922 | "\\mathbfit{\\Lambda}": "𝜦",
923 | "\\mathbfit{\\Omega}": "𝜴",
924 | "\\mathbfit{\\Phi}": "𝜱",
925 | "\\mathbfit{\\Pi}": "𝜫",
926 | "\\mathbfit{\\Psi}": "𝜳",
927 | "\\mathbfit{\\Sigma}": "𝜮",
928 | "\\mathbfit{\\Theta}": "𝜣",
929 | "\\mathbfit{\\Upsilon}": "𝜰",
930 | "\\mathbfit{\\Xi}": "𝜩",
931 | "\\mathbfit{\\alpha}": "𝜶",
932 | "\\mathbfit{\\beta}": "𝜷",
933 | "\\mathbfit{\\chi}": "𝝌",
934 | "\\mathbfit{\\delta}": "𝜹",
935 | "\\mathbfit{\\epsilon}": "𝝐",
936 | "\\mathbfit{\\eta}": "𝜼",
937 | "\\mathbfit{\\gamma}": "𝜸",
938 | "\\mathbfit{\\iota}": "𝜾",
939 | "\\mathbfit{\\kappa}": "𝜿",
940 | "\\mathbfit{\\lambda}": "𝝀",
941 | "\\mathbfit{\\mu}": "𝝁",
942 | "\\mathbfit{\\nu}": "𝝂",
943 | "\\mathbfit{\\omega}": "𝝎",
944 | "\\mathbfit{\\phi}": "𝝓",
945 | "\\mathbfit{\\pi}": "𝝅",
946 | "\\mathbfit{\\psi}": "𝝍",
947 | "\\mathbfit{\\rho}": "𝝆",
948 | "\\mathbfit{\\sigma}": "𝝈",
949 | "\\mathbfit{\\tau}": "𝝉",
950 | "\\mathbfit{\\theta}": "𝜽",
951 | "\\mathbfit{\\upsilon}": "𝝊",
952 | "\\mathbfit{\\varepsilon}": "𝜺",
953 | "\\mathbfit{\\varphi}": "𝝋",
954 | "\\mathbfit{\\varpi}": "𝝕",
955 | "\\mathbfit{\\varrho}": "𝝔",
956 | "\\mathbfit{\\varsigma}": "𝝇",
957 | "\\mathbfit{\\vartheta}": "𝝑",
958 | "\\mathbfit{\\xi}": "𝝃",
959 | "\\mathbfit{\\zeta}": "𝜻",
960 | "\\mathbfit{a}": "𝒂",
961 | "\\mathbfit{b}": "𝒃",
962 | "\\mathbfit{c}": "𝒄",
963 | "\\mathbfit{d}": "𝒅",
964 | "\\mathbfit{e}": "𝒆",
965 | "\\mathbfit{f}": "𝒇",
966 | "\\mathbfit{g}": "𝒈",
967 | "\\mathbfit{h}": "𝒉",
968 | "\\mathbfit{i}": "𝒊",
969 | "\\mathbfit{j}": "𝒋",
970 | "\\mathbfit{k}": "𝒌",
971 | "\\mathbfit{l}": "𝒍",
972 | "\\mathbfit{m}": "𝒎",
973 | "\\mathbfit{n}": "𝒏",
974 | "\\mathbfit{o}": "𝒐",
975 | "\\mathbfit{p}": "𝒑",
976 | "\\mathbfit{q}": "𝒒",
977 | "\\mathbfit{r}": "𝒓",
978 | "\\mathbfit{s}": "𝒔",
979 | "\\mathbfit{t}": "𝒕",
980 | "\\mathbfit{u}": "𝒖",
981 | "\\mathbfit{v}": "𝒗",
982 | "\\mathbfit{w}": "𝒘",
983 | "\\mathbfit{x}": "𝒙",
984 | "\\mathbfit{y}": "𝒚",
985 | "\\mathbfit{z}": "𝒛",
986 | "\\mathbf{0}": "𝟎",
987 | "\\mathbf{1}": "𝟏",
988 | "\\mathbf{2}": "𝟐",
989 | "\\mathbf{3}": "𝟑",
990 | "\\mathbf{4}": "𝟒",
991 | "\\mathbf{5}": "𝟓",
992 | "\\mathbf{6}": "𝟔",
993 | "\\mathbf{7}": "𝟕",
994 | "\\mathbf{8}": "𝟖",
995 | "\\mathbf{9}": "𝟗",
996 | "\\mathbf{A}": "𝐀",
997 | "\\mathbf{B}": "𝐁",
998 | "\\mathbf{C}": "𝐂",
999 | "\\mathbf{D}": "𝐃",
1000 | "\\mathbf{E}": "𝐄",
1001 | "\\mathbf{F}": "𝐅",
1002 | "\\mathbf{G}": "𝐆",
1003 | "\\mathbf{H}": "𝐇",
1004 | "\\mathbf{I}": "𝐈",
1005 | "\\mathbf{J}": "𝐉",
1006 | "\\mathbf{K}": "𝐊",
1007 | "\\mathbf{L}": "𝐋",
1008 | "\\mathbf{M}": "𝐌",
1009 | "\\mathbf{N}": "𝐍",
1010 | "\\mathbf{O}": "𝐎",
1011 | "\\mathbf{P}": "𝐏",
1012 | "\\mathbf{Q}": "𝐐",
1013 | "\\mathbf{R}": "𝐑",
1014 | "\\mathbf{S}": "𝐒",
1015 | "\\mathbf{T}": "𝐓",
1016 | "\\mathbf{U}": "𝐔",
1017 | "\\mathbf{V}": "𝐕",
1018 | "\\mathbf{W}": "𝐖",
1019 | "\\mathbf{X}": "𝐗",
1020 | "\\mathbf{Y}": "𝐘",
1021 | "\\mathbf{Z}": "𝐙",
1022 | "\\mathbf{\\Delta}": "𝚫",
1023 | "\\mathbf{\\Gamma}": "𝚪",
1024 | "\\mathbf{\\Lambda}": "𝚲",
1025 | "\\mathbf{\\Omega}": "𝛀",
1026 | "\\mathbf{\\Phi}": "𝚽",
1027 | "\\mathbf{\\Pi}": "𝚷",
1028 | "\\mathbf{\\Psi}": "𝚿",
1029 | "\\mathbf{\\Sigma}": "𝚺",
1030 | "\\mathbf{\\Theta}": "𝚯",
1031 | "\\mathbf{\\Upsilon}": "𝚼",
1032 | "\\mathbf{\\Xi}": "𝚵",
1033 | "\\mathbf{\\alpha}": "𝛂",
1034 | "\\mathbf{\\beta}": "𝛃",
1035 | "\\mathbf{\\chi}": "𝛘",
1036 | "\\mathbf{\\delta}": "𝛅",
1037 | "\\mathbf{\\epsilon}": "𝛜",
1038 | "\\mathbf{\\eta}": "𝛈",
1039 | "\\mathbf{\\gamma}": "𝛄",
1040 | "\\mathbf{\\iota}": "𝛊",
1041 | "\\mathbf{\\kappa}": "𝛋",
1042 | "\\mathbf{\\lambda}": "𝛌",
1043 | "\\mathbf{\\mu}": "𝛍",
1044 | "\\mathbf{\\nu}": "𝛎",
1045 | "\\mathbf{\\omega}": "𝛚",
1046 | "\\mathbf{\\phi}": "𝛟",
1047 | "\\mathbf{\\pi}": "𝛑",
1048 | "\\mathbf{\\psi}": "𝛙",
1049 | "\\mathbf{\\rho}": "𝛒",
1050 | "\\mathbf{\\sigma}": "𝛔",
1051 | "\\mathbf{\\tau}": "𝛕",
1052 | "\\mathbf{\\theta}": "𝛉",
1053 | "\\mathbf{\\upsilon}": "𝛖",
1054 | "\\mathbf{\\varepsilon}": "𝛆",
1055 | "\\mathbf{\\varphi}": "𝛗",
1056 | "\\mathbf{\\varpi}": "𝛡",
1057 | "\\mathbf{\\varrho}": "𝛠",
1058 | "\\mathbf{\\varsigma}": "𝛓",
1059 | "\\mathbf{\\vartheta}": "𝛝",
1060 | "\\mathbf{\\xi}": "𝛏",
1061 | "\\mathbf{\\zeta}": "𝛇",
1062 | "\\mathbf{a}": "𝐚",
1063 | "\\mathbf{b}": "𝐛",
1064 | "\\mathbf{c}": "𝐜",
1065 | "\\mathbf{d}": "𝐝",
1066 | "\\mathbf{e}": "𝐞",
1067 | "\\mathbf{f}": "𝐟",
1068 | "\\mathbf{g}": "𝐠",
1069 | "\\mathbf{h}": "𝐡",
1070 | "\\mathbf{i}": "𝐢",
1071 | "\\mathbf{j}": "𝐣",
1072 | "\\mathbf{k}": "𝐤",
1073 | "\\mathbf{l}": "𝐥",
1074 | "\\mathbf{m}": "𝐦",
1075 | "\\mathbf{n}": "𝐧",
1076 | "\\mathbf{o}": "𝐨",
1077 | "\\mathbf{p}": "𝐩",
1078 | "\\mathbf{q}": "𝐪",
1079 | "\\mathbf{r}": "𝐫",
1080 | "\\mathbf{s}": "𝐬",
1081 | "\\mathbf{t}": "𝐭",
1082 | "\\mathbf{u}": "𝐮",
1083 | "\\mathbf{v}": "𝐯",
1084 | "\\mathbf{w}": "𝐰",
1085 | "\\mathbf{x}": "𝐱",
1086 | "\\mathbf{y}": "𝐲",
1087 | "\\mathbf{z}": "𝐳",
1088 | "\\mathcal{A}": "𝒜",
1089 | "\\mathcal{B}": "ℬ",
1090 | "\\mathcal{C}": "𝒞",
1091 | "\\mathcal{D}": "𝒟",
1092 | "\\mathcal{E}": "ℰ",
1093 | "\\mathcal{F}": "ℱ",
1094 | "\\mathcal{G}": "𝒢",
1095 | "\\mathcal{H}": "ℋ",
1096 | "\\mathcal{I}": "ℐ",
1097 | "\\mathcal{J}": "𝒥",
1098 | "\\mathcal{K}": "𝒦",
1099 | "\\mathcal{L}": "ℒ",
1100 | "\\mathcal{M}": "ℳ",
1101 | "\\mathcal{N}": "𝒩",
1102 | "\\mathcal{O}": "𝒪",
1103 | "\\mathcal{P}": "𝒫",
1104 | "\\mathcal{Q}": "𝒬",
1105 | "\\mathcal{R}": "ℛ",
1106 | "\\mathcal{S}": "𝒮",
1107 | "\\mathcal{T}": "𝒯",
1108 | "\\mathcal{U}": "𝒰",
1109 | "\\mathcal{V}": "𝒱",
1110 | "\\mathcal{W}": "𝒲",
1111 | "\\mathcal{X}": "𝒳",
1112 | "\\mathcal{Y}": "𝒴",
1113 | "\\mathcal{Z}": "𝒵",
1114 | "\\mathcal{a}": "𝒶",
1115 | "\\mathcal{b}": "𝒷",
1116 | "\\mathcal{c}": "𝒸",
1117 | "\\mathcal{d}": "𝒹",
1118 | "\\mathcal{e}": "ℯ",
1119 | "\\mathcal{f}": "𝒻",
1120 | "\\mathcal{g}": "ℊ",
1121 | "\\mathcal{h}": "𝒽",
1122 | "\\mathcal{i}": "𝒾",
1123 | "\\mathcal{j}": "𝒿",
1124 | "\\mathcal{k}": "𝓀",
1125 | "\\mathcal{l}": "𝓁",
1126 | "\\mathcal{m}": "𝓂",
1127 | "\\mathcal{n}": "𝓃",
1128 | "\\mathcal{o}": "ℴ",
1129 | "\\mathcal{p}": "𝓅",
1130 | "\\mathcal{q}": "𝓆",
1131 | "\\mathcal{r}": "𝓇",
1132 | "\\mathcal{s}": "𝓈",
1133 | "\\mathcal{t}": "𝓉",
1134 | "\\mathcal{u}": "𝓊",
1135 | "\\mathcal{v}": "𝓋",
1136 | "\\mathcal{w}": "𝓌",
1137 | "\\mathcal{x}": "𝓍",
1138 | "\\mathcal{y}": "𝓎",
1139 | "\\mathcal{z}": "𝓏",
1140 | "\\mathfrak{A}": "𝔄",
1141 | "\\mathfrak{B}": "𝔅",
1142 | "\\mathfrak{C}": "ℭ",
1143 | "\\mathfrak{D}": "𝔇",
1144 | "\\mathfrak{E}": "𝔈",
1145 | "\\mathfrak{F}": "𝔉",
1146 | "\\mathfrak{G}": "𝔊",
1147 | "\\mathfrak{H}": "ℌ",
1148 | "\\mathfrak{J}": "𝔍",
1149 | "\\mathfrak{K}": "𝔎",
1150 | "\\mathfrak{L}": "𝔏",
1151 | "\\mathfrak{M}": "𝔐",
1152 | "\\mathfrak{N}": "𝔑",
1153 | "\\mathfrak{O}": "𝔒",
1154 | "\\mathfrak{P}": "𝔓",
1155 | "\\mathfrak{Q}": "𝔔",
1156 | "\\mathfrak{S}": "𝔖",
1157 | "\\mathfrak{T}": "𝔗",
1158 | "\\mathfrak{U}": "𝔘",
1159 | "\\mathfrak{V}": "𝔙",
1160 | "\\mathfrak{W}": "𝔚",
1161 | "\\mathfrak{X}": "𝔛",
1162 | "\\mathfrak{Y}": "𝔜",
1163 | "\\mathfrak{Z}": "ℨ",
1164 | "\\mathfrak{a}": "𝔞",
1165 | "\\mathfrak{b}": "𝔟",
1166 | "\\mathfrak{c}": "𝔠",
1167 | "\\mathfrak{d}": "𝔡",
1168 | "\\mathfrak{e}": "𝔢",
1169 | "\\mathfrak{f}": "𝔣",
1170 | "\\mathfrak{g}": "𝔤",
1171 | "\\mathfrak{h}": "𝔥",
1172 | "\\mathfrak{i}": "𝔦",
1173 | "\\mathfrak{j}": "𝔧",
1174 | "\\mathfrak{k}": "𝔨",
1175 | "\\mathfrak{l}": "𝔩",
1176 | "\\mathfrak{m}": "𝔪",
1177 | "\\mathfrak{n}": "𝔫",
1178 | "\\mathfrak{o}": "𝔬",
1179 | "\\mathfrak{p}": "𝔭",
1180 | "\\mathfrak{q}": "𝔮",
1181 | "\\mathfrak{r}": "𝔯",
1182 | "\\mathfrak{s}": "𝔰",
1183 | "\\mathfrak{t}": "𝔱",
1184 | "\\mathfrak{u}": "𝔲",
1185 | "\\mathfrak{v}": "𝔳",
1186 | "\\mathfrak{w}": "𝔴",
1187 | "\\mathfrak{x}": "𝔵",
1188 | "\\mathfrak{y}": "𝔶",
1189 | "\\mathfrak{z}": "𝔷",
1190 | "\\mathring": "̊",
1191 | "\\mathsfbfit{A}": "𝘼",
1192 | "\\mathsfbfit{B}": "𝘽",
1193 | "\\mathsfbfit{C}": "𝘾",
1194 | "\\mathsfbfit{D}": "𝘿",
1195 | "\\mathsfbfit{E}": "𝙀",
1196 | "\\mathsfbfit{F}": "𝙁",
1197 | "\\mathsfbfit{G}": "𝙂",
1198 | "\\mathsfbfit{H}": "𝙃",
1199 | "\\mathsfbfit{I}": "𝙄",
1200 | "\\mathsfbfit{J}": "𝙅",
1201 | "\\mathsfbfit{K}": "𝙆",
1202 | "\\mathsfbfit{L}": "𝙇",
1203 | "\\mathsfbfit{M}": "𝙈",
1204 | "\\mathsfbfit{N}": "𝙉",
1205 | "\\mathsfbfit{O}": "𝙊",
1206 | "\\mathsfbfit{P}": "𝙋",
1207 | "\\mathsfbfit{Q}": "𝙌",
1208 | "\\mathsfbfit{R}": "𝙍",
1209 | "\\mathsfbfit{S}": "𝙎",
1210 | "\\mathsfbfit{T}": "𝙏",
1211 | "\\mathsfbfit{U}": "𝙐",
1212 | "\\mathsfbfit{V}": "𝙑",
1213 | "\\mathsfbfit{W}": "𝙒",
1214 | "\\mathsfbfit{X}": "𝙓",
1215 | "\\mathsfbfit{Y}": "𝙔",
1216 | "\\mathsfbfit{Z}": "𝙕",
1217 | "\\mathsfbfit{\\Delta}": "𝞓",
1218 | "\\mathsfbfit{\\Gamma}": "𝞒",
1219 | "\\mathsfbfit{\\Lambda}": "𝞚",
1220 | "\\mathsfbfit{\\Omega}": "𝞨",
1221 | "\\mathsfbfit{\\Phi}": "𝞥",
1222 | "\\mathsfbfit{\\Pi}": "𝞟",
1223 | "\\mathsfbfit{\\Psi}": "𝞧",
1224 | "\\mathsfbfit{\\Sigma}": "𝞢",
1225 | "\\mathsfbfit{\\Theta}": "𝞗",
1226 | "\\mathsfbfit{\\Upsilon}": "𝞤",
1227 | "\\mathsfbfit{\\Xi}": "𝞝",
1228 | "\\mathsfbfit{\\alpha}": "𝞪",
1229 | "\\mathsfbfit{\\beta}": "𝞫",
1230 | "\\mathsfbfit{\\chi}": "𝟀",
1231 | "\\mathsfbfit{\\delta}": "𝞭",
1232 | "\\mathsfbfit{\\epsilon}": "𝟄",
1233 | "\\mathsfbfit{\\eta}": "𝞰",
1234 | "\\mathsfbfit{\\gamma}": "𝞬",
1235 | "\\mathsfbfit{\\iota}": "𝞲",
1236 | "\\mathsfbfit{\\kappa}": "𝞳",
1237 | "\\mathsfbfit{\\lambda}": "𝞴",
1238 | "\\mathsfbfit{\\mu}": "𝞵",
1239 | "\\mathsfbfit{\\nu}": "𝞶",
1240 | "\\mathsfbfit{\\omega}": "𝟂",
1241 | "\\mathsfbfit{\\phi}": "𝟇",
1242 | "\\mathsfbfit{\\pi}": "𝞹",
1243 | "\\mathsfbfit{\\psi}": "𝟁",
1244 | "\\mathsfbfit{\\rho}": "𝞺",
1245 | "\\mathsfbfit{\\sigma}": "𝞼",
1246 | "\\mathsfbfit{\\tau}": "𝞽",
1247 | "\\mathsfbfit{\\theta}": "𝞱",
1248 | "\\mathsfbfit{\\upsilon}": "𝞾",
1249 | "\\mathsfbfit{\\varepsilon}": "𝞮",
1250 | "\\mathsfbfit{\\varphi}": "𝞿",
1251 | "\\mathsfbfit{\\varpi}": "𝟉",
1252 | "\\mathsfbfit{\\varrho}": "𝟈",
1253 | "\\mathsfbfit{\\varsigma}": "𝞻",
1254 | "\\mathsfbfit{\\vartheta}": "𝟅",
1255 | "\\mathsfbfit{\\xi}": "𝞷",
1256 | "\\mathsfbfit{\\zeta}": "𝞯",
1257 | "\\mathsfbfit{a}": "𝙖",
1258 | "\\mathsfbfit{b}": "𝙗",
1259 | "\\mathsfbfit{c}": "𝙘",
1260 | "\\mathsfbfit{d}": "𝙙",
1261 | "\\mathsfbfit{e}": "𝙚",
1262 | "\\mathsfbfit{f}": "𝙛",
1263 | "\\mathsfbfit{g}": "𝙜",
1264 | "\\mathsfbfit{h}": "𝙝",
1265 | "\\mathsfbfit{i}": "𝙞",
1266 | "\\mathsfbfit{j}": "𝙟",
1267 | "\\mathsfbfit{k}": "𝙠",
1268 | "\\mathsfbfit{l}": "𝙡",
1269 | "\\mathsfbfit{m}": "𝙢",
1270 | "\\mathsfbfit{n}": "𝙣",
1271 | "\\mathsfbfit{o}": "𝙤",
1272 | "\\mathsfbfit{p}": "𝙥",
1273 | "\\mathsfbfit{q}": "𝙦",
1274 | "\\mathsfbfit{r}": "𝙧",
1275 | "\\mathsfbfit{s}": "𝙨",
1276 | "\\mathsfbfit{t}": "𝙩",
1277 | "\\mathsfbfit{u}": "𝙪",
1278 | "\\mathsfbfit{v}": "𝙫",
1279 | "\\mathsfbfit{w}": "𝙬",
1280 | "\\mathsfbfit{x}": "𝙭",
1281 | "\\mathsfbfit{y}": "𝙮",
1282 | "\\mathsfbfit{z}": "𝙯",
1283 | "\\mathsfbf{0}": "𝟬",
1284 | "\\mathsfbf{1}": "𝟭",
1285 | "\\mathsfbf{2}": "𝟮",
1286 | "\\mathsfbf{3}": "𝟯",
1287 | "\\mathsfbf{4}": "𝟰",
1288 | "\\mathsfbf{5}": "𝟱",
1289 | "\\mathsfbf{6}": "𝟲",
1290 | "\\mathsfbf{7}": "𝟳",
1291 | "\\mathsfbf{8}": "𝟴",
1292 | "\\mathsfbf{9}": "𝟵",
1293 | "\\mathsfbf{A}": "𝗔",
1294 | "\\mathsfbf{B}": "𝗕",
1295 | "\\mathsfbf{C}": "𝗖",
1296 | "\\mathsfbf{D}": "𝗗",
1297 | "\\mathsfbf{E}": "𝗘",
1298 | "\\mathsfbf{F}": "𝗙",
1299 | "\\mathsfbf{G}": "𝗚",
1300 | "\\mathsfbf{H}": "𝗛",
1301 | "\\mathsfbf{I}": "𝗜",
1302 | "\\mathsfbf{J}": "𝗝",
1303 | "\\mathsfbf{K}": "𝗞",
1304 | "\\mathsfbf{L}": "𝗟",
1305 | "\\mathsfbf{M}": "𝗠",
1306 | "\\mathsfbf{N}": "𝗡",
1307 | "\\mathsfbf{O}": "𝗢",
1308 | "\\mathsfbf{P}": "𝗣",
1309 | "\\mathsfbf{Q}": "𝗤",
1310 | "\\mathsfbf{R}": "𝗥",
1311 | "\\mathsfbf{S}": "𝗦",
1312 | "\\mathsfbf{T}": "𝗧",
1313 | "\\mathsfbf{U}": "𝗨",
1314 | "\\mathsfbf{V}": "𝗩",
1315 | "\\mathsfbf{W}": "𝗪",
1316 | "\\mathsfbf{X}": "𝗫",
1317 | "\\mathsfbf{Y}": "𝗬",
1318 | "\\mathsfbf{Z}": "𝗭",
1319 | "\\mathsfbf{\\Delta}": "𝝙",
1320 | "\\mathsfbf{\\Gamma}": "𝝘",
1321 | "\\mathsfbf{\\Lambda}": "𝝠",
1322 | "\\mathsfbf{\\Omega}": "𝝮",
1323 | "\\mathsfbf{\\Phi}": "𝝫",
1324 | "\\mathsfbf{\\Pi}": "𝝥",
1325 | "\\mathsfbf{\\Psi}": "𝝭",
1326 | "\\mathsfbf{\\Sigma}": "𝝨",
1327 | "\\mathsfbf{\\Theta}": "𝝝",
1328 | "\\mathsfbf{\\Upsilon}": "𝝪",
1329 | "\\mathsfbf{\\Xi}": "𝝣",
1330 | "\\mathsfbf{\\alpha}": "𝝰",
1331 | "\\mathsfbf{\\beta}": "𝝱",
1332 | "\\mathsfbf{\\chi}": "𝞆",
1333 | "\\mathsfbf{\\delta}": "𝝳",
1334 | "\\mathsfbf{\\epsilon}": "𝞊",
1335 | "\\mathsfbf{\\eta}": "𝝶",
1336 | "\\mathsfbf{\\gamma}": "𝝲",
1337 | "\\mathsfbf{\\iota}": "𝝸",
1338 | "\\mathsfbf{\\kappa}": "𝝹",
1339 | "\\mathsfbf{\\lambda}": "𝝺",
1340 | "\\mathsfbf{\\mu}": "𝝻",
1341 | "\\mathsfbf{\\nu}": "𝝼",
1342 | "\\mathsfbf{\\omega}": "𝞈",
1343 | "\\mathsfbf{\\phi}": "𝞍",
1344 | "\\mathsfbf{\\pi}": "𝝿",
1345 | "\\mathsfbf{\\psi}": "𝞇",
1346 | "\\mathsfbf{\\rho}": "𝞀",
1347 | "\\mathsfbf{\\sigma}": "𝞂",
1348 | "\\mathsfbf{\\tau}": "𝞃",
1349 | "\\mathsfbf{\\theta}": "𝝷",
1350 | "\\mathsfbf{\\upsilon}": "𝞄",
1351 | "\\mathsfbf{\\varepsilon}": "𝝴",
1352 | "\\mathsfbf{\\varphi}": "𝞅",
1353 | "\\mathsfbf{\\varpi}": "𝞏",
1354 | "\\mathsfbf{\\varrho}": "𝞎",
1355 | "\\mathsfbf{\\varsigma}": "𝞁",
1356 | "\\mathsfbf{\\vartheta}": "𝞋",
1357 | "\\mathsfbf{\\xi}": "𝝽",
1358 | "\\mathsfbf{\\zeta}": "𝝵",
1359 | "\\mathsfbf{a}": "𝗮",
1360 | "\\mathsfbf{b}": "𝗯",
1361 | "\\mathsfbf{c}": "𝗰",
1362 | "\\mathsfbf{d}": "𝗱",
1363 | "\\mathsfbf{e}": "𝗲",
1364 | "\\mathsfbf{f}": "𝗳",
1365 | "\\mathsfbf{g}": "𝗴",
1366 | "\\mathsfbf{h}": "𝗵",
1367 | "\\mathsfbf{i}": "𝗶",
1368 | "\\mathsfbf{j}": "𝗷",
1369 | "\\mathsfbf{k}": "𝗸",
1370 | "\\mathsfbf{l}": "𝗹",
1371 | "\\mathsfbf{m}": "𝗺",
1372 | "\\mathsfbf{n}": "𝗻",
1373 | "\\mathsfbf{o}": "𝗼",
1374 | "\\mathsfbf{p}": "𝗽",
1375 | "\\mathsfbf{q}": "𝗾",
1376 | "\\mathsfbf{r}": "𝗿",
1377 | "\\mathsfbf{s}": "𝘀",
1378 | "\\mathsfbf{t}": "𝘁",
1379 | "\\mathsfbf{u}": "𝘂",
1380 | "\\mathsfbf{v}": "𝘃",
1381 | "\\mathsfbf{w}": "𝘄",
1382 | "\\mathsfbf{x}": "𝘅",
1383 | "\\mathsfbf{y}": "𝘆",
1384 | "\\mathsfbf{z}": "𝘇",
1385 | "\\mathsfit{A}": "𝘈",
1386 | "\\mathsfit{B}": "𝘉",
1387 | "\\mathsfit{C}": "𝘊",
1388 | "\\mathsfit{D}": "𝘋",
1389 | "\\mathsfit{E}": "𝘌",
1390 | "\\mathsfit{F}": "𝘍",
1391 | "\\mathsfit{G}": "𝘎",
1392 | "\\mathsfit{H}": "𝘏",
1393 | "\\mathsfit{I}": "𝘐",
1394 | "\\mathsfit{J}": "𝘑",
1395 | "\\mathsfit{K}": "𝘒",
1396 | "\\mathsfit{L}": "𝘓",
1397 | "\\mathsfit{M}": "𝘔",
1398 | "\\mathsfit{N}": "𝘕",
1399 | "\\mathsfit{O}": "𝘖",
1400 | "\\mathsfit{P}": "𝘗",
1401 | "\\mathsfit{Q}": "𝘘",
1402 | "\\mathsfit{R}": "𝘙",
1403 | "\\mathsfit{S}": "𝘚",
1404 | "\\mathsfit{T}": "𝘛",
1405 | "\\mathsfit{U}": "𝘜",
1406 | "\\mathsfit{V}": "𝘝",
1407 | "\\mathsfit{W}": "𝘞",
1408 | "\\mathsfit{X}": "𝘟",
1409 | "\\mathsfit{Y}": "𝘠",
1410 | "\\mathsfit{Z}": "𝘡",
1411 | "\\mathsfit{a}": "𝘢",
1412 | "\\mathsfit{b}": "𝘣",
1413 | "\\mathsfit{c}": "𝘤",
1414 | "\\mathsfit{d}": "𝘥",
1415 | "\\mathsfit{e}": "𝘦",
1416 | "\\mathsfit{f}": "𝘧",
1417 | "\\mathsfit{g}": "𝘨",
1418 | "\\mathsfit{h}": "𝘩",
1419 | "\\mathsfit{i}": "𝘪",
1420 | "\\mathsfit{j}": "𝘫",
1421 | "\\mathsfit{k}": "𝘬",
1422 | "\\mathsfit{l}": "𝘭",
1423 | "\\mathsfit{m}": "𝘮",
1424 | "\\mathsfit{n}": "𝘯",
1425 | "\\mathsfit{o}": "𝘰",
1426 | "\\mathsfit{p}": "𝘱",
1427 | "\\mathsfit{q}": "𝘲",
1428 | "\\mathsfit{r}": "𝘳",
1429 | "\\mathsfit{s}": "𝘴",
1430 | "\\mathsfit{t}": "𝘵",
1431 | "\\mathsfit{u}": "𝘶",
1432 | "\\mathsfit{v}": "𝘷",
1433 | "\\mathsfit{w}": "𝘸",
1434 | "\\mathsfit{x}": "𝘹",
1435 | "\\mathsfit{y}": "𝘺",
1436 | "\\mathsfit{z}": "𝘻",
1437 | "\\mathsf{0}": "𝟢",
1438 | "\\mathsf{1}": "𝟣",
1439 | "\\mathsf{2}": "𝟤",
1440 | "\\mathsf{3}": "𝟥",
1441 | "\\mathsf{4}": "𝟦",
1442 | "\\mathsf{5}": "𝟧",
1443 | "\\mathsf{6}": "𝟨",
1444 | "\\mathsf{7}": "𝟩",
1445 | "\\mathsf{8}": "𝟪",
1446 | "\\mathsf{9}": "𝟫",
1447 | "\\mathsf{A}": "𝖠",
1448 | "\\mathsf{B}": "𝖡",
1449 | "\\mathsf{C}": "𝖢",
1450 | "\\mathsf{D}": "𝖣",
1451 | "\\mathsf{E}": "𝖤",
1452 | "\\mathsf{F}": "𝖥",
1453 | "\\mathsf{G}": "𝖦",
1454 | "\\mathsf{H}": "𝖧",
1455 | "\\mathsf{I}": "𝖨",
1456 | "\\mathsf{J}": "𝖩",
1457 | "\\mathsf{K}": "𝖪",
1458 | "\\mathsf{L}": "𝖫",
1459 | "\\mathsf{M}": "𝖬",
1460 | "\\mathsf{N}": "𝖭",
1461 | "\\mathsf{O}": "𝖮",
1462 | "\\mathsf{P}": "𝖯",
1463 | "\\mathsf{Q}": "𝖰",
1464 | "\\mathsf{R}": "𝖱",
1465 | "\\mathsf{S}": "𝖲",
1466 | "\\mathsf{T}": "𝖳",
1467 | "\\mathsf{U}": "𝖴",
1468 | "\\mathsf{V}": "𝖵",
1469 | "\\mathsf{W}": "𝖶",
1470 | "\\mathsf{X}": "𝖷",
1471 | "\\mathsf{Y}": "𝖸",
1472 | "\\mathsf{Z}": "𝖹",
1473 | "\\mathsf{a}": "𝖺",
1474 | "\\mathsf{b}": "𝖻",
1475 | "\\mathsf{c}": "𝖼",
1476 | "\\mathsf{d}": "𝖽",
1477 | "\\mathsf{e}": "𝖾",
1478 | "\\mathsf{f}": "𝖿",
1479 | "\\mathsf{g}": "𝗀",
1480 | "\\mathsf{h}": "𝗁",
1481 | "\\mathsf{i}": "𝗂",
1482 | "\\mathsf{j}": "𝗃",
1483 | "\\mathsf{k}": "𝗄",
1484 | "\\mathsf{l}": "𝗅",
1485 | "\\mathsf{m}": "𝗆",
1486 | "\\mathsf{n}": "𝗇",
1487 | "\\mathsf{o}": "𝗈",
1488 | "\\mathsf{p}": "𝗉",
1489 | "\\mathsf{q}": "𝗊",
1490 | "\\mathsf{r}": "𝗋",
1491 | "\\mathsf{s}": "𝗌",
1492 | "\\mathsf{t}": "𝗍",
1493 | "\\mathsf{u}": "𝗎",
1494 | "\\mathsf{v}": "𝗏",
1495 | "\\mathsf{w}": "𝗐",
1496 | "\\mathsf{x}": "𝗑",
1497 | "\\mathsf{y}": "𝗒",
1498 | "\\mathsf{z}": "𝗓",
1499 | "\\mathtt{0}": "𝟶",
1500 | "\\mathtt{1}": "𝟷",
1501 | "\\mathtt{2}": "𝟸",
1502 | "\\mathtt{3}": "𝟹",
1503 | "\\mathtt{4}": "𝟺",
1504 | "\\mathtt{5}": "𝟻",
1505 | "\\mathtt{6}": "𝟼",
1506 | "\\mathtt{7}": "𝟽",
1507 | "\\mathtt{8}": "𝟾",
1508 | "\\mathtt{9}": "𝟿",
1509 | "\\mathtt{A}": "𝙰",
1510 | "\\mathtt{B}": "𝙱",
1511 | "\\mathtt{C}": "𝙲",
1512 | "\\mathtt{D}": "𝙳",
1513 | "\\mathtt{E}": "𝙴",
1514 | "\\mathtt{F}": "𝙵",
1515 | "\\mathtt{G}": "𝙶",
1516 | "\\mathtt{H}": "𝙷",
1517 | "\\mathtt{I}": "𝙸",
1518 | "\\mathtt{J}": "𝙹",
1519 | "\\mathtt{K}": "𝙺",
1520 | "\\mathtt{L}": "𝙻",
1521 | "\\mathtt{M}": "𝙼",
1522 | "\\mathtt{N}": "𝙽",
1523 | "\\mathtt{O}": "𝙾",
1524 | "\\mathtt{P}": "𝙿",
1525 | "\\mathtt{Q}": "𝚀",
1526 | "\\mathtt{R}": "𝚁",
1527 | "\\mathtt{S}": "𝚂",
1528 | "\\mathtt{T}": "𝚃",
1529 | "\\mathtt{U}": "𝚄",
1530 | "\\mathtt{V}": "𝚅",
1531 | "\\mathtt{W}": "𝚆",
1532 | "\\mathtt{X}": "𝚇",
1533 | "\\mathtt{Y}": "𝚈",
1534 | "\\mathtt{Z}": "𝚉",
1535 | "\\mathtt{a}": "𝚊",
1536 | "\\mathtt{b}": "𝚋",
1537 | "\\mathtt{c}": "𝚌",
1538 | "\\mathtt{d}": "𝚍",
1539 | "\\mathtt{e}": "𝚎",
1540 | "\\mathtt{f}": "𝚏",
1541 | "\\mathtt{g}": "𝚐",
1542 | "\\mathtt{h}": "𝚑",
1543 | "\\mathtt{i}": "𝚒",
1544 | "\\mathtt{j}": "𝚓",
1545 | "\\mathtt{k}": "𝚔",
1546 | "\\mathtt{l}": "𝚕",
1547 | "\\mathtt{m}": "𝚖",
1548 | "\\mathtt{n}": "𝚗",
1549 | "\\mathtt{o}": "𝚘",
1550 | "\\mathtt{p}": "𝚙",
1551 | "\\mathtt{q}": "𝚚",
1552 | "\\mathtt{r}": "𝚛",
1553 | "\\mathtt{s}": "𝚜",
1554 | "\\mathtt{t}": "𝚝",
1555 | "\\mathtt{u}": "𝚞",
1556 | "\\mathtt{v}": "𝚟",
1557 | "\\mathtt{w}": "𝚠",
1558 | "\\mathtt{x}": "𝚡",
1559 | "\\mathtt{y}": "𝚢",
1560 | "\\mathtt{z}": "𝚣",
1561 | "\\mbfAlpha": "𝚨",
1562 | "\\mbfBeta": "𝚩",
1563 | "\\mbfChi": "𝚾",
1564 | "\\mbfDigamma": "𝟊",
1565 | "\\mbfEpsilon": "𝚬",
1566 | "\\mbfEta": "𝚮",
1567 | "\\mbfIota": "𝚰",
1568 | "\\mbfKappa": "𝚱",
1569 | "\\mbfMu": "𝚳",
1570 | "\\mbfNu": "𝚴",
1571 | "\\mbfOmicron": "𝚶",
1572 | "\\mbfRho": "𝚸",
1573 | "\\mbfTau": "𝚻",
1574 | "\\mbfZeta": "𝚭",
1575 | "\\mbfdigamma": "𝟋",
1576 | "\\mbffrakA": "𝕬",
1577 | "\\mbffrakB": "𝕭",
1578 | "\\mbffrakC": "𝕮",
1579 | "\\mbffrakD": "𝕯",
1580 | "\\mbffrakE": "𝕰",
1581 | "\\mbffrakF": "𝕱",
1582 | "\\mbffrakG": "𝕲",
1583 | "\\mbffrakH": "𝕳",
1584 | "\\mbffrakI": "𝕴",
1585 | "\\mbffrakJ": "𝕵",
1586 | "\\mbffrakK": "𝕶",
1587 | "\\mbffrakL": "𝕷",
1588 | "\\mbffrakM": "𝕸",
1589 | "\\mbffrakN": "𝕹",
1590 | "\\mbffrakO": "𝕺",
1591 | "\\mbffrakP": "𝕻",
1592 | "\\mbffrakQ": "𝕼",
1593 | "\\mbffrakR": "𝕽",
1594 | "\\mbffrakS": "𝕾",
1595 | "\\mbffrakT": "𝕿",
1596 | "\\mbffrakU": "𝖀",
1597 | "\\mbffrakV": "𝖁",
1598 | "\\mbffrakW": "𝖂",
1599 | "\\mbffrakX": "𝖃",
1600 | "\\mbffrakY": "𝖄",
1601 | "\\mbffrakZ": "𝖅",
1602 | "\\mbffraka": "𝖆",
1603 | "\\mbffrakb": "𝖇",
1604 | "\\mbffrakc": "𝖈",
1605 | "\\mbffrakd": "𝖉",
1606 | "\\mbffrake": "𝖊",
1607 | "\\mbffrakf": "𝖋",
1608 | "\\mbffrakg": "𝖌",
1609 | "\\mbffrakh": "𝖍",
1610 | "\\mbffraki": "𝖎",
1611 | "\\mbffrakj": "𝖏",
1612 | "\\mbffrakk": "𝖐",
1613 | "\\mbffrakl": "𝖑",
1614 | "\\mbffrakm": "𝖒",
1615 | "\\mbffrakn": "𝖓",
1616 | "\\mbffrako": "𝖔",
1617 | "\\mbffrakp": "𝖕",
1618 | "\\mbffrakq": "𝖖",
1619 | "\\mbffrakr": "𝖗",
1620 | "\\mbffraks": "𝖘",
1621 | "\\mbffrakt": "𝖙",
1622 | "\\mbffraku": "𝖚",
1623 | "\\mbffrakv": "𝖛",
1624 | "\\mbffrakw": "𝖜",
1625 | "\\mbffrakx": "𝖝",
1626 | "\\mbffraky": "𝖞",
1627 | "\\mbffrakz": "𝖟",
1628 | "\\mbfitAlpha": "𝜜",
1629 | "\\mbfitBeta": "𝜝",
1630 | "\\mbfitChi": "𝜲",
1631 | "\\mbfitEpsilon": "𝜠",
1632 | "\\mbfitEta": "𝜢",
1633 | "\\mbfitIota": "𝜤",
1634 | "\\mbfitKappa": "𝜥",
1635 | "\\mbfitMu": "𝜧",
1636 | "\\mbfitNu": "𝜨",
1637 | "\\mbfitOmicron": "𝜪",
1638 | "\\mbfitRho": "𝜬",
1639 | "\\mbfitTau": "𝜯",
1640 | "\\mbfitZeta": "𝜡",
1641 | "\\mbfitnabla": "𝜵",
1642 | "\\mbfitomicron": "𝝄",
1643 | "\\mbfitpartial": "𝝏",
1644 | "\\mbfitsansAlpha": "𝞐",
1645 | "\\mbfitsansBeta": "𝞑",
1646 | "\\mbfitsansChi": "𝞦",
1647 | "\\mbfitsansEpsilon": "𝞔",
1648 | "\\mbfitsansEta": "𝞖",
1649 | "\\mbfitsansIota": "𝞘",
1650 | "\\mbfitsansKappa": "𝞙",
1651 | "\\mbfitsansMu": "𝞛",
1652 | "\\mbfitsansNu": "𝞜",
1653 | "\\mbfitsansOmicron": "𝞞",
1654 | "\\mbfitsansRho": "𝞠",
1655 | "\\mbfitsansTau": "𝞣",
1656 | "\\mbfitsansZeta": "𝞕",
1657 | "\\mbfitsansnabla": "𝞩",
1658 | "\\mbfitsansomicron": "𝞸",
1659 | "\\mbfitsanspartial": "𝟃",
1660 | "\\mbfitsansvarTheta": "𝞡",
1661 | "\\mbfitsansvarkappa": "𝟆",
1662 | "\\mbfitvarTheta": "𝜭",
1663 | "\\mbfitvarkappa": "𝝒",
1664 | "\\mbfnabla": "𝛁",
1665 | "\\mbfomicron": "𝛐",
1666 | "\\mbfpartial": "𝛛",
1667 | "\\mbfsansAlpha": "𝝖",
1668 | "\\mbfsansBeta": "𝝗",
1669 | "\\mbfsansChi": "𝝬",
1670 | "\\mbfsansEpsilon": "𝝚",
1671 | "\\mbfsansEta": "𝝜",
1672 | "\\mbfsansIota": "𝝞",
1673 | "\\mbfsansKappa": "𝝟",
1674 | "\\mbfsansMu": "𝝡",
1675 | "\\mbfsansNu": "𝝢",
1676 | "\\mbfsansOmicron": "𝝤",
1677 | "\\mbfsansRho": "𝝦",
1678 | "\\mbfsansTau": "𝝩",
1679 | "\\mbfsansZeta": "𝝛",
1680 | "\\mbfsansnabla": "𝝯",
1681 | "\\mbfsansomicron": "𝝾",
1682 | "\\mbfsanspartial": "𝞉",
1683 | "\\mbfsansvarTheta": "𝝧",
1684 | "\\mbfsansvarkappa": "𝞌",
1685 | "\\mbfscrA": "𝓐",
1686 | "\\mbfscrB": "𝓑",
1687 | "\\mbfscrC": "𝓒",
1688 | "\\mbfscrD": "𝓓",
1689 | "\\mbfscrE": "𝓔",
1690 | "\\mbfscrF": "𝓕",
1691 | "\\mbfscrG": "𝓖",
1692 | "\\mbfscrH": "𝓗",
1693 | "\\mbfscrI": "𝓘",
1694 | "\\mbfscrJ": "𝓙",
1695 | "\\mbfscrK": "𝓚",
1696 | "\\mbfscrL": "𝓛",
1697 | "\\mbfscrM": "𝓜",
1698 | "\\mbfscrN": "𝓝",
1699 | "\\mbfscrO": "𝓞",
1700 | "\\mbfscrP": "𝓟",
1701 | "\\mbfscrQ": "𝓠",
1702 | "\\mbfscrR": "𝓡",
1703 | "\\mbfscrS": "𝓢",
1704 | "\\mbfscrT": "𝓣",
1705 | "\\mbfscrU": "𝓤",
1706 | "\\mbfscrV": "𝓥",
1707 | "\\mbfscrW": "𝓦",
1708 | "\\mbfscrX": "𝓧",
1709 | "\\mbfscrY": "𝓨",
1710 | "\\mbfscrZ": "𝓩",
1711 | "\\mbfscra": "𝓪",
1712 | "\\mbfscrb": "𝓫",
1713 | "\\mbfscrc": "𝓬",
1714 | "\\mbfscrd": "𝓭",
1715 | "\\mbfscre": "𝓮",
1716 | "\\mbfscrf": "𝓯",
1717 | "\\mbfscrg": "𝓰",
1718 | "\\mbfscrh": "𝓱",
1719 | "\\mbfscri": "𝓲",
1720 | "\\mbfscrj": "𝓳",
1721 | "\\mbfscrk": "𝓴",
1722 | "\\mbfscrl": "𝓵",
1723 | "\\mbfscrm": "𝓶",
1724 | "\\mbfscrn": "𝓷",
1725 | "\\mbfscro": "𝓸",
1726 | "\\mbfscrp": "𝓹",
1727 | "\\mbfscrq": "𝓺",
1728 | "\\mbfscrr": "𝓻",
1729 | "\\mbfscrs": "𝓼",
1730 | "\\mbfscrt": "𝓽",
1731 | "\\mbfscru": "𝓾",
1732 | "\\mbfscrv": "𝓿",
1733 | "\\mbfscrw": "𝔀",
1734 | "\\mbfscrx": "𝔁",
1735 | "\\mbfscry": "𝔂",
1736 | "\\mbfscrz": "𝔃",
1737 | "\\mbfvarTheta": "𝚹",
1738 | "\\mbfvarkappa": "𝛞",
1739 | "\\mdblkdiamond": "⬥",
1740 | "\\mdblklozenge": "⬧",
1741 | "\\mdlgblksquare": "■",
1742 | "\\mdlgwhtsquare": "□",
1743 | "\\mdsmblksquare": "◾",
1744 | "\\mdsmwhtcircle": "⚬",
1745 | "\\mdsmwhtsquare": "◽",
1746 | "\\mdwhtdiamond": "⬦",
1747 | "\\mdwhtlozenge": "⬨",
1748 | "\\measangledltosw": "⦯",
1749 | "\\measangledrtose": "⦮",
1750 | "\\measangleldtosw": "⦫",
1751 | "\\measanglelutonw": "⦩",
1752 | "\\measanglerdtose": "⦪",
1753 | "\\measanglerutone": "⦨",
1754 | "\\measangleultonw": "⦭",
1755 | "\\measangleurtone": "⦬",
1756 | "\\measeq": "≞",
1757 | "\\measuredangle": "∡",
1758 | "\\measuredangleleft": "⦛",
1759 | "\\measuredrightangle": "⊾",
1760 | "\\medblackstar": "⭑",
1761 | "\\medbullet": "⚫",
1762 | "\\medcirc": "⚪",
1763 | "\\medwhitestar": "⭐",
1764 | "\\mercury": "☿",
1765 | "\\mho": "℧",
1766 | "\\mid": "∣",
1767 | "\\midbarvee": "⩝",
1768 | "\\midbarwedge": "⩜",
1769 | "\\midcir": "⫰",
1770 | "\\minusdot": "⨪",
1771 | "\\minusfdots": "⨫",
1772 | "\\minusrdots": "⨬",
1773 | "\\mitAlpha": "𝛢",
1774 | "\\mitBeta": "𝛣",
1775 | "\\mitChi": "𝛸",
1776 | "\\mitEpsilon": "𝛦",
1777 | "\\mitEta": "𝛨",
1778 | "\\mitIota": "𝛪",
1779 | "\\mitKappa": "𝛫",
1780 | "\\mitMu": "𝛭",
1781 | "\\mitNu": "𝛮",
1782 | "\\mitOmicron": "𝛰",
1783 | "\\mitRho": "𝛲",
1784 | "\\mitTau": "𝛵",
1785 | "\\mitZeta": "𝛧",
1786 | "\\mitnabla": "𝛻",
1787 | "\\mitomicron": "𝜊",
1788 | "\\mitvarTheta": "𝛳",
1789 | "\\mlcp": "⫛",
1790 | "\\models": "⊧",
1791 | "\\modtwosum": "⨊",
1792 | "\\mp": "∓",
1793 | "\\mu": "𝜇",
1794 | "\\multimap": "⊸",
1795 | "\\multimapboth": "⧟",
1796 | "\\multimapdotbothA": "⊶",
1797 | "\\multimapdotbothB": "⊷",
1798 | "\\multimapinv": "⟜",
1799 | "\\nHdownarrow": "⇟",
1800 | "\\nHuparrow": "⇞",
1801 | "\\nLeftarrow": "⇍",
1802 | "\\nLeftrightarrow": "⇎",
1803 | "\\nRightarrow": "⇏",
1804 | "\\nVDash": "⊯",
1805 | "\\nVdash": "⊮",
1806 | "\\nVleftarrow": "⇺",
1807 | "\\nVleftarrowtail": "⬺",
1808 | "\\nVleftrightarrow": "⇼",
1809 | "\\nVtwoheadleftarrow": "⬵",
1810 | "\\nVtwoheadleftarrowtail": "⬽",
1811 | "\\nVtwoheadrightarrow": "⤁",
1812 | "\\nVtwoheadrightarrowtail": "⤘",
1813 | "\\nabla": "∇",
1814 | "\\napprox": "≉",
1815 | "\\natural": "♮",
1816 | "\\ncong": "≇",
1817 | "\\nearrow": "↗",
1818 | "\\neg": "¬",
1819 | "\\neovnwarrow": "⤱",
1820 | "\\neovsearrow": "⤮",
1821 | "\\neptune": "♆",
1822 | "\\neq": "≠",
1823 | "\\nequiv": "≢",
1824 | "\\neswarrow": "⤢",
1825 | "\\neuter": "⚲",
1826 | "\\nexists": "∄",
1827 | "\\ngeq": "≱",
1828 | "\\ngtr": "≯",
1829 | "\\nhVvert": "⫵",
1830 | "\\nhpar": "⫲",
1831 | "\\ni": "∋",
1832 | "\\niobar": "⋾",
1833 | "\\nis": "⋼",
1834 | "\\nisd": "⋺",
1835 | "\\nleftarrow": "↚",
1836 | "\\nleftrightarrow": "↮",
1837 | "\\nleq": "≰",
1838 | "\\nless": "≮",
1839 | "\\nlessgtr": "≸",
1840 | "\\nmid": "∤",
1841 | "\\nni": "∌",
1842 | "\\not": "̸",
1843 | "\\notasymp": "≭",
1844 | "\\notbackslash": "⍀",
1845 | "\\notin": "∉",
1846 | "\\notslash": "⌿",
1847 | "\\nparallel": "∦",
1848 | "\\npolint": "⨔",
1849 | "\\nprec": "⊀",
1850 | "\\npreceq": "⋠",
1851 | "\\nrightarrow": "↛",
1852 | "\\nsim": "≁",
1853 | "\\nsimeq": "≄",
1854 | "\\nsqsubseteq": "⋢",
1855 | "\\nsqsupseteq": "⋣",
1856 | "\\nsubset": "⊄",
1857 | "\\nsubseteq": "⊈",
1858 | "\\nsucc": "⊁",
1859 | "\\nsucceq": "⋡",
1860 | "\\nsupset": "⊅",
1861 | "\\nsupseteq": "⊉",
1862 | "\\ntriangleleft": "⋪",
1863 | "\\ntrianglelefteq": "⋬",
1864 | "\\ntriangleright": "⋫",
1865 | "\\ntrianglerighteq": "⋭",
1866 | "\\nu": "𝜈",
1867 | "\\nvDash": "⊭",
1868 | "\\nvLeftarrow": "⤂",
1869 | "\\nvLeftrightarrow": "⤄",
1870 | "\\nvRightarrow": "⤃",
1871 | "\\nvdash": "⊬",
1872 | "\\nvinfty": "⧞",
1873 | "\\nvleftarrow": "⇷",
1874 | "\\nvleftarrowtail": "⬹",
1875 | "\\nvleftrightarrow": "⇹",
1876 | "\\nvtwoheadleftarrow": "⬴",
1877 | "\\nvtwoheadleftarrowtail": "⬼",
1878 | "\\nvtwoheadrightarrowtail": "⤗",
1879 | "\\nwarrow": "↖",
1880 | "\\nwovnearrow": "⤲",
1881 | "\\nwsearrow": "⤡",
1882 | "\\obar": "⌽",
1883 | "\\obot": "⦺",
1884 | "\\obrbrak": "⏠",
1885 | "\\ocommatopright": "̕",
1886 | "\\odiv": "⨸",
1887 | "\\odot": "⊙",
1888 | "\\odotslashdot": "⦼",
1889 | "\\oiiint": "∰",
1890 | "\\oiint": "∯",
1891 | "\\oint": "∮",
1892 | "\\ointctrclockwise": "∳",
1893 | "\\olcross": "⦻",
1894 | "\\omega": "𝜔",
1895 | "\\ominus": "⊖",
1896 | "\\operp": "⦹",
1897 | "\\oplus": "⊕",
1898 | "\\opluslhrim": "⨭",
1899 | "\\oplusrhrim": "⨮",
1900 | "\\oslash": "⊘",
1901 | "\\otimes": "⊗",
1902 | "\\otimeshat": "⨶",
1903 | "\\otimeslhrim": "⨴",
1904 | "\\otimesrhrim": "⨵",
1905 | "\\oturnedcomma": "̒",
1906 | "\\overbrace": "⏞",
1907 | "\\overbracket": "⎴",
1908 | "\\overleftrightarrow": "⃡",
1909 | "\\overline": "̅",
1910 | "\\overparen": "⏜",
1911 | "\\ovhook": "̉",
1912 | "\\parallel": "∥",
1913 | "\\parallelogram": "▱",
1914 | "\\parallelogramblack": "▰",
1915 | "\\parsim": "⫳",
1916 | "\\partial": "∂",
1917 | "\\partialmeetcontraction": "⪣",
1918 | "\\pencil": "✎",
1919 | "\\pentagon": "⬠",
1920 | "\\pentagonblack": "⬟",
1921 | "\\perp": "⟂",
1922 | "\\perps": "⫡",
1923 | "\\pfun": "⇸",
1924 | "\\phi": "𝜙",
1925 | "\\phone": "☎",
1926 | "\\pi": "𝜋",
1927 | "\\pinj": "⤔",
1928 | "\\pisces": "♓",
1929 | "\\pitchfork": "⋔",
1930 | "\\plusdot": "⨥",
1931 | "\\pluseqq": "⩲",
1932 | "\\plushat": "⨣",
1933 | "\\plussim": "⨦",
1934 | "\\plussubtwo": "⨧",
1935 | "\\plustrif": "⨨",
1936 | "\\pluto": "♇",
1937 | "\\pm": "±",
1938 | "\\pointint": "⨕",
1939 | "\\pointright": "☞",
1940 | "\\postalmark": "〒",
1941 | "\\pounds": "£",
1942 | "\\prec": "≺",
1943 | "\\precapprox": "⪷",
1944 | "\\preccurlyeq": "≼",
1945 | "\\preceq": "⪯",
1946 | "\\preceqq": "⪳",
1947 | "\\precnapprox": "⪹",
1948 | "\\precneq": "⪱",
1949 | "\\precneqq": "⪵",
1950 | "\\precnsim": "⋨",
1951 | "\\precsim": "≾",
1952 | "\\prime": "′",
1953 | "\\prod": "∏",
1954 | "\\profline": "⌒",
1955 | "\\profsurf": "⌓",
1956 | "\\propto": "∝",
1957 | "\\prurel": "⊰",
1958 | "\\psi": "𝜓",
1959 | "\\psur": "⤀",
1960 | "\\pullback": "⟓",
1961 | "\\pushout": "⟔",
1962 | "\\qoppa": "ϙ",
1963 | "\\quad": "\u2001",
1964 | "\\quarternote": "♩",
1965 | "\\questeq": "≟",
1966 | "\\rBrace": "⦄",
1967 | "\\radiation": "☢",
1968 | "\\rang": "⟫",
1969 | "\\rangle": "⟩",
1970 | "\\rangledot": "⦒",
1971 | "\\rangledownzigzagarrow": "⍼",
1972 | "\\rblkbrbrak": "⦘",
1973 | "\\rblot": "⦊",
1974 | "\\rbracelend": "⎭",
1975 | "\\rbracemid": "⎬",
1976 | "\\rbraceuend": "⎫",
1977 | "\\rbrack": "]",
1978 | "\\rbrackextender": "⎥",
1979 | "\\rbracklend": "⎦",
1980 | "\\rbracklrtick": "⦎",
1981 | "\\rbrackubar": "⦌",
1982 | "\\rbrackuend": "⎤",
1983 | "\\rbrackurtick": "⦐",
1984 | "\\rbrbrak": "〕",
1985 | "\\rceil": "⌉",
1986 | "\\rcurvyangle": "⧽",
1987 | "\\rdiagovfdiag": "⤫",
1988 | "\\rdiagovsearrow": "⤰",
1989 | "\\recycle": "♻",
1990 | "\\revangle": "⦣",
1991 | "\\revangleubar": "⦥",
1992 | "\\revemptyset": "⦰",
1993 | "\\revnmid": "⫮",
1994 | "\\rfbowtie": "⧒",
1995 | "\\rfloor": "⌋",
1996 | "\\rftimes": "⧕",
1997 | "\\rgroup": "⟯",
1998 | "\\rhd": "▷",
1999 | "\\rho": "𝜌",
2000 | "\\rightangle": "∟",
2001 | "\\rightanglemdot": "⦝",
2002 | "\\rightanglesqr": "⦜",
2003 | "\\rightarrow": "→",
2004 | "\\rightarrowapprox": "⥵",
2005 | "\\rightarrowbackapprox": "⭈",
2006 | "\\rightarrowbsimilar": "⭌",
2007 | "\\rightarrowdiamond": "⤞",
2008 | "\\rightarrowgtr": "⭃",
2009 | "\\rightarrowonoplus": "⟴",
2010 | "\\rightarrowplus": "⥅",
2011 | "\\rightarrowshortleftarrow": "⥂",
2012 | "\\rightarrowsimilar": "⥴",
2013 | "\\rightarrowsupset": "⭄",
2014 | "\\rightarrowtail": "↣",
2015 | "\\rightarrowtriangle": "⇾",
2016 | "\\rightarrowx": "⥇",
2017 | "\\rightbarharpoon": "⥬",
2018 | "\\rightbkarrow": "⤍",
2019 | "\\rightdbltail": "⤜",
2020 | "\\rightdotarrow": "⤑",
2021 | "\\rightdowncurvedarrow": "⤷",
2022 | "\\rightharpoondown": "⇁",
2023 | "\\rightharpoonup": "⇀",
2024 | "\\rightimply": "⥰",
2025 | "\\rightleftarrows": "⇄",
2026 | "\\rightleftharpoon": "⥋",
2027 | "\\rightleftharpoons": "⇌",
2028 | "\\rightleftharpoonsdown": "⥩",
2029 | "\\rightleftharpoonsup": "⥨",
2030 | "\\rightmoon": "☽",
2031 | "\\rightouterjoin": "⟖",
2032 | "\\rightpentagon": "⭔",
2033 | "\\rightpentagonblack": "⭓",
2034 | "\\rightrightarrows": "⇉",
2035 | "\\rightrightharpoons": "⥤",
2036 | "\\rightslice": "⪧",
2037 | "\\rightsquigarrow": "⇝",
2038 | "\\righttail": "⤚",
2039 | "\\rightthreearrows": "⇶",
2040 | "\\rightthreetimes": "⋌",
2041 | "\\rightupdownharpoon": "⥏",
2042 | "\\rightwavearrow": "↝",
2043 | "\\rightwhitearrow": "⇨",
2044 | "\\rimg": "⦈",
2045 | "\\ringplus": "⨢",
2046 | "\\risingdotseq": "≓",
2047 | "\\rmoustache": "⎱",
2048 | "\\rparenextender": "⎟",
2049 | "\\rparengtr": "⦔",
2050 | "\\rparenlend": "⎠",
2051 | "\\rparenuend": "⎞",
2052 | "\\rppolint": "⨒",
2053 | "\\rrbracket": "⟧",
2054 | "\\rsolbar": "⧷",
2055 | "\\rsqhook": "⫎",
2056 | "\\rsub": "⩥",
2057 | "\\rtimes": "⋊",
2058 | "\\rtriltri": "⧎",
2059 | "\\ruledelayed": "⧴",
2060 | "\\rvboxline": "⎹",
2061 | "\\rvzigzag": "⧙",
2062 | "\\sagittarius": "♐",
2063 | "\\sampi": "ϡ",
2064 | "\\sansLmirrored": "⅃",
2065 | "\\sansLturned": "⅂",
2066 | "\\saturn": "♄",
2067 | "\\scorpio": "♏",
2068 | "\\scpolint": "⨓",
2069 | "\\scurel": "⊱",
2070 | "\\searrow": "↘",
2071 | "\\second": "″",
2072 | "\\seovnearrow": "⤭",
2073 | "\\setminus": "⧵",
2074 | "\\sharp": "♯",
2075 | "\\shortdowntack": "⫟",
2076 | "\\shortlefttack": "⫞",
2077 | "\\shortrightarrowleftarrow": "⥄",
2078 | "\\shortuptack": "⫠",
2079 | "\\shuffle": "⧢",
2080 | "\\sigma": "𝜎",
2081 | "\\sim": "∼",
2082 | "\\simeq": "≃",
2083 | "\\simgE": "⪠",
2084 | "\\simgtr": "⪞",
2085 | "\\similarleftarrow": "⭉",
2086 | "\\similarrightarrow": "⥲",
2087 | "\\simlE": "⪟",
2088 | "\\simless": "⪝",
2089 | "\\simminussim": "⩬",
2090 | "\\simneqq": "≆",
2091 | "\\simplus": "⨤",
2092 | "\\simrdots": "⩫",
2093 | "\\sixteenthnote": "♬",
2094 | "\\skull": "☠",
2095 | "\\slash": "̸",
2096 | "\\smallin": "∊",
2097 | "\\smallni": "∍",
2098 | "\\smallsetminus": "∖",
2099 | "\\smalltriangledown": "▿",
2100 | "\\smalltriangleleft": "◃",
2101 | "\\smalltriangleright": "▹",
2102 | "\\smalltriangleup": "▵",
2103 | "\\smashtimes": "⨳",
2104 | "\\smblkdiamond": "⬩",
2105 | "\\smblklozenge": "⬪",
2106 | "\\smblksquare": "▪",
2107 | "\\smeparsl": "⧤",
2108 | "\\smile": "⌣",
2109 | "\\smiley": "☺",
2110 | "\\smt": "⪪",
2111 | "\\smte": "⪬",
2112 | "\\smwhitestar": "⭒",
2113 | "\\smwhtcircle": "◦",
2114 | "\\smwhtlozenge": "⬫",
2115 | "\\smwhtsquare": "▫",
2116 | "\\spadesuit": "♠",
2117 | "\\spddot": "¨",
2118 | "\\sphat": "",
2119 | "\\sphericalangle": "∢",
2120 | "\\sphericalangleup": "⦡",
2121 | "\\spot": "⦁",
2122 | "\\sptilde": "~",
2123 | "\\sqcap": "⊓",
2124 | "\\sqcup": "⊔",
2125 | "\\sqint": "⨖",
2126 | "\\sqrt": "√",
2127 | "\\sqrt[3]": "∛",
2128 | "\\sqrt[4]": "∜",
2129 | "\\sqrtbottom": "⎷",
2130 | "\\sqsubset": "⊏",
2131 | "\\sqsubseteq": "⊑",
2132 | "\\sqsubsetneq": "⋤",
2133 | "\\sqsupset": "⊐",
2134 | "\\sqsupseteq": "⊒",
2135 | "\\sqsupsetneq": "⋥",
2136 | "\\square": "□",
2137 | "\\squarebotblack": "⬓",
2138 | "\\squarecrossfill": "▩",
2139 | "\\squarehfill": "▤",
2140 | "\\squarehvfill": "▦",
2141 | "\\squareleftblack": "◧",
2142 | "\\squarellblack": "⬕",
2143 | "\\squarellquad": "◱",
2144 | "\\squarelrblack": "◪",
2145 | "\\squarelrquad": "◲",
2146 | "\\squareneswfill": "▨",
2147 | "\\squarenwsefill": "▧",
2148 | "\\squarerightblack": "◨",
2149 | "\\squaretopblack": "⬒",
2150 | "\\squareulblack": "◩",
2151 | "\\squareulquad": "◰",
2152 | "\\squareurblack": "⬔",
2153 | "\\squareurquad": "◳",
2154 | "\\squarevfill": "▥",
2155 | "\\squoval": "▢",
2156 | "\\sslash": "⫽",
2157 | "\\star": "⋆",
2158 | "\\stareq": "≛",
2159 | "\\steaming": "☕",
2160 | "\\stigma": "ϛ",
2161 | "\\strictfi": "⥼",
2162 | "\\strictif": "⥽",
2163 | "\\strns": "⏤",
2164 | "\\subedot": "⫃",
2165 | "\\submult": "⫁",
2166 | "\\subrarr": "⥹",
2167 | "\\subset": "⊂",
2168 | "\\subsetapprox": "⫉",
2169 | "\\subsetcirc": "⟃",
2170 | "\\subsetdot": "⪽",
2171 | "\\subseteq": "⊆",
2172 | "\\subseteqq": "⫅",
2173 | "\\subsetneq": "⊊",
2174 | "\\subsetneqq": "⫋",
2175 | "\\subsetplus": "⪿",
2176 | "\\subsim": "⫇",
2177 | "\\subsub": "⫕",
2178 | "\\subsup": "⫓",
2179 | "\\succ": "≻",
2180 | "\\succapprox": "⪸",
2181 | "\\succcurlyeq": "≽",
2182 | "\\succeq": "⪰",
2183 | "\\succeqq": "⪴",
2184 | "\\succnapprox": "⪺",
2185 | "\\succneq": "⪲",
2186 | "\\succneqq": "⪶",
2187 | "\\succnsim": "⋩",
2188 | "\\succsim": "≿",
2189 | "\\sum": "∑",
2190 | "\\sumbottom": "⎳",
2191 | "\\sumint": "⨋",
2192 | "\\sumtop": "⎲",
2193 | "\\sun": "☼",
2194 | "\\supdsub": "⫘",
2195 | "\\supedot": "⫄",
2196 | "\\suphsol": "⟉",
2197 | "\\suphsub": "⫗",
2198 | "\\suplarr": "⥻",
2199 | "\\supmult": "⫂",
2200 | "\\supset": "⊃",
2201 | "\\supsetapprox": "⫊",
2202 | "\\supsetcirc": "⟄",
2203 | "\\supsetdot": "⪾",
2204 | "\\supseteq": "⊇",
2205 | "\\supseteqq": "⫆",
2206 | "\\supsetneq": "⊋",
2207 | "\\supsetneqq": "⫌",
2208 | "\\supsetplus": "⫀",
2209 | "\\supsim": "⫈",
2210 | "\\supsub": "⫔",
2211 | "\\supsup": "⫖",
2212 | "\\swarrow": "↙",
2213 | "\\swords": "⚔",
2214 | "\\talloblong": "⫾",
2215 | "\\tau": "𝜏",
2216 | "\\taurus": "♉",
2217 | "\\tcohm": "Ω",
2218 | "\\therefore": "∴",
2219 | "\\thermod": "⧧",
2220 | "\\theta": "𝜃",
2221 | "\\thinspace": "\u2009",
2222 | "\\third": "‴",
2223 | "\\threedangle": "⟀",
2224 | "\\threedotcolon": "⫶",
2225 | "\\threeunderdot": "⃨",
2226 | "\\tieinfty": "⧝",
2227 | "\\tilde": "̃",
2228 | "\\times": "×",
2229 | "\\timesbar": "⨱",
2230 | "\\tminus": "⧿",
2231 | "\\to": "→",
2232 | "\\toea": "⤨",
2233 | "\\tona": "⤧",
2234 | "\\top": "⊤",
2235 | "\\topbot": "⌶",
2236 | "\\topcir": "⫱",
2237 | "\\topfork": "⫚",
2238 | "\\topsemicircle": "◠",
2239 | "\\tosa": "⤩",
2240 | "\\towa": "⤪",
2241 | "\\tplus": "⧾",
2242 | "\\trapezium": "⏢",
2243 | "\\trianglecdot": "◬",
2244 | "\\triangleleftblack": "◭",
2245 | "\\trianglelefteq": "⊴",
2246 | "\\triangleminus": "⨺",
2247 | "\\triangleodot": "⧊",
2248 | "\\triangleplus": "⨹",
2249 | "\\triangleq": "≜",
2250 | "\\trianglerightblack": "◮",
2251 | "\\trianglerighteq": "⊵",
2252 | "\\triangles": "⧌",
2253 | "\\triangleserifs": "⧍",
2254 | "\\triangletimes": "⨻",
2255 | "\\triangleubar": "⧋",
2256 | "\\tripleplus": "⧻",
2257 | "\\trslash": "⫻",
2258 | "\\turnangle": "⦢",
2259 | "\\turnediota": "℩",
2260 | "\\turnednot": "⌙",
2261 | "\\twocaps": "⩋",
2262 | "\\twocups": "⩊",
2263 | "\\twoheaddownarrow": "↡",
2264 | "\\twoheadleftarrow": "↞",
2265 | "\\twoheadleftarrowtail": "⬻",
2266 | "\\twoheadleftdbkarrow": "⬷",
2267 | "\\twoheadmapsfrom": "⬶",
2268 | "\\twoheadmapsto": "⤅",
2269 | "\\twoheadrightarrow": "↠",
2270 | "\\twoheaduparrow": "↟",
2271 | "\\twoheaduparrowcircle": "⥉",
2272 | "\\twolowline": "‗",
2273 | "\\twonotes": "♫",
2274 | "\\typecolon": "⦂",
2275 | "\\ubrbrak": "⏡",
2276 | "\\ularc": "◜",
2277 | "\\ulblacktriangle": "◤",
2278 | "\\ulcorner": "⌜",
2279 | "\\ultriangle": "◸",
2280 | "\\uminus": "⩁",
2281 | "\\underbar": "̱",
2282 | "\\underbrace": "⏟",
2283 | "\\underbracket": "⎵",
2284 | "\\underleftarrow": "⃮",
2285 | "\\underleftharpoondown": "⃭",
2286 | "\\underline": "̲",
2287 | "\\underparen": "⏝",
2288 | "\\underrightarrow": "⃯",
2289 | "\\underrightharpoondown": "⃬",
2290 | "\\upAlpha": "Α",
2291 | "\\upBeta": "Β",
2292 | "\\upChi": "Χ",
2293 | "\\upEpsilon": "Ε",
2294 | "\\upEta": "Η",
2295 | "\\upIota": "Ι",
2296 | "\\upKappa": "Κ",
2297 | "\\upMu": "Μ",
2298 | "\\upNu": "Ν",
2299 | "\\upOmicron": "Ο",
2300 | "\\upRho": "Ρ",
2301 | "\\upTau": "Τ",
2302 | "\\upUpsilon": "ϒ",
2303 | "\\upZeta": "Ζ",
2304 | "\\uparrow": "↑",
2305 | "\\uparrowbarred": "⤉",
2306 | "\\uparrowoncircle": "⦽",
2307 | "\\updasharrow": "⇡",
2308 | "\\updownarrow": "↕",
2309 | "\\updownarrowbar": "↨",
2310 | "\\updownarrows": "⇅",
2311 | "\\updownharpoonleftright": "⥍",
2312 | "\\updownharpoonrightleft": "⥌",
2313 | "\\updownharpoons": "⥮",
2314 | "\\upfishtail": "⥾",
2315 | "\\upharpoonleft": "↿",
2316 | "\\upharpoonright": "↾",
2317 | "\\upin": "⟒",
2318 | "\\upint": "⨛",
2319 | "\\uplus": "⊎",
2320 | "\\upomicron": "ο",
2321 | "\\uprightcurvearrow": "⤴",
2322 | "\\upsilon": "𝜐",
2323 | "\\upuparrows": "⇈",
2324 | "\\upupharpoons": "⥣",
2325 | "\\upvarTheta": "ϴ",
2326 | "\\upwhitearrow": "⇧",
2327 | "\\uranus": "♅",
2328 | "\\urarc": "◝",
2329 | "\\urblacktriangle": "◥",
2330 | "\\urcorner": "⌝",
2331 | "\\urtriangle": "◹",
2332 | "\\utilde": "̰",
2333 | "\\vBar": "⫨",
2334 | "\\vBarv": "⫩",
2335 | "\\vDash": "⊨",
2336 | "\\vDdash": "⫢",
2337 | "\\varVdash": "⫦",
2338 | "\\varbarwedge": "⌅",
2339 | "\\varbeta": "ϐ",
2340 | "\\varcarriagereturn": "⏎",
2341 | "\\varclubsuit": "♧",
2342 | "\\vardiamondsuit": "♦",
2343 | "\\vardoublebarwedge": "⌆",
2344 | "\\varepsilon": "𝜀",
2345 | "\\varheartsuit": "♥",
2346 | "\\varhexagon": "⬡",
2347 | "\\varhexagonblack": "⬢",
2348 | "\\varhexagonlrbonds": "⌬",
2349 | "\\varisins": "⋳",
2350 | "\\varkappa": "𝜘",
2351 | "\\varlrtriangle": "⊿",
2352 | "\\varniobar": "⋽",
2353 | "\\varnis": "⋻",
2354 | "\\varnothing": "∅",
2355 | "\\varointclockwise": "∲",
2356 | "\\varphi": "𝜑",
2357 | "\\varpi": "𝜛",
2358 | "\\varprod": "⨉",
2359 | "\\varrho": "𝜚",
2360 | "\\varsigma": "𝜍",
2361 | "\\varspadesuit": "♤",
2362 | "\\varstar": "✶",
2363 | "\\vartheta": "𝜗",
2364 | "\\vartriangleleft": "⊲",
2365 | "\\vartriangleright": "⊳",
2366 | "\\varveebar": "⩡",
2367 | "\\vbraceextender": "⎪",
2368 | "\\vdash": "⊢",
2369 | "\\vdots": "⋮",
2370 | "\\vec": "⃗",
2371 | "\\vectimes": "⨯",
2372 | "\\vee": "∨",
2373 | "\\veebar": "⊻",
2374 | "\\veedot": "⟇",
2375 | "\\veedoublebar": "⩣",
2376 | "\\veeeq": "≚",
2377 | "\\veemidvert": "⩛",
2378 | "\\veeodot": "⩒",
2379 | "\\veeonvee": "⩖",
2380 | "\\veeonwedge": "⩙",
2381 | "\\vertoverlay": "⃒",
2382 | "\\viewdata": "⌗",
2383 | "\\virgo": "♍",
2384 | "\\vlongdash": "⟝",
2385 | "\\vrectangle": "▯",
2386 | "\\vrectangleblack": "▮",
2387 | "\\vysmblksquare": "⬝",
2388 | "\\vysmwhtsquare": "⬞",
2389 | "\\vzigzag": "⦚",
2390 | "\\warning": "⚠",
2391 | "\\wasylozenge": "⌑",
2392 | "\\wedge": "∧",
2393 | "\\wedgebar": "⩟",
2394 | "\\wedgedot": "⟑",
2395 | "\\wedgedoublebar": "⩠",
2396 | "\\wedgemidvert": "⩚",
2397 | "\\wedgeodot": "⩑",
2398 | "\\wedgeonwedge": "⩕",
2399 | "\\whitearrowupfrombar": "⇪",
2400 | "\\whiteinwhitetriangle": "⟁",
2401 | "\\whitepointerleft": "◅",
2402 | "\\whitepointerright": "▻",
2403 | "\\whitesquaretickleft": "⟤",
2404 | "\\whitesquaretickright": "⟥",
2405 | "\\whthorzoval": "⬭",
2406 | "\\whtvertoval": "⬯",
2407 | "\\wideangledown": "⦦",
2408 | "\\wideangleup": "⦧",
2409 | "\\widebridgeabove": "⃩",
2410 | "\\wp": "℘",
2411 | "\\wr": "≀",
2412 | "\\xi": "𝜉",
2413 | "\\xsol": "⧸",
2414 | "\\yen": "¥",
2415 | "\\yinyang": "☯",
2416 | "\\zcmp": "⨟",
2417 | "\\zeta": "𝜁",
2418 | "\\zhide": "⧹",
2419 | "\\zpipe": "⨠",
2420 | "\\zproject": "⨡",
2421 | "\\{": "{",
2422 | "\\|": "‖",
2423 | "\\}": "}",
2424 | "^{(}": "⁽",
2425 | "^{)}": "⁾",
2426 | "^{+}": "⁺",
2427 | "^{-}": "⁻",
2428 | "^{0}": "⁰",
2429 | "^{1}": "¹",
2430 | "^{2}": "²",
2431 | "^{3}": "³",
2432 | "^{4}": "⁴",
2433 | "^{5}": "⁵",
2434 | "^{6}": "⁶",
2435 | "^{7}": "⁷",
2436 | "^{8}": "⁸",
2437 | "^{9}": "⁹",
2438 | "^{=}": "⁼",
2439 | "^{A}": "ᴬ",
2440 | "^{B}": "ᴮ",
2441 | "^{C}": "ꟲ",
2442 | "^{D}": "ᴰ",
2443 | "^{E}": "ᴱ",
2444 | "^{F}": "ꟳ",
2445 | "^{G}": "ᴳ",
2446 | "^{H}": "ᴴ",
2447 | "^{I}": "ᴵ",
2448 | "^{J}": "ᴶ",
2449 | "^{K}": "ᴷ",
2450 | "^{L}": "ᴸ",
2451 | "^{M}": "ᴹ",
2452 | "^{N}": "ᴺ",
2453 | "^{O}": "ᴼ",
2454 | "^{P}": "ᴾ",
2455 | "^{Q}": "ꟴ",
2456 | "^{R}": "ᴿ",
2457 | "^{T}": "ᵀ",
2458 | "^{U}": "ᵁ",
2459 | "^{V}": "ⱽ",
2460 | "^{W}": "ᵂ",
2461 | "^{\\ast}": "*",
2462 | "^{\\beta}": "ᵝ",
2463 | "^{\\chi}": "ᵡ",
2464 | "^{\\delta}": "ᵟ",
2465 | "^{\\epsilon}": "ᵋ",
2466 | "^{\\gamma}": "ᵞ",
2467 | "^{\\iota}": "ᶥ",
2468 | "^{\\phi}": "ᵠ",
2469 | "^{\\theta}": "ᶿ",
2470 | "^{\\upsilon}": "ᶹ",
2471 | "^{a}": "ᵃ",
2472 | "^{b}": "ᵇ",
2473 | "^{c}": "ᶜ",
2474 | "^{d}": "ᵈ",
2475 | "^{e}": "ᵉ",
2476 | "^{f}": "ᶠ",
2477 | "^{g}": "ᵍ",
2478 | "^{h}": "ʰ",
2479 | "^{i}": "ⁱ",
2480 | "^{j}": "ʲ",
2481 | "^{k}": "ᵏ",
2482 | "^{l}": "ˡ",
2483 | "^{m}": "ᵐ",
2484 | "^{n}": "ⁿ",
2485 | "^{o}": "ᵒ",
2486 | "^{p}": "ᵖ",
2487 | "^{q}": "𐞥",
2488 | "^{r}": "ʳ",
2489 | "^{s}": "ˢ",
2490 | "^{t}": "ᵗ",
2491 | "^{u}": "ᵘ",
2492 | "^{v}": "ᵛ",
2493 | "^{w}": "ʷ",
2494 | "^{x}": "ˣ",
2495 | "^{y}": "ʸ",
2496 | "^{z}": "ᶻ",
2497 | "_{(}": "₍",
2498 | "_{)}": "₎",
2499 | "_{+}": "₊",
2500 | "_{-}": "₋",
2501 | "_{0}": "₀",
2502 | "_{1}": "₁",
2503 | "_{2}": "₂",
2504 | "_{3}": "₃",
2505 | "_{4}": "₄",
2506 | "_{5}": "₅",
2507 | "_{6}": "₆",
2508 | "_{7}": "₇",
2509 | "_{8}": "₈",
2510 | "_{9}": "₉",
2511 | "_{=}": "₌",
2512 | "_{A}": "ₐ",
2513 | "_{E}": "ₑ",
2514 | "_{H}": "ₕ",
2515 | "_{I}": "ᵢ",
2516 | "_{J}": "ⱼ",
2517 | "_{K}": "ₖ",
2518 | "_{L}": "ₗ",
2519 | "_{M}": "ₘ",
2520 | "_{N}": "ₙ",
2521 | "_{O}": "ₒ",
2522 | "_{P}": "ₚ",
2523 | "_{R}": "ᵣ",
2524 | "_{S}": "ₛ",
2525 | "_{T}": "ₜ",
2526 | "_{U}": "ᵤ",
2527 | "_{V}": "ᵥ",
2528 | "_{X}": "ₓ",
2529 | "_{\\beta}": "ᵦ",
2530 | "_{\\chi}": "ᵪ",
2531 | "_{\\gamma}": "ᵧ",
2532 | "_{\\phi}": "ᵩ",
2533 | "_{\\rho}": "ᵨ",
2534 | "_{a}": "ₐ",
2535 | "_{e}": "ₑ",
2536 | "_{h}": "ₕ",
2537 | "_{i}": "ᵢ",
2538 | "_{j}": "ⱼ",
2539 | "_{k}": "ₖ",
2540 | "_{l}": "ₗ",
2541 | "_{m}": "ₘ",
2542 | "_{n}": "ₙ",
2543 | "_{o}": "ₒ",
2544 | "_{p}": "ₚ",
2545 | "_{r}": "ᵣ",
2546 | "_{s}": "ₛ",
2547 | "_{t}": "ₜ",
2548 | "_{u}": "ᵤ",
2549 | "_{v}": "ᵥ",
2550 | "_{x}": "ₓ",
2551 | "a": "𝑎",
2552 | "b": "𝑏",
2553 | "c": "𝑐",
2554 | "d": "𝑑",
2555 | "e": "𝑒",
2556 | "f": "𝑓",
2557 | "g": "𝑔",
2558 | "h": "ℎ",
2559 | "i": "𝑖",
2560 | "j": "𝑗",
2561 | "k": "𝑘",
2562 | "l": "𝑙",
2563 | "m": "𝑚",
2564 | "n": "𝑛",
2565 | "o": "𝑜",
2566 | "p": "𝑝",
2567 | "q": "𝑞",
2568 | "r": "𝑟",
2569 | "s": "𝑠",
2570 | "t": "𝑡",
2571 | "u": "𝑢",
2572 | "v": "𝑣",
2573 | "w": "𝑤",
2574 | "x": "𝑥",
2575 | "y": "𝑦",
2576 | "z": "𝑧",
2577 | }
2578 |
2579 |
2580 | HAS_ARG = {
2581 | "\\Big",
2582 | "\\Bigg",
2583 | "\\LVec",
2584 | "\\acute",
2585 | "\\bar",
2586 | "\\big",
2587 | "\\breve",
2588 | "\\check",
2589 | "\\ddddot",
2590 | "\\dddot",
2591 | "\\ddot",
2592 | "\\dot",
2593 | "\\grave",
2594 | "\\hat",
2595 | "\\left",
2596 | "\\lvec",
2597 | "\\mathbb",
2598 | "\\mathbf",
2599 | "\\mathbfit",
2600 | "\\mathcal",
2601 | "\\mathfrak",
2602 | "\\mathring",
2603 | "\\mathrm",
2604 | "\\mathsf",
2605 | "\\mathsfbf",
2606 | "\\mathsfbfit",
2607 | "\\mathsfit",
2608 | "\\mathtt",
2609 | "\\not",
2610 | "\\overleftrightarrow",
2611 | "\\overline",
2612 | "\\right",
2613 | "\\slash",
2614 | "\\spddot",
2615 | "\\sqrt",
2616 | "\\text",
2617 | "\\tilde",
2618 | "\\underbar",
2619 | "\\underleftarrow",
2620 | "\\underline",
2621 | "\\underrightarrow",
2622 | "\\utilde",
2623 | "\\vec",
2624 | "^",
2625 | "_",
2626 | }
2627 |
--------------------------------------------------------------------------------