A lightweight LaTeX-to-Python parser
Project description
LaTeX-to-Python Parser (latex2py)
This is a lightweight LaTeX-to-Python parser.
We needed a parser that could convert LaTeX math expressions into Python-like expressions. However, SymPy is an extremely large library (~50 MB) and leads to bundle size issues when deploying code as an AWS lambda function (max. size 250MB). This codebase strips out the minimal code that we need, and is around ~200kb in size.
The parser is inspired by the sympy LaTeX parser, but instead of returning symbolic SymPy expressions, we return lines of Python-like code which could can then be evaluated in the interpreter.
Setup
Run poetry install to create a virtual environment and install dependencies.
You can also run poetry shell to activate the virtual environment.
Usage
from latex2py.parser import parse_latex
latex = r'\frac{1}{2} + \frac{3}{4}'
python = parse_latex(latex)
print(python) # "(1 / 2) + (3 / 4)"
# You can also evaluate the expression
result = eval(python)
print(result) # 1.25
Limitations
- Integrals and derivatives are not supported yet.
- The
\\sumand\\prodcommands are mapped to specialSum()andProduct()functions that the calling code will have to implement. See the tests for examples. - Strings like
helloare interpreted as implicit multiplication, sohellowill be interpreted ash * e * l * l * o. This is a limitation of the parser, and you will have to handle this case in your code. In a future version, we may want to add a flag that determines whether this is implicit multiplication or a variable name.
You can also adjust the parsing behavior using the Config object - see latex2py/config.py for more details.
Tests
Run pytest tests to run the test suite. You can find examples of parseable LaTeX syntex there too.
Re-Generating the Grammar (Advanced)
If you make changes to LaTeX.g4, you will need to regenerate the parser using the following commands:
pip install antlr4-tools
# This will download the antlr4 jar file if you don't have it already.
antlr4 LaTeX.g4 -o gen
The generated files will be in the gen directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file latex2py-0.1.3.tar.gz.
File metadata
- Download URL: latex2py-0.1.3.tar.gz
- Upload date:
- Size: 49.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.3 Darwin/23.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9af608ee4731e7b6be420708a51fe06cf023d7af39bad31cb1850129a34895c4
|
|
| MD5 |
04e73f9bafa88ec73d4f045ff7dcfbf6
|
|
| BLAKE2b-256 |
0544ccb3ab60341cd3801f1dfaba436d0a1cd9a69c68c7d1a7ff8b5188623391
|
File details
Details for the file latex2py-0.1.3-py3-none-any.whl.
File metadata
- Download URL: latex2py-0.1.3-py3-none-any.whl
- Upload date:
- Size: 52.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.3 Darwin/23.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80454b69c586cc6f9fe6604ee428ba80ce74e7e8a3ccac1e5cf75572025e8f5c
|
|
| MD5 |
9df4bb39e803f1201eff8f2e314326ad
|
|
| BLAKE2b-256 |
f600633034bfa6baf1037967a67a5d2777e6944097cf9d2e98835818cf74facd
|