Skip to main content

Jupyter notebook extension which supports (some) LaTeX environments within markdown cells. Also provides support for labels and crossreferences, document wide numbering, bibliography, and more...

Project description

This extension for Jupyter notebook enables the use of some LaTeX commands and environments markdown cells.

  1. LaTeX commands and environments

    • support for some LaTeX commands within markdown cells, e.g. \textit, \textbf, \underline.

    • support for theorems-like environments, support for labels and cross references

    • support for lists: enumerate, itemize,

    • limited support for a figure environment,

    • support for an environment listing,

    • additional textboxa environment

  2. Citations and bibliography

    • support for \cite with creation of a References section

  3. Document-wide numbering of equations and environments, support for ``label`` and ``ref``

  4. Configuration toolbar

  5. LaTeX_envs dropdown menu for a quick insertion of environments

  6. User’s LaTeX definitions file can be loaded and used

  7. Export to plain HTML, Slides and LaTeX with a customized exporter

  8. Environments title/numbering can be customized by users in user_envs.json config file.

  9. Styles can be customized in the latex_env.css stylesheet

  10. Autocompletion for $, (, {, [, for LaTeX commands and environments

More environments can be simply added in user_envs.json or in the source file (thmsInNb4.js).

It is possible to export the notebooks to plain \(\LaTeX\) and html while keeping all the features of the latex_envs notebook extension in the converted version. We provide specialized exporters, pre and post processors, templates. We also added entry-points to simplify the conversion process. It is now as simple as

jupyter nbconvert --to html_with_lenvs FILE.ipynb

or

jupyter nbconvert --to latex_with_lenvs FILE.ipynb

to convert FILE.ipynb into html/latex while keeping all the features of the latex_envs notebook extension in the converted version. Other options are slides_with_lenvs for converting to reveal-js presentations, and html_with_toclenvs to include a table of contents. The LaTeX converter also expose several conversion options (read the docs).

Demo/documentation

The doc subdirectory that constains an example notebook and its html and pdf versions. This serves as the documentation. A demo notebook latex_env_doc.ipynb is provided. Its html version is latex_env_doc.html serves as documentation.

Installation

The extension consists of a pypi package that includes a javascript notebook extension, along with python code for nbconvert support. Since Jupyter 4.2, pypi is the recommended way to distribute nbextensions. The extension can be installed

  • from the master version on the github repo (this will be always the most recent version)

  • via pip for the version hosted on Pypi

  • via conda, from the conda-forge channel

  • as part of the great jupyter_contrib_nbextensions collection. Follow the instructions there for installing. Once this is done, you can open a tab at http://localhost:8888/nbextensions to enable and configure the various extensions.

From the github repo or from Pypi,

  1. install the package

    • pip3 install https://github.com/jfbercher/jupyter_latex_envs/archive/master.zip [--user][--upgrade]

    • or pip3 install jupyter_latex_envs [--user][--upgrade]

    • or clone the repo and install git clone https://github.com/jfbercher/jupyter_latex_envs.git python3 setup.py install

  2. install the notebook extension

    jupyter nbextension install --py latex_envs [--user|--sys-prefix|--system]
  3. and enable it

    jupyter nbextension enable --py latex_envs [--user|--sys-prefix|--system]

For Jupyter versions before 4.2, the situation after step 1 is more tricky, since the --py option isn’t available, so you will have to find the location of the source files manually as follows (instructions adapted from [@jcb91](https://github.com/jcb91)’s jupyter_highlight_selected_word). Execute

python -c "import os.path as p; from latex_envs import __file__ as f, _jupyter_nbextension_paths as n; print(p.normpath(p.join(p.dirname(f), n()[0]['src'])))"

Then, issue

jupyter nbextension install <output source directory>
jupyter nbextension enable latex_envs/latex_envs

where <output source directory> is the output of the first python command.

Disclaimer, sources and acknowledgments

Originally, I used a piece of code from the nice online markdown editor stackedit, where the authors also considered the problem of incorporating LaTeX markup in their markdown.

I also studied and used examples and code from ipython-contrib/jupyter_contrib_nbextensions.

  • This is done in the hope it can be useful. However there are many impovements possible, in the code and in the documentation. Contributions will be welcome and deeply appreciated.

  • If you have issues, please post an issue at https://github.com/jfbercher/jupyter_latex_envs/issues here.

Self-Promotion – Like latex_envs? Please star and follow the repository on GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyter_latex_envs-1.4.6.tar.gz (861.7 kB view details)

Uploaded Source

File details

Details for the file jupyter_latex_envs-1.4.6.tar.gz.

File metadata

  • Download URL: jupyter_latex_envs-1.4.6.tar.gz
  • Upload date:
  • Size: 861.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for jupyter_latex_envs-1.4.6.tar.gz
Algorithm Hash digest
SHA256 070a31eb2dc488bba983915879a7c2939247bf5c3b669b398bdb36a9b5343872
MD5 62c1471a0d771a90401b7df6b18a2ee5
BLAKE2b-256 0e1555805de080d5542f76920364635e96e64d3b37f678befdfe3b16aa154205

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page