emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <n.goaziou@gmail.com>
To: Yoshinari Nomura <nom@quickhack.net>
Cc: emacs-orgmode@gnu.org
Subject: Re: Add figure/table numbers to HTML captions
Date: Thu, 27 Jun 2013 16:46:19 +0200	[thread overview]
Message-ID: <87li5vsjb8.fsf@gmail.com> (raw)
In-Reply-To: <20130627.195226.131243714189666347.nom@cs.okayama-u.ac.jp> (Yoshinari Nomura's message of "Thu, 27 Jun 2013 19:52:26 +0900 (JST)")

Hello,

Yoshinari Nomura <nom@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 "&#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

  parent reply	other threads:[~2013-06-27 14:46 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-27 10:52 Add figure/table numbers to HTML captions Yoshinari Nomura
2013-06-27 11:34 ` Rasmus
2013-06-27 23:37   ` Yoshinari Nomura
2013-06-27 14:46 ` Nicolas Goaziou [this message]
2013-06-28  1:15   ` Yoshinari Nomura
2013-06-28  9:23     ` Nicolas Goaziou
2013-06-28 11:51       ` Yoshinari Nomura
2013-06-29  7:01       ` Yoshinari Nomura
2013-06-29  8:02         ` Nicolas Goaziou
2013-06-29 10:00           ` Yoshinari Nomura
2013-06-29 12:09             ` Nicolas Goaziou
2013-06-29 13:48               ` Yoshinari Nomura
     [not found]                 ` <rt-3.4.5-3864-1375881898-1936.839264-5-0@rt.gnu.org>
2013-08-08  0:43                   ` Yoshinari Nomura
2013-08-08 12:22                     ` Nicolas Goaziou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87li5vsjb8.fsf@gmail.com \
    --to=n.goaziou@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=nom@quickhack.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).