| 
					
				 | 
			
			
				@@ -389,31 +389,35 @@ references.  In such cases, LABEL is nil. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 References are sorted according to a deep-reading order." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (org-with-wide-buffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    (goto-char (point-min)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   (let ((regexp (format ".\\[fn:[-_[:word:]]%s[]:]" (if anonymous "*" "+"))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   (let ((regexp (if anonymous org-footnote-re "\\[fn:[-_[:word:]]+[]:]")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 references nested) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        (while (re-search-forward regexp nil t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (backward-char) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 (let ((context (org-element-context))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	   (when (eq (org-element-type context) 'footnote-reference) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (let* ((label (org-element-property :label context)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (begin (org-element-property :begin context)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		     (and (eq (org-element-property :type context) 'inline) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			  (- (org-element-property :contents-end context) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			     (org-element-property :contents-begin context))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	       (let ((d (org-element-lineage context '(footnote-definition)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 (push (list label (copy-marker begin) (not d) size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       references) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 (when d 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		   ;; Nested references are stored in alist NESTED. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		   ;; Associations there follow the pattern 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		   ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		   ;;   (DEFINITION-LABEL . REFERENCES) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		   (let* ((def-label (org-element-property :label d)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			  (labels (assoc def-label nested))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		     (if labels (push label (cdr labels)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (push (list def-label label) nested)))))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 ;; Ignore definitions. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (unless (and (eq (char-before) ?\]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		      (= (line-beginning-position) (match-beginning 0))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   ;; Ensure point is within the reference before parsing it. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (backward-char) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (let ((object (org-element-context))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (when (eq (org-element-type object) 'footnote-reference) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (let* ((label (org-element-property :label object)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		      (begin (org-element-property :begin object)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		      (size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       (and (eq (org-element-property :type object) 'inline) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    (- (org-element-property :contents-end object) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       (org-element-property :contents-begin object))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (let ((d (org-element-lineage object '(footnote-definition)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   (push (list label (copy-marker begin) (not d) size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 references) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   (when d 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     ;; Nested references are stored in alist NESTED. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     ;; Associations there follow the pattern 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     ;;   (DEFINITION-LABEL . REFERENCES) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     (let* ((def-label (org-element-property :label d)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    (labels (assoc def-label nested))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       (if labels (push label (cdr labels)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 (push (list def-label label) nested))))))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      ;; Sort the list of references.  Nested footnotes have priority 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      ;; over top-level ones. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      (letrec ((ordered nil) 
			 |