lisp/ox-latex.el: Allow arbitrary float environments

* lisp/ox-latex.el (org-latex--inline-image)
(org-latex--decorate-table): Recognize arbitrary :float value.

* etc/ORG-NEWS: Announce new :float capability.

LaTeX users are able to define arbitrary float types.
This patch makes them accessible from Org mode.
This commit is contained in:
Thomas S. Dye 2021-05-15 15:20:35 +02:00 committed by Bastien
parent 200f454714
commit e0bc2b37fb
2 changed files with 27 additions and 7 deletions

View File

@ -250,6 +250,13 @@ Example:
: #+startup: show3levels
*** LaTeX attribute ~:float~ now passes through arbitrary values
LaTeX users are able to define arbitrary float types, e.g. with the
float package. The Org mode LaTeX exporter is now able to process and
export arbitrary float types. The user is responsible for ensuring
that Org mode configures LaTeX to process any new float type.
*** New =u= table formula flag to enable Calc units simplification mode
A new =u= mode flag for Calc formulas in Org tables has been added to

View File

@ -2384,8 +2384,8 @@ used as a communication channel."
((string= float "sideways") 'sideways)
((string= float "multicolumn") 'multicolumn)
((and (plist-member attr :float) (not float)) 'nonfloat)
((or float
(org-element-property :caption parent)
(float float)
((or (org-element-property :caption parent)
(org-string-nw-p (plist-get attr :caption)))
'figure)
(t 'nonfloat))))
@ -2477,6 +2477,18 @@ used as a communication channel."
nil t))))
;; Return proper string, depending on FLOAT.
(pcase float
((and (pred stringp) env-string)
(format "\\begin{%s}%s
%s%s
%s%s
%s\\end{%s}"
env-string
placement
(if caption-above-p caption "")
(if center "\\centering" "")
comment-include image-code
(if caption-above-p "" caption)
env-string))
(`wrap (format "\\begin{wrapfigure}%s
%s%s
%s%s
@ -3207,9 +3219,9 @@ centered."
(defun org-latex--decorate-table (table attributes caption above? info)
"Decorate TABLE string with caption and float environment.
ATTRIBUTES is the plist containing is LaTeX attributes. CAPTION
is its caption, as a string or nil. It is located above the
table if ABOVE? is non-nil. INFO is the plist containing current
ATTRIBUTES is the plist containing LaTeX attributes. CAPTION is
its caption, as a string or nil. It is located above the table
if ABOVE? is non-nil. INFO is the plist containing current
export parameters.
Return new environment, as a string."
@ -3218,7 +3230,8 @@ Return new environment, as a string."
(cond ((and (not float) (plist-member attributes :float)) nil)
((member float '("sidewaystable" "sideways")) "sidewaystable")
((equal float "multicolumn") "table*")
((or float (org-string-nw-p caption)) "table")
(float float)
((org-string-nw-p caption) "table")
(t nil))))
(placement
(or (plist-get attributes :placement)