diff options
author | mattkae <mattkae@protonmail.com> | 2022-05-17 07:07:37 -0400 |
---|---|---|
committer | mattkae <mattkae@protonmail.com> | 2022-05-17 07:07:37 -0400 |
commit | becff06c71d277647eda4378203d03ab36e141eb (patch) | |
tree | a1f73bba3676f34e0faf76764f5de963321f5576 /elpa/auctex-13.1.3/style/newfloat.el | |
parent | 3f4a0d5370ae6c34afe180df96add3b8522f4af1 (diff) |
Evil mode and latex support
Diffstat (limited to 'elpa/auctex-13.1.3/style/newfloat.el')
-rw-r--r-- | elpa/auctex-13.1.3/style/newfloat.el | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/newfloat.el b/elpa/auctex-13.1.3/style/newfloat.el new file mode 100644 index 0000000..5cde1d4 --- /dev/null +++ b/elpa/auctex-13.1.3/style/newfloat.el @@ -0,0 +1,215 @@ +;;; newfloat.el --- AUCTeX style for `newfloat.sty' (v1.1-109) -*- lexical-binding: t; -*- + +;; Copyright (C) 2015--2022 Free Software Foundation, Inc. + +;; Author: Arash Esbati <arash@gnu.org> +;; Maintainer: auctex-devel@gnu.org +;; Created: 2015-09-19 +;; 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 `newfloat.sty' (v1.1-109) from 2015/09/17. +;; `newfloat.sty' is part of TeXLive. + +;; This style has some facilities to process the newly defined +;; floating environments within AUCTeX, e.g. indentation, label +;; addition etc. Currently it makes provision for `figure', `table' +;; and `verbatim' floating types. To make things work, the style +;; needs some help from the user. When a new floating environment is +;; defined, the user should pass the floating type as a comment to +;; AUCTeX, e.g. +;; +;; \DeclareFloatingEnvironment[ +;; name=Code, +;; listname={List of Codes}, +;; fileext=lol]{code} % {verbatim} +;; +;; Note the `{verbatim}' as a comment after the name of the float env. +;; Due to parsing reasons, this key-word must be in the same line as +;; the name of the float and enclosed in braces `{}'. +;; +;; Before the opening brace, only spaces and comment chars `%' are +;; allowed. Anything following the closing brace `}' is ignored. + +;; If things do not work or when in doubt, press `C-c C-n'. Comments +;; for improvement are welcome. + +;;; Code: + +;; Needed for auto-parsing: +(require 'tex) +(require 'latex) + +;; Silence the compiler: +(declare-function font-latex-add-keywords + "font-latex" + (keywords class)) + +(defvar LaTeX-newfloat-key-val-options + '(("fileext") + ("listname") + ("name") + ("placement" ("t" "b" "p" "tbp" "htbp")) + ("chapterlistsgaps" ("on" "off"))) + "Key=value options for newfloat macros.") + +(defun LaTeX-newfloat-key-val-options () + "Return newfloat key=vals based on variable `LaTeX-largest-level'." + (append + (if (< (LaTeX-largest-level) 2) + '(("within" ("chapter" "section" "none"))) + '(("within" ("section" "none")))) + LaTeX-newfloat-key-val-options)) + +;; Setup parsing for \DeclareFloatingEnvironment: +(TeX-auto-add-type "newfloat-DeclareFloatingEnvironment" "LaTeX") + +(defvar LaTeX-newfloat-DeclareFloatingEnvironment-regexp + `(,(concat "\\\\DeclareFloatingEnvironment" + "[ \t\n\r%]*" + "\\(?:" + (LaTeX-extract-key-value-label 'none) + "\\)?" + "[ \t\n\r%]*" + "{\\([^}]+\\)}" + "\\(?:[ %]*{\\(figure\\|table\\|verbatim\\)}\\)?") + (1 2) LaTeX-auto-newfloat-DeclareFloatingEnvironment) + "Matches the argument of `\\DeclareFloatingEnvironment' from `newfloat.sty'.") + +(defun LaTeX-newfloat-auto-prepare () + "Clear `LaTeX-auto-newfloat-DeclareFloatingEnvironment' before parsing." + (setq LaTeX-auto-newfloat-DeclareFloatingEnvironment nil)) + +(defun LaTeX-newfloat-auto-cleanup () + "Process definded floats with \\DeclareFloatingEnvironment. +Depending on floating type passed as a comment to +AUCTeX (\"figure\", \"table\" or \"verbatim\"), update +`LaTeX-figure-label' and `LaTeX-table-label'. If RefTeX is +loaded, add the new floating environment via +`reftex-add-label-environments'. For \"verbatim\" environments, +update `LaTeX-indent-environment-list' to suppress indentation. +If `caption.el' is loaded, add the new floating environment to +`LaTeX-caption-supported-float-types'. Also define the macros +\"listofENVs\" and \"listofENVes\"." + (dolist (flt-type (LaTeX-newfloat-DeclareFloatingEnvironment-list)) + (let ((flt (car flt-type)) + (type (cadr flt-type))) + (cond ((string-equal type "figure") + (LaTeX-add-environments `(,flt LaTeX-env-figure)) + (add-to-list 'LaTeX-label-alist `(,flt . LaTeX-figure-label) t) + (when (fboundp 'reftex-add-label-environments) + (reftex-add-label-environments + `((,flt ?f ,LaTeX-figure-label "~\\ref{%s}" caption nil nil))))) + ((string-equal type "table") + (LaTeX-add-environments `(,flt LaTeX-env-figure)) + (add-to-list 'LaTeX-label-alist `(,flt . LaTeX-table-label) t) + (when (fboundp 'reftex-add-label-environments) + (reftex-add-label-environments + `((,flt ?t ,LaTeX-table-label "~\\ref{%s}" caption nil nil))))) + ((string-equal type "verbatim") + (LaTeX-add-environments `(,flt ["Float Position"])) + (add-to-list (make-local-variable 'LaTeX-indent-environment-list) + `(,flt current-indentation) t) + (add-to-list 'LaTeX-label-alist `(,flt . LaTeX-listing-label) t) + (when (fboundp 'reftex-add-label-environments) + (reftex-add-label-environments + `((,flt ?l "lst:" "~\\ref{%s}" caption nil nil))))) + (t + (LaTeX-add-environments `(,flt ["Float Position"])))) + (when (boundp 'LaTeX-caption-supported-float-types) + (add-to-list (make-local-variable 'LaTeX-caption-supported-float-types) + flt)) + (if (string-equal "e" (substring flt -1)) + (TeX-add-symbols (concat "listof" flt "s")) + (TeX-add-symbols + (concat "listof" flt "s") + (concat "listof" flt "es")))))) + +(add-hook 'TeX-auto-prepare-hook #'LaTeX-newfloat-auto-prepare t) +(add-hook 'TeX-auto-cleanup-hook #'LaTeX-newfloat-auto-cleanup t) +(add-hook 'TeX-update-style-hook #'TeX-auto-parse t) + +(TeX-add-style-hook + "newfloat" + (lambda () + + ;; Add newfloat to the parser. + (TeX-auto-add-regexp LaTeX-newfloat-DeclareFloatingEnvironment-regexp) + + ;; Commands: + (TeX-add-symbols + '("DeclareFloatingEnvironment" + [TeX-arg-key-val (LaTeX-newfloat-key-val-options)] + (TeX-arg-eval + (lambda () + (let ((newfloat (TeX-read-string + (TeX-argument-prompt nil nil "Floating environment")))) + (LaTeX-add-newfloat-DeclareFloatingEnvironments newfloat) + (format "%s" newfloat))))) + + '("SetupFloatingEnvironment" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Floating environment") + (mapcar #'car (LaTeX-newfloat-DeclareFloatingEnvironment-list))) + (TeX-arg-key-val (LaTeX-newfloat-key-val-options-local))) + + '("ForEachFloatingEnvironment" t) + '("ForEachFloatingEnvironment*" t) + + '("PrepareListOf" + (TeX-arg-eval completing-read + (TeX-argument-prompt nil nil "Floating environment") + (mapcar #'car (LaTeX-newfloat-DeclareFloatingEnvironment-list))) + t) + + '("newfloatsetup" + (TeX-arg-eval + (lambda () + (let ((keyvals (TeX-read-key-val + nil + (append '(("chapterlistsgap")) + (if (< (LaTeX-largest-level) 2) + '(("within" ("chapter" "section" "none"))) + '(("within" ("section" "none")))))))) + (format "%s" keyvals)))))) + + ;; Fontification + (when (and (featurep 'font-latex) + (eq TeX-install-font-lock 'font-latex-setup)) + (font-latex-add-keywords '(("DeclareFloatingEnvironment" "[{") + ("SetupFloatingEnvironment" "{{") + ("ForEachFloatingEnvironment" "*{") + ("PrepareListOf" "{{") + ("newfloatsetup" "{")) + 'function))) + TeX-dialect) + +(defun LaTeX-newfloat-package-options () + "Prompt for package options for the newfloat package." + (TeX-read-key-val + t + (append + '(("chapterlistsgap")) + (if (< (LaTeX-largest-level) 2) + '(("within" ("chapter" "section" "none"))) + '(("within" ("section" "none"))))))) + +;;; newfloat.el ends here |