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 "図" :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
next prev 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).