t...@tsdye.com (Thomas S. Dye) writes: > Nicolas Goaziou <n.goaz...@gmail.com> writes: > >> t...@tsdye.com (Thomas S. Dye) writes: >> >>> I think the new code to handle split links has broken links that aren't >>> split. >>> >>> Here is an ECM: >>> >>> * Headline to split >>> >>> [[Headline >>> to split]] >>> >>> [[Headline to split]], not! >> >> This should be fixed. Could you confirm it? > > Au contraire. Here's what I get with the ECM I sent earlier: > > @node Headline to split > @chapter Headline to split > > @ref{(Headline to split),} > > @ref{(Headline to split),}, not! > > Now, both the links are broken :(
This is good news: the problem is now consistent ;) Anyway, these links export fine to LaTeX, HTML and ASCII, which means the problem now resides in ox-texinfo.el. I attach a suggested solution for the problem. Cc'ed Jonathan so he can choose whether to apply it or not. Regards, -- Nicolas Goaziou
>From 72985e92ab75c6b261bbec46aab2648098aac444 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou <n.goaz...@gmail.com> 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