Hello, Yoshinari Nomura <n...@quickhack.net> writes:
> I sometimes need to export an org document into both HTML and LaTeX. > In such case, I want HTML exporter to create numbered captions for > figures and tables. > > So, I've written a small patch to add figure/table numbers to HTML > captions. (see 0001-Add-figure-table-numbers-to-HTML-captions.patch) I hadn't noticed HTML export back-end didn't provide this feature already. I agree this should be implemented. Thank you for taking care of it. > I'll be very happy if this feature is merged into the master branch. Sure. Here are a few comments in addition to those suggested by Rasmus in this thread. > + (unless (string= caption "") > + (let* ((org-html-standalone-image-predicate > + (lambda (img) (org-element-property :caption img))) > + (number (org-export-get-ordinal > + link info nil 'org-html-standalone-image-p))) You should put this function at the top level instead, since another transcoder use it. See `org-ascii--has-caption-p' in ascii export back-end. You can also use a lambda each time. Your call. > + (setq caption > + (concat > + (format (org-html--translate "Figure %d:" info) number) > + " " caption)))) I would move this in the first caption binding. Assuming you implemented `org-html--has-caption-p', you could use something like: (let (... (caption (let ((raw (org-export-data (org-export-get-caption parent) info))) (when (org-string-nw-p raw) (concat (format (org-html--translate "Figure %d:" info) (org-export-get-ordinal link info nil 'org-html--has-caption-p)) " " raw)))))) > ;; Return proper string, depending on DISPOSITION. > (org-html-format-inline-image > path info caption label > @@ -2725,14 +2734,23 @@ INFO is a plist holding contextual information. See > (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 org-html-standalone-image-predicate) > (unless desc > + (setq caption-predicate > + (if (org-element-property :caption destination) > + (lambda (elem &optional info) > + (org-element-property :caption elem)) > + (lambda (elem &optional info) > + (not (org-element-property :caption elem))))) > + (setq org-html-standalone-image-predicate caption-predicate) > (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)))) You don't need to change `org-html-link'. I think it already DTRT. > (setq desc (when number > (if (atom number) (number-to-string number) > (mapconcat 'number-to-string number "."))))) > @@ -3145,6 +3163,9 @@ contextual information." > (t > (let* ((label (org-element-property :name table)) > (caption (org-export-get-caption table)) > + (number (org-export-get-ordinal > + table info nil > + (lambda (tbl info) (org-element-property :caption tbl)))) See comment above. > - ("es" :default "Figura")) > + ("es" :default "Figura") > + ("ja" :html "図" :utf-8 "図")) > + ("Figure %d:" > + ("de" :default "Abbildung %d:") > + ("es" :default "Figura %d:") > + ("ja" :html "図%d:" :utf-8 "図%d:")) Maybe you should also provide a :default value, otherwise it will use "Figure %d:" for latex, texinfo, ascii... Also, I think it belong to a different patch. Would you mind splitting them? > ("Footnotes" > ("ca" :html "Peus de pàgina") > ("cs" :default "Pozn\xe1mky pod carou") > @@ -5312,7 +5317,8 @@ them." > ("de" :default "Tabelle %d") > ("es" :default "Tabla %d") > ("fr" > - :ascii "Tableau %d :" :default "Tableau nº %d :" :latin1 "Tableau %d > :")) > + :ascii "Tableau %d :" :default "Tableau nº %d :" :latin1 "Tableau %d > :") > + ("ja" :html "表%d:" :utf-8 "表%d:")) Ditto. Regards, -- Nicolas Goaziou