summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas S. Dye <tsd@tsdye.online>2021-05-15 15:20:35 +0200
committerBastien <bzg@gnu.org>2021-05-15 16:13:49 +0200
commitee40458d0071f6ebe21da780c56bbbcd93b9d494 (patch)
tree8ac1ef833e160acd642379a749c86c27f5e6909c
parent72894cde6fbf03af674089d0f35cd0b28836a2a5 (diff)
downloadorg-mode-ee40458d0071f6ebe21da780c56bbbcd93b9d494.tar.gz
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.
-rw-r--r--etc/ORG-NEWS9
-rw-r--r--lisp/ox-latex.el25
2 files changed, 27 insertions, 7 deletions
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index b987b7a..ab96ec3 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -178,7 +178,7 @@ See [[msg:875z8njaol.fsf@protesilaos.com][this thread]].
See [[msg:87im57fh8j.fsf@gmail.com][this thread]].
-*** =ob-python= improvements to =:return= header argument
+*** =ob-python= improvements to =:return= header argument
The =:return= header argument in =ob-python= now works for session
blocks as well as non-session blocks. Also, it now works with the
@@ -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
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index c3fc83b..316bbb6 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -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)