From 793f69627fa290c95d41c0af9792fdafdda98b06 Mon Sep 17 00:00:00 2001 From: Yoshinari Nomura Date: Sat, 29 Jun 2013 14:44:52 +0900 Subject: [PATCH 1/3] ox-html: add figure and table numbers to HTML captions * lisp/ox-html.el: (org-html--has-caption-p): New function. (org-html-link--inline-image), (org-html-table): Prepend ordinal number to caption. (org-html-link): Make numbered link by counting captioned figures and tables. --- lisp/ox-html.el | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/lisp/ox-html.el b/lisp/ox-html.el index a996b40..30b23ca 100644 --- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -1370,6 +1370,13 @@ (defun org-html--textarea-block (element) (or (plist-get attr :height) (org-count-lines code)) code))) +(defun org-html--has-caption-p (element &optional info) + "Non-nil when ELEMENT has a caption affiliated keyword. +INFO is a plist used as a communication channel. This function +is meant to be used as a predicate for `org-export-get-ordinal' or +a value to `org-html-standalone-image-predicate'." + (org-element-property :caption element)) + ;;;; Table (defun org-html-htmlize-region-for-paste (beg end) @@ -2532,7 +2539,15 @@ (defun org-html-link--inline-image (link desc info) (expand-file-name raw-path)) (t raw-path))) (parent (org-export-get-parent-element link)) - (caption (org-export-data (org-export-get-caption parent) info)) + (caption + (let ((raw (org-export-data (org-export-get-caption parent) info)) + (org-html-standalone-image-predicate 'org-html--has-caption-p)) + (if (org-string-nw-p raw) + (concat (format (org-html--translate "Figure %d:" info) + (org-export-get-ordinal + link info nil 'org-html-standalone-image-p)) + " " raw) + raw))) (label (org-element-property :name parent))) ;; Return proper string, depending on DISPOSITION. (org-html-format-inline-image @@ -2725,14 +2740,19 @@ (defun org-html-link (link desc info) (org-export-solidify-link-text href) attributes desc))) ;; Fuzzy link points to a target. Do as above. (t - (let ((path (org-export-solidify-link-text path)) number) + (let* ((path (org-export-solidify-link-text path)) number + (caption-predicate + (if (org-html--has-caption-p destination) + 'org-html--has-caption-p)) + (org-html-standalone-image-predicate caption-predicate)) (unless desc (setq number (cond ((org-html-standalone-image-p destination info) (org-export-get-ordinal (assoc 'link (org-element-contents destination)) info 'link 'org-html-standalone-image-p)) - (t (org-export-get-ordinal destination info)))) + (t (org-export-get-ordinal + destination info nil caption-predicate)))) (setq desc (when number (if (atom number) (number-to-string number) (mapconcat 'number-to-string number "."))))) @@ -3145,6 +3165,8 @@ (defun org-html-table (table contents info) (t (let* ((label (org-element-property :name table)) (caption (org-export-get-caption table)) + (number (org-export-get-ordinal + table info nil 'org-html--has-caption-p)) (attributes (if (org-html-html5-p info) "" (org-html--make-attribute-string @@ -3183,7 +3205,9 @@ (defun org-html-table (table contents info) (format (if org-html-table-caption-above "%s" "%s") - (org-export-data caption info))) + (concat + (format (org-html--translate "Table %d:" info) number) + " " (org-export-data caption info)))) (funcall table-column-specs table info) contents))))) -- 1.8.2.1