Explorar el Código

ox-texinfo: Preserve target name as node.

* lisp/ox-texinfo.el (org-texinfo--get-node): Use target's value as
  base for the node name, instead of using `org-export-get-reference'.
Nicolas Goaziou hace 8 años
padre
commit
04f35fc473
Se han modificado 1 ficheros con 14 adiciones y 7 borrados
  1. 14 7
      lisp/ox-texinfo.el

+ 14 - 7
lisp/ox-texinfo.el

@@ -466,18 +466,25 @@ INFO is a plist used as a communication channel.  See
 
 (defun org-texinfo--get-node (datum info)
   "Return node or anchor associated to DATUM.
-DATUM is an element or object.  INFO is a plist used as
-a communication channel.  The function guarantees the node or
-anchor name is unique."
+DATUM is a headline, a radio-target or a target.  INFO is a plist
+used as a communication channel.  The function guarantees the
+node or anchor name is unique."
   (let ((cache (plist-get info :texinfo-node-cache)))
     (or (cdr (assq datum cache))
 	(let* ((salt 0)
 	       (basename
 		(org-texinfo--sanitize-node
-		 (if (eq (org-element-type datum) 'headline)
-		     (org-texinfo--sanitize-title
-		      (org-export-get-alt-title datum info) info)
-		   (org-export-get-reference datum info))))
+		 (pcase (org-element-type datum)
+		   (`headline
+		    (org-texinfo--sanitize-title
+		     (org-export-get-alt-title datum info) info))
+		   (`radio-target
+		    (org-texinfo--sanitize-title
+		     (org-element-contents datum) info))
+		   (`target
+		    (org-export-data (org-element-property :value datum) info))
+		   (type
+		    (error "Cannot generate node name for type: %S" type)))))
 	       (name basename))
 	  ;; Ensure NAME is unique and not reserved node name "Top".
 	  (while (or (equal name "Top") (rassoc name cache))