]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/auctex/style/amsmath.el
Remove version numbers in packages/ directory
[gnu-emacs-elpa] / packages / auctex / style / amsmath.el
diff --git a/packages/auctex/style/amsmath.el b/packages/auctex/style/amsmath.el
new file mode 100644 (file)
index 0000000..8f16425
--- /dev/null
@@ -0,0 +1,181 @@
+;;; amsmath.el --- Style hook for the AMS-LaTeX amsmath package.
+
+;; Copyright (C) 2002, 2005  Free Software Foundation, Inc.
+;; FIXME: What about the copyright for <= 2001?
+
+;; Author: Carsten Dominik <dominik@strw.leidenuniv.nl>
+;; Maintainer: auctex-devel@gnu.org
+
+;; 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 will also load the amstext, amsbsy and amsopn style files.
+
+;;; Code:
+
+(TeX-add-style-hook "amsmath"
+ (function
+  (lambda ()
+
+    (LaTeX-add-environments
+     '("align"      LaTeX-env-label)
+     '("gather"     LaTeX-env-label)
+     '("flalign"    LaTeX-env-label)
+     '("multline"   LaTeX-env-label)
+     '("alignat"    LaTeX-amsmath-env-alignat)
+     '("alignat*"   LaTeX-amsmath-env-alignat)
+     '("xalignat"   LaTeX-amsmath-env-alignat)
+     '("xalignat*"  LaTeX-amsmath-env-alignat)
+     '("xxalignat"  LaTeX-amsmath-env-alignat)
+     '("aligned"    LaTeX-amsmath-env-aligned)
+     '("gathered"   LaTeX-amsmath-env-aligned)
+     "align*" "gather*" "flalign*" "multline*" "equation*"
+     "split"
+     "cases"
+     "matrix" "smallmatrix" "pmatrix" "bmatrix" "Bmatrix" "vmatrix" "Vmatrix"
+     "subequations"
+     '("subarray" "Alignment"))
+
+    (TeX-add-symbols
+     '("eqref" TeX-arg-ref)
+     '("numberwithin" TeX-arg-counter "Section level")
+     '("raisetag" "Dimension")
+     '("intertext" t)
+     '("hdotsfor" ["Stretch"] "Number of columns to cover")
+     '("xleftarrow" ["Below"] "Above")
+     '("xrightarrow" ["Below"] "Above")
+     '("overset" "Accent symbol" "Symbol")
+     '("underset" "Accent symbol" "Symbol")
+     '("dfrac" 2)
+     '("tfrac" 2)
+     '("binom" 2)
+     '("dbinom" 2)
+     '("tbinom" 2)
+     '("genfrac" "Left delimiter" "Right delimiter" "Thickness"
+       "Mathstyle" 2)
+     '("cfrac" ["position (l or r)"] t)
+     '("smash" ["where (t or b)"] t)
+     '("sideset" "Left" "Right")
+     '("tag" "(Tag)")
+     '("tag*" "Tag")
+     '("displaybreak" ["Weight (0..4)"])
+     '("allowdisplaybreaks" ["Weight (1..4)"])
+     '("substack" t)
+     '("leftroot" "Push root index left by")
+     '("uproot" "Push root index upward by")
+     '("boxed" t)
+     '("mspace" t)
+     '("mod" t)
+     '("pmod" t)
+     '("pod" t)
+     '("overleftrightarrow" t)
+     '("underleftarrow" t)
+     '("underrightarrow" t)
+     '("underleftrightarrow" t)
+     '("dddot" t)
+     '("ddddot" t)
+     "bmod" "notag"
+     "dots" "dotsb" "dotsc" "dotsi" "dotsm" "dotso" "nobreakdash" 
+     "lvert" "rvert" "lVert" "rVert" 
+     "iint" "iiint" "iiiint" "idotsint"
+     )
+    
+    (setq  LaTeX-item-list 
+          (append '(("split"    . LaTeX-item-equation)
+                    ("multline" . LaTeX-item-equation)
+                    ("multline*" . LaTeX-item-equation)
+                    ("gather"   . LaTeX-item-equations)
+                    ("gather*"  . LaTeX-item-equation)
+                    ("gathered" . LaTeX-item-equation)
+                    ("align"    . LaTeX-item-equations)
+                    ("align*"   . LaTeX-item-equation)
+                    ("aligned"  . LaTeX-item-equation)
+                    ("alignat"  . LaTeX-item-equations)
+                    ("alignat*" . LaTeX-item-equation)
+                    ("xalignat"  . LaTeX-item-equations)
+                    ("xalignat*" . LaTeX-item-equation)
+                    ("xxalignat" . LaTeX-item-equation)
+                    ("flalign"  . LaTeX-item-equations)
+                    ("flalign*" . 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)
+                    ("cases"    . LaTeX-item-equation))
+                  LaTeX-item-list))
+
+    ;; When `LaTeX-amsmath-label' is nil, use value of LaTeX-equation-label:
+    (unless LaTeX-amsmath-label
+      (setq LaTeX-amsmath-label LaTeX-equation-label))
+
+    (setq LaTeX-label-alist
+         (append '(("align"      . LaTeX-amsmath-label)
+                   ("alignat"    . LaTeX-amsmath-label)
+                   ("xalignat"   . LaTeX-amsmath-label)
+                   ("multline"    . LaTeX-amsmath-label)
+                   ("flalign"    . LaTeX-amsmath-label)
+                   ("gather"     . LaTeX-amsmath-label))
+                 LaTeX-label-alist))
+
+    ;; amsmath includes amstext, amsbsy, & amsopn.
+    ;; So we run their hooks, too.
+    (TeX-run-style-hooks "amstext" "amsbsy" "amsopn")
+
+    ;; If RefTeX is loaded, make it recognize the amsmath environments.
+    (when (fboundp 'reftex-add-to-label-alist)
+      (reftex-add-to-label-alist '(AMSTeX))))))
+
+(defun LaTeX-amsmath-env-alignat (env)
+  (let ((ncols (read-string "Number of columns: ")))
+    (LaTeX-insert-environment env (concat TeX-grop ncols TeX-grcl))
+    (and (not (string= "xxalignat" env))
+        (not (string= "*" (substring env -1)))
+        (LaTeX-label env)
+        (newline-and-indent))))
+
+(defun LaTeX-amsmath-env-aligned (env)
+  (let ((where (read-string "(optional) Vertical position (t or b): ")))
+    (if (string= where "")
+       (setq where "")
+      (setq where (concat "[" where "]")))
+    (LaTeX-insert-environment env where)))
+
+(defun LaTeX-item-equation ()
+  (end-of-line 0)
+  (just-one-space)
+  (insert "\\\\")
+  (forward-line 1)
+  (indent-according-to-mode))
+
+(defun LaTeX-item-equations ()
+  (LaTeX-item-equation)
+  (let ((environment (LaTeX-current-environment 1)))
+    (and (LaTeX-label environment)
+        (newline-and-indent))))
+
+(defvar LaTeX-amsmath-package-options '("intlimits" "nointlimits"
+                                       "sumlimits" "nosumlimits"
+                                       "namelimits" "nonamelimits"
+                                       "leqno" "reqno" "centertags"
+                                       "tbtags" "cmex10" "fleqn" "?")
+    "Package options for the amsmath package.")
+
+;;; amsmath.el ends here.