emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Bug: HTML export of equations leads to error [8.3.3 (8.3.3-17-gc


From: Derek Feichtinger
Subject: Re: [O] Bug: HTML export of equations leads to error [8.3.3 (8.3.3-17-gce80a0-elpaplus @ /home/dfeich/.emacs.d/elpa/org-plus-contrib-20160118/)]
Date: Sun, 24 Jan 2016 15:54:51 +0100

Hi

I was able to repair the problem by setting the temp buffer that is created
within ort-html-format-latex to org-mode. I put the function with the
added line marked by PATCH here:

#+BEGIN_SRC elisp
  (defun org-html-format-latex (latex-frag processing-type info)
    "Format a LaTeX fragment LATEX-FRAG into HTML.
  PROCESSING-TYPE designates the tool used for conversion.  It is
  a symbol among `mathjax', `dvipng', `imagemagick', `verbatim' nil
  and t.  See `org-html-with-latex' for more information.  INFO is
  a plist containing export properties."
    (let ((cache-relpath "") (cache-dir ""))
      (unless (eq processing-type 'mathjax)
        (let ((bfn (or (buffer-file-name)
                       (make-temp-name
                        (expand-file-name "latex" temporary-file-directory))))
              (latex-header
               (let ((header (plist-get info :latex-header)))
                 (and header
                      (concat (mapconcat
                               (lambda (line) (concat "#+LATEX_HEADER: " line))
                               (org-split-string header "\n")
                               "\n")
                              "\n")))))
          (setq cache-relpath
                (concat "ltxpng/"
                        (file-name-sans-extension
                         (file-name-nondirectory bfn)))
                cache-dir (file-name-directory bfn))
          ;; Re-create LaTeX environment from original buffer in
          ;; temporary buffer so that dvipng/imagemagick can properly
          ;; turn the fragment into an image.
          (setq latex-frag (concat latex-header latex-frag))))
      (with-temp-buffer
        (insert latex-frag)
        (org-mode) ; <---  PATCH
        (org-format-latex cache-relpath cache-dir nil "Creating LaTeX Image..."
                          nil processing-type)
        (buffer-string))))
#+END_SRC

Best regards,
Derek


On Sun, Jan 24, 2016 at 11:24 AM, Derek Feichtinger <address@hidden> wrote:
Dear Org maintainers

HTML export of equations leads to an error since my last update from
MELPA, yesterday. I can trace it back to the invocation of
org-element-context in a temporary buffer in fundamental mode. A more
exact analysis follows.

Emacs  : GNU Emacs 24.5.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
 of 2015-05-04 on dflt1w
Package: Org-mode version 8.3.3 (8.3.3-17-gce80a0-elpaplus @ /home/dfeich/.emacs.d/elpa/org-plus-contrib-20160118/)


The error can be reproduced using a minimal org file with these contents:

#+BEGIN_EXAMPLE
* Equation export error

  This equation produces an error on html export

  $$
    U = R \cdot I
  $$

#+END_EXAMPLE

Upon export to html the following error and backtrace result (I took
the liberty of cutting the lines to avoid special characters).

#+BEGIN_EXAMPLE
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  looking-at(nil)
  byte-code("\212\214~\210...
  org-element-context()
  org-format-latex("" "" nil "Creating LaTeX Image..." nil mathjax)
  org-html-format-latex("$$\n ...
  org-html-latex-fragment((latex-fragment ...
  org-export-data((latex-fragment ...
  #[(element)...
  mapconcat(#[(element)...
  org-export-data((paragraph...
  #[(element) "\302...
  mapconcat(#[(element)...
  org-export-data((section...
  #[(element) "\302...
  mapconcat(#[(element)...
  org-export-data((headline...
  #[(element) "\302...
  mapconcat(#[(element) "\302...
  org-export-data((org-data nil (headline (:raw-value "Equation export error" :begin 1 :end 108 :pre-blank 1 :contents-begin 26 :contents-end 104 :level 1 :priority nil :tags nil :todo-keyword nil :todo-type nil :post-blank 2 :footnote-section-p nil :archivedp nil :commentedp nil :post-affiliated 1 :title (#("Equation export error" 0 21 (:parent #1))) :parent #0) (section (:begin 26 :end 108 :contents-begin 26 :contents-end 104 :post-blank 2 :post-affiliated 26 :parent #1) (paragraph (:begin 26 :end 76 :contents-begin 26 :contents-end 75 :post-blank 1 :post-affiliated 26 :parent #2) #("This equation produces an error on html export\n" 0 47 (:parent #3))) (paragraph (:begin 76 :end 104 :contents-begin 76 :contents-end 104 :post-blank 0 :post-affiliated 76 :parent #2) "" (latex-fragment (:value "$$\n    U = R \\cdot I\n  $$" :begin 78 :end 103 :post-blank 0 :parent #3)) #("\n" 0 1 (:parent #3)))))) (:export-options nil :input-buffer "err-example.org" :input-file "/tmp/html-exp-error/err-example.org" :html-doctype "xhtml-strict" :html-container "div" :description nil :keywords nil :html-html5-fancy nil :html-link-use-abs-url nil :html-link-home "" :html-link-up "" :html-mathjax "" :html-postamble auto :html-preamble t :html-head "" :html-head-extra "" :subtitle nil :html-head-include-default-style t :html-head-include-scripts t :html-allow-name-attribute-in-anchors nil :html-divs ((preamble "div" "preamble") (content "div" "content") (postamble "div" "postamble")) :html-checkbox-type ascii :html-extension "html" :html-footnote-format "<sup>%s</sup>" :html-footnote-separator "<sup>, </sup>" ...))
  org-export-as(html nil nil nil (:output-file "./err-example.html"))
  org-export-to-file(html "./err-example.html" nil nil nil nil nil)
  org-html-export-to-html(nil nil nil nil)
  org-export-dispatch(nil)
  call-interactively(org-export-dispatch nil nil)
  command-execute(org-export-dispatch)
#+END_EXAMPLE

From the debugger I can see that the org-element-context is executed in a temporary buffer:

: Debugger Eval ((point)): 1
: Debugger Eval (major-mode): fundamental-mode
: Debugger Eval ((buffer-name)):  *temp*-831342
: Debugger Eval ((buffer-string)): $$
:     U = R \cdot I
:   $$


I can reproduce the error by creating a file and filling it with the contents
that "buffer-string" yielded and opening it in fundamental mode.
#+BEGIN_EXAMPLE
$$
    U = R \cdot I
$$
#+END_EXAMPLE

When I now execute "org-element-context" with point at 1 then I get the
same error:

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  looking-at(nil)
  byte-code("\212\214~\210...
  org-element-context()
  eval((org-element-context) nil)
  eval-_expression_((org-element-context) nil)
  call-interactively(eval-_expression_ nil nil)
  command-execute(eval-_expression_)

If the buffer is set to org-mode, the error does not appear, and org-element-context
correctly recognizes the text as a latex-fragment.


Best regards,
Derek



reply via email to

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