diff options
Diffstat (limited to 'elpa/auctex-13.1.3/style/breqn.el')
-rw-r--r-- | elpa/auctex-13.1.3/style/breqn.el | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/elpa/auctex-13.1.3/style/breqn.el b/elpa/auctex-13.1.3/style/breqn.el new file mode 100644 index 0000000..0352055 --- /dev/null +++ b/elpa/auctex-13.1.3/style/breqn.el @@ -0,0 +1,141 @@ +;;; breqn.el --- AUCTeX style for `breqn.sty' (v0.98j) -*- lexical-binding: t; -*- + +;; Copyright (C) 2017--2020 Free Software Foundation, Inc. + +;; Author: Arash Esbati <arash@gnu.org> +;; Maintainer: auctex-devel@gnu.org +;; Created: 2017-01-06 +;; 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 `breqn.sty' (v0.98j) from 2020/04/19. +;; `breqn.sty' is part of TeXLive. + +;; In breqn documentation, there is the following statement: +;; +;; 9 Various environment options +;; +;; Use of the normal \label command instead of the label option +;; works, I think, most of the time (untested). +;; +;; To be on the safe side, a label should be written in the optional +;; argument of an environment as value to the `label' key, e.g.: +;; +;; \begin{dmath}[label={eq:42}] +;; ... +;; \end{dmath} +;; +;; This style achieves this requirement by using the function +;; `LaTeX-env-label-as-keyval'. + +;;; Code: + +(require 'latex) + +(defvar LaTeX-breqn-key-val-options + '(("style" ("\\tiny" "\\scriptsize" "\\footnotesize" "\\small" + "\\normalsize" "\\large" "\\Large" "\\LARGE" + "\\huge" "\\Huge")) + ("number") + ("indentstep") + ("compact") + ("spread") + ("frame") + ("framesep") + ("breakdepth")) + "Key=value options for breqn environments. +The keys \"label\" and \"labelprefix\" are omitted.") + +(defvar LaTeX-breqn-key-val-label-regexp + `(,(concat + "\\\\begin{" + (regexp-opt '("dmath" "dseries" "dgroup" "darray")) + "}" + (LaTeX-extract-key-value-label)) + 1 LaTeX-auto-label) + "Matches the label inside an optional argument after \\begin{<breqn-env's>}.") + +(defun LaTeX-breqn-env (env) + "Insert ENV from breqn package incl. optional key=val argument. +Keys offered for key=val query depend on ENV. \"label\" and +\"labelprefix\" are omitted." + (let ((keyvals + (TeX-read-key-val t + (cond ((or (string= env "dgroup") + (string= env "dgroup*")) + (append '(("noalign") ("brace")) + LaTeX-breqn-key-val-options)) + ((or (string= env "darray") + (string= env "darray*")) + (append '(("noalign") ("brace") ("cols" ("{}"))) + LaTeX-breqn-key-val-options)) + (t LaTeX-breqn-key-val-options))))) + (LaTeX-insert-environment env (when (and keyvals + (not (string= keyvals ""))) + (concat LaTeX-optop keyvals LaTeX-optcl))) + (LaTeX-env-label-as-keyval nil nil keyvals env))) + +(add-hook 'TeX-update-style-hook #'TeX-auto-parse t) + +(TeX-add-style-hook + "breqn" + (lambda () + + ;; Add breqn to parser: + (TeX-auto-add-regexp LaTeX-breqn-key-val-label-regexp) + + ;; Tell AUCTeX that we want to prefix the labels with `LaTeX-equation-label': + (let ((envs '("dmath" "dseries" "dgroup" "darray"))) + (dolist (env envs) + (add-to-list 'LaTeX-label-alist `(,env . LaTeX-equation-label) t))) + + ;; For RefTeX, we must distinguish between equation and eqnarray-like: + ;; breqn env == equivalent -- starred + ;; dmath == equation -- dmath* == unnumbered + ;; dseries == equation -- dseries* == unnumbered + ;; dgroup == align -- dgroup* == unnumbered + ;; darray == eqnarray -- darray* == unnumbered + (when (fboundp 'reftex-add-label-environments) + (dolist (env '("dmath" "dseries" "dgroup")) + (reftex-add-label-environments `((,env ?e nil nil t)))) + (reftex-add-label-environments '(("darray" ?e nil nil eqnarray-like)))) + + (LaTeX-add-environments + '("dmath" LaTeX-breqn-env) + '("dmath*" LaTeX-breqn-env) + '("dseries" LaTeX-breqn-env) + '("dseries*" LaTeX-breqn-env) + '("dgroup" LaTeX-breqn-env) + '("dgroup*" LaTeX-breqn-env) + '("darray" LaTeX-breqn-env) + '("darray*" LaTeX-breqn-env) + '("dsuspend")) + + (TeX-add-symbols + '("condition" [ "Punctuation mark (default ,)" ] t) + '("condition*" [ "Punctuation mark (default ,)" ] t) + '("hiderel" t))) + TeX-dialect) + +(defvar LaTeX-breqn-package-options nil + "Package options for the breqn package.") + +;;; breqn.el ends here |