emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Add figure/table numbers to HTML captions


From: Nicolas Goaziou
Subject: Re: [O] Add figure/table numbers to HTML captions
Date: Thu, 27 Jun 2013 16:46:19 +0200

Hello,

Yoshinari Nomura <address@hidden> 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 "&#22259;" :utf-8 "図"))
> +    ("Figure %d:"
> +     ("de" :default "Abbildung %d:")
> +     ("es" :default "Figura %d:")
> +     ("ja" :html "&#22259;%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&agrave;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 "&#34920;%d:" :utf-8 "表%d:"))

Ditto.


Regards,

-- 
Nicolas Goaziou



reply via email to

[Prev in Thread] Current Thread [Next in Thread]