diff options
Diffstat (limited to 'elpa/auctex-13.1.3/style/empheq.el')
-rw-r--r-- | elpa/auctex-13.1.3/style/empheq.el | 485 |
1 files changed, 0 insertions, 485 deletions
diff --git a/elpa/auctex-13.1.3/style/empheq.el b/elpa/auctex-13.1.3/style/empheq.el deleted file mode 100644 index b9f32b1..0000000 --- a/elpa/auctex-13.1.3/style/empheq.el +++ /dev/null @@ -1,485 +0,0 @@ -;;; empheq.el --- AUCTeX style for `empheq.sty' (v2.14) -*- lexical-binding: t; -*- - -;; Copyright (C) 2016-2021 Free Software Foundation, Inc. - -;; Author: Arash Esbati <arash@gnu.org> -;; Maintainer: auctex-devel@gnu.org -;; Created: 2016-08-07 -;; 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 `empheq.sty' (v2.14) from 2014/08/04. -;; `empheq.sty' is part of TeXLive. - -;;; Code: - -(require 'tex) -(require 'latex) -(eval-when-compile - (require 'cl-lib)) - -;; Silence the compiler: -(declare-function font-latex-add-keywords - "font-latex" - (keywords class)) - -(declare-function LaTeX-item-equation-alignat - "amsmath" (&optional suppress)) - -(defvar LaTeX-mathtools-package-options) - -(defvar LaTeX-empheq-key-val-options - `(("box") - ("innerbox") - ("left" ,(mapcar - (lambda (x) - (concat TeX-esc x)) - '("empheqlbrace" - "empheqlbrack" - "empheqlangle" - "empheqlparen" - "empheqlvert" - "empheqlVert" - "empheqlfloor" - "empheqlceil" - "empheqbiglbrace" - "empheqbiglbrack" - "empheqbiglangle" - "empheqbiglparen" - "empheqbiglvert" - "empheqbiglVert" - "empheqbiglfloor" - "empheqbiglceil"))) - ("right" ,(mapcar - (lambda (x) - (concat TeX-esc x)) - '("empheqrbrace" - "empheqrbrack" - "empheqrangle" - "empheqrparen" - "empheqrvert" - "empheqrVert" - "empheqrfloor" - "empheqrceil" - "empheqbigrbrace" - "empheqbigrbrack" - "empheqbigrangle" - "empheqbigrparen" - "empheqbigrvert" - "empheqbigrVert" - "empheqbigrfloor" - "empheqbigrceil"))) - ("outerbox") - ("marginbox")) - "Key=value options for environments from empheq.sty.") - -(defvar LaTeX-empheq-supported-amsmath-envs - '("equation" "equation*" - "align" "align*" - "gather" "gather*" - "flalign" "flalign*" - "alignat" "alignat*" - "multline" "multline*") - "List of amsmath environments supported by empheq package.") - -(defvar LaTeX-empheq-package-options - '("overload" "overload2" "ntheorem" "newmultline" "oldmultline") - "Package options for the empheq package.") -(TeX-load-style "mathtools") -;; Add elements from `LaTeX-mathtools-package-options' only once -;; and not every time the style hook runs -(dolist (elt LaTeX-mathtools-package-options) - (add-to-list 'LaTeX-empheq-package-options elt)) - -;; Setup for \Declare(Left|Right)Delimiter: - -(TeX-auto-add-type "empheq-declaredelimiter" "LaTeX") - -(defvar LaTeX-empheq-declaredelimiter-regexp - `(,(concat "\\\\Declare\\(Left\\|Right\\)Delimiter" - "[ \t\n\r%]*" - "\\(?:\\[[^]]*\\]\\)?" - "[ \t\n\r%]*" - "{" - (regexp-quote TeX-esc) - "\\([^}]+\\)}") - (2 1) LaTeX-auto-empheq-declaredelimiter) - "Matches the argument of \\Declare(Left|Right)Delimiter from empheq package.") - -(defun LaTeX-empheq-auto-prepare () - "Clear `LaTeX-auto-empheq-declaredelimiter' before parsing." - (setq LaTeX-auto-empheq-declaredelimiter nil)) - -(defun LaTeX-empheq-auto-cleanup () - "Process parsed delimiters." - (dolist (delim (mapcar #'car (LaTeX-empheq-declaredelimiter-list))) - (TeX-add-symbols (concat "empheq" delim) - (concat "empheqbig" delim)))) - -(add-hook 'TeX-auto-prepare-hook #'LaTeX-empheq-auto-prepare t) -(add-hook 'TeX-auto-cleanup-hook #'LaTeX-empheq-auto-cleanup t) -(add-hook 'TeX-update-style-hook #'TeX-auto-parse t) - -(defun LaTeX-empheq-key-val-options () - "Return an updated list of key=vals from empheq package. -This function retrieves values of user defined left and right -delimiters and prepends them to variable -`LaTeX-empheq-key-val-options'." - (append - (when (LaTeX-empheq-declaredelimiter-list) - (let ((lvals (copy-sequence - (cadr (assoc "left" LaTeX-empheq-key-val-options)))) - (rvals (copy-sequence - (cadr (assoc "right" LaTeX-empheq-key-val-options))))) - (dolist (delims (LaTeX-empheq-declaredelimiter-list)) - (let ((delim (car delims)) - (where (cadr delims))) - (if (string= where "Left") - (progn - (cl-pushnew (concat TeX-esc "empheq" delim) lvals :test #'equal) - (cl-pushnew (concat TeX-esc "empheqbig" delim) lvals :test #'equal)) - (cl-pushnew (concat TeX-esc "empheq" delim) rvals :test #'equal) - (cl-pushnew (concat TeX-esc "empheqbig" delim) rvals :test #'equal)))) - `(("left" ,lvals) - ("right" ,rvals)))) - LaTeX-empheq-key-val-options)) - -(defun LaTeX-empheq-env (env) - "Query for a supported amsmath environment and insert it accordingly. -ENV is the name of environment passed to the function in the style hook." - (let* ((keyvals (TeX-read-key-val t (LaTeX-empheq-key-val-options))) - (amsenv (completing-read - (TeX-argument-prompt nil nil "amsmath environment") - LaTeX-empheq-supported-amsmath-envs)) - (ncols (when (or (string= amsenv "alignat") - (string= amsenv "alignat*")) - (TeX-read-string - (TeX-argument-prompt nil nil "Number of columns")))) - num) - (LaTeX-insert-environment - env - (concat - (when (and keyvals (not (string= keyvals ""))) - (concat LaTeX-optop keyvals LaTeX-optcl)) - TeX-grop - (if (and ncols (not (string= ncols ""))) - (concat amsenv "=" ncols) - amsenv) - TeX-grcl)) - (when (and (assoc amsenv LaTeX-label-alist) - (LaTeX-label amsenv 'environment)) - (LaTeX-newline) - (indent-according-to-mode)) - (when (and ncols (not (string= ncols ""))) - (setq num (string-to-number ncols)) - (save-excursion - (insert (make-string (+ num num -1) ?&)))))) - -(defun LaTeX-empheq-env-overload (env &optional _ignore) - "Insert amsmath ENV's when option overload is given to empheq package. -This function combines the capabilities of `LaTeX-env-label' and -`LaTeX-amsmath-env-alignat'. It overwrites the definitions of -`amsmath.el'." - (if (or (string= env "alignat") - (string= env "alignat*")) - (let ((ncols (TeX-read-string - (TeX-argument-prompt nil nil "Number of columns"))) - (keyvals (TeX-read-key-val t - (LaTeX-empheq-key-val-options) - "empheq options (k=v)"))) - (LaTeX-insert-environment env - (concat TeX-grop ncols TeX-grcl - (when (and keyvals - (not (string= keyvals ""))) - (concat LaTeX-optop - keyvals - LaTeX-optcl)))) - (LaTeX-item-equation-alignat t)) - (let ((keyvals - (TeX-read-key-val t - (LaTeX-empheq-key-val-options) - "empheq options (k=v)"))) - (LaTeX-insert-environment env - (when (and keyvals - (not (string= keyvals ""))) - (concat LaTeX-optop - keyvals - LaTeX-optcl))) - (when (and (assoc env LaTeX-label-alist) - (LaTeX-label env 'environment)) - (LaTeX-newline) - (indent-according-to-mode))))) - -(defun LaTeX-empheq-item-equation () - "Insert contents to terminate a line in multi-line equations environment. -Put line break macro on the last line. Next, if the current -environment wants \\label, insert it also. And insert suitable -number of ampersands if possible." - (let ((env (LaTeX-current-environment)) - amsenv ncols match) - (save-excursion - (LaTeX-find-matching-begin) - (re-search-forward (concat (regexp-quote TeX-esc) - "begin" TeX-grop env TeX-grcl)) - (when (looking-at "[ \t\n\r%]*\\[") - (forward-sexp)) - (re-search-forward "[ \t\n\r%]*{\\([^}]+\\)}") - (setq match (replace-regexp-in-string "[ \t\n\r%]" "" - (match-string-no-properties 1))) - (if (string-match "=" match) - (progn - (setq amsenv (car (split-string match "="))) - (setq ncols (string-to-number (cadr (split-string match "="))))) - (setq amsenv match))) - ;; Do not ask for "\\" if in "equation" or "equation*" since these - ;; are single line equations only - (if (or (string= amsenv "equation") - (string= amsenv "equation*")) - ;; Nullify the effect of `M-RET' - (progn - (message "This environment does not support multi-line equations") - (end-of-line 0) - (kill-line 1)) - (progn - (end-of-line 0) - (just-one-space) - (TeX-insert-macro "\\") - (forward-line 1) - (indent-according-to-mode))) - ;; Add a new label only if not in "equation" - (when (and (not (string= amsenv "equation")) - (assoc amsenv LaTeX-label-alist) - (LaTeX-label amsenv 'environment)) - (LaTeX-newline) - (indent-according-to-mode)) - (when ncols - (save-excursion - (insert (make-string (+ ncols ncols -1) ?&)))))) - -(TeX-add-style-hook - "empheq" - (lambda () - - ;; Add empheq to parser - (TeX-auto-add-regexp LaTeX-empheq-declaredelimiter-regexp) - - ;; Load amsmath.el and mathtools.el - (TeX-run-style-hooks "amsmath" "mathtools") - - (LaTeX-add-environments - '("empheq" LaTeX-empheq-env)) - - ;; Add "empheq" to `LaTeX-item-list' and run - ;; `LaTeX-empheq-item-equation' when `M-RET' is invoked - (add-to-list 'LaTeX-item-list '("empheq" . LaTeX-empheq-item-equation) t) - - ;; Reftex support: Use `reftex-add-label-environments' - (when (fboundp 'reftex-add-label-environments) - (reftex-add-label-environments '(("empheq" ?e nil nil t)))) - - (TeX-add-symbols - '("empheqset" (TeX-arg-key-val (LaTeX-empheq-key-val-options))) - - ;; 1.4 Special delimiters - ;; Normal - '("empheqlbrace" TeX-arg-insert-right-brace-maybe) - '("empheqrbrace") - '("empheqlbrack" TeX-arg-insert-right-brace-maybe) - '("empheqrbrack") - '("empheqlangle" TeX-arg-insert-right-brace-maybe) - '("empheqrangle") - '("empheqlparen" TeX-arg-insert-right-brace-maybe) - '("empheqrparen") - '("empheqlvert" TeX-arg-insert-right-brace-maybe) - '("empheqrvert") - '("empheqlVert" TeX-arg-insert-right-brace-maybe) - '("empheqrVert") - '("empheqlfloor" TeX-arg-insert-right-brace-maybe) - '("empheqrfloor") - '("empheqlceil" TeX-arg-insert-right-brace-maybe) - '("empheqrceil") - ;; Bigger - '("empheqbiglbrace" TeX-arg-insert-right-brace-maybe) - '("empheqbigrbrace") - '("empheqbiglbrack" TeX-arg-insert-right-brace-maybe) - '("empheqbigrbrack") - '("empheqbiglangle" TeX-arg-insert-right-brace-maybe) - '("empheqbigrangle") - '("empheqbiglparen" TeX-arg-insert-right-brace-maybe) - '("empheqbigrparen") - '("empheqbiglvert" TeX-arg-insert-right-brace-maybe) - '("empheqbigrvert") - '("empheqbiglVert" TeX-arg-insert-right-brace-maybe) - '("empheqbigrVert") - '("empheqbiglfloor" TeX-arg-insert-right-brace-maybe) - '("empheqbigrfloor") - '("empheqbiglceil" TeX-arg-insert-right-brace-maybe) - '("empheqbigrceil")) - - ;; Append delimiters to `TeX-braces-association' - (make-local-variable 'TeX-braces-association) - (let ((delimiters '(("\\empheqlbrace" . "\\empheqrbrace") - ("\\empheqlbrack" . "\\empheqrbrack") - ("\\empheqlangle" . "\\empheqrangle") - ("\\empheqlparen" . "\\empheqrparen") - ("\\empheqlvert" . "\\empheqrvert") - ("\\empheqlVert" . "\\empheqrVert") - ("\\empheqlfloor" . "\\empheqrfloor") - ("\\empheqlceil" . "\\empheqrceil") - ("\\empheqbiglbrace" . "\\empheqbigrbrace") - ("\\empheqbiglbrack" . "\\empheqbigrbrack") - ("\\empheqbiglangle" . "\\empheqbigrangle") - ("\\empheqbiglparen" . "\\empheqbigrparen") - ("\\empheqbiglvert" . "\\empheqbigrvert") - ("\\empheqbiglVert" . "\\empheqbigrVert") - ("\\empheqbiglfloor" . "\\empheqbigrfloor") - ("\\empheqbiglceil" . "\\empheqbigrceil")))) - (dolist (elt delimiters) - (add-to-list 'TeX-braces-association elt t))) - - ;; 2.2.1 Using multline - (when (LaTeX-provided-package-options-member "empheq" "oldmultline") - (LaTeX-add-environments - '("MTmultlined" LaTeX-mathtools-env-multlined))) - - ;; 2.2.2 The overload option - ;; I simplify it and ignore the additional feature overload2: - (when (or (LaTeX-provided-package-options-member "empheq" "overload") - (LaTeX-provided-package-options-member "empheq" "overload2")) - (LaTeX-add-environments - '("align" LaTeX-empheq-env-overload) - '("alignat" LaTeX-empheq-env-overload) - '("equation" LaTeX-empheq-env-overload) - '("flalign" LaTeX-empheq-env-overload) - '("gather" LaTeX-empheq-env-overload) - '("multline" LaTeX-empheq-env-overload) - '("align*" LaTeX-env-args [TeX-arg-key-val (LaTeX-empheq-key-val-options)]) - '("alignat*" LaTeX-empheq-env-overload) - '("equation*" LaTeX-env-args [TeX-arg-key-val (LaTeX-empheq-key-val-options)]) - '("flalign*" LaTeX-env-args [TeX-arg-key-val (LaTeX-empheq-key-val-options)]) - '("gather*" LaTeX-env-args [TeX-arg-key-val (LaTeX-empheq-key-val-options)]) - '("multline*" LaTeX-env-args [TeX-arg-key-val (LaTeX-empheq-key-val-options)]) - - ;; Original definitions are stored prefixed with "AmS" - '("AmSalign" LaTeX-env-label) - '("AmSalignat" LaTeX-amsmath-env-alignat) - '("AmSequation" LaTeX-env-label) - '("AmSflalign" LaTeX-env-label) - '("AmSgather" LaTeX-env-label) - '("AmSmultline" LaTeX-env-label) - '("AmSalign*") - '("AmSalignat*" LaTeX-amsmath-env-alignat) - '("AmSequation*") - '("AmSflalign*") - '("AmSgather*") - '("AmSmultline*")) - - ;; Append original definitions to `LaTeX-label-alist' - (let ((envs '("AmSalign" - "AmSalignat" - "AmSequation" - "AmSflalign" - "AmSgather" - "AmSmultline"))) - (dolist (env envs) - (add-to-list 'LaTeX-label-alist `(,env . LaTeX-amsmath-label) t))) - - ;; RefTeX support: Add original definitions with `reftex-add-label-environments' - (when (fboundp 'reftex-add-label-environments) - (let ((envs '(("AmSalign" ?e nil nil eqnarray-like) - ("AmSequation" ?e nil nil t) - ("AmSgather" ?e nil nil eqnarray-like) - ("AmSmultline" ?e nil nil t) - ("AmSflalign" ?e nil nil eqnarray-like) - ("AmSalignat" ?e nil nil alignat-like)))) - (dolist (env envs) - (reftex-add-label-environments `(,env))))) - - ;; Append original definitions to `LaTeX-item-list'; functions - ;; are provided by amsmath.el - (let ((envs '(("AmSalign" . LaTeX-item-equation) - ("AmSalign*" . LaTeX-item-equation) - ("AmSflalign" . LaTeX-item-equation) - ("AmSalignat" . LaTeX-item-equation-alignat) - ("AmSalignat*" . LaTeX-item-equation-alignat) - ("AmSflalign*" . LaTeX-item-equation) - ("AmSgather" . LaTeX-item-equation) - ("AmSgather*" . LaTeX-item-equation) - ("AmSmultline" . LaTeX-item-equation) - ("AmSmultline*" . LaTeX-item-equation)))) - (dolist (env envs) - (add-to-list 'LaTeX-item-list env t))) - - ;; Ispell skip lists: - (TeX-ispell-skip-setcdr - `(,(cons (concat "\\(AmS\\(?:align\\(?:\\*\\|at\\*?\\)?\\|" - "equation\\*?\\|flalign\\*?\\|gather\\*?\\|multline\\*?\\)\\)") - (concat "\\\\end{" - "\\(AmS\\(?:align\\(?:\\*\\|at\\*?\\)?\\|" - "equation\\*?\\|flalign\\*?\\|gather\\*?\\|multline\\*?\\)\\)}"))))) - - ;; 3.2 Support for ntheorem - (LaTeX-add-lengths "mintagvsep") - - ;; 4.1 Creating your own delimiters - (TeX-add-symbols - '("DeclareLeftDelimiter" - [ "Space adjustment" ] - (TeX-arg-eval - (lambda () - (let ((delim (TeX-read-string (concat "Delimiter: " TeX-esc)))) - (TeX-add-symbols (concat "empheq" delim) - (concat "empheqbig" delim)) - (LaTeX-add-empheq-declaredelimiters `(,delim "Left")) - (concat TeX-esc delim))))) - - '("DeclareRightDelimiter" - [ "Space adjustment" ] - (TeX-arg-eval - (lambda () - (let ((delim (TeX-read-string (concat "Delimiter: " TeX-esc)))) - (TeX-add-symbols (concat "empheq" delim) - (concat "empheqbig" delim)) - (LaTeX-add-empheq-declaredelimiters `(,delim "Right")) - (concat TeX-esc delim)))))) - - ;; 4.2 Fine-tuning of delimiters - (LaTeX-add-lengths "EmphEqdelimitershortfall") - (LaTeX-add-counters "EmphEqdelimiterfactor") - - (TeX-add-symbols - ;; 4.3 Scaling material yourself - '("EmphEqdisplayheight" 0) - '("EmphEqdisplaydepth" 0) - ;; 6.1 New empheq-like environments - '("EmphEqMainEnv" 0) - '("endEmphEqMainEnv" 0)) - - ;; Fontification - (when (and (featurep 'font-latex) - (eq TeX-install-font-lock 'font-latex-setup)) - (font-latex-add-keywords '(("empheqset" "{") - ("DeclareLeftDelimiter" "[{") - ("DeclareRightDelimiter" "[{")) - 'function))) - TeX-dialect) - -;;; empheq.el ends here |