Hi Vicente,

Thanks for catching another bug.

Vicente Vera <vicente...@gmail.com> writes:

> Just tried to export an Org file to ODT but this error appeared (taken
> from the Messages buffer):
>
> ...
> LaTeX to MathML converter not available.
> Formatting LaTeX using verbatim
> OpenDocument export failed: Assertion failed: (funcall predicate element info)
>
> Tried with a MWE and with a minimal init.el (because of
> org-export-backends and the "odt" symbol) but the error persists.

Yeah, my guess is that the error is in org-odt-format-label.  It used to
be that an inline formula would not have a label.  But now it does.  So
label is non-nil.  The attached patch seems to fix it, but
org-odt-format-label is pretty fragile in its assumptions...

I also pushed a fix to org.el that may be related if you e.g. use
latexmlmath.

For the record, it can be reproduced with the following example from 
emacs -q.

—Rasmus

* set up                                                           :noexport:
#+BEGIN_SRC emacs-lisp
  (require 'ox-odt)
  (setq org-latex-to-mathml-convert-command
          "latexmlmath \"%i\" --presentationmathml=%o")
#+END_SRC
* test
  see \(x\)

-- 
Don't panic!!!
>From aad7dd24864f3ce988a67061a391d85e649aa375 Mon Sep 17 00:00:00 2001
From: Rasmus <ras...@gmx.us>
Date: Thu, 23 Apr 2015 12:35:43 +0200
Subject: [PATCH 1/2] ox-odt: Fix bug links without labels.

* ox-odt.el (org-odt-format-label): Determine label more carefully.

Reported-by: Vicente Vera <vicente...@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/97090>
---
 lisp/ox-odt.el | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/lisp/ox-odt.el b/lisp/ox-odt.el
index a8544a4..faf0b1c 100644
--- a/lisp/ox-odt.el
+++ b/lisp/ox-odt.el
@@ -2152,13 +2152,15 @@ Return value is a string if OP is set to `reference' or a cons
 cell like CAPTION . SHORT-CAPTION) where CAPTION and
 SHORT-CAPTION are strings."
   (assert (memq (org-element-type element) '(link table src-block paragraph)))
-  (let* ((caption-from
+  (let* ((element-or-parent
 	  (case (org-element-type element)
 	    (link (org-export-get-parent-element element))
 	    (t element)))
 	 ;; Get label and caption.
-	 (label (org-export-get-reference element info))
-	 (caption (let ((c (org-export-get-caption caption-from)))
+	 (label (and (or (org-element-property :name element)
+			 (org-element-property :name element-or-parent))
+		     (org-export-get-reference element-or-parent info)))
+	 (caption (let ((c (org-export-get-caption element-or-parent)))
 		    (and c (org-export-data c info))))
 	 ;; FIXME: We don't use short-caption for now
 	 (short-caption nil))
-- 
2.3.6

Reply via email to