浏览代码

HTML export: Make better use of labels

Carsten Dominik 15 年之前
父节点
当前提交
aed051cf8c
共有 4 个文件被更改,包括 26 次插入12 次删除
  1. 4 0
      doc/ChangeLog
  2. 2 1
      doc/org.texi
  3. 4 0
      lisp/ChangeLog
  4. 16 11
      lisp/org-html.el

+ 4 - 0
doc/ChangeLog

@@ -1,3 +1,7 @@
+2010-03-29  Carsten Dominik  <carsten.dominik@gmail.com>
+
+	* org.texi (Images and tables): Document how to reference labels.
+
 2010-03-28  Carsten Dominik  <carsten.dominik@gmail.com>
 2010-03-28  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
 	* org.texi (Index entries): New section.
 	* org.texi (Index entries): New section.

+ 2 - 1
doc/org.texi

@@ -8418,7 +8418,8 @@ Both the native Org mode tables (@pxref{Tables}) and tables formatted with
 the @file{table.el} package will be exported properly.  For Org mode tables,
 the @file{table.el} package will be exported properly.  For Org mode tables,
 the lines before the first horizontal separator line will become table header
 the lines before the first horizontal separator line will become table header
 lines.  You can use the following lines somewhere before the table to assign
 lines.  You can use the following lines somewhere before the table to assign
-a caption and a label for cross references:
+a caption and a label for cross references, and in the text you can refer to
+the object with @code{\ref@{tab:basic-data@}}:
 
 
 @example
 @example
 #+CAPTION: This is the caption for the next table (or link)
 #+CAPTION: This is the caption for the next table (or link)

+ 4 - 0
lisp/ChangeLog

@@ -1,5 +1,9 @@
 2010-03-29  Carsten Dominik  <carsten.dominik@gmail.com>
 2010-03-29  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
+	* org-html.el (org-export-html-preprocess): Replace \ref macros
+	with a link.
+	(org-format-org-table-html): Add the label as an anchor.
+
 	* org-docbook.el (org-export-docbook-format-image): Do some
 	* org-docbook.el (org-export-docbook-format-image): Do some
 	formatting on captions.
 	formatting on captions.
 
 

+ 16 - 11
lisp/org-html.el

@@ -434,7 +434,16 @@ This may also be a function, building and inserting the postamble.")
 			(file-name-nondirectory
 			(file-name-nondirectory
 			 org-current-export-file)))
 			 org-current-export-file)))
      org-current-export-dir nil "Creating LaTeX image %s"))
      org-current-export-dir nil "Creating LaTeX image %s"))
-  (message "Exporting..."))
+  (goto-char (point-min))
+  (let (label l1)
+    (while (re-search-forward "\\\\ref{\\([^{}\n]+\\)}" nil t)
+      (org-if-unprotected-at (match-beginning 1)
+	(setq label (match-string 1))
+	(save-match-data
+	  (if (string-match "\\`[a-z]\\{1,10\\}:\\(.+\\)" label)
+	      (setq l1 (substring label (match-beginning 1)))
+	    (setq l1 label)))
+	(replace-match (format "[[#%s][l1]]" label l1) t t)))))
 
 
 ;;;###autoload
 ;;;###autoload
 (defun org-export-as-html-and-open (arg)
 (defun org-export-as-html-and-open (arg)
@@ -1600,16 +1609,10 @@ lang=\"%s\" xml:lang=\"%s\">
     ;; column and the special lines
     ;; column and the special lines
     (setq lines (org-table-clean-before-export lines)))
     (setq lines (org-table-clean-before-export lines)))
 
 
-  (let* ((caption (or (get-text-property 0 'org-caption (car lines))
-		      (get-text-property (or (next-single-property-change
-					      0 'org-caption (car lines))
-					     0)
-					 'org-caption (car lines))))
-	 (attributes (or (get-text-property 0 'org-attributes (car lines))
-			 (get-text-property (or (next-single-property-change
-						 0 'org-attributes (car lines))
-						0)
-					    'org-attributes (car lines))))
+  (let* ((caption (org-find-text-property-in-string 'org-caption (car lines)))
+	 (label (org-find-text-property-in-string 'org-label (car lines)))
+	 (attributes (org-find-text-property-in-string 'org-attributes
+						       (car lines)))
 	 (html-table-tag (org-export-splice-attributes
 	 (html-table-tag (org-export-splice-attributes
 			  html-table-tag attributes))
 			  html-table-tag attributes))
 	 (head (and org-export-highlight-first-table-line
 	 (head (and org-export-highlight-first-table-line
@@ -1692,6 +1695,8 @@ lang=\"%s\" xml:lang=\"%s\">
       ;; DocBook document, we want to always include the caption to make
       ;; DocBook document, we want to always include the caption to make
       ;; DocBook XML file valid.
       ;; DocBook XML file valid.
       (push (format "<caption>%s</caption>" (or caption "")) html)
       (push (format "<caption>%s</caption>" (or caption "")) html)
+      (when label (push (format "<a name=\"%s\" id=\"%s\"></a>" label label)
+			html))
       (push html-table-tag html))
       (push html-table-tag html))
     (concat (mapconcat 'identity html "\n") "\n")))
     (concat (mapconcat 'identity html "\n") "\n")))