From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Equation references in HTML export Date: Tue, 16 Jan 2018 19:09:09 +0100 Message-ID: <87efmpy8u2.fsf@nicolasgoaziou.fr> References: <87k1ww50uj.fsf@dell-desktop.WORKGROUP> <87shbj6zh5.fsf@nicolasgoaziou.fr> <87k1wughjp.fsf@dell-desktop.WORKGROUP> <87h8ru3eq8.fsf@nicolasgoaziou.fr> <87h8rtf3bo.fsf@dell-desktop.WORKGROUP> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52703) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebVfd-0007Xf-MF for emacs-orgmode@gnu.org; Tue, 16 Jan 2018 13:09:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebVfc-00066I-CF for emacs-orgmode@gnu.org; Tue, 16 Jan 2018 13:09:13 -0500 Received: from relay4-d.mail.gandi.net ([2001:4b98:c:538::196]:38515) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ebVfc-00065T-3E for emacs-orgmode@gnu.org; Tue, 16 Jan 2018 13:09:12 -0500 In-Reply-To: <87h8rtf3bo.fsf@dell-desktop.WORKGROUP> (Thibault Marin's message of "Wed, 10 Jan 2018 22:04:59 -0600") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Thibault Marin Cc: emacs-org list Hello, Thibault Marin 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 > ,---- > |
> | > | \begin{align} > | 1 + 1 = 0 > | \end{align} > | > | > | > | 1 > | > |
> `---- > - Link: > ,---- > | link to equation 1 > `---- > > 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