emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Equation references in HTML export


From: Nicolas Goaziou
Subject: Re: [O] Equation references in HTML export
Date: Tue, 16 Jan 2018 19:09:09 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)

Hello,

Thibault Marin <address@hidden> writes:

>> You may be right. In this case, we may use \eqref if MathJax is
>> going to be used (like your initial patch did), and do the above
>> otherwise.
>
> OK, I think that would work.  To summarize, here are the different
> outputs under MathJax and the other modes:
>
> - MathJax mode:
>   - Environment:
>     ,----
>     | \begin{align}
>     | \label{eq:org19c7f92}
>     | 1 + 1 = 0
>     | \end{align}
>     `----
>   - Link:
>     ,----
>     | link to \eqref{eq:org19c7f92}
>     `----
> - other modes, e.g. verbatim: (it is similar for the rest: dvipng,
>   imagemagick, etc).:
>   - Environment
>     ,----
>     | <div id="org19c7f92" class="equation-container">
>     | <span class="equation">
>     | \begin{align}
>     | 1 + 1 = 0
>     | \end{align}
>     | 
>     | </span>
>     | <span class="equation-label">
>     | 1
>     | </span>
>     | </div>
>     `----
>   - Link:
>     ,----
>     | link to equation <a href="#org19c7f92">1</a>
>     `----
>
> The attached patch produces this on my test cases.

It looks good. Thank you.

> I looked at other structures:
> - for figures, the caption is in a `figcaption' tag if HTML5 is used or
>   in a paragraph, both under the figure,
> - for tables, the caption is in a `caption' tag, at the top or bottom of
>   the environment depending on `:html-table-caption-above',
> - As far as I can tell, source blocks get no caption.
>
> Since there does not appear to have a common convention, I think the
> proposed output (see above with "equation-container", "equation" and
> "equation-label" tags) would be fine, if nobody objects.  Some CSS puts
> the label on the right side, as with LaTeX export or MathJax.  This only
> applies to the non-MathJax modes.

As a first step, it sounds acceptable, indeed. However, I assume it
would be useful to make all approaches converge on a single solution.

> I think I misunderstood what the caption does in ox-latex.  Here, in the
> MathJax case, just I need to insert the `\label' inside the latex
> environment, e.g. `\begin{equation}\label{org21321}' similar to what
> `org-latex-latex-environment' does.  The caption itself (the equation
> number) is always on the right of the equation, regardless of the mode
> (MathJax or other), so this is variable is not needed anymore.

OK.

> I hope the patch looks better now.  I have a few remaining questions:
>
> - The `org-html--is-math-environment' function relies on
>   `org-latex-math-environments-re' from ox-latex for the numbering
>   (numbering only equations, ignoring other environments).  Is it
>   acceptable?

I guess so. OTOH, I assume latex environments are always math
environments. One can use LaTex export blocks for "regular" LaTeX.

Nitpick: since this is a predicate, it should be named
`org-html--math-environment-p'.

> - In non-MathJax modes, I currently pre-process the latex environment to
>   change equation environments to their * version,
>   e.g. "\begin{equation}" -> "\begin{equation*}".  This is to prevent
>   the latex environment from adding its own labeling to the rendered
>   image.  This feels like a hack.  Is there a better way to achieve
>   this?

No idea. I hope a LaTeX expert can chime it.

Meanwhile, I think the implementation is a bit convoluted. What about
the following?

    (replace-regexp-in-string
     "\\`[ \t]*\\\\begin{\\([^*]+?\\)}"
     "\\1*"
     (replace-regexp-in-string "^[ \t]*\\\\end{\\([^*]+?\\)}[ \r\t\n]*\\'"
                               "\\1*"
                               latex-frag nil nil 1)
     nil nil 1)

> - The `org-html--insert-latex-environment-label' (the function that
>   inserts `\label' inside the environment also feels like a hack.  I
>   originally wanted to re-use the equivalent latex code, but maybe this
>   is simpler.  Do you think we can do better?

IMO, this doesn't deserve to be a function, you can just use something
like this:

    (if (org-string-nw-p label)
        (replace-regexp-in-string "\\`.*"
                                  (format "\\&\n\\\\label{%s}" label)
                                  latex-frag)
      latex-frag)

> - In the image modes (e.g. dvipng), I removed the following comment: ";;
>   Do not provide a caption or a name to be consistent with `mathjax'
>   handling."  I am not sure what it means and whether I should be
>   concerned about it.

IIUC, so far, Mathjax doesn't provide any caption, neither does dvipng.

> - I think I have been with messing this file enough now that I should
>   add tests.  I didn't see any tests for ox-latex or ox-html.  Is there
>   a reason for that?

They are not a priority. Bugs in export back-ends are usually visible
enough. Anyway this doesn't mean you cannot write some tests. Tests are
nice. However they are not mandatory in this case.

Regards,

-- 
Nicolas Goaziou                                                0x80A93738



reply via email to

[Prev in Thread] Current Thread [Next in Thread]