Equation numbering in Jupyter notebooks

Question:

The fact is, that in official documentation Jupyter – motivating examples stands

Equation numbering and referencing will be available in a future version of the Jupyter notebook.

I know there is a lot of discussion about this topic. There are some people who claim to solve this issue with some workarounds.

But for ordinary user it is hard to understand the workarounds, or how dirty/useful the hacks really are.

So my questions are:

  1. what means the “available in future version”? Does it mean something like “new month/year” or something like “probably never because it is too impossible”?

  2. If any of the workarounds provided on the Internet safe for a human consumption? I mean is it worthy? Because it is possible to use Sphinx or something else for creation of tutorials, it will be more work, but it will be more work that implementing some hacks, installing plug-ins and so on?

Note: For somebody it could seems to be a question requiring opinion based answer, but I am pretty sure it is not. Any advice can help me (or others users) to make a good/bad decision.

Asked By: matousc

||

Answers:

I believe that essentially all information relevant to this question can be found in this long Github issue thread.

The conversation there has been ongoing for (at this moment) 3.5 6.5 8 years and is still active. Important highlights:

  • You can very simply turn on numbering by executing a cell with the following content:

    %%javascript
    MathJax.Hub.Config({
        TeX: { equationNumbers: { autoNumber: "AMS" } }
    });
    
  • There is an extension for equation numbering.

  • Developer minrk has suggested that this extension is the right approach and could be merged into master (but the functionality would be turned off by default).

To install the extension via pip:

pip install jupyter_contrib_nbextensions

To install the extensions via Anaconda:

conda install -c conda-forge jupyter_contrib_nbextensions 

After using one of the ways to install provided above, enable the extension:

jupyter contrib nbextension install --user
jupyter nbextension enable equation-numbering/main
Answered By: David Ketcheson

Go to your Jupyter Notebook editor (I am using Anaconda right now), Edit menu, the last item ‘nbextensions config’. It opens a page where you can see a list of extensions, one of which is “Equation Auto Numbering”. Enable it and restart your notebook. You will see that a button appears on the top of your notebook for resetting the numbering of equations. You will need to press that button every now and then.

Answered By: Father Geppeto

Here is a working example, to be entered in a markdown cell:

begin{equation*}
mathbf{r} equiv begin{bmatrix}
y \
theta
end{bmatrix}
label{eq:vector_ray} tag{1}
end{equation*}

Vector **r** is defined by equation $eqref{eq:vector_ray}$

It’s self explanatory but here’s some details:

label : name describing he equation

tag : the label appearing next to the equationcan be a number or letters

eqref : reference to the labeled equation

This will be shown as:
enter image description here

Answered By: calocedrus

A quick follow-up on cross cell references for all JupyterLab users:

Since (to my knowledge) jupyter_contrib_nbextensions do not work with JupyterLab, you can just use the code from the equation-numbering extension directly in your notebooks. This is how it kind of worked for me:

Cell A (code cell):

%%javascript
MathJax.Hub.Config({
    TeX: { equationNumbers: { autoNumber: "AMS" } }
});

Cell B (code cell):

%%javascript
MathJax.Hub.Queue(
  ["resetEquationNumbers", MathJax.InputJax.TeX],
  ["PreProcess", MathJax.Hub],
  ["Reprocess", MathJax.Hub]
);

Cell C (markdown cell):

begin{equation}
    a = b + c label{eq:some_eq}
end{equation}

This is a same-cell reference to Eq. ref{eq:some_eq}.

Cell D (markdown cell):

This is a cross cell reference to Eq. ref{eq:some_eq}

For the cross-cell reference to work you have to run cell B again after running cell D (this also answers the question in @jrive’s comment but appearently I don’t have enugh reputation to write a comment).

I say it "kind of worked" because there is one problem: So far I could not figure out how to make the auto-numbering work properly across multiple notebooks. If I reset the numbering as described above, the equations are numbered in the same order the cells were run (not sure about this though, it sometimes seems a bit random), regardless of the notebook they belong to. So you might end up having Eq. 1, 2 and 4 in one notebook and Eq. 3 in the second. This might look somewhat weird, but at least all references link to the correct equation…
Maybe someone has a solution for this?

Answered By: waddles
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.