summaryrefslogtreecommitdiff
path: root/elpa/auctex-13.1.3/style/floatrow.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/auctex-13.1.3/style/floatrow.el')
-rw-r--r--elpa/auctex-13.1.3/style/floatrow.el753
1 files changed, 0 insertions, 753 deletions
diff --git a/elpa/auctex-13.1.3/style/floatrow.el b/elpa/auctex-13.1.3/style/floatrow.el
deleted file mode 100644
index be8878f..0000000
--- a/elpa/auctex-13.1.3/style/floatrow.el
+++ /dev/null
@@ -1,753 +0,0 @@
-;;; floatrow.el --- AUCTeX style for `floatrow.sty' (v0.3b) -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2017--2021 Free Software Foundation, Inc.
-
-;; Author: Arash Esbati <arash@gnu.org>
-;; Maintainer: auctex-devel@gnu.org
-;; Created: 2016-11-11
-;; Keywords: tex
-
-;; This file is part of AUCTeX.
-
-;; AUCTeX is free software; you can redistribute it and/or modify it
-;; under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; AUCTeX is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with AUCTeX; see the file COPYING. If not, write to the Free
-;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-;; 02110-1301, USA.
-
-;;; Commentary:
-
-;; This file adds support for `floatrow.sty' (v0.3b) from 2009/08/02.
-;; `floatrow.sty' is part of TeXLive.
-;;
-;; `floatrow.sty' is a powerful package and the documentation long.
-;; It is expected that this style is not feature complete. One
-;; deliberate decision is that this style does not offer any package
-;; options: Please use the command `\floatsetup' to set the options
-;; you want.
-;;
-;; This style also alters the way AUCTeX inserts the environments
-;; "table" and "figure" (cf. function `LaTeX-floatrow-env-init'). If
-;; you want the original behavior, try `C-c C-e rawfigure' or `C-c C-e
-;; rawtable' which include the environments incl. the macro \RawFloats
-;; at the beginning of the environment (cf. function
-;; `LaTeX-floatrow-env-figure-raw').
-;;
-;; Another deliberate decision is the implementation of commands like
-;; `\ffigbox' and `\ttabbox': When invoked with `C-c C-m ffigbox RET',
-;; the final result will look like this with cursor being at *:
-;;
-;; \ffigbox{*}{%
-;; \caption{query for a caption}%
-;; \label{prefix:is-chosen-acc-to-current-environment}%
-;; }
-;;
-;; This gives users the freedom to insert any command where point is.
-;; The mandatory arguments are not part of the fontification as
-;; commands like `\includegraphics' or `tabular' environments have their
-;; own fontification.
-
-;;; Code:
-
-;; Needed for compiling `cl-pushnew':
-(eval-when-compile
- (require 'cl-lib))
-
-;; Needed for compiling `LaTeX-check-insert-macro-default-style':
-(require 'latex)
-
-;; Needed for auto-parsing:
-(require 'tex)
-
-;; Silence the compiler:
-(declare-function font-latex-add-keywords
- "font-latex"
- (keywords class))
-
-(declare-function reftex-compile-variables
- "reftex"
- ())
-
-(defvar LaTeX-floatrow-key-val-options
- '(;; 3.1.1 Float Style
- ("style" ("plain" "plaintop" "Plaintop"
- "ruled" "Ruled"
- "boxed" "Boxed" "BOXED"
- "shadowbox" "Shadowbox" "SHADOWBOX"
- "doublebox" "Doublebox" "DOUBLEBOX"
- "wshadowbox" "Wshadowbox" "WSHADOWBOX"))
- ;; 3.1.2 Font Settings
- ("font" ("scriptsize" "footnotesize" "small" "normalsize" "large"
- "Large" "normalfont" "up" "it" "sl" "sc" "md" "bf"
- "rm" "sf" "tt"))
- ("footfont" ("scriptsize" "footnotesize" "small" "normalsize" "large"
- "Large" "normalfont" "up" "it" "sl" "sc" "md" "bf"
- "rm" "sf" "tt"))
- ;; 3.1.3 Position of Caption
- ("capposition" ("top" "TOP" "bottom" "beside"))
- ;; 3.1.4 Position of Beside Caption
- ("capbesideposition" ("left" "right" "inside" "outside"
- "top" "bottom" "center"))
- ;; 3.1.5 Defining The Width of Beside Caption
- ("capbesidewidth" ("none" "sidefil"))
- ;; 3.1.6 Defining Width of Object
- ("floatwidth" ("\\hsize" "\\textwidth" "\\columnwidth" "\\linewidth"))
- ;; 3.1.7 Other Settings for Beside Captions
- ("capbesideframe" ("yes" "no"))
- ;; 3.1.8 Defining Float Foot Position (Legends and Footnotes)
- ("footposition" ("default" "caption" "bottom"))
- ;; 3.1.9 Vertical Alignment of Float Elements
- ("heightadjust" ("all" "caption" "object" "none" "nocaption" "noobject"))
- ("valign" ("t" "c" "b" "s"))
- ;; 3.1.10 Facing Layout
- ("facing" ("yes" "no"))
- ;; 3.1.11 Object Settings
- ("objectset" ("justified" "centering" "raggedright" "RaggedRight" "raggedleft"))
- ;; 3.1.12 Defining Float Margins
- ("margins" ("centering" "raggedright" "raggedleft"
- "hangright" "hanginside" "hangoutside"))
- ;; 3.1.13 Defining Float Separators
- ("floatrowsep" ("columnsep" "quad" "qquad" "hfil" "hfill" "none"))
- ("capbesidesep" ("columnsep" "quad" "qquad" "hfil" "hfill" "none"))
- ;; 3.1.14 Defining Float Rules/Skips
- ("precode" ("none" "thickrule" "rule" "lowrule" "captionskip"))
- ("rowprecode" ("none" "thickrule" "rule" "lowrule" "captionskip"))
- ("midcode" ("none" "thickrule" "rule" "lowrule" "captionskip"))
- ("postcode" ("none" "thickrule" "rule" "lowrule" "captionskip"))
- ("rowpostcode" ("none" "thickrule" "rule" "lowrule" "captionskip"))
- ;; 3.1.15 Defining Float Frames
- ("framestyle" ("fbox" "colorbox" "FRcolorbox" "corners"
- "doublebox" "shadowbox" "wshadowbox"))
- ("frameset")
- ("framearound" ("none" "object" "all" "row" "none"))
- ("framefit" ("yes" "no"))
- ("rowfill" ("yes" "no"))
- ;; 3.1.16 Settings for Colored Frames
- ("colorframeset")
- ("colorframecorners")
- ;; 3.1.17 Defining Float Skips
- ("captionskip")
- ("footskip")
- ;; 3.1.18 Defining Float Footnote Rule's Style
- ("footnoterule" ("normal" "limited" "fullsize" "none"))
- ;; 3.1.19 Managing Floats with [H] Placement Option
- ("doublefloataswide" ("yes" "no"))
- ("floatHaslist" ("yes" "no"))
- ;; 7.2.1 Additions in The floatrow Package to longtable package
- ("LTcapwidth" ("table" "contents")))
- "Key=value options for floatrow macros and environments.")
-
-(defun LaTeX-floatrow-key-val-options ()
- "Return an updated list of key=vals from floatrow package."
- (append
- (when (LaTeX-floatrow-DeclareNewOption-list)
- (let ((vcode-keys '("precode" "rowprecode" "midcode" "postcode" "rowpostcode"))
- (sep-keys '("floatrowsep" "capbesidesep"))
- result)
- (dolist (keyvals (LaTeX-floatrow-DeclareNewOption-list) result)
- (let* ((key (cond ((string= (nth 1 keyvals) "FloatStyle")
- "style")
- ((string= (nth 1 keyvals) "FloatFont")
- "font")
- ((string= (nth 1 keyvals) "FloatVCode")
- "precode")
- ((string= (nth 1 keyvals) "ColorBox")
- "colorframeset")
- ((string= (nth 1 keyvals) "CBoxCorners")
- "colorframecorners")
- ((string= (nth 1 keyvals) "ObjectSet")
- "objectset")
- ((string= (nth 1 keyvals) "MarginSet")
- "margins")
- ((string= (nth 1 keyvals) "FloatSeparators")
- "floatrowsep")
- ((string= (nth 1 keyvals) "FloatFootnoterule")
- "footnoterule")
- (t nil)))
- (val (nth 2 keyvals))
- (vals-predefined
- (cadr (assoc key LaTeX-floatrow-key-val-options)))
- (vals-parsed (cadr (assoc key result))))
- ;; Remove entry in `result' if there is one for the `key'.
- ;; `precode' and `floatrowsep' are special here since they
- ;; are placeholders for other keys (see above):
- (cond ((string= key "precode")
- (dolist (x vcode-keys)
- (when (assoc x result)
- (setq result (assq-delete-all (car (assoc x result)) result)))))
- ((string= key "floatrowsep")
- (dolist (x sep-keys)
- (when (assoc x result)
- (setq result (assq-delete-all (car (assoc x result)) result)))))
- (t
- (when (assoc key result)
- (setq result (assq-delete-all (car (assoc key result)) result)))))
- ;; Add the entrie to `result'. Again, watch for `precode'
- ;; and `floatrowsep'. Also delete any dupes:
- (cond ((string= key "precode")
- (dolist (x vcode-keys)
- (cl-pushnew (list x (TeX-delete-duplicate-strings
- (append vals-parsed
- vals-predefined
- (list val))))
- result :test #'equal)))
- ((string= key "floatrowsep")
- (dolist (x sep-keys)
- (cl-pushnew (list x (TeX-delete-duplicate-strings
- (append vals-parsed
- vals-predefined
- (list val))))
- result :test #'equal)))
- (t
- (cl-pushnew (list key (TeX-delete-duplicate-strings
- (append vals-parsed
- vals-predefined
- (list val))))
- result :test #'equal)))))))
- LaTeX-floatrow-key-val-options))
-
-(defvar LaTeX-floatrow-supported-float-types
- '("figure" "table" ; Standard LaTeX
- "widefigure" "widetable" "widefloat" ; Standard figure* & table*
- "wrapfigure" "wraptable" "wrapfloat" ; wrapfig.sty
- "rotfigure" "rottable" "rotfloat" ; rotating.sty
- "widerotfigure" "widerottable" "widerotfloat" ; for 2-col & wide
- "figurerow" "tablerow" "floatrow" ; inside floatrow env's
- "capbesidefigure" "capbesidetable" ; floats with beside captions
- "capbesidefloat"
- "longtable" ; longtable.sty
- "subfigure" "subtable" "sub") ; subcaption.sty
- "List of float types supported by floatrow.sty.")
-
-;; Setup for \newfloatcommand
-(TeX-auto-add-type "floatrow-newfloatcommand" "LaTeX")
-
-(defvar LaTeX-floatrow-newfloatcommand-regexp
- '("\\\\newfloatcommand{\\([^}]+\\)}" 1 LaTeX-auto-floatrow-newfloatcommand)
- "Matches the arguments of \"\\newfloatcommand\" from floatrow.sty.")
-
-;; Setup for various \Declare* macros:
-(TeX-auto-add-type "floatrow-DeclareNewOption" "LaTeX")
-
-(defvar LaTeX-floatrow-DeclareNewOption-regexp
- `(,(concat
- "\\\\Declare"
- "\\("
- (mapconcat #'identity
- '("FloatStyle" ; 3.6.1 Float Style Option (style=)
- "FloatFont" ; 3.6.2 Float Font Option (font=)
- "FloatVCode" ; 3.6.3 Option for Float Rules/Skips (precode= etc.)
- "ColorBox" ; 3.6.4 Settings for Colored Frame (colorframeset=)
- "CBoxCorners" ; colorframecorners=
- "ObjectSet" ; 3.6.5 Object Justification Option (objectset=)
- "MarginSet" ; 3.6.6 Option for Float Box Alignment/Settings (margins=)
- "FloatSeparators" ; 3.6.7 Float Separators Options (floatrowsep=, capbesidesep=)
- "FloatFootnoterule") ; 3.6.8 Option for Footnote Rule's Style (footnoterule=)
- "\\|")
- "\\)"
- "{\\([^}]+\\)}")
- (0 1 2) LaTeX-auto-floatrow-DeclareNewOption)
- "Matches the arguments of \"\\Declare*\" from floatrow.sty.")
-
-;; Setup for \newseparated(label|ref):
-(TeX-auto-add-type "floatrow-newseparatedlabel-ref" "LaTeX")
-
-(defvar LaTeX-floatrow-newseparatedlabel-ref-regexp
- `(,(concat
- "\\\\newseparated"
- "\\(label\\|ref\\)"
- "{?"
- "\\\\"
- "\\([a-zA-Z]+\\)"
- "}?")
- (2 1) LaTeX-auto-floatrow-newseparatedlabel-ref)
- "Matches the arguments \"\\newseparated(label|ref)\" command from floatrow.sty.")
-
-;; Setup for \DeclareNewFloatType:
-(TeX-auto-add-type "floatrow-DeclareNewFloatType" "LaTeX")
-
-(defvar LaTeX-floatrow-DeclareNewFloatType-regexp
- '("\\\\DeclareNewFloatType{\\([^}]+\\)}"
- 1 LaTeX-auto-floatrow-DeclareNewFloatType)
- "Matches the argument of \"\\DeclareNewFloatType\" command from floatrow.sty.")
-
-;; Plug them into the machinery.
-(defun LaTeX-floatrow-auto-prepare ()
- "Clear various \"LaTeX-floatrow\" variables before parsing."
- (setq LaTeX-auto-floatrow-newfloatcommand nil
- LaTeX-auto-floatrow-DeclareNewOption nil
- LaTeX-auto-floatrow-newseparatedlabel-ref nil
- LaTeX-auto-floatrow-DeclareNewFloatType nil))
-
-(defun LaTeX-floatrow-auto-cleanup ()
- "Process parsed results from floatrow package."
- ;; Replace initially the way fig & tab env's are inserted:
- (LaTeX-floatrow-env-init)
- ;;
- ;; Process new float commands like \ffigbox:
- (when (LaTeX-floatrow-newfloatcommand-list)
- (dolist (cmd (mapcar #'car (LaTeX-floatrow-newfloatcommand-list)))
- (TeX-add-symbols `(,cmd LaTeX-floatrow-arg-floatbox))
- (when (and (featurep 'font-latex)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,cmd "[[["))
- 'textual))))
- ;;
- ;; Process new label/ref commands:
- (when (LaTeX-floatrow-newseparatedlabel-ref-list)
- (let (floatrow-run-reftex-compile-vars)
- (dolist (elt (LaTeX-floatrow-newseparatedlabel-ref-list))
- (let ((cmd (car elt))
- (type (cadr elt)))
- (if (string= type "ref")
- ;; More fun w/ referencing macros:
- (TeX-add-symbols `(,cmd TeX-arg-ref))
- ;; Less fun w/ label defining macros. Add cmd to
- ;; TeX-symbol-list:
- (TeX-add-symbols `(,cmd TeX-arg-define-label))
- ;; For AUCTeX, parse the argument of the new macro and add
- ;; it to `LaTeX-auto-label':
- (TeX-auto-add-regexp
- `(,(concat "\\\\" cmd "{\\([^\n\r%\\{}]+\\)}") 1 LaTeX-auto-label))
- ;; For RefTeX, append cmd to `reftex-label-regexps and set
- ;; floatrow-run-reftex-compile-vars to t:
- (when (and (boundp 'reftex-label-regexps)
- (fboundp 'reftex-compile-variables)
- (not (string-match
- cmd
- (mapconcat #'identity reftex-label-regexps "|"))))
- (add-to-list (make-local-variable 'reftex-label-regexps)
- (concat "\\\\" cmd "{\\(?1:[^}]*\\)}") t)
- (setq floatrow-run-reftex-compile-vars t)))
- ;; Fontify macros as reference:
- (when (and (featurep 'font-latex)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords `((,cmd "{"))
- 'reference))))
- ;; Run `reftex-compile-variables' if needed only once:
- (when floatrow-run-reftex-compile-vars
- (reftex-compile-variables))))
- ;;
- ;; Process new floattypes:
- (when (LaTeX-floatrow-DeclareNewFloatType-list)
- (LaTeX-floatrow-arg-declare-new-floattype nil t))
- ;;
- ;; Add elements from `LaTeX-floatrow-supported-float-types' to
- ;; `LaTeX-caption-supported-float-types':
- (when (boundp 'LaTeX-caption-supported-float-types)
- (make-local-variable 'LaTeX-caption-supported-float-types)
- (dolist (float LaTeX-floatrow-supported-float-types)
- (add-to-list 'LaTeX-caption-supported-float-types float t))) )
-
-(add-hook 'TeX-auto-prepare-hook #'LaTeX-floatrow-auto-prepare t)
-(add-hook 'TeX-auto-cleanup-hook #'LaTeX-floatrow-auto-cleanup t)
-(add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
-
-(defun LaTeX-floatrow-arg-floatbox (optional)
- "Query and insert arguments of float box commands from floatrow.sty.
-If OPTIONAL is non-nil, indicate optional argument during query."
- ;; Query for the optional arguments; ask for "vertpos" only if
- ;; "height" is given. let-bind `TeX-arg-*-brace' for
- ;; `TeX-argument-insert':
- (let* ((TeX-arg-opening-brace "[")
- (TeX-arg-closing-brace "]")
- (TeX-last-optional-rejected nil)
- (width (LaTeX-check-insert-macro-default-style
- (completing-read
- (TeX-argument-prompt t nil "Width")
- (mapcar (lambda (x) (concat TeX-esc (car x)))
- (LaTeX-length-list)))))
- (TeX-last-optional-rejected (or (not width)
- (and width (string= width ""))))
- (height (LaTeX-check-insert-macro-default-style
- (completing-read
- (TeX-argument-prompt t nil "Height")
- (mapcar (lambda (x) (concat TeX-esc (car x)))
- (LaTeX-length-list)))))
- (TeX-last-optional-rejected (or (not height)
- (and height (string= height ""))))
- (vertpos (LaTeX-check-insert-macro-default-style
- (if (string= height "")
- ""
- (completing-read
- (TeX-argument-prompt t nil "Vertical alignment")
- '("t" "c" "b" "s"))))))
- (and width (TeX-argument-insert width t))
- ;; Insert an extra pair of brackets if only `height' is given,
- ;; otherwise it will become `width'
- (when (and width (string= width "")
- height (not (string= height "")))
- (insert "[]"))
- (and height (TeX-argument-insert height t))
- (and vertpos (TeX-argument-insert vertpos t)))
- ;; Now query for the (short-)caption. Also check for the
- ;; float-type; if we're inside (sub)?floatrow*?, then check for the
- ;; next outer environment:
- (let* ((currenv (if (string-match "floatrow\\*?\\_>" (LaTeX-current-environment))
- (LaTeX-current-environment 2)
- (LaTeX-current-environment)))
- (caption (TeX-read-string
- (TeX-argument-prompt optional nil "Caption")))
- (short-caption
- (when (>= (length caption) LaTeX-short-caption-prompt-length)
- (TeX-read-string
- (TeX-argument-prompt t nil "Short caption")))))
- (indent-according-to-mode)
- ;; The final result will look like this with * being point:
- ;; \ffigbox{*}{%
- ;; \caption{text}%
- ;; \label{fig:foo}%
- ;; }
- (insert TeX-grop)
- (save-excursion
- ;; We are inside the 1. mandatory arg: Save the pos & insert `}{':
- (insert TeX-grcl TeX-grop)
- (if (and caption (not (string= caption "")))
- (progn
- ;; If caption, move to EOL, delete any spaces and hide the line end
- (end-of-line)
- (delete-horizontal-space)
- (insert "%")
- ;; Add a newline and the caption
- (newline-and-indent)
- (insert (LaTeX-compose-caption-macro caption short-caption))
- ;; If we have a caption, then we probably also want a
- ;; label. Hide EOL end and proceed to enter a label
- (insert "%")
- (newline-and-indent)
- (when (LaTeX-label currenv 'environment)
- ;; Move point to end of line and hide EOL
- (end-of-line)
- (delete-horizontal-space)
- (insert "%")
- (newline-and-indent))
- ;; Now close the group
- (insert TeX-grcl)
- (indent-according-to-mode)
- (end-of-line))
- ;; Otherwise, only insert a }
- (insert TeX-grcl)))))
-
-(defun LaTeX-floatrow-env-init ()
- "Replace AUCTeX entries in the variable `LaTeX-environment-list'.
-After loading the style hook floatrow.el, delete the entries for
-figure*? and table*? from variable `LaTeX-environment-list' and
-replace them with the ones offered by the style. Original
-entries are available under \"rawfigure*?\" and \"rawtable*?\"."
- (LaTeX-environment-list)
- (dolist (env '("figure" "figure*" "table" "table*"))
- (setq LaTeX-environment-list
- (assq-delete-all (car (assoc env LaTeX-environment-list))
- LaTeX-environment-list))
- (LaTeX-add-environments `(,env LaTeX-floatrow-env-figure)
- `(,(concat "raw" env) LaTeX-floatrow-env-figure-raw))))
-
-(defun LaTeX-floatrow-env-figure (environment)
- "Create floating ENVIRONMENT suitable for floatrow macros."
- (let ((float (and LaTeX-float
- (TeX-read-string
- (TeX-argument-prompt t nil "Float position")
- LaTeX-float))))
- (LaTeX-insert-environment environment
- (unless (zerop (length float))
- (concat LaTeX-optop float LaTeX-optcl)))))
-
-(defun LaTeX-floatrow-env-figure-raw (env)
- "Create raw floating ENV with floatrow.sty.
-Also insert the macro \"\\RawFloats\" when finished with user
-queries."
- (let ((environment (replace-regexp-in-string "raw" "" env)))
- (LaTeX-env-figure environment)
- (save-excursion
- ;; `LaTeX-find-matching-begin' will not work for us as we don't
- ;; know how user answers queries from AUCTeX, hence we search
- ;; back for `environment':
- (re-search-backward (concat "\\\\begin{" environment "}") nil t)
- (end-of-line)
- (LaTeX-newline)
- (indent-according-to-mode)
- (insert TeX-esc "RawFloats"))))
-
-(defun LaTeX-floatrow-arg-declare-new-options (optional prompt key)
- "Query and insert user-defined values to keys provided by floatrow.sty.
-If OPTIONAL is non-nil, ask for an optional argument and insert
-it in square brackets. PROMPT replaces the standard one. KEY is
-a string and corresponds to first parsed element in
-`LaTeX-floatrow-DeclareNewOption-regexp'."
- (let ((val (TeX-read-string
- (TeX-argument-prompt optional prompt "New value option"))))
- (LaTeX-add-floatrow-DeclareNewOptions
- (list (concat TeX-esc "Declare" key TeX-grop val TeX-grcl)
- key val))
- (TeX-argument-insert val optional)
- (TeX-argument-insert
- (TeX-read-key-val optional (LaTeX-floatrow-key-val-options)) optional)))
-
-(defun LaTeX-floatrow-arg-newseparatedlabel/ref (optional type)
- "Query and insert user defined label and reference macros from floatrow.sty.
-If OPTIONAL is non-nil, insert the argument in brackets. TYPE is
-the string \"label\" or \"ref\"."
- (let ((cmd (TeX-read-string
- (if (string= type "label")
- (TeX-argument-prompt optional nil "Label command: \\" t)
- (TeX-argument-prompt optional nil "Reference command: \\" t)))))
- (LaTeX-add-floatrow-newseparatedlabel-refs (list cmd type))
- (if (string= type "label")
- (TeX-add-symbols `(,cmd TeX-arg-define-label))
- (TeX-add-symbols `(,cmd TeX-arg-ref)))
- (TeX-argument-insert cmd optional TeX-esc)))
-
-(defun LaTeX-floatrow-arg-declare-new-floattype (optional &optional cleanup)
- "Query and insert the first argument of \"DeclareNewFloatType\" macro.
-If OPTIONAL is non-nil, insert the argument in brackets. If
-CLEANUP in non-nil, skip the query and insert process as we are
-inside the function `LaTeX-floatrow-auto-cleanup' and process
-only the parsed items."
- (let ((type (if cleanup
- (mapcar #'car (LaTeX-floatrow-DeclareNewFloatType-list))
- (list (TeX-read-string
- (TeX-argument-prompt optional nil "Environment type"))))))
- ;; If not inside `LaTeX-floatrow-auto-cleanup', add user input to
- ;; list of new floats and insert it
- (unless cleanup
- (LaTeX-add-floatrow-DeclareNewFloatTypes (car type))
- (TeX-argument-insert (car type) optional))
- ;; Make the next variables buffer local
- (make-local-variable 'LaTeX-floatrow-supported-float-types)
- (when (boundp 'LaTeX-caption-supported-float-types)
- (make-local-variable 'LaTeX-caption-supported-float-types))
- ;; Process new float type(s): a) add type to list of known
- ;; environments incl. "raw" version b) add different flavors of
- ;; type to `LaTeX-floatrow-supported-float-types' c) check if
- ;; `LaTeX-caption-supported-float-types' is bound and add
- ;; different flavors of type to it as well
- (dolist (elt type)
- (LaTeX-add-environments `(,elt LaTeX-floatrow-env-figure)
- `(,(concat "raw" elt) LaTeX-floatrow-env-figure-raw))
- (add-to-list 'LaTeX-floatrow-supported-float-types elt t)
- (add-to-list 'LaTeX-floatrow-supported-float-types (concat "wide" elt) t)
- (add-to-list 'LaTeX-floatrow-supported-float-types (concat elt "row") t)
- (add-to-list 'LaTeX-floatrow-supported-float-types (concat "capbeside" elt) t)
- (when (boundp 'LaTeX-caption-supported-float-types)
- (add-to-list 'LaTeX-caption-supported-float-types elt t)
- (add-to-list 'LaTeX-caption-supported-float-types (concat "wide" elt) t)
- (add-to-list 'LaTeX-caption-supported-float-types (concat elt "row") t)
- (add-to-list 'LaTeX-caption-supported-float-types (concat "capbeside" elt) t)))))
-
-(TeX-add-style-hook
- "floatrow"
- (lambda ()
-
- ;; Add floatrow to the parser
- (TeX-auto-add-regexp LaTeX-floatrow-DeclareNewOption-regexp)
- (TeX-auto-add-regexp LaTeX-floatrow-newfloatcommand-regexp)
- (TeX-auto-add-regexp LaTeX-floatrow-newseparatedlabel-ref-regexp)
- (TeX-auto-add-regexp LaTeX-floatrow-DeclareNewFloatType-regexp)
-
- ;; Add pre-defined float commands:
- (LaTeX-add-floatrow-newfloatcommands
- "ffigbox" "fcapside" "ttabbox")
-
- ;; Macros
- (TeX-add-symbols
- ;; 2.1 The \floatbox Macro
- ;; \floatbox[<preamble>]{<captype>}[<width>][<height>][<vert pos>]{<caption>}{<object>}
- '("floatbox"
- [TeX-arg-eval completing-read
- (TeX-argument-prompt t nil "Preamble")
- '("\\capbeside" "\\nocapbeside" "\\captop")]
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Float type")
- LaTeX-floatrow-supported-float-types)
- LaTeX-floatrow-arg-floatbox)
-
- ;; 2.2 Creation of Personal Commands for Float Boxes
- '("newfloatcommand"
- (TeX-arg-eval
- (lambda ()
- (let ((cmd (TeX-read-string
- (TeX-argument-prompt nil nil "Command"))))
- (LaTeX-add-floatrow-newfloatcommands cmd)
- (TeX-add-symbols
- `(,cmd LaTeX-floatrow-arg-floatbox))
- (format "%s" cmd))))
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Float type")
- '("figure" "table"))
- [ 2 ])
-
- '("renewfloatcommand"
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Command")
- (LaTeX-floatrow-newfloatcommand-list))
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Float type")
- '("figure" "table"))
- [ 2 ])
-
-
- ;; 2.2.2 Predefined Float Box Commands
- '("ffigbox"
- LaTeX-floatrow-arg-floatbox)
-
- '("ttabbox"
- LaTeX-floatrow-arg-floatbox)
-
- '("fcapside"
- LaTeX-floatrow-arg-floatbox)
-
- ;; 2.3.1 Mixed Row
- '("CenterFloatBoxes" 0)
- '("TopFloatBoxes" 0)
- '("BottomFloatBoxes" 0)
- '("PlainFloatBoxes" 0)
- '("buildFBBOX" 2)
-
- ;; 3 Float Layout Settings
- '("floatsetup"
- [TeX-arg-eval completing-read
- (TeX-argument-prompt t nil "Float type")
- LaTeX-floatrow-supported-float-types]
- (TeX-arg-key-val (LaTeX-floatrow-key-val-options)))
-
- ;; 3.2 Settings for Current Float Environment
- '("thisfloatsetup"
- (TeX-arg-key-val (LaTeX-floatrow-key-val-options)))
-
- ;; 3.3 Clearing of Settings for Current Float Type
- '("clearfloatsetup"
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Float type")
- LaTeX-floatrow-supported-float-types))
-
- ;; 3.4 Temporary Clearing of All Float Settings
- '("killfloatstyle" 0)
-
- ;; 3.6.1 Float Style Option (style=)
- '("DeclareFloatStyle"
- (LaTeX-floatrow-arg-declare-new-options "New style option"
- "FloatStyle"))
-
- ;; 3.6.2 Float Font Option (font=)
- '("DeclareFloatFont"
- (LaTeX-floatrow-arg-declare-new-options "New font option"
- "FloatFont"))
-
- ;; 3.6.3 Option for Float Rules/Skips (precode= etc.)
- '("DeclareFloatVCode"
- (LaTeX-floatrow-arg-declare-new-options "New rules/skip option"
- "FloatVCode"))
-
- ;; 3.6.4 Settings for Colored Frame (colorframeset=)
- '("DeclareColorBox"
- (LaTeX-floatrow-arg-declare-new-options "New colored frame option"
- "ColorBox"))
-
- ;; (colorframecorners=)
- '("DeclareCBoxCorners"
- (LaTeX-floatrow-arg-declare-new-options "New colored corner option"
- "CBoxCorners"))
-
- ;; 3.6.5 Object Justification Option (objectset=)
- '("DeclareObjectSet"
- (LaTeX-floatrow-arg-declare-new-options "New object justification"
- "ObjectSet"))
-
- ;; 3.6.6 Option for Float Box Alignment/Settings (margins=)
- '("DeclareMarginSet"
- (LaTeX-floatrow-arg-declare-new-options "New alignment option"
- "MarginSet"))
-
- '("setfloatmargins" 2)
- '("setfloatmargins*" 2)
- '("floatfacing" 2)
- '("floatfacing*" 2)
- '("floatboxmargins" 2)
- '("floatrowmargins" 2)
- '("floatcapbesidemargins" 2)
-
- ;; 3.6.7 Float Separators Options (floatrowsep=, capbesidesep=)
- '("DeclareFloatSeparators"
- (LaTeX-floatrow-arg-declare-new-options "New separator option"
- "FloatSeparators"))
-
- ;; 3.6.8 Option for Footnote Rule's Style (footnoterule=)
- '("DeclareFloatFootnoterule"
- (LaTeX-floatrow-arg-declare-new-options "New footnote rule option"
- "FloatFootnoterule"))
-
- ;; 4 Creation of New Float Types
- '("DeclareNewFloatType"
- (LaTeX-floatrow-arg-declare-new-floattype)
- (TeX-arg-key-val (("placement" ("tbp" "t" "b" "p"))
- ("name")
- ("fileext")
- ("within" ("chapter" "section" "subsection"))
- ("relatedcapstyle" ("yes" "no")))))
-
- ;; 6.2 Support of The Label-Sublabel References
- '("newseparatedlabel"
- (LaTeX-floatrow-arg-newseparatedlabel/ref "label") 2)
-
- '("newseparatedref"
- (LaTeX-floatrow-arg-newseparatedlabel/ref "ref") t)
-
- '("makelabelseparator" t) ) ;; terminate TeX-add-symbols
-
- ;; Environments
- (LaTeX-add-environments
- ;; 2.3 Building Float Row
- '("floatrow" [ "Number of beside floats" ])
-
- ;; 6.1 Managing of Float Parts With the subfloatrow Environment
- '("subfloatrow" [ "Number of beside floats" ])
- '("subfloatrow*" [ "Number of beside floats" ]))
-
- ;; 2.1.1 Float Box Width Equals to The Width of Object Contents
- (LaTeX-add-lengths "FBwidth" "FBheight" "Xhsize")
-
- ;; Fontification
- (when (and (featurep 'font-latex)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords '(("floatbox" "[{[[[")
- ("ffigbox" "[[[")
- ("ttabbox" "[[[")
- ("fcapside" "[[["))
- 'textual)
- (font-latex-add-keywords '(("newfloatcommand" "{{[[")
- ("renewfloatcommand" "{{[[")
- ("buildFBBOX" "{{")
- ("floatsetup" "[{")
- ("thisfloatsetup" "{")
- ("clearfloatsetup" "{")
- ("killfloatstyle" "")
- ("DeclareFloatStyle" "{{")
- ("DeclareFloatFont" "{{")
- ("DeclareFloatVCode" "{{")
- ("DeclareColorBox" "{{")
- ("DeclareCBoxCorners" "{{")
- ("DeclareObjectSet" "{{")
- ("DeclareMarginSet" "{{")
- ("DeclareFloatSeparators" "{{")
- ("DeclareFloatFootnoterule" "{{")
- ("newseparatedlabel" "{{{")
- ("newseparatedref" "{{")
- ("makelabelseparator" "{")
- ("DeclareNewFloatType" "{{")
- ("RawFloats" ""))
- 'function)))
- TeX-dialect)
-
-(defvar LaTeX-floatrow-package-options nil
- "Prompt for package options for the floatrow package.")
-
-;;; floatrow.el ends here