summaryrefslogtreecommitdiff
path: root/elpa/auctex-13.1.3/style/mathtools.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/auctex-13.1.3/style/mathtools.el')
-rw-r--r--elpa/auctex-13.1.3/style/mathtools.el504
1 files changed, 0 insertions, 504 deletions
diff --git a/elpa/auctex-13.1.3/style/mathtools.el b/elpa/auctex-13.1.3/style/mathtools.el
deleted file mode 100644
index d0e1f26..0000000
--- a/elpa/auctex-13.1.3/style/mathtools.el
+++ /dev/null
@@ -1,504 +0,0 @@
-;;; mathtools.el --- Style hook for the LaTeX package `mathtools'. -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2011-2020, 2022 Free Software Foundation, Inc.
-
-;; Author: Mads Jensen <mje@inducks.org>
-;; Created: 2011-02-13
-;; 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 `mathtools.sty'
-
-;;; Comments:
-
-;;; This package serves as a wrapper for amsmath, adding more features
-;;; and fixing a few bugs in amsmath. The mathstyle argument for many
-;;; of the macros is discussed at
-;;; <https://www.tug.org/TUGboat/Articles/tb22-4/tb72perlS.pdf>
-
-;;; Code:
-
-;; Needed for auto-parsing:
-(require 'tex)
-(require 'latex)
-
-;; Silence the compiler:
-(declare-function font-latex-add-keywords
- "font-latex"
- (keywords class))
-
-(defvar LaTeX-amsmath-package-options)
-
-;; amsmath options which can be passed directly to mathtools are
-;; appended in the style hook below
-(defvar LaTeX-mathtools-package-options
- '("fixamsmath" "donotfixamsmathbugs" "allowspaces" "disallowspaces"
- ;; Update 2013: We now make \(\) and \[\] robust (can be disabled
- ;; via nonrobust package option)
- "nonrobust")
- "Package options for the mathtools package.")
-(TeX-load-style "amsmath")
-(dolist (elt LaTeX-amsmath-package-options)
- (add-to-list 'LaTeX-mathtools-package-options elt))
-
-(defvar LaTeX-mathtools-key-val-options
- '(("showonlyrefs")
- ("mathic" ("true" "false"))
- ("showmanualtags" ("true" "false"))
- ;; 3.4.1 Matrices
- ("smallmatrix-align" ("c" "l" "r"))
- ("smallmatrix-inner-space")
- ;; 3.4.2 The multlined environment
- ("firstline-afterskip")
- ("lastline-preskip")
- ("multlined-pos" ("c" "b" "t"))
- ("multlined-width")
- ;; 3.4.7 Centered \vdots
- ("shortvdotsadjustabove")
- ("shortvdotsadjustbelow")
- ;; 3.5 Intertext and short intertext
- ("original-intertext" ("true" "false"))
- ("original-shortintertext" ("true" "false"))
- ("above-intertext-sep")
- ("below-intertext-sep")
- ("above-shortintertext-sep")
- ("below-shortintertext-sep")
- ;; 3.7.2 Vertically centered colon
- ("centercolon" ("true" "false"))
- ;; 4.2 Left sub/superscripts
- ("prescript-sub-format")
- ("prescript-sup-format")
- ("prescript-arg-format"))
- "Options for the \\mathtoolsset command.")
-
-;; Setup for \newtagform
-(TeX-auto-add-type "mathtools-newtagform" "LaTeX")
-
-(defvar LaTeX-mathtools-newtagform-regexp
- '("\\\\newtagform{\\([^}]+\\)}"
- 1 LaTeX-auto-mathtools-newtagform)
- "Matches the first argument of \\newtagform from mathtools package.")
-
-;; Setup for \DeclarePairedDelimiter(X)?:
-(TeX-auto-add-type "mathtools-DeclarePairedDelimiter" "LaTeX")
-
-(defvar LaTeX-mathtools-DeclarePairedDelimiter-regexp
- `(,(concat "\\\\DeclarePairedDelimiter\\(?:X\\|XPP\\)?"
- "{?"
- "\\\\\\([a-zA-Z]+\\)"
- "}?"
- "\\(?:\\[\\([0-9]+\\)\\]\\)?")
- (1 2) LaTeX-auto-mathtools-DeclarePairedDelimiter)
- "Match the arguments of \\DeclarePairedDelimiterX? from mathtools package.")
-
-;; Setup for \newgathered
-(TeX-auto-add-type "mathtools-newgathered" "LaTeX")
-
-(defvar LaTeX-mathtools-newgathered-regexp
- '("\\\\newgathered{\\([^}]+\\)}"
- 1 LaTeX-auto-mathtools-newgathered)
- "Matches the first argument of \\newgathered from mathtools package.")
-
-(defun LaTeX-mathtools-auto-prepare ()
- "Clear various variables for mathtools package before parsing."
- (setq LaTeX-auto-mathtools-newtagform nil
- LaTeX-auto-mathtools-DeclarePairedDelimiter nil
- LaTeX-auto-mathtools-newgathered nil))
-
-(defun LaTeX-mathtools-auto-cleanup ()
- "Process the parsed elements for mathtools package."
- (when (LaTeX-mathtools-DeclarePairedDelimiter-list)
- (dolist (delim (LaTeX-mathtools-DeclarePairedDelimiter-list))
- (let ((cmd (car delim))
- (arg (cadr delim)))
- (TeX-add-symbols `(,cmd [ LaTeX-mathtools-arg-mathsize-completion ]
- ,(if (string= arg "")
- 1
- (string-to-number arg)))
- `(,(concat cmd "*")
- ,(if (string= arg "")
- 1
- (string-to-number arg)))))))
- (when (LaTeX-mathtools-newgathered-list)
- (dolist (env (mapcar #'car (LaTeX-mathtools-newgathered-list)))
- (LaTeX-add-environments env)
- (add-to-list 'LaTeX-item-list
- `(,env . LaTeX-item-equation) t)
- (add-to-list 'LaTeX-label-alist
- `(,env . LaTeX-amsmath-label) t)
- (when (fboundp 'reftex-add-label-environments)
- (reftex-add-label-environments `((,env ?e nil nil t)))))))
-
-(add-hook 'TeX-auto-prepare-hook #'LaTeX-mathtools-auto-prepare t)
-(add-hook 'TeX-auto-cleanup-hook #'LaTeX-mathtools-auto-cleanup t)
-(add-hook 'TeX-update-style-hook #'TeX-auto-parse t)
-
-(defun LaTeX-mathtools-arg-mathstyle-completion (optional)
- "Query and insert mathstyle argument to various commands.
-If OPTIONAL, insert it as optional argument in brackets."
- (TeX-argument-insert
- (completing-read
- (TeX-argument-prompt optional nil
- (concat "Math style: " TeX-esc) t)
- '("displaystyle" "textstyle"
- "scriptstyle" "scriptscriptstyle"))
- optional TeX-esc))
-
-(defun LaTeX-mathtools-arg-mathsize-completion (optional)
- "Query and insert math size argument to various commands.
-If OPTIONAL, insert it as optional argument in brackets."
- (TeX-argument-insert
- (completing-read
- (TeX-argument-prompt optional nil
- (concat "Size command: " TeX-esc) t)
- '("big" "Big" "bigg" "Bigg"))
- optional TeX-esc))
-
-(defun LaTeX-mathtools-arg-declarepaireddelimiter (optional &optional X)
- "Query and insert various \\DeclarePairedDelimiter macros from mathtools package."
- (let ((cmd (TeX-read-string (concat "Command: " TeX-esc)))
- (arg (when X (TeX-read-string
- (TeX-argument-prompt t nil "Number of arguments")))))
- (TeX-add-symbols `(,cmd [ LaTeX-mathtools-arg-mathsize-completion ]
- ,(if X
- ;; This is no precaution, arg has to be > 0
- (string-to-number arg)
- 1))
- `(,(concat cmd "*")
- ,(if X
- (string-to-number arg)
- 1)))
- (LaTeX-add-mathtools-DeclarePairedDelimiters
- `(,cmd ,(if X arg "")))
- (TeX-argument-insert cmd optional TeX-esc)
- (when arg
- (insert (concat LaTeX-optop arg LaTeX-optcl)))))
-
-(defun LaTeX-mathtools-env-multlined (env)
- "Query and insert two optional arguments for ENV multlined.
-If both arguments are given, insert them in brackets. If only a
-width is given, insert it prefixed with a pair of empty
-brackets."
- (let ((pos (TeX-read-string
- (TeX-argument-prompt t nil "Position (t, b or c (default))")))
- (width (completing-read
- (TeX-argument-prompt t nil "Width")
- (mapcar
- (lambda (x) (concat TeX-esc (car x)))
- (LaTeX-length-list)))))
- (LaTeX-insert-environment
- env
- (cond (;; both arguments
- (and pos (not (string= pos ""))
- width (not (string= width "")))
- (format "[%s][%s]" pos width))
- (;; pos not empty, width empty
- (and pos (not (string= pos ""))
- (string= width ""))
- (format "[%s]" pos))
- (;; pos empty, width not
- (and (string= pos "")
- width (not (string= width "")))
- (format "[][%s]" width))
- (t nil)))))
-
-(defun LaTeX-mathtools-env-cases (env)
- "Insert various cases ENVs incl. an ampersand from mathtools package."
- (LaTeX-insert-environment env)
- (save-excursion
- (insert ?&)))
-
-(defun LaTeX-mathtools-item-cases ()
- "Insert contents to terminate a line in multi-line cases environment.
-Put line break macro on the last line. Next, insert an ampersand."
- (end-of-line 0)
- (just-one-space)
- (TeX-insert-macro "\\")
- (forward-line 1)
- (save-excursion
- (insert ?&)))
-
-(TeX-add-style-hook
- "mathtools"
- (lambda ()
-
- ;; Add mathtools to parser
- (TeX-auto-add-regexp LaTeX-mathtools-newtagform-regexp)
- (TeX-auto-add-regexp LaTeX-mathtools-DeclarePairedDelimiter-regexp)
- (TeX-auto-add-regexp LaTeX-mathtools-newgathered-regexp)
-
- ;; "default" is pre-defined
- (LaTeX-add-mathtools-newtagforms "default")
-
- ;; mathtools requires amsmath, as some bugs in amsmath are fixed
- (TeX-run-style-hooks "amsmath")
-
- (LaTeX-add-environments
- ;; 3.4.1 Matrices
- '("matrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("pmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("bmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("Bmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("vmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("Vmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("smallmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("psmallmatrix")
- '("psmallmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("bsmallmatrix")
- '("bsmallmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("Bsmallmatrix")
- '("Bsmallmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("vsmallmatrix")
- '("vsmallmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- '("Vsmallmatrix")
- '("Vsmallmatrix*" [ "Vertical alignment (l, r or c (default))" ])
- ;; 3.4.2 The multlined environment
- '("multlined" LaTeX-mathtools-env-multlined)
- ;; 3.4.3 More cases -like environments
- '("dcases" LaTeX-mathtools-env-cases)
- '("dcases*" LaTeX-mathtools-env-cases)
- '("rcases" LaTeX-mathtools-env-cases)
- '("rcases*" LaTeX-mathtools-env-cases)
- '("drcases" LaTeX-mathtools-env-cases)
- '("drcases*" LaTeX-mathtools-env-cases)
- '("cases*" LaTeX-mathtools-env-cases)
- ;; 4.4 Spreading equations
- '("spreadlines" "Spacing between lines")
- ;; 4.5 Gathered environments
- '("lgathered" ["Vertical position (t or b)"])
- '("rgathered" ["Vertical position (t or b)"]))
-
- (TeX-add-symbols
- '("mathtoolsset" (TeX-arg-key-val LaTeX-mathtools-key-val-options))
- ;; 3.1.1 A complement to \smash, \llap, and \rlap
- '("mathllap" [ LaTeX-mathtools-arg-mathstyle-completion ] t)
- '("mathrlap" [ LaTeX-mathtools-arg-mathstyle-completion ] t)
- '("mathclap" [ LaTeX-mathtools-arg-mathstyle-completion ] t)
- '("mathmakebox" [ (TeX-arg-length "Width") ] [ "Position" ] 1)
- '("clap" 1)
- '("mathmbox" 1)
- ;; 3.1.2 Forcing a cramped style
- '("cramped" [ LaTeX-mathtools-arg-mathstyle-completion ] 1)
- '("crampedllap" [ LaTeX-mathtools-arg-mathstyle-completion ] t)
- '("crampedrlap" [ LaTeX-mathtools-arg-mathstyle-completion ] t)
- '("crampedclap" [ LaTeX-mathtools-arg-mathstyle-completion ] t)
- ;; 3.1.3 Smashing an operator
- '("smashoperator" [ "Position (l, r or lr (default)" ] 1)
- ;; 3.1.4 Adjusting the limits of operators
- '("adjustlimits" t (TeX-arg-literal "_") nil nil (TeX-arg-literal "_") nil)
- ;; 3.1.5 Swapping space above AMS display math environments
- '("SwapAboveDisplaySkip" 0)
- ;; 3.2.1 The appearance of tags
- '("newtagform"
- (TeX-arg-eval
- (lambda ()
- (let ((newtag (TeX-read-string
- (TeX-argument-prompt nil nil "Name"))))
- (LaTeX-add-mathtools-newtagforms newtag)
- (format "%s" newtag))))
- [ "Inner format" ] "Left" "Right")
- '("renewtagform"
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Name")
- (LaTeX-mathtools-newtagform-list))
- [ "Inner format" ] "Left" "Right")
- '("usetagform"
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Name")
- (LaTeX-mathtools-newtagform-list)))
- ;; 3.2.2 Showing only referenced tags
- '("refeq" TeX-arg-ref)
- '("noeqref" TeX-arg-ref)
- ;; 3.3.1 Arrow-like symbols
- '("xleftrightarrow" ["Below"] "Above")
- '("xLeftarrow" ["Below"] "Above")
- '("xRightarrow" ["Below"] "Above")
- '("xLeftrightarrow" ["Below"] "Above")
- '("xhookleftarrow" ["Below"] "Above")
- '("xhookrightarrow" ["Below"] "Above")
- '("xmapsto" ["Below"] "Above")
- '("xrightharpoondown" ["Below"] "Above")
- '("xrightharpoonup" ["Below"] "Above")
- '("xleftharpoondown" ["Below"] "Above")
- '("xleftharpoonup" ["Below"] "Above")
- '("xrightleftharpoons" ["Below"] "Above")
- '("xleftrightharpoons" ["Below"] "Above")
- ;; 3.3.2 Braces and brackets
- '("underbracket" [ (TeX-arg-length "Rule thickness") ]
- [ (TeX-arg-length "Bracket height") ] t)
- '("overbracket" [ (TeX-arg-length "Rule thickness") ]
- [ (TeX-arg-length "Bracket height") ] t)
- '("underbrace" 1)
- '("overbrace" 1)
- '("LaTeXunderbrace" 1)
- '("LaTeXoverbrace" 1)
- ;; 3.4.2
- '("shoveleft" [ (TeX-arg-length "Dimension") ] 1)
- '("shoveright" [ (TeX-arg-length "Dimension") ] 1)
- ;; 3.4.4
- '("MoveEqLeft" [ "Number" ])
- ;; 3.4.5 Boxing a single line in an alignment
- '("Aboxed" 1)
- ;; 3.4.6 Adding arrows between lines in an alignment
- '("ArrowBetweenLines" [ TeX-arg-macro ] )
- '("ArrowBetweenLines*" [ TeX-arg-macro ] )
- ;; 3.4.7 Centered \vdots
- '("vdotswithin" "Symbol")
- '("shortvdotswithin" "Symbol")
- '("shortvdotswithin*" "Symbol")
- '("MTFlushSpaceAbove")
- '("MTFlushSpaceBelow")
- ;; 3.5 Intertext and short intertext
- ;; don't understand t, but intertext in amsmath.el uses it
- '("shortintertext" t)
- ;; 3.6 Paired delimiters
- '("DeclarePairedDelimiter"
- LaTeX-mathtools-arg-declarepaireddelimiter
- "Left delimiter" "Right delimiter")
- '("DeclarePairedDelimiterX"
- (LaTeX-mathtools-arg-declarepaireddelimiter t)
- "Left delimiter" "Right delimiter" t)
- '("DeclarePairedDelimiterXPP"
- (LaTeX-mathtools-arg-declarepaireddelimiter t)
- "Pre-code" "Left delimiter" "Right delimiter" 2)
- '("delimsize" 0)
- ;; 3.6.1 Expert use
- '("reDeclarePairedDelimiterInnerWrapper"
- (TeX-arg-eval
- (lambda ()
- (let ((cmd (completing-read
- (concat "Command: " TeX-esc)
- (mapcar #'car (LaTeX-mathtools-DeclarePairedDelimiter-list)))))
- (concat TeX-esc cmd))))
- (TeX-arg-eval completing-read
- "star or nostar: "
- '("star" "nostar"))
- t)
- ;; 3.7.1 Left and right parentheses
- '("lparen" TeX-arg-insert-right-brace-maybe)
- '("rparen")
- ;; 3.7.2 Vertically centered colon
- "vcentcolon" "ordinarycolon" "coloneqq" "Coloneqq"
- "coloneq" "Coloneq" "eqqcolon" "Eqqcolon" "eqcolon"
- "Eqcolon" "colonapprox" "Colonapprox" "colonsim" "Colonsim"
- "dblcolon"
- ;; 3.7.3 A few missing symbols
- "nuparrow" "ndownarrow" "bigtimes"
- ;; 4.2 Left sub/superscripts
- '("prescript" "Below" "Above" t)
- ;; 4.3 Declaring math sizes
- '("DeclareMathSizes" 4)
- ;; 4.5 Gathered environments
- '("newgathered"
- (TeX-arg-eval
- (lambda ()
- (let ((env (TeX-read-string
- (TeX-argument-prompt nil nil "Name"))))
- (LaTeX-add-environments env)
- (LaTeX-add-mathtools-newgathereds env)
- (add-to-list 'LaTeX-item-list
- `(,env . LaTeX-item-equation) t)
- (add-to-list 'LaTeX-label-alist
- `(,env . LaTeX-amsmath-label) t)
- (format "%s" env))))
- 3)
- '("renewgathered"
- (TeX-arg-eval completing-read
- (TeX-argument-prompt nil nil "Name")
- (LaTeX-mathtools-newgathered-list))
- 3)
- ;; 4.6 Split fractions
- '("splitfrac" 2)
- '("splitdfrac" 2))
-
- ;; Append delimiters to `TeX-braces-association'
- ;; 3.7.1 Left and right parentheses
- (make-local-variable 'TeX-braces-association)
- (add-to-list 'TeX-braces-association '("\\lparen" . "\\rparen") t)
-
- (setq LaTeX-item-list
- (append '(("multlined" . LaTeX-item-equation)
- ("lgathered" . LaTeX-item-equation)
- ("rgathered" . LaTeX-item-equation)
- ;; FIXME: The entry for spreadlines seems dubious.
- ("spreadlines" . LaTeX-item-equation)
- ("matrix*" . LaTeX-item-equation)
- ("pmatrix*" . LaTeX-item-equation)
- ("bmatrix*" . LaTeX-item-equation)
- ("Bmatrix*" . LaTeX-item-equation)
- ("vmatrix*" . LaTeX-item-equation)
- ("Vmatrix*" . LaTeX-item-equation)
- ("smallmatrix*" . LaTeX-item-equation)
- ("psmallmatrix" . LaTeX-item-equation)
- ("psmallmatrix*" . LaTeX-item-equation)
- ("bsmallmatrix" . LaTeX-item-equation)
- ("bsmallmatrix*" . LaTeX-item-equation)
- ("Bsmallmatrix" . LaTeX-item-equation)
- ("Bsmallmatrix*" . LaTeX-item-equation)
- ("vsmallmatrix" . LaTeX-item-equation)
- ("vsmallmatrix*" . LaTeX-item-equation)
- ("Vsmallmatrix" . LaTeX-item-equation)
- ("Vsmallmatrix*" . LaTeX-item-equation)
- ("dcases" . LaTeX-mathtools-item-cases)
- ("dcases*" . LaTeX-mathtools-item-cases)
- ("rcases" . LaTeX-mathtools-item-cases)
- ("rcases*" . LaTeX-mathtools-item-cases)
- ("drcases" . LaTeX-mathtools-item-cases)
- ("drcases*" . LaTeX-mathtools-item-cases)
- ("cases*" . LaTeX-mathtools-item-cases))
- LaTeX-item-list))
-
- (setq LaTeX-label-alist
- (append '(("lgathered" . LaTeX-amsmath-label)
- ("rgathered" . LaTeX-amsmath-label)
- ("multlined" . LaTeX-amsmath-label))
- LaTeX-label-alist))
-
- ;; RefTeX support: Add env's with `reftex-add-label-environments'
- (when (fboundp 'reftex-add-label-environments)
- (let ((envs '(("lgathered" ?e nil nil t)
- ("rgathered" ?e nil nil t)
- ("multlined" ?e nil nil t))))
- (dolist (env envs)
- (reftex-add-label-environments `(,env)))))
-
- ;; Fontification
- (when (and (featurep 'font-latex)
- (eq TeX-install-font-lock 'font-latex-setup))
- (font-latex-add-keywords '(("mathtoolsset" "{")
- ("newtagform" "{[{{")
- ("renewtagform" "{[{{")
- ("DeclarePairedDelimiter" "|{\\{{")
- ("DeclarePairedDelimiterX" "|{\\[{{{")
- ("DeclarePairedDelimiterXPP" "|{\\[{{{{{")
- ("reDeclarePairedDelimiterInnerWrapper" "|{\\{{")
- ("DeclareMathSizes" "{{{{")
- ("newgathered" "{{{{")
- ("renewgathered" "{{{{"))
- 'function)
- (font-latex-add-keywords '(("usetagform" "{"))
- 'variable)
- (font-latex-add-keywords '(("refeq" "{")
- ("noeqref" "{"))
- 'reference)))
- TeX-dialect)
-
-;;; mathtools.el ends here