The theme aims at combining the flexibility and interactivity of Jupyter notebooks with the unique elegance and sobriety of a LaTeX
article.
- Computer Modern fonts for Markdown typesetting;
Fira Code
(open source) font for Code editor (with ligatures support);Hack
(open source) font for Markdown editor (slightly better for text writing, ed.);- Multiple Colour Syntax highlighting themes;
- Extra
CSS
classes for additional LaTeX-ish formatting use cases (e.g. footnotes, dropcap); - Full support for Jupyter Notebooks and JupyterLab (version
2.0x
).
Here is a Preview of how [a] noTeXbook
looks like!
The noTeXbook
theme is available on PyPi as a Jupyter Notebook
(Python) extension:
$ pip install notexbook-theme
Once installed, just load
the notexbook
extension into a Jupyter notebook cell:
%load_ext notexbook
The theme can be activated via the %texify
IPython magic 🔮:
%texify # default theme settings will be used
The %texify
IPython magic embeds the noTeXbook
theme directly into the current notebook.
This results into the following three unique features:
-
on-demand activation: the theme is enabled only for selected notebooks, without having to change the (global) default Jupyter notebook theme.
-
portable: the theme is embedded directly into the notebook (as the output of a single cell). Therefore, whenever the notebook will be shared and/or exported (e.g. in HTML or PDF via
webpdf
), the theme will continue to be available, with no extra installation required. Similarly, disabling the theme becomes as easy as clearing the output of the%texify
cell. -
customisable: the theme allows for an easy customisation (e.g. enabling multiple editor themes) via
IPython magic
line arguments.
The %texify
IPython magic 🔮 supports the following arguments:
-cdth <{material,github,github2,crisp}>, --code-theme <{material,github,github2,crisp}>
Colour Theme for Code Editor
-mdth <{material,typora}>, --md-theme <{material,typora}>
Colour Theme for Markdown Editor
-cdfs CODE_MONO_FONT_SIZE, --code-fontsize CODE_MONO_FONT_SIZE
Font size used in Code and Markdown Editor. Default: 16px
-mdfs MD_MONO_FONT_SIZE, --md-fontsize MD_MONO_FONT_SIZE
Font size of Rendered Markdown monospace. Default: 17px
-nbfs NB_FONT_SIZE, --notebook-font-size NB_FONT_SIZE
Font size of Rendered Content in Notebook. Default: 17px
-lh NB_LINE_HEIGHT, --linespread NB_LINE_HEIGHT
Line height of Notebook Content. Default: 1.4
-v, --verbose
Verbose mode: Display the list of enabled Theme settings.
Examples:
%texify --code-font Monaco --linespread 1.3 -fs 18
In these settings: (1) the Monaco
font will be used for code editor; (2) notebook font size will be set to 18px
,
and the line height will be 1.3
.
Note: To actually use the Monaco
font for code editor, the font must be available and installed on your local machine.
If that is not be the case, the default code mono font (i.e. Fira Code
) will be used as a fallback.
%texify --code-theme github
In these settings, the new github
Code Editor theme will be used for code syntax highlighting, substituting the
default Material Design theme. This theme is inspired by the current code theme on GitHub.
To see the full list of configuration options :
%texify?
The noTeXbook
theme is also available as a full-fledged custom Jupyter notebook theme (HTML/CSS).
This is useful in case you would prefer to enable the theme as the global custom default Jupyter theme.
The noTeXbook
theme package is available for download,
along with its corresponding documentation.
The documentation also contains details on the original CSS design, and instructions on how to define
your own CSS Editor Colour theme.
Last but not least, Experimental theme integration for Google Colaboratory Notebooks (via the Stylus browser extension) is also available. See here for more information.
When I had to think to a name for this project, I aimed almost immediately at finding a single word that would
convey the idea of integration between LaTeX
and notebooks I had in mind.
So
seemed quite an obvious choice.
Moreover, this name itself is also a unique portmanteau
(port·man·teau | \ pȯrt-ˈman-(ˌ)tō
) that blends together the words noTeXbook, and
noTeXbook, that is the name of Donald E. Knuth's
book on TeX
.
That was the omen... 🤩.
One!... Two!... Five!
(from: The Holy Hand Grenade - Monty Python and the Holy Grail)
The project wishes to pay a tribute of gratitude (in the name, and in the content) to two of the technologies I do use (and love) the most as a researcher and as a data scientist.
- The
spinzero
jupyter theme has been inspirational in the design of the early version of this theme; - The idea of overlay of selected cells has been inspired from this custom theme.
- Inspiration on the choice of Monospace fonts for code and markdown has come from this article
- Original versions of colour themes for code and markdown editors:
(Some links I found useful along the way):
- Computer Modern on the Web
setuptools
: Specify Dependencies- How to Add Custom
setup.py
commands pyproject.toml
- What the heck is
pyproject.toml
- Jupyter Server Extension (Particularly useful in earlier version of this project in which fonts where handled as local resources)
Special thanks to cdesio, ninadicara, and alanderex for testing earlier versions of the theme!