Package: nrpylatex
NRPy+'s LaTeX Interface to SymPy (CAS) for General Relativityautomatic expansion ofEinstein summation conventionLevi-Civita and Christoffel symbolsLie and covariant derivativesmetric inverse and determinantautomatic index raising and loweringarbitrary coordinate system (default)exception handling and debugging§ InstallationTo installNRPyLaTeXusingPyPI, run the following command in the terminal$ pip install nrpylatex§ Exporting (CAS)If you are using Mathematica instead of SymPy, run the following code to convert your outputfrom sympy import mathematica_code

namespace = parse_latex(...)
for var in namespace:
    exec(f'{var} = mathematica_code({var})')If you are using a different CAS, reference the SymPydocumentationto find the relevant printing function.§ Interactive Tutorial (MyBinder)Quick Start|NRPy+ Integration|Guided Example (BSSN Formalism)§ Documentation and UsageGetting Started and API ReferenceSimple Example (Kretschmann Scalar)Python REPL or Script (*.py)>>> from nrpylatex import parse_latex
>>> parse_latex(r"""
...     % ignore "\begin{align}" "\end{align}"
...     \begin{align}
...         % coord [t, r, \theta, \phi]
...         % define gDD --dim 4 --zeros
...         % define G M --const
...         %% define Schwarzschild metric diagonal
...         g_{t t} &= -\left(1 - \frac{2GM}{r}\right) \\
...         g_{r r} &=  \left(1 - \frac{2GM}{r}\right)^{-1} \\
...         g_{\theta \theta} &= r^2 \\
...         g_{\phi \phi} &= r^2 \sin^2{\theta} \\
...         %% generate metric inverse gUU, determinant det(gDD), and connection GammaUDD
...         % assign gDD --metric
...         R^\alpha{}_{\beta \mu \nu} &= \partial_\mu \Gamma^\alpha_{\beta \nu} - \partial_\nu \Gamma^\alpha_{\beta \mu}
...             + \Gamma^\alpha_{\mu \gamma} \Gamma^\gamma_{\beta \nu} - \Gamma^\alpha_{\nu \sigma} \Gamma^\sigma_{\beta \mu} \\
...         K &= R^{\alpha \beta \mu \nu} R_{\alpha \beta \mu \nu}
...     \end{align}
... """)
('G', 'GammaUDD', 'gDD', 'gUU', 'epsilonUUUU', 'RUDDD', 'K', 'RUUUU', 'M', 'r', 'theta', 'RDDDD', 'gdet')
>>> from sympy import simplify
>>> print(simplify(K))
48*G**2*M**2/r**6IPython REPL or Jupyter NotebookIn [1]: %load_ext nrpylatex
In [2]: %%parse_latex
   ...: % ignore "\begin{align}" "\end{align}"
   ...: \begin{align}
   ...:     % coord [t, r, \theta, \phi]
   ...:     % define gDD --dim 4 --zeros
   ...:     % define G M --const
   ...:     %% define Schwarzschild metric diagonal
   ...:     g_{t t} &= -\left(1 - \frac{2GM}{r}\right) \\
   ...:     g_{r r} &=  \left(1 - \frac{2GM}{r}\right)^{-1} \\
   ...:     g_{\theta \theta} &= r^2 \\
   ...:     g_{\phi \phi} &= r^2 \sin^2{\theta} \\
   ...:     %% generate metric inverse gUU, determinant det(gDD), and connection GammaUDD
   ...:     % assign gDD --metric
   ...:     R^\alpha{}_{\beta \mu \nu} &= \partial_\mu \Gamma^\alpha_{\beta \nu} - \partial_\nu \Gamma^\alpha_{\beta \mu}
   ...:         + \Gamma^\alpha_{\mu \gamma} \Gamma^\gamma_{\beta \nu} - \Gamma^\alpha_{\nu \sigma} \Gamma^\sigma_{\beta \mu} \\
   ...:     K &= R^{\alpha \beta \mu \nu} R_{\alpha \beta \mu \nu}
   ...: \end{align}
Out[2]: ('G', 'GammaUDD', 'gDD', 'gUU', 'epsilonUUUU', 'RUDDD', 'K', 'RUUUU', 'M', 'r', 'theta', 'RDDDD', 'gdet')
In [3]: from sympy import simplify
In [4]: print(simplify(K))
Out[4]: 48*G**2*M**2/r**6