From 72985e92ab75c6b261bbec46aab2648098aac444 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 16 Feb 2013 13:36:18 +0100 Subject: [PATCH] ox-texinfo: Fix fuzzy links to headlines * lisp/ox-texinfo.el (org-texinfo--get-node): New function. (org-texinfo-headline, org-texinfo-link): Use new function. The same function is used to create @node entries and links to nodes, to avoid any descrepency between them. --- lisp/ox-texinfo.el | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/lisp/ox-texinfo.el b/lisp/ox-texinfo.el index 20fa41d..3da567f 100644 --- a/lisp/ox-texinfo.el +++ b/lisp/ox-texinfo.el @@ -430,6 +430,17 @@ See `org-texinfo-text-markup-alist' for details." ;; Else use format string. (t (format fmt text))))) +(defun org-texinfo--get-node (headline info) + "Return node entry associated to HEADLINE. +INFO is a plist used as a communication channel." + (let ((menu-title (org-element-property :texinfo-menu-title headline))) + (org-texinfo--sanitize-menu + (replace-regexp-in-string + "%" "%%" + (if menu-title (org-export-data menu-title info) + (org-texinfo--sanitize-headline + (org-element-property :title headline) info)))))) + ;;; Headline sanitizing (defun org-texinfo--sanitize-headline (headline info) @@ -896,22 +907,12 @@ holding contextual information." (class-sectionning (assoc class org-texinfo-classes)) ;; Find the index type, if any (index (org-element-property :index headline)) - ;; Retrieve custom menu title (if any) - (menu-title (org-texinfo--sanitize-menu - (org-export-data - (org-element-property :texinfo-menu-title headline) - info))) ;; Retrieve headline text (text (org-texinfo--sanitize-headline (org-element-property :title headline) info)) ;; Create node info, to insert it before section formatting. ;; Use custom menu title if present - (node (format "@node %s\n" - (org-texinfo--sanitize-menu - (replace-regexp-in-string "%" "%%" - (if (not (string= "" menu-title)) - menu-title - text))))) + (node (format "@node %s\n" (org-texinfo--get-node headline info))) ;; Menus must be generated with first child, otherwise they ;; will not nest properly (menu (let* ((first (org-export-first-sibling-p headline info)) @@ -1180,8 +1181,7 @@ INFO is a plist holding contextual information. See ;; LINK points to an headline. Use the headline as the NODE target (headline (format "@ref{%s,%s}" - (or (org-element-property :texinfo-menu-title destination) - (org-element-property :title destination)) + (org-texinfo--get-node destination info) (or desc ""))) (otherwise (let ((path (org-export-solidify-link-text path))) @@ -1203,8 +1203,7 @@ INFO is a plist holding contextual information. See ;; LINK points to an headline. Use the headline as the NODE target (headline (format "@ref{%s,%s}" - (or (org-element-property :texinfo-menu-title destination) - (org-element-property :title destination)) + (org-texinfo--get-node destination info) (or desc ""))) (otherwise (let ((path (org-export-solidify-link-text path))) -- 1.8.1.3