emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org e0bc2b3 3/5: lisp/ox-latex.el: Allow arbitrary floa


From: ELPA Syncer
Subject: [elpa] externals/org e0bc2b3 3/5: lisp/ox-latex.el: Allow arbitrary float environments
Date: Sat, 15 May 2021 09:57:13 -0400 (EDT)

branch: externals/org
commit e0bc2b37fb79001283f684a5ddc577bd845cf599
Author: Thomas S. Dye <tsd@tsdye.online>
Commit: Bastien <bzg@gnu.org>

    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.
---
 etc/ORG-NEWS     |  9 ++++++++-
 lisp/ox-latex.el | 25 +++++++++++++++++++------
 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]