forked from mirrors/org-mode
ox-texinfo.el: Refactor caption code
* lisp/ox-texinfo.el (org-texinfo--wrap-float): New function. (org-texinfo--inline-image): Use new function.
This commit is contained in:
parent
20a3b61865
commit
deb4fe7838
|
@ -492,6 +492,44 @@ are not significant. Also remove the following characters: @
|
|||
Special characters are: @ { }"
|
||||
(replace-regexp-in-string "[@{}]" "@\\&" text))
|
||||
|
||||
(defun org-texinfo--wrap-float (value info &optional type label caption short)
|
||||
"Wrap string VALUE within a @float command.
|
||||
INFO is the current export state, as a plist. TYPE is float
|
||||
type, as a string. LABEL is the cross reference label for the
|
||||
float, as a string. CAPTION and SHORT are, respectively, the
|
||||
caption and shortcaption used for the float, as secondary
|
||||
strings (e.g., returned by `org-export-get-caption')."
|
||||
(let* ((backend
|
||||
(org-export-create-backend
|
||||
:parent 'texinfo
|
||||
:transcoders '((link . (lambda (object c i) c))
|
||||
(radio-target . (lambda (object c i) c))
|
||||
(target . ignore))))
|
||||
(short-backend
|
||||
(org-export-create-backend
|
||||
:parent 'texinfo
|
||||
:transcoders '((footnote-reference . ignore)
|
||||
(inline-src-block . ignore)
|
||||
(link . (lambda (object c i) c))
|
||||
(radio-target . (lambda (object c i) c))
|
||||
(target . ignore)
|
||||
(verbatim . ignore))))
|
||||
(short-str
|
||||
(if (and short caption)
|
||||
(format "@shortcaption{%s}\n"
|
||||
(org-export-data-with-backend short short-backend info))
|
||||
""))
|
||||
(caption-str
|
||||
(if (or short caption)
|
||||
(format "@caption{%s}\n"
|
||||
(org-export-data-with-backend
|
||||
(or caption short)
|
||||
(if (equal short-str "") short-backend backend)
|
||||
info))
|
||||
"")))
|
||||
(format "@float %s%s\n%s\n%s%s@end float"
|
||||
type (if label (concat "," label) "") value caption-str short-str)))
|
||||
|
||||
;;; Template
|
||||
|
||||
(defun org-texinfo-template (contents info)
|
||||
|
@ -1005,38 +1043,12 @@ current state of the export, as a plist."
|
|||
(image (format "@image{%s,%s,%s,%s,%s}"
|
||||
filename width height alt extension)))
|
||||
(if (not (or caption shortcaption)) image
|
||||
(let* ((label (org-element-property :name parent))
|
||||
(backend
|
||||
(org-export-create-backend
|
||||
:parent 'texinfo
|
||||
:transcoders '((link . (lambda (object c i) c))
|
||||
(radio-target . (lambda (object c i) c))
|
||||
(target . ignore))))
|
||||
(short-backend
|
||||
(org-export-create-backend
|
||||
:parent 'texinfo
|
||||
:transcoders '((footnote-reference . ignore)
|
||||
(inline-src-block . ignore)
|
||||
(link . (lambda (object c i) c))
|
||||
(radio-target . (lambda (object c i) c))
|
||||
(target . ignore)
|
||||
(verbatim . ignore))))
|
||||
(shortcaption-str
|
||||
(if (and shortcaption caption)
|
||||
(format "@shortcaption{%s}\n"
|
||||
(org-export-data-with-backend
|
||||
shortcaption short-backend info))
|
||||
""))
|
||||
(caption (org-export-data-with-backend
|
||||
(or caption shortcaption)
|
||||
(if (equal shortcaption-str "") short-backend backend)
|
||||
info)))
|
||||
(format "@float %s%s\n%s\n@caption{%s}\n%s@end float"
|
||||
(org-texinfo--wrap-float image
|
||||
info
|
||||
(org-export-translate "Figure" :utf-8 info)
|
||||
(if label (concat "," label) "")
|
||||
image
|
||||
(org-element-property :name parent)
|
||||
caption
|
||||
shortcaption-str)))))
|
||||
shortcaption))))
|
||||
|
||||
|
||||
;;;; Menu
|
||||
|
|
Loading…
Reference in a new issue