| 
					
				 | 
			
			
				@@ -720,46 +720,15 @@ channel." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Transcode a LINK object into Beamer code. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 CONTENTS is the description part of the link.  INFO is a plist 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 used as a communication channel." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  (let ((type (org-element-property :type link))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (cond 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ;; Link type is handled by a special function. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ((org-export-custom-protocol-maybe link contents 'beamer)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ;; Use \hyperlink command for all internal links. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ((equal type "radio") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (let ((destination (org-export-resolve-radio-link link info))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(if (not destination) contents 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (format "\\hyperlink%s{%s}{%s}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (or (org-beamer--element-has-overlay-p link) "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (org-export-get-reference destination info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  contents)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ((and (member type '("custom-id" "fuzzy" "id")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	   (let ((destination (if (string= type "fuzzy") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				  (org-export-resolve-fuzzy-link link info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				(org-export-resolve-id-link link info)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	     (cl-case (org-element-type destination) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	       (headline 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(let ((label 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (format "sec-%s" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			       (mapconcat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				'number-to-string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				(org-export-get-headline-number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				 destination info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				"-")))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (if (and (plist-get info :section-numbers) (not contents)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		      (format "\\ref{%s}" label) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (format "\\hyperlink%s{%s}{%s}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			    (or (org-beamer--element-has-overlay-p link) "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			    label 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			    contents)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	       (target 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(let ((ref (org-export-get-reference destination info))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (if (not contents) (format "\\ref{%s}" ref) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (format "\\hyperlink%s{%s}{%s}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			    (or (org-beamer--element-has-overlay-p link) "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			    ref 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			    contents)))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     ;; Otherwise, use `latex' back-end. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     (t (org-export-with-backend 'latex link contents info))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (or (org-export-custom-protocol-maybe link contents 'beamer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ;; Fall-back to LaTeX export.  However, if link is becomes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ;; a "\hyperlink" macro, try to sneak in Beamer overlay 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ;; specification, if any. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (let ((latex-link (org-export-with-backend 'latex link contents info)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (overlay (org-beamer--element-has-overlay-p link))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(if (and overlay (string-match "\\`\\\\hyperlink" latex-link)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (replace-match (concat "\\&" overlay) nil nil latex-link) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  latex-link)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;;; Plain List 
			 |