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