From 60899b1a2f2ac9cdcfd6df6ea485ef543298f96f Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Tue, 18 Jun 2013 22:27:39 +0200 Subject: [PATCH 1/2] ox: Fix fuzzy link resolution before first headline * lisp/ox.el (org-export-resolve-fuzzy-link): Fix link resolution when link lives before the first headline. * testing/lisp/test-ox.el: Add test. --- lisp/ox.el | 3 ++- testing/lisp/test-ox.el | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lisp/ox.el b/lisp/ox.el index 66d68acac..f656af5ad 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -4050,7 +4050,8 @@ significant." (let ((foundp (funcall find-headline path parent))) (when foundp (throw 'exit foundp)))) (let ((parent-hl (org-export-get-parent-headline link))) - (cons parent-hl (org-export-get-genealogy parent-hl)))) + (if (not parent-hl) (list (plist-get info :parse-tree)) + (cons parent-hl (org-export-get-genealogy parent-hl))))) ;; No destination found: return nil. (and (not match-title-p) (puthash path nil link-cache)))))))) diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index c85d1ddcd..cbae08a82 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -1642,7 +1642,14 @@ Another text. (ref:text) (should-not (org-test-with-parsed-data "[[target]]" (org-export-resolve-fuzzy-link - (org-element-map tree 'link 'identity info t) info)))) + (org-element-map tree 'link 'identity info t) info))) + ;; Match fuzzy link even when before first headline. + (should + (eq 'headline + (org-test-with-parsed-data "[[hl]]\n* hl" + (org-element-type + (org-export-resolve-fuzzy-link + (org-element-map tree 'link 'identity info t) info)))))) (ert-deftest test-org-export/resolve-id-link () "Test `org-export-resolve-id-link' specifications." From 7b8a79326fae64f40b20e3a50c02a5a40f1c0b62 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Tue, 18 Jun 2013 22:44:26 +0200 Subject: [PATCH 2/2] ox-latex: Allow hyperref and footnotemark in items description tags * lisp/ox-latex.el (org-latex-item): Allow hyperref and footnotemark in items description tags. Also remove a unnecessary hack allowing footnotemark with an optional argument in the tag. Initial patch from Rick Frankel. --- lisp/ox-latex.el | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el index 289125afb..5bb746d70 100644 --- a/lisp/ox-latex.el +++ b/lisp/ox-latex.el @@ -1325,20 +1325,6 @@ CONTENTS is nil. INFO is a plist holding contextual information." (when (eq (org-element-type prev) 'footnote-reference) org-latex-footnote-separator)) (cond - ;; Use \footnotemark if reference is within an item's tag. - ((eq (org-element-type (org-export-get-parent-element footnote-reference)) - 'item) - (if (org-export-footnote-first-reference-p footnote-reference info) - "\\footnotemark" - ;; Since we can't specify footnote number as an optional - ;; argument within an item tag, some extra work has to be done - ;; when the footnote has already been referenced. In that - ;; case, set footnote counter to the desired number, use the - ;; footnotemark, then set counter back to its original value. - (format - "\\setcounter{footnote}{%s}\\footnotemark\\setcounter{footnote}{%s}" - (1- (org-export-get-footnote-number footnote-reference info)) - (org-latex--get-footnote-counter footnote-reference info)))) ;; Use \footnotemark if the footnote has already been defined. ((not (org-export-footnote-first-reference-p footnote-reference info)) (format "\\footnotemark[%s]{}" @@ -1612,7 +1598,7 @@ contextual information." (trans "$\\boxminus$ "))) (tag (let ((tag (org-element-property :tag item))) ;; Check-boxes must belong to the tag. - (and tag (format "[%s] " + (and tag (format "[{%s}] " (concat checkbox (org-export-data tag info))))))) (concat counter "\\item" (or tag (concat " " checkbox))