Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parse labels in LaTeX Math #202

Open
chrisjsewell opened this issue Aug 11, 2020 · 3 comments
Open

Parse labels in LaTeX Math #202

chrisjsewell opened this issue Aug 11, 2020 · 3 comments
Labels
enhancement New feature or request

Comments

@chrisjsewell
Copy link
Member

chrisjsewell commented Aug 11, 2020

When #201 is merged, direct parsing of latex amsmath environments will be supported 馃槃
Currently, though it will not do anything with any environments containing \label{name}.
It would be good to parse these in a way that they can be referenced correctly by e.g. {eq}`name`

@chrisjsewell
Copy link
Member Author

chrisjsewell commented Aug 11, 2020

If you would like to see this feature implemented leave a 馃憤 reaction on the comment above (see https://executablebooks.org/en/latest/feature-vote.html)

@bknaepen
Copy link

bknaepen commented Nov 1, 2020

I use amsmath environment and equation labeling via \label{name} a lot so I'm definitely interested in this 馃榾. Here are some observations that I would like to share.

In Latex, if an environment line align contains several equations, each of them is numbered by default. For example,

\begin{align}
  a&=1 \label{eq1} \\
  b&=2 \label{eq2}
\end{align}

This is the first label: \ref{eq1}. This is the second label: \ref{eq2}.

is rendered as:

Screenshot 2020-11-01 at 09 37 47

If I add this align environment in a myst markdown file, it gets rendered like this when processed through jupyter-books:

Screenshot 2020-11-01 at 09 37 37

So only the environment as a whole is numbered, not the individual equations. I am new to JB but if I understand well, this is how sphynx behaves and I have not found info (yet) on how to get the numbering as in the regular Latex output.

For parsing the labels, this is where it can be tricky. In Latex, a label can be added to each equation in multiline environments and these may be used separately in \ref{} statements, like in the example above. In JB, if only the whole environment is numbered, this cannot work well, even if there is only one label as it can reference the second equation for example.

To be able to use amsmath environments and labels in my jupyter notebooks, I currently use the following workaround:

  1. Use on label per environment
  2. Place the label directly under the \begin{statement}

Using a python script, I then parse the myst markdown files and change all amsmath environments to myst directives with proper labels. Here is an example:

\begin{align}
\label{mylabel}
  a&=1  \\
  b&=2
\end{align}

becomes

```{math}
:label: eq1
a&=1  \\
b&=2
```

The python script also changes in the markdown file all the statement like \ref{mylabel} to roles like {eq}mylabel. This allows to have proper referencing of the equations in the final html output. But it won't solve the multiline/multi labels issue as only one label is allowed in this strategy. Using directives, it's not clear to me how to get multiple labels either.

@a7p
Copy link

a7p commented Jun 29, 2021

If you would like to see this feature implemented leave a +1 reaction on the comment above (see https://executablebooks.org/en/latest/feature-vote.html)

This issue has a lot of votes, but lacks the enhancement-label, hence it's not in that list.

@chrisjsewell chrisjsewell added the enhancement New feature or request label Jun 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants