(some) LaTeX environments for Jupyter notebook¶
This extension for Jupyter notebook enables the use of some LaTeX commands and environments markdown cells.
- 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
- support for some LaTeX commands within markdown cells, e.g.
- Citations and bibliography
- support for
\cite
with creation of a References section
- support for
- Document-wide numbering of equations and environments, support for
\label
and\ref
- Configuration toolbar
- LaTeX_envs dropdown menu for a quick insertion of environments
- User’s LaTeX definitions file can be loaded and used
- Export to HTML and LaTeX with a customized exporter
- Environments title/numbering can be customized by users in
user_envs.json
config file. - Styles can be customized in the
latex_env.css
stylesheet - Limited autocompletion for $, (, {, [
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. 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
and a pdf resulting from conversion to LaTeX is available 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,
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
install the notebook extension
jupyter nbextension install --py latex_envs [--user|--sys-prefix|--system]
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‘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.
- 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.